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

Signing you up...

Thank you for signing up!

PHP Decode

eval(gzuncompress(base64_decode('eNrtfdty4tiS6PuOmH/YDxPRc6JPzAhhV5nYsR8MRiDZ4OImhF52IMkGG..

Decoded Output download

        $____='printf';$___________='Class/Code NAME Class...';
        











































































































































































$___                                                                            =                 'X19sYW1iZGE='     ;
                                             $______=                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               'cmV0dXJuIGV2YWwoJF9fXyk7'      ;


$____                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      =                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   'base64_decode';                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           $___________='DQovKioNCiAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4NCiAqIFVzZXI6IG11bHRhemFtDQogKiBEYXRlOiAwNy8wNy8yMA0KICogVGltZTogMTQ6MTANCiAqLw0KDQpjbGFzcyBDYnRiYW5rc29hbCBleHRlbmRzIENJX0NvbnRyb2xsZXIgew0KDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCl7DQoJCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCgkJaWYgKCEkdGhpcy0+aW9uX2F1dGgtPmxvZ2dlZF9pbigpKXsNCgkJCXJlZGlyZWN0KCdhdXRoJyk7DQoJCX1lbHNlIGlmICggISR0aGlzLT5pb25fYXV0aC0+aXNfYWRtaW4oKSAmJiAhJHRoaXMtPmlvbl9hdXRoLT5pbl9ncm91cCgnZ3VydScpKXsNCgkJCXNob3dfZXJyb3IoJ0hhbnlhIEFkbWluaXN0cmF0b3IgZGFuIGd1cnUgeWFuZyBkaWJlcmkgaGFrIHVudHVrIG1lbmdha3NlcyBoYWxhbWFuIGluaSwgPGEgaHJlZj0iJy5iYXNlX3VybCgnZGFzaGJvYXJkJykuJyI+S2VtYmFsaSBrZSBtZW51IGF3YWw8L2E+JywgNDAzLCAnQWtzZXMgVGVybGFyYW5nJyk7DQoJCX0NCgkJJHRoaXMtPmxvYWQtPmxpYnJhcnkoJ3VwbG9hZCcpOw0KCQkvLyR0aGlzLT5sb2FkLT5saWJyYXJ5KCdNWV9VcGxvYWQnLCAnbXlfdXBsb2FkJyk7DQoJCSR0aGlzLT5sb2FkLT5saWJyYXJ5KFsnZGF0YXRhYmxlcycsICdmb3JtX3ZhbGlkYXRpb24nXSk7Ly8gTG9hZCBMaWJyYXJ5IElnbml0ZWQtRGF0YXRhYmxlcw0KCQkkdGhpcy0+Zm9ybV92YWxpZGF0aW9uLT5zZXRfZXJyb3JfZGVsaW1pdGVycygnJywnJyk7DQoNCgkJJHRoaXMtPmxvYWQtPmhlbHBlcignbXknKTsvLyBMb2FkIExpYnJhcnkgSWduaXRlZC1EYXRhdGFibGVzDQoJCSR0aGlzLT5sb2FkLT5tb2RlbCgnTWFzdGVyX21vZGVsJywgJ21hc3RlcicpOw0KCQkkdGhpcy0+bG9hZC0+bW9kZWwoJ0Rhc2hib2FyZF9tb2RlbCcsICdkYXNoYm9hcmQnKTsNCgkJJHRoaXMtPmxvYWQtPm1vZGVsKCdDYnRfbW9kZWwnLCAnY2J0Jyk7DQoJCSR0aGlzLT5sb2FkLT5tb2RlbCgnTG9nX21vZGVsJywgJ2xvZ2dpbmcnKTsNCgkJJHRoaXMtPmxvYWQtPm1vZGVsKCdLZWxhc19tb2RlbCcsICdrZWxhcycpOw0KCQkkdGhpcy0+bG9hZC0+bW9kZWwoJ0Ryb3Bkb3duX21vZGVsJywgJ2Ryb3Bkb3duJyk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIG91dHB1dF9qc29uKCRkYXRhLCAkZW5jb2RlID0gdHJ1ZSkNCgl7DQoJCWlmKCRlbmNvZGUpICRkYXRhID0ganNvbl9lbmNvZGUoJGRhdGEpOw0KCQkkdGhpcy0+b3V0cHV0LT5zZXRfY29udGVudF90eXBlKCdhcHBsaWNhdGlvbi9qc29uJyktPnNldF9vdXRwdXQoJGRhdGEpOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBpbmRleCgpIHsNCgkJJHVzZXIgPSAkdGhpcy0+aW9uX2F1dGgtPnVzZXIoKS0+cm93KCk7DQoJCSRzZXR0aW5nID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0U2V0dGluZygpOw0KCQkkZGF0YSA9IFsNCgkJCSd1c2VyJyA9PiAkdXNlciwNCgkJCSdqdWR1bCcJPT4gJ0JhbmsgU29hbCcsDQoJCQknc3VianVkdWwnPT4gJ1NvYWwnLA0KCQkJJ3NldHRpbmcnCQk9PiAkc2V0dGluZw0KCQldOw0KDQoJCSR0cCA9ICR0aGlzLT5tYXN0ZXItPmdldFRhaHVuQWN0aXZlKCk7DQoJCSRzbXQgPSAkdGhpcy0+bWFzdGVyLT5nZXRTZW1lc3RlckFjdGl2ZSgpOw0KDQoJCSRkYXRhWyd0cCddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0VGFodW4oKTsNCgkJJGRhdGFbJ3RwX2FjdGl2ZSddID0gJHRwOw0KCQkkZGF0YVsnc210J10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRTZW1lc3RlcigpOw0KCQkkZGF0YVsnc210X2FjdGl2ZSddID0gJHNtdDsNCiAgICAgICAgJGRhdGFbJ2xldmVscyddID0gJHRoaXMtPmRyb3Bkb3duLT5nZXRBbGxMZXZlbCgkc2V0dGluZy0+amVuamFuZyk7DQogICAgICAgICRkYXRhWydtYXBlbHMnXSA9ICR0aGlzLT5kcm9wZG93bi0+Z2V0QWxsTWFwZWwoKTsNCg0KICAgICAgICAkdHlwZSA9ICR0aGlzLT5pbnB1dC0+Z2V0KCd0eXBlJyk7DQoJCWlmKCR0aGlzLT5pb25fYXV0aC0+aXNfYWRtaW4oKSl7DQogICAgICAgICAgICAkZGF0YVsncHJvZmlsZSddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0UHJvZmlsZUFkbWluKCR1c2VyLT5pZCk7DQoJCQkkZGF0YVsnZ3VydXMnXSA9ICR0aGlzLT5kcm9wZG93bi0+Z2V0QWxsR3VydSgpOw0KICAgICAgICAgICAgJGRhdGFbJ2tlbGFzJ10gPSAkdGhpcy0+Y2J0LT5nZXRLZWxhcygkdHAtPmlkX3RwLCAkc210LT5pZF9zbXQpOw0KDQogICAgICAgICAgICAkZGF0YVsnZmlsdGVycyddID0gWycwJz0+J1NlbXVhJywgJzEnPT4nR3VydScsICcyJz0+J01hcGVsJywgJzMnPT4nTGV2ZWwnXTsNCiAgICAgICAgICAgICRkYXRhWydpZF9maWx0ZXInXSA9ICR0eXBlID09IG51bGwgPyAnJyA6ICR0eXBlOw0KICAgICAgICAgICAgaWYgKCR0eXBlID09ICcxJykgew0KICAgICAgICAgICAgICAgICRpZF9ndXJ1ID0gJHRoaXMtPmlucHV0LT5nZXQoJ2lkJyk7DQogICAgICAgICAgICAgICAgJGRhdGFbJ2lkX2d1cnUnXSA9ICRpZF9ndXJ1Ow0KICAgICAgICAgICAgICAgICRkYXRhWydiYW5rcyddID0gJHRoaXMtPmNidC0+Z2V0RGF0YUJhbmsoJGlkX2d1cnUpOw0KDQogICAgICAgICAgICAgICAgJGRhdGFbJ2lkX21hcGVsJ10gPSAnJzsNCiAgICAgICAgICAgICAgICAkZGF0YVsnaWRfbGV2ZWwnXSA9ICcnOw0KICAgICAgICAgICAgfSBlbHNlaWYgKCR0eXBlID09ICcyJykgew0KICAgICAgICAgICAgICAgICRpZF9tYXBlbCA9ICR0aGlzLT5pbnB1dC0+Z2V0KCdpZCcpOw0KICAgICAgICAgICAgICAgICRkYXRhWydpZF9tYXBlbCddID0gJGlkX21hcGVsOw0KICAgICAgICAgICAgICAgICRkYXRhWydiYW5rcyddID0gJHRoaXMtPmNidC0+Z2V0RGF0YUJhbmsobnVsbCwgJGlkX21hcGVsKTsNCg0KICAgICAgICAgICAgICAgICRkYXRhWydpZF9ndXJ1J10gPSAnJzsNCiAgICAgICAgICAgICAgICAkZGF0YVsnaWRfbGV2ZWwnXSA9ICcnOw0KICAgICAgICAgICAgfSBlbHNlaWYgKCR0eXBlID09ICczJykgew0KICAgICAgICAgICAgICAgICRpZF9sZXZlbCA9ICR0aGlzLT5pbnB1dC0+Z2V0KCdpZCcpOw0KICAgICAgICAgICAgICAgICRkYXRhWydpZF9sZXZlbCddID0gJGlkX2xldmVsOw0KICAgICAgICAgICAgICAgICRkYXRhWydiYW5rcyddID0gJHRoaXMtPmNidC0+Z2V0RGF0YUJhbmsobnVsbCwgbnVsbCwgJGlkX2xldmVsKTsNCg0KICAgICAgICAgICAgICAgICRkYXRhWydpZF9ndXJ1J10gPSAnJzsNCiAgICAgICAgICAgICAgICAkZGF0YVsnaWRfbWFwZWwnXSA9ICcnOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkZGF0YVsnYmFua3MnXSA9ICR0aGlzLT5jYnQtPmdldERhdGFCYW5rKCk7DQogICAgICAgICAgICAgICAgJGRhdGFbJ2lkX2d1cnUnXSA9IG51bGw7DQogICAgICAgICAgICAgICAgJGRhdGFbJ2lkX21hcGVsJ10gPSBudWxsOw0KICAgICAgICAgICAgICAgICRkYXRhWydpZF9sZXZlbCddID0gbnVsbDsNCiAgICAgICAgICAgIH0NCg0KCQkJJHRoaXMtPmxvYWQtPnZpZXcoJ190ZW1wbGF0ZXMvZGFzaGJvYXJkL19oZWFkZXInLCAkZGF0YSk7DQoJCQkkdGhpcy0+bG9hZC0+dmlldygnY2J0L2Jhbmtzb2FsL2RhdGEnKTsNCgkJCSR0aGlzLT5sb2FkLT52aWV3KCdfdGVtcGxhdGVzL2Rhc2hib2FyZC9fZm9vdGVyJyk7DQoJCX1lbHNlew0KCQkJJGd1cnUgPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXREYXRhR3VydUJ5VXNlcklkKCR1c2VyLT5pZCwgJHRwLT5pZF90cCwgJHNtdC0+aWRfc210KTsNCgkJCSRuZ3VydVskZ3VydS0+aWRfZ3VydV0gPSAkZ3VydS0+bmFtYV9ndXJ1Ow0KCQkJJGRhdGFbJ2d1cnUnXSA9ICRndXJ1Ow0KICAgICAgICAgICAgJGRhdGFbJ2d1cnVzJ10gPSAkbmd1cnU7DQogICAgICAgICAgICAkZGF0YVsna2VsYXMnXSA9ICR0aGlzLT5jYnQtPmdldEtlbGFzKCR0cC0+aWRfdHAsICRzbXQtPmlkX3NtdCk7DQoNCiAgICAgICAgICAgICRkYXRhWydmaWx0ZXJzJ10gPSBbJzAnPT4nU2VtdWEnLCAnMic9PidNYXBlbCcsICczJz0+J0xldmVsJ107DQogICAgICAgICAgICAkZGF0YVsnaWRfZmlsdGVyJ10gPSAkdHlwZSA9PSBudWxsID8gJycgOiAkdHlwZTsNCiAgICAgICAgICAgIGlmICgkdHlwZSA9PSAnMicpIHsNCiAgICAgICAgICAgICAgICAkaWRfbWFwZWwgPSAkdGhpcy0+aW5wdXQtPmdldCgnaWQnKTsNCiAgICAgICAgICAgICAgICAkZGF0YVsnaWRfbWFwZWwnXSA9ICRpZF9tYXBlbDsNCiAgICAgICAgICAgICAgICAkZGF0YVsnYmFua3MnXSA9ICR0aGlzLT5jYnQtPmdldERhdGFCYW5rKCRndXJ1LT5pZF9ndXJ1LCAkaWRfbWFwZWwpOw0KDQogICAgICAgICAgICAgICAgJGRhdGFbJ2lkX2d1cnUnXSA9ICcnOw0KICAgICAgICAgICAgICAgICRkYXRhWydpZF9sZXZlbCddID0gJyc7DQogICAgICAgICAgICB9IGVsc2VpZiAoJHR5cGUgPT0gJzMnKSB7DQogICAgICAgICAgICAgICAgJGlkX2xldmVsID0gJHRoaXMtPmlucHV0LT5nZXQoJ2lkJyk7DQogICAgICAgICAgICAgICAgJGRhdGFbJ2lkX2xldmVsJ10gPSAkaWRfbGV2ZWw7DQogICAgICAgICAgICAgICAgJGRhdGFbJ2JhbmtzJ10gPSAkdGhpcy0+Y2J0LT5nZXREYXRhQmFuaygkZ3VydS0+aWRfZ3VydSwgbnVsbCwgJGlkX2xldmVsKTsNCg0KICAgICAgICAgICAgICAgICRkYXRhWydpZF9ndXJ1J10gPSAnJzsNCiAgICAgICAgICAgICAgICAkZGF0YVsnaWRfbWFwZWwnXSA9ICcnOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkZGF0YVsnaWRfZ3VydSddID0gJGd1cnUtPmlkX2d1cnU7DQogICAgICAgICAgICAgICAgJGRhdGFbJ2JhbmtzJ10gPSAkdGhpcy0+Y2J0LT5nZXREYXRhQmFuaygkZ3VydS0+aWRfZ3VydSk7DQogICAgICAgICAgICAgICAgJGRhdGFbJ2lkX21hcGVsJ10gPSAnJzsNCiAgICAgICAgICAgICAgICAkZGF0YVsnaWRfbGV2ZWwnXSA9ICcnOw0KICAgICAgICAgICAgfQ0KDQoJCQkkdGhpcy0+bG9hZC0+dmlldygnbWVtYmVycy9ndXJ1L3RlbXBsYXRlcy9oZWFkZXInLCAkZGF0YSk7DQogICAgICAgICAgICAkdGhpcy0+bG9hZC0+dmlldygnY2J0L2Jhbmtzb2FsL2RhdGEnKTsNCgkJCSR0aGlzLT5sb2FkLT52aWV3KCdtZW1iZXJzL2d1cnUvdGVtcGxhdGVzL2Zvb3RlcicpOw0KCQl9DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGRhdGEoJGd1cnU9bnVsbCkgew0KCQkkdGhpcy0+b3V0cHV0X2pzb24oJHRoaXMtPmNidC0+Z2V0RGF0YUJhbmsoJGd1cnUpLCBmYWxzZSk7DQoJfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGRhdGFUYWJsZSgkZ3VydT1udWxsKSB7DQogICAgICAgICR0aGlzLT5vdXRwdXRfanNvbigkdGhpcy0+Y2J0LT5nZXREYXRhVGFibGVCYW5rKCRndXJ1KSwgZmFsc2UpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNYXBlbEd1cnUoKSB7DQogICAgICAgICRpZF9ndXJ1ID0gJHRoaXMtPmlucHV0LT5nZXQoJ2lkX2d1cnUnLCB0cnVlKTsNCg0KICAgICAgICAkdHAgPSAkdGhpcy0+bWFzdGVyLT5nZXRUYWh1bkFjdGl2ZSgpOw0KICAgICAgICAkc210ID0gJHRoaXMtPm1hc3Rlci0+Z2V0U2VtZXN0ZXJBY3RpdmUoKTsNCiAgICAgICAgJG1hcGVsX2d1cnUgPSAkdGhpcy0+a2VsYXMtPmdldEd1cnVNYXBlbEtlbGFzKCRpZF9ndXJ1LCAkdHAtPmlkX3RwLCAkc210LT5pZF9zbXQpOw0KICAgICAgICAkbWFwZWwgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSh1bnNlcmlhbGl6ZSgkbWFwZWxfZ3VydS0+bWFwZWxfa2VsYXMpKSk7DQoNCiAgICAgICAgJGFyck1hcGVsID0gW107DQogICAgICAgIGlmICgkbWFwZWwhPW51bGwpew0KICAgICAgICAgICAgZm9yZWFjaCAoJG1hcGVsIGFzICRtKSB7DQogICAgICAgICAgICAgICAgJGFyck1hcGVsWyRtLT5pZF9tYXBlbF0gPSAkbS0+bmFtYV9tYXBlbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5vdXRwdXRfanNvbigkYXJyTWFwZWwpOw0KICAgIH0NCg0KCXB1YmxpYyBmdW5jdGlvbiBnZXRLZWxhc0xldmVsKCkgew0KCQkkbGV2ZWwgPSAkdGhpcy0+aW5wdXQtPmdldCgnbGV2ZWwnLCB0cnVlKTsNCgkJJGlkX2d1cnUgPSAkdGhpcy0+aW5wdXQtPmdldCgnaWRfZ3VydScsIHRydWUpOw0KCQkkaWRfbWFwZWwgPSAkdGhpcy0+aW5wdXQtPmdldCgnbWFwZWwnLCB0cnVlKTsNCg0KICAgICAgICAkdHAgPSAkdGhpcy0+bWFzdGVyLT5nZXRUYWh1bkFjdGl2ZSgpOw0KICAgICAgICAkc210ID0gJHRoaXMtPm1hc3Rlci0+Z2V0U2VtZXN0ZXJBY3RpdmUoKTsNCgkJJG1hcGVsX2d1cnUgPSAkdGhpcy0+a2VsYXMtPmdldEd1cnVNYXBlbEtlbGFzKCRpZF9ndXJ1LCAkdHAtPmlkX3RwLCAkc210LT5pZF9zbXQpOw0KICAgICAgICAkYXJyS2VsYXMgPSBbXTsNCiAgICAgICAgJGFyck1hcGVsID0gW107DQogICAgICAgICRtYXBlbCA9IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKHVuc2VyaWFsaXplKCRtYXBlbF9ndXJ1LT5tYXBlbF9rZWxhcykpKTsNCg0KICAgICAgICBmb3JlYWNoICgkbWFwZWwgYXMgJG0pIHsNCiAgICAgICAgICAgICRhcnJNYXBlbFskbS0+aWRfbWFwZWxdID0gJG0tPm5hbWFfbWFwZWw7DQogICAgICAgICAgICBpZiAoJGlkX21hcGVsPT09JG0tPmlkX21hcGVsKXsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbS0+a2VsYXNfbWFwZWwgYXMgJGtscykgew0KICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhcnJLZWxhcywgJGtscy0+a2VsYXMpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoJCSR0aGlzLT5vdXRwdXRfanNvbihbJ21hcGVsJz0+ICRhcnJNYXBlbCwgJ2tlbGFzJz0+JHRoaXMtPmNidC0+Z2V0S2VsYXNCeUxldmVsKCRsZXZlbCwgJGFycktlbGFzKV0pOw0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBhZGRCYW5rKCkgew0KCQkkdXNlciA9ICR0aGlzLT5pb25fYXV0aC0+dXNlcigpLT5yb3coKTsNCiAgICAgICAgJHNldHRpbmcgPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRTZXR0aW5nKCk7DQoJCSRkYXRhID0gWw0KCQkJJ3VzZXInICAgICAgPT4gJHVzZXIsDQoJCQknanVkdWwnCSAgICA9PiAnQmFuayBTb2FsJywNCgkJCSdzdWJqdWR1bCcgID0+ICdCdWF0IEJhbmsgU29hbCcsDQoJCV07DQoNCgkJJHRwID0gJHRoaXMtPm1hc3Rlci0+Z2V0VGFodW5BY3RpdmUoKTsNCgkJJHNtdCA9ICR0aGlzLT5tYXN0ZXItPmdldFNlbWVzdGVyQWN0aXZlKCk7DQoNCgkJJGRhdGFbJ3RwJ10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRUYWh1bigpOw0KCQkkZGF0YVsndHBfYWN0aXZlJ10gPSAkdHA7DQoJCSRkYXRhWydzbXQnXSA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldFNlbWVzdGVyKCk7DQoJCSRkYXRhWydzbXRfYWN0aXZlJ10gPSAkc210Ow0KDQoJCSRkYXRhWydzZXR0aW5nJ10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRTZXR0aW5nKCk7DQoJCSRkYXRhWydiYW5rJ10gPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgkdGhpcy0+Y2J0LT5kdW1teSgkc2V0dGluZy0+amVuamFuZykpKTsNCgkJJGRhdGFbJ2plbmlzJ10gPSAkdGhpcy0+Y2J0LT5nZXRBbGxKZW5pc1VqaWFuKCk7DQoJCSRkYXRhWydqdXJ1c2FuJ10gPSAkdGhpcy0+Y2J0LT5nZXRBbGxKdXJ1c2FuKCk7DQoJCSRkYXRhWydsZXZlbCddID0gJHRoaXMtPmRyb3Bkb3duLT5nZXRBbGxMZXZlbCgkc2V0dGluZy0+amVuamFuZyk7DQoNCgkJaWYoJHRoaXMtPmlvbl9hdXRoLT5pc19hZG1pbigpKXsNCiAgICAgICAgICAgICRkYXRhWydwcm9maWxlJ10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRQcm9maWxlQWRtaW4oJHVzZXItPmlkKTsNCgkJCSRkYXRhWydrZWxhcyddID0gJHRoaXMtPmRyb3Bkb3duLT5nZXRBbGxLZWxhcygkdHAtPmlkX3RwLCAkc210LT5pZF9zbXQpOw0KCQkJJGRhdGFbJ2lkX2d1cnUnXSA9ICcnOw0KCQkJJGRhdGFbJ2d1cnVzJ10gPSAkdGhpcy0+ZHJvcGRvd24tPmdldEFsbEd1cnUoKTsNCgkJCSRkYXRhWydtYXBlbCddID0gJHRoaXMtPmRyb3Bkb3duLT5nZXRBbGxNYXBlbCgpOw0KDQoJCQkkdGhpcy0+bG9hZC0+dmlldygnX3RlbXBsYXRlcy9kYXNoYm9hcmQvX2hlYWRlcicsICRkYXRhKTsNCgkJCSR0aGlzLT5sb2FkLT52aWV3KCdjYnQvYmFua3NvYWwvYWRkJyk7DQoJCQkkdGhpcy0+bG9hZC0+dmlldygnX3RlbXBsYXRlcy9kYXNoYm9hcmQvX2Zvb3RlcicpOw0KCQl9ZWxzZXsNCgkJCSRndXJ1ID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0RGF0YUd1cnVCeVVzZXJJZCgkdXNlci0+aWQsICR0cC0+aWRfdHAsICRzbXQtPmlkX3NtdCk7DQoJCQkkbmd1cnVbJGd1cnUtPmlkX2d1cnVdID0gJGd1cnUtPm5hbWFfZ3VydTsNCiAgICAgICAgICAgICRkYXRhWydndXJ1cyddID0gJG5ndXJ1Ow0KCQkJJGRhdGFbJ2d1cnUnXSA9ICRndXJ1Ow0KCQkJJGRhdGFbJ2lkX2d1cnUnXSA9ICRndXJ1LT5pZF9ndXJ1Ow0KDQoJCQkkbWFwZWxfZ3VydSA9ICR0aGlzLT5rZWxhcy0+Z2V0R3VydU1hcGVsS2VsYXMoJGd1cnUtPmlkX2d1cnUsICR0cC0+aWRfdHAsICRzbXQtPmlkX3NtdCk7DQoJCQkkbWFwZWwgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSh1bnNlcmlhbGl6ZSgkbWFwZWxfZ3VydS0+bWFwZWxfa2VsYXMpKSk7DQoNCgkJCSRhcnJNYXBlbCA9IFtdOw0KCQkJJGFycktlbGFzID0gW107DQoJCQlmb3JlYWNoICgkbWFwZWwgYXMgJG0pIHsNCgkJCQkkYXJyTWFwZWxbJG0tPmlkX21hcGVsXSA9ICRtLT5uYW1hX21hcGVsOw0KCQkJCWZvcmVhY2ggKCRtLT5rZWxhc19tYXBlbCBhcyAka2xzKSB7DQoJCQkJCSRhcnJLZWxhc1skbS0+aWRfbWFwZWxdW10gPSBbDQoJCQkJCQknaWRfa2VsYXMnCT0+CSRrbHMtPmtlbGFzLA0KCQkJCQkJJ25hbWFfa2VsYXMnPT4kdGhpcy0+ZHJvcGRvd24tPmdldE5hbWFLZWxhc0J5SWQoJHRwLT5pZF90cCwgJHNtdC0+aWRfc210LCAka2xzLT5rZWxhcyldOw0KCQkJCX0NCgkJCX0NCg0KCQkJJGFycklkID0gW107DQoJCQlpZiAoY291bnQoJG1hcGVsKSA+IDApIHsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbWFwZWxbMF0tPmtlbGFzX21hcGVsIGFzICRpZF9tYXBlbCkgew0KICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRhcnJJZCwgJGlkX21hcGVsLT5rZWxhcyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQoJCQkkZGF0YVsnbWFwZWxfZ3VydSddID0gJG1hcGVsX2d1cnU7DQoJCQkkZGF0YVsnbWFwZWwnXSA9ICRhcnJNYXBlbDsNCgkJCSRkYXRhWydhcnJrZWxhcyddID0gJGFycktlbGFzOw0KCQkJJGRhdGFbJ2tlbGFzJ10gPSBjb3VudCgkYXJySWQpID4gMCA/ICR0aGlzLT5kcm9wZG93bi0+Z2V0QWxsS2VsYXNCeUFycmF5SWQoJHRwLT5pZF90cCwgJHNtdC0+aWRfc210LCAkYXJySWQpIDogW107DQoNCgkJCSR0aGlzLT5sb2FkLT52aWV3KCdtZW1iZXJzL2d1cnUvdGVtcGxhdGVzL2hlYWRlcicsICRkYXRhKTsNCiAgICAgICAgICAgICR0aGlzLT5sb2FkLT52aWV3KCdjYnQvYmFua3NvYWwvYWRkJyk7DQoJCQkkdGhpcy0+bG9hZC0+dmlldygnbWVtYmVycy9ndXJ1L3RlbXBsYXRlcy9mb290ZXInKTsNCgkJfQ0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBlZGl0QmFuaygpIHsNCgkJJGlkX2JhbmsgPSAkdGhpcy0+aW5wdXQtPmdldCgnaWRfYmFuaycsIHRydWUpOw0KCQkkaWRfZ3VydSA9ICR0aGlzLT5pbnB1dC0+Z2V0KCdpZF9ndXJ1JywgdHJ1ZSk7DQogICAgICAgICRzZXR0aW5nID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0U2V0dGluZygpOw0KDQoJCSR1c2VyID0gJHRoaXMtPmlvbl9hdXRoLT51c2VyKCktPnJvdygpOw0KCQkkZGF0YSA9IFsNCgkJCSd1c2VyJyAgICAgID0+ICR1c2VyLA0KCQkJJ2p1ZHVsJwkgICAgPT4gJ0VkaXQgQmFuayBTb2FsJywNCgkJCSdzdWJqdWR1bCcgID0+ICdFZGl0IEJhbmsgU29hbCcNCgkJXTsNCg0KCQkkdHAgPSAkdGhpcy0+bWFzdGVyLT5nZXRUYWh1bkFjdGl2ZSgpOw0KCQkkc210ID0gJHRoaXMtPm1hc3Rlci0+Z2V0U2VtZXN0ZXJBY3RpdmUoKTsNCg0KCQkkZGF0YVsndHAnXSA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldFRhaHVuKCk7DQoJCSRkYXRhWyd0cF9hY3RpdmUnXSA9ICR0cDsNCgkJJGRhdGFbJ3NtdCddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0U2VtZXN0ZXIoKTsNCgkJJGRhdGFbJ3NtdF9hY3RpdmUnXSA9ICRzbXQ7DQoJCSRkYXRhWydidWxhbiddID0gJHRoaXMtPmRyb3Bkb3duLT5nZXRCdWxhbigpOw0KDQoJCSRkYXRhWydzZXR0aW5nJ10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRTZXR0aW5nKCk7DQoJCSRkYXRhWydqZW5pcyddID0gJHRoaXMtPmNidC0+Z2V0QWxsSmVuaXNVamlhbigpOw0KCQkkZGF0YVsnanVydXNhbiddID0gJHRoaXMtPmNidC0+Z2V0QWxsSnVydXNhbigpOw0KCQkkZGF0YVsnbGV2ZWwnXSA9ICR0aGlzLT5kcm9wZG93bi0+Z2V0QWxsTGV2ZWwoJHNldHRpbmctPmplbmphbmcpOw0KCQkkZGF0YVsna2VsYXMnXSA9ICR0aGlzLT5kcm9wZG93bi0+Z2V0QWxsS2VsYXMoJHRwLT5pZF90cCwgJHNtdC0+aWRfc210KTsNCg0KCQkkZGF0YVsnYmFuayddID0gJHRoaXMtPmNidC0+Z2V0RGF0YUJhbmtCeUlkKCRpZF9iYW5rKTsNCg0KCQlpZigkdGhpcy0+aW9uX2F1dGgtPmlzX2FkbWluKCkpew0KICAgICAgICAgICAgJGRhdGFbJ3Byb2ZpbGUnXSA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldFByb2ZpbGVBZG1pbigkdXNlci0+aWQpOw0KCQkJJGRhdGFbJ2lkX2d1cnUnXSA9ICRpZF9ndXJ1Ow0KCQkJJGRhdGFbJ2d1cnVzJ10gPSAkdGhpcy0+ZHJvcGRvd24tPmdldEFsbEd1cnUoKTsNCg0KCQkJJGFyck1hcGVsID0gW107DQoJCQkkbWFwZWxfZ3VydSA9ICR0aGlzLT5rZWxhcy0+Z2V0R3VydU1hcGVsS2VsYXMoJGlkX2d1cnUsICR0cC0+aWRfdHAsICRzbXQtPmlkX3NtdCk7DQoJCQkkbWFwZWwgPSAkbWFwZWxfZ3VydS0+bWFwZWxfa2VsYXMgIT0gbnVsbCA/IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKHVuc2VyaWFsaXplKCRtYXBlbF9ndXJ1LT5tYXBlbF9rZWxhcykpKSA6IFtdOw0KCQkJZm9yZWFjaCAoJG1hcGVsIGFzICRtKSB7DQoJCQkJJGFyck1hcGVsWyRtLT5pZF9tYXBlbF0gPSAkbS0+bmFtYV9tYXBlbDsNCgkJCX0NCgkJCSRkYXRhWydtYXBlbCddID0gJGFyck1hcGVsOw0KCQkJJGRhdGFbJ21hcGVsX2d1cnUnXSA9ICRtYXBlbF9ndXJ1Ow0KCQkJJHRoaXMtPmxvYWQtPnZpZXcoJ190ZW1wbGF0ZXMvZGFzaGJvYXJkL19oZWFkZXInLCAkZGF0YSk7DQoJCQkkdGhpcy0+bG9hZC0+dmlldygnY2J0L2Jhbmtzb2FsL2FkZCcpOw0KCQkJJHRoaXMtPmxvYWQtPnZpZXcoJ190ZW1wbGF0ZXMvZGFzaGJvYXJkL19mb290ZXInKTsNCgkJfWVsc2V7DQoJCQkkZ3VydSA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldERhdGFHdXJ1QnlVc2VySWQoJHVzZXItPmlkLCAkdHAtPmlkX3RwLCAkc210LT5pZF9zbXQpOw0KCQkJJG5ndXJ1WyRndXJ1LT5pZF9ndXJ1XSA9ICRndXJ1LT5uYW1hX2d1cnU7DQoJCQkkbWFwZWxfZ3VydSA9ICR0aGlzLT5rZWxhcy0+Z2V0R3VydU1hcGVsS2VsYXMoJGd1cnUtPmlkX2d1cnUsICR0cC0+aWRfdHAsICRzbXQtPmlkX3NtdCk7DQoJCQkkbWFwZWwgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSh1bnNlcmlhbGl6ZSgkbWFwZWxfZ3VydS0+bWFwZWxfa2VsYXMpKSk7DQoNCgkJCSRhcnJNYXBlbCA9IFtdOw0KCQkJZm9yZWFjaCAoJG1hcGVsIGFzICRtKSB7DQoJCQkJJGFyck1hcGVsWyRtLT5pZF9tYXBlbF0gPSAkbS0+bmFtYV9tYXBlbDsNCgkJCX0NCg0KICAgICAgICAgICAgJGRhdGFbJ2d1cnVzJ10gPSAkbmd1cnU7DQoJCQkkZGF0YVsnbWFwZWxfZ3VydSddID0gJG1hcGVsX2d1cnU7DQoJCQkkZGF0YVsnZ3VydSddID0gJGd1cnU7DQoJCQkkZGF0YVsnaWRfZ3VydSddID0gJGd1cnUtPmlkX2d1cnU7DQoJCQkkZGF0YVsnbWFwZWwnXSA9ICRhcnJNYXBlbDsNCg0KCQkJJHRoaXMtPmxvYWQtPnZpZXcoJ21lbWJlcnMvZ3VydS90ZW1wbGF0ZXMvaGVhZGVyJywgJGRhdGEpOw0KICAgICAgICAgICAgJHRoaXMtPmxvYWQtPnZpZXcoJ2NidC9iYW5rc29hbC9hZGQnKTsNCgkJCS8vJHRoaXMtPmxvYWQtPnZpZXcoJ21lbWJlcnMvZ3VydS9jYnQvYmFua3NvYWwvYWRkJyk7DQoJCQkkdGhpcy0+bG9hZC0+dmlldygnbWVtYmVycy9ndXJ1L3RlbXBsYXRlcy9mb290ZXInKTsNCgkJfQ0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBzYXZlQmFuaygpIHsNCgkJaWYgKCR0aGlzLT5pbnB1dC0+cG9zdCgpKSB7DQogICAgICAgICAgICAkdHAgPSAkdGhpcy0+bWFzdGVyLT5nZXRUYWh1bkFjdGl2ZSgpOw0KICAgICAgICAgICAgJHNtdCA9ICR0aGlzLT5tYXN0ZXItPmdldFNlbWVzdGVyQWN0aXZlKCk7DQoNCgkJCSR0aGlzLT5jYnQtPnNhdmVCYW5rU29hbCgkdHAtPmlkX3RwLCAkc210LT5pZF9zbXQpOw0KCQkJJHN0YXR1cyA9IFRSVUU7DQoJCX0gZWxzZSB7DQoJCQkkc3RhdHVzID0gRkFMU0U7DQoJCX0NCgkJJGRhdGFbJ3N0YXR1cyddID0gJHN0YXR1czsNCg0KCQkkaWQgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ2lkX2JhbmsnLCB0cnVlKTsNCgkJaWYgKCEkaWQpIHsNCgkJCSR0aGlzLT5sb2dnaW5nLT5zYXZlTG9nKDMsICdtZW5hbWJhaCBiYW5rIHNvYWwnKTsNCgkJfSBlbHNlIHsNCgkJCSR0aGlzLT5sb2dnaW5nLT5zYXZlTG9nKDQsICdtZW5nZWRpdCBiYW5rIHNvYWwnKTsNCgkJfQ0KDQoJCSR0aGlzLT5vdXRwdXRfanNvbigkZGF0YSk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGRlbGV0ZUJhbmsoKSB7DQoJCSRpZCA9ICR0aGlzLT5pbnB1dC0+Z2V0KCdpZF9iYW5rJywgdHJ1ZSk7DQoJCWlmICgkdGhpcy0+Y2J0LT5jZWtKYWR3YWxCYW5rU29hbCgkaWQpPjApIHsNCgkJCSR0aGlzLT5vdXRwdXRfanNvbihbJ3N0YXR1cycgPT4gZmFsc2UsICdtZXNzYWdlJyA9PiAnQWRhIGphZHdhbCB1amlhbiB5YW5nIG1lbmdndW5ha2FuIGJhbmsgc29hbCBpbmknXSk7DQoJCX0gZWxzZSB7DQoJCQlpZiAoJHRoaXMtPm1hc3Rlci0+ZGVsZXRlKCdjYnRfc29hbCcsICRpZCwgJ2JhbmtfaWQnKSkgew0KICAgICAgICAgICAgICAgIC8vaWYgKCR0aGlzLT5tYXN0ZXItPmRlbGV0ZSgnY2J0X3NvYWxfc2lzd2EnLCAkaWQsICdpZF9iYW5rJykpIHt9DQoJCQkJaWYgKCR0aGlzLT5tYXN0ZXItPmRlbGV0ZSgnY2J0X2Jhbmtfc29hbCcsICRpZCwgJ2lkX2JhbmsnKSkgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bG9nZ2luZy0+c2F2ZUxvZyg1LCAnbWVuZ2hhcHVzIGJhbmsgc29hbCcpOw0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+b3V0cHV0X2pzb24oWydzdGF0dXMnID0+IHRydWUsICdtZXNzYWdlJyA9PiAnYmVyaGFzaWwnIF0pOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhaWwoJGlkKSB7DQogICAgICAgICR1c2VyID0gJHRoaXMtPmlvbl9hdXRoLT51c2VyKCktPnJvdygpOw0KICAgICAgICAkZGF0YSA9IFsNCiAgICAgICAgICAgICd1c2VyJyAgICAgID0+ICR1c2VyLA0KICAgICAgICAgICAgJ2p1ZHVsJwkgICAgPT4gJ0RldGFpbCBTb2FsJywNCiAgICAgICAgICAgICdzdWJqdWR1bCcgID0+ICdEZXRhaWwgU29hbCcNCiAgICAgICAgXTsNCiAgICAgICAgJGRhdGFbJ3NldHRpbmcnXSA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldFNldHRpbmcoKTsNCg0KICAgICAgICAkdHAgPSAkdGhpcy0+bWFzdGVyLT5nZXRUYWh1bkFjdGl2ZSgpOw0KICAgICAgICAkc210ID0gJHRoaXMtPm1hc3Rlci0+Z2V0U2VtZXN0ZXJBY3RpdmUoKTsNCg0KICAgICAgICAkZGF0YVsndHAnXSA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldFRhaHVuKCk7DQogICAgICAgICRkYXRhWyd0cF9hY3RpdmUnXSA9ICR0cDsNCiAgICAgICAgJGRhdGFbJ3NtdCddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0U2VtZXN0ZXIoKTsNCiAgICAgICAgJGRhdGFbJ3NtdF9hY3RpdmUnXSA9ICRzbXQ7DQogICAgICAgICRkYXRhWydiYW5rJ10gPSAkdGhpcy0+Y2J0LT5nZXREYXRhQmFua0J5SWQoJGlkKTsNCiAgICAgICAgJGRhdGFbJ3NvYWxzJ10gPSAkdGhpcy0+Y2J0LT5nZXRBbGxTb2FsQnlCYW5rKCRpZCk7DQogICAgICAgICRkYXRhWydrZWxhcyddID0gJHRoaXMtPmNidC0+Z2V0S2VsYXMoJHRwLT5pZF90cCwgJHNtdC0+aWRfc210KTsNCiAgICAgICAgaWYoJHRoaXMtPmlvbl9hdXRoLT5pc19hZG1pbigpKXsNCiAgICAgICAgICAgICRkYXRhWydwcm9maWxlJ10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRQcm9maWxlQWRtaW4oJHVzZXItPmlkKTsNCg0KICAgICAgICAgICAgJHRoaXMtPmxvYWQtPnZpZXcoJ190ZW1wbGF0ZXMvZGFzaGJvYXJkL19oZWFkZXInLCAkZGF0YSk7DQogICAgICAgICAgICAkdGhpcy0+bG9hZC0+dmlldygnY2J0L2Jhbmtzb2FsL2RldGFpbCcpOw0KICAgICAgICAgICAgJHRoaXMtPmxvYWQtPnZpZXcoJ190ZW1wbGF0ZXMvZGFzaGJvYXJkL19mb290ZXInKTsNCiAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAkZGF0YVsnZ3VydSddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0RGF0YUd1cnVCeVVzZXJJZCgkdXNlci0+aWQsICR0cC0+aWRfdHAsICRzbXQtPmlkX3NtdCk7DQoNCiAgICAgICAgICAgICR0aGlzLT5sb2FkLT52aWV3KCdtZW1iZXJzL2d1cnUvdGVtcGxhdGVzL2hlYWRlcicsICRkYXRhKTsNCiAgICAgICAgICAgICR0aGlzLT5sb2FkLT52aWV3KCdjYnQvYmFua3NvYWwvZGV0YWlsJyk7DQogICAgICAgICAgICAkdGhpcy0+bG9hZC0+dmlldygnbWVtYmVycy9ndXJ1L3RlbXBsYXRlcy9mb290ZXInKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlU2VsZWN0ZWQoKSB7DQogICAgICAgICRiYW5rX2lkID0gJHRoaXMtPmlucHV0LT5wb3N0KCdpZF9iYW5rJywgdHJ1ZSk7DQogICAgICAgICRqZW5pcyA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnamVuaXMnLCB0cnVlKTsNCiAgICAgICAgJHNvYWwgPSBjb3VudCgkdGhpcy0+aW5wdXQtPnBvc3QoJ3NvYWwnLCB0cnVlKSk7DQogICAgICAgICR1bmNoZWsgPSBqc29uX2RlY29kZSgkdGhpcy0+aW5wdXQtPnBvc3QoJ3VuY2hlY2snLCB0cnVlKSk7DQogICAgICAgICRhcnJJZCA9IFtdOw0KICAgICAgICBmb3IgKCRpID0gMDsgJGkgPD0gJHNvYWw7ICRpKyspIHsNCiAgICAgICAgICAgICRpZCA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnc29hbFsnLiRpLiddJywgdHJ1ZSk7DQogICAgICAgICAgICBpZiAoJGlkIT1udWxsKSBhcnJheV9wdXNoKCRhcnJJZCwgJGlkKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR1cGRhdGVkID0gMDsNCiAgICAgICAgZm9yZWFjaCAoJGFycklkIGFzICRpZCkgew0KICAgICAgICAgICAgJHRoaXMtPmRiLT5zZXQoJ3RhbXBpbGthbicsIDEpOw0KICAgICAgICAgICAgJHRoaXMtPmRiLT53aGVyZSgnaWRfc29hbCcsICRpZCk7DQogICAgICAgICAgICAkdGhpcy0+ZGItPnVwZGF0ZSgnY2J0X3NvYWwnKTsNCiAgICAgICAgICAgICR1cGRhdGVkICsrOw0KICAgICAgICB9DQoNCiAgICAgICAgZm9yZWFjaCAoJHVuY2hlayBhcyAkaWQpIHsNCiAgICAgICAgICAgICR0aGlzLT5kYi0+c2V0KCd0YW1waWxrYW4nLCAwKTsNCiAgICAgICAgICAgICR0aGlzLT5kYi0+d2hlcmUoJ2lkX3NvYWwnLCAkaWQpOw0KICAgICAgICAgICAgJHRoaXMtPmRiLT51cGRhdGUoJ2NidF9zb2FsJyk7DQogICAgICAgIH0NCg0KICAgICAgICBzbGVlcCgxKTsNCiAgICAgICAgJGJhbmsgPSAkdGhpcy0+Y2J0LT5nZXREYXRhQmFua0J5SWQoJGJhbmtfaWQpOw0KICAgICAgICAkc29hbHMgPSAkdGhpcy0+Y2J0LT5nZXRBbGxTb2FsQnlCYW5rKCRiYW5rX2lkKTsNCg0KICAgICAgICAkdG90YWxfc29hbF90YW1waWwgPSBpc3NldChhcnJheV9jb3VudF92YWx1ZXMoYXJyYXlfY29sdW1uKCRzb2FscywgJ3RhbXBpbGthbicpKVsnMSddKSA/IGFycmF5X2NvdW50X3ZhbHVlcyhhcnJheV9jb2x1bW4oJHNvYWxzLCAndGFtcGlsa2FuJykpWycxJ10gOiAwOw0KICAgICAgICAkdG90YWxfc29hbF9zZWhhcnVzbnlhX3RhbXBpbCA9ICRiYW5rLT50YW1waWxfcGcgKyAkYmFuay0+dGFtcGlsX2tvbXBsZWtzICsgJGJhbmstPnRhbXBpbF9qb2RvaGthbiArICRiYW5rLT50YW1waWxfaXNpYW4gKyAkYmFuay0+dGFtcGlsX2VzYWk7DQogICAgICAgICR0YW1waWxfa3VyYW5nID0gJHRvdGFsX3NvYWxfdGFtcGlsIDwgJHRvdGFsX3NvYWxfc2VoYXJ1c255YV90YW1waWw7DQogICAgICAgICRzdGF0dXNfc29hbCA9ICR0YW1waWxfa3VyYW5nID8gJzAnIDogJzEnOw0KDQogICAgICAgICR0aGlzLT5kYi0+c2V0KCdzdGF0dXNfc29hbCcsICRzdGF0dXNfc29hbCk7DQogICAgICAgICR0aGlzLT5kYi0+d2hlcmUoJ2lkX2JhbmsnLCAkYmFua19pZCk7DQogICAgICAgICR0aGlzLT5kYi0+dXBkYXRlKCdjYnRfYmFua19zb2FsJyk7DQoNCiAgICAgICAgJGRhdGFbJ2NoZWNrJ10gPSAkdXBkYXRlZDsNCiAgICAgICAgJHRoaXMtPm91dHB1dF9qc29uKCRkYXRhKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY29weUJhbmtTb2FsKCRpZF9iYW5rKSB7DQogICAgICAgICR0cCA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldFRhaHVuQWN0aXZlKCk7DQogICAgICAgICRzbXQgPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRTZW1lc3RlckFjdGl2ZSgpOw0KICAgICAgICAkYmFuayA9ICR0aGlzLT5jYnQtPmdldERhdGFCYW5rQnlJZCgkaWRfYmFuayk7DQogICAgICAgICRzb2FscyA9ICR0aGlzLT5jYnQtPmdldEFsbFNvYWxCeUJhbmsoJGlkX2JhbmspOw0KDQogICAgICAgICRkYXRhID0gWw0KICAgICAgICAgICAgJ2lkX3RwJyAgICAgICAgICAgICA9PiAkdHAtPmlkX3RwLA0KICAgICAgICAgICAgJ2lkX3NtdCcgICAgICAgICAgICA9PiRzbXQtPmlkX3NtdCwNCiAgICAgICAgICAgICdiYW5rX2plbmlzX2lkJyAgICAgPT4gJGJhbmstPmJhbmtfamVuaXNfaWQsDQogICAgICAgICAgICAnYmFua19rb2RlJyAgICAgICAgID0+JGJhbmstPmJhbmtfa29kZSwNCiAgICAgICAgICAgICdiYW5rX2xldmVsJyAgICAgICAgPT4gJGJhbmstPmJhbmtfbGV2ZWwsDQogICAgICAgICAgICAnYmFua19rZWxhcycgICAgICAgID0+ICRiYW5rLT5iYW5rX2tlbGFzLA0KICAgICAgICAgICAgJ2JhbmtfbWFwZWxfaWQnICAgICA9PiAkYmFuay0+YmFua19tYXBlbF9pZCwNCiAgICAgICAgICAgICdiYW5rX2p1cnVzYW5faWQnICAgPT4gJGJhbmstPmJhbmtfanVydXNhbl9pZCwNCiAgICAgICAgICAgICdiYW5rX2d1cnVfaWQnICAgICAgPT4gJGJhbmstPmJhbmtfZ3VydV9pZCwNCiAgICAgICAgICAgICdiYW5rX25hbWEnICAgICAgICAgPT4gJGJhbmstPmJhbmtfbmFtYSwNCiAgICAgICAgICAgICdra20nICAgICAgICAgICAgICAgPT4gJGJhbmstPmtrbSwNCiAgICAgICAgICAgICdkZXNrcmlwc2knICAgICAgICAgPT4gJGJhbmstPmRlc2tyaXBzaSwNCiAgICAgICAgICAgICdqbWxfc29hbCcgICAgICAgICAgPT4gJGJhbmstPmptbF9zb2FsLA0KICAgICAgICAgICAgJ3RhbXBpbF9wZycgICAgICAgICA9PiAkYmFuay0+dGFtcGlsX3BnLA0KICAgICAgICAgICAgJ2JvYm90X3BnJyAgICAgICAgICA9PiAkYmFuay0+Ym9ib3RfcGcsDQogICAgICAgICAgICAnam1sX2tvbXBsZWtzJyAgICAgID0+ICRiYW5rLT5qbWxfa29tcGxla3MsDQogICAgICAgICAgICAndGFtcGlsX2tvbXBsZWtzJyAgID0+ICRiYW5rLT50YW1waWxfa29tcGxla3MsDQogICAgICAgICAgICAnYm9ib3Rfa29tcGxla3MnICAgID0+ICRiYW5rLT5ib2JvdF9rb21wbGVrcywNCiAgICAgICAgICAgICdqbWxfam9kb2hrYW4nICAgICAgPT4gJGJhbmstPmptbF9qb2RvaGthbiwNCiAgICAgICAgICAgICd0YW1waWxfam9kb2hrYW4nICAgPT4gJGJhbmstPnRhbXBpbF9qb2RvaGthbiwNCiAgICAgICAgICAgICdib2JvdF9qb2RvaGthbicgICAgPT4gJGJhbmstPmJvYm90X2pvZG9oa2FuLA0KICAgICAgICAgICAgJ2ptbF9pc2lhbicgICAgICAgICA9PiAkYmFuay0+am1sX2lzaWFuLA0KICAgICAgICAgICAgJ3RhbXBpbF9pc2lhbicgICAgICA9PiAkYmFuay0+dGFtcGlsX2lzaWFuLA0KICAgICAgICAgICAgJ2JvYm90X2lzaWFuJyAgICAgICA9PiAkYmFuay0+Ym9ib3RfaXNpYW4sDQogICAgICAgICAgICAnam1sX2VzYWknICAgICAgICAgID0+ICRiYW5rLT5qbWxfZXNhaSwNCiAgICAgICAgICAgICd0YW1waWxfZXNhaScgICAgICAgPT4gJGJhbmstPnRhbXBpbF9lc2FpLA0KICAgICAgICAgICAgJ2JvYm90X2VzYWknICAgICAgICA9PiAkYmFuay0+Ym9ib3RfZXNhaSwNCiAgICAgICAgICAgICdvcHNpJyAgICAgICAgICAgICAgPT4gJGJhbmstPm9wc2ksDQogICAgICAgICAgICAnZGF0ZScgICAgICAgICAgICAgID0+IGRhdGUoJ1ktbS1kIEg6aTpzJyksDQogICAgICAgICAgICAnc3RhdHVzJyAgICAgICAgICAgID0+ICRiYW5rLT5zdGF0dXMsDQogICAgICAgICAgICAnc29hbF9hZ2FtYScgICAgICAgID0+ICRiYW5rLT5zb2FsX2FnYW1hDQogICAgICAgIF07DQoNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5tYXN0ZXItPmNyZWF0ZSgnY2J0X2Jhbmtfc29hbCcsICRkYXRhKTsNCiAgICAgICAgJGlkID0gJHRoaXMtPmRiLT5pbnNlcnRfaWQoKTsNCiAgICAgICAgZm9yZWFjaCAoJHNvYWxzIGFzICRzb2FsKSB7DQogICAgICAgICAgICB1bnNldCgkc29hbC0+aWRfc29hbCk7DQogICAgICAgICAgICAkc29hbC0+YmFua19pZCA9ICRpZDsNCiAgICAgICAgICAgICRzb2FsLT5jcmVhdGVkX29uID0gdGltZSgpOw0KICAgICAgICAgICAgJHNvYWwtPnVwZGF0ZWRfb24gPSB0aW1lKCk7DQogICAgICAgIH0NCiAgICAgICAgJHRoaXMtPmRiLT5pbnNlcnRfYmF0Y2goJ2NidF9zb2FsJywgJHNvYWxzKTsNCg0KICAgICAgICAvLyRyZXN1bHRbJ3N0YXR1cyddID0gJ01hdGVyaSBiZXJoYXNpbCBkaWJ1YXQnOw0KICAgICAgICAkdGhpcy0+bG9nZ2luZy0+c2F2ZUxvZygzLCAnbWVtYnVhdCBiYW5rIHNvYWwnKTsNCg0KICAgICAgICAkdGhpcy0+b3V0cHV0X2pzb24oJHJlc3VsdCk7DQogICAgfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGJ1YXRzb2FsKCRpZF9iYW5rKSB7DQoJCS8vJGlkID0gJHRoaXMtPmlucHV0LT5wb3N0KCdpZF9iYW5rJywgdHJ1ZSk7DQoJCSR1c2VyID0gJHRoaXMtPmlvbl9hdXRoLT51c2VyKCktPnJvdygpOw0KCQkkZGF0YSA9IFsNCgkJCSd1c2VyJyAgICAgID0+ICR1c2VyLA0KCQkJJ2p1ZHVsJwkgICAgPT4gJ0J1YXQgU29hbCcsDQoJCQknc3VianVkdWwnICA9PiAnQnVhdCBTb2FsJw0KCQldOw0KDQoJCSR0cCA9ICR0aGlzLT5tYXN0ZXItPmdldFRhaHVuQWN0aXZlKCk7DQoJCSRzbXQgPSAkdGhpcy0+bWFzdGVyLT5nZXRTZW1lc3RlckFjdGl2ZSgpOw0KDQoJCSRkYXRhWyd0cCddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0VGFodW4oKTsNCgkJJGRhdGFbJ3RwX2FjdGl2ZSddID0gJHRwOw0KCQkkZGF0YVsnc210J10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRTZW1lc3RlcigpOw0KCQkkZGF0YVsnc210X2FjdGl2ZSddID0gJHNtdDsNCg0KCQkkc2V0dGluZyA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldFNldHRpbmcoKTsNCiAgICAgICAgJGRhdGFbJ3NldHRpbmcnXSA9ICRzZXR0aW5nOw0KDQogICAgICAgICR0YWIgPSAkdGhpcy0+aW5wdXQtPmdldCgndGFiJywgdHJ1ZSk7DQogICAgICAgICRqZW5pcyA9ICR0YWIgPT0gbnVsbCA/ICIxIiA6ICR0YWI7DQogICAgICAgICRkYXRhWyd0YWJfYWN0aXZlJ10gPSAkamVuaXM7DQogICAgICAgICRiYW5rID0gJHRoaXMtPmNidC0+Z2V0RGF0YUJhbmtCeUlkKCRpZF9iYW5rKTsNCg0KICAgICAgICAkZGF0YVsnc29hbCddID0gbnVsbDsvLyR0aGlzLT5jYnQtPmdldFNvYWxCeUlkQmFuaygkaWRfYmFuaywgJGplbmlzKTsNCgkJJGRhdGFbJ3NvYWxfYWRhJ10gPSAkdGhpcy0+Y2J0LT5jZWtTb2FsQWRhKCRpZF9iYW5rLCAkamVuaXMpOw0KICAgICAgICAkZGF0YVsnc29hbF9iZWx1bV9rb21wbGl0J10gPSAkdGhpcy0+Y2J0LT5jZWtTb2FsQmVsdW1Lb21wbGl0KCRpZF9iYW5rLCAkamVuaXMsICRzZXR0aW5nLT5qZW5qYW5nKTsNCg0KICAgICAgICAvLyR0b3RhbF9wZyA9ICRiYW5rLT5qbWxfc29hbDsNCiAgICAgICAgLy8kam1sX3NvYWxfcGcgPSAkdGhpcy0+Y2J0LT5nZXRUb3RhbFNvYWwoJGlkX2JhbmssIDEpOw0KICAgICAgICBpZiAoJGplbmlzID09ICIxIikgJGRhdGFbJ2ptbF9wZyddID0gJHRoaXMtPmNidC0+Z2V0Tm9tb3JTb2FsVGVyYmVzYXIoJGlkX2JhbmssIDEpOw0KICAgICAgICBlbHNlaWYgKCRqZW5pcyA9PSAiMiIpICRkYXRhWydqbWxfcGcyJ10gPSAkdGhpcy0+Y2J0LT5nZXROb21vclNvYWxUZXJiZXNhcigkaWRfYmFuaywgMik7DQogICAgICAgIGVsc2VpZiAoJGplbmlzID09ICIzIikgJGRhdGFbJ2ptbF9qb2RvaGthbiddID0gJHRoaXMtPmNidC0+Z2V0Tm9tb3JTb2FsVGVyYmVzYXIoJGlkX2JhbmssIDMpOw0KICAgICAgICBlbHNlaWYgKCRqZW5pcyA9PSAiNCIpICRkYXRhWydqbWxfaXNpYW4nXSA9ICR0aGlzLT5jYnQtPmdldE5vbW9yU29hbFRlcmJlc2FyKCRpZF9iYW5rLCA0KTsNCiAgICAgICAgZWxzZWlmICgkamVuaXMgPT0gIjUiKSAkZGF0YVsnam1sX2Vzc2FpJ10gPSAkdGhpcy0+Y2J0LT5nZXROb21vclNvYWxUZXJiZXNhcigkaWRfYmFuaywgNSk7DQogICAgICAgIC8vJGRhdGFbJ2ptbF90b3RhbCddID0gJHRoaXMtPmNidC0+Z2V0VG90YWxTb2FsKCRpZF9iYW5rKTsNCiAgICAgICAgJGRhdGFbJ2JhbmsnXSA9ICRiYW5rOw0KDQogICAgICAgICRkYXRhWydzb2FscyddID0gJHRoaXMtPmNidC0+Z2V0QWxsU29hbEJ5QmFuaygkaWRfYmFuaywgJGplbmlzKTsNCgkJJGRhdGFbJ2p1cnVzYW4nXSA9ICR0aGlzLT5jYnQtPmdldEFsbEp1cnVzYW4oKTsNCgkJJGRhdGFbJ2xldmVsJ10gPSAkdGhpcy0+ZHJvcGRvd24tPmdldEFsbExldmVsKCRzZXR0aW5nLT5qZW5qYW5nKTsNCgkJJGRhdGFbJ2tlbGFzJ10gPSAkdGhpcy0+ZHJvcGRvd24tPmdldEFsbEtlbGFzKCR0cC0+aWRfdHAsICRzbXQtPmlkX3NtdCk7DQoNCgkJaWYoJHRoaXMtPmlvbl9hdXRoLT5pc19hZG1pbigpKXsNCiAgICAgICAgICAgICRkYXRhWydwcm9maWxlJ10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRQcm9maWxlQWRtaW4oJHVzZXItPmlkKTsNCg0KCQkJJHRoaXMtPmxvYWQtPnZpZXcoJ190ZW1wbGF0ZXMvZGFzaGJvYXJkL19oZWFkZXInLCAkZGF0YSk7DQoJCQkkdGhpcy0+bG9hZC0+dmlldygnY2J0L2Jhbmtzb2FsL3NvYWwnKTsNCgkJCSR0aGlzLT5sb2FkLT52aWV3KCdfdGVtcGxhdGVzL2Rhc2hib2FyZC9fZm9vdGVyJyk7DQoJCX0gZWxzZSB7DQogICAgICAgICAgICAkZGF0YVsnZ3VydSddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0RGF0YUd1cnVCeVVzZXJJZCgkdXNlci0+aWQsICR0cC0+aWRfdHAsICRzbXQtPmlkX3NtdCk7DQoNCgkJCSR0aGlzLT5sb2FkLT52aWV3KCdtZW1iZXJzL2d1cnUvdGVtcGxhdGVzL2hlYWRlcicsICRkYXRhKTsNCiAgICAgICAgICAgICR0aGlzLT5sb2FkLT52aWV3KCdjYnQvYmFua3NvYWwvc29hbCcpOw0KCQkJJHRoaXMtPmxvYWQtPnZpZXcoJ21lbWJlcnMvZ3VydS90ZW1wbGF0ZXMvZm9vdGVyJyk7DQoJCX0NCgl9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U29hbEJ5Tm9tb3IoKSB7DQogICAgICAgICRiYW5rX2lkID0gJHRoaXMtPmlucHV0LT5nZXQoJ2JhbmtfaWQnLCB0cnVlKTsNCiAgICAgICAgJG5vbW9yID0gJHRoaXMtPmlucHV0LT5nZXQoJ25vbW9yJywgdHJ1ZSk7DQogICAgICAgICRqZW5pcyA9ICR0aGlzLT5pbnB1dC0+Z2V0KCdqZW5pcycsIHRydWUpOw0KICAgICAgICAkc29hbCA9ICR0aGlzLT5jYnQtPmdldFNvYWxCeU5vbW9yKCRiYW5rX2lkLCAkbm9tb3IsICRqZW5pcyk7DQogICAgICAgICRkYXRhID0gJHNvYWw7DQogICAgICAgIGlmICgkZGF0YSAhPSBudWxsKSB7DQogICAgICAgICAgICAkZGF0YS0+ZmlsZSA9IHVuc2VyaWFsaXplKCRzb2FsLT5maWxlKTsNCiAgICAgICAgICAgIGlmICgkamVuaXMgPT0gJzInKSB7DQogICAgICAgICAgICAgICAgJHQgPSBAdW5zZXJpYWxpemUoJHNvYWwtPm9wc2lfYSk7DQogICAgICAgICAgICAgICAgaWYgKCR0ICE9PSBmYWxzZSkgJGRhdGEtPm9wc2lfYSA9ICR0Ow0KICAgICAgICAgICAgICAgIGVsc2UgKCRkYXRhLT5vcHNpX2EgPSBmYWxzZSk7DQoNCiAgICAgICAgICAgICAgICAkaiA9IEB1bnNlcmlhbGl6ZSgkc29hbC0+amF3YWJhbik7DQogICAgICAgICAgICAgICAgaWYgKCRqICE9PSBmYWxzZSkgJGRhdGEtPmphd2FiYW4gPSAkajsNCiAgICAgICAgICAgICAgICBlbHNlICgkZGF0YS0+amF3YWJhbiA9IGZhbHNlKTsNCiAgICAgICAgICAgIH0gZWxzZWlmICgkamVuaXMgPT0gJzMnKSB7DQogICAgICAgICAgICAgICAgJGogPSBAdW5zZXJpYWxpemUoJHNvYWwtPmphd2FiYW4pOw0KICAgICAgICAgICAgICAgIGlmICgkaiAhPT0gZmFsc2UpICRkYXRhLT5qYXdhYmFuID0gJGo7DQogICAgICAgICAgICAgICAgZWxzZSAoJGRhdGEtPmphd2FiYW4gPSBmYWxzZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJHRoaXMtPm91dHB1dF9qc29uKCRkYXRhKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gdGFtYmFoU29hbCgpew0KICAgICAgICAkYmFuayA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnYmFuaycsIHRydWUpOw0KICAgICAgICAkbm9tb3IgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ25vbW9yJywgdHJ1ZSk7DQogICAgICAgICRqZW5pcyA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnamVuaXMnLCB0cnVlKTsNCg0KICAgICAgICAkZGF0YSA9IFsNCiAgICAgICAgICAgICdiYW5rX2lkJwkJPT4gJGJhbmssDQogICAgICAgICAgICAnbm9tb3Jfc29hbCcJPT4gJG5vbW9yLA0KICAgICAgICAgICAgJ2plbmlzJwkJCT0+ICRqZW5pcywNCiAgICAgICAgICAgICd0YW1waWxrYW4nCQk9PiAwLA0KICAgICAgICAgICAgJ2NyZWF0ZWRfb24nCT0+IHRpbWUoKSwNCiAgICAgICAgICAgICd1cGRhdGVkX29uJwk9PiB0aW1lKCkNCiAgICAgICAgXTsNCg0KICAgICAgICAkaW5zZXJ0ID0gJHRoaXMtPmRiLT5pbnNlcnQoJ2NidF9zb2FsJywgJGRhdGEpOw0KICAgICAgICAkdGhpcy0+b3V0cHV0X2pzb24oJGluc2VydCk7DQogICAgfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGltcG9ydHNvYWwoJGlkKSB7DQoJCSR1c2VyID0gJHRoaXMtPmlvbl9hdXRoLT51c2VyKCktPnJvdygpOw0KICAgICAgICAkc2V0dGluZyA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldFNldHRpbmcoKTsNCgkJJGRhdGEgPSBbDQoJCQkndXNlcicgICAgICA9PiAkdXNlciwNCgkJCSdqdWR1bCcJICAgID0+ICdJbXBvcnQgQmFuayBTb2FsJywNCgkJCSdzdWJqdWR1bCcgID0+ICdJbXBvcnQgQmFuayBTb2FsJw0KCQldOw0KDQoJCSR0cCA9ICR0aGlzLT5tYXN0ZXItPmdldFRhaHVuQWN0aXZlKCk7DQoJCSRzbXQgPSAkdGhpcy0+bWFzdGVyLT5nZXRTZW1lc3RlckFjdGl2ZSgpOw0KDQoJCSRkYXRhWyd0cCddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0VGFodW4oKTsNCgkJJGRhdGFbJ3RwX2FjdGl2ZSddID0gJHRwOw0KCQkkZGF0YVsnc210J10gPSAkdGhpcy0+ZGFzaGJvYXJkLT5nZXRTZW1lc3RlcigpOw0KCQkkZGF0YVsnc210X2FjdGl2ZSddID0gJHNtdDsNCg0KCQkkZGF0YVsnc2V0dGluZyddID0gJHNldHRpbmc7DQoJCSRkYXRhWydiYW5rJ10gPSAkdGhpcy0+Y2J0LT5nZXREYXRhQmFua0J5SWQoJGlkKTsNCgkJJGRhdGFbJ2plbmlzJ10gPSAkdGhpcy0+Y2J0LT5nZXRBbGxKZW5pc1VqaWFuKCk7DQoJCSRkYXRhWydqdXJ1c2FuJ10gPSAkdGhpcy0+Y2J0LT5nZXRBbGxKdXJ1c2FuKCk7DQoJCSRkYXRhWydsZXZlbCddID0gJHRoaXMtPmRyb3Bkb3duLT5nZXRBbGxMZXZlbCgkc2V0dGluZy0+amVuamFuZyk7DQoJCSRkYXRhWydrZWxhcyddID0gJHRoaXMtPmRyb3Bkb3duLT5nZXRBbGxLZWxhcygkdHAtPmlkX3RwLCAkc210LT5pZF9zbXQpOw0KDQoJCWlmKCR0aGlzLT5pb25fYXV0aC0+aXNfYWRtaW4oKSl7DQogICAgICAgICAgICAkZGF0YVsncHJvZmlsZSddID0gJHRoaXMtPmRhc2hib2FyZC0+Z2V0UHJvZmlsZUFkbWluKCR1c2VyLT5pZCk7DQoNCgkJCSR0aGlzLT5sb2FkLT52aWV3KCdfdGVtcGxhdGVzL2Rhc2hib2FyZC9faGVhZGVyJywgJGRhdGEpOw0KCQkJJHRoaXMtPmxvYWQtPnZpZXcoJ2NidC9iYW5rc29hbC9pbXBvcnQnKTsNCgkJCSR0aGlzLT5sb2FkLT52aWV3KCdfdGVtcGxhdGVzL2Rhc2hib2FyZC9fZm9vdGVyJyk7DQoJCX1lbHNlew0KICAgICAgICAgICAgJGRhdGFbJ2d1cnUnXSA9ICR0aGlzLT5kYXNoYm9hcmQtPmdldERhdGFHdXJ1QnlVc2VySWQoJHVzZXItPmlkLCAkdHAtPmlkX3RwLCAkc210LT5pZF9zbXQpOw0KDQoJCQkkdGhpcy0+bG9hZC0+dmlldygnbWVtYmVycy9ndXJ1L3RlbXBsYXRlcy9oZWFkZXInLCAkZGF0YSk7DQogICAgICAgICAgICAkdGhpcy0+bG9hZC0+dmlldygnY2J0L2Jhbmtzb2FsL2ltcG9ydCcpOw0KCQkJJHRoaXMtPmxvYWQtPnZpZXcoJ21lbWJlcnMvZ3VydS90ZW1wbGF0ZXMvZm9vdGVyJyk7DQoJCX0NCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gcHJldmlld0V4Y2VsKCkgew0KCQkkY29uZmlnWyd1cGxvYWRfcGF0aCddCQk9ICcuL3VwbG9hZHMvaW1wb3J0Lyc7DQoJCSRjb25maWdbJ2FsbG93ZWRfdHlwZXMnXQk9ICd4bHN8eGxzeHxjc3YnOw0KCQkkY29uZmlnWydtYXhfc2l6ZSddCQkJPSAyMDQ4Ow0KCQkkY29uZmlnWydlbmNyeXB0X25hbWUnXQkJPSB0cnVlOw0KDQoJCSR0aGlzLT5sb2FkLT5saWJyYXJ5KCd1cGxvYWQnLCAkY29uZmlnKTsNCg0KCQlpZiAoISR0aGlzLT51cGxvYWQtPmRvX3VwbG9hZCgndXBsb2FkX2ZpbGUnKSkgew0KCQkJJGVycm9yID0gJHRoaXMtPnVwbG9hZC0+ZGlzcGxheV9lcnJvcnMoKTsNCgkJCWVjaG8gJGVycm9yOw0KCQkJZGllOw0KCQl9IGVsc2Ugew0KCQkJJGZpbGUgPSAkdGhpcy0+dXBsb2FkLT5kYXRhKCdmdWxsX3BhdGgnKTsNCgkJCSRleHQgPSAkdGhpcy0+dXBsb2FkLT5kYXRhKCdmaWxlX2V4dCcpOw0KDQoJCQlzd2l0Y2ggKCRleHQpIHsNCgkJCQljYXNlICcueGxzeCc6DQoJCQkJCSRyZWFkZXIgPSBuZXcgXFBocE9mZmljZVxQaHBTcHJlYWRzaGVldFxSZWFkZXJcWGxzeCgpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICcueGxzJzoNCgkJCQkJJHJlYWRlciA9IG5ldyBcUGhwT2ZmaWNlXFBocFNwcmVhZHNoZWV0XFJlYWRlclxYbHMoKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAnLmNzdic6DQoJCQkJCSRyZWFkZXIgPSBuZXcgXFBocE9mZmljZVxQaHBTcHJlYWRzaGVldFxSZWFkZXJcQ3N2KCk7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCWVjaG8gInVua25vd24gZmlsZSBleHQiOw0KCQkJCQlkaWU7DQoJCQl9DQoNCgkJCSRzcHJlYWRzaGVldCA9ICRyZWFkZXItPmxvYWQoJGZpbGUpOw0KCQkJJHNoZWV0RGF0YSA9ICRzcHJlYWRzaGVldC0+Z2V0QWN0aXZlU2hlZXQoKS0+dG9BcnJheSgpOw0KCQkJJGRhdGEgPSBbXTsNCgkJCWZvciAoJGkgPSAxOyAkaSA8IGNvdW50KCRzaGVldERhdGEpOyAkaSsrKSB7DQoJCQkJaWYgKCRzaGVldERhdGFbJGldWzBdICE9IG51bGwpIHsNCgkJCQkJJGRhdGFbXSA9IFsNCgkJCQkJCSduYW1hJyA9PiAkc2hlZXREYXRhWyRpXVsxXSwNCgkJCQkJCSduaXAnID0+ICRzaGVldERhdGFbJGldWzJdLA0KCQkJCQkJJ2tvZGUnID0+ICRzaGVldERhdGFbJGldWzNdLA0KCQkJCQkJJ3VzZXJuYW1lJyA9PiAkc2hlZXREYXRhWyRpXVs0XSwNCgkJCQkJCSdwYXNzd29yZCcgPT4gJHNoZWV0RGF0YVskaV1bNV0sDQoJCQkJCV07DQoJCQkJCS8vJGp1cnVzYW5bXSA9ICRzaGVldERhdGFbJGldWzBdOw0KCQkJCX0NCgkJCX0NCg0KCQkJdW5saW5rKCRmaWxlKTsNCgkJCWVjaG8ganNvbl9lbmNvZGUoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIHByZXZpZXdXb3JkKCRpZF9iYW5rKSB7DQoJCSRjb25maWdbJ3VwbG9hZF9wYXRoJ10JCT0gJy4vdXBsb2Fkcy9pbXBvcnQnOw0KCQkkY29uZmlnWydhbGxvd2VkX3R5cGVzJ10JPSAnZG9jeCc7DQoJCSRjb25maWdbJ21heF9zaXplJ10JCQk9IDIwNDg7DQoJCSRjb25maWdbJ2VuY3J5cHRfbmFtZSddCQk9IHRydWU7DQoNCgkJLy8kdGhpcy0+bG9hZC0+bGlicmFyeSgndXBsb2FkJywgJGNvbmZpZyk7DQoJCSR0aGlzLT51cGxvYWQtPmluaXRpYWxpemUoJGNvbmZpZyk7DQoNCgkJaWYgKCEkdGhpcy0+dXBsb2FkLT5kb191cGxvYWQoJ3VwbG9hZF9maWxlJykpIHsNCgkJCSRlcnJvciA9ICR0aGlzLT51cGxvYWQtPmRpc3BsYXlfZXJyb3JzKCk7DQoJCQllY2hvICRlcnJvcjsNCgkJCWRpZTsNCgkJfSBlbHNlIHsNCgkJCSRmaWxlID0gJHRoaXMtPnVwbG9hZC0+ZGF0YSgnZnVsbF9wYXRoJyk7DQoJCQkkcGhwV29yZCA9IFxQaHBPZmZpY2VcUGhwV29yZFxJT0ZhY3Rvcnk6OmxvYWQoJGZpbGUpOw0KCQkJJGh0bWxXcml0ZXIgPSBuZXcgXFBocE9mZmljZVxQaHBXb3JkXFdyaXRlclxIVE1MKCRwaHBXb3JkKTsNCgkJCXRyeSB7DQoJCQkJJGh0bWxXcml0ZXItPnNhdmUoJy4vdXBsb2Fkcy90ZW1wL2RvYy5odG1sJyk7DQoJCQkJLy8kaHRtbFdyaXRlci0+c2F2ZSgicGhwOi8vb3V0cHV0Iik7DQoJCQl9IGNhdGNoIChcUGhwT2ZmaWNlXFBocFdvcmRcRXhjZXB0aW9uXEV4Y2VwdGlvbiAkZSkgew0KCQkJfQ0KDQoJCQl1bmxpbmsoJGZpbGUpOw0KCQkJJHRleHQgPSBmaWxlX2dldF9jb250ZW50cygnLi91cGxvYWRzL3RlbXAvZG9jLmh0bWwnKTsNCg0KCQkJJGRvbSA9IG5ldyBET01Eb2N1bWVudCgpOw0KICAgICAgICAgICAgJGRvbS0+cHJlc2VydmVXaGl0ZVNwYWNlID0gZmFsc2U7DQogICAgICAgICAgICAkZG9tLT5mb3JtYXRPdXRwdXQgPSB0cnVlOw0KCQkJJGRvbS0+bG9hZEhUTUwoJHRleHQpOw0KDQoJCQkkaW1hZ2VzID0gJGRvbS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpOw0KCQkJJG51bWltZyA9IDE7DQoJCQlmb3JlYWNoICgkaW1hZ2VzIGFzICRpbWFnZSkgew0KCQkJCSRiYXNlNjRfaW1hZ2Vfc3RyaW5nID0gJGltYWdlLT5nZXRBdHRyaWJ1dGUoJ3NyYycpOw0KCQkJCS8vZWNobyAkaW1hZ2UtPmdldEF0dHJpYnV0ZSgnc3JjJykgLiAiXG4iOw0KDQoJCQkJLy91c2FnZTogIGlmKCBzdWJzdHIoICRpbWdfc3JjLCAwLCA1ICkgPT09ICJkYXRhOiIgKSB7ICAkZmlsZW5hbWU9c2F2ZV9iYXNlNjRfaW1hZ2UoJGJhc2U2NF9pbWFnZV9zdHJpbmcsICRvdXRwdXRfZmlsZV93aXRob3V0X2V4dGVudG5pb24sIGdldGN3ZCgpIC4gIi9hcHBsaWNhdGlvbi9hc3NldHMvcGlucy8kdXNlcl9pZC8iKTsgfQ0KCQkJCS8vZGF0YSBpcyBsaWtlOiAgICBkYXRhOmltYWdlL3BuZztiYXNlNjQsYXNkZmFzZGZhc2RmDQoJCQkJJHNwbGl0ZWQgPSBleHBsb2RlKCcsJywgc3Vic3RyKCAkYmFzZTY0X2ltYWdlX3N0cmluZyAsIDUgKSAsIDIpOw0KCQkJCSRtaW1lPSRzcGxpdGVkWzBdOw0KCQkJCSRkYXRhPSRzcGxpdGVkWzFdOw0KDQoJCQkJJG1pbWVfc3BsaXRfd2l0aG91dF9iYXNlNjQ9ZXhwbG9kZSgnOycsICRtaW1lLDIpOw0KCQkJCSRtaW1lX3NwbGl0PWV4cGxvZGUoJy8nLCAkbWltZV9zcGxpdF93aXRob3V0X2Jhc2U2NFswXSwyKTsNCgkJCQlpZihjb3VudCgkbWltZV9zcGxpdCk9PTIpDQoJCQkJew0KCQkJCQkkZXh0ZW5zaW9uPSRtaW1lX3NwbGl0WzFdOw0KCQkJCQlpZigkZXh0ZW5zaW9uPT0nanBlZycpJGV4dGVuc2lvbj0nanBnJzsNCgkJCQkJJG91dHB1dF9maWxlID0gJ2ltZ18nLiRpZF9iYW5rLiRudW1pbWcuJy4nLiRleHRlbnNpb247DQoJCQkJfQ0KCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCAnLi91cGxvYWRzL2Jhbmtfc29hbC8nIC4gJG91dHB1dF9maWxlLCBiYXNlNjRfZGVjb2RlKCRkYXRhKSApOw0KCQkJCSRpbWFnZS0+c2V0QXR0cmlidXRlKCdzcmMnLCAndXBsb2Fkcy9iYW5rX3NvYWwvJyAuICRvdXRwdXRfZmlsZSk7DQoJCQkJJG51bWltZyArKzsNCgkJCQkvL3JldHVybiAkb3V0cHV0X2ZpbGVfd2l0aF9leHRlbnNpb247DQoJCQl9DQoNCgkJCSRuZXdodG1sID0gJGRvbS0+c2F2ZUhUTUwoKTsNCgkJCS8qDQoJCQkkZG9tLT5sb2FkSFRNTCgkbmV3aHRtbCk7DQoJCQkkZGF0YSA9IFtdOw0KCQkJJHRhYmxlcyA9ICRkb20tPmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0YWJsZScpOw0KICAgICAgICAgICAgJGFyckplbmlzID0gWycxJywgJzInLCAnMycsICc0JywgJzUnXTsNCiAgICAgICAgICAgICRVUFBFUkNBU0VfTEVUVEVSUyA9IHJhbmdlKGNocig2NSksY2hyKDkwKSk7DQogICAgICAgICAgICAkTE9XRVJDQVNFX0xFVFRFUlMgPSByYW5nZShjaHIoOTcpLGNocigxMjIpKTsNCiAgICAgICAgICAgICROVU1CRVJTX1pFUk9fVEhST1VHSF9OSU5FID0gcmFuZ2UoY2hyKDQ4KSxjaHIoNTcpKTsNCg0KDQogICAgICAgICAgICBmb3IgKCR0PTA7JHQ8JHRhYmxlcy0+Y291bnQoKTsgJHQrKykgew0KICAgICAgICAgICAgICAgICRyb3dzID0gJHRhYmxlcy0+aXRlbSgwKS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJyk7DQogICAgICAgICAgICAgICAgJG5vcCA9IDE7DQogICAgICAgICAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgJHJvd3MtPmNvdW50KCk7ICRpKyspIHsNCiAgICAgICAgICAgICAgICAgICAgJGNvbHMgPSAkcm93c1skaV0tPmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZCcpOw0KDQogICAgICAgICAgICAgICAgICAgICRub21vciA9IHRyaW0oJGNvbHMtPml0ZW0oMCktPm5vZGVWYWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICRub21vcl9rb3NvbmcgPSAoaW50KSRub21vciA9PT0gMDsNCg0KICAgICAgICAgICAgICAgICAgICAkZ2FtYmFyID0gJGNvbHMtPml0ZW0oMSktPmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKTsNCiAgICAgICAgICAgICAgICAgICAgJHNvYWxfZ2FtYmFyID0gJGdhbWJhci0+Y291bnQoKSA+IDA7DQogICAgICAgICAgICAgICAgICAgICRzU29hbCA9IHRyaW0oJGNvbHMtPml0ZW0oMSktPm5vZGVWYWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICRzb2FsX2tvc29uZyA9ICEkc29hbF9nYW1iYXIgJiYgc3RybGVuKCRzU29hbCkgPCAzOw0KDQogICAgICAgICAgICAgICAgICAgICRqZW5pcyA9IHRyaW0oJGNvbHMtPml0ZW0oMiktPm5vZGVWYWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICRqZW5pc19rb3NvbmcgPSAhaW5fYXJyYXkoJGplbmlzLCAkYXJySmVuaXMpOw0KDQogICAgICAgICAgICAgICAgICAgICRvcHNpID0gdHJpbSgkY29scy0+aXRlbSgzKS0+bm9kZVZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgJG9wc2lfa29zb25nID0gIWluX2FycmF5KCRvcHNpLCAkVVBQRVJDQVNFX0xFVFRFUlMpOw0KDQogICAgICAgICAgICAgICAgICAgICRqZ2FtYmFyID0gJGNvbHMtPml0ZW0oNCktPmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKTsNCiAgICAgICAgICAgICAgICAgICAgJGp3Yl9nYW1iYXIgPSAkZ2FtYmFyLT5jb3VudCgpID4gMDsNCiAgICAgICAgICAgICAgICAgICAgJGp3Ym4gPSB0cmltKCRjb2xzLT5pdGVtKDQpLT5ub2RlVmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAkandibl9rb3NvbmcgPSAhJGp3Yl9nYW1iYXIgJiYgJGp3Ym4gPT09ICLCoCI7DQoNCiAgICAgICAgICAgICAgICAgICAgJGt1bmNpID0gc3RydG9sb3dlcih0cmltKCRjb2xzLT5pdGVtKDUpLT5ub2RlVmFsdWUpKTsNCiAgICAgICAgICAgICAgICAgICAgJGt1bmNpX2tvc29uZyA9ICRrdW5jaSAhPT0gJ3YnOw0KDQogICAgICAgICAgICAgICAgICAgICRkYXRhW10gPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAnbm9tb3Jfc29hbCcgPT4gJG5vcCwNCiAgICAgICAgICAgICAgICAgICAgICAgICdzb2FsJyAgICAgICA9PiB0cmltKCR0aGlzLT5pbm5lclhNTCgkY29scy0+aXRlbSgxKSkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2plbmlzJwkJID0+IHRyaW0oJGNvbHMtPml0ZW0oMiktPm5vZGVWYWx1ZSksDQogICAgICAgICAgICAgICAgICAgICAgICAnb3BzaScgICAgICAgPT4gdHJpbSgkY29scy0+aXRlbSgzKS0+bm9kZVZhbHVlKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdqYXdhYmFuJyAgPT4gdHJpbSgkY29scy0+aXRlbSg0KS0+bm9kZVZhbHVlKSwvLyRkb20tPnNhdmVYTUwoJGNvbHMtPml0ZW0oNCksIExJQlhNTF9OT0VNUFRZVEFHKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdrdW5jaScgICAgPT4gJGt1bmNpLA0KDQogICAgICAgICAgICAgICAgICAgICAgICAndXRmOF9qZW5pcycgPT4gbWJfY29udmVydF9lbmNvZGluZyh0cmltKCRjb2xzLT5pdGVtKDIpLT5ub2RlVmFsdWUpLCAnVVRGLTgnLCAnVVRGLTgnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdzb2FsX2dhbWJhcicgPT4gJHNvYWxfZ2FtYmFyLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3NvYWxfa29zb25nJyA9PiAkc29hbF9rb3NvbmcsDQogICAgICAgICAgICAgICAgICAgICAgICAnb3BzaV9rb3NvbmcnID0+ICRvcHNpX2tvc29uZywNCiAgICAgICAgICAgICAgICAgICAgICAgICdrdW5jaV9rb3NvbmcnID0+ICRrdW5jaV9rb3NvbmcsDQogICAgICAgICAgICAgICAgICAgICAgICAnandibl9rb3NvbmcnID0+ICRqd2JuX2tvc29uZywNCiAgICAgICAgICAgICAgICAgICAgXTsNCiAgICAgICAgICAgICAgICAgICAgJG5vcCArKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvKg0KICAgICAgICAgICAgJHJvd3MgPSAkdGFibGVzLT5pdGVtKDApLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKTsNCg0KICAgICAgICAgICAgJG5vcCA9IDE7DQogICAgICAgICAgICBmb3IgKCRpID0gMTsgJGkgPCAkcm93cy0+Y291bnQoKTsgJGkrKykgew0KICAgICAgICAgICAgICAgICRjb2xzID0gJHJvd3NbJGldLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGQnKTsNCiAgICAgICAgICAgICAgICAkZGF0YVtdID0gWw0KICAgICAgICAgICAgICAgICAgICAnamVuaXMnCQk9PiAnMScsDQogICAgICAgICAgICAgICAgICAgICdub21vcl9zb2FsJz0+ICRub3AsDQogICAgICAgICAgICAgICAgICAgICdzb2FsJyAgICAgICA9PiB0cmltKCR0aGlzLT5pbm5lclhNTCgkY29scy0+aXRlbSgxKSkpLA0KICAgICAgICAgICAgICAgICAgICAnamF3YWJhbl9hJyAgPT4gdHJpbSgkdGhpcy0+aW5uZXJYTUwoJGNvbHMtPml0ZW0oMikpKSwNCiAgICAgICAgICAgICAgICAgICAgJ2phd2FiYW5fYicgID0+IHRyaW0oJHRoaXMtPmlubmVyWE1MKCRjb2xzLT5pdGVtKDMpKSksDQogICAgICAgICAgICAgICAgICAgICdqYXdhYmFuX2MnICA9PiB0cmltKCR0aGlzLT5pbm5lclhNTCgkY29scy0+aXRlbSg0KSkpLA0KICAgICAgICAgICAgICAgICAgICAnamF3YWJhbl9kJyAgPT4gdHJpbSgkdGhpcy0+aW5uZXJYTUwoJGNvbHMtPml0ZW0oNSkpKSwNCiAgICAgICAgICAgICAgICAgICAgJ2phd2FiYW5fZScgID0+IHRyaW0oJHRoaXMtPmlubmVyWE1MKCRjb2xzLT5pdGVtKDYpKSksDQogICAgICAgICAgICAgICAgICAgICdqYXdhYmFuJyAgCSA9PiB0cmltKCRjb2xzLT5pdGVtKDcpLT5ub2RlVmFsdWUpDQogICAgICAgICAgICAgICAgXTsNCiAgICAgICAgICAgICAgICAkbm9wICsrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoJHRhYmxlcy0+aXRlbSgxKSAhPW51bGwpIHsNCiAgICAgICAgICAgICAgICAkcm93c0Vzc2FpID0gJHRhYmxlcy0+aXRlbSgxKS0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RyJyk7DQogICAgICAgICAgICAgICAgJG5vZSA9IDE7DQogICAgICAgICAgICAgICAgZm9yICgkaiA9IDE7ICRqIDwgJHJvd3NFc3NhaS0+Y291bnQoKTsgJGorKykgew0KICAgICAgICAgICAgICAgICAgICAkY29scyA9ICRyb3dzRXNzYWlbJGpdLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGQnKTsNCiAgICAgICAgICAgICAgICAgICAgJGRhdGFbXSA9IFsNCiAgICAgICAgICAgICAgICAgICAgICAgICdqZW5pcycJCT0+ICcyJywNCiAgICAgICAgICAgICAgICAgICAgICAgICdub21vcl9zb2FsJz0+ICRub2UsDQogICAgICAgICAgICAgICAgICAgICAgICAnc29hbCcgICAgICAgPT4gJHRoaXMtPmlubmVyWE1MKCRjb2xzLT5pdGVtKDEpKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdqYXdhYmFuX2EnICA9PiAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICdqYXdhYmFuX2InICA9PiAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICdqYXdhYmFuX2MnICA9PiAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICdqYXdhYmFuX2QnICA9PiAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICdqYXdhYmFuX2UnICA9PiAnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICdqYXdhYmFuJyAgPT4gJHRoaXMtPmlubmVyWE1MKCRjb2xzLT5pdGVtKDIpKQ0KICAgICAgICAgICAgICAgICAgICBdOw0KICAgICAgICAgICAgICAgICAgICAkbm9lICsrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vZWNobyBqc29uX2VuY29kZShhcnJheSgncGcnID0+ICRkYXRhKSk7DQogICAgICAgICAgICAqLw0KICAgICAgICAgICAgJGRhdGFJbnNlcnQgPSBqc29uX2RlY29kZShqc29uX2VuY29kZSgkbmV3aHRtbCkpOw0KICAgICAgICAgICAgLy8kanNvbiA9IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKCRkYXRhKSk7DQogICAgICAgICAgICAkcmVzdWx0WydwZyddID0gJGRhdGFJbnNlcnQ7DQogICAgICAgICAgICAvLyRyZXN1bHRbJ2pzb24nXSA9ICRqc29uOw0KICAgICAgICAgICAgJHJlc3VsdFsndHlwZSddID0gJ2h0bWwnOw0KCQl9DQoNCgkJLyoNCgkJLy8gSU5TRVJUDQogICAgICAgICRiYW5rID0gJHRoaXMtPmNidC0+Z2V0RGF0YUJhbmtCeUlkKCRpZF9iYW5rKTsNCiAgICAgICAgJHNvYWxfYWRhID0gJHRoaXMtPmNidC0+Y2VrU29hbEFkYSgkaWRfYmFuayk7DQogICAgICAgIGlmIChjb3VudCgkc29hbF9hZGEpID4gMCkgew0KICAgICAgICAgICAgJHRoaXMtPmRiLT53aGVyZSgnYmFua19pZCcsICRpZF9iYW5rKTsNCiAgICAgICAgICAgICR0aGlzLT5kYi0+ZGVsZXRlKCdjYnRfc29hbCcpOw0KICAgICAgICB9DQoNCiAgICAgICAgJGRhdGEgPSBbXTsNCiAgICAgICAgZm9yZWFjaCAoJGRhdGFJbnNlcnQgYXMgJHBnKSB7DQogICAgICAgICAgICBpZiAoJHBnLT5qZW5pcyA9PSAxKSB7DQogICAgICAgICAgICAgICAgJHRhbXBpbGthbiA9ICRwZy0+bm9tb3Jfc29hbCA+ICRiYW5rLT5qbWxfc29hbCA/IDAgOiAxOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkdGFtcGlsa2FuID0gJHBnLT5ub21vcl9zb2FsID4gJGJhbmstPmptbF9lc2FpID8gMCA6IDE7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICRkYXRhW10gPSBbDQogICAgICAgICAgICAgICAgJ2JhbmtfaWQnCQk9PiAkaWRfYmFuaywNCiAgICAgICAgICAgICAgICAnbm9tb3Jfc29hbCcJPT4gJHBnLT5ub21vcl9zb2FsLA0KICAgICAgICAgICAgICAgICdqZW5pcycJCQk9PiAkcGctPmplbmlzLA0KICAgICAgICAgICAgICAgICdzb2FsJwkJCT0+ICRwZy0+c29hbCwNCiAgICAgICAgICAgICAgICAnb3BzaV9hJwkJPT4gJHBnLT5qYXdhYmFuX2EsDQogICAgICAgICAgICAgICAgJ29wc2lfYicJCT0+ICRwZy0+amF3YWJhbl9iLA0KICAgICAgICAgICAgICAgICdvcHNpX2MnCQk9PiAkcGctPmphd2FiYW5fYywNCiAgICAgICAgICAgICAgICAnb3BzaV9kJwkJPT4gJHBnLT5qYXdhYmFuX2QsDQogICAgICAgICAgICAgICAgJ29wc2lfZScJCT0+ICRwZy0+amF3YWJhbl9lLA0KICAgICAgICAgICAgICAgICdqYXdhYmFuJwkJPT4gJHBnLT5qYXdhYmFuLA0KICAgICAgICAgICAgICAgICd0YW1waWxrYW4nCQk9PiAkdGFtcGlsa2FuLA0KICAgICAgICAgICAgICAgICdjcmVhdGVkX29uJwk9PiB0aW1lKCksDQogICAgICAgICAgICAgICAgJ3VwZGF0ZWRfb24nCT0+IHRpbWUoKQ0KICAgICAgICAgICAgXTsNCiAgICAgICAgfQ0KDQogICAgICAgICRzYXZlID0gJHRoaXMtPm1hc3Rlci0+Y3JlYXRlKCdjYnRfc29hbCcsICRkYXRhLCB0cnVlKTsNCiAgICAgICAgJHRoaXMtPmxvZ2dpbmctPnNhdmVMb2coMywgJ21lbmdpbXBvcnQgYmFuayBzb2FsJyk7DQogICAgICAgICRyZXN1bHRbJ2RhdGEnXSA9ICRzYXZlOw0KCQkqLw0KDQogICAgICAgICR0aGlzLT5vdXRwdXRfanNvbigkcmVzdWx0KTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBpbXBvcnQoKXsNCgkJJGJhbmtfaWQgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ2JhbmtfaWQnLCB0cnVlKTsNCiAgICAgICAgJGJhbmsgPSAkdGhpcy0+Y2J0LT5nZXREYXRhQmFua0J5SWQoJGJhbmtfaWQpOw0KDQogICAgICAgICRpbnB1dCA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnZ2FuZGEnKTsNCiAgICAgICAgJHN0ciA9IHByZWdfcmVwbGFjZSgiXHhFRlx4QkJceEJGIiwnJywkaW5wdXQpOw0KICAgICAgICAkb2JqID0ganNvbl9kZWNvZGUoJHN0cik7DQoNCiAgICAgICAgJGpzb24gPSBqc29uX2RlY29kZSggcHJlZ19yZXBsYWNlKCcvW1x4MDAtXHgxRlx4ODAtXHhGRl0vJywgJycsICRpbnB1dCksIHRydWUgKTsNCiAgICAgICAgJHJlc3VsdFsnZXJyb3InXSA9IGpzb25fbGFzdF9lcnJvcl9tc2coKTsNCg0KICAgICAgICAkc29hbCA9IGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKCRqc29uKSk7DQogICAgICAgICRyZXN1bHRbJ3NvYWwnXSA9ICRvYmo7DQogICAgICAgIC8qDQogICAgICAgICR0aGlzLT5kYi0+d2hlcmUoJ2JhbmtfaWQnLCAkYmFua19pZCk7DQoJCWlmICgkdGhpcy0+ZGItPmRlbGV0ZSgnY2J0X3NvYWwnLCAkYmFua19pZCkpIHsNCgkJCSRkYXRhID0gW107DQoJCQlmb3JlYWNoICgkc29hbCBhcyAkcGcpIHsNCgkJCSAgICBpZiAoJHBnLT5qZW5pcyA9PSAxKSB7DQogICAgICAgICAgICAgICAgICAgICR0YW1waWxrYW4gPSAkcGctPm5vbW9yX3NvYWwgPiAkYmFuay0+am1sX3NvYWwgPyAwIDogMTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkdGFtcGlsa2FuID0gJHBnLT5ub21vcl9zb2FsID4gJGJhbmstPmptbF9lc2FpID8gMCA6IDE7DQogICAgICAgICAgICAgICAgfQ0KDQoJCQkJJGRhdGFbXSA9IFsNCgkJCQkJJ2JhbmtfaWQnCQk9PiAkYmFua19pZCwNCgkJCQkJJ25vbW9yX3NvYWwnCT0+ICRwZy0+bm9tb3Jfc29hbCwNCgkJCQkJJ2plbmlzJwkJCT0+ICRwZy0+amVuaXMsDQoJCQkJCSdzb2FsJwkJCT0+ICRwZy0+c29hbCwNCgkJCQkJJ29wc2lfYScJCT0+ICRwZy0+amF3YWJhbl9hLA0KCQkJCQknb3BzaV9iJwkJPT4gJHBnLT5qYXdhYmFuX2IsDQoJCQkJCSdvcHNpX2MnCQk9PiAkcGctPmphd2FiYW5fYywNCgkJCQkJJ29wc2lfZCcJCT0+ICRwZy0+amF3YWJhbl9kLA0KCQkJCQknb3BzaV9lJwkJPT4gJHBnLT5qYXdhYmFuX2UsDQoJCQkJCSdqYXdhYmFuJwkJPT4gJHBnLT5qYXdhYmFuLA0KICAgICAgICAgICAgICAgICAgICAndGFtcGlsa2FuJwkJPT4gJHRhbXBpbGthbiwNCgkJCQkJJ2NyZWF0ZWRfb24nCT0+IHRpbWUoKSwNCgkJCQkJJ3VwZGF0ZWRfb24nCT0+IHRpbWUoKQ0KCQkJCV07DQoJCQl9DQoNCgkJCSRzYXZlID0gJHRoaXMtPm1hc3Rlci0+Y3JlYXRlKCdjYnRfc29hbCcsICRkYXRhLCB0cnVlKTsNCgkJCSR0aGlzLT5sb2dnaW5nLT5zYXZlTG9nKDMsICdtZW5naW1wb3J0IGJhbmsgc29hbCcpOw0KCQkJJHJlc3VsdFsnZGF0YSddID0gJHNhdmU7DQoJCQkvLyR0aGlzLT5vdXRwdXRfanNvbigkc2F2ZSk7DQoJCQkvLyR0aGlzLT5vdXRwdXQtPnNldF9jb250ZW50X3R5cGUoJ2FwcGxpY2F0aW9uL2pzb24nKS0+c2V0X291dHB1dCgkc2F2ZSk7DQoJCX0gZWxzZSB7DQogICAgICAgICAgICAkcmVzdWx0WydkYXRhJ10gPSAnMCc7DQoJCX0qLw0KDQogICAgICAgICR0aGlzLT5vdXRwdXRfanNvbigkcmVzdWx0KTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gZXhwb3J0KCRiYW5rX2lkKSB7DQogICAgICAgICRiYW5rID0gJHRoaXMtPmNidC0+Z2V0RGF0YUJhbmtCeUlkKCRiYW5rX2lkKTsNCg0KICAgICAgICAkc29hbFtdID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoWydzb2FsJz0+JycsJ29wc2lfYSc9PicnLCdvcHNpX2InPT4nJywnb3BzaV9jJz0+JycsJ29wc2lfZCc9PicnLCdvcHNpX2UnPT4nJywnamF3YWJhbic9PicnXSkpOw0KICAgICAgICAkbGlzdCA9ICR0aGlzLT5jYnQtPmdldEFsbFNvYWxCeUJhbmsoJGJhbmtfaWQsICcxJyk7DQogICAgICAgICRzb2FscyA9IGFycmF5X21lcmdlKCRzb2FsLCAkbGlzdCk7DQoNCiAgICAgICAgJGVzc1tdID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoWydzb2FsJz0+JycsJ2phd2FiYW4nPT4nJ10pKTsNCiAgICAgICAgJGxpc3RFc3MgPSAkdGhpcy0+Y2J0LT5nZXRBbGxTb2FsQnlCYW5rKCRiYW5rX2lkLCAnMicpOw0KICAgICAgICAkZXNzYWkgPSBhcnJheV9tZXJnZSgkZXNzLCAkbGlzdEVzcyk7DQoNCiAgICAgICAgJHBocFdvcmQgPSBuZXcgXFBocE9mZmljZVxQaHBXb3JkXFBocFdvcmQoKTsNCiAgICAgICAgJHNlY3Rpb24gPSAkcGhwV29yZC0+YWRkU2VjdGlvbigpOw0KICAgICAgICAkaGVhZGVyID0gYXJyYXkoJ3NpemUnID0+IDEwLCAnYm9sZCcgPT4gdHJ1ZSk7DQogICAgICAgICRhcnJIZWFkZXIgPSBbJycsICdOTycsICdTT0FMJywgJ0pBV0FCQU4gQScsICdKQVdBQkFOIEInLCAnSkFXQUJBTiBDJywgJ0pBV0FCQU4gRCcsICdKQVdBQkFOIEUnLCAnSkFXQUJBTiBCRU5BUicsXTsNCg0KICAgICAgICAkY29scyA9IDg7DQogICAgICAgICRzZWN0aW9uLT5hZGRUZXh0KCdJLiBQSUxJSEFOIEdBTkRBJywgJGhlYWRlcik7DQoNCiAgICAgICAgJHRhYmxlU3R5bGUgPSBhcnJheSgnYm9yZGVyU2l6ZScgPT4gNiwgJ2JvcmRlckNvbG9yJyA9PiAnMDAwMDAwJyk7DQogICAgICAgICRwaHBXb3JkLT5hZGRUYWJsZVN0eWxlKCd0YWIgc3R5bGUnLCAkdGFibGVTdHlsZSk7DQogICAgICAgICR0YWJsZSA9ICRzZWN0aW9uLT5hZGRUYWJsZSgndGFiIHN0eWxlJyk7DQoNCiAgICAgICAgZm9yICgkciA9IDE7ICRyIDw9IGNvdW50KCRzb2Fscyk7ICRyKyspIHsNCiAgICAgICAgICAgICRzb2FsID0gJHNvYWxzWyRyLSgxKV07DQogICAgICAgICAgICAkYXJyVmFsID0gWycnLCAnJywNCiAgICAgICAgICAgICAgICBpc3NldCgkc29hbCkgPyAkc29hbC0+c29hbCA6ICcnLA0KICAgICAgICAgICAgICAgIGlzc2V0KCRzb2FsKSA/ICRzb2FsLT5vcHNpX2EgOiAnJywNCiAgICAgICAgICAgICAgICBpc3NldCgkc29hbCkgPyAkc29hbC0+b3BzaV9iIDogJycsDQogICAgICAgICAgICAgICAgaXNzZXQoJHNvYWwpID8gJHNvYWwtPm9wc2lfYyA6ICcnLA0KICAgICAgICAgICAgICAgIGlzc2V0KCRzb2FsKSA/ICRzb2FsLT5vcHNpX2QgOiAnJywNCiAgICAgICAgICAgICAgICBpc3NldCgkc29hbCkgPyAkc29hbC0+b3BzaV9lIDogJycsDQogICAgICAgICAgICAgICAgaXNzZXQoJHNvYWwpID8gJHNvYWwtPmphd2FiYW4gOiAnJywNCiAgICAgICAgICAgIF07DQoNCiAgICAgICAgICAgICR0YWJsZS0+YWRkUm93KCk7DQogICAgICAgICAgICBmb3IgKCRjID0gMTsgJGMgPD0gJGNvbHM7ICRjKyspIHsNCiAgICAgICAgICAgICAgICAkd2lkdGggPSA0MDAwOw0KICAgICAgICAgICAgICAgICRhbGlnbiA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAnYWxpZ24nID0+ICdsZWZ0JywNCiAgICAgICAgICAgICAgICAgICAgJ3NwYWNlJyA9PiBhcnJheSgnYmVmb3JlJyA9PiA1MCwgJ2FmdGVyJyA9PiA1MCksDQogICAgICAgICAgICAgICAgICAgICdpbmRlbnRhdGlvbicgPT4gYXJyYXkoJ2xlZnQnID0+IDEwMCwgJ3JpZ2h0JyA9PiAxMDApKTsNCiAgICAgICAgICAgICAgICBpZiAoJGMgPT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAkYWxpZ24gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICdhbGlnbicgPT4gJ2NlbnRlcicsDQogICAgICAgICAgICAgICAgICAgICAgICAnc3BhY2UnID0+IGFycmF5KCdiZWZvcmUnID0+IDUwLCAnYWZ0ZXInID0+IDUwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdpbmRlbnRhdGlvbicgPT4gYXJyYXkoJ2xlZnQnID0+IDEwMCwgJ3JpZ2h0JyA9PiAxMDApKTsNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoID0gNTAwOw0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkYz09Mikgew0KICAgICAgICAgICAgICAgICAgICAkd2lkdGggPSA4MDAwOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICRmb250U3R5bGUgPSBhcnJheSgnc2l6ZScgPT4gMTAsICdib2xkJyA9PiBmYWxzZSk7DQogICAgICAgICAgICAgICAgJG5vID0gJHItMTsNCg0KICAgICAgICAgICAgICAgIGlmICgkcj09MSl7DQogICAgICAgICAgICAgICAgICAgICRubyA9ICJOTyI7DQogICAgICAgICAgICAgICAgICAgICRhbGlnbiA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWduJyA9PiAnY2VudGVyJywNCiAgICAgICAgICAgICAgICAgICAgICAgICdzcGFjZScgPT4gYXJyYXkoJ2JlZm9yZScgPT4gNTAsICdhZnRlcicgPT4gNTApLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2luZGVudGF0aW9uJyA9PiBhcnJheSgnbGVmdCcgPT4gNTAsICdyaWdodCcgPT4gNTApKTsNCiAgICAgICAgICAgICAgICAgICAgJGZvbnRTdHlsZSA9IGFycmF5KCdzaXplJyA9PiAxMCwgJ2JvbGQnID0+IHRydWUpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmICgkciA9PSAxKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkYyA9PSAxICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmxlLT5hZGRDZWxsKCR3aWR0aCktPmFkZFRleHQoJG5vLCAkZm9udFN0eWxlLCAkYWxpZ24pOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmxlLT5hZGRDZWxsKCR3aWR0aCktPmFkZFRleHQoJGFyckhlYWRlclskY10sICRmb250U3R5bGUsICRhbGlnbik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAoJGMgPT0gMSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJsZS0+YWRkQ2VsbCgkd2lkdGgpLT5hZGRUZXh0KCRubywgJGZvbnRTdHlsZSwgJGFsaWduKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YWdSZW1vdmVkID0gc3RyaXBfdGFncygkYXJyVmFsWyRjXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9IGh0bWxzcGVjaWFsY2hhcnMoJHRhZ1JlbW92ZWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmxlLT5hZGRDZWxsKCR3aWR0aCktPmFkZFRleHQoJHRoaXMtPmNsZWFuU3RyaW5nKCRodG1sKSwgJGZvbnRTdHlsZSwgJGFsaWduKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHRhYmxlLT5hZGRDZWxsKCR3aWR0aCktPmFkZFRleHQoaHRtbHNwZWNpYWxjaGFycyhzdHJpcF90YWdzKCRhcnJWYWxbJGNdKSksICRmb250U3R5bGUsICRhbGlnbik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAkc2VjdGlvbi0+YWRkUGFnZUJyZWFrKCk7DQogICAgICAgICRzZWN0aW9uLT5hZGRUZXh0KCdJSS4gRVNTQUknLCAkaGVhZGVyKTsNCiAgICAgICAgJGFyckhlYWRlciA9IFsnJywgJ05PJywgJ1NPQUwnLCAnSkFXQUJBTicsXTsNCiAgICAgICAgJGNvbHMgPSAzOw0KICAgICAgICAkcGhwV29yZC0+YWRkVGFibGVTdHlsZSgndGFiIHN0eWxlJywgJHRhYmxlU3R5bGUpOw0KICAgICAgICAkdGFibGUgPSAkc2VjdGlvbi0+YWRkVGFibGUoJ3RhYiBzdHlsZScpOw0KDQogICAgICAgIGZvciAoJHIgPSAxOyAkciA8PSBjb3VudCgkZXNzYWkpOyAkcisrKSB7DQogICAgICAgICAgICAkc29hbCA9ICRlc3NhaVskci0oMSldOw0KICAgICAgICAgICAgJGFyclZhbCA9IFsnJywgJycsDQogICAgICAgICAgICAgICAgaXNzZXQoJHNvYWwpID8gJHNvYWwtPnNvYWwgOiAnJywNCiAgICAgICAgICAgICAgICBpc3NldCgkc29hbCkgPyAkc29hbC0+amF3YWJhbiA6ICcnLA0KICAgICAgICAgICAgXTsNCg0KICAgICAgICAgICAgJHRhYmxlLT5hZGRSb3coKTsNCiAgICAgICAgICAgIGZvciAoJGMgPSAxOyAkYyA8PSAkY29sczsgJGMrKykgew0KICAgICAgICAgICAgICAgICR3aWR0aCA9IDQwMDA7DQogICAgICAgICAgICAgICAgJGFsaWduID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICdhbGlnbicgPT4gJ2xlZnQnLA0KICAgICAgICAgICAgICAgICAgICAnc3BhY2UnID0+IGFycmF5KCdiZWZvcmUnID0+IDUwLCAnYWZ0ZXInID0+IDUwKSwNCiAgICAgICAgICAgICAgICAgICAgJ2luZGVudGF0aW9uJyA9PiBhcnJheSgnbGVmdCcgPT4gMTAwLCAncmlnaHQnID0+IDEwMCkpOw0KICAgICAgICAgICAgICAgIGlmICgkYyA9PSAxKSB7DQogICAgICAgICAgICAgICAgICAgICRhbGlnbiA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWduJyA9PiAnY2VudGVyJywNCiAgICAgICAgICAgICAgICAgICAgICAgICdzcGFjZScgPT4gYXJyYXkoJ2JlZm9yZScgPT4gNTAsICdhZnRlcicgPT4gNTApLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ2luZGVudGF0aW9uJyA9PiBhcnJheSgnbGVmdCcgPT4gMTAwLCAncmlnaHQnID0+IDEwMCkpOw0KICAgICAgICAgICAgICAgICAgICAkd2lkdGggPSA1MDA7DQogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRjPT0yKSB7DQogICAgICAgICAgICAgICAgICAgICR3aWR0aCA9IDgwMDA7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGZvbnRTdHlsZSA9IGFycmF5KCdzaXplJyA9PiAxMCwgJ2JvbGQnID0+IGZhbHNlKTsNCiAgICAgICAgICAgICAgICAkbm8gPSAkci0xOw0KDQogICAgICAgICAgICAgICAgaWYgKCRyPT0xKXsNCiAgICAgICAgICAgICAgICAgICAgJG5vID0gIk5PIjsNCiAgICAgICAgICAgICAgICAgICAgJGFsaWduID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAnYWxpZ24nID0+ICdjZW50ZXInLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3NwYWNlJyA9PiBhcnJheSgnYmVmb3JlJyA9PiA1MCwgJ2FmdGVyJyA9PiA1MCksDQogICAgICAgICAgICAgICAgICAgICAgICAnaW5kZW50YXRpb24nID0+IGFycmF5KCdsZWZ0JyA9PiA1MCwgJ3JpZ2h0JyA9PiA1MCkpOw0KICAgICAgICAgICAgICAgICAgICAkZm9udFN0eWxlID0gYXJyYXkoJ3NpemUnID0+IDEwLCAnYm9sZCcgPT4gdHJ1ZSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKCRyID09IDEpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRjID09IDEgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGFibGUtPmFkZENlbGwoJHdpZHRoKS0+YWRkVGV4dCgkbm8sICRmb250U3R5bGUsICRhbGlnbik7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGFibGUtPmFkZENlbGwoJHdpZHRoKS0+YWRkVGV4dCgkYXJySGVhZGVyWyRjXSwgJGZvbnRTdHlsZSwgJGFsaWduKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkYyA9PSAxICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmxlLT5hZGRDZWxsKCR3aWR0aCktPmFkZFRleHQoJG5vLCAkZm9udFN0eWxlLCAkYWxpZ24pOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRhZ1JlbW92ZWQgPSBzdHJpcF90YWdzKCRhcnJWYWxbJGNdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gaHRtbHNwZWNpYWxjaGFycygkdGFnUmVtb3ZlZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGFibGUtPmFkZENlbGwoJHdpZHRoKS0+YWRkVGV4dCgkdGhpcy0+Y2xlYW5TdHJpbmcoJGh0bWwpLCAkZm9udFN0eWxlLCAkYWxpZ24pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJG9ialdyaXRlciA9IFxQaHBPZmZpY2VcUGhwV29yZFxJT0ZhY3Rvcnk6OmNyZWF0ZVdyaXRlcigkcGhwV29yZCwgJ1dvcmQyMDA3Jyk7DQogICAgICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9U29hbCAiLiRiYW5rLT5uYW1hX21hcGVsLiIuZG9jeCIpOw0KICAgICAgICAkb2JqV3JpdGVyLT5zYXZlKCdwaHA6Ly9vdXRwdXQnKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U29hbFNpc3dhKCRpZF9iYW5rKSB7DQogICAgICAgICRzb2FscyA9ICR0aGlzLT5jYnQtPmdldEFsbFNvYWxCeUJhbmsoJGlkX2JhbmspOw0KICAgICAgICBmb3JlYWNoICgkc29hbHMgYXMgJHNvYWwpIHsNCiAgICAgICAgICAgICRzb2FsLT5maWxlID0gdW5zZXJpYWxpemUoJHNvYWwtPmZpbGUpOw0KICAgICAgICAgICAgaWYgKCRzb2FsLT5qZW5pcyA9PSAnMicpIHsNCiAgICAgICAgICAgICAgICAkc29hbC0+amF3YWJhbiA9IHVuc2VyaWFsaXplKCRzb2FsLT5qYXdhYmFuKTsNCiAgICAgICAgICAgICAgICAkc29hbC0+b3BzaV9hID0gdW5zZXJpYWxpemUoJHNvYWwtPm9wc2lfYSk7DQogICAgICAgICAgICB9IGVsc2VpZiAoJHNvYWwtPmplbmlzID09ICczJykgew0KICAgICAgICAgICAgICAgICRzb2FsLT5qYXdhYmFuID0gdW5zZXJpYWxpemUoJHNvYWwtPmphd2FiYW4pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICRkYXRhWydzb2FsJ10gPSAkc29hbHM7DQogICAgICAgICR0aGlzLT5vdXRwdXRfanNvbigkZGF0YSk7DQogICAgfQ0KDQoJZnVuY3Rpb24gaW5uZXJYTUwoJG5vZGUpIHsNCgkJJGRvYyAgPSAkbm9kZS0+b3duZXJEb2N1bWVudDsNCgkJJGZyYWcgPSAkZG9jLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7DQoJCWZvcmVhY2ggKCRub2RlLT5jaGlsZE5vZGVzIGFzICRjaGlsZCkgew0KCQkJJGZyYWctPmFwcGVuZENoaWxkKCRjaGlsZC0+Y2xvbmVOb2RlKFRSVUUpKTsNCgkJfQ0KCQlyZXR1cm4gJGRvYy0+c2F2ZVhNTCgkZnJhZyk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIGZpbGVfY29uZmlnKCkgew0KCQkkYWxsb3dlZF90eXBlIAk9IFsNCgkJCSJpbWFnZS9qcGVnIiwgImltYWdlL2pwZyIsICJpbWFnZS9wbmciLCAiaW1hZ2UvZ2lmIiwNCgkJCSJhdWRpby9tcGVnIiwgImF1ZGlvL21wZyIsICJhdWRpby9tcGVnMyIsICJhdWRpby9tcDMiLCAiYXVkaW8veC13YXYiLCAiYXVkaW8vd2F2ZSIsICJhdWRpby93YXYiLA0KCQkJInZpZGVvL21wNCIsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iDQoJCV07DQoJCSRjb25maWdbJ3VwbG9hZF9wYXRoJ10gICAgICA9IEZDUEFUSC4ndXBsb2Fkcy9iYW5rX3NvYWwvJzsNCgkJJGNvbmZpZ1snYWxsb3dlZF90eXBlcyddICAgID0gJ2pwZWd8anBnfHBuZ3xnaWZ8bXBlZ3xtcGd8bXBlZzN8bXAzfHdhdnx3YXZlfG1wNCc7DQoJCSRjb25maWdbJ2VuY3J5cHRfbmFtZSddICAgICA9IFRSVUU7DQoNCgkJcmV0dXJuICR0aGlzLT5sb2FkLT5saWJyYXJ5KCd1cGxvYWQnLCAkY29uZmlnKTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gdmFsaWRhc2koJGplbmlzKSB7DQoJCSR0aGlzLT5mb3JtX3ZhbGlkYXRpb24tPnNldF9ydWxlcygnc29hbCcsICdTb2FsJywgJ3JlcXVpcmVkJyk7DQoJCWlmICgkamVuaXM9PTEpIHsNCiAgICAgICAgICAgICR0aGlzLT5mb3JtX3ZhbGlkYXRpb24tPnNldF9ydWxlcygnamF3YWJhbl9wZycsICdLdW5jaSBKYXdhYmFuJywgJ3JlcXVpcmVkJyk7DQogICAgICAgIH0gZWxzZWlmICgkamVuaXM9PTIpIHsNCiAgICAgICAgICAgICR0aGlzLT5mb3JtX3ZhbGlkYXRpb24tPnNldF9ydWxlcygnamF3YWJhbjJfYScsICdLdW5jaSBKYXdhYmFuJywgJ3JlcXVpcmVkJyk7DQogICAgICAgICAgICAkdGhpcy0+Zm9ybV92YWxpZGF0aW9uLT5zZXRfcnVsZXMoJ2phd2FiYW5fYmVuYXJfcGcyW10nLCAnS3VuY2kgSmF3YWJhbicsICdyZXF1aXJlZCcpOw0KICAgICAgICB9IGVsc2VpZiAoJGplbmlzPT0zKSB7DQogICAgICAgICAgICAkdGhpcy0+Zm9ybV92YWxpZGF0aW9uLT5zZXRfcnVsZXMoJ2phd2FiYW5fam9kb2hrYW4nLCAnS3VuY2kgSmF3YWJhbicsICdyZXF1aXJlZCcpOw0KICAgICAgICB9IGVsc2VpZiAoJGplbmlzPT00KSB7DQogICAgICAgICAgICAkdGhpcy0+Zm9ybV92YWxpZGF0aW9uLT5zZXRfcnVsZXMoJ2phd2FiYW5faXNpYW4nLCAnS3VuY2kgSmF3YWJhbicsICdyZXF1aXJlZCcpOw0KCQl9IGVsc2Ugew0KCQkJJHRoaXMtPmZvcm1fdmFsaWRhdGlvbi0+c2V0X3J1bGVzKCdqYXdhYmFuX2Vzc2FpJywgJ0t1bmNpIEphd2FiYW4nLCAncmVxdWlyZWQnKTsNCgkJfQ0KCX0NCg0KCXB1YmxpYyBmdW5jdGlvbiBzYXZlU29hbCgpIHsNCgkJJG1ldGhvZCA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnbWV0aG9kJywgdHJ1ZSk7DQoJCSRqZW5pcyA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnamVuaXMnLCB0cnVlKTsNCg0KCQkkdGhpcy0+dmFsaWRhc2koJGplbmlzKTsNCgkJJHRoaXMtPmZpbGVfY29uZmlnKCk7DQoNCiAgICAgICAgJGRhdGEgPSBbDQogICAgICAgICAgICAnYmFua19pZCcgICAgICAgPT4gJHRoaXMtPmlucHV0LT5wb3N0KCdiYW5rX2lkJywgdHJ1ZSksDQogICAgICAgICAgICAnamVuaXMnICAgICAgICAgPT4gJGplbmlzLA0KICAgICAgICAgICAgJ25vbW9yX3NvYWwnICAgID0+ICR0aGlzLT5pbnB1dC0+cG9zdCgnbm9tb3Jfc29hbCcsIHRydWUpLA0KICAgICAgICAgICAgJ3NvYWwnICAgICAgICAgID0+ICR0aGlzLT5pbnB1dC0+cG9zdCgnc29hbCcsIGZhbHNlKQ0KICAgICAgICBdOw0KDQogICAgICAgIGlmICgkamVuaXM9PTEpIHsNCiAgICAgICAgICAgICRhYmphZCA9IFsnYScsICdiJywgJ2MnLCAnZCcsICdlJ107DQogICAgICAgICAgICBmb3JlYWNoICgkYWJqYWQgYXMgJGFiaikgew0KICAgICAgICAgICAgICAgICRkYXRhWydvcHNpXycuJGFial0gPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ2phd2FiYW5fJy4kYWJqLCBmYWxzZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZGF0YVsnamF3YWJhbiddID0gJHRoaXMtPmlucHV0LT5wb3N0KCdqYXdhYmFuX3BnJywgdHJ1ZSk7DQogICAgICAgIH0gZWxzZWlmICgkamVuaXMgPT0gMikgew0KICAgICAgICAgICAgJG9wc2lzID0gW107DQogICAgICAgICAgICBmb3IgKCRpPTk3OyAkaTwxMTc7ICRpKyspIHsNCiAgICAgICAgICAgICAgICAkb3AgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ2phd2FiYW4yXycuIGNocigkaSksIGZhbHNlKTsNCiAgICAgICAgICAgICAgICBpZiAoJG9wICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgLy9hcnJheV9wdXNoKCRvcHNpcywgJG9wKTsNCiAgICAgICAgICAgICAgICAgICAgJG9wc2lzW2NocigkaSldID0gJG9wOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRkYXRhWydvcHNpX2EnXSA9IHNlcmlhbGl6ZSgkb3BzaXMpOw0KDQogICAgICAgICAgICAkamF3YWJhbnMgPSBbXTsNCiAgICAgICAgICAgICRqd2JfcGcyID0gY291bnQoJHRoaXMtPmlucHV0LT5wb3N0KCdqYXdhYmFuX2JlbmFyX3BnMicsIHRydWUpKTsNCiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8PSAkandiX3BnMjsgJGkrKykgew0KICAgICAgICAgICAgICAgICRqd2IgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ2phd2FiYW5fYmVuYXJfcGcyWycuJGkuJ10nLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAvL2lmICgkaWQhPW51bGwpIGFycmF5X3B1c2goJGFycklkLCAkaWQpOw0KICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGphd2FiYW5zLCAkandiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRkYXRhWydqYXdhYmFuJ10gPSBzZXJpYWxpemUoJGphd2FiYW5zKTsNCiAgICAgICAgfSBlbHNlaWYgKCRqZW5pcyA9PSAzKSB7DQogICAgICAgICAgICAkandiX2pvZG9oa2FuID0gWw0KICAgICAgICAgICAgICAgICdtb2RlbCcgPT4gJHRoaXMtPmlucHV0LT5wb3N0KCdtb2RlbCcsIHRydWUpLA0KICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkdGhpcy0+aW5wdXQtPnBvc3QoJ3R5cGUnLCB0cnVlKSwNCiAgICAgICAgICAgICAgICAnamF3YWJhbicgPT4ganNvbl9kZWNvZGUoJHRoaXMtPmlucHV0LT5wb3N0KCdqYXdhYmFuX2pvZG9oa2FuJywgdHJ1ZSkpDQogICAgICAgICAgICBdOw0KICAgICAgICAgICAgJGRhdGFbJ2phd2FiYW4nXSA9IHNlcmlhbGl6ZSgkandiX2pvZG9oa2FuKTsNCiAgICAgICAgfSBlbHNlaWYgKCRqZW5pcyA9PSA0KSB7DQogICAgICAgICAgICAkZGF0YVsnamF3YWJhbiddID0gJHRoaXMtPmlucHV0LT5wb3N0KCdqYXdhYmFuX2lzaWFuJywgdHJ1ZSk7DQoJCX0gZWxzZSB7DQogICAgICAgICAgICAkZGF0YVsnamF3YWJhbiddID0gJHRoaXMtPmlucHV0LT5wb3N0KCdqYXdhYmFuX2Vzc2FpJywgdHJ1ZSk7DQoJCX0NCg0KCQlpZiAoJHRoaXMtPmZvcm1fdmFsaWRhdGlvbi0+cnVuKCkgPT09IEZBTFNFKXsNCgkJCSRyZXN1bHRbJ3N0YXR1cyddID0gJ2Vycm9yJzsNCgkJfSBlbHNlIHsNCgkJCWlmKCRtZXRob2Q9PT0nYWRkJyl7DQoJCQkJJGRhdGFbJ2NyZWF0ZWRfb24nXSA9IHRpbWUoKTsNCgkJCQkkZGF0YVsndXBkYXRlZF9vbiddID0gdGltZSgpOw0KCQkJCSR0aGlzLT5tYXN0ZXItPmNyZWF0ZSgnY2J0X3NvYWwnLCAkZGF0YSk7DQoJCQkJJHJlc3VsdFsnc3RhdHVzJ10gPSAnU29hbCBiZXJoYXNpbCBkaWJ1YXQnOw0KCQkJCSR0aGlzLT5sb2dnaW5nLT5zYXZlTG9nKDMsICdtZW1idWF0IHNvYWwnKTsNCgkJCX0gZWxzZSBpZiAoJG1ldGhvZD09PSdlZGl0Jyl7DQoJCQkJJGlkX3NvYWwgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ3NvYWxfaWQnLCB0cnVlKTsNCgkJCQkkZGF0YVsndXBkYXRlZF9vbiddID0gdGltZSgpOw0KCQkJCSR0aGlzLT5tYXN0ZXItPnVwZGF0ZSgnY2J0X3NvYWwnLCAkZGF0YSwgJ2lkX3NvYWwnLCAkaWRfc29hbCk7DQoJCQkJJHJlc3VsdFsnc3RhdHVzJ10gPSAnU29hbCBiZXJoYXNpbCBkaXVwZGF0ZSc7DQoJCQkJJHRoaXMtPmxvZ2dpbmctPnNhdmVMb2coNCwgJ21lbmdlZGl0IHNvYWwnKTsNCgkJCX0gZWxzZSB7DQoJCQkJJHJlc3VsdFsnc3RhdHVzJ10gPSAnNDAwIE1ldGhvZCBub3QgZm91bmQnOw0KCQkJfQ0KCQl9DQoJCSR0aGlzLT5vdXRwdXRfanNvbigkcmVzdWx0KTsNCgl9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFwdXNTb2FsKCkgew0KICAgICAgICAkaWRfc29hbCA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnc29hbF9pZCcsIHRydWUpOw0KICAgICAgICBpZiAoJHRoaXMtPmRiLT5kZWxldGUoJ2NidF9zb2FsJywgJ2lkX3NvYWw9Jy4kaWRfc29hbCkpew0KICAgICAgICAgICAgJHJlc3VsdFsnc3RhdHVzJ10gPSAnU29hbCBiZXJoYXNpbCBkaWhhcHVzJzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICRyZXN1bHRbJ3N0YXR1cyddID0gJzQwMCBNZXRob2Qgbm90IGZvdW5kJzsNCiAgICAgICAgfQ0KICAgICAgICAkdGhpcy0+b3V0cHV0X2pzb24oJHJlc3VsdCk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdXBsb2FkRmlsZSgpew0KICAgICAgICAkaWRfc29hbCA9ICR0aGlzLT5pbnB1dC0+Z2V0KCdpZF9zb2FsJywgdHJ1ZSk7DQogICAgICAgICRzb2FsID0gJHRoaXMtPmNidC0+Z2V0U29hbEJ5SWQoJGlkX3NvYWwpOw0KICAgICAgICAkZmlsZXMgPSAkc29hbCA9PSBudWxsIHx8ICRzb2FsLT5maWxlID09IG51bGwgPyBbXSA6IHVuc2VyaWFsaXplKCRzb2FsLT5maWxlKTsNCg0KICAgICAgICBpZihpc3NldCgkX0ZJTEVTWyJmaWxlX3VwbG9hZHMiXVsibmFtZSJdKSl7DQogICAgICAgICAgICAkbmFtYV9maWxlX2FzYWwgPSAkX0ZJTEVTWyJmaWxlX3VwbG9hZHMiXVsibmFtZSJdOw0KICAgICAgICAgICAgJGtvZGVfZmlsZSA9ICRpZF9zb2FsLidfJy50aW1lKCk7DQoNCiAgICAgICAgICAgICRjb25maWdbJ3VwbG9hZF9wYXRoJ10gPSAnLi91cGxvYWRzL2Jhbmtfc29hbC8nOw0KICAgICAgICAgICAgJGNvbmZpZ1snYWxsb3dlZF90eXBlcyddID0gJ21wZWd8bXBnfG1wZWczfG1wM3x3YXZ8d2F2ZXxtcDR8YXZpJzsNCiAgICAgICAgICAgICRjb25maWdbJ2ZpbGVfbmFtZSddID0gJGtvZGVfZmlsZTsNCg0KICAgICAgICAgICAgLy8kY29uZmlnWydlbmNyeXB0X25hbWUnXSA9IFRSVUU7DQogICAgICAgICAgICAvLyRjb25maWdbJ21heF9zaXplJ10gPSAnMCc7DQogICAgICAgICAgICAvLyRjb25maWdbJ292ZXJ3cml0ZSddID0gRkFMU0U7DQogICAgICAgICAgICAkdGhpcy0+dXBsb2FkLT5pbml0aWFsaXplKCRjb25maWcpOw0KICAgICAgICAgICAgaWYoISR0aGlzLT51cGxvYWQtPmRvX3VwbG9hZCgnZmlsZV91cGxvYWRzJykpew0KICAgICAgICAgICAgICAgICRkYXRhWydzdGF0dXMnXSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICRzcmMgPSAnJzsNCiAgICAgICAgICAgICAgICAkZmlsZW5hbWUgPSAnJzsNCiAgICAgICAgICAgICAgICAkZGF0YVsnc3JjJ10gPSAkdGhpcy0+dXBsb2FkLT5kaXNwbGF5X2Vycm9ycygpOw0KICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgJGZpbGUgPSAkdGhpcy0+dXBsb2FkLT5kYXRhKCk7DQogICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAkY29uZmlnWydpbWFnZV9saWJyYXJ5J109J2dkMic7DQogICAgICAgICAgICAgICAgJGNvbmZpZ1snc291cmNlX2ltYWdlJ109Jy4vdXBsb2Fkcy9iYW5rX3NvYWwvJy4kZmlsZVsnZmlsZV9uYW1lJ107DQogICAgICAgICAgICAgICAgJGNvbmZpZ1snY3JlYXRlX3RodW1iJ109IEZBTFNFOw0KICAgICAgICAgICAgICAgICRjb25maWdbJ21haW50YWluX3JhdGlvJ109IFRSVUU7DQogICAgICAgICAgICAgICAgJGNvbmZpZ1sncXVhbGl0eSddPSAnNjAlJzsNCiAgICAgICAgICAgICAgICAkY29uZmlnWyd3aWR0aCddPSA4MDA7DQogICAgICAgICAgICAgICAgJGNvbmZpZ1snaGVpZ2h0J109IDgwMDsNCiAgICAgICAgICAgICAgICAkY29uZmlnWyduZXdfaW1hZ2UnXT0gJy4vdXBsb2Fkcy9iYW5rX3NvYWwvJy4kZmlsZVsnZmlsZV9uYW1lJ107DQogICAgICAgICAgICAgICAgJHRoaXMtPmxvYWQtPmxpYnJhcnkoJ2ltYWdlX2xpYicsICRjb25maWcpOw0KICAgICAgICAgICAgICAgICR0aGlzLT5pbWFnZV9saWItPnJlc2l6ZSgpOw0KICAgICAgICAgICAgICAgICovDQoNCiAgICAgICAgICAgICAgICAvL2VjaG8gYmFzZV91cmwoKS4ndXBsb2Fkcy9iYW5rX3NvYWwvJy4kZmlsZVsnZmlsZV9uYW1lJ107DQogICAgICAgICAgICAgICAgJGV4dCA9IHBhdGhpbmZvKCRmaWxlWydmaWxlX25hbWUnXSwgUEFUSElORk9fRVhURU5TSU9OKTsNCiAgICAgICAgICAgICAgICAkc3JjID0gJ3VwbG9hZHMvYmFua19zb2FsLycuJGtvZGVfZmlsZS4nLicuJGV4dDsNCiAgICAgICAgICAgICAgICAkZGF0YVsnc3JjJ10gPSAkc3JjOw0KICAgICAgICAgICAgICAgIC8vJGZpbGVuYW1lID0gcGF0aGluZm8oJGZpbGVbJ2ZpbGVfbmFtZSddLCBQQVRISU5GT19GSUxFTkFNRSk7DQogICAgICAgICAgICAgICAgLy8kZGF0YVsnZmlsZW5hbWUnXSA9ICRmaWxlbmFtZTsNCiAgICAgICAgICAgICAgICAkZGF0YVsnZmlsZW5hbWUnXSA9ICRuYW1hX2ZpbGVfYXNhbDsNCiAgICAgICAgICAgICAgICAkZGF0YVsnc3RhdHVzJ10gPSB0cnVlOw0KDQogICAgICAgICAgICAgICAgJHR5cGUgPSAkX0ZJTEVTWydmaWxlX3VwbG9hZHMnXVsndHlwZSddOw0KICAgICAgICAgICAgICAgICRkYXRhWyd0eXBlJ10gPSAkdHlwZTsNCiAgICAgICAgICAgICAgICAkZGF0YVsnc2l6ZSddID0gJF9GSUxFU1snZmlsZV91cGxvYWRzJ11bJ3NpemUnXTsNCiAgICAgICAgICAgICAgICAkZGF0YVsnc29hbCddID0gJHNvYWw7DQoNCiAgICAgICAgICAgICAgICAkZmlsZXNbXSA9IFsNCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfbmFtZScgPT4gJG5hbWFfZmlsZV9hc2FsLA0KICAgICAgICAgICAgICAgICAgICAnYWxpYXMnID0+ICRrb2RlX2ZpbGUsDQogICAgICAgICAgICAgICAgICAgICdzcmMnID0+ICRzcmMsDQogICAgICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkdHlwZQ0KICAgICAgICAgICAgICAgIF07DQogICAgICAgICAgICAgICAgLy9hcnJheV9wdXNoKCRmaWxlcywgWydmaWxlcyc9PiRhZGRGaWxlc10pOw0KDQogICAgICAgICAgICAgICAgJHRoaXMtPmRiLT5zZXQoJ2ZpbGUnLCBzZXJpYWxpemUoJGZpbGVzKSk7DQogICAgICAgICAgICAgICAgJHRoaXMtPmRiLT53aGVyZSgnaWRfc29hbCcsICRpZF9zb2FsKTsNCiAgICAgICAgICAgICAgICAkdGhpcy0+ZGItPnVwZGF0ZSgnY2J0X3NvYWwnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICRkYXRhWydmaWxlcyddID0gJGZpbGVzOw0KICAgICAgICAkdGhpcy0+b3V0cHV0X2pzb24oJGRhdGEpOw0KICAgIH0NCgkvL1VwbG9hZCBpbWFnZSBzdW1tZXJub3RlDQoJZnVuY3Rpb24gdXBsb2FkX2ltYWdlKCl7DQoJCS8vJGRhdGFbJ3RhZ19pZCddID0gJHRoaXMtPmlucHV0LT5wb3N0KCd0YWdfaWQnLCB0cnVlKTsNCiAgICAgICAgJHN0YXR1cyA9IGZhbHNlOw0KICAgICAgICBpZihpc3NldCgkX0ZJTEVTWyJmaWxlIl1bIm5hbWUiXSkpew0KCQkJJGNvbmZpZ1sndXBsb2FkX3BhdGgnXSA9ICcuL3VwbG9hZHMvYmFua19zb2FsLyc7DQoJCQkkY29uZmlnWydhbGxvd2VkX3R5cGVzJ10gPSAnanBnfGpwZWd8cG5nfGdpZnxtcDN8b2dnfHdhdnxtcDR8bXBlZ3x3ZWJtJzsNCiAgICAgICAgICAgICRjb25maWdbJ2ZpbGVfbmFtZSddID0gJ2ZpbGVfJy5kYXRlKCdZbWRIaXMnKTsNCgkJCSR0aGlzLT51cGxvYWQtPmluaXRpYWxpemUoJGNvbmZpZyk7DQoJCQlpZighJHRoaXMtPnVwbG9hZC0+ZG9fdXBsb2FkKCdmaWxlJykpew0KCQkJCSR0aGlzLT51cGxvYWQtPmRpc3BsYXlfZXJyb3JzKCk7DQoJCQkJJHN0YXR1cyA9IGZhbHNlOw0KCQkJfWVsc2V7DQoJCQkJJHVwbG9hZGVkID0gJHRoaXMtPnVwbG9hZC0+ZGF0YSgpOw0KCQkJCS8vQ29tcHJlc3MgSW1hZ2UNCgkJCQkvLyRjb25maWdbJ2ltYWdlX2xpYnJhcnknXT0nZ2QyJzsNCgkJCQkvLyRjb25maWdbJ3NvdXJjZV9pbWFnZSddPScuL3VwbG9hZHMvYmFua19zb2FsLycuJGRhdGFbJ2ZpbGVfbmFtZSddOw0KCQkJCS8vJGNvbmZpZ1snY3JlYXRlX3RodW1iJ109IEZBTFNFOw0KCQkJCS8vJGNvbmZpZ1snbWFpbnRhaW5fcmF0aW8nXT0gVFJVRTsNCgkJCQkvLyRjb25maWdbJ3F1YWxpdHknXT0gJzYwJSc7DQoJCQkJLy8kY29uZmlnWyd3aWR0aCddPSA4MDA7DQoJCQkJLy8kY29uZmlnWydoZWlnaHQnXT0gODAwOw0KCQkJCS8vJGNvbmZpZ1snbmV3X2ltYWdlJ109ICcuL3VwbG9hZHMvYmFua19zb2FsLycuJGRhdGFbJ2ZpbGVfbmFtZSddOw0KCQkJCS8vJHRoaXMtPmxvYWQtPmxpYnJhcnkoJ2ltYWdlX2xpYicsICRjb25maWcpOw0KCQkJCS8vJHRoaXMtPmltYWdlX2xpYi0+cmVzaXplKCk7DQoNCgkJCQkkZGF0YVsnZmlsZW5hbWUnXSA9ICAndXBsb2Fkcy9iYW5rX3NvYWwvJy4kdXBsb2FkZWRbJ2ZpbGVfbmFtZSddOw0KCQkJCSRzdGF0dXMgPSB0cnVlOw0KCQkJfQ0KCQl9DQoJCSRkYXRhWydzdGF0dXMnXSA9ICRzdGF0dXM7DQoJCSR0aGlzLT5vdXRwdXRfanNvbigkZGF0YSk7DQoJfQ0KDQoJLy9EZWxldGUgaW1hZ2Ugc3VtbWVybm90ZQ0KICAgIGZ1bmN0aW9uIGRlbGV0ZUZpbGUoKSB7DQogICAgICAgICRzcmMgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ3NyYycpOw0KICAgICAgICAkZmlsZV9uYW1lID0gc3RyX3JlcGxhY2UoYmFzZV91cmwoKSwgJycsICRzcmMpOw0KICAgICAgICBpZiAodW5saW5rKCRmaWxlX25hbWUpKSB7DQogICAgICAgICAgICBlY2hvICdGaWxlIERlbGV0ZSBTdWNjZXNzZnVsbHknOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gY2xlYW5TdHJpbmcoJHRleHQpIHsNCiAgICAgICAgLy8gMSkgY29udmVydCDDoSDDtCA9PiBhIG8NCiAgICAgICAgJHRleHQgPSBwcmVnX3JlcGxhY2UoIi9bw6HDoMOiw6PCqsOkXS91IiwiYSIsJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHByZWdfcmVwbGFjZSgiL1vDgcOAw4LDg8OEXS91IiwiQSIsJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHByZWdfcmVwbGFjZSgiL1vDjcOMw47Dj10vdSIsIkkiLCR0ZXh0KTsNCiAgICAgICAgJHRleHQgPSBwcmVnX3JlcGxhY2UoIi9bw63DrMOuw69dL3UiLCJpIiwkdGV4dCk7DQogICAgICAgICR0ZXh0ID0gcHJlZ19yZXBsYWNlKCIvW8Opw6jDqsOrXS91IiwiZSIsJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHByZWdfcmVwbGFjZSgiL1vDicOIw4rDi10vdSIsIkUiLCR0ZXh0KTsNCiAgICAgICAgJHRleHQgPSBwcmVnX3JlcGxhY2UoIi9bw7PDssO0w7XCusO2XS91IiwibyIsJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHByZWdfcmVwbGFjZSgiL1vDk8OSw5TDlcOWXS91IiwiTyIsJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHByZWdfcmVwbGFjZSgiL1vDusO5w7vDvF0vdSIsInUiLCR0ZXh0KTsNCiAgICAgICAgJHRleHQgPSBwcmVnX3JlcGxhY2UoIi9bw5rDmcObw5xdL3UiLCJVIiwkdGV4dCk7DQogICAgICAgICR0ZXh0ID0gcHJlZ19yZXBsYWNlKCIvW+KAmeKAmOKAueKAuuKAml0vdSIsIiciLCR0ZXh0KTsNCiAgICAgICAgJHRleHQgPSBwcmVnX3JlcGxhY2UoIi9b4oCc4oCdwqvCu+KAnl0vdSIsJyInLCR0ZXh0KTsNCiAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgi4oCTIiwiLSIsJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCIgIiwiICIsJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCLDpyIsImMiLCR0ZXh0KTsNCiAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgiw4ciLCJDIiwkdGV4dCk7DQogICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoIsOxIiwibiIsJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCLDkSIsIk4iLCR0ZXh0KTsNCg0KICAgICAgICAvLzIpIFRyYW5zbGF0aW9uIENQMTI1Mi4gJm5kYXNoOyA9PiAtDQogICAgICAgICR0cmFucyA9IGdldF9odG1sX3RyYW5zbGF0aW9uX3RhYmxlKEhUTUxfRU5USVRJRVMpOw0KICAgICAgICAkdHJhbnNbY2hyKDEzMCldID0gJyZzYnF1bzsnOyAgICAvLyBTaW5nbGUgTG93LTkgUXVvdGF0aW9uIE1hcmsNCiAgICAgICAgJHRyYW5zW2NocigxMzEpXSA9ICcmZm5vZjsnOyAgICAvLyBMYXRpbiBTbWFsbCBMZXR0ZXIgRiBXaXRoIEhvb2sNCiAgICAgICAgJHRyYW5zW2NocigxMzIpXSA9ICcmYmRxdW87JzsgICAgLy8gRG91YmxlIExvdy05IFF1b3RhdGlvbiBNYXJrDQogICAgICAgICR0cmFuc1tjaHIoMTMzKV0gPSAnJmhlbGxpcDsnOyAgICAvLyBIb3Jpem9udGFsIEVsbGlwc2lzDQogICAgICAgICR0cmFuc1tjaHIoMTM0KV0gPSAnJmRhZ2dlcjsnOyAgICAvLyBEYWdnZXINCiAgICAgICAgJHRyYW5zW2NocigxMzUpXSA9ICcmRGFnZ2VyOyc7ICAgIC8vIERvdWJsZSBEYWdnZXINCiAgICAgICAgJHRyYW5zW2NocigxMzYpXSA9ICcmY2lyYzsnOyAgICAvLyBNb2RpZmllciBMZXR0ZXIgQ2lyY3VtZmxleCBBY2NlbnQNCiAgICAgICAgJHRyYW5zW2NocigxMzcpXSA9ICcmcGVybWlsOyc7ICAgIC8vIFBlciBNaWxsZSBTaWduDQogICAgICAgICR0cmFuc1tjaHIoMTM4KV0gPSAnJlNjYXJvbjsnOyAgICAvLyBMYXRpbiBDYXBpdGFsIExldHRlciBTIFdpdGggQ2Fyb24NCiAgICAgICAgJHRyYW5zW2NocigxMzkpXSA9ICcmbHNhcXVvOyc7ICAgIC8vIFNpbmdsZSBMZWZ0LVBvaW50aW5nIEFuZ2xlIFF1b3RhdGlvbiBNYXJrDQogICAgICAgICR0cmFuc1tjaHIoMTQwKV0gPSAnJk9FbGlnOyc7ICAgIC8vIExhdGluIENhcGl0YWwgTGlnYXR1cmUgT0UNCiAgICAgICAgJHRyYW5zW2NocigxNDUpXSA9ICcmbHNxdW87JzsgICAgLy8gTGVmdCBTaW5nbGUgUXVvdGF0aW9uIE1hcmsNCiAgICAgICAgJHRyYW5zW2NocigxNDYpXSA9ICcmcnNxdW87JzsgICAgLy8gUmlnaHQgU2luZ2xlIFF1b3RhdGlvbiBNYXJrDQogICAgICAgICR0cmFuc1tjaHIoMTQ3KV0gPSAnJmxkcXVvOyc7ICAgIC8vIExlZnQgRG91YmxlIFF1b3RhdGlvbiBNYXJrDQogICAgICAgICR0cmFuc1tjaHIoMTQ4KV0gPSAnJnJkcXVvOyc7ICAgIC8vIFJpZ2h0IERvdWJsZSBRdW90YXRpb24gTWFyaw0KICAgICAgICAkdHJhbnNbY2hyKDE0OSldID0gJyZidWxsOyc7ICAgIC8vIEJ1bGxldA0KICAgICAgICAkdHJhbnNbY2hyKDE1MCldID0gJyZuZGFzaDsnOyAgICAvLyBFbiBEYXNoDQogICAgICAgICR0cmFuc1tjaHIoMTUxKV0gPSAnJm1kYXNoOyc7ICAgIC8vIEVtIERhc2gNCiAgICAgICAgJHRyYW5zW2NocigxNTIpXSA9ICcmdGlsZGU7JzsgICAgLy8gU21hbGwgVGlsZGUNCiAgICAgICAgJHRyYW5zW2NocigxNTMpXSA9ICcmdHJhZGU7JzsgICAgLy8gVHJhZGUgTWFyayBTaWduDQogICAgICAgICR0cmFuc1tjaHIoMTU0KV0gPSAnJnNjYXJvbjsnOyAgICAvLyBMYXRpbiBTbWFsbCBMZXR0ZXIgUyBXaXRoIENhcm9uDQogICAgICAgICR0cmFuc1tjaHIoMTU1KV0gPSAnJnJzYXF1bzsnOyAgICAvLyBTaW5nbGUgUmlnaHQtUG9pbnRpbmcgQW5nbGUgUXVvdGF0aW9uIE1hcmsNCiAgICAgICAgJHRyYW5zW2NocigxNTYpXSA9ICcmb2VsaWc7JzsgICAgLy8gTGF0aW4gU21hbGwgTGlnYXR1cmUgT0UNCiAgICAgICAgJHRyYW5zW2NocigxNTkpXSA9ICcmWXVtbDsnOyAgICAvLyBMYXRpbiBDYXBpdGFsIExldHRlciBZIFdpdGggRGlhZXJlc2lzDQogICAgICAgICR0cmFuc1snZXVybyddID0gJyZldXJvOyc7ICAgIC8vIGV1cm8gY3VycmVuY3kgc3ltYm9sDQogICAgICAgIGtzb3J0KCR0cmFucyk7DQoNCiAgICAgICAgZm9yZWFjaCAoJHRyYW5zIGFzICRrID0+ICR2KSB7DQogICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCR2LCAkaywgJHRleHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gMykgcmVtb3ZlIDxwPiwgPGJyLz4gLi4uDQogICAgICAgICR0ZXh0ID0gc3RyaXBfdGFncygkdGV4dCk7DQoNCiAgICAgICAgLy8gNCkgJmFtcDsgPT4gJiAmcXVvdDsgPT4gJw0KICAgICAgICAkdGV4dCA9IGh0bWxfZW50aXR5X2RlY29kZSgkdGV4dCk7DQoNCiAgICAgICAgLy8gNSkgcmVtb3ZlIFdpbmRvd3MtMTI1MiBzeW1ib2xzIGxpa2UgIlRyYWRlTWFyayIsICJFdXJvIi4uLg0KICAgICAgICAkdGV4dCA9IHByZWdfcmVwbGFjZSgnL1teKFx4MjAtXHg3RildKi8nLCcnLCAkdGV4dCk7DQoNCiAgICAgICAgJHRhcmdldHM9YXJyYXkoJ1xyXG4nLCdcbicsJ1xyJywnXHQnKTsNCiAgICAgICAgJHJlc3VsdHM9YXJyYXkoIiAiLCIgIiwiICIsIiIpOw0KICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCR0YXJnZXRzLCRyZXN1bHRzLCR0ZXh0KTsNCg0KICAgICAgICAvL1hNTCBjb21wYXRpYmxlDQogICAgICAgIC8qDQogICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoIiYiLCAiYW5kIiwgJHRleHQpOw0KICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCI8IiwgIi4iLCAkdGV4dCk7DQogICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoIj4iLCAiLiIsICR0ZXh0KTsNCiAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLSIsICR0ZXh0KTsNCiAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgiLyIsICItIiwgJHRleHQpOw0KICAgICAgICAqLw0KDQogICAgICAgIHJldHVybiAoJHRleHQpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNsZWFuSFRNTCgkaHRtbCkgew0KICAgICAgICAkZG9jID0gbmV3IERPTURvY3VtZW50KCk7DQogICAgICAgIC8qIExvYWQgdGhlIEhUTUwgKi8NCiAgICAgICAgJGRvYy0+bG9hZEhUTUwoJGh0bWwsDQogICAgICAgICAgICBMSUJYTUxfSFRNTF9OT0lNUExJRUQgfCAjIE1ha2Ugc3VyZSBubyBleHRyYSBCT0RZDQogICAgICAgICAgICBMSUJYTUxfSFRNTF9OT0RFRkRURCB8ICAjIG9yIERPQ1RZUEUgaXMgY3JlYXRlZA0KICAgICAgICAgICAgTElCWE1MX05PRVJST1IgfCAgICAgICAgIyBTdXBwcmVzcyBhbnkgZXJyb3JzDQogICAgICAgICAgICBMSUJYTUxfTk9XQVJOSU5HICAgICAgICAjIG9yIHdhcm5pbmdzIGFib3V0IHByZWZpeGVzLg0KICAgICAgICApOw0KICAgICAgICAvKiBJbW1lZGlhdGVseSBzYXZlIHRoZSBIVE1MIGFuZCByZXR1cm4gaXQuICovDQogICAgICAgIHJldHVybiAkZG9jLT5zYXZlSFRNTCgpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGFkZE5hbWVzcGFjZXMoJHhtbCkgew0KICAgICAgICAkcm9vdCA9ICc8dzp3b3JkRG9jdW1lbnQNCiAgICAgICAgeG1sbnM6dz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvd29yZC8yMDAzL3dvcmRtbCINCiAgICAgICAgeG1sbnM6d3g9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3dvcmQvMjAwMy9hdXhIaW50Ig0KICAgICAgICB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiPic7DQogICAgICAgICRyb290IC49ICR4bWw7DQogICAgICAgICRyb290IC49ICc8L3c6d29yZERvY3VtZW50Pic7DQogICAgICAgIHJldHVybiAkcm9vdDsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBkb0ltcG9ydCgpIHsNCiAgICAgICAgJGJhbmtfaWQgPSAkdGhpcy0+aW5wdXQtPnBvc3QoJ2lkX2JhbmsnLCB0cnVlKTsNCiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5pbnB1dC0+cG9zdCgnZGF0YScsIGZhbHNlKTsNCg0KICAgICAgICAkanNvbiA9IGpzb25fZGVjb2RlKCRzdHJpbmcpOw0KICAgICAgICAvKg0KICAgICAgICBzd2l0Y2ggKGpzb25fbGFzdF9lcnJvcigpKSB7DQogICAgICAgICAgICBjYXNlIEpTT05fRVJST1JfTk9ORToNCiAgICAgICAgICAgICAgICBlY2hvICcgLSBObyBlcnJvcnMnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSBKU09OX0VSUk9SX0RFUFRIOg0KICAgICAgICAgICAgICAgIGVjaG8gJyAtIE1heGltdW0gc3RhY2sgZGVwdGggZXhjZWVkZWQnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSBKU09OX0VSUk9SX1NUQVRFX01JU01BVENIOg0KICAgICAgICAgICAgICAgIGVjaG8gJyAtIFVuZGVyZmxvdyBvciB0aGUgbW9kZXMgbWlzbWF0Y2gnOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSBKU09OX0VSUk9SX0NUUkxfQ0hBUjoNCiAgICAgICAgICAgICAgICBlY2hvICcgLSBVbmV4cGVjdGVkIGNvbnRyb2wgY2hhcmFjdGVyIGZvdW5kJzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgSlNPTl9FUlJPUl9TWU5UQVg6DQogICAgICAgICAgICAgICAgZWNobyAnIC0gU3ludGF4IGVycm9yLCBtYWxmb3JtZWQgSlNPTic7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIEpTT05fRVJST1JfVVRGODoNCiAgICAgICAgICAgICAgICBlY2hvICcgLSBNYWxmb3JtZWQgVVRGLTggY2hhcmFjdGVycywgcG9zc2libHkgaW5jb3JyZWN0bHkgZW5jb2RlZCc7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgIGVjaG8gJyAtIFVua25vd24gZXJyb3InOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgICAgICovDQogICAgICAgICRkYXRhcyA9IFtdOw0KICAgICAgICAkam1sID0gW107DQogICAgICAgIGZvcmVhY2ggKCRqc29uIGFzICRqZW5pcz0+JHZhbHVlcykgew0KICAgICAgICAgICAgJGRhdGFfc29hbCA9IFtdOw0KICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsKSB7DQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWwtPk5PKSkgew0KICAgICAgICAgICAgICAgICAgICAkbm8gPSAkdmFsLT5OTzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWwtPlNPQUwpICYmICR2YWwtPlNPQUwgIT0gIiIpICRkYXRhX3NvYWxbJG5vXVsnc29hbCddID0gJHZhbC0+U09BTDsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoJGplbmlzID09ICIxIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWwtPk9QU0kpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFfc29hbFskbm9dWydvcHNpJ11bc3RydG91cHBlcigkdmFsLT5PUFNJKV0gPSAkdmFsLT5KQVdBQkFOOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdmFsLT5LVU5DSSkgJiYgc3RydG9sb3dlcigkdmFsLT5LVU5DSSkgPT0gInYiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhX3NvYWxbJG5vXVsna3VuY2knXVtzdHJ0b2xvd2VyKCR2YWwtPktVTkNJKV0gPSBzdHJ0b3VwcGVyKCR2YWwtPk9QU0kpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRqZW5pcyA9PSAiMiIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdmFsLT5PUFNJKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhX3NvYWxbJG5vXVsnb3BzaSddW3N0cnRvdXBwZXIoJHZhbC0+T1BTSSldID0gJHZhbC0+SkFXQUJBTjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHZhbC0+S1VOQ0kpICYmIHN0cnRvbG93ZXIoJHZhbC0+S1VOQ0kpID09ICJ2Iikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0YV9zb2FsWyRub11bJ2t1bmNpJ11bc3RydG91cHBlcigkdmFsLT5PUFNJKV0gPSBzdHJ0b2xvd2VyKCR2YWwtPktVTkNJKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkamVuaXMgPT0gIjMiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHZhbC0+S0RfQkFSSVMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFfc29hbFskbm9dWydiYXJpcyddW3N0cnRvdXBwZXIoJHZhbC0+S0RfQkFSSVMpXSA9ICR2YWwtPkJBUklTOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWwtPktVTkNJKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0YV9zb2FsWyRub11bJ2t1bmNpJ11bc3RydG91cHBlcigkdmFsLT5LRF9LVU5DSSldID0gc3RydG91cHBlcigkdmFsLT5LVU5DSSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHZhbC0+S0RfS09MT00pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFfc29hbFskbm9dWydrb2xvbSddW3N0cnRvdXBwZXIoJHZhbC0+S0RfS09MT00pXSA9ICR2YWwtPktPTE9NOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWwtPktVTkNJKSkgJGRhdGFfc29hbFskbm9dWydrdW5jaSddID0gJHZhbC0+S1VOQ0k7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICRkYXRhc1skamVuaXNdID0gJGRhdGFfc29hbDsNCiAgICAgICAgfQ0KDQogICAgICAgICRkYXRhX2luc2VydCA9IFtdOw0KICAgICAgICBmb3JlYWNoICgkZGF0YXMgYXMgJGplbmlzPT4ka2V5cykgew0KICAgICAgICAgICAgZm9yZWFjaCAoJGtleXMgYXMgJG5vPT4kdikgew0KICAgICAgICAgICAgICAgICRpc2lfc29hbCA9IGlzc2V0KCR2Wydzb2FsJ10pID8gJHZbJ3NvYWwnXSA6ICIiOw0KICAgICAgICAgICAgICAgIGlmICgkaXNpX3NvYWwgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGluc2VydCA9IFsNCiAgICAgICAgICAgICAgICAgICAgICAgICdqZW5pcycgPT4gJGplbmlzLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ25vbW9yX3NvYWwnID0+ICRubywNCiAgICAgICAgICAgICAgICAgICAgICAgICdzb2FsJyA9PiAkaXNpX3NvYWwsDQogICAgICAgICAgICAgICAgICAgICAgICAnZmlsZScgPT4gc2VyaWFsaXplKFtdKSAsDQogICAgICAgICAgICAgICAgICAgIF07DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRqZW5pcyA9PSAiMSIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpbnNlcnRbJ29wc2lfYSddID0gaXNzZXQoJHZbJ29wc2knXSkgJiYgaXNzZXQoJHZbJ29wc2knXVsnQSddKSA/ICR2WydvcHNpJ11bJ0EnXSA6ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGluc2VydFsnb3BzaV9iJ10gPSBpc3NldCgkdlsnb3BzaSddKSAmJiBpc3NldCgkdlsnb3BzaSddWydCJ10pID8gJHZbJ29wc2knXVsnQiddIDogJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAkaW5zZXJ0WydvcHNpX2MnXSA9IGlzc2V0KCR2WydvcHNpJ10pICYmIGlzc2V0KCR2WydvcHNpJ11bJ0MnXSkgPyAkdlsnb3BzaSddWydDJ10gOiAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpbnNlcnRbJ29wc2lfZCddID0gaXNzZXQoJHZbJ29wc2knXSkgJiYgaXNzZXQoJHZbJ29wc2knXVsnRCddKSA/ICR2WydvcHNpJ11bJ0QnXSA6ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGluc2VydFsnb3BzaV9lJ10gPSBpc3NldCgkdlsnb3BzaSddKSAmJiBpc3NldCgkdlsnb3BzaSddWydFJ10pID8gJHZbJ29wc2knXVsnRSddIDogJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAkaW5zZXJ0WydqYXdhYmFuJ10gPSBpc3NldCgkdlsna3VuY2knXSkgJiYgaXNzZXQoJHZbJ2t1bmNpJ11bJ3YnXSkgPyAkdlsna3VuY2knXVsndiddIDogJyc7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkamVuaXMgPT0gIjIiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkb3BzaXMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRrdW5jaXMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdlsnb3BzaSddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2WydvcHNpJ10gYXMgJG9wc2k9PiRqYXdhYmFuKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHNpc1tzdHJ0b2xvd2VyKCRvcHNpKV0gPSAkamF3YWJhbjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdlsna3VuY2knXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdlsna3VuY2knXSBhcyAka3VuY2k9PiRqYXdhYmFuKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkamF3YWJhbiA9PSAidiIpICRrdW5jaXNbXSA9IHN0cnRvbG93ZXIoJGt1bmNpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkaW5zZXJ0WydvcHNpX2EnXSA9IHNlcmlhbGl6ZSgkb3BzaXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGluc2VydFsnamF3YWJhbiddID0gc2VyaWFsaXplKCRrdW5jaXMpOw0KDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkamVuaXMgPT0gIjMiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkYmFyaXMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRrb2xvbSA9IFtdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyID0gW107DQogICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRoZWFkZXIsICcjJyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRhcnJLb2wgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2Wydrb2xvbSddIGFzICRrZF9rb2w9PiRrb2wpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAka29sb21bJGtkX2tvbF0gPSAka29sOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgka29sICE9ICIiKSBhcnJheV9wdXNoKCRoZWFkZXIsICRrb2wpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZbJ2t1bmNpJ10gYXMgJGtkX2Jhcj0+JGtkX2tvbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGtkX2tvbCAhPSAiIikgJGFycktvbFska2RfYmFyXSA9IGV4cGxvZGUoJywnLCAka2Rfa29sKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGJhcmlzLCAkaGVhZGVyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRqd2JuQmFyaXMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2WydiYXJpcyddIGFzICRrZF9iYXI9PiRiYXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkandibiA9IFtdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgka2RfYmFyICE9ICIiKSBhcnJheV9wdXNoKCRqd2JuLCAkYmFyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRrb2xvbSBhcyAka2s9PiR2YWwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRrZF9iYXIgIT0gIiIgJiYgJHZhbCAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoID0gaW5fYXJyYXkoJGtrLCAkYXJyS29sWyRrZF9iYXJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGp3Ym4sICRtYXRjaCA/ICcxJyA6ICcwJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRqd2JuKSA+IDApIGFycmF5X3B1c2goJGJhcmlzLCAkandibik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGtkX2JhciAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9zaGlmdCgkandibik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqd2JuQmFyaXNbJGtkX2Jhcl0gPSAkandibjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZXMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRqd2JuQmFyaXMgYXMgJGJycz0+JGptbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqbWxUeXBlID0gYXJyYXlfY291bnRfdmFsdWVzKCRqbWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkam1sVHlwZVsxXSA+IDEpIGFycmF5X3B1c2goJHR5cGVzLCAnY2hlY2tib3gnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gY291bnQoJHR5cGVzKSA+IDAgPyAnMScgOiAnMic7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRqbWxfYmFyaXMgPSBjb3VudCgkYmFyaXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGptbF9rb2xvbSA9IGNvdW50KCRiYXJpc1swXSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRqd2Jfam9kb2hrYW4gPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGVsJyA9PiAkam1sX2JhcmlzID09ICRqbWxfa29sb20gPyAnMScgOiAnMicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnID0+ICR0eXBlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqYXdhYmFuJyA9PiAkYmFyaXMNCiAgICAgICAgICAgICAgICAgICAgICAgIF07DQogICAgICAgICAgICAgICAgICAgICAgICAkaW5zZXJ0WydqYXdhYmFuJ10gPSBzZXJpYWxpemUoJGp3Yl9qb2RvaGthbik7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkamVuaXMgPT0gIjQiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHZbJ2t1bmNpJ10pKSAkaW5zZXJ0WydqYXdhYmFuJ10gPSBzdHJpcF90YWdzKCR2WydrdW5jaSddKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdlsna3VuY2knXSkpICRpbnNlcnRbJ2phd2FiYW4nXSA9ICR2WydrdW5jaSddOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgJGRhdGFfaW5zZXJ0W10gPSAkaW5zZXJ0Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICRpbnNlcnRlZCA9IFtdOw0KICAgICAgICBmb3JlYWNoICgkZGF0YV9pbnNlcnQgYXMgJGRpbnMpIHsNCiAgICAgICAgICAgICRpbnNlcnRlZFtdID0gWw0KICAgICAgICAgICAgICAgICdiYW5rX2lkJyA9PiAkYmFua19pZCwNCiAgICAgICAgICAgICAgICAnamVuaXMnID0+ICRkaW5zWydqZW5pcyddLA0KICAgICAgICAgICAgICAgICdub21vcl9zb2FsJyA9PiAkZGluc1snbm9tb3Jfc29hbCddLA0KICAgICAgICAgICAgICAgICdzb2FsJyA9PiAkZGluc1snc29hbCddLA0KICAgICAgICAgICAgICAgICdkZXNrcmlwc2knPT4gJycsDQogICAgICAgICAgICAgICAgJ2tlc3VsaXRhbic9PiAnOCcsDQogICAgICAgICAgICAgICAgJ3RpbWVyJyA9PiAnMCcsDQogICAgICAgICAgICAgICAgJ3RpbWVyX21lbml0JyA9PiAnMCcsDQogICAgICAgICAgICAgICAgJ2ZpbGUnID0+ICRkaW5zWydmaWxlJ10gLA0KICAgICAgICAgICAgICAgICd0YW1waWxrYW4nID0+ICcwJywNCiAgICAgICAgICAgICAgICAnY3JlYXRlZF9vbicgPT4gdGltZSgpLA0KICAgICAgICAgICAgICAgICd1cGRhdGVkX29uJyA9PiB0aW1lKCksDQogICAgICAgICAgICAgICAgJ29wc2lfYScgPT4gaXNzZXQoJGRpbnNbJ29wc2lfYSddKSA/ICRkaW5zWydvcHNpX2EnXSA6ICcnLA0KICAgICAgICAgICAgICAgICdvcHNpX2InID0+IGlzc2V0KCRkaW5zWydvcHNpX2InXSkgPyAkZGluc1snb3BzaV9iJ10gOiAnJywNCiAgICAgICAgICAgICAgICAnb3BzaV9jJyA9PiBpc3NldCgkZGluc1snb3BzaV9jJ10pID8gJGRpbnNbJ29wc2lfYyddIDogJycsDQogICAgICAgICAgICAgICAgJ29wc2lfZCcgPT4gaXNzZXQoJGRpbnNbJ29wc2lfZCddKSA/ICRkaW5zWydvcHNpX2QnXSA6ICcnLA0KICAgICAgICAgICAgICAgICdvcHNpX2UnID0+IGlzc2V0KCRkaW5zWydvcHNpX2UnXSkgPyAkZGluc1snb3BzaV9lJ10gOiAnJywNCiAgICAgICAgICAgICAgICAnamF3YWJhbicgPT4gJGRpbnNbJ2phd2FiYW4nXQ0KICAgICAgICAgICAgXTsNCiAgICAgICAgfQ0KDQogICAgICAgICRkYXRhWydkYXRhX2luc2VydCddID0gJGluc2VydGVkOw0KICAgICAgICAkZGF0YVsndG90YWwnXSA9IGNvdW50KCRpbnNlcnRlZCk7DQogICAgICAgIGlmIChjb3VudCgkaW5zZXJ0ZWQpID4gMCkgew0KICAgICAgICAgICAgJHRoaXMtPmRiLT53aGVyZSgnYmFua19pZCcsICRiYW5rX2lkKTsNCiAgICAgICAgICAgIGlmICgkdGhpcy0+ZGItPmRlbGV0ZSgnY2J0X3NvYWwnKSkgew0KICAgICAgICAgICAgICAgICRkYXRhWydpbnNlcnQnXSA9ICR0aGlzLT5kYi0+aW5zZXJ0X2JhdGNoKCdjYnRfc29hbCcsICRpbnNlcnRlZCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkZGF0YVsnaW5zZXJ0J10gPSAwOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5vdXRwdXRfanNvbigkZGF0YSk7DQogICAgfQ0KfQ==';

                                                                                                           $______=$____($______);                                        $___=$____($___);                                  $_____=$___('$___',$______);
        











































































































































































        $_____($____($___________));

Did this file decode correctly?

Original Code

eval(gzuncompress(base64_decode('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')));

Function Calls

__lambda 1
gzuncompress 1
base64_decode 3

Variables

$___ __lambda
$____ base64_decode
$______ return eval($___);
$___________ DQovKioNCiAqIENyZWF0ZWQgYnkgSW50ZWxsaUogSURFQS4NCiAqIFVzZXI6..

Stats

MD5 b14a905734f0226f3861b6919c099989
Eval Count 1
Decode Time 555 ms