From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 5/6] drm/i915: enable scrambling Date: Thu, 23 Feb 2017 15:21:35 +0200 Message-ID: <20170223132135.GV31595@intel.com> References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-6-git-send-email-shashank.sharma@intel.com> <20170222172954.GM31595@intel.com> <548317e5-2fab-9832-142f-581be31aac39@intel.com> <1487836997.2361.2.camel@gmail.com> <1487855260.3385.6.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1487855260.3385.6.camel@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ander Conselvan De Oliveira Cc: jose.abreu@synopsys.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBGZWIgMjMsIDIwMTcgYXQgMDM6MDc6NDBQTSArMDIwMCwgQW5kZXIgQ29uc2VsdmFu IERlIE9saXZlaXJhIHdyb3RlOgo+IE9uIFRodSwgMjAxNy0wMi0yMyBhdCAxNjozMyArMDUzMCwg U2hhcm1hLCBTaGFzaGFuayB3cm90ZToKPiA+IFRoYW5rcyBmb3IgdGhlIHJldmlldyBBbmRlciwg bXkgY29tbWVudHMsIGlubGluZS4KPiA+IAo+ID4gCj4gPiBSZWdhcmRzCj4gPiAKPiA+IFNoYXNo YW5rCj4gPiAKPiA+IAo+ID4gT24gMi8yMy8yMDE3IDE6MzMgUE0sIEFuZGVyIENvbnNlbHZhbiBE ZSBPbGl2ZWlyYSB3cm90ZToKPiA+ID4gT24gVGh1LCAyMDE3LTAyLTIzIGF0IDEwOjAxICswNTMw LCBTaGFybWEsIFNoYXNoYW5rIHdyb3RlOgo+ID4gPiA+IFJlZ2FyZHMKPiA+ID4gPiAKPiA+ID4g PiBTaGFzaGFuawo+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IE9uIDIvMjIvMjAxNyAxMDo1OSBQ TSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiA+ID4gT24gV2VkLCBGZWIgMjIsIDIwMTcg YXQgMDY6NDg6MzBQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1hIHdyb3RlOgo+ID4gPiA+ID4gPiBH ZW1pbmlsYWtlIHBsYXRmb3JtIHNwb3J0cyBhIG5hdGl2ZSBIRE1JIDIuMCBjb250cm9sbGVyLCBh bmQgaXMKPiA+ID4gPiA+ID4gY2FwYWJsZSBvZiBkcml2aW5nIHBpeGVsLWNsb2NrcyB1cHRvIDU5 NE1oei4gSERNSSAyLjAgc3BlYwo+ID4gPiA+ID4gPiBtZW5kYXRlcyBzY3JhbWJsaW5nIGZvciB0 aGVzZSBoaWdoZXIgY2xvY2tzLCBmb3IgcmVkdWNlZCBSRiBmb290cHJpbnQuCj4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiBUaGlzIHBhdGNoIGNoZWNrcyBpZiB0aGUgbW9uaXRvciBzdXBwb3J0cyBz Y3JhbWJsaW5nLCBhbmQgaWYgcmVxdWlyZWQsCj4gPiA+ID4gPiA+IGVuYWJsZXMgaXQgZHVyaW5n IHRoZSBtb2Rlc2V0Lgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gVjI6IEFkZHJlc3NlZCByZXZp ZXcgY29tbWVudHMgZnJvbSBWaWxsZToKPiA+ID4gPiA+ID4gLSBEbyBub3QgdHJhY2sgc2NyYW1i bGluZyBzdGF0dXMgaW4gRFJNIGxheWVyLCB0cmFjayBzb21ld2hlcmUgaW4KPiA+ID4gPiA+ID4g ICAgIGRyaXZlciBsaWtlIGluIGludGVsX2NydGNfc3RhdGUuCj4gPiA+ID4gPiA+IC0gRG9uJ3Qg dGFsayB0byBtb25pdG9yIGF0IHN1Y2ggYSBsb3cgbGF5ZXIsIHNldCBtb25pdG9yIHNjcmFtYmxp bmcKPiA+ID4gPiA+ID4gICAgIGluIGludGVsX2VuYWJsZV9kZGkoKSBiZWZvcmUgZW5hYmxpbmcg dGhlIHBvcnQuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBWMzogQWRkcmVzc2VkIHJldmlldyBj b21tZW50cyBmcm9tIEphbmkKPiA+ID4gPiA+ID4gLSBJbiBjb21tZW50cywgZnVuY3Rpb24gbmFt ZXMsIHVzZSAic2luayIgaW5zdGVhZCBvZiAibW9uaXRvciIsCj4gPiA+ID4gPiA+ICAgICBzbyB0 aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBjb3VsZCBiZSBjbG9zZSB0byB0aGUgbGFuZ3VhZ2Ugb2YK PiA+ID4gPiA+ID4gICAgIEhETUkgc3BlYy4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFY0OiBB ZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnQgZnJvbSBNYWFydGVuCj4gPiA+ID4gPiA+IC0gc2NyYW1i bGluZyAtPiBoZG1pX3NjcmFtYmxpbmcKPiA+ID4gPiA+ID4gICAgIGhpZ2hfdG1kc19jbG9ja19y YXRpbyAtPiBoZG1pX2hpZ2hfdG1kc19jbG9ja19yYXRpbwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwu Y29tPgo+ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaCAgIHwgICA0ICsrCj4gPiA+ID4gPiA+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jICB8ICAyOCArKysrKysrKysrCj4gPiA+ID4gPiA+ICAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAxNCArKysrKwo+ID4gPiA+ID4gPiAgICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiA+ID4gPiA+ID4gICAgNCBmaWxlcyBjaGFuZ2VkLCAxNTQgaW5zZXJ0 aW9ucygrKQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4g PiA+ID4gPiA+IGluZGV4IDE0MWE1YzEuLjgxY2YxMGIgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+ID4gPiBAQCAtNzgxOSw3ICs3ODE5LDEx IEBAIGVudW0gewo+ID4gPiA+ID4gPiAgICAjZGVmaW5lICBUUkFOU19ERElfRURQX0lOUFVUX0Jf T05PRkYJKDU8PDEyKQo+ID4gPiA+ID4gPiAgICAjZGVmaW5lICBUUkFOU19ERElfRURQX0lOUFVU X0NfT05PRkYJKDY8PDEyKQo+ID4gPiA+ID4gPiAgICAjZGVmaW5lICBUUkFOU19ERElfRFBfVkNf UEFZTE9BRF9BTExPQwkoMTw8OCkKPiA+ID4gPiA+ID4gKyNkZWZpbmUgIFRSQU5TX0RESV9IRE1J X1NDUkFNQkxFUl9DVFNfRU5BQkxFICgxPDw3KQo+ID4gPiA+ID4gPiArI2RlZmluZSAgVFJBTlNf RERJX0hETUlfU0NSQU1CTEVSX1JFU0VUX0ZSRVEgKDE8PDYpCj4gPiA+ID4gPiA+ICAgICNkZWZp bmUgIFRSQU5TX0RESV9CRklfRU5BQkxFCQkoMTw8NCkKPiA+ID4gPiA+ID4gKyNkZWZpbmUgIFRS QU5TX0RESV9ISUdIX1RNRFNfQ0hBUl9SQVRFCSgxPDw0KQo+ID4gPiA+ID4gPiArI2RlZmluZSAg VFJBTlNfRERJX0hETUlfU0NSQU1CTElORwkoMTw8MCkKPiA+ID4gPiA+ID4gICAgCj4gPiA+ID4g PiA+ICAgIC8qIERpc3BsYXlQb3J0IFRyYW5zcG9ydCBDb250cm9sICovCj4gPiA+ID4gPiA+ICAg ICNkZWZpbmUgX0RQX1RQX0NUTF9BCQkJMHg2NDA0MAo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+ID4gPiA+ID4gPiBpbmRleCBjZDZmZWRkLi5iZDgyOTNkIDEwMDY0NAo+ID4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiA+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiA+ID4gPiBAQCAt MTI3OCw2ICsxMjc4LDExIEBAIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMo c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gPiA+ID4gPiAgICAJCQl0ZW1wIHw9IFRSQU5TX0RE SV9NT0RFX1NFTEVDVF9IRE1JOwo+ID4gPiA+ID4gPiAgICAJCWVsc2UKPiA+ID4gPiA+ID4gICAg CQkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFZJOwo+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ICsJCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiA+ID4gPiA+ID4gKwkJCXRl bXAgPSBpbnRlbF9oZG1pX2hhbmRsZV9zb3VyY2Vfc2NyYW1ibGluZygKPiA+ID4gPiA+ID4gKwkJ CQlpbnRlbF9lbmNvZGVyLAo+ID4gPiA+ID4gPiArCQkJCSZpbnRlbF9jcnRjLT5jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZSwgdGVtcCk7Cj4gPiA+ID4gPiA+ICAgIAl9IGVsc2UgaWYgKHR5cGUg PT0gSU5URUxfT1VUUFVUX0FOQUxPRykgewo+ID4gPiA+ID4gPiAgICAJCXRlbXAgfD0gVFJBTlNf RERJX01PREVfU0VMRUNUX0ZESTsKPiA+ID4gPiA+ID4gICAgCQl0ZW1wIHw9IChpbnRlbF9jcnRj LT5jb25maWctPmZkaV9sYW5lcyAtIDEpIDw8IDE7Cj4gPiA+ID4gPiA+IEBAIC0xODQzLDYgKzE4 NDgsMjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RkaShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZW5jb2RlciwKPiA+ID4gPiA+ID4gICAgCQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCA9Cj4gPiA+ID4gPiA+ICAgIAkJCWVuY190b19kaWdfcG9ydChl bmNvZGVyKTsKPiA+ID4gPiA+ID4gICAgCj4gPiA+ID4gPiA+ICsJCWlmIChJU19HRU1JTklMQUtF KGRldl9wcml2KSkgewo+ID4gPiA+ID4gPiArCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpOwo+ID4gPiA+ID4gPiArCQkJLyoKPiA+ID4gPiA+ ID4gKwkJCSAqIEdMSyBzcG9ydHMgYSBuYXRpdmUgSERNSSAyLjAgY29udHJvbGxlci4gSWYgcmVx dWlyZWQKPiA+ID4gPiA+ID4gKwkJCSAqIGNsb2NrIHJhdGUgaXMgPiAzNDAgTWh6ICYmIHNjcmFt YmxpbmcgaXMgc3VwcG9ydGVkCj4gPiA+ID4gPiA+ICsJCQkgKiBieSBzaW5rLCBlbmFibGUgc2Ny YW1ibGluZyBiZWZvcmUgZW5hYmxpbmcgdGhlCj4gPiA+ID4gPiA+ICsJCQkgKiBIRE1JIDIuMCBw b3J0LiBUaGUgc2luayBjYW4gY2hvb3NlIHRvIGRpc2FibGUgdGhlCj4gPiA+ID4gPiA+ICsJCQkg KiBzY3JhbWJsaW5nIGlmIGl0IGRvZXNuJ3QgZGV0ZWN0IGEgc2NyYW1ibGVkIHdpdGhpbgo+ID4g PiA+ID4gPiArCQkJICogMTAwIG1zLgo+ID4gPiA+ID4gPiArCQkJICovCj4gPiA+ID4gPiA+ICsJ CQlpbnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFtYmxpbmcoaW50ZWxfZW5jb2RlciwKPiA+ID4g PiA+ID4gKwkJCQkJCWNvbm5fc3RhdGUtPmNvbm5lY3RvciwKPiA+ID4gPiA+ID4gKwkJCQkJCWNy dGMtPmNvbmZpZywgdHJ1ZSk7Cj4gPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiAgICAJCS8qIEluIEhETUkvRFZJIG1vZGUsIHRoZSBwb3J0IHdpZHRoLCBhbmQgc3dpbmcv ZW1waGFzaXMgdmFsdWVzCj4gPiA+ID4gPiA+ICAgIAkJICogYXJlIGlnbm9yZWQgc28gbm90aGlu ZyBzcGVjaWFsIG5lZWRzIHRvIGJlIGRvbmUgYmVzaWRlcwo+ID4gPiA+ID4gPiAgICAJCSAqIGVu YWJsaW5nIHRoZSBwb3J0Lgo+ID4gPiA+ID4gPiBAQCAtMTg3NSw2ICsxODk1LDE0IEBAIHN0YXRp YyB2b2lkIGludGVsX2Rpc2FibGVfZGRpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNv ZGVyLAo+ID4gPiA+ID4gPiAgICAJaWYgKG9sZF9jcnRjX3N0YXRlLT5oYXNfYXVkaW8pCj4gPiA+ ID4gPiA+ICAgIAkJaW50ZWxfYXVkaW9fY29kZWNfZGlzYWJsZShpbnRlbF9lbmNvZGVyKTsKPiA+ ID4gPiA+ID4gICAgCj4gPiA+ID4gPiA+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hETUkp IHsKPiA+ID4gPiA+ID4gKwkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGVuY29kZXItPmNydGMpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJCWludGVs X2hkbWlfaGFuZGxlX3Npbmtfc2NyYW1ibGluZyhpbnRlbF9lbmNvZGVyLAo+ID4gPiA+ID4gPiAr CQkJCQlvbGRfY29ubl9zdGF0ZS0+Y29ubmVjdG9yLAo+ID4gPiA+ID4gPiArCQkJCQlpbnRlbF9j cnRjLT5jb25maWcsIGZhbHNlKTsKPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gICAgCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiA+ID4gPiA+ID4gICAg CQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ ID4gPiA+ID4gPiAgICAKPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4g PiA+ID4gaW5kZXggODIxYzU3Yy4uYzcyNjJkNyAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiA+ID4gQEAgLTY5MSw2ICs2OTEsMTIgQEAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+ID4gPiA+ID4gPiAgICAKPiA+ID4gPiA+ID4gICAg CS8qIEdhbW1hIG1vZGUgcHJvZ3JhbW1lZCBvbiB0aGUgcGlwZSAqLwo+ID4gPiA+ID4gPiAgICAJ dWludDMyX3QgZ2FtbWFfbW9kZTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCS8qIEhETUkg c2NyYW1ibGluZyBzdGF0dXMgKHNpbmspICovCj4gPiA+ID4gPiA+ICsJYm9vbCBoZG1pX3NjcmFt Ymxpbmc7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwkvKiBIRE1JIEhpZ2ggVE1EUyBjaGFy IHJhdGUgcmF0aW8gKHNpbmspICovCj4gPiA+ID4gPiA+ICsJYm9vbCBoZG1pX2hpZ2hfdG1kc19j bG9ja19yYXRpbzsKPiA+ID4gPiA+ID4gICAgfTsKPiA+ID4gPiA+ID4gICAgCj4gPiA+ID4gPiA+ ICAgIHN0cnVjdCB2bHZfd21fc3RhdGUgewo+ID4gPiA+ID4gPiBAQCAtMTYwOSw2ICsxNjE1LDE0 IEBAIHZvaWQgaW50ZWxfaGRtaV9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ID4gPiA+ID4gICAgYm9vbCBpbnRlbF9oZG1pX2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiA+ID4gPiAgICAJ CQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gPiA+ID4g PiAgICAJCQkgICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpOwo+ ID4gPiA+ID4gPiArdWludDMyX3QKPiA+ID4gPiA+ID4gK2ludGVsX2hkbWlfaGFuZGxlX3NvdXJj ZV9zY3JhbWJsaW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gPiA+ ID4gPiArCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+ID4gPiA+ID4gKwkJ CQkJdWludDMyX3QgY29uZmlnKTsKPiA+ID4gPiA+ID4gK3ZvaWQgaW50ZWxfaGRtaV9oYW5kbGVf c2lua19zY3JhbWJsaW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4g PiA+ID4gPiArCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ID4g PiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnLAo+ID4gPiA+ID4gPiArCQkJ CQlib29sIGVuYWJsZSk7Cj4gPiA+ID4gPiA+ICAgIHZvaWQgaW50ZWxfZHBfZHVhbF9tb2RlX3Nl dF90bWRzX291dHB1dChzdHJ1Y3QgaW50ZWxfaGRtaSAqaGRtaSwgYm9vbCBlbmFibGUpOwo+ID4g PiA+ID4gPiAgICAKPiA+ID4gPiA+ID4gICAgCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZG1pLmMKPiA+ID4gPiA+ID4gaW5kZXggYTU4MGRlOC4uYzQ0YmVlZSAxMDA2NDQKPiA+ID4g PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiA+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gPiA+ID4gPiBAQCAt MzQsNiArMzQsNyBAQAo+ID4gPiA+ID4gPiAgICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVs cGVyLmg+Cj4gPiA+ID4gPiA+ICAgICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiA+ID4gPiA+ ID4gICAgI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgo+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGRy bS9kcm1fc2NkY19oZWxwZXIuaD4KPiA+ID4gPiA+ID4gICAgI2luY2x1ZGUgImludGVsX2Rydi5o Igo+ID4gPiA+ID4gPiAgICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gPiA+ID4gPiA+ICAg ICNpbmNsdWRlIDxkcm0vaW50ZWxfbHBlX2F1ZGlvLmg+Cj4gPiA+ID4gPiA+IEBAIC0xNzk1LDYg KzE3OTYsMTEzIEBAIHN0YXRpYyB2b2lkIGludGVsX2hkbWlfZGVzdHJveShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiA+ID4gPiAgICAJaW50ZWxfaGRtaS0+YXNwZWN0X3Jh dGlvID0gSERNSV9QSUNUVVJFX0FTUEVDVF9OT05FOwo+ID4gPiA+ID4gPiAgICB9Cj4gPiA+ID4g PiA+ICAgIAo+ID4gPiA+ID4gPiArdm9pZCBpbnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFtYmxp bmcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gPiA+ID4gPiA+ICsJCQkJ ICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4gPiA+ICsJCQkJ ICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcsCj4gPiA+ID4gPiA+ICsJCQkJ ICAgICAgIGJvb2wgZW5hYmxlKQo+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiArCXN0cnVjdCBp bnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoJmludGVsX2VuY29kZXIt PmJhc2UpOwo+ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1fc2NkYyAqc2NkYyA9ICZjb25uZWN0b3It PmRpc3BsYXlfaW5mby5oZG1pLnNjZGM7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9zY3JhbWJs aW5nICpzY3JhbWJsaW5nID0gJnNjZGMtPnNjcmFtYmxpbmc7Cj4gPiA+ID4gPiA+ICsJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4g PiA+ID4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29ubmVjdG9y LT5kZXYtPmRldl9wcml2YXRlOwo+ID4gPiA+ID4gPiArCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRw dHIgPSBpbnRlbF9nbWJ1c19nZXRfYWRhcHRlcihkZXZfcHJpdiwKPiA+ID4gCj4gPiA+IFRoZXJl J3Mgb25seSB0d28gbGV0dGVycyBtaXNzaW5nLiBNYXliZSBqdXN0IHNwZWxsIGFkYXB0ZXIuCj4g PiAKPiA+IFRoZSBpbnRlbnRpb24gd2FzIHRvIGtlZXAgaXQgd2l0aGluIDgwIGNoYXIsIGFuZCBp dCB3YXMgZ29pbmcgODIgOlAgOi0pCj4gPiA+ID4gPiA+ICsJCQkJCQkJICBpbnRlbF9oZG1pLT5k ZGNfYnVzKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWlmICghc2NyYW1ibGluZy0+c3Vw cG9ydGVkKQo+ID4gPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g KwlEUk1fREVCVUdfS01TKCJTZXR0aW5nIHNpbmsgc2NyYW1ibGluZyBmb3IgZW5jOiVzIGNvbm5l Y3Rvcjolc1xuIiwKPiA+ID4gPiA+ID4gKwkJCWludGVsX2VuY29kZXItPmJhc2UubmFtZSwgY29u bmVjdG9yLT5uYW1lKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWlmIChlbmFibGUpIHsK PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCQlpZiAobW9kZS0+Y2xvY2sgPiAzNDAwMDApIHsK PiA+ID4gPiA+ID4gKwkJCS8qIFNldCBUTURTIGJpdCBjbG9jayByYXRpbyB0byAxLzQwICovCj4g PiA+ID4gPiA+ICsJCQljb25maWctPmhkbWlfaGlnaF90bWRzX2Nsb2NrX3JhdGlvID0KPiA+ID4g PiA+ID4gKwkJCQlkcm1fc2NkY19zZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKGFkcHRyKTsKPiA+ ID4gPiA+IAo+ID4gPiA+ID4gWW91J3JlIG5vdCBhbGxvd2VkIHRvIG11Y2sgd2l0aCB0aGUgc3Rh dGUgYW55bW9yZS4gQWxsIHN0YXRlIGNvbXB1dGF0aW9uCj4gPiA+ID4gPiBzaG91bGQgaGFwcGVu IGluIHRoZSAuY29tcHV0ZV9jb25maWcgaG9vay4KPiA+ID4gPiAKPiA+ID4gPiBvaywgbGV0IG1l IHJlLWFycmFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBzdWNoIGEgd2F5IHRoYXQgSSBkbyB0aGUgY29u ZmlnCj4gPiA+ID4gdXBkYXRlIHBhcnQgaW4gY29tcHV0ZV9jb25maWcKPiA+ID4gPiA+ID4gKwkJ CWlmICghY29uZmlnLT5oZG1pX2hpZ2hfdG1kc19jbG9ja19yYXRpbykgewo+ID4gPiA+ID4gPiAr CQkJCURSTV9FUlJPUigiU2V0IGhpZ2ggVE1EUyByYXRpbyBmYWlsZWRcbiIpOwo+ID4gPiA+ID4g PiArCQkJCXJldHVybjsKPiA+ID4gPiA+ID4gKwkJCX0KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiArCQkJLyogRW5hYmxlIHNpbmsgc2NyYW1ibGluZyAqLwo+ID4gPiA+ID4gPiArCQkJY29uZmln LT5oZG1pX3NjcmFtYmxpbmcgPQo+ID4gPiA+ID4gPiArCQkJCQlkcm1fc2NkY19lbmFibGVfc2Ny YW1ibGluZyhhZHB0cik7Cj4gPiA+ID4gPiA+ICsJCQlpZiAoIWNvbmZpZy0+aGRtaV9zY3JhbWJs aW5nKSB7Cj4gPiA+ID4gPiA+ICsJCQkJRFJNX0VSUk9SKCJDYW4ndCBlbmFibGUgc2luayBzY3Jh bWJsaW5nXG4iKTsKPiA+ID4gPiA+ID4gKwkJCQlyZXR1cm47Cj4gPiA+ID4gPiA+ICsJCQl9Cj4g PiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCQkvKiBGZXcgc2lua3Mg c3VwcG9ydCBzY3JhbWJsaW5nIGF0IGNsb2NrcyA8PTM0MCBNSHogdG9vICovCj4gPiA+ID4gPiA+ ICsJCWlmICghY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcgJiYgc2NyYW1ibGluZy0+bG93X3JhdGVz KSB7Cj4gPiA+ID4gPiA+ICsJCQljb25maWctPmhkbWlfc2NyYW1ibGluZyA9Cj4gPiA+ID4gPiA+ ICsJCQkJCWRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nKGFkcHRyKTsKPiA+ID4gPiA+ID4gKwkJ CWlmICghY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcpCj4gPiA+ID4gPiA+ICsJCQkJRFJNX0VSUk9S KCJDYW4ndCBlbmFibGUgc2luayBzY3JhbWJsaW5nXG4iKTsKPiA+ID4gPiA+ID4gKwkJfQo+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gKwlpZiAoY29uZmlnLT5oZG1pX2hpZ2hfdG1kc19jbG9ja19yYXRp bykgewo+ID4gPiA+ID4gPiArCQkvKiBTZXQgVE1EUyBiaXQgY2xvY2sgcmF0aW8gYmFjayB0byAx LzEwICovCj4gPiA+ID4gPiA+ICsJCWNvbmZpZy0+aGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8g PQo+ID4gPiA+ID4gPiArCQkJIShkcm1fc2NkY19jbGVhcl9oaWdoX3RtZHNfY2xvY2tfcmF0aW8o YWRwdHIpKTsKPiA+ID4gPiA+ID4gKwkJaWYgKGNvbmZpZy0+aGRtaV9oaWdoX3RtZHNfY2xvY2tf cmF0aW8pCj4gPiA+ID4gPiA+ICsJCQlEUk1fRVJST1IoIlJlc2V0IGhpZ2ggVE1EUyByYXRpbyBm YWlsZWRcbiIpOwo+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWlm IChjb25maWctPmhkbWlfc2NyYW1ibGluZykgewo+ID4gPiA+ID4gPiArCQkvKiBEaXNhYmxlIHNp bmsgc2NyYW1ibGluZyAqLwo+ID4gPiA+ID4gPiArCQljb25maWctPmhkbWlfc2NyYW1ibGluZyA9 ICEoZHJtX3NjZGNfZGlzYWJsZV9zY3JhbWJsaW5nKGFkcHRyKSk7Cj4gPiA+ID4gPiA+ICsJCWlm IChjb25maWctPmhkbWlfc2NyYW1ibGluZykKPiA+ID4gPiA+ID4gKwkJCURSTV9FUlJPUigiRGlz YWJsZSBzaW5rIHNjcmFtYmxpbmcgZmFpbGVkXG4iKTsKPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4g PiA+ICt9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3Qg X2ludGVsX2hkbWlfc2V0X3NvdXJjZV9zY3JhbWJsaW5nKHVpbnQzMl90IGhkbWlfY29uZmlnKQo+ ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiArCXJldHVybiBoZG1pX2NvbmZpZyB8PSAoVFJBTlNf RERJX0hETUlfU0NSQU1CTElORyB8Cj4gPiA+ID4gPiA+ICsJCQlUUkFOU19ERElfSERNSV9TQ1JB TUJMRVJfUkVTRVRfRlJFUSB8Cj4gPiA+ID4gPiA+ICsJCQlUUkFOU19ERElfSERNSV9TQ1JBTUJM RVJfQ1RTX0VOQUJMRSk7Cj4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g K3VpbnQzMl90Cj4gPiA+ID4gPiA+ICtpbnRlbF9oZG1pX2hhbmRsZV9zb3VyY2Vfc2NyYW1ibGlu ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+ID4gPiA+ID4gKwkJCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLCB1aW50MzJfdCBoZG1pX2NvbmZpZykKPiA+ID4g PiA+ID4gK3sKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVu Y190b19pbnRlbF9oZG1pKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiA+ID4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmludGVsX2hkbWktPmF0dGFjaGVkX2Nvbm5l Y3Rvci0+YmFzZTsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaV9pbmZv ID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWk7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IGRy bV9zY3JhbWJsaW5nICpzY3JhbWJsaW5nID0gJmhkbWlfaW5mby0+c2NkYy5zY3JhbWJsaW5nOwo+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBzY3JhbWJs aW5nIGZvciBlbmM6JXMgY29ubmVjdG9yOiVzXG4iLAo+ID4gPiA+ID4gPiArCQkJaW50ZWxfZW5j b2Rlci0+YmFzZS5uYW1lLCBjb25uZWN0b3ItPm5hbWUpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ICsJaGRtaV9jb25maWcgJj0gfihUUkFOU19ERElfSERNSV9TQ1JBTUJMSU5HIHwKPiA+ID4g PiA+ID4gKwkJVFJBTlNfRERJX0hJR0hfVE1EU19DSEFSX1JBVEUgfAo+ID4gPiA+ID4gPiArCQlU UkFOU19ERElfSERNSV9TQ1JBTUJMRVJfUkVTRVRfRlJFUSB8Cj4gPiA+ID4gPiA+ICsJCVRSQU5T X0RESV9IRE1JX1NDUkFNQkxFUl9DVFNfRU5BQkxFKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiArCWlmIChtb2RlLT5jbG9jayA8PSAzNDAwMDApIHsKPiA+ID4gPiA+ID4gKwkJLyogRmV3IHNp bmtzIHN1cHBvcnQgc2NyYW1ibGluZyBhdCByYXRlIDwgMzQwIE1IeiB0b28gKi8KPiA+ID4gPiA+ ID4gKwkJaWYgKHNjcmFtYmxpbmctPmxvd19yYXRlcykKPiA+ID4gPiA+ID4gKwkJCWhkbWlfY29u ZmlnID0KPiA+ID4gPiA+ID4gKwkJCQlfaW50ZWxfaGRtaV9zZXRfc291cmNlX3NjcmFtYmxpbmco aGRtaV9jb25maWcpOwo+ID4gPiA+ID4gPiArCQlyZXR1cm4gaGRtaV9jb25maWc7Cj4gPiA+ID4g PiA+ICsJfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJLyogU2NyYW1ibGluZyBvciBub3Qs IGlmIGNsb2NrID4gMzQwIE1Ieiwgc2V0IGhpZ2ggY2hhciByYXRlICovCj4gPiA+ID4gPiA+ICsJ aGRtaV9jb25maWcgfD0gVFJBTlNfRERJX0hJR0hfVE1EU19DSEFSX1JBVEU7Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gKwlpZiAoc2NyYW1ibGluZy0+c3VwcG9ydGVkKQo+ID4gPiA+ID4gPiAr CQloZG1pX2NvbmZpZyA9IF9pbnRlbF9oZG1pX3NldF9zb3VyY2Vfc2NyYW1ibGluZyhoZG1pX2Nv bmZpZyk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlyZXR1cm4gaGRtaV9jb25maWc7Cj4g PiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFNlZW1zIG92ZXJseSBjb21wbGljYXRl ZCB0byBtZS4gSXQgY291bGQganVzdCBiZSBzb21ldGhpbmcgc2ltcGxlIGxpa2U6Cj4gPiA+ID4g PiAKPiA+ID4gPiA+IHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoc3RydWN0 IGRybV9jcnRjICpjcnRjKQo+ID4gPiA+ID4gewo+ID4gPiA+ID4gCS4uLgo+ID4gPiA+ID4gCWlm IChjb25maWctPmhkbWlfc2NyYW1ibGluZykKPiA+ID4gPiA+IAkJdGVtcCB8PSBUUkFOU19ERElf SERNSV9TQ1JBTUJMSU5HOwo+ID4gPiA+ID4gCQo+ID4gPiA+ID4gCWlmIChjb25maWctPndoYXRl dmVyKQo+ID4gPiA+ID4gCQl0ZW1wIHw9IFRSQU5TX0RESV9ISUdIX1RNRFNfQ0hBUl9SQVRFOwo+ ID4gPiA+ID4gCS4uLgo+ID4gPiA+ID4gfQo+ID4gPiA+IAo+ID4gPiA+IEkga25vdyBpdCBhcHBl YXJzIGxpa2UgY29tcGxpY2F0ZWQsIGJ1dCBhY3R1YWxseSB0aGUgcmVxdWlyZW1lbnQgaXMKPiA+ ID4gPiBjb21wbGljYXRlZDoKPiA+ID4gPiAtIGlmIGNsb2NrIGlzID4gMzQwIE1oeiwgc2V0IHNj cmFtYmxpbmcgJiYgc2V0X2hpZ2hfdG1kc19jbG9ja19yYXRpbwo+ID4gPiA+IC0gaWYgY2xvY2sg aXMgPCAzNDAgTWh6LCBidXQgaWYgbW9uaXRvciBzdXBwb3J0cyBzY3JhbWJsaW5nIGF0IGxvd2Vy Cj4gPiA+ID4gY2xvY2tzLCBzZXQgc2NyYW1ibGluZyBvbmx5IChub3QgdG1kc19jbG9ja19yYXRp bykKPiA+ID4gPiAtIHRvIHNldCBzY3JhbWJsaW5nLCB3ZSBoYXZlIHRvIGZpcnN0IGNoZWNrIGlm IHNjcmFtYmxpbmcgaXMgc3VwcG9ydGVkCj4gPiA+ID4gaW4gbW9uaXRvcgo+ID4gPiA+IFNvIHRv IG1lZXQgYWxsIHRoZXNlIGNvbmRpdGlvbiwgeW91IHdpbGwgZW5kIHVwIHdpdGggc29tZXRoaW5n IGxpa2UKPiA+ID4gPiB3aGF0J3MgaW1wbGVtZW50ZWQgYWJvdmUuCj4gPiA+ID4gRG8geW91IHNl ZSBhICBiZXR0ZXIgd2F5ID8KPiA+ID4gCj4gPiA+IFB1dCB0aGF0IGludGVsX2hkbWlfY29tcHV0 ZV9jb25maWcoKSBzbyB5b3UgY2hlY2sgaXQgb25seSBvbmNlLCBpLmUuOgo+ID4gPiAKPiA+ID4g aWYgKGNsb2NrID4gMzQwIHx8IHNjcmFtYmxpbmctPmxvd19yYXRlcykKPiA+ID4gCWNvbmZpZy0+ aGRtaV9zY3JhbWJsaW5nID0gdHJ1ZTsKPiA+ID4gCj4gPiA+IGlmIChjbG9jayA+IDM0MCkKPiA+ ID4gCWNvbmZpZy0+aGRtaV9oaWdoX3RtZHMgPSB0cnVlOwo+ID4gPiAKPiA+ID4gVGhlbiB5b3Ug Y2FuIGRvIGp1c3QgYXMgVmlsbGUgc2FpZCBhYm92ZSBpbiBpbnRlbF9kZGlfZW5hYmxlX3RyYW5z Y29kZXJfZnVuYygpLgo+ID4gCj4gPiBUaGF0cyBhIGdvb2QgaWRlYSwgSSBjYW4gZG8gdGhhdCwg YnV0IHRoZXJlIGlzIG9uZSBkcmF3YmFjayBvZiBkb2luZyAKPiA+IHRoYXQuIFJpZ2h0IG5vdywg YWxsIG9mIHRoZSBIRE1JCj4gPiBzb3VyY2Uvc2luayBzY3JhbWJsaW5nIGNvZGUgaXMgaW4gb25l IGZ1bmN0aW9uLCBzbyBmb3IgYW55IAo+ID4gZGVidWcvbW9kaWZpY2F0aW9uIGFjdGl2aXR5LCB5 b3UgaGF2ZSB0byBsb29rCj4gPiBvbmx5IGluIG9uZSBmdW5jdGlvbiwgYWxzbyBpdHMgbW9yZSBy ZWFkYWJsZSB0aGlzIHdheSAoaW4gdGhlIGZsb3cpCj4gPiAKPiA+IFRoZSBtb21lbnQgd2UgZGlz dHJpYnV0ZSBjb2RlIGluIDMgZGlmZmVyZW50IGZ1bmN0aW9uLCB5b3UgaGF2ZSB0byB0cmFjayAK PiA+IGluIGFsbCB0aGUgcGxhY2VzLiBBbHNvLCB3ZSBhcmUgbm90Cj4gPiBzYXZpbmcvcmVkdWNp bmcgYW55IGlmIGNvbmRpdGlvbnMsIHdlIGFyZSBqdXN0IG1vdmluZyBpdCBhdCBzb21lIG90aGVy IAo+ID4gcGxhY2UuCj4gCj4gV2l0aCB0aGUgY3VycmVudCBwYXRjaCBib3RoIGhhbmRsZV9zb3Vy Y2Vfc2NyYW1ibGluZygpIGFuZAo+IGhhbmRsZV9zaW5rX3NjcmFtYmxpbmcoKSBoYXZlIGNoZWNr cyBmb3IgY2xvY2sgYWJvdmUvYmVsb3cgMzQwMDAwIGFuZCB3aGV0aGVyCj4gdGhlIHNpbmsgc3Vw cG9ydCBzY3JhbWJsaW5nIHdpdGggbG93IHJhdGVzLiBUaG9zZSB0d28gY2hlY2tzIGRvbid0IG5l ZWQgdG8gYmUKPiBkdXBsaWNhdGVkLgo+IAo+ID4gRG8geW91IHN0aWxsIHRoaW5rIGl0J3Mgd29y dGggZG9pbmcgaXQgPwo+IAo+IFllcywgZG9pbmcgaXQgaW4gY29tcHV0ZSBjb25maWcgZm9sbG93 cyB0aGUgY29udmVudGlvbiBvZiB0aGUgZHJpdmVyLiBJZgo+IHNvbWV0aGluZyBpcyBzZXQgaW4g Y3J0Y19zdGF0ZSwgaXQgaXMgb25seSBuYXR1cmFsIHRvIGFzc3VtZSBpdCB3YXMgc2V0IGF0IHNv bWUKPiBwb2ludCBpbiB0aGUgYXRvbWljIGNoZWNrIHBoYXNlIG9yIGZyb20gcmVhZGluZyBvdXQg dGhlIGhhcmR3YXJlIHN0YXRlLgo+IAo+ID4gPiBBbmQgYWxzbyBmb3IgdGhlIHNpbmsgcGFydCwg bm8gbmVlZCB0byBjaGVjayB0aGUgaW5wdXQgdmFsdWVzIGFnYWluOgo+ID4gPiAKPiA+ID4gaWYg KGNvbmZpZy0+aGRtaV9oaWdoX3RtZHMpCj4gPiA+IAlpZiAoIWRybV9zY2RjX3NldF9oaWdoX3Rt ZHNfY2xvY2tfcmF0aW8oYWRhcHRlciwgZW5hYmxlKSkKPiA+ID4gCQlEUk1fRVJST1IoKTsKPiA+ ID4gCj4gPiA+IGlmIChjb25maWctPmhkbWlfc2NyYW1iaW5nKQo+ID4gPiAJaWYgKCFkcm1fc2Nk Y19zZXRfc2NyYW1ibGluZyhhZGFwdGVyLCBlbmFibGUpKQo+ID4gPiAJCURSTV9FUlJPUigpOwo+ ID4gPiAKPiA+ID4gQXQgbGVhc3QgdGhhdCdzIGhvdyBJJ2QgaW50ZXJwcmV0IHdoYXQgVmlsbGUg d3JvdGUuCj4gPiAKPiA+IEFjdHVhbGx5IGRlc2lnbiBpcyBzbGlnaHRseSBkaWZmZXJlbnQuIFRo ZSBzdGF0ZSdzIGhkbWlfc2NyYW1ibGluZy9jbG9jayAKPiA+IGJvb2wncyBpbmRpY2F0ZSB0aGF0 IHRoZSBzaW5rJ3MKPiA+IHNjcmFtYmxpbmcvaGlnaF9jbG9ja19yYXRpbyBpcyBlbmFibGVkL3Nl dCBieSBzb3VyY2UgKGFuZCBuZWVkcyB0byBiZSAKPiA+IGRpc2FibGVkKSwgd2hlcmVhcyBjb25u ZWNvdHIncy0+ZGlzcGxheV9pbmZvLT5zY2RjLnNjcmFtYmxpbmcKPiA+IGlzIHRvIGluZGljYXRl IG1vbml0b3IncyBjYXBhYmlsaXR5IHRvIHN1cHBvcnQgc2NyYW1ibGluZyBhbmQgc2NkYwo+IAo+ IFRoZSBjcnRjX3N0YXRlIHNob3VsZG4ndCBiZSBjaGFuZ2VkIHRvIHJlcHJlc2VudCBjaGFuZ2Vz IGluIHRoZSBoYXJkd2FyZSBzdGF0ZS4KPiBJdCBpcyBjb21wdXRlZCBkdXJpbmcgdGhlIGF0b21p YyBjaGVjayBwaGFzZSwgYW5kIGFmdGVyIHRoYXQgaXQgc2hvdWxkIHJlcHJlc2VudAo+IHRoZSBz dGF0ZSB0aGF0IG5lZWRzIHRvIGJlIGNvbW1pdGVkLiBQZXJoYXBzIHRoZSBjb2RlIGluIGhkbWlf Y29tcHV0ZV9jb25maWcoKQo+IGp1c3QgbmVlZHMgdG8gdGFrZSB0aGUgcHJldmlvdXMgc3RhdGUg aW50byBhY2NvdW50PwoKVGhlIHByZXZpb3VzIHN0YXRlIGlzIGlycmVsZXZhbnQuIFdlIGp1c3Qg bmVlZCB0byBjb21wdXRlIHRoZXNlIHRoaW5ncwpiYXNlZCBvbiB3aGF0IHdlJ3JlIGdvaW5nIHRv IGRvIG5leHQuIEFuZCB0aGlzIHN0dWZmIGRvZXNuJ3QgcmVhbGx5CnRyYWNrIHRoZSBzdGF0ZSBv ZiB0aGUgc2luaywgcmF0aGVyIGl0IHRyYWNrcyB0aGUgc3RhdGUgb2YgdGhlIHNvdXJjZS4KVGhl IHNpbmsgc3RhdGUganVzdCBmb2xsb3dzIGFsb25nIHRvIG1hdGNoLiBTbyBpbiB0aGUgcmVhZG91 dCBwYXRoIHdlCmp1c3Qgd2FudCB0byByZWFkIG91dCB0aGUgc3RhdGUgb2YgdGhlIHNvdXJjZS4K Cj4gCj4gPiAKPiA+IFRoaW5rIGFib3V0IHR3byBzaXR1YXRpb25zIHdoZXJlOi0KPiA+IC0gTW9u aXRvciBzdXBwb3J0cyBzY3JhbWJsaW5nIGFuZCBzY2RjLCBidXQgd2Ugd2lsbCBub3QgZW5hYmxl IGl0LCBhcyAKPiA+IHRoZSBjdXJyZW50IG1vZGUgaXMgMTA4MFBAMTQ4IE1Iego+ID4gLSBNb25p dG9yIHN1cHBvcnRzIHNjcmFtYmxpbmcgYW5kIHNjZGMsIGFuZCB3ZSB3aWxsIGVuYWJsZSBpdCwg YXMgdGhlIAo+ID4gY3VycmVudCBtb2RlIGlzIDRrQDU5NiBNaHoKPiA+IAo+ID4gVG8gZGlmZmVy ZW50aWF0ZSBiZXR3ZWVuIHRoZXNlIHR3bywgd2UgaGF2ZToKPiA+IGNvbmZpZy0+aGRtaV9zY3Jh bWJsaW5nIHdoaWNoIHNob3dzIHNjcmFtYmxpbmcgZW5hYmxlZCBvbiBtb25pdG9yIGJ5IHNvdXJj ZQo+ID4gZGlzcGxheV9pbmZvLT5oZG1pLnNjZGMtPnNjcmFtYmxpbmcgd2hpY2ggaW5kaWNhdGVz IG1vbml0b3Igc3VwcG9ydHMgCj4gPiBzY3JhbWJsaW5nCj4gPiAKPiA+IERvZXMgaXQgbWFrZSBz ZW5zZSA/IE9yIHlvdSBwcmVmZXIgc29tZSBjaGFuZ2VzIGhlcmUgPwo+IAo+IElzIHRoZXJlIGFu eSBoYXJtIGluIGRpc2FibGluZyBzY3JhbWJsaW5nIHR3aWNlPyBJZiBub3QgSSdkIHNheSBqdXN0 IGRpc2FibGUgaXQKPiBvbiBldmVyeSBtb2Rlc2V0IGlmIGl0IGlzIG5vdCBuZWVkZWQuIFRoZW4g dGhlcmUncyBubyBuZWVkIHRvIGtub3cgdGhlIHByZXZpb3VzCj4gc3RhdGUgYXQgdGhlIG1vbWVu dCB3ZSBhY3R1YWxseSBlbmFibGUvZGlzYWJsZSBpdC4KCkFncmVlZC4gSnVzdCBleHBsaWNpdGx5 IHNldCB0aGUgc3RhdGUgdG8gd2hhdCB3ZSB3YW50IGV2ZXJ5IHRpbWUuCgotLSAKVmlsbGUgU3ly asOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK