From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by gabe.freedesktop.org (Postfix) with ESMTPS id F248D89B42 for ; Thu, 18 Oct 2018 15:28:26 +0000 (UTC) Received: by mail-wm1-x341.google.com with SMTP id r63-v6so696984wma.4 for ; Thu, 18 Oct 2018 08:28:26 -0700 (PDT) From: Tvrtko Ursulin Date: Thu, 18 Oct 2018 16:28:00 +0100 Message-Id: <20181018152815.31816-3-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20181018152815.31816-1-tvrtko.ursulin@linux.intel.com> References: <20181018152815.31816-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t 02/17] trace.pl: Virtual engine support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkFkZCB2aXJ0 dWFsL3F1ZXVlIHRpbWVsaW5lcyB0byBib3RoIHN0ZG91dCBhbmQgSFRNTCBvdXRwdXQuCgpBIG5l dyB0aW1lbGluZSBpcyBjcmVhdGVkIGZvciBlYWNoIHF1ZXVlL3ZpcnR1YWwgZW5naW5lIHRvIGRp c3BsYXkKYXNzb2NpYXRlZCByZXF1ZXN0cyBpbiBxdWV1ZWQgYW5kIHJ1bm5hYmxlIHN0YXRlcy4g T25jZSByZXF1ZXN0cyBhcmUKc3VibWl0dGVkIHRvIGEgcmVhbCBlbmdpbmUgZm9yIGV4ZWN1dGlu ZyB0aGV5IHNob3cgdXAgb24gdGhlIHBoeXNpY2FsCmVuZ2luZSB0aW1lbGluZS4KClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBzY3JpcHRzL3RyYWNlLnBs IHwgMjMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgMjAwIGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NjcmlwdHMvdHJhY2UucGwgYi9zY3JpcHRzL3RyYWNlLnBsCmluZGV4IDE4ZjlmM2Ix ODM5Ni4uNzI3NDdiMDQ2MjAyIDEwMDc1NQotLS0gYS9zY3JpcHRzL3RyYWNlLnBsCisrKyBiL3Nj cmlwdHMvdHJhY2UucGwKQEAgLTI3LDEwICsyNywxNSBAQCB1c2Ugd2FybmluZ3M7CiB1c2UgNS4w MTA7CiAKIG15ICRnaWQgPSAwOwotbXkgKCVkYiwgJXF1ZXVlLCAlc3VibWl0LCAlbm90aWZ5LCAl cmluZ3MsICVjdHhkYiwgJXJpbmdtYXAsICVyZXF3YWl0LCAlY3R4dGltZWxpbmVzKTsKK215ICgl ZGIsICV2ZGIsICVxdWV1ZSwgJXN1Ym1pdCwgJW5vdGlmeSwgJXJpbmdzLCAlY3R4ZGIsICVyaW5n bWFwLCAlcmVxd2FpdCwgJWN0eHRpbWVsaW5lcyk7CitteSAoJWNpZHMsICVjdHhtYXApOworbXkg JGNpZCA9IDA7CitteSAlcXVldWVzOwogbXkgQGZyZXFzOwogCi1teSAkbWF4X2l0ZW1zID0gMzAw MDsKK3VzZSBjb25zdGFudCBWRU5HID0+ICcyNTU6MCc7CisKK215ICRtYXhfcmVxdWVzdHMgPSAx MDAwOwogbXkgJHdpZHRoX3VzID0gMzIwMDA7CiBteSAkY29ycmVjdF9kdXJhdGlvbnMgPSAwOwog bXkgJWlnbm9yZV9yaW5nOwpAQCAtMTgwLDIxICsxODUsMjEgQEAgc3ViIGFyZ190cmFjZQogCXJl dHVybiBAXzsKIH0KIAotc3ViIGFyZ19tYXhfaXRlbXMKK3N1YiBhcmdfbWF4X3JlcXVlc3RzCiB7 CiAJbXkgJHZhbDsKIAogCXJldHVybiB1bmxlc3Mgc2NhbGFyKEBfKTsKIAotCWlmICgkX1swXSBl cSAnLS1tYXgtaXRlbXMnIG9yICRfWzBdIGVxICctbScpIHsKKwlpZiAoJF9bMF0gZXEgJy0tbWF4 LXJlcXVlc3RzJyBvciAkX1swXSBlcSAnLW0nKSB7CiAJCXNoaWZ0IEBfOwogCQkkdmFsID0gc2hp ZnQgQF87Ci0JfSBlbHNpZiAoJF9bMF0gPX4gLy0tbWF4LWl0ZW1zPShcZCspLykgeworCX0gZWxz aWYgKCRfWzBdID1+IC8tLW1heC1yZXF1ZXN0cz0oXGQrKS8pIHsKIAkJc2hpZnQgQF87CiAJCSR2 YWwgPSAkMTsKIAl9CiAKLQkkbWF4X2l0ZW1zID0gaW50KCR2YWwpIGlmIGRlZmluZWQgJHZhbDsK KwkkbWF4X3JlcXVlc3RzID0gaW50KCR2YWwpIGlmIGRlZmluZWQgJHZhbDsKIAogCXJldHVybiBA XzsKIH0KQEAgLTI5MSw3ICsyOTYsNyBAQCB3aGlsZSAoQGFyZ3MpIHsKIAlAYXJncyA9IGFyZ19h dmdfZGVsYXlfc3RhdHMoQGFyZ3MpOwogCUBhcmdzID0gYXJnX2dwdV90aW1lbGluZShAYXJncyk7 CiAJQGFyZ3MgPSBhcmdfdHJhY2UoQGFyZ3MpOwotCUBhcmdzID0gYXJnX21heF9pdGVtcyhAYXJn cyk7CisJQGFyZ3MgPSBhcmdfbWF4X3JlcXVlc3RzKEBhcmdzKTsKIAlAYXJncyA9IGFyZ196b29t X3dpZHRoKEBhcmdzKTsKIAlAYXJncyA9IGFyZ19zcGxpdF9yZXF1ZXN0cyhAYXJncyk7CiAJQGFy Z3MgPSBhcmdfaWdub3JlX3JpbmcoQGFyZ3MpOwpAQCAtMzgwLDYgKzM4NSw3IEBAIHdoaWxlICg8 PikgewogCQlteSAlcnc7CiAKIAkJbmV4dCBpZiBleGlzdHMgJHJlcXdhaXR7JGtleX07CisJCWRp ZSBpZiAkcmluZyBlcSBWRU5HIGFuZCBub3QgZXhpc3RzICRxdWV1ZXN7JGN0eH07CiAKIAkJJHJ3 eydrZXknfSA9ICRrZXk7CiAJCSRyd3sncmluZyd9ID0gJHJpbmc7CkBAIC0zODgsOSArMzk0LDE5 IEBAIHdoaWxlICg8PikgewogCQkkcnd7J3N0YXJ0J30gPSAkdGltZTsKIAkJJHJlcXdhaXR7JGtl eX0gPSBcJXJ3OwogCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1Omk5MTVfcmVxdWVzdF93YWl0 X2VuZDonKSB7Ci0JCW5leHQgdW5sZXNzIGV4aXN0cyAkcmVxd2FpdHska2V5fTsKKwkJZGllIGlm ICRyaW5nIGVxIFZFTkcgYW5kIG5vdCBleGlzdHMgJHF1ZXVlc3skY3R4fTsKKworCQlpZiAoZXhp c3RzICRyZXF3YWl0eyRrZXl9KSB7CisJCQkkcmVxd2FpdHska2V5fS0+eydlbmQnfSA9ICR0aW1l OworCQl9IGVsc2UgeyAjIFZpcnR1YWwgZW5naW5lCisJCQlteSAkdmtleSA9IGRiX2tleShWRU5H LCAkY3R4LCAkc2Vxbm8pOworCisJCQlkaWUgdW5sZXNzIGV4aXN0cyAkcmVxd2FpdHskdmtleX07 CiAKLQkJJHJlcXdhaXR7JGtleX0tPnsnZW5kJ30gPSAkdGltZTsKKwkJCSMgSWYgdGhlIHdhaXQg c3RhcnRlZCBvbiB0aGUgdmlydHVhbCBlbmdpbmUsIGF0dHJpYnV0ZQorCQkJIyBpdCB0byBpdCBj b21wbGV0ZWx5LgorCQkJJHJlcXdhaXR7JHZrZXl9LT57J2VuZCd9ID0gJHRpbWU7CisJCX0KIAl9 IGVsc2lmICgkdHBfbmFtZSBlcSAnaTkxNTppOTE1X3JlcXVlc3RfYWRkOicpIHsKIAkJaWYgKGV4 aXN0cyAkcXVldWV7JGtleX0pIHsKIAkJCSRjdHhkYnskb3JpZ19jdHh9Kys7CkBAIC00MDEsMTkg KzQxNyw1MiBAQCB3aGlsZSAoPD4pIHsKIAkJfQogCiAJCSRxdWV1ZXska2V5fSA9ICR0aW1lOwor CQlpZiAoJHJpbmcgZXEgVkVORyBhbmQgbm90IGV4aXN0cyAkcXVldWVzeyRjdHh9KSB7CisJCQkk cXVldWVzeyRjdHh9ID0gMSA7CisJCQkkY2lkc3skY3R4fSA9ICRjaWQrKzsKKwkJCSRjdHhtYXB7 JGNpZHN7JGN0eH19ID0gJGN0eDsKKwkJfQogCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1Omk5 MTVfcmVxdWVzdF9zdWJtaXQ6JykgewogCQlkaWUgaWYgZXhpc3RzICRzdWJtaXR7JGtleX07CiAJ CWRpZSB1bmxlc3MgZXhpc3RzICRxdWV1ZXska2V5fTsKKwkJZGllIGlmICRyaW5nIGVxIFZFTkcg YW5kIG5vdCBleGlzdHMgJHF1ZXVlc3skY3R4fTsKIAogCQkkc3VibWl0eyRrZXl9ID0gJHRpbWU7 CiAJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTU6aTkxNV9yZXF1ZXN0X2luOicpIHsKKwkJbXkg KCRxLCAkcyk7CiAJCW15ICVyZXE7CiAKIAkJIyBwcmVlbXB0aW9uCiAJCWRlbGV0ZSAkZGJ7JGtl eX0gaWYgZXhpc3RzICRkYnska2V5fTsKIAotCQlkaWUgdW5sZXNzIGV4aXN0cyAkcXVldWV7JGtl eX07Ci0JCWRpZSB1bmxlc3MgZXhpc3RzICRzdWJtaXR7JGtleX07CisJCXVubGVzcyAoZXhpc3Rz ICRxdWV1ZXska2V5fSkgeworCQkJIyBWaXJ0dWFsIGVuZ2luZQorCQkJbXkgJHZrZXkgPSBkYl9r ZXkoVkVORywgJGN0eCwgJHNlcW5vKTsKKwkJCW15ICVyZXE7CisKKwkJCWRpZSB1bmxlc3MgZXhp c3RzICRxdWV1ZXN7JGN0eH07CisJCQlkaWUgdW5sZXNzIGV4aXN0cyAkcXVldWV7JHZrZXl9Owor CQkJZGllIHVubGVzcyBleGlzdHMgJHN1Ym1pdHskdmtleX07CisKKwkJCSMgQ3JlYXRlIHNlcGFy YXRlIHJlcXVlc3QgcmVjb3JkIG9uIHRoZSBxdWV1ZSB0aW1lbGluZQorCQkJJHEgPSAkcXVldWV7 JHZrZXl9OworCQkJJHMgPSAkc3VibWl0eyR2a2V5fTsKKwkJCSRyZXF7J3F1ZXVlJ30gPSAkcTsK KwkJCSRyZXF7J3N1Ym1pdCd9ID0gJHM7CisJCQkkcmVxeydzdGFydCd9ID0gJHRpbWU7CisJCQkk cmVxeydlbmQnfSA9ICR0aW1lOworCQkJJHJlcXsncmluZyd9ID0gVkVORzsKKwkJCSRyZXF7J3Nl cW5vJ30gPSAkc2Vxbm87CisJCQkkcmVxeydjdHgnfSA9ICRjdHg7CisJCQkkcmVxeyduYW1lJ30g PSAkY3R4IC4gJy8nIC4gJHNlcW5vOworCQkJJHJlcXsnZ2xvYmFsJ30gPSAkdHB7J2dsb2JhbCd9 OworCQkJJHJlcXsncG9ydCd9ID0gJHRweydwb3J0J307CisKKwkJCSR2ZGJ7JHZrZXl9ID0gXCVy ZXE7CisJCX0gZWxzZSB7CisJCQkkcSA9ICRxdWV1ZXska2V5fTsKKwkJCSRzID0gJHN1Ym1pdHsk a2V5fTsKKwkJfQogCiAJCSRyZXF7J3N0YXJ0J30gPSAkdGltZTsKIAkJJHJlcXsncmluZyd9ID0g JHJpbmc7CkBAIC00MjMsOCArNDcyLDkgQEAgd2hpbGUgKDw+KSB7CiAJCSRyZXF7J25hbWUnfSA9 ICRjdHggLiAnLycgLiAkc2Vxbm87CiAJCSRyZXF7J2dsb2JhbCd9ID0gJHRweydnbG9iYWwnfTsK IAkJJHJlcXsncG9ydCd9ID0gJHRweydwb3J0J307Ci0JCSRyZXF7J3F1ZXVlJ30gPSAkcXVldWV7 JGtleX07Ci0JCSRyZXF7J3N1Ym1pdCd9ID0gJHN1Ym1pdHska2V5fTsKKwkJJHJlcXsncXVldWUn fSA9ICRxOworCQkkcmVxeydzdWJtaXQnfSA9ICRzOworCQkkcmVxeyd2aXJ0dWFsJ30gPSAxIGlm IGV4aXN0cyAkcXVldWVzeyRjdHh9OwogCQkkcmluZ3N7JHJpbmd9ID0gJGdpZCsrIHVubGVzcyBl eGlzdHMgJHJpbmdzeyRyaW5nfTsKIAkJJHJpbmdtYXB7JHJpbmdzeyRyaW5nfX0gPSAkcmluZzsK IAkJJGRieyRrZXl9ID0gXCVyZXE7CkBAIC03MjAsOCArNzcwLDEwIEBAIGZvcmVhY2ggbXkgJGtl eSAoQHNvcnRlZF9rZXlzKSB7CiAKIAkkcnVubmluZ3skcmluZ30gKz0gJGVuZCAtICRzdGFydCBp ZiAkY29ycmVjdF9kdXJhdGlvbnMgb3IKIAkJCQkJICAgIG5vdCBleGlzdHMgJGRieyRrZXl9LT57 J25vLWVuZCd9OwotCSRydW5uYWJsZXskcmluZ30gKz0gJGRieyRrZXl9LT57J2V4ZWN1dGUtZGVs YXknfTsKLQkkcXVldWVkeyRyaW5nfSArPSAkc3RhcnQgLSAkZGJ7JGtleX0tPnsnZXhlY3V0ZS1k ZWxheSd9IC0gJGRieyRrZXl9LT57J3F1ZXVlJ307CisJdW5sZXNzIChleGlzdHMgJGRieyRrZXl9 LT57J3ZpcnR1YWwnfSkgeworCQkkcnVubmFibGV7JHJpbmd9ICs9ICRkYnska2V5fS0+eydleGVj dXRlLWRlbGF5J307CisJCSRxdWV1ZWR7JHJpbmd9ICs9ICRzdGFydCAtICRkYnska2V5fS0+eydl eGVjdXRlLWRlbGF5J30gLSAkZGJ7JGtleX0tPnsncXVldWUnfTsKKwl9CiAKIAkkYmF0Y2hfY291 bnR7JHJpbmd9Kys7CiAKQEAgLTg0MCw2ICs4OTIsMTIgQEAgZm9yZWFjaCBteSAka2V5IChrZXlz ICVyZXF3YWl0KSB7CiAJJHJlcXd7JHJlcXdhaXR7JGtleX0tPnsncmluZyd9fSArPSAkcmVxd2Fp dHska2V5fS0+eydlbmQnfSAtICRyZXF3YWl0eyRrZXl9LT57J3N0YXJ0J307CiB9CiAKKyMgQWRk IHVwIGFsbCByZXF1ZXN0IHdhaXRzIHBlciB2aXJ0dWFsIGVuZ2luZQorbXkgJXZyZXF3OworZm9y ZWFjaCBteSAka2V5IChrZXlzICVyZXF3YWl0KSB7CisJJHZyZXF3eyRyZXF3YWl0eyRrZXl9LT57 J2N0eCd9fSArPSAkcmVxd2FpdHska2V5fS0+eydlbmQnfSAtICRyZXF3YWl0eyRrZXl9LT57J3N0 YXJ0J307Cit9CisKIHNheSBzcHJpbnRmKCdHUFU6ICUuMmYlJSBpZGxlLCAlLjJmJSUgYnVzeScs CiAJICAgICAkZmxhdF9idXN5eydncHUtaWRsZSd9LCAkZmxhdF9idXN5eydncHUtYnVzeSd9KSB1 bmxlc3MgJGh0bWw7CiAKQEAgLTk2MSwxOCArMTAxOSwyNCBAQCBFTkRIVE1MCiBzdWIgaHRtbF9z dGF0cwogewogCW15ICgkc3RhdHMsICRncm91cCwgJGlkKSA9IEBfOworCW15ICR2ZW5nID0gZXhp c3RzICRzdGF0cy0+eyd2aXJ0dWFsJ30gPyAxIDogMDsKIAlteSAkbmFtZTsKIAotCSRuYW1lID0g J1JpbmcnIC4gJGdyb3VwOworCSRuYW1lID0gJHZlbmcgPyAnVmlydHVhbCcgOiAnUmluZyc7CisJ JG5hbWUgLj0gJGdyb3VwOwogCSRuYW1lIC49ICc8YnI+PHNtYWxsPjxicj4nOwotCSRuYW1lIC49 IHNwcmludGYoJyUuMmYnLCAkc3RhdHMtPnsnaWRsZSd9KSAuICclIGlkbGU8YnI+PGJyPic7Ci0J JG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eydidXN5J30pIC4gJyUgYnVzeTxicj4n OworCXVubGVzcyAoJHZlbmcpIHsKKwkJJG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+ eydpZGxlJ30pIC4gJyUgaWRsZTxicj48YnI+JzsKKwkJJG5hbWUgLj0gc3ByaW50ZignJS4yZics ICRzdGF0cy0+eydidXN5J30pIC4gJyUgYnVzeTxicj4nOworCX0KIAkkbmFtZSAuPSBzcHJpbnRm KCclLjJmJywgJHN0YXRzLT57J3J1bm5hYmxlJ30pIC4gJyUgcnVubmFibGU8YnI+JzsKIAkkbmFt ZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J3F1ZXVlZCd9KSAuICclIHF1ZXVlZDxicj48 YnI+JzsKIAkkbmFtZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J3dhaXQnfSkgLiAnJSB3 YWl0PGJyPjxicj4nOwogCSRuYW1lIC49ICRzdGF0cy0+eydjb3VudCd9IC4gJyBiYXRjaGVzPGJy Pic7Ci0JJG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eydhdmcnfSkgLiAndXMgYXZn IGJhdGNoPGJyPic7Ci0JJG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eyd0b3RhbC1h dmcnfSkgLiAndXMgYXZnIGVuZ2luZSBiYXRjaDxicj4nOworCXVubGVzcyAoJHZlbmcpIHsKKwkJ JG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eydhdmcnfSkgLiAndXMgYXZnIGJhdGNo PGJyPic7CisJCSRuYW1lIC49IHNwcmludGYoJyUuMmYnLCAkc3RhdHMtPnsndG90YWwtYXZnJ30p IC4gJ3VzIGF2ZyBlbmdpbmUgYmF0Y2g8YnI+JzsKKwl9CiAJJG5hbWUgLj0gJzwvc21hbGw+JzsK IAogCXByaW50ICJcdHtpZDogJGlkLCBjb250ZW50OiAnJG5hbWUnfSxcbiI7CkBAIC05ODEsMTcg KzEwNDUsMjQgQEAgc3ViIGh0bWxfc3RhdHMKIHN1YiBzdGRpb19zdGF0cwogewogCW15ICgkc3Rh dHMsICRncm91cCwgJGlkKSA9IEBfOworCW15ICR2ZW5nID0gZXhpc3RzICRzdGF0cy0+eyd2aXJ0 dWFsJ30gPyAxIDogMDsKIAlteSAkc3RyOwogCi0JJHN0ciA9ICdSaW5nJyAuICRncm91cCAuICc6 ICc7CisJJHN0ciA9ICR2ZW5nID8gJ1ZpcnR1YWwnIDogJ1JpbmcnOworCSRzdHIgLj0gJGdyb3Vw IC4gJzogJzsKIAkkc3RyIC49ICRzdGF0cy0+eydjb3VudCd9IC4gJyBiYXRjaGVzLCAnOwotCSRz dHIgLj0gc3ByaW50ZignJS4yZiAoJS4yZikgYXZnIGJhdGNoIHVzLCAnLCAkc3RhdHMtPnsnYXZn J30sICRzdGF0cy0+eyd0b3RhbC1hdmcnfSk7Ci0JJHN0ciAuPSBzcHJpbnRmKCclLjJmJywgJHN0 YXRzLT57J2lkbGUnfSkgLiAnJSBpZGxlLCAnOwotCSRzdHIgLj0gc3ByaW50ZignJS4yZicsICRz dGF0cy0+eydidXN5J30pIC4gJyUgYnVzeSwgJzsKKwl1bmxlc3MgKCR2ZW5nKSB7CisJCSRzdHIg Lj0gc3ByaW50ZignJS4yZiAoJS4yZikgYXZnIGJhdGNoIHVzLCAnLAorCQkJCSRzdGF0cy0+eydh dmcnfSwgJHN0YXRzLT57J3RvdGFsLWF2Zyd9KTsKKwkJJHN0ciAuPSBzcHJpbnRmKCclLjJmJywg JHN0YXRzLT57J2lkbGUnfSkgLiAnJSBpZGxlLCAnOworCQkkc3RyIC49IHNwcmludGYoJyUuMmYn LCAkc3RhdHMtPnsnYnVzeSd9KSAuICclIGJ1c3ksICc7CisJfQorCiAJJHN0ciAuPSBzcHJpbnRm KCclLjJmJywgJHN0YXRzLT57J3J1bm5hYmxlJ30pIC4gJyUgcnVubmFibGUsICc7CiAJJHN0ciAu PSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J3F1ZXVlZCd9KSAuICclIHF1ZXVlZCwgJzsKIAkk c3RyIC49IHNwcmludGYoJyUuMmYnLCAkc3RhdHMtPnsnd2FpdCd9KSAuICclIHdhaXQnOwotCWlm ICgkYXZnX2RlbGF5X3N0YXRzKSB7CisKKwlpZiAoJGF2Z19kZWxheV9zdGF0cyBhbmQgbm90ICR2 ZW5nKSB7CiAJCSRzdHIgLj0gJywgc3VibWl0L2V4ZWN1dGUvc2F2ZS1hdmc9KCc7CiAJCSRzdHIg Lj0gc3ByaW50ZignJS4yZi8lLjJmLyUuMmYpJywgJHN0YXRzLT57J3N1Ym1pdCd9LCAkc3RhdHMt PnsnZXhlY3V0ZSd9LCAkc3RhdHMtPnsnc2F2ZSd9KTsKIAl9CkBAIC0xMDEzLDggKzEwODQsMTYg QEAgZm9yZWFjaCBteSAkZ3JvdXAgKHNvcnQga2V5cyAlcmluZ3MpIHsKIAogCSRzdGF0c3snaWRs ZSd9ID0gKDEuMCAtICRmbGF0X2J1c3l7JHJpbmd9IC8gJGVsYXBzZWQpICogMTAwLjA7CiAJJHN0 YXRzeydidXN5J30gPSAkcnVubmluZ3skcmluZ30gLyAkZWxhcHNlZCAqIDEwMC4wOwotCSRzdGF0 c3sncnVubmFibGUnfSA9ICRydW5uYWJsZXskcmluZ30gLyAkZWxhcHNlZCAqIDEwMC4wOwotCSRz dGF0c3sncXVldWVkJ30gPSAkcXVldWVkeyRyaW5nfSAvICRlbGFwc2VkICogMTAwLjA7CisJaWYg KGV4aXN0cyAkcnVubmFibGV7JHJpbmd9KSB7CisJCSRzdGF0c3sncnVubmFibGUnfSA9ICRydW5u YWJsZXskcmluZ30gLyAkZWxhcHNlZCAqIDEwMC4wOworCX0gZWxzZSB7CisJCSRzdGF0c3sncnVu bmFibGUnfSA9IDA7CisJfQorCWlmIChleGlzdHMgJHF1ZXVlZHskcmluZ30pIHsKKwkJJHN0YXRz eydxdWV1ZWQnfSA9ICRxdWV1ZWR7JHJpbmd9IC8gJGVsYXBzZWQgKiAxMDAuMDsKKwl9IGVsc2Ug eworCQkkc3RhdHN7J3F1ZXVlZCd9ID0gMDsKKwl9CiAJJHJlcXd7JHJpbmd9ID0gMCB1bmxlc3Mg ZXhpc3RzICRyZXF3eyRyaW5nfTsKIAkkc3RhdHN7J3dhaXQnfSA9ICRyZXF3eyRyaW5nfSAvICRl bGFwc2VkICogMTAwLjA7CiAJJHN0YXRzeydjb3VudCd9ID0gJGJhdGNoX2NvdW50eyRyaW5nfTsK QEAgLTEwMzEsNiArMTExMCw1OSBAQCBmb3JlYWNoIG15ICRncm91cCAoc29ydCBrZXlzICVyaW5n cykgewogCX0KIH0KIAorc3ViIHNvcnRWUXVldWUgeworCW15ICRhcyA9ICR2ZGJ7JGF9LT57J3F1 ZXVlJ307CisJbXkgJGJzID0gJHZkYnskYn0tPnsncXVldWUnfTsKKwlteSAkdmFsOworCisJJHZh bCA9ICRhcyA8PT4gJGJzOworCSR2YWwgPSAkYSBjbXAgJGIgaWYgJHZhbCA9PSAwOworCisJcmV0 dXJuICR2YWw7Cit9CisKK215IEBzb3J0ZWRfdmtleXMgPSBzb3J0IHNvcnRWUXVldWUga2V5cyAl dmRiOworbXkgKCV2cXVldWVkLCAldnJ1bm5hYmxlKTsKKworZm9yZWFjaCBteSAka2V5IChAc29y dGVkX3ZrZXlzKSB7CisJbXkgJGN0eCA9ICR2ZGJ7JGtleX0tPnsnY3R4J307CisKKwkkdmRieyRr ZXl9LT57J3N1Ym1pdC1kZWxheSd9ID0gJHZkYnska2V5fS0+eydzdWJtaXQnfSAtICR2ZGJ7JGtl eX0tPnsncXVldWUnfTsKKwkkdmRieyRrZXl9LT57J2V4ZWN1dGUtZGVsYXknfSA9ICR2ZGJ7JGtl eX0tPnsnc3RhcnQnfSAtICR2ZGJ7JGtleX0tPnsnc3VibWl0J307CisKKwkkdnF1ZXVlZHskY3R4 fSArPSAkdmRieyRrZXl9LT57J3N1Ym1pdC1kZWxheSd9OworCSR2cnVubmFibGV7JGN0eH0gKz0g JHZkYnska2V5fS0+eydleGVjdXRlLWRlbGF5J307Cit9CisKK215ICR2ZW5nX2lkID0gJGVuZ2lu ZV9zdGFydF9pZCArIHNjYWxhcihrZXlzICVyaW5ncyk7CisKK2ZvcmVhY2ggbXkgJGNpZCAoc29y dCBrZXlzICVjdHhtYXApIHsKKwlteSAkY3R4ID0gJGN0eG1hcHskY2lkfTsKKwlteSAkZWxhcHNl ZCA9ICRsYXN0X3RzIC0gJGZpcnN0X3RzOworCW15ICVzdGF0czsKKworCSRzdGF0c3sndmlydHVh bCd9ID0gMTsKKwlpZiAoZXhpc3RzICR2cnVubmFibGV7JGN0eH0pIHsKKwkJJHN0YXRzeydydW5u YWJsZSd9ID0gJHZydW5uYWJsZXskY3R4fSAvICRlbGFwc2VkICogMTAwLjA7CisJfSBlbHNlIHsK KwkJJHN0YXRzeydydW5uYWJsZSd9ID0gMDsKKwl9CisJaWYgKGV4aXN0cyAkdnF1ZXVlZHskY3R4 fSkgeworCQkkc3RhdHN7J3F1ZXVlZCd9ID0gJHZxdWV1ZWR7JGN0eH0gLyAkZWxhcHNlZCAqIDEw MC4wOworCX0gZWxzZSB7CisJCSRzdGF0c3sncXVldWVkJ30gPSAwOworCX0KKwkkdnJlcXd7JGN0 eH0gPSAwIHVubGVzcyBleGlzdHMgJHZyZXF3eyRjdHh9OworCSRzdGF0c3snd2FpdCd9ID0gJHZy ZXF3eyRjdHh9IC8gJGVsYXBzZWQgKiAxMDAuMDsKKwkkc3RhdHN7J2NvdW50J30gPSBzY2FsYXIo Z3JlcCB7JGN0eCA9PSAkdmRieyRffS0+eydjdHgnfX0ga2V5cyAldmRiKTsKKworCWlmICgkaHRt bCkgeworCQlodG1sX3N0YXRzKFwlc3RhdHMsICRjaWQsICR2ZW5nX2lkKyspOworCX0gZWxzZSB7 CisJCXN0ZGlvX3N0YXRzKFwlc3RhdHMsICRjaWQsICR2ZW5nX2lkKyspOworCX0KK30KKwogZXhp dCAwIHVubGVzcyAkaHRtbDsKIAogcHJpbnQgPDxFTkRIVE1MOwpAQCAtMTEzNCw2ICsxMjY2LDcg QEAgc3ViIGJveF9zdHlsZQogfQogCiBteSAkaSA9IDA7CitteSAkcmVxID0gMDsKIGZvcmVhY2gg bXkgJGtleSAoc29ydCBzb3J0UXVldWUga2V5cyAlZGIpIHsKIAlteSAoJG5hbWUsICRjdHgsICRz ZXFubykgPSAoJGRieyRrZXl9LT57J25hbWUnfSwgJGRieyRrZXl9LT57J2N0eCd9LCAkZGJ7JGtl eX0tPnsnc2Vxbm8nfSk7CiAJbXkgKCRxdWV1ZSwgJHN0YXJ0LCAkbm90aWZ5LCAkZW5kKSA9ICgk ZGJ7JGtleX0tPnsncXVldWUnfSwgJGRieyRrZXl9LT57J3N0YXJ0J30sICRkYnska2V5fS0+eydu b3RpZnknfSwgJGRieyRrZXl9LT57J2VuZCd9KTsKQEAgLTExNDcsNyArMTI4MCw3IEBAIGZvcmVh Y2ggbXkgJGtleSAoc29ydCBzb3J0UXVldWUga2V5cyAlZGIpIHsKIAlteSAkc2tleTsKIAogCSMg c3VibWl0IHRvIGV4ZWN1dGUKLQl1bmxlc3MgKGV4aXN0cyAkc2tpcF9ib3h7J3F1ZXVlJ30pIHsK Kwl1bmxlc3MgKGV4aXN0cyAkc2tpcF9ib3h7J3F1ZXVlJ30gb3IgZXhpc3RzICRkYnska2V5fS0+ eyd2aXJ0dWFsJ30pIHsKIAkJJHNrZXkgPSAyICogJG1heF9zZXFubyAqICRjdHggKyAyICogJHNl cW5vOwogCQkkc3R5bGUgPSBib3hfc3R5bGUoJGN0eCwgJ3F1ZXVlJyk7CiAJCSRjb250ZW50ID0g IiRuYW1lPGJyPiRkYnska2V5fS0+eydzdWJtaXQtZGVsYXknfXVzIDxzbWFsbD4oJGRieyRrZXl9 LT57J2V4ZWN1dGUtZGVsYXknfXVzKTwvc21hbGw+IjsKQEAgLTExNTgsNyArMTI5MSw3IEBAIGZv cmVhY2ggbXkgJGtleSAoc29ydCBzb3J0UXVldWUga2V5cyAlZGIpIHsKIAogCSMgZXhlY3V0ZSB0 byBzdGFydAogCSRlbmdpbmVfc3RhcnQgPSAkZGJ7JGtleX0tPnsnc3RhcnQnfSB1bmxlc3MgZGVm aW5lZCAkZW5naW5lX3N0YXJ0OwotCXVubGVzcyAoZXhpc3RzICRza2lwX2JveHsncmVhZHknfSkg eworCXVubGVzcyAoZXhpc3RzICRza2lwX2JveHsncmVhZHknfSBvciBleGlzdHMgJGRieyRrZXl9 LT57J3ZpcnR1YWwnfSkgewogCQkkc2tleSA9IDIgKiAkbWF4X3NlcW5vICogJGN0eCArIDIgKiAk c2Vxbm8gKyAxOwogCQkkc3R5bGUgPSBib3hfc3R5bGUoJGN0eCwgJ3JlYWR5Jyk7CiAJCSRjb250 ZW50ID0gIjxzbWFsbD4kbmFtZTxicj4kZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9dXM8L3Nt YWxsPiI7CkBAIC0xMTk5LDcgKzEzMzIsNyBAQCBmb3JlYWNoIG15ICRrZXkgKHNvcnQgc29ydFF1 ZXVlIGtleXMgJWRiKSB7CiAKIAkkbGFzdF90cyA9ICRlbmQ7CiAKLQlsYXN0IGlmICRpID4gJG1h eF9pdGVtczsKKwlsYXN0IGlmICsrJHJlcSA+ICRtYXhfcmVxdWVzdHM7CiB9CiAKIHB1c2ggQGZy ZXFzLCBbJHByZXZfZnJlcV90cywgJGxhc3RfdHMsICRwcmV2X2ZyZXFdIGlmICRwcmV2X2ZyZXE7 CkBAIC0xMjMyLDYgKzEzNjUsNDMgQEAgaWYgKCRncHVfdGltZWxpbmUpIHsKIAl9CiB9CiAKKyRy ZXEgPSAwOworJHZlbmdfaWQgPSAkZW5naW5lX3N0YXJ0X2lkICsgc2NhbGFyKGtleXMgJXJpbmdz KTsKK2ZvcmVhY2ggbXkgJGtleSAoQHNvcnRlZF92a2V5cykgeworCW15ICgkbmFtZSwgJGN0eCwg JHNlcW5vKSA9ICgkdmRieyRrZXl9LT57J25hbWUnfSwgJHZkYnska2V5fS0+eydjdHgnfSwgJHZk Ynska2V5fS0+eydzZXFubyd9KTsKKwlteSAkcXVldWUgPSAkdmRieyRrZXl9LT57J3F1ZXVlJ307 CisJbXkgJHN1Ym1pdCA9ICR2ZGJ7JGtleX0tPnsnc3VibWl0J307CisJbXkgJGVuZ2luZV9zdGFy dCA9ICRkYnska2V5fS0+eydlbmdpbmUtc3RhcnQnfTsKKwlteSAoJGNvbnRlbnQsICRzdHlsZSwg JHN0YXJ0ZW5kLCAkc2tleSk7CisJbXkgJGdyb3VwID0gJHZlbmdfaWQgKyAkY2lkc3skY3R4fTsK KwlteSAkc3ViZ3JvdXAgPSAkY3R4IC0gJG1pbl9jdHg7CisJbXkgJHR5cGUgPSAnIHR5cGU6IFwn cmFuZ2VcJywnOworCW15ICRkdXJhdGlvbjsKKworCSMgc3VibWl0IHRvIGV4ZWN1dGUKKwl1bmxl c3MgKGV4aXN0cyAkc2tpcF9ib3h7J3F1ZXVlJ30pIHsKKwkJJHNrZXkgPSAyICogJG1heF9zZXFu byAqICRjdHggKyAyICogJHNlcW5vOworCQkkc3R5bGUgPSBib3hfc3R5bGUoJGN0eCwgJ3F1ZXVl Jyk7CisJCSRjb250ZW50ID0gIiRuYW1lPGJyPiR2ZGJ7JGtleX0tPnsnc3VibWl0LWRlbGF5J311 cyA8c21hbGw+KCR2ZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9dXMpPC9zbWFsbD4iOworCQkk c3RhcnRlbmQgPSAnc3RhcnQ6ICcgLiAkcXVldWUgLiAnLCBlbmQ6ICcgLiAkc3VibWl0OworCQlw cmludCAiXHR7aWQ6ICRpLCBrZXk6ICRza2V5LCAkdHlwZSBncm91cDogJGdyb3VwLCBzdWJncm91 cDogJHN1Ymdyb3VwLCBzdWJncm91cE9yZGVyOiAkc3ViZ3JvdXAsIGNvbnRlbnQ6ICckY29udGVu dCcsICRzdGFydGVuZCwgc3R5bGU6IFwnJHN0eWxlXCd9LFxuIjsKKwkJJGkrKzsKKwl9CisKKwkj IGV4ZWN1dGUgdG8gc3RhcnQKKwkkZW5naW5lX3N0YXJ0ID0gJHZkYnska2V5fS0+eydzdGFydCd9 IHVubGVzcyBkZWZpbmVkICRlbmdpbmVfc3RhcnQ7CisJdW5sZXNzIChleGlzdHMgJHNraXBfYm94 eydyZWFkeSd9KSB7CisJCSRza2V5ID0gMiAqICRtYXhfc2Vxbm8gKiAkY3R4ICsgMiAqICRzZXFu byArIDE7CisJCSRzdHlsZSA9IGJveF9zdHlsZSgkY3R4LCAncmVhZHknKTsKKwkJJGNvbnRlbnQg PSAiPHNtYWxsPiRuYW1lPGJyPiR2ZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9dXM8L3NtYWxs PiI7CisJCSRzdGFydGVuZCA9ICdzdGFydDogJyAuICRzdWJtaXQgLiAnLCBlbmQ6ICcgLiAkZW5n aW5lX3N0YXJ0OworCQlwcmludCAiXHR7aWQ6ICRpLCBrZXk6ICRza2V5LCAkdHlwZSBncm91cDog JGdyb3VwLCBzdWJncm91cDogJHN1Ymdyb3VwLCBzdWJncm91cE9yZGVyOiAkc3ViZ3JvdXAsIGNv bnRlbnQ6ICckY29udGVudCcsICRzdGFydGVuZCwgc3R5bGU6IFwnJHN0eWxlXCd9LFxuIjsKKwkJ JGkrKzsKKwl9CisKKwlsYXN0IGlmICsrJHJlcSA+ICRtYXhfcmVxdWVzdHM7Cit9CisKIG15ICRl bmRfdHMgPSAkZmlyc3RfdHMgKyAkd2lkdGhfdXM7CiAkZmlyc3RfdHMgPSAkZmlyc3RfdHM7CiAK LS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==