From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC PATCH 08/10] ARM: vGIC: move target vcpu from irq_rank to struct pending_irq Date: Thu, 4 May 2017 18:20:56 +0100 Message-ID: References: <20170504153123.1204-1-andre.przywara@arm.com> <20170504153123.1204-9-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6KR3-0007wp-M2 for xen-devel@lists.xenproject.org; Thu, 04 May 2017 17:21:01 +0000 In-Reply-To: <20170504153123.1204-9-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andre Przywara , Stefano Stabellini Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpPbiAwNC8wNS8xNyAxNjozMSwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gU28g ZmFyIHdlIGtlcHQgdGhlIHRhcmdldCBWQ1BVIGZvciBTUElzIGluIHRoZSByYW5rIHN0cnVjdHVy ZS4KPiBNb3ZlIHRoYXQgaW5mb3JtYXRpb24gb3ZlciBpbnRvIHBlbmRpbmdfaXJxLgo+IFRoaXMg Y2hhbmdlcyB2Z2ljX2dldF90YXJnZXRfdmNwdSgpLCB3aGljaCBub3cgdGFrZXMgb25seSBhIGRv bWFpbgo+IGFuZCBhIHN0cnVjdCBwZW5kaW5nX2lycSB0byBnZXQgdGhlIHRhcmdldCB2Q1BVLCBp biBhIHdheSB0aGF0IGRvZXMgbm90Cj4gbmVjZXNzYXJpbHkgcmVxdWlyZSB0aGUgcGVuZGluZ19p cnEgbG9jayB0byBiZSBoZWxkLgoKWW91IGRvbid0IGV4cGxhaW4gaGFsZiBvZiB0aGUgY2hhbmdl cyBtYWRlIGluIHRoaXMgcGF0Y2guIE1vc3Qgb2YgdGhlbSAKd291bGQgYmUgYmV0dGVyIGluIHNl cGFyYXRlIHBhdGNoIGFzIHRoZXkgZG9uJ3QgbmVjZXNzYXJpbHkgZGVwZW5kcyBvbiAKdGhlIG1v dmUgZnJvbSB0aGUgcmFuayB0byBwZW5kaW5nX2lycS4KCj4KPiBTaWduZWQtb2ZmLWJ5OiBBbmRy ZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KPiAtLS0KPiAgeGVuL2FyY2gvYXJt L2dpYy5jICAgICAgICAgfCAgMyArLQo+ICB4ZW4vYXJjaC9hcm0vdmdpYy12Mi5jICAgICB8IDU3 ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIHhlbi9hcmNoL2FybS92Z2lj LXYzLmMgICAgIHwgNzEgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KPiAgeGVuL2FyY2gvYXJtL3ZnaWMuYyAgICAgICAgfCA3NCArKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5o IHwgMTUgKysrKy0tLS0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDEy MyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLmMgYi94ZW4v YXJjaC9hcm0vZ2ljLmMKPiBpbmRleCBlMTc1ZTliLi43MzdkYTZiIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL2FybS9naWMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMuYwo+IEBAIC00OTIsNyAr NDkyLDggQEAgc3RhdGljIHZvaWQgZ2ljX3VwZGF0ZV9vbmVfbHIoc3RydWN0IHZjcHUgKnYsIGlu dCBpKQo+ICAgICAgICAgICAgICBzbXBfd21iKCk7Cj4gICAgICAgICAgICAgIGlmICggdGVzdF9i aXQoR0lDX0lSUV9HVUVTVF9NSUdSQVRJTkcsICZwLT5zdGF0dXMpICkKPiAgICAgICAgICAgICAg ewo+IC0gICAgICAgICAgICAgICAgc3RydWN0IHZjcHUgKnZfdGFyZ2V0ID0gdmdpY19nZXRfdGFy Z2V0X3ZjcHUodiwgaXJxKTsKPiArICAgICAgICAgICAgICAgIHN0cnVjdCB2Y3B1ICp2X3Rhcmdl dCA9IHZnaWNfZ2V0X3RhcmdldF92Y3B1KHYtPmRvbWFpbiwgcCk7Cj4gKwo+ICAgICAgICAgICAg ICAgICAgaXJxX3NldF9hZmZpbml0eShwLT5kZXNjLCBjcHVtYXNrX29mKHZfdGFyZ2V0LT5wcm9j ZXNzb3IpKTsKPiAgICAgICAgICAgICAgICAgIGNsZWFyX2JpdChHSUNfSVJRX0dVRVNUX01JR1JB VElORywgJnAtPnN0YXR1cyk7Cj4gICAgICAgICAgICAgIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL3ZnaWMtdjIuYyBiL3hlbi9hcmNoL2FybS92Z2ljLXYyLmMKPiBpbmRleCAyMmM2Nzlj Li5iZjc1NWFlIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS92Z2ljLXYyLmMKPiArKysgYi94 ZW4vYXJjaC9hcm0vdmdpYy12Mi5jCj4gQEAgLTY2LDE5ICs2NiwyMSBAQCB2b2lkIHZnaWNfdjJf c2V0dXBfaHcocGFkZHJfdCBkYmFzZSwgcGFkZHJfdCBjYmFzZSwgcGFkZHJfdCBjc2l6ZSwKPiAg ICoKPiAgICogTm90ZSB0aGUgYnl0ZSBvZmZzZXQgd2lsbCBiZSBhbGlnbmVkIHRvIGFuIElUQVJH RVRTUjxuPiBib3VuZGFyeS4KPiAgICovCj4gLXN0YXRpYyB1aW50MzJfdCB2Z2ljX2ZldGNoX2l0 YXJnZXRzcihzdHJ1Y3QgdmdpY19pcnFfcmFuayAqcmFuaywKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQpCj4gK3N0YXRpYyB1aW50MzJf dCB2Z2ljX2ZldGNoX2l0YXJnZXRzcihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IG9mZnNl dCkKCldoeSBjYW4ndCB5b3UgZGlyZWN0bHkgdXNlIHRoZSBtYWNyb3MgeW91IGludHJvZHVjZWQg aW4gIzU/Cgo+ICB7Cj4gICAgICB1aW50MzJfdCByZWcgPSAwOwo+ICAgICAgdW5zaWduZWQgaW50 IGk7Cj4KPiAtICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcmFuay0+bG9jaykpOwo+IC0KPiAt ICAgIG9mZnNldCAmPSBJTlRFUlJVUFRfUkFOS19NQVNLOwo+ICAgICAgb2Zmc2V0ICY9IH4oTlJf VEFSR0VUU19QRVJfSVRBUkdFVFNSIC0gMSk7Cj4KPiAgICAgIGZvciAoIGkgPSAwOyBpIDwgTlJf VEFSR0VUU19QRVJfSVRBUkdFVFNSOyBpKyssIG9mZnNldCsrICkKPiAtICAgICAgICByZWcgfD0g KDEgPDwgcmVhZF9hdG9taWMoJnJhbmstPnZjcHVbb2Zmc2V0XSkpIDw8IChpICogTlJfQklUU19Q RVJfVEFSR0VUKTsKPiArICAgIHsKPiArICAgICAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSBp cnFfdG9fcGVuZGluZyh2LCBvZmZzZXQpOwo+ICsKPiArICAgICAgICBzcGluX2xvY2soJnAtPmxv Y2spOwo+ICsgICAgICAgIHJlZyB8PSAoMSA8PCBwLT52Y3B1X2lkKSA8PCAoaSAqIE5SX0JJVFNf UEVSX1RBUkdFVCk7Cj4gKyAgICAgICAgc3Bpbl91bmxvY2soJnAtPmxvY2spOwo+ICsgICAgfQo+ Cj4gICAgICByZXR1cm4gcmVnOwo+ICB9Cj4gQEAgLTg5LDMyICs5MSwyOCBAQCBzdGF0aWMgdWlu dDMyX3QgdmdpY19mZXRjaF9pdGFyZ2V0c3Ioc3RydWN0IHZnaWNfaXJxX3JhbmsgKnJhbmssCj4g ICAqCj4gICAqIE5vdGUgdGhlIGJ5dGUgb2Zmc2V0IHdpbGwgYmUgYWxpZ25lZCB0byBhbiBJVEFS R0VUU1I8bj4gYm91bmRhcnkuCj4gICAqLwo+IC1zdGF0aWMgdm9pZCB2Z2ljX3N0b3JlX2l0YXJn ZXRzcihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmdpY19pcnFfcmFuayAqcmFuaywKPiArc3Rh dGljIHZvaWQgdmdpY19zdG9yZV9pdGFyZ2V0c3Ioc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCwgdWludDMyX3Qg aXRhcmdldHNyKQoKUGxlYXNlIHJlLWluZGVudCBwcm9wZXJseS4KCj4gIHsKPiAgICAgIHVuc2ln bmVkIGludCBpOwo+ICAgICAgdW5zaWduZWQgaW50IHZpcnE7Cj4KPiAtICAgIEFTU0VSVChzcGlu X2lzX2xvY2tlZCgmcmFuay0+bG9jaykpOwo+IC0KPiAgICAgIC8qCj4gICAgICAgKiBUaGUgSVRB UkdFVFNSMC03LCB1c2VkIGZvciBTR0lzL1BQSXMsIGFyZSBpbXBsZW1lbnRlZCBSTyBpbiB0aGUK PiAgICAgICAqIGVtdWxhdGlvbiBhbmQgc2hvdWxkIG5ldmVyIGNhbGwgdGhpcyBmdW5jdGlvbi4K PiAgICAgICAqCj4gLSAgICAgKiBUaGV5IGFsbCBsaXZlIGluIHRoZSBmaXJzdCByYW5rLgo+ICsg ICAgICogVGhleSBhbGwgbGl2ZSBpbiB0aGUgZmlyc3QgZm91ciBieXRlcyBvZiBJVEFSR0VUU1Iu Cj4gICAgICAgKi8KPiAtICAgIEJVSUxEX0JVR19PTihOUl9JTlRFUlJVUFRfUEVSX1JBTksgIT0g MzIpOwo+IC0gICAgQVNTRVJUKHJhbmstPmluZGV4ID49IDEpOwo+ICsgICAgQVNTRVJUKG9mZnNl dCA+PSA0KTsKPgo+IC0gICAgb2Zmc2V0ICY9IElOVEVSUlVQVF9SQU5LX01BU0s7Cj4gKyAgICB2 aXJxID0gb2Zmc2V0Owo+ICAgICAgb2Zmc2V0ICY9IH4oTlJfVEFSR0VUU19QRVJfSVRBUkdFVFNS IC0gMSk7Cj4KPiAtICAgIHZpcnEgPSByYW5rLT5pbmRleCAqIE5SX0lOVEVSUlVQVF9QRVJfUkFO SyArIG9mZnNldDsKPiAtCj4gICAgICBmb3IgKCBpID0gMDsgaSA8IE5SX1RBUkdFVFNfUEVSX0lU QVJHRVRTUjsgaSsrLCBvZmZzZXQrKywgdmlycSsrICkKPiAgICAgIHsKPiAgICAgICAgICB1bnNp Z25lZCBpbnQgbmV3X3RhcmdldCwgb2xkX3RhcmdldDsKPiAgICAgICAgICB1aW50OF90IG5ld19t YXNrOwo+ICsgICAgICAgIHN0cnVjdCBwZW5kaW5nX2lycSAqcCA9IHNwaV90b19wZW5kaW5nKGQs IHZpcnEpOwo+Cj4gICAgICAgICAgLyoKPiAgICAgICAgICAgKiBEb24ndCBuZWVkIHRvIG1hc2sg YXMgd2UgcmVseSBvbiBuZXdfbWFzayB0byBmaXQgZm9yIG9ubHkgb25lCj4gQEAgLTE1MSwxNiAr MTQ5LDE3IEBAIHN0YXRpYyB2b2lkIHZnaWNfc3RvcmVfaXRhcmdldHNyKHN0cnVjdCBkb21haW4g KmQsIHN0cnVjdCB2Z2ljX2lycV9yYW5rICpyYW5rLAo+ICAgICAgICAgIC8qIFRoZSB2Q1BVIElE IGFsd2F5cyBzdGFydHMgZnJvbSAwICovCj4gICAgICAgICAgbmV3X3RhcmdldC0tOwo+Cj4gLSAg ICAgICAgb2xkX3RhcmdldCA9IHJlYWRfYXRvbWljKCZyYW5rLT52Y3B1W29mZnNldF0pOwo+ICsg ICAgICAgIHNwaW5fbG9jaygmcC0+bG9jayk7CgpJIHN1c3BlY3QgeW91IG5lZWQgdG8gZGlzYWJs ZSBpbnRlcnJ1cHQgaGVyZS4KCj4gKwo+ICsgICAgICAgIG9sZF90YXJnZXQgPSBwLT52Y3B1X2lk Owo+Cj4gICAgICAgICAgLyogT25seSBtaWdyYXRlIHRoZSB2SVJRIGlmIHRoZSB0YXJnZXQgdkNQ VSBoYXMgY2hhbmdlZCAqLwo+ICAgICAgICAgIGlmICggbmV3X3RhcmdldCAhPSBvbGRfdGFyZ2V0 ICkKPiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIGlmICggdmdpY19taWdyYXRlX2lycShkLT52 Y3B1W29sZF90YXJnZXRdLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPnZjcHVb bmV3X3RhcmdldF0sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlycSkgKQo+IC0g ICAgICAgICAgICAgICAgd3JpdGVfYXRvbWljKCZyYW5rLT52Y3B1W29mZnNldF0sIG5ld190YXJn ZXQpOwo+ICsgICAgICAgICAgICBpZiAoIHZnaWNfbWlncmF0ZV9pcnEocCwgZC0+dmNwdVtvbGRf dGFyZ2V0XSwgZC0+dmNwdVtuZXdfdGFyZ2V0XSkgKQo+ICsgICAgICAgICAgICAgICAgcC0+dmNw dV9pZCA9IG5ld190YXJnZXQ7Cj4gICAgICAgICAgfQo+ICsgICAgICAgIHNwaW5fdW5sb2NrKCZw LT5sb2NrKTsKPiAgICAgIH0KPiAgfQo+Cj4gQEAgLTE2OCw5ICsxNjcsNyBAQCBzdGF0aWMgaW50 IHZnaWNfdjJfZGlzdHJfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5m bywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90ICpyLCB2 b2lkICpwcml2KQo+ICB7Cj4gICAgICBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8tPmRhYnQ7 Cj4gLSAgICBzdHJ1Y3QgdmdpY19pcnFfcmFuayAqcmFuazsKPiAgICAgIGludCBnaWNkX3JlZyA9 IChpbnQpKGluZm8tPmdwYSAtIHYtPmRvbWFpbi0+YXJjaC52Z2ljLmRiYXNlKTsKPiAtICAgIHVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAgICB1bnNpZ25lZCBpbnQgaXJxOwo+Cj4gICAgICBwZXJm Y19pbmNyKHZnaWNkX3JlYWRzKTsKPiBAQCAtMjU5LDExICsyNTYsNyBAQCBzdGF0aWMgaW50IHZn aWNfdjJfZGlzdHJfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywK PiAgICAgICAgICB1aW50MzJfdCBpdGFyZ2V0c3I7Cj4KPiAgICAgICAgICBpZiAoIGRhYnQuc2l6 ZSAhPSBEQUJUX0JZVEUgJiYgZGFidC5zaXplICE9IERBQlRfV09SRCApIGdvdG8gYmFkX3dpZHRo Owo+IC0gICAgICAgIHJhbmsgPSB2Z2ljX3Jhbmtfb2Zmc2V0KHYsIDgsIGdpY2RfcmVnIC0gR0lD RF9JVEFSR0VUU1IsIERBQlRfV09SRCk7Cj4gLSAgICAgICAgaWYgKCByYW5rID09IE5VTEwpIGdv dG8gcmVhZF9hc196ZXJvOwo+IC0gICAgICAgIHZnaWNfbG9ja19yYW5rKHYsIHJhbmssIGZsYWdz KTsKPiAtICAgICAgICBpdGFyZ2V0c3IgPSB2Z2ljX2ZldGNoX2l0YXJnZXRzcihyYW5rLCBnaWNk X3JlZyAtIEdJQ0RfSVRBUkdFVFNSKTsKPiAtICAgICAgICB2Z2ljX3VubG9ja19yYW5rKHYsIHJh bmssIGZsYWdzKTsKPiArICAgICAgICBpdGFyZ2V0c3IgPSB2Z2ljX2ZldGNoX2l0YXJnZXRzcih2 LCBnaWNkX3JlZyAtIEdJQ0RfSVRBUkdFVFNSKTsKPiAgICAgICAgICAqciA9IHZnaWNfcmVnMzJf ZXh0cmFjdChpdGFyZ2V0c3IsIGluZm8pOwo+Cj4gICAgICAgICAgcmV0dXJuIDE7Cj4gQEAgLTM4 NSwxMCArMzc4LDggQEAgc3RhdGljIGludCB2Z2ljX3YyX2Rpc3RyX21taW9fd3JpdGUoc3RydWN0 IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZWdpc3Rlcl90IHIsIHZvaWQgKnByaXYpCj4gIHsKPiAgICAgIHN0cnVjdCBo c3JfZGFidCBkYWJ0ID0gaW5mby0+ZGFidDsKPiAtICAgIHN0cnVjdCB2Z2ljX2lycV9yYW5rICpy YW5rOwo+ICAgICAgaW50IGdpY2RfcmVnID0gKGludCkoaW5mby0+Z3BhIC0gdi0+ZG9tYWluLT5h cmNoLnZnaWMuZGJhc2UpOwo+ICAgICAgdWludDMyX3QgdHI7Cj4gLSAgICB1bnNpZ25lZCBsb25n IGZsYWdzOwo+ICAgICAgdW5zaWduZWQgaW50IGlycTsKPgo+ICAgICAgcGVyZmNfaW5jcih2Z2lj ZF93cml0ZXMpOwo+IEBAIC00OTIsMTQgKzQ4MywxMCBAQCBzdGF0aWMgaW50IHZnaWNfdjJfZGlz dHJfbW1pb193cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sCj4gICAgICAg ICAgdWludDMyX3QgaXRhcmdldHNyOwo+Cj4gICAgICAgICAgaWYgKCBkYWJ0LnNpemUgIT0gREFC VF9CWVRFICYmIGRhYnQuc2l6ZSAhPSBEQUJUX1dPUkQgKSBnb3RvIGJhZF93aWR0aDsKPiAtICAg ICAgICByYW5rID0gdmdpY19yYW5rX29mZnNldCh2LCA4LCBnaWNkX3JlZyAtIEdJQ0RfSVRBUkdF VFNSLCBEQUJUX1dPUkQpOwo+IC0gICAgICAgIGlmICggcmFuayA9PSBOVUxMKSBnb3RvIHdyaXRl X2lnbm9yZTsKPiAtICAgICAgICB2Z2ljX2xvY2tfcmFuayh2LCByYW5rLCBmbGFncyk7Cj4gLSAg ICAgICAgaXRhcmdldHNyID0gdmdpY19mZXRjaF9pdGFyZ2V0c3IocmFuaywgZ2ljZF9yZWcgLSBH SUNEX0lUQVJHRVRTUik7Cj4gKyAgICAgICAgaXRhcmdldHNyID0gdmdpY19mZXRjaF9pdGFyZ2V0 c3IodiwgZ2ljZF9yZWcgLSBHSUNEX0lUQVJHRVRTUik7Cj4gICAgICAgICAgdmdpY19yZWczMl91 cGRhdGUoJml0YXJnZXRzciwgciwgaW5mbyk7Cj4gLSAgICAgICAgdmdpY19zdG9yZV9pdGFyZ2V0 c3Iodi0+ZG9tYWluLCByYW5rLCBnaWNkX3JlZyAtIEdJQ0RfSVRBUkdFVFNSLAo+ICsgICAgICAg IHZnaWNfc3RvcmVfaXRhcmdldHNyKHYtPmRvbWFpbiwgZ2ljZF9yZWcgLSBHSUNEX0lUQVJHRVRT UiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGFyZ2V0c3IpOwo+IC0gICAgICAg IHZnaWNfdW5sb2NrX3JhbmsodiwgcmFuaywgZmxhZ3MpOwo+ICAgICAgICAgIHJldHVybiAxOwo+ ICAgICAgfQo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMgYi94ZW4vYXJj aC9hcm0vdmdpYy12My5jCj4gaW5kZXggMDE3NjRjOS4uMTVhNTEyYSAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC9hcm0vdmdpYy12My5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwo+IEBA IC05NywxOCArOTcsMjAgQEAgc3RhdGljIHN0cnVjdCB2Y3B1ICp2Z2ljX3YzX2lyb3V0ZXJfdG9f dmNwdShzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBpcm91dGVyKQo+ICAgKgo+ICAgKiBOb3Rl IHRoZSBieXRlIG9mZnNldCB3aWxsIGJlIGFsaWduZWQgdG8gYW4gSVJPVVRFUjxuPiBib3VuZGFy eS4KPiAgICovCj4gLXN0YXRpYyB1aW50NjRfdCB2Z2ljX2ZldGNoX2lyb3V0ZXIoc3RydWN0IHZn aWNfaXJxX3JhbmsgKnJhbmssCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IG9mZnNldCkKPiArc3RhdGljIHVpbnQ2NF90IHZnaWNfZmV0Y2hfaXJvdXRl cihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IG9mZnNldCkKPiAgewo+IC0gICAgQVNTRVJU KHNwaW5faXNfbG9ja2VkKCZyYW5rLT5sb2NrKSk7Cj4gKyAgICBzdHJ1Y3QgcGVuZGluZ19pcnEg KnA7Cj4gKyAgICB1aW50NjRfdCBhZmY7Cj4KPiAgICAgIC8qIFRoZXJlIGlzIGV4YWN0bHkgMSB2 SVJRIHBlciBJUk9VVEVSICovCj4gICAgICBvZmZzZXQgLz0gTlJfQllURVNfUEVSX0lST1VURVI7 Cj4KPiAtICAgIC8qIEdldCB0aGUgaW5kZXggaW4gdGhlIHJhbmsgKi8KPiAtICAgIG9mZnNldCAm PSBJTlRFUlJVUFRfUkFOS19NQVNLOwo+ICsgICAgcCA9IGlycV90b19wZW5kaW5nKHYsIG9mZnNl dCk7Cj4gKyAgICBzcGluX2xvY2soJnAtPmxvY2spOwoKU2FtZSByZW1hcmsgZm9yIHRoZSBpbnRl cnJ1cHRzLgoKPiArICAgIGFmZiA9IHZjcHVpZF90b192YWZmaW5pdHkocC0+dmNwdV9pZCk7Cj4g KyAgICBzcGluX3VubG9jaygmcC0+bG9jayk7Cj4KPiAtICAgIHJldHVybiB2Y3B1aWRfdG9fdmFm ZmluaXR5KHJlYWRfYXRvbWljKCZyYW5rLT52Y3B1W29mZnNldF0pKTsKPiArICAgIHJldHVybiBh ZmY7Cj4gIH0KPgo+ICAvKgo+IEBAIC0xMTcsMTEgKzExOSwxMyBAQCBzdGF0aWMgdWludDY0X3Qg dmdpY19mZXRjaF9pcm91dGVyKHN0cnVjdCB2Z2ljX2lycV9yYW5rICpyYW5rLAo+ICAgKgo+ICAg KiBOb3RlIHRoZSBvZmZzZXQgd2lsbCBiZSBhbGlnbmVkIHRvIHRoZSBhcHByb3ByaWF0ZSBib3Vu ZGFyeS4KPiAgICovCj4gLXN0YXRpYyB2b2lkIHZnaWNfc3RvcmVfaXJvdXRlcihzdHJ1Y3QgZG9t YWluICpkLCBzdHJ1Y3QgdmdpY19pcnFfcmFuayAqcmFuaywKPiArc3RhdGljIHZvaWQgdmdpY19z dG9yZV9pcm91dGVyKHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1aW50NjRfdCBpcm91dGVyKQo+ICB7Cj4gICAg ICBzdHJ1Y3QgdmNwdSAqbmV3X3ZjcHUsICpvbGRfdmNwdTsKPiArICAgIHN0cnVjdCBwZW5kaW5n X2lycSAqcDsKPiAgICAgIHVuc2lnbmVkIGludCB2aXJxOwo+ICsgICAgYm9vbCByZWluamVjdDsK Pgo+ICAgICAgLyogVGhlcmUgaXMgMSB2SVJRIHBlciBJUk9VVEVSICovCj4gICAgICB2aXJxID0g b2Zmc2V0IC8gTlJfQllURVNfUEVSX0lST1VURVI7Cj4gQEAgLTEzMiwxMSArMTM2LDExIEBAIHN0 YXRpYyB2b2lkIHZnaWNfc3RvcmVfaXJvdXRlcihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qgdmdp Y19pcnFfcmFuayAqcmFuaywKPiAgICAgICAqLwo+ICAgICAgQVNTRVJUKHZpcnEgPj0gMzIpOwo+ Cj4gLSAgICAvKiBHZXQgdGhlIGluZGV4IGluIHRoZSByYW5rICovCj4gLSAgICBvZmZzZXQgJj0g dmlycSAmIElOVEVSUlVQVF9SQU5LX01BU0s7Cj4gKyAgICBwID0gc3BpX3RvX3BlbmRpbmcoZCwg dmlycSk7Cj4gKyAgICBzcGluX2xvY2soJnAtPmxvY2spOwo+Cj4gICAgICBuZXdfdmNwdSA9IHZn aWNfdjNfaXJvdXRlcl90b192Y3B1KGQsIGlyb3V0ZXIpOwo+IC0gICAgb2xkX3ZjcHUgPSBkLT52 Y3B1W3JlYWRfYXRvbWljKCZyYW5rLT52Y3B1W29mZnNldF0pXTsKPiArICAgIG9sZF92Y3B1ID0g ZC0+dmNwdVtwLT52Y3B1X2lkXTsKPgo+ICAgICAgLyoKPiAgICAgICAqIEZyb20gdGhlIHNwZWMg KHNlZSA4LjkuMTMgaW4gSUhJIDAwNjlBKSwgYW55IHdyaXRlIHdpdGggYW4KPiBAQCAtMTQ2LDE2 ICsxNTAsMjEgQEAgc3RhdGljIHZvaWQgdmdpY19zdG9yZV9pcm91dGVyKHN0cnVjdCBkb21haW4g KmQsIHN0cnVjdCB2Z2ljX2lycV9yYW5rICpyYW5rLAo+ICAgICAgICogaW52YWxpZCB2Q1BVLiBT byBmb3Igbm93LCBqdXN0IGlnbm9yZSB0aGUgd3JpdGUuCj4gICAgICAgKgo+ICAgICAgICogVE9E TzogUmVzcGVjdCB0aGUgc3BlYwo+ICsgICAgICoKPiArICAgICAqIE9ubHkgbWlncmF0ZSB0aGUg SVJRIGlmIHRoZSB0YXJnZXQgdkNQVSBoYXMgY2hhbmdlZAo+ICAgICAgICovCj4gLSAgICBpZiAo ICFuZXdfdmNwdSApCj4gLSAgICAgICAgcmV0dXJuOwo+IC0KPiAtICAgIC8qIE9ubHkgbWlncmF0 ZSB0aGUgSVJRIGlmIHRoZSB0YXJnZXQgdkNQVSBoYXMgY2hhbmdlZCAqLwo+IC0gICAgaWYgKCBu ZXdfdmNwdSAhPSBvbGRfdmNwdSApCj4gKyAgICBpZiAoICFuZXdfdmNwdSB8fCBuZXdfdmNwdSA9 PSBvbGRfdmNwdSApCgpXaHkgdGhpcyBjaGFuZ2U/Cgo+ICAgICAgewo+IC0gICAgICAgIGlmICgg dmdpY19taWdyYXRlX2lycShvbGRfdmNwdSwgbmV3X3ZjcHUsIHZpcnEpICkKPiAtICAgICAgICAg ICAgd3JpdGVfYXRvbWljKCZyYW5rLT52Y3B1W29mZnNldF0sIG5ld192Y3B1LT52Y3B1X2lkKTsK PiArICAgICAgICBzcGluX3VubG9jaygmcC0+bG9jayk7Cj4gKyAgICAgICAgcmV0dXJuOwo+ICAg ICAgfQo+ICsKPiArICAgIHJlaW5qZWN0ID0gdmdpY19taWdyYXRlX2lycShwLCBvbGRfdmNwdSwg bmV3X3ZjcHUpOwoKVGhpcyBjaGFuZ2Ugc2hvdWxkIHJlYWxseSBiZSBhIHNlcGFyYXRlIHBhdGNo IGFuZCBhIGp1c3RpZmljYXRpb24gb2Ygd2h5IAp0aGlzIGlzIG5lY2Vzc2FyeS4KCj4gKwo+ICsg ICAgc3Bpbl91bmxvY2soJnAtPmxvY2spOwo+ICsKPiArICAgIGlmICggcmVpbmplY3QgKQo+ICsg ICAgICAgIHZnaWNfdmNwdV9pbmplY3RfaXJxKG5ld192Y3B1LCB2aXJxKTsKPiAgfQo+Cj4gIHN0 YXRpYyBpbmxpbmUgYm9vbCB2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhzdHJ1Y3QgaHNyX2RhYnQg ZGFidCkKPiBAQCAtODY5LDggKzg3OCw2IEBAIHN0YXRpYyBpbnQgdmdpY192M19kaXN0cl9tbWlv X3JlYWQoc3RydWN0IHZjcHUgKnYsIG1taW9faW5mb190ICppbmZvLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3QgKnIsIHZvaWQgKnByaXYpCj4gIHsKPiAg ICAgIHN0cnVjdCBoc3JfZGFidCBkYWJ0ID0gaW5mby0+ZGFidDsKPiAtICAgIHN0cnVjdCB2Z2lj X2lycV9yYW5rICpyYW5rOwo+IC0gICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgICAgIGludCBn aWNkX3JlZyA9IChpbnQpKGluZm8tPmdwYSAtIHYtPmRvbWFpbi0+YXJjaC52Z2ljLmRiYXNlKTsK Pgo+ICAgICAgcGVyZmNfaW5jcih2Z2ljZF9yZWFkcyk7Cj4gQEAgLTk5NiwxNSArMTAwMywxMiBA QCBzdGF0aWMgaW50IHZnaWNfdjNfZGlzdHJfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlv X2luZm9fdCAqaW5mbywKPiAgICAgIGNhc2UgVlJBTkdFNjQoR0lDRF9JUk9VVEVSMzIsIEdJQ0Rf SVJPVVRFUjEwMTkpOgo+ICAgICAgewo+ICAgICAgICAgIHVpbnQ2NF90IGlyb3V0ZXI7Cj4gKyAg ICAgICAgdW5zaWduZWQgaW50IGlycTsKCnMvaXJxL3ZpcnEvCgo+Cj4gICAgICAgICAgaWYgKCAh dmdpY19yZWc2NF9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKPiAtICAgICAg ICByYW5rID0gdmdpY19yYW5rX29mZnNldCh2LCA2NCwgZ2ljZF9yZWcgLSBHSUNEX0lST1VURVIs Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFCVF9ET1VCTEVfV09SRCk7Cj4g LSAgICAgICAgaWYgKCByYW5rID09IE5VTEwgKSBnb3RvIHJlYWRfYXNfemVybzsKPiAtICAgICAg ICB2Z2ljX2xvY2tfcmFuayh2LCByYW5rLCBmbGFncyk7Cj4gLSAgICAgICAgaXJvdXRlciA9IHZn aWNfZmV0Y2hfaXJvdXRlcihyYW5rLCBnaWNkX3JlZyAtIEdJQ0RfSVJPVVRFUik7Cj4gLSAgICAg ICAgdmdpY191bmxvY2tfcmFuayh2LCByYW5rLCBmbGFncyk7Cj4gLQo+ICsgICAgICAgIGlycSA9 IChnaWNkX3JlZyAtIEdJQ0RfSVJPVVRFUikgLyA4Owo+ICsgICAgICAgIGlmICggaXJxID49IHYt PmRvbWFpbi0+YXJjaC52Z2ljLm5yX3NwaXMgKyAzMiApIGdvdG8gcmVhZF9hc196ZXJvOwo+ICsg ICAgICAgIGlyb3V0ZXIgPSB2Z2ljX2ZldGNoX2lyb3V0ZXIodiwgZ2ljZF9yZWcgLSBHSUNEX0lS T1VURVIpOwo+ICAgICAgICAgICpyID0gdmdpY19yZWc2NF9leHRyYWN0KGlyb3V0ZXIsIGluZm8p Owo+Cj4gICAgICAgICAgcmV0dXJuIDE7Cj4gQEAgLTEwNzAsOCArMTA3NCw2IEBAIHN0YXRpYyBp bnQgdmdpY192M19kaXN0cl9tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAq aW5mbywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfdCBy LCB2b2lkICpwcml2KQo+ICB7Cj4gICAgICBzdHJ1Y3QgaHNyX2RhYnQgZGFidCA9IGluZm8tPmRh YnQ7Cj4gLSAgICBzdHJ1Y3QgdmdpY19pcnFfcmFuayAqcmFuazsKPiAtICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4gICAgICBpbnQgZ2ljZF9yZWcgPSAoaW50KShpbmZvLT5ncGEgLSB2LT5kb21h aW4tPmFyY2gudmdpYy5kYmFzZSk7Cj4KPiAgICAgIHBlcmZjX2luY3IodmdpY2Rfd3JpdGVzKTsK PiBAQCAtMTE4NSwxNiArMTE4NywxNSBAQCBzdGF0aWMgaW50IHZnaWNfdjNfZGlzdHJfbW1pb193 cml0ZShzdHJ1Y3QgdmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sCj4gICAgICBjYXNlIFZSQU5H RTY0KEdJQ0RfSVJPVVRFUjMyLCBHSUNEX0lST1VURVIxMDE5KToKPiAgICAgIHsKPiAgICAgICAg ICB1aW50NjRfdCBpcm91dGVyOwo+ICsgICAgICAgIHVuc2lnbmVkIGludCBpcnE7Cj4KPiAgICAg ICAgICBpZiAoICF2Z2ljX3JlZzY0X2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRo Owo+IC0gICAgICAgIHJhbmsgPSB2Z2ljX3Jhbmtfb2Zmc2V0KHYsIDY0LCBnaWNkX3JlZyAtIEdJ Q0RfSVJPVVRFUiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQUJUX0RPVUJM RV9XT1JEKTsKPiAtICAgICAgICBpZiAoIHJhbmsgPT0gTlVMTCApIGdvdG8gd3JpdGVfaWdub3Jl Owo+IC0gICAgICAgIHZnaWNfbG9ja19yYW5rKHYsIHJhbmssIGZsYWdzKTsKPiAtICAgICAgICBp cm91dGVyID0gdmdpY19mZXRjaF9pcm91dGVyKHJhbmssIGdpY2RfcmVnIC0gR0lDRF9JUk9VVEVS KTsKPiArICAgICAgICBpcnEgPSAoZ2ljZF9yZWcgLSBHSUNEX0lST1VURVIpIC8gODsKPiArICAg ICAgICBpZiAoIGlycSA+PSB2LT5kb21haW4tPmFyY2gudmdpYy5ucl9zcGlzICsgMzIgKSBnb3Rv IHdyaXRlX2lnbm9yZTsKPiArCj4gKyAgICAgICAgaXJvdXRlciA9IHZnaWNfZmV0Y2hfaXJvdXRl cih2LCBnaWNkX3JlZyAtIEdJQ0RfSVJPVVRFUik7Cj4gICAgICAgICAgdmdpY19yZWc2NF91cGRh dGUoJmlyb3V0ZXIsIHIsIGluZm8pOwo+IC0gICAgICAgIHZnaWNfc3RvcmVfaXJvdXRlcih2LT5k b21haW4sIHJhbmssIGdpY2RfcmVnIC0gR0lDRF9JUk9VVEVSLCBpcm91dGVyKTsKPiAtICAgICAg ICB2Z2ljX3VubG9ja19yYW5rKHYsIHJhbmssIGZsYWdzKTsKPiArICAgICAgICB2Z2ljX3N0b3Jl X2lyb3V0ZXIodi0+ZG9tYWluLCBnaWNkX3JlZyAtIEdJQ0RfSVJPVVRFUiwgaXJvdXRlcik7Cj4g ICAgICAgICAgcmV0dXJuIDE7Cj4gICAgICB9Cj4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L3ZnaWMuYyBiL3hlbi9hcmNoL2FybS92Z2ljLmMKPiBpbmRleCBhMjMwNzlhLi41MzBhYzU1IDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS92Z2ljLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vdmdp Yy5jCj4gQEAgLTYwLDMyICs2MCwyMiBAQCBzdHJ1Y3QgdmdpY19pcnFfcmFuayAqdmdpY19yYW5r X2lycShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGlycSkKPiAgICAgIHJldHVybiB2Z2lj X2dldF9yYW5rKHYsIHJhbmspOwo+ICB9Cj4KPiAtc3RhdGljIHZvaWQgdmdpY19pbml0X3BlbmRp bmdfaXJxKHN0cnVjdCBwZW5kaW5nX2lycSAqcCwgdW5zaWduZWQgaW50IHZpcnEpCj4gK3N0YXRp YyB2b2lkIHZnaWNfaW5pdF9wZW5kaW5nX2lycShzdHJ1Y3QgcGVuZGluZ19pcnEgKnAsIHVuc2ln bmVkIGludCB2aXJxLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZj cHVfaWQpCj4gIHsKPiAgICAgIElOSVRfTElTVF9IRUFEKCZwLT5pbmZsaWdodCk7Cj4gICAgICBJ TklUX0xJU1RfSEVBRCgmcC0+bHJfcXVldWUpOwo+ICAgICAgc3Bpbl9sb2NrX2luaXQoJnAtPmxv Y2spOwo+ICAgICAgcC0+aXJxID0gdmlycTsKPiArICAgIHAtPnZjcHVfaWQgPSB2Y3B1X2lkOwo+ ICB9Cj4KPiAgc3RhdGljIHZvaWQgdmdpY19yYW5rX2luaXQoc3RydWN0IHZnaWNfaXJxX3Jhbmsg KnJhbmssIHVpbnQ4X3QgaW5kZXgsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCB2Y3B1KQo+ICB7Cj4gLSAgICB1bnNpZ25lZCBpbnQgaTsKPiAtCj4gLSAgICAvKgo+ IC0gICAgICogTWFrZSBzdXJlIHRoYXQgdGhlIHR5cGUgY2hvc2VuIHRvIHN0b3JlIHRoZSB0YXJn ZXQgaXMgYWJsZSB0bwo+IC0gICAgICogc3RvcmUgYW4gVkNQVSBJRCBiZXR3ZWVuIDAgYW5kIHRo ZSBtYXhpbXVtIG9mIHZpcnR1YWwgQ1BVcwo+IC0gICAgICogc3VwcG9ydGVkLgo+IC0gICAgICov Cj4gLSAgICBCVUlMRF9CVUdfT04oKDEgPDwgKHNpemVvZihyYW5rLT52Y3B1WzBdKSAqIDgpKSA8 IE1BWF9WSVJUX0NQVVMpOwoKWW91IGRyb3BwZWQgdGhpcyBCVUlMRF9CVUdfT04gYW5kIG5ldmVy IHJlLWludHJvZHVjZSBhIHNpbWlsYXIgb25lIHRvIApwcmV2ZW50IGFueSBpc3N1ZSBpbiB0aGUg ZnV0dXJlIGlmIHdlIGRlY2lkZSB0byBleHRlbmQgTUFYX1ZJUlRfVkNQVVMuCgo+IC0KPiAgICAg IHNwaW5fbG9ja19pbml0KCZyYW5rLT5sb2NrKTsKPgo+ICAgICAgcmFuay0+aW5kZXggPSBpbmRl eDsKPiAtCj4gLSAgICBmb3IgKCBpID0gMDsgaSA8IE5SX0lOVEVSUlVQVF9QRVJfUkFOSzsgaSsr ICkKPiAtICAgICAgICB3cml0ZV9hdG9taWMoJnJhbmstPnZjcHVbaV0sIHZjcHUpOwo+ICB9Cj4K PiAgaW50IGRvbWFpbl92Z2ljX3JlZ2lzdGVyKHN0cnVjdCBkb21haW4gKmQsIGludCAqbW1pb19j b3VudCkKPiBAQCAtMTM2LDggKzEyNiw5IEBAIGludCBkb21haW5fdmdpY19pbml0KHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGludCBucl9zcGlzKQo+ICAgICAgaWYgKCBkLT5hcmNoLnZnaWMu cGVuZGluZ19pcnFzID09IE5VTEwgKQo+ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Cj4gKyAg ICAvKiBTUElzIGFyZSByb3V0ZWQgdG8gVkNQVTAgYnkgZGVmYXVsdCAqLwo+ICAgICAgZm9yIChp PTA7IGk8ZC0+YXJjaC52Z2ljLm5yX3NwaXM7IGkrKykKPiAtICAgICAgICB2Z2ljX2luaXRfcGVu ZGluZ19pcnEoJmQtPmFyY2gudmdpYy5wZW5kaW5nX2lycXNbaV0sIGkgKyAzMik7Cj4gKyAgICAg ICAgdmdpY19pbml0X3BlbmRpbmdfaXJxKCZkLT5hcmNoLnZnaWMucGVuZGluZ19pcnFzW2ldLCBp ICsgMzIsIDApOwo+Cj4gICAgICAvKiBTUElzIGFyZSByb3V0ZWQgdG8gVkNQVTAgYnkgZGVmYXVs dCAqLwo+ICAgICAgZm9yICggaSA9IDA7IGkgPCBET01BSU5fTlJfUkFOS1MoZCk7IGkrKyApCj4g QEAgLTIwMiw4ICsxOTMsOSBAQCBpbnQgdmNwdV92Z2ljX2luaXQoc3RydWN0IHZjcHUgKnYpCj4g ICAgICB2LT5kb21haW4tPmFyY2gudmdpYy5oYW5kbGVyLT52Y3B1X2luaXQodik7Cj4KPiAgICAg IG1lbXNldCgmdi0+YXJjaC52Z2ljLnBlbmRpbmdfaXJxcywgMCwgc2l6ZW9mKHYtPmFyY2gudmdp Yy5wZW5kaW5nX2lycXMpKTsKPiArICAgIC8qIFNHSXMvUFBJcyBhcmUgYWx3YXlzIHJvdXRlZCB0 byB0aGlzIFZDUFUgKi8KPiAgICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQo+IC0gICAgICAg IHZnaWNfaW5pdF9wZW5kaW5nX2lycSgmdi0+YXJjaC52Z2ljLnBlbmRpbmdfaXJxc1tpXSwgaSk7 Cj4gKyAgICAgICAgdmdpY19pbml0X3BlbmRpbmdfaXJxKCZ2LT5hcmNoLnZnaWMucGVuZGluZ19p cnFzW2ldLCBpLCB2LT52Y3B1X2lkKTsKPgo+ICAgICAgSU5JVF9MSVNUX0hFQUQoJnYtPmFyY2gu dmdpYy5pbmZsaWdodF9pcnFzKTsKPiAgICAgIElOSVRfTElTVF9IRUFEKCZ2LT5hcmNoLnZnaWMu bHJfcGVuZGluZyk7Cj4gQEAgLTIxOCwxMSArMjEwLDExIEBAIGludCB2Y3B1X3ZnaWNfZnJlZShz dHJ1Y3QgdmNwdSAqdikKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiAtc3RydWN0IHZjcHUgKnZn aWNfZ2V0X3RhcmdldF92Y3B1KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgdmlycSkKPiAr c3RydWN0IHZjcHUgKnZnaWNfZ2V0X3RhcmdldF92Y3B1KHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBwZW5kaW5nX2lycSAqcCkKClRoaXMga2luZCBvZiBjaGFuZ2VzIHdvdWxkIGhhdmUgYmVlbiBi ZXR0ZXIgaW4gYSBzZXBhcmF0ZSBwYXRjaCB0byBoZWxwIAp0aGUgcmV2aWV3LgoKPiAgewo+IC0g ICAgc3RydWN0IHZnaWNfaXJxX3JhbmsgKnJhbmsgPSB2Z2ljX3JhbmtfaXJxKHYsIHZpcnEpOwo+ IC0gICAgaW50IHRhcmdldCA9IHJlYWRfYXRvbWljKCZyYW5rLT52Y3B1W3ZpcnEgJiBJTlRFUlJV UFRfUkFOS19NQVNLXSk7Cj4gLSAgICByZXR1cm4gdi0+ZG9tYWluLT52Y3B1W3RhcmdldF07Cj4g KyAgICB1aW50MTZfdCB2Y3B1X2lkID0gcmVhZF9hdG9taWMoJnAtPnZjcHVfaWQpOwo+ICsKPiAr ICAgIHJldHVybiBkLT52Y3B1W3ZjcHVfaWRdOwoKWW91IGNvdWxkIGhhdmUgZG8gcmV0dXJuIGQt PnZjcHVbcmVhZF9hdG9taWMoJnAtPnZjcHVfaWQpXS4gVGhpcyBldmVuIApsaWtlbHkgY2FuIGJl IHR1cm5lZCBpbnRvIGEgc3RhdGljIGlubGluZSBmdW5jdGlvbi4KCj4gIH0KPgo+ICBzdGF0aWMg dWludDhfdCBleHRyYWN0X3ByaW9yaXR5KHN0cnVjdCBwZW5kaW5nX2lycSAqcCkKPiBAQCAtMjg5 LDMxICsyODEsMjkgQEAgREVGSU5FX0dBVEhFUl9JUlFfSU5GTyhlbmFibGVkLCBleHRyYWN0X2Vu YWJsZWQsIDEpCj4gIERFRklORV9HQVRIRVJfSVJRX0lORk8oY29uZmlnLCBleHRyYWN0X2NvbmZp ZywgMikKPiAgREVGSU5FX1NDQVRURVJfSVJRX0lORk8oY29uZmlnLCBzZXRfY29uZmlnLCAyKQo+ Cj4gLWJvb2wgdmdpY19taWdyYXRlX2lycShzdHJ1Y3QgdmNwdSAqb2xkLCBzdHJ1Y3QgdmNwdSAq bmV3LCB1bnNpZ25lZCBpbnQgaXJxKQo+ICtib29sIHZnaWNfbWlncmF0ZV9pcnEoc3RydWN0IHBl bmRpbmdfaXJxICpwLCBzdHJ1Y3QgdmNwdSAqb2xkLCBzdHJ1Y3QgdmNwdSAqbmV3KQoKUmUtb3Jk ZXJpbmcgdGhlIHBhcmFtZXRlciBzaG91bGQgaGF2ZSBiZWVuIGV4cGxhaW5lZC4gQWxzbywgdXNl IApwZW5kaW5nX2lycSBjb3VsZCBoYXZlIGJlZW4gZG9uZSBpbiBhIHNlcGFyYXRlIHBhdGNoLgoK QnJlYWtpbmcgZG93biBwYXRjaHMgaW4gdmVyeSBzbWFsbCBvbmUgcmVhbGx5IGhlbHAgdGhlIHJl dmlldy4gSSBhZG1pdCAKdGhpcyBvbmUgaXMgcXVpdGUgY29tcGxleCB0byByZWFkIGl0IGJlY2F1 c2Ugb2YgdGhlIG1peCBvZiByZS1vcmRlcmluZywgCmludHJvZHVjdGlvbiBvZiBuZXcgcGFyYW1l dGVycywgY29kZSBtb2RpZmljYXRpb24gbm90IHJlYWxseSByZWxhdGVkIHRvIAp0aGlzIHBhdGNo Li4uCgo+ICB7Cj4gLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0gICAgc3RydWN0IHBlbmRp bmdfaXJxICpwID0gaXJxX3RvX3BlbmRpbmcob2xkLCBpcnEpOwo+IC0KPiAtICAgIC8qIG5vdGhp bmcgdG8gZG8gZm9yIHZpcnR1YWwgaW50ZXJydXB0cyAqLwo+IC0gICAgaWYgKCBwLT5kZXNjID09 IE5VTEwgKQo+IC0gICAgICAgIHJldHVybiB0cnVlOwo+ICsgICAgQVNTRVJUKHNwaW5faXNfbG9j a2VkKCZwLT5sb2NrKSk7Cj4KPiAgICAgIC8qIG1pZ3JhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNz LCBubyBuZWVkIHRvIGRvIGFueXRoaW5nICovCj4gICAgICBpZiAoIHRlc3RfYml0KEdJQ19JUlFf R1VFU1RfTUlHUkFUSU5HLCAmcC0+c3RhdHVzKSApCj4gICAgICB7Cj4gLSAgICAgICAgZ3ByaW50 ayhYRU5MT0dfV0FSTklORywgImlycSAldSBtaWdyYXRpb24gZmFpbGVkOiByZXF1ZXN0ZWQgd2hp bGUgaW4gcHJvZ3Jlc3NcbiIsIGlycSk7Cj4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfV0FSTklO RywgImlycSAldSBtaWdyYXRpb24gZmFpbGVkOiByZXF1ZXN0ZWQgd2hpbGUgaW4gcHJvZ3Jlc3Nc biIsIHAtPmlycSk7Cj4gICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ICAgICAgfQo+Cj4gLSAgICBw ZXJmY19pbmNyKHZnaWNfaXJxX21pZ3JhdGVzKTsKPiArICAgIHAtPnZjcHVfaWQgPSBuZXctPnZj cHVfaWQ7CgpXaHkgZGlkIHlvdSBtb3ZlIHRoaXMgY29kZSBoZXJlPwoKPiArCj4gKyAgICAvKiBu b3RoaW5nIHRvIGRvIGZvciB2aXJ0dWFsIGludGVycnVwdHMgKi8KPiArICAgIGlmICggcC0+ZGVz YyA9PSBOVUxMICkKPiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4KPiAtICAgIHNwaW5fbG9ja19p cnFzYXZlKCZvbGQtPmFyY2gudmdpYy5sb2NrLCBmbGFncyk7Cj4gKyAgICBwZXJmY19pbmNyKHZn aWNfaXJxX21pZ3JhdGVzKTsKPgo+ICAgICAgaWYgKCBsaXN0X2VtcHR5KCZwLT5pbmZsaWdodCkg KQo+ICAgICAgewo+ICAgICAgICAgIGlycV9zZXRfYWZmaW5pdHkocC0+ZGVzYywgY3B1bWFza19v ZihuZXctPnByb2Nlc3NvcikpOwo+IC0gICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm9s ZC0+YXJjaC52Z2ljLmxvY2ssIGZsYWdzKTsKPiAtICAgICAgICByZXR1cm4gdHJ1ZTsKPiArICAg ICAgICByZXR1cm4gZmFsc2U7Cj4gICAgICB9Cj4gICAgICAvKiBJZiB0aGUgSVJRIGlzIHN0aWxs IGxyX3BlbmRpbmcsIHJlLWluamVjdCBpdCB0byB0aGUgbmV3IHZjcHUgKi8KPiAgICAgIGlmICgg IWxpc3RfZW1wdHkoJnAtPmxyX3F1ZXVlKSApCj4gQEAgLTMyMiw4ICszMTIsNiBAQCBib29sIHZn aWNfbWlncmF0ZV9pcnEoc3RydWN0IHZjcHUgKm9sZCwgc3RydWN0IHZjcHUgKm5ldywgdW5zaWdu ZWQgaW50IGlycSkKPiAgICAgICAgICBsaXN0X2RlbF9pbml0KCZwLT5scl9xdWV1ZSk7Cj4gICAg ICAgICAgbGlzdF9kZWxfaW5pdCgmcC0+aW5mbGlnaHQpOwo+ICAgICAgICAgIGlycV9zZXRfYWZm aW5pdHkocC0+ZGVzYywgY3B1bWFza19vZihuZXctPnByb2Nlc3NvcikpOwo+IC0gICAgICAgIHNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJm9sZC0+YXJjaC52Z2ljLmxvY2ssIGZsYWdzKTsKPiAtICAg ICAgICB2Z2ljX3ZjcHVfaW5qZWN0X2lycShuZXcsIGlycSk7Cj4gICAgICAgICAgcmV0dXJuIHRy dWU7Cj4gICAgICB9Cj4gICAgICAvKiBpZiB0aGUgSVJRIGlzIGluIGEgR0lDSF9MUiByZWdpc3Rl ciwgc2V0IEdJQ19JUlFfR1VFU1RfTUlHUkFUSU5HCj4gQEAgLTMzMSw4ICszMTksNyBAQCBib29s IHZnaWNfbWlncmF0ZV9pcnEoc3RydWN0IHZjcHUgKm9sZCwgc3RydWN0IHZjcHUgKm5ldywgdW5z aWduZWQgaW50IGlycSkKPiAgICAgIGlmICggIWxpc3RfZW1wdHkoJnAtPmluZmxpZ2h0KSApCj4g ICAgICAgICAgc2V0X2JpdChHSUNfSVJRX0dVRVNUX01JR1JBVElORywgJnAtPnN0YXR1cyk7Cj4K PiAtICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm9sZC0+YXJjaC52Z2ljLmxvY2ssIGZsYWdz KTsKPiAtICAgIHJldHVybiB0cnVlOwo+ICsgICAgcmV0dXJuIGZhbHNlOwo+ICB9Cj4KPiAgdm9p ZCBhcmNoX21vdmVfaXJxcyhzdHJ1Y3QgdmNwdSAqdikKPiBAQCAtMzQ1LDExICszMzIsMTMgQEAg dm9pZCBhcmNoX21vdmVfaXJxcyhzdHJ1Y3QgdmNwdSAqdikKPgo+ICAgICAgZm9yICggaSA9IDMy OyBpIDwgdmdpY19udW1faXJxcyhkKTsgaSsrICkKPiAgICAgIHsKPiAtICAgICAgICB2X3Rhcmdl dCA9IHZnaWNfZ2V0X3RhcmdldF92Y3B1KHYsIGkpOwo+IC0gICAgICAgIHAgPSBpcnFfdG9fcGVu ZGluZyh2X3RhcmdldCwgaSk7Cj4gKyAgICAgICAgcCA9IGlycV90b19wZW5kaW5nKGQtPnZjcHVb MF0sIGkpOwoKV2h5IGQtPnZjcHVbMF0/Cgo+ICsgICAgICAgIHNwaW5fbG9jaygmcC0+bG9jayk7 Cj4gKyAgICAgICAgdl90YXJnZXQgPSB2Z2ljX2dldF90YXJnZXRfdmNwdShkLCBwKTsKPgo+ICAg ICAgICAgIGlmICggdl90YXJnZXQgPT0gdiAmJiAhdGVzdF9iaXQoR0lDX0lSUV9HVUVTVF9NSUdS QVRJTkcsICZwLT5zdGF0dXMpICkKPiAgICAgICAgICAgICAgaXJxX3NldF9hZmZpbml0eShwLT5k ZXNjLCBjcHVfbWFzayk7Cj4gKyAgICAgICAgc3Bpbl91bmxvY2soJnAtPmxvY2spOwo+ICAgICAg fQo+ICB9Cj4KPiBAQCAtMzYyLDggKzM1MSw4IEBAIHZvaWQgdmdpY19kaXNhYmxlX2lycXMoc3Ry dWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpcnEsIHVpbnQzMl90IHIpCj4gICAgICBzdHJ1Y3Qg dmNwdSAqdl90YXJnZXQ7Cj4KPiAgICAgIHdoaWxlICggKGkgPSBmaW5kX25leHRfYml0KCZtYXNr LCAzMiwgaSkpIDwgMzIgKSB7Cj4gLSAgICAgICAgdl90YXJnZXQgPSB2Z2ljX2dldF90YXJnZXRf dmNwdSh2LCBpcnEgKyBpKTsKPiAtICAgICAgICBwID0gaXJxX3RvX3BlbmRpbmcodl90YXJnZXQs IGlycSArIGkpOwo+ICsgICAgICAgIHAgPSBpcnFfdG9fcGVuZGluZyh2LCBpcnEgKyBpKTsKPiAr ICAgICAgICB2X3RhcmdldCA9IHZnaWNfZ2V0X3RhcmdldF92Y3B1KHYtPmRvbWFpbiwgcCk7CgpU aGlzIGtpbmQgb2YgcmUtb3JkZXJpbmcgd291bGQgaGF2ZSBiZSBuaWNlIHRvIGV4cGxhaW4gaW4g dGhlIGNvbW1pdCAKbWVzc2FnZS4KCj4gICAgICAgICAgY2xlYXJfYml0KEdJQ19JUlFfR1VFU1Rf RU5BQkxFRCwgJnAtPnN0YXR1cyk7Cj4gICAgICAgICAgZ2ljX3JlbW92ZV9mcm9tX3F1ZXVlcyh2 X3RhcmdldCwgaXJxICsgaSk7Cj4gICAgICAgICAgaWYgKCBwLT5kZXNjICE9IE5VTEwgKQo+IEBA IC0zODcsMTAgKzM3NiwxMCBAQCB2b2lkIHZnaWNfZW5hYmxlX2lycXMoc3RydWN0IHZjcHUgKnYs IHVuc2lnbmVkIGludCBpcnEsIHVpbnQzMl90IHIpCj4gICAgICBzdHJ1Y3QgZG9tYWluICpkID0g di0+ZG9tYWluOwo+Cj4gICAgICB3aGlsZSAoIChpID0gZmluZF9uZXh0X2JpdCgmbWFzaywgMzIs IGkpKSA8IDMyICkgewo+IC0gICAgICAgIHZfdGFyZ2V0ID0gdmdpY19nZXRfdGFyZ2V0X3ZjcHUo diwgaXJxICsgaSk7Cj4gKyAgICAgICAgcCA9IGlycV90b19wZW5kaW5nKHYsIGlycSArIGkpOwo+ ICsgICAgICAgIHZfdGFyZ2V0ID0gdmdpY19nZXRfdGFyZ2V0X3ZjcHUoZCwgcCk7Cj4KPiAgICAg ICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmdl90YXJnZXQtPmFyY2gudmdpYy5sb2NrLCBmbGFncyk7 Cj4gLSAgICAgICAgcCA9IGlycV90b19wZW5kaW5nKHZfdGFyZ2V0LCBpcnEgKyBpKTsKPiAgICAg ICAgICBzcGluX2xvY2soJnAtPmxvY2spOwo+Cj4gICAgICAgICAgc2V0X2JpdChHSUNfSVJRX0dV RVNUX0VOQUJMRUQsICZwLT5zdGF0dXMpOwo+IEBAIC01NjEsMTEgKzU1MCwxMiBAQCBvdXQ6Cj4g IHZvaWQgdmdpY192Y3B1X2luamVjdF9zcGkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50 IHZpcnEpCj4gIHsKPiAgICAgIHN0cnVjdCB2Y3B1ICp2Owo+ICsgICAgc3RydWN0IHBlbmRpbmdf aXJxICpwID0gaXJxX3RvX3BlbmRpbmcoZC0+dmNwdVswXSwgdmlycSk7Cj4KPiAgICAgIC8qIHRo ZSBJUlEgbmVlZHMgdG8gYmUgYW4gU1BJICovCj4gICAgICBBU1NFUlQodmlycSA+PSAzMiAmJiB2 aXJxIDw9IHZnaWNfbnVtX2lycXMoZCkpOwo+Cj4gLSAgICB2ID0gdmdpY19nZXRfdGFyZ2V0X3Zj cHUoZC0+dmNwdVswXSwgdmlycSk7Cj4gKyAgICB2ID0gdmdpY19nZXRfdGFyZ2V0X3ZjcHUoZCwg cCk7Cj4gICAgICB2Z2ljX3ZjcHVfaW5qZWN0X2lycSh2LCB2aXJxKTsKPiAgfQo+Cj4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS92 Z2ljLmgKPiBpbmRleCBmZTA5ZmI4Li4xODZlNmRmIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRl L2FzbS1hcm0vdmdpYy5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmgKPiBAQCAt NzYsNiArNzYsNyBAQCBzdHJ1Y3QgcGVuZGluZ19pcnEKPiAgICAgIHVpbnQ4X3QgbHI7Cj4gICAg ICB1aW50OF90IHByaW9yaXR5OyAgICAgICAgICAgLyogdGhlIHByaW9yaXR5IG9mIHRoZSBjdXJy ZW50bHkgaW5mbGlnaHQgSVJRICovCj4gICAgICB1aW50OF90IG5ld19wcmlvcml0eTsgICAgICAg LyogdGhlIHByaW9yaXR5IG9mIG5ld2x5IHRyaWdnZXJlZCBJUlFzICovCj4gKyAgICB1aW50OF90 IHZjcHVfaWQ7CgpTbyB0aGlzIGlzIHBvaW50aW5nIHRvIHRoZSBuZXcgdkNQVSBhbmQgbm90IHRo ZSBjdXJyZW50LiBTbyB0aGlzIHNob3VsZCAKYmUgY2xlYXJseSBpZGVudGlmaWVkIGluIHRoZSBu YW1lIGFuZCBpbiBhIGNvbW1lbnQuCgo+ICAgICAgLyogaW5mbGlnaHQgaXMgdXNlZCB0byBhcHBl bmQgaW5zdGFuY2VzIG9mIHBlbmRpbmdfaXJxIHRvCj4gICAgICAgKiB2Z2ljLmluZmxpZ2h0X2ly cXMgKi8KPiAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaW5mbGlnaHQ7Cj4gQEAgLTEwMywxNCArMTA0 LDYgQEAgc3RydWN0IHZnaWNfaXJxX3Jhbmsgewo+ICAgICAgc3BpbmxvY2tfdCBsb2NrOyAvKiBD b3ZlcnMgYWNjZXNzIHRvIGFsbCBvdGhlciBtZW1iZXJzIG9mIHRoaXMgc3RydWN0ICovCj4KPiAg ICAgIHVpbnQ4X3QgaW5kZXg7Cj4gLQo+IC0gICAgLyoKPiAtICAgICAqIEl0J3MgbW9yZSBjb252 ZW5pZW50IHRvIHN0b3JlIGEgdGFyZ2V0IFZDUFUgcGVyIHZJUlEKPiAtICAgICAqIHRoYW4gdGhl IHJlZ2lzdGVyIElUQVJHRVRTUi9JUk9VVEVSIGl0c2VsZi4KPiAtICAgICAqIFVzZSBhdG9taWMg b3BlcmF0aW9ucyB0byByZWFkL3dyaXRlIHRoZSB2Y3B1IGZpZWxkcyB0byBhdm9pZAo+IC0gICAg ICogdGFraW5nIHRoZSByYW5rIGxvY2suCj4gLSAgICAgKi8KPiAtICAgIHVpbnQ4X3QgdmNwdVsz Ml07Cj4gIH07Cj4KPiAgc3RydWN0IHNnaV90YXJnZXQgewo+IEBAIC0zMDEsNyArMjk0LDggQEAg ZW51bSBnaWNfc2dpX21vZGU7Cj4gIGV4dGVybiBpbnQgZG9tYWluX3ZnaWNfaW5pdChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgbnJfc3Bpcyk7Cj4gIGV4dGVybiB2b2lkIGRvbWFpbl92 Z2ljX2ZyZWUoc3RydWN0IGRvbWFpbiAqZCk7Cj4gIGV4dGVybiBpbnQgdmNwdV92Z2ljX2luaXQo c3RydWN0IHZjcHUgKnYpOwo+IC1leHRlcm4gc3RydWN0IHZjcHUgKnZnaWNfZ2V0X3RhcmdldF92 Y3B1KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgdmlycSk7Cj4gK2V4dGVybiBzdHJ1Y3Qg dmNwdSAqdmdpY19nZXRfdGFyZ2V0X3ZjcHUoc3RydWN0IGRvbWFpbiAqZCwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnApOwo+ ICBleHRlcm4gdm9pZCB2Z2ljX3ZjcHVfaW5qZWN0X2lycShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWdu ZWQgaW50IHZpcnEpOwo+ICBleHRlcm4gdm9pZCB2Z2ljX3ZjcHVfaW5qZWN0X3NwaShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdmlycSk7Cj4gIGV4dGVybiB2b2lkIHZnaWNfY2xlYXJf cGVuZGluZ19pcnFzKHN0cnVjdCB2Y3B1ICp2KTsKPiBAQCAtMzIxLDcgKzMxNSw4IEBAIGV4dGVy biBpbnQgdmNwdV92Z2ljX2ZyZWUoc3RydWN0IHZjcHUgKnYpOwo+ICBleHRlcm4gYm9vbCB2Z2lj X3RvX3NnaShzdHJ1Y3QgdmNwdSAqdiwgcmVnaXN0ZXJfdCBzZ2lyLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICBlbnVtIGdpY19zZ2lfbW9kZSBpcnFtb2RlLCBpbnQgdmlycSwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNnaV90YXJnZXQgKnRhcmdldCk7Cj4gLWV4 dGVybiBib29sIHZnaWNfbWlncmF0ZV9pcnEoc3RydWN0IHZjcHUgKm9sZCwgc3RydWN0IHZjcHUg Km5ldywgdW5zaWduZWQgaW50IGlycSk7Cj4gK2V4dGVybiBib29sIHZnaWNfbWlncmF0ZV9pcnEo c3RydWN0IHBlbmRpbmdfaXJxICpwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB2Y3B1ICpvbGQsIHN0cnVjdCB2Y3B1ICpuZXcpOwo+Cj4gIC8qIFJlc2VydmUgYSBzcGVj aWZpYyBndWVzdCB2SVJRICovCj4gIGV4dGVybiBib29sIHZnaWNfcmVzZXJ2ZV92aXJxKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGludCB2aXJxKTsKPgoKQ2hlZXJzLAoKLS0gCkp1bGllbiBH cmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==