From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 12/13] drm/i915/execlists: Virtual engine bonding Date: Fri, 8 Mar 2019 14:12:43 +0000 Message-ID: <20190308141244.16837-13-chris@chris-wilson.co.uk> References: <20190308141244.16837-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C4656E375 for ; Fri, 8 Mar 2019 14:12:56 +0000 (UTC) In-Reply-To: <20190308141244.16837-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U29tZSB1c2VycyByZXF1aXJlIHRoYXQgd2hlbiBhIG1hc3RlciBiYXRjaCBpcyBleGVjdXRlZCBv biBvbmUgcGFydGljdWxhcgplbmdpbmUsIGEgY29tcGFuaW9uIGJhdGNoIGlzIHJ1biBzaW11bHRh bmVvdXNseSBvbiBhIHNwZWNpZmljIHNsYXZlCmVuZ2luZS4gRm9yIHRoaXMgcHVycG9zZSwgd2Ug aW50cm9kdWNlIHZpcnR1YWwgZW5naW5lIGJvbmRpbmcsIGFsbG93aW5nCm1hcHMgb2YgbWFzdGVy OnNsYXZlcyB0byBiZSBjb25zdHJ1Y3RlZCB0byBjb25zdHJhaW4gd2hpY2ggcGh5c2ljYWwKZW5n aW5lcyBhIHZpcnR1YWwgZW5naW5lIG1heSBzZWxlY3QgZ2l2ZW4gYSBmZW5jZSBvbiBhIG1hc3Rl ciBlbmdpbmUuCgpGb3IgdGhlIG1vbWVudCwgd2UgY29udGludWUgdG8gaWdub3JlIHRoZSBpc3N1 ZSBvZiBwcmVlbXB0aW9uIGRlZmVycmluZwp0aGUgbWFzdGVyIHJlcXVlc3QgZm9yIGxhdGVyLiBJ ZGVhbGx5LCB3ZSB3b3VsZCBsaWtlIHRvIHRoZW4gYWxzbyByZW1vdmUKdGhlIHNsYXZlIGFuZCBy dW4gc29tZXRoaW5nIGVsc2UgcmF0aGVyIHRoYW4gaGF2ZSBpdCBzdGFsbCB0aGUgcGlwZWxpbmUu CldpdGggbG9hZCBiYWxhbmNpbmcsIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1vdmUgd29ya2xvYWQg YXJvdW5kIGl0LCBidXQKdGhlcmUgaXMgYSBzaW1pbGFyIHN0YWxsIG9uIHRoZSBtYXN0ZXIgcGlw ZWxpbmUgd2hpbGUgaXQgbWF5IHdhaXQgZm9yCnRoZSBzbGF2ZSB0byBiZSBleGVjdXRlZC4gQXQg dGhlIGNvc3Qgb2YgbW9yZSBsYXRlbmN5IGZvciB0aGUgYm9uZGVkCnJlcXVlc3QsIGl0IG1heSBi ZSBpbnRlcmVzdGluZyB0byBsYXVuY2ggYm90aCBvbiB0aGVpciBlbmdpbmVzIGluCmxvY2tzdGVw LiAoQnViYmxlcyBhYm91bmQuKQoKT3BlbnM6IEFsc28gd2hhdCBhYm91dCBib25kaW5nIGFuIGVu Z2luZSBhcyBpdHMgb3duIG1hc3Rlcj8gSXQgZG9lc24ndApicmVhayBhbnl0aGluZyBpbnRlcm5h bGx5LCBzbyBhbGxvdyB0aGUgc2lsbGluZXNzLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29u IDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jICAgIHwgIDUwICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5oICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf dHlwZXMuaCAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAg ICAgIHwgMTExICsrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu aCAgICAgICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X2xyYy5jIHwgMTY3ICsrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oICAgICAgICAgICAgICAgIHwgIDIyICsrKwogOCBmaWxlcyBjaGFuZ2VkLCAzNjMgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCAx M2I3OTk4MGY3ZjMuLjBkODYzMDY0OTdiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwpAQCAtMTQ4NCw4ICsxNDg0LDU4IEBAIHNldF9lbmdpbmVzX19sb2FkX2JhbGFu Y2Uoc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gX191c2VyICpiYXNlLCB2b2lkICpkYXRhKQog CXJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitzZXRfZW5naW5lc19fYm9uZChzdHJ1Y3QgaTkx NV91c2VyX2V4dGVuc2lvbiBfX3VzZXIgKmJhc2UsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGk5 MTVfY29udGV4dF9lbmdpbmVzX2JvbmQgX191c2VyICpleHQgPQorCQljb250YWluZXJfb2ZfdXNl cihiYXNlLCB0eXBlb2YoKmV4dCksIGJhc2UpOworCWNvbnN0IHN0cnVjdCBzZXRfZW5naW5lcyAq c2V0ID0gZGF0YTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptYXN0ZXI7CisJdTMyIGNsYXNz LCBpbnN0YW5jZSwgc2libGluZ3M7CisJdTE2IGlkeDsKKwlpbnQgZXJyOworCisJaWYgKGdldF91 c2VyKGlkeCwgJmV4dC0+ZW5naW5lX2luZGV4KSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlpZiAo aWR4ID49IHNldC0+bmVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZHggPSBhcnJheV9p bmRleF9ub3NwZWMoaWR4LCBzZXQtPm5lbmdpbmUpOworCWlmICghc2V0LT5lbmdpbmVzW2lkeF0p CisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBBIG5vbi12aXJ0dWFsIGVuZ2luZSBoYXMg MCBzaWJsaW5ncyB0byBjaG9vc2UgYmV0d2VlbjsgYW5kIHN1Ym1pdAorCSAqIGZlbmNlIHdpbGwg YWx3YXlzIGJlIGRpcmVjdGVkIHRvIHRoZSBvbmUgZW5naW5lLgorCSAqLworCWlmICghaW50ZWxf ZW5naW5lX2lzX3ZpcnR1YWwoc2V0LT5lbmdpbmVzW2lkeF0pKQorCQlyZXR1cm4gMDsKKworCWVy ciA9IGNoZWNrX3VzZXJfbWJ6MTYoJmV4dC0+bWJ6KTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJy OworCisJaWYgKGdldF91c2VyKGNsYXNzLCAmZXh0LT5tYXN0ZXJfY2xhc3MpKQorCQlyZXR1cm4g LUVGQVVMVDsKKworCWlmIChnZXRfdXNlcihpbnN0YW5jZSwgJmV4dC0+bWFzdGVyX2luc3RhbmNl KSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwltYXN0ZXIgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3Vz ZXIoc2V0LT5jdHgtPmk5MTUsIGNsYXNzLCBpbnN0YW5jZSk7CisJaWYgKCFtYXN0ZXIpCisJCXJl dHVybiAtRUlOVkFMOworCisJaWYgKGdldF91c2VyKHNpYmxpbmdzLCAmZXh0LT5zaWJsaW5nX21h c2spKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCXJldHVybiBpbnRlbF92aXJ0dWFsX2VuZ2luZV9h dHRhY2hfYm9uZChzZXQtPmVuZ2luZXNbaWR4XSwKKwkJCQkJCW1hc3Rlciwgc2libGluZ3MpOwor fQorCiBzdGF0aWMgY29uc3QgaTkxNV91c2VyX2V4dGVuc2lvbl9mbiBzZXRfZW5naW5lc19fZXh0 ZW5zaW9uc1tdID0gewogCVtJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfTE9BRF9CQUxBTkNFXSA9 IHNldF9lbmdpbmVzX19sb2FkX2JhbGFuY2UsCisJW0k5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9C T05EXSA9IHNldF9lbmdpbmVzX19ib25kLAogfTsKIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlcXVlc3QuYwppbmRleCA1NTI3YWIyMmRiZjIuLjBjYWYzMWRlMmI5OCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKQEAgLTc0Myw2ICs3NDMsNyBAQCBpOTE1X3JlcXVl c3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4KQogCXJxLT5iYXRjaCA9IE5VTEw7CiAJcnEtPmNhcHR1cmVfbGlzdCA9IE5V TEw7CiAJcnEtPndhaXRib29zdCA9IGZhbHNlOworCXJxLT5leGVjdXRpb25fbWFzayA9IH4wdTsK IAogCS8qCiAJICogUmVzZXJ2ZSBzcGFjZSBpbiB0aGUgcmluZyBidWZmZXIgZm9yIGFsbCB0aGUg Y29tbWFuZHMgcmVxdWlyZWQgdG8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKaW5kZXgg ZDRmNmIyOTQwMTMwLi44NjJiMjU5MzBkZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVxdWVzdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVz dC5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgc3RydWN0IGk5MTVfcmVxdWVzdCB7CiAJICovCiAJc3Ry dWN0IGk5MTVfc2NoZWRfbm9kZSBzY2hlZDsKIAlzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5IGRlcDsK Kwl1bnNpZ25lZCBpbnQgZXhlY3V0aW9uX21hc2s7CiAKIAkvKgogCSAqIEEgY29udmVuaWVuY2Ug cG9pbnRlciB0byB0aGUgY3VycmVudCBicmVhZGNydW1iIHZhbHVlIHN0b3JlZCBpbgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfdHlwZXMuaAppbmRleCBkNTRkMmExODQwY2MuLjZk ZmNmNWNjMDhjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5l X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmgK QEAgLTM4Miw2ICszODIsMTMgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJICovCiAJdm9p ZAkJKCpzdWJtaXRfcmVxdWVzdCkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwogCisJLyoKKwkg KiBDYWxsZWQgb24gc2lnbmFsaW5nIG9mIGEgU1VCTUlUX0ZFTkNFLCBwYXNzaW5nIGFsb25nIHRo ZSBzaWduYWxpbmcKKwkgKiByZXF1ZXN0IGRvd24gdG8gdGhlIGJvbmRlZCBwYWlycy4KKwkgKi8K Kwl2b2lkICAgICAgICAgICAgKCpib25kX2V4ZWN1dGUpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LAorCQkJCQlzdHJ1Y3QgZG1hX2ZlbmNlICpzaWduYWwpOworCiAJLyoKIAkgKiBDYWxsIHdoZW4g dGhlIHByaW9yaXR5IG9uIGEgcmVxdWVzdCBoYXMgY2hhbmdlZCBhbmQgaXQgYW5kIGl0cwogCSAq IGRlcGVuZGVuY2llcyBtYXkgbmVlZCByZXNjaGVkdWxpbmcuIE5vdGUgdGhlIHJlcXVlc3QgaXRz ZWxmIG1heQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCAwYzk3ZThmMzAyMjMuLmYwNjMx MmQxODVhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTE3OSw2ICsxNzksMTIgQEAg c3RydWN0IHZpcnR1YWxfZW5naW5lIHsKIAkJaW50IHByaW87CiAJfSBub2Rlc1tJOTE1X05VTV9F TkdJTkVTXTsKIAorCXN0cnVjdCB2ZV9ib25kIHsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq bWFzdGVyOworCQl1bnNpZ25lZCBpbnQgc2libGluZ19tYXNrOworCX0gKmJvbmRzOworCXVuc2ln bmVkIGludCBuYm9uZDsKKwogCXVuc2lnbmVkIGludCBjb3VudDsKIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpzaWJsaW5nc1swXTsKIH07CkBAIC0zMTgzLDYgKzMxODksNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIHZpcnR1YWxfY29udGV4dF9vcHMgPSB7CiBzdGF0 aWMgdm9pZCB2aXJ0dWFsX3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiB7 CiAJc3RydWN0IHZpcnR1YWxfZW5naW5lICogY29uc3QgdmUgPSAoc3RydWN0IHZpcnR1YWxfZW5n aW5lICopZGF0YTsKKwl1bnNpZ25lZCBpbnQgbWFzazsKIAl1bnNpZ25lZCBpbnQgbjsKIAlpbnQg cHJpbzsKIApAQCAtMzE5MSwxMiArMzE5OCwzMCBAQCBzdGF0aWMgdm9pZCB2aXJ0dWFsX3N1Ym1p c3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiAJCXJldHVybjsKIAogCWxvY2FsX2ly cV9kaXNhYmxlKCk7CisKKwltYXNrID0gMDsKKwlzcGluX2xvY2soJnZlLT5iYXNlLnRpbWVsaW5l LmxvY2spOworCWlmICh2ZS0+cmVxdWVzdCkKKwkJbWFzayA9IHZlLT5yZXF1ZXN0LT5leGVjdXRp b25fbWFzazsKKwlzcGluX3VubG9jaygmdmUtPmJhc2UudGltZWxpbmUubG9jayk7CisKIAlmb3Ig KG4gPSAwOyBSRUFEX09OQ0UodmUtPnJlcXVlc3QpICYmIG4gPCB2ZS0+Y291bnQ7IG4rKykgewog CQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWJsaW5nID0gdmUtPnNpYmxpbmdzW25dOwogCQlz dHJ1Y3QgdmVfbm9kZSAqIGNvbnN0IG5vZGUgPSAmdmUtPm5vZGVzW3NpYmxpbmctPmlkXTsKIAkJ c3RydWN0IHJiX25vZGUgKipwYXJlbnQsICpyYjsKIAkJYm9vbCBmaXJzdDsKIAorCQlpZiAodW5s aWtlbHkoIShtYXNrICYgc2libGluZy0+bWFzaykpKSB7CisJCQlpZiAoIVJCX0VNUFRZX05PREUo Jm5vZGUtPnJiKSkgeworCQkJCXNwaW5fbG9jaygmc2libGluZy0+dGltZWxpbmUubG9jayk7CisJ CQkJcmJfZXJhc2VfY2FjaGVkKCZub2RlLT5yYiwKKwkJCQkJCSZzaWJsaW5nLT5leGVjbGlzdHMu dmlydHVhbCk7CisJCQkJUkJfQ0xFQVJfTk9ERSgmbm9kZS0+cmIpOworCQkJCXNwaW5fdW5sb2Nr KCZzaWJsaW5nLT50aW1lbGluZS5sb2NrKTsKKwkJCX0KKwkJCWNvbnRpbnVlOworCQl9CisKIAkJ c3Bpbl9sb2NrKCZzaWJsaW5nLT50aW1lbGluZS5sb2NrKTsKIAogCQlpZiAoIVJCX0VNUFRZX05P REUoJm5vZGUtPnJiKSkgewpAQCAtMzI1NCw2ICszMjc5LDMwIEBAIHN0YXRpYyB2b2lkIHZpcnR1 YWxfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIAl0YXNrbGV0 X3NjaGVkdWxlKCZ2ZS0+YmFzZS5leGVjbGlzdHMudGFza2xldCk7CiB9CiAKK3N0YXRpYyBzdHJ1 Y3QgdmVfYm9uZCAqCit2aXJ0dWFsX2ZpbmRfYm9uZChzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZl LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptYXN0ZXIpCit7CisJaW50IGk7CisKKwlmb3IgKGkg PSAwOyBpIDwgdmUtPm5ib25kOyBpKyspIHsKKwkJaWYgKHZlLT5ib25kc1tpXS5tYXN0ZXIgPT0g bWFzdGVyKQorCQkJcmV0dXJuICZ2ZS0+Ym9uZHNbaV07CisJfQorCisJcmV0dXJuIE5VTEw7Cit9 CisKK3N0YXRpYyB2b2lkCit2aXJ0dWFsX2JvbmRfZXhlY3V0ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgc3RydWN0IGRtYV9mZW5jZSAqc2lnbmFsKQoreworCXN0cnVjdCB2aXJ0dWFsX2VuZ2lu ZSAqdmUgPSB0b192aXJ0dWFsX2VuZ2luZShycS0+ZW5naW5lKTsKKwlzdHJ1Y3QgdmVfYm9uZCAq Ym9uZDsKKworCWJvbmQgPSB2aXJ0dWFsX2ZpbmRfYm9uZCh2ZSwgdG9fcmVxdWVzdChzaWduYWwp LT5lbmdpbmUpOworCWlmIChib25kKSAvKiBYWFggc2VyaWFsaXNlIHdpdGggcnEtPmxvY2s/ICov CisJCXJxLT5leGVjdXRpb25fbWFzayAmPSBib25kLT5zaWJsaW5nX21hc2s7Cit9CisKIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKgogaW50ZWxfZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFsKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJCQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqKnNpYmxpbmdzLApAQCAtMzI5NCw2ICszMzQzLDcgQEAgaW50ZWxfZXhlY2xpc3RzX2NyZWF0 ZV92aXJ0dWFsKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAKIAl2ZS0+YmFzZS5zY2hl ZHVsZSA9IGk5MTVfc2NoZWR1bGU7CiAJdmUtPmJhc2Uuc3VibWl0X3JlcXVlc3QgPSB2aXJ0dWFs X3N1Ym1pdF9yZXF1ZXN0OworCXZlLT5iYXNlLmJvbmRfZXhlY3V0ZSA9IHZpcnR1YWxfYm9uZF9l eGVjdXRlOwogCiAJdmUtPmJhc2UuZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBJTlRf TUlOOwogCXRhc2tsZXRfaW5pdCgmdmUtPmJhc2UuZXhlY2xpc3RzLnRhc2tsZXQsCkBAIC0zMzY5 LDkgKzM0MTksNzAgQEAgaW50ZWxfZXhlY2xpc3RzX2Nsb25lX3ZpcnR1YWwoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKIAlpZiAoSVNfRVJSKGRzdCkpCiAJCXJldHVybiBkc3Q7CiAKKwlp ZiAoc2UtPm5ib25kKSB7CisJCXN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqZGUgPSB0b192aXJ0dWFs X2VuZ2luZShkc3QpOworCisJCWRlLT5ib25kcyA9IGttZW1kdXAoc2UtPmJvbmRzLAorCQkJCSAg ICBzaXplb2YoKnNlLT5ib25kcykgKiBzZS0+bmJvbmQsCisJCQkJICAgIEdGUF9LRVJORUwpOwor CQlpZiAoIWRlLT5ib25kcykgeworCQkJaW50ZWxfdmlydHVhbF9lbmdpbmVfZGVzdHJveShkc3Qp OworCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisJCX0KKworCQlkZS0+bmJvbmQgPSBzZS0+ bmJvbmQ7CisJfQorCiAJcmV0dXJuIGRzdDsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGxvbmcKK3Zp cnR1YWxfZXhlY3V0aW9uX21hc2soc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZSwgdW5zaWduZWQg bG9uZyBtYXNrKQoreworCXVuc2lnbmVkIGxvbmcgZW1hc2sgPSAwOworCWludCBiaXQ7CisKKwlm b3JfZWFjaF9zZXRfYml0KGJpdCwgJm1hc2ssIHZlLT5jb3VudCkKKwkJZW1hc2sgfD0gdmUtPnNp YmxpbmdzW2JpdF0tPm1hc2s7CisKKwlyZXR1cm4gZW1hc2s7Cit9CisKK2ludCBpbnRlbF92aXJ0 dWFsX2VuZ2luZV9hdHRhY2hfYm9uZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJ CQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptYXN0ZXIsCisJCQkJICAgICB1bnNpZ25l ZCBsb25nIG1hc2spCit7CisJc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZSA9IHRvX3ZpcnR1YWxf ZW5naW5lKGVuZ2luZSk7CisJc3RydWN0IHZlX2JvbmQgKmJvbmQ7CisKKwlpZiAobWFzayA+PiB2 ZS0+Y291bnQpCisJCXJldHVybiAtRUlOVkFMOworCisJbWFzayA9IHZpcnR1YWxfZXhlY3V0aW9u X21hc2sodmUsIG1hc2spOworCWlmICghbWFzaykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlib25k ID0gdmlydHVhbF9maW5kX2JvbmQodmUsIG1hc3Rlcik7CisJaWYgKGJvbmQpIHsKKwkJYm9uZC0+ c2libGluZ19tYXNrIHw9IG1hc2s7CisJCXJldHVybiAwOworCX0KKworCWJvbmQgPSBrcmVhbGxv Yyh2ZS0+Ym9uZHMsCisJCQlzaXplb2YoKmJvbmQpICogKHZlLT5uYm9uZCArIDEpLAorCQkJR0ZQ X0tFUk5FTCk7CisJaWYgKCFib25kKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWJvbmRbdmUtPm5i b25kXS5tYXN0ZXIgPSBtYXN0ZXI7CisJYm9uZFt2ZS0+bmJvbmRdLnNpYmxpbmdfbWFzayA9IG1h c2s7CisKKwl2ZS0+Ym9uZHMgPSBib25kOworCXZlLT5uYm9uZCsrOworCisJcmV0dXJuIDA7Cit9 CisKIHZvaWQgaW50ZWxfdmlydHVhbF9lbmdpbmVfZGVzdHJveShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiB7CiAJc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZSA9IHRvX3ZpcnR1YWxf ZW5naW5lKGVuZ2luZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCmluZGV4IDlkOTBkYzY4ZTAy Yi4uNzdiODU2NDgwNDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAtMTIxLDYgKzEy MSwxMCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKIGludGVsX2V4ZWNsaXN0c19jbG9uZV92 aXJ0dWFsKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJCQkgICAgICBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpzcmMpOwogCitpbnQgaW50ZWxfdmlydHVhbF9lbmdpbmVfYXR0YWNoX2Jv bmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSAgICAgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqbWFzdGVyLAorCQkJCSAgICAgdW5zaWduZWQgbG9uZyBtYXNrKTsKKwogdm9p ZCBpbnRlbF92aXJ0dWFsX2VuZ2luZV9kZXN0cm95KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSk7CiAKIHUzMiBnZW44X21ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgc3RydWN0IGludGVsX3NzZXUgKmN0eF9zc2V1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9scmMuYwppbmRleCA0YjhhMzM5NTI5ZDEuLmE3ZGU3YThmYzI0YSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwpAQCAtMTMsNiArMTMs NyBAQAogI2luY2x1ZGUgImlndF9saXZlX3Rlc3QuaCIKICNpbmNsdWRlICJpZ3Rfc3Bpbm5lci5o IgogI2luY2x1ZGUgImk5MTVfcmFuZG9tLmgiCisjaW5jbHVkZSAibGliX3N3X2ZlbmNlLmgiCiAK ICNpbmNsdWRlICJtb2NrX2NvbnRleHQuaCIKIApAQCAtMTIyNCw2ICsxMjI1LDE3MSBAQCBzdGF0 aWMgaW50IGxpdmVfdmlydHVhbF9lbmdpbmUodm9pZCAqYXJnKQogCXJldHVybiBlcnI7CiB9CiAK K3N0YXRpYyBpbnQgYm9uZF92aXJ0dWFsX2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgY2xhc3MsCisJCQkgICAgICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLAorCQkJICAgICAgIHVuc2lnbmVkIGludCBuc2libGlu ZywKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCisjZGVmaW5lIEJPTkRfU0NIRURVTEUg QklUKDApCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVyOworCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHg7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnFbMTZdOworCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOworCXVuc2lnbmVkIGxvbmcgbjsKKwlpbnQgZXJyOworCisJR0VN X0JVR19PTihuc2libGluZyA+PSBBUlJBWV9TSVpFKHJxKSAtIDEpOworCisJY3R4ID0ga2VybmVs X2NvbnRleHQoaTkxNSk7CisJaWYgKCFjdHgpCisJCXJldHVybiAtRU5PTUVNOworCisJZXJyID0g MDsKKwlycVswXSA9IEVSUl9QVFIoLUVOT01FTSk7CisJZm9yX2VhY2hfZW5naW5lKG1hc3Rlciwg aTkxNSwgaWQpIHsKKwkJc3RydWN0IGk5MTVfc3dfZmVuY2UgZmVuY2U7CisKKwkJaWYgKG1hc3Rl ci0+Y2xhc3MgPT0gY2xhc3MpCisJCQljb250aW51ZTsKKworCQlycVswXSA9IGk5MTVfcmVxdWVz dF9hbGxvYyhtYXN0ZXIsIGN0eCk7CisJCWlmIChJU19FUlIocnFbMF0pKSB7CisJCQllcnIgPSBQ VFJfRVJSKHJxWzBdKTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJaWYgKGZsYWdzICYgQk9ORF9T Q0hFRFVMRSkKKwkJCW9uc3RhY2tfZmVuY2VfaW5pdCgmZmVuY2UpOworCisJCWk5MTVfcmVxdWVz dF9nZXQocnFbMF0pOworCQlpOTE1X3JlcXVlc3RfYWRkKHJxWzBdKTsKKworCQlmb3IgKG4gPSAw OyBuIDwgbnNpYmxpbmc7IG4rKykgeworCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OworCisJCQllbmdpbmUgPSBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoY3R4LAorCQkJ CQkJCQlzaWJsaW5ncywKKwkJCQkJCQkJbnNpYmxpbmcpOworCQkJaWYgKElTX0VSUihlbmdpbmUp KSB7CisJCQkJZXJyID0gUFRSX0VSUihlbmdpbmUpOworCQkJCWdvdG8gb3V0OworCQkJfQorCisJ CQllcnIgPSBpbnRlbF92aXJ0dWFsX2VuZ2luZV9hdHRhY2hfYm9uZChlbmdpbmUsCisJCQkJCQkJ ICAgICAgIG1hc3RlciwKKwkJCQkJCQkgICAgICAgQklUKG4pKTsKKwkJCWlmIChlcnIpIHsKKwkJ CQlpbnRlbF92aXJ0dWFsX2VuZ2luZV9kZXN0cm95KGVuZ2luZSk7CisJCQkJZ290byBvdXQ7CisJ CQl9CisKKwkJCXJxW24gKyAxXSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7CisJ CQlpZiAoSVNfRVJSKHJxW24gKyAxXSkpIHsKKwkJCQllcnIgPSBQVFJfRVJSKHJxW24gKyAxXSk7 CisJCQkJaW50ZWxfdmlydHVhbF9lbmdpbmVfZGVzdHJveShlbmdpbmUpOworCQkJCWdvdG8gb3V0 OworCQkJfQorCQkJaTkxNV9yZXF1ZXN0X2dldChycVtuICsgMV0pOworCisJCQllcnIgPSBpOTE1 X3JlcXVlc3RfYXdhaXRfZXhlY3V0aW9uKHJxW24gKyAxXSwKKwkJCQkJCQkgICAmcnFbMF0tPmZl bmNlLAorCQkJCQkJCSAgIGVuZ2luZS0+Ym9uZF9leGVjdXRlKTsKKwkJCWk5MTVfcmVxdWVzdF9h ZGQocnFbbiArIDFdKTsKKwkJCWludGVsX3ZpcnR1YWxfZW5naW5lX2Rlc3Ryb3koZW5naW5lKTsK KwkJCWlmIChlcnIgPCAwKQorCQkJCWdvdG8gb3V0OworCQl9CisJCXJxW24gKyAxXSA9IEVSUl9Q VFIoLUVJTlZBTCk7CisKKwkJaWYgKGZsYWdzICYgQk9ORF9TQ0hFRFVMRSkKKwkJCW9uc3RhY2tf ZmVuY2VfZmluaSgmZmVuY2UpOworCisJCWZvciAobiA9IDA7IG4gPCBuc2libGluZzsgbisrKSB7 CisJCQlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnFbbiArIDFdLAorCQkJCQkgICAgICBJOTE1X1dB SVRfTE9DS0VELAorCQkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKSB7CisJCQkJ ZXJyID0gLUVJTzsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKworCQkJaWYgKHJxW24gKyAxXS0+ZW5n aW5lICE9IHNpYmxpbmdzW25dKSB7CisJCQkJcHJfZXJyKCJCb25kZWQgcmVxdWVzdCBkaWQgbm90 IGV4ZWN1dGUgb24gdGFyZ2V0IGVuZ2luZTogZXhwZWN0ZWQgJXMsIHVzZWQgJXM7IG1hc3RlciB3 YXMgJXNcbiIsCisJCQkJICAgICAgIHNpYmxpbmdzW25dLT5uYW1lLAorCQkJCSAgICAgICBycVtu ICsgMV0tPmVuZ2luZS0+bmFtZSwKKwkJCQkgICAgICAgcnFbMF0tPmVuZ2luZS0+bmFtZSk7CisJ CQkJZXJyID0gLUVJTlZBTDsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJfQorCisJCWZvciAobiA9 IDA7ICFJU19FUlIocnFbbl0pOyBuKyspCisJCQlpOTE1X3JlcXVlc3RfcHV0KHJxW25dKTsKKwkJ cnFbMF0gPSBFUlJfUFRSKC1FTk9NRU0pOworCX0KKworb3V0OgorCWZvciAobiA9IDA7ICFJU19F UlIocnFbbl0pOyBuKyspCisJCWk5MTVfcmVxdWVzdF9wdXQocnFbbl0pOworCWlmIChpZ3RfZmx1 c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkKKwkJZXJyID0gLUVJTzsKKworCWtlcm5l bF9jb250ZXh0X2Nsb3NlKGN0eCk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBsaXZl X3ZpcnR1YWxfYm9uZCh2b2lkICphcmcpCit7CisJc3RhdGljIGNvbnN0IHN0cnVjdCBwaGFzZSB7 CisJCWNvbnN0IGNoYXIgKm5hbWU7CisJCXVuc2lnbmVkIGludCBmbGFnczsKKwl9IHBoYXNlc1td ID0geworCQl7ICIiLCAwIH0sCisJCXsgInNjaGVkdWxlIiwgQk9ORF9TQ0hFRFVMRSB9LAorCQl7 IH0sCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpzaWJsaW5nc1tNQVhfRU5HSU5FX0lOU1RBTkNFICsgMV07CisJdW5z aWduZWQgaW50IGNsYXNzLCBpbnN0OworCWludCBlcnIgPSAwOworCisJaWYgKFVTRVNfR1VDX1NV Qk1JU1NJT04oaTkxNSkpCisJCXJldHVybiAwOworCisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7CisKKwlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPD0gTUFYX0VOR0lORV9DTEFT UzsgY2xhc3MrKykgeworCQljb25zdCBzdHJ1Y3QgcGhhc2UgKnA7CisJCWludCBuc2libGluZzsK KworCQluc2libGluZyA9IDA7CisJCWZvciAoaW5zdCA9IDA7IGluc3QgPD0gTUFYX0VOR0lORV9J TlNUQU5DRTsgaW5zdCsrKSB7CisJCQlpZiAoIWk5MTUtPmVuZ2luZV9jbGFzc1tjbGFzc11baW5z dF0pCisJCQkJYnJlYWs7CisKKwkJCUdFTV9CVUdfT04obnNpYmxpbmcgPT0gQVJSQVlfU0laRShz aWJsaW5ncykpOworCQkJc2libGluZ3NbbnNpYmxpbmcrK10gPSBpOTE1LT5lbmdpbmVfY2xhc3Nb Y2xhc3NdW2luc3RdOworCQl9CisJCWlmIChuc2libGluZyA8IDIpCisJCQljb250aW51ZTsKKwor CQlmb3IgKHAgPSBwaGFzZXM7IHAtPm5hbWU7IHArKykgeworCQkJZXJyID0gYm9uZF92aXJ0dWFs X2VuZ2luZShpOTE1LAorCQkJCQkJICBjbGFzcywgc2libGluZ3MsIG5zaWJsaW5nLAorCQkJCQkJ ICBwLT5mbGFncyk7CisJCQlpZiAoZXJyKSB7CisJCQkJcHJfZXJyKCIlcyglcyk6IGZhaWxlZCBj bGFzcz0lZCwgbnNpYmxpbmc9JWQsIGVycj0lZFxuIiwKKwkJCQkgICAgICAgX19mdW5jX18sIHAt Pm5hbWUsIGNsYXNzLCBuc2libGluZywgZXJyKTsKKwkJCQlnb3RvIG91dF91bmxvY2s7CisJCQl9 CisJCX0KKwl9CisKK291dF91bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKKwlyZXR1cm4gZXJyOworfQorCiBpbnQgaW50ZWxfZXhlY2xpc3RzX2xpdmVfc2Vs ZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7CkBAIC0xMjM2LDYgKzE0MDIsNyBAQCBpbnQg aW50ZWxfZXhlY2xpc3RzX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQogCQlTVUJURVNUKGxpdmVfcHJlZW1wdF9oYW5nKSwKIAkJU1VCVEVTVChsaXZlX3ByZWVt cHRfc21va2UpLAogCQlTVUJURVNUKGxpdmVfdmlydHVhbF9lbmdpbmUpLAorCQlTVUJURVNUKGxp dmVfdmlydHVhbF9ib25kKSwKIAl9OwogCiAJaWYgKCFIQVNfRVhFQ0xJU1RTKGk5MTUpKQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oCmluZGV4IDU5MmIwMjY3NjA0NC4uOTRlNzJhZTk1NGEwIDEwMDY0NAotLS0gYS9p bmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oCkBAIC0xNTMwLDYgKzE1MzAsMTAgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtIHsKICAqIHNpemVkIGFyZ3VtZW50LCB3aWxsIHJldmVydCBiYWNrIHRvIGRlZmF1bHQgc2V0 dGluZ3MuCiAgKgogICogU2VlIHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcy4KKyAq CisgKiBFeHRlbnNpb25zOgorICogICBpOTE1X2NvbnRleHRfZW5naW5lc19sb2FkX2JhbGFuY2Ug KEk5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9MT0FEX0JBTEFOQ0UpCisgKiAgIGk5MTVfY29udGV4 dF9lbmdpbmVzX2JvbmQgKEk5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9CT05EKQogICovCiAjZGVm aW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTCTB4YQogLyogTXVzdCBiZSBrZXB0IGNvbXBh Y3QgLS0gbm8gaG9sZXMgYW5kIHdlbGwgZG9jdW1lbnRlZCAqLwpAQCAtMTYyNSw5ICsxNjI5LDI3 IEBAIHN0cnVjdCBpOTE1X2NvbnRleHRfZW5naW5lc19sb2FkX2JhbGFuY2UgewogCV9fdTY0IG1i ejY0WzRdOyAvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZTsgbXVzdCBiZSB6ZXJvICovCiB9Owog CisvKgorICogaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZDoKKyAqCisgKi8KK3N0cnVjdCBpOTE1 X2NvbnRleHRfZW5naW5lc19ib25kIHsKKwlzdHJ1Y3QgaTkxNV91c2VyX2V4dGVuc2lvbiBiYXNl OworCisJX191MTYgZW5naW5lX2luZGV4OworCV9fdTE2IG1iejsKKworCV9fdTE2IG1hc3Rlcl9j bGFzczsKKwlfX3UxNiBtYXN0ZXJfaW5zdGFuY2U7CisKKwlfX3U2NCBzaWJsaW5nX21hc2s7CisJ X191NjQgZmxhZ3M7IC8qIGFsbCB1bmRlZmluZWQgZmxhZ3MgbXVzdCBiZSB6ZXJvICovCit9Owor CiBzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgewogCV9fdTY0IGV4dGVuc2lvbnM7 IC8qIGxpbmtlZCBjaGFpbiBvZiBleHRlbnNpb24gYmxvY2tzLCAwIHRlcm1pbmF0ZXMgKi8KICNk ZWZpbmUgSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFMQU5DRSAwCisjZGVmaW5lIEk5 MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9CT05EIDEKIAogCXN0cnVjdCB7CiAJCV9fdTE2IGVuZ2lu ZV9jbGFzczsgLyogc2VlIGVudW0gZHJtX2k5MTVfZ2VtX2VuZ2luZV9jbGFzcyAqLwotLSAKMi4y MC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=