From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 2/5] drm/i915/cnl+: Move the combo PHY init/uninit code to a new file Date: Sat, 3 Nov 2018 00:11:23 +0200 Message-ID: <20181102221123.GE21181@ideak-desk.fi.intel.com> References: <20181102180706.16582-1-imre.deak@intel.com> <20181102180706.16582-3-imre.deak@intel.com> <98fad41383d18290b981591bd037e5b29559e1e2.camel@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6B7A6E60E for ; Fri, 2 Nov 2018 22:11:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <98fad41383d18290b981591bd037e5b29559e1e2.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Souza, Jose" Cc: "intel-gfx@lists.freedesktop.org" , "Zanoni, Paulo R" , "Vivi, Rodrigo" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMDIsIDIwMTggYXQgMTE6MDY6NDNQTSArMDIwMCwgU291emEsIEpvc2Ugd3Jv dGU6Cj4gT24gRnJpLCAyMDE4LTExLTAyIGF0IDIwOjA3ICswMjAwLCBJbXJlIERlYWsgd3JvdGU6 Cj4gPiBTaW1pbGFybHkgdG8gdGhlIEdFTjlfTFAgRFBJTyBQSFkgY29kZSBrZWVwIHRoZSBDTkwr IGNvbWJvIFBIWSBjb2RlCj4gPiBpbiBhCj4gPiBzZXBhcmF0ZSBmaWxlLgo+ID4gCj4gPiBObyBm dW5jdGlvbmFsIGNoYW5nZS4KPiA+IAo+ID4gU3VnZ2VzdGVkLWJ5OiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1 bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiBDYzogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9z ZS5zb3V6YUBpbnRlbC5jb20+Cj4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29t Pgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgIHwg ICAxICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDYg KysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb21ib19waHkuYyAgfCAxNTkKPiA+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgMTI3ICsrLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAtLS0t LQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMTc0IGluc2VydGlvbnMoKyksIDExOSBkZWxldGlvbnMo LSkKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29t Ym9fcGh5LmMKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiBpbmRleCAyOGM3ZDc4 ODRlODguLjFlN2U5NTEzYmIxMCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4gQEAg LTExMyw2ICsxMTMsNyBAQCBpOTE1LXkgKz0gaW50ZWxfYXVkaW8ubyBcCj4gPiAgCSAgaW50ZWxf Ymlvcy5vIFwKPiA+ICAJICBpbnRlbF9jZGNsay5vIFwKPiA+ICAJICBpbnRlbF9jb2xvci5vIFwK PiA+ICsJICBpbnRlbF9jb21ib19waHkubyBcCj4gPiAgCSAgaW50ZWxfY29ubmVjdG9yLm8gXAo+ ID4gIAkgIGludGVsX2Rpc3BsYXkubyBcCj4gPiAgCSAgaW50ZWxfZHBpb19waHkubyBcCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCA2MTU3ZjgxMjhjYzUuLjYyODgyZTFk ZGJlZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IEBAIC0zNTcxLDYgKzM1 NzEsMTIgQEAgdm9pZCB2bHZfcGh5X3ByZV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QKPiA+IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gPiAgdm9pZCB2bHZfcGh5X3Jlc2V0X2xhbmVzKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZQo+ID4gKm9sZF9jcnRjX3N0YXRlKTsKPiA+ICAKPiA+ICsvKiBpbnRlbF9jb21ib19waHku YyAqLwo+ID4gK3ZvaWQgaWNsX2NvbWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+ID4gK3ZvaWQgaWNsX2NvbWJvX3BoeXNfdW5pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiArdm9pZCBjbmxfY29tYm9fcGh5c19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiArdm9pZCBjbmxfY29tYm9fcGh5 c191bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ICsKPiA+ICBp bnQgaW50ZWxfZ3B1X2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQg dmFsKTsKPiA+ICBpbnQgaW50ZWxfZnJlcV9vcGNvZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBpbnQgdmFsKTsKPiA+ICB1NjQgaW50ZWxfcmM2X3Jlc2lkZW5jeV9ucyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY29tYm9fcGh5LmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY29tYm9fcGh5LmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAw MDAwMDAwMDAuLjEzMTg0YWU1YTIxNwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY29tYm9fcGh5LmMKPiA+IEBAIC0wLDAgKzEsMTU5IEBACj4g PiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gKyAq Cj4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24KPiA+IG9idGFpbmluZyBhCj4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ID4gIlNvZnR3YXJlIiks Cj4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQKPiA+IGxpbWl0YXRpb24KPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPiA+IHN1YmxpY2Vuc2Us Cj4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20KPiA+IHRoZQo+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nCj4gPiBjb25kaXRpb25zOgo+ID4gKyAq Cj4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZwo+ID4gdGhlIG5leHQKPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKPiA+IHBvcnRpb25zIG9mIHRo ZQo+ID4gKyAqIFNvZnR3YXJlLgo+ID4gKyAqCj4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCj4gPiBFWFBSRVNTIE9S Cj4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRgo+ID4gTUVSQ0hBTlRBQklMSVRZLAo+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTwo+ID4gRVZFTlQgU0hBTEwK PiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUwo+ID4gT1IgT1RIRVIKPiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKPiA+IEFSSVNJTkcK PiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SCj4gPiBPVEhFUgo+ID4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K PiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gPiArCj4gPiArZW51 bSB7Cj4gPiArCVBST0NNT05fMF84NVZfRE9UXzAsCj4gPiArCVBST0NNT05fMF85NVZfRE9UXzAs Cj4gPiArCVBST0NNT05fMF85NVZfRE9UXzEsCj4gPiArCVBST0NNT05fMV8wNVZfRE9UXzAsCj4g PiArCVBST0NNT05fMV8wNVZfRE9UXzEsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGNubF9wcm9jbW9uIHsKPiA+ICsJdTMyIGR3MSwgZHc5LCBkdzEwOwo+ID4gK30gY25s X3Byb2Ntb25fdmFsdWVzW10gPSB7Cj4gPiArCVtQUk9DTU9OXzBfODVWX0RPVF8wXSA9Cj4gPiAr CQl7IC5kdzEgPSAweDAwMDAwMDAwLCAuZHc5ID0gMHg2MkFCNjdCQiwgLmR3MTAgPQo+ID4gMHg1 MTkxNEY5NiwgfSwKPiA+ICsJW1BST0NNT05fMF85NVZfRE9UXzBdID0KPiA+ICsJCXsgLmR3MSA9 IDB4MDAwMDAwMDAsIC5kdzkgPSAweDg2RTE3MkM3LCAuZHcxMCA9Cj4gPiAweDc3Q0E1RUFCLCB9 LAo+ID4gKwlbUFJPQ01PTl8wXzk1Vl9ET1RfMV0gPQo+ID4gKwkJeyAuZHcxID0gMHgwMDAwMDAw MCwgLmR3OSA9IDB4OTNGODdGRTEsIC5kdzEwID0KPiA+IDB4OEFFODcxQzUsIH0sCj4gPiArCVtQ Uk9DTU9OXzFfMDVWX0RPVF8wXSA9Cj4gPiArCQl7IC5kdzEgPSAweDAwMDAwMDAwLCAuZHc5ID0g MHg5OEZBODJERCwgLmR3MTAgPQo+ID4gMHg4OUU0NkRDMSwgfSwKPiA+ICsJW1BST0NNT05fMV8w NVZfRE9UXzFdID0KPiA+ICsJCXsgLmR3MSA9IDB4MDA0NDAwMDAsIC5kdzkgPSAweDlBMDBBQjI1 LCAuZHcxMCA9Cj4gPiAweDhBRTM4RkYxLCB9LAo+ID4gK307Cj4gPiArCj4gPiArLyoKPiA+ICsg KiBDTkwgaGFzIGp1c3Qgb25lIHNldCBvZiByZWdpc3RlcnMsIHdoaWxlIElDTCBoYXMgdHdvIHNl dHM6IG9uZQo+ID4gZm9yIHBvcnQgQSBhbmQKPiA+ICsgKiB0aGUgb3RoZXIgZm9yIHBvcnQgQi4g VGhlIENOTCByZWdpc3RlcnMgYXJlIGVxdWl2YWxlbnQgdG8gdGhlIElDTAo+ID4gcG9ydCBBCj4g PiArICogcmVnaXN0ZXJzLCB0aGF0J3Mgd2h5IHdlIGNhbGwgdGhlIElDTCBtYWNyb3MgZXZlbiB0 aG91Z2ggdGhlCj4gPiBmdW5jdGlvbiBoYXMgQ05MCj4gPiArICogb24gaXRzIG5hbWUuCj4gPiAr ICovCj4gPiArc3RhdGljIHZvaWQgY25sX3NldF9wcm9jbW9uX3JlZl92YWx1ZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwKPiA+ICsJCQkJICAgICAgIGVudW0gcG9ydCBw b3J0KQo+ID4gK3sKPiA+ICsJY29uc3Qgc3RydWN0IGNubF9wcm9jbW9uICpwcm9jbW9uOwo+ID4g Kwl1MzIgdmFsOwo+ID4gKwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzMo cG9ydCkpOwo+ID4gKwlzd2l0Y2ggKHZhbCAmIChQUk9DRVNTX0lORk9fTUFTSyB8IFZPTFRBR0Vf SU5GT19NQVNLKSkgewo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJTUlTU0lOR19DQVNFKHZhbCk7Cj4g PiArCQkvKiBmYWxsIHRocm91Z2ggKi8KPiA+ICsJY2FzZSBWT0xUQUdFX0lORk9fMF84NVYgfCBQ Uk9DRVNTX0lORk9fRE9UXzA6Cj4gPiArCQlwcm9jbW9uID0gJmNubF9wcm9jbW9uX3ZhbHVlc1tQ Uk9DTU9OXzBfODVWX0RPVF8wXTsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIFZPTFRBR0VfSU5G T18wXzk1ViB8IFBST0NFU1NfSU5GT19ET1RfMDoKPiA+ICsJCXByb2Ntb24gPSAmY25sX3Byb2Nt b25fdmFsdWVzW1BST0NNT05fMF85NVZfRE9UXzBdOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2Ug Vk9MVEFHRV9JTkZPXzBfOTVWIHwgUFJPQ0VTU19JTkZPX0RPVF8xOgo+ID4gKwkJcHJvY21vbiA9 ICZjbmxfcHJvY21vbl92YWx1ZXNbUFJPQ01PTl8wXzk1Vl9ET1RfMV07Cj4gPiArCQlicmVhazsK PiA+ICsJY2FzZSBWT0xUQUdFX0lORk9fMV8wNVYgfCBQUk9DRVNTX0lORk9fRE9UXzA6Cj4gPiAr CQlwcm9jbW9uID0gJmNubF9wcm9jbW9uX3ZhbHVlc1tQUk9DTU9OXzFfMDVWX0RPVF8wXTsKPiA+ ICsJCWJyZWFrOwo+ID4gKwljYXNlIFZPTFRBR0VfSU5GT18xXzA1ViB8IFBST0NFU1NfSU5GT19E T1RfMToKPiA+ICsJCXByb2Ntb24gPSAmY25sX3Byb2Ntb25fdmFsdWVzW1BST0NNT05fMV8wNVZf RE9UXzFdOwo+ID4gKwkJYnJlYWs7Cj4gPiArCX0KPiA+ICsKPiA+ICsJdmFsID0gSTkxNV9SRUFE KElDTF9QT1JUX0NPTVBfRFcxKHBvcnQpKTsKPiA+ICsJdmFsICY9IH4oKDB4ZmYgPDwgMTYpIHwg MHhmZik7Cj4gPiArCXZhbCB8PSBwcm9jbW9uLT5kdzE7Cj4gPiArCUk5MTVfV1JJVEUoSUNMX1BP UlRfQ09NUF9EVzEocG9ydCksIHZhbCk7Cj4gPiArCj4gPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRf Q09NUF9EVzkocG9ydCksIHByb2Ntb24tPmR3OSk7Cj4gPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRf Q09NUF9EVzEwKHBvcnQpLCBwcm9jbW9uLT5kdzEwKTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBj bmxfY29tYm9fcGh5c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ ICt7Cj4gPiArCXUzMiB2YWw7Cj4gPiArCj4gPiArCXZhbCA9IEk5MTVfUkVBRChDSElDS0VOX01J U0NfMik7Cj4gPiArCXZhbCAmPSB+Q05MX0NPTVBfUFdSX0RPV047Cj4gPiArCUk5MTVfV1JJVEUo Q0hJQ0tFTl9NSVNDXzIsIHZhbCk7Cj4gPiArCj4gPiArCS8qIER1bW15IFBPUlRfQSB0byBnZXQg dGhlIGNvcnJlY3QgQ05MIHJlZ2lzdGVyIGZyb20gdGhlIElDTAo+ID4gbWFjcm8gKi8KPiA+ICsJ Y25sX3NldF9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIFBPUlRfQSk7Cj4gPiArCj4gPiAr CXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9DT01QX0RXMCk7Cj4gPiArCXZhbCB8PSBDT01QX0lO SVQ7Cj4gPiArCUk5MTVfV1JJVEUoQ05MX1BPUlRfQ09NUF9EVzAsIHZhbCk7Cj4gPiArCj4gPiAr CXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9DTDFDTV9EVzUpOwo+ID4gKwl2YWwgfD0gQ0xfUE9X RVJfRE9XTl9FTkFCTEU7Cj4gPiArCUk5MTVfV1JJVEUoQ05MX1BPUlRfQ0wxQ01fRFc1LCB2YWwp Owo+ID4gK30KPiA+ICsKPiA+ICt2b2lkIGNubF9jb21ib19waHlzX3VuaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArewo+ID4gKwl1MzIgdmFsOwo+ID4gKwo+ID4g Kwl2YWwgPSBJOTE1X1JFQUQoQ0hJQ0tFTl9NSVNDXzIpOwo+ID4gKwl2YWwgfD0gQ05MX0NPTVBf UFdSX0RPV047Cj4gPiArCUk5MTVfV1JJVEUoQ0hJQ0tFTl9NSVNDXzIsIHZhbCk7Cj4gPiArfQo+ ID4gKwo+ID4gK3ZvaWQgaWNsX2NvbWJvX3BoeXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gPiArewo+ID4gKwllbnVtIHBvcnQgcG9ydDsKPiA+ICsKPiA+ICsJZm9y IChwb3J0ID0gUE9SVF9BOyBwb3J0IDw9IFBPUlRfQjsgcG9ydCsrKSB7Cj4gPiArCQl1MzIgdmFs Owo+ID4gKwo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QSFlfTUlTQyhwb3J0KSk7Cj4gPiAr CQl2YWwgJj0gfklDTF9QSFlfTUlTQ19ERV9JT19DT01QX1BXUl9ET1dOOwo+ID4gKwkJSTkxNV9X UklURShJQ0xfUEhZX01JU0MocG9ydCksIHZhbCk7Cj4gPiArCj4gPiArCQljbmxfc2V0X3Byb2Nt b25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgcG9ydCk7Cj4gPiArCj4gPiArCQl2YWwgPSBJOTE1X1JF QUQoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCkpOwo+ID4gKwkJdmFsIHw9IENPTVBfSU5JVDsKPiA+ ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCksIHZhbCk7Cj4gPiArCj4gPiAr CQl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFc1KHBvcnQpKTsKPiA+ICsJCXZhbCB8PSBD TF9QT1dFUl9ET1dOX0VOQUJMRTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ0xfRFc1KHBv cnQpLCB2YWwpOwo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgaWNsX2NvbWJvX3BoeXNf dW5pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICt7Cj4gPiArCWVu dW0gcG9ydCBwb3J0Owo+ID4gKwo+ID4gKwlmb3IgKHBvcnQgPSBQT1JUX0E7IHBvcnQgPD0gUE9S VF9COyBwb3J0KyspIHsKPiA+ICsJCXUzMiB2YWw7Cj4gPiArCj4gPiArCQl2YWwgPSBJOTE1X1JF QUQoSUNMX1BIWV9NSVNDKHBvcnQpKTsKPiA+ICsJCXZhbCB8PSBJQ0xfUEhZX01JU0NfREVfSU9f Q09NUF9QV1JfRE9XTjsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BIWV9NSVNDKHBvcnQpLCB2YWwp Owo+ID4gKwo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcwKHBvcnQpKTsK PiA+ICsJCXZhbCAmPSB+Q09NUF9JTklUOwo+ID4gKwkJSTkxNV9XUklURShJQ0xfUE9SVF9DT01Q X0RXMChwb3J0KSwgdmFsKTsKPiA+ICsJfQo+ID4gK30KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gPiBpbmRleCBhN2VlYTg0MjM1ODAuLmY4ZGE0NzFlODFh YSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0u Ywo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gPiBA QCAtMzQzNiw5OSArMzQzNiwxOCBAQCB2b2lkIGJ4dF9kaXNwbGF5X2NvcmVfdW5pbml0KHN0cnVj dAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgCXVzbGVlcF9yYW5nZSgxMCwg MzApOwkJLyogMTAgdXMgZGVsYXkgcGVyIEJzcGVjICovCj4gPiAgfQo+ID4gIAo+ID4gLWVudW0g ewo+ID4gLQlQUk9DTU9OXzBfODVWX0RPVF8wLAo+ID4gLQlQUk9DTU9OXzBfOTVWX0RPVF8wLAo+ ID4gLQlQUk9DTU9OXzBfOTVWX0RPVF8xLAo+ID4gLQlQUk9DTU9OXzFfMDVWX0RPVF8wLAo+ID4g LQlQUk9DTU9OXzFfMDVWX0RPVF8xLAo+ID4gLX07Cj4gPiAtCj4gPiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBjbmxfcHJvY21vbiB7Cj4gPiAtCXUzMiBkdzEsIGR3OSwgZHcxMDsKPiA+IC19IGNubF9w cm9jbW9uX3ZhbHVlc1tdID0gewo+ID4gLQlbUFJPQ01PTl8wXzg1Vl9ET1RfMF0gPQo+ID4gLQkJ eyAuZHcxID0gMHgwMDAwMDAwMCwgLmR3OSA9IDB4NjJBQjY3QkIsIC5kdzEwID0KPiA+IDB4NTE5 MTRGOTYsIH0sCj4gPiAtCVtQUk9DTU9OXzBfOTVWX0RPVF8wXSA9Cj4gPiAtCQl7IC5kdzEgPSAw eDAwMDAwMDAwLCAuZHc5ID0gMHg4NkUxNzJDNywgLmR3MTAgPQo+ID4gMHg3N0NBNUVBQiwgfSwK PiA+IC0JW1BST0NNT05fMF85NVZfRE9UXzFdID0KPiA+IC0JCXsgLmR3MSA9IDB4MDAwMDAwMDAs IC5kdzkgPSAweDkzRjg3RkUxLCAuZHcxMCA9Cj4gPiAweDhBRTg3MUM1LCB9LAo+ID4gLQlbUFJP Q01PTl8xXzA1Vl9ET1RfMF0gPQo+ID4gLQkJeyAuZHcxID0gMHgwMDAwMDAwMCwgLmR3OSA9IDB4 OThGQTgyREQsIC5kdzEwID0KPiA+IDB4ODlFNDZEQzEsIH0sCj4gPiAtCVtQUk9DTU9OXzFfMDVW X0RPVF8xXSA9Cj4gPiAtCQl7IC5kdzEgPSAweDAwNDQwMDAwLCAuZHc5ID0gMHg5QTAwQUIyNSwg LmR3MTAgPQo+ID4gMHg4QUUzOEZGMSwgfSwKPiA+IC19Owo+ID4gLQo+ID4gLS8qCj4gPiAtICog Q05MIGhhcyBqdXN0IG9uZSBzZXQgb2YgcmVnaXN0ZXJzLCB3aGlsZSBJQ0wgaGFzIHR3byBzZXRz OiBvbmUKPiA+IGZvciBwb3J0IEEgYW5kCj4gPiAtICogdGhlIG90aGVyIGZvciBwb3J0IEIuIFRo ZSBDTkwgcmVnaXN0ZXJzIGFyZSBlcXVpdmFsZW50IHRvIHRoZSBJQ0wKPiA+IHBvcnQgQQo+ID4g LSAqIHJlZ2lzdGVycywgdGhhdCdzIHdoeSB3ZSBjYWxsIHRoZSBJQ0wgbWFjcm9zIGV2ZW4gdGhv dWdoIHRoZQo+ID4gZnVuY3Rpb24gaGFzIENOTAo+ID4gLSAqIG9uIGl0cyBuYW1lLgo+ID4gLSAq Lwo+ID4gLXN0YXRpYyB2b2lkIGNubF9zZXRfcHJvY21vbl9yZWZfdmFsdWVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiAtCQkJCSAgICAgICBlbnVtIHBvcnQgcG9y dCkKPiA+IC17Cj4gPiAtCWNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiAqcHJvY21vbjsKPiA+IC0J dTMyIHZhbDsKPiA+IC0KPiA+IC0JdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFczKHBv cnQpKTsKPiA+IC0Jc3dpdGNoICh2YWwgJiAoUFJPQ0VTU19JTkZPX01BU0sgfCBWT0xUQUdFX0lO Rk9fTUFTSykpIHsKPiA+IC0JZGVmYXVsdDoKPiA+IC0JCU1JU1NJTkdfQ0FTRSh2YWwpOwo+ID4g LQkJLyogZmFsbCB0aHJvdWdoICovCj4gPiAtCWNhc2UgVk9MVEFHRV9JTkZPXzBfODVWIHwgUFJP Q0VTU19JTkZPX0RPVF8wOgo+ID4gLQkJcHJvY21vbiA9ICZjbmxfcHJvY21vbl92YWx1ZXNbUFJP Q01PTl8wXzg1Vl9ET1RfMF07Cj4gPiAtCQlicmVhazsKPiA+IC0JY2FzZSBWT0xUQUdFX0lORk9f MF85NVYgfCBQUk9DRVNTX0lORk9fRE9UXzA6Cj4gPiAtCQlwcm9jbW9uID0gJmNubF9wcm9jbW9u X3ZhbHVlc1tQUk9DTU9OXzBfOTVWX0RPVF8wXTsKPiA+IC0JCWJyZWFrOwo+ID4gLQljYXNlIFZP TFRBR0VfSU5GT18wXzk1ViB8IFBST0NFU1NfSU5GT19ET1RfMToKPiA+IC0JCXByb2Ntb24gPSAm Y25sX3Byb2Ntb25fdmFsdWVzW1BST0NNT05fMF85NVZfRE9UXzFdOwo+ID4gLQkJYnJlYWs7Cj4g PiAtCWNhc2UgVk9MVEFHRV9JTkZPXzFfMDVWIHwgUFJPQ0VTU19JTkZPX0RPVF8wOgo+ID4gLQkJ cHJvY21vbiA9ICZjbmxfcHJvY21vbl92YWx1ZXNbUFJPQ01PTl8xXzA1Vl9ET1RfMF07Cj4gPiAt CQlicmVhazsKPiA+IC0JY2FzZSBWT0xUQUdFX0lORk9fMV8wNVYgfCBQUk9DRVNTX0lORk9fRE9U XzE6Cj4gPiAtCQlwcm9jbW9uID0gJmNubF9wcm9jbW9uX3ZhbHVlc1tQUk9DTU9OXzFfMDVWX0RP VF8xXTsKPiA+IC0JCWJyZWFrOwo+ID4gLQl9Cj4gPiAtCj4gPiAtCXZhbCA9IEk5MTVfUkVBRChJ Q0xfUE9SVF9DT01QX0RXMShwb3J0KSk7Cj4gPiAtCXZhbCAmPSB+KCgweGZmIDw8IDE2KSB8IDB4 ZmYpOwo+ID4gLQl2YWwgfD0gcHJvY21vbi0+ZHcxOwo+ID4gLQlJOTE1X1dSSVRFKElDTF9QT1JU X0NPTVBfRFcxKHBvcnQpLCB2YWwpOwo+ID4gLQo+ID4gLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NP TVBfRFc5KHBvcnQpLCBwcm9jbW9uLT5kdzkpOwo+ID4gLQlJOTE1X1dSSVRFKElDTF9QT1JUX0NP TVBfRFcxMChwb3J0KSwgcHJvY21vbi0+ZHcxMCk7Cj4gPiAtfQo+ID4gLQo+ID4gIHN0YXRpYyB2 b2lkIGNubF9kaXNwbGF5X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gPiBib29sIHJlc3VtZSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFp bnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtCj4gPiA+cG93ZXJfZG9tYWluczsKPiA+ICAJ c3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqd2VsbDsKPiA+IC0JdTMyIHZhbDsKPiA+ICAKPiA+ICAJ Z2VuOV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FCTEUpOwo+ID4gIAo+ID4g IAkvKiAxLiBFbmFibGUgUENIIFJlc2V0IEhhbmRzaGFrZSAqLwo+ID4gIAlpbnRlbF9wY2hfcmVz ZXRfaGFuZHNoYWtlKGRldl9wcml2LCAhSEFTX1BDSF9OT1AoZGV2X3ByaXYpKTsKPiA+ICAKPiA+ IC0JLyogMi4gRW5hYmxlIENvbXAgKi8KPiA+IC0JdmFsID0gSTkxNV9SRUFEKENISUNLRU5fTUlT Q18yKTsKPiA+IC0JdmFsICY9IH5DTkxfQ09NUF9QV1JfRE9XTjsKPiA+IC0JSTkxNV9XUklURShD SElDS0VOX01JU0NfMiwgdmFsKTsKPiA+IC0KPiA+IC0JLyogRHVtbXkgUE9SVF9BIHRvIGdldCB0 aGUgY29ycmVjdCBDTkwgcmVnaXN0ZXIgZnJvbSB0aGUgSUNMCj4gPiBtYWNybyAqLwo+ID4gLQlj bmxfc2V0X3Byb2Ntb25fcmVmX3ZhbHVlcyhkZXZfcHJpdiwgUE9SVF9BKTsKPiA+IC0KPiA+IC0J dmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX0NPTVBfRFcwKTsKPiA+IC0JdmFsIHw9IENPTVBfSU5J VDsKPiA+IC0JSTkxNV9XUklURShDTkxfUE9SVF9DT01QX0RXMCwgdmFsKTsKPiA+IC0KPiA+IC0J LyogMy4gKi8KPiA+IC0JdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX0NMMUNNX0RXNSk7Cj4gPiAt CXZhbCB8PSBDTF9QT1dFUl9ET1dOX0VOQUJMRTsKPiA+IC0JSTkxNV9XUklURShDTkxfUE9SVF9D TDFDTV9EVzUsIHZhbCk7Cj4gPiArCS8qIDItMy4gKi8KPiA+ICsJY25sX2NvbWJvX3BoeXNfaW5p dChkZXZfcHJpdik7Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAqIDQuIEVuYWJsZSBQb3dlciBXZWxs IDEgKFBHMSkuCj4gPiBAQCAtMzU1Myw3ICszNDcyLDYgQEAgc3RhdGljIHZvaWQgY25sX2Rpc3Bs YXlfY29yZV91bmluaXQoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ ICB7Cj4gPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2 X3ByaXYtCj4gPiA+cG93ZXJfZG9tYWluczsKPiA+ICAJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAq d2VsbDsKPiA+IC0JdTMyIHZhbDsKPiA+ICAKPiA+ICAJZ2VuOV9zZXRfZGNfc3RhdGUoZGV2X3By aXYsIERDX1NUQVRFX0RJU0FCTEUpOwo+ID4gIAo+ID4gQEAgLTM1NzcsMTAgKzM0OTUsOCBAQCBz dGF0aWMgdm9pZCBjbmxfZGlzcGxheV9jb3JlX3VuaW5pdChzdHJ1Y3QKPiA+IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ID4gIAo+ID4gIAl1c2xlZXBfcmFuZ2UoMTAsIDMwKTsJCS8qIDEw IHVzIGRlbGF5IHBlciBCc3BlYyAqLwo+ID4gIAo+ID4gLQkvKiA1LiBEaXNhYmxlIENvbXAgKi8K PiA+IC0JdmFsID0gSTkxNV9SRUFEKENISUNLRU5fTUlTQ18yKTsKPiA+IC0JdmFsIHw9IENOTF9D T01QX1BXUl9ET1dOOwo+ID4gLQlJOTE1X1dSSVRFKENISUNLRU5fTUlTQ18yLCB2YWwpOwo+ID4g KwkvKiA1LiAqLwo+ID4gKwljbmxfY29tYm9fcGh5c191bmluaXQoZGV2X3ByaXYpOwo+ID4gIH0K PiA+ICAKPiA+ICB2b2lkIGljbF9kaXNwbGF5X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiBAQCAtMzU4OCwzMSArMzUwNCwxNCBAQCB2b2lkIGljbF9kaXNw bGF5X2NvcmVfaW5pdChzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4g IHsKPiA+ICAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZf cHJpdi0KPiA+ID5wb3dlcl9kb21haW5zOwo+ID4gIAlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICp3 ZWxsOwo+ID4gLQllbnVtIHBvcnQgcG9ydDsKPiA+IC0JdTMyIHZhbDsKPiA+ICAKPiA+ICAJZ2Vu OV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FCTEUpOwo+ID4gIAo+ID4gIAkv KiAxLiBFbmFibGUgUENIIHJlc2V0IGhhbmRzaGFrZS4gKi8KPiA+ICAJaW50ZWxfcGNoX3Jlc2V0 X2hhbmRzaGFrZShkZXZfcHJpdiwgIUhBU19QQ0hfTk9QKGRldl9wcml2KSk7Cj4gPiAgCj4gPiAt CWZvciAocG9ydCA9IFBPUlRfQTsgcG9ydCA8PSBQT1JUX0I7IHBvcnQrKykgewo+ID4gLQkJLyog Mi4gRW5hYmxlIERESSBjb21ibyBQSFkgY29tcC4gKi8KPiA+IC0JCXZhbCA9IEk5MTVfUkVBRChJ Q0xfUEhZX01JU0MocG9ydCkpOwo+ID4gLQkJdmFsICY9IH5JQ0xfUEhZX01JU0NfREVfSU9fQ09N UF9QV1JfRE9XTjsKPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BIWV9NSVNDKHBvcnQpLCB2YWwpOwo+ ID4gLQo+ID4gLQkJY25sX3NldF9wcm9jbW9uX3JlZl92YWx1ZXMoZGV2X3ByaXYsIHBvcnQpOwo+ ID4gLQo+ID4gLQkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFcwKHBvcnQpKTsKPiA+ IC0JCXZhbCB8PSBDT01QX0lOSVQ7Cj4gPiAtCQlJOTE1X1dSSVRFKElDTF9QT1JUX0NPTVBfRFcw KHBvcnQpLCB2YWwpOwo+ID4gLQo+ID4gLQkJLyogMy4gU2V0IHBvd2VyIGRvd24gZW5hYmxlLiAq Lwo+IAo+IElmIHJlc3BpbmluZyB0aGlzIHBhdGNoLCBwbGVhc2UgY29uc2lkZXIgYWxzbyBtb3Zl IHRoZSBzdGVwIGNvbW1lbnRzIHRvCj4gdGhlIG5ldyBmdW5jdGlvbnMuCgpJIGRvbid0IGZpbmQg dGhlc2UgY29tbWVudHMgdmVyeSB1c2VmdWwsIEkgdGhpbmsgdGhleSBqdXN0IHNheSB3aGF0IHRo ZQpjb2RlIGFscmVhZHkgZXhwcmVzc2VzIHdlbGwgYW5kIHlvdSBjYW4gbWF0Y2ggdGhhdCBqdXN0 IGZpbmUgYWdhaW5zdCB0aGUKc3BlYyB0b28uCgo+IAo+IFJldmlld2VkLWJ5OiBKb3PDqSBSb2Jl cnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KPiAKPiAKPiA+IC0JCXZhbCA9IEk5 MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzUocG9ydCkpOwo+ID4gLQkJdmFsIHw9IENMX1BPV0VSX0RP V05fRU5BQkxFOwo+ID4gLQkJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUocG9ydCksIHZhbCk7 Cj4gPiAtCX0KPiA+ICsJLyogMi0zLiAqLwo+ID4gKwlpY2xfY29tYm9fcGh5c19pbml0KGRldl9w cml2KTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogNC4gRW5hYmxlIFBvd2VyIFdlbGwgMSAoUEcx KS4KPiA+IEBAIC0zNjQwLDggKzM1MzksNiBAQCB2b2lkIGljbF9kaXNwbGF5X2NvcmVfdW5pbml0 KHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgewo+ID4gIAlzdHJ1 Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LQo+ID4gPnBv d2VyX2RvbWFpbnM7Cj4gPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKndlbGw7Cj4gPiAtCWVu dW0gcG9ydCBwb3J0Owo+ID4gLQl1MzIgdmFsOwo+ID4gIAo+ID4gIAlnZW45X3NldF9kY19zdGF0 ZShkZXZfcHJpdiwgRENfU1RBVEVfRElTQUJMRSk7Cj4gPiAgCj4gPiBAQCAtMzY2MywxNiArMzU2 MCw4IEBAIHZvaWQgaWNsX2Rpc3BsYXlfY29yZV91bmluaXQoc3RydWN0Cj4gPiBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiA+ICAJaW50ZWxfcG93ZXJfd2VsbF9kaXNhYmxlKGRldl9wcml2 LCB3ZWxsKTsKPiA+ICAJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKPiA+ICAK PiA+IC0JLyogNS4gRGlzYWJsZSBDb21wICovCj4gPiAtCWZvciAocG9ydCA9IFBPUlRfQTsgcG9y dCA8PSBQT1JUX0I7IHBvcnQrKykgewo+ID4gLQkJdmFsID0gSTkxNV9SRUFEKElDTF9QSFlfTUlT Qyhwb3J0KSk7Cj4gPiAtCQl2YWwgfD0gSUNMX1BIWV9NSVNDX0RFX0lPX0NPTVBfUFdSX0RPV047 Cj4gPiAtCQlJOTE1X1dSSVRFKElDTF9QSFlfTUlTQyhwb3J0KSwgdmFsKTsKPiA+IC0KPiA+IC0J CXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMChwb3J0KSk7Cj4gPiAtCQl2YWwgJj0g fkNPTVBfSU5JVDsKPiA+IC0JCUk5MTVfV1JJVEUoSUNMX1BPUlRfQ09NUF9EVzAocG9ydCksIHZh bCk7Cj4gPiAtCX0KPiA+ICsJLyogNS4gKi8KPiA+ICsJaWNsX2NvbWJvX3BoeXNfdW5pbml0KGRl dl9wcml2KTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgY2h2X3BoeV9jb250cm9sX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK