From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry (Junwei)" Subject: Re: [PATCH] drm/amdgpu: fix vm size and block size for VMPT (v3) Date: Wed, 5 Apr 2017 10:11:09 +0800 Message-ID: <58E4523D.8080005@amd.com> References: <1491014612-12448-1-git-send-email-Jerry.Zhang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Deucher, Alexander" , "Koenig, Christian" Cc: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gMDQvMDQvMjAxNyAwMzozNCBBTSwgRGV1Y2hlciwgQWxleGFuZGVyIHdyb3RlOgo+PiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBKdW53ZWkgWmhhbmcgW21haWx0bzpKZXJy eS5aaGFuZ0BhbWQuY29tXQo+PiBTZW50OiBGcmlkYXksIE1hcmNoIDMxLCAyMDE3IDEwOjQ0IFBN Cj4+IFRvOiBEZXVjaGVyLCBBbGV4YW5kZXI7IEtvZW5pZywgQ2hyaXN0aWFuCj4+IENjOiBhbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgWmhhbmcsIEplcnJ5Cj4+IFN1YmplY3Q6IFtQQVRD SF0gZHJtL2FtZGdwdTogZml4IHZtIHNpemUgYW5kIGJsb2NrIHNpemUgZm9yIFZNUFQgKHYzKQo+ Pgo+PiBGcm9tOiAiWmhhbmcsIEplcnJ5IiA8SmVycnkuWmhhbmdAYW1kLmNvbT4KPj4KPj4gdjI6 IHNldCBib3RoIG9mIHRoZW0gaW4gZ21jCj4+IHYzOiBtb3ZlIHZtIHNpemUgYW5kIGJsb2NrIHNp emUgaW4gdm0gbWFuYWdlcgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBKdW53ZWkgWmhhbmcgPEplcnJ5 LlpoYW5nQGFtZC5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2RldmljZS5jIHwgIDggLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5jICAgICB8IDIyICsrKysrKysrKysrKy0tLS0tLS0tLQo+PiAtCj4+ICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaCAgICAgfCAgNCArKystCj4+ICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhodWJfdjFfMC5jICAgfCAgMiArLQo+PiAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYyAgICAgIHwgMTAgKysrKysrKystLQo+PiAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYyAgICAgIHwgIDkgKysrKysrKy0t Cj4+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjhfMC5jICAgICAgfCAgOSArKysr KysrLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMgICAgICB8IDIx ICsrKysrKysrKysrKystLS0tLS0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbW1o dWJfdjFfMC5jICAgIHwgIDIgKy0KPj4gIDkgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygr KSwgMzUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZGV2aWNlLmMKPj4gaW5kZXggZmJiNGFmYi4uMWQwYzc0MiAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwo+PiBAQCAtMTA0MSwxNCArMTA0 MSw2IEBAIHN0YXRpYyBib29sIGFtZGdwdV9jaGVja19wb3RfYXJndW1lbnQoaW50IGFyZykKPj4K Pj4gIHN0YXRpYyB2b2lkIGFtZGdwdV9nZXRfYmxvY2tfc2l6ZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKPj4gIHsKPj4gLSAgICAgLyogZnJvbSBBSSwgYXNpYyBzdGFydHMgdG8gc3VwcG9y dCBtdWx0aXBsZSBsZXZlbCBWTVBUICovCj4+IC0gICAgIGlmIChhZGV2LT5hc2ljX3R5cGUgPj0g Q0hJUF9WRUdBMTApIHsKPj4gLSAgICAgICAgICAgICBpZiAoYW1kZ3B1X3ZtX2Jsb2NrX3NpemUg IT0gOSkKPj4gLSAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKGFkZXYtPmRldiwKPj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdWx0aS1WTVBUIGxpbWl0cyBibG9jayBzaXpl IHRvIG9uZQo+PiBwYWdlIVxuIik7Cj4+IC0gICAgICAgICAgICAgYW1kZ3B1X3ZtX2Jsb2NrX3Np emUgPSA5Owo+PiAtICAgICAgICAgICAgIHJldHVybjsKPj4gLSAgICAgfQo+PiAgICAgICAgLyog ZGVmaW5lcyBudW1iZXIgb2YgYml0cyBpbiBwYWdlIHRhYmxlIHZlcnN1cyBwYWdlIGRpcmVjdG9y eSwKPj4gICAgICAgICAqIGEgcGFnZSBpcyA0S0Igc28gd2UgaGF2ZSAxMiBiaXRzIG9mZnNldCwg bWluaW11bSA5IGJpdHMgaW4gdGhlCj4+ICAgICAgICAgKiBwYWdlIHRhYmxlIGFuZCB0aGUgcmVt YWluaW5nIGJpdHMgYXJlIGluIHRoZSBwYWdlIGRpcmVjdG9yeSAqLwo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4gYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+PiBpbmRleCA0M2FkYzRiLi40NmQzZjFhIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+PiBAQCAtMTAwLDEzICsx MDAsMTQgQEAgc3RhdGljIHVuc2lnbmVkIGFtZGdwdV92bV9udW1fZW50cmllcyhzdHJ1Y3QKPj4g YW1kZ3B1X2RldmljZSAqYWRldiwKPj4gICAgICAgIGlmIChsZXZlbCA9PSAwKQo+PiAgICAgICAg ICAgICAgICAvKiBGb3IgdGhlIHJvb3QgZGlyZWN0b3J5ICovCj4+ICAgICAgICAgICAgICAgIHJl dHVybiBhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4gPj4KPj4gLSAgICAgICAgICAgICAgICAgICAg IChhbWRncHVfdm1fYmxvY2tfc2l6ZSAqIGFkZXYtCj4+ID52bV9tYW5hZ2VyLm51bV9sZXZlbCk7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAoYWRldi0+dm1fbWFuYWdlci5ibG9ja19zaXplICoK Pj4gKyAgICAgICAgICAgICAgICAgICAgICBhZGV2LT52bV9tYW5hZ2VyLm51bV9sZXZlbCk7Cj4+ ICAgICAgICBlbHNlIGlmIChsZXZlbCA9PSBhZGV2LT52bV9tYW5hZ2VyLm51bV9sZXZlbCkKPj4g ICAgICAgICAgICAgICAgLyogRm9yIHRoZSBwYWdlIHRhYmxlcyBvbiB0aGUgbGVhdmVzICovCj4+ IC0gICAgICAgICAgICAgcmV0dXJuIEFNREdQVV9WTV9QVEVfQ09VTlQ7Cj4+ICsgICAgICAgICAg ICAgcmV0dXJuIEFNREdQVV9WTV9QVEVfQ09VTlQoYWRldik7Cj4+ICAgICAgICBlbHNlCj4+ICAg ICAgICAgICAgICAgIC8qIEV2ZXJ5dGhpbmcgaW4gYmV0d2VlbiAqLwo+PiAtICAgICAgICAgICAg IHJldHVybiAxIDw8IGFtZGdwdV92bV9ibG9ja19zaXplOwo+PiArICAgICAgICAgICAgIHJldHVy biAxIDw8IGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZTsKPj4gIH0KPj4KPj4gIC8qKgo+PiBA QCAtMjcxLDcgKzI3Miw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2FsbG9jX2xldmVscyhzdHJ1 Y3QKPj4gYW1kZ3B1X2RldmljZSAqYWRldiwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbGV2ZWwpCj4+ICB7Cj4+ICAgICAgICB1bnNpZ25lZCBzaGlmdCA9IChh ZGV2LT52bV9tYW5hZ2VyLm51bV9sZXZlbCAtIGxldmVsKSAqCj4+IC0gICAgICAgICAgICAgYW1k Z3B1X3ZtX2Jsb2NrX3NpemU7Cj4+ICsgICAgICAgICAgICAgYWRldi0+dm1fbWFuYWdlci5ibG9j a19zaXplOwo+PiAgICAgICAgdW5zaWduZWQgcHRfaWR4LCBmcm9tLCB0bzsKPj4gICAgICAgIGlu dCByOwo+Pgo+PiBAQCAtOTcwLDcgKzk3MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYW1kZ3B1X2JvICph bWRncHVfdm1fZ2V0X3B0KHN0cnVjdAo+PiBhbWRncHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnAsCj4+ ICAgICAgICB1bnNpZ25lZCBpZHgsIGxldmVsID0gcC0+YWRldi0+dm1fbWFuYWdlci5udW1fbGV2 ZWw7Cj4+Cj4+ICAgICAgICB3aGlsZSAoZW50cnktPmVudHJpZXMpIHsKPj4gLSAgICAgICAgICAg ICBpZHggPSBhZGRyID4+IChhbWRncHVfdm1fYmxvY2tfc2l6ZSAqIGxldmVsLS0pOwo+PiArICAg ICAgICAgICAgIGlkeCA9IGFkZHIgPj4gKHAtPmFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSAq IGxldmVsLS0pOwo+PiAgICAgICAgICAgICAgICBpZHggJT0gYW1kZ3B1X2JvX3NpemUoZW50cnkt PmJvKSAvIDg7Cj4+ICAgICAgICAgICAgICAgIGVudHJ5ID0gJmVudHJ5LT5lbnRyaWVzW2lkeF07 Cj4+ICAgICAgICB9Cj4+IEBAIC05OTcsNyArOTk4LDggQEAgc3RhdGljIHZvaWQgYW1kZ3B1X3Zt X3VwZGF0ZV9wdGVzKHN0cnVjdAo+PiBhbWRncHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcywK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgc3RhcnQsIHVpbnQ2 NF90IGVuZCwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZHN0 LCB1aW50NjRfdCBmbGFncykKPj4gIHsKPj4gLSAgICAgY29uc3QgdWludDY0X3QgbWFzayA9IEFN REdQVV9WTV9QVEVfQ09VTlQgLSAxOwo+PiArICAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IHBhcmFtcy0+YWRldjsKPj4gKyAgICAgY29uc3QgdWludDY0X3QgbWFzayA9IEFNREdQVV9W TV9QVEVfQ09VTlQoYWRldikgLSAxOwo+Pgo+PiAgICAgICAgdWludDY0X3QgY3VyX3BlX3N0YXJ0 LCBjdXJfbnB0ZXMsIGN1cl9kc3Q7Cj4+ICAgICAgICB1aW50NjRfdCBhZGRyOyAvKiBuZXh0IEdQ VSBhZGRyZXNzIHRvIGJlIHVwZGF0ZWQgKi8KPj4gQEAgLTEwMjEsNyArMTAyMyw3IEBAIHN0YXRp YyB2b2lkIGFtZGdwdV92bV91cGRhdGVfcHRlcyhzdHJ1Y3QKPj4gYW1kZ3B1X3B0ZV91cGRhdGVf cGFyYW1zICpwYXJhbXMsCj4+ICAgICAgICBpZiAoKGFkZHIgJiB+bWFzaykgPT0gKGVuZCAmIH5t YXNrKSkKPj4gICAgICAgICAgICAgICAgbnB0ZXMgPSBlbmQgLSBhZGRyOwo+PiAgICAgICAgZWxz ZQo+PiAtICAgICAgICAgICAgIG5wdGVzID0gQU1ER1BVX1ZNX1BURV9DT1VOVCAtIChhZGRyICYg bWFzayk7Cj4+ICsgICAgICAgICAgICAgbnB0ZXMgPSBBTURHUFVfVk1fUFRFX0NPVU5UKGFkZXYp IC0gKGFkZHIgJiBtYXNrKTsKPj4KPj4gICAgICAgIGN1cl9wZV9zdGFydCA9IGFtZGdwdV9ib19n cHVfb2Zmc2V0KHB0KTsKPj4gICAgICAgIGN1cl9wZV9zdGFydCArPSAoYWRkciAmIG1hc2spICog ODsKPj4gQEAgLTEwNDksNyArMTA1MSw3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV91cGRhdGVf cHRlcyhzdHJ1Y3QKPj4gYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpwYXJhbXMsCj4+ICAgICAg ICAgICAgICAgIGlmICgoYWRkciAmIH5tYXNrKSA9PSAoZW5kICYgfm1hc2spKQo+PiAgICAgICAg ICAgICAgICAgICAgICAgIG5wdGVzID0gZW5kIC0gYWRkcjsKPj4gICAgICAgICAgICAgICAgZWxz ZQo+PiAtICAgICAgICAgICAgICAgICAgICAgbnB0ZXMgPSBBTURHUFVfVk1fUFRFX0NPVU5UIC0g KGFkZHIgJiBtYXNrKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgIG5wdGVzID0gQU1ER1BVX1ZN X1BURV9DT1VOVChhZGV2KSAtIChhZGRyICYKPj4gbWFzayk7Cj4+Cj4+ICAgICAgICAgICAgICAg IG5leHRfcGVfc3RhcnQgPSBhbWRncHVfYm9fZ3B1X29mZnNldChwdCk7Cj4+ICAgICAgICAgICAg ICAgIG5leHRfcGVfc3RhcnQgKz0gKGFkZHIgJiBtYXNrKSAqIDg7Cj4+IEBAIC0xMTk2LDcgKzEx OTgsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9ib191cGRhdGVfbWFwcGluZyhzdHJ1Y3QKPj4g YW1kZ3B1X2RldmljZSAqYWRldiwKPj4gICAgICAgICAqIHJlc2VydmUgc3BhY2UgZm9yIG9uZSBj b21tYW5kIGV2ZXJ5ICgxIDw8IEJMT0NLX1NJWkUpCj4+ICAgICAgICAgKiAgZW50cmllcyBvciAy ayBkd29yZHMgKHdoYXRldmVyIGlzIHNtYWxsZXIpCj4+ICAgICAgICAgKi8KPj4gLSAgICAgbmNt ZHMgPSAobnB0ZXMgPj4gbWluKGFtZGdwdV92bV9ibG9ja19zaXplLCAxMSkpICsgMTsKPj4gKyAg ICAgbmNtZHMgPSAobnB0ZXMgPj4gbWluKGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSwgMTEp KSArIDE7Cj4+Cj4+ICAgICAgICAvKiBwYWRkaW5nLCBldGMuICovCj4+ICAgICAgICBuZHcgPSA2 NDsKPj4gQEAgLTIwNjcsNyArMjA2OSw3IEBAIHZvaWQgYW1kZ3B1X3ZtX2JvX2ludmFsaWRhdGUo c3RydWN0Cj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+ICBpbnQgYW1kZ3B1X3ZtX2luaXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtKQo+PiAgewo+PiAg ICAgICAgY29uc3QgdW5zaWduZWQgYWxpZ24gPSBtaW4oQU1ER1BVX1ZNX1BUQl9BTElHTl9TSVpF LAo+PiAtICAgICAgICAgICAgIEFNREdQVV9WTV9QVEVfQ09VTlQgKiA4KTsKPj4gKyAgICAgICAg ICAgICBBTURHUFVfVk1fUFRFX0NPVU5UKGFkZXYpICogOCk7Cj4+ICAgICAgICB1bnNpZ25lZCBy aW5nX2luc3RhbmNlOwo+PiAgICAgICAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nOwo+PiAgICAg ICAgc3RydWN0IGFtZF9zY2hlZF9ycSAqcnE7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5oCj4+IGluZGV4IDEwMmIxZjcuLjEyNDIyNjQgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+IEBAIC00NSw3ICs0NSw3IEBACj4+ICAjZGVm aW5lIEFNREdQVV9WTV9NQVhfVVBEQVRFX1NJWkUgICAgMHgzRkZGRgo+Pgo+PiAgLyogbnVtYmVy IG9mIGVudHJpZXMgaW4gcGFnZSB0YWJsZSAqLwo+PiAtI2RlZmluZSBBTURHUFVfVk1fUFRFX0NP VU5UICgxIDw8IGFtZGdwdV92bV9ibG9ja19zaXplKQo+PiArI2RlZmluZSBBTURHUFVfVk1fUFRF X0NPVU5UKGFkZXYpICgxIDw8IGFkZXYtCj4+ID52bV9tYW5hZ2VyLmJsb2NrX3NpemUpCj4KPiBG b3Igc2FmZXR5LCBwdXQgcGFyZW5zIGFyb3VuZCBhZGV2LiAgRS5nLiwKPiAjZGVmaW5lIEFNREdQ VV9WTV9QVEVfQ09VTlQoYWRldikgKDEgPDwgKGFkZXYpLT52bV9tYW5hZ2VyLmJsb2NrX3NpemUp CgpZZWFoLCB0aGFua3MgdG8gcG9pbnQgaXQgb3V0LgoKPgo+IFdpdGggdGhhdCBmaXhlZDoKPiBS ZXZpZXdlZC1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgo+Cj4g QXMgYSBmb2xsb3cgb24gcGF0Y2gsIGl0IHdvdWxkIGJlIG5pY2UgdG8gYWRkIHNvbWUgcmVhc29u YWJsZSBjbGFtcGluZyBpbiB0aGUKPiBnbWMgZmlsZXMgc28gd2UgY2FuIHN0aWxsIG92ZXJyaWRl IHRoZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBub3QgY2F1c2UgdG9vIG11Y2gKPiBwcm9ibGVtIHdp dGggbXVsdGlwbGUgYXNpY3MgaW4gdGhlIHNhbWUgc3lzdGVtLgoKQ291bGQgeW91IGVsYWJvcmF0 ZSBpdCBhIGJpdCBtb3JlLCBhYm91dCAiY2xhbXBpbmciPwoKSmVycnkKPgo+IEFsZXgKPgo+Pgo+ PiAgLyogUFRCcyAoUGFnZSBUYWJsZSBCbG9ja3MpIG5lZWQgdG8gYmUgYWxpZ25lZCB0byAzMksg Ki8KPj4gICNkZWZpbmUgQU1ER1BVX1ZNX1BUQl9BTElHTl9TSVpFICAgMzI3NjgKPj4gQEAgLTE1 NSw2ICsxNTUsOCBAQCBzdHJ1Y3QgYW1kZ3B1X3ZtX21hbmFnZXIgewo+Pgo+PiAgICAgICAgdWlu dDY0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wZm47Cj4+ICAgICAgICB1 aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2xldmVsOwo+PiArICAg ICB1aW50NjRfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1fc2l6ZTsKPj4gKyAg ICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3NpemU7Cj4+ ICAgICAgICAvKiB2cmFtIGJhc2UgYWRkcmVzcyBmb3IgcGFnZSB0YWJsZSBlbnRyeSAgKi8KPj4g ICAgICAgIHU2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cmFtX2Jhc2Vf b2Zmc2V0Owo+PiAgICAgICAgLyogaXMgdm0gZW5hYmxlZD8gKi8KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeGh1Yl92MV8wLmMKPj4gYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhodWJfdjFfMC5jCj4+IGluZGV4IDMwZWYzMTIuLjkyMjNjMmIgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeGh1Yl92MV8wLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4aHViX3YxXzAuYwo+PiBAQCAtMjIy LDcgKzIyMiw3IEBAIGludCBnZnhodWJfdjFfMF9nYXJ0X2VuYWJsZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZQo+PiAqYWRldikKPj4KPj4gICAgICAgIEVYRUNVVEVfUFJPVEVDVElPTl9GQVVMVF9FTkFC TEVfREVGQVVMVCwgMSk7Cj4+ICAgICAgICAgICAgICAgIHRtcCA9IFJFR19TRVRfRklFTEQodG1w LCBWTV9DT05URVhUMV9DTlRMLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFH RV9UQUJMRV9CTE9DS19TSVpFLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YW1kZ3B1X3ZtX2Jsb2NrX3NpemUgLSA5KTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWRldi0+dm1fbWFuYWdlci5ibG9ja19zaXplIC0gOSk7Cj4+ICAgICAgICAgICAgICAgIFdS RUczMihTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLAo+PiBtbVZNX0NPTlRFWFQxX0NOVEwpICsgaSwg dG1wKTsKPj4gICAgICAgICAgICAgICAgV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoR0MsIDAsCj4+ IG1tVk1fQ09OVEVYVDFfUEFHRV9UQUJMRV9TVEFSVF9BRERSX0xPMzIpICsgaSoyLCAwKTsKPj4g ICAgICAgICAgICAgICAgV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoR0MsIDAsCj4+IG1tVk1fQ09O VEVYVDFfUEFHRV9UQUJMRV9TVEFSVF9BRERSX0hJMzIpICsgaSoyLCAwKTsKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMKPj4gYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5jCj4+IGluZGV4IGQ5NTg2NjAuLjMwZDVjNDIgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYwo+PiBAQCAtNTQzLDcgKzU0 Myw4IEBAIHN0YXRpYyBpbnQgZ21jX3Y2XzBfZ2FydF9lbmFibGUoc3RydWN0Cj4+IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCj4+ICAgICAgICBXUkVHMzIobW1WTV9DT05URVhUMV9DTlRMLAo+PiAgICAg ICAgICAgICAgIFZNX0NPTlRFWFQxX0NOVExfX0VOQUJMRV9DT05URVhUX01BU0sgfAo+PiAgICAg ICAgICAgICAgICgxVUwgPDwgVk1fQ09OVEVYVDFfQ05UTF9fUEFHRV9UQUJMRV9ERVBUSF9fU0hJ RlQpIHwKPj4gLSAgICAgICAgICAgICgoYW1kZ3B1X3ZtX2Jsb2NrX3NpemUgLSA5KSA8PAo+PiBW TV9DT05URVhUMV9DTlRMX19QQUdFX1RBQkxFX0JMT0NLX1NJWkVfX1NISUZUKSk7Cj4+ICsgICAg ICAgICAgICAoKGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSAtIDkpCj4+ICsgICAgICAgICAg ICA8PCBWTV9DT05URVhUMV9DTlRMX19QQUdFX1RBQkxFX0JMT0NLX1NJWkVfX1NISUZUKSk7Cj4+ ICAgICAgICBpZiAoYW1kZ3B1X3ZtX2ZhdWx0X3N0b3AgPT0KPj4gQU1ER1BVX1ZNX0ZBVUxUX1NU T1BfQUxXQVlTKQo+PiAgICAgICAgICAgICAgICBnbWNfdjZfMF9zZXRfZmF1bHRfZW5hYmxlX2Rl ZmF1bHQoYWRldiwgZmFsc2UpOwo+PiAgICAgICAgZWxzZQo+PiBAQCAtODQ4LDcgKzg0OSwxMiBA QCBzdGF0aWMgaW50IGdtY192Nl8wX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+PiAgICAgICAgaWYg KHIpCj4+ICAgICAgICAgICAgICAgIHJldHVybiByOwo+Pgo+PiAtICAgICBhZGV2LT52bV9tYW5h Z2VyLm1heF9wZm4gPSBhbWRncHVfdm1fc2l6ZSA8PCAxODsKPj4gKyAgICAgYWRldi0+dm1fbWFu YWdlci52bV9zaXplID0gYW1kZ3B1X3ZtX3NpemU7Cj4+ICsgICAgIGFkZXYtPnZtX21hbmFnZXIu YmxvY2tfc2l6ZSA9IGFtZGdwdV92bV9ibG9ja19zaXplOwo+PiArICAgICBhZGV2LT52bV9tYW5h Z2VyLm1heF9wZm4gPSBhZGV2LT52bV9tYW5hZ2VyLnZtX3NpemUgPDwgMTg7Cj4+ICsKPj4gKyAg ICAgRFJNX0lORk8oInZtIHNpemUgaXMgJWQgR0IsIGJsb2NrIHNpemUgaXMgJWQtYml0XG4iLAo+ PiArICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFnZXIudm1fc2l6ZSwgYWRldi0KPj4gPnZtX21h bmFnZXIuYmxvY2tfc2l6ZSk7Cj4+Cj4+ICAgICAgICBhZGV2LT5tYy5tY19tYXNrID0gMHhmZmZm ZmZmZmZmVUxMOwo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z21jX3Y3XzAuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192N18wLmMKPj4g aW5kZXggMGMwYTYwMS4uOTQyN2M3ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ21jX3Y3XzAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9n bWNfdjdfMC5jCj4+IEBAIC02MzksNyArNjM5LDcgQEAgc3RhdGljIGludCBnbWNfdjdfMF9nYXJ0 X2VuYWJsZShzdHJ1Y3QKPj4gYW1kZ3B1X2RldmljZSAqYWRldikKPj4gICAgICAgIHRtcCA9IFJF R19TRVRfRklFTEQodG1wLCBWTV9DT05URVhUMV9DTlRMLAo+PiBFTkFCTEVfQ09OVEVYVCwgMSk7 Cj4+ICAgICAgICB0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgVk1fQ09OVEVYVDFfQ05UTCwKPj4g UEFHRV9UQUJMRV9ERVBUSCwgMSk7Cj4+ICAgICAgICB0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwg Vk1fQ09OVEVYVDFfQ05UTCwKPj4gUEFHRV9UQUJMRV9CTE9DS19TSVpFLAo+PiAtICAgICAgICAg ICAgICAgICAgICAgICAgIGFtZGdwdV92bV9ibG9ja19zaXplIC0gOSk7Cj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgYWRldi0+dm1fbWFuYWdlci5ibG9ja19zaXplIC0gOSk7Cj4+ICAgICAg ICBXUkVHMzIobW1WTV9DT05URVhUMV9DTlRMLCB0bXApOwo+PiAgICAgICAgaWYgKGFtZGdwdV92 bV9mYXVsdF9zdG9wID09Cj4+IEFNREdQVV9WTV9GQVVMVF9TVE9QX0FMV0FZUykKPj4gICAgICAg ICAgICAgICAgZ21jX3Y3XzBfc2V0X2ZhdWx0X2VuYWJsZV9kZWZhdWx0KGFkZXYsIGZhbHNlKTsK Pj4gQEAgLTk5OCw3ICs5OTgsMTIgQEAgc3RhdGljIGludCBnbWNfdjdfMF9zd19pbml0KHZvaWQg KmhhbmRsZSkKPj4gICAgICAgICAqIEN1cnJlbnRseSBzZXQgdG8gNEdCICgoMSA8PCAyMCkgNGsg cGFnZXMpLgo+PiAgICAgICAgICogTWF4IEdQVVZNIHNpemUgZm9yIGNheW1hbiBhbmQgU0kgaXMg NDAgYml0cy4KPj4gICAgICAgICAqLwo+PiAtICAgICBhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4g PSBhbWRncHVfdm1fc2l6ZSA8PCAxODsKPj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci52bV9zaXpl ID0gYW1kZ3B1X3ZtX3NpemU7Cj4+ICsgICAgIGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSA9 IGFtZGdwdV92bV9ibG9ja19zaXplOwo+PiArICAgICBhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4g PSBhZGV2LT52bV9tYW5hZ2VyLnZtX3NpemUgPDwgMTg7Cj4+ICsKPj4gKyAgICAgRFJNX0lORk8o InZtIHNpemUgaXMgJWQgR0IsIGJsb2NrIHNpemUgaXMgJWQtYml0XG4iLAo+PiArICAgICAgICAg ICAgIGFkZXYtPnZtX21hbmFnZXIudm1fc2l6ZSwgYWRldi0KPj4gPnZtX21hbmFnZXIuYmxvY2tf c2l6ZSk7Cj4+Cj4+ICAgICAgICAvKiBTZXQgdGhlIGludGVybmFsIE1DIGFkZHJlc3MgbWFzawo+ PiAgICAgICAgICogVGhpcyBpcyB0aGUgbWF4IGFkZHJlc3Mgb2YgdGhlIEdQVSdzCj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjhfMC5jCj4+IGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAuYwo+PiBpbmRleCBkMTlkMWM1Li4xNjc0MmJl IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjhfMC5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OF8wLmMKPj4gQEAgLTg0OCw3 ICs4NDgsNyBAQCBzdGF0aWMgaW50IGdtY192OF8wX2dhcnRfZW5hYmxlKHN0cnVjdAo+PiBhbWRn cHVfZGV2aWNlICphZGV2KQo+PiAgICAgICAgdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFZNX0NP TlRFWFQxX0NOVEwsCj4+IFdSSVRFX1BST1RFQ1RJT05fRkFVTFRfRU5BQkxFX0RFRkFVTFQsIDEp Owo+PiAgICAgICAgdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFZNX0NPTlRFWFQxX0NOVEwsCj4+ IEVYRUNVVEVfUFJPVEVDVElPTl9GQVVMVF9FTkFCTEVfREVGQVVMVCwgMSk7Cj4+ICAgICAgICB0 bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgVk1fQ09OVEVYVDFfQ05UTCwKPj4gUEFHRV9UQUJMRV9C TE9DS19TSVpFLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV92bV9ibG9ja19z aXplIC0gOSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgYWRldi0+dm1fbWFuYWdlci5i bG9ja19zaXplIC0gOSk7Cj4+ICAgICAgICBXUkVHMzIobW1WTV9DT05URVhUMV9DTlRMLCB0bXAp Owo+PiAgICAgICAgaWYgKGFtZGdwdV92bV9mYXVsdF9zdG9wID09Cj4+IEFNREdQVV9WTV9GQVVM VF9TVE9QX0FMV0FZUykKPj4gICAgICAgICAgICAgICAgZ21jX3Y4XzBfc2V0X2ZhdWx0X2VuYWJs ZV9kZWZhdWx0KGFkZXYsIGZhbHNlKTsKPj4gQEAgLTEwODIsNyArMTA4MiwxMiBAQCBzdGF0aWMg aW50IGdtY192OF8wX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+PiAgICAgICAgICogQ3VycmVudGx5 IHNldCB0byA0R0IgKCgxIDw8IDIwKSA0ayBwYWdlcykuCj4+ICAgICAgICAgKiBNYXggR1BVVk0g c2l6ZSBmb3IgY2F5bWFuIGFuZCBTSSBpcyA0MCBiaXRzLgo+PiAgICAgICAgICovCj4+IC0gICAg IGFkZXYtPnZtX21hbmFnZXIubWF4X3BmbiA9IGFtZGdwdV92bV9zaXplIDw8IDE4Owo+PiArICAg ICBhZGV2LT52bV9tYW5hZ2VyLnZtX3NpemUgPSBhbWRncHVfdm1fc2l6ZTsKPj4gKyAgICAgYWRl di0+dm1fbWFuYWdlci5ibG9ja19zaXplID0gYW1kZ3B1X3ZtX2Jsb2NrX3NpemU7Cj4+ICsgICAg IGFkZXYtPnZtX21hbmFnZXIubWF4X3BmbiA9IGFkZXYtPnZtX21hbmFnZXIudm1fc2l6ZSA8PCAx ODsKPj4gKwo+PiArICAgICBEUk1fSU5GTygidm0gc2l6ZSBpcyAlZCBHQiwgYmxvY2sgc2l6ZSBp cyAlZC1iaXRcbiIsCj4+ICsgICAgICAgICAgICAgYWRldi0+dm1fbWFuYWdlci52bV9zaXplLCBh ZGV2LQo+PiA+dm1fbWFuYWdlci5ibG9ja19zaXplKTsKPj4KPj4gICAgICAgIC8qIFNldCB0aGUg aW50ZXJuYWwgTUMgYWRkcmVzcyBtYXNrCj4+ICAgICAgICAgKiBUaGlzIGlzIHRoZSBtYXggYWRk cmVzcyBvZiB0aGUgR1BVJ3MKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2dtY192OV8wLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5j Cj4+IGluZGV4IGRmNjlhYWUuLjIxODBlZGIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2dtY192OV8wLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ21jX3Y5XzAuYwo+PiBAQCAtNTQzLDExICs1NDMsMjMgQEAgc3RhdGljIGludCBnbWNfdjlf MF9zd19pbml0KHZvaWQgKmhhbmRsZSkKPj4KPj4gICAgICAgIGlmIChhZGV2LT5mbGFncyAmIEFN RF9JU19BUFUpIHsKPj4gICAgICAgICAgICAgICAgYWRldi0+bWMudnJhbV90eXBlID0gQU1ER1BV X1ZSQU1fVFlQRV9VTktOT1dOOwo+PiArICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFnZXIudm1f c2l6ZSA9IGFtZGdwdV92bV9zaXplOwo+PiArICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFnZXIu YmxvY2tfc2l6ZSA9IGFtZGdwdV92bV9ibG9ja19zaXplOwo+PiAgICAgICAgfSBlbHNlIHsKPj4g ICAgICAgICAgICAgICAgLyogWFhYIERvbid0IGtub3cgaG93IHRvIGdldCBWUkFNIHR5cGUgeWV0 LiAqLwo+PiAgICAgICAgICAgICAgICBhZGV2LT5tYy52cmFtX3R5cGUgPSBBTURHUFVfVlJBTV9U WVBFX0hCTTsKPj4gKyAgICAgICAgICAgICAvKgo+PiArICAgICAgICAgICAgICAqIFRvIGZ1bGZp bGwgNC1sZXZlbCBwYWdlIHN1cHBvcnQsCj4+ICsgICAgICAgICAgICAgICogdm0gc2l6ZSBpcyAy NTZUQiAoNDhiaXQpLCBtYXhpbXVtIHNpemUgb2YgVmVnYTEwLAo+PiArICAgICAgICAgICAgICAq IGJsb2NrIHNpemUgNTEyICg5Yml0KQo+PiArICAgICAgICAgICAgICAqLwo+PiArICAgICAgICAg ICAgIGFkZXYtPnZtX21hbmFnZXIudm1fc2l6ZSA9IDFVIDw8IDE4Owo+PiArICAgICAgICAgICAg IGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSA9IDk7Cj4+ICAgICAgICB9Cj4+Cj4+ICsgICAg IERSTV9JTkZPKCJ2bSBzaXplIGlzICVkIEdCLCBibG9jayBzaXplIGlzICVkLWJpdFxuIiwKPj4g KyAgICAgICAgICAgICBhZGV2LT52bV9tYW5hZ2VyLnZtX3NpemUsIGFkZXYtCj4+ID52bV9tYW5h Z2VyLmJsb2NrX3NpemUpOwo+PiArCj4+ICAgICAgICAvKiBUaGlzIGludGVycnVwdCBpcyBWTUMg cGFnZSBmYXVsdC4qLwo+PiAgICAgICAgciA9IGFtZGdwdV9pcnFfYWRkX2lkKGFkZXYsIEFNREdQ VV9JSF9DTElFTlRJRF9WTUMsIDAsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm YWRldi0+bWMudm1fZmF1bHQpOwo+PiBAQCAtNTU3LDE0ICs1NjksNyBAQCBzdGF0aWMgaW50IGdt Y192OV8wX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+PiAgICAgICAgaWYgKHIpCj4+ICAgICAgICAg ICAgICAgIHJldHVybiByOwo+Pgo+PiAtICAgICAvKiBCZWNhdXNlIG9mIGZvdXIgbGV2ZWwgVk1Q VHMsIHZtIHNpemUgaXMgYXQgbGVhc3QgNTEyR0IuCj4+IC0gICAgICAqIFRoZSBtYXhpbXVtIHNp emUgaXMgMjU2VEIgKDQ4Yml0KS4KPj4gLSAgICAgICovCj4+IC0gICAgIGlmIChhbWRncHVfdm1f c2l6ZSA8IDUxMikgewo+PiAtICAgICAgICAgICAgIERSTV9XQVJOKCJWTSBzaXplIGlzIGF0IGxl YXN0IDUxMkdCIVxuIik7Cj4+IC0gICAgICAgICAgICAgYW1kZ3B1X3ZtX3NpemUgPSA1MTI7Cj4+ IC0gICAgIH0KPj4gLSAgICAgYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuID0gKHVpbnQ2NF90KWFt ZGdwdV92bV9zaXplIDw8IDE4Owo+PiArICAgICBhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4gPSBh ZGV2LT52bV9tYW5hZ2VyLnZtX3NpemUgPDwgMTg7Cj4+Cj4+ICAgICAgICAvKiBTZXQgdGhlIGlu dGVybmFsIE1DIGFkZHJlc3MgbWFzawo+PiAgICAgICAgICogVGhpcyBpcyB0aGUgbWF4IGFkZHJl c3Mgb2YgdGhlIEdQVSdzCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9tbWh1Yl92MV8wLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9tbWh1Yl92MV8w LmMKPj4gaW5kZXggMjY2YTBmNC4uMmNjMWQ1OCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvbW1odWJfdjFfMC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L21taHViX3YxXzAuYwo+PiBAQCAtMjQyLDcgKzI0Miw3IEBAIGludCBtbWh1Yl92MV8w X2dhcnRfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlCj4+ICphZGV2KQo+Pgo+PiAgICAgICAg RVhFQ1VURV9QUk9URUNUSU9OX0ZBVUxUX0VOQUJMRV9ERUZBVUxULCAxKTsKPj4gICAgICAgICAg ICAgICAgdG1wID0gUkVHX1NFVF9GSUVMRCh0bXAsIFZNX0NPTlRFWFQxX0NOVEwsCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1RBQkxFX0JMT0NLX1NJWkUsCj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV92bV9ibG9ja19zaXplIC0gOSk7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSAt IDkpOwo+PiAgICAgICAgICAgICAgICBXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwK Pj4gbW1WTV9DT05URVhUMV9DTlRMKSArIGksIHRtcCk7Cj4+ICAgICAgICAgICAgICAgIFdSRUcz MihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLAo+PiBtbVZNX0NPTlRFWFQxX1BBR0VfVEFCTEVf U1RBUlRfQUREUl9MTzMyKSArIGkqMiwgMCk7Cj4+ICAgICAgICAgICAgICAgIFdSRUczMihTT0Mx NV9SRUdfT0ZGU0VUKE1NSFVCLCAwLAo+PiBtbVZNX0NPTlRFWFQxX1BBR0VfVEFCTEVfU1RBUlRf QUREUl9ISTMyKSArIGkqMiwgMCk7Cj4+IC0tCj4+IDEuOS4xCj4KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==