From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t 2/8] trace.pl: Improve readability of graphical timeline representation Date: Wed, 18 Jul 2018 10:45:08 +0100 Message-ID: <20180718094514.5903-3-tvrtko.ursulin@linux.intel.com> References: <20180718094514.5903-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id E1AA86E984 for ; Wed, 18 Jul 2018 09:45:23 +0000 (UTC) Received: by mail-wr1-x442.google.com with SMTP id j5-v6so3972888wrr.8 for ; Wed, 18 Jul 2018 02:45:23 -0700 (PDT) In-Reply-To: <20180718094514.5903-1-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCldlIGFkZCBz dHJpcGVzIGZvciBkaWZmZXJlbnQgc3RhZ2VzIG9mIHJlcXVlc3QgZXhlY3V0aW9uIHNvIGl0IGlz IGVhc2llcgp0byBmb2xsb3cgb25lIGNvbnRleHQgaW4gdGhlIG11bHRpLWNvbG91ciBtb2RlLgoK VmVydGljYWwgc3RyaXBlIHBhdHRlcm4gaW5kaWNhdGVzIHBpcGVsaW5lICJibG9ja2FnZXMiIC0g cmVxdWVzdHMgd2FpdGluZwpmb3IgZGVwZW5kZW5jaWVzIGJlZm9yZSB0aGV5IGFyZSBydW5uYWJs ZS4KCkRpYWdvbmFsIHN0cmlwZXMgaW5kaWNhdGUgcnVubmFibGUgcmVxdWVzdHMgd2FpdGluZyBm b3IgR1BVIHRpbWUuCgpIb3Jpem9udGFsIHN0cmlwcyBhcmUgcmVxdWVzdHMgZXhlY3V0aW5nIG9u IHRoZSBHUFUuCgpBbHNvIHVzZSB0aGlzIG5ldyBtdWx0aS1jb2xvdXJlZCBtb2RlIGZyb20gbWVk aWEtYmVuY2gucGwuCgp2MjoKIEpvaG4gSGFycmlzb246CiAqIE1lbnRpb24gbWVkaWEtYmVuY2gu cGwgaW4gdGhlIGNvbW1pdC4KICogRml4IEhUTUwgZm9yIHNpbmdsZSBjb2xvdXIgbW9kZS4KCnYz OgogKiBSZWJhc2UuCiAqIEFwcGx5IHN0cmlwZXMgdG8gbGVnYWN5IGNvbG91cmluZyBhcyB3ZWxs LgoKdjQ6CiBKb2huIEhhcnJpc29uOgogKiBVc2UgcGVyIGNvbnRleHQgY29sb3VycyBmb3IgY3R4 c2F2ZSBhbmQgaW5jb21wbGV0ZSBib3hlcy4KICogQ2xlYXJlciB0aW1lbGluZSBsZWdlbmQuCgpT aWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpD YzogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Ci0tLQogc2NyaXB0cy9t ZWRpYS1iZW5jaC5wbCB8ICAgMiArLQogc2NyaXB0cy90cmFjZS5wbCAgICAgICB8IDExMiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA5 MCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zY3JpcHRzL21l ZGlhLWJlbmNoLnBsIGIvc2NyaXB0cy9tZWRpYS1iZW5jaC5wbAppbmRleCBjNTYyOGM3ZjI4MzYu LjM3NTg0NGQ5Y2RmNiAxMDA3NTUKLS0tIGEvc2NyaXB0cy9tZWRpYS1iZW5jaC5wbAorKysgYi9z Y3JpcHRzL21lZGlhLWJlbmNoLnBsCkBAIC0yMDcsNyArMjA3LDcgQEAgc3ViIHRyYWNlX3dvcmts b2FkCiAJc2hvd19jbWQoJGNtZCk7CiAJc3lzdGVtKCRjbWQpOwogCi0JJGNtZCA9ICJwZXJmIHNj cmlwdCB8ICR0cmFjZXBsIC0taHRtbCAteCBjdHhzYXZlIC1zICI7CisJJGNtZCA9ICJwZXJmIHNj cmlwdCB8ICR0cmFjZXBsIC0taHRtbCAteCBjdHhzYXZlIC1zIC1jICI7CiAJJGNtZCAuPSBqb2lu ICcgJywgbWFwKCItaSAkXyIsIEBza2lwX2VuZ2luZSk7CiAJJGNtZCAuPSAiID4gJHtmaWxlfS5o dG1sIjsKIAlzaG93X2NtZCgkY21kKTsKZGlmZiAtLWdpdCBhL3NjcmlwdHMvdHJhY2UucGwgYi9z Y3JpcHRzL3RyYWNlLnBsCmluZGV4IDNhZDVlZmZhZmQwYS4uYjkxODgxMjNiYTY1IDEwMDc1NQot LS0gYS9zY3JpcHRzL3RyYWNlLnBsCisrKyBiL3NjcmlwdHMvdHJhY2UucGwKQEAgLTcwNyw5ICs3 MDcsMTQgQEAgZm9yZWFjaCBteSAka2V5IChrZXlzICVyZXF3YWl0KSB7CiBzYXkgc3ByaW50Zign R1BVOiAlLjJmJSUgaWRsZSwgJS4yZiUlIGJ1c3knLAogCSAgICAgJGZsYXRfYnVzeXsnZ3B1LWlk bGUnfSwgJGZsYXRfYnVzeXsnZ3B1LWJ1c3knfSkgdW5sZXNzICRodG1sOwogCi1teSAkcXVldWVk X2NvbG91ciA9ICRjb2xvdXJfY29udGV4dHMgPyAnbXVsdGktY29sb3VyIGxpZ2h0JyA6ICdibHVl JzsKLW15ICRydW5uYWJsZV9jb2xvdXIgPSAkY29sb3VyX2NvbnRleHRzID8gJ211bHRpLWNvbG91 ciBkYXJrJyA6ICdncmV5JzsKLW15ICRleGVjdXRlX2NvbG91ciA9ICRjb2xvdXJfY29udGV4dHMg PyAnbXVsdGktY29sb3VyJyA6ICdwaW5rJzsKK215ICR0aW1lbGluZV90ZXh0ID0gJGNvbG91cl9j b250ZXh0cyA/CisJCSAgICAnUGVyIGNvbnRleHQgY29sb3VyZWQgc2hhZGluZyBsaWtlOicgOiAn Qm94IHNoYWRpbmcgbGlrZTonOworCitteSAkcXVldWVkX3N0eWxlID0gYm94X3N0eWxlKCRtaW5f Y3R4LCAncXVldWUnKTsKK215ICRyZWFkeV9zdHlsZSA9IGJveF9zdHlsZSgkbWluX2N0eCwgJ3Jl YWR5Jyk7CitteSAkZXhlY3V0ZV9zdHlsZSA9IGJveF9zdHlsZSgkbWluX2N0eCwgJ2V4ZWN1dGUn KTsKK215ICRjdHhzYXZlX3N0eWxlID0gYm94X3N0eWxlKCRtaW5fY3R4LCAnY3R4c2F2ZScpOwor bXkgJGluY29tcGxldGVfc3R5bGUgPSBib3hfc3R5bGUoJG1pbl9jdHgsICdpbmNvbXBsZXRlJyk7 CiAKIHByaW50IDw8RU5ESFRNTCBpZiAkaHRtbDsKIDwhRE9DVFlQRSBIVE1MPgpAQCAtNzI4LDkg KzczMywyOCBAQCBwcmludCA8PEVOREhUTUwgaWYgJGh0bWw7CiA8L2hlYWQ+CiA8Ym9keT4KIDxw PgotJGV4ZWN1dGVfY29sb3VyID0gcmVxdWVzdHMgZXhlY3V0aW5nIG9uIHRoZSBHUFU8YnI+Ci0k cnVubmFibGVfY29sb3VyID0gcnVubmFibGUgcmVxdWVzdHMgd2FpdGluZyBmb3IgYSBzbG90IG9u IEdQVTxicj4KLSRxdWV1ZWRfY29sb3VyID0gcmVxdWVzdHMgd2FpdGluZyBvbiBmZW5jZXMgYW5k IGRlcGVuZGVuY2llcyBiZWZvcmUgdGhleSBhcmUgcnVubmFibGU8YnI+Cis8Yj5UaW1lbGluZSBy ZXF1ZXN0IHZpZXc6PC9iPgorPHRhYmxlPgorPHRyPjx0ZCBjb2xzcGFuPSc0Jz4kdGltZWxpbmVf dGV4dDwvdGQ+PC90cj4KKzx0cj4KKzx0ZCBhbGlnbj0nY2VudGVyJz48ZGl2IHN0eWxlPSckcXVl dWVkX3N0eWxlJz5RVUVVRUQ8L2Rpdj48L3RkPgorPHRkIGFsaWduPSdjZW50ZXInPjxkaXYgc3R5 bGU9JyRyZWFkeV9zdHlsZSc+UkVBRFk8L2Rpdj48L3RkPgorPHRkIGFsaWduPSdjZW50ZXInPjxk aXYgc3R5bGU9JyRleGVjdXRlX3N0eWxlJz5FWEVDVVRFPC9kaXY+PC90ZD4KKzx0ZCBhbGlnbj0n Y2VudGVyJz48ZGl2IHN0eWxlPSckY3R4c2F2ZV9zdHlsZSc+Q1RYU0FWRTwvZGl2PjwvdGQ+Cis8 L3RyPjx0cj4KKzx0ZD48L3RkPgorPHRkPjwvdGQ+Cis8dGQgYWxpZ249J2NlbnRlcic+PGRpdiBz dHlsZT0nJGluY29tcGxldGVfc3R5bGUnPihJTkNPTVBMRVRFKTwvZGl2PjwvdGQ+Cis8dGQ+PC90 ZD4KKzwvdHIvPjwvdGFibGU+Cis8L3A+Cis8cD4KKzxzbWFsbD4KK1FVRVVFRCA9IHJlcXVlc3Rz IGV4ZWN1dGluZyBvbiB0aGUgR1BVPGJyPgorUkVBRFkgPSBydW5uYWJsZSByZXF1ZXN0cyB3YWl0 aW5nIGZvciBhIHNsb3Qgb24gR1BVPGJyPgorRVhFQ1VURSA9IHJlcXVlc3RzIHdhaXRpbmcgb24g ZmVuY2VzIGFuZCBkZXBlbmRlbmNpZXMgYmVmb3JlIHRoZXkgYXJlIHJ1bm5hYmxlPGJyPgorQ1RY U0FWRSA9IEdQVSBzYXZpbmcgdGhlIGNvbnRleHQgaW1hZ2U8YnI+Cis8L3NtYWxsPgogPC9wPgog PHA+CiBCb3hlcyBhcmUgaW4gZm9ybWF0ICdjdHgtaWQvc2Vxbm8nLgpAQCAtODUwLDE3ICs4NzQs MzEgQEAgc3ViIHNvcnRRdWV1ZSB7CiAKIHN1YiBjdHhfY29sb3VyCiB7Ci0JbXkgKCRjdHgsICRz dGFnZSkgPSAoQF8pOworCW15ICgkY3R4LCAkc3RhZ2UsICRsZmFjKSA9IChAXyk7CiAJbXkgKCRz LCAkbCk7CiAJbXkgJHZhbDsKIAogCXVubGVzcyAoJGNvbG91cl9jb250ZXh0cykgewogCQlpZiAo JHN0YWdlIGVxICdxdWV1ZScpIHsKLQkJCXJldHVybiAnbGlnaHRibHVlOyc7CisJCQkkdmFsID0g MjEwOworCQkJJHMgPSA2NTsKKwkJCSRsID0gNTI7CiAJCX0gZWxzaWYgKCRzdGFnZSBlcSAncmVh ZHknKSB7Ci0JCQlyZXR1cm4gJ2xpZ2h0Z3JleTsnOworCQkJJHZhbCA9IDA7CisJCQkkcyA9IDA7 CisJCQkkbCA9IDQ3OwogCQl9IGVsc2lmICgkc3RhZ2UgZXEgJ2V4ZWN1dGUnKSB7Ci0JCQlyZXR1 cm4gJ3Bpbms7JzsKKwkJCSR2YWwgPSAzNDY7CisJCQkkcyA9IDY4OworCQkJJGwgPSA2NTsKKwkJ fSBlbHNpZiAoJHN0YWdlIGVxICdjdHhzYXZlJykgeworCQkJJHZhbCA9IDI2OworCQkJJHMgPSA5 MDsKKwkJCSRsID0gNTI7CisJCX0gZWxzaWYgKCRzdGFnZSBlcSAnaW5jb21wbGV0ZScpIHsKKwkJ CSR2YWwgPSAwOworCQkJJHMgPSA4NTsKKwkJCSRsID0gNTA7CiAJCX0KIAl9IGVsc2UgewogCQlp ZiAoJHN0YWdlIGVxICdxdWV1ZScpIHsKQEAgLTg3MiwxMiArOTEwLDQ1IEBAIHN1YiBjdHhfY29s b3VyCiAJCX0gZWxzaWYgKCRzdGFnZSBlcSAnZXhlY3V0ZScpIHsKIAkJCSRzID0gODA7CiAJCQkk bCA9IDY1OworCQl9IGVsc2lmICgkc3RhZ2UgZXEgJ2N0eHNhdmUnKSB7CisJCQkkcyA9IDc1Owor CQkJJGwgPSA3MDsKKwkJfSBlbHNpZiAoJHN0YWdlIGVxICdpbmNvbXBsZXRlJykgeworCQkJJHMg PSA4MDsKKwkJCSRsID0gMjU7CiAJCX0KKworCQkkdmFsID0gaW50KDM2MCAvICgkbWF4X2N0eCAt ICRtaW5fY3R4ICsgMSkpICogKCRjdHggLSAkbWluX2N0eCk7CiAJfQogCi0JJHZhbCA9IGludCgz NjAgLyAoJG1heF9jdHggLSAkbWluX2N0eCArIDEpKSAqICgkY3R4IC0gJG1pbl9jdHgpOworCSRs ID0gaW50KCRsICogJGxmYWMpOwogCi0JcmV0dXJuICJoc2woJHZhbCwgJHMlLCAkbCUpOyI7CisJ cmV0dXJuICJoc2woJHZhbCwgJHMlLCAkbCUpIjsKK30KKworc3ViIGJveF9zdHlsZQoreworCW15 ICgkY3R4LCAkc3RhZ2UpID0gQF87CisJbXkgJGRlZzsKKworCWlmICgkc3RhZ2UgZXEgJ3F1ZXVl JykgeworCQkkZGVnID0gOTA7CisJfSBlbHNpZiAoJHN0YWdlIGVxICdyZWFkeScpIHsKKwkJJGRl ZyA9IDQ1OworCX0gZWxzaWYgKCRzdGFnZSBlcSAnZXhlY3V0ZScpIHsKKwkJJGRlZyA9IDA7CisJ fSBlbHNpZiAoJHN0YWdlIGVxICdjdHhzYXZlJykgeworCQkkZGVnID0gMTA1OworCX0gZWxzaWYg KCRzdGFnZSBlcSAnaW5jb21wbGV0ZScpIHsKKwkJJGRlZyA9IDA7CisJfQorCisJcmV0dXJuICdj b2xvcjogYmxhY2s7IGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoJyAuCisJ CSRkZWcgLiAnZGVnLCAnIC4KKwkJY3R4X2NvbG91cigkY3R4LCAkc3RhZ2UsIDEuMCkgLiAnLCAn IC4KKwkJY3R4X2NvbG91cigkY3R4LCAkc3RhZ2UsIDEuMCkgLiAnIDEwcHgsICcgLgorCQljdHhf Y29sb3VyKCRjdHgsICRzdGFnZSwgMC45MCkgLiAnIDEwcHgsICcgLgorCQljdHhfY29sb3VyKCRj dHgsICRzdGFnZSwgMC45MCkgLiAnIDIwcHgpOyc7CiB9CiAKIG15ICRpID0gMDsKQEAgLTg5NSw4 ICs5NjYsNyBAQCBmb3JlYWNoIG15ICRrZXkgKHNvcnQgc29ydFF1ZXVlIGtleXMgJWRiKSB7CiAJ IyBzdWJtaXQgdG8gZXhlY3V0ZQogCXVubGVzcyAoZXhpc3RzICRza2lwX2JveHsncXVldWUnfSkg ewogCQkkc2tleSA9IDIgKiAkbWF4X3NlcW5vICogJGN0eCArIDIgKiAkc2Vxbm87Ci0JCSRzdHls ZSA9ICdjb2xvcjogYmxhY2s7IGJhY2tncm91bmQtY29sb3I6ICcgLgotCQkJIGN0eF9jb2xvdXIo JGN0eCwgJ3F1ZXVlJyk7CisJCSRzdHlsZSA9IGJveF9zdHlsZSgkY3R4LCAncXVldWUnKTsKIAkJ JGNvbnRlbnQgPSAiJG5hbWU8YnI+JGRieyRrZXl9LT57J3N1Ym1pdC1kZWxheSd9dXMgPHNtYWxs PigkZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9dXMpPC9zbWFsbD4iOwogCQkkc3RhcnRlbmQg PSAnc3RhcnQ6ICcgLiAkcXVldWUgLiAnLCBlbmQ6ICcgLiAkc3VibWl0OwogCQlwcmludCAiXHR7 aWQ6ICRpLCBrZXk6ICRza2V5LCAkdHlwZSBncm91cDogJGdyb3VwLCBzdWJncm91cDogJHN1Ymdy b3VwLCBzdWJncm91cE9yZGVyOiAkc3ViZ3JvdXAsIGNvbnRlbnQ6ICckY29udGVudCcsICRzdGFy dGVuZCwgc3R5bGU6IFwnJHN0eWxlXCd9LFxuIjsKQEAgLTkwNiw4ICs5NzYsNyBAQCBmb3JlYWNo IG15ICRrZXkgKHNvcnQgc29ydFF1ZXVlIGtleXMgJWRiKSB7CiAJIyBleGVjdXRlIHRvIHN0YXJ0 CiAJdW5sZXNzIChleGlzdHMgJHNraXBfYm94eydyZWFkeSd9KSB7CiAJCSRza2V5ID0gMiAqICRt YXhfc2Vxbm8gKiAkY3R4ICsgMiAqICRzZXFubyArIDE7Ci0JCSRzdHlsZSA9ICdjb2xvcjogYmxh Y2s7IGJhY2tncm91bmQtY29sb3I6ICcgLgotCQkJIGN0eF9jb2xvdXIoJGN0eCwgJ3JlYWR5Jyk7 CisJCSRzdHlsZSA9IGJveF9zdHlsZSgkY3R4LCAncmVhZHknKTsKIAkJJGNvbnRlbnQgPSAiPHNt YWxsPiRuYW1lPGJyPiRkYnska2V5fS0+eydleGVjdXRlLWRlbGF5J311czwvc21hbGw+IjsKIAkJ JHN0YXJ0ZW5kID0gJ3N0YXJ0OiAnIC4gJHN1Ym1pdCAuICcsIGVuZDogJyAuICRzdGFydDsKIAkJ cHJpbnQgIlx0e2lkOiAkaSwga2V5OiAkc2tleSwgJHR5cGUgZ3JvdXA6ICRncm91cCwgc3ViZ3Jv dXA6ICRzdWJncm91cCwgc3ViZ3JvdXBPcmRlcjogJHN1Ymdyb3VwLCBjb250ZW50OiAnJGNvbnRl bnQnLCAkc3RhcnRlbmQsIHN0eWxlOiBcJyRzdHlsZVwnfSxcbiI7CkBAIC05MTcsMTIgKzk4Niw5 IEBAIGZvcmVhY2ggbXkgJGtleSAoc29ydCBzb3J0UXVldWUga2V5cyAlZGIpIHsKIAkjIHN0YXJ0 IHRvIHVzZXIgaW50ZXJydXB0CiAJdW5sZXNzIChleGlzdHMgJHNraXBfYm94eydleGVjdXRlJ30p IHsKIAkJJHNrZXkgPSAtMiAqICRtYXhfc2Vxbm8gKiAkY3R4IC0gMiAqICRzZXFubyAtIDE7Ci0J CWlmIChleGlzdHMgJGRieyRrZXl9LT57J2luY29tcGxldGUnfSkgewotCQkJJHN0eWxlID0gJ2Nv bG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyc7Ci0JCX0gZWxzZSB7Ci0JCQkkc3R5 bGUgPSAnY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiAnIC4KLQkJCQkgIGN0eF9jb2xv dXIoJGN0eCwgJ2V4ZWN1dGUnKTsKLQkJfQorCQkkc3R5bGUgPSBib3hfc3R5bGUoJGN0eCwKKwkJ CQkgICBleGlzdHMgJGRieyRrZXl9LT57J2luY29tcGxldGUnfSA/CisJCQkJICAgJ2luY29tcGxl dGUnIDogJ2V4ZWN1dGUnKTsKIAkJJGNvbnRlbnQgPSAiJG5hbWUgPHNtYWxsPiRkYnska2V5fS0+ eydwb3J0J308L3NtYWxsPiI7CiAJCSRjb250ZW50IC49ICcgPHNtYWxsPjxpPj8/PzwvaT48L3Nt YWxsPiAnIGlmIGV4aXN0cyAkZGJ7JGtleX0tPnsnaW5jb21wbGV0ZSd9OwogCQkkY29udGVudCAu PSAnIDxzbWFsbD48aT4rKzwvaT48L3NtYWxsPiAnIGlmIGV4aXN0cyAkZGJ7JGtleX0tPnsnbm8t ZW5kJ307CkBAIC05MzYsNyArMTAwMiw3IEBAIGZvcmVhY2ggbXkgJGtleSAoc29ydCBzb3J0UXVl dWUga2V5cyAlZGIpIHsKIAkjIHVzZXIgaW50ZXJydXB0IHRvIGNvbnRleHQgY29tcGxldGUKIAl1 bmxlc3MgKGV4aXN0cyAkc2tpcF9ib3h7J2N0eHNhdmUnfSkgewogCQkkc2tleSA9IC0yICogJG1h eF9zZXFubyAqICRjdHggLSAyICogJHNlcW5vOwotCQkkc3R5bGUgPSAnY29sb3I6IGJsYWNrOyBi YWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7JzsKKwkJJHN0eWxlID0gYm94X3N0eWxlKCRjdHgsICdj dHhzYXZlJyk7CiAJCW15ICRjdHhzYXZlID0gJGRieyRrZXl9LT57J2VuZCd9IC0gJGRieyRrZXl9 LT57J25vdGlmeSd9OwogCQkkY29udGVudCA9ICI8c21hbGw+JG5hbWU8YnI+JHtjdHhzYXZlfXVz PC9zbWFsbD4iOwogCQkkY29udGVudCAuPSAnIDxzbWFsbD48aT4/Pz88L2k+PC9zbWFsbD4gJyBp ZiBleGlzdHMgJGRieyRrZXl9LT57J2luY29tcGxldGUnfTsKLS0gCjIuMTcuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==