From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0D596E897 for ; Wed, 4 Dec 2019 13:09:10 +0000 (UTC) From: "Kahola, Mika" Date: Wed, 4 Dec 2019 13:09:08 +0000 Message-ID: References: <20191129103843.5765-1-imre.deak@intel.com> <20191129103843.5765-6-imre.deak@intel.com> In-Reply-To: <20191129103843.5765-6-imre.deak@intel.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 5/6] lib: Add vebox copy support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "igt-dev@lists.freedesktop.org" , "Deak, Imre" Cc: "Welty, Brian" List-ID: T24gRnJpLCAyMDE5LTExLTI5IGF0IDEyOjM4ICswMjAwLCBJbXJlIERlYWsgd3JvdGU6Cj4gVG8g cHJvZHVjZSBzdXJmYWNlcyB0aGF0IGFyZSBjb21wcmVzc2VkIHVzaW5nIHRoZSBtZWRpYSBjb21w cmVzc2lvbgo+IGZvcm1hdCB3ZSBuZWVkIHRvIHVzZSBvbmUgb2YgdGhlIG1lZGlhIGVuZ2luZXMu IFRoZSBzaW1wbGVzdCB3YXkgZm9yCj4gdGhpcyBpcyB0byB1c2UgdGhlIHZlYm94IGVuZ2luZSdz IHRpbGluZyBjb252ZXJ0IGNvbW1hbmQsIHNvIGFkZAo+IHN1cHBvcnQKPiBmb3IgdGhpcy4KPiAK PiBDYzogTWlrYSBLYWhvbGEgPG1pa2Eua2Fob2xhQGludGVsLmNvbT4KPiBDYzogQnJpYW4gV2Vs dHkgPGJyaWFuLndlbHR5QGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwu Y29tPgo+IC0tLQo+ICBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICAgIHwgICAxICsKPiAgbGli L2lndF9mYi5jICAgICAgICAgICAgICAgICB8ICA3NCArKysrKysrLS0tCj4gIGxpYi9pbnRlbF9h dXhfcGd0YWJsZS5jICAgICAgfCAgMTAgKy0KPiAgbGliL2ludGVsX2F1eF9wZ3RhYmxlLmggICAg ICB8ICAgMyArLQo+ICBsaWIvaW50ZWxfYmF0Y2hidWZmZXIuYyAgICAgIHwgIDExICsrCj4gIGxp Yi9pbnRlbF9iYXRjaGJ1ZmZlci5oICAgICAgfCAgMzAgKysrLQo+ICBsaWIvaW50ZWxfcmVnLmgg ICAgICAgICAgICAgIHwgICAxICsKPiAgbGliL2lvY3RsX3dyYXBwZXJzLmggICAgICAgICB8ICAg MSArCj4gIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAgIDEgKwo+ICBsaWIvcmVuZGVy Y29weV9nZW45LmMgICAgICAgIHwgICAyICstCj4gIGxpYi92ZWJveGNvcHkuaCAgICAgICAgICAg ICAgfCAgIDkgKysKPiAgbGliL3ZlYm94Y29weV9nZW4xMi5jICAgICAgICB8IDI2OQo+ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHRlc3RzL2k5MTUvZ2VtX3JlbmRlcl9j b3B5LmMgfCAgIDEgKwo+ICAxMyBmaWxlcyBjaGFuZ2VkLCAzODcgaW5zZXJ0aW9ucygrKSwgMjYg ZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmVib3hjb3B5LmgKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYi92ZWJveGNvcHlfZ2VuMTIuYwo+IAo+IGRpZmYgLS1naXQgYS9s aWIvTWFrZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggOWQxYTRl MDYuLjBlZmFlYTFiIDEwMDY0NAo+IC0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIv bGliL01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMTI5LDYgKzEyOSw3IEBAIGxpYl9zb3VyY2VfbGlz dCA9CSAJXAo+ICAJaWd0X3ZjNC5oCQlcCj4gIAlpZ3RfYW1kLmMJCVwKPiAgCWlndF9hbWQuaAkJ XAo+ICsJdmVib3hjb3B5X2dlbjEyLmMJXAo+ICAJJChOVUxMKQo+ICAKPiAgLlBIT05ZOiB2ZXJz aW9uLmgudG1wCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwoKVGhl IHBhdGNoIGRvZXNuJ3QgYXBwbHkuIFRoaXMgaXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgSSBtZXJn ZWQgbXkgR0VOMTIKQ0NTIENsZWFyIENvbG9yIHBhdGNoZXMgdGhhdCB0b3VjaGVzIGlndF9mYi5j IHRvby4gSSBndWVzcywgd2UgbmVlZCB0bwpmaXggdGhpcyBwYXJ0IG9mIHRoZSBwYXRjaC4gT3Ro ZXJ3aXNlLCB0aGUgcGF0Y2ggbG9va3Mgb2sgdG8gbWUuCgoKPiBpbmRleCAxZDFlMGQyMi4uM2Ji NGU1YTEgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9mYi5jCj4gKysrIGIvbGliL2lndF9mYi5jCj4g QEAgLTQwMiw2ICs0MDIsNyBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXplKGludCBmZCwgdWlu dDY0X3QKPiBtb2RpZmllciwgaW50IGZiX2JwcCwKPiAgCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRf TU9EX1lfVElMRUQ6Cj4gIAljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoK PiAgCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTOgo+ICsJ Y2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6Cj4gIAkJaWd0 X3JlcXVpcmVfaW50ZWwoZmQpOwo+ICAJCWlmIChpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZp ZChmZCkpID09IDIpIHsKPiAgCQkJKndpZHRoX3JldCA9IDEyODsKPiBAQCAtNDY2LDE0ICs0Njcs MTkgQEAgdm9pZCBpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90Cj4gbW9kaWZp ZXIsIGludCBmYl9icHAsCj4gIAl9Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIGlzX2dlbjEyX21j X2Njc19tb2RpZmllcih1aW50NjRfdCBtb2RpZmllcikKPiArewo+ICsJcmV0dXJuIG1vZGlmaWVy ID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0NDUzsKPiArfQo+ICsK PiAgc3RhdGljIGJvb2wgaXNfZ2VuMTJfY2NzX21vZGlmaWVyKHVpbnQ2NF90IG1vZGlmaWVyKQo+ ICB7Cj4gLQlyZXR1cm4gbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJf UkNfQ0NTOwo+ICsJcmV0dXJuIGlzX2dlbjEyX21jX2Njc19tb2RpZmllcihtb2RpZmllcikgfHwK PiArCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M7Cj4g IH0KPiAgCj4gIHN0YXRpYyBib29sIGlzX2Njc19tb2RpZmllcih1aW50NjRfdCBtb2RpZmllcikK PiAgewo+IC0KPiAgCXJldHVybiBpc19nZW4xMl9jY3NfbW9kaWZpZXIobW9kaWZpZXIpIHx8Cj4g IAkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8Cj4gIAkJbW9kaWZp ZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzsKPiBAQCAtNzE5LDYgKzcyNSw3IEBA IHVpbnQ2NF90IGlndF9mYl9tb2RfdG9fdGlsaW5nKHVpbnQ2NF90IG1vZGlmaWVyKQo+ICAJY2Fz ZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKPiAgCWNhc2UgTE9DQUxfSTkxNV9GT1JN QVRfTU9EX1lfVElMRURfQ0NTOgo+ICAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxF RF9HRU4xMl9SQ19DQ1M6Cj4gKwljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dF TjEyX01DX0NDUzoKPiAgCQlyZXR1cm4gSTkxNV9USUxJTkdfWTsKPiAgCWNhc2UgTE9DQUxfSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+ICAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZf VElMRURfQ0NTOgo+IEBAIC0xODk3LDcgKzE5MDQsNyBAQCBzdGF0aWMgYm9vbCBibGl0dGVyX29r KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gLXN0 YXRpYyBib29sIHVzZV9yZW5kZXJjb3B5KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICtzdGF0 aWMgYm9vbCB1c2VfZW5naW5lY29weShjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYikKPiAgewo+ICAJ cmV0dXJuIGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpIHx8Cj4gIAkJKGZiLT5tb2RpZmll ciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQgJiYKPiBAQCAtMTk0MywyNSArMTk1MCw1MiBA QCBzdGF0aWMgdm9pZCBmaW5pX2J1ZihzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQo+ICAJZHJtX2ludGVs X2JvX3VucmVmZXJlbmNlKGJ1Zi0+Ym8pOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCByZW5kZXJj b3B5KHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCwKPiAtCQkgICAgICAgY29uc3Qgc3RydWN0 IGlndF9mYiAqZHN0X2ZiLAo+IC0JCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2ZiICpzcmNfZmIp Cj4gKy8qKgo+ICsgKiBjb3B5X3dpdGhfZW5naW5lOgo+ICsgKiBAYmxpdDogY29udGV4dCBmb3Ig dGhlIGNvcHkgb3BlcmF0aW9uCj4gKyAqIEBkc3RfZmI6IGRlc3RpbmF0aW9uIGJ1ZmZlcgo+ICsg KiBAc3JjX2ZiOiBzb3VyY2UgYnVmZmVyCj4gKyAqCj4gKyAqIENvcHkgQHNyY19mYiB0byBAZHN0 X2ZiIHVzaW5nIGVpdGhlciB0aGUgcmVuZGVyIG9yIHZlYm94IGVuZ2luZS4KPiBUaGUgZW5naW5l Cj4gKyAqIGlzIHNlbGVjdGVkIGJhc2VkIG9uIHRoZSBjb21wcmVzc2lvbiBzdXJmYWNlIGZvcm1h dCByZXF1aXJlZCBieQo+IHRoZSBAZHN0X2ZiCj4gKyAqIEZCIG1vZGlmaWVyLiBPbiBHRU4xMisg YSBnaXZlbiBjb21wcmVzc2lvbiBmb3JtYXQgKHJlbmRlciBvcgo+IG1lZGlhKSBjYW4gYmUKPiAr ICogcHJvZHVjZWQgb25seSBieSB0aGUgc2VsZWN0ZWQgZW5naW5lOgo+ICsgKiAtIEZvciBHRU4x MiBtZWRpYSBjb21wcmVzc2VkOiB2ZWJveCBlbmdpbmUKPiArICogLSBGb3IgdW5jb21wcmVzc2Vk LCBwcmUtR0VOMTIgY29tcHJlc3NlZCwgR0VOMTIrIHJlbmRlcgo+IGNvbXByZXNzZWQ6IHJlbmRl ciBlbmdpbmUKPiArICogTm90ZSB0aGF0IGJvdGggR0VOMTIgZW5naW5lIGlzIGNhcGFibGUgb2Yg cmVhZGluZyBlaXRoZXIKPiBjb21wcmVzc2lvbiBmb3JtYXRzLgo+ICsgKi8KPiArc3RhdGljIHZv aWQgY29weV93aXRoX2VuZ2luZShzdHJ1Y3QgZmJfYmxpdF91cGxvYWQgKmJsaXQsCj4gKwkJCSAg ICAgY29uc3Qgc3RydWN0IGlndF9mYiAqZHN0X2ZiLAo+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBp Z3RfZmIgKnNyY19mYikKPiAgewo+ICAJc3RydWN0IGlndF9idWYgc3JjID0ge30sIGRzdCA9IHt9 Owo+IC0JaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJlbmRlcl9jb3B5ID0KPiAtCQlpZ3RfZ2V0X3Jl bmRlcl9jb3B5ZnVuYyhpbnRlbF9nZXRfZHJtX2RldmlkKGJsaXQtPmZkKSk7Cj4gKwlpZ3RfcmVu ZGVyX2NvcHlmdW5jX3QgcmVuZGVyX2NvcHkgPSBOVUxMOwo+ICsJaWd0X3ZlYm94X2NvcHlmdW5j X3QgdmVib3hfY29weSA9IE5VTEw7Cj4gKwo+ICsJaWYgKGlzX2dlbjEyX21jX2Njc19tb2RpZmll cihkc3RfZmItPm1vZGlmaWVyKSkKPiArCQl2ZWJveF9jb3B5ID0KPiBpZ3RfZ2V0X3ZlYm94X2Nv cHlmdW5jKGludGVsX2dldF9kcm1fZGV2aWQoYmxpdC0+ZmQpKTsKPiArCWVsc2UKPiArCQlyZW5k ZXJfY29weSA9Cj4gaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoaW50ZWxfZ2V0X2RybV9kZXZpZChi bGl0LT5mZCkpOwo+ICAKPiAtCWlndF9yZXF1aXJlKHJlbmRlcl9jb3B5KTsKPiArCWlndF9yZXF1 aXJlKHZlYm94X2NvcHkgfHwgcmVuZGVyX2NvcHkpOwo+ICAKPiAgCWlndF9hc3NlcnRfZXEoZHN0 X2ZiLT5vZmZzZXRzWzBdLCAwKTsKPiAgCWlndF9hc3NlcnRfZXEoc3JjX2ZiLT5vZmZzZXRzWzBd LCAwKTsKPiAgCj4gLQlpbml0X2J1ZihibGl0LCAmc3JjLCBzcmNfZmIsICJjYWlybyByZW5kZXJj b3B5IHNyYyIpOwo+IC0JaW5pdF9idWYoYmxpdCwgJmRzdCwgZHN0X2ZiLCAiY2Fpcm8gcmVuZGVy Y29weSBkc3QiKTsKPiArCWluaXRfYnVmKGJsaXQsICZzcmMsIHNyY19mYiwgImNhaXJvIGVuZ2lu ZWNvcHkgc3JjIik7Cj4gKwlpbml0X2J1ZihibGl0LCAmZHN0LCBkc3RfZmIsICJjYWlybyBlbmdp bmVjb3B5IGRzdCIpOwo+ICAKPiAtCXJlbmRlcl9jb3B5KGJsaXQtPmJhdGNoLCBOVUxMLAo+IC0J CSAgICAmc3JjLCAwLCAwLCBkc3RfZmItPnBsYW5lX3dpZHRoWzBdLCBkc3RfZmItCj4gPnBsYW5l X2hlaWdodFswXSwKPiAtCQkgICAgJmRzdCwgMCwgMCk7Cj4gKwlpZiAodmVib3hfY29weSkKPiAr CQl2ZWJveF9jb3B5KGJsaXQtPmJhdGNoLCAmc3JjLAo+ICsJCQkgICBkc3RfZmItPnBsYW5lX3dp ZHRoWzBdLCBkc3RfZmItCj4gPnBsYW5lX2hlaWdodFswXSwKPiArCQkJICAgJmRzdCk7Cj4gKwll bHNlCj4gKwkJcmVuZGVyX2NvcHkoYmxpdC0+YmF0Y2gsIE5VTEwsCj4gKwkJCSAgICAmc3JjLAo+ ICsJCQkgICAgMCwgMCwKPiArCQkJICAgIGRzdF9mYi0+cGxhbmVfd2lkdGhbMF0sIGRzdF9mYi0K PiA+cGxhbmVfaGVpZ2h0WzBdLAo+ICsJCQkgICAgJmRzdCwKPiArCQkJICAgIDAsIDApOwo+ICAK PiAgCWZpbmlfYnVmKCZkc3QpOwo+ICAJZmluaV9idWYoJnNyYyk7Cj4gQEAgLTIwMTIsNyArMjA0 Niw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfbGluZWFyX21hcHBpbmcoc3RydWN0Cj4gZmJfYmxpdF91 cGxvYWQgKmJsaXQpCj4gIAkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwo+ICAKPiAgCQlpZiAo YmxpdC0+YmF0Y2gpCj4gLQkJCXJlbmRlcmNvcHkoYmxpdCwgZmIsICZsaW5lYXItPmZiKTsKPiAr CQkJY29weV93aXRoX2VuZ2luZShibGl0LCBmYiwgJmxpbmVhci0+ZmIpOwo+ICAJCWVsc2UKPiAg CQkJYmxpdGNvcHkoZmIsICZsaW5lYXItPmZiKTsKPiAgCj4gQEAgLTIwNDMsNyArMjA3Nyw3IEBA IHN0YXRpYyB2b2lkIHNldHVwX2xpbmVhcl9tYXBwaW5nKHN0cnVjdAo+IGZiX2JsaXRfdXBsb2Fk ICpibGl0KQo+ICAJc3RydWN0IGlndF9mYiAqZmIgPSBibGl0LT5mYjsKPiAgCXN0cnVjdCBmYl9i bGl0X2xpbmVhciAqbGluZWFyID0gJmJsaXQtPmxpbmVhcjsKPiAgCj4gLQlpZiAoIWlndF92YzRf aXNfdGlsZWQoZmItPm1vZGlmaWVyKSAmJiB1c2VfcmVuZGVyY29weShmYikpIHsKPiArCWlmICgh aWd0X3ZjNF9pc190aWxlZChmYi0+bW9kaWZpZXIpICYmIHVzZV9lbmdpbmVjb3B5KGZiKSkgewo+ ICAJCWJsaXQtPmJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZmQsIDQwOTYpOwo+ ICAJCWJsaXQtPmJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYmxpdC0+YnVmbWdyLAo+ ICAJCQkJCQkgICAgICBpbnRlbF9nZXRfZHJtX2Rldgo+IGlkKGZkKSk7Cj4gQEAgLTIwNzksNyAr MjExMyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwX2xpbmVhcl9tYXBwaW5nKHN0cnVjdAo+IGZiX2Js aXRfdXBsb2FkICpibGl0KQo+ICAJCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Cj4gIAo+ICAJ CWlmIChibGl0LT5iYXRjaCkKPiAtCQkJcmVuZGVyY29weShibGl0LCAmbGluZWFyLT5mYiwgZmIp Owo+ICsJCQljb3B5X3dpdGhfZW5naW5lKGJsaXQsICZsaW5lYXItPmZiLCBmYik7Cj4gIAkJZWxz ZQo+ICAJCQlibGl0Y29weSgmbGluZWFyLT5mYiwgZmIpOwo+ICAKPiBAQCAtMzE4NSw3ICszMjE5 LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2NvbnZlcnQoaW50Cj4gZmQs IHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAJCQkJCQkJICAgICAmYmxpdC0KPiA+c2hhZG93X2ZiKTsK PiAgCWlndF9hc3NlcnQoYmxpdC0+c2hhZG93X3B0cik7Cj4gIAo+IC0JaWYgKHVzZV9yZW5kZXJj b3B5KGZiKSB8fCB1c2VfYmxpdHRlcihmYikgfHwKPiBpZ3RfdmM0X2lzX3RpbGVkKGZiLT5tb2Rp ZmllcikpIHsKPiArCWlmICh1c2VfZW5naW5lY29weShmYikgfHwgdXNlX2JsaXR0ZXIoZmIpIHx8 Cj4gKwkgICAgaWd0X3ZjNF9pc190aWxlZChmYi0+bW9kaWZpZXIpKSB7Cj4gIAkJc2V0dXBfbGlu ZWFyX21hcHBpbmcoJmJsaXQtPmJhc2UpOwo+ICAJfSBlbHNlIHsKPiAgCQlibGl0LT5iYXNlLmxp bmVhci5mYiA9ICpmYjsKPiBAQCAtMzI2OCw3ICszMzAzLDggQEAgY2Fpcm9fc3VyZmFjZV90ICpp Z3RfZ2V0X2NhaXJvX3N1cmZhY2UoaW50IGZkLAo+IHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAJaWYg KGZiLT5jYWlyb19zdXJmYWNlID09IE5VTEwpIHsKPiAgCQlpZiAodXNlX2NvbnZlcnQoZmIpKQo+ ICAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChmZCwgZmIpOwo+IC0JCWVsc2UgaWYg KHVzZV9ibGl0dGVyKGZiKSB8fCB1c2VfcmVuZGVyY29weShmYikgfHwKPiBpZ3RfdmM0X2lzX3Rp bGVkKGZiLT5tb2RpZmllcikpCj4gKwkJZWxzZSBpZiAodXNlX2JsaXR0ZXIoZmIpIHx8IHVzZV9l bmdpbmVjb3B5KGZiKSB8fAo+ICsJCQkgaWd0X3ZjNF9pc190aWxlZChmYi0+bW9kaWZpZXIpKQo+ ICAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3B1KGZkLCBmYik7Cj4gIAkJZWxzZQo+ICAJCQlj cmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3R0KGZkLCBmYik7Cj4gZGlmZiAtLWdpdCBhL2xpYi9pbnRl bF9hdXhfcGd0YWJsZS5jIGIvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMKPiBpbmRleCAyZjIyYmIz OS4uY2JiM2MzMjAgMTAwNjQ0Cj4gLS0tIGEvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMKPiArKysg Yi9saWIvaW50ZWxfYXV4X3BndGFibGUuYwo+IEBAIC01NTUsMTYgKzU1NSwyMCBAQCBnZW4xMl9j cmVhdGVfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0Cj4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNo LAo+ICB9Cj4gIAo+ICB2b2lkCj4gLWdlbjEyX2VtaXRfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0 IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiB1aW50MzJfdCBzdGF0ZSkKPiArZ2VuMTJfZW1p dF9hdXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+IHVp bnQzMl90IHN0YXRlLAo+ICsJCQkgICAgIGJvb2wgcmVuZGVyKQo+ICB7Cj4gKwl1aW50MzJfdCB0 YWJsZV9iYXNlX3JlZyA9IHJlbmRlciA/Cj4gR0VOMTJfR0ZYX0FVWF9UQUJMRV9CQVNFX0FERFIg Ogo+ICsJCQkJCSAgIEdFTjEyX1ZFQk9YX0FVWF9UQUJMRV9CQVNFX0EKPiBERFI7Cj4gKwo+ICAJ aWYgKCFzdGF0ZSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJT1VUX0JBVENIKE1JX0xPQURfUkVHSVNU RVJfTUVNX0dFTjggfAo+IE1JX01NSU9fUkVNQVBfRU5BQkxFX0dFTjEyKTsKPiAtCU9VVF9CQVRD SChHRU4xMl9HRlhfQVVYX1RBQkxFX0JBU0VfQUREUik7Cj4gKwlPVVRfQkFUQ0godGFibGVfYmFz ZV9yZWcpOwo+ICAJT1VUX1JFTE9DKGJhdGNoLT5ibywgMCwgMCwgc3RhdGUpOwo+ICAKPiAgCU9V VF9CQVRDSChNSV9MT0FEX1JFR0lTVEVSX01FTV9HRU44IHwKPiBNSV9NTUlPX1JFTUFQX0VOQUJM RV9HRU4xMik7Cj4gLQlPVVRfQkFUQ0goR0VOMTJfR0ZYX0FVWF9UQUJMRV9CQVNFX0FERFIgKyA0 KTsKPiArCU9VVF9CQVRDSCh0YWJsZV9iYXNlX3JlZyArIDQpOwo+ICAJT1VUX1JFTE9DKGJhdGNo LT5ibywgMCwgMCwgc3RhdGUgKyA0KTsKPiAgfQo+IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfYXV4 X3BndGFibGUuaCBiL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5oCj4gaW5kZXggMjAyNzhkYjAuLmFj ODJiN2QyIDEwMDY0NAo+IC0tLSBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5oCj4gKysrIGIvbGli L2ludGVsX2F1eF9wZ3RhYmxlLmgKPiBAQCAtMzAsNiArMzAsNyBAQCB1aW50MzJfdAo+ICBnZW4x Ml9jcmVhdGVfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRj aCwKPiAgCQkJICAgICAgIGRybV9pbnRlbF9ibyAqYXV4X3BndGFibGVfYm8pOwo+ICB2b2lkCj4g LWdlbjEyX2VtaXRfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpi YXRjaCwKPiB1aW50MzJfdCBzdGF0ZSk7Cj4gK2dlbjEyX2VtaXRfYXV4X3BndGFibGVfc3RhdGUo c3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiB1aW50MzJfdCBzdGF0ZSwKPiArCQkJ ICAgICBib29sIHJlbmRlcik7Cj4gIAo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVs X2JhdGNoYnVmZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwo+IGluZGV4IDM4MjhiYTc1 Li41MWFhZTRkYyAxMDA2NDQKPiAtLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwo+ICsrKyBi L2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCj4gQEAgLTM3LDYgKzM3LDcgQEAKPiAgI2luY2x1ZGUg ImludGVsX2J1Zm1nci5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfY2hpcHNldC5oIgo+ICAjaW5jbHVk ZSAiaW50ZWxfcmVnLmgiCj4gKyNpbmNsdWRlICJ2ZWJveGNvcHkuaCIKPiAgI2luY2x1ZGUgInJl bmRlcmNvcHkuaCIKPiAgI2luY2x1ZGUgIm1lZGlhX2ZpbGwuaCIKPiAgI2luY2x1ZGUgImlvY3Rs X3dyYXBwZXJzLmgiCj4gQEAgLTg1MCw2ICs4NTEsMTYgQEAgaWd0X3JlbmRlcl9jb3B5ZnVuY190 Cj4gaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoaW50IGRldmlkKQo+ICAJcmV0dXJuIGNvcHk7Cj4g IH0KPiAgCj4gK2lndF92ZWJveF9jb3B5ZnVuY190IGlndF9nZXRfdmVib3hfY29weWZ1bmMoaW50 IGRldmlkKQo+ICt7Cj4gKwlpZ3RfdmVib3hfY29weWZ1bmNfdCBjb3B5ID0gTlVMTDsKPiArCj4g KwlpZiAoSVNfR0VOMTIoZGV2aWQpKQo+ICsJCWNvcHkgPSBnZW4xMl92ZWJveF9jb3B5ZnVuYzsK PiArCj4gKwlyZXR1cm4gY29weTsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGlndF9nZXRfbWVkaWFf ZmlsbGZ1bmM6Cj4gICAqIEBkZXZpZDogcGNpIGRldmljZSBpZAo+IGRpZmYgLS1naXQgYS9saWIv aW50ZWxfYmF0Y2hidWZmZXIuaCBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCj4gaW5kZXggNDAy ZTY4YmMuLmUwNWU0NjRiIDEwMDY0NAo+IC0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCj4g KysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKPiBAQCAtMjEzLDYgKzIxMyw3IEBAIHZvaWQg aW50ZWxfY29weV9ibyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIKPiAqYmF0Y2gsCj4gIGVudW0g aTkxNV9jb21wcmVzc2lvbiB7Cj4gIAlJOTE1X0NPTVBSRVNTSU9OX05PTkUsCj4gIAlJOTE1X0NP TVBSRVNTSU9OX1JFTkRFUiwKPiArCUk5MTVfQ09NUFJFU1NJT05fTUVESUEsCj4gIH07Cj4gIAo+ ICAvKioKPiBAQCAtMjIwLDE4ICsyMjEsMjAgQEAgZW51bSBpOTE1X2NvbXByZXNzaW9uIHsKPiAg ICogQGJvOiB1bmRlcmx5aW5nIGxpYmRybSBidWZmZXIgb2JqZWN0Cj4gICAqIEBzdHJpZGU6IHN0 cmlkZSBvZiB0aGUgYnVmZmVyCj4gICAqIEB0aWxpbmc6IHRpbGluZyBtb2RlIGJpdHMKPiArICog QGNvbXByZXNzaW9uOiBtZW1vcnkgY29tcHJlc3Npb24gbW9kZQo+ICAgKiBAYnBwOiBiaXRzIHBl ciBwaXhlbCwgOCwgMTYgb3IgMzIuCj4gICAqIEBkYXRhOiBwb2ludGVyIHRvIHRoZSBtZW1vcnkg bWFwcGluZyBvZiB0aGUgYnVmZmVyCj4gICAqIEBzaXplOiBzaXplIG9mIHRoZSBidWZmZXIgb2Jq ZWN0Cj4gICAqCj4gICAqIFRoaXMgaXMgYSBpLWctdCBidWZmZXIgb2JqZWN0IHdyYXBwZXIgc3Ry dWN0dXJlIHdoaWNoIGF1Z21lbnRzCj4gdGhlIGJhc2VsaW5lCj4gLSAqIGxpYmRybSBidWZmZXIg b2JqZWN0IHdpdGggc3VpdGFibGUgZGF0YSBuZWVkZWQgYnkgdGhlIHJlbmRlciBjb3B5Cj4gYW5k IHRoZQo+IC0gKiBmaWxsIGZ1bmN0aW9ucy4KPiArICogbGliZHJtIGJ1ZmZlciBvYmplY3Qgd2l0 aCBzdWl0YWJsZSBkYXRhIG5lZWRlZCBieSB0aGUKPiByZW5kZXIvdmVib3ggY29weSBhbmQKPiAr ICogdGhlIGZpbGwgZnVuY3Rpb25zLgo+ICAgKi8KPiAgc3RydWN0IGlndF9idWYgewo+ICAJZHJt X2ludGVsX2JvICpibzsKPiAgCXVpbnQzMl90IHN0cmlkZTsKPiAgCXVpbnQzMl90IHRpbGluZzsK PiArCWVudW0gaTkxNV9jb21wcmVzc2lvbiBjb21wcmVzc2lvbjsKPiAgCXVpbnQzMl90IGJwcDsK PiAgCXVpbnQzMl90ICpkYXRhOwo+ICAJdWludDMyX3Qgc2l6ZTsKPiBAQCAtMzA0LDYgKzMwNywy OSBAQCB0eXBlZGVmIHZvaWQgKCppZ3RfcmVuZGVyX2NvcHlmdW5jX3QpKHN0cnVjdAo+IGludGVs X2JhdGNoYnVmZmVyICpiYXRjaCwKPiAgCj4gIGlndF9yZW5kZXJfY29weWZ1bmNfdCBpZ3RfZ2V0 X3JlbmRlcl9jb3B5ZnVuYyhpbnQgZGV2aWQpOwo+ICAKPiArCj4gKy8qKgo+ICsgKiBpZ3RfdmVi b3hfY29weWZ1bmNfdDoKPiArICogQGJhdGNoOiBiYXRjaGJ1ZmZlciBvYmplY3QKPiArICogQHNy Yzogc291cmNlIGktZy10IGJ1ZmZlciBvYmplY3QKPiArICogQHdpZHRoOiB3aWR0aCBvZiB0aGUg Y29waWVkIHJlY3RhbmdsZQo+ICsgKiBAaGVpZ2h0OiBoZWlnaHQgb2YgdGhlIGNvcGllZCByZWN0 YW5nbGUKPiArICogQGRzdDogZGVzdGluYXRpb24gaS1nLXQgYnVmZmVyIG9iamVjdAo+ICsgKgo+ ICsgKiBUaGlzIGlzIHRoZSB0eXBlIG9mIHRoZSBwZXItcGxhdGZvcm0gdmVib3ggY29weSBmdW5j dGlvbnMuIFRoZQo+ICsgKiBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjYW4gYmUg b2J0YWluZWQgYnkgY2FsbGluZwo+ICsgKiBpZ3RfZ2V0X3ZlYm94X2NvcHlmdW5jKCkuCj4gKyAq Cj4gKyAqIEEgdmVib3ggY29weSBmdW5jdGlvbiB3aWxsIGVtaXQgYSBiYXRjaGJ1ZmZlciB0byB0 aGUga2VybmVsIHdoaWNoCj4gZXhlY3V0ZXMKPiArICogdGhlIHNwZWNpZmllZCBibGl0IGNvcHkg b3BlcmF0aW9uIHVzaW5nIHRoZSB2ZWJveCBlbmdpbmUuCj4gKyAqLwo+ICt0eXBlZGVmIHZvaWQg KCppZ3RfdmVib3hfY29weWZ1bmNfdCkoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyCj4gKmJhdGNo LAo+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqc3JjLAo+ICsJCQkJICAgICB1bnNp Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAo+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaWd0 X2J1ZiAqZHN0KTsKPiArCj4gK2lndF92ZWJveF9jb3B5ZnVuY190IGlndF9nZXRfdmVib3hfY29w eWZ1bmMoaW50IGRldmlkKTsKPiArCj4gIC8qKgo+ICAgKiBpZ3RfZmlsbGZ1bmNfdDoKPiAgICog QGJhdGNoOiBiYXRjaGJ1ZmZlciBvYmplY3QKPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX3JlZy5o IGIvbGliL2ludGVsX3JlZy5oCj4gaW5kZXggY2FiZmM4NzkuLjBhOWVlMzRjIDEwMDY0NAo+IC0t LSBhL2xpYi9pbnRlbF9yZWcuaAo+ICsrKyBiL2xpYi9pbnRlbF9yZWcuaAo+IEBAIC02NzQsNiAr Njc0LDcgQEAgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKPiBT T0ZUV0FSRS4KPiAgI2RlZmluZSBSSU5HX0lOVkFMSUQgICAgICAgIDB4MDAwMDAwMDAKPiAgCj4g ICNkZWZpbmUgR0VOMTJfR0ZYX0FVWF9UQUJMRV9CQVNFX0FERFIJMHg0MjAwCj4gKyNkZWZpbmUg R0VOMTJfVkVCT1hfQVVYX1RBQkxFX0JBU0VfQUREUgkweDQyMzAKPiAgCj4gIAo+ICAvKiBCaXRC bHQgSW5zdHJ1Y3Rpb25zCj4gZGlmZiAtLWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGli L2lvY3RsX3dyYXBwZXJzLmgKPiBpbmRleCBmMjQxMmQ3OC4uN2RkMmExZTggMTAwNjQ0Cj4gLS0t IGEvbGliL2lvY3RsX3dyYXBwZXJzLmgKPiArKysgYi9saWIvaW9jdGxfd3JhcHBlcnMuaAo+IEBA IC0yMDEsNiArMjAxLDcgQEAgc3RydWN0IGxvY2FsX2RybV9tb2RlX2ZiX2NtZDIgewo+ICAjZGVm aW5lIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUwlsb2NhbF9mb3VyY2NfbW9kX2Nv ZGUoSQo+IE5URUwsIDQpCj4gICNkZWZpbmUgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE X0NDUwlsb2NhbF9mb3VyY2NfbW9kX2NvZGUoSQo+IE5URUwsIDUpCj4gICNkZWZpbmUgTE9DQUxf STkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTCj4gZm91cmNjX21vZF9jb2RlKElO VEVMLCA2KQo+ICsjZGVmaW5lIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01D X0NDUwo+IGZvdXJjY19tb2RfY29kZShJTlRFTCwgNykKPiAgCj4gICNkZWZpbmUgTE9DQUxfRFJN X0lPQ1RMX01PREVfQURERkIyCURSTV9JT1dSKDB4QjgsIFwKPiAgCQkJCQkJIHN0cnVjdAo+IGxv Y2FsX2RybV9tb2RlX2ZiX2NtZDIpCj4gZGlmZiAtLWdpdCBhL2xpYi9tZXNvbi5idWlsZCBiL2xp Yi9tZXNvbi5idWlsZAo+IGluZGV4IDNmOTA4OTEyLi5mN2ZjZTkwNSAxMDA2NDQKPiAtLS0gYS9s aWIvbWVzb24uYnVpbGQKPiArKysgYi9saWIvbWVzb24uYnVpbGQKPiBAQCAtNjMsNiArNjMsNyBA QCBsaWJfc291cmNlcyA9IFsKPiAgCSdpZ3RfZWRpZC5jJywKPiAgCSdpZ3RfZWxkLmMnLAo+ICAJ J2lndF9pbmZvZnJhbWUuYycsCj4gKwkndmVib3hjb3B5X2dlbjEyLmMnLAo+ICBdCj4gIAo+ICBs aWJfZGVwcyA9IFsKPiBkaWZmIC0tZ2l0IGEvbGliL3JlbmRlcmNvcHlfZ2VuOS5jIGIvbGliL3Jl bmRlcmNvcHlfZ2VuOS5jCj4gaW5kZXggOTRlODE2YjYuLmU3ZmRkN2E2IDEwMDY0NAo+IC0tLSBh L2xpYi9yZW5kZXJjb3B5X2dlbjkuYwo+ICsrKyBiL2xpYi9yZW5kZXJjb3B5X2dlbjkuYwo+IEBA IC0xMDI2LDcgKzEwMjYsNyBAQCB2b2lkIF9nZW45X3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QKPiBp bnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gIAlPVVRfQkFUQ0goRzRYX1BJUEVMSU5FX1NFTEVD VCB8IFBJUEVMSU5FX1NFTEVDVF8zRCB8Cj4gIAkJCQlHRU45X1BJUEVMSU5FX1NFTEVDVElPTl9N QVNLKTsKPiAgCj4gLQlnZW4xMl9lbWl0X2F1eF9wZ3RhYmxlX3N0YXRlKGJhdGNoLCBhdXhfcGd0 YWJsZV9zdGF0ZSk7Cj4gKwlnZW4xMl9lbWl0X2F1eF9wZ3RhYmxlX3N0YXRlKGJhdGNoLCBhdXhf cGd0YWJsZV9zdGF0ZSwgdHJ1ZSk7Cj4gIAo+ICAJZ2VuOF9lbWl0X3NpcChiYXRjaCk7Cj4gIAo+ IGRpZmYgLS1naXQgYS9saWIvdmVib3hjb3B5LmggYi9saWIvdmVib3hjb3B5LmgKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi45NDlkODNiZgo+IC0tLSAvZGV2L251bGwK PiArKysgYi9saWIvdmVib3hjb3B5LmgKPiBAQCAtMCwwICsxLDkgQEAKPiArI2lmbmRlZiBfX1ZF Qk9YQ09QWV9IX18KPiArI2RlZmluZSBfX1ZFQk9YQ09QWV9IX18KPiArCj4gK3ZvaWQgZ2VuMTJf dmVib3hfY29weWZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiArCQkJICBj b25zdCBzdHJ1Y3QgaWd0X2J1ZiAqc3JjLAo+ICsJCQkgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l ZCBoZWlnaHQsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCk7Cj4gKwo+ICsjZW5k aWYKPiBkaWZmIC0tZ2l0IGEvbGliL3ZlYm94Y29weV9nZW4xMi5jIGIvbGliL3ZlYm94Y29weV9n ZW4xMi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uODc4MDA5NDEK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3ZlYm94Y29weV9nZW4xMi5jCj4gQEAgLTAsMCAr MSwyNjkgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24K PiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24KPiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4gIlNvZnR3YXJlIiksCj4g KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0Cj4gbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPiBzdWJsaWNlbnNlLAo+ICsgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbQo+IHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZwo+IGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcKPiB0aGUg bmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwKPiBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELAo+IEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+IE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PCj4g RVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKPiBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKPiBBUklT SU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IKPiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4g KyAqLwo+ICsjaW5jbHVkZSA8ZHJtLmg+Cj4gKwo+ICsjaW5jbHVkZSAiaWd0LmgiCj4gKyNpbmNs dWRlICJpbnRlbF9hdXhfcGd0YWJsZS5oIgo+ICsjaW5jbHVkZSAidmVib3hjb3B5LmgiCj4gKwo+ ICsjZGVmaW5lIFI4RzhCOEE4X1VOT1JNCTgKPiArCj4gK3N0cnVjdCB2ZWJveF9zdXJmYWNlX3N0 YXRlIHsKPiArCXN0cnVjdCB7Cj4gKwkJdWludDMyX3QgZHdfY291bnQ6MTI7Cj4gKwkJdWludDMy X3QgcGFkOjQ7Cj4gKwkJdWludDMyX3Qgc3ViX29wY29kZV9iOjU7Cj4gKwkJdWludDMyX3Qgc3Vi X29wY29kZV9hOjM7Cj4gKwkJdWludDMyX3QgbWVkaWFfY21kX29wY29kZTozOwo+ICsJCXVpbnQz Ml90IG1lZGlhX2NtZF9waXBlbGluZToyOwo+ICsJCXVpbnQzMl90IGNtZF90eXBlOjM7Cj4gKwl9 IHNzMDsKPiArCXN0cnVjdCB7Cj4gKyNkZWZpbmUgVkVCT1hfU1VSRkFDRV9JTlBVVAkwCj4gKyNk ZWZpbmUgVkVCT1hfU1VSRkFDRV9PVVRQVVQJMQo+ICsJCXVpbnQzMl90IHN1cmZhY2VfaWQ6MTsK PiArCQl1aW50MzJfdCBwYWQ6MzE7Cj4gKwl9IHNzMTsKPiArCXN0cnVjdCB7Cj4gKwkJdWludDMy X3QgcGFkOjQ7Cj4gKwkJdWludDMyX3Qgd2lkdGg6MTQ7Cj4gKwkJdWludDMyX3QgaGVpZ2h0OjE0 Owo+ICsJfSBzczI7Cj4gKwlzdHJ1Y3Qgewo+ICsjZGVmaW5lIFZFQk9YX1RJTEVfV0FMS19YTUFK T1IgMAo+ICsjZGVmaW5lIFZFQk9YX1RJTEVfV0FMS19ZTUFKT1IgMQo+ICsJCXVpbnQzMl90IHRp bGVfd2FsazoxOwo+ICsJCXVpbnQzMl90IHRpbGVkX3N1cmZhY2U6MTsKPiArCQl1aW50MzJfdCBj aHJvbWFfaGFsZl9waXRjaDoxOwo+ICsJCXVpbnQzMl90IHN1cmZhY2VfcGl0Y2g6MTc7Cj4gKwkJ dWludDMyX3QgY2hyb21hX2ludGVybGVhdmU6MTsKPiArCQl1aW50MzJfdCBsc2JfcGFja2VkX2Vu YWJsZToxOwo+ICsJCXVpbnQzMl90IGJheWVyX2lucHV0X2FsaWdubWVudDoyOwo+ICsJCXVpbnQz Ml90IGJheWVyX3BhdHRlcm5fZm9ybWF0OjE7Cj4gKwkJdWludDMyX3QgYmF5ZXJfcGF0dGVybl9v ZmZzZXQ6MjsKPiArCQl1aW50MzJfdCBzdXJmYWNlX2Zvcm1hdDo1Owo+ICsJfSBzczM7Cj4gKwlz dHJ1Y3Qgewo+ICsJCXVpbnQzMl90IHVfeV9vZmZzZXQ6MTU7Cj4gKwkJdWludDMyX3QgdV94X29m ZnNldDoxMzsKPiArCQl1aW50MzJfdCBwYWQ6NDsKPiArCX0gc3M0Owo+ICsJc3RydWN0IHsKPiAr CQl1aW50MzJfdCB2X3lfb2Zmc2V0OjE1Owo+ICsJCXVpbnQzMl90IHZfeF9vZmZzZXQ6MTM7Cj4g KwkJdWludDMyX3QgcGFkOjQ7Cj4gKwl9IHNzNTsKPiArCXN0cnVjdCB7Cj4gKwkJdWludDMyX3Qg ZnJhbWVfeV9vZmZzZXQ6MTU7Cj4gKwkJdWludDMyX3QgZnJhbWVfeF9vZmZzZXQ6MTU7Cj4gKwkJ dWludDMyX3QgcGFkOjI7Cj4gKwl9IHNzNjsKPiArCXN0cnVjdCB7Cj4gKwkJdWludDMyX3QgZGVy aXZlZF9zdXJmYWNlX3BpdGNoOjE3Owo+ICsJCXVpbnQzMl90IHBhZDoxNTsKPiArCX0gc3M3Owo+ ICsJc3RydWN0IHsKPiArCQl1aW50MzJfdCBza2luX3Njb3JlX291dHB1dF9zdXJmYWNlX3BpdGNo OjE3Owo+ICsJCXVpbnQzMl90IHBhZDoxNTsKPiArCX0gc3M4Owo+ICt9IF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwo+ICsKPiArc3RydWN0IHZlYm94X3RpbGluZ19jb252ZXJ0IHsKPiArCXN0cnVj dCB7Cj4gKwkJdWludDMyX3QgZHdfY291bnQ6MTI7Cj4gKwkJdWludDMyX3QgcGFkOjQ7Cj4gKwkJ dWludDMyX3Qgc3ViX29wY29kZV9iOjU7Cj4gKwkJdWludDMyX3Qgc3ViX29wY29kZV9hOjM7Cj4g KwkJdWludDMyX3QgY21kX29wY29kZTozOwo+ICsJCXVpbnQzMl90IHBpcGVsaW5lOjI7Cj4gKwkJ dWludDMyX3QgY21kX3R5cGU6MzsKPiArCX0gdGMwOwo+ICsJdW5pb24gewo+ICsJCXN0cnVjdCB7 Cj4gKwkJCXVpbnQ2NF90IGlucHV0X2VuY3J5cHRlZF9kYXRhOjE7Cj4gKwkJCXVpbnQ2NF90IGlu cHV0X21vY3NfaWR4OjY7Cj4gKwkJCXVpbnQ2NF90IGlucHV0X21lbW9yeV9jb21wcmVzc2lvbl9l bmFibGU6MTsKPiArI2RlZmluZSBDT01QUkVTU0lPTl9UWVBFX01FRElBIDAKPiArI2RlZmluZSBD T01QUkVTU0lPTl9UWVBFX1JFTkRFUgkxCj4gKwkJCXVpbnQ2NF90IGlucHV0X2NvbXByZXNzaW9u X3R5cGU6MTsKPiArI2RlZmluZSBUUk1PREVfTk9ORQkwCj4gKyNkZWZpbmUgVFJNT0RFX1RJTEVf WUYJMQo+ICsjZGVmaW5lIFRSTU9ERV9USUxFX1lTCTIKPiArCQkJdWludDY0X3QgaW5wdXRfdGls ZWRfcmVzb3VyY2VfbW9kZToyOwo+ICsJCQl1aW50NjRfdCBwYWQ6MTsKPiArCQkJdWludDY0X3Qg aW5wdXRfYWRkcmVzczo1MjsKPiArCQl9IHRjMV8yOwo+ICsJCXVpbnQ2NF90IHRjMV8yX2w7Cj4g Kwl9Owo+ICsJdW5pb24gewo+ICsJCXN0cnVjdCB7Cj4gKwkJCXVpbnQ2NF90IG91dHB1dF9lbmNy eXB0ZWRfZGF0YToxOwo+ICsJCQl1aW50NjRfdCBvdXRwdXRfbW9jc19pZHg6NjsKPiArCQkJdWlu dDY0X3Qgb3V0cHV0X21lbW9yeV9jb21wcmVzc2lvbl9lbmFibGU6MTsKPiArCQkJdWludDY0X3Qg b3V0cHV0X2NvbXByZXNzaW9uX3R5cGU6MTsKPiArCQkJdWludDY0X3Qgb3V0cHV0X3RpbGVkX3Jl c291cmNlX21vZGU6MjsKPiArCQkJdWludDY0X3QgcGFkOjE7Cj4gKwkJCXVpbnQ2NF90IG91dHB1 dF9hZGRyZXNzOjUyOwo+ICsJCX0gdGMzXzQ7Cj4gKwkJdWludDY0X3QgdGMzXzRfbDsKPiArCX07 Cj4gK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cj4gKwo+ICtzdGF0aWMgdm9pZCBlbWl0X3N1 cmZhY2Vfc3RhdGVfY21kKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gKwkJCQkg ICBpbnQgc3VyZmFjZV9pZCwKPiArCQkJCSAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJw cCwKPiArCQkJCSAgIGludCBwaXRjaCwgdWludDMyX3QgdGlsaW5nLCBpbnQKPiBmb3JtYXQpCj4g K3sKPiArCXN0cnVjdCB2ZWJveF9zdXJmYWNlX3N0YXRlICpzczsKPiArCj4gKwlzcyA9IGludGVs X2JhdGNoYnVmZmVyX3N1YmRhdGFfYWxsb2MoYmF0Y2gsIHNpemVvZigqc3MpLCA0KTsKPiArCj4g Kwlzcy0+c3MwLmNtZF90eXBlID0gMzsKPiArCXNzLT5zczAubWVkaWFfY21kX3BpcGVsaW5lID0g MjsKPiArCXNzLT5zczAubWVkaWFfY21kX29wY29kZSA9IDQ7Cj4gKwlzcy0+c3MwLmR3X2NvdW50 ID0gNzsKPiArCj4gKwlzcy0+c3MxLnN1cmZhY2VfaWQgPSBzdXJmYWNlX2lkOwo+ICsKPiArCXNz LT5zczIuaGVpZ2h0ID0gaGVpZ2h0IC0gMTsKPiArCXNzLT5zczIud2lkdGggPSB3aWR0aCAtIDE7 Cj4gKwo+ICsJc3MtPnNzMy5zdXJmYWNlX2Zvcm1hdCA9IGZvcm1hdDsKPiArCXNzLT5zczMuc3Vy ZmFjZV9waXRjaCA9IHBpdGNoIC0gMTsKPiArCXNzLT5zczMudGlsZV93YWxrID0gKHRpbGluZyA9 PSBJOTE1X1RJTElOR19ZKSB8fAo+ICsJCQkgICAgKHRpbGluZyA9PSBJOTE1X1RJTElOR19ZZik7 Cj4gKwlzcy0+c3MzLnRpbGVkX3N1cmZhY2UgPSB0aWxpbmcgIT0gSTkxNV9USUxJTkdfTk9ORTsK PiArCj4gKwlzcy0+c3M3LmRlcml2ZWRfc3VyZmFjZV9waXRjaCA9IHBpdGNoIC0gMTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgZW1pdF90aWxpbmdfY29udmVydF9jbWQoc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCwKPiArCQkJCSAgICBkcm1faW50ZWxfYm8gKmlucHV0X2JvLAo+ICsJ CQkJICAgIHVpbnQzMl90IGlucHV0X3RpbGluZywKPiArCQkJCSAgICB1aW50MzJfdCBpbnB1dF9j b21wcmVzc2lvbiwKPiArCQkJCSAgICBkcm1faW50ZWxfYm8gKm91dHB1dF9ibywKPiArCQkJCSAg ICB1aW50MzJfdCBvdXRwdXRfdGlsaW5nLAo+ICsJCQkJICAgIHVpbnQzMl90IG91dHB1dF9jb21w cmVzc2lvbikKPiArewo+ICsJdWludDMyX3QgcmVsb2NfZGVsdGE7Cj4gKwlzdHJ1Y3QgdmVib3hf dGlsaW5nX2NvbnZlcnQgKnRjOwo+ICsJaW50IHJldDsKPiArCj4gKwl0YyA9IGludGVsX2JhdGNo YnVmZmVyX3N1YmRhdGFfYWxsb2MoYmF0Y2gsIHNpemVvZigqdGMpLCA4KTsKPiArCj4gKwl0Yy0+ dGMwLmNtZF90eXBlID0gMzsKPiArCXRjLT50YzAucGlwZWxpbmUgPSAyOwo+ICsJdGMtPnRjMC5j bWRfb3Bjb2RlID0gNDsKPiArCXRjLT50YzAuc3ViX29wY29kZV9iID0gMTsKPiArCj4gKwl0Yy0+ dGMwLmR3X2NvdW50ID0gMzsKPiArCj4gKwlpZiAoaW5wdXRfY29tcHJlc3Npb24gIT0gSTkxNV9D T01QUkVTU0lPTl9OT05FKSB7Cj4gKwkJdGMtPnRjMV8yLmlucHV0X21lbW9yeV9jb21wcmVzc2lv bl9lbmFibGUgPSAxOwo+ICsJCXRjLT50YzFfMi5pbnB1dF9jb21wcmVzc2lvbl90eXBlID0KPiAr CQkJaW5wdXRfY29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lPTl9SRU5ERVI7Cj4gKwl9Cj4g Kwl0Yy0+dGMxXzIuaW5wdXRfdGlsZWRfcmVzb3VyY2VfbW9kZSA9IGlucHV0X3RpbGluZyA9PQo+ IEk5MTVfVElMSU5HX1lmOwo+ICsJcmVsb2NfZGVsdGEgPSB0Yy0+dGMxXzJfbDsKPiArCj4gKwlp Z3RfYXNzZXJ0KGlucHV0X2JvLT5vZmZzZXQ2NCA9PSBBTElHTihpbnB1dF9iby0+b2Zmc2V0NjQs Cj4gMHgxMDAwKSk7Cj4gKwl0Yy0+dGMxXzIuaW5wdXRfYWRkcmVzcyA9IGlucHV0X2JvLT5vZmZz ZXQ2NCA+PiAxMjsKPiArCWlndF9hc3NlcnQocmVsb2NfZGVsdGEgPD0gSU5UMzJfTUFYKTsKPiAr CXJldCA9IGRybV9pbnRlbF9ib19lbWl0X3JlbG9jKGJhdGNoLT5ibywKPiArCQkJCSAgICAgIGlu dGVsX2JhdGNoYnVmZmVyX3N1YmRhdGFfb2Zmc2V0KAo+IGJhdGNoLCB0YykgKwo+ICsJCQkJCW9m ZnNldG9mKHR5cGVvZigqdGMpLCB0YzFfMiksCj4gKwkJCQkgICAgICBpbnB1dF9ibywgcmVsb2Nf ZGVsdGEsCj4gKwkJCQkgICAgICAwLCAwKTsKPiArCWlndF9hc3NlcnQocmV0ID09IDApOwo+ICsK PiArCWlmIChvdXRwdXRfY29tcHJlc3Npb24gIT0gSTkxNV9DT01QUkVTU0lPTl9OT05FKSB7Cj4g KwkJdGMtPnRjM180Lm91dHB1dF9tZW1vcnlfY29tcHJlc3Npb25fZW5hYmxlID0gMTsKPiArCQl0 Yy0+dGMzXzQub3V0cHV0X2NvbXByZXNzaW9uX3R5cGUgPQo+ICsJCQlvdXRwdXRfY29tcHJlc3Np b24gPT0gSTkxNV9DT01QUkVTU0lPTl9SRU5ERVI7Cj4gKwl9Cj4gKwl0Yy0+dGMzXzQub3V0cHV0 X3RpbGVkX3Jlc291cmNlX21vZGUgPSBvdXRwdXRfdGlsaW5nID09Cj4gSTkxNV9USUxJTkdfWWY7 Cj4gKwlyZWxvY19kZWx0YSA9IHRjLT50YzNfNF9sOwo+ICsKPiArCWlndF9hc3NlcnQob3V0cHV0 X2JvLT5vZmZzZXQ2NCA9PSBBTElHTihvdXRwdXRfYm8tPm9mZnNldDY0LAo+IDB4MTAwMCkpOwo+ ICsJdGMtPnRjM180Lm91dHB1dF9hZGRyZXNzID0gb3V0cHV0X2JvLT5vZmZzZXQ2NCA+PiAxMjsK PiArCWlndF9hc3NlcnQocmVsb2NfZGVsdGEgPD0gSU5UMzJfTUFYKTsKPiArCXJldCA9IGRybV9p bnRlbF9ib19lbWl0X3JlbG9jKGJhdGNoLT5ibywKPiArCQkJCSAgICAgIGludGVsX2JhdGNoYnVm ZmVyX3N1YmRhdGFfb2Zmc2V0KAo+IGJhdGNoLCB0YykgKwo+ICsJCQkJCW9mZnNldG9mKHR5cGVv ZigqdGMpLCB0YzNfNCksCj4gKwkJCQkgICAgICBvdXRwdXRfYm8sIHJlbG9jX2RlbHRhLAo+ICsJ CQkJICAgICAgMCwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUik7Cj4gKwlpZ3RfYXNzZXJ0KHJldCA9 PSAwKTsKPiArCj4gK30KPiArCj4gKy8qIEJvcnJvd2luZyB0aGUgaWRlYSBmcm9tIHRoZSByZW5k ZXJjb3B5IHN0YXRlIHNldHVwLiAqLwo+ICsjZGVmaW5lIEJBVENIX1NUQVRFX1NQTElUIDIwNDgK PiArCj4gK3ZvaWQgZ2VuMTJfdmVib3hfY29weWZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVy ICpiYXRjaCwKPiArCQkJICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqc3JjLAo+ICsJCQkgIHVuc2ln bmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGlndF9idWYg KmRzdCkKPiArewo+ICsJc3RydWN0IGF1eF9wZ3RhYmxlX2luZm8gYXV4X3BndGFibGVfaW5mbyA9 IHsgfTsKPiArCXVpbnQzMl90IGF1eF9wZ3RhYmxlX3N0YXRlOwo+ICsKPiArCWlndF9hc3NlcnQo c3JjLT5icHAgPT0gZHN0LT5icHApOwo+ICsKPiArCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX29u X3JpbmcoYmF0Y2gsIEk5MTVfRVhFQ19WRUJPWCk7Cj4gKwo+ICsJaW50ZWxfYmF0Y2hidWZmZXJf YWxpZ24oYmF0Y2gsIDgpOwo+ICsKPiArCWJhdGNoLT5wdHIgPSAmYmF0Y2gtPmJ1ZmZlcltCQVRD SF9TVEFURV9TUExJVF07Cj4gKwo+ICsJZ2VuMTJfYXV4X3BndGFibGVfaW5pdCgmYXV4X3BndGFi bGVfaW5mbywgYmF0Y2gtPmJ1Zm1nciwgc3JjLAo+IGRzdCk7Cj4gKwo+ICsJYXV4X3BndGFibGVf c3RhdGUgPSBnZW4xMl9jcmVhdGVfYXV4X3BndGFibGVfc3RhdGUoYmF0Y2gsCj4gKwkJCQkJCQkg ICBhdXhfcGd0YWJsZV8KPiBpbmZvLnBndGFibGVfYm8pOwo+ICsKPiArCWFzc2VydChiYXRjaC0+ cHRyIDwgJmJhdGNoLT5idWZmZXJbNDA5NV0pOwo+ICsJYmF0Y2gtPnB0ciA9IGJhdGNoLT5idWZm ZXI7Cj4gKwo+ICsJZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShiYXRjaCwgYXV4X3BndGFi bGVfc3RhdGUsIGZhbHNlKTsKPiArCj4gKwkvKiBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgbW9yZSBm b3JtYXRzICovCj4gKwlpZ3RfYXNzZXJ0KHNyYy0+YnBwID09IDMyKTsKPiArCWVtaXRfc3VyZmFj ZV9zdGF0ZV9jbWQoYmF0Y2gsIFZFQk9YX1NVUkZBQ0VfSU5QVVQsCj4gKwkJCSAgICAgICB3aWR0 aCwgaGVpZ2h0LCBzcmMtPmJwcCwgc3JjLT5zdHJpZGUsCj4gKwkJCSAgICAgICBzcmMtPnRpbGlu ZywgUjhHOEI4QThfVU5PUk0pOwo+ICsKPiArCWlndF9hc3NlcnQoZHN0LT5icHAgPT0gMzIpOwo+ ICsJZW1pdF9zdXJmYWNlX3N0YXRlX2NtZChiYXRjaCwgVkVCT1hfU1VSRkFDRV9PVVRQVVQsCj4g KwkJCSAgICAgICB3aWR0aCwgaGVpZ2h0LCBkc3QtPmJwcCwgZHN0LT5zdHJpZGUsCj4gKwkJCSAg ICAgICBkc3QtPnRpbGluZywgUjhHOEI4QThfVU5PUk0pOwo+ICsKPiArCWVtaXRfdGlsaW5nX2Nv bnZlcnRfY21kKGJhdGNoLAo+ICsJCQkJc3JjLT5ibywgc3JjLT50aWxpbmcsIHNyYy0+Y29tcHJl c3Npb24sCj4gKwkJCQlkc3QtPmJvLCBkc3QtPnRpbGluZywgZHN0LQo+ID5jb21wcmVzc2lvbik7 Cj4gKwo+ICsJT1VUX0JBVENIKE1JX0JBVENIX0JVRkZFUl9FTkQpOwo+ICsKPiArCWludGVsX2Jh dGNoYnVmZmVyX2ZsdXNoX29uX3JpbmcoYmF0Y2gsIEk5MTVfRVhFQ19WRUJPWCk7Cj4gKwo+ICsJ Z2VuMTJfYXV4X3BndGFibGVfY2xlYW51cCgmYXV4X3BndGFibGVfaW5mbyk7Cj4gKwlpbnRlbF9i YXRjaGJ1ZmZlcl9yZXNldChiYXRjaCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9n ZW1fcmVuZGVyX2NvcHkuYwo+IGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwo+IGluZGV4 IDE1YmExNzA0Li45YzM2ZjM4YiAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJf Y29weS5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwo+IEBAIC00NzEsNiAr NDcxLDcgQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVj dAo+IGlndF9idWYgKmJ1ZiwKPiAgCQlhdXhfd2lkdGggPSBzY3JhdGNoX2J1Zl9hdXhfd2lkdGgo ZGF0YS0+ZGV2aWQsIGJ1Zik7Cj4gIAkJYXV4X2hlaWdodCA9IHNjcmF0Y2hfYnVmX2F1eF9oZWln aHQoZGF0YS0+ZGV2aWQsIGJ1Zik7Cj4gIAo+ICsJCWJ1Zi0+Y29tcHJlc3Npb24gPSBjb21wcmVz c2lvbjsKPiAgCQlidWYtPmF1eC5vZmZzZXQgPSBidWYtPnN0cmlkZSAqIEFMSUdOKGhlaWdodCwg MzIpOwo+ICAJCWJ1Zi0+YXV4LnN0cmlkZSA9IGF1eF93aWR0aDsKPiAgCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0Cmln dC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==