Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tx59j-002dAa-Dg for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Mar 2025 14:21:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tx59h-0056x8-9m for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Mar 2025 14:21:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tx59g-0056wF-Mx for pgsql-hackers@lists.postgresql.org; Tue, 25 Mar 2025 14:21:24 +0000 Received: from smtp-fw-52004.amazon.com ([52.119.213.154]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tx59d-0015fX-0M for pgsql-hackers@postgresql.org; Tue, 25 Mar 2025 14:21:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1742912482; x=1774448482; h=from:to:cc:subject:date:message-id:references: mime-version; bh=05erVpP5DtrFX8FoG118U/a9F8iCaEczume8T2ASLxM=; b=TGL0W9fI5xSdVozxW5BVVHjr06waX2hzUdTASIH1Yc75erWYMx1Tz+It F5t+yX9RPWmX2XcR5xbjX1HdfUNNhSMEzlK040ePLTaonkUsp1NwPUQS0 rMZ3+yyTnruF0s+DaMiHdoLhn9RPoS6gYtNuTk+6dQm2u+cknMhakEX9Z U=; X-Amazon-filename: v15-0001-Expand-HOT-update-path-to-include-expression-and.patch X-Secure-Attach-Ingestion: ProdSecureAttachHeaderAddedFromMessageFilter X-IronPort-AV: E=Sophos;i="6.14,275,1736812800"; d="scan'208,223";a="282421461" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.43.8.2]) by smtp-border-fw-52004.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2025 14:21:17 +0000 Received: from EX19MTAUEC002.ant.amazon.com [10.0.29.78:43338] by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.36.205:2525] with esmtp (Farcaster) id 2a8a4df0-9f07-488d-8a61-44b39188d24c; Tue, 25 Mar 2025 14:21:15 +0000 (UTC) X-Farcaster-Flow-ID: 2a8a4df0-9f07-488d-8a61-44b39188d24c Received: from EX19D018UEC002.ant.amazon.com (10.252.135.229) by EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Tue, 25 Mar 2025 14:21:15 +0000 Received: from EX19D018UEC003.ant.amazon.com (10.252.135.218) by EX19D018UEC002.ant.amazon.com (10.252.135.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Tue, 25 Mar 2025 14:21:15 +0000 Received: from EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004]) by EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004%3]) with mapi id 15.02.1544.014; Tue, 25 Mar 2025 14:21:15 +0000 From: "Burd, Greg" To: Matthias van de Meent CC: "pgsql-hackers@postgresql.org" Subject: Re: Expanding HOT updates for expression and partial indexes Thread-Topic: Expanding HOT updates for expression and partial indexes Thread-Index: AQHbnZEqyle+t23KYUu+lmurDh1GwA== Date: Tue, 25 Mar 2025 14:21:14 +0000 Message-ID: <6B9B0224-12C1-4706-AD9B-6B78A1337BE3@amazon.com> References: <78574B24-BE0A-42C5-8075-3FA9FA63B8FC@amazon.com> <238EEE41-B206-4590-8C20-DA52C25A2291@amazon.com> <51C77060-059F-4BB3-8EAF-83F08656F6D2@amazon.com> <52AFF055-07B2-495E-9312-A5395E5282E6@amazon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.106.178.32] Content-Type: multipart/mixed; boundary="_002_6B9B022412C14706AD9B6B78A1337BE3amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_6B9B022412C14706AD9B6B78A1337BE3amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: <3F7BB86DA3B25F499D631A9CD86564EF@amazon.com> Content-Transfer-Encoding: base64 QXBvbG9naWVzIGZvciB0aGUgbm9pc2UsIEkgb3Zlcmxvb2tlZCBhIGNvbXBpbGVyIHdhcm5pbmcu DQoNCmZpeGVkLiANCg0KLWdyZWcNCg0KDQoNCj4gT24gTWFyIDI1LCAyMDI1LCBhdCA3OjQ34oCv QU0sIEJ1cmQsIEdyZWcgPGdyZWdidXJkQGFtYXpvbi5jb20+IHdyb3RlOg0KPiANCj4gTWF0dGhp YXMsIA0KPiANCj4gUmViYXNlZCBwYXRjaCBhdHRhY2hlZC4NCj4gDQo+IENoYW5nZXMgaW4gdjE0 Og0KPiAqIFVwZGF0ZUNvbnRleHQgbm93IHRoZSBsb2NhdGlvbiBJJ3ZlIHN0b3JlZCBlc3RhdGUs IHJlc3VsdFJlbEluZm8sIGV0Yy4NCj4gKiBSZXVzZSB0aGUgcmVzdWx0IGZyb20gdGhlIHByZWRp Y2F0ZSBvbiB0aGUgcGFydGlhbCBpbmRleC4NCj4gDQo+IC1ncmVnDQo+IA0KPiANCj4gDQo+PiBP biBNYXIgNywgMjAyNSwgYXQgNTo0N+KAr1BNLCBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtl d3VybStwb3N0Z3Jlc0BnbWFpbC5jb20+IHdyb3RlOg0KPj4gDQo+PiBPbiBUaHUsIDYgTWFyIDIw MjUgYXQgMTM6NDAsIEJ1cmQsIEdyZWcgPGdyZWdidXJkQGFtYXpvbi5jb20+IHdyb3RlOg0KPj4g DQo+PiANCj4+PiANCj4+PiANCj4+PiANCj4+Pj4gT24gTWFyIDUsIDIwMjUsIGF0IDY6MznigK9Q TSwgTWF0dGhpYXMgdmFuIGRlIE1lZW50IDxib2VrZXd1cm0rcG9zdGdyZXNAZ21haWwuY29tPiB3 cm90ZToNCj4+Pj4gDQo+Pj4+IE9uIFdlZCwgNSBNYXIgMjAyNSBhdCAxODoyMSwgQnVyZCwgR3Jl ZyA8Z3JlZ2J1cmRAYW1hem9uLmNvbT4gd3JvdGU6DQo+Pj4+IA0KPj4+PiANCj4+Pj4+ICogYXVn bWVudHMgSW5kZXhJbmZvIG9ubHkgd2hlbiBuZWVkZWQgZm9yIHRlc3RpbmcgZXhwcmVzc2lvbnMg YW5kIG9ubHkgb25jZQ0KPj4+PiANCj4+Pj4gDQo+Pj4+IA0KPj4+PiBFeGVjRXhwcmVzc2lvbklu ZGV4ZXNVcGRhdGVkIHNlZW1zIHRvIGFsd2F5cyBsb29wIG92ZXIgYWxsIGluZGV4ZXMsDQo+Pj4+ IGFsd2F5cyBjYWxsaW5nIEF0dHJpYnV0ZUluZGV4SW5mbyB3aGljaCBhbHdheXMgdXBkYXRlcyB0 aGUgZmllbGRzIGluDQo+Pj4+IHRoZSBJbmRleEluZm8gd2hlbiB0aGUgaW5kZXggaGFzIG9ubHkg IWJ5dmFsIGF0dHJpYnV0ZXMgKGUuZy4gdGV4dCwNCj4+Pj4ganNvbiwgb3Igb3RoZXIgc3VjaCB2 YXJsZW5hIHR5cGVzKS4gWW91IHNheSBpdCBoYXBwZW5zIG9ubHkgb25jZSwgaGF2ZQ0KPj4+PiBJ IG1pc3NlZCBzb21ldGhpbmc/DQo+Pj4gDQo+Pj4gDQo+Pj4gDQo+Pj4gVGhlcmUncyBhIHRlc3Qg dGhhdCBhdm9pZHMgZG9pbmcgaXQgbW9yZSB0aGFuIG9uY2UsIFsuLi5dDQo+PiANCj4+IA0KPj4g DQo+PiBJcyB0aGlzIHRoYXQgb25lPw0KPj4gDQo+PiArICAgIGlmIChpbmRleEluZm8tPmlpX0lu ZGV4QXR0ckJ5VmFsKQ0KPj4gKyAgICAgICAgcmV0dXJuIGluZGV4SW5mbzsNCj4+IA0KPj4gSSB0 aGluayB0aGF0IHRlc3QgZG9lc24ndCB3b3JrIGNvbnNpc3RlbnRseTogYSBiaXRtYXBzZXQgKiBp cyBOVUxMDQo+PiB3aGVuIG5vIGJpdHMgYXJlIHNldDsgYW5kIGZvciBzb21lIGluZGV4ZXMgbm8g YXR0cmlidXRlIHdpbGwgYmUgYnl2YWwsDQo+PiB0aHVzIGZhaWxpbmcgdGhpcyBlYXJseS1leGl0 IGV2ZW4gYWZ0ZXIgcHJvY2Vzc2luZy4NCj4+IA0KPj4gQW5vdGhlciBzbWFsbCBpc3N1ZSB3aXRo IHRoaXMgYXBwcm9hY2ggaXMgdGhhdCBpdCBhbHdheXMgY2FsbHMgYW5kDQo+PiB0ZXN0cyBpbiBF RUlVKCksIHdoaWxlIGl0J3MgcXVpdGUgbGlrZWx5IHdlIHdvdWxkIGRvIGJldHRlciBpZiB3ZQ0K Pj4gcHJlLXByb2Nlc3NlZCBfYWxsXyBpbmRleGVzIGF0IG9uY2UsIHNvIHRoYXQgd2UgY2FuIGhh dmUgYSBwYXRoIHRoYXQNCj4+IGRvZXNuJ3QgcmVwZWF0ZWRseSBnZXQgaW50byBFRUlVIG9ubHkg dG8gZXhpdCBpbW1lZGlhdGVseSBhZnRlci4gSXQnbGwNCj4+IHByb2JhYmx5IGJlIGhvdCBlbm91 Z2ggdG8gbm90IG1hdHRlciBtdWNoLCBidXQgaXQncyBzdGlsbCBjeWNsZXMgc3BlbnQNCj4+IG9u IHNvbWV0aGluZyB0aGF0IHdlIGNhbiBvcHRpbWl6ZSBmb3IgaW4gY29kZS4NCj4gDQo+IA0KPiBJ J3ZlIGNoYW5nZWQgdGhpcyBhIGJpdCwgbm93IGluIEV4ZWNPcGVuSW5kaWNlcygpIHdoZW4gdGhl cmUgYXJlIGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMgSSBhdWdtZW50IHRoZSBJbmRleEluZm8g d2l0aCBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gcGVyZm9ybSB0aGUgdGVzdHMgaW4gRUVJVSgp LiAgSSd2ZSBkZWJhdGVkIGFkZGluZyBhbm90aGVyIGJvb2wgdG8gRXhlY09wZW5JbmRpY2VzKCkg dG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSBvcGVuaW5nIGluZGV4ZXMgZm9yIHRoZSBwdXJwb3NlIG9m IGFuIHVwZGF0ZSB0byBhdm9pZCBidWlsZGluZyB0aGF0IGluZm9ybWF0aW9uIGluIGNhc2VzIHdo ZXJlIHdlIGFyZSBub3QuICBTaW1pbGFyIHRvIHRoZSBib29sIGBzcGVjdWxhdGl2ZWAgb24gRXhl Y09wZW5JbmRpY2VzKCkgdG9kYXkuICBUaG91Z2h0cz8NCj4gDQo+IA0KPj4+IEkgbWlnaHQgd2lk ZW4gdGhpcyBwYXRjaCBhIGJpdCB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRlc3RpbmcgZXF1YWxp dHkgb2YgaW5kZXggdHVwbGVzIHVzaW5nIGN1c3RvbSBvcGVyYXRvcnMgd2hlbiB0aGV5IGV4aXN0 IGZvciB0aGUgaW5kZXguICBJbiB0aGUgdXNlIGNhc2UgSSdtIHNvbHZpbmcgZm9yIHdlIHVzZSBh IGN1c3RvbSBvcGVyYXRvciBmb3IgZXF1YWxpdHkgdGhhdCBpcyBub3QgdGhlIHNhbWUgYXMgYSBt ZW1jbXAoKS4gIERvIHlvdSBoYXZlIHRob3VnaHRzIG9uIHRoYXQ/DQo+PiANCj4+IA0KPj4gDQo+ PiBJIGRvbid0IHRoaW5rIHRoYXQncyBhIHZlcnkgZ3JlYXQgaWRlYS4gRnJvbSBhIGNlcnRhaW4g cG9pbnQgb2YgdmlldywNCj4+IHlvdSBjYW4gc2VlIEhPVCBhcyAiZGVkdXBsaWNhdGluZyBtdWx0 aXBsZSB0dXBsZSB2ZXJzaW9ucyBiZWhpbmQgYQ0KPj4gc2luZ2xlIFRJRCIuIEJ0cmVlIGRvZXNu J3Qgc3VwcG9ydCBkZWR1cGxpY2F0aW9uIGZvciB0eXBlcyB0aGF0IGNhbg0KPj4gaGF2ZSBtb3Jl IHRoYW4gb25lIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzYW1lIHZhbHVlIHNvIHRoYXQgZS5nLg0K Pj4gJzAuMCc6Om51bWVyaWMgYW5kICcwJzo6bnVtZXJpYyBhcmUgYm90aCBkaXNwbGF5ZWQgY29y cmVjdGx5LCBldmVuDQo+PiB3aGVuIHRoZXkgY29tcGFyZSBhcyBlcXVhbCBhY2NvcmRpbmcgdG8g Y2VydGFpbiBlcXVhbGl0eSBvcGVyYXRvcnMuDQo+IA0KPiANCj4gSW50ZXJlc3RpbmcsIGdvb2Qg cG9pbnQuICBTZWVtcyBsaWtlIGl0IHdvdWxkIHJlcXVpcmUgYSBuZXcgaW5kZXggQU0gZnVuY3Rp b246DQo+IGJvb2wgaW5kZXhlZF90dXBsZV93b3VsZF9jaGFuZ2UoKQ0KPiANCj4gSSdsbCBkcm9w IHRoaXMgZm9yIG5vdywgaXQgc2VlbXMgb3V0IG9mIHNjb3BlIGZvciB0aGlzIHBhdGNoIHNldC4N Cj4gDQo+IA0KPiANCj4gPHYxNC0wMDAxLUV4cGFuZC1IT1QtdXBkYXRlLXBhdGgtdG8taW5jbHVk ZS1leHByZXNzaW9uLWFuZC5wYXRjaD4NCg0KICA= --_002_6B9B022412C14706AD9B6B78A1337BE3amazoncom_ Content-Type: application/octet-stream; name="v15-0001-Expand-HOT-update-path-to-include-expression-and.patch" Content-Description: v15-0001-Expand-HOT-update-path-to-include-expression-and.patch Content-Disposition: attachment; filename="v15-0001-Expand-HOT-update-path-to-include-expression-and.patch"; size=101038; creation-date="Tue, 25 Mar 2025 14:21:14 GMT"; modification-date="Tue, 25 Mar 2025 14:21:14 GMT" Content-ID: <3D6AFB03ECAD884F8BBB3BFD7FF89FB3@amazon.com> Content-Transfer-Encoding: base64 RnJvbSA5ODk2MDFkNDBhOGE2OTM2MzFhZTUxOTRkZmU1OWE5NWM5OGViMWI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnb3J5IEJ1cmQgPGdyZWdidXJkQGFtYXpvbi5jb20+CkRh dGU6IE1vbiwgMjcgSmFuIDIwMjUgMTM6Mjg6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHYxNV0g RXhwYW5kIEhPVCB1cGRhdGUgcGF0aCB0byBpbmNsdWRlIGV4cHJlc3Npb24gYW5kIHBhcnRpYWwK IGluZGV4ZXMuCgpUaGlzIHBhdGNoIGV4dGVuZHMgdGhlIGNhc2VzIHdoZXJlIEhPVCB1cGRhdGVz IGFyZSBwb3NzaWJsZSBpbiB0aGUgaGVhcGFtIGJ5CmV4YW1pbmluZyBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIGRldGVybWluaW5nIGlmIGluZGV4ZWQgdmFsdWVzIHdoZXJlIG11dGF0ZWQKb3Igbm90 LiAgUHJldmlvdXNseSwgYW55IGV4cHJlc3Npb24gaW5kZXggb24gYSBjb2x1bW4gd291bGQgZGlz cXVhbGlmeSBpdApmcm9tIHRoZSBIT1QgdXBkYXRlIHBhdGguIEFsc28gZXhhbWluZXMgcGFydGlh bCBpbmRleGVzIHRvIHNlZSBpZiB0aGUKdmFsdWVzIGFyZSB3aXRoaW4gdGhlIHByZWRpY2F0ZSBv ciBub3QuCgpUaGlzIGlzIGEgbW9kaWZpZWQgYXBwbGljYXRpb24gb2YgYSBwYXRjaCBwcm9wb3Nl ZCBvbiB0aGUgcGdzcWwtaGFja2VycyBsaXN0OgpodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9t ZXNzYWdlLWlkL2ZsYXQvNGQ5OTI4ZWUtYTllNi0xNWY5LTljODItNTk4MWYxM2ZmY2E2JTQwcG9z dGdyZXNwcm8ucnUKYXBwbGllZDogaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvZ2l0d2ViLz9w PXBvc3RncmVzcWwuZ2l0O2E9Y29tbWl0O2g9YzIwM2Q2Y2Y4CnJldmVydGVkOiBodHRwczovL2dp dC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9cG9zdGdyZXNxbC5naXQ7YT1jb21taXQ7aD0wNWY4 NDYwNWRiZWI5Y2Y4Mjc5YTE1NzIzNGIyNGJiYjcwNmM1MjU2CgpTaWduZWQtb2ZmLWJ5OiBHcmVn IEJ1cmQgPGdyZWdidXJkQGFtYXpvbi5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dGFibGUuc2dtbCAgICAgICAgICAgIHwgIDE4ICsKIGRvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAyMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3Jl bG9wdGlvbnMuYyAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURN RS5IT1QgICAgICAgICAgICB8ICA0NSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMgICAgICAgICAgICAgIHwgIDQzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAg ICAgICAgICAgICAgIHwgIDQ2ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMgICAg ICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5j ICAgICAgICAgICB8IDE5MiArKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0 aW9uLmMgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYyAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMg ICAgICAgICAgICB8ICA3MCArLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAg ICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAg ICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAg ICAgICAgICB8ICAzMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAg ICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAg ICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAg IHwgIDEwICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgICB8 ICAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91dCAgICAgfCA2 NjUgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVhcF9ob3RfdXBkYXRl cy5zcWwgICAgIHwgNDgxICsrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgICB8ICAgMiArLQogMjUgZmlsZXMgY2hhbmdlZCwgMTYzOSBpbnNl cnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMuc3FsCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3RhYmxlLnNnbWwKaW5kZXggZTVjMDM0ZDcyNGUuLjU2OWIyYzNlZTQ1IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTE5ODAsNiArMTk4MCwyNCBAQCBXSVRIICggTU9EVUxV UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZh cmxpc3RlbnRyeSBpZD0icmVsb3B0aW9uLWV4cHJlc3Npb24tY2hlY2tzIiB4cmVmbGFiZWw9ImV4 cHJlc3Npb25fY2hlY2tzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5leHByZXNzaW9uX2NoZWNrczwv bGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgIDxpbmRleHRlcm0+CisgICAgIDxw cmltYXJ5Pjx2YXJuYW1lPmV4cHJlc3Npb25fY2hlY2tzPC92YXJuYW1lPiBzdG9yYWdlIHBhcmFt ZXRlcjwvcHJpbWFyeT4KKyAgICA8L2luZGV4dGVybT4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIEVuYWJsZXMgb3IgZGlzYWJsZXMgZXZhdWxhdGlvbiBv ZiBwcmVkaWNhdGUgZXhwcmVzc2lvbnMgb24gcGFydGlhbAorICAgICAgaW5kZXhlcyBvciBleHBy ZXNzaW9ucyB1c2VkIHRvIGRlZmluZSBpbmRleGVzIGR1cmluZyB1cGRhdGVzLgorICAgICAgSWYg PGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIHRoZW4gdGhlc2UgZXhwcmVzc2lvbnMgYXJlIGV2YWx1 YXRlZCBkdXJpbmcKKyAgICAgIHVwZGF0ZXMgdG8gZGF0YSB3aXRoaW4gdGhlIGhlYXAgcmVsYXRp b24gYWdhaW5zdCB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzCisgICAgICBhbmQgdGhlbiBjb21wYXJl ZCB0byBkZXRlcm1pbmUgaWYgPGFjcm9ueW0+SE9UPC9hY3JvbnltPiB1cGRhdGVzIGFyZQorICAg ICAgYWxsb3dhYmxlIG9yIG5vdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+dHJ1ZTwv bGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgIDwvdmFyaWFibGVsaXN0PgogCiAgIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvc3RvcmFnZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbAppbmRl eCA2MTI1MDc5OWVjMC4uNjRhNjI2NGQ4ZmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zdG9y YWdlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbApAQCAtMTEzOCw2ICsxMTM4 LDI3IEBAIGRhdGEuIEVtcHR5IGluIG9yZGluYXJ5IHRhYmxlcy48L2VudHJ5PgogICA8L2l0ZW1p emVkbGlzdD4KICA8L3BhcmE+CiAKKyA8cGFyYT4KKyAgPGFjcm9ueW0+SE9UPC9hY3JvbnltPiB1 cGRhdGVzIGNhbiBvY2N1ciB3aGVuIHRoZSBleHByZXNzaW9uIHVzZWQgdG8gZGVmaW5lCisgIGFu IGluZGV4IHNob3dzIG5vIGNoYW5nZXMgdG8gdGhlIGluZGV4ZWQgdmFsdWUuIFRvIGRldGVybWlu ZSB0aGlzIHJlcXVpcmVzCisgIHRoYXQgdGhlIGV4cHJlc3Npb24gYmUgZXZhdWxhdGVkIGZvciB0 aGUgb2xkIGFuZCBuZXcgdmFsdWVzIHRvIGJlIHN0b3JlZCBpbgorICB0aGUgaW5kZXggYW5kIHRo ZW4gY29tcGFyZWQuIFRoaXMgYWxsb3dzIGZvciA8YWNyb255bT5IT1Q8L2Fjcm9ueW0+IHVwZGF0 ZXMKKyAgd2hlbiBkYXRhIGluZGV4ZWQgd2l0aGluIEpTT05CIGNvbHVtbnMgaXMgdW5jaGFuZ2Vk LiBUbyBkaXNhYmxlIHRoaXMKKyAgYmVoYXZpb3IgYW5kIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBl dmFsdWF0aW5nIHRoZSBleHByZXNzaW9uIGR1cmluZyB1cGRhdGVzCisgIHNldCB0aGUgPGxpdGVy YWw+ZXhwcmVzc2lvbl9jaGVja3M8L2xpdGVyYWw+IG9wdGlvbiB0byBmYWxzZSBmb3IgdGhlIHRh YmxlLgorIDwvcGFyYT4KKworIDxwYXJhPgorICA8YWNyb255bT5IT1Q8L2Fjcm9ueW0+IHVwZGF0 ZXMgY2FuIGFsc28gb2NjdXIgd2hlbiB1cGRhdGVkIHZhbHVlcyBhcmUgbm90CisgIHdpdGhpbiB0 aGUgcHJlZGljYXRlIG9mIGEgcGFydGlhbCBpbmRleC4gSG93ZXZlciwgPGFjcm9ueW0+SE9UPC9h Y3JvbnltPgorICB1cGRhdGVzIGFyZSBub3QgcG9zc2libGUgd2hlbiB0aGUgdXBkYXRlZCB2YWx1 ZSBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgZGlmZmVyCisgIHdpdGggcmVnYXJkcyB0byB0aGUgcHJl ZGljYXRlLiBUbyBkZXRlcm1pbiB0aGlzIHJlcXVpcmVzIHRoYXQgdGhlIHByZWRpY2F0ZQorICBl eHByZXNzaW9uIGJlIGV2YWx1YXRlZCBmb3IgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyB0byBiZSBz dG9yZWQgaW4gdGhlIGluZGV4CisgIGFuZCB0aGVuIGNvbXBhcmVkLiBUbyBkaXNhYmxlIHRoaXMg YmVoYXZpb3IgYW5kIGF2b2lkIHRoZSBvdmVyaGVhZCBvZgorICBldmFsdWF0aW5nIHRoZSBleHBy ZXNzaW9uIGR1cmluZyB1cGRhdGVzIHNldAorICB0aGUgPGxpdGVyYWw+ZXhwcmVzc2lvbl9jaGVj a3M8L2xpdGVyYWw+IG9wdGlvbiB0byBmYWxzZSBmb3IgdGhlIHRhYmxlLgorIDwvcGFyYT4KKwog IDxwYXJhPgogICBZb3UgY2FuIGluY3JlYXNlIHRoZSBsaWtlbGlob29kIG9mIHN1ZmZpY2llbnQg cGFnZSBzcGFjZSBmb3IKICAgPGFjcm9ueW0+SE9UPC9hY3JvbnltPiB1cGRhdGVzIGJ5IGRlY3Jl YXNpbmcgYSB0YWJsZSdzIDxsaW5rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5j CmluZGV4IDY0NWI1YzAwNDY3Li40MWM3MjdlYWZjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9yZWxvcHRpb25zLmMKQEAgLTE2Niw2ICsxNjYsMTUgQEAgc3RhdGljIHJlbG9wdF9ib29sIGJv b2xSZWxPcHRzW10gPQogCQl9LAogCQl0cnVlCiAJfSwKKwl7CisJCXsKKwkJCSJleHByZXNzaW9u X2NoZWNrcyIsCisJCQkiV2hlbiBkaXNhYmxlZCBwcmV2ZW50cyBjaGVja2luZyBleHByZXNzaW9u cyBvbiBpbmRleGVzIGFuZCBwcmVkaWNhdGVzIG9uIHBhcnRpYWwgaW5kZXhlcyBmb3IgY2hhbmdl cyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBoZWFwLW9ubHkgdHVwbGUgKEhPVCkgdXBkYXRlcy4iLAor CQkJUkVMT1BUX0tJTkRfSEVBUCwKKwkJCVNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jaworCQl9LAor CQl0cnVlCisJfSwKIAkvKiBsaXN0IHRlcm1pbmF0b3IgKi8KIAl7e05VTEx9fQogfTsKQEAgLTE5 MTQsNyArMTkyMyw4IEBAIGRlZmF1bHRfcmVsb3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBib29s IHZhbGlkYXRlLCByZWxvcHRfa2luZCBraW5kKQogCQl7InZhY3V1bV90cnVuY2F0ZSIsIFJFTE9Q VF9UWVBFX0JPT0wsCiAJCW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgdmFjdXVtX3RydW5jYXRlKSwg b2Zmc2V0b2YoU3RkUmRPcHRpb25zLCB2YWN1dW1fdHJ1bmNhdGVfc2V0KX0sCiAJCXsidmFjdXVt X21heF9lYWdlcl9mcmVlemVfZmFpbHVyZV9yYXRlIiwgUkVMT1BUX1RZUEVfUkVBTCwKLQkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCB2YWN1dW1fbWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUp fQorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIHZhY3V1bV9tYXhfZWFnZXJfZnJlZXplX2ZhaWx1 cmVfcmF0ZSl9LAorCQl7ImV4cHJlc3Npb25fY2hlY2tzIiwgUkVMT1BUX1RZUEVfQk9PTCwgb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBleHByZXNzaW9uX2NoZWNrcyl9CiAJfTsKIAogCXJldHVybiAo Ynl0ZWEgKikgYnVpbGRfcmVsb3B0aW9ucyhyZWxvcHRpb25zLCB2YWxpZGF0ZSwga2luZCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCmluZGV4IDc0ZTQwN2YzNzVhLi4yMzQwZDgyMDUzZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCkBAIC0zNiw3ICszNiw3IEBAIEhPVCBzb2x2 ZXMgdGhpcyBwcm9ibGVtIGZvciB0d28gcmVzdHJpY3RlZCBidXQgdXNlZnVsIHNwZWNpYWwgY2Fz ZXM6CiBGaXJzdCwgd2hlcmUgYSB0dXBsZSBpcyByZXBlYXRlZGx5IHVwZGF0ZWQgaW4gd2F5cyB0 aGF0IGRvIG5vdCBjaGFuZ2UKIGl0cyBpbmRleGVkIGNvbHVtbnMuICAoSGVyZSwgImluZGV4ZWQg Y29sdW1uIiBtZWFucyBhbnkgY29sdW1uIHJlZmVyZW5jZWQKIGF0IGFsbCBpbiBhbiBpbmRleCBk ZWZpbml0aW9uLCBpbmNsdWRpbmcgZm9yIGV4YW1wbGUgY29sdW1ucyB0aGF0IGFyZQotdGVzdGVk IGluIGEgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUgYnV0IGFyZSBub3Qgc3RvcmVkIGluIHRoZSBp bmRleC4pCit0ZXN0ZWQgaW4gYSBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSwgdGhhdCBoYXMgbWF0 ZXJpYWxseSBjaGFuZ2VkLikKIAogU2Vjb25kLCB3aGVyZSB0aGUgbW9kaWZpZWQgY29sdW1ucyBh cmUgb25seSB1c2VkIGluIGluZGV4ZXMgdGhhdCBkbyBub3QKIGNvbnRhaW4gdHVwbGUgSURzLCBi dXQgbWFpbnRhaW4gc3VtbWFyaWVzIG9mIHRoZSBpbmRleGVkIGRhdGEgYnkgYmxvY2suCkBAIC0x MzMsMjggKzEzMywzNCBAQCBOb3RlOiB3ZSBjYW4gdXNlIGEgImRlYWQiIGxpbmUgcG9pbnRlciBm b3IgYW55IERFTEVURWQgdHVwbGUsCiB3aGV0aGVyIGl0IHdhcyBwYXJ0IG9mIGEgSE9UIGNoYWlu IG9yIG5vdC4gIFRoaXMgYWxsb3dzIHNwYWNlIHJlY2xhbWF0aW9uCiBpbiBhZHZhbmNlIG9mIHJ1 bm5pbmcgVkFDVVVNIGZvciBwbGFpbiBERUxFVEVzIGFzIHdlbGwgYXMgSE9UIHVwZGF0ZXMuCiAK LVRoZSByZXF1aXJlbWVudCBmb3IgZG9pbmcgYSBIT1QgdXBkYXRlIGlzIHRoYXQgaW5kZXhlcyB3 aGljaCBwb2ludCB0bwotdGhlIHJvb3QgbGluZSBwb2ludGVyIChhbmQgdGh1cyBuZWVkIHRvIGJl IGNsZWFuZWQgdXAgYnkgVkFDVVVNIHdoZW4gdGhlCi10dXBsZSBpcyBkZWFkKSBkbyBub3QgcmVm ZXJlbmNlIGNvbHVtbnMgd2hpY2ggYXJlIHVwZGF0ZWQgaW4gdGhhdCBIT1QKLWNoYWluLiAgU3Vt bWFyaXppbmcgaW5kZXhlcyAoc3VjaCBhcyBCUklOKSBhcmUgYXNzdW1lZCB0byBoYXZlIG5vCi1y ZWZlcmVuY2VzIHRvIGluZGl2aWR1YWwgdHVwbGVzIGFuZCB0aHVzIGFyZSBpZ25vcmVkIHdoZW4g Y2hlY2tpbmcgSE9UCi1hcHBsaWNhYmlsaXR5LiAgVGhlIHVwZGF0ZWQgY29sdW1ucyBhcmUgY2hl Y2tlZCBhdCBleGVjdXRpb24gdGltZSBieQotY29tcGFyaW5nIHRoZSBiaW5hcnkgcmVwcmVzZW50 YXRpb24gb2YgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcy4gIFdlIGluc2lzdAotb24gYml0d2lzZSBl cXVhbGl0eSByYXRoZXIgdGhhbiB1c2luZyBkYXRhdHlwZS1zcGVjaWZpYyBlcXVhbGl0eSByb3V0 aW5lcy4KLVRoZSBtYWluIHJlYXNvbiB0byBhdm9pZCB0aGUgbGF0dGVyIGlzIHRoYXQgdGhlcmUg bWlnaHQgYmUgbXVsdGlwbGUKLW5vdGlvbnMgb2YgZXF1YWxpdHkgZm9yIGEgZGF0YXR5cGUsIGFu ZCB3ZSBkb24ndCBrbm93IGV4YWN0bHkgd2hpY2ggb25lCi1pcyByZWxldmFudCBmb3IgdGhlIGlu ZGV4ZXMgYXQgaGFuZC4gIFdlIGFzc3VtZSB0aGF0IGJpdHdpc2UgZXF1YWxpdHkKLWd1YXJhbnRl ZXMgZXF1YWxpdHkgZm9yIGFsbCBwdXJwb3Nlcy4KK1RoZSByZXF1aXJlbWVudCBmb3IgZG9pbmcg YSBIT1QgdXBkYXRlIGlzIHRoYXQgaW5kZXhlcyB3aGljaCBwb2ludCB0byB0aGUgcm9vdAorbGlu ZSBwb2ludGVyIChhbmQgdGh1cyBuZWVkIHRvIGJlIGNsZWFuZWQgdXAgYnkgVkFDVVVNIHdoZW4g dGhlIHR1cGxlIGlzIGRlYWQpCitkbyBub3QgcmVmZXJlbmNlIGNvbHVtbnMgd2hpY2ggYXJlIHVw ZGF0ZWQgaW4gdGhhdCBIT1QgY2hhaW4uCisKK1N1bW1hcml6aW5nIGluZGV4ZXMgKHN1Y2ggYXMg QlJJTikgYXJlIGFzc3VtZWQgdG8gaGF2ZSBubyByZWZlcmVuY2VzIHRvCitpbmRpdmlkdWFsIHR1 cGxlcyBhbmQgdGh1cyBhcmUgaWdub3JlZCB3aGVuIGNoZWNraW5nIEhPVCBhcHBsaWNhYmlsaXR5 LgorCitFeHByZXNzaW9ucyBvbiBpbmRleGVzIGFyZSBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRz IHVzZWQgd2hlbiBjaGVja2luZyBmb3IKK2NoYW5nZXMuICBUaGlzIGFsbG93cyBmb3IgdGhlIEpT T05CIGRhdGF0eXBlIHRvIGhhdmUgSE9UIHVwZGF0ZXMgd2hlbiB0aGUKK2luZGV4ZWQgcG9ydGlv biBvZiB0aGUgZG9jdW1lbnQgYXJlIG5vdCBtb2RpZmllZC4KKworUGFydGlhbCBpbmRleCBleHBy ZXNzaW9ucyBhcmUgZXZhbHVhdGVkLCBIT1QgdXBkYXRlcyBhcmUgYWxsb3dlZCB3aGVuIHRoZQor dXBkYXRlZCBpbmRleCB2YWx1ZXMgZG8gbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZS4KKworVGhl IHVwZGF0ZWQgY29sdW1ucyBhcmUgY2hlY2tlZCBhdCBleGVjdXRpb24gdGltZSBieSBjb21wYXJp bmcgdGhlIGJpbmFyeQorcmVwcmVzZW50YXRpb24gb2YgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcy4g IFdlIGluc2lzdCBvbiBiaXR3aXNlIGVxdWFsaXR5IHJhdGhlcgordGhhbiB1c2luZyBkYXRhdHlw ZS1zcGVjaWZpYyBlcXVhbGl0eSByb3V0aW5lcy4gIFRoZSBtYWluIHJlYXNvbiB0byBhdm9pZCB0 aGUKK2xhdHRlciBpcyB0aGF0IHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG5vdGlvbnMgb2YgZXF1 YWxpdHkgZm9yIGEgZGF0YXR5cGUsIGFuZAord2UgZG9uJ3Qga25vdyBleGFjdGx5IHdoaWNoIG9u ZSBpcyByZWxldmFudCBmb3IgdGhlIGluZGV4ZXMgYXQgaGFuZC4gIFdlIGFzc3VtZQordGhhdCBi aXR3aXNlIGVxdWFsaXR5IGd1YXJhbnRlZXMgZXF1YWxpdHkgZm9yIGFsbCBwdXJwb3Nlcy4KIAog SWYgYW55IGNvbHVtbnMgdGhhdCBhcmUgaW5jbHVkZWQgYnkgbm9uLXN1bW1hcml6aW5nIGluZGV4 ZXMgYXJlIHVwZGF0ZWQsCiB0aGUgSE9UIG9wdGltaXphdGlvbiBpcyBub3QgYXBwbGllZCwgYW5k IHRoZSBuZXcgdHVwbGUgaXMgaW5zZXJ0ZWQgaW50bwogYWxsIGluZGV4ZXMgb2YgdGhlIHRhYmxl LiAgSWYgbm9uZSBvZiB0aGUgdXBkYXRlZCBjb2x1bW5zIGFyZSBpbmNsdWRlZCBpbgogdGhlIHRh YmxlJ3MgaW5kZXhlcywgdGhlIEhPVCBvcHRpbWl6YXRpb24gaXMgYXBwbGllZCBhbmQgbm8gaW5k ZXhlcyBhcmUKIHVwZGF0ZWQuICBJZiBpbnN0ZWFkIHRoZSB1cGRhdGVkIGNvbHVtbnMgYXJlIG9u bHkgaW5kZXhlZCBieSBzdW1tYXJpemluZwotaW5kZXhlcywgdGhlIEhPVCBvcHRpbWl6YXRpb24g aXMgYXBwbGllZCwgYnV0IHRoZSB1cGRhdGUgaXMgcHJvcGFnYXRlZCB0bwotYWxsIHN1bW1hcml6 aW5nIGluZGV4ZXMuICAoUmVhbGlzdGljYWxseSwgd2Ugb25seSBuZWVkIHRvIHByb3BhZ2F0ZSB0 aGUKLXVwZGF0ZSB0byB0aGUgaW5kZXhlcyB0aGF0IGNvbnRhaW4gdGhlIHVwZGF0ZWQgdmFsdWVz LCBidXQgdGhhdCBpcyB5ZXQgdG8KLWJlIGltcGxlbWVudGVkLikKK2luZGV4ZXMsIHRoZSBIT1Qg b3B0aW1pemF0aW9uIGlzIGFwcGxpZWQgYW5kIHRoZSB1cGRhdGUgaXMgcHJvcGFnYXRlZCB0bwor YWxsIG9mIHRoZSBzdW1tYXJpemluZyBpbmRleGVzLgogCiBBYm9ydCBDYXNlcwogLS0tLS0tLS0t LS0KQEAgLTQ3Nyw4ICs0ODMsOSBAQCBIZWFwLW9ubHkgdHVwbGUKIEhPVC1zYWZlCiAKIAlBIHBy b3Bvc2VkIHR1cGxlIHVwZGF0ZSBpcyBzYWlkIHRvIGJlIEhPVC1zYWZlIGlmIGl0IGNoYW5nZXMK LQlub25lIG9mIHRoZSB0dXBsZSdzIGluZGV4ZWQgY29sdW1ucy4gIEl0IHdpbGwgb25seSBiZWNv bWUgYW4KLQlhY3R1YWwgSE9UIHVwZGF0ZSBpZiB3ZSBjYW4gZmluZCByb29tIG9uIHRoZSBzYW1l IHBhZ2UgZm9yCisJbm9uZSBvZiB0aGUgdHVwbGUncyBpbmRleGVkIGNvbHVtbnMgb3IgaWYgdGhl IGNoYW5nZXMgcmVtYWluCisJb3V0c2lkZSBvZiBhIHBhcnRpYWwgaW5kZXgncyBwcmVkaWNhdGUu ICBJdCB3aWxsIG9ubHkgYmVjb21lCisJYW4gYWN0dWFsIEhPVCB1cGRhdGUgaWYgd2UgY2FuIGZp bmQgcm9vbSBvbiB0aGUgc2FtZSBwYWdlIGZvcgogCXRoZSBuZXcgdHVwbGUgdmVyc2lvbi4KIAog SE9UIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBiMTJiNTgzYzRkOS4uOGI1 MjNkOWNiODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0zMjQ0LDEzICszMjQ0LDE0 IEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgdGlk KQogVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIg b3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJCUNvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3Nz Y2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2Rl ICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJVE1f RmFpbHVyZURhdGEgKnRtZmQsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkKIHsKIAlUTV9SZXN1 bHQJcmVzdWx0OwogCVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQo KTsKKwlMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSA9ICZ1cGRhdGVDeHQtPmxvY2ttb2RlOwogCUJp dG1hcHNldCAgKmhvdF9hdHRyczsKIAlCaXRtYXBzZXQgICpzdW1fYXR0cnM7CisJQml0bWFwc2V0 ICAqZXhwX2F0dHJzOwogCUJpdG1hcHNldCAgKmtleV9hdHRyczsKIAlCaXRtYXBzZXQgICppZF9h dHRyczsKIAlCaXRtYXBzZXQgICppbnRlcmVzdGluZ19hdHRyczsKQEAgLTMzMjcsNiArMzMyOCw4 IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFw VHVwbGUgbmV3dHVwLAogCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lO Ryk7CiAJc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCiAJ CQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7CisJZXhwX2F0dHJzID0g UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCisJCQkJCQkJCQkJICAgSU5ERVhf QVRUUl9CSVRNQVBfRVhQUkVTU0lPTik7CiAJa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0tFWSk7CiAJaWRfYXR0cnMgPSBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKIAkJCQkJCQkJCQkgIElOREVYX0FU VFJfQklUTUFQX0lERU5USVRZX0tFWSk7CkBAIC0zMzg4LDEwICszMzkxLDExIEBAIGhlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAogCQl0bWZkLT5jdGlkID0gKm90aWQ7CiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7Ci0JCSp1cGRhdGVfaW5kZXhl cyA9IFRVX05vbmU7CisJCXVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9IFRVX05vbmU7CiAKIAkJ Ym1zX2ZyZWUoaG90X2F0dHJzKTsKIAkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKKwkJYm1zX2ZyZWUo ZXhwX2F0dHJzKTsKIAkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRfYXR0cnMp OwogCQkvKiBtb2RpZmllZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCkBAIC0zNjg5LDEw ICszNjkzLDExIEBAIGwyOgogCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1 cC50X3NlbGYpLCAqbG9ja21vZGUpOwogCQlpZiAodm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikK IAkJCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OworCQl1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPSBUVV9Ob25lOwogCiAJCWJtc19mcmVlKGhv dF9hdHRycyk7CiAJCWJtc19mcmVlKHN1bV9hdHRycyk7CisJCWJtc19mcmVlKGV4cF9hdHRycyk7 CiAJCWJtc19mcmVlKGtleV9hdHRycyk7CiAJCWJtc19mcmVlKGlkX2F0dHJzKTsKIAkJYm1zX2Zy ZWUobW9kaWZpZWRfYXR0cnMpOwpAQCAtNDAwOSwxMiArNDAxNCwyNCBAQCBsMjoKIAogCWlmIChu ZXdidWYgPT0gYnVmZmVyKQogCXsKKwkJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyA9IHVw ZGF0ZUN4dC0+cnJpOworCQlFU3RhdGUJICAgKmVzdGF0ZSA9IHVwZGF0ZUN4dC0+ZXN0YXRlOwor CQlib29sCQlleHByZXNzaW9uX2NoZWNrcyA9IFJlbGF0aW9uR2V0RXhwcmVzc2lvbkNoZWNrcyhy ZWxhdGlvbik7CisKIAkJLyoKIAkJICogU2luY2UgdGhlIG5ldyB0dXBsZSBpcyBnb2luZyBpbnRv IHRoZSBzYW1lIHBhZ2UsIHdlIG1pZ2h0IGJlIGFibGUKLQkJICogdG8gZG8gYSBIT1QgdXBkYXRl LiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVlbgotCQkgKiBjaGFu Z2VkLgorCQkgKiB0byBkbyBhIEhPVCB1cGRhdGUuICBBcyBhIHJlbWluZGVyLCBob3RfYXR0cnMg aW5jbHVkZXMgYXR0cmlidXRlcworCQkgKiB1c2VkIGJ5IGluZGV4ZXMgaW5jbHVkaW5nIHdpdGhp biBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcywgYnV0CisJCSAqIG5vdCBhdHRyaWJ1dGVzIG9u bHkgdXNlZCBieSBzdW1tYXJpemluZyBpbmRleGVzLgogCQkgKi8KLQkJaWYgKCFibXNfb3Zlcmxh cChtb2RpZmllZF9hdHRycywgaG90X2F0dHJzKSkKKwkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmll ZF9hdHRycywgaG90X2F0dHJzKSB8fAorCQkJKGVzdGF0ZSAmJiByZXN1bHRSZWxJbmZvICYmIGV4 cHJlc3Npb25fY2hlY2tzICYmCisJCQkgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGV4cF9h dHRycykgJiYKKwkJCSAhRXhlY0V4cHJlc3Npb25JbmRleGVzVXBkYXRlZChyZXN1bHRSZWxJbmZv LAorCQkJCQkJCQkJCSAgIG1vZGlmaWVkX2F0dHJzLAorCQkJCQkJCQkJCSAgIGVzdGF0ZSwKKwkJ CQkJCQkJCQkgICByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3QsCisJCQkJCQkJCQkJICAg cmVzdWx0UmVsSW5mby0+cmlfbmV3VHVwbGVTbG90KSkpCiAJCXsKIAkJCXVzZV9ob3RfdXBkYXRl ID0gdHJ1ZTsKIApAQCAtNDE5NiwxOCArNDIxMywxOSBAQCBsMjoKIAlpZiAodXNlX2hvdF91cGRh dGUpCiAJewogCQlpZiAoc3VtbWFyaXplZF91cGRhdGUpCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBU VV9TdW1tYXJpemluZzsKKwkJCXVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9IFRVX1N1bW1hcml6 aW5nOwogCQllbHNlCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOworCQkJdXBkYXRlQ3h0 LT51cGRhdGVJbmRleGVzID0gVFVfTm9uZTsKIAl9CiAJZWxzZQotCQkqdXBkYXRlX2luZGV4ZXMg PSBUVV9BbGw7CisJCXVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9IFRVX0FsbDsKIAogCWlmIChv bGRfa2V5X3R1cGxlICE9IE5VTEwgJiYgb2xkX2tleV9jb3BpZWQpCiAJCWhlYXBfZnJlZXR1cGxl KG9sZF9rZXlfdHVwbGUpOwogCiAJYm1zX2ZyZWUoaG90X2F0dHJzKTsKIAlibXNfZnJlZShzdW1f YXR0cnMpOworCWJtc19mcmVlKGV4cF9hdHRycyk7CiAJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAli bXNfZnJlZShpZF9hdHRycyk7CiAJYm1zX2ZyZWUobW9kaWZpZWRfYXR0cnMpOwpAQCAtNDQ4NSwx NiArNDUwMywxNSBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24s CiAgKi8KIHZvaWQKIHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBv aW50ZXIgb3RpZCwgSGVhcFR1cGxlIHR1cCwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRh dGVfaW5kZXhlcykKKwkJCQkgICBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpCiB7CiAJVE1fUmVz dWx0CXJlc3VsdDsKIAlUTV9GYWlsdXJlRGF0YSB0bWZkOwotCUxvY2tUdXBsZU1vZGUgbG9ja21v ZGU7CiAKIAlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwLAogCQkJCQkJ IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSB0cnVl IC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRl X2luZGV4ZXMpOworCQkJCQkJICZ0bWZkLCB1cGRhdGVDeHQpOwogCXN3aXRjaCAocmVzdWx0KQog CXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwppbmRleCAyNGQzNzY1YWEyMC4uNTRmNjI3YzViMjcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMzE2LDggKzMxNiw3IEBAIGhlYXBhbV90 dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCwgQ29tbWFuZElk IGNpZCwKIHN0YXRpYyBUTV9SZXN1bHQKIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVs YXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21t YW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywKLQkJCQkJ Ym9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKLQkJCQkJTG9ja1R1cGxlTW9kZSAqbG9j a21vZGUsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQlib29sIHdhaXQs IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpCiB7CiAJYm9v bAkJc2hvdWxkRnJlZSA9IHRydWU7CiAJSGVhcFR1cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhl YXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxkRnJlZSk7CkBAIC0zMjgsNyArMzI3LDcgQEAgaGVh cGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgVHVw bGVUYWJsZVNsb3QgKnNsb3QsCiAJdHVwbGUtPnRfdGFibGVPaWQgPSBzbG90LT50dHNfdGFibGVP aWQ7CiAKIAlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwbGUsIGNpZCwg Y3Jvc3NjaGVjaywgd2FpdCwKLQkJCQkJCSB0bWZkLCBsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMp OworCQkJCQkJIHRtZmQsIHVwZGF0ZUN4dCk7CiAJSXRlbVBvaW50ZXJDb3B5KCZ0dXBsZS0+dF9z ZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKIAkvKgpAQCAtMzQzLDE0ICszNDIsMTQgQEAgaGVhcGFt X3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgVHVwbGVU YWJsZVNsb3QgKnNsb3QsCiAJICovCiAJaWYgKHJlc3VsdCAhPSBUTV9PaykKIAl7Ci0JCUFzc2Vy dCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05v bmU7CisJCUFzc2VydCh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfTm9uZSk7CisJCXVw ZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9IFRVX05vbmU7CiAJfQogCWVsc2UgaWYgKCFIZWFwVHVw bGVJc0hlYXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9BbGwp OworCQlBc3NlcnQodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRVX0FsbCk7CiAJZWxzZQot CQlBc3NlcnQoKCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykgfHwKLQkJCSAgICgq dXBkYXRlX2luZGV4ZXMgPT0gVFVfTm9uZSkpOworCQlBc3NlcnQoKHVwZGF0ZUN4dC0+dXBkYXRl SW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykgfHwKKwkJCSAgICh1cGRhdGVDeHQtPnVwZGF0ZUlu ZGV4ZXMgPT0gVFVfTm9uZSkpOwogCiAJaWYgKHNob3VsZEZyZWUpCiAJCXBmcmVlKHR1cGxlKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IGE1NmM1ZWNlYjE0Li4xZWVlZWJhZGMw OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0zMzYsMTcgKzMzNiwxNiBAQCB2 b2lkCiBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIg b3RpZCwKIAkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkgIFNuYXBzaG90IHNu YXBzaG90LAotCQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJ CSAgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1f RmFpbHVyZURhdGEgdG1mZDsKLQlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlOwogCiAJcmVzdWx0ID0g dGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwKIAkJCQkJCQkJR2V0Q3VycmVudENv bW1hbmRJZCh0cnVlKSwKIAkJCQkJCQkJc25hcHNob3QsIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJ CQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2Rl LCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSZ0bWZkLCB1cGRhdGVDeHQpOwogCiAJc3dpdGNo IChyZXN1bHQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDczOWE5MmJkY2MxLi4wZDZhMDIzNWU3 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMjcwNyw2ICsyNzA3LDUyIEBAIEJ1aWxkU3BlY3VsYXRp dmVJbmRleEluZm8oUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaWkpCiAJfQogfQogCisvKiAt LS0tLS0tLS0tLS0tLS0tCisgKgkJQnVpbGRFeHByZXNzaW9uSW5kZXhJbmZvCisgKgkJCUFkZCBl eHRyYSBzdGF0ZSB0byBJbmRleEluZm8gcmVjb3JkCisgKgorICogRm9yIGV4cHJlc3Npb24gaW5k ZXhlcyB1cGRhdGVzIG1heSBub3QgY2hhbmdlIHRoZSBpbmRleGVkIHZhbHVlIGFsbG93aW5nCisg KiBmb3IgYSBIT1QgdXBkYXRlLiAgQWRkIGluZm9ybWF0aW9uIHRvIHRoZSBJbmRleEluZm8gdG8g YWxsb3cgZm9yIGNoZWNraW5nCisgKiBpZiB0aGUgaW5kZXhlZCB2YWx1ZSBoYXMgY2hhbmdlZC4K KyAqCisgKiBEbyB0aGlzIHByb2Nlc3NpbmcgaGVyZSByYXRoZXIgdGhhbiBpbiBCdWlsZEluZGV4 SW5mbygpIHRvIG5vdCBpbmN1ciB0aGUKKyAqIG92ZXJoZWFkIGluIHRoZSBjb21tb24gbm9uLWV4 cHJlc3Npb24gY2FzZXMuCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0J1aWxkRXhw cmVzc2lvbkluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppaSkKK3sKKwlpbnQJ CQlpOworCWludAkJCWluZG5rZXlhdHRzOworCisJaW5kbmtleWF0dHMgPSBJbmRleFJlbGF0aW9u R2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKGluZGV4KTsKKworCS8qCisJICogQ29sbGVjdCBhdHRy aWJ1dGVzIHVzZWQgYnkgdGhlIGluZGV4LCB0aGVpciBsZW4gYW5kIGlmIHRoZXkgYXJlIGJ5CisJ ICogdmFsdWUuCisJICovCisJZm9yIChpID0gMDsgaSA8IGluZG5rZXlhdHRzOyBpKyspCisJewor CQlDb21wYWN0QXR0cmlidXRlICphdHRyID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIoUmVsYXRpb25H ZXREZXNjcihpbmRleCksIGkpOworCisJCWlpLT5paV9JbmRleEF0dHJzID0KKwkJCWJtc19hZGRf bWVtYmVyKGlpLT5paV9JbmRleEF0dHJzLAorCQkJCQkJICAgaWktPmlpX0luZGV4QXR0ck51bWJl cnNbaV0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKworCQlpaS0+aWlf SW5kZXhBdHRyTGVuW2ldID0gYXR0ci0+YXR0bGVuOworCQlpZiAoYXR0ci0+YXR0Ynl2YWwpCisJ CQlpaS0+aWlfSW5kZXhBdHRyQnlWYWwgPSBibXNfYWRkX21lbWJlcihpaS0+aWlfSW5kZXhBdHRy QnlWYWwsIGkpOworCX0KKworCS8qIGNvbGxlY3QgYXR0cmlidXRlcyB1c2VkIGluIHRoZSBleHBy ZXNzaW9uICovCisJaWYgKGlpLT5paV9FeHByZXNzaW9ucykKKwkJcHVsbF92YXJhdHRub3MoKE5v ZGUgKikgaWktPmlpX0V4cHJlc3Npb25zLCAxLCAmaWktPmlpX0V4cHJlc3Npb25BdHRycyk7CisK KwkvKiBjb2xsZWN0IGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgcHJlZGljYXRlICovCisJaWYgKGlp LT5paV9QcmVkaWNhdGUpCisJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGlpLT5paV9QcmVkaWNh dGUsIDEsICZpaS0+aWlfUHJlZGljYXRlQXR0cnMpOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0t CiAgKgkJRm9ybUluZGV4RGF0dW0KICAqCQkJQ29uc3RydWN0IHZhbHVlc1tdIGFuZCBpc251bGxb XSBhcnJheXMgZm9yIGEgbmV3IGluZGV4IHR1cGxlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jCmluZGV4 IDI1YzRiNmJkYzg3Li45MWE2YjQ1NWIxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYwpAQCAtMzEz LDE1ICszMTMsMTcgQEAgdm9pZAogQ2F0YWxvZ1R1cGxlVXBkYXRlKFJlbGF0aW9uIGhlYXBSZWws IEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBUdXBsZSB0dXApCiB7CiAJQ2F0YWxvZ0luZGV4U3RhdGUg aW5kc3RhdGU7Ci0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzID0gVFVfQWxsOworCVVw ZGF0ZUNvbnRleHQgdXBkYXRlQ3h0ID0gezB9OworCisJdXBkYXRlQ3h0LnVwZGF0ZUluZGV4ZXMg PSBUVV9BbGw7CiAKIAlDYXRhbG9nVHVwbGVDaGVja0NvbnN0cmFpbnRzKGhlYXBSZWwsIHR1cCk7 CiAKIAlpbmRzdGF0ZSA9IENhdGFsb2dPcGVuSW5kZXhlcyhoZWFwUmVsKTsKIAotCXNpbXBsZV9o ZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRhdGVJbmRleGVzKTsKKwlzaW1wbGVf aGVhcF91cGRhdGUoaGVhcFJlbCwgb3RpZCwgdHVwLCAmdXBkYXRlQ3h0KTsKIAotCUNhdGFsb2dJ bmRleEluc2VydChpbmRzdGF0ZSwgdHVwLCB1cGRhdGVJbmRleGVzKTsKKwlDYXRhbG9nSW5kZXhJ bnNlcnQoaW5kc3RhdGUsIHR1cCwgdXBkYXRlQ3h0LnVwZGF0ZUluZGV4ZXMpOwogCUNhdGFsb2dD bG9zZUluZGV4ZXMoaW5kc3RhdGUpOwogfQogCkBAIC0zMzcsMTMgKzMzOSwxNSBAQCB2b2lkCiBD YXRhbG9nVHVwbGVVcGRhdGVXaXRoSW5mbyhSZWxhdGlvbiBoZWFwUmVsLCBJdGVtUG9pbnRlciBv dGlkLCBIZWFwVHVwbGUgdHVwLAogCQkJCQkJICAgQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUp CiB7Ci0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzID0gVFVfQWxsOworCVVwZGF0ZUNv bnRleHQgdXBkYXRlQ3h0ID0gezB9OworCisJdXBkYXRlQ3h0LnVwZGF0ZUluZGV4ZXMgPSBUVV9B bGw7CiAKIAlDYXRhbG9nVHVwbGVDaGVja0NvbnN0cmFpbnRzKGhlYXBSZWwsIHR1cCk7CiAKLQlz aW1wbGVfaGVhcF91cGRhdGUoaGVhcFJlbCwgb3RpZCwgdHVwLCAmdXBkYXRlSW5kZXhlcyk7CisJ c2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1cCwgJnVwZGF0ZUN4dCk7CiAKLQlD YXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUsIHR1cCwgdXBkYXRlSW5kZXhlcyk7CisJQ2F0YWxv Z0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHVwZGF0ZUN4dC51cGRhdGVJbmRleGVzKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggZTNmZTliNzhiYjUuLjQy OWUwOGY3NTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpAQCAtMTEzLDEwICsx MTMsMTMgQEAKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAi dXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgog I2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2lu Y2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiAvKiB3YWl0TW9kZSBhcmd1bWVudCB0byBjaGVj a19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoKSAqLwogdHlwZWRlZiBlbnVtCkBAIC0y MjEsNiArMjI0LDEzIEBAIEV4ZWNPcGVuSW5kaWNlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLCBib29sIHNwZWN1bGF0aXZlKQogCQlpZiAoc3BlY3VsYXRpdmUgJiYgaWktPmlpX1VuaXF1 ZSAmJiAhaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kaXNleGNsdXNpb24pCiAJCQlCdWlsZFNwZWN1 bGF0aXZlSW5kZXhJbmZvKGluZGV4RGVzYywgaWkpOwogCisJCS8qCisJCSAqIElmIHRoZSBpbmRl eCB1c2VzIGV4cHJlc3Npb25zIHRoZW4gbGV0J3MgcG9wdWxhdGUgdGhlIGFkZGl0aW9uYWwKKwkJ ICogaW5mb3JtYXRpb24gbmVzc2FhcnkgdG8gZXZhbHVhdGUgdGhlbSBmb3IgY2hhbmdlcyBkdXJp bmcgdXBkYXRlcy4KKwkJICovCisJCWlmIChpaS0+aWlfRXhwcmVzc2lvbnMgfHwgaWktPmlpX1By ZWRpY2F0ZSkKKwkJCUJ1aWxkRXhwcmVzc2lvbkluZGV4SW5mbyhpbmRleERlc2MsIGlpKTsKKwog CQlyZWxhdGlvbkRlc2NzW2ldID0gaW5kZXhEZXNjOwogCQlpbmRleEluZm9BcnJheVtpXSA9IGlp OwogCQlpKys7CkBAIC0zODMsMTkgKzM5MywzMyBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCUV4cHJTdGF0ZSAgKnByZWRpY2F0ZTsKIAog CQkJLyoKLQkJCSAqIElmIHByZWRpY2F0ZSBzdGF0ZSBub3Qgc2V0IHVwIHlldCwgY3JlYXRlIGl0 IChpbiB0aGUgZXN0YXRlJ3MKLQkJCSAqIHBlci1xdWVyeSBjb250ZXh0KQorCQkJICogSXQgaXMg cG9zc2libGUgdGhhdCB3ZSd2ZSBhbHJlYWR5IGNoZWNrZWQgdGhlIHByZWRpY2F0ZSwgaWYgc28K KwkJCSAqIHRoZW4gYXZvaWQgdGhlIGR1cGxpY2F0ZSB3b3JrLgogCQkJICovCi0JCQlwcmVkaWNh dGUgPSBpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVN0YXRlOwotCQkJaWYgKHByZWRpY2F0ZSA9PSBO VUxMKQorCQkJaWYgKGluZGV4SW5mby0+aWlfQ2hlY2tlZFByZWRpY2F0ZSkKIAkJCXsKLQkJCQlw cmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0 ZSk7Ci0JCQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IHByZWRpY2F0ZTsKKwkJCQkv KiBTa2lwIHRoaXMgaW5kZXgtdXBkYXRlIGlmIHRoZSBwcmVkaWNhdGUgaXNuJ3Qgc2F0aXNmaWVk ICovCisJCQkJaWYgKCFpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVNhdGlzZmllZCkKKwkJCQkJY29u dGludWU7CiAJCQl9CisJCQllbHNlCisJCQl7CiAKLQkJCS8qIFNraXAgdGhpcyBpbmRleC11cGRh dGUgaWYgdGhlIHByZWRpY2F0ZSBpc24ndCBzYXRpc2ZpZWQgKi8KLQkJCWlmICghRXhlY1F1YWwo cHJlZGljYXRlLCBlY29udGV4dCkpCi0JCQkJY29udGludWU7CisJCQkJLyoKKwkJCQkgKiBJZiBw cmVkaWNhdGUgc3RhdGUgbm90IHNldCB1cCB5ZXQsIGNyZWF0ZSBpdCAoaW4gdGhlCisJCQkJICog ZXN0YXRlJ3MgcGVyLXF1ZXJ5IGNvbnRleHQpCisJCQkJICovCisJCQkJcHJlZGljYXRlID0gaW5k ZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZTsKKwkJCQlpZiAocHJlZGljYXRlID09IE5VTEwpCisJ CQkJeworCQkJCQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVk aWNhdGUsIGVzdGF0ZSk7CisJCQkJCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBwcmVk aWNhdGU7CisJCQkJfQorCisJCQkJLyogU2tpcCB0aGlzIGluZGV4LXVwZGF0ZSBpZiB0aGUgcHJl ZGljYXRlIGlzbid0IHNhdGlzZmllZCAqLworCQkJCWlmICghRXhlY1F1YWwocHJlZGljYXRlLCBl Y29udGV4dCkpCisJCQkJCWNvbnRpbnVlOworCQkJfQogCQl9CiAKIAkJLyoKQEAgLTEwOTYsNiAr MTEyMCw5IEBAIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywgRVN0YXRlICplc3RhdGUsCiAKIAlpZiAoaGFzZXhwcmVzc2lvbikKIAl7CisJCWlm IChpbmRleEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkKQorCQkJcmV0dXJuIHRydWU7CisKIAkJaW5k ZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpA QCAtMTE3MywzICsxMjAwLDE1MCBAQCBFeGVjV2l0aG91dE92ZXJsYXBzTm90RW1wdHkoUmVsYXRp b24gcmVsLCBOYW1lRGF0YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsIGNoYXIgdAogCQkJCSBlcnJt c2coImVtcHR5IFdJVEhPVVQgT1ZFUkxBUFMgdmFsdWUgZm91bmQgaW4gY29sdW1uIFwiJXNcIiBp biByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkJTmFtZVN0cihhdHRuYW1lKSwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSkpKTsKIH0KKworLyoKKyAqIERldGVybWluZSBpZiBpbmRleGVzIHRo YXQgaGF2ZSBleHByZXNzaW9ucyBvciBwcmVkaWNhdGVzIHJlcXVpcmUgdXBkYXRlcworICogZm9y IHRoZSBwdXJwb3NlcyBvZiBhbGxvd2luZyBIT1QgdXBkYXRlcy4gIFJldHVybnMgZmFsc2UgaWZm IGFsbCBpbmRleGVkCisgKiB2YWx1ZXMgYXJlIHVuY2hhbmdlZC4KKyAqLworYm9vbAorRXhlY0V4 cHJlc3Npb25JbmRleGVzVXBkYXRlZChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJ CQkJCSBCaXRtYXBzZXQgKm1vZGlmaWVkQXR0cnMsCisJCQkJCQkJIEVTdGF0ZSAqZXN0YXRlLAor CQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCQkgVHVwbGVUYWJsZVNsb3Qg Km5ld190dHMpCit7CisJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CisJSW5kZXhJbmZvICAqaW5kZXhJ bmZvOworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IE5VTEw7CisKKwlpZiAob2xkX3R0cyA9PSBO VUxMIHx8IG5ld190dHMgPT0gTlVMTCkKKwkJcmV0dXJuIHRydWU7CisKKwllY29udGV4dCA9IEdl dFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKworCS8qCisJICogRXhhbWluZSBlYWNoIGlu ZGV4IG9uIHRoaXMgcmVsYXRpb24gcmVsYXRpdmUgdG8gdGhlIGNoYW5nZXMgYmV0d2VlbiBvbGQK KwkgKiBhbmQgbmV3IHR1cGxlcy4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdFJl bEluZm8tPnJpX051bUluZGljZXM7IGkrKykKKwl7CisJCWluZGV4SW5mbyA9IHJlc3VsdFJlbElu Zm8tPnJpX0luZGV4UmVsYXRpb25JbmZvW2ldOworCisJCS8qCisJCSAqIElmIHRoaXMgaXMgYSBw YXJ0aWFsIGluZGV4IGl0IGhhcyBhIHByZWRpY2F0ZSwgZXZhbHVhdGUgdGhlCisJCSAqIGV4cHJl c3Npb24gdG8gZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gaW5jbHVkZSBpdCBvciBub3QuCisJCSAq LworCQlpZiAoYm1zX292ZXJsYXAoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVBdHRycywgbW9kaWZp ZWRBdHRycykpCisJCXsKKwkJCUV4cHJTdGF0ZSAgKnBzdGF0ZTsKKwkJCWJvb2wJCW9sZF90dXBs ZV9xdWFsaWZpZXMsCisJCQkJCQluZXdfdHVwbGVfcXVhbGlmaWVzOworCisJCQlwc3RhdGUgPSBF eGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisKKwkJCS8q CisJCQkgKiBIZXJlIHRoZSB0ZXJtICJxdWFsaWZpZXMiIG1lYW5zICJzYXRpc2ZpZXMgdGhlIHBy ZWRpY2F0ZQorCQkJICogY29uZGl0aW9uIG9mIHRoZSBwYXJ0aWFsIGluZGV4Ii4KKwkJCSAqLwor CQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gb2xkX3R0czsKKwkJCW9sZF90dXBsZV9xdWFs aWZpZXMgPSBFeGVjUXVhbChwc3RhdGUsIGVjb250ZXh0KTsKKworCQkJZWNvbnRleHQtPmVjeHRf c2NhbnR1cGxlID0gbmV3X3R0czsKKwkJCW5ld190dXBsZV9xdWFsaWZpZXMgPSBFeGVjUXVhbChw c3RhdGUsIGVjb250ZXh0KTsKKwkJCWluZGV4SW5mby0+aWlfQ2hlY2tlZFByZWRpY2F0ZSA9IHRy dWU7CisJCQlpbmRleEluZm8tPmlpX1ByZWRpY2F0ZVNhdGlzZmllZCA9IG5ld190dXBsZV9xdWFs aWZpZXM7CisKKwkJCS8qCisJCQkgKiBJZiBuZWl0aGVyIHRoZSBvbGQgbm9yIHRoZSBuZXcgdHVw bGVzIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSB3ZQorCQkJICogY2FuIGJlIHN1cmUgdGhhdCB0aGlz IGluZGV4IGRvZXNuJ3QgbmVlZCB1cGRhdGluZywgY29udGludWUgdG8KKwkJCSAqIHRoZSBuZXh0 IGluZGV4LgorCQkJICovCisJCQlpZiAoKG5ld190dXBsZV9xdWFsaWZpZXMgPT0gZmFsc2UpICYm IChvbGRfdHVwbGVfcXVhbGlmaWVzID09IGZhbHNlKSkKKwkJCQljb250aW51ZTsKKworCQkJLyoK KwkJCSAqIElmIHRoZXJlIGlzIGEgdHJhbnNpdGlvbiBiZXR3ZWVuIGluZGV4ZWQgYW5kIG5vdCBp bmRleGVkLAorCQkJICogdGhhdCdzIGVub3VnaCB0byByZXF1aXJlIHRoYXQgdGhpcyBpbmRleCBp cyB1cGRhdGVkLiBJZiBhbnkKKwkJCSAqIHNpbmdsZSBub24tc3VtbWFyaXppbmcgaW5kZXggcmVx dWlyZXMgdXBkYXRlcyB0aGVuIHRoZXkgYWxsCisJCQkgKiBzaG91bGQgYmUgdXBkYXRlZC4KKwkJ CSAqLworCQkJaWYgKG5ld190dXBsZV9xdWFsaWZpZXMgIT0gb2xkX3R1cGxlX3F1YWxpZmllcykK KwkJCXsKKwkJCQlyZXN1bHQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJ ICogT3RoZXJ3aXNlIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZXMgZXhpc3QgaW4gdGhlIGluZGV4LCBi dXQgZGlkCisJCQkgKiB0aGV5IGdldCB1cGRhdGVkPyAgV2UgZG9uJ3QgeWV0IGtub3csIHNvIHBy b2NlZWQgd2l0aCB0aGUgbmV4dAorCQkJICogc3RhdGVtZW50IGluIHRoZSBsb29wIHRvIGZpbmQg b3V0LgorCQkJICovCisJCX0KKworCQkvKgorCQkgKiBJbmRleGVzIHdpdGggZXhwcmVzc2lvbnMg bWF5IG9yIG1heSBub3QgaGF2ZSBjaGFuZ2VkLCBpdCBpcworCQkgKiBpbXBvc3NpYmxlIHRvIGtu b3cgd2l0aG91dCBleGVyY2lzaW5nIHRoZWlyIGV4cHJlc3Npb24gYW5kCisJCSAqIHJldmlld2lu ZyBpbmRleCB0dXBsZSBzdGF0ZSBmb3IgY2hhbmdlcy4gIFRoaXMgaXMgYSBsb3Qgb2Ygd29yaywK KwkJICogYnV0IGJlY2F1c2UgYWxsIGluZGV4ZXMgb24gSlNPTkIgY29sdW1ucyBmYWxsIGludG8g dGhpcyBjYXRlZ29yeSBpdAorCQkgKiBjYW4gYmUgd29ydGggaXQgdG8gYXZvaWQgaW5kZXggdXBk YXRlcyBhbmQgcmVtYWluIG9uIHRoZSBIT1QgdXBkYXRlCisJCSAqIHBhdGggd2hlbiBwb3NzaWJs ZS4KKwkJICovCisJCWlmIChibXNfb3ZlcmxhcChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25BdHRy cywgbW9kaWZpZWRBdHRycykpCisJCXsKKwkJCVR1cGxlVGFibGVTbG90ICpzYXZlX3NjYW50dXBs ZTsKKwkJCURhdHVtCQlvbGRfdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKKwkJCWJvb2wJCW9sZF9p c251bGxbSU5ERVhfTUFYX0tFWVNdOworCQkJRGF0dW0JCW5ld192YWx1ZXNbSU5ERVhfTUFYX0tF WVNdOworCQkJYm9vbAkJbmV3X2lzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJCQlib29sCQljaGFu Z2VkID0gZmFsc2U7CisKKwkJCXNhdmVfc2NhbnR1cGxlID0gZWNvbnRleHQtPmVjeHRfc2NhbnR1 cGxlOworCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gb2xkX3R0czsKKwkJCUZvcm1JbmRl eERhdHVtKGluZGV4SW5mbywKKwkJCQkJCSAgIG9sZF90dHMsCisJCQkJCQkgICBlc3RhdGUsCisJ CQkJCQkgICBvbGRfdmFsdWVzLAorCQkJCQkJICAgb2xkX2lzbnVsbCk7CisJCQllY29udGV4dC0+ ZWN4dF9zY2FudHVwbGUgPSBuZXdfdHRzOworCQkJRm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLAor CQkJCQkJICAgbmV3X3R0cywKKwkJCQkJCSAgIGVzdGF0ZSwKKwkJCQkJCSAgIG5ld192YWx1ZXMs CisJCQkJCQkgICBuZXdfaXNudWxsKTsKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNh dmVfc2NhbnR1cGxlOworCisJCQlmb3IgKGludCBqID0gMDsgaiA8IGluZGV4SW5mby0+aWlfTnVt SW5kZXhLZXlBdHRyczsgaisrKQorCQkJeworCQkJCWlmIChvbGRfaXNudWxsW2pdICE9IG5ld19p c251bGxbal0pCisJCQkJeworCQkJCQljaGFuZ2VkID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJCWVsc2UgaWYgKCFvbGRfaXNudWxsW2pdKQorCQkJCXsKKwkJCQkJaW50MTYJCWVsbWxl biA9IGluZGV4SW5mby0+aWlfSW5kZXhBdHRyTGVuW2pdOworCQkJCQlib29sCQllbG1ieXZhbCA9 IGJtc19pc19tZW1iZXIoaiwgaW5kZXhJbmZvLT5paV9JbmRleEF0dHJCeVZhbCk7CisKKwkJCQkJ aWYgKCFkYXR1bV9pbWFnZV9lcShvbGRfdmFsdWVzW2pdLCBuZXdfdmFsdWVzW2pdLAorCQkJCQkJ CQkJCWVsbWJ5dmFsLCBlbG1sZW4pKQorCQkJCQl7CisJCQkJCQljaGFuZ2VkID0gdHJ1ZTsKKwkJ CQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlpbmRleEluZm8tPmlpX0NoZWNr ZWRVbmNoYW5nZWQgPSB0cnVlOworCQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA9ICFj aGFuZ2VkOworCisJCQlpZiAoY2hhbmdlZCkKKwkJCXsKKwkJCQlyZXN1bHQgPSB0cnVlOworCQkJ CWJyZWFrOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggZWRlODllYTNjZjkuLmMxM2ZiNmJlZmQ1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtNjQ3LDcgKzY0Nyw3IEBA IEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAog CWlmICghc2tpcF90dXBsZSkKIAl7CiAJCUxpc3QJICAgKnJlY2hlY2tJbmRleGVzID0gTklMOwot CQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9pbmRleGVzOworCQlVcGRhdGVDb250ZXh0IHVwZGF0 ZUN4dCA9IHswfTsKIAkJTGlzdAkgICAqY29uZmxpY3RpbmRleGVzOwogCQlib29sCQljb25mbGlj dCA9IGZhbHNlOwogCkBAIC02NjMsMTcgKzY2MywxOSBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRh dGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJaWYgKHJlbC0+cmRfcmVsLT5yZWxp c3BhcnRpdGlvbikKIAkJCUV4ZWNQYXJ0aXRpb25DaGVjayhyZXN1bHRSZWxJbmZvLCBzbG90LCBl c3RhdGUsIHRydWUpOwogCisJCXVwZGF0ZUN4dC5lc3RhdGUgPSBlc3RhdGU7CisJCXVwZGF0ZUN4 dC5ycmkgPSByZXN1bHRSZWxJbmZvOwogCQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwg dGlkLCBzbG90LCBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhl cyk7CisJCQkJCQkJCSAgJnVwZGF0ZUN4dCk7CiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0 UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwogCi0JCWlmIChyZXN1bHRSZWxJ bmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBkYXRlX2luZGV4ZXMgIT0gVFVfTm9uZSkpCisJ CWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBkYXRlQ3h0LnVwZGF0 ZUluZGV4ZXMgIT0gVFVfTm9uZSkpCiAJCQlyZWNoZWNrSW5kZXhlcyA9IEV4ZWNJbnNlcnRJbmRl eFR1cGxlcyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkJICAgc2xvdCwgZXN0YXRlLCB0cnVl LAogCQkJCQkJCQkJCQkJICAgY29uZmxpY3RpbmRleGVzID8gdHJ1ZSA6IGZhbHNlLAogCQkJCQkJ CQkJCQkJICAgJmNvbmZsaWN0LCBjb25mbGljdGluZGV4ZXMsCi0JCQkJCQkJCQkJCQkgICAodXBk YXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpKTsKKwkJCQkJCQkJCQkJCSAgICh1cGRhdGVD eHQudXBkYXRlSW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykpOwogCiAJCS8qCiAJCSAqIFJlZmVy IHRvIHRoZSBjb21tZW50cyBhYm92ZSB0aGUgY2FsbCB0byBDaGVja0FuZFJlcG9ydENvbmZsaWN0 KCkgaW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggODdjODIwMjc2 YTguLjg2NTBjMmJlMDk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpA QCAtMTE1LDIxICsxMTUsNiBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZUNvbnRleHQKIAlU dXBsZVRhYmxlU2xvdCAqY3BVcGRhdGVSZXR1cm5pbmdTbG90OwogfSBNb2RpZnlUYWJsZUNvbnRl eHQ7CiAKLS8qCi0gKiBDb250ZXh0IHN0cnVjdCBjb250YWluaW5nIG91dHB1dCBkYXRhIHNwZWNp ZmljIHRvIFVQREFURSBvcGVyYXRpb25zLgotICovCi10eXBlZGVmIHN0cnVjdCBVcGRhdGVDb250 ZXh0Ci17Ci0JYm9vbAkJY3Jvc3NQYXJ0VXBkYXRlOwkvKiB3YXMgaXQgYSBjcm9zcy1wYXJ0aXRp b24gdXBkYXRlPyAqLwotCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlSW5kZXhlczsgLyogV2hpY2gg aW5kZXggdXBkYXRlcyBhcmUgcmVxdWlyZWQ/ICovCi0KLQkvKgotCSAqIExvY2sgbW9kZSB0byBh Y3F1aXJlIG9uIHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lvbiBiZWZvcmUgcGVyZm9ybWluZwotCSAq IEV2YWxQbGFuUXVhbCBvbiBpdAotCSAqLwotCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7Ci19IFVw ZGF0ZUNvbnRleHQ7Ci0KIAogc3RhdGljIHZvaWQgRXhlY0JhdGNoSW5zZXJ0KE1vZGlmeVRhYmxl U3RhdGUgKm10c3RhdGUsCiAJCQkJCQkJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKQEAg LTIyODIsOCArMjI2Nyw3IEBAIGxyZXBsYWNlOgogCQkJCQkJCQllc3RhdGUtPmVzX3NuYXBzaG90 LAogCQkJCQkJCQllc3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCXRydWUg Lyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCQkJJmNvbnRleHQtPnRtZmQsICZ1cGRhdGVD eHQtPmxvY2ttb2RlLAotCQkJCQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKKwkJCQkJ CQkJJmNvbnRleHQtPnRtZmQsIHVwZGF0ZUN4dCk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAt MjMwMSw2ICsyMjg1LDcgQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogewogCU1vZGlmeVRhYmxlU3RhdGUg Km10c3RhdGUgPSBjb250ZXh0LT5tdHN0YXRlOwogCUxpc3QJICAgKnJlY2hlY2tJbmRleGVzID0g TklMOworCWJvb2wJCW9ubHlTdW1tYXJpemluZyA9IHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9 PSBUVV9TdW1tYXJpemluZzsKIAogCS8qIGluc2VydCBpbmRleCBlbnRyaWVzIGZvciB0dXBsZSBp ZiBuZWNlc3NhcnkgKi8KIAlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAgJiYg KHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyAhPSBUVV9Ob25lKSkKQEAgLTIzMDgsNyArMjI5Myw3 IEBAIEV4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFVwZGF0 ZUNvbnRleHQgKnVwZGF0ZUN4dCwKIAkJCQkJCQkJCQkJICAgc2xvdCwgY29udGV4dC0+ZXN0YXRl LAogCQkJCQkJCQkJCQkgICB0cnVlLCBmYWxzZSwKIAkJCQkJCQkJCQkJICAgTlVMTCwgTklMLAot CQkJCQkJCQkJCQkgICAodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRVX1N1bW1hcml6aW5n KSk7CisJCQkJCQkJCQkJCSAgIG9ubHlTdW1tYXJpemluZyk7CiAKIAkvKiBBRlRFUiBST1cgVVBE QVRFIFRyaWdnZXJzICovCiAJRXhlY0FSVXBkYXRlVHJpZ2dlcnMoY29udGV4dC0+ZXN0YXRlLCBy ZXN1bHRSZWxJbmZvLApAQCAtMjQ0NCw2ICsyNDI5LDkgQEAgRXhlY1VwZGF0ZShNb2RpZnlUYWJs ZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJVXBkYXRl Q29udGV4dCB1cGRhdGVDeHQgPSB7MH07CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCXVwZGF0ZUN4 dC5lc3RhdGUgPSBlc3RhdGU7CisJdXBkYXRlQ3h0LnJyaSA9IHJlc3VsdFJlbEluZm87CisKIAkv KgogCSAqIGFib3J0IHRoZSBvcGVyYXRpb24gaWYgbm90IHJ1bm5pbmcgdHJhbnNhY3Rpb25zCiAJ ICovCkBAIC0zMTMyLDYgKzMxMjAsOSBAQCBsbWVyZ2VfbWF0Y2hlZDoKIAkJVE1fUmVzdWx0CXJl c3VsdDsKIAkJVXBkYXRlQ29udGV4dCB1cGRhdGVDeHQgPSB7MH07CiAKKwkJdXBkYXRlQ3h0LnJy aSA9IHJlc3VsdFJlbEluZm87CisJCXVwZGF0ZUN4dC5lc3RhdGUgPSBlc3RhdGU7CisKIAkJLyoK IAkJICogVGVzdCBjb25kaXRpb24sIGlmIGFueS4KIAkJICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCmluZGV4IDlmNTRhOWU3MmI3Li4yOWNlZjA0OGE4NyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zY2hlbWFwZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvc3Rv cmFnZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjb21tYW5kcy9w b2xpY3kuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRl ICJjb21tYW5kcy90cmlnZ2VyLmgiCkBAIC01MjExLDYgKzUyMTIsNyBAQCBSZWxhdGlvbkdldElu ZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJlbGF0aW9uKQogICoJCQkJCQkJCQlpbmRleCAoZW1wdHkg aWYgRlVMTCkKICAqCUlOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORwlDb2x1bW5zIHRoYXQg YmxvY2sgdXBkYXRlcyBmcm9tIGJlaW5nIEhPVAogICoJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFS SVpFRAlDb2x1bW5zIGluY2x1ZGVkIGluIHN1bW1hcml6aW5nIGluZGV4ZXMKKyAqCUlOREVYX0FU VFJfQklUTUFQX0VYUFJFU1NJT04JQ29sdW1ucyBpbmNsdWRlZCBpbiBleHByZXNpb24gaW5kZXhl cwogICoKICAqIEF0dHJpYnV0ZSBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlciBzbyB0aGF0CiAgKiB3ZSBjYW4gaW5jbHVkZSBzeXN0ZW0gYXR0 cmlidXRlcyAoZS5nLiwgT0lEKSBpbiB0aGUgYml0bWFwIHJlcHJlc2VudGF0aW9uLgpAQCAtNTIz NCw3ICs1MjM2LDExIEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0 aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQogCUJpdG1hcHNldCAgKnBraW5kZXhh dHRyczsJLyogY29sdW1ucyBpbiB0aGUgcHJpbWFyeSBpbmRleCAqLwogCUJpdG1hcHNldCAgKmlk aW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcmVwbGljYSBpZGVudGl0eSAqLwogCUJpdG1h cHNldCAgKmhvdGJsb2NraW5nYXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBIT1QgYmxvY2tpbmcgaW5k ZXhlcyAqLworCUJpdG1hcHNldCAgKmhvdGJsb2NraW5nZXhwcmF0dHJzOwkvKiBhcyBhYm92ZSwg YnV0IG9ubHkgdGhvc2UgaW4KKwkJCQkJCQkJCQkgKiBleHByZXNzaW9ucyAqLwogCUJpdG1hcHNl dCAgKnN1bW1hcml6ZWRhdHRyczsJLyogY29sdW1ucyB3aXRoIHN1bW1hcml6aW5nIGluZGV4ZXMg Ki8KKwlCaXRtYXBzZXQgICpzdW1tYXJpemVkZXhwcmF0dHJzOwkvKiBhcyBhYm92ZSwgYnV0IG9u bHkgdGhvc2UgaW4KKwkJCQkJCQkJCQkgKiBleHByZXNzaW9ucyAqLwogCUxpc3QJICAgKmluZGV4 b2lkbGlzdDsKIAlMaXN0CSAgICpuZXdpbmRleG9pZGxpc3Q7CiAJT2lkCQkJcmVscGtpbmRleDsK QEAgLTUyNTcsNiArNTI2Myw4IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9u IHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQogCQkJCXJldHVybiBibXNf Y29weShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsKIAkJCWNhc2UgSU5ERVhfQVRUUl9C SVRNQVBfU1VNTUFSSVpFRDoKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3N1bW1h cml6ZWRhdHRyKTsKKwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoKKwkJCQly ZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2V4cHJlc3Npb25hdHRyKTsKIAkJCWRlZmF1bHQ6 CiAJCQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7CiAJCX0K QEAgLTUzMDAsNyArNTMwOCw5IEBAIHJlc3RhcnQ6CiAJcGtpbmRleGF0dHJzID0gTlVMTDsKIAlp ZGluZGV4YXR0cnMgPSBOVUxMOwogCWhvdGJsb2NraW5nYXR0cnMgPSBOVUxMOworCWhvdGJsb2Nr aW5nZXhwcmF0dHJzID0gTlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOworCXN1bW1hcml6 ZWRleHByYXR0cnMgPSBOVUxMOwogCWZvcmVhY2gobCwgaW5kZXhvaWRsaXN0KQogCXsKIAkJT2lk CQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGwpOwpAQCAtNTMxNCw2ICs1MzI0LDcgQEAgcmVzdGFy dDoKIAkJYm9vbAkJaXNQSzsJCS8qIHByaW1hcnkga2V5ICovCiAJCWJvb2wJCWlzSURLZXk7CS8q IHJlcGxpY2EgaWRlbnRpdHkgaW5kZXggKi8KIAkJQml0bWFwc2V0ICoqYXR0cnM7CisJCUJpdG1h cHNldCAqKmV4cHJhdHRyczsKIAogCQlpbmRleERlc2MgPSBpbmRleF9vcGVuKGluZGV4T2lkLCBB Y2Nlc3NTaGFyZUxvY2spOwogCkBAIC01MzU3LDE0ICs1MzY4LDIwIEBAIHJlc3RhcnQ6CiAJCSAq IGRlY2lkZSB3aGljaCBiaXRtYXAgd2UnbGwgdXBkYXRlIGluIHRoZSBmb2xsb3dpbmcgbG9vcC4K IAkJICovCiAJCWlmIChpbmRleERlc2MtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nKQorCQl7CiAJ CQlhdHRycyA9ICZzdW1tYXJpemVkYXR0cnM7CisJCQlleHByYXR0cnMgPSAmc3VtbWFyaXplZGV4 cHJhdHRyczsKKwkJfQogCQllbHNlCisJCXsKIAkJCWF0dHJzID0gJmhvdGJsb2NraW5nYXR0cnM7 CisJCQlleHByYXR0cnMgPSAmaG90YmxvY2tpbmdleHByYXR0cnM7CisJCX0KIAogCQkvKiBDb2xs ZWN0IHNpbXBsZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyAqLwogCQlmb3IgKGkgPSAwOyBpIDwgaW5k ZXhEZXNjLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKIAkJewotCQkJaW50CQkJYXR0cm51bSA9 IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisJCQlpbnQJCQlhdHRyaWR4 ID0gaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tpXTsKIAogCQkJLyoKIAkJCSAq IFNpbmNlIHdlIGhhdmUgY292ZXJpbmcgaW5kZXhlcyB3aXRoIG5vbi1rZXkgY29sdW1ucywgd2Ug bXVzdApAQCAtNTM4MCwzMCArNTM5NywyOCBAQCByZXN0YXJ0OgogCQkJICoga2V5IG9yIGlkZW50 aXR5IGtleS4gSGVuY2Ugd2UgZG8gbm90IGluY2x1ZGUgdGhlbSBpbnRvCiAJCQkgKiB1aW5kZXhh dHRycywgcGtpbmRleGF0dHJzIGFuZCBpZGluZGV4YXR0cnMgYml0bWFwcy4KIAkJCSAqLwotCQkJ aWYgKGF0dHJudW0gIT0gMCkKKwkJCWlmIChhdHRyaWR4ICE9IDApCiAJCQl7Ci0JCQkJKmF0dHJz ID0gYm1zX2FkZF9tZW1iZXIoKmF0dHJzLAotCQkJCQkJCQkJCWF0dHJudW0gLSBGaXJzdExvd0lu dmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRy aWR4IC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKworCQkJCSphdHRycyA9 IGJtc19hZGRfbWVtYmVyKCphdHRycywgYXR0cm51bSk7CiAKIAkJCQlpZiAoaXNLZXkgJiYgaSA8 IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZG5rZXlhdHRzKQotCQkJCQl1aW5kZXhhdHRycyA9IGJt c19hZGRfbWVtYmVyKHVpbmRleGF0dHJzLAotCQkJCQkJCQkJCQkJIGF0dHJudW0gLSBGaXJzdExv d0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJdWluZGV4YXR0cnMgPSBibXNfYWRk X21lbWJlcih1aW5kZXhhdHRycywgYXR0cm51bSk7CiAKIAkJCQlpZiAoaXNQSyAmJiBpIDwgaW5k ZXhEZXNjLT5yZF9pbmRleC0+aW5kbmtleWF0dHMpCi0JCQkJCXBraW5kZXhhdHRycyA9IGJtc19h ZGRfbWVtYmVyKHBraW5kZXhhdHRycywKLQkJCQkJCQkJCQkJCSAgYXR0cm51bSAtIEZpcnN0TG93 SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQlwa2luZGV4YXR0cnMgPSBibXNfYWRk X21lbWJlcihwa2luZGV4YXR0cnMsIGF0dHJudW0pOwogCiAJCQkJaWYgKGlzSURLZXkgJiYgaSA8 IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZG5rZXlhdHRzKQotCQkJCQlpZGluZGV4YXR0cnMgPSBi bXNfYWRkX21lbWJlcihpZGluZGV4YXR0cnMsCi0JCQkJCQkJCQkJCQkgIGF0dHJudW0gLSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJaWRpbmRleGF0dHJzID0gYm1z X2FkZF9tZW1iZXIoaWRpbmRleGF0dHJzLCBhdHRybnVtKTsKIAkJCX0KIAkJfQogCiAJCS8qIENv bGxlY3QgYWxsIGF0dHJpYnV0ZXMgdXNlZCBpbiBleHByZXNzaW9ucywgdG9vICovCi0JCXB1bGxf dmFyYXR0bm9zKGluZGV4RXhwcmVzc2lvbnMsIDEsIGF0dHJzKTsKKwkJcHVsbF92YXJhdHRub3Mo aW5kZXhFeHByZXNzaW9ucywgMSwgZXhwcmF0dHJzKTsKIAogCQkvKiBDb2xsZWN0IGFsbCBhdHRy aWJ1dGVzIGluIHRoZSBpbmRleCBwcmVkaWNhdGUsIHRvbyAqLwotCQlwdWxsX3ZhcmF0dG5vcyhp bmRleFByZWRpY2F0ZSwgMSwgYXR0cnMpOworCQlwdWxsX3ZhcmF0dG5vcyhpbmRleFByZWRpY2F0 ZSwgMSwgZXhwcmF0dHJzKTsKIAogCQlpbmRleF9jbG9zZShpbmRleERlc2MsIEFjY2Vzc1NoYXJl TG9jayk7CiAJfQpAQCAtNTQzMiwxMSArNTQ0NywzNyBAQCByZXN0YXJ0OgogCQlibXNfZnJlZShw a2luZGV4YXR0cnMpOwogCQlibXNfZnJlZShpZGluZGV4YXR0cnMpOwogCQlibXNfZnJlZShob3Ri bG9ja2luZ2F0dHJzKTsKKwkJYm1zX2ZyZWUoaG90YmxvY2tpbmdleHByYXR0cnMpOwogCQlibXNf ZnJlZShzdW1tYXJpemVkYXR0cnMpOworCQlibXNfZnJlZShzdW1tYXJpemVkZXhwcmF0dHJzKTsK IAogCQlnb3RvIHJlc3RhcnQ7CiAJfQogCisJLyoKKwkgKiBIT1QtYmxvY2tpbmcgYXR0cmlidXRl cyBzaG91bGQgaW5jbHVkZSBhbGwgY29sdW1ucyB0aGF0IGFyZSBwYXJ0IG9mIHRoZQorCSAqIGlu ZGV4IGV4Y2VwdCBhdHRyaWJ1dGVzIG9ubHkgcmVmZXJlbmNlZCBpbiBleHByZXNzaW9ucywgaW5j bHVkaW5nCisJICogZXhwcmVzc2lvbnMgdXNlZCB0byBmb3JtIHBhcnRpYWwgaW5kZXhlcy4gIFNv LCB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUKKwkgKiBleHByZXNzaW9uLW9ubHkgY29sdW1ucyBmcm9t IHRoZSBIT1QtYmxvY2tpbmcgY29sdW1ucyBiaXRtYXAgYXMgdGhvc2UKKwkgKiB3aWxsIGJlIGNo ZWNrZWQgc2VwYXJhdGVseS4gIFRoaXMgaXMgdHJ1ZSBmb3IgYm90aCBzdW1tYXJpemluZyBhbmQK KwkgKiBub24tc3VtbWFyaXppbmcgaW5kZXhlcyB3aGljaCB3ZSd2ZSBzZXBhcmF0ZWQgYWJvdmUs IHNvIHdlIGhhdmUgdG8gZG8KKwkgKiB0aGlzIGZvciBib3RoIGJpdG1hcHMuCisJICovCisKKwkv KiB7ZXhwcmVzc2lvbi1vbmx5IGNvbHVtbnN9ID0ge2V4cHJlc3Npb24gY29sdW1uc30gLSB7ZGly ZWN0IGNvbHVtbnN9ICovCisJaG90YmxvY2tpbmdleHByYXR0cnMgPSBibXNfZGVsX21lbWJlcnMo aG90YmxvY2tpbmdleHByYXR0cnMsCisJCQkJCQkJCQkJICAgaG90YmxvY2tpbmdhdHRycyk7CisJ Lyoge2hvdC1ibG9ja2luZyBjb2x1bW5zfSA9IHtkaXJlY3QgY29sdW1uc30gKyB7ZXhwcmVzc2lv bi1vbmx5IGNvbHVtbnN9ICovCisJaG90YmxvY2tpbmdhdHRycyA9IGJtc19hZGRfbWVtYmVycyho b3RibG9ja2luZ2F0dHJzLAorCQkJCQkJCQkJICAgaG90YmxvY2tpbmdleHByYXR0cnMpOworCisJ Lyoge3N1bW1hcml6ZWQtb25seSBjb2x1bW5zfSA9IHthbGwgc3VtbWFyaXplZCBjb2x1bW5zfSAt IHtkaXJlY3QgY29sdW1uc30gKi8KKwlzdW1tYXJpemVkZXhwcmF0dHJzID0gYm1zX2RlbF9tZW1i ZXJzKHN1bW1hcml6ZWRleHByYXR0cnMsCisJCQkJCQkJCQkJICBzdW1tYXJpemVkYXR0cnMpOwor CS8qIHtzdW1tYXJpemVkIGNvbHVtbnN9ID0ge2FsbCBkaXJlY3QgY29sdW1uc30gKyB7c3VtbWFy aXplZC1vbmx5IGNvbHVtbnN9ICovCisJc3VtbWFyaXplZGF0dHJzID0gYm1zX2FkZF9tZW1iZXJz KHN1bW1hcml6ZWRhdHRycywKKwkJCQkJCQkJCSAgc3VtbWFyaXplZGV4cHJhdHRycyk7CisKIAkv KiBEb24ndCBsZWFrIHRoZSBvbGQgdmFsdWVzIG9mIHRoZXNlIGJpdG1hcHMsIGlmIGFueSAqLwog CXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJk X2tleWF0dHIpOwpAQCAtNTQ0OSw2ICs1NDkwLDggQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRf aG90YmxvY2tpbmdhdHRyID0gTlVMTDsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXpl ZGF0dHIpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0ciA9IE5VTEw7CisJYm1zX2ZyZWUo cmVsYXRpb24tPnJkX2V4cHJlc3Npb25hdHRyKTsKKwlyZWxhdGlvbi0+cmRfZXhwcmVzc2lvbmF0 dHIgPSBOVUxMOwogCiAJLyoKIAkgKiBOb3cgc2F2ZSBjb3BpZXMgb2YgdGhlIGJpdG1hcHMgaW4g dGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9uYWxseQpAQCAtNTQ2Myw2ICs1NTA2LDcg QEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfaWRhdHRyID0gYm1zX2NvcHkoaWRpbmRleGF0dHJz KTsKIAlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gYm1zX2NvcHkoaG90YmxvY2tpbmdh dHRycyk7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0gYm1zX2NvcHkoc3VtbWFyaXpl ZGF0dHJzKTsKKwlyZWxhdGlvbi0+cmRfZXhwcmVzc2lvbmF0dHIgPSBibXNfY29weShob3RibG9j a2luZ2V4cHJhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOwogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBAIC01NDc5LDYgKzU1MjMsOCBAQCByZXN0YXJ0 OgogCQkJcmV0dXJuIGhvdGJsb2NraW5nYXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBf U1VNTUFSSVpFRDoKIAkJCXJldHVybiBzdW1tYXJpemVkYXR0cnM7CisJCWNhc2UgSU5ERVhfQVRU Ul9CSVRNQVBfRVhQUkVTU0lPTjoKKwkJCXJldHVybiBob3RibG9ja2luZ2V4cHJhdHRyczsKIAkJ ZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQp OwogCQkJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggOTg5NTFhZWY4MmMu LjNkNGQ1MGE5NWU5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMK KysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yOTkzLDcgKzI5OTMsNyBA QCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSCgi KCIpOwogCS8qIEFMVEVSIFRBQkxFU1BBQ0UgPGZvbz4gU0VUfFJFU0VUICggKi8KIAllbHNlIGlm IChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRVNQQUNFIiwgTWF0Y2hBbnksICJTRVR8UkVTRVQiLCAi KCIpKQotCQlDT01QTEVURV9XSVRIKCJzZXFfcGFnZV9jb3N0IiwgInJhbmRvbV9wYWdlX2Nvc3Qi LAorCQlDT01QTEVURV9XSVRIKCJzZXFfcGFnZV9jb3N0IiwgInJhbmRvbV9wYWdlX2Nvc3QiLCAi ZXhwcmVzc2lvbl9jaGVja3MiLAogCQkJCQkgICJlZmZlY3RpdmVfaW9fY29uY3VycmVuY3kiLCAi bWFpbnRlbmFuY2VfaW9fY29uY3VycmVuY3kiKTsKIAogCS8qIEFMVEVSIFRFWFQgU0VBUkNIICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmgKaW5kZXggMTY0MGQ5YzMyZjcuLmE3ZWI3YmQ1NDJkIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3NrZXkuaCIKICNpbmNs dWRlICJhY2Nlc3MvdGFibGUuaCIJCS8qIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCiAj aW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5o IgogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcHJpbW5v ZGVzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCkBAIC0zMzgsOCArMzM5LDcgQEAg ZXh0ZXJuIHZvaWQgaGVhcF9hYm9ydF9zcGVjdWxhdGl2ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRl bVBvaW50ZXIgdGlkKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVs YXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsCiAJCQkJ CQkJIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCQkJ CQkgc3RydWN0IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwK LQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSBzdHJ1 Y3QgVE1fRmFpbHVyZURhdGEgKnRtZmQsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCk7CiBleHRl cm4gVE1fUmVzdWx0IGhlYXBfbG9ja190dXBsZShSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxl IHR1cGxlLAogCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2Nr V2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgZm9sbG93X3VwZGF0ZXMsCkBA IC0zNzQsNyArMzc0LDcgQEAgZXh0ZXJuIGJvb2wgaGVhcF90dXBsZV9uZWVkc19ldmVudHVhbF9m cmVlemUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX2lu c2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCk7CiBleHRlcm4gdm9pZCBzaW1w bGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCk7CiBleHRl cm4gdm9pZCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVy IG90aWQsCi0JCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpOworCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsIFVwZGF0ZUNvbnRleHQgKnVwZGF0 ZUN4dCk7CiAKIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyhS ZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCSAgVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKaW5kZXggYjhjYjFlNzQ0YWQuLjEzYTBiZjFlMTE0IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90 YWJsZWFtLmgKQEAgLTEyNSw2ICsxMjUsMjggQEAgdHlwZWRlZiBlbnVtIFRVX1VwZGF0ZUluZGV4 ZXMKIAlUVV9TdW1tYXJpemluZywKIH0gVFVfVXBkYXRlSW5kZXhlczsKIAorLyoKKyAqIERhdGEg c3BlY2lmaWMgdG8gcHJvY2Vzc2luZyBVUERBVEUgb3BlcmF0aW9ucy4KKyAqCisgKiBXaGVuIHRh YmxlX3R1cGxlX3VwZGF0ZSBpcyBjYWxsZWQgc29tZSBzdG9yYWdlIG1hbmFnZXJzLCBub3RhYmx5 IGhlYXBhbSwKKyAqIGNhbiBhdCB0aW1lcyBhdm9pZCBpbmRleCB1cGRhdGVzLiAgSW4gdGhlIGhl YXBhbSB0aGlzIGlzIGtub3duIGFzIGEgSE9UCisgKiB1cGRhdGUuICBUaGlzIHN0cnVjdCBpcyB1 c2VkIHRvIHByb3ZpZGUgdGhlIHN0YXRlIHJlcXVpcmVkIHRvIHRlc3QgZm9yCisgKiBIT1QgdXBk YXRlcyBhbmQgdG8gY29tbXVuaWNhdGUgdGhhdCBkZWNpc2lvbiBvbiB0byB0aGUgaW5kZXggQU1z LgorICovCit0eXBlZGVmIHN0cnVjdCBVcGRhdGVDb250ZXh0Cit7CisJVFVfVXBkYXRlSW5kZXhl cyB1cGRhdGVJbmRleGVzOyAvKiBXaGljaCBpbmRleCB1cGRhdGVzIGFyZSByZXF1aXJlZD8gKi8K KwlzdHJ1Y3QgUmVzdWx0UmVsSW5mbyAqcnJpOwkvKiBSZXN1bHRSZWxJbmZvIGZvciB0aGUgdXBk YXRlZCB0YWJsZS4gKi8KKwlzdHJ1Y3QgRVN0YXRlICplc3RhdGU7CQkvKiBFU3RhdGUgdXNlZCB3 aXRoaW4gdGhlIHVwZGF0ZS4gKi8KKwlib29sCQljcm9zc1BhcnRVcGRhdGU7CS8qIFdhcyBpdCBh IGNyb3NzLXBhcnRpdGlvbiB1cGRhdGU/ICovCisKKwkvKgorCSAqIExvY2sgbW9kZSB0byBhY3F1 aXJlIG9uIHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lvbiBiZWZvcmUgcGVyZm9ybWluZworCSAqIEV2 YWxQbGFuUXVhbCBvbiBpdAorCSAqLworCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7Cit9IFVwZGF0 ZUNvbnRleHQ7CisKIC8qCiAgKiBXaGVuIHRhYmxlX3R1cGxlX3VwZGF0ZSwgdGFibGVfdHVwbGVf ZGVsZXRlLCBvciB0YWJsZV90dXBsZV9sb2NrIGZhaWwKICAqIGJlY2F1c2UgdGhlIHRhcmdldCB0 dXBsZSBpcyBhbHJlYWR5IG91dGRhdGVkLCB0aGV5IGZpbGwgaW4gdGhpcyBzdHJ1Y3QgdG8KQEAg LTU0OSw4ICs1NzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkg U25hcHNob3QgY3Jvc3NjaGVjaywKIAkJCQkJCQkJIGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0Zh aWx1cmVEYXRhICp0bWZkLAotCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJ CQkJCSBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSBVcGRhdGVD b250ZXh0ICp1cGRhdGVDeHQpOwogCiAJLyogc2VlIHRhYmxlX3R1cGxlX2xvY2soKSBmb3IgcmVm ZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMgKi8KIAlUTV9SZXN1bHQJKCp0dXBsZV9sb2NrKSAoUmVs YXRpb24gcmVsLApAQCAtMTUwNCwxMyArMTUyNSwxMSBAQCB0YWJsZV90dXBsZV9kZWxldGUoUmVs YXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsIENvbW1hbmRJZCBjaWQsCiBzdGF0aWMgaW5saW5l IFRNX1Jlc3VsdAogdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIg b3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJICAgQ29tbWFuZElkIGNpZCwgU25hcHNo b3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJICAgYm9vbCB3YWl0LCBUTV9G YWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJICAgVFVfVXBk YXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAgYm9vbCB3YWl0LCBUTV9GYWlsdXJl RGF0YSAqdG1mZCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KQogewogCXJldHVybiByZWwtPnJk X3RhYmxlYW0tPnR1cGxlX3VwZGF0ZShyZWwsIG90aWQsIHNsb3QsCiAJCQkJCQkJCQkJIGNpZCwg c25hcHNob3QsIGNyb3NzY2hlY2ssCi0JCQkJCQkJCQkJIHdhaXQsIHRtZmQsCi0JCQkJCQkJCQkJ IGxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCQkJIHdhaXQsIHRtZmQsIHVwZGF0 ZUN4dCk7CiB9CiAKIC8qCkBAIC0yMDExLDcgKzIwMzAsNyBAQCBleHRlcm4gdm9pZCBzaW1wbGVf dGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVf dXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJCSAgVHVwbGVU YWJsZVNsb3QgKnNsb3QsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJICBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCQkgIFVwZGF0ZUNvbnRleHQgKnVwZGF0 ZUN4dCk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRk YWE4YmVmNWVlLi5mZGJmNDdmNjA3YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9p bmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMTMyLDYgKzEzMiw3 IEBAIGV4dGVybiBib29sIENvbXBhcmVJbmRleEluZm8oY29uc3QgSW5kZXhJbmZvICppbmZvMSwg Y29uc3QgSW5kZXhJbmZvICppbmZvMiwKIAkJCQkJCQkgY29uc3QgQXR0ck1hcCAqYXR0bWFwKTsK IAogZXh0ZXJuIHZvaWQgQnVpbGRTcGVjdWxhdGl2ZUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppaSk7CitleHRlcm4gdm9pZCBCdWlsZEV4cHJlc3Npb25JbmRleEluZm8oUmVs YXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKTsKIAogZXh0ZXJuIHZvaWQgRm9ybUlu ZGV4RGF0dW0oSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAq c2xvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDZhMWZlYzg4OTI4Li41MDdlMTQyYTEw ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC03NzMsNiArNzczLDExIEBAIGV4dGVybiB2 b2lkIGNoZWNrX2V4Y2x1c2lvbl9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LAogCQkJCQkJCQkJICAgSXRlbVBvaW50ZXIgdHVwbGVpZCwKIAkJCQkJCQkJCSAgIGNvbnN0 IERhdHVtICp2YWx1ZXMsIGNvbnN0IGJvb2wgKmlzbnVsbCwKIAkJCQkJCQkJCSAgIEVTdGF0ZSAq ZXN0YXRlLCBib29sIG5ld0luZGV4KTsKK2V4dGVybiBib29sIEV4ZWNFeHByZXNzaW9uSW5kZXhl c1VwZGF0ZWQoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCQkgQml0bWFw c2V0ICptb2RpZmllZEF0dHJzLAorCQkJCQkJCQkJCSBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJ CQkgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpu ZXdfdHRzKTsKIAogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhlY1JlcGxp Y2F0aW9uLmMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZTQyZjlmOWY5NTcuLmY2MGIyMDY3MWI5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTYwLDEyICsxNjAsMTUgQEAgdHlwZWRlZiBzdHJ1 Y3QgRXhwclN0YXRlCiAgKgogICoJCU51bUluZGV4QXR0cnMJCXRvdGFsIG51bWJlciBvZiBjb2x1 bW5zIGluIHRoaXMgaW5kZXgKICAqCQlOdW1JbmRleEtleUF0dHJzCW51bWJlciBvZiBrZXkgY29s dW1ucyBpbiBpbmRleAorICoJCUluZGV4QXR0cnMJCQliaXRtYXAgb2YgaW5kZXggYXR0cmlidXRl cwogICoJCUluZGV4QXR0ck51bWJlcnMJdW5kZXJseWluZy1yZWwgYXR0cmlidXRlIG51bWJlcnMg dXNlZCBhcyBrZXlzCiAgKgkJCQkJCQkoemVyb2VzIGluZGljYXRlIGV4cHJlc3Npb25zKS4gSXQg YWxzbyBjb250YWlucwogICogCQkJCQkJCWluZm8gYWJvdXQgaW5jbHVkZWQgY29sdW1ucy4KICAq CQlFeHByZXNzaW9ucwkJCWV4cHIgdHJlZXMgZm9yIGV4cHJlc3Npb24gZW50cmllcywgb3IgTklM IGlmIG5vbmUKKyAqCQlFeHByZXNzaW9uQXR0cnMJCWJpdG1hcCBvZiBhdHRyaWJ1dGVzIHVzZWQg d2l0aGluIHRoZSBleHByZXNzaW9uCiAgKgkJRXhwcmVzc2lvbnNTdGF0ZQlleGVjIHN0YXRlIGZv ciBleHByZXNzaW9ucywgb3IgTklMIGlmIG5vbmUKICAqCQlQcmVkaWNhdGUJCQlwYXJ0aWFsLWlu ZGV4IHByZWRpY2F0ZSwgb3IgTklMIGlmIG5vbmUKKyAqCQlQcmVkaWNhdGVBdHRycwkJYml0bWFw IG9mIGF0dHJpYnV0ZXMgdXNlZCB3aXRoaW4gdGhlIHByZWRpY2F0ZQogICoJCVByZWRpY2F0ZVN0 YXRlCQlleGVjIHN0YXRlIGZvciBwcmVkaWNhdGUsIG9yIE5JTCBpZiBub25lCiAgKgkJRXhjbHVz aW9uT3BzCQlQZXItY29sdW1uIGV4Y2x1c2lvbiBvcGVyYXRvcnMsIG9yIE5VTEwgaWYgbm9uZQog ICoJCUV4Y2x1c2lvblByb2NzCQlVbmRlcmx5aW5nIGZ1bmN0aW9uIE9JRHMgZm9yIEV4Y2x1c2lv bk9wcwpAQCAtMTg0LDYgKzE4Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCVBh cmFsbGVsV29ya2VycwkJIyBvZiB3b3JrZXJzIHJlcXVlc3RlZCAoZXhjbHVkZXMgbGVhZGVyKQog ICoJCUFtCQkJCQlPaWQgb2YgaW5kZXggQU0KICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUg YXJlYSBmb3IgaW5kZXggQU0KKyAqCQlPcENsYXNzRGF0YVR5cGVzCW9wZXJhdG9yIGNsYXNzIGRh dGEgdHlwZXMKICAqCQlDb250ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRl eEluZm8KICAqCiAgKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1Bh cmFsbGVsV29ya2VycyBhcmUgdXNlZCBvbmx5CkBAIC0xOTUsMTAgKzE5OSwxNyBAQCB0eXBlZGVm IHN0cnVjdCBJbmRleEluZm8KIAlOb2RlVGFnCQl0eXBlOwogCWludAkJCWlpX051bUluZGV4QXR0 cnM7CS8qIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIGluZGV4ICovCiAJaW50CQkJaWlfTnVt SW5kZXhLZXlBdHRyczsJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zIGluIGluZGV4ICovCisJQml0 bWFwc2V0ICAqaWlfSW5kZXhBdHRyczsKIAlBdHRyTnVtYmVyCWlpX0luZGV4QXR0ck51bWJlcnNb SU5ERVhfTUFYX0tFWVNdOworCXVpbnQxNgkJaWlfSW5kZXhBdHRyTGVuW0lOREVYX01BWF9LRVlT XTsKKwlCaXRtYXBzZXQgICppaV9JbmRleEF0dHJCeVZhbDsKKwlGbWdySW5mbyAgICppaV9FcXVh bGl0eVByb2NbSU5ERVhfTUFYX0tFWVNdOworCU9pZAkJCWlpX0NvbGxhdGlvbltJTkRFWF9NQVhf S0VZU107CiAJTGlzdAkgICAqaWlfRXhwcmVzc2lvbnM7IC8qIGxpc3Qgb2YgRXhwciAqLworCUJp dG1hcHNldCAgKmlpX0V4cHJlc3Npb25BdHRyczsKIAlMaXN0CSAgICppaV9FeHByZXNzaW9uc1N0 YXRlOwkvKiBsaXN0IG9mIEV4cHJTdGF0ZSAqLwogCUxpc3QJICAgKmlpX1ByZWRpY2F0ZTsJLyog bGlzdCBvZiBFeHByICovCisJQml0bWFwc2V0ICAqaWlfUHJlZGljYXRlQXR0cnM7CiAJRXhwclN0 YXRlICAqaWlfUHJlZGljYXRlU3RhdGU7CiAJT2lkCQkgICAqaWlfRXhjbHVzaW9uT3BzOwkvKiBh cnJheSB3aXRoIG9uZSBlbnRyeSBwZXIgY29sdW1uICovCiAJT2lkCQkgICAqaWlfRXhjbHVzaW9u UHJvY3M7CS8qIGFycmF5IHdpdGggb25lIGVudHJ5IHBlciBjb2x1bW4gKi8KQEAgLTIxMSw2ICsy MjIsOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlib29sCQlpaV9SZWFkeUZvckluc2Vy dHM7CiAJYm9vbAkJaWlfQ2hlY2tlZFVuY2hhbmdlZDsKIAlib29sCQlpaV9JbmRleFVuY2hhbmdl ZDsKKwlib29sCQlpaV9DaGVja2VkUHJlZGljYXRlOworCWJvb2wJCWlpX1ByZWRpY2F0ZVNhdGlz ZmllZDsKIAlib29sCQlpaV9Db25jdXJyZW50OwogCWJvb2wJCWlpX0Jyb2tlbkhvdENoYWluOwog CWJvb2wJCWlpX1N1bW1hcml6aW5nOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBkOTRmZGRkN2NlZi4uZTQ0ZDk5NjY3 NzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oCkBAIC0xNjQsNiArMTY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25E YXRhCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVkZWQgaW4gcmVwbGljYSBpZGVu dGl0eSBpbmRleCAqLwogCUJpdG1hcHNldCAgKnJkX2hvdGJsb2NraW5nYXR0cjsgLyogY29scyBi bG9ja2luZyBIT1QgdXBkYXRlICovCiAJQml0bWFwc2V0ICAqcmRfc3VtbWFyaXplZGF0dHI7CS8q IGNvbHMgaW5kZXhlZCBieSBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqcmRf ZXhwcmVzc2lvbmF0dHI7CS8qIGluZGV4ZWQgY29scyByZWZlcmVuY2VkIGJ5IGV4cHJlc3Npb25z ICovCiAKIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2Ny aXB0b3IsIG9yIE5VTEwgKi8KIApAQCAtMzQ1LDYgKzM0Niw3IEBAIHR5cGVkZWYgc3RydWN0IFN0 ZFJkT3B0aW9ucwogCVN0ZFJkT3B0SW5kZXhDbGVhbnVwIHZhY3V1bV9pbmRleF9jbGVhbnVwOwkv KiBjb250cm9scyBpbmRleCB2YWN1dW1pbmcgKi8KIAlib29sCQl2YWN1dW1fdHJ1bmNhdGU7CS8q IGVuYWJsZXMgdmFjdXVtIHRvIHRydW5jYXRlIGEgcmVsYXRpb24gKi8KIAlib29sCQl2YWN1dW1f dHJ1bmNhdGVfc2V0OwkvKiB3aGV0aGVyIHZhY3V1bV90cnVuY2F0ZSBpcyBzZXQgKi8KKwlib29s CQlleHByZXNzaW9uX2NoZWNrczsJLyogdXNlIGV4cHJlc3Npb24gdG8gY2hlY2tzIGZvciBjaGFu Z2VzICovCiAKIAkvKgogCSAqIEZyYWN0aW9uIG9mIHBhZ2VzIGluIGEgcmVsYXRpb24gdGhhdCB2 YWN1dW0gY2FuIGVhZ2VybHkgc2NhbiBhbmQgZmFpbApAQCAtNDA2LDYgKzQwOCwxNCBAQCB0eXBl ZGVmIHN0cnVjdCBTdGRSZE9wdGlvbnMKIAkoKHJlbGF0aW9uKS0+cmRfb3B0aW9ucyA/IFwKIAkg KChTdGRSZE9wdGlvbnMgKikgKHJlbGF0aW9uKS0+cmRfb3B0aW9ucyktPnBhcmFsbGVsX3dvcmtl cnMgOiAoZGVmYXVsdHB3KSkKIAorLyoKKyAqIFJlbGF0aW9uR2V0RXhwcmVzc2lvbkNoZWNrcwor ICoJCVJldHVybnMgdGhlIHJlbGF0aW9uJ3MgZXhwcmVzc2lvbl9jaGVja3MgcmVsb3B0aW9uIHNl dHRpbmcuCisgKi8KKyNkZWZpbmUgUmVsYXRpb25HZXRFeHByZXNzaW9uQ2hlY2tzKHJlbGF0aW9u KSBcCisJKChyZWxhdGlvbiktPnJkX29wdGlvbnMgPyBcCisJICgoU3RkUmRPcHRpb25zICopIChy ZWxhdGlvbiktPnJkX29wdGlvbnMpLT5leHByZXNzaW9uX2NoZWNrcyA6IHRydWUpCisKIC8qIFZp ZXdPcHRpb25zLT5jaGVja19vcHRpb24gdmFsdWVzICovCiB0eXBlZGVmIGVudW0gVmlld09wdENo ZWNrT3B0aW9uCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaAppbmRleCBhN2M1NWRiMzM5ZS4uMGNjMjhjYjk3 ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsY2FjaGUuaApAQCAtNjMsNiArNjMsNyBAQCB0eXBlZGVmIGVudW0gSW5k ZXhBdHRyQml0bWFwS2luZAogCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSwKIAlJTkRF WF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcsCiAJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpF RCwKKwlJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OLAogfSBJbmRleEF0dHJCaXRtYXBLaW5k OwogCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlv biByZWxhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9o b3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3VwZGF0 ZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMjdjODc2MGQ2 OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3Rf dXBkYXRlcy5vdXQKQEAgLTAsMCArMSw2NjUgQEAKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBU aGlzIHRhYmxlIHdpbGwgaGF2ZSB0d28gY29sdW1ucyBhbmQgdHdvIGluZGV4ZXMsIG9uZSBvbiB0 aGUgcHJpbWFyeSBrZXkKKy0tIGlkIGFuZCBvbmUgb24gdGhlIGV4cHJlc3Npb24gKGluZm8tPj4n bmFtZScpLiAgVGhhdCBtZWFucyB0aGF0IHRoZSBpbmRleGVkCistLSBhdHRyaWJ1dGVzIGFyZSAn aWQnIGFuZCAnaW5mbycuCitjcmVhdGUgdGFibGUga2V5dmFsdWUoaWQgaW50ZWdlciBwcmltYXJ5 IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFtZWluZGV4IG9uIGtleXZhbHVlKChp bmZvLT4+J25hbWUnKSk7CitpbnNlcnQgaW50byBrZXl2YWx1ZSB2YWx1ZXMgKDEsICd7Im5hbWUi OiAiam9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CistLSBEaXNhYmxlIGV4cHJlc3Npb24g Y2hlY2tzLgorQUxURVIgVEFCTEUga2V5dmFsdWUgU0VUIChleHByZXNzaW9uX2NoZWNrcyA9IGZh bHNlKTsKK1NFTEVDVCByZWxvcHRpb25zIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdr ZXl2YWx1ZSc7CisgICAgICAgIHJlbG9wdGlvbnMgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHtleHByZXNzaW9uX2NoZWNrcz1mYWxzZX0KKygxIHJvdykKKworLS0gV2hp bGUgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiBpcyB1bmNoYW5nZWQgd2UndmUgZGlzYWJs ZWQgZXhwcmVzc2lvbgorLS0gY2hlY2tzIHNvIHRoaXMgdXBkYXRlIHNob3VsZCBub3QgZ28gSE9U IGFzIHRoZSBzeXN0ZW0gY2FuJ3QgZGV0ZXJtaW5lIGlmCistLSB0aGUgaW5kZXhlZCBhdHRyaWJ1 dGUgaGFzIGNoYW5nZWQgd2l0aG91dCBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uLgordXBkYXRl IGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWV0aGluZyBl bHNlIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgcm93CisgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykK KworLS0gUmUtZW5hYmxlIGV4cHJlc3Npb24gY2hlY2tzLgorQUxURVIgVEFCTEUga2V5dmFsdWUg U0VUIChleHByZXNzaW9uX2NoZWNrcyA9IHRydWUpOworU0VMRUNUIHJlbG9wdGlvbnMgRlJPTSBw Z19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2tleXZhbHVlJzsKKyAgICAgICAgcmVsb3B0aW9ucyAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtleHByZXNzaW9uX2NoZWNrcz10 cnVlfQorKDEgcm93KQorCistLSBUaGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIHdpdGggdmFs dWUgImpvaG4iIGlzIHVuY2hhbmdlZCwgZXhwZWN0IGEgSE9UIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2 YWx1ZSBzZXQgaW5mbz0neyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIG90aGVyIGRhdGEi fScgd2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCgna2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3cKKyBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCist LSBUaGUgZm9sbG93aW5nIHVwZGF0ZSBjaGFuZ2VzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFt ZSIsIHRoaXMgc2hvdWxkIG5vdCBiZSBhIEhPVCB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0 IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVy ZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2 YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSBy b3cpCisKKy0tIE5vdywgdGhpcyB1cGRhdGUgZG9lcyBub3QgY2hhbmdlIHRoZSBpbmRleGVkIGF0 dHJpYnV0ZSAibmFtZSIgZnJvbSAic21pdGgiLCB0aGlzIHNob3VsZCBiZSBIT1QuCit1cGRhdGUg a2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJkYXRhIjogInNvbWUgbW9yZSBk YXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDIgcm93cyBub3cKKyBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgorKDEg cm93KQorCitkcm9wIHRhYmxlIGtleXZhbHVlOworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRo aXMgdGFibGUgaXMgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIG9uZSBidXQgaXQgaGFzIGEgdGhp cmQgaW5kZXguICBUaGUKKy0tIGluZGV4ICdjb2xpbmRleCcgaXNuJ3QgYW4gZXhwcmVzc2lvbiBp bmRleCwgaXQgaW5kZXhlcyB0aGUgZW50aXJlIHZhbHVlCistLSBpbiB0aGUgaW5mbyBjb2x1bW4u ICBUaGVyZSBhcmUgc3RpbGwgb25seSB0d28gaW5kZXhlZCBhdHRyaWJ1dGVzIGZvciB0aGlzCist LSByZWxhdGlvbiwgdGhlIHNhbWUgdHdvIGFzIGJlZm9yZS4gIFRoZSBwcmVzZW5jZSBvZiBhbiBp bmRleCBvbiB0aGUgZW50aXJlCistLSB2YWx1ZSBvZiB0aGUgaW5mbyBjb2x1bW4gc2hvdWxkIHBy ZXZlbnQgSE9UIHVwZGF0ZXMgZm9yIGFueSB1cGRhdGVzIHRvIGFueQorLS0gcG9ydGlvbiBvZiBK U09OQiBjb250ZW50IGluIHRoYXQgY29sdW1uLgorY3JlYXRlIHRhYmxlIGtleXZhbHVlKGlkIGlu dGVnZXIgcHJpbWFyeSBrZXksIGluZm8ganNvbmIpOworY3JlYXRlIGluZGV4IG5hbWVpbmRleCBv biBrZXl2YWx1ZSgoaW5mby0+PiduYW1lJykpOworY3JlYXRlIGluZGV4IGNvbGluZGV4IG9uIGtl eXZhbHVlKGluZm8pOworaW5zZXJ0IGludG8ga2V5dmFsdWUgdmFsdWVzICgxLCAneyJuYW1lIjog ImpvaG4iLCAiZGF0YSI6ICJzb21lIGRhdGEifScpOworLS0gVGhpcyB1cGRhdGUgZG9lc24ndCBj aGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGluZGV4LCBidXQgaXQgZG9lcworLS0g Y2hhbmdlIHRoZSBjb250ZW50IG9mIHRoZSBpbmZvIGNvbHVtbiBhbmQgc28gc2hvdWxkIG5vdCBi ZSBIT1QgYmVjYXVzZSB0aGUKKy0tIGluZGV4ZWQgdmFsdWUgY2hhbmdlZCBhcyBhIHJlc3VsdCBv ZiB0aGUgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAiam9obiIs ICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhw ZWN0OiAwIHJvd3MKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMAorKDEgcm93KQorCitkcm9wIHRhYmxlIGtleXZhbHVlOworLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0KKy0tIFRoZSB0YWJsZSBoYXMgb25lIGNvbHVtbiBkb2NzIGFuZCB0d28gaW5k ZXhlcy4gIFRoZXkgYXJlIGJvdGggZXhwcmVzc2lvbgorLS0gaW5kZXhlcyByZWZlcmVuY2luZyB0 aGUgc2FtZSBjb2x1bW4gYXR0cmlidXRlIChkb2NzKSBidXQgb25lIGlzIGEgcGFydGlhbAorLS0g aW5kZXguCitDUkVBVEUgVEFCTEUgZXggKGRvY3MgSlNPTkIpIFdJVEggKGZpbGxmYWN0b3IgPSA2 MCk7CitJTlNFUlQgSU5UTyBleCAoZG9jcykgVkFMVUVTICgneyJhIjogMCwgImIiOiAwfScpOwor SU5TRVJUIElOVE8gZXggKGRvY3MpIFNFTEVDVCBqc29uYl9idWlsZF9vYmplY3QoJ2InLCBuKSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAsIDEwMDAwKSBhcyBuOworQ1JFQVRFIElOREVYIGlkeF9l eF9hIE9OIGV4ICgoZG9jcy0+PidhJykpOworQ1JFQVRFIElOREVYIGlkeF9leF9iIE9OIGV4ICgo ZG9jcy0+PidiJykpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDk7CistLSBXZSdyZSB1 c2luZyBCVFJFRSBpbmRleGVzIGFuZCBmb3IgdGhpcyB0ZXN0IHdlIHdhbnQgdG8gbWFrZSBzdXJl IHRoYXQgdGhleSByZW1haW4KKy0tIGluIHN5bmMgd2l0aCBjaGFuZ2VzIHRvIG91ciByZWxhdGlv bi4gIEZvcmNlIHRoZSBjaG9pY2Ugb2YgaW5kZXggc2NhbnMgYmVsb3cgc28KKy0tIHRoYXQgd2Ug a25vdyB3ZSdyZSBjaGVja2luZyB0aGUgaW5kZXgncyB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdmFs dWVzIHNob3VsZCBiZQorLS0gaW4gdGhlIGluZGV4IG9yIG5vdC4KK1NFVCBTRVNTSU9OIGVuYWJs ZV9zZXFzY2FuID0gT0ZGOworU0VUIFNFU1NJT04gZW5hYmxlX2JpdG1hcHNjYW4gPSBPRkY7Cist LSBMZWF2ZSAnYScgdW5jaGFuZ2VkIGJ1dCBtb2RpZnkgJ2InIHRvIGEgdmFsdWUgb3V0c2lkZSBv ZiB0aGUgaW5kZXggcHJlZGljYXRlLgorLS0gVGhpcyBzaG91bGQgYmUgYSBIT1QgdXBkYXRlIGJl Y2F1c2UgbmVpdGhlciBpbmRleCBpcyBjaGFuZ2VkLgorVVBEQVRFIGV4IFNFVCBkb2NzID0ganNv bmJfYnVpbGRfb2JqZWN0KCdhJywgMCwgJ2InLCAxKSBXSEVSRSAoZG9jcy0+PidhJyk6Om51bWVy aWMgPSAwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6 OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExldCdzIGNoZWNr IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBkb2VzIG5vdCBjb250YWluIGEgdmFsdWUgZm9y ICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+ J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X2V4X2Igb24gZXgKKyAgIEZpbHRlcjogKCgo ZG9jcyAtPj4gJ2InOjp0ZXh0KSk6Om51bWVyaWMgPCAnMTAwJzo6bnVtZXJpYykKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQg KGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworIGRvY3MgCistLS0tLS0KKygwIHJvd3MpCisK Ky0tIExlYXZlICdhJyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1ZSB3aXRoaW4g dGhlIGluZGV4IHByZWRpY2F0ZS4KKy0tIFRoaXMgcmVwcmVzZW50cyBhIGNoYW5nZSBmb3IgZmll bGQgJ2InIGZyb20gdW5pbmRleGVkIHRvIGluZGV4ZWQgYW5kIHNvCistLSB0aGlzIHNob3VsZCBu b3QgdGFrZSB0aGUgSE9UIHBhdGguCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWlsZF9v YmplY3QoJ2EnLCAwLCAnYicsIDEwKSBXSEVSRSAoZG9jcy0+PidhJyk6Om51bWVyaWMgPSAwOwor U0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExldCdz IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVl IG9mICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2Nz LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X2V4X2Igb24gZXgKKyAgIEZpbHRlcjog KCgoZG9jcyAtPj4gJ2InOjp0ZXh0KSk6Om51bWVyaWMgPCAnMTAwJzo6bnVtZXJpYykKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBB TkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAgICAgIGRvY3MgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsiYSI6IDAsICJiIjogMTB9CisoMSByb3cpCisKKy0tIFRoaXMg dXBkYXRlIG1vZGlmaWVzIHRoZSB2YWx1ZSBvZiAnYScsIGFuIGluZGV4ZWQgZmllbGQsIHNvIGl0 IGFsc28gY2Fubm90CistLSBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3MgPSBq c29uYl9idWlsZF9vYmplY3QoJ2EnLCAxLCAnYicsIDEwKSBXSEVSRSAoZG9jcy0+PidiJyk6Om51 bWVyaWMgPSAxMDsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn ZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93 KQorCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzIGJvdGggJ2EnIGFuZCAnYicgdG8gbmV3IHZhbHVl cyB0aGF0IHJlcXVpcmUgaW5kZXggdXBkYXRlcywKKy0tIHRoaXMgY2Fubm90IHVzZSB0aGUgSE9U IHBhdGguCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAyLCAn YicsIDEyKSBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPSAxMDsKK1NFTEVDVCBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDog MSBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBMZXQncyBjaGVjayB0byBtYWtl IHN1cmUgdGhhdCB0aGUgaW5kZXggY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiAnYicKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVy aWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJ bmRleCBTY2FuIHVzaW5nIGlkeF9leF9iIG9uIGV4CisgICBGaWx0ZXI6ICgoKGRvY3MgLT4+ICdi Jzo6dGV4dCkpOjpudW1lcmljIDwgJzEwMCc6Om51bWVyaWMpCisoMiByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2In KTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICBkb2NzICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0KKyB7ImEiOiAyLCAiYiI6IDEyfQorKDEgcm93KQorCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2Vz ICdiJyB0byBhIHZhbHVlIG91dHNpZGUgaXRzIHByZWRpY2F0ZSByZXF1aXJpbmcgdGhhdAorLS0g d2UgcmVtb3ZlIGl0IGZyb20gdGhlIGluZGV4LiAgVGhhdCdzIGEgdHJhbnNpdGlvbiB0aGF0IGNh bid0IGJlIGRvbmUKKy0tIGR1cmluZyBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3Mg PSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAyLCAnYicsIDEpIFdIRVJFIChkb2NzLT4+J2InKTo6 bnVtZXJpYyA9IDEyOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSBy b3cpCisKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBubyBsb25n ZXIgY29udGFpbnMgdGhlIHZhbHVlIG9mICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2In KTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X2V4 X2Igb24gZXgKKyAgIEZpbHRlcjogKCgoZG9jcyAtPj4gJ2InOjp0ZXh0KSk6Om51bWVyaWMgPCAn MTAwJzo6bnVtZXJpYykKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3Mt Pj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworIGRv Y3MgCistLS0tLS0KKygwIHJvd3MpCisKKy0tIERpc2FibGUgZXhwcmVzc2lvbiBjaGVja3MuCitB TFRFUiBUQUJMRSBleCBTRVQgKGV4cHJlc3Npb25fY2hlY2tzID0gZmFsc2UpOworU0VMRUNUIHJl bG9wdGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2V4JzsKKyAgICAgICAgICAg ICAgIHJlbG9wdGlvbnMgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHtmaWxsZmFjdG9yPTYwLGV4cHJlc3Npb25fY2hlY2tzPWZhbHNl fQorKDEgcm93KQorCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzICdiJyB0byBhIHZhbHVlIHdpdGhp biBpdHMgcHJlZGljYXRlIGp1c3QgbGlrZSBpdAorLS0gcHJldmlvdXMgdmFsdWUsIHdoaWNoIHdv dWxkIGFsbG93IGZvciBhIEhPVCB1cGRhdGUgYnV0IHdpdGggZXhwcmVzc2lvbgorLS0gY2hlY2tz IGRpc2FibGVkIHdlIGNhbid0IGRldGVybWluZSB0aGF0IHNvIHRoaXMgc2hvdWxkIG5vdCBiZSBh IEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWlsZF9vYmplY3QoJ2En LCAyLCAnYicsIDIpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDE7CitTRUxFQ1QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gTGV0J3MgbWFrZSBzdXJl IHdlJ3JlIHJlY29yZGluZyBIT1QgdXBkYXRlcyBmb3Igb3VyICdleCcgcmVsYXRpb24gcHJvcGVy bHkgaW4gdGhlIHN5c3RlbQorLS0gdGFibGUgcGdfc3RhdF91c2VyX3RhYmxlcy4gIE5vdGUgdGhh dCBzdGF0aXN0aWNzIGFyZSBzdG9yZWQgd2l0aGluIGEgdHJhbnNhY3Rpb24gY29udGV4dAorLS0g Zmlyc3QgKHhhY3QpIGFuZCB0aGVuIGxhdGVyIGludG8gdGhlIGdsb2JhbCBzdGF0aXN0aWNzIGZv ciBhIHJlbGF0aW9uLCBzbyBmaXJzdCB3ZSBuZWVkCistLSB0byBlbnN1cmUgcGVuZGluZyBzdGF0 cyBhcmUgZmx1c2hlZC4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMgdGFibGVfbmFtZSwKKyAgICAtLSBUcmFu c2FjdGlvbiBzdGF0aXN0aWNzCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChj Lm9pZCkgQVMgeGFjdF91cGRhdGVzLAorICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKGMub2lkKSBBUyB4YWN0X2hvdF91cGRhdGVzLAorICAgIFJPVU5EKCgKKyAgICAgICAg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpOjpmbG9hdCAvCisgICAg ICAgIE5VTExJRihwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKGMub2lkKSwgMCkgKiAx MDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB4YWN0X2hvdF91cGRhdGVfcGVyY2VudGFnZSwKKyAg ICAtLSBDdW11bGF0aXZlIHN0YXRpc3RpY3MKKyAgICBzLm5fdHVwX3VwZCBBUyB0b3RhbF91cGRh dGVzLAorICAgIHMubl90dXBfaG90X3VwZCBBUyBob3RfdXBkYXRlcywKKyAgICBST1VORCgoCisg ICAgICAgIHMubl90dXBfaG90X3VwZDo6ZmxvYXQgLworICAgICAgICBOVUxMSUYocy5uX3R1cF91 cGQsIDApICogMTAwCisgICAgKTo6bnVtZXJpYywgMikgQVMgdG90YWxfaG90X3VwZGF0ZV9wZXJj ZW50YWdlCitGUk9NIHBnX2NsYXNzIGMKK0xFRlQgSk9JTiBwZ19zdGF0X3VzZXJfdGFibGVzIHMg T04gYy5yZWxuYW1lID0gcy5yZWxuYW1lCitXSEVSRSBjLnJlbG5hbWUgPSAnZXgnCitBTkQgYy5y ZWxuYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlOworIHRhYmxlX25hbWUgfCB4YWN0 X3VwZGF0ZXMgfCB4YWN0X2hvdF91cGRhdGVzIHwgeGFjdF9ob3RfdXBkYXRlX3BlcmNlbnRhZ2Ug fCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCB0b3RhbF9ob3RfdXBkYXRlX3BlcmNlbnRh Z2UgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBleCAgICAgICAgIHwgICAgICAgICAgICAwIHwg ICAgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgNiB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgICAgICAgIDE2LjY3CisoMSByb3cp CisKKy0tIGV4cGVjdDogNSB4YWN0IHVwZGF0ZXMgd2l0aCAxIHhhY3QgaG90IHVwZGF0ZSBhbmQg bm8gY3VtdWxhdGl2ZSB1cGRhdGVzIGFzIHlldAorU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNjYW4g PSBPTjsKK1NFVCBTRVNTSU9OIGVuYWJsZV9iaXRtYXBzY2FuID0gT047CitEUk9QIFRBQkxFIGV4 OworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMgdGFibGUgaGFzIGEgc2luZ2xlIGNvbHVt biAnZW1haWwnIGFuZCBhIHVuaXF1ZSBjb25zdHJhaW50IG9uIGl0IHRoYXQKKy0tIHNob3VsZCBw cmVjbHVkZSBIT1QgdXBkYXRlcy4KK0NSRUFURSBUQUJMRSB1c2VycyAoCisgICAgdXNlcl9pZCBz ZXJpYWwgcHJpbWFyeSBrZXksCisgICAgbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisgICAg ZW1haWwgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorICAgIEVYQ0xVREUgVVNJTkcgYnRyZWUgKGxv d2VyKGVtYWlsKSBXSVRIID0pCispOworLS0gQWRkIHNvbWUgZGF0YSB0byB0aGUgdGFibGUgYW5k IHRoZW4gdXBkYXRlIGl0IGluIHdheXMgdGhhdCBzaG91bGQgYW5kIHNob3VsZAorLS0gbm90IGJl IEhPVCB1cGRhdGVzLgorSU5TRVJUIElOVE8gdXNlcnMgKG5hbWUsIGVtYWlsKSBWQUxVRVMKKygn dXNlcjEnLCAndXNlcjFAZXhhbXBsZS5jb20nKSwKKygndXNlcjInLCAndXNlcjJAZXhhbXBsZS5j b20nKSwKKygndGFrZW4nLCAndGFrZW5ARVhBTVBMRS5jb20nKSwKKygneW91JywgJ3lvdUBkb21h aW4uY29tJyksCisoJ3Rha2VuJywgJ3Rha2VuQGRvbWFpbi5jb20nKTsKKy0tIFNob3VsZCBmYWls IGJlY2F1c2Ugb2YgdGhlIHVuaXF1ZSBjb25zdHJhaW50IG9uIHRoZSBlbWFpbCBjb2x1bW4uCitV UERBVEUgdXNlcnMgU0VUIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJyBXSEVSRSBlbWFpbCA9 ICd1c2VyMkBleGFtcGxlLmNvbSc7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9s YXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidXNlcnNfbG93ZXJfZXhjbCIKK0RFVEFJTDogIEtl eSAobG93ZXIoZW1haWw6OnRleHQpKT0odXNlcjFAZXhhbXBsZS5jb20pIGNvbmZsaWN0cyB3aXRo IGV4aXN0aW5nIGtleSAobG93ZXIoZW1haWw6OnRleHQpKT0odXNlcjFAZXhhbXBsZS5jb20pLgor U0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2Ns YXNzKTsgLS0gZXhwZWN0OiAwIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIFNo b3VsZCBzdWNjZWVkIGJlY2F1c2UgdGhlIGVtYWlsIGNvbHVtbiBpcyBub3QgYmVpbmcgdXBkYXRl ZCBhbmQgc2hvdWxkIGdvIEhPVC4KK1VQREFURSB1c2VycyBTRVQgbmFtZSA9ICdmb28nIFdIRVJF IGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBhIHNpbmds ZSBuZXcgSE9UIHVwZGF0ZQorIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIENyZWF0ZSBhIHBhcnRpYWwgaW5kZXgg b24gdGhlIGVtYWlsIGNvbHVtbiwgdXBkYXRlcworQ1JFQVRFIElOREVYIGlkeF91c2Vyc19lbWFp bF9ub19leGFtcGxlIE9OIHVzZXJzIChsb3dlcihlbWFpbCkpIFdIRVJFIGxvd2VyKGVtYWlsKSBM SUtFICclQGV4YW1wbGUuY29tJSc7CistLSBBbiB1cGRhdGUgdGhhdCBjaGFuZ2VzIHRoZSBlbWFp bCBjb2x1bW4gYnV0IG5vdCB0aGUgaW5kZXhlZCBwb3J0aW9uIG9mIGl0IGFuZCBmYWxscyBvdXRz aWRlIHRoZSBjb25zdHJhaW50LgorLS0gU2hvdWxkbid0IGJlIGEgSE9UIHVwZGF0ZSBiZWNhdXNl IG9mIHRoZSBleGNsdXNpb24gY29uc3RyYWludC4KK1VQREFURSB1c2VycyBTRVQgZW1haWwgPSAn eW91KzJAZG9tYWluLmNvbScgV0hFUkUgbmFtZSA9ICd5b3UnOworU0VMRUNUIHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAx IG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIEFuIHVwZGF0ZSB0aGF0IGNoYW5n ZXMgdGhlIGVtYWlsIGNvbHVtbiBidXQgbm90IHRoZSBpbmRleGVkIHBvcnRpb24gb2YgaXQgYW5k IGZhbGxzIHdpdGhpbiB0aGUgY29uc3RyYWludC4KKy0tIEFnYWluLCBzaG91bGQgZmFpbCBjb25z dHJhaW50IGFuZCBmYWlsIHRvIGJlIGEgSE9UIHVwZGF0ZS4KK1VQREFURSB1c2VycyBTRVQgZW1h aWwgPSAndGFrZW5AZG9tYWluLmNvbScgV0hFUkUgbmFtZSA9ICd5b3UnOworRVJST1I6ICBjb25m bGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInVzZXJzX2xv d2VyX2V4Y2wiCitERVRBSUw6ICBLZXkgKGxvd2VyKGVtYWlsOjp0ZXh0KSk9KHRha2VuQGRvbWFp bi5jb20pIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAobG93ZXIoZW1haWw6OnRleHQpKT0o dGFrZW5AZG9tYWluLmNvbSkuCitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVz CisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB1c2VyczsKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCist LSBBbm90aGVyIHRlc3Qgb2YgY29uc3RyYWludHMgc3BvaWxpbmcgSE9UIHVwZGF0ZXMsIHRoaXMg dGltZSB3aXRoIGEgcmFuZ2UuCitDUkVBVEUgVEFCTEUgZXZlbnRzICgKKyAgICBpZCBzZXJpYWwg cHJpbWFyeSBrZXksCisgICAgbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisgICAgZXZlbnRf dGltZSB0c3R6cmFuZ2UsCisgICAgY29uc3RyYWludCBub19zY3JlZW5pbmdfdGltZV9vdmVybGFw IGV4Y2x1ZGUgdXNpbmcgZ2lzdCAoCisgICAgICAgIGV2ZW50X3RpbWUgV0lUSCAmJgorICAgICkK Kyk7CistLSBBZGQgdHdvIG5vbi1vdmVybGFwcGluZyBldmVudHMuCitJTlNFUlQgSU5UTyBldmVu dHMgKGlkLCBldmVudF90aW1lLCBuYW1lKQorVkFMVUVTCisgICAgKDEsICdbIjIwMjMtMDEtMDEg MTk6MDA6MDAiLCAiMjAyMy0wMS0wMSAyMDo0NTowMCJdJywgJ2V2ZW50MScpLAorICAgICgyLCAn WyIyMDIzLTAxLTAxIDIxOjAwOjAwIiwgIjIwMjMtMDEtMDEgMjE6NDU6MDAiXScsICdldmVudDIn KTsKKy0tIFVwZGF0ZSB0aGUgZmlyc3QgZXZlbnQgdG8gb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQs IHNob3VsZCBmYWlsIHRoZSBjb25zdHJhaW50IGFuZCBub3QgYmUgSE9ULgorVVBEQVRFIGV2ZW50 cyBTRVQgZXZlbnRfdGltZSA9ICdbIjIwMjMtMDEtMDEgMjA6MDA6MDAiLCAiMjAyMy0wMS0wMSAy MTo0NTowMCJdJyBXSEVSRSBpZCA9IDE7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2 aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAibm9fc2NyZWVuaW5nX3RpbWVfb3ZlcmxhcCIK K0RFVEFJTDogIEtleSAoZXZlbnRfdGltZSk9KFsiU3VuIEphbiAwMSAyMDowMDowMCAyMDIzIFBT VCIsIlN1biBKYW4gMDEgMjE6NDU6MDAgMjAyMyBQU1QiXSkgY29uZmxpY3RzIHdpdGggZXhpc3Rp bmcga2V5IChldmVudF90aW1lKT0oWyJTdW4gSmFuIDAxIDIxOjAwOjAwIDIwMjMgUFNUIiwiU3Vu IEphbiAwMSAyMTo0NTowMCAyMDIzIFBTVCJdKS4KK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgbm8gbmV3 IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIHRoZSBmaXJzdCBldmVudCB0byBu b3Qgb3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIGFnYWluIG5vdCBIT1QgZHVlIHRvIHRoZSBjb25z dHJhaW50LgorVVBEQVRFIGV2ZW50cyBTRVQgZXZlbnRfdGltZSA9ICdbIjIwMjMtMDEtMDEgMjI6 MDA6MDAiLCAiMjAyMy0wMS0wMSAyMjo0NTowMCJdJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V2ZW50cyc6OnJlZ2NsYXNzKTsgLS0g ZXhwZWN0OiAwIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSB0aGUg Zmlyc3QgZXZlbnQgdG8gbm90IG92ZXJsYXAgd2l0aCB0aGUgc2Vjb25kLCB0aGlzIHRpbWUgd2Un cmUgSE9UIGJlY2F1c2Ugd2UgZG9uJ3Qgb3ZlcmxhcCB3aXRoIHRoZSBjb25zdHJhaW50LgorVVBE QVRFIGV2ZW50cyBTRVQgbmFtZSA9ICduZXcgbmFtZSBoZXJlJyBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V2ZW50cyc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAxIG9uZSBuZXcgSE9UIHVwZGF0ZQorIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKK0RST1AgVEFC TEUgZXZlbnRzOworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIEEgdGVzdCB0byBlbnN1cmUgdGhh dCBvbmx5IG1vZGlmaWVkIHN1bW1hcml6aW5nIGluZGV4ZXMgYXJlIHVwZGF0ZWQsIG5vdAorLS0g YWxsIG9mIHRoZW0uCitDUkVBVEUgVEFCTEUgZXggKGlkIFNFUklBTCBwcmltYXJ5IGtleSwgYXR0 MSBKU09OQiwgYXR0MiB0ZXh0LCBhdHQzIHRleHQsIGF0dDQgdGV4dCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDYwKTsKK0NSRUFURSBJTkRFWCBleF9leHByMV9pZHggT04gZXggVVNJTkcgYnRyZWUoKGF0 dDEtPidkYXRhJykpOworQ1JFQVRFIElOREVYIGV4X3N1bXIxX2lkeCBPTiBleCBVU0lORyBCUklO KGF0dDIpOworQ1JFQVRFIElOREVYIGV4X2V4cHIyX2lkeCBPTiBleCBVU0lORyBidHJlZSgoYXR0 MS0+J2EnKSk7CitDUkVBVEUgSU5ERVggZXhfZXhwcjNfaWR4IE9OIGV4IFVTSU5HIGJ0cmVlKChh dHQxLT4nYicpKTsKK0NSRUFURSBJTkRFWCBleF9leHByNF9pZHggT04gZXggVVNJTkcgYnRyZWUo KGF0dDEtPidjJykpOworQ1JFQVRFIElOREVYIGV4X3N1bXIyX2lkeCBPTiBleCBVU0lORyBCUklO KGF0dDMpOworQ1JFQVRFIElOREVYIGV4X3N1bXIzX2lkeCBPTiBleCBVU0lORyBCUklOKGF0dDQp OworQ1JFQVRFIElOREVYIGV4X2V4cHI1X2lkeCBPTiBleCBVU0lORyBidHJlZSgoYXR0MS0+J2Qn KSk7CitJTlNFUlQgSU5UTyBleCAoYXR0MSwgYXR0MikgVkFMVUVTICgneyJkYXRhIjogW119Jzo6 anNvbiwgJ25vdGhpbmcgc3BlY2lhbCcpOworU0VMRUNUICogRlJPTSBleDsKKyBpZCB8ICAgICBh dHQxICAgICB8ICAgICAgYXR0MiAgICAgICB8IGF0dDMgfCBhdHQ0IAorLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tCisgIDEgfCB7ImRhdGEiOiBbXX0g fCBub3RoaW5nIHNwZWNpYWwgfCAgICAgIHwgCisoMSByb3cpCisKKy0tIFVwZGF0ZSBhdHQyIGFu ZCBhdHQ0IGJvdGggYXJlIEJSSU4vc3VtbWFyaXppbmcgaW5kZXhlcywgdGhpcyBzaG91bGQgYmUg YSBIT1QgdXBkYXRlIGFuZAorLS0gb25seSB1cGRhdGUgdHdvIG9mIHRoZSB0aHJlZSBzdW1tYXJp emluZyBpbmRleGVzLgorVVBEQVRFIGV4IFNFVCBhdHQyID0gJ3NwZWNpYWwgaW5kZWVkJywgYXR0 NCA9ICd3aGF0ZXZlcic7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0 ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgb25lIG5ldyBIT1QgdXBkYXRlCisgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygx IHJvdykKKworU0VMRUNUICogRlJPTSBleDsKKyBpZCB8ICAgICBhdHQxICAgICB8ICAgICAgYXR0 MiAgICAgIHwgYXR0MyB8ICAgYXR0NCAgIAorLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tCisgIDEgfCB7ImRhdGEiOiBbXX0gfCBzcGVjaWFsIGlu ZGVlZCB8ICAgICAgfCB3aGF0ZXZlcgorKDEgcm93KQorCistLSBVcGRhdGUgYXR0MSBhbmQgYXR0 Miwgb25seSBvbmUgaXMgQlJJTi9zdW1tYXJpemluZywgdGhpcyBzaG91bGQgTk9UIGJlIGEgSE9U IHVwZGF0ZS4KK1VQREFURSBleCBTRVQgYXR0MSA9IGF0dDEgfHwgJ3siZGF0YSI6ICJob3dkeSJ9 JywgYXR0MiA9ICdzcGVjaWFsLCBzbyBzcGVjaWFsJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcg SE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGV4OworIGlkIHwgICAgICAg YXR0MSAgICAgICAgfCAgICAgICAgYXR0MiAgICAgICAgIHwgYXR0MyB8ICAgYXR0NCAgIAorLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0t LS0tLQorICAxIHwgeyJkYXRhIjogImhvd2R5In0gfCBzcGVjaWFsLCBzbyBzcGVjaWFsIHwgICAg ICB8IHdoYXRldmVyCisoMSByb3cpCisKKy0tIFVwZGF0ZSBhdHQyLCBhdHQzLCBhbmQgYXR0NCBh bGwgYXJlIEJSSU4vc3VtbWFyaXppbmcgaW5kZXhlcywgdGhpcyBzaG91bGQgYmUgYSBIT1QgdXBk YXRlCistLSBhbmQgeWV0IHN0aWxsIHVwZGF0ZSBhbGwgdGhyZWUgc3VtbWFyaXppbmcgaW5kZXhl cy4KK1VQREFURSBleCBTRVQgYXR0MiA9ICdhJywgYXR0MyA9ICdiJywgYXR0NCA9ICdjJzsKK1NF TEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7 IC0tIGV4cGVjdDogMiB3aXRoIG9uZSBuZXcgSE9UIHVwZGF0ZQorIHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gZXg7CisgaWQgfCAgICAgICBhdHQxICAgICAgICB8IGF0dDIgfCBhdHQzIHwgYXR0 NCAKKy0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLQorICAxIHwg eyJkYXRhIjogImhvd2R5In0gfCBhICAgIHwgYiAgICB8IGMKKygxIHJvdykKKworLS0gVXBkYXRl IGF0dDEsIGF0dDIsIGFuZCBhdHQzIGFsbCBtb2RpZmllZCB2YWx1ZXMgYXJlIEJSSU4vc3VtbWFy aXppbmcgaW5kZXhlcywgdGhpcyBzaG91bGQgYmUgYSBIT1QgdXBkYXRlCistLSBhbmQgeWV0IHN0 aWxsIHVwZGF0ZSBhbGwgdGhyZWUgc3VtbWFyaXppbmcgaW5kZXhlcy4KK1VQREFURSBleCBTRVQg YXR0MSA9ICd7ImRhdGEiOiAiaG93ZHkifScsIGF0dDIgPSAnZCcsIGF0dDMgPSAnZSc7CitTRUxF Q1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAt LSBleHBlY3Q6IDMgd2l0aCBvbmUgbmV3IEhPVCB1cGRhdGUKKyBwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMworKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIGV4OworIGlkIHwgICAgICAgYXR0MSAgICAgICAgfCBhdHQyIHwgYXR0MyB8IGF0dDQg CistLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0KKyAgMSB8IHsi ZGF0YSI6ICJob3dkeSJ9IHwgZCAgICB8IGUgICAgfCBjCisoMSByb3cpCisKK0RST1AgVEFCTEUg ZXg7CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gQSB0ZXN0IHRvIGVuc3VyZSB0aGF0IHN1bW1h cml6aW5nIGluZGV4ZXMgYXJlIG5vdCB1cGRhdGVkIHdoZW4gdGhleSBkb24ndAorLS0gY2hhbmdl LCBidXQgYXJlIHVwZGF0ZWQgd2hlbiB0aGV5IGRvIHdoaWxlIG5vdCBwcmVmZW50IEhPVCB1cGRh dGVzLgorQ1JFQVRFIFRBQkxFIGV4IChhdHQxIEpTT05CLCBhdHQyIHRleHQpIFdJVEggKGZpbGxm YWN0b3IgPSA2MCk7CitDUkVBVEUgSU5ERVggZXhfZXhwcjFfaWR4IE9OIGV4IFVTSU5HIGJ0cmVl KChhdHQxLT4nZGF0YScpKTsKK0NSRUFURSBJTkRFWCBleF9zdW1yMV9pZHggT04gZXggVVNJTkcg QlJJTihhdHQyKTsKK0lOU0VSVCBJTlRPIGV4IFZBTFVFUyAoJ3siZGF0YSI6IFtdfScsICdub3Ro aW5nIHNwZWNpYWwnKTsKKy0tIFVwZGF0ZSB0aGUgdW5pbmRleGVkIHZhbHVlIG9mIGF0dDEsIHRo aXMgc2hvdWxkIGJlIGEgSE9UIHVwZGF0ZSBhbmQgYW5kIHNob3VsZAorLS0gdXBkYXRlIHRoZSBz dW1tYXJpemluZyBpbmRleC4KK1VQREFURSBleCBTRVQgYXR0MSA9IGF0dDEgfHwgJ3sic3RhdHVz IjogInN0YWxlbWF0ZSJ9JzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBvbmUgbmV3IEhPVCB1cGRhdGUKKyBw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQor KDEgcm93KQorCistLSBVcGRhdGUgdGhlIGluZGV4ZWQgdmFsdWUgb2YgYXR0MiwgYSBzdW1tYXJp emVkIHZhbHVlLCB0aGlzIGlzIGEgc3VtbWFyaXplZAorLS0gb25seSB1cGRhdGUgYW5kIHNob3Vs ZCB1c2UgdGhlIEhPVCBwYXRoIHdoaWxlIHN0aWxsIHRyaWdnZXJpbmcgYW4gdXBkYXRlIHRvCist LSB0aGUgc3VtbWFyaXppbmcgQlJJTiBpbmRleC4KK1VQREFURSBleCBTRVQgYXR0MiA9ICdzcGVj aWFsIGluZGVlZCc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo J2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDIgb25lIG5ldyBIT1QgdXBkYXRlCisgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKKygxIHJv dykKKworLS0gVXBkYXRlIHRvIGF0dDEgZG9lc24ndCBjaGFuZ2UgdGhlIGluZGV4ZWQgdmFsdWUg d2hpbGUgdGhlIHVwZGF0ZSB0byBhdHQyIGRvZXMsCistLSB0aGlzIGFnYWluIGlzIGEgc3VtbWFy aXplZCBvbmx5IHVwZGF0ZSBhbmQgc2hvdWxkIHVzZSB0aGUgSE9UIHBhdGggYXMgd2VsbCBhcwor LS0gdHJpZ2dlciBhbiB1cGRhdGUgdG8gdGhlIEJSSU4gaW5kZXguCitVUERBVEUgZXggU0VUIGF0 dDEgPSBhdHQxIHx8ICd7InN0YXR1cyI6ICJjaGVja21hdGUifScsIGF0dDIgPSAnc3BlY2lhbCwg c28gc3BlY2lhbCc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo J2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDMgb25lIG5ldyBIT1QgdXBkYXRlCisgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKKygxIHJv dykKKworLS0gVGhpcyB1cGRhdGVzIGJvdGggaW5kZXhlcywgdGhlIGV4cHJlc3Npb24gaW5kZXgg b24gYXR0MSBhbmQgdGhlIHN1bW1hcml6aW5nCistLSBpbmRleCBvbiBhdHQyLiAgVGhpcyBzaG91 bGQgbm90IGJlIGEgSE9UIHVwZGF0ZSBiZWNhdXNlIHRoZXJlIGFyZSBtb2RpZmllZAorLS0gaW5k ZXhlcyBhbmQgb25seSBzb21lIGFyZSBzdW1tYXJpemVkLCBub3QgYWxsLiAgVGhpcyBzaG91bGQg Zm9yY2UgYWxsCistLSBpbmRleGVzIHRvIGJlIHVwZGF0ZWQuCitVUERBVEUgZXggU0VUIGF0dDEg PSBhdHQxIHx8ICd7ImRhdGEiOiBbMSwyLDNdfScsIGF0dDIgPSAnZG8geW91IHdhbnQgdG8gcGxh eSBhIGdhbWU/JzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn ZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogNCBib3RoIGluZGV4ZXMgdXBkYXRlZAorIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzCisoMSBy b3cpCisKK0RST1AgVEFCTEUgZXg7CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gVGhpcyB0ZXN0 IGlzIGZvciBhIHRhYmxlIHdpdGggYSBjdXN0b20gdHlwZSBhbmQgYSBjdXN0b20gb3BlcmF0b3Jz IG9uCistLSB0aGUgQlRSRUUgaW5kZXguICBUaGUgcXVlc3Rpb24gaXMsIHdoZW4gY29tcGFyaW5n IHZhbHVlcyBmb3IgZXF1YWxpdHkKKy0tIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgY2hhbmdl cyBvbiB0aGUgaW5kZXggb3Igbm90Li4uIHNob3VsZG4ndCB3ZQorLS0gYmUgdXNpbmcgdGhlIGN1 c3RvbSBvcGVyYXRvcnM/CistLSBDcmVhdGUgYSB0eXBlCitDUkVBVEUgVFlQRSBteV9jdXN0b21f dHlwZSBBUyAodmFsIGludCk7CistLSBDb21wYXJpc29uIGZ1bmN0aW9ucyAocmV0dXJucyBib29s ZWFuKQorQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9sdChhIG15X2N1c3RvbV90eXBlLCBiIG15 X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEu dmFsIDwgYi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7 CitDUkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2xlKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3Vz dG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwg PD0gYi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CitD UkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2VxKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9t X3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwgPSBi LnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKK0NSRUFU RSBGVU5DVElPTiBteV9jdXN0b21fZ2UoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlw ZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA+PSBiLnZh bDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKK0NSRUFURSBG VU5DVElPTiBteV9jdXN0b21fZ3QoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkg UkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA+IGIudmFsOwor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworQ1JFQVRFIEZVTkNU SU9OIG15X2N1c3RvbV9uZShhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90eXBlKSBSRVRV Uk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsICE9IGIudmFsOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworLS0gQ29tcGFyaXNvbiBm dW5jdGlvbiAocmV0dXJucyAtMSwgMCwgMSkKK0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21fY21w KGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgaW50IEFTICQkCitC RUdJTgorICAgIElGIGEudmFsIDwgYi52YWwgVEhFTgorICAgICAgICBSRVRVUk4gLTE7CisgICAg RUxTSUYgYS52YWwgPiBiLnZhbCBUSEVOCisgICAgICAgIFJFVFVSTiAxOworICAgIEVMU0UKKyAg ICAgICAgUkVUVVJOIDA7CisgICAgRU5EIElGOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJ TU1VVEFCTEUgU1RSSUNUOworLS0gQ3JlYXRlIHRoZSBvcGVyYXRvcnMKK0NSRUFURSBPUEVSQVRP UiA8ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9j dXN0b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fbHQsCisgICAgQ09NTVVUQVRP UiA9ID4sCisgICAgTkVHQVRPUiA9ID49CispOworQ1JFQVRFIE9QRVJBVE9SIDw9ICgKKyAgICBM RUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9jdXN0b21fdHlwZSwK KyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fbGUsCisgICAgQ09NTVVUQVRPUiA9ID49LAorICAg IE5FR0FUT1IgPSA+CispOworQ1JFQVRFIE9QRVJBVE9SID0gKAorICAgIExFRlRBUkcgPSBteV9j dXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NFRFVS RSA9IG15X2N1c3RvbV9lcSwKKyAgICBDT01NVVRBVE9SID0gPSwKKyAgICBORUdBVE9SID0gPD4K Kyk7CitDUkVBVEUgT1BFUkFUT1IgPj0gKAorICAgIExFRlRBUkcgPSBteV9jdXN0b21fdHlwZSwK KyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NFRFVSRSA9IG15X2N1c3Rv bV9nZSwKKyAgICBDT01NVVRBVE9SID0gPD0sCisgICAgTkVHQVRPUiA9IDwKKyk7CitDUkVBVEUg T1BFUkFUT1IgPiAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJH ID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX2d0LAorICAgIENP TU1VVEFUT1IgPSA8LAorICAgIE5FR0FUT1IgPSA8PQorKTsKK0NSRUFURSBPUEVSQVRPUiA8PiAo CisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9t X3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX25lLAorICAgIENPTU1VVEFUT1IgPSA8 PiwKKyAgICBORUdBVE9SID0gPQorKTsKKy0tIENyZWF0ZSB0aGUgb3BlcmF0b3IgY2xhc3MgKGlu Y2x1ZGluZyB0aGUgc3VwcG9ydCBmdW5jdGlvbikKK0NSRUFURSBPUEVSQVRPUiBDTEFTUyBteV9j dXN0b21fb3BzCisgICAgREVGQVVMVCBGT1IgVFlQRSBteV9jdXN0b21fdHlwZSBVU0lORyBidHJl ZSBBUworICAgIE9QRVJBVE9SIDEgPCwKKyAgICBPUEVSQVRPUiAyIDw9LAorICAgIE9QRVJBVE9S IDMgPSwKKyAgICBPUEVSQVRPUiA0ID49LAorICAgIE9QRVJBVE9SIDUgPiwKKyAgICBGVU5DVElP TiAxIG15X2N1c3RvbV9jbXAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKKy0tIENy ZWF0ZSB0aGUgdGFibGUKK0NSRUFURSBUQUJMRSBteV90YWJsZSAoCisgICAgaWQgaW50LAorICAg IGN1c3RvbV92YWwgbXlfY3VzdG9tX3R5cGUKKyk7CistLSBJbnNlcnQgc29tZSBkYXRhCitJTlNF UlQgSU5UTyBteV90YWJsZSAoaWQsIGN1c3RvbV92YWwpIFZBTFVFUworKDEsIFJPVygzKTo6bXlf Y3VzdG9tX3R5cGUpLAorKDIsIFJPVygxKTo6bXlfY3VzdG9tX3R5cGUpLAorKDMsIFJPVyg0KTo6 bXlfY3VzdG9tX3R5cGUpLAorKDQsIFJPVygyKTo6bXlfY3VzdG9tX3R5cGUpOworLS0gQ3JlYXRl IGEgZnVuY3Rpb24gdG8gdXNlIHdoZW4gaW5kZXhpbmcKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIGFic192YWwodmFsIG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGludCBBUyAkJAorQkVHSU4K KyAgUkVUVVJOIGFicyh2YWwudmFsKTsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRB QkxFIFNUUklDVDsKKy0tIENyZWF0ZSB0aGUgaW5kZXgKK0NSRUFURSBJTkRFWCBpZHhfY3VzdG9t X3ZhbF9hYnMgT04gbXlfdGFibGUgKGFic192YWwoY3VzdG9tX3ZhbCkpOworLS0gVXBkYXRlIDEK K1VQREFURSBteV90YWJsZSBTRVQgY3VzdG9tX3ZhbCA9IFJPVyg1KTo6bXlfY3VzdG9tX3R5cGUg V0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdteV90YWJsZSc6OnJlZ2NsYXNzKTsKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgMgorVVBEQVRF IG15X3RhYmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDApOjpteV9jdXN0b21fdHlwZSBXSEVSRSBj dXN0b21fdmFsIDwgUk9XKDMpOjpteV9jdXN0b21fdHlwZTsKK1NFTEVDVCBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnbXlfdGFibGUnOjpyZWdjbGFzcyk7CisgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykK KworLS0gVXBkYXRlIDMKK1VQREFURSBteV90YWJsZSBTRVQgY3VzdG9tX3ZhbCA9IFJPVyg2KTo6 bXlfY3VzdG9tX3R5cGUgV0hFUkUgaWQgPSAzOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKCdteV90YWJsZSc6OnJlZ2NsYXNzKTsKKyBwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBV cGRhdGUgNAorVVBEQVRFIG15X3RhYmxlIFNFVCBpZCA9IDUgV0hFUkUgaWQgPSAxOworU0VMRUNU IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdteV90YWJsZSc6OnJlZ2NsYXNz KTsKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMQorKDEgcm93KQorCistLSBRdWVyeSB1c2luZyB0aGUgaW5kZXgKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUICogRlJPTSBteV90YWJsZSBXSEVSRSBhYnNfdmFsKGN1c3RvbV92YWwpID0g NjsKKyAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBteV90YWJsZQorICAgRmlsdGVy OiAoYWJzX3ZhbChjdXN0b21fdmFsKSA9IDYpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIG15 X3RhYmxlIFdIRVJFIGFic192YWwoY3VzdG9tX3ZhbCkgPSA2OworIGlkIHwgY3VzdG9tX3ZhbCAK Ky0tLS0rLS0tLS0tLS0tLS0tCisgIDMgfCAoNikKKygxIHJvdykKKworLS0gQ2xlYW4gdXAKK0RS T1AgVEFCTEUgbXlfdGFibGUgQ0FTQ0FERTsKK0RST1AgT1BFUkFUT1IgQ0xBU1MgbXlfY3VzdG9t X29wcyBVU0lORyBidHJlZSBDQVNDQURFOworRFJPUCBPUEVSQVRPUiA8IChteV9jdXN0b21fdHlw ZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA8PSAobXlfY3VzdG9tX3R5cGUsIG15 X2N1c3RvbV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPSAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3Rv bV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPj0gKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlw ZSk7CitEUk9QIE9QRVJBVE9SID4gKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitE Uk9QIE9QRVJBVE9SIDw+IChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBG VU5DVElPTiBteV9jdXN0b21fbHQobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RS T1AgRlVOQ1RJT04gbXlfY3VzdG9tX2xlKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7 CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9lcShteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5 cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fZ2UobXlfY3VzdG9tX3R5cGUsIG15X2N1c3Rv bV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2d0KG15X2N1c3RvbV90eXBlLCBteV9j dXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9uZShteV9jdXN0b21fdHlwZSwg bXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fY21wKG15X2N1c3RvbV90 eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIGFic192YWwobXlfY3VzdG9tX3R5 cGUpOworRFJPUCBUWVBFIG15X2N1c3RvbV90eXBlIENBU0NBREU7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQppbmRleCAwYTM1ZjJmOGY2YS4uZTJmZDVmYjc0YTUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQpAQCAtNjgsNiArNjgsMTEgQEAgdGVzdDogc2VsZWN0X2ludG8gc2Vs ZWN0X2Rpc3RpbmN0IHNlbGVjdF9kaXN0aW5jdF9vbiBzZWxlY3RfaW1wbGljaXQgc2VsZWN0X2hh dmkKICMgLS0tLS0tLS0tLQogdGVzdDogYnJpbiBnaW4gZ2lzdCBzcGdpc3QgcHJpdmlsZWdlcyBp bml0X3ByaXZzIHNlY3VyaXR5X2xhYmVsIGNvbGxhdGUgbWF0dmlldyBsb2NrIHJlcGxpY2FfaWRl bnRpdHkgcm93c2VjdXJpdHkgb2JqZWN0X2FkZHJlc3MgdGFibGVzYW1wbGUgZ3JvdXBpbmdzZXRz IGRyb3Bfb3BlcmF0b3IgcGFzc3dvcmQgaWRlbnRpdHkgZ2VuZXJhdGVkX3N0b3JlZCBqb2luX2hh c2gKIAorIyAtLS0tLS0tLS0tCisjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKKyMg LS0tLS0tLS0tLQordGVzdDogaGVhcF9ob3RfdXBkYXRlcworCiAjIC0tLS0tLS0tLS0KICMgQWRk aXRpb25hbCBCUklOIHRlc3RzCiAjIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVh cF9ob3RfdXBkYXRlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjU2ZWM0ZjJmOTZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVh cF9ob3RfdXBkYXRlcy5zcWwKQEAgLTAsMCArMSw0ODEgQEAKKy0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t CistLSBUaGlzIHRhYmxlIHdpbGwgaGF2ZSB0d28gY29sdW1ucyBhbmQgdHdvIGluZGV4ZXMsIG9u ZSBvbiB0aGUgcHJpbWFyeSBrZXkKKy0tIGlkIGFuZCBvbmUgb24gdGhlIGV4cHJlc3Npb24gKGlu Zm8tPj4nbmFtZScpLiAgVGhhdCBtZWFucyB0aGF0IHRoZSBpbmRleGVkCistLSBhdHRyaWJ1dGVz IGFyZSAnaWQnIGFuZCAnaW5mbycuCitjcmVhdGUgdGFibGUga2V5dmFsdWUoaWQgaW50ZWdlciBw cmltYXJ5IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFtZWluZGV4IG9uIGtleXZh bHVlKChpbmZvLT4+J25hbWUnKSk7CitpbnNlcnQgaW50byBrZXl2YWx1ZSB2YWx1ZXMgKDEsICd7 Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CisKKy0tIERpc2FibGUgZXhw cmVzc2lvbiBjaGVja3MuCitBTFRFUiBUQUJMRSBrZXl2YWx1ZSBTRVQgKGV4cHJlc3Npb25fY2hl Y2tzID0gZmFsc2UpOworU0VMRUNUIHJlbG9wdGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lID0gJ2tleXZhbHVlJzsKKworLS0gV2hpbGUgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1l IiBpcyB1bmNoYW5nZWQgd2UndmUgZGlzYWJsZWQgZXhwcmVzc2lvbgorLS0gY2hlY2tzIHNvIHRo aXMgdXBkYXRlIHNob3VsZCBub3QgZ28gSE9UIGFzIHRoZSBzeXN0ZW0gY2FuJ3QgZGV0ZXJtaW5l IGlmCistLSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGUgaGFzIGNoYW5nZWQgd2l0aG91dCBldmFsdWF0 aW5nIHRoZSBleHByZXNzaW9uLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAi am9obiIsICJkYXRhIjogInNvbWV0aGluZyBlbHNlIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAt LSBleHBlY3Q6IDAgcm93CisKKy0tIFJlLWVuYWJsZSBleHByZXNzaW9uIGNoZWNrcy4KK0FMVEVS IFRBQkxFIGtleXZhbHVlIFNFVCAoZXhwcmVzc2lvbl9jaGVja3MgPSB0cnVlKTsKK1NFTEVDVCBy ZWxvcHRpb25zIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdrZXl2YWx1ZSc7CisKKy0t IFRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIgd2l0aCB2YWx1ZSAiam9obiIgaXMgdW5jaGFu Z2VkLCBleHBlY3QgYSBIT1QgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5h bWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2Vs ZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2Ns YXNzKTsgLS0gZXhwZWN0OiAxIHJvdworCistLSBUaGUgZm9sbG93aW5nIHVwZGF0ZSBjaGFuZ2Vz IHRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIsIHRoaXMgc2hvdWxkIG5vdCBiZSBhIEhPVCB1 cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJkYXRh IjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAx IG5vIG5ldyBIT1QgdXBkYXRlcworCistLSBOb3csIHRoaXMgdXBkYXRlIGRvZXMgbm90IGNoYW5n ZSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIGZyb20gInNtaXRoIiwgdGhpcyBzaG91bGQg YmUgSE9ULgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUiOiAic21pdGgiLCAiZGF0 YSI6ICJzb21lIG1vcmUgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAy IHJvd3Mgbm93Citkcm9wIHRhYmxlIGtleXZhbHVlOworCisKKy0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t CistLSBUaGlzIHRhYmxlIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBvbmUgYnV0IGl0IGhh cyBhIHRoaXJkIGluZGV4LiAgVGhlCistLSBpbmRleCAnY29saW5kZXgnIGlzbid0IGFuIGV4cHJl c3Npb24gaW5kZXgsIGl0IGluZGV4ZXMgdGhlIGVudGlyZSB2YWx1ZQorLS0gaW4gdGhlIGluZm8g Y29sdW1uLiAgVGhlcmUgYXJlIHN0aWxsIG9ubHkgdHdvIGluZGV4ZWQgYXR0cmlidXRlcyBmb3Ig dGhpcworLS0gcmVsYXRpb24sIHRoZSBzYW1lIHR3byBhcyBiZWZvcmUuICBUaGUgcHJlc2VuY2Ug b2YgYW4gaW5kZXggb24gdGhlIGVudGlyZQorLS0gdmFsdWUgb2YgdGhlIGluZm8gY29sdW1uIHNo b3VsZCBwcmV2ZW50IEhPVCB1cGRhdGVzIGZvciBhbnkgdXBkYXRlcyB0byBhbnkKKy0tIHBvcnRp b24gb2YgSlNPTkIgY29udGVudCBpbiB0aGF0IGNvbHVtbi4KK2NyZWF0ZSB0YWJsZSBrZXl2YWx1 ZShpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBpbmZvIGpzb25iKTsKK2NyZWF0ZSBpbmRleCBuYW1l aW5kZXggb24ga2V5dmFsdWUoKGluZm8tPj4nbmFtZScpKTsKK2NyZWF0ZSBpbmRleCBjb2xpbmRl eCBvbiBrZXl2YWx1ZShpbmZvKTsKK2luc2VydCBpbnRvIGtleXZhbHVlIHZhbHVlcyAoMSwgJ3si bmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBkYXRhIn0nKTsKKworLS0gVGhpcyB1cGRhdGUg ZG9lc24ndCBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGluZGV4LCBidXQgaXQg ZG9lcworLS0gY2hhbmdlIHRoZSBjb250ZW50IG9mIHRoZSBpbmZvIGNvbHVtbiBhbmQgc28gc2hv dWxkIG5vdCBiZSBIT1QgYmVjYXVzZSB0aGUKKy0tIGluZGV4ZWQgdmFsdWUgY2hhbmdlZCBhcyBh IHJlc3VsdCBvZiB0aGUgdXBkYXRlLgordXBkYXRlIGtleXZhbHVlIHNldCBpbmZvPSd7Im5hbWUi OiAiam9obiIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyB3aGVyZSBpZD0xOworc2VsZWN0 IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdrZXl2YWx1ZSc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAwIHJvd3MKK2Ryb3AgdGFibGUga2V5dmFsdWU7CisKKy0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tCistLSBUaGUgdGFibGUgaGFzIG9uZSBjb2x1bW4gZG9jcyBhbmQgdHdvIGluZGV4 ZXMuICBUaGV5IGFyZSBib3RoIGV4cHJlc3Npb24KKy0tIGluZGV4ZXMgcmVmZXJlbmNpbmcgdGhl IHNhbWUgY29sdW1uIGF0dHJpYnV0ZSAoZG9jcykgYnV0IG9uZSBpcyBhIHBhcnRpYWwKKy0tIGlu ZGV4LgorQ1JFQVRFIFRBQkxFIGV4IChkb2NzIEpTT05CKSBXSVRIIChmaWxsZmFjdG9yID0gNjAp OworSU5TRVJUIElOVE8gZXggKGRvY3MpIFZBTFVFUyAoJ3siYSI6IDAsICJiIjogMH0nKTsKK0lO U0VSVCBJTlRPIGV4IChkb2NzKSBTRUxFQ1QganNvbmJfYnVpbGRfb2JqZWN0KCdiJywgbikgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMTAwLCAxMDAwMCkgYXMgbjsKK0NSRUFURSBJTkRFWCBpZHhfZXhf YSBPTiBleCAoKGRvY3MtPj4nYScpKTsKK0NSRUFURSBJTkRFWCBpZHhfZXhfYiBPTiBleCAoKGRv Y3MtPj4nYicpKSBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5OworCistLSBXZSdyZSB1 c2luZyBCVFJFRSBpbmRleGVzIGFuZCBmb3IgdGhpcyB0ZXN0IHdlIHdhbnQgdG8gbWFrZSBzdXJl IHRoYXQgdGhleSByZW1haW4KKy0tIGluIHN5bmMgd2l0aCBjaGFuZ2VzIHRvIG91ciByZWxhdGlv bi4gIEZvcmNlIHRoZSBjaG9pY2Ugb2YgaW5kZXggc2NhbnMgYmVsb3cgc28KKy0tIHRoYXQgd2Ug a25vdyB3ZSdyZSBjaGVja2luZyB0aGUgaW5kZXgncyB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdmFs dWVzIHNob3VsZCBiZQorLS0gaW4gdGhlIGluZGV4IG9yIG5vdC4KK1NFVCBTRVNTSU9OIGVuYWJs ZV9zZXFzY2FuID0gT0ZGOworU0VUIFNFU1NJT04gZW5hYmxlX2JpdG1hcHNjYW4gPSBPRkY7CisK Ky0tIExlYXZlICdhJyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1ZSBvdXRzaWRl IG9mIHRoZSBpbmRleCBwcmVkaWNhdGUuCistLSBUaGlzIHNob3VsZCBiZSBhIEhPVCB1cGRhdGUg YmVjYXVzZSBuZWl0aGVyIGluZGV4IGlzIGNoYW5nZWQuCitVUERBVEUgZXggU0VUIGRvY3MgPSBq c29uYl9idWlsZF9vYmplY3QoJ2EnLCAwLCAnYicsIDEpIFdIRVJFIChkb2NzLT4+J2EnKTo6bnVt ZXJpYyA9IDA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4 Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93CistLSBMZXQncyBjaGVjayB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgaW5kZXggZG9lcyBub3QgY29udGFpbiBhIHZhbHVlIGZvciAnYicKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVy aWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CitTRUxFQ1QgKiBGUk9NIGV4 IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJp YyA8IDEwMDsKKworLS0gTGVhdmUgJ2EnIHVuY2hhbmdlZCBidXQgbW9kaWZ5ICdiJyB0byBhIHZh bHVlIHdpdGhpbiB0aGUgaW5kZXggcHJlZGljYXRlLgorLS0gVGhpcyByZXByZXNlbnRzIGEgY2hh bmdlIGZvciBmaWVsZCAnYicgZnJvbSB1bmluZGV4ZWQgdG8gaW5kZXhlZCBhbmQgc28KKy0tIHRo aXMgc2hvdWxkIG5vdCB0YWtlIHRoZSBIT1QgcGF0aC4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpz b25iX2J1aWxkX29iamVjdCgnYScsIDAsICdiJywgMTApIFdIRVJFIChkb2NzLT4+J2EnKTo6bnVt ZXJpYyA9IDA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4 Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCistLSBMZXQncyBj aGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBv ZiAnYicKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+ PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CitTRUxF Q1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+ J2InKTo6bnVtZXJpYyA8IDEwMDsKKworLS0gVGhpcyB1cGRhdGUgbW9kaWZpZXMgdGhlIHZhbHVl IG9mICdhJywgYW4gaW5kZXhlZCBmaWVsZCwgc28gaXQgYWxzbyBjYW5ub3QKKy0tIGJlIGEgSE9U IHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDEs ICdiJywgMTApIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDEwOworU0VMRUNUIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0 OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzIGJvdGggJ2En IGFuZCAnYicgdG8gbmV3IHZhbHVlcyB0aGF0IHJlcXVpcmUgaW5kZXggdXBkYXRlcywKKy0tIHRo aXMgY2Fubm90IHVzZSB0aGUgSE9UIHBhdGguCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9i dWlsZF9vYmplY3QoJ2EnLCAyLCAnYicsIDEyKSBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMg PSAxMDsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpy ZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKy0tIExldCdzIGNoZWNr IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mICdi JworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2In KTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKK1NFTEVDVCAq IEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicp OjpudW1lcmljIDwgMTAwOworCistLSBUaGlzIHVwZGF0ZSBjaGFuZ2VzICdiJyB0byBhIHZhbHVl IG91dHNpZGUgaXRzIHByZWRpY2F0ZSByZXF1aXJpbmcgdGhhdAorLS0gd2UgcmVtb3ZlIGl0IGZy b20gdGhlIGluZGV4LiAgVGhhdCdzIGEgdHJhbnNpdGlvbiB0aGF0IGNhbid0IGJlIGRvbmUKKy0t IGR1cmluZyBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29uYl9idWlsZF9v YmplY3QoJ2EnLCAyLCAnYicsIDEpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDEyOwor U0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNz KTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworLS0gTGV0J3MgY2hlY2sgdG8gbWFr ZSBzdXJlIHRoYXQgdGhlIGluZGV4IG5vIGxvbmdlciBjb250YWlucyB0aGUgdmFsdWUgb2YgJ2In CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicp OjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworU0VMRUNUICog RlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+PidiJyk6 Om51bWVyaWMgPCAxMDA7CisKKy0tIERpc2FibGUgZXhwcmVzc2lvbiBjaGVja3MuCitBTFRFUiBU QUJMRSBleCBTRVQgKGV4cHJlc3Npb25fY2hlY2tzID0gZmFsc2UpOworU0VMRUNUIHJlbG9wdGlv bnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2V4JzsKKworLS0gVGhpcyB1cGRhdGUg Y2hhbmdlcyAnYicgdG8gYSB2YWx1ZSB3aXRoaW4gaXRzIHByZWRpY2F0ZSBqdXN0IGxpa2UgaXQK Ky0tIHByZXZpb3VzIHZhbHVlLCB3aGljaCB3b3VsZCBhbGxvdyBmb3IgYSBIT1QgdXBkYXRlIGJ1 dCB3aXRoIGV4cHJlc3Npb24KKy0tIGNoZWNrcyBkaXNhYmxlZCB3ZSBjYW4ndCBkZXRlcm1pbmUg dGhhdCBzbyB0aGlzIHNob3VsZCBub3QgYmUgYSBIT1QgdXBkYXRlLgorVVBEQVRFIGV4IFNFVCBk b2NzID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMiwgJ2InLCAyKSBXSEVSRSAoZG9jcy0+Pidi Jyk6Om51bWVyaWMgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworCisK Ky0tIExldCdzIG1ha2Ugc3VyZSB3ZSdyZSByZWNvcmRpbmcgSE9UIHVwZGF0ZXMgZm9yIG91ciAn ZXgnIHJlbGF0aW9uIHByb3Blcmx5IGluIHRoZSBzeXN0ZW0KKy0tIHRhYmxlIHBnX3N0YXRfdXNl cl90YWJsZXMuICBOb3RlIHRoYXQgc3RhdGlzdGljcyBhcmUgc3RvcmVkIHdpdGhpbiBhIHRyYW5z YWN0aW9uIGNvbnRleHQKKy0tIGZpcnN0ICh4YWN0KSBhbmQgdGhlbiBsYXRlciBpbnRvIHRoZSBn bG9iYWwgc3RhdGlzdGljcyBmb3IgYSByZWxhdGlvbiwgc28gZmlyc3Qgd2UgbmVlZAorLS0gdG8g ZW5zdXJlIHBlbmRpbmcgc3RhdHMgYXJlIGZsdXNoZWQuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CitTRUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMgdGFibGVfbmFtZSwKKyAgICAt LSBUcmFuc2FjdGlvbiBzdGF0aXN0aWNzCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBk YXRlZChjLm9pZCkgQVMgeGFjdF91cGRhdGVzLAorICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X2hvdF91cGRhdGVkKGMub2lkKSBBUyB4YWN0X2hvdF91cGRhdGVzLAorICAgIFJPVU5EKCgKKyAg ICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpOjpmbG9hdCAv CisgICAgICAgIE5VTExJRihwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKGMub2lkKSwg MCkgKiAxMDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB4YWN0X2hvdF91cGRhdGVfcGVyY2VudGFn ZSwKKyAgICAtLSBDdW11bGF0aXZlIHN0YXRpc3RpY3MKKyAgICBzLm5fdHVwX3VwZCBBUyB0b3Rh bF91cGRhdGVzLAorICAgIHMubl90dXBfaG90X3VwZCBBUyBob3RfdXBkYXRlcywKKyAgICBST1VO RCgoCisgICAgICAgIHMubl90dXBfaG90X3VwZDo6ZmxvYXQgLworICAgICAgICBOVUxMSUYocy5u X3R1cF91cGQsIDApICogMTAwCisgICAgKTo6bnVtZXJpYywgMikgQVMgdG90YWxfaG90X3VwZGF0 ZV9wZXJjZW50YWdlCitGUk9NIHBnX2NsYXNzIGMKK0xFRlQgSk9JTiBwZ19zdGF0X3VzZXJfdGFi bGVzIHMgT04gYy5yZWxuYW1lID0gcy5yZWxuYW1lCitXSEVSRSBjLnJlbG5hbWUgPSAnZXgnCitB TkQgYy5yZWxuYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlOworLS0gZXhwZWN0OiA1 IHhhY3QgdXBkYXRlcyB3aXRoIDEgeGFjdCBob3QgdXBkYXRlIGFuZCBubyBjdW11bGF0aXZlIHVw ZGF0ZXMgYXMgeWV0CisKK1NFVCBTRVNTSU9OIGVuYWJsZV9zZXFzY2FuID0gT047CitTRVQgU0VT U0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9OOworCitEUk9QIFRBQkxFIGV4OworCistLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLQorLS0gVGhpcyB0YWJsZSBoYXMgYSBzaW5nbGUgY29sdW1uICdlbWFpbCcg YW5kIGEgdW5pcXVlIGNvbnN0cmFpbnQgb24gaXQgdGhhdAorLS0gc2hvdWxkIHByZWNsdWRlIEhP VCB1cGRhdGVzLgorQ1JFQVRFIFRBQkxFIHVzZXJzICgKKyAgICB1c2VyX2lkIHNlcmlhbCBwcmlt YXJ5IGtleSwKKyAgICBuYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBlbWFpbCBWQVJD SEFSKDI1NSkgTk9UIE5VTEwsCisgICAgRVhDTFVERSBVU0lORyBidHJlZSAobG93ZXIoZW1haWwp IFdJVEggPSkKKyk7CisKKy0tIEFkZCBzb21lIGRhdGEgdG8gdGhlIHRhYmxlIGFuZCB0aGVuIHVw ZGF0ZSBpdCBpbiB3YXlzIHRoYXQgc2hvdWxkIGFuZCBzaG91bGQKKy0tIG5vdCBiZSBIT1QgdXBk YXRlcy4KK0lOU0VSVCBJTlRPIHVzZXJzIChuYW1lLCBlbWFpbCkgVkFMVUVTCisoJ3VzZXIxJywg J3VzZXIxQGV4YW1wbGUuY29tJyksCisoJ3VzZXIyJywgJ3VzZXIyQGV4YW1wbGUuY29tJyksCiso J3Rha2VuJywgJ3Rha2VuQEVYQU1QTEUuY29tJyksCisoJ3lvdScsICd5b3VAZG9tYWluLmNvbScp LAorKCd0YWtlbicsICd0YWtlbkBkb21haW4uY29tJyk7CisKKy0tIFNob3VsZCBmYWlsIGJlY2F1 c2Ugb2YgdGhlIHVuaXF1ZSBjb25zdHJhaW50IG9uIHRoZSBlbWFpbCBjb2x1bW4uCitVUERBVEUg dXNlcnMgU0VUIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJyBXSEVSRSBlbWFpbCA9ICd1c2Vy MkBleGFtcGxlLmNvbSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0 ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgbm8gbmV3IEhPVCB1cGRhdGVzCisK Ky0tIFNob3VsZCBzdWNjZWVkIGJlY2F1c2UgdGhlIGVtYWlsIGNvbHVtbiBpcyBub3QgYmVpbmcg dXBkYXRlZCBhbmQgc2hvdWxkIGdvIEhPVC4KK1VQREFURSB1c2VycyBTRVQgbmFtZSA9ICdmb28n IFdIRVJFIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBh IHNpbmdsZSBuZXcgSE9UIHVwZGF0ZQorCistLSBDcmVhdGUgYSBwYXJ0aWFsIGluZGV4IG9uIHRo ZSBlbWFpbCBjb2x1bW4sIHVwZGF0ZXMKK0NSRUFURSBJTkRFWCBpZHhfdXNlcnNfZW1haWxfbm9f ZXhhbXBsZSBPTiB1c2VycyAobG93ZXIoZW1haWwpKSBXSEVSRSBsb3dlcihlbWFpbCkgTElLRSAn JUBleGFtcGxlLmNvbSUnOworCistLSBBbiB1cGRhdGUgdGhhdCBjaGFuZ2VzIHRoZSBlbWFpbCBj b2x1bW4gYnV0IG5vdCB0aGUgaW5kZXhlZCBwb3J0aW9uIG9mIGl0IGFuZCBmYWxscyBvdXRzaWRl IHRoZSBjb25zdHJhaW50LgorLS0gU2hvdWxkbid0IGJlIGEgSE9UIHVwZGF0ZSBiZWNhdXNlIG9m IHRoZSBleGNsdXNpb24gY29uc3RyYWludC4KK1VQREFURSB1c2VycyBTRVQgZW1haWwgPSAneW91 KzJAZG9tYWluLmNvbScgV0hFUkUgbmFtZSA9ICd5b3UnOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5v IG5ldyBIT1QgdXBkYXRlcworCistLSBBbiB1cGRhdGUgdGhhdCBjaGFuZ2VzIHRoZSBlbWFpbCBj b2x1bW4gYnV0IG5vdCB0aGUgaW5kZXhlZCBwb3J0aW9uIG9mIGl0IGFuZCBmYWxscyB3aXRoaW4g dGhlIGNvbnN0cmFpbnQuCistLSBBZ2Fpbiwgc2hvdWxkIGZhaWwgY29uc3RyYWludCBhbmQgZmFp bCB0byBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgdXNlcnMgU0VUIGVtYWlsID0gJ3Rha2VuQGRv bWFpbi5jb20nIFdIRVJFIG5hbWUgPSAneW91JzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcg SE9UIHVwZGF0ZXMKKworRFJPUCBUQUJMRSB1c2VyczsKKworLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0K Ky0tIEFub3RoZXIgdGVzdCBvZiBjb25zdHJhaW50cyBzcG9pbGluZyBIT1QgdXBkYXRlcywgdGhp cyB0aW1lIHdpdGggYSByYW5nZS4KK0NSRUFURSBUQUJMRSBldmVudHMgKAorICAgIGlkIHNlcmlh bCBwcmltYXJ5IGtleSwKKyAgICBuYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBldmVu dF90aW1lIHRzdHpyYW5nZSwKKyAgICBjb25zdHJhaW50IG5vX3NjcmVlbmluZ190aW1lX292ZXJs YXAgZXhjbHVkZSB1c2luZyBnaXN0ICgKKyAgICAgICAgZXZlbnRfdGltZSBXSVRIICYmCisgICAg KQorKTsKKworLS0gQWRkIHR3byBub24tb3ZlcmxhcHBpbmcgZXZlbnRzLgorSU5TRVJUIElOVE8g ZXZlbnRzIChpZCwgZXZlbnRfdGltZSwgbmFtZSkKK1ZBTFVFUworICAgICgxLCAnWyIyMDIzLTAx LTAxIDE5OjAwOjAwIiwgIjIwMjMtMDEtMDEgMjA6NDU6MDAiXScsICdldmVudDEnKSwKKyAgICAo MiwgJ1siMjAyMy0wMS0wMSAyMTowMDowMCIsICIyMDIzLTAxLTAxIDIxOjQ1OjAwIl0nLCAnZXZl bnQyJyk7CisKKy0tIFVwZGF0ZSB0aGUgZmlyc3QgZXZlbnQgdG8gb3ZlcmxhcCB3aXRoIHRoZSBz ZWNvbmQsIHNob3VsZCBmYWlsIHRoZSBjb25zdHJhaW50IGFuZCBub3QgYmUgSE9ULgorVVBEQVRF IGV2ZW50cyBTRVQgZXZlbnRfdGltZSA9ICdbIjIwMjMtMDEtMDEgMjA6MDA6MDAiLCAiMjAyMy0w MS0wMSAyMTo0NTowMCJdJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfaG90X3VwZGF0ZWQoJ2V2ZW50cyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAwIG5vIG5l dyBIT1QgdXBkYXRlcworCistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRvIG5vdCBvdmVybGFw IHdpdGggdGhlIHNlY29uZCwgYWdhaW4gbm90IEhPVCBkdWUgdG8gdGhlIGNvbnN0cmFpbnQuCitV UERBVEUgZXZlbnRzIFNFVCBldmVudF90aW1lID0gJ1siMjAyMy0wMS0wMSAyMjowMDowMCIsICIy MDIzLTAxLTAxIDIyOjQ1OjAwIl0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXZlbnRzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAg bm8gbmV3IEhPVCB1cGRhdGVzCisKKy0tIFVwZGF0ZSB0aGUgZmlyc3QgZXZlbnQgdG8gbm90IG92 ZXJsYXAgd2l0aCB0aGUgc2Vjb25kLCB0aGlzIHRpbWUgd2UncmUgSE9UIGJlY2F1c2Ugd2UgZG9u J3Qgb3ZlcmxhcCB3aXRoIHRoZSBjb25zdHJhaW50LgorVVBEQVRFIGV2ZW50cyBTRVQgbmFtZSA9 ICduZXcgbmFtZSBoZXJlJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfaG90X3VwZGF0ZWQoJ2V2ZW50cyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG9uZSBu ZXcgSE9UIHVwZGF0ZQorCitEUk9QIFRBQkxFIGV2ZW50czsKKworLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0KKy0tIEEgdGVzdCB0byBlbnN1cmUgdGhhdCBvbmx5IG1vZGlmaWVkIHN1bW1hcml6aW5nIGlu ZGV4ZXMgYXJlIHVwZGF0ZWQsIG5vdAorLS0gYWxsIG9mIHRoZW0uCitDUkVBVEUgVEFCTEUgZXgg KGlkIFNFUklBTCBwcmltYXJ5IGtleSwgYXR0MSBKU09OQiwgYXR0MiB0ZXh0LCBhdHQzIHRleHQs IGF0dDQgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDYwKTsKK0NSRUFURSBJTkRFWCBleF9leHBy MV9pZHggT04gZXggVVNJTkcgYnRyZWUoKGF0dDEtPidkYXRhJykpOworQ1JFQVRFIElOREVYIGV4 X3N1bXIxX2lkeCBPTiBleCBVU0lORyBCUklOKGF0dDIpOworQ1JFQVRFIElOREVYIGV4X2V4cHIy X2lkeCBPTiBleCBVU0lORyBidHJlZSgoYXR0MS0+J2EnKSk7CitDUkVBVEUgSU5ERVggZXhfZXhw cjNfaWR4IE9OIGV4IFVTSU5HIGJ0cmVlKChhdHQxLT4nYicpKTsKK0NSRUFURSBJTkRFWCBleF9l eHByNF9pZHggT04gZXggVVNJTkcgYnRyZWUoKGF0dDEtPidjJykpOworQ1JFQVRFIElOREVYIGV4 X3N1bXIyX2lkeCBPTiBleCBVU0lORyBCUklOKGF0dDMpOworQ1JFQVRFIElOREVYIGV4X3N1bXIz X2lkeCBPTiBleCBVU0lORyBCUklOKGF0dDQpOworQ1JFQVRFIElOREVYIGV4X2V4cHI1X2lkeCBP TiBleCBVU0lORyBidHJlZSgoYXR0MS0+J2QnKSk7CitJTlNFUlQgSU5UTyBleCAoYXR0MSwgYXR0 MikgVkFMVUVTICgneyJkYXRhIjogW119Jzo6anNvbiwgJ25vdGhpbmcgc3BlY2lhbCcpOworCitT RUxFQ1QgKiBGUk9NIGV4OworCistLSBVcGRhdGUgYXR0MiBhbmQgYXR0NCBib3RoIGFyZSBCUklO L3N1bW1hcml6aW5nIGluZGV4ZXMsIHRoaXMgc2hvdWxkIGJlIGEgSE9UIHVwZGF0ZSBhbmQKKy0t IG9ubHkgdXBkYXRlIHR3byBvZiB0aGUgdGhyZWUgc3VtbWFyaXppbmcgaW5kZXhlcy4KK1VQREFU RSBleCBTRVQgYXR0MiA9ICdzcGVjaWFsIGluZGVlZCcsIGF0dDQgPSAnd2hhdGV2ZXInOworU0VM RUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsg LS0gZXhwZWN0OiAxIG9uZSBuZXcgSE9UIHVwZGF0ZQorU0VMRUNUICogRlJPTSBleDsKKworLS0g VXBkYXRlIGF0dDEgYW5kIGF0dDIsIG9ubHkgb25lIGlzIEJSSU4vc3VtbWFyaXppbmcsIHRoaXMg c2hvdWxkIE5PVCBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VUIGF0dDEgPSBhdHQxIHx8 ICd7ImRhdGEiOiAiaG93ZHkifScsIGF0dDIgPSAnc3BlY2lhbCwgc28gc3BlY2lhbCc7CitTRUxF Q1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAt LSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCitTRUxFQ1QgKiBGUk9NIGV4OworCistLSBV cGRhdGUgYXR0MiwgYXR0MywgYW5kIGF0dDQgYWxsIGFyZSBCUklOL3N1bW1hcml6aW5nIGluZGV4 ZXMsIHRoaXMgc2hvdWxkIGJlIGEgSE9UIHVwZGF0ZQorLS0gYW5kIHlldCBzdGlsbCB1cGRhdGUg YWxsIHRocmVlIHN1bW1hcml6aW5nIGluZGV4ZXMuCitVUERBVEUgZXggU0VUIGF0dDIgPSAnYScs IGF0dDMgPSAnYicsIGF0dDQgPSAnYyc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDIgd2l0aCBvbmUgbmV3IEhP VCB1cGRhdGUKK1NFTEVDVCAqIEZST00gZXg7CisKKy0tIFVwZGF0ZSBhdHQxLCBhdHQyLCBhbmQg YXR0MyBhbGwgbW9kaWZpZWQgdmFsdWVzIGFyZSBCUklOL3N1bW1hcml6aW5nIGluZGV4ZXMsIHRo aXMgc2hvdWxkIGJlIGEgSE9UIHVwZGF0ZQorLS0gYW5kIHlldCBzdGlsbCB1cGRhdGUgYWxsIHRo cmVlIHN1bW1hcml6aW5nIGluZGV4ZXMuCitVUERBVEUgZXggU0VUIGF0dDEgPSAneyJkYXRhIjog Imhvd2R5In0nLCBhdHQyID0gJ2QnLCBhdHQzID0gJ2UnOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAzIHdpdGgg b25lIG5ldyBIT1QgdXBkYXRlCitTRUxFQ1QgKiBGUk9NIGV4OworCitEUk9QIFRBQkxFIGV4Owor CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gQSB0ZXN0IHRvIGVuc3VyZSB0aGF0IHN1bW1hcml6 aW5nIGluZGV4ZXMgYXJlIG5vdCB1cGRhdGVkIHdoZW4gdGhleSBkb24ndAorLS0gY2hhbmdlLCBi dXQgYXJlIHVwZGF0ZWQgd2hlbiB0aGV5IGRvIHdoaWxlIG5vdCBwcmVmZW50IEhPVCB1cGRhdGVz LgorQ1JFQVRFIFRBQkxFIGV4IChhdHQxIEpTT05CLCBhdHQyIHRleHQpIFdJVEggKGZpbGxmYWN0 b3IgPSA2MCk7CitDUkVBVEUgSU5ERVggZXhfZXhwcjFfaWR4IE9OIGV4IFVTSU5HIGJ0cmVlKChh dHQxLT4nZGF0YScpKTsKK0NSRUFURSBJTkRFWCBleF9zdW1yMV9pZHggT04gZXggVVNJTkcgQlJJ TihhdHQyKTsKK0lOU0VSVCBJTlRPIGV4IFZBTFVFUyAoJ3siZGF0YSI6IFtdfScsICdub3RoaW5n IHNwZWNpYWwnKTsKKworLS0gVXBkYXRlIHRoZSB1bmluZGV4ZWQgdmFsdWUgb2YgYXR0MSwgdGhp cyBzaG91bGQgYmUgYSBIT1QgdXBkYXRlIGFuZCBhbmQgc2hvdWxkCistLSB1cGRhdGUgdGhlIHN1 bW1hcml6aW5nIGluZGV4LgorVVBEQVRFIGV4IFNFVCBhdHQxID0gYXR0MSB8fCAneyJzdGF0dXMi OiAic3RhbGVtYXRlIn0nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG9uZSBuZXcgSE9UIHVwZGF0ZQorCist LSBVcGRhdGUgdGhlIGluZGV4ZWQgdmFsdWUgb2YgYXR0MiwgYSBzdW1tYXJpemVkIHZhbHVlLCB0 aGlzIGlzIGEgc3VtbWFyaXplZAorLS0gb25seSB1cGRhdGUgYW5kIHNob3VsZCB1c2UgdGhlIEhP VCBwYXRoIHdoaWxlIHN0aWxsIHRyaWdnZXJpbmcgYW4gdXBkYXRlIHRvCistLSB0aGUgc3VtbWFy aXppbmcgQlJJTiBpbmRleC4KK1VQREFURSBleCBTRVQgYXR0MiA9ICdzcGVjaWFsIGluZGVlZCc7 CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xh c3MpOyAtLSBleHBlY3Q6IDIgb25lIG5ldyBIT1QgdXBkYXRlCisKKy0tIFVwZGF0ZSB0byBhdHQx IGRvZXNuJ3QgY2hhbmdlIHRoZSBpbmRleGVkIHZhbHVlIHdoaWxlIHRoZSB1cGRhdGUgdG8gYXR0 MiBkb2VzLAorLS0gdGhpcyBhZ2FpbiBpcyBhIHN1bW1hcml6ZWQgb25seSB1cGRhdGUgYW5kIHNo b3VsZCB1c2UgdGhlIEhPVCBwYXRoIGFzIHdlbGwgYXMKKy0tIHRyaWdnZXIgYW4gdXBkYXRlIHRv IHRoZSBCUklOIGluZGV4LgorVVBEQVRFIGV4IFNFVCBhdHQxID0gYXR0MSB8fCAneyJzdGF0dXMi OiAiY2hlY2ttYXRlIn0nLCBhdHQyID0gJ3NwZWNpYWwsIHNvIHNwZWNpYWwnOworU0VMRUNUIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhw ZWN0OiAzIG9uZSBuZXcgSE9UIHVwZGF0ZQorCistLSBUaGlzIHVwZGF0ZXMgYm90aCBpbmRleGVz LCB0aGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhdHQxIGFuZCB0aGUgc3VtbWFyaXppbmcKKy0tIGlu ZGV4IG9uIGF0dDIuICBUaGlzIHNob3VsZCBub3QgYmUgYSBIT1QgdXBkYXRlIGJlY2F1c2UgdGhl cmUgYXJlIG1vZGlmaWVkCistLSBpbmRleGVzIGFuZCBvbmx5IHNvbWUgYXJlIHN1bW1hcml6ZWQs IG5vdCBhbGwuICBUaGlzIHNob3VsZCBmb3JjZSBhbGwKKy0tIGluZGV4ZXMgdG8gYmUgdXBkYXRl ZC4KK1VQREFURSBleCBTRVQgYXR0MSA9IGF0dDEgfHwgJ3siZGF0YSI6IFsxLDIsM119JywgYXR0 MiA9ICdkbyB5b3Ugd2FudCB0byBwbGF5IGEgZ2FtZT8nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiA0IGJvdGgg aW5kZXhlcyB1cGRhdGVkCisKK0RST1AgVEFCTEUgZXg7CisKKy0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t CistLSBUaGlzIHRlc3QgaXMgZm9yIGEgdGFibGUgd2l0aCBhIGN1c3RvbSB0eXBlIGFuZCBhIGN1 c3RvbSBvcGVyYXRvcnMgb24KKy0tIHRoZSBCVFJFRSBpbmRleC4gIFRoZSBxdWVzdGlvbiBpcywg d2hlbiBjb21wYXJpbmcgdmFsdWVzIGZvciBlcXVhbGl0eQorLS0gdG8gZGV0ZXJtaW5lIGlmIHRo ZXJlIGFyZSBjaGFuZ2VzIG9uIHRoZSBpbmRleCBvciBub3QuLi4gc2hvdWxkbid0IHdlCistLSBi ZSB1c2luZyB0aGUgY3VzdG9tIG9wZXJhdG9ycz8KKworLS0gQ3JlYXRlIGEgdHlwZQorQ1JFQVRF IFRZUEUgbXlfY3VzdG9tX3R5cGUgQVMgKHZhbCBpbnQpOworCistLSBDb21wYXJpc29uIGZ1bmN0 aW9ucyAocmV0dXJucyBib29sZWFuKQorQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9sdChhIG15 X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JF R0lOCisgICAgUkVUVVJOIGEudmFsIDwgYi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3Fs IElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21fbGUoYSBteV9j dXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJ TgorICAgIFJFVFVSTiBhLnZhbCA8PSBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwg SU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9lcShhIG15X2N1 c3RvbV90eXBlLCBiIG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lO CisgICAgUkVUVVJOIGEudmFsID0gYi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElN TVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21fZ2UoYSBteV9jdXN0 b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgor ICAgIFJFVFVSTiBhLnZhbCA+PSBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1N VVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9ndChhIG15X2N1c3Rv bV90eXBlLCBiIG15X2N1c3RvbV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisg ICAgUkVUVVJOIGEudmFsID4gYi52YWw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVU QUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21fbmUoYSBteV9jdXN0b21f dHlwZSwgYiBteV9jdXN0b21fdHlwZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAg IFJFVFVSTiBhLnZhbCAhPSBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRB QkxFIFNUUklDVDsKKworLS0gQ29tcGFyaXNvbiBmdW5jdGlvbiAocmV0dXJucyAtMSwgMCwgMSkK K0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21fY21wKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3Vz dG9tX3R5cGUpIFJFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICAgIElGIGEudmFsIDwgYi52YWwg VEhFTgorICAgICAgICBSRVRVUk4gLTE7CisgICAgRUxTSUYgYS52YWwgPiBiLnZhbCBUSEVOCisg ICAgICAgIFJFVFVSTiAxOworICAgIEVMU0UKKyAgICAgICAgUkVUVVJOIDA7CisgICAgRU5EIElG OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworCistLSBDcmVh dGUgdGhlIG9wZXJhdG9ycworQ1JFQVRFIE9QRVJBVE9SIDwgKAorICAgIExFRlRBUkcgPSBteV9j dXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NFRFVS RSA9IG15X2N1c3RvbV9sdCwKKyAgICBDT01NVVRBVE9SID0gPiwKKyAgICBORUdBVE9SID0gPj0K Kyk7CisKK0NSRUFURSBPUEVSQVRPUiA8PSAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBl LAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3Vz dG9tX2xlLAorICAgIENPTU1VVEFUT1IgPSA+PSwKKyAgICBORUdBVE9SID0gPgorKTsKKworQ1JF QVRFIE9QRVJBVE9SID0gKAorICAgIExFRlRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBSSUdI VEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFBST0NFRFVSRSA9IG15X2N1c3RvbV9lcSwKKyAg ICBDT01NVVRBVE9SID0gPSwKKyAgICBORUdBVE9SID0gPD4KKyk7CisKK0NSRUFURSBPUEVSQVRP UiA+PSAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlf Y3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX2dlLAorICAgIENPTU1VVEFU T1IgPSA8PSwKKyAgICBORUdBVE9SID0gPAorKTsKKworQ1JFQVRFIE9QRVJBVE9SID4gKAorICAg IExFRlRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBl LAorICAgIFBST0NFRFVSRSA9IG15X2N1c3RvbV9ndCwKKyAgICBDT01NVVRBVE9SID0gPCwKKyAg ICBORUdBVE9SID0gPD0KKyk7CisKK0NSRUFURSBPUEVSQVRPUiA8PiAoCisgICAgTEVGVEFSRyA9 IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJP Q0VEVVJFID0gbXlfY3VzdG9tX25lLAorICAgIENPTU1VVEFUT1IgPSA8PiwKKyAgICBORUdBVE9S ID0gPQorKTsKKworLS0gQ3JlYXRlIHRoZSBvcGVyYXRvciBjbGFzcyAoaW5jbHVkaW5nIHRoZSBz dXBwb3J0IGZ1bmN0aW9uKQorQ1JFQVRFIE9QRVJBVE9SIENMQVNTIG15X2N1c3RvbV9vcHMKKyAg ICBERUZBVUxUIEZPUiBUWVBFIG15X2N1c3RvbV90eXBlIFVTSU5HIGJ0cmVlIEFTCisgICAgT1BF UkFUT1IgMSA8LAorICAgIE9QRVJBVE9SIDIgPD0sCisgICAgT1BFUkFUT1IgMyA9LAorICAgIE9Q RVJBVE9SIDQgPj0sCisgICAgT1BFUkFUT1IgNSA+LAorICAgIEZVTkNUSU9OIDEgbXlfY3VzdG9t X2NtcChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworCistLSBDcmVhdGUgdGhlIHRh YmxlCitDUkVBVEUgVEFCTEUgbXlfdGFibGUgKAorICAgIGlkIGludCwKKyAgICBjdXN0b21fdmFs IG15X2N1c3RvbV90eXBlCispOworCistLSBJbnNlcnQgc29tZSBkYXRhCitJTlNFUlQgSU5UTyBt eV90YWJsZSAoaWQsIGN1c3RvbV92YWwpIFZBTFVFUworKDEsIFJPVygzKTo6bXlfY3VzdG9tX3R5 cGUpLAorKDIsIFJPVygxKTo6bXlfY3VzdG9tX3R5cGUpLAorKDMsIFJPVyg0KTo6bXlfY3VzdG9t X3R5cGUpLAorKDQsIFJPVygyKTo6bXlfY3VzdG9tX3R5cGUpOworCistLSBDcmVhdGUgYSBmdW5j dGlvbiB0byB1c2Ugd2hlbiBpbmRleGluZworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWJz X3ZhbCh2YWwgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICBSRVRV Uk4gYWJzKHZhbC52YWwpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RS SUNUOworCistLSBDcmVhdGUgdGhlIGluZGV4CitDUkVBVEUgSU5ERVggaWR4X2N1c3RvbV92YWxf YWJzIE9OIG15X3RhYmxlIChhYnNfdmFsKGN1c3RvbV92YWwpKTsKKworLS0gVXBkYXRlIDEKK1VQ REFURSBteV90YWJsZSBTRVQgY3VzdG9tX3ZhbCA9IFJPVyg1KTo6bXlfY3VzdG9tX3R5cGUgV0hF UkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdt eV90YWJsZSc6OnJlZ2NsYXNzKTsKKworLS0gVXBkYXRlIDIKK1VQREFURSBteV90YWJsZSBTRVQg Y3VzdG9tX3ZhbCA9IFJPVygwKTo6bXlfY3VzdG9tX3R5cGUgV0hFUkUgY3VzdG9tX3ZhbCA8IFJP VygzKTo6bXlfY3VzdG9tX3R5cGU7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90 X3VwZGF0ZWQoJ215X3RhYmxlJzo6cmVnY2xhc3MpOworCistLSBVcGRhdGUgMworVVBEQVRFIG15 X3RhYmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDYpOjpteV9jdXN0b21fdHlwZSBXSEVSRSBpZCA9 IDM7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxl Jzo6cmVnY2xhc3MpOworCistLSBVcGRhdGUgNAorVVBEQVRFIG15X3RhYmxlIFNFVCBpZCA9IDUg V0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdteV90YWJsZSc6OnJlZ2NsYXNzKTsKKworLS0gUXVlcnkgdXNpbmcgdGhlIGluZGV4CitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gbXlfdGFibGUgV0hFUkUgYWJzX3ZhbChjdXN0 b21fdmFsKSA9IDY7CitTRUxFQ1QgKiBGUk9NIG15X3RhYmxlIFdIRVJFIGFic192YWwoY3VzdG9t X3ZhbCkgPSA2OworCistLSBDbGVhbiB1cAorRFJPUCBUQUJMRSBteV90YWJsZSBDQVNDQURFOwor RFJPUCBPUEVSQVRPUiBDTEFTUyBteV9jdXN0b21fb3BzIFVTSU5HIGJ0cmVlIENBU0NBREU7CitE Uk9QIE9QRVJBVE9SIDwgKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIE9Q RVJBVE9SIDw9IChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRP UiA9IChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA+PSAo bXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPiAobXlfY3Vz dG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPD4gKG15X2N1c3RvbV90 eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9sdChteV9jdXN0 b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fbGUobXlf Y3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2Vx KG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3Rv bV9nZShteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9j dXN0b21fZ3QobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04g bXlfY3VzdG9tX25lKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNU SU9OIG15X2N1c3RvbV9jbXAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1Ag RlVOQ1RJT04gYWJzX3ZhbChteV9jdXN0b21fdHlwZSk7CitEUk9QIFRZUEUgbXlfY3VzdG9tX3R5 cGUgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggM2ZiZjVhNGMyMTIuLjBi NjU4N2RiZDU2IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAor KysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjkzNCw2ICsyOTM0LDcg QEAgVFNWZWN0b3JTdGF0CiBUU3RhdGUKIFRTdGF0dXMKIFRTdG9yZVN0YXRlCitVcGRhdGVDb250 ZXh0CiBUVV9VcGRhdGVJbmRleGVzCiBUWE5FbnRyeUZpbGUKIFRZUENBVEVHT1JZCkBAIC0zMTE4 LDcgKzMxMTksNiBAQCBVbmlxdWVTdGF0ZQogVW5saXN0ZW5TdG10CiBVbnJlc29sdmVkVHVwCiBV bnJlc29sdmVkVHVwRGF0YQotVXBkYXRlQ29udGV4dAogVXBkYXRlU3RtdAogVXBncmFkZVRhc2sK IFVwZ3JhZGVUYXNrUHJvY2Vzc0NCCi0tIAoyLjQyLjAKCg== --_002_6B9B022412C14706AD9B6B78A1337BE3amazoncom_--