From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E180EC433E0 for ; Mon, 29 Jun 2020 13:44:49 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BBFB523B06 for ; Mon, 29 Jun 2020 13:44:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BBFB523B06 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2B55A89B45; Mon, 29 Jun 2020 13:44:49 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id A941F89B45 for ; Mon, 29 Jun 2020 13:44:48 +0000 (UTC) IronPort-SDR: E2hrtASxfdg063yqa67ok144JdT9OtHii7EBFh3qgQxPt4A9ajbpQ6LhEVgtVMWHPeUmxb6FGw ZQ+0Go4iZ0Og== X-IronPort-AV: E=McAfee;i="6000,8403,9666"; a="163978114" X-IronPort-AV: E=Sophos;i="5.75,294,1589266800"; d="scan'208";a="163978114" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2020 06:44:39 -0700 IronPort-SDR: 1fD+egGGJkDQ+A2d4JvaHLhgr+Utxnn6iJ65lscGdIOBrWGncigkMsy2RYCzzaMNE0tdjkYP/g ycHJpAufMsiw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,294,1589266800"; d="scan'208";a="320644109" Received: from bartholt-mobl1.ger.corp.intel.com (HELO [10.252.38.99]) ([10.252.38.99]) by FMSMGA003.fm.intel.com with ESMTP; 29 Jun 2020 06:44:37 -0700 To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org References: <20200623142843.423594-1-maarten.lankhorst@linux.intel.com> <20200623142843.423594-4-maarten.lankhorst@linux.intel.com> From: Maarten Lankhorst Message-ID: <01dc9947-575a-aa22-b52b-8aa3da9aeede@linux.intel.com> Date: Mon, 29 Jun 2020 15:44:36 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 04/26] drm/i915: Add an implementation for i915_gem_ww_ctx locking, v2. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T3AgMjktMDYtMjAyMCBvbSAxNDozMiBzY2hyZWVmIFR2cnRrbyBVcnN1bGluOgo+Cj4gT24gMjMv MDYvMjAyMCAxNToyOCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+IGk5MTVfZ2VtX3d3X2N0 eCBpcyB1c2VkIHRvIGxvY2sgYWxsIGdlbSBibydzIGZvciBwaW5uaW5nIGFuZCBtZW1vcnkKPj4g ZXZpY3Rpb24uIFdlIGRvbid0IHVzZSBpdCB5ZXQsIGJ1dCBsZXRzIHN0YXJ0IGFkZGluZyB0aGUg ZGVmaW5pdGlvbgo+PiBmaXJzdC4KPj4KPj4gVG8gdXNlIGl0LCB3ZSBoYXZlIHRvIHBhc3MgYSBu b24tTlVMTCB3dyB0byBnZW1fb2JqZWN0X2xvY2ssIGFuZCBkb24ndAo+PiB1bmxvY2sgZGlyZWN0 bHkuIEl0IGlzIGRvbmUgaW4gaTkxNV9nZW1fd3dfY3R4X2ZpbmkuCj4+Cj4+IENoYW5nZXMgc2lu Y2UgdjE6Cj4+IC0gQ2hhbmdlIHd3X2N0eCBhbmQgb2JqIG9yZGVyIGluIGxvY2tpbmcgZnVuY3Rp b25zIChKb25hcyBMYWh0aW5lbikKPj4KPj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4gLS0tCj4+IMKgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jwqAgfMKgIDQgKy0KPj4gwqAg Li4uL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY2xpZW50X2JsdC5jwqDCoMKgIHzCoCAyICst Cj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmPCoMKgIHzC oCAyICstCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuY8Kg wqDCoCB8wqAgNCArLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG9t YWluLmPCoMKgwqAgfCAxMCArKy0tCj4+IMKgIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X2V4ZWNidWZmZXIuY8KgwqDCoCB8wqAgNCArLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0LmPCoMKgwqAgfMKgIDIgKy0KPj4gwqAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5owqDCoMKgIHwgMzggKysrKysrKysrKystLS0KPj4g wqAgLi4uL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmjCoCB8wqAgOSAr KysrCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jwqDCoMKgwqDC oMKgwqAgfMKgIDIgKy0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3Rp bGluZy5jwqDCoMKgIHzCoCAyICstCj4+IMKgIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9odWdlX3BhZ2VzLmPCoMKgIHzCoCAyICstCj4+IMKgIC4uLi9pOTE1L2dlbS9zZWxmdGVzdHMv aTkxNV9nZW1fY2xpZW50X2JsdC5jwqAgfMKgIDIgKy0KPj4gwqAgLi4uL2k5MTUvZ2VtL3NlbGZ0 ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuY8KgwqAgfCAxMCArKy0tCj4+IMKgIC4uLi9kcm0vaTkx NS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8wqAgNCArLQo+PiDCoCAuLi4vZHJt L2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmPCoMKgwqAgfMKgIDQgKy0KPj4gwqAg Li4uL2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jwqDCoMKgIHzCoCAyICst Cj4+IMKgIC4uLi9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuY8KgwqDCoCB8 wqAgMiArLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5jwqDCoMKg wqDCoMKgwqDCoCB8wqAgMiArLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDUyICsrKysrKysrKysrKysrKysrLS0KPj4g wqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAxMSArKysrCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbS5jwqDCoMKgwqAgfCA0MSArKysrKysrKysrKysrKysKPj4gwqAgZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmPCoMKgwqDCoCB8wqAgMiArLQo+PiDCoCAuLi4vZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uY8KgIHzCoCAyICstCj4+IMKgIDI0 IGZpbGVzIGNoYW5nZWQsIDE3MyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKPj4KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXgg NzQ1NzgxM2VmMjczLi5lOTA5Y2NjMzdhNTQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC0yMzA5LDcgKzIzMDksNyBAQCBpbnRl bF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPj4gwqAg wqAgdm9pZCBpbnRlbF91bnBpbl9mYl92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVk IGxvbmcgZmxhZ3MpCj4+IMKgIHsKPj4gLcKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayh2bWEt Pm9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2sodm1hLT5vYmosIE5VTEwpOwo+ PiDCoMKgwqDCoMKgIGlmIChmbGFncyAmIFBMQU5FX0hBU19GRU5DRSkKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGk5MTVfdm1hX3VucGluX2ZlbmNlKHZtYSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1f b2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFuZSh2bWEpOwo+PiBAQCAtMTcxMTIsNyArMTcx MTIsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGludGVsX2Zy YW1lYnVmZmVyICppbnRlbF9mYiwKPj4gwqDCoMKgwqDCoCBpZiAoIWludGVsX2ZiLT5mcm9udGJ1 ZmZlcikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiDCoCAtwqDCoMKg IGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xv Y2sob2JqLCBOVUxMKTsKPj4gwqDCoMKgwqDCoCB0aWxpbmcgPSBpOTE1X2dlbV9vYmplY3RfZ2V0 X3RpbGluZyhvYmopOwo+PiDCoMKgwqDCoMKgIHN0cmlkZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRf c3RyaWRlKG9iaik7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NsaWVudF9i bHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jbGllbnRfYmx0LmMKPj4g aW5kZXggZDNhODZhNGQ1YzA0Li5jMTgyMDkxYzAwZmYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jbGllbnRfYmx0LmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NsaWVudF9ibHQuYwo+PiBAQCAtMjg2LDcgKzI4Niw3 IEBAIGludCBpOTE1X2dlbV9zY2hlZHVsZV9maWxsX3BhZ2VzX2JsdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+PiDCoMKgwqDCoMKgIGRtYV9mZW5jZV9pbml0KCZ3b3JrLT5kbWEs ICZjbGVhcl9wYWdlc193b3JrX29wcywgJmZlbmNlX2xvY2ssIDAsIDApOwo+PiDCoMKgwqDCoMKg IGk5MTVfc3dfZmVuY2VfaW5pdCgmd29yay0+d2FpdCwgY2xlYXJfcGFnZXNfd29ya19ub3RpZnkp Owo+PiDCoCAtwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7Cj4+ICvCoMKgwqAgaTkx NV9nZW1fb2JqZWN0X2xvY2sob2JqLCBOVUxMKTsKPj4gwqDCoMKgwqDCoCBlcnIgPSBpOTE1X3N3 X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKCZ3b3JrLT53YWl0LAo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2JqLT5iYXNlLnJlc3YsIE5V TEwsIHRydWUsIDAsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBJOTE1X0ZFTkNFX0dGUCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+PiBpbmRleCAzMGMyMjlmY2I0MDQuLmE5OTY1ODM2NDBl ZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRl eHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5j Cj4+IEBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgbHV0X2Nsb3NlKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVl Owo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4+IC3CoMKgwqDC oMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwo+PiArwqDCoMKgwqDCoMKgwqAgaTkx NV9nZW1fb2JqZWN0X2xvY2sob2JqLCBOVUxMKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGxpc3Rf Zm9yX2VhY2hfZW50cnkobHV0LCAmb2JqLT5sdXRfbGlzdCwgb2JqX2xpbmspIHsKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGx1dC0+Y3R4ICE9IGN0eCkKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9kbWFidWYuYwo+PiBpbmRleCAyNjc5MzgwMTU5ZmMuLjI3ZmRkYzIyYTdj NiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RtYWJ1 Zi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYwo+ PiBAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fYmVnaW5fY3B1X2FjY2Vz cyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwgZW51bSBkbWFfZGF0YV9kaXJlCj4+IMKgwqDCoMKg wqAgaWYgKGVycikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBlcnI7Cj4+IMKgIC3CoMKg wqAgZXJyID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShvYmopOwo+PiArwqDC oMKgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ludGVycnVwdGlibGUob2JqLCBOVUxMKTsK Pj4gwqDCoMKgwqDCoCBpZiAoZXJyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ IMKgIEBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIGludCBpOTE1X2dlbV9lbmRfY3B1X2FjY2Vz cyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwgZW51bSBkbWFfZGF0YV9kaXJlY3QKPj4gwqDCoMKg wqDCoCBpZiAoZXJyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGVycjsKPj4gwqAgLcKg wqDCoCBlcnIgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7Cj4+ICvC oMKgwqAgZXJyID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShvYmosIE5VTEwp Owo+PiDCoMKgwqDCoMKgIGlmIChlcnIpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsK Pj4gwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21h aW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYwo+PiBpbmRl eCA3Zjc2ZmM2OGY0OTguLmMwYWNmYzk3ZmFlMyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RvbWFpbi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYwo+PiBAQCAtMzIsNyArMzIsNyBAQCB2b2lkIGk5MTVf Z2VtX29iamVjdF9mbHVzaF9pZl9kaXNwbGF5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCj4+IMKgwqDCoMKgwqAgaWYgKCFpOTE1X2dlbV9vYmplY3RfaXNfZnJhbWVidWZmZXIob2Jq KSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gwqAgLcKgwqDCoCBpOTE1X2dlbV9v YmplY3RfbG9jayhvYmopOwo+PiArwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaiwgTlVM TCk7Cj4+IMKgwqDCoMKgwqAgX19pOTE1X2dlbV9vYmplY3RfZmx1c2hfZm9yX2Rpc3BsYXkob2Jq KTsKPj4gwqDCoMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7Cj4+IMKgIH0KPj4g QEAgLTE5Nyw3ICsxOTcsNyBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiDCoCAtwqDCoMKgIHJldCA9IGk5MTVf Z2VtX29iamVjdF9sb2NrX2ludGVycnVwdGlibGUob2JqKTsKPj4gK8KgwqDCoCByZXQgPSBpOTE1 X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaiwgTlVMTCk7Cj4+IMKgwqDCoMKgwqAg aWYgKHJldCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+IMKgIEBAIC01MzYs NyArNTM2LDcgQEAgaTkxNV9nZW1fc2V0X2RvbWFpbl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+PiDCoMKgwqDCoMKgIGlmIChlcnIpCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIG91dDsKPj4gwqAgLcKgwqDCoCBlcnIgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19p bnRlcnJ1cHRpYmxlKG9iaik7Cj4+ICvCoMKgwqAgZXJyID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tf aW50ZXJydXB0aWJsZShvYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGlmIChlcnIpCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIG91dF91bnBpbjsKPj4gwqAgQEAgLTU3Niw3ICs1NzYsNyBAQCBp bnQgaTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+PiDCoMKgwqDCoMKgIGlmICghaTkxNV9nZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFn ZShvYmopKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+IMKgIC3CoMKg wqAgcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShvYmopOwo+PiArwqDC oMKgIHJldCA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2ludGVycnVwdGlibGUob2JqLCBOVUxMKTsK Pj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsK Pj4gwqAgQEAgLTYzMCw3ICs2MzAsNyBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X3ByZXBhcmVfd3Jp dGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gwqDCoMKgwqDCoCBpZiAoIWk5 MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3BhZ2Uob2JqKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAtRU5PREVWOwo+PiDCoCAtwqDCoMKgIHJldCA9IGk5MTVfZ2VtX29iamVjdF9sb2Nr X2ludGVycnVwdGlibGUob2JqKTsKPj4gK8KgwqDCoCByZXQgPSBpOTE1X2dlbV9vYmplY3RfbG9j a19pbnRlcnJ1cHRpYmxlKG9iaiwgTlVMTCk7Cj4+IMKgwqDCoMKgwqAgaWYgKHJldCkKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+IMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBpbmRleCAyYjRjMjEwNjM4YzEuLjM5MWQy MjA1MWIyMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f ZXhlY2J1ZmZlci5jCj4+IEBAIC04MTMsNyArODEzLDcgQEAgc3RhdGljIGludCBfX2ViX2FkZF9s dXQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo ZXJyID09IDApIHsgLyogQW5kIG5vciBoYXMgdGhpcyBoYW5kbGUgKi8KPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2Jq Owo+PiDCoCAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmop Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmosIE5V TEwpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaWRyX2ZpbmQoJmViLT5maWxl LT5vYmplY3RfaWRyLCBoYW5kbGUpID09IG9iaikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGxpc3RfYWRkKCZsdXQtPm9ial9saW5rLCAmb2JqLT5sdXRfbGlzdCk7Cj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7Cj4+IEBAIC0xMDgzLDcgKzEwODMs NyBAQCBzdGF0aWMgdm9pZCAqcmVsb2NfaW9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICh1c2VfY3B1X3JlbG9jKGNhY2hlLCBvYmop KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gwqAgLcKgwqDC oMKgwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBp OTE1X2dlbV9vYmplY3RfbG9jayhvYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZXJy ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoZXJyKQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdC5jCj4+IGluZGV4IGI2ZWM1YjUwZDkzYi4uYjU5ZTJkNDBjMzQ3IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jCj4+IEBAIC0xMDgsNyArMTA4 LDcgQEAgdm9pZCBpOTE1X2dlbV9jbG9zZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpn ZW0sIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgaTkxNV9sdXRf aGFuZGxlICpsdXQsICpsbjsKPj4gwqDCoMKgwqDCoCBMSVNUX0hFQUQoY2xvc2UpOwo+PiDCoCAt wqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fb2Jq ZWN0X2xvY2sob2JqLCBOVUxMKTsKPj4gwqDCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUobHV0LCBsbiwgJm9iai0+bHV0X2xpc3QsIG9ial9saW5rKSB7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gbHV0LT5jdHg7Cj4+IMKgIGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKPj4gaW5kZXggMmZhYTQ4MWNj MThmLi41MTAzMDY3MjY5YjAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9vYmplY3QuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0LmgKPj4gQEAgLTExMCwyMCArMTEwLDQ0IEBAIGk5MTVfZ2VtX29iamVjdF9w dXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gwqAgwqAgI2RlZmluZSBhc3Nl cnRfb2JqZWN0X2hlbGQob2JqKSBkbWFfcmVzdl9hc3NlcnRfaGVsZCgob2JqKS0+YmFzZS5yZXN2 KQo+PiDCoCAtc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF9sb2NrKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICtzdGF0aWMgaW5saW5lIGludCBfX2k5MTVfZ2Vt X29iamVjdF9sb2NrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBpOTE1X2dlbV93d19jdHgg Knd3LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGlu dHIpCj4+IMKgIHsKPj4gLcKgwqDCoCBkbWFfcmVzdl9sb2NrKG9iai0+YmFzZS5yZXN2LCBOVUxM KTsKPj4gK8KgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgaWYgKGludHIpCj4+ICvCoMKg wqDCoMKgwqDCoCByZXQgPSBkbWFfcmVzdl9sb2NrX2ludGVycnVwdGlibGUob2JqLT5iYXNlLnJl c3YsIHd3ID8gJnd3LT5jdHggOiBOVUxMKTsKPj4gK8KgwqDCoCBlbHNlCj4+ICvCoMKgwqDCoMKg wqDCoCByZXQgPSBkbWFfcmVzdl9sb2NrKG9iai0+YmFzZS5yZXN2LCB3dyA/ICZ3dy0+Y3R4IDog TlVMTCk7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIXJldCAmJiB3dykKPj4gK8KgwqDCoMKgwqDCoMKg IGxpc3RfYWRkX3RhaWwoJm9iai0+b2JqX2xpbmssICZ3dy0+b2JqX2xpc3QpOwo+PiArwqDCoMKg IGlmIChyZXQgPT0gLUVBTFJFQURZKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gMDsKPj4gKwo+ PiArwqDCoMKgIGlmIChyZXQgPT0gLUVERUFETEspCj4+ICvCoMKgwqDCoMKgwqDCoCB3dy0+Y29u dGVuZGVkID0gb2JqOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIHJldDsKPgo+IEZlZWxzIGEgYml0 IG9uIHRoZSBsYXJnZSBzaWRlIGZvciBpbmxpbmUgbm93LCBubz8gUXVpdGUgYSBmZXcgY29uZGl0 aW9uYWxzLiBPciB5b3UgYXJlIGNvdW50aW5nIG9uIGNvbXBpbGVyIG9wdGltaXNhdGlvbiBiZWNh dXNlIHd3IGFuZCBpbnRyIGFyZSBwYXNzZWQgaW4gYXMgbW9zdGx5IGNvbnN0PwpTbGlnaHRseSwg bm90IHN1cmUgaWYgaXQncyByZWFsbHkgYSBwcm9ibGVtIGluIHByYWN0aWNlLiB3dyBpcyBlaXRo ZXIgbnVsbCBvciBhIHN0YWNrIHZhcmlhYmxlLCBzbyBmb3IgbnVsbCBpdCBzaG91bGQgYWxsIGdv IGF3YXkuCj4KPj4gwqAgfQo+PiDCoCAtc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX29iamVj dF90cnlsb2NrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICtzdGF0aWMgaW5s aW5lIGludCBpOTE1X2dlbV9vYmplY3RfbG9jayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCj4+IMKgIHsKPj4gLcKgwqDCoCByZXR1cm4gZG1hX3Jl c3ZfdHJ5bG9jayhvYmotPmJhc2UucmVzdik7Cj4+ICvCoMKgwqAgcmV0dXJuIF9faTkxNV9nZW1f b2JqZWN0X2xvY2sob2JqLCB3dywgd3cgJiYgd3ctPmludHIpOwo+PiDCoCB9Cj4+IMKgIC1zdGF0 aWMgaW5saW5lIGludAo+PiAtaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiArc3RhdGljIGlubGluZSBpbnQgaTkxNV9n ZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCj4+IMKgIHsKPj4gLcKgwqDCoCBy ZXR1cm4gZG1hX3Jlc3ZfbG9ja19pbnRlcnJ1cHRpYmxlKG9iai0+YmFzZS5yZXN2LCBOVUxMKTsK Pj4gK8KgwqDCoCBXQVJOX09OKHd3ICYmICF3dy0+aW50cik7Cj4+ICvCoMKgwqAgcmV0dXJuIF9f aTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqLCB3dywgdHJ1ZSk7Cj4KPiBJIHNlZSB0aGF0IHd3LT5p bnRyIGlzIHNldCBhdCBjdHggaW5pdCB0aW1lLiBBdCB3aGF0IHRpbWVzIGl0IGlzIGV4cGVjdGVk IHRoYXQgdGhlIGluZGl2aWR1YWwgbG9jayBjYWxscyB3b3VsZCBvdmVycmlkZSB0aGF0PwpOZXZl ci4gOikgSnVzdCBwb2xpdGVseSBhbGxvd2luZyBpdCB3aGVuIHJlcGxhY2luZyBjYWxscy4gQ291 bGQgYmUgcmVtb3ZlZCBhbmQgcmVwbGFjZWQgd2l0aCBsb2NrX3NpbmdsZV9pbnRlcnJ1cHRpYmxl IHdpdGhvdXQgd3cgY29udGV4dC4KPgo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wg aTkxNV9nZW1fb2JqZWN0X3RyeWxvY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK Pj4gK3sKPj4gK8KgwqDCoCByZXR1cm4gZG1hX3Jlc3ZfdHJ5bG9jayhvYmotPmJhc2UucmVzdik7 Cj4+IMKgIH0KPj4gwqAgwqAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bmxv Y2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAo+PiBpbmRleCBiMWY4MmExMWFl ZjIuLjM3NDBjMDA4MGUzOCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAo+PiBAQCAtMTIyLDYgKzEyMiwxNSBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4+IMKgwqDCoMKgwqDCoCAqLwo+PiDCoMKgwqDCoMKgIHN0 cnVjdCBsaXN0X2hlYWQgbHV0X2xpc3Q7Cj4+IMKgICvCoMKgwqAgLyoqCj4+ICvCoMKgwqDCoCAq IEBvYmpfbGluazogTGluayBpbnRvIEBpOTE1X2dlbV93d19jdHgub2JqX2xpc3QKPj4gK8KgwqDC oMKgICoKPj4gK8KgwqDCoMKgICogV2hlbiB3ZSBsb2NrIHRoaXMgb2JqZWN0IHRocm91Z2ggaTkx NV9nZW1fb2JqZWN0X2xvY2soKSB3aXRoIGEKPj4gK8KgwqDCoMKgICogY29udGV4dCwgd2UgYWRk IGl0IHRvIHRoZSBsaXN0IHRvIGVuc3VyZSB3ZSBjYW4gdW5sb2NrIGV2ZXJ5dGhpbmcKPj4gK8Kg wqDCoMKgICogd2hlbiBpOTE1X2dlbV93d19jdHhfYmFja29mZigpIG9yIGk5MTVfZ2VtX3d3X2N0 eF9maW5pKCkgYXJlIGNhbGxlZC4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgc3RydWN0IGxp c3RfaGVhZCBvYmpfbGluazsKPj4gKwo+PiDCoMKgwqDCoMKgIC8qKiBTdG9sZW4gbWVtb3J5IGZv ciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBiZWluZyBiYWNrZWQgYnkgc2htZW0uICovCj4+IMKg wqDCoMKgwqAgc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47Cj4+IMKgwqDCoMKgwqAgdW5pb24g ewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYwo+PiBpbmRleCAzZDIxNTE2 NGRkNWEuLjQwZDNlNDA1MDBmYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX3BtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX3BtLmMKPj4gQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2xhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmk5MTUtPm1tLm9ial9sb2NrLCBmbGFncyk7 Cj4+IMKgIC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaiwgTlVM TCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9XQVJOX09OKCZpOTE1LT5kcm0s Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3Nl dF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3RpbGluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX3RpbGluZy5jCj4+IGluZGV4IDAxNThlNDliZjliYi4uNjVmYmYyOWM0ODUy IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdGlsaW5n LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3RpbGluZy5jCj4+ IEBAIC0yNDksNyArMjQ5LDcgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90aWxpbmcoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gwqDCoMKgwqDCoMKgICogd2hpbHN0IGV4ZWN1dGlu ZyBhIGZlbmNlZCBjb21tYW5kIGZvciBhbiB1bnRpbGVkIG9iamVjdC4KPj4gwqDCoMKgwqDCoMKg ICovCj4+IMKgIC3CoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKPj4gK8KgwqDCoCBp OTE1X2dlbV9vYmplY3RfbG9jayhvYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGlmIChpOTE1X2dl bV9vYmplY3RfaXNfZnJhbWVidWZmZXIob2JqKSkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaTkx NV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F QlVTWTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMv aHVnZV9wYWdlcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3Bh Z2VzLmMKPj4gaW5kZXggODI5MWVkZTY5MDJjLi5lYjIwMTFjY2I5MmIgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4+IEBAIC05 NDcsNyArOTQ3LDcgQEAgc3RhdGljIGludCBncHVfd3JpdGUoc3RydWN0IGludGVsX2NvbnRleHQg KmNlLAo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgaW50IGVycjsKPj4gwqAgLcKgwqDCoCBpOTE1X2dl bV9vYmplY3RfbG9jayh2bWEtPm9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2so dm1hLT5vYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRf dG9fZ3R0X2RvbWFpbih2bWEtPm9iaiwgdHJ1ZSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1fb2Jq ZWN0X3VubG9jayh2bWEtPm9iaik7Cj4+IMKgwqDCoMKgwqAgaWYgKGVycikKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50X2Js dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRf Ymx0LmMKPj4gaW5kZXggMjk5YzI5ZTlhZDg2Li40ZTM2ZDQ4OTdlYTYgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50X2JsdC5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xp ZW50X2JsdC5jCj4+IEBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBpbnQgX19pZ3RfY2xpZW50X2Zp bGwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKGVycikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfdW5waW47Cj4+ IMKgIC3CoMKgwqDCoMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwo+PiArwqDCoMKg wqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqLCBOVUxMKTsKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihvYmosIGZhbHNl KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChlcnIpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+PiBpbmRleCA4N2Q3 ZDhhYTA4MGYuLjFkZTI5NTliMTUzYyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4+IEBAIC04Miw3 ICs4Miw3IEBAIHN0YXRpYyBpbnQgZ3R0X3NldChzdHJ1Y3QgY29udGV4dCAqY3R4LCB1bnNpZ25l ZCBsb25nIG9mZnNldCwgdTMyIHYpCj4+IMKgwqDCoMKgwqAgdTMyIF9faW9tZW0gKm1hcDsKPj4g wqDCoMKgwqDCoCBpbnQgZXJyID0gMDsKPj4gwqAgLcKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9j ayhjdHgtPm9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2soY3R4LT5vYmosIE5V TEwpOwo+PiDCoMKgwqDCoMKgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFp bihjdHgtPm9iaiwgdHJ1ZSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhj dHgtPm9iaik7Cj4+IMKgwqDCoMKgwqAgaWYgKGVycikKPj4gQEAgLTExNSw3ICsxMTUsNyBAQCBz dGF0aWMgaW50IGd0dF9nZXQoc3RydWN0IGNvbnRleHQgKmN0eCwgdW5zaWduZWQgbG9uZyBvZmZz ZXQsIHUzMiAqdikKPj4gwqDCoMKgwqDCoCB1MzIgX19pb21lbSAqbWFwOwo+PiDCoMKgwqDCoMKg IGludCBlcnIgPSAwOwo+PiDCoCAtwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKGN0eC0+b2Jq KTsKPj4gK8KgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhjdHgtPm9iaiwgTlVMTCk7Cj4+IMKg wqDCoMKgwqAgZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGN0eC0+b2Jq LCBmYWxzZSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhjdHgtPm9iaik7 Cj4+IMKgwqDCoMKgwqAgaWYgKGVycikKPj4gQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgaW50 IHdjX3NldChzdHJ1Y3QgY29udGV4dCAqY3R4LCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdTMyIHYp Cj4+IMKgwqDCoMKgwqAgdTMyICptYXA7Cj4+IMKgwqDCoMKgwqAgaW50IGVycjsKPj4gwqAgLcKg wqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhjdHgtPm9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1f b2JqZWN0X2xvY2soY3R4LT5vYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGVyciA9IGk5MTVfZ2Vt X29iamVjdF9zZXRfdG9fd2NfZG9tYWluKGN0eC0+b2JqLCB0cnVlKTsKPj4gwqDCoMKgwqDCoCBp OTE1X2dlbV9vYmplY3RfdW5sb2NrKGN0eC0+b2JqKTsKPj4gwqDCoMKgwqDCoCBpZiAoZXJyKQo+ PiBAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBpbnQgd2NfZ2V0KHN0cnVjdCBjb250ZXh0ICpj dHgsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1MzIgKnYpCj4+IMKgwqDCoMKgwqAgdTMyICptYXA7 Cj4+IMKgwqDCoMKgwqAgaW50IGVycjsKPj4gwqAgLcKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9j ayhjdHgtPm9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2soY3R4LT5vYmosIE5V TEwpOwo+PiDCoMKgwqDCoMKgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fd2NfZG9tYWlu KGN0eC0+b2JqLCBmYWxzZSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhj dHgtPm9iaik7Cj4+IMKgwqDCoMKgwqAgaWYgKGVycikKPj4gQEAgLTE5Myw3ICsxOTMsNyBAQCBz dGF0aWMgaW50IGdwdV9zZXQoc3RydWN0IGNvbnRleHQgKmN0eCwgdW5zaWduZWQgbG9uZyBvZmZz ZXQsIHUzMiB2KQo+PiDCoMKgwqDCoMKgIHUzMiAqY3M7Cj4+IMKgwqDCoMKgwqAgaW50IGVycjsK Pj4gwqAgLcKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhjdHgtPm9iaik7Cj4+ICvCoMKgwqAg aTkxNV9nZW1fb2JqZWN0X2xvY2soY3R4LT5vYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGVyciA9 IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihjdHgtPm9iaiwgdHJ1ZSk7Cj4+IMKg wqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhjdHgtPm9iaik7Cj4+IMKgwqDCoMKgwqAg aWYgKGVycikKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVz dHMvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb250ZXh0LmMKPj4gaW5kZXggYjgxOTc4ODkwNjQxLi40MzhjMTVlZjIxODQg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMv aTkxNV9nZW1fY29udGV4dC5jCj4+IEBAIC05NTAsNyArOTUwLDcgQEAgZW1pdF9ycGNzX3F1ZXJ5 KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+IMKgwqDCoMKgwqAgaWYgKElTX0VS Uih2bWEpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIodm1hKTsKPj4gwqAg LcKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwo+PiArwqDCoMKgIGk5MTVfZ2VtX29i amVjdF9sb2NrKG9iaiwgTlVMTCk7Cj4+IMKgwqDCoMKgwqAgZXJyID0gaTkxNV9nZW1fb2JqZWN0 X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOwo+PiDCoMKgwqDCoMKgIGk5MTVfZ2VtX29i amVjdF91bmxvY2sob2JqKTsKPj4gwqDCoMKgwqDCoCBpZiAoZXJyKQo+PiBAQCAtMTcwNiw3ICsx NzA2LDcgQEAgc3RhdGljIGludCByZWFkX2Zyb21fc2NyYXRjaChzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAo+PiDCoCDCoMKgwqDCoMKgIGk5MTVfcmVxdWVzdF9hZGQocnEpOwo+PiDCoCAt wqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fb2Jq ZWN0X2xvY2sob2JqLCBOVUxMKTsKPj4gwqDCoMKgwqDCoCBlcnIgPSBpOTE1X2dlbV9vYmplY3Rf c2V0X3RvX2NwdV9kb21haW4ob2JqLCBmYWxzZSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1fb2Jq ZWN0X3VubG9jayhvYmopOwo+PiDCoMKgwqDCoMKgIGlmIChlcnIpCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCj4+IGluZGV4IDlj NzQwMmNlNWJmOS4uOWZiOTVhNDViY2FkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwo+PiBAQCAtMTAzLDcgKzEwMyw3 IEBAIHN0YXRpYyBpbnQgY2hlY2tfcGFydGlhbF9tYXBwaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4+IMKgwqDCoMKgwqAgR0VNX0JVR19PTihpOTE1X2dlbV9vYmplY3RfZ2V0 X3RpbGluZyhvYmopICE9IHRpbGUtPnRpbGluZyk7Cj4+IMKgwqDCoMKgwqAgR0VNX0JVR19PTihp OTE1X2dlbV9vYmplY3RfZ2V0X3N0cmlkZShvYmopICE9IHRpbGUtPnN0cmlkZSk7Cj4+IMKgIC3C oMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKPj4gK8KgwqDCoCBpOTE1X2dlbV9vYmpl Y3RfbG9jayhvYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9z ZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOwo+PiDCoMKgwqDCoMKgIGk5MTVfZ2VtX29iamVj dF91bmxvY2sob2JqKTsKPj4gwqDCoMKgwqDCoCBpZiAoZXJyKSB7Cj4+IEBAIC0xODgsNyArMTg4 LDcgQEAgc3RhdGljIGludCBjaGVja19wYXJ0aWFsX21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCj4+IMKgwqDCoMKgwqAgR0VNX0JVR19PTihpOTE1X2dlbV9vYmplY3Rf Z2V0X3RpbGluZyhvYmopICE9IHRpbGUtPnRpbGluZyk7Cj4+IMKgwqDCoMKgwqAgR0VNX0JVR19P TihpOTE1X2dlbV9vYmplY3RfZ2V0X3N0cmlkZShvYmopICE9IHRpbGUtPnN0cmlkZSk7Cj4+IMKg IC3CoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKPj4gK8KgwqDCoCBpOTE1X2dlbV9v YmplY3RfbG9jayhvYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGVyciA9IGk5MTVfZ2VtX29iamVj dF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOwo+PiDCoMKgwqDCoMKgIGk5MTVfZ2VtX29i amVjdF91bmxvY2sob2JqKTsKPj4gwqDCoMKgwqDCoCBpZiAoZXJyKSB7Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fcGh5cy5jCj4+IGluZGV4 IDM0OTMyODcxYjNhNS4uYTk0MjQzZGM0YzVjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX3BoeXMuYwo+PiBAQCAtNDQsNyArNDQs NyBAQCBzdGF0aWMgaW50IG1vY2tfcGh5c19vYmplY3Qodm9pZCAqYXJnKQo+PiDCoMKgwqDCoMKg IH0KPj4gwqAgwqDCoMKgwqDCoCAvKiBNYWtlIHRoZSBvYmplY3QgZGlydHkgc28gdGhhdCBwdXRf cGFnZXMgbXVzdCBkbyBjb3B5IGJhY2sgdGhlIGRhdGEgKi8KPj4gLcKgwqDCoCBpOTE1X2dlbV9v YmplY3RfbG9jayhvYmopOwo+PiArwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaiwgTlVM TCk7Cj4+IMKgwqDCoMKgwqAgZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWlu KG9iaiwgdHJ1ZSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwo+ PiDCoMKgwqDCoMKgIGlmIChlcnIpIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF93b3JrYXJvdW5kcy5jCj4+IGluZGV4IGZlYmM5ZTY2OTJiYS4uNjFhMDUzMmQwZjNk IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJv dW5kcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91 bmRzLmMKPj4gQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgaW50IGNoZWNrX3doaXRlbGlzdChz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IFBUUl9FUlIocmVzdWx0cyk7Cj4+IMKgIMKgwqDCoMKgwqAgZXJyID0gMDsKPj4gLcKgwqDCoCBp OTE1X2dlbV9vYmplY3RfbG9jayhyZXN1bHRzKTsKPj4gK8KgwqDCoCBpOTE1X2dlbV9vYmplY3Rf bG9jayhyZXN1bHRzLCBOVUxMKTsKPj4gwqDCoMKgwqDCoCBpbnRlbF93ZWRnZV9vbl90aW1lb3V0 KCZ3ZWRnZSwgZW5naW5lLT5ndCwgSFogLyA1KSAvKiBzYWZldHkgbmV0ISAqLwo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKHJlc3Vs dHMsIGZhbHNlKTsKPj4gwqDCoMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfdW5sb2NrKHJlc3VsdHMp Owo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9jbWRfcGFyc2VyLmMKPj4gaW5kZXggZjE5NDA5Mzky NjBhLi45NDNjOGQyMzI3MDMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9jbWRfcGFyc2VyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJz ZXIuYwo+PiBAQCAtMjk4Miw3ICsyOTgyLDcgQEAgc3RhdGljIGludCBzaGFkb3dfaW5kaXJlY3Rf Y3R4KHN0cnVjdCBpbnRlbF9zaGFkb3dfd2FfY3R4ICp3YV9jdHgpCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIHB1dF9vYmo7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCAtwqDCoMKgIGk5MTVfZ2Vt X29iamVjdF9sb2NrKG9iaik7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqLCBO VUxMKTsKPj4gwqDCoMKgwqDCoCByZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21h aW4ob2JqLCBmYWxzZSk7Cj4+IMKgwqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmop Owo+PiDCoMKgwqDCoMKgIGlmIChyZXQpIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IGlu ZGV4IDlhYTMwNjZjYjc1ZC4uMWUwNjc1MjgzNWU1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPj4gQEAgLTQyMCw3ICs0MjAsNyBAQCBpOTE1X2dlbV9ndHRfcHJlYWQoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIEdFTV9CVUdfT04o IWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmbm9kZSkpOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgLcKg wqDCoCByZXQgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iaik7Cj4+ICvC oMKgwqAgcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShvYmosIE5VTEwp Owo+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dF91 bnBpbjsKPj4gwqAgQEAgLTYxOSw3ICs2MTksNyBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIEdF TV9CVUdfT04oIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmbm9kZSkpOwo+PiDCoMKgwqDCoMKgIH0K Pj4gwqAgLcKgwqDCoCByZXQgPSBpOTE1X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9i aik7Cj4+ICvCoMKgwqAgcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2xvY2tfaW50ZXJydXB0aWJsZShv YmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBn b3RvIG91dF91bnBpbjsKPj4gwqAgQEAgLTEyOTAsNyArMTI5MCw3IEBAIGludCBpOTE1X2dlbV9m cmVlemVfbGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPj4gwqDCoMKgwqDCoCBp OTE1X2dlbV9kcmFpbl9mcmVlZF9vYmplY3RzKGk5MTUpOwo+PiDCoCDCoMKgwqDCoMKgIGxpc3Rf Zm9yX2VhY2hfZW50cnkob2JqLCAmaTkxNS0+bW0uc2hyaW5rX2xpc3QsIG1tLmxpbmspIHsKPj4g LcKgwqDCoMKgwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaik7Cj4+ICvCoMKgwqDCoMKg wqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgZHJtX1dBUk5fT04oJmk5MTUtPmRybSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCB0cnVlKSk7Cj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9iaik7Cj4+IEBAIC0x MzQ0LDYgKzEzNDQsNTIgQEAgaW50IGk5MTVfZ2VtX29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPj4gwqDCoMKgwqDCoCByZXR1cm4gcmV0 Owo+PiDCoCB9Cj4+IMKgICt2b2lkIGk5MTVfZ2VtX3d3X2N0eF9pbml0KHN0cnVjdCBpOTE1X2dl bV93d19jdHggKnd3LCBib29sIGludHIpCj4+ICt7Cj4+ICvCoMKgwqAgd3dfYWNxdWlyZV9pbml0 KCZ3dy0+Y3R4LCAmcmVzZXJ2YXRpb25fd3dfY2xhc3MpOwo+PiArwqDCoMKgIElOSVRfTElTVF9I RUFEKCZ3dy0+b2JqX2xpc3QpOwo+PiArwqDCoMKgIHd3LT5pbnRyID0gaW50cjsKPj4gK8KgwqDC oCB3dy0+Y29udGVuZGVkID0gTlVMTDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaTkxNV9n ZW1fd3dfY3R4X3VubG9ja19hbGwoc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCj4+ICt7Cj4+ ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPj4gKwo+PiArwqDCoMKg IHdoaWxlICgob2JqID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZ3dy0+b2JqX2xpc3QsIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBvYmpfbGluaykpKSB7Cj4KPiBJIHdhbnRlZCB0byBh c2sgd2hldGhlciB5b3UgdGhpbmsgdGhpcyBpcyBmYXN0ZXIgdGhhbiBmb3JfZWFjaF9saXN0X2Vu dHJ5LCBidXQgdGhlbiBhbHNvIHJlYWxpemVkIHlvdSBjYW4gb3B0aW1pc2UgZnVydGhlciBieSBu b3QgYm90aGVyaW5nIHRvIGxpc3RfZGVsIChzaW5jZSB5b3Uga25vdyB0aGUgd2hvbGUgbGlzdCBp cyBnb2luZyBhd2F5KS4gSWYgeW91IGFyZSBub3QgYWxsb3dpbmcgd3cgY3R4IHJldXNlIHlvdSBk b24ndCBldmVuIG5lZWQgdG8gcmUtaW5pdCB0aGUgbGlzdF9oZWFkIGF0IHRoZSBlbmQuCj4KPj4g K8KgwqDCoMKgwqDCoMKgIGxpc3RfZGVsKCZvYmotPm9ial9saW5rKTsKPj4gK8KgwqDCoMKgwqDC oMKgIGk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKPj4gK8KgwqDCoCB9Cj4+ICt9Cj4+ICsK Pj4gK3ZvaWQgaTkxNV9nZW1fd3dfY3R4X2Zpbmkoc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cp Cj4+ICt7Cj4+ICvCoMKgwqAgaTkxNV9nZW1fd3dfY3R4X3VubG9ja19hbGwod3cpOwo+PiArwqDC oMKgIFdBUk5fT04od3ctPmNvbnRlbmRlZCk7Cj4KPiBVbmxlc3MgSSBhbSBtaXNzaW5nIHNvbWV0 aGluZyB0aGlzIGZlZWxzIGxpa2UgYSBHRU1fQlVHX09OIGNvbmRpdGlvbiAodHJhbnNsYXRlZDog d2Ugc2hvdWxkIGJlIGNvbmZpZGVudCBhZnRlciB0ZXN0aW5nIGl0IGlzIGltcG9zc2libGUgdG8g aGl0KS4KPgo+IE9yIGl0IGlzIGFsbG93ZWQgdG8gbm90IHRyeSB0aGUgYmFja29mZiBvbiAtRURF QURMSz8gQmFja29mZiBpcyB0aGUgb25seSBwbGFjZSB3aGljaCByZXNldHMgdGhlIHd3LT5jb250 ZW5kZWQsIHJpZ2h0PyBJbiB0aGlzIGNhc2UgV0FSTl9PTiB3b3VsZCBiZSB3cm9uZywgYnV0IHlv dSBwcm9iYWJseSBkaWQgbm90IHdlbnQgZm9yIHRoaXMgZGVzaWduLiBTaG91bGQgaXQgYmUgc3Vw cG9ydGVkPwo+Cj4+ICvCoMKgwqAgd3dfYWNxdWlyZV9maW5pKCZ3dy0+Y3R4KTsKPj4gK30KPj4g Kwo+PiAraW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV93d19jdHhfYmFja29mZihzdHJ1Y3QgaTkx NV9nZW1fd3dfY3R4ICp3dykKPj4gK3sKPj4gK8KgwqDCoCBpbnQgcmV0ID0gMDsKPj4gKwo+PiAr wqDCoMKgIGlmIChXQVJOX09OKCF3dy0+Y29udGVuZGVkKSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiAtRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAgaTkxNV9nZW1fd3dfY3R4X3VubG9ja19hbGwo d3cpOwo+PiArwqDCoMKgIGlmICh3dy0+aW50cikKPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IGRt YV9yZXN2X2xvY2tfc2xvd19pbnRlcnJ1cHRpYmxlKHd3LT5jb250ZW5kZWQtPmJhc2UucmVzdiwg Jnd3LT5jdHgpOwo+PiArwqDCoMKgIGVsc2UKPj4gK8KgwqDCoMKgwqDCoMKgIGRtYV9yZXN2X2xv Y2tfc2xvdyh3dy0+Y29udGVuZGVkLT5iYXNlLnJlc3YsICZ3dy0+Y3R4KTsKPj4gKwo+PiArwqDC oMKgIGlmICghcmV0KQo+PiArwqDCoMKgwqDCoMKgwqAgbGlzdF9hZGRfdGFpbCgmd3ctPmNvbnRl bmRlZC0+b2JqX2xpbmssICZ3dy0+b2JqX2xpc3QpOwo+PiArCj4+ICvCoMKgwqAgd3ctPmNvbnRl bmRlZCA9IE5VTEw7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+IMKg ICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKPj4gwqAgI2luY2x1ZGUg InNlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyIKPj4gwqAgI2luY2x1ZGUgInNlbGZ0ZXN0cy9p OTE1X2dlbS5jIgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmgKPj4gaW5kZXggMTc1M2M4NGQ2YzBk Li45ODg3NTVkYmY0YmUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uaAo+PiBAQCAtMTE2 LDQgKzExNiwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX190YXNrbGV0X2lzX3NjaGVkdWxlZChz dHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCj4+IMKgwqDCoMKgwqAgcmV0dXJuIHRlc3RfYml0KFRB U0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSk7Cj4+IMKgIH0KPj4gwqAgK3N0cnVjdCBpOTE1 X2dlbV93d19jdHggewo+PiArwqDCoMKgIHN0cnVjdCB3d19hY3F1aXJlX2N0eCBjdHg7Cj4+ICvC oMKgwqAgc3RydWN0IGxpc3RfaGVhZCBvYmpfbGlzdDsKPj4gK8KgwqDCoCBib29sIGludHI7Cj4+ ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmNvbnRlbmRlZDsKPj4gK307Cj4+ ICsKPj4gK3ZvaWQgaTkxNV9nZW1fd3dfY3R4X2luaXQoc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAq Y3R4LCBib29sIGludHIpOwo+PiArdm9pZCBpOTE1X2dlbV93d19jdHhfZmluaShzdHJ1Y3QgaTkx NV9nZW1fd3dfY3R4ICpjdHgpOwo+PiAraW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV93d19jdHhf YmFja29mZihzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICpjdHgpOwo+PiArCj4+IMKgICNlbmRpZiAv KiBfX0k5MTVfR0VNX0hfXyAqLwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9nZW0uYwo+PiBpbmRleCA4OGQ0MDBiOWRmODguLjIzYTYxMzJjNWY0ZSAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtLmMKPj4gQEAgLTE5OSwxMSArMTk5 LDUyIEBAIHN0YXRpYyBpbnQgaWd0X2dlbV9oaWJlcm5hdGUodm9pZCAqYXJnKQo+PiDCoMKgwqDC oMKgIHJldHVybiBlcnI7Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyBpbnQgaWd0X2dlbV93d19jdHgo dm9pZCAqYXJnKQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gYXJnOwo+PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosICpvYmoy Owo+PiArwqDCoMKgIHN0cnVjdCBpOTE1X2dlbV93d19jdHggd3c7Cj4+ICvCoMKgwqAgaW50IGVy ciA9IDA7Cj4+ICsKPj4gK8KgwqDCoCBvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVy bmFsKGk5MTUsIFBBR0VfU0laRSk7Cj4+ICvCoMKgwqAgaWYgKElTX0VSUihvYmopKQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIob2JqKTsKPj4gKwo+PiArwqDCoMKgIG9iajIgPSBp OTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIFBBR0VfU0laRSk7Cj4+ICvCoMKg wqAgaWYgKElTX0VSUihvYmopKSB7Cj4KPiBXcm9uZyBvYmogXl5eIHZ2di4KPgo+PiArwqDCoMKg wqDCoMKgwqAgZXJyID0gUFRSX0VSUihvYmopOwo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBwdXQx Owo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGk5MTVfZ2VtX3d3X2N0eF9pbml0KCZ3dywg dHJ1ZSk7Cj4KPiBOZWVkIHRvIGV4cGFuZCB3aXRoIG5vbi1pbnRlcnJ1cHRpYmxlLCBpbnRlcnJ1 cHRpYmxlIGFuZCBtaXhlZC4KPgo+PiArcmV0cnk6Cj4+ICvCoMKgwqAgLyogTG9jayB0aGUgb2Jq ZWN0cywgdHdpY2UgZm9yIGdvb2QgbWVhc3VyZSAoLUVBTFJFQURZIGhhbmRsaW5nKSAqLwo+PiAr wqDCoMKgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaiwgJnd3KTsKPj4gK8KgwqDCoCBp ZiAoIWVycikKPj4gK8KgwqDCoMKgwqDCoMKgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9sb2NrX2lu dGVycnVwdGlibGUob2JqLCAmd3cpOwo+Cj4gVGhpcyBpcyAtRUFMUkVBRFkgb24gdGhlIDFzdCBw YXNzLgo+Cj4+ICvCoMKgwqAgaWYgKCFlcnIpCj4+ICvCoMKgwqDCoMKgwqDCoCBlcnIgPSBpOTE1 X2dlbV9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKG9iajIsICZ3dyk7Cj4+ICvCoMKgwqAgaWYg KCFlcnIpCj4+ICvCoMKgwqDCoMKgwqDCoCBlcnIgPSBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmoy LCAmd3cpOwo+Cj4gQW5kIHRoaXMgaXMgLUVBTFJFQURZIGFnYWluPwo+Cj4+ICsKPj4gK8KgwqDC oCBpZiAoZXJyID09IC1FREVBRExLKSB7Cj4KPiBIb3cgZG8gd2UgZ2V0IGhlcmUgd2l0aCBhIHNp bmdsZSBsb2NraW5nIGNvbnRleHQ/Cj4KPj4gK8KgwqDCoMKgwqDCoMKgIGVyciA9IGk5MTVfZ2Vt X3d3X2N0eF9iYWNrb2ZmKCZ3dyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIWVycikKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byByZXRyeTsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAg aTkxNV9nZW1fd3dfY3R4X2ZpbmkoJnd3KTsKPj4gK8KgwqDCoCBpOTE1X2dlbV9vYmplY3RfcHV0 KG9iajIpOwo+PiArcHV0MToKPj4gK8KgwqDCoCBpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4+ ICvCoMKgwqAgcmV0dXJuIGVycjsKPj4gK30KPj4gKwo+PiDCoCBpbnQgaTkxNV9nZW1fbGl2ZV9z ZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4+IMKgIHsKPj4gwqDCoMKg wqDCoCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgU1VCVEVTVChpZ3RfZ2VtX3N1c3BlbmQpLAo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgU1VCVEVTVChpZ3RfZ2VtX2hpYmVybmF0ZSksCj4+ICvCoMKgwqDCoMKgwqDCoCBTVUJU RVNUKGlndF9nZW1fd3dfY3R4KSwKPj4gwqDCoMKgwqDCoCB9Owo+PiDCoCDCoMKgwqDCoMKgIGlm IChpbnRlbF9ndF9pc193ZWRnZWQoJmk5MTUtPmd0KSkKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfdm1hLmMKPj4gaW5kZXggYWY4OWM3ZmM4ZjU5Li44OGM1ZTlhY2I4NGMg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jCj4+IEBA IC04OTIsNyArODkyLDcgQEAgc3RhdGljIGludCBpZ3Rfdm1hX3JlbWFwcGVkX2d0dCh2b2lkICph cmcpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCB4LCB5Owo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgZXJyOwo+PiDCoCAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBlcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0 cnVlKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VubG9j ayhvYmopOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZXJyKQo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMK Pj4gaW5kZXggNmU4MGQ5OTA0OGU0Li45NTdhN2E1MmRlZjcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYwo+PiBA QCAtNTA5LDcgKzUwOSw3IEBAIHN0YXRpYyBpbnQgaWd0X2xtZW1fd3JpdGVfY3B1KHZvaWQgKmFy ZykKPj4gwqDCoMKgwqDCoCBpZiAoZXJyKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXRf dW5waW47Cj4+IMKgIC3CoMKgwqAgaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKPj4gK8KgwqDC oCBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmosIE5VTEwpOwo+PiDCoMKgwqDCoMKgIGVyciA9IGk5 MTVfZ2VtX29iamVjdF9zZXRfdG9fd2NfZG9tYWluKG9iaiwgdHJ1ZSk7Cj4+IMKgwqDCoMKgwqAg aTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwo+PiDCoMKgwqDCoMKgIGlmIChlcnIpCj4+Cj4K PiBSZWdhcmRzLAo+Cj4gVHZydGtvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==