From: Eric Gouriou Subject: Re: [PATCH 23/23] ext4: add some tracepoints in ext4/extents.c Date: Wed, 6 Jul 2011 11:12:30 -0700 Message-ID: References: <1309970166-11770-1-git-send-email-tytso@mit.edu> <1309970166-11770-24-git-send-email-tytso@mit.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Cc: Ext4 Developers List , Aditya Kali To: "Theodore Ts'o" Return-path: Received: from smtp-out.google.com ([216.239.44.51]:34879 "EHLO smtp-out.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751987Ab1GFSMh (ORCPT ); Wed, 6 Jul 2011 14:12:37 -0400 Received: from wpaz33.hot.corp.google.com (wpaz33.hot.corp.google.com [172.24.198.97]) by smtp-out.google.com with ESMTP id p66ICb0S006071 for ; Wed, 6 Jul 2011 11:12:37 -0700 Received: from yib17 (yib17.prod.google.com [10.243.65.81]) by wpaz33.hot.corp.google.com with ESMTP id p66IBRn7029579 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Wed, 6 Jul 2011 11:12:31 -0700 Received: by yib17 with SMTP id 17so110316yib.8 for ; Wed, 06 Jul 2011 11:12:31 -0700 (PDT) In-Reply-To: <1309970166-11770-24-git-send-email-tytso@mit.edu> Sender: linux-ext4-owner@vger.kernel.org List-ID: T24gV2VkLCBKdWwgNiwgMjAxMSBhdCAwOTozNiwgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVk dT4gd3JvdGU6Cj4gRnJvbTogQWRpdHlhIEthbGkgPGFkaXR5YWthbGlAZ29vZ2xlLmNvbT4KPgo+ IFRoaXMgcGF0Y2ggYWRkcyBzb21lIHRyYWNlcG9pbnRzIGluIGV4dDQvZXh0ZW50cy5jIGFuZCB1 cGRhdGVzIGEgdHJhY2Vwb2ludCBpbgo+IGV4dDQvaW5vZGUuYy4KPgo+IFRlc3RlZDogQnVpbHQg YW5kIHJhbiB0aGUga2VybmVsIGFuZCB2ZXJpZmllZCB0aGF0IHRoZXNlIHRyYWNlcG9pbnRzIHdv cmsuCj4gQWxzbyByYW4geGZzdGVzdHMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBBZGl0eWEgS2FsaSA8 YWRpdHlha2FsaUBnb29nbGUuY29tPgo+IFNpZ25lZC1vZmYtYnk6ICJUaGVvZG9yZSBUcydvIiA8 dHl0c29AbWl0LmVkdT4KPiAtLS0KPiDCoGZzL2V4dDQvZXh0ZW50cy5jIMKgIMKgIMKgIMKgIMKg IHwgwqAgNDYgKysrKystCj4gwqBmcy9leHQ0L2lub2RlLmMgwqAgwqAgwqAgwqAgwqAgwqAgfCDC oCDCoDIgKy0KPiDCoGluY2x1ZGUvdHJhY2UvZXZlbnRzL2V4dDQuaCB8IMKgNDE1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiDCoDMgZmlsZXMgY2hhbmdlZCwg NDQzIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2ZzL2V4 dDQvZXh0ZW50cy5jIGIvZnMvZXh0NC9leHRlbnRzLmMKPiBpbmRleCAxMWJkNjE3Li4wZDNiYTU5 IDEwMDY0NAo+IC0tLSBhL2ZzL2V4dDQvZXh0ZW50cy5jCj4gKysrIGIvZnMvZXh0NC9leHRlbnRz LmMKPiBAQCAtMTk2NCw2ICsxOTY0LDcgQEAgZXh0NF9leHRfcHV0X2luX2NhY2hlKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGV4dDRfbGJsa190IGJsb2NrLAo+IMKgIMKgIMKgIMKgc3RydWN0IGV4dDRf ZXh0X2NhY2hlICpjZXg7Cj4gwqAgwqAgwqAgwqBCVUdfT04obGVuID09IDApOwo+IMKgIMKgIMKg IMKgc3Bpbl9sb2NrKCZFWFQ0X0koaW5vZGUpLT5pX2Jsb2NrX3Jlc2VydmF0aW9uX2xvY2spOwo+ ICsgwqAgwqAgwqAgdHJhY2VfZXh0NF9leHRfcHV0X2luX2NhY2hlKGlub2RlLCBibG9jaywgbGVu LCBzdGFydCk7Cj4gwqAgwqAgwqAgwqBjZXggPSAmRVhUNF9JKGlub2RlKS0+aV9jYWNoZWRfZXh0 ZW50Owo+IMKgIMKgIMKgIMKgY2V4LT5lY19ibG9jayA9IGJsb2NrOwo+IMKgIMKgIMKgIMKgY2V4 LT5lY19sZW4gPSBsZW47Cj4gQEAgLTIwNjUsNiArMjA2Niw3IEBAIGVycm91dDoKPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHNiaS0+ZXh0ZW50X2NhY2hlX21pc3NlcysrOwo+IMKgIMKgIMKgIMKg ZWxzZQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc2JpLT5leHRlbnRfY2FjaGVfaGl0cysrOwo+ ICsgwqAgwqAgwqAgdHJhY2VfZXh0NF9leHRfaW5fY2FjaGUoaW5vZGUsIGJsb2NrLCByZXQpOwo+ IMKgIMKgIMKgIMKgc3Bpbl91bmxvY2soJkVYVDRfSShpbm9kZSktPmlfYmxvY2tfcmVzZXJ2YXRp b25fbG9jayk7Cj4gwqAgwqAgwqAgwqByZXR1cm4gcmV0Owo+IMKgfQo+IEBAIC0yMTI3LDYgKzIx MjksOCBAQCBzdGF0aWMgaW50IGV4dDRfZXh0X3JtX2lkeChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1 Y3QgaW5vZGUgKmlub2RlLAo+IMKgIMKgIMKgIMKgaWYgKGVycikKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHJldHVybiBlcnI7Cj4gwqAgwqAgwqAgwqBleHRfZGVidWcoImluZGV4IGlzIGVtcHR5 LCByZW1vdmUgaXQsIGZyZWUgYmxvY2sgJWxsdVxuIiwgbGVhZik7Cj4gKyDCoCDCoCDCoCB0cmFj ZV9leHQ0X2V4dF9ybV9pZHgoaW5vZGUsIGxlYWYpOwo+ICsKPiDCoCDCoCDCoCDCoGV4dDRfZnJl ZV9ibG9ja3MoaGFuZGxlLCBpbm9kZSwgTlVMTCwgbGVhZiwgMSwKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBFWFQ0X0ZSRUVfQkxPQ0tTX01FVEFEQVRBIHwgRVhUNF9GUkVF X0JMT0NLU19GT1JHRVQpOwo+IMKgIMKgIMKgIMKgcmV0dXJuIGVycjsKPiBAQCAtMjIxMiw2ICsy MjE2LDkgQEAgc3RhdGljIGludCBleHQ0X3JlbW92ZV9ibG9ja3MoaGFuZGxlX3QgKmhhbmRsZSwg c3RydWN0IGlub2RlICppbm9kZSwKPiDCoCDCoCDCoCDCoCAqLwo+IMKgIMKgIMKgIMKgZmxhZ3Mg fD0gRVhUNF9GUkVFX0JMT0NLU19OT0ZSRUVfRklSU1RfQ0xVU1RFUjsKPgo+ICsgwqAgwqAgwqAg dHJhY2VfZXh0NF9yZW1vdmVfYmxvY2tzKGlub2RlLCBjcHVfdG9fbGUzMihleC0+ZWVfYmxvY2sp LAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBleHQ0 X2V4dF9wYmxvY2soZXgpLCBlZV9sZW4sIGZyb20sCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRvLCAqcGFydGlhbF9jbHVzdGVyKTsKCkluIGFsbCB0 aGUgdHJhY2UgcG9pbnRzIHRoYXQgY2FwdHVyZSB0aGUgbG9naWNhbCBibG9jay9waHlzaWNhbApi bG9jay9sZW5ndGggb2YgYW4gZXh0ZW50LCBpdCB3b3VsZCBiZSBuaWNlciB0byBwYXNzIHRoZSBl eHRlbnQgaXRzZWxmCmFzIGEgcGFyYW1ldGVyIGFuZCBwZXJmb3JtIHRoZSBleHRyYWN0aW9uIGlu IHRoZSBUUF9mYXN0X2Fzc2lnbigpCmJsb2NrLiBUaGlzIHJlcXVpcmVzIGFkZGluZyBhbiAjaW5j bHVkZSA8ZXh0NF9leHRlbnRzLmg+IGFib3ZlIHRoZQppbmNsdWRlIG9mIDx0cmFjZS90cmFjZV9l dmVudHMvZXh0NC5oPiBpbiBmcy9leHQ0L3N1cGVyLmMgaW4gb3JkZXIgdG8KaGF2ZSBleHQ0X2V4 dF9wYmxvY2soKSBhbmQgZXh0NF9leHRfZ2V0X2FjdHVhbF9sZW4oKSBhdmFpbGFibGUuCgpCeSBp dHNlbGYgdGhpcyBzaG91bGQgbm90IGJlIGdyb3VuZCB0byByZXNwaW4gdGhlIHdob2xlIHBhdGNo IHNlcmllcywKYSBmb2xsb3ctb24gY2xlYW51cCBwYXRjaCB3b3VsZCBkbyAoSSB2b2x1bnRlZXIg dG8gY3JlYXRlIG9uZSBpZgpkZXNpcmVkKS4gRm9ydHVuYXRlbHkgdGhpcyB3b3VsZG4ndCBjYXVz ZSB0aGUgdHJhY2UgcmVjb3JkIGZvcm1hdCB0bwpjaGFuZ2UsIHNvIGl0IHdvdWxkbid0IGNhdXNl IGFueSBiYWNrd2FyZC9mb3J3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUuCgogUmVnYXJkcyAtIEVy aWMKCj4gwqAgwqAgwqAgwqAvKgo+IMKgIMKgIMKgIMKgICogSWYgd2UgaGF2ZSBhIHBhcnRpYWwg Y2x1c3RlciwgYW5kIGl0J3MgZGlmZmVyZW50IGZyb20gdGhlCj4gwqAgwqAgwqAgwqAgKiBjbHVz dGVyIG9mIHRoZSBsYXN0IGJsb2NrLCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgZnJlZSB0aGUKPiBA QCAtMjMyNiw2ICsyMzMzLDkgQEAgZXh0NF9leHRfcm1fbGVhZihoYW5kbGVfdCAqaGFuZGxlLCBz dHJ1Y3QgaW5vZGUgKmlub2RlLAo+IMKgIMKgIMKgIMKgZXhfZWVfYmxvY2sgPSBsZTMyX3RvX2Nw dShleC0+ZWVfYmxvY2spOwo+IMKgIMKgIMKgIMKgZXhfZWVfbGVuID0gZXh0NF9leHRfZ2V0X2Fj dHVhbF9sZW4oZXgpOwo+Cj4gKyDCoCDCoCDCoCB0cmFjZV9leHQ0X2V4dF9ybV9sZWFmKGlub2Rl LCBzdGFydCwgZXhfZWVfYmxvY2ssIGV4dDRfZXh0X3BibG9jayhleCksCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGV4X2VlX2xlbiwgKnBhcnRpYWxfY2x1 c3Rlcik7Cj4gKwo+IMKgIMKgIMKgIMKgd2hpbGUgKGV4ID49IEVYVF9GSVJTVF9FWFRFTlQoZWgp ICYmCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBleF9lZV9ibG9jayArIGV4 X2VlX2xlbiA+IHN0YXJ0KSB7Cj4KPiBAQCAtMjU4Miw2ICsyNTkyLDggQEAgc3RhdGljIGludCBl eHQ0X2V4dF9yZW1vdmVfc3BhY2Uoc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxrX3Qgc3Rh cnQsCj4gwqBhZ2FpbjoKPiDCoCDCoCDCoCDCoGV4dDRfZXh0X2ludmFsaWRhdGVfY2FjaGUoaW5v ZGUpOwo+Cj4gKyDCoCDCoCDCoCB0cmFjZV9leHQ0X2V4dF9yZW1vdmVfc3BhY2UoaW5vZGUsIHN0 YXJ0LCBkZXB0aCk7Cj4gKwo+IMKgIMKgIMKgIMKgLyoKPiDCoCDCoCDCoCDCoCAqIFdlIHN0YXJ0 IHNjYW5uaW5nIGZyb20gcmlnaHQgc2lkZSwgZnJlZWluZyBhbGwgdGhlIGJsb2Nrcwo+IMKgIMKg IMKgIMKgICogYWZ0ZXIgaV9zaXplIGFuZCB3YWxraW5nIGludG8gdGhlIHRyZWUgZGVwdGgtd2lz ZS4KPiBAQCAtMjY3Niw2ICsyNjg4LDkgQEAgYWdhaW46Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB9Cj4gwqAgwqAgwqAgwqB9Cj4KPiArIMKgIMKgIMKgIHRyYWNlX2V4dDRfZXh0X3JlbW92ZV9z cGFjZV9kb25lKGlub2RlLCBzdGFydCwgZGVwdGgsIHBhcnRpYWxfY2x1c3RlciwKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHBhdGgtPnBfaGRyLT5laF9lbnRyaWVzKTsKPiAr Cj4gwqAgwqAgwqAgwqAvKiBJZiB3ZSBzdGlsbCBoYXZlIHNvbWV0aGluZyBpbiB0aGUgcGFydGlh bCBjbHVzdGVyIGFuZCB3ZSBoYXZlIHJlbW92ZWQKPiDCoCDCoCDCoCDCoCAqIGV2ZW4gdGhlIGZp cnN0IGV4dGVudCwgdGhlbiB3ZSBzaG91bGQgZnJlZSB0aGUgYmxvY2tzIGluIHRoZSBwYXJ0aWFs Cj4gwqAgwqAgwqAgwqAgKiBjbHVzdGVyIGFzIHdlbGwuICovCj4gQEAgLTMyOTAsNiArMzMwNSwx MCBAQCBzdGF0aWMgaW50IGV4dDRfZmluZF9kZWxhbGxvY19yYW5nZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICogZGV0ZWN0IHRoYXQg aGVyZS4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAqLwo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHJhY2VfZXh0NF9maW5kX2RlbGFsbG9j X3JhbmdlKGlub2RlLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgbGJsa19zdGFydCwgbGJsa19lbmQsCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZWFyY2hfaGludF9y ZXZlcnNlLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgMCwgaSk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBy ZXR1cm4gMDsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPgo+IEBAIC0zMzE3LDYgKzMzMzYs MTAgQEAgc3RhdGljIGludCBleHQ0X2ZpbmRfZGVsYWxsb2NfcmFuZ2Uoc3RydWN0IGlub2RlICpp bm9kZSwKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGJ1ZmZlcl9k ZWxheShiaCkpIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRyYWNlX2V4dDRfZmluZF9kZWxhbGxvY19yYW5nZShpbm9k ZSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGxibGtfc3RhcnQsIGxibGtfZW5kLAo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg c2VhcmNoX2hpbnRfcmV2ZXJzZSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDEsIGkpOwo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIDE7Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBpZiAoc2VhcmNoX2hpbnRfcmV2ZXJzZSkKPiBAQCAtMzMzOSw2ICszMzYyLDggQEAg bmV4dHBhZ2U6Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpID0gaW5kZXggPDwgKFBBR0VfQ0FD SEVfU0hJRlQgLSBpbm9kZS0+aV9ibGtiaXRzKTsKPiDCoCDCoCDCoCDCoH0KPgo+ICsgwqAgwqAg wqAgdHJhY2VfZXh0NF9maW5kX2RlbGFsbG9jX3JhbmdlKGlub2RlLCBsYmxrX3N0YXJ0LCBsYmxr X2VuZCwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHNlYXJjaF9oaW50X3JldmVyc2UsIDAsIDApOwo+IMKgIMKgIMKgIMKgcmV0dXJu IDA7Cj4gwqB9Cj4KPiBAQCAtMzQwNCw2ICszNDI5LDggQEAgZ2V0X3Jlc2VydmVkX2NsdXN0ZXJf YWxsb2Moc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxrX3QgbGJsa19zdGFydCwKPiDCoCDC oCDCoCDCoC8qIG1heCBwb3NzaWJsZSBjbHVzdGVycyBmb3IgdGhpcyBhbGxvY2F0aW9uICovCj4g wqAgwqAgwqAgwqBhbGxvY2F0ZWRfY2x1c3RlcnMgPSBhbGxvY19jbHVzdGVyX2VuZCAtIGFsbG9j X2NsdXN0ZXJfc3RhcnQgKyAxOwo+Cj4gKyDCoCDCoCDCoCB0cmFjZV9leHQ0X2dldF9yZXNlcnZl ZF9jbHVzdGVyX2FsbG9jKGlub2RlLCBsYmxrX3N0YXJ0LCBudW1fYmxrcyk7Cj4gKwo+IMKgIMKg IMKgIMKgLyogQ2hlY2sgdG93YXJkcyBsZWZ0IHNpZGUgKi8KPiDCoCDCoCDCoCDCoGNfb2Zmc2V0 ID0gbGJsa19zdGFydCAmIChzYmktPnNfY2x1c3Rlcl9yYXRpbyAtIDEpOwo+IMKgIMKgIMKgIMKg aWYgKGNfb2Zmc2V0KSB7Cj4gQEAgLTM0NDMsNiArMzQ3MCw5IEBAIGV4dDRfZXh0X2hhbmRsZV91 bmluaXRpYWxpemVkX2V4dGVudHMoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9k ZSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGZsYWdzLCBhbGxvY2F0ZWQpOwo+IMKgIMKg IMKgIMKgZXh0NF9leHRfc2hvd19sZWFmKGlub2RlLCBwYXRoKTsKPgo+ICsgwqAgwqAgwqAgdHJh Y2VfZXh0NF9leHRfaGFuZGxlX3VuaW5pdGlhbGl6ZWRfZXh0ZW50cyhpbm9kZSwgbWFwLCBhbGxv Y2F0ZWQsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBuZXdibG9jayk7Cj4gKwo+IMKgIMKgIMKgIMKg LyogZ2V0X2Jsb2NrKCkgYmVmb3JlIHN1Ym1pdCB0aGUgSU8sIHNwbGl0IHRoZSBleHRlbnQgKi8K PiDCoCDCoCDCoCDCoGlmICgoZmxhZ3MgJiBFWFQ0X0dFVF9CTE9DS1NfUFJFX0lPKSkgewo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0ID0gZXh0NF9zcGxpdF91bndyaXR0ZW5fZXh0ZW50cyho YW5kbGUsIGlub2RlLCBtYXAsCj4gQEAgLTM1NjIsNyArMzU5Miw3IEBAIG91dDI6Cj4gwqAqIGdl dF9pbXBsaWVkX2NsdXN0ZXJfYWxsb2MgLSBjaGVjayB0byBzZWUgaWYgdGhlIHJlcXVlc3RlZAo+ IMKgKiBhbGxvY2F0aW9uIChpbiB0aGUgbWFwIHN0cnVjdHVyZSkgb3ZlcmxhcHMgd2l0aCBhIGNs dXN0ZXIgYWxyZWFkeQo+IMKgKiBhbGxvY2F0ZWQgaW4gYW4gZXh0ZW50Lgo+IC0gKiDCoCDCoCBA c2JpIMKgIMKgVGhlIGV4dDQtc3BlY2lmaWMgc3VwZXJibG9jayBzdHJ1Y3R1cmUKPiArICogwqAg wqAgQHNiIMKgIMKgIFRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2sgc3RydWN0dXJlCj4gwqAqIMKg IMKgIEBtYXAgwqAgwqBUaGUgcmVxdWVzdGVkIGxibGstPnBibGsgbWFwcGluZwo+IMKgKiDCoCDC oCBAZXggwqAgwqAgVGhlIGV4dGVudCBzdHJ1Y3R1cmUgd2hpY2ggbWlnaHQgY29udGFpbiBhbiBp bXBsaWVkCj4gwqAqIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNsdXN0ZXIgYWxsb2Nh dGlvbgo+IEBAIC0zNTk5LDExICszNjI5LDEyIEBAIG91dDI6Cj4gwqAqIGV4dDRfZXh0X21hcF9i bG9ja3MoKSB3aWxsIHRoZW4gYWxsb2NhdGUgb25lIG9yIG1vcmUgbmV3IGNsdXN0ZXJzCj4gwqAq IGJ5IGNhbGxpbmcgZXh0NF9tYl9uZXdfYmxvY2tzKCkuCj4gwqAqLwo+IC1zdGF0aWMgaW50IGdl dF9pbXBsaWVkX2NsdXN0ZXJfYWxsb2Moc3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpLAo+ICtzdGF0 aWMgaW50IGdldF9pbXBsaWVkX2NsdXN0ZXJfYWxsb2Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBz dHJ1Y3QgZXh0NF9tYXBfYmxvY2tzICptYXAsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3RydWN0IGV4dDRfZXh0ZW50ICpleCwKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3Qg ZXh0NF9leHRfcGF0aCAqcGF0aCkKPiDCoHsKPiArIMKgIMKgIMKgIHN0cnVjdCBleHQ0X3NiX2lu Zm8gKnNiaSA9IEVYVDRfU0Ioc2IpOwo+IMKgIMKgIMKgIMKgZXh0NF9sYmxrX3QgY19vZmZzZXQg PSBtYXAtPm1fbGJsayAmIChzYmktPnNfY2x1c3Rlcl9yYXRpby0xKTsKPiDCoCDCoCDCoCDCoGV4 dDRfbGJsa190IGV4X2NsdXN0ZXJfc3RhcnQsIGV4X2NsdXN0ZXJfZW5kOwo+IMKgIMKgIMKgIMKg ZXh0NF9sYmxrX3QgcnJfY2x1c3Rlcl9zdGFydCwgcnJfY2x1c3Rlcl9lbmQ7Cj4gQEAgLTM2NTIs OCArMzY4MywxMiBAQCBzdGF0aWMgaW50IGdldF9pbXBsaWVkX2NsdXN0ZXJfYWxsb2Moc3RydWN0 IGV4dDRfc2JfaW5mbyAqc2JpLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ZXh0NF9sYmxrX3QgbmV4dCA9IGV4dDRfZXh0X25leHRfYWxsb2NhdGVkX2Jsb2NrKHBhdGgpOwo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbWFwLT5tX2xlbiA9IG1pbihtYXAt Pm1fbGVuLCBuZXh0IC0gbWFwLT5tX2xibGspOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRyYWNlX2V4dDRfZ2V0X2ltcGxpZWRfY2x1c3Rl cl9hbGxvY19leGl0KHNiLCBtYXAsIDEpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJu IDE7Cj4gwqAgwqAgwqAgwqB9Cj4gKwo+ICsgwqAgwqAgwqAgdHJhY2VfZXh0NF9nZXRfaW1wbGll ZF9jbHVzdGVyX2FsbG9jX2V4aXQoc2IsIG1hcCwgMCk7Cj4gwqAgwqAgwqAgwqByZXR1cm4gMDsK PiDCoH0KPgo+IEBAIC0zNzYyLDYgKzM3OTcsOSBAQCBpbnQgZXh0NF9leHRfbWFwX2Jsb2Nrcyho YW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgICogd2Ugc3BsaXQgb3V0IGluaXRpYWxpemVkIHBvcnRpb25zIGR1cmluZyBhIHdyaXRl Lgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICovCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBl ZV9sZW4gPSBleHQ0X2V4dF9nZXRfYWN0dWFsX2xlbihleCk7Cj4gKwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgdHJhY2VfZXh0NF9leHRfc2hvd19leHRlbnQoaW5vZGUsIGVlX2Jsb2NrLCBlZV9z dGFydCwgZWVfbGVuKTsKPiArCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBpZiBmb3VuZCBl eHRlbnQgY292ZXJzIGJsb2NrLCBzaW1wbHkgcmV0dXJuIGl0ICovCj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBpZiAoaW5fcmFuZ2UobWFwLT5tX2xibGssIGVlX2Jsb2NrLCBlZV9sZW4pKSB7Cj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBuZXdibG9jayA9IG1hcC0+bV9sYmxr IC0gZWVfYmxvY2sgKyBlZV9zdGFydDsKPiBAQCAtMzg4MCw3ICszOTE4LDcgQEAgaW50IGV4dDRf ZXh0X21hcF9ibG9ja3MoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSwKPiDC oCDCoCDCoCDCoCAqIGJ5IGV4dDRfZXh0X2ZpbmRfZXh0ZW50KCkgaW1wbGllcyBhIGNsdXN0ZXIg d2UgY2FuIHVzZS4KPiDCoCDCoCDCoCDCoCAqLwo+IMKgIMKgIMKgIMKgaWYgKGNsdXN0ZXJfb2Zm c2V0ICYmIGV4ICYmCj4gLSDCoCDCoCDCoCDCoCDCoCBnZXRfaW1wbGllZF9jbHVzdGVyX2FsbG9j KHNiaSwgbWFwLCBleCwgcGF0aCkpIHsKPiArIMKgIMKgIMKgIMKgIMKgIGdldF9pbXBsaWVkX2Ns dXN0ZXJfYWxsb2MoaW5vZGUtPmlfc2IsIG1hcCwgZXgsIHBhdGgpKSB7Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBhci5sZW4gPSBhbGxvY2F0ZWQgPSBtYXAtPm1fbGVuOwo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgbmV3YmxvY2sgPSBtYXAtPm1fcGJsazsKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoG1hcC0+bV9mbGFncyB8PSBFWFQ0X01BUF9GUk9NX0NMVVNURVI7Cj4gQEAgLTM5MDEsNyAr MzkzOSw3IEBAIGludCBleHQ0X2V4dF9tYXBfYmxvY2tzKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVj dCBpbm9kZSAqaW5vZGUsCj4gwqAgwqAgwqAgwqAvKiBDaGVjayBpZiB0aGUgZXh0ZW50IGFmdGVy IHNlYXJjaGluZyB0byB0aGUgcmlnaHQgaW1wbGllcyBhCj4gwqAgwqAgwqAgwqAgKiBjbHVzdGVy IHdlIGNhbiB1c2UuICovCj4gwqAgwqAgwqAgwqBpZiAoKHNiaS0+c19jbHVzdGVyX3JhdGlvID4g MSkgJiYgZXgyICYmCj4gLSDCoCDCoCDCoCDCoCDCoCBnZXRfaW1wbGllZF9jbHVzdGVyX2FsbG9j KHNiaSwgbWFwLCBleDIsIHBhdGgpKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCBnZXRfaW1wbGllZF9j bHVzdGVyX2FsbG9jKGlub2RlLT5pX3NiLCBtYXAsIGV4MiwgcGF0aCkpIHsKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoGFyLmxlbiA9IGFsbG9jYXRlZCA9IG1hcC0+bV9sZW47Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBuZXdibG9jayA9IG1hcC0+bV9wYmxrOwo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgbWFwLT5tX2ZsYWdzIHw9IEVYVDRfTUFQX0ZST01fQ0xVU1RFUjsKPiBkaWZmIC0tZ2l0 IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCj4gaW5kZXggN2FlOGRlYy4uMjQ5 NWNmYiAxMDA2NDQKPiAtLS0gYS9mcy9leHQ0L2lub2RlLmMKPiArKysgYi9mcy9leHQ0L2lub2Rl LmMKPiBAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgZXh0NF9kYV91cGRhdGVfcmVzZXJ2ZV9zcGFj ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAo+IMKgIMKgIMKgIMKgc3RydWN0IGV4dDRfaW5vZGVfaW5m byAqZWkgPSBFWFQ0X0koaW5vZGUpOwo+Cj4gwqAgwqAgwqAgwqBzcGluX2xvY2soJmVpLT5pX2Js b2NrX3Jlc2VydmF0aW9uX2xvY2spOwo+IC0gwqAgwqAgwqAgdHJhY2VfZXh0NF9kYV91cGRhdGVf cmVzZXJ2ZV9zcGFjZShpbm9kZSwgdXNlZCk7Cj4gKyDCoCDCoCDCoCB0cmFjZV9leHQ0X2RhX3Vw ZGF0ZV9yZXNlcnZlX3NwYWNlKGlub2RlLCB1c2VkLCBxdW90YV9jbGFpbSk7Cj4gwqAgwqAgwqAg wqBpZiAodW5saWtlbHkodXNlZCA+IGVpLT5pX3Jlc2VydmVkX2RhdGFfYmxvY2tzKSkgewo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgZXh0NF9tc2coaW5vZGUtPmlfc2IsIEtFUk5fTk9USUNFLCAi JXM6IGlubyAlbHUsIHVzZWQgJWQgIgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgICJ3aXRoIG9ubHkgJWQgcmVzZXJ2ZWQgZGF0YSBibG9ja3NcbiIsCj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvdHJhY2UvZXZlbnRzL2V4dDQuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2V4dDQu aAo+IGluZGV4IDVjZTJiMmYuLjMzNjgzOTkgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS90cmFjZS9l dmVudHMvZXh0NC5oCj4gKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZXh0NC5oCj4gQEAgLTEy LDYgKzEyLDcgQEAgc3RydWN0IGV4dDRfYWxsb2NhdGlvbl9yZXF1ZXN0Owo+IMKgc3RydWN0IGV4 dDRfcHJlYWxsb2Nfc3BhY2U7Cj4gwqBzdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvOwo+IMKgc3RydWN0 IG1wYWdlX2RhX2RhdGE7Cj4gK3N0cnVjdCBleHQ0X21hcF9ibG9ja3M7Cj4KPiDCoCNkZWZpbmUg RVhUNF9JKGlub2RlKSAoY29udGFpbmVyX29mKGlub2RlLCBzdHJ1Y3QgZXh0NF9pbm9kZV9pbmZv LCB2ZnNfaW5vZGUpKQo+Cj4gQEAgLTEwMzQsMTkgKzEwMzUsMjAgQEAgVFJBQ0VfRVZFTlQoZXh0 NF9mb3JnZXQsCj4gwqApOwo+Cj4gwqBUUkFDRV9FVkVOVChleHQ0X2RhX3VwZGF0ZV9yZXNlcnZl X3NwYWNlLAo+IC0gwqAgwqAgwqAgVFBfUFJPVE8oc3RydWN0IGlub2RlICppbm9kZSwgaW50IHVz ZWRfYmxvY2tzKSwKPiArIMKgIMKgIMKgIFRQX1BST1RPKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGlu dCB1c2VkX2Jsb2NrcywgaW50IHF1b3RhX2NsYWltKSwKPgo+IC0gwqAgwqAgwqAgVFBfQVJHUyhp bm9kZSwgdXNlZF9ibG9ja3MpLAo+ICsgwqAgwqAgwqAgVFBfQVJHUyhpbm9kZSwgdXNlZF9ibG9j a3MsIHF1b3RhX2NsYWltKSwKPgo+IMKgIMKgIMKgIMKgVFBfU1RSVUNUX19lbnRyeSgKPiAtIMKg IMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZGV2X3QsIMKgZGV2IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICkKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmll bGQoIMKgIMKgIMKgIMKgaW5vX3QsIMKgaW5vIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ICkKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgdW1vZGVfdCwg bW9kZSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCApCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDC oCBfX2ZpZWxkKCDCoCDCoCDCoCDCoF9fdTY0LCDCoGlfYmxvY2tzIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgKQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBpbnQs IMKgIMKgdXNlZF9ibG9ja3MgwqAgwqAgwqAgwqAgwqAgwqAgKQo+IC0gwqAgwqAgwqAgwqAgwqAg wqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBpbnQsIMKgIMKgcmVzZXJ2ZWRfZGF0YV9ibG9ja3Mg wqAgwqApCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGludCwg wqAgwqByZXNlcnZlZF9tZXRhX2Jsb2NrcyDCoCDCoCkKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKg IF9fZmllbGQoIMKgIMKgIMKgIMKgaW50LCDCoCDCoGFsbG9jYXRlZF9tZXRhX2Jsb2NrcyDCoCAp Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGRldl90LCDCoCDC oCDCoCDCoCDCoGRldiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCApCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGlub190LCDCoCDCoCDCoCDCoCDCoGlu byDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBfX2ZpZWxkKCDCoCDCoCDCoCDCoHVtb2RlX3QsIMKgIMKgIMKgIMKgbW9kZSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKg IMKgIMKgIMKgX191NjQsIMKgIMKgIMKgIMKgIMKgaV9ibG9ja3MgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGludCwg wqAgwqAgwqAgwqAgwqAgwqB1c2VkX2Jsb2NrcyDCoCDCoCDCoCDCoCDCoCDCoCApCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGludCwgwqAgwqAgwqAgwqAgwqAg wqByZXNlcnZlZF9kYXRhX2Jsb2NrcyDCoCDCoCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9f ZmllbGQoIMKgIMKgIMKgIMKgaW50LCDCoCDCoCDCoCDCoCDCoCDCoHJlc2VydmVkX21ldGFfYmxv Y2tzIMKgIMKgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBp bnQsIMKgIMKgIMKgIMKgIMKgIMKgYWxsb2NhdGVkX21ldGFfYmxvY2tzIMKgICkKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgaW50LCDCoCDCoCDCoCDCoCDCoCDC oHF1b3RhX2NsYWltIMKgIMKgIMKgIMKgIMKgIMKgICkKPiDCoCDCoCDCoCDCoCksCj4KPiDCoCDC oCDCoCDCoFRQX2Zhc3RfYXNzaWduKAo+IEBAIC0xMDU1LDE5ICsxMDU3LDI0IEBAIFRSQUNFX0VW RU5UKGV4dDRfZGFfdXBkYXRlX3Jlc2VydmVfc3BhY2UsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBfX2VudHJ5LT5tb2RlIMKgID0gaW5vZGUtPmlfbW9kZTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoF9fZW50cnktPmlfYmxvY2tzID0gaW5vZGUtPmlfYmxvY2tzOwo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgX19lbnRyeS0+dXNlZF9ibG9ja3MgPSB1c2VkX2Jsb2NrczsKPiAtIMKgIMKgIMKg IMKgIMKgIMKgIMKgIF9fZW50cnktPnJlc2VydmVkX2RhdGFfYmxvY2tzID0gRVhUNF9JKGlub2Rl KS0+aV9yZXNlcnZlZF9kYXRhX2Jsb2NrczsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50 cnktPnJlc2VydmVkX21ldGFfYmxvY2tzID0gRVhUNF9JKGlub2RlKS0+aV9yZXNlcnZlZF9tZXRh X2Jsb2NrczsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmFsbG9jYXRlZF9tZXRh X2Jsb2NrcyA9IEVYVDRfSShpbm9kZSktPmlfYWxsb2NhdGVkX21ldGFfYmxvY2tzOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+cmVzZXJ2ZWRfZGF0YV9ibG9ja3MgPQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRVhUNF9JKGlub2RlKS0+ aV9yZXNlcnZlZF9kYXRhX2Jsb2NrczsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnkt PnJlc2VydmVkX21ldGFfYmxvY2tzID0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIEVYVDRfSShpbm9kZSktPmlfcmVzZXJ2ZWRfbWV0YV9ibG9ja3M7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5hbGxvY2F0ZWRfbWV0YV9ibG9ja3MgPQo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRVhUNF9JKGlu b2RlKS0+aV9hbGxvY2F0ZWRfbWV0YV9ibG9ja3M7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBf X2VudHJ5LT5xdW90YV9jbGFpbSA9IHF1b3RhX2NsYWltOwo+IMKgIMKgIMKgIMKgKSwKPgo+IMKg IMKgIMKgIMKgVFBfcHJpbnRrKCJkZXYgJWQsJWQgaW5vICVsdSBtb2RlIDAlbyBpX2Jsb2NrcyAl bGx1IHVzZWRfYmxvY2tzICVkICIKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJyZXNlcnZl ZF9kYXRhX2Jsb2NrcyAlZCByZXNlcnZlZF9tZXRhX2Jsb2NrcyAlZCAiCj4gLSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAiYWxsb2NhdGVkX21ldGFfYmxvY2tzICVkIiwKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgICJhbGxvY2F0ZWRfbWV0YV9ibG9ja3MgJWQgcXVvdGFfY2xhaW0gJWQiLAo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgTUFKT1IoX19lbnRyeS0+ZGV2KSwgTUlOT1IoX19l bnRyeS0+ZGV2KSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCh1bnNpZ25lZCBsb25nKSBf X2VudHJ5LT5pbm8sCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBfX2VudHJ5LT5tb2RlLCBf X2VudHJ5LT5pX2Jsb2NrcywKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF9fZW50cnktPnVz ZWRfYmxvY2tzLCBfX2VudHJ5LT5yZXNlcnZlZF9kYXRhX2Jsb2NrcywKPiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIF9fZW50cnktPnJlc2VydmVkX21ldGFfYmxvY2tzLCBfX2VudHJ5LT5hbGxv Y2F0ZWRfbWV0YV9ibG9ja3MpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5y ZXNlcnZlZF9tZXRhX2Jsb2NrcywgX19lbnRyeS0+YWxsb2NhdGVkX21ldGFfYmxvY2tzLAo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+cXVvdGFfY2xhaW0pCj4gwqApOwo+Cj4g wqBUUkFDRV9FVkVOVChleHQ0X2RhX3Jlc2VydmVfc3BhY2UsCj4gQEAgLTE1MjAsNiArMTUyNywz ODQgQEAgVFJBQ0VfRVZFTlQoZXh0NF9sb2FkX2lub2RlLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgKHVuc2lnbmVkIGxvbmcpIF9fZW50cnktPmlubykKPiDCoCk7Cj4KPiArVFJBQ0VfRVZF TlQoZXh0NF9leHRfaGFuZGxlX3VuaW5pdGlhbGl6ZWRfZXh0ZW50cywKPiArIMKgIMKgIMKgIFRQ X1BST1RPKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X21hcF9ibG9ja3MgKm1hcCwK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdW5zaWduZWQgaW50IGFsbG9jYXRlZCwgZXh0NF9m c2Jsa190IG5ld2Jsb2NrKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9BUkdTKGlub2RlLCBtYXAsIGFs bG9jYXRlZCwgbmV3YmxvY2spLAo+ICsKPiArIMKgIMKgIMKgIFRQX1NUUlVDVF9fZW50cnkoCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGlub190LCDCoCDCoCDC oCDCoCDCoGlubyDCoCDCoCDCoCDCoCDCoCDCoCApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBf X2ZpZWxkKCDCoCDCoCDCoCDCoGRldl90LCDCoCDCoCDCoCDCoCDCoGRldiDCoCDCoCDCoCDCoCDC oCDCoCApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGV4dDRf bGJsa190LCDCoCDCoGxibGsgwqAgwqAgwqAgwqAgwqAgwqApCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGV4dDRfZnNibGtfdCwgwqAgcGJsayDCoCDCoCDCoCDC oCDCoCDCoCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgdW5z aWduZWQgaW50LCDCoCBsZW4gwqAgwqAgwqAgwqAgwqAgwqAgKQo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBpbnQsIMKgIMKgIMKgIMKgIMKgIMKgZmxhZ3MgwqAg wqAgwqAgwqAgwqAgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAg wqB1bnNpZ25lZCBpbnQsIMKgIGFsbG9jYXRlZCDCoCDCoCDCoCApCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGV4dDRfZnNibGtfdCwgwqAgbmV3YmxrIMKgIMKg IMKgIMKgIMKgKQo+ICsgwqAgwqAgwqAgKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9mYXN0X2Fzc2ln bigKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmlubyDCoCDCoCDCoCDCoCDCoCDC oD0gaW5vZGUtPmlfaW5vOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ZGV2IMKg IMKgIMKgIMKgIMKgIMKgPSBpbm9kZS0+aV9zYi0+c19kZXY7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBfX2VudHJ5LT5sYmxrIMKgIMKgIMKgIMKgIMKgID0gbWFwLT5tX2xibGs7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5wYmxrIMKgIMKgIMKgIMKgIMKgID0gbWFwLT5tX3Bi bGs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5sZW4gwqAgwqAgwqAgwqAgwqAg wqA9IG1hcC0+bV9sZW47Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5mbGFncyDC oCDCoCDCoCDCoCDCoD0gbWFwLT5tX2ZsYWdzOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19l bnRyeS0+YWxsb2NhdGVkIMKgIMKgIMKgPSBhbGxvY2F0ZWQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBfX2VudHJ5LT5uZXdibGsgwqAgwqAgwqAgwqAgPSBuZXdibG9jazsKPiArIMKgIMKgIMKg ICksCj4gKwo+ICsgwqAgwqAgwqAgVFBfcHJpbnRrKCJkZXYgJWQsJWQgaW5vICVsdSBtX2xibGsg JXUgbV9wYmxrICVsbHUgbV9sZW4gJXUgZmxhZ3MgJWQiCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCAiYWxsb2NhdGVkICVkIG5ld2Jsb2NrICVsbHUiLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgTUFKT1IoX19lbnRyeS0+ZGV2KSwgTUlOT1IoX19lbnRyeS0+ZGV2KSwKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCBsb25nKSBfX2VudHJ5LT5pbm8sCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQpIF9fZW50cnktPmxibGssICh1bnNpZ25lZCBs b25nIGxvbmcpIF9fZW50cnktPnBibGssCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2Vu dHJ5LT5sZW4sIF9fZW50cnktPmZsYWdzLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHVu c2lnbmVkIGludCkgX19lbnRyeS0+YWxsb2NhdGVkLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgKHVuc2lnbmVkIGxvbmcgbG9uZykgX19lbnRyeS0+bmV3YmxrKQo+ICspOwo+ICsKPiArVFJB Q0VfRVZFTlQoZXh0NF9nZXRfaW1wbGllZF9jbHVzdGVyX2FsbG9jX2V4aXQsCj4gKyDCoCDCoCDC oCBUUF9QUk9UTyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9tYXBfYmxvY2tz ICptYXAsIGludCByZXQpLAo+ICsKPiArIMKgIMKgIMKgIFRQX0FSR1Moc2IsIG1hcCwgcmV0KSwK PiArCj4gKyDCoCDCoCDCoCBUUF9TVFJVQ1RfX2VudHJ5KAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgX19maWVsZCggwqAgwqAgwqAgwqBkZXZfdCwgwqAgwqAgwqAgwqAgwqBkZXYgwqAgwqAgKQo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBleHQ0X2xibGtfdCwg wqAgwqBsYmxrIMKgIMKgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAg wqAgwqBleHQ0X2ZzYmxrX3QsIMKgIHBibGsgwqAgwqApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBfX2ZpZWxkKCDCoCDCoCDCoCDCoHVuc2lnbmVkIGludCwgwqAgbGVuIMKgIMKgICkKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgdW5zaWduZWQgaW50LCDCoCBm bGFncyDCoCApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGlu dCwgwqAgwqAgwqAgwqAgwqAgwqByZXQgwqAgwqAgKQo+ICsgwqAgwqAgwqAgKSwKPiArCj4gKyDC oCDCoCDCoCBUUF9mYXN0X2Fzc2lnbigKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnkt PmRldiDCoCDCoD0gc2ItPnNfZGV2Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ bGJsayDCoCA9IG1hcC0+bV9sYmxrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ cGJsayDCoCA9IG1hcC0+bV9wYmxrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ bGVuIMKgIMKgPSBtYXAtPm1fbGVuOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ ZmxhZ3MgwqA9IG1hcC0+bV9mbGFnczsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnkt PnJldCDCoCDCoD0gcmV0Owo+ICsgwqAgwqAgwqAgKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9wcmlu dGsoImRldiAlZCwlZCBtX2xibGsgJXUgbV9wYmxrICVsbHUgbV9sZW4gJXUgbV9mbGFncyAldSBy ZXQgJWQiLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgTUFKT1IoX19lbnRyeS0+ZGV2KSwg TUlOT1IoX19lbnRyeS0+ZGV2KSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnkt PmxibGssICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fZW50cnktPnBibGssCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5sZW4sIF9fZW50cnktPmZsYWdzLCBfX2VudHJ5LT5yZXQp Cj4gKyk7Cj4gKwo+ICtUUkFDRV9FVkVOVChleHQ0X2V4dF9wdXRfaW5fY2FjaGUsCj4gKyDCoCDC oCDCoCBUUF9QUk9UTyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLCB1bnNp Z25lZCBpbnQgbGVuLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBleHQ0X2ZzYmxrX3Qgc3Rh cnQpLAo+ICsKPiArIMKgIMKgIMKgIFRQX0FSR1MoaW5vZGUsIGxibGssIGxlbiwgc3RhcnQpLAo+ ICsKPiArIMKgIMKgIMKgIFRQX1NUUlVDVF9fZW50cnkoCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGlub190LCDCoCDCoCDCoCDCoCDCoGlubyDCoCDCoCApCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGRldl90LCDCoCDCoCDC oCDCoCDCoGRldiDCoCDCoCApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDC oCDCoCDCoGV4dDRfbGJsa190LCDCoCDCoGxibGsgwqAgwqApCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoHVuc2lnbmVkIGludCwgwqAgbGVuIMKgIMKgICkKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9mc2Jsa190LCDC oCBzdGFydCDCoCApCj4gKyDCoCDCoCDCoCApLAo+ICsKPiArIMKgIMKgIMKgIFRQX2Zhc3RfYXNz aWduKAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+aW5vIMKgIMKgPSBpbm9kZS0+ aV9pbm87Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5kZXYgwqAgwqA9IGlub2Rl LT5pX3NiLT5zX2RldjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmxibGsgwqAg PSBsYmxrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+bGVuIMKgIMKgPSBsZW47 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5zdGFydCDCoD0gc3RhcnQ7Cj4gKyDC oCDCoCDCoCApLAo+ICsKPiArIMKgIMKgIMKgIFRQX3ByaW50aygiZGV2ICVkLCVkIGlubyAlbHUg bGJsayAldSBsZW4gJXUgc3RhcnQgJWxsdSIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBN QUpPUihfX2VudHJ5LT5kZXYpLCBNSU5PUihfX2VudHJ5LT5kZXYpLAo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgKHVuc2lnbmVkIGxvbmcpIF9fZW50cnktPmlubywKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgICh1bnNpZ25lZCkgX19lbnRyeS0+bGJsaywKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIF9fZW50cnktPmxlbiwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1bnNp Z25lZCBsb25nIGxvbmcpIF9fZW50cnktPnN0YXJ0KQo+ICspOwo+ICsKPiArVFJBQ0VfRVZFTlQo ZXh0NF9leHRfaW5fY2FjaGUsCj4gKyDCoCDCoCDCoCBUUF9QUk9UTyhzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBleHQ0X2xibGtfdCBsYmxrLCBpbnQgcmV0KSwKPiArCj4gKyDCoCDCoCDCoCBUUF9BUkdT KGlub2RlLCBsYmxrLCByZXQpLAo+ICsKPiArIMKgIMKgIMKgIFRQX1NUUlVDVF9fZW50cnkoCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGlub190LCDCoCDCoCDC oCDCoCDCoGlubyDCoCDCoCApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDC oCDCoCDCoGRldl90LCDCoCDCoCDCoCDCoCDCoGRldiDCoCDCoCApCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGV4dDRfbGJsa190LCDCoCDCoGxibGsgwqAgwqAp Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGludCwgwqAgwqAg wqAgwqAgwqAgwqByZXQgwqAgwqAgKQo+ICsgwqAgwqAgwqAgKSwKPiArCj4gKyDCoCDCoCDCoCBU UF9mYXN0X2Fzc2lnbigKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmlubyDCoCDC oD0gaW5vZGUtPmlfaW5vOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ZGV2IMKg IMKgPSBpbm9kZS0+aV9zYi0+c19kZXY7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5 LT5sYmxrIMKgID0gbGJsazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPnJldCDC oCDCoD0gcmV0Owo+ICsgwqAgwqAgwqAgKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9wcmludGsoImRl diAlZCwlZCBpbm8gJWx1IGxibGsgJXUgcmV0ICVkIiwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIE1BSk9SKF9fZW50cnktPmRldiksIE1JTk9SKF9fZW50cnktPmRldiksCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQgbG9uZykgX19lbnRyeS0+aW5vLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgKHVuc2lnbmVkKSBfX2VudHJ5LT5sYmxrLAo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+cmV0KQo+ICsKPiArKTsKPiArCj4gK1RSQUNFX0VWRU5U KGV4dDRfZmluZF9kZWxhbGxvY19yYW5nZSwKPiArIMKgIMKgIMKgIFRQX1BST1RPKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGV4dDRfbGJsa190IGZyb20sIGV4dDRfbGJsa190IHRvLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgaW50IHJldmVyc2UsIGludCBmb3VuZCwgZXh0NF9sYmxrX3QgZm91bmRf YmxrKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9BUkdTKGlub2RlLCBmcm9tLCB0bywgcmV2ZXJzZSwg Zm91bmQsIGZvdW5kX2JsayksCj4gKwo+ICsgwqAgwqAgwqAgVFBfU1RSVUNUX19lbnRyeSgKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgaW5vX3QsIMKgIMKgIMKg IMKgIMKgaW5vIMKgIMKgIMKgIMKgIMKgIMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9f ZmllbGQoIMKgIMKgIMKgIMKgZGV2X3QsIMKgIMKgIMKgIMKgIMKgZGV2IMKgIMKgIMKgIMKgIMKg IMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9s YmxrX3QsIMKgIMKgZnJvbSDCoCDCoCDCoCDCoCDCoCDCoCkKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9sYmxrX3QsIMKgIMKgdG8gwqAgwqAgwqAgwqAg wqAgwqAgwqApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2ZpZWxkKCDCoCDCoCDCoCDCoGlu dCwgwqAgwqAgwqAgwqAgwqAgwqByZXZlcnNlIMKgIMKgIMKgIMKgICkKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgaW50LCDCoCDCoCDCoCDCoCDCoCDCoGZvdW5k IMKgIMKgIMKgIMKgIMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKg IMKgIMKgZXh0NF9sYmxrX3QsIMKgIMKgZm91bmRfYmxrIMKgIMKgIMKgICkKPiArIMKgIMKgIMKg ICksCj4gKwo+ICsgwqAgwqAgwqAgVFBfZmFzdF9hc3NpZ24oCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBfX2VudHJ5LT5pbm8gwqAgwqAgwqAgwqAgwqAgwqA9IGlub2RlLT5pX2lubzsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmRldiDCoCDCoCDCoCDCoCDCoCDCoD0gaW5vZGUt Pmlfc2ItPnNfZGV2Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ZnJvbSDCoCDC oCDCoCDCoCDCoCA9IGZyb207Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT50byDC oCDCoCDCoCDCoCDCoCDCoCA9IHRvOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ cmV2ZXJzZSDCoCDCoCDCoCDCoD0gcmV2ZXJzZTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9f ZW50cnktPmZvdW5kIMKgIMKgIMKgIMKgIMKgPSBmb3VuZDsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIF9fZW50cnktPmZvdW5kX2JsayDCoCDCoCDCoD0gZm91bmRfYmxrOwo+ICsgwqAgwqAgwqAg KSwKPiArCj4gKyDCoCDCoCDCoCBUUF9wcmludGsoImRldiAlZCwlZCBpbm8gJWx1IGZyb20gJXUg dG8gJXUgcmV2ZXJzZSAlZCBmb3VuZCAlZCAiCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAi KGJsayA9ICV1KSIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBNQUpPUihfX2VudHJ5LT5k ZXYpLCBNSU5PUihfX2VudHJ5LT5kZXYpLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHVu c2lnbmVkIGxvbmcpIF9fZW50cnktPmlubywKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1 bnNpZ25lZCkgX19lbnRyeS0+ZnJvbSwgKHVuc2lnbmVkKSBfX2VudHJ5LT50bywKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPnJldmVyc2UsIF9fZW50cnktPmZvdW5kLAo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHVuc2lnbmVkKSBfX2VudHJ5LT5mb3VuZF9ibGspCj4g Kyk7Cj4gKwo+ICtUUkFDRV9FVkVOVChleHQ0X2dldF9yZXNlcnZlZF9jbHVzdGVyX2FsbG9jLAo+ ICsgwqAgwqAgwqAgVFBfUFJPVE8oc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxrX3QgbGJs aywgdW5zaWduZWQgaW50IGxlbiksCj4gKwo+ICsgwqAgwqAgwqAgVFBfQVJHUyhpbm9kZSwgbGJs aywgbGVuKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9TVFJVQ1RfX2VudHJ5KAo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBpbm9fdCwgwqAgwqAgwqAgwqAgwqBpbm8g wqAgwqAgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBkZXZf dCwgwqAgwqAgwqAgwqAgwqBkZXYgwqAgwqAgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19m aWVsZCggwqAgwqAgwqAgwqBleHQ0X2xibGtfdCwgwqAgwqBsYmxrIMKgIMKgKQo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqB1bnNpZ25lZCBpbnQsIMKgIGxlbiDC oCDCoCApCj4gKyDCoCDCoCDCoCApLAo+ICsKPiArIMKgIMKgIMKgIFRQX2Zhc3RfYXNzaWduKAo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+aW5vIMKgIMKgPSBpbm9kZS0+aV9pbm87 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5kZXYgwqAgwqA9IGlub2RlLT5pX3Ni LT5zX2RldjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmxibGsgwqAgPSBsYmxr Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+bGVuIMKgIMKgPSBsZW47Cj4gKyDC oCDCoCDCoCApLAo+ICsKPiArIMKgIMKgIMKgIFRQX3ByaW50aygiZGV2ICVkLCVkIGlubyAlbHUg bGJsayAldSBsZW4gJXUiLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgTUFKT1IoX19lbnRy eS0+ZGV2KSwgTUlOT1IoX19lbnRyeS0+ZGV2KSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ICh1bnNpZ25lZCBsb25nKSBfX2VudHJ5LT5pbm8sCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAodW5zaWduZWQpIF9fZW50cnktPmxibGssCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBf X2VudHJ5LT5sZW4pCj4gKyk7Cj4gKwo+ICtUUkFDRV9FVkVOVChleHQ0X2V4dF9zaG93X2V4dGVu dCwKPiArIMKgIMKgIMKgIFRQX1BST1RPKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGV4dDRfbGJsa190 IGxibGssIGV4dDRfZnNibGtfdCBwYmxrLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB1bnNp Z25lZCBzaG9ydCBsZW4pLAo+ICsKPiArIMKgIMKgIMKgIFRQX0FSR1MoaW5vZGUsIGxibGssIHBi bGssIGxlbiksCj4gKwo+ICsgwqAgwqAgwqAgVFBfU1RSVUNUX19lbnRyeSgKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgaW5vX3QsIMKgIMKgIMKgIMKgIMKgaW5v IMKgIMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZGV2 X3QsIMKgIMKgIMKgIMKgIMKgZGV2IMKgIMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9f ZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9sYmxrX3QsIMKgIMKgbGJsayDCoCDCoCkKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9mc2Jsa190LCDCoCBwYmxr IMKgIMKgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqB1bnNp Z25lZCBzaG9ydCwgbGVuIMKgIMKgICkKPiArIMKgIMKgIMKgICksCj4gKwo+ICsgwqAgwqAgwqAg VFBfZmFzdF9hc3NpZ24oCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5pbm8gwqAg wqA9IGlub2RlLT5pX2lubzsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmRldiDC oCDCoD0gaW5vZGUtPmlfc2ItPnNfZGV2Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRy eS0+bGJsayDCoCA9IGxibGs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5wYmxr IMKgID0gcGJsazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmxlbiDCoCDCoD0g bGVuOwo+ICsgwqAgwqAgwqAgKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9wcmludGsoImRldiAlZCwl ZCBpbm8gJWx1IGxibGsgJXUgcGJsayAlbGx1IGxlbiAldSIsCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBNQUpPUihfX2VudHJ5LT5kZXYpLCBNSU5PUihfX2VudHJ5LT5kZXYpLAo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgKHVuc2lnbmVkIGxvbmcpIF9fZW50cnktPmlubywKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCkgX19lbnRyeS0+bGJsaywKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fZW50cnktPnBibGssCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQgc2hvcnQpIF9fZW50cnktPmxlbikK PiArKTsKPiArCj4gK1RSQUNFX0VWRU5UKGV4dDRfcmVtb3ZlX2Jsb2NrcywKPiArIMKgIMKgIMKg IFRQX1BST1RPKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGV4dDRfbGJsa190IGV4X2xibGssCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCBleHQ0X2ZzYmxrX3QgZXhfcGJsaywgdW5zaWduZWQgc2hvcnQg ZXhfbGVuLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0NF9sYmxrX3QgZnJvbSwgZXh0NF9m c2Jsa190IHRvLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0NF9mc2Jsa190IHBhcnRpYWxf Y2x1c3RlciksCj4gKwo+ICsgwqAgwqAgwqAgVFBfQVJHUyhpbm9kZSwgZXhfbGJsaywgZXhfcGJs aywgZXhfbGVuLCBmcm9tLCB0bywgcGFydGlhbF9jbHVzdGVyKSwKPiArCj4gKyDCoCDCoCDCoCBU UF9TVFJVQ1RfX2VudHJ5KAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAg wqAgwqBpbm9fdCwgwqAgwqAgwqAgwqAgwqBpbm8gwqAgwqAgKQo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBkZXZfdCwgwqAgwqAgwqAgwqAgwqBkZXYgwqAgwqAg KQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBleHQ0X2xibGtf dCwgwqAgwqBlZV9sYmxrICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKg IMKgIMKgZXh0NF9mc2Jsa190LCDCoCBlZV9wYmxrICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IF9fZmllbGQoIMKgIMKgIMKgIMKgdW5zaWduZWQgc2hvcnQsIGVlX2xlbiDCoCkKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9sYmxrX3QsIMKgIMKgZnJv bSDCoCDCoCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0 NF9sYmxrX3QsIMKgIMKgdG8gwqAgwqAgwqApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2Zp ZWxkKCDCoCDCoCDCoCDCoGV4dDRfZnNibGtfdCwgwqAgcGFydGlhbCApCj4gKyDCoCDCoCDCoCAp LAo+ICsKPiArIMKgIMKgIMKgIFRQX2Zhc3RfYXNzaWduKAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgX19lbnRyeS0+aW5vIMKgIMKgIMKgIMKgIMKgIMKgPSBpbm9kZS0+aV9pbm87Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5kZXYgwqAgwqAgwqAgwqAgwqAgwqA9IGlub2RlLT5p X3NiLT5zX2RldjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmVlX2xibGsgwqAg wqAgwqAgwqA9IGV4X2xibGs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5lZV9w YmxrIMKgIMKgIMKgIMKgPSBleF9wYmxrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRy eS0+ZWVfbGVuIMKgIMKgIMKgIMKgID0gZXhfbGVuOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg X19lbnRyeS0+ZnJvbSDCoCDCoCDCoCDCoCDCoCA9IGZyb207Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBfX2VudHJ5LT50byDCoCDCoCDCoCDCoCDCoCDCoCA9IHRvOwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgX19lbnRyeS0+cGFydGlhbCDCoCDCoCDCoCDCoD0gcGFydGlhbF9jbHVzdGVyOwo+ ICsgwqAgwqAgwqAgKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9wcmludGsoImRldiAlZCwlZCBpbm8g JWx1IGV4dGVudCBbJXUoJWxsdSksICV1XSIKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJm cm9tICV1IHRvICV1IHBhcnRpYWxfY2x1c3RlciAldSIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBNQUpPUihfX2VudHJ5LT5kZXYpLCBNSU5PUihfX2VudHJ5LT5kZXYpLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgKHVuc2lnbmVkIGxvbmcpIF9fZW50cnktPmlubywKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCkgX19lbnRyeS0+ZWVfbGJsaywKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCBsb25nIGxvbmcpIF9fZW50cnktPmVlX3BibGss Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQgc2hvcnQpIF9fZW50cnktPmVl X2xlbiwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCkgX19lbnRyeS0+ZnJv bSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCkgX19lbnRyeS0+dG8sCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQpIF9fZW50cnktPnBhcnRpYWwpCj4g Kyk7Cj4gKwo+ICtUUkFDRV9FVkVOVChleHQ0X2V4dF9ybV9sZWFmLAo+ICsgwqAgwqAgwqAgVFBf UFJPVE8oc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxrX3Qgc3RhcnQsCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoGV4dDRfbGJsa190IGV4X2xibGssIGV4dDRfZnNibGtfdCBleF9wYmxr LAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB1bnNpZ25lZCBzaG9ydCBleF9sZW4sIGV4dDRf ZnNibGtfdCBwYXJ0aWFsX2NsdXN0ZXIpLAo+ICsKPiArIMKgIMKgIMKgIFRQX0FSR1MoaW5vZGUs IHN0YXJ0LCBleF9sYmxrLCBleF9wYmxrLCBleF9sZW4sIHBhcnRpYWxfY2x1c3RlciksCj4gKwo+ ICsgwqAgwqAgwqAgVFBfU1RSVUNUX19lbnRyeSgKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9f ZmllbGQoIMKgIMKgIMKgIMKgaW5vX3QsIMKgIMKgIMKgIMKgIMKgaW5vIMKgIMKgICkKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZGV2X3QsIMKgIMKgIMKgIMKg IMKgZGV2IMKgIMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKg IMKgZXh0NF9sYmxrX3QsIMKgIMKgc3RhcnQgwqAgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg X19maWVsZCggwqAgwqAgwqAgwqBleHQ0X2xibGtfdCwgwqAgwqBlZV9sYmxrICkKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9mc2Jsa190LCDCoCBlZV9w YmxrICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgc2hvcnQs IMKgIMKgIMKgIMKgIMKgZWVfbGVuIMKgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVs ZCggwqAgwqAgwqAgwqBleHQ0X2ZzYmxrX3QsIMKgIHBhcnRpYWwgKQo+ICsgwqAgwqAgwqAgKSwK PiArCj4gKyDCoCDCoCDCoCBUUF9mYXN0X2Fzc2lnbigKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IF9fZW50cnktPmlubyDCoCDCoCDCoCDCoCDCoCDCoD0gaW5vZGUtPmlfaW5vOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ZGV2IMKgIMKgIMKgIMKgIMKgIMKgPSBpbm9kZS0+aV9z Yi0+c19kZXY7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5zdGFydCDCoCDCoCDC oCDCoCDCoD0gc3RhcnQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5lZV9sYmxr IMKgIMKgIMKgIMKgPSBleF9sYmxrOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ ZWVfcGJsayDCoCDCoCDCoCDCoD0gZXhfcGJsazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9f ZW50cnktPmVlX2xlbiDCoCDCoCDCoCDCoCA9IGV4X2xlbjsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIF9fZW50cnktPnBhcnRpYWwgwqAgwqAgwqAgwqA9IHBhcnRpYWxfY2x1c3RlcjsKPiArIMKg IMKgIMKgICksCj4gKwo+ICsgwqAgwqAgwqAgVFBfcHJpbnRrKCJkZXYgJWQsJWQgaW5vICVsdSBz dGFydF9sYmxrICV1IGxhc3RfZXh0ZW50IFsldSglbGx1KSwgJXVdIgo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgInBhcnRpYWxfY2x1c3RlciAldSIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBNQUpPUihfX2VudHJ5LT5kZXYpLCBNSU5PUihfX2VudHJ5LT5kZXYpLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgKHVuc2lnbmVkIGxvbmcpIF9fZW50cnktPmlubywKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCkgX19lbnRyeS0+c3RhcnQsCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQpIF9fZW50cnktPmVlX2xibGssCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQgbG9uZyBsb25nKSBfX2VudHJ5LT5lZV9wYmxrLAo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHVuc2lnbmVkIHNob3J0KSBfX2VudHJ5LT5lZV9s ZW4sCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQpIF9fZW50cnktPnBhcnRp YWwpCj4gKyk7Cj4gKwo+ICtUUkFDRV9FVkVOVChleHQ0X2V4dF9ybV9pZHgsCj4gKyDCoCDCoCDC oCBUUF9QUk9UTyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2ZzYmxrX3QgcGJsayksCj4gKwo+ ICsgwqAgwqAgwqAgVFBfQVJHUyhpbm9kZSwgcGJsayksCj4gKwo+ICsgwqAgwqAgwqAgVFBfU1RS VUNUX19lbnRyeSgKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKg aW5vX3QsIMKgIMKgIMKgIMKgIMKgaW5vIMKgIMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IF9fZmllbGQoIMKgIMKgIMKgIMKgZGV2X3QsIMKgIMKgIMKgIMKgIMKgZGV2IMKgIMKgICkKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9mc2Jsa190LCDC oCBwYmxrIMKgIMKgKQo+ICsgwqAgwqAgwqAgKSwKPiArCj4gKyDCoCDCoCDCoCBUUF9mYXN0X2Fz c2lnbigKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmlubyDCoCDCoD0gaW5vZGUt PmlfaW5vOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19lbnRyeS0+ZGV2IMKgIMKgPSBpbm9k ZS0+aV9zYi0+c19kZXY7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5wYmxrIMKg ID0gcGJsazsKPiArIMKgIMKgIMKgICksCj4gKwo+ICsgwqAgwqAgwqAgVFBfcHJpbnRrKCJkZXYg JWQsJWQgaW5vICVsdSBpbmRleF9wYmxrICVsbHUiLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgTUFKT1IoX19lbnRyeS0+ZGV2KSwgTUlOT1IoX19lbnRyeS0+ZGV2KSwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCBsb25nKSBfX2VudHJ5LT5pbm8sCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAodW5zaWduZWQgbG9uZyBsb25nKSBfX2VudHJ5LT5wYmxrKQo+ICsp Owo+ICsKPiArVFJBQ0VfRVZFTlQoZXh0NF9leHRfcmVtb3ZlX3NwYWNlLAo+ICsgwqAgwqAgwqAg VFBfUFJPVE8oc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxrX3Qgc3RhcnQsIGludCBkZXB0 aCksCj4gKwo+ICsgwqAgwqAgwqAgVFBfQVJHUyhpbm9kZSwgc3RhcnQsIGRlcHRoKSwKPiArCj4g KyDCoCDCoCDCoCBUUF9TVFJVQ1RfX2VudHJ5KAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19m aWVsZCggwqAgwqAgwqAgwqBpbm9fdCwgwqAgwqAgwqAgwqAgwqBpbm8gwqAgwqAgKQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBkZXZfdCwgwqAgwqAgwqAgwqAg wqBkZXYgwqAgwqAgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAg wqBleHQ0X2xibGtfdCwgwqAgwqBzdGFydCDCoCApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBf X2ZpZWxkKCDCoCDCoCDCoCDCoGludCwgwqAgwqAgwqAgwqAgwqAgwqBkZXB0aCDCoCApCj4gKyDC oCDCoCDCoCApLAo+ICsKPiArIMKgIMKgIMKgIFRQX2Zhc3RfYXNzaWduKAo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgX19lbnRyeS0+aW5vIMKgIMKgPSBpbm9kZS0+aV9pbm87Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5kZXYgwqAgwqA9IGlub2RlLT5pX3NiLT5zX2RldjsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPnN0YXJ0IMKgPSBzdGFydDsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmRlcHRoIMKgPSBkZXB0aDsKPiArIMKgIMKgIMKgICks Cj4gKwo+ICsgwqAgwqAgwqAgVFBfcHJpbnRrKCJkZXYgJWQsJWQgaW5vICVsdSBzaW5jZSAldSBk ZXB0aCAlZCIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBNQUpPUihfX2VudHJ5LT5kZXYp LCBNSU5PUihfX2VudHJ5LT5kZXYpLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHVuc2ln bmVkIGxvbmcpIF9fZW50cnktPmlubywKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1bnNp Z25lZCkgX19lbnRyeS0+c3RhcnQsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5 LT5kZXB0aCkKPiArKTsKPiArCj4gK1RSQUNFX0VWRU5UKGV4dDRfZXh0X3JlbW92ZV9zcGFjZV9k b25lLAo+ICsgwqAgwqAgwqAgVFBfUFJPVE8oc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxr X3Qgc3RhcnQsIGludCBkZXB0aCwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dDRfbGJsa190 IHBhcnRpYWwsIHVuc2lnbmVkIHNob3J0IGVoX2VudHJpZXMpLAo+ICsKPiArIMKgIMKgIMKgIFRQ X0FSR1MoaW5vZGUsIHN0YXJ0LCBkZXB0aCwgcGFydGlhbCwgZWhfZW50cmllcyksCj4gKwo+ICsg wqAgwqAgwqAgVFBfU1RSVUNUX19lbnRyeSgKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmll bGQoIMKgIMKgIMKgIMKgaW5vX3QsIMKgIMKgIMKgIMKgIMKgaW5vIMKgIMKgIMKgIMKgIMKgIMKg ICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZGV2X3QsIMKg IMKgIMKgIMKgIMKgZGV2IMKgIMKgIMKgIMKgIMKgIMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIF9fZmllbGQoIMKgIMKgIMKgIMKgZXh0NF9sYmxrX3QsIMKgIMKgc3RhcnQgwqAgwqAgwqAg wqAgwqAgKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBpbnQs IMKgIMKgIMKgIMKgIMKgIMKgZGVwdGggwqAgwqAgwqAgwqAgwqAgKQo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgX19maWVsZCggwqAgwqAgwqAgwqBleHQ0X2xibGtfdCwgwqAgwqBwYXJ0aWFsIMKg IMKgIMKgIMKgICkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZmllbGQoIMKgIMKgIMKgIMKg dW5zaWduZWQgc2hvcnQsIGVoX2VudHJpZXMgwqAgwqAgwqApCj4gKyDCoCDCoCDCoCApLAo+ICsK PiArIMKgIMKgIMKgIFRQX2Zhc3RfYXNzaWduKAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19l bnRyeS0+aW5vIMKgIMKgIMKgIMKgIMKgIMKgPSBpbm9kZS0+aV9pbm87Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBfX2VudHJ5LT5kZXYgwqAgwqAgwqAgwqAgwqAgwqA9IGlub2RlLT5pX3NiLT5z X2RldjsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPnN0YXJ0IMKgIMKgIMKgIMKg IMKgPSBzdGFydDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPmRlcHRoIMKgIMKg IMKgIMKgIMKgPSBkZXB0aDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fZW50cnktPnBhcnRp YWwgwqAgwqAgwqAgwqA9IHBhcnRpYWw7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5 LT5laF9lbnRyaWVzIMKgIMKgID0gZWhfZW50cmllczsKPiArIMKgIMKgIMKgICksCj4gKwo+ICsg wqAgwqAgwqAgVFBfcHJpbnRrKCJkZXYgJWQsJWQgaW5vICVsdSBzaW5jZSAldSBkZXB0aCAlZCBw YXJ0aWFsICV1ICIKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJyZW1haW5pbmdfZW50cmll cyAldSIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBNQUpPUihfX2VudHJ5LT5kZXYpLCBN SU5PUihfX2VudHJ5LT5kZXYpLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHVuc2lnbmVk IGxvbmcpIF9fZW50cnktPmlubywKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25l ZCkgX19lbnRyeS0+c3RhcnQsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX2VudHJ5LT5k ZXB0aCwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCkgX19lbnRyeS0+cGFy dGlhbCwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh1bnNpZ25lZCBzaG9ydCkgX19lbnRy eS0+ZWhfZW50cmllcykKPiArKTsKPiArCj4gwqAjZW5kaWYgLyogX1RSQUNFX0VYVDRfSCAqLwo+ Cj4gwqAvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi8KPiAtLQo+IDEu Ny40LjEuMjIuZ2VjOGUxLmRpcnR5Cj4KPiAtLQo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBs aXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1leHQ0IiBpbgo+IHRoZSBib2R5 IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4gTW9yZSBtYWpvcmRv bW8gaW5mbyBhdCDCoGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAo+ Cg==