Return-Path: linux-nfs-owner@vger.kernel.org Received: from mx2.netapp.com ([216.240.18.37]:61148 "EHLO mx2.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756790Ab2CUP5r (ORCPT ); Wed, 21 Mar 2012 11:57:47 -0400 Received: from vmwexceht01-prd.hq.netapp.com (vmwexceht01-prd.hq.netapp.com [10.106.76.239]) by smtp1.corp.netapp.com (8.13.1/8.13.1/NTAP-1.6) with ESMTP id q2LFvVrQ029714 for ; Wed, 21 Mar 2012 08:57:31 -0700 (PDT) From: "Myklebust, Trond" To: "Schumaker, Bryan" CC: "linux-nfs@vger.kernel.org" Subject: Re: [PATCH v4 03/23] NFS: Add version registering framework Date: Wed, 21 Mar 2012 15:57:28 +0000 Message-ID: <1332345449.5779.5.camel@lade.trondhjem.org> References: <1332343253-24970-1-git-send-email-bjschuma@netapp.com> <1332343253-24970-4-git-send-email-bjschuma@netapp.com> In-Reply-To: <1332343253-24970-4-git-send-email-bjschuma@netapp.com> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org List-ID: T24gV2VkLCAyMDEyLTAzLTIxIGF0IDExOjIwIC0wNDAwLCBianNjaHVtYUBuZXRhcHAuY29tIHdy b3RlOg0KPiBGcm9tOiBCcnlhbiBTY2h1bWFrZXIgPGJqc2NodW1hQG5ldGFwcC5jb20+DQo+IA0K PiBUaGlzIHBhdGNoIGFkZHMgaW4gdGhlIGNvZGUgdG8gdHJhY2sgbXVsdGlwbGUgdmVyc2lvbnMg b2YgdGhlIE5GUw0KPiBwcm90b2NvbC4gIEkgY3JlYXRlZCBkZWZhdWx0IHN0cnVjdHVyZXMgZm9y IHYyLCB2MyBhbmQgdjQgc28gdGhhdCBlYWNoDQo+IHZlcnNpb24gY2FuIGNvbnRpbnVlIHRvIHdv cmsgd2hpbGUgSSBjb252ZXJ0IHRoZW0gaW50byBrZXJuZWwgbW9kdWxlcy4NCj4gSSBhbHNvIHJl bW92ZWQgdGhlIGNvbnN0IHBhcmFtZXRlciBmcm9tIHRoZSBycGNfdmVyc2lvbiBhcnJheSBzbyB0 aGF0IEkNCj4gY2FuIGNoYW5nZSBpdCBhdCBydW50aW1lLg0KPiANCj4gU2lnbmVkLW9mZi1ieTog QnJ5YW4gU2NodW1ha2VyIDxianNjaHVtYUBuZXRhcHAuY29tPg0KPiAtLS0NCj4gIGZzL2xvY2tk L2NsbnQ0eGRyLmMgICAgICAgICB8ICAgIDIgKy0NCj4gIGZzL2xvY2tkL2NsbnR4ZHIuYyAgICAg ICAgICB8ICAgIDYgKy0tDQo+ICBmcy9sb2NrZC9tb24uYyAgICAgICAgICAgICAgfCAgICA0ICst DQo+ICBmcy9uZnMvTWFrZWZpbGUgICAgICAgICAgICAgfCAgICA2ICstLQ0KPiAgZnMvbmZzL2Ns aWVudC5jICAgICAgICAgICAgIHwgIDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tDQo+ICBmcy9uZnMvaW5vZGUuYyAgICAgICAgICAgICAgfCAgICAyICsNCj4g IGZzL25mcy9tb3VudF9jbG50LmMgICAgICAgICB8ICAgIDYgKy0tDQo+ICBmcy9uZnMvbmZzLmgg ICAgICAgICAgICAgICAgfCAgIDM1ICsrKysrKysrKysrKysrDQo+ICBmcy9uZnMvbmZzMnN1cGVy LmMgICAgICAgICAgfCAgIDMxICsrKysrKysrKysrKw0KPiAgZnMvbmZzL25mczJ4ZHIuYyAgICAg ICAgICAgIHwgICAgMiArLQ0KPiAgZnMvbmZzL25mczNzdXBlci5jICAgICAgICAgIHwgICAzMSAr KysrKysrKysrKysNCj4gIGZzL25mcy9uZnMzeGRyLmMgICAgICAgICAgICB8ICAgIDQgKy0NCj4g IGZzL25mcy9uZnM0c3VwZXIuYyAgICAgICAgICB8ICAgMzEgKysrKysrKysrKysrDQo+ICBmcy9u ZnMvbmZzNHhkci5jICAgICAgICAgICAgfCAgICAyICstDQo+ICBmcy9uZnMvc3VwZXIuYyAgICAg ICAgICAgICAgfCAgIDQ4ICsrKysrKysrKysrKysrLS0tLS0NCj4gIGZzL25mc2QvbmZzNGNhbGxi YWNrLmMgICAgICB8ICAgIDIgKy0NCj4gIGluY2x1ZGUvbGludXgvbG9ja2QveGRyNC5oICB8ICAg IDIgKy0NCj4gIGluY2x1ZGUvbGludXgvbmZzX3hkci5oICAgICB8ICAgIDggKystLQ0KPiAgaW5j bHVkZS9saW51eC9zdW5ycGMvY2xudC5oIHwgICAgMiArLQ0KPiAgbmV0L3N1bnJwYy9ycGNiX2Ns bnQuYyAgICAgIHwgICAgOCArKy0tDQo+ICAyMCBmaWxlcyBjaGFuZ2VkLCAyODAgaW5zZXJ0aW9u cygrKSwgNjMgZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZnMvbmZzL25mcy5o DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZnMvbmZzL25mczJzdXBlci5jDQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZnMvbmZzL25mczNzdXBlci5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZnMvbmZz L25mczRzdXBlci5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZnMvbG9ja2QvY2xudDR4ZHIuYyBiL2Zz L2xvY2tkL2NsbnQ0eGRyLmMNCj4gaW5kZXggM2RkY2JiMS4uNTgwZGJlMiAxMDA2NDQNCj4gLS0t IGEvZnMvbG9ja2QvY2xudDR4ZHIuYw0KPiArKysgYi9mcy9sb2NrZC9jbG50NHhkci5jDQo+IEBA IC01OTgsNyArNTk4LDcgQEAgc3RhdGljIHN0cnVjdCBycGNfcHJvY2luZm8JbmxtNF9wcm9jZWR1 cmVzW10gPSB7DQo+ICAJUFJPQyhHUkFOVEVEX1JFUywJcmVzLAkJbm9yZXApLA0KPiAgfTsNCj4g IA0KPiAtY29uc3Qgc3RydWN0IHJwY192ZXJzaW9uIG5sbV92ZXJzaW9uNCA9IHsNCj4gK3N0cnVj dCBycGNfdmVyc2lvbiBubG1fdmVyc2lvbjQgPSB7DQo+ICAJLm51bWJlcgkJPSA0LA0KPiAgCS5u cnByb2NzCT0gQVJSQVlfU0laRShubG00X3Byb2NlZHVyZXMpLA0KPiAgCS5wcm9jcwkJPSBubG00 X3Byb2NlZHVyZXMsDQo+IGRpZmYgLS1naXQgYS9mcy9sb2NrZC9jbG50eGRyLmMgYi9mcy9sb2Nr ZC9jbG50eGRyLmMNCj4gaW5kZXggM2QzNWUzZS4uNzhlODBjNCAxMDA2NDQNCj4gLS0tIGEvZnMv bG9ja2QvY2xudHhkci5jDQo+ICsrKyBiL2ZzL2xvY2tkL2NsbnR4ZHIuYw0KPiBAQCAtNTk2LDE5 ICs1OTYsMTkgQEAgc3RhdGljIHN0cnVjdCBycGNfcHJvY2luZm8JbmxtX3Byb2NlZHVyZXNbXSA9 IHsNCj4gIAlQUk9DKEdSQU5URURfUkVTLAlyZXMsCQlub3JlcCksDQo+ICB9Ow0KPiAgDQo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IHJwY192ZXJzaW9uCW5sbV92ZXJzaW9uMSA9IHsNCg0KV2h5IHNo b3VsZG4ndCB0aGVzZSAoYW5kIHRoZSBtb3VudCBwcm90b2NvbCBlcXVpdmFsZW50cyBldGMpIHN0 aWxsIGJlDQpkZWNsYXJlZCBjb25zdGFudD8NCg0KPiArc3RhdGljIHN0cnVjdCBycGNfdmVyc2lv bglubG1fdmVyc2lvbjEgPSB7DQo+ICAJCS5udW1iZXIJCT0gMSwNCj4gIAkJLm5ycHJvY3MJPSBB UlJBWV9TSVpFKG5sbV9wcm9jZWR1cmVzKSwNCj4gIAkJLnByb2NzCQk9IG5sbV9wcm9jZWR1cmVz LA0KPiAgfTsNCj4gIA0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBycGNfdmVyc2lvbglubG1fdmVy c2lvbjMgPSB7DQo+ICtzdGF0aWMgc3RydWN0IHJwY192ZXJzaW9uCW5sbV92ZXJzaW9uMyA9IHsN Cj4gIAkJLm51bWJlcgkJPSAzLA0KPiAgCQkubnJwcm9jcwk9IEFSUkFZX1NJWkUobmxtX3Byb2Nl ZHVyZXMpLA0KPiAgCQkucHJvY3MJCT0gbmxtX3Byb2NlZHVyZXMsDQo+ICB9Ow0KPiAgDQo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IHJwY192ZXJzaW9uCSpubG1fdmVyc2lvbnNbXSA9IHsNCj4gK3N0 YXRpYyBzdHJ1Y3QgcnBjX3ZlcnNpb24JKm5sbV92ZXJzaW9uc1tdID0gew0KPiAgCVsxXSA9ICZu bG1fdmVyc2lvbjEsDQo+ICAJWzNdID0gJm5sbV92ZXJzaW9uMywNCj4gICNpZmRlZiBDT05GSUdf TE9DS0RfVjQNCj4gZGlmZiAtLWdpdCBhL2ZzL2xvY2tkL21vbi5jIGIvZnMvbG9ja2QvbW9uLmMN Cj4gaW5kZXggN2VmMTRiMy4uODg4ZDFlZiAxMDA2NDQNCj4gLS0tIGEvZnMvbG9ja2QvbW9uLmMN Cj4gKysrIGIvZnMvbG9ja2QvbW9uLmMNCj4gQEAgLTUzNSwxMyArNTM1LDEzIEBAIHN0YXRpYyBz dHJ1Y3QgcnBjX3Byb2NpbmZvCW5zbV9wcm9jZWR1cmVzW10gPSB7DQo+ICAJfSwNCj4gIH07DQo+ ICANCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnBjX3ZlcnNpb24gbnNtX3ZlcnNpb24xID0gew0K PiArc3RhdGljIHN0cnVjdCBycGNfdmVyc2lvbiBuc21fdmVyc2lvbjEgPSB7DQo+ICAJCS5udW1i ZXIJCT0gMSwNCj4gIAkJLm5ycHJvY3MJPSBBUlJBWV9TSVpFKG5zbV9wcm9jZWR1cmVzKSwNCj4g IAkJLnByb2NzCQk9IG5zbV9wcm9jZWR1cmVzDQo+ICB9Ow0KPiAgDQo+IC1zdGF0aWMgY29uc3Qg c3RydWN0IHJwY192ZXJzaW9uICpuc21fdmVyc2lvbltdID0gew0KPiArc3RhdGljIHN0cnVjdCBy cGNfdmVyc2lvbiAqbnNtX3ZlcnNpb25bXSA9IHsNCj4gIAlbMV0gPSAmbnNtX3ZlcnNpb24xLA0K PiAgfTsNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL01ha2VmaWxlIGIvZnMvbmZzL01ha2Vm aWxlDQo+IGluZGV4IDdkZGQ0NWQuLmM2ZTc4NDQgMTAwNjQ0DQo+IC0tLSBhL2ZzL25mcy9NYWtl ZmlsZQ0KPiArKysgYi9mcy9uZnMvTWFrZWZpbGUNCj4gQEAgLTksMTEgKzksMTEgQEAgbmZzLXkg CQkJOj0gY2xpZW50Lm8gZGlyLm8gZmlsZS5vIGdldHJvb3QubyBpbm9kZS5vIHN1cGVyLm8gXA0K PiAgCQkJICAgd3JpdGUubyBuYW1lc3BhY2UubyBtb3VudF9jbG50Lm8gXA0KPiAgCQkJICAgZG5z X3Jlc29sdmUubyBjYWNoZV9saWIubw0KPiAgbmZzLSQoQ09ORklHX1JPT1RfTkZTKQkrPSBuZnNy b290Lm8NCj4gLW5mcy0kKENPTkZJR19ORlNfVjIpCSs9IHByb2MubyBuZnMyeGRyLm8NCj4gLW5m cy0kKENPTkZJR19ORlNfVjMpCSs9IG5mczNwcm9jLm8gbmZzM3hkci5vDQo+ICtuZnMtJChDT05G SUdfTkZTX1YyKQkrPSBuZnMyc3VwZXIubyBwcm9jLm8gbmZzMnhkci5vDQo+ICtuZnMtJChDT05G SUdfTkZTX1YzKQkrPSBuZnMzc3VwZXIubyBuZnMzcHJvYy5vIG5mczN4ZHIubw0KPiAgbmZzLSQo Q09ORklHX05GU19WM19BQ0wpCSs9IG5mczNhY2wubw0KPiAgbmZzLSQoQ09ORklHX05GU19WNCkJ Kz0gbmZzNHByb2MubyBuZnM0eGRyLm8gbmZzNHN0YXRlLm8gbmZzNHJlbmV3ZC5vIFwNCj4gLQkJ CSAgIGRlbGVnYXRpb24ubyBpZG1hcC5vIFwNCj4gKwkJCSAgIG5mczRzdXBlci5vIGRlbGVnYXRp b24ubyBpZG1hcC5vIFwNCj4gIAkJCSAgIGNhbGxiYWNrLm8gY2FsbGJhY2tfeGRyLm8gY2FsbGJh Y2tfcHJvYy5vIFwNCj4gIAkJCSAgIG5mczRuYW1lc3BhY2Uubw0KPiAgbmZzLSQoQ09ORklHX05G U19WNF8xKQkrPSBwbmZzLm8gcG5mc19kZXYubw0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL2NsaWVu dC5jIGIvZnMvbmZzL2NsaWVudC5jDQo+IGluZGV4IDRkNzkzYjIuLjBmYWZlZGQgMTAwNjQ0DQo+ IC0tLSBhL2ZzL25mcy9jbGllbnQuYw0KPiArKysgYi9mcy9uZnMvY2xpZW50LmMNCj4gQEAgLTUx LDExICs1MSwxNCBAQA0KPiAgI2luY2x1ZGUgImludGVybmFsLmgiDQo+ICAjaW5jbHVkZSAiZnNj YWNoZS5oIg0KPiAgI2luY2x1ZGUgInBuZnMuaCINCj4gKyNpbmNsdWRlICJuZnMuaCINCj4gICNp bmNsdWRlICJuZXRucy5oIg0KPiAgDQo+ICAjZGVmaW5lIE5GU0RCR19GQUNJTElUWQkJTkZTREJH X0NMSUVOVA0KPiAgDQo+ICBzdGF0aWMgREVDTEFSRV9XQUlUX1FVRVVFX0hFQUQobmZzX2NsaWVu dF9hY3RpdmVfd3EpOw0KPiArc3RhdGljIERFRklORV9TUElOTE9DSyhuZnNfdmVyc2lvbl9sb2Nr KTsNCj4gK3N0YXRpYyBMSVNUX0hFQUQobmZzX3ZlcnNpb25zKTsNCj4gICNpZmRlZiBDT05GSUdf TkZTX1Y0DQo+ICANCj4gIC8qDQo+IEBAIC04OSwxNiArOTIsMTAgQEAgc3RhdGljIGJvb2wgbmZz NF9kaXNhYmxlX2lkbWFwcGluZyA9IHRydWU7DQo+ICAvKg0KPiAgICogUlBDIGNydWZ0IGZvciBO RlMNCj4gICAqLw0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBycGNfdmVyc2lvbiAqbmZzX3ZlcnNp b25bNV0gPSB7DQo+IC0jaWZkZWYgQ09ORklHX05GU19WMg0KPiAtCVsyXQkJCT0gJm5mc192ZXJz aW9uMiwNCj4gLSNlbmRpZg0KPiAtI2lmZGVmIENPTkZJR19ORlNfVjMNCj4gLQlbM10JCQk9ICZu ZnNfdmVyc2lvbjMsDQo+IC0jZW5kaWYNCj4gLSNpZmRlZiBDT05GSUdfTkZTX1Y0DQo+IC0JWzRd CQkJPSAmbmZzX3ZlcnNpb240LA0KPiAtI2VuZGlmDQo+ICtzdGF0aWMgc3RydWN0IHJwY192ZXJz aW9uICpuZnNfdmVyc2lvbls1XSA9IHsNCj4gKwlbMl0gPSBOVUxMLA0KPiArCVszXSA9IE5VTEws DQo+ICsJWzRdID0gTlVMTCwNCj4gIH07DQo+ICANCj4gIGNvbnN0IHN0cnVjdCBycGNfcHJvZ3Jh bSBuZnNfcHJvZ3JhbSA9IHsNCj4gQEAgLTExNCwxMCArMTExLDkgQEAgc3RydWN0IHJwY19zdGF0 IG5mc19ycGNzdGF0ID0gew0KPiAgCS5wcm9ncmFtCQk9ICZuZnNfcHJvZ3JhbQ0KPiAgfTsNCj4g IA0KPiAtDQo+ICAjaWZkZWYgQ09ORklHX05GU19WM19BQ0wNCj4gIHN0YXRpYyBzdHJ1Y3QgcnBj X3N0YXQJCW5mc2FjbF9ycGNzdGF0ID0geyAmbmZzYWNsX3Byb2dyYW0gfTsNCj4gLXN0YXRpYyBj b25zdCBzdHJ1Y3QgcnBjX3ZlcnNpb24gKm5mc2FjbF92ZXJzaW9uW10gPSB7DQo+ICtzdGF0aWMg c3RydWN0IHJwY192ZXJzaW9uICpuZnNhY2xfdmVyc2lvbltdID0gew0KPiAgCVszXQkJCT0gJm5m c2FjbF92ZXJzaW9uMywNCj4gIH07DQo+ICANCj4gQEAgLTE0MCw2ICsxMzYsODEgQEAgc3RydWN0 IG5mc19jbGllbnRfaW5pdGRhdGEgew0KPiAgCXN0cnVjdCBuZXQgKm5ldDsNCj4gIH07DQo+ICAN Cj4gK3N0YXRpYyBpbnQgZmluZF9uZnNfdmVyc2lvbihzdHJ1Y3QgbmZzX3N1YnZlcnNpb24gKipu ZnMsIHVuc2lnbmVkIGludCB2ZXJzaW9uKQ0KPiArew0KPiArCXN0cnVjdCBuZnNfc3VidmVyc2lv biAqdG1wOw0KPiArCXNwaW5fbG9jaygmbmZzX3ZlcnNpb25fbG9jayk7DQo+ICsNCj4gKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoKCpuZnMpLCB0bXAsICZuZnNfdmVyc2lvbnMsIGxpc3QpIHsN Cj4gKwkJaWYgKCgqbmZzKS0+dmVyc2lvbiA9PSB2ZXJzaW9uKSB7DQo+ICsJCQlzcGluX3VubG9j aygmbmZzX3ZlcnNpb25fbG9jayk7DQo+ICsJCQlyZXR1cm4gMTsNCj4gKwkJfQ0KPiArCX07DQo+ ICsNCj4gKwlzcGluX3VubG9jaygmbmZzX3ZlcnNpb25fbG9jayk7DQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0cnVjdCBuZnNfc3VidmVyc2lvbiAqZ2V0X25mc192ZXJzaW9uKHVuc2ln bmVkIGludCB2ZXJzaW9uKQ0KPiArew0KPiArCXN0cnVjdCBuZnNfc3VidmVyc2lvbiAqbmZzOw0K PiArDQo+ICsJaWYgKHRyeV90aGVuX3JlcXVlc3RfbW9kdWxlKGZpbmRfbmZzX3ZlcnNpb24oJm5m cywgdmVyc2lvbiksICJuZnMlZCIsIHZlcnNpb24pKQ0KPiArCQlyZXR1cm4gbmZzOw0KPiArCXJl dHVybiBFUlJfUFRSKC1FUFJPVE9OT1NVUFBPUlQpOw0KPiArfQ0KPiArDQo+ICtpbmxpbmUgc3Ry dWN0IG5mc19zdWJ2ZXJzaW9uICpnZXRfbmZzX2NsaWVudF92ZXJzaW9uKHN0cnVjdCBuZnNfY2xp ZW50ICpjbHApDQo+ICt7DQo+ICsJcmV0dXJuIGdldF9uZnNfdmVyc2lvbihjbHAtPnJwY19vcHMt PnZlcnNpb24pOw0KPiArfQ0KPiArDQo+ICtpbmxpbmUgc3RydWN0IG5mc19zdWJ2ZXJzaW9uICpn ZXRfbmZzX3NlcnZlcl92ZXJzaW9uKHN0cnVjdCBuZnNfc2VydmVyICpzcnYpDQo+ICt7DQo+ICsJ cmV0dXJuIGdldF9uZnNfY2xpZW50X3ZlcnNpb24oc3J2LT5uZnNfY2xpZW50KTsNCj4gK30NCj4g Kw0KPiArdm9pZCByZWdpc3Rlcl9uZnNfdmVyc2lvbihzdHJ1Y3QgbmZzX3N1YnZlcnNpb24gKm5m cykNCj4gK3sNCj4gKwlzcGluX2xvY2soJm5mc192ZXJzaW9uX2xvY2spOw0KPiArDQo+ICsJbGlz dF9hZGQoJm5mcy0+bGlzdCwgJm5mc192ZXJzaW9ucyk7DQo+ICsJbmZzX3ZlcnNpb25bbmZzLT52 ZXJzaW9uXSA9IG5mcy0+cnBjX3ZlcnM7DQo+ICsNCj4gKwlzcGluX3VubG9jaygmbmZzX3ZlcnNp b25fbG9jayk7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTChyZWdpc3Rlcl9uZnNfdmVyc2lv bik7DQo+ICsNCj4gK3ZvaWQgdW5yZWdpc3Rlcl9uZnNfdmVyc2lvbihzdHJ1Y3QgbmZzX3N1YnZl cnNpb24gKm5mcykNCj4gK3sNCj4gKwlzcGluX2xvY2soJm5mc192ZXJzaW9uX2xvY2spOw0KPiAr DQo+ICsJbmZzX3ZlcnNpb25bbmZzLT52ZXJzaW9uXSA9IE5VTEw7DQo+ICsJbGlzdF9kZWwoJm5m cy0+bGlzdCk7DQo+ICsNCj4gKwlzcGluX3VubG9jaygmbmZzX3ZlcnNpb25fbG9jayk7DQo+ICt9 DQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh1bnJlZ2lzdGVyX25mc192ZXJzaW9uKTsNCj4gKw0KPiAr LyoNCj4gKyAqIFByZWxvYWQgYWxsIGNvbmZpZ3VyZWQgTkZTIHZlcnNpb25zIGR1cmluZyBtb2R1 bGUgaW5pdC4NCj4gKyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGVkaXRlZCBhZnRlciBlYWNo IHByb3RvY29sIGlzIGNvbnZlcnRlZCwNCj4gKyAqIGFuZCBldmVudHVhbGx5IHJlbW92ZWQuDQo+ ICsgKi8NCj4gK3ZvaWQgX19pbml0IG5mc19yZWdpc3Rlcl92ZXJzaW9ucyh2b2lkKQ0KPiArew0K PiArI2lmZGVmIENPTkZJR19ORlNfVjINCj4gKwlpbml0X25mc192MigpOw0KPiArI2VuZGlmDQo+ ICsjaWZkZWYgQ09ORklHX05GU19WMw0KPiArCWluaXRfbmZzX3YzKCk7DQo+ICsjZW5kaWYNCj4g KyNpZmRlZiBDT05GSUdfTkZTX1Y0DQo+ICsJaW5pdF9uZnNfdjQoKTsNCj4gKyNlbmRpZg0KPiAr fQ0KPiArDQo+ICAvKg0KPiAgICogQWxsb2NhdGUgYSBzaGFyZWQgY2xpZW50IHJlY29yZA0KPiAg ICoNCj4gQEAgLTg1NSwyMSArOTI2LDE1IEBAIHN0YXRpYyBpbnQgbmZzX2luaXRfc2VydmVyKHN0 cnVjdCBuZnNfc2VydmVyICpzZXJ2ZXIsDQo+ICAJfTsNCj4gIAlzdHJ1Y3QgcnBjX3RpbWVvdXQg dGltZXBhcm1zOw0KPiAgCXN0cnVjdCBuZnNfY2xpZW50ICpjbHA7DQo+ICsJc3RydWN0IG5mc19z dWJ2ZXJzaW9uICpuZnNfbW9kOw0KPiAgCWludCBlcnJvcjsNCj4gIA0KPiAgCWRwcmludGsoIi0t PiBuZnNfaW5pdF9zZXJ2ZXIoKVxuIik7DQo+ICANCj4gLQ0KPiAtI2lmZGVmIENPTkZJR19ORlNf VjINCj4gLQlpZiAoZGF0YS0+dmVyc2lvbiA9PSAyKQ0KPiAtCQljbF9pbml0LnJwY19vcHMgPSAm bmZzX3YyX2NsaWVudG9wczsNCj4gLSNlbmRpZg0KPiAtI2lmZGVmIENPTkZJR19ORlNfVjMNCj4g LQlpZiAoZGF0YS0+dmVyc2lvbiA9PSAzKQ0KPiAtCQljbF9pbml0LnJwY19vcHMgPSAmbmZzX3Yz X2NsaWVudG9wczsNCj4gLSNlbmRpZg0KPiAtCWlmIChjbF9pbml0LnJwY19vcHMgPT0gTlVMTCkN Cj4gLQkJcmV0dXJuIC1FUFJPVE9OT1NVUFBPUlQ7DQo+ICsJbmZzX21vZCA9IGdldF9uZnNfdmVy c2lvbihkYXRhLT52ZXJzaW9uKTsNCj4gKwlpZiAoSVNfRVJSKG5mc19tb2QpKQ0KPiArCQlyZXR1 cm4gUFRSX0VSUihuZnNfbW9kKTsNCj4gKwljbF9pbml0LnJwY19vcHMgPSBuZnNfbW9kLT5ycGNf b3BzOw0KPiAgDQo+ICAJbmZzX2luaXRfdGltZW91dF92YWx1ZXMoJnRpbWVwYXJtcywgZGF0YS0+ bmZzX3NlcnZlci5wcm90b2NvbCwNCj4gIAkJCWRhdGEtPnRpbWVvLCBkYXRhLT5yZXRyYW5zKTsN Cj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9pbm9kZS5jIGIvZnMvbmZzL2lub2RlLmMNCj4gaW5kZXgg N2JiNGQxMy4uMDJhMWM0MyAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL2lub2RlLmMNCj4gKysrIGIv ZnMvbmZzL2lub2RlLmMNCj4gQEAgLTUyLDYgKzUyLDcgQEANCj4gICNpbmNsdWRlICJmc2NhY2hl LmgiDQo+ICAjaW5jbHVkZSAiZG5zX3Jlc29sdmUuaCINCj4gICNpbmNsdWRlICJwbmZzLmgiDQo+ ICsjaW5jbHVkZSAibmZzLmgiDQo+ICAjaW5jbHVkZSAibmV0bnMuaCINCj4gIA0KPiAgI2RlZmlu ZSBORlNEQkdfRkFDSUxJVFkJCU5GU0RCR19WRlMNCj4gQEAgLTE2OTUsNiArMTY5Niw3IEBAIHN0 YXRpYyBpbnQgX19pbml0IGluaXRfbmZzX2ZzKHZvaWQpDQo+ICAjZW5kaWYNCj4gIAlpZiAoKGVy ciA9IHJlZ2lzdGVyX25mc19mcygpKSAhPSAwKQ0KPiAgCQlnb3RvIG91dDsNCj4gKwluZnNfcmVn aXN0ZXJfdmVyc2lvbnMoKTsNCj4gIAlyZXR1cm4gMDsNCj4gIG91dDoNCj4gICNpZmRlZiBDT05G SUdfUFJPQ19GUw0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL21vdW50X2NsbnQuYyBiL2ZzL25mcy9t b3VudF9jbG50LmMNCj4gaW5kZXggOGU2NWM3Zi4uZGRjN2QxOSAxMDA2NDQNCj4gLS0tIGEvZnMv bmZzL21vdW50X2NsbnQuYw0KPiArKysgYi9mcy9uZnMvbW91bnRfY2xudC5jDQo+IEBAIC00ODgs MTkgKzQ4OCwxOSBAQCBzdGF0aWMgc3RydWN0IHJwY19wcm9jaW5mbyBtbnQzX3Byb2NlZHVyZXNb XSA9IHsNCj4gIH07DQo+ICANCj4gDQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHJwY192ZXJzaW9u IG1udF92ZXJzaW9uMSA9IHsNCj4gK3N0YXRpYyBzdHJ1Y3QgcnBjX3ZlcnNpb24gbW50X3ZlcnNp b24xID0gew0KPiAgCS5udW1iZXIJCT0gMSwNCj4gIAkubnJwcm9jcwk9IEFSUkFZX1NJWkUobW50 X3Byb2NlZHVyZXMpLA0KPiAgCS5wcm9jcwkJPSBtbnRfcHJvY2VkdXJlcywNCj4gIH07DQo+ICAN Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnBjX3ZlcnNpb24gbW50X3ZlcnNpb24zID0gew0KPiAr c3RhdGljIHN0cnVjdCBycGNfdmVyc2lvbiBtbnRfdmVyc2lvbjMgPSB7DQo+ICAJLm51bWJlcgkJ PSAzLA0KPiAgCS5ucnByb2NzCT0gQVJSQVlfU0laRShtbnQzX3Byb2NlZHVyZXMpLA0KPiAgCS5w cm9jcwkJPSBtbnQzX3Byb2NlZHVyZXMsDQo+ICB9Ow0KPiAgDQo+IC1zdGF0aWMgY29uc3Qgc3Ry dWN0IHJwY192ZXJzaW9uICptbnRfdmVyc2lvbltdID0gew0KPiArc3RhdGljIHN0cnVjdCBycGNf dmVyc2lvbiAqbW50X3ZlcnNpb25bXSA9IHsNCj4gIAlOVUxMLA0KPiAgCSZtbnRfdmVyc2lvbjEs DQo+ICAJTlVMTCwNCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnMuaCBiL2ZzL25mcy9uZnMuaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi4wNWY2ODQ5DQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvZnMvbmZzL25mcy5oDQo+IEBAIC0wLDAgKzEsMzUgQEANCj4gKy8q DQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTIgTmV0YXBwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ICsgKg0KPiArICogRnVuY3Rpb24gYW5kIHN0cnVjdHVyZXMgZXhwb3J0ZWQgYnkgdGhl IE5GUyBtb2R1bGUNCj4gKyAqIGZvciB1c2UgYnkgTkZTIHZlcnNpb24tc3BlY2lmaWMgbW9kdWxl cy4NCj4gKyAqLw0KPiArI2lmbmRlZiBfX0xJTlVYX0lOVEVSTkFMX05GU19IDQo+ICsjZGVmaW5l IF9fTElOVVhfSU5URVJOQUxfTkZTX0gNCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQo+ ICsjaW5jbHVkZSA8bGludXgvc3VucnBjL3NjaGVkLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbmZz X3hkci5oPg0KPiArDQo+ICtzdHJ1Y3QgbmZzX3N1YnZlcnNpb24gew0KPiArCXVuc2lnbmVkIGlu dCB2ZXJzaW9uOwkJLyogUHJvdG9jb2wgbnVtYmVyICovDQpXb24ndCB0aGlzIGJlIGEgZHVwbGlj YXRlIG9mIHdoYXQgd2UgYWxyZWFkeSBoYXZlIGluIHRoZSBycGNfb3BzPw0KDQo+ICsJc3RydWN0 IHJwY192ZXJzaW9uICpycGNfdmVyczsJLyogTkZTIHZlcnNpb24gaW5mb3JtYXRpb24gKi8NCj4g Kwljb25zdCBzdHJ1Y3QgbmZzX3JwY19vcHMgKnJwY19vcHM7CS8qIE5GUyBvcGVyYXRpb25zICov DQo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwkJLyogTGlzdCBvZiBORlMgdmVyc2lvbnMgKi8N Cj4gKw0KPiArCXZvaWQgKCpyZWZlcmVuY2UpKHZvaWQpOwkvKiBGb3IgcmVmZXJlbmNlIGNvdW50 aW5nICovDQo+ICsJdm9pZCAoKnVucmVmZXJlbmNlKSh2b2lkKTsJLyogQWxzbyBmb3IgcmVmZXJl bmNlIGNvdW50aW5nICovDQoNCllvdSBhcmUgYWx3YXlzIGp1c3QgZ29pbmcgdG8gcGluIGFuZCB1 bnBpbiB0aGUgbW9kdWxlLCBzbyB3aHkgZG8gdGhleQ0KbmVlZCB0byBiZSBmdW5jdGlvbiBwb2lu dGVycz8gSnVzdCBoYXZlIGVhY2ggbW9kdWxlIHN0b3JlIGEgcG9pbnRlciB0bw0KVEhJU19NT0RV TEUgaW4gdGhlIGFib3ZlIHN0cnVjdHVyZSBpbnN0ZWFkLg0KDQo+ICt9Ow0KPiArDQo+ICt2b2lk IG5mc19yZWdpc3Rlcl92ZXJzaW9ucyh2b2lkKTsNCj4gK2ludCBpbml0X25mc192Mih2b2lkKTsN Cj4gK2ludCBpbml0X25mc192Myh2b2lkKTsNCj4gK2ludCBpbml0X25mc192NCh2b2lkKTsNCj4g Kw0KPiArc3RydWN0IG5mc19zdWJ2ZXJzaW9uICpnZXRfbmZzX3ZlcnNpb24odW5zaWduZWQgaW50 KTsNCj4gK3N0cnVjdCBuZnNfc3VidmVyc2lvbiAqZ2V0X25mc19jbGllbnRfdmVyc2lvbihzdHJ1 Y3QgbmZzX2NsaWVudCAqKTsNCj4gK3N0cnVjdCBuZnNfc3VidmVyc2lvbiAqZ2V0X25mc19zZXJ2 ZXJfdmVyc2lvbihzdHJ1Y3QgbmZzX3NlcnZlciAqKTsNCj4gK3ZvaWQgcmVnaXN0ZXJfbmZzX3Zl cnNpb24oc3RydWN0IG5mc19zdWJ2ZXJzaW9uICopOw0KPiArdm9pZCB1bnJlZ2lzdGVyX25mc192 ZXJzaW9uKHN0cnVjdCBuZnNfc3VidmVyc2lvbiAqKTsNCj4gKw0KPiArI2VuZGlmIC8qIF9fTElO VVhfSU5URVJOQUxfTkZTX0ggKi8NCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnMyc3VwZXIuYyBi L2ZzL25mcy9uZnMyc3VwZXIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwLi4xMmZhOTA2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZnMvbmZzL25mczJzdXBlci5j DQo+IEBAIC0wLDAgKzEsMzEgQEANCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTIgTmV0 YXBwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKi8NCj4gKyNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9uZnNfZnMuaD4NCj4gKyNpbmNsdWRlICJu ZnMuaCINCj4gKw0KPiArc3RhdGljIHZvaWQgbmZzMl9yZWZlcmVuY2Uodm9pZCkNCj4gK3sNCj4g Kwl0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lk IG5mczJfdW5yZWZlcmVuY2Uodm9pZCkNCj4gK3sNCj4gKwltb2R1bGVfcHV0KFRISVNfTU9EVUxF KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHN0cnVjdCBuZnNfc3VidmVyc2lvbiBuZnNfdjIgPSB7 DQo+ICsJLnZlcnNpb24gID0gMiwNCj4gKwkucnBjX3ZlcnMgPSAmbmZzX3ZlcnNpb24yLA0KPiAr CS5ycGNfb3BzICA9ICZuZnNfdjJfY2xpZW50b3BzLA0KPiArDQo+ICsJLnJlZmVyZW5jZSA9IG5m czJfcmVmZXJlbmNlLA0KPiArCS51bnJlZmVyZW5jZSA9IG5mczJfdW5yZWZlcmVuY2UsDQo+ICt9 Ow0KPiArDQo+ICtpbnQgX19pbml0IGluaXRfbmZzX3YyKHZvaWQpDQo+ICt7DQo+ICsJcmVnaXN0 ZXJfbmZzX3ZlcnNpb24oJm5mc192Mik7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1n aXQgYS9mcy9uZnMvbmZzMnhkci5jIGIvZnMvbmZzL25mczJ4ZHIuYw0KPiBpbmRleCBhMDEwODRk Li41ZDllYzhiIDEwMDY0NA0KPiAtLS0gYS9mcy9uZnMvbmZzMnhkci5jDQo+ICsrKyBiL2ZzL25m cy9uZnMyeGRyLmMNCj4gQEAgLTEwODYsNyArMTA4Niw3IEBAIHN0cnVjdCBycGNfcHJvY2luZm8J bmZzX3Byb2NlZHVyZXNbXSA9IHsNCj4gIAlQUk9DKFNUQVRGUywJZmhhbmRsZSwJc3RhdGZzcmVz LAkwKSwNCj4gIH07DQo+ICANCj4gLWNvbnN0IHN0cnVjdCBycGNfdmVyc2lvbiBuZnNfdmVyc2lv bjIgPSB7DQo+ICtzdHJ1Y3QgcnBjX3ZlcnNpb24gbmZzX3ZlcnNpb24yID0gew0KPiAgCS5udW1i ZXIJCQk9IDIsDQo+ICAJLm5ycHJvY3MJCT0gQVJSQVlfU0laRShuZnNfcHJvY2VkdXJlcyksDQo+ ICAJLnByb2NzCQkJPSBuZnNfcHJvY2VkdXJlcw0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL25mczNz dXBlci5jIGIvZnMvbmZzL25mczNzdXBlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAuLmEwMmM4MTUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9mcy9uZnMvbmZz M3N1cGVyLmMNCj4gQEAgLTAsMCArMSwzMSBAQA0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAoYykg MjAxMiBOZXRhcHAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqLw0KPiArI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L25mc19mcy5oPg0KPiArI2lu Y2x1ZGUgIm5mcy5oIg0KPiArDQo+ICtzdGF0aWMgdm9pZCBuZnMzX3JlZmVyZW5jZSh2b2lkKQ0K PiArew0KPiArCXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTsNCj4gK30NCj4gKw0KPiArc3Rh dGljIHZvaWQgbmZzM191bnJlZmVyZW5jZSh2b2lkKQ0KPiArew0KPiArCW1vZHVsZV9wdXQoVEhJ U19NT0RVTEUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IG5mc19zdWJ2ZXJzaW9uIG5m c192MyA9IHsNCj4gKwkudmVyc2lvbiAgPSAzLA0KPiArCS5ycGNfdmVycyA9ICZuZnNfdmVyc2lv bjMsDQo+ICsJLnJwY19vcHMgID0gJm5mc192M19jbGllbnRvcHMsDQo+ICsNCj4gKwkucmVmZXJl bmNlID0gbmZzM19yZWZlcmVuY2UsDQo+ICsJLnVucmVmZXJlbmNlID0gbmZzM191bnJlZmVyZW5j ZSwNCj4gK307DQo+ICsNCj4gK2ludCBfX2luaXQgaW5pdF9uZnNfdjModm9pZCkNCj4gK3sNCj4g KwlyZWdpc3Rlcl9uZnNfdmVyc2lvbigmbmZzX3YzKTsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4g ZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnMzeGRyLmMgYi9mcy9uZnMvbmZzM3hkci5jDQo+IGluZGV4 IGE3N2NjOWEuLjVmOWFhYmQgMTAwNjQ0DQo+IC0tLSBhL2ZzL25mcy9uZnMzeGRyLmMNCj4gKysr IGIvZnMvbmZzL25mczN4ZHIuYw0KPiBAQCAtMjQ2MSw3ICsyNDYxLDcgQEAgc3RydWN0IHJwY19w cm9jaW5mbwluZnMzX3Byb2NlZHVyZXNbXSA9IHsNCj4gIAlQUk9DKENPTU1JVCwJCWNvbW1pdCwJ CWNvbW1pdCwJCTUpLA0KPiAgfTsNCj4gIA0KPiAtY29uc3Qgc3RydWN0IHJwY192ZXJzaW9uIG5m c192ZXJzaW9uMyA9IHsNCj4gK3N0cnVjdCBycGNfdmVyc2lvbiBuZnNfdmVyc2lvbjMgPSB7DQo+ ICAJLm51bWJlcgkJCT0gMywNCj4gIAkubnJwcm9jcwkJPSBBUlJBWV9TSVpFKG5mczNfcHJvY2Vk dXJlcyksDQo+ICAJLnByb2NzCQkJPSBuZnMzX3Byb2NlZHVyZXMNCj4gQEAgLTI0ODksNyArMjQ4 OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcnBjX3Byb2NpbmZvCW5mczNfYWNsX3Byb2NlZHVyZXNbXSA9 IHsNCj4gIAl9LA0KPiAgfTsNCj4gIA0KPiAtY29uc3Qgc3RydWN0IHJwY192ZXJzaW9uIG5mc2Fj bF92ZXJzaW9uMyA9IHsNCj4gK3N0cnVjdCBycGNfdmVyc2lvbiBuZnNhY2xfdmVyc2lvbjMgPSB7 DQo+ICAJLm51bWJlcgkJCT0gMywNCj4gIAkubnJwcm9jcwkJPSBzaXplb2YobmZzM19hY2xfcHJv Y2VkdXJlcykvDQo+ICAJCQkJICBzaXplb2YobmZzM19hY2xfcHJvY2VkdXJlc1swXSksDQo+IGRp ZmYgLS1naXQgYS9mcy9uZnMvbmZzNHN1cGVyLmMgYi9mcy9uZnMvbmZzNHN1cGVyLmMNCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uOWIyYTY3OQ0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL2ZzL25mcy9uZnM0c3VwZXIuYw0KPiBAQCAtMCwwICsxLDMxIEBADQo+ICsv Kg0KPiArICogQ29weXJpZ2h0IChjKSAyMDEyIE5ldGFwcCwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KPiArICovDQo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ICsjaW5jbHVkZSA8 bGludXgvbmZzX2ZzLmg+DQo+ICsjaW5jbHVkZSAibmZzLmgiDQo+ICsNCj4gK3N0YXRpYyB2b2lk IG5mczRfcmVmZXJlbmNlKHZvaWQpDQo+ICt7DQo+ICsJdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RV TEUpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBuZnM0X3VucmVmZXJlbmNlKHZvaWQpDQo+ ICt7DQo+ICsJbW9kdWxlX3B1dChUSElTX01PRFVMRSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBz dHJ1Y3QgbmZzX3N1YnZlcnNpb24gbmZzX3Y0ID0gew0KPiArCS52ZXJzaW9uICA9IDQsDQo+ICsJ LnJwY192ZXJzID0gJm5mc192ZXJzaW9uNCwNCj4gKwkucnBjX29wcyAgPSAmbmZzX3Y0X2NsaWVu dG9wcywNCj4gKw0KPiArCS5yZWZlcmVuY2UgPSBuZnM0X3JlZmVyZW5jZSwNCj4gKwkudW5yZWZl cmVuY2UgPSBuZnM0X3VucmVmZXJlbmNlLA0KPiArfTsNCj4gKw0KPiAraW50IF9faW5pdCBpbml0 X25mc192NCh2b2lkKQ0KPiArew0KPiArCXJlZ2lzdGVyX25mc192ZXJzaW9uKCZuZnNfdjQpOw0K PiArCXJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL25mczR4ZHIuYyBiL2Zz L25mcy9uZnM0eGRyLmMNCj4gaW5kZXggYzc0ZmRiMS4uY2ZkMzMzYyAxMDA2NDQNCj4gLS0tIGEv ZnMvbmZzL25mczR4ZHIuYw0KPiArKysgYi9mcy9uZnMvbmZzNHhkci5jDQo+IEBAIC03MDcxLDcg KzcwNzEsNyBAQCBzdHJ1Y3QgcnBjX3Byb2NpbmZvCW5mczRfcHJvY2VkdXJlc1tdID0gew0KPiAg I2VuZGlmIC8qIENPTkZJR19ORlNfVjRfMSAqLw0KPiAgfTsNCj4gIA0KPiAtY29uc3Qgc3RydWN0 IHJwY192ZXJzaW9uIG5mc192ZXJzaW9uNCA9IHsNCj4gK3N0cnVjdCBycGNfdmVyc2lvbiBuZnNf dmVyc2lvbjQgPSB7DQo+ICAJLm51bWJlcgkJCT0gNCwNCj4gIAkubnJwcm9jcwkJPSBBUlJBWV9T SVpFKG5mczRfcHJvY2VkdXJlcyksDQo+ICAJLnByb2NzCQkJPSBuZnM0X3Byb2NlZHVyZXMNCj4g ZGlmZiAtLWdpdCBhL2ZzL25mcy9zdXBlci5jIGIvZnMvbmZzL3N1cGVyLmMNCj4gaW5kZXggYWFj NDAzMC4uNWFiN2MwZCAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL3N1cGVyLmMNCj4gKysrIGIvZnMv bmZzL3N1cGVyLmMNCj4gQEAgLTY1LDYgKzY1LDcgQEANCj4gICNpbmNsdWRlICJpbnRlcm5hbC5o Ig0KPiAgI2luY2x1ZGUgImZzY2FjaGUuaCINCj4gICNpbmNsdWRlICJwbmZzLmgiDQo+ICsjaW5j bHVkZSAibmZzLmgiDQo+ICANCj4gICNkZWZpbmUgTkZTREJHX0ZBQ0lMSVRZCQlORlNEQkdfVkZT DQo+ICANCj4gQEAgLTIyODQsNiArMjI4NSwyMiBAQCBzdGF0aWMgaW50IG5mc19iZGlfcmVnaXN0 ZXIoc3RydWN0IG5mc19zZXJ2ZXIgKnNlcnZlcikNCj4gIAlyZXR1cm4gYmRpX3JlZ2lzdGVyX2Rl digmc2VydmVyLT5iYWNraW5nX2Rldl9pbmZvLCBzZXJ2ZXItPnNfZGV2KTsNCj4gIH0NCj4gIA0K PiArc3RhdGljIGludCBuZnNfcmVnaXN0ZXIoc3RydWN0IG5mc19zZXJ2ZXIgKnNlcnZlcikNCj4g K3sNCj4gKwlzdHJ1Y3QgbmZzX3N1YnZlcnNpb24gKm5mc19tb2QgPSBnZXRfbmZzX3NlcnZlcl92 ZXJzaW9uKHNlcnZlcik7DQo+ICsJaW50IGVyciA9IG5mc19iZGlfcmVnaXN0ZXIoc2VydmVyKTsN Cj4gKwlpZiAoIWVycikNCj4gKwkJbmZzX21vZC0+cmVmZXJlbmNlKCk7DQo+ICsJcmV0dXJuIGVy cjsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgbmZzX3VucmVnaXN0ZXIoc3RydWN0IG5mc19z ZXJ2ZXIgKnNlcnZlcikNCj4gK3sNCj4gKwlzdHJ1Y3QgbmZzX3N1YnZlcnNpb24gKm5mc19tb2Qg PSBnZXRfbmZzX3NlcnZlcl92ZXJzaW9uKHNlcnZlcik7DQo+ICsJYmRpX3VucmVnaXN0ZXIoJnNl cnZlci0+YmFja2luZ19kZXZfaW5mbyk7DQo+ICsJbmZzX21vZC0+dW5yZWZlcmVuY2UoKTsNCj4g K30NCj4gKw0KPiAgc3RhdGljIHN0cnVjdCBkZW50cnkgKm5mc19mc19tb3VudChzdHJ1Y3QgZmls ZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwNCj4gIAlpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9u YW1lLCB2b2lkICpyYXdfZGF0YSkNCj4gIHsNCj4gQEAgLTIyOTYsNiArMjMxMyw3IEBAIHN0YXRp YyBzdHJ1Y3QgZGVudHJ5ICpuZnNfZnNfbW91bnQoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZz X3R5cGUsDQo+ICAJc3RydWN0IG5mc19zYl9tb3VudGRhdGEgc2JfbW50ZGF0YSA9IHsNCj4gIAkJ Lm1udGZsYWdzID0gZmxhZ3MsDQo+ICAJfTsNCj4gKwlzdHJ1Y3QgbmZzX3N1YnZlcnNpb24gKm5m c19tb2Q7DQo+ICAJaW50IGVycm9yOw0KPiAgDQo+ICAJZGF0YSA9IG5mc19hbGxvY19wYXJzZWRf bW91bnRfZGF0YShORlNfREVGQVVMVF9WRVJTSU9OKTsNCj4gQEAgLTIzMTAsNiArMjMyOCwxMiBA QCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqbmZzX2ZzX21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90 eXBlICpmc190eXBlLA0KPiAgCQlnb3RvIG91dDsNCj4gIAl9DQo+ICANCj4gKwluZnNfbW9kID0g Z2V0X25mc192ZXJzaW9uKGRhdGEtPnZlcnNpb24pOw0KPiArCWlmIChJU19FUlIobmZzX21vZCkp IHsNCj4gKwkJbW50cm9vdCA9IChzdHJ1Y3QgZGVudHJ5ICopbmZzX21vZDsNCj4gKwkJZ290byBv dXQ7DQo+ICsJfQ0KPiArDQo+ICAjaWZkZWYgQ09ORklHX05GU19WNA0KPiAgCWlmIChkYXRhLT52 ZXJzaW9uID09IDQpIHsNCj4gIAkJbW50cm9vdCA9IG5mczRfdHJ5X21vdW50KGZsYWdzLCBkZXZf bmFtZSwgZGF0YSk7DQo+IEBAIC0yMzQzLDcgKzIzNjcsNyBAQCBzdGF0aWMgc3RydWN0IGRlbnRy eSAqbmZzX2ZzX21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLA0KPiAgCQlu ZnNfZnJlZV9zZXJ2ZXIoc2VydmVyKTsNCj4gIAkJc2VydmVyID0gTlVMTDsNCj4gIAl9IGVsc2Ug ew0KPiAtCQllcnJvciA9IG5mc19iZGlfcmVnaXN0ZXIoc2VydmVyKTsNCj4gKwkJZXJyb3IgPSBu ZnNfcmVnaXN0ZXIoc2VydmVyKTsNCj4gIAkJaWYgKGVycm9yKSB7DQo+ICAJCQltbnRyb290ID0g RVJSX1BUUihlcnJvcik7DQo+ICAJCQlnb3RvIGVycm9yX3NwbGF0X2JkaTsNCj4gQEAgLTIzODAs NyArMjQwNCw3IEBAIGVycm9yX3NwbGF0X3Jvb3Q6DQo+ICAJbW50cm9vdCA9IEVSUl9QVFIoZXJy b3IpOw0KPiAgZXJyb3Jfc3BsYXRfc3VwZXI6DQo+ICAJaWYgKHNlcnZlciAmJiAhcy0+c19yb290 KQ0KPiAtCQliZGlfdW5yZWdpc3Rlcigmc2VydmVyLT5iYWNraW5nX2Rldl9pbmZvKTsNCj4gKwkJ bmZzX3VucmVnaXN0ZXIoc2VydmVyKTsNCj4gIGVycm9yX3NwbGF0X2JkaToNCj4gIAlkZWFjdGl2 YXRlX2xvY2tlZF9zdXBlcihzKTsNCj4gIAlnb3RvIG91dDsNCj4gQEAgLTIzOTIsOSArMjQxNiw3 IEBAIGVycm9yX3NwbGF0X2JkaToNCj4gICAqLw0KPiAgc3RhdGljIHZvaWQgbmZzX3B1dF9zdXBl cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMpDQo+ICB7DQo+IC0Jc3RydWN0IG5mc19zZXJ2ZXIgKnNl cnZlciA9IE5GU19TQihzKTsNCj4gLQ0KPiAtCWJkaV91bnJlZ2lzdGVyKCZzZXJ2ZXItPmJhY2tp bmdfZGV2X2luZm8pOw0KPiArCW5mc191bnJlZ2lzdGVyKE5GU19TQihzKSk7DQo+ICB9DQo+ICAN Cj4gIC8qDQo+IEBAIC0yNDU0LDcgKzI0NzYsNyBAQCBuZnNfeGRldl9tb3VudChzdHJ1Y3QgZmls ZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwgaW50IGZsYWdzLA0KPiAgCQluZnNfZnJlZV9zZXJ2ZXIo c2VydmVyKTsNCj4gIAkJc2VydmVyID0gTlVMTDsNCj4gIAl9IGVsc2Ugew0KPiAtCQllcnJvciA9 IG5mc19iZGlfcmVnaXN0ZXIoc2VydmVyKTsNCj4gKwkJZXJyb3IgPSBuZnNfcmVnaXN0ZXIoc2Vy dmVyKTsNCj4gIAkJaWYgKGVycm9yKQ0KPiAgCQkJZ290byBlcnJvcl9zcGxhdF9iZGk7DQo+ICAJ fQ0KPiBAQCAtMjQ5Miw3ICsyNTE0LDcgQEAgb3V0X2Vycl9ub3NlcnZlcjoNCj4gIA0KPiAgZXJy b3Jfc3BsYXRfc3VwZXI6DQo+ICAJaWYgKHNlcnZlciAmJiAhcy0+c19yb290KQ0KPiAtCQliZGlf dW5yZWdpc3Rlcigmc2VydmVyLT5iYWNraW5nX2Rldl9pbmZvKTsNCj4gKwkJbmZzX3VucmVnaXN0 ZXIoc2VydmVyKTsNCj4gIGVycm9yX3NwbGF0X2JkaToNCj4gIAlkZWFjdGl2YXRlX2xvY2tlZF9z dXBlcihzKTsNCj4gIAlkcHJpbnRrKCI8LS0gbmZzX3hkZXZfbW91bnQoKSA9ICVkIFtzcGxhdF1c biIsIGVycm9yKTsNCj4gQEAgLTI3MTcsNyArMjczOSw3IEBAIG5mczRfcmVtb3RlX21vdW50KHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsDQo+ICAJCW5mc19mcmVl X3NlcnZlcihzZXJ2ZXIpOw0KPiAgCQlzZXJ2ZXIgPSBOVUxMOw0KPiAgCX0gZWxzZSB7DQo+IC0J CWVycm9yID0gbmZzX2JkaV9yZWdpc3RlcihzZXJ2ZXIpOw0KPiArCQllcnJvciA9IG5mc19yZWdp c3RlcihzZXJ2ZXIpOw0KPiAgCQlpZiAoZXJyb3IpDQo+ICAJCQlnb3RvIGVycm9yX3NwbGF0X2Jk aTsNCj4gIAl9DQo+IEBAIC0yNzU1LDcgKzI3NzcsNyBAQCBlcnJvcl9zcGxhdF9yb290Og0KPiAg CWRwdXQobW50cm9vdCk7DQo+ICBlcnJvcl9zcGxhdF9zdXBlcjoNCj4gIAlpZiAoc2VydmVyICYm ICFzLT5zX3Jvb3QpDQo+IC0JCWJkaV91bnJlZ2lzdGVyKCZzZXJ2ZXItPmJhY2tpbmdfZGV2X2lu Zm8pOw0KPiArCQluZnNfdW5yZWdpc3RlcihzZXJ2ZXIpOw0KPiAgZXJyb3Jfc3BsYXRfYmRpOg0K PiAgCWRlYWN0aXZhdGVfbG9ja2VkX3N1cGVyKHMpOw0KPiAgCWdvdG8gb3V0Ow0KPiBAQCAtMjk3 Nyw3ICsyOTk5LDcgQEAgbmZzNF94ZGV2X21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpm c190eXBlLCBpbnQgZmxhZ3MsDQo+ICAJCW5mc19mcmVlX3NlcnZlcihzZXJ2ZXIpOw0KPiAgCQlz ZXJ2ZXIgPSBOVUxMOw0KPiAgCX0gZWxzZSB7DQo+IC0JCWVycm9yID0gbmZzX2JkaV9yZWdpc3Rl cihzZXJ2ZXIpOw0KPiArCQllcnJvciA9IG5mc19yZWdpc3RlcihzZXJ2ZXIpOw0KPiAgCQlpZiAo ZXJyb3IpDQo+ICAJCQlnb3RvIGVycm9yX3NwbGF0X2JkaTsNCj4gIAl9DQo+IEBAIC0zMDE0LDcg KzMwMzYsNyBAQCBvdXRfZXJyX25vc2VydmVyOg0KPiAgDQo+ICBlcnJvcl9zcGxhdF9zdXBlcjoN Cj4gIAlpZiAoc2VydmVyICYmICFzLT5zX3Jvb3QpDQo+IC0JCWJkaV91bnJlZ2lzdGVyKCZzZXJ2 ZXItPmJhY2tpbmdfZGV2X2luZm8pOw0KPiArCQluZnNfdW5yZWdpc3RlcihzZXJ2ZXIpOw0KPiAg ZXJyb3Jfc3BsYXRfYmRpOg0KPiAgCWRlYWN0aXZhdGVfbG9ja2VkX3N1cGVyKHMpOw0KPiAgCWRw cmludGsoIjwtLSBuZnM0X3hkZXZfbW91bnQoKSA9ICVkIFtzcGxhdF1cbiIsIGVycm9yKTsNCj4g QEAgLTMwNjgsNyArMzA5MCw3IEBAIG5mczRfcmVtb3RlX3JlZmVycmFsX21vdW50KHN0cnVjdCBm aWxlX3N5c3RlbV90eXBlICpmc190eXBlLCBpbnQgZmxhZ3MsDQo+ICAJCW5mc19mcmVlX3NlcnZl cihzZXJ2ZXIpOw0KPiAgCQlzZXJ2ZXIgPSBOVUxMOw0KPiAgCX0gZWxzZSB7DQo+IC0JCWVycm9y ID0gbmZzX2JkaV9yZWdpc3RlcihzZXJ2ZXIpOw0KPiArCQllcnJvciA9IG5mc19yZWdpc3Rlcihz ZXJ2ZXIpOw0KPiAgCQlpZiAoZXJyb3IpDQo+ICAJCQlnb3RvIGVycm9yX3NwbGF0X2JkaTsNCj4g IAl9DQo+IEBAIC0zMTA4LDcgKzMxMzAsNyBAQCBvdXRfZXJyX25vZmg6DQo+ICANCj4gIGVycm9y X3NwbGF0X3N1cGVyOg0KPiAgCWlmIChzZXJ2ZXIgJiYgIXMtPnNfcm9vdCkNCj4gLQkJYmRpX3Vu cmVnaXN0ZXIoJnNlcnZlci0+YmFja2luZ19kZXZfaW5mbyk7DQo+ICsJCW5mc191bnJlZ2lzdGVy KHNlcnZlcik7DQo+ICBlcnJvcl9zcGxhdF9iZGk6DQo+ICAJZGVhY3RpdmF0ZV9sb2NrZWRfc3Vw ZXIocyk7DQo+ICAJbmZzX2ZyZWVfZmhhbmRsZShtbnRmaCk7DQo+IGRpZmYgLS1naXQgYS9mcy9u ZnNkL25mczRjYWxsYmFjay5jIGIvZnMvbmZzZC9uZnM0Y2FsbGJhY2suYw0KPiBpbmRleCAwZTI2 MmYzLi43NGQxOWQ0IDEwMDY0NA0KPiAtLS0gYS9mcy9uZnNkL25mczRjYWxsYmFjay5jDQo+ICsr KyBiL2ZzL25mc2QvbmZzNGNhbGxiYWNrLmMNCj4gQEAgLTYwNSw3ICs2MDUsNyBAQCBzdGF0aWMg c3RydWN0IHJwY192ZXJzaW9uIG5mc19jYl92ZXJzaW9uNCA9IHsNCj4gIAkucHJvY3MJCQk9IG5m czRfY2JfcHJvY2VkdXJlcw0KPiAgfTsNCj4gIA0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBycGNf dmVyc2lvbiAqbmZzX2NiX3ZlcnNpb25bXSA9IHsNCj4gK3N0YXRpYyBzdHJ1Y3QgcnBjX3ZlcnNp b24gKm5mc19jYl92ZXJzaW9uW10gPSB7DQo+ICAJJm5mc19jYl92ZXJzaW9uNCwNCj4gIH07DQo+ ICANCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbG9ja2QveGRyNC5oIGIvaW5jbHVkZS9s aW51eC9sb2NrZC94ZHI0LmgNCj4gaW5kZXggZTU4Yzg4Yi4uNzM1MzgyMSAxMDA2NDQNCj4gLS0t IGEvaW5jbHVkZS9saW51eC9sb2NrZC94ZHI0LmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9sb2Nr ZC94ZHI0LmgNCj4gQEAgLTQyLDYgKzQyLDYgQEAgaW50CW5sbWNsdF9lbmNvZGVfbG9ja2FyZ3Mo c3RydWN0IHJwY19ycXN0ICosIHUzMiAqLCBzdHJ1Y3QgbmxtX2FyZ3MgKik7DQo+ICBpbnQJbmxt Y2x0X2VuY29kZV9jYW5jYXJncyhzdHJ1Y3QgcnBjX3Jxc3QgKiwgdTMyICosIHN0cnVjdCBubG1f YXJncyAqKTsNCj4gIGludAlubG1jbHRfZW5jb2RlX3VubG9ja2FyZ3Moc3RydWN0IHJwY19ycXN0 ICosIHUzMiAqLCBzdHJ1Y3QgbmxtX2FyZ3MgKik7DQo+ICAgKi8NCj4gLWV4dGVybiBjb25zdCBz dHJ1Y3QgcnBjX3ZlcnNpb24gbmxtX3ZlcnNpb240Ow0KPiArZXh0ZXJuIHN0cnVjdCBycGNfdmVy c2lvbiBubG1fdmVyc2lvbjQ7DQo+ICANCj4gICNlbmRpZiAvKiBMT0NLRF9YRFI0X0ggKi8NCj4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmZzX3hkci5oIGIvaW5jbHVkZS9saW51eC9uZnNf eGRyLmgNCj4gaW5kZXggYmZkMGQxYi4uYTUyZGRkNSAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9s aW51eC9uZnNfeGRyLmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9uZnNfeGRyLmgNCj4gQEAgLTEz MDAsMTEgKzEzMDAsMTEgQEAgc3RydWN0IG5mc19ycGNfb3BzIHsNCj4gIGV4dGVybiBjb25zdCBz dHJ1Y3QgbmZzX3JwY19vcHMJbmZzX3YyX2NsaWVudG9wczsNCj4gIGV4dGVybiBjb25zdCBzdHJ1 Y3QgbmZzX3JwY19vcHMJbmZzX3YzX2NsaWVudG9wczsNCj4gIGV4dGVybiBjb25zdCBzdHJ1Y3Qg bmZzX3JwY19vcHMJbmZzX3Y0X2NsaWVudG9wczsNCj4gLWV4dGVybiBjb25zdCBzdHJ1Y3QgcnBj X3ZlcnNpb24gbmZzX3ZlcnNpb24yOw0KPiAtZXh0ZXJuIGNvbnN0IHN0cnVjdCBycGNfdmVyc2lv biBuZnNfdmVyc2lvbjM7DQo+IC1leHRlcm4gY29uc3Qgc3RydWN0IHJwY192ZXJzaW9uIG5mc192 ZXJzaW9uNDsNCj4gK2V4dGVybiBzdHJ1Y3QgcnBjX3ZlcnNpb24gbmZzX3ZlcnNpb24yOw0KPiAr ZXh0ZXJuIHN0cnVjdCBycGNfdmVyc2lvbiBuZnNfdmVyc2lvbjM7DQo+ICtleHRlcm4gc3RydWN0 IHJwY192ZXJzaW9uIG5mc192ZXJzaW9uNDsNCj4gIA0KPiAtZXh0ZXJuIGNvbnN0IHN0cnVjdCBy cGNfdmVyc2lvbiBuZnNhY2xfdmVyc2lvbjM7DQo+ICtleHRlcm4gc3RydWN0IHJwY192ZXJzaW9u IG5mc2FjbF92ZXJzaW9uMzsNCj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgcnBjX3Byb2dyYW0gbmZz YWNsX3Byb2dyYW07DQo+ICANCj4gICNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9zdW5ycGMvY2xudC5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvY2xudC5oDQo+IGluZGV4IDUy MzU0N2UuLjYyNGQ4ZTMgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvbGludXgvc3VucnBjL2NsbnQu aA0KPiArKysgYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9jbG50LmgNCj4gQEAgLTcyLDcgKzcyLDcg QEAgc3RydWN0IHJwY19wcm9ncmFtIHsNCj4gIAljb25zdCBjaGFyICoJCW5hbWU7CQkvKiBwcm90 b2NvbCBuYW1lICovDQo+ICAJdTMyCQkJbnVtYmVyOwkJLyogcHJvZ3JhbSBudW1iZXIgKi8NCj4g IAl1bnNpZ25lZCBpbnQJCW5ydmVyczsJCS8qIG51bWJlciBvZiB2ZXJzaW9ucyAqLw0KPiAtCWNv bnN0IHN0cnVjdCBycGNfdmVyc2lvbiAqKgl2ZXJzaW9uOwkvKiB2ZXJzaW9uIGFycmF5ICovDQo+ ICsJc3RydWN0IHJwY192ZXJzaW9uICoqCXZlcnNpb247CS8qIHZlcnNpb24gYXJyYXkgKi8NCg0K VGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5Lg0KDQo+ICAJc3RydWN0IHJwY19zdGF0ICoJc3Rh dHM7CQkvKiBzdGF0aXN0aWNzICovDQo+ICAJY29uc3QgY2hhciAqCQlwaXBlX2Rpcl9uYW1lOwkv KiBwYXRoIHRvIHJwY19waXBlZnMgZGlyICovDQo+ICB9Ow0KPiBkaWZmIC0tZ2l0IGEvbmV0L3N1 bnJwYy9ycGNiX2NsbnQuYyBiL25ldC9zdW5ycGMvcnBjYl9jbG50LmMNCj4gaW5kZXggMjA3YTc0 Ni4uMjI3YjVmYiAxMDA2NDQNCj4gLS0tIGEvbmV0L3N1bnJwYy9ycGNiX2NsbnQuYw0KPiArKysg Yi9uZXQvc3VucnBjL3JwY2JfY2xudC5jDQo+IEBAIC0xMDgxLDI1ICsxMDgxLDI1IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgcnBjYl9pbmZvIHJwY2JfbmV4dF92ZXJzaW9uNltdID0gew0KPiAgCX0s DQo+ICB9Ow0KPiAgDQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHJwY192ZXJzaW9uIHJwY2JfdmVy c2lvbjIgPSB7DQo+ICtzdGF0aWMgc3RydWN0IHJwY192ZXJzaW9uIHJwY2JfdmVyc2lvbjIgPSB7 DQo+ICAJLm51bWJlcgkJPSBSUENCVkVSU18yLA0KPiAgCS5ucnByb2NzCT0gQVJSQVlfU0laRShy cGNiX3Byb2NlZHVyZXMyKSwNCj4gIAkucHJvY3MJCT0gcnBjYl9wcm9jZWR1cmVzMg0KPiAgfTsN Cj4gIA0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBycGNfdmVyc2lvbiBycGNiX3ZlcnNpb24zID0g ew0KPiArc3RhdGljIHN0cnVjdCBycGNfdmVyc2lvbiBycGNiX3ZlcnNpb24zID0gew0KPiAgCS5u dW1iZXIJCT0gUlBDQlZFUlNfMywNCj4gIAkubnJwcm9jcwk9IEFSUkFZX1NJWkUocnBjYl9wcm9j ZWR1cmVzMyksDQo+ICAJLnByb2NzCQk9IHJwY2JfcHJvY2VkdXJlczMNCj4gIH07DQo+ICANCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnBjX3ZlcnNpb24gcnBjYl92ZXJzaW9uNCA9IHsNCj4gK3N0 YXRpYyBzdHJ1Y3QgcnBjX3ZlcnNpb24gcnBjYl92ZXJzaW9uNCA9IHsNCj4gIAkubnVtYmVyCQk9 IFJQQ0JWRVJTXzQsDQo+ICAJLm5ycHJvY3MJPSBBUlJBWV9TSVpFKHJwY2JfcHJvY2VkdXJlczQp LA0KPiAgCS5wcm9jcwkJPSBycGNiX3Byb2NlZHVyZXM0DQo+ICB9Ow0KPiAgDQo+IC1zdGF0aWMg Y29uc3Qgc3RydWN0IHJwY192ZXJzaW9uICpycGNiX3ZlcnNpb25bXSA9IHsNCj4gK3N0YXRpYyBz dHJ1Y3QgcnBjX3ZlcnNpb24gKnJwY2JfdmVyc2lvbltdID0gew0KPiAgCU5VTEwsDQo+ICAJTlVM TCwNCj4gIAkmcnBjYl92ZXJzaW9uMiwNCg0KLS0gDQpUcm9uZCBNeWtsZWJ1c3QNCkxpbnV4IE5G UyBjbGllbnQgbWFpbnRhaW5lcg0KDQpOZXRBcHANClRyb25kLk15a2xlYnVzdEBuZXRhcHAuY29t DQp3d3cubmV0YXBwLmNvbQ0KDQo=