From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mihai =?UTF-8?B?RG9uyJt1?= Subject: Re: [PATCH 1/3] x86: add support for computing the instruction length Date: Tue, 9 Sep 2014 11:47:05 +0300 Message-ID: <20140909114705.441fbb9e@bitdefender.com> References: <20140909052241.6e6cf6b7@bitdefender.com> <1410229682-13912-1-git-send-email-mdontu@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1410229682-13912-1-git-send-email-mdontu@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com Cc: keir@xen.org, Razvan Cojocaru , jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org T24gVHVlc2RheSAwOSBTZXB0ZW1iZXIgMjAxNCAwNToyODowMiBNaWhhaSBEb27Im3Ugd3JvdGU6 Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUgbGVuZ3RoIG9mIGFu IGluc3RydWN0aW9uLiBUaGUgZW50aXJlCj4gbG9naWMgcmVsaWVzIG9uIGEgc2V0IG9mIG9wY29k ZSB0YWJsZXMgZ2VuZXJhdGVkIGJ5IGdlbi1pbnNuLWF0dHIteDg2LmF3ayBmcm9tCj4geDg2LW9w Y29kZS1tYXAudHh0IGFuZCBhIG51bWJlciBvZiBzbWFsbCBoZWxwZXIgZnVuY3Rpb25zLiBJdCBv cmlnaW5hdGVkIGluCj4gTGludXgsIHdoZXJlIGl0IHdhcyBhZGRlZCBieSBNYXNhbWkgSGlyYW1h dHN1LiBTaW5jZSBpdCdzIGFuIGFsbW9zdCBpZGVudGljYWwKPiBjb3B5LCBpdCdzIHNlcGFyYXRl ZCBmcm9tIHRoZSB4ODYgZW11bGF0b3IsIHNpbXBsaWZ5aW5nIGZ1dHVyZSB1cGRhdGVzLgo+IAo+ IC0tLQo+IENoYW5nZWQgc2luY2UgdjE6Cj4gICAqIGFkanVzdGVkIHRoZSBjb2Rpbmcgc3R5bGUg dG8gbWF0Y2ggdGhlIHJlc3Qgb2YgeGVuCj4gICAqIG1vdmVkIHRoZSBzb3VyY2UgZmlsZXMgaW50 byB4ODYveDg2X2VtdWxhdGUKPiAgICogcmVwbGFjZWQgaW5hdC10YWJsZXMuYyB3aXRoIHg4Ni1v cGNvZGUtbWFwLnR4dCBhbmQgZ2VuLWluc24tYXR0ci14ODYuYXdrCj4gICAgIHRoYXQgYXJlIHVz ZWQgdG8gZ2VuZXJhdGUgaXQKPiAKPiBTaWduZWQtb2ZmLWJ5OiBNaWhhaSBEb27Im3UgPG1kb250 dUBiaXRkZWZlbmRlci5jb20+CgpUaGVyZSBhcmUgYSBjb3VwbGUgb2YgZGVzaWduIGlzc3VlcyB3 aXRoIHRoaXMgY29kZSB3aGljaCBKYW4gcG9pbnRlZApvdXQgYW5kIHdoaWNoIEkgb3Zlcmxvb2tl ZC4gSSdtIHNvcnJ5LCBpdCB3YXMgbm90IGludGVudGlvbmFsLiBJJ2xsIGRvCm15IGJlc3QgdG8g YWRkcmVzcyB0aGVtIGluIGEgZm9sbG93aW5nIGVtYWlsLgoKPiAgeGVuL2FyY2gveDg2L01ha2Vm aWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQo+ICB4ZW4vYXJjaC94ODYveDg2X2Vt dWxhdGUuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKPiAgeGVuL2FyY2gveDg2L3g4Nl9lbXVs YXRlL2luYXQuYyAgICAgICAgICAgICB8ICA5OCArKysKPiAgeGVuL2FyY2gveDg2L3g4Nl9lbXVs YXRlL2luc24uYyAgICAgICAgICAgICB8IDYyNCArKysrKysrKysrKysrKysrKysKPiAgeGVuL2Fy Y2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1vcGNvZGUtbWFwLnR4dCB8IDk2MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaW5hdC5oICAgICAgICAgICAg ICAgICAgfCAyMTkgKysrKysrKwo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2luYXRfdHlwZXMuaCAg ICAgICAgICAgIHwgIDI5ICsKPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9pbnNuLmggICAgICAgICAg ICAgICAgICB8IDIwMSArKysrKysKPiAgeGVuL3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3ayAg ICAgICAgICAgICB8IDM4NiArKysrKysrKysrKwo+ICA5IGZpbGVzIGNoYW5nZWQsIDI1MjkgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS9pbmF0LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4 Ni94ODZfZW11bGF0ZS9pbnNuLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni94 ODZfZW11bGF0ZS94ODYtb3Bjb2RlLW1hcC50eHQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9p bmNsdWRlL2FzbS14ODYvaW5hdC5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9h c20teDg2L2luYXRfdHlwZXMuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNt LXg4Ni9pbnNuLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi90b29scy9nZW4taW5zbi1hdHRy LXg4Ni5hd2sKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxlIGIveGVuL2Fy Y2gveDg2L01ha2VmaWxlCj4gaW5kZXggYzFlMjQ0ZC4uNjM1MjlkMyAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvTWFrZWZpbGUKPiArKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKPiBAQCAt NjIsNyArNjIsMTEgQEAgb2JqLXkgKz0geHN0YXRlLm8KPiAgCj4gIG9iai0kKGNyYXNoX2RlYnVn KSArPSBnZGJzdHViLm8KPiAgCj4gLXg4Nl9lbXVsYXRlLm86IHg4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmMgeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAo+ICtpbmF0X3RhYmxlc19zY3JpcHQgPSAk KEJBU0VESVIpL3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3awo+ICtpbmF0X3RhYmxlc19tYXBz ID0gJChCQVNFRElSKS9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODYtb3Bjb2RlLW1hcC50eHQKPiAr Cj4gK3g4Nl9lbXVsYXRlLm86IHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgeDg2X2VtdWxhdGUv eDg2X2VtdWxhdGUuaCBcCj4gKwl4ODZfZW11bGF0ZS9pbmF0LmMgeDg2X2VtdWxhdGUvaW5zbi5j IHg4Nl9lbXVsYXRlL2luYXQtdGFibGVzLmMKPiAgCj4gIGVmaS0kKHg4Nl82NCkgOj0gJChzaGVs bCBpZiBbICEgLXIgJChCQVNFRElSKS9pbmNsdWRlL3hlbi9jb21waWxlLmggLW8gXAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1PICQoQkFTRURJUikvaW5jbHVkZS94ZW4vY29t cGlsZS5oIF07IHRoZW4gXAo+IEBAIC0xNjUsOSArMTY5LDEyIEBAIGJvb3QvbWtlbGYzMjogYm9v dC9ta2VsZjMyLmMKPiAgZWZpL21rcmVsb2M6IGVmaS9ta3JlbG9jLmMKPiAgCSQoSE9TVENDKSAk KEhPU1RDRkxBR1MpIC1nIC1vICRAICQ8Cj4gIAo+ICt4ODZfZW11bGF0ZS9pbmF0LXRhYmxlcy5j OiAkKGluYXRfdGFibGVzX3NjcmlwdCkgJChpbmF0X3RhYmxlc19tYXBzKQo+ICsJYXdrIC1mICQo aW5hdF90YWJsZXNfc2NyaXB0KSAkKGluYXRfdGFibGVzX21hcHMpID4gJEAgfHwgcm0gLWYgJEAK PiArCj4gIC5QSE9OWTogY2xlYW4KPiAgY2xlYW46Ogo+ICAJcm0gLWYgYXNtLW9mZnNldHMucyAq LmxkcyBib290LyoubyBib290Lyp+IGJvb3QvY29yZSBib290L21rZWxmMzIKPiAgCXJtIC1mICQo QkFTRURJUikvLnhlbi1zeW1zLlswLTldKiBib290Ly4qLmQKPiAgCXJtIC1mICQoQkFTRURJUikv Lnhlbi5lZmkuWzAtOV0qIGVmaS8qLm8gZWZpLy4qLmQgZWZpLyouZWZpIGVmaS9kaXNhYmxlZCBl ZmkvbWtyZWxvYwo+IC0Jcm0gLWYgYm9vdC9yZWxvYy5TIGJvb3QvcmVsb2MubG5rIGJvb3QvcmVs b2MuYmluCj4gKwlybSAtZiBib290L3JlbG9jLlMgYm9vdC9yZWxvYy5sbmsgYm9vdC9yZWxvYy5i aW4geDg2X2VtdWxhdGUvaW5hdC10YWJsZXMuYwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv eDg2X2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS5jCj4gaW5kZXggNzliNGFi My4uMWQ0M2JiMSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUuYwo+ICsr KyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS5jCj4gQEAgLTIyLDMgKzIyLDUgQEAKPiAgICAg ICAgICBjcHVfaGFzX2FtZF9lcnJhdHVtKCZjdXJyZW50X2NwdV9kYXRhLCBBTURfRVJSQVRVTV8j I25yKQo+ICAKPiAgI2luY2x1ZGUgIng4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMiCj4gKyNpbmNs dWRlICJ4ODZfZW11bGF0ZS9pbmF0LmMiCj4gKyNpbmNsdWRlICJ4ODZfZW11bGF0ZS9pbnNuLmMi Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS9pbmF0LmMgYi94ZW4vYXJj aC94ODYveDg2X2VtdWxhdGUvaW5hdC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwLi5lNDI1MWJhCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL3g4Ni94ODZf ZW11bGF0ZS9pbmF0LmMKPiBAQCAtMCwwICsxLDk4IEBACj4gKy8qCj4gKyAqIHg4NiBpbnN0cnVj dGlvbiBhdHRyaWJ1dGUgdGFibGVzCj4gKyAqCj4gKyAqIFdyaXR0ZW4gYnkgTWFzYW1pIEhpcmFt YXRzdSA8bWhpcmFtYXRAcmVkaGF0LmNvbT4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAr ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiAr ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKPiArICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs YWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KPiArICoKPiArICov Cj4gKyNpbmNsdWRlIDxhc20vaW5zbi5oPgo+ICsKPiArLyogQXR0cmlidXRlIHRhYmxlcyBhcmUg Z2VuZXJhdGVkIGZyb20gb3Bjb2RlIG1hcCAqLwo+ICsjaW5jbHVkZSAiaW5hdC10YWJsZXMuYyIK PiArCj4gKy8qIEF0dHJpYnV0ZSBzZWFyY2ggQVBJcyAqLwo+ICtpbnNuX2F0dHJfdCBpbmF0X2dl dF9vcGNvZGVfYXR0cmlidXRlKGluc25fYnl0ZV90IG9wY29kZSkKPiArewo+ICsgICAgcmV0dXJu IGluYXRfcHJpbWFyeV90YWJsZVtvcGNvZGVdOwo+ICt9Cj4gKwo+ICtpbnQgaW5hdF9nZXRfbGFz dF9wcmVmaXhfaWQoaW5zbl9ieXRlX3QgbGFzdF9wZngpCj4gK3sKPiArICAgIGluc25fYXR0cl90 IGxwZnhfYXR0cjsKPiArCj4gKyAgICBscGZ4X2F0dHIgPSBpbmF0X2dldF9vcGNvZGVfYXR0cmli dXRlKGxhc3RfcGZ4KTsKPiArICAgIHJldHVybiBpbmF0X2xhc3RfcHJlZml4X2lkKGxwZnhfYXR0 cik7Cj4gK30KPiArCj4gK2luc25fYXR0cl90IGluYXRfZ2V0X2VzY2FwZV9hdHRyaWJ1dGUoaW5z bl9ieXRlX3Qgb3Bjb2RlLCBpbnQgbHBmeF9pZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnNuX2F0dHJfdCBlc2NfYXR0cikKPiArewo+ICsgICAgY29uc3QgaW5z bl9hdHRyX3QgKnRhYmxlOwo+ICsgICAgaW50IG47Cj4gKwo+ICsgICAgbiA9IGluYXRfZXNjYXBl X2lkKGVzY19hdHRyKTsKPiArCj4gKyAgICB0YWJsZSA9IGluYXRfZXNjYXBlX3RhYmxlc1tuXVsw XTsKPiArICAgIGlmICggIXRhYmxlICkKPiArICAgICAgICByZXR1cm4gMDsKPiArICAgIGlmICgg aW5hdF9oYXNfdmFyaWFudCh0YWJsZVtvcGNvZGVdKSAmJiBscGZ4X2lkICkKPiArICAgIHsKPiAr ICAgICAgICB0YWJsZSA9IGluYXRfZXNjYXBlX3RhYmxlc1tuXVtscGZ4X2lkXTsKPiArICAgICAg ICBpZiAoICF0YWJsZSApCj4gKyAgICAgICAgICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsgICAg cmV0dXJuIHRhYmxlW29wY29kZV07Cj4gK30KPiArCj4gK2luc25fYXR0cl90IGluYXRfZ2V0X2dy b3VwX2F0dHJpYnV0ZShpbnNuX2J5dGVfdCBtb2RybSwgaW50IGxwZnhfaWQsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNuX2F0dHJfdCBncnBfYXR0cikKPiArewo+ ICsgICAgY29uc3QgaW5zbl9hdHRyX3QgKnRhYmxlOwo+ICsgICAgaW50IG47Cj4gKwo+ICsgICAg biA9IGluYXRfZ3JvdXBfaWQoZ3JwX2F0dHIpOwo+ICsKPiArICAgIHRhYmxlID0gaW5hdF9ncm91 cF90YWJsZXNbbl1bMF07Cj4gKyAgICBpZiAoICF0YWJsZSApCj4gKyAgICAgICAgcmV0dXJuIGlu YXRfZ3JvdXBfY29tbW9uX2F0dHJpYnV0ZShncnBfYXR0cik7Cj4gKyAgICBpZiAoIGluYXRfaGFz X3ZhcmlhbnQodGFibGVbWDg2X01PRFJNX1JFRyhtb2RybSldKSAmJiBscGZ4X2lkICkKPiArICAg IHsKPiArICAgICAgICB0YWJsZSA9IGluYXRfZ3JvdXBfdGFibGVzW25dW2xwZnhfaWRdOwo+ICsg ICAgICAgIGlmICggIXRhYmxlICkKPiArICAgICAgICAgICAgcmV0dXJuIGluYXRfZ3JvdXBfY29t bW9uX2F0dHJpYnV0ZShncnBfYXR0cik7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gdGFibGVbWDg2 X01PRFJNX1JFRyhtb2RybSldIHwgaW5hdF9ncm91cF9jb21tb25fYXR0cmlidXRlKGdycF9hdHRy KTsKPiArfQo+ICsKPiAraW5zbl9hdHRyX3QgaW5hdF9nZXRfYXZ4X2F0dHJpYnV0ZShpbnNuX2J5 dGVfdCBvcGNvZGUsIGluc25fYnl0ZV90IHZleF9tLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluc25fYnl0ZV90IHZleF9wKQo+ICt7Cj4gKyAgICBjb25zdCBpbnNuX2F0 dHJfdCAqdGFibGU7Cj4gKyAgICBpZiAoIHZleF9tID4gWDg2X1ZFWF9NX01BWCB8fCB2ZXhfcCA+ IElOQVRfTFNUUEZYX01BWCApCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAvKiBBdCBmaXJz dCwgdGhpcyBjaGVja3MgdGhlIG1hc3RlciB0YWJsZSAqLwo+ICsgICAgdGFibGUgPSBpbmF0X2F2 eF90YWJsZXNbdmV4X21dWzBdOwo+ICsgICAgaWYgKCAhdGFibGUgKQo+ICsgICAgICAgIHJldHVy biAwOwo+ICsgICAgaWYgKCAhaW5hdF9pc19ncm91cCh0YWJsZVtvcGNvZGVdKSAmJiB2ZXhfcCAp Cj4gKyAgICB7Cj4gKyAgICAgICAgLyogSWYgdGhpcyBpcyBub3QgYSBncm91cCwgZ2V0IGF0dHJp YnV0ZSBkaXJlY3RseSAqLwo+ICsgICAgICAgIHRhYmxlID0gaW5hdF9hdnhfdGFibGVzW3ZleF9t XVt2ZXhfcF07Cj4gKyAgICAgICAgaWYgKCAhdGFibGUgKQo+ICsgICAgICAgICAgICByZXR1cm4g MDsKPiArICAgIH0KPiArICAgIHJldHVybiB0YWJsZVtvcGNvZGVdOwo+ICt9Cj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS9pbnNuLmMgYi94ZW4vYXJjaC94ODYveDg2X2Vt dWxhdGUvaW5zbi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40ZDc0 MTZlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS9pbnNu LmMKPiBAQCAtMCwwICsxLDYyNCBAQAo+ICsvKgo+ICsgKiB4ODYgaW5zdHJ1Y3Rpb24gYW5hbHlz aXMKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IKPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKPiArICogYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiAr ICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSBJQk0gQ29ycG9y YXRpb24sIDIwMDIsIDIwMDQsIDIwMDkKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8eGVuL3N0cmlu Zy5oPgo+ICsjaW5jbHVkZSA8YXNtL2luYXQuaD4KPiArI2luY2x1ZGUgPGFzbS9pbnNuLmg+Cj4g Kwo+ICsvKiBWZXJpZnkgbmV4dCBzaXplb2YodCkgYnl0ZXMgY2FuIGJlIG9uIHRoZSBzYW1lIGlu c3RydWN0aW9uICovCj4gKyNkZWZpbmUgdmFsaWRhdGVfbmV4dCh0LCBpbnNuLCBuKSBcCj4gKyAg ICAoKGluc24pLT5uZXh0X2J5dGUgKyBzaXplb2YodCkgKyBuIC0gKGluc24pLT5rYWRkciA8PSBN QVhfSU5TTl9TSVpFKQo+ICsKPiArI2RlZmluZSBfX2dldF9uZXh0KHQsIGluc24pICAgICAgICAg ICBcCj4gKyAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB0IHIgPSAqKHQgKilp bnNuLT5uZXh0X2J5dGU7ICBcCj4gKyAgICAgICAgaW5zbi0+bmV4dF9ieXRlICs9IHNpemVvZih0 KTsgXAo+ICsgICAgICAgIHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg ICB9KQo+ICsKPiArI2RlZmluZSBfX3BlZWtfbmJ5dGVfbmV4dCh0LCBpbnNuLCBuKSAgICAgICAg XAo+ICsgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg ICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB0 IHIgPSAqKHQgKikoKGluc24pLT5uZXh0X2J5dGUgKyBuKTsgXAo+ICsgICAgICAgIHI7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgfSkKPiArCj4gKyNkZWZp bmUgZ2V0X25leHQodCwgaW5zbikgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgKCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgaWYg KCB1bmxpa2VseSghdmFsaWRhdGVfbmV4dCh0LCBpbnNuLCAwKSkgKSBcCj4gKyAgICAgICAgICAg IGdvdG8gZXJyX291dDsgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIF9fZ2V0 X25leHQodCwgaW5zbik7ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICB9KQo+ICsK PiArI2RlZmluZSBwZWVrX25ieXRlX25leHQodCwgaW5zbiwgbikgICAgICAgICAgICAgICBcCj4g KyAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsg ICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAg ICAgICBpZiAoIHVubGlrZWx5KCF2YWxpZGF0ZV9uZXh0KHQsIGluc24sIG4pKSApIFwKPiArICAg ICAgICAgICAgZ290byBlcnJfb3V0OyAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg ICAgX19wZWVrX25ieXRlX25leHQodCwgaW5zbiwgbik7ICAgICAgICAgICAgXAo+ICsgICAgICAg IH0pCj4gKwo+ICsjZGVmaW5lIHBlZWtfbmV4dCh0LCBpbnNuKSBwZWVrX25ieXRlX25leHQodCwg aW5zbiwgMCkKPiArCj4gKy8qKgo+ICsgKiBpbnNuX2luaXQoKSAtIGluaXRpYWxpemUgc3RydWN0 IGluc24KPiArICogQGluc246CSZzdHJ1Y3QgaW5zbiB0byBiZSBpbml0aWFsaXplZAo+ICsgKiBA a2FkZHI6CWFkZHJlc3MgKGluIGtlcm5lbCBtZW1vcnkpIG9mIGluc3RydWN0aW9uIChvciBjb3B5 IHRoZXJlb2YpCj4gKyAqIEB4ODZfNjQ6CSEwIGZvciA2NC1iaXQga2VybmVsIG9yIDY0LWJpdCBh cHAKPiArICovCj4gK3ZvaWQgaW5zbl9pbml0KHN0cnVjdCBpbnNuICppbnNuLCBjb25zdCB2b2lk ICprYWRkciwgaW50IHg4Nl82NCkKPiArewo+ICsgICAgbWVtc2V0KGluc24sIDAsIHNpemVvZigq aW5zbikpOwo+ICsgICAgaW5zbi0+a2FkZHIgPSBrYWRkcjsKPiArICAgIGluc24tPm5leHRfYnl0 ZSA9IGthZGRyOwo+ICsgICAgaW5zbi0+eDg2XzY0ID0geDg2XzY0ID8gMSA6IDA7Cj4gKyAgICBp bnNuLT5vcG5kX2J5dGVzID0gNDsKPiArICAgIGlmICggeDg2XzY0ICkKPiArICAgICAgICBpbnNu LT5hZGRyX2J5dGVzID0gODsKPiArICAgIGVsc2UKPiArICAgICAgICBpbnNuLT5hZGRyX2J5dGVz ID0gNDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGluc25fZ2V0X3ByZWZpeGVzIC0gc2NhbiB4ODYg aW5zdHJ1Y3Rpb24gcHJlZml4IGJ5dGVzCj4gKyAqIEBpbnNuOgkmc3RydWN0IGluc24gY29udGFp bmluZyBpbnN0cnVjdGlvbgo+ICsgKgo+ICsgKiBQb3B1bGF0ZXMgdGhlIEBpbnNuLT5wcmVmaXhl cyBiaXRtYXAsIGFuZCB1cGRhdGVzIEBpbnNuLT5uZXh0X2J5dGUKPiArICogdG8gcG9pbnQgdG8g dGhlIChmaXJzdCkgb3Bjb2RlLiAgTm8gZWZmZWN0IGlmIEBpbnNuLT5wcmVmaXhlcy5nb3QKPiAr ICogaXMgYWxyZWFkeSBzZXQuCj4gKyAqLwo+ICt2b2lkIGluc25fZ2V0X3ByZWZpeGVzKHN0cnVj dCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCAqcHJlZml4ZXMgPSAm aW5zbi0+cHJlZml4ZXM7Cj4gKyAgICBpbnNuX2F0dHJfdCBhdHRyOwo+ICsgICAgaW5zbl9ieXRl X3QgYiwgbGI7Cj4gKyAgICBpbnQgaSwgbmI7Cj4gKwo+ICsgICAgaWYgKCBwcmVmaXhlcy0+Z290 ICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgbmIgPSAwOwo+ICsgICAgbGIgPSAwOwo+ ICsgICAgYiA9IHBlZWtfbmV4dChpbnNuX2J5dGVfdCwgaW5zbik7Cj4gKyAgICBhdHRyID0gaW5h dF9nZXRfb3Bjb2RlX2F0dHJpYnV0ZShiKTsKPiArICAgIHdoaWxlICggaW5hdF9pc19sZWdhY3lf cHJlZml4KGF0dHIpICkKPiArICAgIHsKPiArICAgICAgICAvKiBTa2lwIGlmIHNhbWUgcHJlZml4 ICovCj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5iOyBpKyspCj4gKyAgICAgICAgICAgIGlm ICggcHJlZml4ZXMtPmJ5dGVzW2ldID09IGIgKQo+ICsgICAgICAgICAgICAgICAgZ290byBmb3Vu ZDsKPiArICAgICAgICBpZiAoIG5iID09IDQgKQo+ICsgICAgICAgICAgICAvKiBJbnZhbGlkIGlu c3RydWN0aW9uICovCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIHByZWZpeGVzLT5i eXRlc1tuYisrXSA9IGI7Cj4gKyAgICAgICAgaWYgKCBpbmF0X2lzX2FkZHJlc3Nfc2l6ZV9wcmVm aXgoYXR0cikgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgLyogYWRkcmVzcyBzaXplIHN3 aXRjaGVzIDIvNCBvciA0LzggKi8KPiArICAgICAgICAgICAgaWYgKCBpbnNuLT54ODZfNjQgKQo+ ICsgICAgICAgICAgICAgICAgaW5zbi0+YWRkcl9ieXRlcyBePSAxMjsKPiArICAgICAgICAgICAg ZWxzZQo+ICsgICAgICAgICAgICAgICAgaW5zbi0+YWRkcl9ieXRlcyBePSA2Owo+ICsgICAgICAg IH0KPiArICAgICAgICBlbHNlIGlmICggaW5hdF9pc19vcGVyYW5kX3NpemVfcHJlZml4KGF0dHIp ICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIC8qIG9wcmFuZCBzaXplIHN3aXRjaGVzIDIv NCAqLwo+ICsgICAgICAgICAgICBpbnNuLT5vcG5kX2J5dGVzIF49IDY7Cj4gKyAgICAgICAgfQo+ ICsgICAgZm91bmQ6Cj4gKyAgICAgICAgcHJlZml4ZXMtPm5ieXRlcysrOwo+ICsgICAgICAgIGlu c24tPm5leHRfYnl0ZSsrOwo+ICsgICAgICAgIGxiID0gYjsKPiArICAgICAgICBiID0gcGVla19u ZXh0KGluc25fYnl0ZV90LCBpbnNuKTsKPiArICAgICAgICBhdHRyID0gaW5hdF9nZXRfb3Bjb2Rl X2F0dHJpYnV0ZShiKTsKPiArICAgIH0KPiArICAgIC8qIFNldCB0aGUgbGFzdCBwcmVmaXggKi8K PiArICAgIGlmICggbGIgJiYgbGIgIT0gaW5zbi0+cHJlZml4ZXMuYnl0ZXNbM10gKQo+ICsgICAg ewo+ICsgICAgICAgIGlmICggdW5saWtlbHkoaW5zbi0+cHJlZml4ZXMuYnl0ZXNbM10pICkKPiAr ICAgICAgICB7Cj4gKyAgICAgICAgICAgIC8qIFN3YXAgdGhlIGxhc3QgcHJlZml4ICovCj4gKyAg ICAgICAgICAgIGIgPSBpbnNuLT5wcmVmaXhlcy5ieXRlc1szXTsKPiArICAgICAgICAgICAgZm9y IChpID0gMDsgaSA8IG5iOyBpKyspCj4gKyAgICAgICAgICAgICAgICBpZiAoIHByZWZpeGVzLT5i eXRlc1tpXSA9PSBsYiApCj4gKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ZXMtPmJ5dGVzW2ld ID0gYjsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaW5zbi0+cHJlZml4ZXMuYnl0ZXNbM10gPSBs YjsKPiArICAgIH0KPiArCj4gKyAgICAvKiBEZWNvZGUgUkVYIHByZWZpeCAqLwo+ICsgICAgaWYg KCBpbnNuLT54ODZfNjQgKQo+ICsgICAgewo+ICsgICAgICAgIGIgPSBwZWVrX25leHQoaW5zbl9i eXRlX3QsIGluc24pOwo+ICsgICAgICAgIGF0dHIgPSBpbmF0X2dldF9vcGNvZGVfYXR0cmlidXRl KGIpOwo+ICsgICAgICAgIGlmICggaW5hdF9pc19yZXhfcHJlZml4KGF0dHIpICkKPiArICAgICAg ICB7Cj4gKyAgICAgICAgICAgIGluc24tPnJleF9wcmVmaXgudmFsdWUgPSBiOwo+ICsgICAgICAg ICAgICBpbnNuLT5yZXhfcHJlZml4Lm5ieXRlcyA9IDE7Cj4gKyAgICAgICAgICAgIGluc24tPm5l eHRfYnl0ZSsrOwo+ICsgICAgICAgICAgICBpZiAoIFg4Nl9SRVhfVyhiKSApCj4gKyAgICAgICAg ICAgICAgICAvKiBSRVguVyBvdmVycmlkZXMgb3BuZF9zaXplICovCj4gKyAgICAgICAgICAgICAg ICBpbnNuLT5vcG5kX2J5dGVzID0gODsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICBpbnNu LT5yZXhfcHJlZml4LmdvdCA9IDE7Cj4gKwo+ICsgICAgLyogRGVjb2RlIFZFWCBwcmVmaXggKi8K PiArICAgIGIgPSBwZWVrX25leHQoaW5zbl9ieXRlX3QsIGluc24pOwo+ICsgICAgYXR0ciA9IGlu YXRfZ2V0X29wY29kZV9hdHRyaWJ1dGUoYik7Cj4gKyAgICBpZiAoIGluYXRfaXNfdmV4X3ByZWZp eChhdHRyKSApCj4gKyAgICB7Cj4gKyAgICAgICAgaW5zbl9ieXRlX3QgYjIgPSBwZWVrX25ieXRl X25leHQoaW5zbl9ieXRlX3QsIGluc24sIDEpOwo+ICsgICAgICAgIGlmICggIWluc24tPng4Nl82 NCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgKiBJbiAz Mi1iaXRzIG1vZGUsIGlmIHRoZSBbNzo2XSBiaXRzIChtb2QgYml0cyBvZgo+ICsgICAgICAgICAg ICAgKiBNb2RSTSkgb24gdGhlIHNlY29uZCBieXRlIGFyZSBub3QgMTFiLCBpdCBpcwo+ICsgICAg ICAgICAgICAgKiBMRFMgb3IgTEVTLgo+ICsgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAg aWYgKCBYODZfTU9EUk1fTU9EKGIyKSAhPSAzICkKPiArICAgICAgICAgICAgICAgIGdvdG8gdmV4 X2VuZDsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaW5zbi0+dmV4X3ByZWZpeC5ieXRlc1swXSA9 IGI7Cj4gKyAgICAgICAgaW5zbi0+dmV4X3ByZWZpeC5ieXRlc1sxXSA9IGIyOwo+ICsgICAgICAg IGlmICggaW5hdF9pc192ZXgzX3ByZWZpeChhdHRyKSApCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICBiMiA9IHBlZWtfbmJ5dGVfbmV4dChpbnNuX2J5dGVfdCwgaW5zbiwgMik7Cj4gKyAgICAg ICAgICAgIGluc24tPnZleF9wcmVmaXguYnl0ZXNbMl0gPSBiMjsKPiArICAgICAgICAgICAgaW5z bi0+dmV4X3ByZWZpeC5uYnl0ZXMgPSAzOwo+ICsgICAgICAgICAgICBpbnNuLT5uZXh0X2J5dGUg Kz0gMzsKPiArICAgICAgICAgICAgaWYgKCBpbnNuLT54ODZfNjQgJiYgWDg2X1ZFWF9XKGIyKSAp Cj4gKyAgICAgICAgICAgICAgICAvKiBWRVguVyBvdmVycmlkZXMgb3BuZF9zaXplICovCj4gKyAg ICAgICAgICAgICAgICBpbnNuLT5vcG5kX2J5dGVzID0gODsKPiArICAgICAgICB9Cj4gKyAgICAg ICAgZWxzZQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgaW5zbi0+dmV4X3ByZWZpeC5uYnl0 ZXMgPSAyOwo+ICsgICAgICAgICAgICBpbnNuLT5uZXh0X2J5dGUgKz0gMjsKPiArICAgICAgICB9 Cj4gKyAgICB9Cj4gK3ZleF9lbmQ6Cj4gKyAgICBpbnNuLT52ZXhfcHJlZml4LmdvdCA9IDE7Cj4g Kwo+ICsgICAgcHJlZml4ZXMtPmdvdCA9IDE7Cj4gKwo+ICtlcnJfb3V0Ogo+ICsgICAgcmV0dXJu Owo+ICt9Cj4gKwo+ICsvKioKPiArICogaW5zbl9nZXRfb3Bjb2RlIC0gY29sbGVjdCBvcGNvZGUo cykKPiArICogQGluc246CSZzdHJ1Y3QgaW5zbiBjb250YWluaW5nIGluc3RydWN0aW9uCj4gKyAq Cj4gKyAqIFBvcHVsYXRlcyBAaW5zbi0+b3Bjb2RlLCB1cGRhdGVzIEBpbnNuLT5uZXh0X2J5dGUg dG8gcG9pbnQgcGFzdCB0aGUKPiArICogb3Bjb2RlIGJ5dGUocyksIGFuZCBzZXQgQGluc24tPmF0 dHIgKGV4Y2VwdCBmb3IgZ3JvdXBzKS4KPiArICogSWYgbmVjZXNzYXJ5LCBmaXJzdCBjb2xsZWN0 cyBhbnkgcHJlY2VkaW5nIChwcmVmaXgpIGJ5dGVzLgo+ICsgKiBTZXRzIEBpbnNuLT5vcGNvZGUu dmFsdWUgPSBvcGNvZGUxLiAgTm8gZWZmZWN0IGlmIEBpbnNuLT5vcGNvZGUuZ290Cj4gKyAqIGlz IGFscmVhZHkgMS4KPiArICovCj4gK3ZvaWQgaW5zbl9nZXRfb3Bjb2RlKHN0cnVjdCBpbnNuICpp bnNuKQo+ICt7Cj4gKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCAqb3Bjb2RlID0gJmluc24tPm9wY29k ZTsKPiArICAgIGluc25fYnl0ZV90IG9wOwo+ICsgICAgaW50IHBmeF9pZDsKPiArICAgIGlmICgg b3Bjb2RlLT5nb3QgKQo+ICsgICAgICAgIHJldHVybjsKPiArICAgIGlmICggIWluc24tPnByZWZp eGVzLmdvdCApCj4gKyAgICAgICAgaW5zbl9nZXRfcHJlZml4ZXMoaW5zbik7Cj4gKwo+ICsgICAg LyogR2V0IGZpcnN0IG9wY29kZSAqLwo+ICsgICAgb3AgPSBnZXRfbmV4dChpbnNuX2J5dGVfdCwg aW5zbik7Cj4gKyAgICBvcGNvZGUtPmJ5dGVzWzBdID0gb3A7Cj4gKyAgICBvcGNvZGUtPm5ieXRl cyA9IDE7Cj4gKwo+ICsgICAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgVkVYIHByZWZpeCBvciBub3Qg Ki8KPiArICAgIGlmICggaW5zbl9pc19hdngoaW5zbikgKQo+ICsgICAgewo+ICsgICAgICAgIGlu c25fYnl0ZV90IG0sIHA7Cj4gKyAgICAgICAgbSA9IGluc25fdmV4X21fYml0cyhpbnNuKTsKPiAr ICAgICAgICBwID0gaW5zbl92ZXhfcF9iaXRzKGluc24pOwo+ICsgICAgICAgIGluc24tPmF0dHIg PSBpbmF0X2dldF9hdnhfYXR0cmlidXRlKG9wLCBtLCBwKTsKPiArICAgICAgICBpZiAoICFpbmF0 X2FjY2VwdF92ZXgoaW5zbi0+YXR0cikgJiYgIWluYXRfaXNfZ3JvdXAoaW5zbi0+YXR0cikgKQo+ ICsgICAgICAgICAgICBpbnNuLT5hdHRyID0gMDsgLyogVGhpcyBpbnN0cnVjdGlvbiBpcyBiYWQg Ki8KPiArICAgICAgICBnb3RvIGVuZDsgICAgICAgICAgIC8qIFZFWCBoYXMgb25seSAxIGJ5dGUg Zm9yIG9wY29kZSAqLwo+ICsgICAgfQo+ICsKPiArICAgIGluc24tPmF0dHIgPSBpbmF0X2dldF9v cGNvZGVfYXR0cmlidXRlKG9wKTsKPiArICAgIHdoaWxlICggaW5hdF9pc19lc2NhcGUoaW5zbi0+ YXR0cikgKQo+ICsgICAgewo+ICsgICAgICAgIC8qIEdldCBlc2NhcGVkIG9wY29kZSAqLwo+ICsg ICAgICAgIG9wID0gZ2V0X25leHQoaW5zbl9ieXRlX3QsIGluc24pOwo+ICsgICAgICAgIG9wY29k ZS0+Ynl0ZXNbb3Bjb2RlLT5uYnl0ZXMrK10gPSBvcDsKPiArICAgICAgICBwZnhfaWQgPSBpbnNu X2xhc3RfcHJlZml4X2lkKGluc24pOwo+ICsgICAgICAgIGluc24tPmF0dHIgPSBpbmF0X2dldF9l c2NhcGVfYXR0cmlidXRlKG9wLCBwZnhfaWQsIGluc24tPmF0dHIpOwo+ICsgICAgfQo+ICsgICAg aWYgKCBpbmF0X211c3RfdmV4KGluc24tPmF0dHIpICkKPiArICAgICAgICBpbnNuLT5hdHRyID0g MDsgLyogVGhpcyBpbnN0cnVjdGlvbiBpcyBiYWQgKi8KPiArZW5kOgo+ICsgICAgb3Bjb2RlLT5n b3QgPSAxOwo+ICsKPiArZXJyX291dDoKPiArICAgIHJldHVybjsKPiArfQo+ICsKPiArLyoqCj4g KyAqIGluc25fZ2V0X21vZHJtIC0gY29sbGVjdCBNb2RSTSBieXRlLCBpZiBhbnkKPiArICogQGlu c246CSZzdHJ1Y3QgaW5zbiBjb250YWluaW5nIGluc3RydWN0aW9uCj4gKyAqCj4gKyAqIFBvcHVs YXRlcyBAaW5zbi0+bW9kcm0gYW5kIHVwZGF0ZXMgQGluc24tPm5leHRfYnl0ZSB0byBwb2ludCBw YXN0IHRoZQo+ICsgKiBNb2RSTSBieXRlLCBpZiBhbnkuICBJZiBuZWNlc3NhcnksIGZpcnN0IGNv bGxlY3RzIHRoZSBwcmVjZWRpbmcgYnl0ZXMKPiArICogKHByZWZpeGVzIGFuZCBvcGNvZGUocykp LiAgTm8gZWZmZWN0IGlmIEBpbnNuLT5tb2RybS5nb3QgaXMgYWxyZWFkeSAxLgo+ICsgKi8KPiAr dm9pZCBpbnNuX2dldF9tb2RybShzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgc3RydWN0 IGluc25fZmllbGQgKm1vZHJtID0gJmluc24tPm1vZHJtOwo+ICsgICAgaW5zbl9ieXRlX3QgcGZ4 X2lkLCBtb2Q7Cj4gKyAgICBpZiAoIG1vZHJtLT5nb3QgKQo+ICsgICAgICAgIHJldHVybjsKPiAr ICAgIGlmICggIWluc24tPm9wY29kZS5nb3QgKQo+ICsgICAgICAgIGluc25fZ2V0X29wY29kZShp bnNuKTsKPiArCj4gKyAgICBpZiAoIGluYXRfaGFzX21vZHJtKGluc24tPmF0dHIpICkKPiArICAg IHsKPiArICAgICAgICBtb2QgPSBnZXRfbmV4dChpbnNuX2J5dGVfdCwgaW5zbik7Cj4gKyAgICAg ICAgbW9kcm0tPnZhbHVlID0gbW9kOwo+ICsgICAgICAgIG1vZHJtLT5uYnl0ZXMgPSAxOwo+ICsg ICAgICAgIGlmICggaW5hdF9pc19ncm91cChpbnNuLT5hdHRyKSApCj4gKyAgICAgICAgewo+ICsg ICAgICAgICAgICBwZnhfaWQgPSBpbnNuX2xhc3RfcHJlZml4X2lkKGluc24pOwo+ICsgICAgICAg ICAgICBpbnNuLT5hdHRyID0gaW5hdF9nZXRfZ3JvdXBfYXR0cmlidXRlKG1vZCwgcGZ4X2lkLCBp bnNuLT5hdHRyKTsKPiArICAgICAgICAgICAgaWYgKCBpbnNuX2lzX2F2eChpbnNuKSAmJiAhaW5h dF9hY2NlcHRfdmV4KGluc24tPmF0dHIpICkKPiArICAgICAgICAgICAgICAgIGluc24tPmF0dHIg PSAwOyAvKiBUaGlzIGlzIGJhZCAqLwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBp ZiAoIGluc24tPng4Nl82NCAmJiBpbmF0X2lzX2ZvcmNlNjQoaW5zbi0+YXR0cikgKQo+ICsgICAg ICAgIGluc24tPm9wbmRfYnl0ZXMgPSA4Owo+ICsgICAgbW9kcm0tPmdvdCA9IDE7Cj4gKwo+ICtl cnJfb3V0Ogo+ICsgICAgcmV0dXJuOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaW5zbl9yaXBfcmVs YXRpdmUoKSAtIERvZXMgaW5zdHJ1Y3Rpb24gdXNlIFJJUC1yZWxhdGl2ZSBhZGRyZXNzaW5nIG1v ZGU/Cj4gKyAqIEBpbnNuOgkmc3RydWN0IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgo+ICsg Kgo+ICsgKiBJZiBuZWNlc3NhcnksIGZpcnN0IGNvbGxlY3RzIHRoZSBpbnN0cnVjdGlvbiB1cCB0 byBhbmQgaW5jbHVkaW5nIHRoZQo+ICsgKiBNb2RSTSBieXRlLiAgTm8gZWZmZWN0IGlmIEBpbnNu LT54ODZfNjQgaXMgMC4KPiArICovCj4gK2ludCBpbnNuX3JpcF9yZWxhdGl2ZShzdHJ1Y3QgaW5z biAqaW5zbikKPiArewo+ICsgICAgc3RydWN0IGluc25fZmllbGQgKm1vZHJtID0gJmluc24tPm1v ZHJtOwo+ICsKPiArICAgIGlmICggIWluc24tPng4Nl82NCApCj4gKyAgICAgICAgcmV0dXJuIDA7 Cj4gKyAgICBpZiAoICFtb2RybS0+Z290ICkKPiArICAgICAgICBpbnNuX2dldF9tb2RybShpbnNu KTsKPiArICAgIC8qCj4gKyAgICAgKiBGb3IgcmlwLXJlbGF0aXZlIGluc3RydWN0aW9ucywgdGhl IG1vZCBmaWVsZCAodG9wIDIgYml0cykKPiArICAgICAqIGlzIHplcm8gYW5kIHRoZSByL20gZmll bGQgKGJvdHRvbSAzIGJpdHMpIGlzIDB4NS4KPiArICAgICAqLwo+ICsgICAgcmV0dXJuIChtb2Ry bS0+bmJ5dGVzICYmIChtb2RybS0+dmFsdWUgJiAweGM3KSA9PSAweDUpOwo+ICt9Cj4gKwo+ICsv KioKPiArICogaW5zbl9nZXRfc2liKCkgLSBHZXQgdGhlIFNJQiBieXRlIG9mIGluc3RydWN0aW9u Cj4gKyAqIEBpbnNuOgkmc3RydWN0IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgo+ICsgKgo+ ICsgKiBJZiBuZWNlc3NhcnksIGZpcnN0IGNvbGxlY3RzIHRoZSBpbnN0cnVjdGlvbiB1cCB0byBh bmQgaW5jbHVkaW5nIHRoZQo+ICsgKiBNb2RSTSBieXRlLgo+ICsgKi8KPiArdm9pZCBpbnNuX2dl dF9zaWIoc3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIGluc25fYnl0ZV90IG1vZHJtOwo+ ICsKPiArICAgIGlmICggaW5zbi0+c2liLmdvdCApCj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAg aWYgKCAhaW5zbi0+bW9kcm0uZ290ICkKPiArICAgICAgICBpbnNuX2dldF9tb2RybShpbnNuKTsK PiArICAgIGlmICggaW5zbi0+bW9kcm0ubmJ5dGVzICkKPiArICAgIHsKPiArICAgICAgICBtb2Ry bSA9IChpbnNuX2J5dGVfdClpbnNuLT5tb2RybS52YWx1ZTsKPiArICAgICAgICBpZiAoIGluc24t PmFkZHJfYnl0ZXMgIT0gMiAmJiBYODZfTU9EUk1fTU9EKG1vZHJtICkgIT0gMyAmJgo+ICsgICAg ICAgICAgICBYODZfTU9EUk1fUk0obW9kcm0pID09IDQpCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICBpbnNuLT5zaWIudmFsdWUgPSBnZXRfbmV4dChpbnNuX2J5dGVfdCwgaW5zbik7Cj4gKyAg ICAgICAgICAgIGluc24tPnNpYi5uYnl0ZXMgPSAxOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiAr ICAgIGluc24tPnNpYi5nb3QgPSAxOwo+ICsKPiArZXJyX291dDoKPiArICAgIHJldHVybjsKPiAr fQo+ICsKPiArLyoqCj4gKyAqIGluc25fZ2V0X2Rpc3BsYWNlbWVudCgpIC0gR2V0IHRoZSBkaXNw bGFjZW1lbnQgb2YgaW5zdHJ1Y3Rpb24KPiArICogQGluc246CSZzdHJ1Y3QgaW5zbiBjb250YWlu aW5nIGluc3RydWN0aW9uCj4gKyAqCj4gKyAqIElmIG5lY2Vzc2FyeSwgZmlyc3QgY29sbGVjdHMg dGhlIGluc3RydWN0aW9uIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlCj4gKyAqIFNJQiBieXRlLgo+ ICsgKiBEaXNwbGFjZW1lbnQgdmFsdWUgaXMgc2lnbi1leHBhbmRlZC4KPiArICovCj4gK3ZvaWQg aW5zbl9nZXRfZGlzcGxhY2VtZW50KHN0cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBpbnNu X2J5dGVfdCBtb2QsIHJtLCBiYXNlOwo+ICsKPiArICAgIGlmICggaW5zbi0+ZGlzcGxhY2VtZW50 LmdvdCApCj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgaWYgKCAhaW5zbi0+c2liLmdvdCApCj4g KyAgICAgICAgaW5zbl9nZXRfc2liKGluc24pOwo+ICsgICAgaWYgKCBpbnNuLT5tb2RybS5uYnl0 ZXMgKQo+ICsgICAgewo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogSW50ZXJwcmV0aW5nIHRo ZSBtb2RybSBieXRlOgo+ICsgICAgICAgICAqIG1vZCA9IDAwIC0gbm8gZGlzcGxhY2VtZW50IGZp ZWxkcyAoZXhjZXB0aW9ucyBiZWxvdykKPiArICAgICAgICAgKiBtb2QgPSAwMSAtIDEtYnl0ZSBk aXNwbGFjZW1lbnQgZmllbGQKPiArICAgICAgICAgKiBtb2QgPSAxMCAtIGRpc3BsYWNlbWVudCBm aWVsZCBpcyA0IGJ5dGVzLCBvciAyIGJ5dGVzIGlmCj4gKyAgICAgICAgICogCWFkZHJlc3Mgc2l6 ZSA9IDIgKDB4NjcgcHJlZml4IGluIDMyLWJpdCBtb2RlKQo+ICsgICAgICAgICAqIG1vZCA9IDEx IC0gbm8gbWVtb3J5IG9wZXJhbmQKPiArICAgICAgICAgKgo+ICsgICAgICAgICAqIElmIGFkZHJl c3Mgc2l6ZSA9IDIuLi4KPiArICAgICAgICAgKiBtb2QgPSAwMCwgci9tID0gMTEwIC0gZGlzcGxh Y2VtZW50IGZpZWxkIGlzIDIgYnl0ZXMKPiArICAgICAgICAgKgo+ICsgICAgICAgICAqIElmIGFk ZHJlc3Mgc2l6ZSAhPSAyLi4uCj4gKyAgICAgICAgICogbW9kICE9IDExLCByL20gPSAxMDAgLSBT SUIgYnl0ZSBleGlzdHMKPiArICAgICAgICAgKiBtb2QgPSAwMCwgU0lCIGJhc2UgPSAxMDEgLSBk aXNwbGFjZW1lbnQgZmllbGQgaXMgNCBieXRlcwo+ICsgICAgICAgICAqIG1vZCA9IDAwLCByL20g PSAxMDEgLSByaXAtcmVsYXRpdmUgYWRkcmVzc2luZywgZGlzcGxhY2VtZW50Cj4gKyAgICAgICAg ICogCWZpZWxkIGlzIDQgYnl0ZXMKPiArICAgICAgICAgKi8KPiArICAgICAgICBtb2QgPSBYODZf TU9EUk1fTU9EKGluc24tPm1vZHJtLnZhbHVlKTsKPiArICAgICAgICBybSA9IFg4Nl9NT0RSTV9S TShpbnNuLT5tb2RybS52YWx1ZSk7Cj4gKyAgICAgICAgYmFzZSA9IFg4Nl9TSUJfQkFTRShpbnNu LT5zaWIudmFsdWUpOwo+ICsgICAgICAgIGlmICggbW9kID09IDMgKQo+ICsgICAgICAgICAgICBn b3RvIG91dDsKPiArICAgICAgICBpZiAoIG1vZCA9PSAxICkKPiArICAgICAgICB7Cj4gKyAgICAg ICAgICAgIGluc24tPmRpc3BsYWNlbWVudC52YWx1ZSA9IGdldF9uZXh0KGNoYXIsIGluc24pOwo+ ICsgICAgICAgICAgICBpbnNuLT5kaXNwbGFjZW1lbnQubmJ5dGVzID0gMTsKPiArICAgICAgICB9 Cj4gKyAgICAgICAgZWxzZSBpZiAoIGluc24tPmFkZHJfYnl0ZXMgPT0gMiApCj4gKyAgICAgICAg ewo+ICsgICAgICAgICAgICBpZiAoIChtb2QgPT0gMCAmJiBybSA9PSA2KSB8fCBtb2QgPT0gMiAp Cj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIGluc24tPmRpc3BsYWNlbWVudC52 YWx1ZSA9IGdldF9uZXh0KHNob3J0LCBpbnNuKTsKPiArICAgICAgICAgICAgICAgIGluc24tPmRp c3BsYWNlbWVudC5uYnl0ZXMgPSAyOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsg ICAgICAgIGVsc2UKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGlmICggKG1vZCA9PSAwICYm IHJtID09IDUpIHx8IG1vZCA9PSAyIHx8IChtb2QgPT0gMCAmJiBiYXNlID09IDUpICkKPiArICAg ICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgaW5zbi0+ZGlzcGxhY2VtZW50LnZhbHVlID0g Z2V0X25leHQoaW50LCBpbnNuKTsKPiArICAgICAgICAgICAgICAgIGluc24tPmRpc3BsYWNlbWVu dC5uYnl0ZXMgPSA0Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICtv dXQ6Cj4gKyAgICBpbnNuLT5kaXNwbGFjZW1lbnQuZ290ID0gMTsKPiArCj4gK2Vycl9vdXQ6Cj4g KyAgICByZXR1cm47Cj4gK30KPiArCj4gKy8qIERlY29kZSBtb2Zmc2V0MTYvMzIvNjQuIFJldHVy biAwIGlmIGZhaWxlZCAqLwo+ICtzdGF0aWMgaW50IF9fZ2V0X21vZmZzZXQoc3RydWN0IGluc24g Kmluc24pCj4gK3sKPiArICAgIHN3aXRjaCAoIGluc24tPmFkZHJfYnl0ZXMgKQo+ICsgICAgewo+ ICsgICAgY2FzZSAyOgo+ICsgICAgICAgIGluc24tPm1vZmZzZXQxLnZhbHVlID0gZ2V0X25leHQo c2hvcnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPm1vZmZzZXQxLm5ieXRlcyA9IDI7Cj4gKyAg ICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIDQ6Cj4gKyAgICAgICAgaW5zbi0+bW9mZnNldDEudmFs dWUgPSBnZXRfbmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPm1vZmZzZXQxLm5ieXRl cyA9IDQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIDg6Cj4gKyAgICAgICAgaW5zbi0+ bW9mZnNldDEudmFsdWUgPSBnZXRfbmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPm1v ZmZzZXQxLm5ieXRlcyA9IDQ7Cj4gKyAgICAgICAgaW5zbi0+bW9mZnNldDIudmFsdWUgPSBnZXRf bmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPm1vZmZzZXQyLm5ieXRlcyA9IDQ7Cj4g KyAgICAgICAgYnJlYWs7Cj4gKyAgICBkZWZhdWx0OiAvKiBvcG5kX2J5dGVzIG11c3QgYmUgbW9k aWZpZWQgbWFudWFsbHkgKi8KPiArICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gKyAgICB9Cj4gKyAg ICBpbnNuLT5tb2Zmc2V0MS5nb3QgPSBpbnNuLT5tb2Zmc2V0Mi5nb3QgPSAxOwo+ICsKPiArICAg IHJldHVybiAxOwo+ICsKPiArZXJyX291dDoKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsv KiBEZWNvZGUgaW1tIHYzMihJeikuIFJldHVybiAwIGlmIGZhaWxlZCAqLwo+ICtzdGF0aWMgaW50 IF9fZ2V0X2ltbXYzMihzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgc3dpdGNoICggaW5z bi0+b3BuZF9ieXRlcyApCj4gKyAgICB7Cj4gKyAgICBjYXNlIDI6Cj4gKyAgICAgICAgaW5zbi0+ aW1tZWRpYXRlLnZhbHVlID0gZ2V0X25leHQoc2hvcnQsIGluc24pOwo+ICsgICAgICAgIGluc24t PmltbWVkaWF0ZS5uYnl0ZXMgPSAyOwo+ICsgICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSA0Ogo+ ICsgICAgY2FzZSA4Ogo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZS52YWx1ZSA9IGdldF9uZXh0 KGludCwgaW5zbik7Cj4gKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlLm5ieXRlcyA9IDQ7Cj4gKyAg ICAgICAgYnJlYWs7Cj4gKyAgICBkZWZhdWx0OiAvKiBvcG5kX2J5dGVzIG11c3QgYmUgbW9kaWZp ZWQgbWFudWFsbHkgKi8KPiArICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gKyAgICB9Cj4gKwo+ICsg ICAgcmV0dXJuIDE7Cj4gKwo+ICtlcnJfb3V0Ogo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g Ky8qIERlY29kZSBpbW0gdjY0KEl2L092KSwgUmV0dXJuIDAgaWYgZmFpbGVkICovCj4gK3N0YXRp YyBpbnQgX19nZXRfaW1tdihzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgc3dpdGNoICgg aW5zbi0+b3BuZF9ieXRlcyApCj4gKyAgICB7Cj4gKyAgICBjYXNlIDI6Cj4gKyAgICAgICAgaW5z bi0+aW1tZWRpYXRlMS52YWx1ZSA9IGdldF9uZXh0KHNob3J0LCBpbnNuKTsKPiArICAgICAgICBp bnNuLT5pbW1lZGlhdGUxLm5ieXRlcyA9IDI7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNl IDQ6Cj4gKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlMS52YWx1ZSA9IGdldF9uZXh0KGludCwgaW5z bik7Cj4gKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlMS5uYnl0ZXMgPSA0Owo+ICsgICAgICAgIGJy ZWFrOwo+ICsgICAgY2FzZSA4Ogo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZTEudmFsdWUgPSBn ZXRfbmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZTEubmJ5dGVzID0g NDsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLnZhbHVlID0gZ2V0X25leHQoaW50LCBpbnNu KTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLm5ieXRlcyA9IDQ7Cj4gKyAgICAgICAgYnJl YWs7Cj4gKyAgICBkZWZhdWx0OiAvKiBvcG5kX2J5dGVzIG11c3QgYmUgbW9kaWZpZWQgbWFudWFs bHkgKi8KPiArICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gKyAgICB9Cj4gKyAgICBpbnNuLT5pbW1l ZGlhdGUxLmdvdCA9IGluc24tPmltbWVkaWF0ZTIuZ290ID0gMTsKPiArCj4gKyAgICByZXR1cm4g MTsKPiArZXJyX291dDoKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKiBEZWNvZGUgcHRy MTY6MTYvMzIoQXApICovCj4gK3N0YXRpYyBpbnQgX19nZXRfaW1tcHRyKHN0cnVjdCBpbnNuICpp bnNuKQo+ICt7Cj4gKyAgICBzd2l0Y2ggKCBpbnNuLT5vcG5kX2J5dGVzICkKPiArICAgIHsKPiAr ICAgIGNhc2UgMjoKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUxLnZhbHVlID0gZ2V0X25leHQo c2hvcnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZTEubmJ5dGVzID0gMjsKPiAr ICAgICAgICBicmVhazsKPiArICAgIGNhc2UgNDoKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUx LnZhbHVlID0gZ2V0X25leHQoaW50LCBpbnNuKTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUx Lm5ieXRlcyA9IDQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIDg6Cj4gKyAgICAgICAg LyogcHRyMTY6NjQgaXMgbm90IGV4aXN0IChubyBzZWdtZW50KSAqLwo+ICsgICAgICAgIHJldHVy biAwOwo+ICsgICAgZGVmYXVsdDogLyogb3BuZF9ieXRlcyBtdXN0IGJlIG1vZGlmaWVkIG1hbnVh bGx5ICovCj4gKyAgICAgICAgZ290byBlcnJfb3V0Owo+ICsgICAgfQo+ICsgICAgaW5zbi0+aW1t ZWRpYXRlMi52YWx1ZSA9IGdldF9uZXh0KHVuc2lnbmVkIHNob3J0LCBpbnNuKTsKPiArICAgIGlu c24tPmltbWVkaWF0ZTIubmJ5dGVzID0gMjsKPiArICAgIGluc24tPmltbWVkaWF0ZTEuZ290ID0g aW5zbi0+aW1tZWRpYXRlMi5nb3QgPSAxOwo+ICsKPiArICAgIHJldHVybiAxOwo+ICtlcnJfb3V0 Ogo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnNuX2dldF9pbW1lZGlh dGUoKSAtIEdldCB0aGUgaW1tZWRpYXRlcyBvZiBpbnN0cnVjdGlvbgo+ICsgKiBAaW5zbjoJJnN0 cnVjdCBpbnNuIGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb24KPiArICoKPiArICogSWYgbmVjZXNzYXJ5 LCBmaXJzdCBjb2xsZWN0cyB0aGUgaW5zdHJ1Y3Rpb24gdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUK PiArICogZGlzcGxhY2VtZW50IGJ5dGVzLgo+ICsgKiBCYXNpY2FsbHksIG1vc3Qgb2YgaW1tZWRp YXRlcyBhcmUgc2lnbi1leHBhbmRlZC4gVW5zaWduZWQtdmFsdWUgY2FuIGJlCj4gKyAqIGdldCBi eSBiaXQgbWFza2luZyB3aXRoICgoMSA8PCAobmJ5dGVzICogOCkpIC0gMSkKPiArICovCj4gK3Zv aWQgaW5zbl9nZXRfaW1tZWRpYXRlKHN0cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBpZiAo IGluc24tPmltbWVkaWF0ZS5nb3QgKQo+ICsgICAgICAgIHJldHVybjsKPiArICAgIGlmICggIWlu c24tPmRpc3BsYWNlbWVudC5nb3QgKQo+ICsgICAgICAgIGluc25fZ2V0X2Rpc3BsYWNlbWVudChp bnNuKTsKPiArCj4gKyAgICBpZiAoIGluYXRfaGFzX21vZmZzZXQoaW5zbi0+YXR0cikgKQo+ICsg ICAgewo+ICsgICAgICAgIGlmICggIV9fZ2V0X21vZmZzZXQoaW5zbikgKQo+ICsgICAgICAgICAg ICBnb3RvIGVycl9vdXQ7Cj4gKyAgICAgICAgZ290byBkb25lOwo+ICsgICAgfQo+ICsKPiArICAg IGlmICggIWluYXRfaGFzX2ltbWVkaWF0ZShpbnNuLT5hdHRyKSApCj4gKyAgICAgICAgLyogbm8g aW1tZWRpYXRlcyAqLwo+ICsgICAgICAgIGdvdG8gZG9uZTsKPiArCj4gKyAgICBzd2l0Y2ggKCBp bmF0X2ltbWVkaWF0ZV9zaXplKGluc24tPmF0dHIpICkKPiArICAgIHsKPiArICAgIGNhc2UgSU5B VF9JTU1fQllURToKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUudmFsdWUgPSBnZXRfbmV4dChj aGFyLCBpbnNuKTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUubmJ5dGVzID0gMTsKPiArICAg ICAgICBicmVhazsKPiArICAgIGNhc2UgSU5BVF9JTU1fV09SRDoKPiArICAgICAgICBpbnNuLT5p bW1lZGlhdGUudmFsdWUgPSBnZXRfbmV4dChzaG9ydCwgaW5zbik7Cj4gKyAgICAgICAgaW5zbi0+ aW1tZWRpYXRlLm5ieXRlcyA9IDI7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIElOQVRf SU1NX0RXT1JEOgo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZS52YWx1ZSA9IGdldF9uZXh0KGlu dCwgaW5zbik7Cj4gKyAgICAgICAgaW5zbi0+aW1tZWRpYXRlLm5ieXRlcyA9IDQ7Cj4gKyAgICAg ICAgYnJlYWs7Cj4gKyAgICBjYXNlIElOQVRfSU1NX1FXT1JEOgo+ICsgICAgICAgIGluc24tPmlt bWVkaWF0ZTEudmFsdWUgPSBnZXRfbmV4dChpbnQsIGluc24pOwo+ICsgICAgICAgIGluc24tPmlt bWVkaWF0ZTEubmJ5dGVzID0gNDsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLnZhbHVlID0g Z2V0X25leHQoaW50LCBpbnNuKTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLm5ieXRlcyA9 IDQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIElOQVRfSU1NX1BUUjoKPiArICAgICAg ICBpZiAoICFfX2dldF9pbW1wdHIoaW5zbikgKQo+ICsgICAgICAgICAgICBnb3RvIGVycl9vdXQ7 Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIElOQVRfSU1NX1ZXT1JEMzI6Cj4gKyAgICAg ICAgaWYgKCAhX19nZXRfaW1tdjMyKGluc24pICkKPiArICAgICAgICAgICAgZ290byBlcnJfb3V0 Owo+ICsgICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSBJTkFUX0lNTV9WV09SRDoKPiArICAgICAg ICBpZiAoICFfX2dldF9pbW12KGluc24pICkKPiArICAgICAgICAgICAgZ290byBlcnJfb3V0Owo+ ICsgICAgICAgIGJyZWFrOwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICAvKiBIZXJlLCBpbnNu IG11c3QgaGF2ZSBhbiBpbW1lZGlhdGUsIGJ1dCBmYWlsZWQgKi8KPiArICAgICAgICBnb3RvIGVy cl9vdXQ7Cj4gKyAgICB9Cj4gKyAgICBpZiAoIGluYXRfaGFzX3NlY29uZF9pbW1lZGlhdGUoaW5z bi0+YXR0cikgKQo+ICsgICAgewo+ICsgICAgICAgIGluc24tPmltbWVkaWF0ZTIudmFsdWUgPSBn ZXRfbmV4dChjaGFyLCBpbnNuKTsKPiArICAgICAgICBpbnNuLT5pbW1lZGlhdGUyLm5ieXRlcyA9 IDE7Cj4gKyAgICB9Cj4gK2RvbmU6Cj4gKyAgICBpbnNuLT5pbW1lZGlhdGUuZ290ID0gMTsKPiAr Cj4gK2Vycl9vdXQ6Cj4gKyAgICByZXR1cm47Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnNuX2dl dF9sZW5ndGgoKSAtIEdldCB0aGUgbGVuZ3RoIG9mIGluc3RydWN0aW9uCj4gKyAqIEBpbnNuOgkm c3RydWN0IGluc24gY29udGFpbmluZyBpbnN0cnVjdGlvbgo+ICsgKgo+ICsgKiBJZiBuZWNlc3Nh cnksIGZpcnN0IGNvbGxlY3RzIHRoZSBpbnN0cnVjdGlvbiB1cCB0byBhbmQgaW5jbHVkaW5nIHRo ZQo+ICsgKiBpbW1lZGlhdGVzIGJ5dGVzLgo+ICsgKi8KPiArdm9pZCBpbnNuX2dldF9sZW5ndGgo c3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIGlmICggaW5zbi0+bGVuZ3RoICkKPiArICAg ICAgICByZXR1cm47Cj4gKyAgICBpZiAoICFpbnNuLT5pbW1lZGlhdGUuZ290ICkKPiArICAgICAg ICBpbnNuX2dldF9pbW1lZGlhdGUoaW5zbik7Cj4gKyAgICBpbnNuLT5sZW5ndGggPSAodW5zaWdu ZWQgY2hhcikoKHVuc2lnbmVkIGxvbmcpaW5zbi0+bmV4dF9ieXRlIC0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylpbnNuLT5rYWRkcik7Cj4gK30K PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1vcGNvZGUtbWFwLnR4 dCBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODYtb3Bjb2RlLW1hcC50eHQKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjFhMmJlN2MKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Ni1vcGNvZGUtbWFwLnR4dAo+IEBAIC0w LDAgKzEsOTYxIEBACj4gKyMgeDg2IE9wY29kZSBNYXBzCj4gKyMKPiArIyBUaGlzIGlzIChtb3N0 bHkpIGJhc2VkIG9uIGZvbGxvd2luZyBkb2N1bWVudGF0aW9ucy4KPiArIyAtIEludGVsKFIpIDY0 IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlcidzIE1hbnVhbCBWb2wu MkMKPiArIyAgICgjMzI2MDE4LTA0N1VTLCBKdW5lIDIwMTMpCj4gKyMKPiArIzxPcGNvZGUgbWFw cz4KPiArIyBUYWJsZTogdGFibGUtbmFtZQo+ICsjIFJlZmVycmVyOiBlc2NhcGVkLW5hbWUKPiAr IyBBVlhjb2RlOiBhdngtY29kZQo+ICsjIG9wY29kZTogbW5lbW9uaWN8R3JwWFhYIFtvcGVyYW5k MVssb3BlcmFuZDIuLi5dXSBbKGV4dHJhMSlbLChleHRyYTIpLi4uXSBbfCAybmQtbW5lbW9uaWMg Li4uXQo+ICsjIChvcikKPiArIyBvcGNvZGU6IGVzY2FwZSAjIGVzY2FwZWQtbmFtZQo+ICsjIEVu ZFRhYmxlCj4gKyMKPiArIzxncm91cCBtYXBzPgo+ICsjIEdycFRhYmxlOiBHcnBYWFgKPiArIyBy ZWc6ICBtbmVtb25pYyBbb3BlcmFuZDFbLG9wZXJhbmQyLi4uXV0gWyhleHRyYTEpWywoZXh0cmEy KS4uLl0gW3wgMm5kLW1uZW1vbmljIC4uLl0KPiArIyBFbmRUYWJsZQo+ICsjCj4gKyMgQVZYIFN1 cGVyc2NyaXB0cwo+ICsjICAodik6IHRoaXMgb3Bjb2RlIHJlcXVpcmVzIFZFWCBwcmVmaXguCj4g KyMgICh2MSk6IHRoaXMgb3Bjb2RlIG9ubHkgc3VwcG9ydHMgMTI4Yml0IFZFWC4KPiArIwo+ICsj IExhc3QgUHJlZml4IFN1cGVyc2NyaXB0cwo+ICsjICAtICg2Nik6IHRoZSBsYXN0IHByZWZpeCBp cyAweDY2Cj4gKyMgIC0gKEYzKTogdGhlIGxhc3QgcHJlZml4IGlzIDB4RjMKPiArIyAgLSAoRjIp OiB0aGUgbGFzdCBwcmVmaXggaXMgMHhGMgo+ICsjICAtICghRjMpIDogdGhlIGxhc3QgcHJlZml4 IGlzIG5vdCAweEYzIChpbmNsdWRpbmcgbm9uLWxhc3QgcHJlZml4IGNhc2UpCj4gKyMgIC0gKDY2 JkYyKTogQm90aCAweDY2IGFuZCAweEYyIHByZWZpeGVzIGFyZSBzcGVjaWZpZWQuCj4gKwo+ICtU YWJsZTogb25lIGJ5dGUgb3Bjb2RlCj4gK1JlZmVycmVyOgo+ICtBVlhjb2RlOgo+ICsjIDB4MDAg LSAweDBmCj4gKzAwOiBBREQgRWIsR2IKPiArMDE6IEFERCBFdixHdgo+ICswMjogQUREIEdiLEVi Cj4gKzAzOiBBREQgR3YsRXYKPiArMDQ6IEFERCBBTCxJYgo+ICswNTogQUREIHJBWCxJego+ICsw NjogUFVTSCBFUyAoaTY0KQo+ICswNzogUE9QIEVTIChpNjQpCj4gKzA4OiBPUiBFYixHYgo+ICsw OTogT1IgRXYsR3YKPiArMGE6IE9SIEdiLEViCj4gKzBiOiBPUiBHdixFdgo+ICswYzogT1IgQUws SWIKPiArMGQ6IE9SIHJBWCxJego+ICswZTogUFVTSCBDUyAoaTY0KQo+ICswZjogZXNjYXBlICMg Mi1ieXRlIGVzY2FwZQo+ICsjIDB4MTAgLSAweDFmCj4gKzEwOiBBREMgRWIsR2IKPiArMTE6IEFE QyBFdixHdgo+ICsxMjogQURDIEdiLEViCj4gKzEzOiBBREMgR3YsRXYKPiArMTQ6IEFEQyBBTCxJ Ygo+ICsxNTogQURDIHJBWCxJego+ICsxNjogUFVTSCBTUyAoaTY0KQo+ICsxNzogUE9QIFNTIChp NjQpCj4gKzE4OiBTQkIgRWIsR2IKPiArMTk6IFNCQiBFdixHdgo+ICsxYTogU0JCIEdiLEViCj4g KzFiOiBTQkIgR3YsRXYKPiArMWM6IFNCQiBBTCxJYgo+ICsxZDogU0JCIHJBWCxJego+ICsxZTog UFVTSCBEUyAoaTY0KQo+ICsxZjogUE9QIERTIChpNjQpCj4gKyMgMHgyMCAtIDB4MmYKPiArMjA6 IEFORCBFYixHYgo+ICsyMTogQU5EIEV2LEd2Cj4gKzIyOiBBTkQgR2IsRWIKPiArMjM6IEFORCBH dixFdgo+ICsyNDogQU5EIEFMLEliCj4gKzI1OiBBTkQgckF4LEl6Cj4gKzI2OiBTRUc9RVMgKFBy ZWZpeCkKPiArMjc6IERBQSAoaTY0KQo+ICsyODogU1VCIEViLEdiCj4gKzI5OiBTVUIgRXYsR3YK PiArMmE6IFNVQiBHYixFYgo+ICsyYjogU1VCIEd2LEV2Cj4gKzJjOiBTVUIgQUwsSWIKPiArMmQ6 IFNVQiByQVgsSXoKPiArMmU6IFNFRz1DUyAoUHJlZml4KQo+ICsyZjogREFTIChpNjQpCj4gKyMg MHgzMCAtIDB4M2YKPiArMzA6IFhPUiBFYixHYgo+ICszMTogWE9SIEV2LEd2Cj4gKzMyOiBYT1Ig R2IsRWIKPiArMzM6IFhPUiBHdixFdgo+ICszNDogWE9SIEFMLEliCj4gKzM1OiBYT1IgckFYLEl6 Cj4gKzM2OiBTRUc9U1MgKFByZWZpeCkKPiArMzc6IEFBQSAoaTY0KQo+ICszODogQ01QIEViLEdi Cj4gKzM5OiBDTVAgRXYsR3YKPiArM2E6IENNUCBHYixFYgo+ICszYjogQ01QIEd2LEV2Cj4gKzNj OiBDTVAgQUwsSWIKPiArM2Q6IENNUCByQVgsSXoKPiArM2U6IFNFRz1EUyAoUHJlZml4KQo+ICsz ZjogQUFTIChpNjQpCj4gKyMgMHg0MCAtIDB4NGYKPiArNDA6IElOQyBlQVggKGk2NCkgfCBSRVgg KG82NCkKPiArNDE6IElOQyBlQ1ggKGk2NCkgfCBSRVguQiAobzY0KQo+ICs0MjogSU5DIGVEWCAo aTY0KSB8IFJFWC5YIChvNjQpCj4gKzQzOiBJTkMgZUJYIChpNjQpIHwgUkVYLlhCIChvNjQpCj4g KzQ0OiBJTkMgZVNQIChpNjQpIHwgUkVYLlIgKG82NCkKPiArNDU6IElOQyBlQlAgKGk2NCkgfCBS RVguUkIgKG82NCkKPiArNDY6IElOQyBlU0kgKGk2NCkgfCBSRVguUlggKG82NCkKPiArNDc6IElO QyBlREkgKGk2NCkgfCBSRVguUlhCIChvNjQpCj4gKzQ4OiBERUMgZUFYIChpNjQpIHwgUkVYLlcg KG82NCkKPiArNDk6IERFQyBlQ1ggKGk2NCkgfCBSRVguV0IgKG82NCkKPiArNGE6IERFQyBlRFgg KGk2NCkgfCBSRVguV1ggKG82NCkKPiArNGI6IERFQyBlQlggKGk2NCkgfCBSRVguV1hCIChvNjQp Cj4gKzRjOiBERUMgZVNQIChpNjQpIHwgUkVYLldSIChvNjQpCj4gKzRkOiBERUMgZUJQIChpNjQp IHwgUkVYLldSQiAobzY0KQo+ICs0ZTogREVDIGVTSSAoaTY0KSB8IFJFWC5XUlggKG82NCkKPiAr NGY6IERFQyBlREkgKGk2NCkgfCBSRVguV1JYQiAobzY0KQo+ICsjIDB4NTAgLSAweDVmCj4gKzUw OiBQVVNIIHJBWC9yOCAoZDY0KQo+ICs1MTogUFVTSCByQ1gvcjkgKGQ2NCkKPiArNTI6IFBVU0gg ckRYL3IxMCAoZDY0KQo+ICs1MzogUFVTSCByQlgvcjExIChkNjQpCj4gKzU0OiBQVVNIIHJTUC9y MTIgKGQ2NCkKPiArNTU6IFBVU0ggckJQL3IxMyAoZDY0KQo+ICs1NjogUFVTSCByU0kvcjE0IChk NjQpCj4gKzU3OiBQVVNIIHJESS9yMTUgKGQ2NCkKPiArNTg6IFBPUCByQVgvcjggKGQ2NCkKPiAr NTk6IFBPUCByQ1gvcjkgKGQ2NCkKPiArNWE6IFBPUCByRFgvcjEwIChkNjQpCj4gKzViOiBQT1Ag ckJYL3IxMSAoZDY0KQo+ICs1YzogUE9QIHJTUC9yMTIgKGQ2NCkKPiArNWQ6IFBPUCByQlAvcjEz IChkNjQpCj4gKzVlOiBQT1AgclNJL3IxNCAoZDY0KQo+ICs1ZjogUE9QIHJESS9yMTUgKGQ2NCkK PiArIyAweDYwIC0gMHg2Zgo+ICs2MDogUFVTSEEvUFVTSEFEIChpNjQpCj4gKzYxOiBQT1BBL1BP UEFEIChpNjQpCj4gKzYyOiBCT1VORCBHdixNYSAoaTY0KQo+ICs2MzogQVJQTCBFdyxHdyAoaTY0 KSB8IE1PVlNYRCBHdixFdiAobzY0KQo+ICs2NDogU0VHPUZTIChQcmVmaXgpCj4gKzY1OiBTRUc9 R1MgKFByZWZpeCkKPiArNjY6IE9wZXJhbmQtU2l6ZSAoUHJlZml4KQo+ICs2NzogQWRkcmVzcy1T aXplIChQcmVmaXgpCj4gKzY4OiBQVVNIIEl6IChkNjQpCj4gKzY5OiBJTVVMIEd2LEV2LEl6Cj4g KzZhOiBQVVNIIEliIChkNjQpCj4gKzZiOiBJTVVMIEd2LEV2LEliCj4gKzZjOiBJTlMvSU5TQiBZ YixEWAo+ICs2ZDogSU5TL0lOU1cvSU5TRCBZeixEWAo+ICs2ZTogT1VUUy9PVVRTQiBEWCxYYgo+ ICs2ZjogT1VUUy9PVVRTVy9PVVRTRCBEWCxYego+ICsjIDB4NzAgLSAweDdmCj4gKzcwOiBKTyBK Ygo+ICs3MTogSk5PIEpiCj4gKzcyOiBKQi9KTkFFL0pDIEpiCj4gKzczOiBKTkIvSkFFL0pOQyBK Ygo+ICs3NDogSlovSkUgSmIKPiArNzU6IEpOWi9KTkUgSmIKPiArNzY6IEpCRS9KTkEgSmIKPiAr Nzc6IEpOQkUvSkEgSmIKPiArNzg6IEpTIEpiCj4gKzc5OiBKTlMgSmIKPiArN2E6IEpQL0pQRSBK Ygo+ICs3YjogSk5QL0pQTyBKYgo+ICs3YzogSkwvSk5HRSBKYgo+ICs3ZDogSk5ML0pHRSBKYgo+ ICs3ZTogSkxFL0pORyBKYgo+ICs3ZjogSk5MRS9KRyBKYgo+ICsjIDB4ODAgLSAweDhmCj4gKzgw OiBHcnAxIEViLEliICgxQSkKPiArODE6IEdycDEgRXYsSXogKDFBKQo+ICs4MjogR3JwMSBFYixJ YiAoMUEpLChpNjQpCj4gKzgzOiBHcnAxIEV2LEliICgxQSkKPiArODQ6IFRFU1QgRWIsR2IKPiAr ODU6IFRFU1QgRXYsR3YKPiArODY6IFhDSEcgRWIsR2IKPiArODc6IFhDSEcgRXYsR3YKPiArODg6 IE1PViBFYixHYgo+ICs4OTogTU9WIEV2LEd2Cj4gKzhhOiBNT1YgR2IsRWIKPiArOGI6IE1PViBH dixFdgo+ICs4YzogTU9WIEV2LFN3Cj4gKzhkOiBMRUEgR3YsTQo+ICs4ZTogTU9WIFN3LEV3Cj4g KzhmOiBHcnAxQSAoMUEpIHwgUE9QIEV2IChkNjQpCj4gKyMgMHg5MCAtIDB4OWYKPiArOTA6IE5P UCB8IFBBVVNFIChGMykgfCBYQ0hHIHI4LHJBWAo+ICs5MTogWENIRyByQ1gvcjksckFYCj4gKzky OiBYQ0hHIHJEWC9yMTAsckFYCj4gKzkzOiBYQ0hHIHJCWC9yMTEsckFYCj4gKzk0OiBYQ0hHIHJT UC9yMTIsckFYCj4gKzk1OiBYQ0hHIHJCUC9yMTMsckFYCj4gKzk2OiBYQ0hHIHJTSS9yMTQsckFY Cj4gKzk3OiBYQ0hHIHJESS9yMTUsckFYCj4gKzk4OiBDQlcvQ1dERS9DRFFFCj4gKzk5OiBDV0Qv Q0RRL0NRTwo+ICs5YTogQ0FMTEYgQXAgKGk2NCkKPiArOWI6IEZXQUlUL1dBSVQKPiArOWM6IFBV U0hGL0QvUSBGdiAoZDY0KQo+ICs5ZDogUE9QRi9EL1EgRnYgKGQ2NCkKPiArOWU6IFNBSEYKPiAr OWY6IExBSEYKPiArIyAweGEwIC0gMHhhZgo+ICthMDogTU9WIEFMLE9iCj4gK2ExOiBNT1YgckFY LE92Cj4gK2EyOiBNT1YgT2IsQUwKPiArYTM6IE1PViBPdixyQVgKPiArYTQ6IE1PVlMvQiBZYixY Ygo+ICthNTogTU9WUy9XL0QvUSBZdixYdgo+ICthNjogQ01QUy9CIFhiLFliCj4gK2E3OiBDTVBT L1cvRCBYdixZdgo+ICthODogVEVTVCBBTCxJYgo+ICthOTogVEVTVCByQVgsSXoKPiArYWE6IFNU T1MvQiBZYixBTAo+ICthYjogU1RPUy9XL0QvUSBZdixyQVgKPiArYWM6IExPRFMvQiBBTCxYYgo+ ICthZDogTE9EUy9XL0QvUSByQVgsWHYKPiArYWU6IFNDQVMvQiBBTCxZYgo+ICsjIE5vdGU6IFRo ZSBNYXkgMjAxMSBJbnRlbCBtYW51YWwgc2hvd3MgWHYgZm9yIHRoZSBzZWNvbmQgcGFyYW1ldGVy IG9mIHRoZQo+ICsjIG5leHQgaW5zdHJ1Y3Rpb24gYnV0IFl2IGlzIGNvcnJlY3QKPiArYWY6IFND QVMvVy9EL1EgckFYLFl2Cj4gKyMgMHhiMCAtIDB4YmYKPiArYjA6IE1PViBBTC9SOEwsSWIKPiAr YjE6IE1PViBDTC9SOUwsSWIKPiArYjI6IE1PViBETC9SMTBMLEliCj4gK2IzOiBNT1YgQkwvUjEx TCxJYgo+ICtiNDogTU9WIEFIL1IxMkwsSWIKPiArYjU6IE1PViBDSC9SMTNMLEliCj4gK2I2OiBN T1YgREgvUjE0TCxJYgo+ICtiNzogTU9WIEJIL1IxNUwsSWIKPiArYjg6IE1PViByQVgvcjgsSXYK PiArYjk6IE1PViByQ1gvcjksSXYKPiArYmE6IE1PViByRFgvcjEwLEl2Cj4gK2JiOiBNT1YgckJY L3IxMSxJdgo+ICtiYzogTU9WIHJTUC9yMTIsSXYKPiArYmQ6IE1PViByQlAvcjEzLEl2Cj4gK2Jl OiBNT1YgclNJL3IxNCxJdgo+ICtiZjogTU9WIHJESS9yMTUsSXYKPiArIyAweGMwIC0gMHhjZgo+ ICtjMDogR3JwMiBFYixJYiAoMUEpCj4gK2MxOiBHcnAyIEV2LEliICgxQSkKPiArYzI6IFJFVE4g SXcgKGY2NCkKPiArYzM6IFJFVE4KPiArYzQ6IExFUyBHeixNcCAoaTY0KSB8IFZFWCsyYnl0ZSAo UHJlZml4KQo+ICtjNTogTERTIEd6LE1wIChpNjQpIHwgVkVYKzFieXRlIChQcmVmaXgpCj4gK2M2 OiBHcnAxMUEgRWIsSWIgKDFBKQo+ICtjNzogR3JwMTFCIEV2LEl6ICgxQSkKPiArYzg6IEVOVEVS IEl3LEliCj4gK2M5OiBMRUFWRSAoZDY0KQo+ICtjYTogUkVURiBJdwo+ICtjYjogUkVURgo+ICtj YzogSU5UMwo+ICtjZDogSU5UIEliCj4gK2NlOiBJTlRPIChpNjQpCj4gK2NmOiBJUkVUL0QvUQo+ ICsjIDB4ZDAgLSAweGRmCj4gK2QwOiBHcnAyIEViLDEgKDFBKQo+ICtkMTogR3JwMiBFdiwxICgx QSkKPiArZDI6IEdycDIgRWIsQ0wgKDFBKQo+ICtkMzogR3JwMiBFdixDTCAoMUEpCj4gK2Q0OiBB QU0gSWIgKGk2NCkKPiArZDU6IEFBRCBJYiAoaTY0KQo+ICtkNjoKPiArZDc6IFhMQVQvWExBVEIK PiArZDg6IEVTQwo+ICtkOTogRVNDCj4gK2RhOiBFU0MKPiArZGI6IEVTQwo+ICtkYzogRVNDCj4g K2RkOiBFU0MKPiArZGU6IEVTQwo+ICtkZjogRVNDCj4gKyMgMHhlMCAtIDB4ZWYKPiArZTA6IExP T1BORS9MT09QTlogSmIgKGY2NCkKPiArZTE6IExPT1BFL0xPT1BaIEpiIChmNjQpCj4gK2UyOiBM T09QIEpiIChmNjQpCj4gK2UzOiBKckNYWiBKYiAoZjY0KQo+ICtlNDogSU4gQUwsSWIKPiArZTU6 IElOIGVBWCxJYgo+ICtlNjogT1VUIEliLEFMCj4gK2U3OiBPVVQgSWIsZUFYCj4gK2U4OiBDQUxM IEp6IChmNjQpCj4gK2U5OiBKTVAtbmVhciBKeiAoZjY0KQo+ICtlYTogSk1QLWZhciBBcCAoaTY0 KQo+ICtlYjogSk1QLXNob3J0IEpiIChmNjQpCj4gK2VjOiBJTiBBTCxEWAo+ICtlZDogSU4gZUFY LERYCj4gK2VlOiBPVVQgRFgsQUwKPiArZWY6IE9VVCBEWCxlQVgKPiArIyAweGYwIC0gMHhmZgo+ ICtmMDogTE9DSyAoUHJlZml4KQo+ICtmMToKPiArZjI6IFJFUE5FIChQcmVmaXgpIHwgWEFDUVVJ UkUgKFByZWZpeCkKPiArZjM6IFJFUC9SRVBFIChQcmVmaXgpIHwgWFJFTEVBU0UgKFByZWZpeCkK PiArZjQ6IEhMVAo+ICtmNTogQ01DCj4gK2Y2OiBHcnAzXzEgRWIgKDFBKQo+ICtmNzogR3JwM18y IEV2ICgxQSkKPiArZjg6IENMQwo+ICtmOTogU1RDCj4gK2ZhOiBDTEkKPiArZmI6IFNUSQo+ICtm YzogQ0xECj4gK2ZkOiBTVEQKPiArZmU6IEdycDQgKDFBKQo+ICtmZjogR3JwNSAoMUEpCj4gK0Vu ZFRhYmxlCj4gKwo+ICtUYWJsZTogMi1ieXRlIG9wY29kZSAoMHgwZikKPiArUmVmZXJyZXI6IDIt Ynl0ZSBlc2NhcGUKPiArQVZYY29kZTogMQo+ICsjIDB4MGYgMHgwMC0weDBmCj4gKzAwOiBHcnA2 ICgxQSkKPiArMDE6IEdycDcgKDFBKQo+ICswMjogTEFSIEd2LEV3Cj4gKzAzOiBMU0wgR3YsRXcK PiArMDQ6Cj4gKzA1OiBTWVNDQUxMIChvNjQpCj4gKzA2OiBDTFRTCj4gKzA3OiBTWVNSRVQgKG82 NCkKPiArMDg6IElOVkQKPiArMDk6IFdCSU5WRAo+ICswYToKPiArMGI6IFVEMiAoMUIpCj4gKzBj Ogo+ICsjIEFNRCdzIHByZWZldGNoIGdyb3VwLiBJbnRlbCBzdXBwb3J0cyBwcmVmZXRjaHcoLzEp IG9ubHkuCj4gKzBkOiBHcnBQCj4gKzBlOiBGRU1NUwo+ICsjIDNETm93ISB1c2VzIHRoZSBsYXN0 IGltbSBieXRlIGFzIG9wY29kZSBleHRlbnNpb24uCj4gKzBmOiAzRE5vdyEgUHEsUXEsSWIKPiAr IyAweDBmIDB4MTAtMHgxZgo+ICsjIE5PVEU6IEFjY29yZGluZyB0byBJbnRlbCBTRE0gb3Bjb2Rl IG1hcCwgdm1vdnVwcyBhbmQgdm1vdnVwZCBoYXMgbm8gb3BlcmFuZHMKPiArIyBidXQgaXQgYWN0 dWFsbHkgaGFzIG9wZXJhbmRzLiBBbmQgYWxzbywgdm1vdnNzIGFuZCB2bW92c2Qgb25seSBhY2Nl cHQgMTI4Yml0Lgo+ICsjIE1PVlNTL01PVlNEIGhhcyB0b28gbWFueSBmb3JtcygzKSBvbiBTRE0u IFRoaXMgbWFwIGp1c3Qgc2hvd3MgYSB0eXBpY2FsIGZvcm0uCj4gKyMgTWFueSBBVlggaW5zdHJ1 Y3Rpb25zIGxhY2sgdjEgc3VwZXJzY3JpcHQsIGFjY29yZGluZyB0byBJbnRlbCBBVlgtUHJncmFt bWluZwo+ICsjIFJlZmVyZW5jZSBBLjEKPiArMTA6IHZtb3Z1cHMgVnBzLFdwcyB8IHZtb3Z1cGQg VnBkLFdwZCAoNjYpIHwgdm1vdnNzIFZ4LEh4LFdzcyAoRjMpLCh2MSkgfCB2bW92c2QgVngsSHgs V3NkIChGMiksKHYxKQo+ICsxMTogdm1vdnVwcyBXcHMsVnBzIHwgdm1vdnVwZCBXcGQsVnBkICg2 NikgfCB2bW92c3MgV3NzLEh4LFZzcyAoRjMpLCh2MSkgfCB2bW92c2QgV3NkLEh4LFZzZCAoRjIp LCh2MSkKPiArMTI6IHZtb3ZscHMgVnEsSHEsTXEgKHYxKSB8IHZtb3ZobHBzIFZxLEhxLFVxICh2 MSkgfCB2bW92bHBkIFZxLEhxLE1xICg2NiksKHYxKSB8IHZtb3ZzbGR1cCBWeCxXeCAoRjMpIHwg dm1vdmRkdXAgVngsV3ggKEYyKQo+ICsxMzogdm1vdmxwcyBNcSxWcSAodjEpIHwgdm1vdmxwZCBN cSxWcSAoNjYpLCh2MSkKPiArMTQ6IHZ1bnBja2xwcyBWeCxIeCxXeCB8IHZ1bnBja2xwZCBWeCxI eCxXeCAoNjYpCj4gKzE1OiB2dW5wY2tocHMgVngsSHgsV3ggfCB2dW5wY2tocGQgVngsSHgsV3gg KDY2KQo+ICsxNjogdm1vdmhwcyBWZHEsSHEsTXEgKHYxKSB8IHZtb3ZsaHBzIFZkcSxIcSxVcSAo djEpIHwgdm1vdmhwZCBWZHEsSHEsTXEgKDY2KSwodjEpIHwgdm1vdnNoZHVwIFZ4LFd4IChGMykK PiArMTc6IHZtb3ZocHMgTXEsVnEgKHYxKSB8IHZtb3ZocGQgTXEsVnEgKDY2KSwodjEpCj4gKzE4 OiBHcnAxNiAoMUEpCj4gKzE5Ogo+ICsxYTogQk5EQ0wgRXYsR3YgfCBCTkRDVSBFdixHdiB8IEJO RE1PViBHdixFdiB8IEJORExEWCBHdixFdixHdgo+ICsxYjogQk5EQ04gRXYsR3YgfCBCTkRNT1Yg RXYsR3YgfCBCTkRNSyBHdixFdiB8IEJORFNUWCBFdixHVixHdgo+ICsxYzoKPiArMWQ6Cj4gKzFl Ogo+ICsxZjogTk9QIEV2Cj4gKyMgMHgwZiAweDIwLTB4MmYKPiArMjA6IE1PViBSZCxDZAo+ICsy MTogTU9WIFJkLERkCj4gKzIyOiBNT1YgQ2QsUmQKPiArMjM6IE1PViBEZCxSZAo+ICsyNDoKPiAr MjU6Cj4gKzI2Ogo+ICsyNzoKPiArMjg6IHZtb3ZhcHMgVnBzLFdwcyB8IHZtb3ZhcGQgVnBkLFdw ZCAoNjYpCj4gKzI5OiB2bW92YXBzIFdwcyxWcHMgfCB2bW92YXBkIFdwZCxWcGQgKDY2KQo+ICsy YTogY3Z0cGkycHMgVnBzLFFwaSB8IGN2dHBpMnBkIFZwZCxRcGkgKDY2KSB8IHZjdnRzaTJzcyBW c3MsSHNzLEV5IChGMyksKHYxKSB8IHZjdnRzaTJzZCBWc2QsSHNkLEV5IChGMiksKHYxKQo+ICsy Yjogdm1vdm50cHMgTXBzLFZwcyB8IHZtb3ZudHBkIE1wZCxWcGQgKDY2KQo+ICsyYzogY3Z0dHBz MnBpIFBwaSxXcHMgfCBjdnR0cGQycGkgUHBpLFdwZCAoNjYpIHwgdmN2dHRzczJzaSBHeSxXc3Mg KEYzKSwodjEpIHwgdmN2dHRzZDJzaSBHeSxXc2QgKEYyKSwodjEpCj4gKzJkOiBjdnRwczJwaSBQ cGksV3BzIHwgY3Z0cGQycGkgUXBpLFdwZCAoNjYpIHwgdmN2dHNzMnNpIEd5LFdzcyAoRjMpLCh2 MSkgfCB2Y3Z0c2Qyc2kgR3ksV3NkIChGMiksKHYxKQo+ICsyZTogdnVjb21pc3MgVnNzLFdzcyAo djEpIHwgdnVjb21pc2QgIFZzZCxXc2QgKDY2KSwodjEpCj4gKzJmOiB2Y29taXNzIFZzcyxXc3Mg KHYxKSB8IHZjb21pc2QgIFZzZCxXc2QgKDY2KSwodjEpCj4gKyMgMHgwZiAweDMwLTB4M2YKPiAr MzA6IFdSTVNSCj4gKzMxOiBSRFRTQwo+ICszMjogUkRNU1IKPiArMzM6IFJEUE1DCj4gKzM0OiBT WVNFTlRFUgo+ICszNTogU1lTRVhJVAo+ICszNjoKPiArMzc6IEdFVFNFQwo+ICszODogZXNjYXBl ICMgMy1ieXRlIGVzY2FwZSAxCj4gKzM5Ogo+ICszYTogZXNjYXBlICMgMy1ieXRlIGVzY2FwZSAy Cj4gKzNiOgo+ICszYzoKPiArM2Q6Cj4gKzNlOgo+ICszZjoKPiArIyAweDBmIDB4NDAtMHg0Zgo+ ICs0MDogQ01PVk8gR3YsRXYKPiArNDE6IENNT1ZOTyBHdixFdgo+ICs0MjogQ01PVkIvQy9OQUUg R3YsRXYKPiArNDM6IENNT1ZBRS9OQi9OQyBHdixFdgo+ICs0NDogQ01PVkUvWiBHdixFdgo+ICs0 NTogQ01PVk5FL05aIEd2LEV2Cj4gKzQ2OiBDTU9WQkUvTkEgR3YsRXYKPiArNDc6IENNT1ZBL05C RSBHdixFdgo+ICs0ODogQ01PVlMgR3YsRXYKPiArNDk6IENNT1ZOUyBHdixFdgo+ICs0YTogQ01P VlAvUEUgR3YsRXYKPiArNGI6IENNT1ZOUC9QTyBHdixFdgo+ICs0YzogQ01PVkwvTkdFIEd2LEV2 Cj4gKzRkOiBDTU9WTkwvR0UgR3YsRXYKPiArNGU6IENNT1ZMRS9ORyBHdixFdgo+ICs0ZjogQ01P Vk5MRS9HIEd2LEV2Cj4gKyMgMHgwZiAweDUwLTB4NWYKPiArNTA6IHZtb3Ztc2twcyBHeSxVcHMg fCB2bW92bXNrcGQgR3ksVXBkICg2NikKPiArNTE6IHZzcXJ0cHMgVnBzLFdwcyB8IHZzcXJ0cGQg VnBkLFdwZCAoNjYpIHwgdnNxcnRzcyBWc3MsSHNzLFdzcyAoRjMpLCh2MSkgfCB2c3FydHNkIFZz ZCxIc2QsV3NkIChGMiksKHYxKQo+ICs1MjogdnJzcXJ0cHMgVnBzLFdwcyB8IHZyc3FydHNzIFZz cyxIc3MsV3NzIChGMyksKHYxKQo+ICs1MzogdnJjcHBzIFZwcyxXcHMgfCB2cmNwc3MgVnNzLEhz cyxXc3MgKEYzKSwodjEpCj4gKzU0OiB2YW5kcHMgVnBzLEhwcyxXcHMgfCB2YW5kcGQgVnBkLEhw ZCxXcGQgKDY2KQo+ICs1NTogdmFuZG5wcyBWcHMsSHBzLFdwcyB8IHZhbmRucGQgVnBkLEhwZCxX cGQgKDY2KQo+ICs1Njogdm9ycHMgVnBzLEhwcyxXcHMgfCB2b3JwZCBWcGQsSHBkLFdwZCAoNjYp Cj4gKzU3OiB2eG9ycHMgVnBzLEhwcyxXcHMgfCB2eG9ycGQgVnBkLEhwZCxXcGQgKDY2KQo+ICs1 ODogdmFkZHBzIFZwcyxIcHMsV3BzIHwgdmFkZHBkIFZwZCxIcGQsV3BkICg2NikgfCB2YWRkc3Mg VnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdmFkZHNkIFZzZCxIc2QsV3NkIChGMiksKHYxKQo+ICs1 OTogdm11bHBzIFZwcyxIcHMsV3BzIHwgdm11bHBkIFZwZCxIcGQsV3BkICg2NikgfCB2bXVsc3Mg VnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdm11bHNkIFZzZCxIc2QsV3NkIChGMiksKHYxKQo+ICs1 YTogdmN2dHBzMnBkIFZwZCxXcHMgfCB2Y3Z0cGQycHMgVnBzLFdwZCAoNjYpIHwgdmN2dHNzMnNk IFZzZCxIeCxXc3MgKEYzKSwodjEpIHwgdmN2dHNkMnNzIFZzcyxIeCxXc2QgKEYyKSwodjEpCj4g KzViOiB2Y3Z0ZHEycHMgVnBzLFdkcSB8IHZjdnRwczJkcSBWZHEsV3BzICg2NikgfCB2Y3Z0dHBz MmRxIFZkcSxXcHMgKEYzKQo+ICs1YzogdnN1YnBzIFZwcyxIcHMsV3BzIHwgdnN1YnBkIFZwZCxI cGQsV3BkICg2NikgfCB2c3Vic3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdnN1YnNkIFZzZCxI c2QsV3NkIChGMiksKHYxKQo+ICs1ZDogdm1pbnBzIFZwcyxIcHMsV3BzIHwgdm1pbnBkIFZwZCxI cGQsV3BkICg2NikgfCB2bWluc3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdm1pbnNkIFZzZCxI c2QsV3NkIChGMiksKHYxKQo+ICs1ZTogdmRpdnBzIFZwcyxIcHMsV3BzIHwgdmRpdnBkIFZwZCxI cGQsV3BkICg2NikgfCB2ZGl2c3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdmRpdnNkIFZzZCxI c2QsV3NkIChGMiksKHYxKQo+ICs1Zjogdm1heHBzIFZwcyxIcHMsV3BzIHwgdm1heHBkIFZwZCxI cGQsV3BkICg2NikgfCB2bWF4c3MgVnNzLEhzcyxXc3MgKEYzKSwodjEpIHwgdm1heHNkIFZzZCxI c2QsV3NkIChGMiksKHYxKQo+ICsjIDB4MGYgMHg2MC0weDZmCj4gKzYwOiBwdW5wY2tsYncgUHEs UWQgfCB2cHVucGNrbGJ3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICs2MTogcHVucGNrbHdkIFBxLFFk IHwgdnB1bnBja2x3ZCBWeCxIeCxXeCAoNjYpLCh2MSkKPiArNjI6IHB1bnBja2xkcSBQcSxRZCB8 IHZwdW5wY2tsZHEgVngsSHgsV3ggKDY2KSwodjEpCj4gKzYzOiBwYWNrc3N3YiBQcSxRcSB8IHZw YWNrc3N3YiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArNjQ6IHBjbXBndGIgUHEsUXEgfCB2cGNtcGd0 YiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArNjU6IHBjbXBndHcgUHEsUXEgfCB2cGNtcGd0dyBWeCxI eCxXeCAoNjYpLCh2MSkKPiArNjY6IHBjbXBndGQgUHEsUXEgfCB2cGNtcGd0ZCBWeCxIeCxXeCAo NjYpLCh2MSkKPiArNjc6IHBhY2t1c3diIFBxLFFxIHwgdnBhY2t1c3diIFZ4LEh4LFd4ICg2Niks KHYxKQo+ICs2ODogcHVucGNraGJ3IFBxLFFkIHwgdnB1bnBja2hidyBWeCxIeCxXeCAoNjYpLCh2 MSkKPiArNjk6IHB1bnBja2h3ZCBQcSxRZCB8IHZwdW5wY2tod2QgVngsSHgsV3ggKDY2KSwodjEp Cj4gKzZhOiBwdW5wY2toZHEgUHEsUWQgfCB2cHVucGNraGRxIFZ4LEh4LFd4ICg2NiksKHYxKQo+ ICs2YjogcGFja3NzZHcgUHEsUWQgfCB2cGFja3NzZHcgVngsSHgsV3ggKDY2KSwodjEpCj4gKzZj OiB2cHVucGNrbHFkcSBWeCxIeCxXeCAoNjYpLCh2MSkKPiArNmQ6IHZwdW5wY2tocWRxIFZ4LEh4 LFd4ICg2NiksKHYxKQo+ICs2ZTogbW92ZC9xIFBkLEV5IHwgdm1vdmQvcSBWeSxFeSAoNjYpLCh2 MSkKPiArNmY6IG1vdnEgUHEsUXEgfCB2bW92ZHFhIFZ4LFd4ICg2NikgfCB2bW92ZHF1IFZ4LFd4 IChGMykKPiArIyAweDBmIDB4NzAtMHg3Zgo+ICs3MDogcHNodWZ3IFBxLFFxLEliIHwgdnBzaHVm ZCBWeCxXeCxJYiAoNjYpLCh2MSkgfCB2cHNodWZodyBWeCxXeCxJYiAoRjMpLCh2MSkgfCB2cHNo dWZsdyBWeCxXeCxJYiAoRjIpLCh2MSkKPiArNzE6IEdycDEyICgxQSkKPiArNzI6IEdycDEzICgx QSkKPiArNzM6IEdycDE0ICgxQSkKPiArNzQ6IHBjbXBlcWIgUHEsUXEgfCB2cGNtcGVxYiBWeCxI eCxXeCAoNjYpLCh2MSkKPiArNzU6IHBjbXBlcXcgUHEsUXEgfCB2cGNtcGVxdyBWeCxIeCxXeCAo NjYpLCh2MSkKPiArNzY6IHBjbXBlcWQgUHEsUXEgfCB2cGNtcGVxZCBWeCxIeCxXeCAoNjYpLCh2 MSkKPiArIyBOb3RlOiBSZW1vdmUgKHYpLCBiZWNhdXNlIHZ6ZXJvYWxsIGFuZCB2emVyb3VwcGVy IGJlY29tZXMgZW1tcyB3aXRob3V0IFZFWC4KPiArNzc6IGVtbXMgfCB2emVyb3VwcGVyIHwgdnpl cm9hbGwKPiArNzg6IFZNUkVBRCBFeSxHeQo+ICs3OTogVk1XUklURSBHeSxFeQo+ICs3YToKPiAr N2I6Cj4gKzdjOiB2aGFkZHBkIFZwZCxIcGQsV3BkICg2NikgfCB2aGFkZHBzIFZwcyxIcHMsV3Bz IChGMikKPiArN2Q6IHZoc3VicGQgVnBkLEhwZCxXcGQgKDY2KSB8IHZoc3VicHMgVnBzLEhwcyxX cHMgKEYyKQo+ICs3ZTogbW92ZC9xIEV5LFBkIHwgdm1vdmQvcSBFeSxWeSAoNjYpLCh2MSkgfCB2 bW92cSBWcSxXcSAoRjMpLCh2MSkKPiArN2Y6IG1vdnEgUXEsUHEgfCB2bW92ZHFhIFd4LFZ4ICg2 NikgfCB2bW92ZHF1IFd4LFZ4IChGMykKPiArIyAweDBmIDB4ODAtMHg4Zgo+ICs4MDogSk8gSnog KGY2NCkKPiArODE6IEpOTyBKeiAoZjY0KQo+ICs4MjogSkIvSkMvSk5BRSBKeiAoZjY0KQo+ICs4 MzogSkFFL0pOQi9KTkMgSnogKGY2NCkKPiArODQ6IEpFL0paIEp6IChmNjQpCj4gKzg1OiBKTkUv Sk5aIEp6IChmNjQpCj4gKzg2OiBKQkUvSk5BIEp6IChmNjQpCj4gKzg3OiBKQS9KTkJFIEp6IChm NjQpCj4gKzg4OiBKUyBKeiAoZjY0KQo+ICs4OTogSk5TIEp6IChmNjQpCj4gKzhhOiBKUC9KUEUg SnogKGY2NCkKPiArOGI6IEpOUC9KUE8gSnogKGY2NCkKPiArOGM6IEpML0pOR0UgSnogKGY2NCkK PiArOGQ6IEpOTC9KR0UgSnogKGY2NCkKPiArOGU6IEpMRS9KTkcgSnogKGY2NCkKPiArOGY6IEpO TEUvSkcgSnogKGY2NCkKPiArIyAweDBmIDB4OTAtMHg5Zgo+ICs5MDogU0VUTyBFYgo+ICs5MTog U0VUTk8gRWIKPiArOTI6IFNFVEIvQy9OQUUgRWIKPiArOTM6IFNFVEFFL05CL05DIEViCj4gKzk0 OiBTRVRFL1ogRWIKPiArOTU6IFNFVE5FL05aIEViCj4gKzk2OiBTRVRCRS9OQSBFYgo+ICs5Nzog U0VUQS9OQkUgRWIKPiArOTg6IFNFVFMgRWIKPiArOTk6IFNFVE5TIEViCj4gKzlhOiBTRVRQL1BF IEViCj4gKzliOiBTRVROUC9QTyBFYgo+ICs5YzogU0VUTC9OR0UgRWIKPiArOWQ6IFNFVE5ML0dF IEViCj4gKzllOiBTRVRMRS9ORyBFYgo+ICs5ZjogU0VUTkxFL0cgRWIKPiArIyAweDBmIDB4YTAt MHhhZgo+ICthMDogUFVTSCBGUyAoZDY0KQo+ICthMTogUE9QIEZTIChkNjQpCj4gK2EyOiBDUFVJ RAo+ICthMzogQlQgRXYsR3YKPiArYTQ6IFNITEQgRXYsR3YsSWIKPiArYTU6IFNITEQgRXYsR3Ys Q0wKPiArYTY6IEdycFBETEsKPiArYTc6IEdycFJORwo+ICthODogUFVTSCBHUyAoZDY0KQo+ICth OTogUE9QIEdTIChkNjQpCj4gK2FhOiBSU00KPiArYWI6IEJUUyBFdixHdgo+ICthYzogU0hSRCBF dixHdixJYgo+ICthZDogU0hSRCBFdixHdixDTAo+ICthZTogR3JwMTUgKDFBKSwoMUMpCj4gK2Fm OiBJTVVMIEd2LEV2Cj4gKyMgMHgwZiAweGIwLTB4YmYKPiArYjA6IENNUFhDSEcgRWIsR2IKPiAr YjE6IENNUFhDSEcgRXYsR3YKPiArYjI6IExTUyBHdixNcAo+ICtiMzogQlRSIEV2LEd2Cj4gK2I0 OiBMRlMgR3YsTXAKPiArYjU6IExHUyBHdixNcAo+ICtiNjogTU9WWlggR3YsRWIKPiArYjc6IE1P VlpYIEd2LEV3Cj4gK2I4OiBKTVBFICghRjMpIHwgUE9QQ05UIEd2LEV2IChGMykKPiArYjk6IEdy cDEwICgxQSkKPiArYmE6IEdycDggRXYsSWIgKDFBKQo+ICtiYjogQlRDIEV2LEd2Cj4gK2JjOiBC U0YgR3YsRXYgKCFGMykgfCBUWkNOVCBHdixFdiAoRjMpCj4gK2JkOiBCU1IgR3YsRXYgKCFGMykg fCBMWkNOVCBHdixFdiAoRjMpCj4gK2JlOiBNT1ZTWCBHdixFYgo+ICtiZjogTU9WU1ggR3YsRXcK PiArIyAweDBmIDB4YzAtMHhjZgo+ICtjMDogWEFERCBFYixHYgo+ICtjMTogWEFERCBFdixHdgo+ ICtjMjogdmNtcHBzIFZwcyxIcHMsV3BzLEliIHwgdmNtcHBkIFZwZCxIcGQsV3BkLEliICg2Nikg fCB2Y21wc3MgVnNzLEhzcyxXc3MsSWIgKEYzKSwodjEpIHwgdmNtcHNkIFZzZCxIc2QsV3NkLEli IChGMiksKHYxKQo+ICtjMzogbW92bnRpIE15LEd5Cj4gK2M0OiBwaW5zcncgUHEsUnkvTXcsSWIg fCB2cGluc3J3IFZkcSxIZHEsUnkvTXcsSWIgKDY2KSwodjEpCj4gK2M1OiBwZXh0cncgR2QsTnEs SWIgfCB2cGV4dHJ3IEdkLFVkcSxJYiAoNjYpLCh2MSkKPiArYzY6IHZzaHVmcHMgVnBzLEhwcyxX cHMsSWIgfCB2c2h1ZnBkIFZwZCxIcGQsV3BkLEliICg2NikKPiArYzc6IEdycDkgKDFBKQo+ICtj ODogQlNXQVAgUkFYL0VBWC9SOC9SOEQKPiArYzk6IEJTV0FQIFJDWC9FQ1gvUjkvUjlECj4gK2Nh OiBCU1dBUCBSRFgvRURYL1IxMC9SMTBECj4gK2NiOiBCU1dBUCBSQlgvRUJYL1IxMS9SMTFECj4g K2NjOiBCU1dBUCBSU1AvRVNQL1IxMi9SMTJECj4gK2NkOiBCU1dBUCBSQlAvRUJQL1IxMy9SMTNE Cj4gK2NlOiBCU1dBUCBSU0kvRVNJL1IxNC9SMTRECj4gK2NmOiBCU1dBUCBSREkvRURJL1IxNS9S MTVECj4gKyMgMHgwZiAweGQwLTB4ZGYKPiArZDA6IHZhZGRzdWJwZCBWcGQsSHBkLFdwZCAoNjYp IHwgdmFkZHN1YnBzIFZwcyxIcHMsV3BzIChGMikKPiArZDE6IHBzcmx3IFBxLFFxIHwgdnBzcmx3 IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtkMjogcHNybGQgUHEsUXEgfCB2cHNybGQgVngsSHgsV3gg KDY2KSwodjEpCj4gK2QzOiBwc3JscSBQcSxRcSB8IHZwc3JscSBWeCxIeCxXeCAoNjYpLCh2MSkK PiArZDQ6IHBhZGRxIFBxLFFxIHwgdnBhZGRxIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtkNTogcG11 bGx3IFBxLFFxIHwgdnBtdWxsdyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZDY6IHZtb3ZxIFdxLFZx ICg2NiksKHYxKSB8IG1vdnEyZHEgVmRxLE5xIChGMykgfCBtb3ZkcTJxIFBxLFVxIChGMikKPiAr ZDc6IHBtb3Ztc2tiIEdkLE5xIHwgdnBtb3Ztc2tiIEdkLFV4ICg2NiksKHYxKQo+ICtkODogcHN1 YnVzYiBQcSxRcSB8IHZwc3VidXNiIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtkOTogcHN1YnVzdyBQ cSxRcSB8IHZwc3VidXN3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtkYTogcG1pbnViIFBxLFFxIHwg dnBtaW51YiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZGI6IHBhbmQgUHEsUXEgfCB2cGFuZCBWeCxI eCxXeCAoNjYpLCh2MSkKPiArZGM6IHBhZGR1c2IgUHEsUXEgfCB2cGFkZHVzYiBWeCxIeCxXeCAo NjYpLCh2MSkKPiArZGQ6IHBhZGR1c3cgUHEsUXEgfCB2cGFkZHVzdyBWeCxIeCxXeCAoNjYpLCh2 MSkKPiArZGU6IHBtYXh1YiBQcSxRcSB8IHZwbWF4dWIgVngsSHgsV3ggKDY2KSwodjEpCj4gK2Rm OiBwYW5kbiBQcSxRcSB8IHZwYW5kbiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArIyAweDBmIDB4ZTAt MHhlZgo+ICtlMDogcGF2Z2IgUHEsUXEgfCB2cGF2Z2IgVngsSHgsV3ggKDY2KSwodjEpCj4gK2Ux OiBwc3JhdyBQcSxRcSB8IHZwc3JhdyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZTI6IHBzcmFkIFBx LFFxIHwgdnBzcmFkIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtlMzogcGF2Z3cgUHEsUXEgfCB2cGF2 Z3cgVngsSHgsV3ggKDY2KSwodjEpCj4gK2U0OiBwbXVsaHV3IFBxLFFxIHwgdnBtdWxodXcgVngs SHgsV3ggKDY2KSwodjEpCj4gK2U1OiBwbXVsaHcgUHEsUXEgfCB2cG11bGh3IFZ4LEh4LFd4ICg2 NiksKHYxKQo+ICtlNjogdmN2dHRwZDJkcSBWeCxXcGQgKDY2KSB8IHZjdnRkcTJwZCBWeCxXZHEg KEYzKSB8IHZjdnRwZDJkcSBWeCxXcGQgKEYyKQo+ICtlNzogbW92bnRxIE1xLFBxIHwgdm1vdm50 ZHEgTXgsVnggKDY2KQo+ICtlODogcHN1YnNiIFBxLFFxIHwgdnBzdWJzYiBWeCxIeCxXeCAoNjYp LCh2MSkKPiArZTk6IHBzdWJzdyBQcSxRcSB8IHZwc3Vic3cgVngsSHgsV3ggKDY2KSwodjEpCj4g K2VhOiBwbWluc3cgUHEsUXEgfCB2cG1pbnN3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtlYjogcG9y IFBxLFFxIHwgdnBvciBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZWM6IHBhZGRzYiBQcSxRcSB8IHZw YWRkc2IgVngsSHgsV3ggKDY2KSwodjEpCj4gK2VkOiBwYWRkc3cgUHEsUXEgfCB2cGFkZHN3IFZ4 LEh4LFd4ICg2NiksKHYxKQo+ICtlZTogcG1heHN3IFBxLFFxIHwgdnBtYXhzdyBWeCxIeCxXeCAo NjYpLCh2MSkKPiArZWY6IHB4b3IgUHEsUXEgfCB2cHhvciBWeCxIeCxXeCAoNjYpLCh2MSkKPiAr IyAweDBmIDB4ZjAtMHhmZgo+ICtmMDogdmxkZHF1IFZ4LE14IChGMikKPiArZjE6IHBzbGx3IFBx LFFxIHwgdnBzbGx3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtmMjogcHNsbGQgUHEsUXEgfCB2cHNs bGQgVngsSHgsV3ggKDY2KSwodjEpCj4gK2YzOiBwc2xscSBQcSxRcSB8IHZwc2xscSBWeCxIeCxX eCAoNjYpLCh2MSkKPiArZjQ6IHBtdWx1ZHEgUHEsUXEgfCB2cG11bHVkcSBWeCxIeCxXeCAoNjYp LCh2MSkKPiArZjU6IHBtYWRkd2QgUHEsUXEgfCB2cG1hZGR3ZCBWeCxIeCxXeCAoNjYpLCh2MSkK PiArZjY6IHBzYWRidyBQcSxRcSB8IHZwc2FkYncgVngsSHgsV3ggKDY2KSwodjEpCj4gK2Y3OiBt YXNrbW92cSBQcSxOcSB8IHZtYXNrbW92ZHF1IFZ4LFV4ICg2NiksKHYxKQo+ICtmODogcHN1YmIg UHEsUXEgfCB2cHN1YmIgVngsSHgsV3ggKDY2KSwodjEpCj4gK2Y5OiBwc3VidyBQcSxRcSB8IHZw c3VidyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZmE6IHBzdWJkIFBxLFFxIHwgdnBzdWJkIFZ4LEh4 LFd4ICg2NiksKHYxKQo+ICtmYjogcHN1YnEgUHEsUXEgfCB2cHN1YnEgVngsSHgsV3ggKDY2KSwo djEpCj4gK2ZjOiBwYWRkYiBQcSxRcSB8IHZwYWRkYiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArZmQ6 IHBhZGR3IFBxLFFxIHwgdnBhZGR3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICtmZTogcGFkZGQgUHEs UXEgfCB2cGFkZGQgVngsSHgsV3ggKDY2KSwodjEpCj4gK2ZmOgo+ICtFbmRUYWJsZQo+ICsKPiAr VGFibGU6IDMtYnl0ZSBvcGNvZGUgMSAoMHgwZiAweDM4KQo+ICtSZWZlcnJlcjogMy1ieXRlIGVz Y2FwZSAxCj4gK0FWWGNvZGU6IDIKPiArIyAweDBmIDB4MzggMHgwMC0weDBmCj4gKzAwOiBwc2h1 ZmIgUHEsUXEgfCB2cHNodWZiIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICswMTogcGhhZGR3IFBxLFFx IHwgdnBoYWRkdyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArMDI6IHBoYWRkZCBQcSxRcSB8IHZwaGFk ZGQgVngsSHgsV3ggKDY2KSwodjEpCj4gKzAzOiBwaGFkZHN3IFBxLFFxIHwgdnBoYWRkc3cgVngs SHgsV3ggKDY2KSwodjEpCj4gKzA0OiBwbWFkZHVic3cgUHEsUXEgfCB2cG1hZGR1YnN3IFZ4LEh4 LFd4ICg2NiksKHYxKQo+ICswNTogcGhzdWJ3IFBxLFFxIHwgdnBoc3VidyBWeCxIeCxXeCAoNjYp LCh2MSkKPiArMDY6IHBoc3ViZCBQcSxRcSB8IHZwaHN1YmQgVngsSHgsV3ggKDY2KSwodjEpCj4g KzA3OiBwaHN1YnN3IFBxLFFxIHwgdnBoc3Vic3cgVngsSHgsV3ggKDY2KSwodjEpCj4gKzA4OiBw c2lnbmIgUHEsUXEgfCB2cHNpZ25iIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICswOTogcHNpZ253IFBx LFFxIHwgdnBzaWdudyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArMGE6IHBzaWduZCBQcSxRcSB8IHZw c2lnbmQgVngsSHgsV3ggKDY2KSwodjEpCj4gKzBiOiBwbXVsaHJzdyBQcSxRcSB8IHZwbXVsaHJz dyBWeCxIeCxXeCAoNjYpLCh2MSkKPiArMGM6IHZwZXJtaWxwcyBWeCxIeCxXeCAoNjYpLCh2KQo+ ICswZDogdnBlcm1pbHBkIFZ4LEh4LFd4ICg2NiksKHYpCj4gKzBlOiB2dGVzdHBzIFZ4LFd4ICg2 NiksKHYpCj4gKzBmOiB2dGVzdHBkIFZ4LFd4ICg2NiksKHYpCj4gKyMgMHgwZiAweDM4IDB4MTAt MHgxZgo+ICsxMDogcGJsZW5kdmIgVmRxLFdkcSAoNjYpCj4gKzExOgo+ICsxMjoKPiArMTM6IHZj dnRwaDJwcyBWeCxXeCxJYiAoNjYpLCh2KQo+ICsxNDogYmxlbmR2cHMgVmRxLFdkcSAoNjYpCj4g KzE1OiBibGVuZHZwZCBWZHEsV2RxICg2NikKPiArMTY6IHZwZXJtcHMgVnFxLEhxcSxXcXEgKDY2 KSwodikKPiArMTc6IHZwdGVzdCBWeCxXeCAoNjYpCj4gKzE4OiB2YnJvYWRjYXN0c3MgVngsV2Qg KDY2KSwodikKPiArMTk6IHZicm9hZGNhc3RzZCBWcXEsV3EgKDY2KSwodikKPiArMWE6IHZicm9h ZGNhc3RmMTI4IFZxcSxNZHEgKDY2KSwodikKPiArMWI6Cj4gKzFjOiBwYWJzYiBQcSxRcSB8IHZw YWJzYiBWeCxXeCAoNjYpLCh2MSkKPiArMWQ6IHBhYnN3IFBxLFFxIHwgdnBhYnN3IFZ4LFd4ICg2 NiksKHYxKQo+ICsxZTogcGFic2QgUHEsUXEgfCB2cGFic2QgVngsV3ggKDY2KSwodjEpCj4gKzFm Ogo+ICsjIDB4MGYgMHgzOCAweDIwLTB4MmYKPiArMjA6IHZwbW92c3hidyBWeCxVeC9NcSAoNjYp LCh2MSkKPiArMjE6IHZwbW92c3hiZCBWeCxVeC9NZCAoNjYpLCh2MSkKPiArMjI6IHZwbW92c3hi cSBWeCxVeC9NdyAoNjYpLCh2MSkKPiArMjM6IHZwbW92c3h3ZCBWeCxVeC9NcSAoNjYpLCh2MSkK PiArMjQ6IHZwbW92c3h3cSBWeCxVeC9NZCAoNjYpLCh2MSkKPiArMjU6IHZwbW92c3hkcSBWeCxV eC9NcSAoNjYpLCh2MSkKPiArMjY6Cj4gKzI3Ogo+ICsyODogdnBtdWxkcSBWeCxIeCxXeCAoNjYp LCh2MSkKPiArMjk6IHZwY21wZXFxIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICsyYTogdm1vdm50ZHFh IFZ4LE14ICg2NiksKHYxKQo+ICsyYjogdnBhY2t1c2R3IFZ4LEh4LFd4ICg2NiksKHYxKQo+ICsy Yzogdm1hc2ttb3ZwcyBWeCxIeCxNeCAoNjYpLCh2KQo+ICsyZDogdm1hc2ttb3ZwZCBWeCxIeCxN eCAoNjYpLCh2KQo+ICsyZTogdm1hc2ttb3ZwcyBNeCxIeCxWeCAoNjYpLCh2KQo+ICsyZjogdm1h c2ttb3ZwZCBNeCxIeCxWeCAoNjYpLCh2KQo+ICsjIDB4MGYgMHgzOCAweDMwLTB4M2YKPiArMzA6 IHZwbW92enhidyBWeCxVeC9NcSAoNjYpLCh2MSkKPiArMzE6IHZwbW92enhiZCBWeCxVeC9NZCAo NjYpLCh2MSkKPiArMzI6IHZwbW92enhicSBWeCxVeC9NdyAoNjYpLCh2MSkKPiArMzM6IHZwbW92 enh3ZCBWeCxVeC9NcSAoNjYpLCh2MSkKPiArMzQ6IHZwbW92enh3cSBWeCxVeC9NZCAoNjYpLCh2 MSkKPiArMzU6IHZwbW92enhkcSBWeCxVeC9NcSAoNjYpLCh2MSkKPiArMzY6IHZwZXJtZCBWcXEs SHFxLFdxcSAoNjYpLCh2KQo+ICszNzogdnBjbXBndHEgVngsSHgsV3ggKDY2KSwodjEpCj4gKzM4 OiB2cG1pbnNiIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICszOTogdnBtaW5zZCBWeCxIeCxXeCAoNjYp LCh2MSkKPiArM2E6IHZwbWludXcgVngsSHgsV3ggKDY2KSwodjEpCj4gKzNiOiB2cG1pbnVkIFZ4 LEh4LFd4ICg2NiksKHYxKQo+ICszYzogdnBtYXhzYiBWeCxIeCxXeCAoNjYpLCh2MSkKPiArM2Q6 IHZwbWF4c2QgVngsSHgsV3ggKDY2KSwodjEpCj4gKzNlOiB2cG1heHV3IFZ4LEh4LFd4ICg2Niks KHYxKQo+ICszZjogdnBtYXh1ZCBWeCxIeCxXeCAoNjYpLCh2MSkKPiArIyAweDBmIDB4MzggMHg0 MC0weDhmCj4gKzQwOiB2cG11bGxkIFZ4LEh4LFd4ICg2NiksKHYxKQo+ICs0MTogdnBobWlucG9z dXcgVmRxLFdkcSAoNjYpLCh2MSkKPiArNDI6Cj4gKzQzOgo+ICs0NDoKPiArNDU6IHZwc3JsdmQv cSBWeCxIeCxXeCAoNjYpLCh2KQo+ICs0NjogdnBzcmF2ZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICs0 NzogdnBzbGx2ZC9xIFZ4LEh4LFd4ICg2NiksKHYpCj4gKyMgU2tpcCAweDQ4LTB4NTcKPiArNTg6 IHZwYnJvYWRjYXN0ZCBWeCxXeCAoNjYpLCh2KQo+ICs1OTogdnBicm9hZGNhc3RxIFZ4LFd4ICg2 NiksKHYpCj4gKzVhOiB2YnJvYWRjYXN0aTEyOCBWcXEsTWRxICg2NiksKHYpCj4gKyMgU2tpcCAw eDViLTB4NzcKPiArNzg6IHZwYnJvYWRjYXN0YiBWeCxXeCAoNjYpLCh2KQo+ICs3OTogdnBicm9h ZGNhc3R3IFZ4LFd4ICg2NiksKHYpCj4gKyMgU2tpcCAweDdhLTB4N2YKPiArODA6IElOVkVQVCBH eSxNZHEgKDY2KQo+ICs4MTogSU5WUElEIEd5LE1kcSAoNjYpCj4gKzgyOiBJTlZQQ0lEIEd5LE1k cSAoNjYpCj4gKzhjOiB2cG1hc2ttb3ZkL3EgVngsSHgsTXggKDY2KSwodikKPiArOGU6IHZwbWFz a21vdmQvcSBNeCxWeCxIeCAoNjYpLCh2KQo+ICsjIDB4MGYgMHgzOCAweDkwLTB4YmYgKEZNQSkK PiArOTA6IHZnYXRoZXJkZC9xIFZ4LEh4LFd4ICg2NiksKHYpCj4gKzkxOiB2Z2F0aGVycWQvcSBW eCxIeCxXeCAoNjYpLCh2KQo+ICs5MjogdmdhdGhlcmRwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4g KzkzOiB2Z2F0aGVycXBzL2QgVngsSHgsV3ggKDY2KSwodikKPiArOTQ6Cj4gKzk1Ogo+ICs5Njog dmZtYWRkc3ViMTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICs5NzogdmZtc3ViYWRkMTMycHMv ZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICs5ODogdmZtYWRkMTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2 KQo+ICs5OTogdmZtYWRkMTMyc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCj4gKzlhOiB2Zm1z dWIxMzJwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4gKzliOiB2Zm1zdWIxMzJzcy9kIFZ4LEh4LFd4 ICg2NiksKHYpLCh2MSkKPiArOWM6IHZmbm1hZGQxMzJwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4g KzlkOiB2Zm5tYWRkMTMyc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCj4gKzllOiB2Zm5tc3Vi MTMycHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICs5ZjogdmZubXN1YjEzMnNzL2QgVngsSHgsV3gg KDY2KSwodiksKHYxKQo+ICthNjogdmZtYWRkc3ViMjEzcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ ICthNzogdmZtc3ViYWRkMjEzcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICthODogdmZtYWRkMjEz cHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICthOTogdmZtYWRkMjEzc3MvZCBWeCxIeCxXeCAoNjYp LCh2KSwodjEpCj4gK2FhOiB2Zm1zdWIyMTNwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4gK2FiOiB2 Zm1zdWIyMTNzcy9kIFZ4LEh4LFd4ICg2NiksKHYpLCh2MSkKPiArYWM6IHZmbm1hZGQyMTNwcy9k IFZ4LEh4LFd4ICg2NiksKHYpCj4gK2FkOiB2Zm5tYWRkMjEzc3MvZCBWeCxIeCxXeCAoNjYpLCh2 KSwodjEpCj4gK2FlOiB2Zm5tc3ViMjEzcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICthZjogdmZu bXN1YjIxM3NzL2QgVngsSHgsV3ggKDY2KSwodiksKHYxKQo+ICtiNjogdmZtYWRkc3ViMjMxcHMv ZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICtiNzogdmZtc3ViYWRkMjMxcHMvZCBWeCxIeCxXeCAoNjYp LCh2KQo+ICtiODogdmZtYWRkMjMxcHMvZCBWeCxIeCxXeCAoNjYpLCh2KQo+ICtiOTogdmZtYWRk MjMxc3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCj4gK2JhOiB2Zm1zdWIyMzFwcy9kIFZ4LEh4 LFd4ICg2NiksKHYpCj4gK2JiOiB2Zm1zdWIyMzFzcy9kIFZ4LEh4LFd4ICg2NiksKHYpLCh2MSkK PiArYmM6IHZmbm1hZGQyMzFwcy9kIFZ4LEh4LFd4ICg2NiksKHYpCj4gK2JkOiB2Zm5tYWRkMjMx c3MvZCBWeCxIeCxXeCAoNjYpLCh2KSwodjEpCj4gK2JlOiB2Zm5tc3ViMjMxcHMvZCBWeCxIeCxX eCAoNjYpLCh2KQo+ICtiZjogdmZubXN1YjIzMXNzL2QgVngsSHgsV3ggKDY2KSwodiksKHYxKQo+ ICsjIDB4MGYgMHgzOCAweGMwLTB4ZmYKPiArZGI6IFZBRVNJTUMgVmRxLFdkcSAoNjYpLCh2MSkK PiArZGM6IFZBRVNFTkMgVmRxLEhkcSxXZHEgKDY2KSwodjEpCj4gK2RkOiBWQUVTRU5DTEFTVCBW ZHEsSGRxLFdkcSAoNjYpLCh2MSkKPiArZGU6IFZBRVNERUMgVmRxLEhkcSxXZHEgKDY2KSwodjEp Cj4gK2RmOiBWQUVTREVDTEFTVCBWZHEsSGRxLFdkcSAoNjYpLCh2MSkKPiArZjA6IE1PVkJFIEd5 LE15IHwgTU9WQkUgR3csTXcgKDY2KSB8IENSQzMyIEdkLEViIChGMikgfCBDUkMzMiBHZCxFYiAo NjYmRjIpCj4gK2YxOiBNT1ZCRSBNeSxHeSB8IE1PVkJFIE13LEd3ICg2NikgfCBDUkMzMiBHZCxF eSAoRjIpIHwgQ1JDMzIgR2QsRXcgKDY2JkYyKQo+ICtmMjogQU5ETiBHeSxCeSxFeSAodikKPiAr ZjM6IEdycDE3ICgxQSkKPiArZjU6IEJaSEkgR3ksRXksQnkgKHYpIHwgUEVYVCBHeSxCeSxFeSAo RjMpLCh2KSB8IFBERVAgR3ksQnksRXkgKEYyKSwodikKPiArZjY6IEFEQ1ggR3ksRXkgKDY2KSB8 IEFET1ggR3ksRXkgKEYzKSB8IE1VTFggQnksR3ksckRYLEV5IChGMiksKHYpCj4gK2Y3OiBCRVhU UiBHeSxFeSxCeSAodikgfCBTSExYIEd5LEV5LEJ5ICg2NiksKHYpIHwgU0FSWCBHeSxFeSxCeSAo RjMpLCh2KSB8IFNIUlggR3ksRXksQnkgKEYyKSwodikKPiArRW5kVGFibGUKPiArCj4gK1RhYmxl OiAzLWJ5dGUgb3Bjb2RlIDIgKDB4MGYgMHgzYSkKPiArUmVmZXJyZXI6IDMtYnl0ZSBlc2NhcGUg Mgo+ICtBVlhjb2RlOiAzCj4gKyMgMHgwZiAweDNhIDB4MDAtMHhmZgo+ICswMDogdnBlcm1xIFZx cSxXcXEsSWIgKDY2KSwodikKPiArMDE6IHZwZXJtcGQgVnFxLFdxcSxJYiAoNjYpLCh2KQo+ICsw MjogdnBibGVuZGQgVngsSHgsV3gsSWIgKDY2KSwodikKPiArMDM6Cj4gKzA0OiB2cGVybWlscHMg VngsV3gsSWIgKDY2KSwodikKPiArMDU6IHZwZXJtaWxwZCBWeCxXeCxJYiAoNjYpLCh2KQo+ICsw NjogdnBlcm0yZjEyOCBWcXEsSHFxLFdxcSxJYiAoNjYpLCh2KQo+ICswNzoKPiArMDg6IHZyb3Vu ZHBzIFZ4LFd4LEliICg2NikKPiArMDk6IHZyb3VuZHBkIFZ4LFd4LEliICg2NikKPiArMGE6IHZy b3VuZHNzIFZzcyxXc3MsSWIgKDY2KSwodjEpCj4gKzBiOiB2cm91bmRzZCBWc2QsV3NkLEliICg2 NiksKHYxKQo+ICswYzogdmJsZW5kcHMgVngsSHgsV3gsSWIgKDY2KQo+ICswZDogdmJsZW5kcGQg VngsSHgsV3gsSWIgKDY2KQo+ICswZTogdnBibGVuZHcgVngsSHgsV3gsSWIgKDY2KSwodjEpCj4g KzBmOiBwYWxpZ25yIFBxLFFxLEliIHwgdnBhbGlnbnIgVngsSHgsV3gsSWIgKDY2KSwodjEpCj4g KzE0OiB2cGV4dHJiIFJkL01iLFZkcSxJYiAoNjYpLCh2MSkKPiArMTU6IHZwZXh0cncgUmQvTXcs VmRxLEliICg2NiksKHYxKQo+ICsxNjogdnBleHRyZC9xIEV5LFZkcSxJYiAoNjYpLCh2MSkKPiAr MTc6IHZleHRyYWN0cHMgRWQsVmRxLEliICg2NiksKHYxKQo+ICsxODogdmluc2VydGYxMjggVnFx LEhxcSxXcXEsSWIgKDY2KSwodikKPiArMTk6IHZleHRyYWN0ZjEyOCBXZHEsVnFxLEliICg2Niks KHYpCj4gKzFkOiB2Y3Z0cHMycGggV3gsVngsSWIgKDY2KSwodikKPiArMjA6IHZwaW5zcmIgVmRx LEhkcSxSeS9NYixJYiAoNjYpLCh2MSkKPiArMjE6IHZpbnNlcnRwcyBWZHEsSGRxLFVkcS9NZCxJ YiAoNjYpLCh2MSkKPiArMjI6IHZwaW5zcmQvcSBWZHEsSGRxLEV5LEliICg2NiksKHYxKQo+ICsz ODogdmluc2VydGkxMjggVnFxLEhxcSxXcXEsSWIgKDY2KSwodikKPiArMzk6IHZleHRyYWN0aTEy OCBXZHEsVnFxLEliICg2NiksKHYpCj4gKzQwOiB2ZHBwcyBWeCxIeCxXeCxJYiAoNjYpCj4gKzQx OiB2ZHBwZCBWZHEsSGRxLFdkcSxJYiAoNjYpLCh2MSkKPiArNDI6IHZtcHNhZGJ3IFZ4LEh4LFd4 LEliICg2NiksKHYxKQo+ICs0NDogdnBjbG11bHFkcSBWZHEsSGRxLFdkcSxJYiAoNjYpLCh2MSkK PiArNDY6IHZwZXJtMmkxMjggVnFxLEhxcSxXcXEsSWIgKDY2KSwodikKPiArNGE6IHZibGVuZHZw cyBWeCxIeCxXeCxMeCAoNjYpLCh2KQo+ICs0YjogdmJsZW5kdnBkIFZ4LEh4LFd4LEx4ICg2Niks KHYpCj4gKzRjOiB2cGJsZW5kdmIgVngsSHgsV3gsTHggKDY2KSwodjEpCj4gKzYwOiB2cGNtcGVz dHJtIFZkcSxXZHEsSWIgKDY2KSwodjEpCj4gKzYxOiB2cGNtcGVzdHJpIFZkcSxXZHEsSWIgKDY2 KSwodjEpCj4gKzYyOiB2cGNtcGlzdHJtIFZkcSxXZHEsSWIgKDY2KSwodjEpCj4gKzYzOiB2cGNt cGlzdHJpIFZkcSxXZHEsSWIgKDY2KSwodjEpCj4gK2RmOiBWQUVTS0VZR0VOIFZkcSxXZHEsSWIg KDY2KSwodjEpCj4gK2YwOiBST1JYIEd5LEV5LEliIChGMiksKHYpCj4gK0VuZFRhYmxlCj4gKwo+ ICtHcnBUYWJsZTogR3JwMQo+ICswOiBBREQKPiArMTogT1IKPiArMjogQURDCj4gKzM6IFNCQgo+ ICs0OiBBTkQKPiArNTogU1VCCj4gKzY6IFhPUgo+ICs3OiBDTVAKPiArRW5kVGFibGUKPiArCj4g K0dycFRhYmxlOiBHcnAxQQo+ICswOiBQT1AKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBH cnAyCj4gKzA6IFJPTAo+ICsxOiBST1IKPiArMjogUkNMCj4gKzM6IFJDUgo+ICs0OiBTSEwvU0FM Cj4gKzU6IFNIUgo+ICs2Ogo+ICs3OiBTQVIKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBH cnAzXzEKPiArMDogVEVTVCBFYixJYgo+ICsxOgo+ICsyOiBOT1QgRWIKPiArMzogTkVHIEViCj4g KzQ6IE1VTCBBTCxFYgo+ICs1OiBJTVVMIEFMLEViCj4gKzY6IERJViBBTCxFYgo+ICs3OiBJRElW IEFMLEViCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTogR3JwM18yCj4gKzA6IFRFU1QgRXYs SXoKPiArMToKPiArMjogTk9UIEV2Cj4gKzM6IE5FRyBFdgo+ICs0OiBNVUwgckFYLEV2Cj4gKzU6 IElNVUwgckFYLEV2Cj4gKzY6IERJViByQVgsRXYKPiArNzogSURJViByQVgsRXYKPiArRW5kVGFi bGUKPiArCj4gK0dycFRhYmxlOiBHcnA0Cj4gKzA6IElOQyBFYgo+ICsxOiBERUMgRWIKPiArRW5k VGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnA1Cj4gKzA6IElOQyBFdgo+ICsxOiBERUMgRXYKPiAr MjogQ0FMTE4gRXYgKGY2NCkKPiArMzogQ0FMTEYgRXAKPiArNDogSk1QTiBFdiAoZjY0KQo+ICs1 OiBKTVBGIE1wCj4gKzY6IFBVU0ggRXYgKGQ2NCkKPiArNzoKPiArRW5kVGFibGUKPiArCj4gK0dy cFRhYmxlOiBHcnA2Cj4gKzA6IFNMRFQgUnYvTXcKPiArMTogU1RSIFJ2L013Cj4gKzI6IExMRFQg RXcKPiArMzogTFRSIEV3Cj4gKzQ6IFZFUlIgRXcKPiArNTogVkVSVyBFdwo+ICtFbmRUYWJsZQo+ ICsKPiArR3JwVGFibGU6IEdycDcKPiArMDogU0dEVCBNcyB8IFZNQ0FMTCAoMDAxKSwoMTFCKSB8 IFZNTEFVTkNIICgwMTApLCgxMUIpIHwgVk1SRVNVTUUgKDAxMSksKDExQikgfCBWTVhPRkYgKDEw MCksKDExQikKPiArMTogU0lEVCBNcyB8IE1PTklUT1IgKDAwMCksKDExQikgfCBNV0FJVCAoMDAx KSwoMTFCKSB8IENMQUMgKDAxMCksKDExQikgfCBTVEFDICgwMTEpLCgxMUIpCj4gKzI6IExHRFQg TXMgfCBYR0VUQlYgKDAwMCksKDExQikgfCBYU0VUQlYgKDAwMSksKDExQikgfCBWTUZVTkMgKDEw MCksKDExQikgfCBYRU5EICgxMDEpKDExQikgfCBYVEVTVCAoMTEwKSgxMUIpCj4gKzM6IExJRFQg TXMKPiArNDogU01TVyBNdy9Sdgo+ICs1Ogo+ICs2OiBMTVNXIEV3Cj4gKzc6IElOVkxQRyBNYiB8 IFNXQVBHUyAobzY0KSwoMDAwKSwoMTFCKSB8IFJEVFNDUCAoMDAxKSwoMTFCKQo+ICtFbmRUYWJs ZQo+ICsKPiArR3JwVGFibGU6IEdycDgKPiArNDogQlQKPiArNTogQlRTCj4gKzY6IEJUUgo+ICs3 OiBCVEMKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnA5Cj4gKzE6IENNUFhDSEc4Qi8x NkIgTXEvTWRxCj4gKzY6IFZNUFRSTEQgTXEgfCBWTUNMRUFSIE1xICg2NikgfCBWTVhPTiBNcSAo RjMpIHwgUkRSQU5EIFJ2ICgxMUIpCj4gKzc6IFZNUFRSU1QgTXEgfCBWTVBUUlNUIE1xIChGMykg fCBSRFNFRUQgUnYgKDExQikKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnAxMAo+ICtF bmRUYWJsZQo+ICsKPiArIyBHcnAxMUEgYW5kIEdycDExQiBhcmUgZXhwcmVzc2VkIGFzIEdycDEx IGluIEludGVsIFNETQo+ICtHcnBUYWJsZTogR3JwMTFBCj4gKzA6IE1PViBFYixJYgo+ICs3OiBY QUJPUlQgSWIgKDAwMCksKDExQikKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnAxMUIK PiArMDogTU9WIEViLEl6Cj4gKzc6IFhCRUdJTiBKeiAoMDAwKSwoMTFCKQo+ICtFbmRUYWJsZQo+ ICsKPiArR3JwVGFibGU6IEdycDEyCj4gKzI6IHBzcmx3IE5xLEliICgxMUIpIHwgdnBzcmx3IEh4 LFV4LEliICg2NiksKDExQiksKHYxKQo+ICs0OiBwc3JhdyBOcSxJYiAoMTFCKSB8IHZwc3JhdyBI eCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkKPiArNjogcHNsbHcgTnEsSWIgKDExQikgfCB2cHNsbHcg SHgsVXgsSWIgKDY2KSwoMTFCKSwodjEpCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTogR3Jw MTMKPiArMjogcHNybGQgTnEsSWIgKDExQikgfCB2cHNybGQgSHgsVXgsSWIgKDY2KSwoMTFCKSwo djEpCj4gKzQ6IHBzcmFkIE5xLEliICgxMUIpIHwgdnBzcmFkIEh4LFV4LEliICg2NiksKDExQiks KHYxKQo+ICs2OiBwc2xsZCBOcSxJYiAoMTFCKSB8IHZwc2xsZCBIeCxVeCxJYiAoNjYpLCgxMUIp LCh2MSkKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnAxNAo+ICsyOiBwc3JscSBOcSxJ YiAoMTFCKSB8IHZwc3JscSBIeCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkKPiArMzogdnBzcmxkcSBI eCxVeCxJYiAoNjYpLCgxMUIpLCh2MSkKPiArNjogcHNsbHEgTnEsSWIgKDExQikgfCB2cHNsbHEg SHgsVXgsSWIgKDY2KSwoMTFCKSwodjEpCj4gKzc6IHZwc2xsZHEgSHgsVXgsSWIgKDY2KSwoMTFC KSwodjEpCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTogR3JwMTUKPiArMDogZnhzYXZlIHwg UkRGU0JBU0UgUnkgKEYzKSwoMTFCKQo+ICsxOiBmeHN0b3IgfCBSREdTQkFTRSBSeSAoRjMpLCgx MUIpCj4gKzI6IHZsZG14Y3NyIE1kICh2MSkgfCBXUkZTQkFTRSBSeSAoRjMpLCgxMUIpCj4gKzM6 IHZzdG14Y3NyIE1kICh2MSkgfCBXUkdTQkFTRSBSeSAoRjMpLCgxMUIpCj4gKzQ6IFhTQVZFCj4g KzU6IFhSU1RPUiB8IGxmZW5jZSAoMTFCKQo+ICs2OiBYU0FWRU9QVCB8IG1mZW5jZSAoMTFCKQo+ ICs3OiBjbGZsdXNoIHwgc2ZlbmNlICgxMUIpCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTog R3JwMTYKPiArMDogcHJlZmV0Y2ggTlRBCj4gKzE6IHByZWZldGNoIFQwCj4gKzI6IHByZWZldGNo IFQxCj4gKzM6IHByZWZldGNoIFQyCj4gK0VuZFRhYmxlCj4gKwo+ICtHcnBUYWJsZTogR3JwMTcK PiArMTogQkxTUiBCeSxFeSAodikKPiArMjogQkxTTVNLIEJ5LEV5ICh2KQo+ICszOiBCTFNJIEJ5 LEV5ICh2KQo+ICtFbmRUYWJsZQo+ICsKPiArIyBBTUQncyBQcmVmZXRjaCBHcm91cAo+ICtHcnBU YWJsZTogR3JwUAo+ICswOiBQUkVGRVRDSAo+ICsxOiBQUkVGRVRDSFcKPiArRW5kVGFibGUKPiAr Cj4gK0dycFRhYmxlOiBHcnBQRExLCj4gKzA6IE1PTlRNVUwKPiArMTogWFNIQTEKPiArMjogWFNI QTIKPiArRW5kVGFibGUKPiArCj4gK0dycFRhYmxlOiBHcnBSTkcKPiArMDogeHN0b3JlLXJuZwo+ ICsxOiB4Y3J5cHQtZWNiCj4gKzI6IHhjcnlwdC1jYmMKPiArNDogeGNyeXB0LWNmYgo+ICs1OiB4 Y3J5cHQtb2ZiCj4gK0VuZFRhYmxlCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYv aW5hdC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9pbmF0LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAuLjQxYjkwNjYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9pbmF0LmgKPiBAQCAtMCwwICsxLDIxOSBAQAo+ICsjaWZuZGVmIF9BU01f WDg2X0lOQVRfSAo+ICsjZGVmaW5lIF9BU01fWDg2X0lOQVRfSAo+ICsvKgo+ICsgKiB4ODYgaW5z dHJ1Y3Rpb24gYXR0cmlidXRlcwo+ICsgKgo+ICsgKiBXcml0dGVuIGJ5IE1hc2FtaSBIaXJhbWF0 c3UgPG1oaXJhbWF0QHJlZGhhdC5jb20+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCj4gKyAqCj4gKyAqLwo+ ICsjaW5jbHVkZSA8YXNtL2luYXRfdHlwZXMuaD4KPiArCj4gKy8qCj4gKyAqIEludGVybmFsIGJp dHMuIERvbid0IHVzZSBiaXRtYXNrcyBkaXJlY3RseSwgYmVjYXVzZSB0aGVzZSBiaXRzIGFyZQo+ ICsgKiB1bnN0YWJsZS4gWW91IHNob3VsZCB1c2UgY2hlY2tpbmcgZnVuY3Rpb25zLgo+ICsgKi8K PiArCj4gKyNkZWZpbmUgSU5BVF9PUENPREVfVEFCTEVfU0laRSAyNTYKPiArI2RlZmluZSBJTkFU X0dST1VQX1RBQkxFX1NJWkUgOAo+ICsKPiArLyogTGVnYWN5IGxhc3QgcHJlZml4ZXMgKi8KPiAr I2RlZmluZSBJTkFUX1BGWF9PUE5EU1ogMSAvKiAweDY2ICovIC8qIExQRlgxICovCj4gKyNkZWZp bmUgSU5BVF9QRlhfUkVQRSAyIC8qIDB4RjMgKi8gICAvKiBMUEZYMiAqLwo+ICsjZGVmaW5lIElO QVRfUEZYX1JFUE5FIDMgLyogMHhGMiAqLyAgLyogTFBGWDMgKi8KPiArLyogT3RoZXIgTGVnYWN5 IHByZWZpeGVzICovCj4gKyNkZWZpbmUgSU5BVF9QRlhfTE9DSyA0ICAgIC8qIDB4RjAgKi8KPiAr I2RlZmluZSBJTkFUX1BGWF9DUyA1ICAgICAgLyogMHgyRSAqLwo+ICsjZGVmaW5lIElOQVRfUEZY X0RTIDYgICAgICAvKiAweDNFICovCj4gKyNkZWZpbmUgSU5BVF9QRlhfRVMgNyAgICAgIC8qIDB4 MjYgKi8KPiArI2RlZmluZSBJTkFUX1BGWF9GUyA4ICAgICAgLyogMHg2NCAqLwo+ICsjZGVmaW5l IElOQVRfUEZYX0dTIDkgICAgICAvKiAweDY1ICovCj4gKyNkZWZpbmUgSU5BVF9QRlhfU1MgMTAg ICAgIC8qIDB4MzYgKi8KPiArI2RlZmluZSBJTkFUX1BGWF9BRERSU1ogMTEgLyogMHg2NyAqLwo+ ICsvKiB4ODYtNjQgUkVYIHByZWZpeCAqLwo+ICsjZGVmaW5lIElOQVRfUEZYX1JFWCAxMiAvKiAw eDRYICovCj4gKy8qIEFWWCBWRVggcHJlZml4ZXMgKi8KPiArI2RlZmluZSBJTkFUX1BGWF9WRVgy IDEzIC8qIDItYnl0ZXMgVkVYIHByZWZpeCAqLwo+ICsjZGVmaW5lIElOQVRfUEZYX1ZFWDMgMTQg LyogMy1ieXRlcyBWRVggcHJlZml4ICovCj4gKwo+ICsjZGVmaW5lIElOQVRfTFNUUEZYX01BWCAz Cj4gKyNkZWZpbmUgSU5BVF9MR0NQRlhfTUFYIDExCj4gKwo+ICsvKiBJbW1lZGlhdGUgc2l6ZSAq Lwo+ICsjZGVmaW5lIElOQVRfSU1NX0JZVEUgMQo+ICsjZGVmaW5lIElOQVRfSU1NX1dPUkQgMgo+ ICsjZGVmaW5lIElOQVRfSU1NX0RXT1JEIDMKPiArI2RlZmluZSBJTkFUX0lNTV9RV09SRCA0Cj4g KyNkZWZpbmUgSU5BVF9JTU1fUFRSIDUKPiArI2RlZmluZSBJTkFUX0lNTV9WV09SRDMyIDYKPiAr I2RlZmluZSBJTkFUX0lNTV9WV09SRCA3Cj4gKwo+ICsvKiBMZWdhY3kgcHJlZml4ICovCj4gKyNk ZWZpbmUgSU5BVF9QRlhfT0ZGUyAwCj4gKyNkZWZpbmUgSU5BVF9QRlhfQklUUyA0Cj4gKyNkZWZp bmUgSU5BVF9QRlhfTUFYICgoMSA8PCBJTkFUX1BGWF9CSVRTKSAtIDEpCj4gKyNkZWZpbmUgSU5B VF9QRlhfTUFTSyAoSU5BVF9QRlhfTUFYIDw8IElOQVRfUEZYX09GRlMpCj4gKy8qIEVzY2FwZSBv cGNvZGVzICovCj4gKyNkZWZpbmUgSU5BVF9FU0NfT0ZGUyAoSU5BVF9QRlhfT0ZGUyArIElOQVRf UEZYX0JJVFMpCj4gKyNkZWZpbmUgSU5BVF9FU0NfQklUUyAyCj4gKyNkZWZpbmUgSU5BVF9FU0Nf TUFYICgoMSA8PCBJTkFUX0VTQ19CSVRTKSAtIDEpCj4gKyNkZWZpbmUgSU5BVF9FU0NfTUFTSyAo SU5BVF9FU0NfTUFYIDw8IElOQVRfRVNDX09GRlMpCj4gKy8qIEdyb3VwIG9wY29kZXMgKDEtMTYp ICovCj4gKyNkZWZpbmUgSU5BVF9HUlBfT0ZGUyAoSU5BVF9FU0NfT0ZGUyArIElOQVRfRVNDX0JJ VFMpCj4gKyNkZWZpbmUgSU5BVF9HUlBfQklUUyA1Cj4gKyNkZWZpbmUgSU5BVF9HUlBfTUFYICgo MSA8PCBJTkFUX0dSUF9CSVRTKSAtIDEpCj4gKyNkZWZpbmUgSU5BVF9HUlBfTUFTSyAoSU5BVF9H UlBfTUFYIDw8IElOQVRfR1JQX09GRlMpCj4gKy8qIEltbWVkaWF0ZXMgKi8KPiArI2RlZmluZSBJ TkFUX0lNTV9PRkZTIChJTkFUX0dSUF9PRkZTICsgSU5BVF9HUlBfQklUUykKPiArI2RlZmluZSBJ TkFUX0lNTV9CSVRTIDMKPiArI2RlZmluZSBJTkFUX0lNTV9NQVNLICgoKDEgPDwgSU5BVF9JTU1f QklUUykgLSAxKSA8PCBJTkFUX0lNTV9PRkZTKQo+ICsvKiBGbGFncyAqLwo+ICsjZGVmaW5lIElO QVRfRkxBR19PRkZTIChJTkFUX0lNTV9PRkZTICsgSU5BVF9JTU1fQklUUykKPiArI2RlZmluZSBJ TkFUX01PRFJNICgxIDw8IChJTkFUX0ZMQUdfT0ZGUykpCj4gKyNkZWZpbmUgSU5BVF9GT1JDRTY0 ICgxIDw8IChJTkFUX0ZMQUdfT0ZGUyArIDEpKQo+ICsjZGVmaW5lIElOQVRfU0NORElNTSAoMSA8 PCAoSU5BVF9GTEFHX09GRlMgKyAyKSkKPiArI2RlZmluZSBJTkFUX01PRkZTRVQgKDEgPDwgKElO QVRfRkxBR19PRkZTICsgMykpCj4gKyNkZWZpbmUgSU5BVF9WQVJJQU5UICgxIDw8IChJTkFUX0ZM QUdfT0ZGUyArIDQpKQo+ICsjZGVmaW5lIElOQVRfVkVYT0sgKDEgPDwgKElOQVRfRkxBR19PRkZT ICsgNSkpCj4gKyNkZWZpbmUgSU5BVF9WRVhPTkxZICgxIDw8IChJTkFUX0ZMQUdfT0ZGUyArIDYp KQo+ICsvKiBBdHRyaWJ1dGUgbWFraW5nIG1hY3JvcyBmb3IgYXR0cmlidXRlIHRhYmxlcyAqLwo+ ICsjZGVmaW5lIElOQVRfTUFLRV9QUkVGSVgocGZ4KSAocGZ4IDw8IElOQVRfUEZYX09GRlMpCj4g KyNkZWZpbmUgSU5BVF9NQUtFX0VTQ0FQRShlc2MpIChlc2MgPDwgSU5BVF9FU0NfT0ZGUykKPiAr I2RlZmluZSBJTkFUX01BS0VfR1JPVVAoZ3JwKSAoKGdycCA8PCBJTkFUX0dSUF9PRkZTKSB8IElO QVRfTU9EUk0pCj4gKyNkZWZpbmUgSU5BVF9NQUtFX0lNTShpbW0pIChpbW0gPDwgSU5BVF9JTU1f T0ZGUykKPiArCj4gKy8qIEF0dHJpYnV0ZSBzZWFyY2ggQVBJcyAqLwo+ICtleHRlcm4gaW5zbl9h dHRyX3QgaW5hdF9nZXRfb3Bjb2RlX2F0dHJpYnV0ZShpbnNuX2J5dGVfdCBvcGNvZGUpOwo+ICtl eHRlcm4gaW50IGluYXRfZ2V0X2xhc3RfcHJlZml4X2lkKGluc25fYnl0ZV90IGxhc3RfcGZ4KTsK PiArZXh0ZXJuIGluc25fYXR0cl90IGluYXRfZ2V0X2VzY2FwZV9hdHRyaWJ1dGUoaW5zbl9ieXRl X3Qgb3Bjb2RlLCBpbnQgbHBmeF9pZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zbl9hdHRyX3QgZXNjX2F0dHIpOwo+ICtleHRlcm4gaW5zbl9hdHRy X3QgaW5hdF9nZXRfZ3JvdXBfYXR0cmlidXRlKGluc25fYnl0ZV90IG1vZHJtLCBpbnQgbHBmeF9p ZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNuX2F0 dHJfdCBlc2NfYXR0cik7Cj4gK2V4dGVybiBpbnNuX2F0dHJfdCBpbmF0X2dldF9hdnhfYXR0cmli dXRlKGluc25fYnl0ZV90IG9wY29kZSwgaW5zbl9ieXRlX3QgdmV4X20sCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc25fYnl0ZV90IHZleF9wcCk7Cj4gKwo+ ICsvKiBBdHRyaWJ1dGUgY2hlY2tpbmcgZnVuY3Rpb25zICovCj4gK3N0YXRpYyBpbmxpbmUgaW50 IGluYXRfaXNfbGVnYWN5X3ByZWZpeChpbnNuX2F0dHJfdCBhdHRyKQo+ICt7Cj4gKyAgICBhdHRy ICY9IElOQVRfUEZYX01BU0s7Cj4gKyAgICByZXR1cm4gYXR0ciAmJiBhdHRyIDw9IElOQVRfTEdD UEZYX01BWDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9pc19hZGRyZXNzX3Np emVfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCj4gK3sKPiArICAgIHJldHVybiAoYXR0ciAmIElO QVRfUEZYX01BU0spID09IElOQVRfUEZYX0FERFJTWjsKPiArfQo+ICsKPiArc3RhdGljIGlubGlu ZSBpbnQgaW5hdF9pc19vcGVyYW5kX3NpemVfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCj4gK3sK PiArICAgIHJldHVybiAoYXR0ciAmIElOQVRfUEZYX01BU0spID09IElOQVRfUEZYX09QTkRTWjsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9pc19yZXhfcHJlZml4KGluc25fYXR0 cl90IGF0dHIpCj4gK3sKPiArICAgIHJldHVybiAoYXR0ciAmIElOQVRfUEZYX01BU0spID09IElO QVRfUEZYX1JFWDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9sYXN0X3ByZWZp eF9pZChpbnNuX2F0dHJfdCBhdHRyKQo+ICt7Cj4gKyAgICBpZiAoIChhdHRyICYgSU5BVF9QRlhf TUFTSykgPiBJTkFUX0xTVFBGWF9NQVggKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgZWxz ZQo+ICsgICAgICAgIHJldHVybiBhdHRyICYgSU5BVF9QRlhfTUFTSzsKPiArfQo+ICsKPiArc3Rh dGljIGlubGluZSBpbnQgaW5hdF9pc192ZXhfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCj4gK3sK PiArICAgIGF0dHIgJj0gSU5BVF9QRlhfTUFTSzsKPiArICAgIHJldHVybiBhdHRyID09IElOQVRf UEZYX1ZFWDIgfHwgYXR0ciA9PSBJTkFUX1BGWF9WRVgzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5s aW5lIGludCBpbmF0X2lzX3ZleDNfcHJlZml4KGluc25fYXR0cl90IGF0dHIpCj4gK3sKPiArICAg IHJldHVybiAoYXR0ciAmIElOQVRfUEZYX01BU0spID09IElOQVRfUEZYX1ZFWDM7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfaXNfZXNjYXBlKGluc25fYXR0cl90IGF0dHIpCj4g K3sKPiArICAgIHJldHVybiBhdHRyICYgSU5BVF9FU0NfTUFTSzsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZSBpbnQgaW5hdF9lc2NhcGVfaWQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ICsgICAg cmV0dXJuIChhdHRyICYgSU5BVF9FU0NfTUFTSykgPj4gSU5BVF9FU0NfT0ZGUzsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9pc19ncm91cChpbnNuX2F0dHJfdCBhdHRyKQo+ICt7 Cj4gKyAgICByZXR1cm4gYXR0ciAmIElOQVRfR1JQX01BU0s7Cj4gK30KPiArCj4gK3N0YXRpYyBp bmxpbmUgaW50IGluYXRfZ3JvdXBfaWQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ICsgICAgcmV0 dXJuIChhdHRyICYgSU5BVF9HUlBfTUFTSykgPj4gSU5BVF9HUlBfT0ZGUzsKPiArfQo+ICsKPiAr c3RhdGljIGlubGluZSBpbnQgaW5hdF9ncm91cF9jb21tb25fYXR0cmlidXRlKGluc25fYXR0cl90 IGF0dHIpCj4gK3sKPiArICAgIHJldHVybiBhdHRyICYgfklOQVRfR1JQX01BU0s7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfaGFzX2ltbWVkaWF0ZShpbnNuX2F0dHJfdCBhdHRy KQo+ICt7Cj4gKyAgICByZXR1cm4gYXR0ciAmIElOQVRfSU1NX01BU0s7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbmxpbmUgaW50IGluYXRfaW1tZWRpYXRlX3NpemUoaW5zbl9hdHRyX3QgYXR0cikKPiAr ewo+ICsgICAgcmV0dXJuIChhdHRyICYgSU5BVF9JTU1fTUFTSykgPj4gSU5BVF9JTU1fT0ZGUzsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgaW5hdF9oYXNfbW9kcm0oaW5zbl9hdHRyX3Qg YXR0cikKPiArewo+ICsgICAgcmV0dXJuIGF0dHIgJiBJTkFUX01PRFJNOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW5saW5lIGludCBpbmF0X2lzX2ZvcmNlNjQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ ICsgICAgcmV0dXJuIGF0dHIgJiBJTkFUX0ZPUkNFNjQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp bmUgaW50IGluYXRfaGFzX3NlY29uZF9pbW1lZGlhdGUoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ ICsgICAgcmV0dXJuIGF0dHIgJiBJTkFUX1NDTkRJTU07Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp bmUgaW50IGluYXRfaGFzX21vZmZzZXQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ICsgICAgcmV0 dXJuIGF0dHIgJiBJTkFUX01PRkZTRVQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGlu YXRfaGFzX3ZhcmlhbnQoaW5zbl9hdHRyX3QgYXR0cikKPiArewo+ICsgICAgcmV0dXJuIGF0dHIg JiBJTkFUX1ZBUklBTlQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfYWNjZXB0 X3ZleChpbnNuX2F0dHJfdCBhdHRyKQo+ICt7Cj4gKyAgICByZXR1cm4gYXR0ciAmIElOQVRfVkVY T0s7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGluYXRfbXVzdF92ZXgoaW5zbl9hdHRy X3QgYXR0cikKPiArewo+ICsgICAgcmV0dXJuIGF0dHIgJiBJTkFUX1ZFWE9OTFk7Cj4gK30KPiAr Cj4gKyNlbmRpZiAvKiBfQVNNX1g4Nl9JTkFUX0ggKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9pbmF0X3R5cGVzLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2luYXRfdHlwZXMu aAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNjYyYWMxNAo+IC0tLSAv ZGV2L251bGwKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2luYXRfdHlwZXMuaAo+IEBAIC0w LDAgKzEsMjkgQEAKPiArI2lmbmRlZiBfQVNNX1g4Nl9JTkFUX1RZUEVTX0gKPiArI2RlZmluZSBf QVNNX1g4Nl9JTkFUX1RZUEVTX0gKPiArLyoKPiArICogeDg2IGluc3RydWN0aW9uIGF0dHJpYnV0 ZXMKPiArICoKPiArICogV3JpdHRlbiBieSBNYXNhbWkgSGlyYW1hdHN1IDxtaGlyYW1hdEByZWRo YXQuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgo+ICsgKgo+ICsgKi8KPiArCj4gKy8qIEluc3RydWN0 aW9uIGF0dHJpYnV0ZXMgKi8KPiArdHlwZWRlZiB1bnNpZ25lZCBpbnQgaW5zbl9hdHRyX3Q7Cj4g K3R5cGVkZWYgdW5zaWduZWQgY2hhciBpbnNuX2J5dGVfdDsKPiArdHlwZWRlZiBzaWduZWQgaW50 IGluc25fdmFsdWVfdDsKPiArCj4gKyNlbmRpZiAvKiBfQVNNX1g4Nl9JTkFUX1RZUEVTX0ggKi8K PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pbnNuLmggYi94ZW4vaW5jbHVkZS9h c20teDg2L2luc24uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNzM5 NzczYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2luc24uaAo+ IEBAIC0wLDAgKzEsMjAxIEBACj4gKyNpZm5kZWYgX0FTTV9YODZfSU5TTl9ICj4gKyNkZWZpbmUg X0FTTV9YODZfSU5TTl9ICj4gKy8qCj4gKyAqIHg4NiBpbnN0cnVjdGlvbiBhbmFseXNpcwo+ICsg Kgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsg KiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx MTEtMTMwNywgVVNBLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIElCTSBDb3Jwb3JhdGlvbiwg MjAwOQo+ICsgKi8KPiArCj4gKy8qIGluc25fYXR0cl90IGlzIGRlZmluZWQgaW4gaW5hdC5oICov Cj4gKyNpbmNsdWRlIDxhc20vaW5hdC5oPgo+ICsKPiArc3RydWN0IGluc25fZmllbGQKPiArewo+ ICsgICAgdW5pb24gewo+ICsgICAgICAgIGluc25fdmFsdWVfdCB2YWx1ZTsKPiArICAgICAgICBp bnNuX2J5dGVfdCBieXRlc1s0XTsKPiArICAgIH07Cj4gKyAgICAvKiAhMCBpZiB3ZSd2ZSBydW4g aW5zbl9nZXRfeHh4KCkgZm9yIHRoaXMgZmllbGQgKi8KPiArICAgIHVuc2lnbmVkIGNoYXIgZ290 Owo+ICsgICAgdW5zaWduZWQgY2hhciBuYnl0ZXM7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgaW5zbgo+ ICt7Cj4gKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCBwcmVmaXhlczsgLyoKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiBQcmVmaXhlcwo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqIHByZWZpeGVzLmJ5dGVzWzNdOiBsYXN0IHByZWZpeAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAgc3RydWN0IGluc25fZmllbGQgcmV4X3By ZWZpeDsgLyogUkVYIHByZWZpeCAqLwo+ICsgICAgc3RydWN0IGluc25fZmllbGQgdmV4X3ByZWZp eDsgLyogVkVYIHByZWZpeCAqLwo+ICsgICAgc3RydWN0IGluc25fZmllbGQgb3Bjb2RlOyAgICAg LyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG9wY29kZS5ieXRlc1sw XTogb3Bjb2RlMQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogb3Bjb2Rl LmJ5dGVzWzFdOiBvcGNvZGUyCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KiBvcGNvZGUuYnl0ZXNbMl06IG9wY29kZTMKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLwo+ICsgICAgc3RydWN0IGluc25fZmllbGQgbW9kcm07Cj4gKyAgICBzdHJ1Y3Qg aW5zbl9maWVsZCBzaWI7Cj4gKyAgICBzdHJ1Y3QgaW5zbl9maWVsZCBkaXNwbGFjZW1lbnQ7Cj4g KyAgICB1bmlvbiB7Cj4gKyAgICAgICAgc3RydWN0IGluc25fZmllbGQgaW1tZWRpYXRlOwo+ICsg ICAgICAgIHN0cnVjdCBpbnNuX2ZpZWxkIG1vZmZzZXQxOyAgIC8qIGZvciA2NGJpdCBNT1YgKi8K PiArICAgICAgICBzdHJ1Y3QgaW5zbl9maWVsZCBpbW1lZGlhdGUxOyAvKiBmb3IgNjRiaXQgaW1t IG9yIG9mZjE2LzMyICovCj4gKyAgICB9Owo+ICsgICAgdW5pb24gewo+ICsgICAgICAgIHN0cnVj dCBpbnNuX2ZpZWxkIG1vZmZzZXQyOyAgIC8qIGZvciA2NGJpdCBNT1YgKi8KPiArICAgICAgICBz dHJ1Y3QgaW5zbl9maWVsZCBpbW1lZGlhdGUyOyAvKiBmb3IgNjRiaXQgaW1tIG9yIHNlZzE2ICov Cj4gKyAgICB9Owo+ICsKPiArICAgIGluc25fYXR0cl90IGF0dHI7Cj4gKyAgICB1bnNpZ25lZCBj aGFyIG9wbmRfYnl0ZXM7Cj4gKyAgICB1bnNpZ25lZCBjaGFyIGFkZHJfYnl0ZXM7Cj4gKyAgICB1 bnNpZ25lZCBjaGFyIGxlbmd0aDsKPiArICAgIHVuc2lnbmVkIGNoYXIgeDg2XzY0Owo+ICsKPiAr ICAgIGNvbnN0IGluc25fYnl0ZV90ICprYWRkcjsgLyoga2VybmVsIGFkZHJlc3Mgb2YgaW5zbiB0 byBhbmFseXplICovCj4gKyAgICBjb25zdCBpbnNuX2J5dGVfdCAqbmV4dF9ieXRlOwo+ICt9Owo+ ICsKPiArI2RlZmluZSBNQVhfSU5TTl9TSVpFIDE2Cj4gKwo+ICsjZGVmaW5lIFg4Nl9NT0RSTV9N T0QobW9kcm0pICgoKG1vZHJtKSAmIDB4YzApID4+IDYpCj4gKyNkZWZpbmUgWDg2X01PRFJNX1JF Ryhtb2RybSkgKCgobW9kcm0pICYgMHgzOCkgPj4gMykKPiArI2RlZmluZSBYODZfTU9EUk1fUk0o bW9kcm0pICgobW9kcm0pICYgMHgwNykKPiArCj4gKyNkZWZpbmUgWDg2X1NJQl9TQ0FMRShzaWIp ICgoKHNpYikgJiAweGMwKSA+PiA2KQo+ICsjZGVmaW5lIFg4Nl9TSUJfSU5ERVgoc2liKSAoKChz aWIpICYgMHgzOCkgPj4gMykKPiArI2RlZmluZSBYODZfU0lCX0JBU0Uoc2liKSAoKHNpYikgJiAw eDA3KQo+ICsKPiArI2RlZmluZSBYODZfUkVYX1cocmV4KSAoKHJleCkgJiA4KQo+ICsjZGVmaW5l IFg4Nl9SRVhfUihyZXgpICgocmV4KSAmIDQpCj4gKyNkZWZpbmUgWDg2X1JFWF9YKHJleCkgKChy ZXgpICYgMikKPiArI2RlZmluZSBYODZfUkVYX0IocmV4KSAoKHJleCkgJiAxKQo+ICsKPiArLyog VkVYIGJpdCBmbGFncyAgKi8KPiArI2RlZmluZSBYODZfVkVYX1codmV4KSAoKHZleCkgJiAweDgw KSAvKiBWRVgzIEJ5dGUyICovCj4gKyNkZWZpbmUgWDg2X1ZFWF9SKHZleCkgKCh2ZXgpICYgMHg4 MCkgLyogVkVYMi8zIEJ5dGUxICovCj4gKyNkZWZpbmUgWDg2X1ZFWF9YKHZleCkgKCh2ZXgpICYg MHg0MCkgLyogVkVYMyBCeXRlMSAqLwo+ICsjZGVmaW5lIFg4Nl9WRVhfQih2ZXgpICgodmV4KSAm IDB4MjApIC8qIFZFWDMgQnl0ZTEgKi8KPiArI2RlZmluZSBYODZfVkVYX0wodmV4KSAoKHZleCkg JiAweDA0KSAvKiBWRVgzIEJ5dGUyLCBWRVgyIEJ5dGUxICovCj4gKy8qIFZFWCBiaXQgZmllbGRz ICovCj4gKyNkZWZpbmUgWDg2X1ZFWDNfTSh2ZXgpICgodmV4KSAmIDB4MWYpICAgICAgIC8qIFZF WDMgQnl0ZTEgKi8KPiArI2RlZmluZSBYODZfVkVYMl9NIDEgICAgICAgICAgICAgICAgICAgICAg ICAgLyogVkVYMi5NIGFsd2F5cyAxICovCj4gKyNkZWZpbmUgWDg2X1ZFWF9WKHZleCkgKCgodmV4 KSAmIDB4NzgpID4+IDMpIC8qIFZFWDMgQnl0ZTIsIFZFWDIgQnl0ZTEgKi8KPiArI2RlZmluZSBY ODZfVkVYX1AodmV4KSAoKHZleCkgJiAweDAzKSAgICAgICAgLyogVkVYMyBCeXRlMiwgVkVYMiBC eXRlMSAqLwo+ICsjZGVmaW5lIFg4Nl9WRVhfTV9NQVggMHgxZiAgICAgICAgICAgICAgICAgICAv KiBWRVgzLk0gTWF4aW11bSB2YWx1ZSAqLwo+ICsKPiArZXh0ZXJuIHZvaWQgaW5zbl9pbml0KHN0 cnVjdCBpbnNuICppbnNuLCBjb25zdCB2b2lkICprYWRkciwgaW50IHg4Nl82NCk7Cj4gK2V4dGVy biB2b2lkIGluc25fZ2V0X3ByZWZpeGVzKHN0cnVjdCBpbnNuICppbnNuKTsKPiArZXh0ZXJuIHZv aWQgaW5zbl9nZXRfb3Bjb2RlKHN0cnVjdCBpbnNuICppbnNuKTsKPiArZXh0ZXJuIHZvaWQgaW5z bl9nZXRfbW9kcm0oc3RydWN0IGluc24gKmluc24pOwo+ICtleHRlcm4gdm9pZCBpbnNuX2dldF9z aWIoc3RydWN0IGluc24gKmluc24pOwo+ICtleHRlcm4gdm9pZCBpbnNuX2dldF9kaXNwbGFjZW1l bnQoc3RydWN0IGluc24gKmluc24pOwo+ICtleHRlcm4gdm9pZCBpbnNuX2dldF9pbW1lZGlhdGUo c3RydWN0IGluc24gKmluc24pOwo+ICtleHRlcm4gdm9pZCBpbnNuX2dldF9sZW5ndGgoc3RydWN0 IGluc24gKmluc24pOwo+ICsKPiArLyogQXR0cmlidXRlIHdpbGwgYmUgZGV0ZXJtaW5lZCBhZnRl ciBnZXR0aW5nIE1vZFJNIChmb3Igb3Bjb2RlIGdyb3VwcykgKi8KPiArc3RhdGljIGlubGluZSB2 b2lkIGluc25fZ2V0X2F0dHJpYnV0ZShzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgaW5z bl9nZXRfbW9kcm0oaW5zbik7Cj4gK30KPiArCj4gKy8qIEluc3RydWN0aW9uIHVzZXMgUklQLXJl bGF0aXZlIGFkZHJlc3NpbmcgKi8KPiArZXh0ZXJuIGludCBpbnNuX3JpcF9yZWxhdGl2ZShzdHJ1 Y3QgaW5zbiAqaW5zbik7Cj4gKwo+ICsvKiBJbml0IGluc24gZm9yIGtlcm5lbCB0ZXh0ICovCj4g K3N0YXRpYyBpbmxpbmUgdm9pZCBrZXJuZWxfaW5zbl9pbml0KHN0cnVjdCBpbnNuICppbnNuLCBj b25zdCB2b2lkICprYWRkcikKPiArewo+ICsjaWZkZWYgQ09ORklHX1g4Nl82NAo+ICsgICAgaW5z bl9pbml0KGluc24sIGthZGRyLCAxKTsKPiArI2Vsc2UgLyogQ09ORklHX1g4Nl8zMiAqLwo+ICsg ICAgaW5zbl9pbml0KGluc24sIGthZGRyLCAwKTsKPiArI2VuZGlmCj4gK30KPiArCj4gK3N0YXRp YyBpbmxpbmUgaW50IGluc25faXNfYXZ4KHN0cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBp ZiAoICFpbnNuLT5wcmVmaXhlcy5nb3QgKQo+ICsgICAgICAgIGluc25fZ2V0X3ByZWZpeGVzKGlu c24pOwo+ICsgICAgcmV0dXJuIChpbnNuLT52ZXhfcHJlZml4LnZhbHVlICE9IDApOwo+ICt9Cj4g Kwo+ICsvKiBFbnN1cmUgdGhpcyBpbnN0cnVjdGlvbiBpcyBkZWNvZGVkIGNvbXBsZXRlbHkgKi8K PiArc3RhdGljIGlubGluZSBpbnQgaW5zbl9jb21wbGV0ZShzdHJ1Y3QgaW5zbiAqaW5zbikKPiAr ewo+ICsgICAgcmV0dXJuIGluc24tPm9wY29kZS5nb3QgJiYgaW5zbi0+bW9kcm0uZ290ICYmIGlu c24tPnNpYi5nb3QgJiYKPiArICAgICAgICAgICBpbnNuLT5kaXNwbGFjZW1lbnQuZ290ICYmIGlu c24tPmltbWVkaWF0ZS5nb3Q7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW5zbl9ieXRlX3Qg aW5zbl92ZXhfbV9iaXRzKHN0cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICBpZiAoIGluc24t PnZleF9wcmVmaXgubmJ5dGVzID09IDIgKSAvKiAyIGJ5dGVzIFZFWCAqLwo+ICsgICAgICAgIHJl dHVybiBYODZfVkVYMl9NOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIHJldHVybiBYODZfVkVYM19N KGluc24tPnZleF9wcmVmaXguYnl0ZXNbMV0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGlu c25fYnl0ZV90IGluc25fdmV4X3BfYml0cyhzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAg aWYgKCBpbnNuLT52ZXhfcHJlZml4Lm5ieXRlcyA9PSAyICkgLyogMiBieXRlcyBWRVggKi8KPiAr ICAgICAgICByZXR1cm4gWDg2X1ZFWF9QKGluc24tPnZleF9wcmVmaXguYnl0ZXNbMV0pOwo+ICsg ICAgZWxzZQo+ICsgICAgICAgIHJldHVybiBYODZfVkVYX1AoaW5zbi0+dmV4X3ByZWZpeC5ieXRl c1syXSk7Cj4gK30KPiArCj4gKy8qIEdldCB0aGUgbGFzdCBwcmVmaXggaWQgZnJvbSBsYXN0IHBy ZWZpeCBvciBWRVggcHJlZml4ICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IGluc25fbGFzdF9wcmVm aXhfaWQoc3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIGlmICggaW5zbl9pc19hdngoaW5z bikgKQo+ICsgICAgICAgIHJldHVybiBpbnNuX3ZleF9wX2JpdHMoaW5zbik7IC8qIFZFWF9wIGlz IGEgU0lNRCBwcmVmaXggaWQgKi8KPiArCj4gKyAgICBpZiAoIGluc24tPnByZWZpeGVzLmJ5dGVz WzNdICkKPiArICAgICAgICByZXR1cm4gaW5hdF9nZXRfbGFzdF9wcmVmaXhfaWQoaW5zbi0+cHJl Zml4ZXMuYnl0ZXNbM10pOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKiBPZmZz ZXQgb2YgZWFjaCBmaWVsZCBmcm9tIGthZGRyICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IGluc25f b2Zmc2V0X3JleF9wcmVmaXgoc3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIHJldHVybiBp bnNuLT5wcmVmaXhlcy5uYnl0ZXM7Cj4gK30KPiArc3RhdGljIGlubGluZSBpbnQgaW5zbl9vZmZz ZXRfdmV4X3ByZWZpeChzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgcmV0dXJuIGluc25f b2Zmc2V0X3JleF9wcmVmaXgoaW5zbikgKyBpbnNuLT5yZXhfcHJlZml4Lm5ieXRlczsKPiArfQo+ ICtzdGF0aWMgaW5saW5lIGludCBpbnNuX29mZnNldF9vcGNvZGUoc3RydWN0IGluc24gKmluc24p Cj4gK3sKPiArICAgIHJldHVybiBpbnNuX29mZnNldF92ZXhfcHJlZml4KGluc24pICsgaW5zbi0+ dmV4X3ByZWZpeC5uYnl0ZXM7Cj4gK30KPiArc3RhdGljIGlubGluZSBpbnQgaW5zbl9vZmZzZXRf bW9kcm0oc3RydWN0IGluc24gKmluc24pCj4gK3sKPiArICAgIHJldHVybiBpbnNuX29mZnNldF9v cGNvZGUoaW5zbikgKyBpbnNuLT5vcGNvZGUubmJ5dGVzOwo+ICt9Cj4gK3N0YXRpYyBpbmxpbmUg aW50IGluc25fb2Zmc2V0X3NpYihzdHJ1Y3QgaW5zbiAqaW5zbikKPiArewo+ICsgICAgcmV0dXJu IGluc25fb2Zmc2V0X21vZHJtKGluc24pICsgaW5zbi0+bW9kcm0ubmJ5dGVzOwo+ICt9Cj4gK3N0 YXRpYyBpbmxpbmUgaW50IGluc25fb2Zmc2V0X2Rpc3BsYWNlbWVudChzdHJ1Y3QgaW5zbiAqaW5z bikKPiArewo+ICsgICAgcmV0dXJuIGluc25fb2Zmc2V0X3NpYihpbnNuKSArIGluc24tPnNpYi5u Ynl0ZXM7Cj4gK30KPiArc3RhdGljIGlubGluZSBpbnQgaW5zbl9vZmZzZXRfaW1tZWRpYXRlKHN0 cnVjdCBpbnNuICppbnNuKQo+ICt7Cj4gKyAgICByZXR1cm4gaW5zbl9vZmZzZXRfZGlzcGxhY2Vt ZW50KGluc24pICsgaW5zbi0+ZGlzcGxhY2VtZW50Lm5ieXRlczsKPiArfQo+ICsKPiArI2VuZGlm IC8qIF9BU01fWDg2X0lOU05fSCAqLwo+IGRpZmYgLS1naXQgYS94ZW4vdG9vbHMvZ2VuLWluc24t YXR0ci14ODYuYXdrIGIveGVuL3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3awo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYmJiOGY0MAo+IC0tLSAvZGV2L251bGwKPiAr KysgYi94ZW4vdG9vbHMvZ2VuLWluc24tYXR0ci14ODYuYXdrCj4gQEAgLTAsMCArMSwzODYgQEAK PiArIyEvYmluL2F3ayAtZgo+ICsjIGdlbi1pbnNuLWF0dHIteDg2LmF3azogSW5zdHJ1Y3Rpb24g YXR0cmlidXRlIHRhYmxlIGdlbmVyYXRvcgo+ICsjIFdyaXR0ZW4gYnkgTWFzYW1pIEhpcmFtYXRz dSA8bWhpcmFtYXRAcmVkaGF0LmNvbT4KPiArIwo+ICsjIFVzYWdlOiBhd2sgLWYgZ2VuLWluc24t YXR0ci14ODYuYXdrIHg4Ni1vcGNvZGUtbWFwLnR4dCA+IGluYXQtdGFibGVzLmMKPiArCj4gKyMg QXdrIGltcGxlbWVudGF0aW9uIHNhbml0eSBjaGVjawo+ICtmdW5jdGlvbiBjaGVja19hd2tfaW1w bGVtZW50KCkgewo+ICsJaWYgKHNwcmludGYoIiV4IiwgMCkgIT0gIjAiKQo+ICsJCXJldHVybiAi WW91ciBhd2sgaGFzIGEgcHJpbnRmLWZvcm1hdCBwcm9ibGVtLiIKPiArCXJldHVybiAiIgo+ICt9 Cj4gKwo+ICsjIENsZWFyIHdvcmtpbmcgdmFycwo+ICtmdW5jdGlvbiBjbGVhcl92YXJzKCkgewo+ ICsJZGVsZXRlIHRhYmxlCj4gKwlkZWxldGUgbHB0YWJsZTIKPiArCWRlbGV0ZSBscHRhYmxlMQo+ ICsJZGVsZXRlIGxwdGFibGUzCj4gKwllaWQgPSAtMSAjIGVzY2FwZSBpZAo+ICsJZ2lkID0gLTEg IyBncm91cCBpZAo+ICsJYWlkID0gLTEgIyBBVlggaWQKPiArCXRuYW1lID0gIiIKPiArfQo+ICsK PiArQkVHSU4gewo+ICsJIyBJbXBsZW1lbnRhdGlvbiBlcnJvciBjaGVja2luZwo+ICsJYXdrY2hl Y2tlZCA9IGNoZWNrX2F3a19pbXBsZW1lbnQoKQo+ICsJaWYgKGF3a2NoZWNrZWQgIT0gIiIpIHsK PiArCQlwcmludCAiRXJyb3I6ICIgYXdrY2hlY2tlZCA+ICIvZGV2L3N0ZGVyciIKPiArCQlwcmlu dCAiUGxlYXNlIHRyeSB0byB1c2UgZ2F3ay4iID4gIi9kZXYvc3RkZXJyIgo+ICsJCWV4aXQgMQo+ ICsJfQo+ICsKPiArCSMgU2V0dXAgZ2VuZXJhdGluZyB0YWJsZXMKPiArCXByaW50ICIvKiB4ODYg b3Bjb2RlIG1hcCBnZW5lcmF0ZWQgZnJvbSB4ODYtb3Bjb2RlLW1hcC50eHQgKi8iCj4gKwlwcmlu dCAiLyogRG8gbm90IGNoYW5nZSB0aGlzIGNvZGUuICovXG4iCj4gKwlnZ2lkID0gMQo+ICsJZ2Vp ZCA9IDEKPiArCWdhaWQgPSAwCj4gKwlkZWxldGUgZXRhYmxlCj4gKwlkZWxldGUgZ3RhYmxlCj4g KwlkZWxldGUgYXRhYmxlCj4gKwo+ICsJb3BuZF9leHByID0gIl5bQS1aYS16L10iCj4gKwlleHRf ZXhwciA9ICJeXFwoIgo+ICsJc2VwX2V4cHIgPSAiXlxcfCQiCj4gKwlncm91cF9leHByID0gIl5H cnBbMC05QS1aYS16XSsiCj4gKwo+ICsJaW1tX2V4cHIgPSAiXltJSkFPTF1bYS16XSIKPiArCWlt bV9mbGFnWyJJYiJdID0gIklOQVRfTUFLRV9JTU0oSU5BVF9JTU1fQllURSkiCj4gKwlpbW1fZmxh Z1siSmIiXSA9ICJJTkFUX01BS0VfSU1NKElOQVRfSU1NX0JZVEUpIgo+ICsJaW1tX2ZsYWdbIkl3 Il0gPSAiSU5BVF9NQUtFX0lNTShJTkFUX0lNTV9XT1JEKSIKPiArCWltbV9mbGFnWyJJZCJdID0g IklOQVRfTUFLRV9JTU0oSU5BVF9JTU1fRFdPUkQpIgo+ICsJaW1tX2ZsYWdbIklxIl0gPSAiSU5B VF9NQUtFX0lNTShJTkFUX0lNTV9RV09SRCkiCj4gKwlpbW1fZmxhZ1siQXAiXSA9ICJJTkFUX01B S0VfSU1NKElOQVRfSU1NX1BUUikiCj4gKwlpbW1fZmxhZ1siSXoiXSA9ICJJTkFUX01BS0VfSU1N KElOQVRfSU1NX1ZXT1JEMzIpIgo+ICsJaW1tX2ZsYWdbIkp6Il0gPSAiSU5BVF9NQUtFX0lNTShJ TkFUX0lNTV9WV09SRDMyKSIKPiArCWltbV9mbGFnWyJJdiJdID0gIklOQVRfTUFLRV9JTU0oSU5B VF9JTU1fVldPUkQpIgo+ICsJaW1tX2ZsYWdbIk9iIl0gPSAiSU5BVF9NT0ZGU0VUIgo+ICsJaW1t X2ZsYWdbIk92Il0gPSAiSU5BVF9NT0ZGU0VUIgo+ICsJaW1tX2ZsYWdbIkx4Il0gPSAiSU5BVF9N QUtFX0lNTShJTkFUX0lNTV9CWVRFKSIKPiArCj4gKwltb2RybV9leHByID0gIl4oW0NERUdNTlBR UlNVVlcvXVthLXpdK3xOVEF8VFswMTJdKSIKPiArCWZvcmNlNjRfZXhwciA9ICJcXChbZGZdNjRc XCkiCj4gKwlyZXhfZXhwciA9ICJeUkVYKFxcLltYUldCXSspKiIKPiArCWZwdV9leHByID0gIl5F U0MiICMgVE9ETwo+ICsKPiArCWxwcmVmaXgxX2V4cHIgPSAiXFwoKDY2fCFGMylcXCkiCj4gKwls cHJlZml4Ml9leHByID0gIlxcKEYzXFwpIgo+ICsJbHByZWZpeDNfZXhwciA9ICJcXCgoRjJ8IUYz fDY2XFwmRjIpXFwpIgo+ICsJbHByZWZpeF9leHByID0gIlxcKCg2NnxGMnxGMylcXCkiCj4gKwlt YXhfbHByZWZpeCA9IDQKPiArCj4gKwkjIEFsbCBvcGNvZGVzIHN0YXJ0aW5nIHdpdGggbG93ZXIt Y2FzZSAndicgb3Igd2l0aCAodjEpIHN1cGVyc2NyaXB0Cj4gKwkjIGFjY2VwdHMgVkVYIHByZWZp eAo+ICsJdmV4b2tfb3Bjb2RlX2V4cHIgPSAiXnYuKiIKPiArCXZleG9rX2V4cHIgPSAiXFwodjFc XCkiCj4gKwkjIEFsbCBvcGNvZGVzIHdpdGggKHYpIHN1cGVyc2NyaXB0IHN1cHBvcnRzICpvbmx5 KiBWRVggcHJlZml4Cj4gKwl2ZXhvbmx5X2V4cHIgPSAiXFwodlxcKSIKPiArCj4gKwlwcmVmaXhf ZXhwciA9ICJcXChQcmVmaXhcXCkiCj4gKwlwcmVmaXhfbnVtWyJPcGVyYW5kLVNpemUiXSA9ICJJ TkFUX1BGWF9PUE5EU1oiCj4gKwlwcmVmaXhfbnVtWyJSRVBORSJdID0gIklOQVRfUEZYX1JFUE5F Igo+ICsJcHJlZml4X251bVsiUkVQL1JFUEUiXSA9ICJJTkFUX1BGWF9SRVBFIgo+ICsJcHJlZml4 X251bVsiWEFDUVVJUkUiXSA9ICJJTkFUX1BGWF9SRVBORSIKPiArCXByZWZpeF9udW1bIlhSRUxF QVNFIl0gPSAiSU5BVF9QRlhfUkVQRSIKPiArCXByZWZpeF9udW1bIkxPQ0siXSA9ICJJTkFUX1BG WF9MT0NLIgo+ICsJcHJlZml4X251bVsiU0VHPUNTIl0gPSAiSU5BVF9QRlhfQ1MiCj4gKwlwcmVm aXhfbnVtWyJTRUc9RFMiXSA9ICJJTkFUX1BGWF9EUyIKPiArCXByZWZpeF9udW1bIlNFRz1FUyJd ID0gIklOQVRfUEZYX0VTIgo+ICsJcHJlZml4X251bVsiU0VHPUZTIl0gPSAiSU5BVF9QRlhfRlMi Cj4gKwlwcmVmaXhfbnVtWyJTRUc9R1MiXSA9ICJJTkFUX1BGWF9HUyIKPiArCXByZWZpeF9udW1b IlNFRz1TUyJdID0gIklOQVRfUEZYX1NTIgo+ICsJcHJlZml4X251bVsiQWRkcmVzcy1TaXplIl0g PSAiSU5BVF9QRlhfQUREUlNaIgo+ICsJcHJlZml4X251bVsiVkVYKzFieXRlIl0gPSAiSU5BVF9Q RlhfVkVYMiIKPiArCXByZWZpeF9udW1bIlZFWCsyYnl0ZSJdID0gIklOQVRfUEZYX1ZFWDMiCj4g Kwo+ICsJY2xlYXJfdmFycygpCj4gK30KPiArCj4gK2Z1bmN0aW9uIHNlbWFudGljX2Vycm9yKG1z Zykgewo+ICsJcHJpbnQgIlNlbWFudGljIGVycm9yIGF0ICIgTlIgIjogIiBtc2cgPiAiL2Rldi9z dGRlcnIiCj4gKwlleGl0IDEKPiArfQo+ICsKPiArZnVuY3Rpb24gZGVidWcobXNnKSB7Cj4gKwlw cmludCAiREVCVUc6ICIgbXNnCj4gK30KPiArCj4gK2Z1bmN0aW9uIGFycmF5X3NpemUoYXJyLCAg IGksYykgewo+ICsJYyA9IDAKPiArCWZvciAoaSBpbiBhcnIpCj4gKwkJYysrCj4gKwlyZXR1cm4g Ywo+ICt9Cj4gKwo+ICsvXlRhYmxlOi8gewo+ICsJcHJpbnQgIi8qICIgJDAgIiAqLyIKPiArCWlm ICh0bmFtZSAhPSAiIikKPiArCQlzZW1hbnRpY19lcnJvcigiSGl0IFRhYmxlOiBiZWZvcmUgRW5k VGFibGU6LiIpOwo+ICt9Cj4gKwo+ICsvXlJlZmVycmVyOi8gewo+ICsJaWYgKE5GICE9IDEpIHsK PiArCQkjIGVzY2FwZSBvcGNvZGUgdGFibGUKPiArCQlyZWYgPSAiIgo+ICsJCWZvciAoaSA9IDI7 IGkgPD0gTkY7IGkrKykKPiArCQkJcmVmID0gcmVmICRpCj4gKwkJZWlkID0gZXNjYXBlW3JlZl0K PiArCQl0bmFtZSA9IHNwcmludGYoImluYXRfZXNjYXBlX3RhYmxlXyVkIiwgZWlkKQo+ICsJfQo+ ICt9Cj4gKwo+ICsvXkFWWGNvZGU6LyB7Cj4gKwlpZiAoTkYgIT0gMSkgewo+ICsJCSMgQVZYL2Vz Y2FwZSBvcGNvZGUgdGFibGUKPiArCQlhaWQgPSAkMgo+ICsJCWlmIChnYWlkIDw9IGFpZCkKPiAr CQkJZ2FpZCA9IGFpZCArIDEKPiArCQlpZiAodG5hbWUgPT0gIiIpCSMgQVZYIG9ubHkgb3Bjb2Rl IHRhYmxlCj4gKwkJCXRuYW1lID0gc3ByaW50ZigiaW5hdF9hdnhfdGFibGVfJWQiLCAkMikKPiAr CX0KPiArCWlmIChhaWQgPT0gLTEgJiYgZWlkID09IC0xKQkjIHByaW1hcnkgb3Bjb2RlIHRhYmxl Cj4gKwkJdG5hbWUgPSAiaW5hdF9wcmltYXJ5X3RhYmxlIgo+ICt9Cj4gKwo+ICsvXkdycFRhYmxl Oi8gewo+ICsJcHJpbnQgIi8qICIgJDAgIiAqLyIKPiArCWlmICghKCQyIGluIGdyb3VwKSkKPiAr CQlzZW1hbnRpY19lcnJvcigiTm8gZ3JvdXA6ICIgJDIgKQo+ICsJZ2lkID0gZ3JvdXBbJDJdCj4g Kwl0bmFtZSA9ICJpbmF0X2dyb3VwX3RhYmxlXyIgZ2lkCj4gK30KPiArCj4gK2Z1bmN0aW9uIHBy aW50X3RhYmxlKHRibCxuYW1lLGZtdCxuKQo+ICt7Cj4gKwlwcmludCAiY29uc3QgaW5zbl9hdHRy X3QgIiBuYW1lICIgPSB7Igo+ICsJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewo+ICsJCWlkID0g c3ByaW50ZihmbXQsIGkpCj4gKwkJaWYgKHRibFtpZF0pCj4gKwkJCXByaW50ICIgICAgWyIgaWQg Il0gPSAiIHRibFtpZF0gIiwiCj4gKwl9Cj4gKwlwcmludCAifTsiCj4gK30KPiArCj4gKy9eRW5k VGFibGUvIHsKPiArCWlmIChnaWQgIT0gLTEpIHsKPiArCQkjIHByaW50IGdyb3VwIHRhYmxlcwo+ ICsJCWlmIChhcnJheV9zaXplKHRhYmxlKSAhPSAwKSB7Cj4gKwkJCXByaW50X3RhYmxlKHRhYmxl LCB0bmFtZSAiW0lOQVRfR1JPVVBfVEFCTEVfU0laRV0iLAo+ICsJCQkJICAgICIweCV4IiwgOCkK PiArCQkJZ3RhYmxlW2dpZCwwXSA9IHRuYW1lCj4gKwkJfQo+ICsJCWlmIChhcnJheV9zaXplKGxw dGFibGUxKSAhPSAwKSB7Cj4gKwkJCXByaW50X3RhYmxlKGxwdGFibGUxLCB0bmFtZSAiXzFbSU5B VF9HUk9VUF9UQUJMRV9TSVpFXSIsCj4gKwkJCQkgICAgIjB4JXgiLCA4KQo+ICsJCQlndGFibGVb Z2lkLDFdID0gdG5hbWUgIl8xIgo+ICsJCX0KPiArCQlpZiAoYXJyYXlfc2l6ZShscHRhYmxlMikg IT0gMCkgewo+ICsJCQlwcmludF90YWJsZShscHRhYmxlMiwgdG5hbWUgIl8yW0lOQVRfR1JPVVBf VEFCTEVfU0laRV0iLAo+ICsJCQkJICAgICIweCV4IiwgOCkKPiArCQkJZ3RhYmxlW2dpZCwyXSA9 IHRuYW1lICJfMiIKPiArCQl9Cj4gKwkJaWYgKGFycmF5X3NpemUobHB0YWJsZTMpICE9IDApIHsK PiArCQkJcHJpbnRfdGFibGUobHB0YWJsZTMsIHRuYW1lICJfM1tJTkFUX0dST1VQX1RBQkxFX1NJ WkVdIiwKPiArCQkJCSAgICAiMHgleCIsIDgpCj4gKwkJCWd0YWJsZVtnaWQsM10gPSB0bmFtZSAi XzMiCj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQkjIHByaW50IHByaW1hcnkvZXNjYXBlZCB0YWJs ZXMKPiArCQlpZiAoYXJyYXlfc2l6ZSh0YWJsZSkgIT0gMCkgewo+ICsJCQlwcmludF90YWJsZSh0 YWJsZSwgdG5hbWUgIltJTkFUX09QQ09ERV9UQUJMRV9TSVpFXSIsCj4gKwkJCQkgICAgIjB4JTAy eCIsIDI1NikKPiArCQkJZXRhYmxlW2VpZCwwXSA9IHRuYW1lCj4gKwkJCWlmIChhaWQgPj0gMCkK PiArCQkJCWF0YWJsZVthaWQsMF0gPSB0bmFtZQo+ICsJCX0KPiArCQlpZiAoYXJyYXlfc2l6ZShs cHRhYmxlMSkgIT0gMCkgewo+ICsJCQlwcmludF90YWJsZShscHRhYmxlMSx0bmFtZSAiXzFbSU5B VF9PUENPREVfVEFCTEVfU0laRV0iLAo+ICsJCQkJICAgICIweCUwMngiLCAyNTYpCj4gKwkJCWV0 YWJsZVtlaWQsMV0gPSB0bmFtZSAiXzEiCj4gKwkJCWlmIChhaWQgPj0gMCkKPiArCQkJCWF0YWJs ZVthaWQsMV0gPSB0bmFtZSAiXzEiCj4gKwkJfQo+ICsJCWlmIChhcnJheV9zaXplKGxwdGFibGUy KSAhPSAwKSB7Cj4gKwkJCXByaW50X3RhYmxlKGxwdGFibGUyLHRuYW1lICJfMltJTkFUX09QQ09E RV9UQUJMRV9TSVpFXSIsCj4gKwkJCQkgICAgIjB4JTAyeCIsIDI1NikKPiArCQkJZXRhYmxlW2Vp ZCwyXSA9IHRuYW1lICJfMiIKPiArCQkJaWYgKGFpZCA+PSAwKQo+ICsJCQkJYXRhYmxlW2FpZCwy XSA9IHRuYW1lICJfMiIKPiArCQl9Cj4gKwkJaWYgKGFycmF5X3NpemUobHB0YWJsZTMpICE9IDAp IHsKPiArCQkJcHJpbnRfdGFibGUobHB0YWJsZTMsdG5hbWUgIl8zW0lOQVRfT1BDT0RFX1RBQkxF X1NJWkVdIiwKPiArCQkJCSAgICAiMHglMDJ4IiwgMjU2KQo+ICsJCQlldGFibGVbZWlkLDNdID0g dG5hbWUgIl8zIgo+ICsJCQlpZiAoYWlkID49IDApCj4gKwkJCQlhdGFibGVbYWlkLDNdID0gdG5h bWUgIl8zIgo+ICsJCX0KPiArCX0KPiArCXByaW50ICIiCj4gKwljbGVhcl92YXJzKCkKPiArfQo+ ICsKPiArZnVuY3Rpb24gYWRkX2ZsYWdzKG9sZCxuZXcpIHsKPiArCWlmIChvbGQgJiYgbmV3KQo+ ICsJCXJldHVybiBvbGQgIiB8ICIgbmV3Cj4gKwllbHNlIGlmIChvbGQpCj4gKwkJcmV0dXJuIG9s ZAo+ICsJZWxzZQo+ICsJCXJldHVybiBuZXcKPiArfQo+ICsKPiArIyBjb252ZXJ0IG9wZXJhbmRz IHRvIGZsYWdzLgo+ICtmdW5jdGlvbiBjb252ZXJ0X29wZXJhbmRzKGNvdW50LG9wbmQsICAgICAg IGksaixpbW0sbW9kKQo+ICt7Cj4gKwlpbW0gPSBudWxsCj4gKwltb2QgPSBudWxsCj4gKwlmb3Ig KGogPSAxOyBqIDw9IGNvdW50OyBqKyspIHsKPiArCQlpID0gb3BuZFtqXQo+ICsJCWlmIChtYXRj aChpLCBpbW1fZXhwcikgPT0gMSkgewo+ICsJCQlpZiAoIWltbV9mbGFnW2ldKQo+ICsJCQkJc2Vt YW50aWNfZXJyb3IoIlVua25vd24gaW1tIG9wbmQ6ICIgaSkKPiArCQkJaWYgKGltbSkgewo+ICsJ CQkJaWYgKGkgIT0gIkliIikKPiArCQkJCQlzZW1hbnRpY19lcnJvcigiU2Vjb25kIElNTSBlcnJv ciIpCj4gKwkJCQlpbW0gPSBhZGRfZmxhZ3MoaW1tLCAiSU5BVF9TQ05ESU1NIikKPiArCQkJfSBl bHNlCj4gKwkJCQlpbW0gPSBpbW1fZmxhZ1tpXQo+ICsJCX0gZWxzZSBpZiAobWF0Y2goaSwgbW9k cm1fZXhwcikpCj4gKwkJCW1vZCA9ICJJTkFUX01PRFJNIgo+ICsJfQo+ICsJcmV0dXJuIGFkZF9m bGFncyhpbW0sIG1vZCkKPiArfQo+ICsKPiArL15bMC05YS1mXStcOi8gewo+ICsJaWYgKE5SID09 IDEpCj4gKwkJbmV4dAo+ICsJIyBnZXQgaW5kZXgKPiArCWlkeCA9ICIweCIgc3Vic3RyKCQxLCAx LCBpbmRleCgkMSwiOiIpIC0gMSkKPiArCWlmIChpZHggaW4gdGFibGUpCj4gKwkJc2VtYW50aWNf ZXJyb3IoIlJlZGVmaW5lICIgaWR4ICIgaW4gIiB0bmFtZSkKPiArCj4gKwkjIGNoZWNrIGlmIGVz Y2FwZWQgb3Bjb2RlCj4gKwlpZiAoImVzY2FwZSIgPT0gJDIpIHsKPiArCQlpZiAoJDMgIT0gIiMi KQo+ICsJCQlzZW1hbnRpY19lcnJvcigiTm8gZXNjYXBlZCBuYW1lIikKPiArCQlyZWYgPSAiIgo+ ICsJCWZvciAoaSA9IDQ7IGkgPD0gTkY7IGkrKykKPiArCQkJcmVmID0gcmVmICRpCj4gKwkJaWYg KHJlZiBpbiBlc2NhcGUpCj4gKwkJCXNlbWFudGljX2Vycm9yKCJSZWRlZmluZSBlc2NhcGUgKCIg cmVmICIpIikKPiArCQllc2NhcGVbcmVmXSA9IGdlaWQKPiArCQlnZWlkKysKPiArCQl0YWJsZVtp ZHhdID0gIklOQVRfTUFLRV9FU0NBUEUoIiBlc2NhcGVbcmVmXSAiKSIKPiArCQluZXh0Cj4gKwl9 Cj4gKwo+ICsJdmFyaWFudCA9IG51bGwKPiArCSMgY29udmVydHMKPiArCWkgPSAyCj4gKwl3aGls ZSAoaSA8PSBORikgewo+ICsJCW9wY29kZSA9ICQoaSsrKQo+ICsJCWRlbGV0ZSBvcG5kcwo+ICsJ CWV4dCA9IG51bGwKPiArCQlmbGFncyA9IG51bGwKPiArCQlvcG5kID0gbnVsbAo+ICsJCSMgcGFy c2Ugb25lIG9wY29kZQo+ICsJCWlmIChtYXRjaCgkaSwgb3BuZF9leHByKSkgewo+ICsJCQlvcG5k ID0gJGkKPiArCQkJY291bnQgPSBzcGxpdCgkKGkrKyksIG9wbmRzLCAiLCIpCj4gKwkJCWZsYWdz ID0gY29udmVydF9vcGVyYW5kcyhjb3VudCwgb3BuZHMpCj4gKwkJfQo+ICsJCWlmIChtYXRjaCgk aSwgZXh0X2V4cHIpKQo+ICsJCQlleHQgPSAkKGkrKykKPiArCQlpZiAobWF0Y2goJGksIHNlcF9l eHByKSkKPiArCQkJaSsrCj4gKwkJZWxzZSBpZiAoaSA8IE5GKQo+ICsJCQlzZW1hbnRpY19lcnJv cigkaSAiIGlzIG5vdCBhIHNlcGFyYXRvciIpCj4gKwo+ICsJCSMgY2hlY2sgaWYgZ3JvdXAgb3Bj b2RlCj4gKwkJaWYgKG1hdGNoKG9wY29kZSwgZ3JvdXBfZXhwcikpIHsKPiArCQkJaWYgKCEob3Bj b2RlIGluIGdyb3VwKSkgewo+ICsJCQkJZ3JvdXBbb3Bjb2RlXSA9IGdnaWQKPiArCQkJCWdnaWQr Kwo+ICsJCQl9Cj4gKwkJCWZsYWdzID0gYWRkX2ZsYWdzKGZsYWdzLCAiSU5BVF9NQUtFX0dST1VQ KCIgZ3JvdXBbb3Bjb2RlXSAiKSIpCj4gKwkJfQo+ICsJCSMgY2hlY2sgZm9yY2Uob3IgZGVmYXVs dCkgNjRiaXQKPiArCQlpZiAobWF0Y2goZXh0LCBmb3JjZTY0X2V4cHIpKQo+ICsJCQlmbGFncyA9 IGFkZF9mbGFncyhmbGFncywgIklOQVRfRk9SQ0U2NCIpCj4gKwo+ICsJCSMgY2hlY2sgUkVYIHBy ZWZpeAo+ICsJCWlmIChtYXRjaChvcGNvZGUsIHJleF9leHByKSkKPiArCQkJZmxhZ3MgPSBhZGRf ZmxhZ3MoZmxhZ3MsICJJTkFUX01BS0VfUFJFRklYKElOQVRfUEZYX1JFWCkiKQo+ICsKPiArCQkj IGNoZWNrIGNvcHJvY2Vzc29yIGVzY2FwZSA6IFRPRE8KPiArCQlpZiAobWF0Y2gob3Bjb2RlLCBm cHVfZXhwcikpCj4gKwkJCWZsYWdzID0gYWRkX2ZsYWdzKGZsYWdzLCAiSU5BVF9NT0RSTSIpCj4g Kwo+ICsJCSMgY2hlY2sgVkVYIGNvZGVzCj4gKwkJaWYgKG1hdGNoKGV4dCwgdmV4b25seV9leHBy KSkKPiArCQkJZmxhZ3MgPSBhZGRfZmxhZ3MoZmxhZ3MsICJJTkFUX1ZFWE9LIHwgSU5BVF9WRVhP TkxZIikKPiArCQllbHNlIGlmIChtYXRjaChleHQsIHZleG9rX2V4cHIpIHx8IG1hdGNoKG9wY29k ZSwgdmV4b2tfb3Bjb2RlX2V4cHIpKQo+ICsJCQlmbGFncyA9IGFkZF9mbGFncyhmbGFncywgIklO QVRfVkVYT0siKQo+ICsKPiArCQkjIGNoZWNrIHByZWZpeGVzCj4gKwkJaWYgKG1hdGNoKGV4dCwg cHJlZml4X2V4cHIpKSB7Cj4gKwkJCWlmICghcHJlZml4X251bVtvcGNvZGVdKQo+ICsJCQkJc2Vt YW50aWNfZXJyb3IoIlVua25vd24gcHJlZml4OiAiIG9wY29kZSkKPiArCQkJZmxhZ3MgPSBhZGRf ZmxhZ3MoZmxhZ3MsICJJTkFUX01BS0VfUFJFRklYKCIgcHJlZml4X251bVtvcGNvZGVdICIpIikK PiArCQl9Cj4gKwkJaWYgKGxlbmd0aChmbGFncykgPT0gMCkKPiArCQkJY29udGludWUKPiArCQkj IGNoZWNrIGlmIGxhc3QgcHJlZml4Cj4gKwkJaWYgKG1hdGNoKGV4dCwgbHByZWZpeDFfZXhwcikp IHsKPiArCQkJbHB0YWJsZTFbaWR4XSA9IGFkZF9mbGFncyhscHRhYmxlMVtpZHhdLGZsYWdzKQo+ ICsJCQl2YXJpYW50ID0gIklOQVRfVkFSSUFOVCIKPiArCQl9Cj4gKwkJaWYgKG1hdGNoKGV4dCwg bHByZWZpeDJfZXhwcikpIHsKPiArCQkJbHB0YWJsZTJbaWR4XSA9IGFkZF9mbGFncyhscHRhYmxl MltpZHhdLGZsYWdzKQo+ICsJCQl2YXJpYW50ID0gIklOQVRfVkFSSUFOVCIKPiArCQl9Cj4gKwkJ aWYgKG1hdGNoKGV4dCwgbHByZWZpeDNfZXhwcikpIHsKPiArCQkJbHB0YWJsZTNbaWR4XSA9IGFk ZF9mbGFncyhscHRhYmxlM1tpZHhdLGZsYWdzKQo+ICsJCQl2YXJpYW50ID0gIklOQVRfVkFSSUFO VCIKPiArCQl9Cj4gKwkJaWYgKCFtYXRjaChleHQsIGxwcmVmaXhfZXhwcikpewo+ICsJCQl0YWJs ZVtpZHhdID0gYWRkX2ZsYWdzKHRhYmxlW2lkeF0sZmxhZ3MpCj4gKwkJfQo+ICsJfQo+ICsJaWYg KHZhcmlhbnQpCj4gKwkJdGFibGVbaWR4XSA9IGFkZF9mbGFncyh0YWJsZVtpZHhdLHZhcmlhbnQp Cj4gK30KPiArCj4gK0VORCB7Cj4gKwlpZiAoYXdrY2hlY2tlZCAhPSAiIikKPiArCQlleGl0IDEK PiArCSMgcHJpbnQgZXNjYXBlIG9wY29kZSBtYXAncyBhcnJheQo+ICsJcHJpbnQgIi8qIEVzY2Fw ZSBvcGNvZGUgbWFwIGFycmF5ICovIgo+ICsJcHJpbnQgInN0YXRpYyBjb25zdCBpbnNuX2F0dHJf dCAqIGNvbnN0IGluYXRfZXNjYXBlX3RhYmxlc1tJTkFUX0VTQ19NQVggKyAxXSIgXAo+ICsJICAg ICAgIltJTkFUX0xTVFBGWF9NQVggKyAxXSA9IHsiCj4gKwlmb3IgKGkgPSAwOyBpIDwgZ2VpZDsg aSsrKQo+ICsJCWZvciAoaiA9IDA7IGogPCBtYXhfbHByZWZpeDsgaisrKQo+ICsJCQlpZiAoZXRh YmxlW2ksal0pCj4gKwkJCQlwcmludCAiICAgIFsiaSJdWyJqIl0gPSAiZXRhYmxlW2ksal0iLCIK PiArCXByaW50ICJ9O1xuIgo+ICsJIyBwcmludCBncm91cCBvcGNvZGUgbWFwJ3MgYXJyYXkKPiAr CXByaW50ICIvKiBHcm91cCBvcGNvZGUgbWFwIGFycmF5ICovIgo+ICsJcHJpbnQgInN0YXRpYyBj b25zdCBpbnNuX2F0dHJfdCAqIGNvbnN0IGluYXRfZ3JvdXBfdGFibGVzW0lOQVRfR1JQX01BWCAr IDFdIlwKPiArCSAgICAgICJbSU5BVF9MU1RQRlhfTUFYICsgMV0gPSB7Igo+ICsJZm9yIChpID0g MDsgaSA8IGdnaWQ7IGkrKykKPiArCQlmb3IgKGogPSAwOyBqIDwgbWF4X2xwcmVmaXg7IGorKykK PiArCQkJaWYgKGd0YWJsZVtpLGpdKQo+ICsJCQkJcHJpbnQgIiAgICBbImkiXVsiaiJdID0gImd0 YWJsZVtpLGpdIiwiCj4gKwlwcmludCAifTtcbiIKPiArCSMgcHJpbnQgQVZYIG9wY29kZSBtYXAn cyBhcnJheQo+ICsJcHJpbnQgIi8qIEFWWCBvcGNvZGUgbWFwIGFycmF5ICovIgo+ICsJcHJpbnQg InN0YXRpYyBjb25zdCBpbnNuX2F0dHJfdCAqIGNvbnN0IGluYXRfYXZ4X3RhYmxlc1tYODZfVkVY X01fTUFYICsgMV0iXAo+ICsJICAgICAgIltJTkFUX0xTVFBGWF9NQVggKyAxXSA9IHsiCj4gKwlm b3IgKGkgPSAwOyBpIDwgZ2FpZDsgaSsrKQo+ICsJCWZvciAoaiA9IDA7IGogPCBtYXhfbHByZWZp eDsgaisrKQo+ICsJCQlpZiAoYXRhYmxlW2ksal0pCj4gKwkJCQlwcmludCAiICAgIFsiaSJdWyJq Il0gPSAiYXRhYmxlW2ksal0iLCIKPiArCXByaW50ICJ9OyIKPiArfQoKLS0gCk1paGFpIERvbsib dQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK