From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v4 RESEND] public/io/netif.h: make control ring hash protocol more general Date: Tue, 1 Mar 2016 11:21:30 +0000 Message-ID: References: <1456505540-21706-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1aaiMy-0006Ec-3p for xen-devel@lists.xenproject.org; Tue, 01 Mar 2016 11:21:36 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: David Vrabel , Wei Liu Cc: Ian Jackson , Jan Beulich , "xen-devel@lists.xenproject.org" List-Id: xen-devel@lists.xenproject.org RGF2aWQsIFdlaSwNCg0KICBQaW5nPw0KDQogIFBhdWwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4ZW4tZGV2ZWwtYm91bmNlc0BsaXN0 cy54ZW4ub3JnXSBPbiBCZWhhbGYgT2YNCj4gUGF1bCBEdXJyYW50DQo+IFNlbnQ6IDI2IEZlYnJ1 YXJ5IDIwMTYgMTc6MDMNCj4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBD YzogSWFuIEphY2tzb247IFdlaSBMaXU7IERhdmlkIFZyYWJlbDsgSmFuIEJldWxpY2gNCj4gU3Vi amVjdDogUmU6IFtYZW4tZGV2ZWxdIFtQQVRDSCB2NCBSRVNFTkRdIHB1YmxpYy9pby9uZXRpZi5o OiBtYWtlIGNvbnRyb2wNCj4gcmluZyBoYXNoIHByb3RvY29sIG1vcmUgZ2VuZXJhbA0KPiANCj4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFBhdWwgRHVycmFudCBbbWFp bHRvOnBhdWwuZHVycmFudEBjaXRyaXguY29tXQ0KPiA+IFNlbnQ6IDI2IEZlYnJ1YXJ5IDIwMTYg MTY6NTINCj4gPiBUbzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+ID4gQ2M6IFBh dWwgRHVycmFudDsgSWFuIEphY2tzb247IEphbiBCZXVsaWNoOyBXZWkgTGl1OyBEYXZpZCBWcmFi ZWwNCj4gPiBTdWJqZWN0OiBbUEFUQ0ggdjQgUkVTRU5EXSBwdWJsaWMvaW8vbmV0aWYuaDogbWFr ZSBjb250cm9sIHJpbmcgaGFzaA0KPiA+IHByb3RvY29sIG1vcmUgZ2VuZXJhbA0KPiA+DQo+ID4g VGhpcyBwYXRjaCBtb2RpZmllZCB0aGUgY29udHJvbCByaW5nIHByb3RvY29sIChvZiB3aGljaCB0 aGVyZSBpcw0KPiA+IG5vdCB5ZXQgYW4gaW1wbGVtZW50YXRpb24pIHRvIG1ha2UgaXQgbW9yZSBn ZW5lcmFsLiBNb3N0IG9mIHRoZQ0KPiA+IGNvbmNlcHRzIGFyZSBub3QgbGltaXRlZCB0byB0b2Vw bGl0eiBoYXNoaW5nIHNvIGl0J3MgYmVzdCBub3QgdG8NCj4gPiBtYWtlIHRoZW0gdW5uZWNlc3Nh cmlseSBzcGVjaWZpYy4NCj4gPg0KPiA+IEFwYXJ0IGZyb20gY2hhbmdpbmcgdGhlIG5hbWVzIG9m IHZhcmlvdXMgZGVmaW5pdGlvbnMgYW5kIG1vZGlmeWluZw0KPiA+IGNvbW1lbnRzLCB0aGlzIHBh dGNoOg0KPiA+DQo+ID4gLSBBZGRzIGEgbmV3IGNvbnRyb2wgbWVzc2FnZSB0eXBlIHRvIHNlbGVj dCBhIGhhc2ggYWxnb3JpdGhtLg0KPiA+IC0gQWRkcyBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlv biBvZiB0aGUgdG9lcGxpdHogaGFzaC4NCj4gPiAtIENoYW5nZXMgdGhlICd0b2VwbGl0eicgZXh0 cmEgaW5mbyBmcmFnbWVudCBpbnRvIGEgJ2hhc2gnIGV4dHJhDQo+ID4gICBpbmZvIGZyYWdtZW50 IGFuZCByZXBsYWNlcyB0aGUgb2N0ZXQgb2YgcGFkZGluZyB3aXRoIHRoZSBpbmRleCBvZg0KPiA+ ICAgdGhlIGFsZ29yaXRobSB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgaGFzaCB2YWx1ZS4N Cj4gPiAtIFJlbGF4ZXMgdGhlIHJlc3RyaWN0aW9uIHRoYXQgdGhlIG1hcHBpbmcgdGFibGUgaGFz IHRvIGJlDQo+ID4gICBwb3dlci1vZi0yIHNpemVkLg0KPiA+DQo+ID4gVGhlIHBhdGNoIGFsc28g Zml4ZXMgYSBmZXcgc3BlbGxpbmcgdHlwb3Mgbm90aWNlZCBhbG9uZyB0aGUgd2F5Lg0KPiA+DQo+ ID4gU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4N Cj4gPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+DQo+ID4gQ2M6 IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gPiBDYzogV2VpIExpdSA8d2VpLmxp dXcyQGNpdHJpeC5jb20+DQo+IA0KPiBBcG9sb2dpZXMgdG8gV2VpLiBJIG1pcy10eXBlZCBoaXMg ZW1haWwgYWRkcmVzcy4gU2hvdWxkIGJlOg0KPiANCj4gQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNp dHJpeC5jb20+DQo+IA0KPiA+IENjOiBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJlbEBjaXRyaXgu Y29tPg0KPiA+IC0tLQ0KPiA+DQo+ID4gdjI6DQo+ID4gICAtIFJlbW92ZSAnaW5saW5lJyBmcm9t IHJlZmVyZW5jZSBoYXNoIGRlZmluaXRpb24gYW5kIG1ha2UgdGhlDQo+ID4gICAgIGRlZmluaXRp b24gb3B0aW9uYWwNCj4gPg0KPiA+IHYzOg0KPiA+ICAgLSBVc2UgWEVOX05FVElGXyBwcmVmaXgg aW5zdGVhZCBvZiBORVRJRl8NCj4gPiAgIC0gTWFrZSBoYXNoIG1hcHBpbmcgdGFibGUgb3B0aW9u YWwNCj4gPiAgIC0gQWxsb3cgYSBoYXNoIG1hcHBpbmcgdGFibGUgdGhhdCBpcyBub3QgcG93ZXIt b2YtdHdvIHNpemVkDQo+ID4NCj4gPiB2NDoNCj4gPiAgIC0gTW9yZSBORVRJRiAtPiBYRU5fTkVU SUYgc3Vic3RpdHV0aW9uDQo+ID4gICAtIEFsc28gZGVmaW5lZCBjdHJsIG1lc3NhZ2Ugc3RydWN0 cyB3aXRoIHhlbl8gcHJlZml4IGFuZCBnZXQgcmlkDQo+ID4gICAgIG9mIHR5cGVkZWZzDQo+ID4g LS0tDQo+ID4gIHhlbi9pbmNsdWRlL3B1YmxpYy9pby9uZXRpZi5oIHwgMzUwICsrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0NCj4gLS0tDQo+ID4gLS0tLS0tLS0NCj4gPiAgMSBmaWxlIGNo YW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL25ldGlmLmggYi94ZW4vaW5jbHVkZS9wdWJs aWMvaW8vbmV0aWYuaA0KPiA+IGluZGV4IDhkODI2MjUuLmNhMDA2MTQgMTAwNjQ0DQo+ID4gLS0t IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL25ldGlmLmgNCj4gPiArKysgYi94ZW4vaW5jbHVkZS9w dWJsaWMvaW8vbmV0aWYuaA0KPiA+IEBAIC0xNjQsNyArMTY0LDcgQEANCj4gPiAgICogQ29udHJv bCByaW5nDQo+ID4gICAqID09PT09PT09PT09PQ0KPiA+ICAgKg0KPiA+IC0gKiBTb21lIGZlYXR1 cmVzLCBzdWNoIGFzIHRvZXBsaXR6IGhhc2hpbmcgKGRldGFpbGVkIGJlbG93KSwgcmVxdWlyZSBh DQo+ID4gKyAqIFNvbWUgZmVhdHVyZXMsIHN1Y2ggYXMgaGFzaGluZyAoZGV0YWlsZWQgYmVsb3cp LCByZXF1aXJlIGENCj4gPiAgICogc2lnbmlmaWNhbnQgYW1vdW50IG9mIG91dC1vZi1iYW5kIGRh dGEgdG8gYmUgcGFzc2VkIGZyb20gZnJvbnRlbmQgdG8NCj4gPiAgICogYmFja2VuZC4gVXNlIG9m IHhlbnN0b3JlIGlzIG5vdCBzdWl0YWJsZSBmb3IgbGFyZ2UgcXVhbnRpdGllcyBvZiBkYXRhDQo+ ID4gICAqIGJlY2F1c2Ugb2YgcXVvdGEgbGltaXRhdGlvbnMgYW5kIHNvIGEgZGVkaWNhdGVkICdj b250cm9sIHJpbmcnIGlzIHVzZWQuDQo+ID4gQEAgLTE5MSw4ICsxOTEsOCBAQA0KPiA+ICAgKi8N Cj4gPg0KPiA+ICAvKg0KPiA+IC0gKiBUb2VwbGl0eiBoYXNoIHR5cGVzDQo+ID4gLSAqID09PT09 PT09PT09PT09PT09PT0NCj4gPiArICogSGFzaCB0eXBlcw0KPiA+ICsgKiA9PT09PT09PT09DQo+ ID4gICAqDQo+ID4gICAqIEZvciB0aGUgcHVycG9zZXMgb2YgdGhlIGRlZmluaXRpb25zIGJlbG93 LCAnUGFja2V0W10nIGlzIGFuIGFycmF5IG9mDQo+ID4gICAqIG9jdGV0cyBjb250YWluaW5nIGFu IElQIHBhY2tldCB3aXRob3V0IG9wdGlvbnMsICdBcnJheVtYLi5ZXScgbWVhbnMgYQ0KPiA+IEBA IC0yMDYsMTAgKzIwNiwxMSBAQA0KPiA+ICAgKiBCdWZmZXJbMC4uOF0gPSBQYWNrZXRbMTIuLjE1 XSAoc291cmNlIGFkZHJlc3MpICsNCj4gPiAgICogICAgICAgICAgICAgICAgUGFja2V0WzE2Li4x OV0gKGRlc3RpbmF0aW9uIGFkZHJlc3MpDQo+ID4gICAqDQo+ID4gLSAqIFJlc3VsdCA9IFRvZXBs aXR6SGFzaChCdWZmZXIsIDgpDQo+ID4gKyAqIFJlc3VsdCA9IEhhc2goQnVmZmVyLCA4KQ0KPiA+ ICAgKi8NCj4gPiAtI2RlZmluZSBfTkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNIX0lQVjQgICAgIDAN Cj4gPiAtI2RlZmluZSBORVRJRl9DVFJMX1RPRVBMSVRaX0hBU0hfSVBWNCAgICAgICgxIDw8DQo+ ID4gX05FVElGX0NUUkxfVE9FUExJVFpfSEFTSF9JUFY0KQ0KPiA+ICsjZGVmaW5lIF9YRU5fTkVU SUZfQ1RSTF9IQVNIX1RZUEVfSVBWNCAwDQo+ID4gKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfSEFT SF9UWVBFX0lQVjQgXA0KPiA+ICsgICAgKDEgPDwgX1hFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9J UFY0KQ0KPiA+DQo+ID4gIC8qDQo+ID4gICAqIEEgaGFzaCBjYWxjdWxhdGVkIG92ZXIgYW4gSVAg dmVyc2lvbiA0IGhlYWRlciBhbmQgVENQIGhlYWRlciBhcw0KPiA+IEBAIC0yMjAsMTAgKzIyMSwx MSBAQA0KPiA+ICAgKiAgICAgICAgICAgICAgICAgUGFja2V0WzIwLi4yMV0gKHNvdXJjZSBwb3J0 KSArDQo+ID4gICAqICAgICAgICAgICAgICAgICBQYWNrZXRbMjIuLjIzXSAoZGVzdGluYXRpb24g cG9ydCkNCj4gPiAgICoNCj4gPiAtICogUmVzdWx0ID0gVG9lcGxpdHpIYXNoKEJ1ZmZlciwgMTIp DQo+ID4gKyAqIFJlc3VsdCA9IEhhc2goQnVmZmVyLCAxMikNCj4gPiAgICovDQo+ID4gLSNkZWZp bmUgX05FVElGX0NUUkxfVE9FUExJVFpfSEFTSF9JUFY0X1RDUCAxDQo+ID4gLSNkZWZpbmUgTkVU SUZfQ1RSTF9UT0VQTElUWl9IQVNIX0lQVjRfVENQICAoMSA8PA0KPiA+IF9ORVRJRl9DVFJMX1RP RVBMSVRaX0hBU0hfSVBWNF9UQ1ApDQo+ID4gKyNkZWZpbmUgX1hFTl9ORVRJRl9DVFJMX0hBU0hf VFlQRV9JUFY0X1RDUCAxDQo+ID4gKyNkZWZpbmUgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0lQ VjRfVENQIFwNCj4gPiArICAgICgxIDw8IF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNF9U Q1ApDQo+ID4NCj4gPiAgLyoNCj4gPiAgICogQSBoYXNoIGNhbGN1bGF0ZWQgb3ZlciBhbiBJUCB2 ZXJzaW9uIDYgaGVhZGVyIGFzIGZvbGxvd3M6DQo+ID4gQEAgLTIzMSwxMCArMjMzLDExIEBADQo+ ID4gICAqIEJ1ZmZlclswLi4zMl0gPSBQYWNrZXRbOC4uMjNdICAoc291cmNlIGFkZHJlc3MgKSAr DQo+ID4gICAqICAgICAgICAgICAgICAgICBQYWNrZXRbMjQuLjM5XSAoZGVzdGluYXRpb24gYWRk cmVzcykNCj4gPiAgICoNCj4gPiAtICogUmVzdWx0ID0gVG9lcGxpdHpIYXNoKEJ1ZmZlciwgMzIp DQo+ID4gKyAqIFJlc3VsdCA9IEhhc2goQnVmZmVyLCAzMikNCj4gPiAgICovDQo+ID4gLSNkZWZp bmUgX05FVElGX0NUUkxfVE9FUExJVFpfSEFTSF9JUFY2ICAgICAyDQo+ID4gLSNkZWZpbmUgTkVU SUZfQ1RSTF9UT0VQTElUWl9IQVNIX0lQVjYgICAgICAoMSA8PA0KPiA+IF9ORVRJRl9DVFJMX1RP RVBMSVRaX0hBU0hfSVBWNikNCj4gPiArI2RlZmluZSBfWEVOX05FVElGX0NUUkxfSEFTSF9UWVBF X0lQVjYgMg0KPiA+ICsjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX0hBU0hfVFlQRV9JUFY2IFwNCj4g PiArICAgICgxIDw8IF9YRU5fTkVUSUZfQ1RSTF9IQVNIX1RZUEVfSVBWNikNCj4gPg0KPiA+ICAv Kg0KPiA+ICAgKiBBIGhhc2ggY2FsY3VsYXRlZCBvdmVyIGFuIElQIHZlcnNpb24gNiBoZWFkZXIg YW5kIFRDUCBoZWFkZXIgYXMNCj4gPiBAQCAtMjQ1LDE0ICsyNDgsODQgQEANCj4gPiAgICogICAg ICAgICAgICAgICAgIFBhY2tldFs0MC4uNDFdIChzb3VyY2UgcG9ydCkgKw0KPiA+ICAgKiAgICAg ICAgICAgICAgICAgUGFja2V0WzQyLi40M10gKGRlc3RpbmF0aW9uIHBvcnQpDQo+ID4gICAqDQo+ ID4gLSAqIFJlc3VsdCA9IFRvZXBsaXR6SGFzaChCdWZmZXIsIDM2KQ0KPiA+ICsgKiBSZXN1bHQg PSBIYXNoKEJ1ZmZlciwgMzYpDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIF9YRU5fTkVUSUZfQ1RS TF9IQVNIX1RZUEVfSVBWNl9UQ1AgMw0KPiA+ICsjZGVmaW5lIFhFTl9ORVRJRl9DVFJMX0hBU0hf VFlQRV9JUFY2X1RDUCBcDQo+ID4gKyAgICAoMSA8PCBfWEVOX05FVElGX0NUUkxfSEFTSF9UWVBF X0lQVjZfVENQKQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogSGFzaCBhbGdvcml0aG1zDQo+ID4g KyAqID09PT09PT09PT09PT09PQ0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgWEVOX05F VElGX0NUUkxfSEFTSF9BTEdPUklUSE1fTk9ORSAwDQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBU b2VwbGl0eiBoYXNoOg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgWEVOX05FVElGX0NU UkxfSEFTSF9BTEdPUklUSE1fVE9FUExJVFogMQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogVGhp cyBhbGdvcml0aG0gdXNlcyBhICdrZXknIGFzIHdlbGwgYXMgdGhlIGRhdGEgYnVmZmVyIGl0c2Vs Zi4NCj4gPiArICogKEJ1ZmZlcltdIGFuZCBLZXlbXSBhcmUgdHJlYXRlZCBhcyBzaGlmdC1yZWdp c3RlcnMgd2hlcmUgdGhlIE1TQiBvZg0KPiA+ICsgKiBCdWZmZXIvS2V5WzBdIGlzIGNvbnNpZGVy ZWQgJ2xlZnQtbW9zdCcgYW5kIHRoZSBMU0Igb2YgQnVmZmVyL0tleVtOLTFdDQo+ID4gKyAqIGlz IHRoZSAncmlnaHQtbW9zdCcpLg0KPiA+ICsgKg0KPiA+ICsgKiBWYWx1ZSA9IDANCj4gPiArICog Rm9yIG51bWJlciBvZiBiaXRzIGluIEJ1ZmZlcltdDQo+ID4gKyAqICAgIElmIChsZWZ0LW1vc3Qg Yml0IG9mIEJ1ZmZlcltdIGlzIDEpDQo+ID4gKyAqICAgICAgICBWYWx1ZSBePSBsZWZ0LW1vc3Qg MzIgYml0cyBvZiBLZXlbXQ0KPiA+ICsgKiAgICBLZXlbXSA8PCAxDQo+ID4gKyAqICAgIEJ1ZmZl cltdIDw8IDENCj4gPiArICoNCj4gPiArICogVGhlIGNvZGUgYmVsb3cgaXMgcHJvdmlkZWQgZm9y IGNvbnZlbmllbmNlIHdoZXJlIGFuIG9wZXJhdGluZw0KPiBzeXN0ZW0NCj4gPiArICogZG9lcyBu b3QgYWxyZWFkeSBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uLg0KPiA+ICAgKi8NCj4gPiAtI2Rl ZmluZSBfTkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNIX0lQVjZfVENQIDMNCj4gPiAtI2RlZmluZSBO RVRJRl9DVFJMX1RPRVBMSVRaX0hBU0hfSVBWNl9UQ1AgICgxIDw8DQo+ID4gX05FVElGX0NUUkxf VE9FUExJVFpfSEFTSF9JUFY2X1RDUCkNCj4gPiArI2lmZGVmIFhFTl9ORVRJRl9ERUZJTkVfVE9F UExJVFoNCj4gPiArc3RhdGljIHVpbnQzMl90IHhlbl9uZXRpZl90b2VwbGl0el9oYXNoKGNvbnN0 IHVpbnQ4X3QgKmtleSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBrZXlsZW4sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnVmbGVuKQ0KPiA+ICt7DQo+ID4g KyAgICB1bnNpZ25lZCBpbnQga2V5aSwgYnVmaTsNCj4gPiArICAgIHVpbnQ2NF90IHByZWZpeCA9 IDA7DQo+ID4gKyAgICB1aW50NjRfdCBoYXNoID0gMDsNCj4gPiArDQo+ID4gKyAgICAvKiBQcmUt bG9hZCBwcmVmaXggd2l0aCB0aGUgZmlyc3QgOCBieXRlcyBvZiB0aGUga2V5ICovDQo+ID4gKyAg ICBmb3IgKGtleWkgPSAwOyBrZXlpIDwgODsga2V5aSsrKSB7DQo+ID4gKyAgICAgICAgcHJlZml4 IDw8PSA4Ow0KPiA+ICsgICAgICAgIHByZWZpeCB8PSAoa2V5aSA8IGtleWxlbikgPyBrZXlba2V5 aV0gOiAwOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGZvciAoYnVmaSA9IDA7IGJ1Zmkg PCBidWZsZW47IGJ1ZmkrKykgew0KPiA+ICsgICAgICAgIHVpbnQ4X3QgYnl0ZSA9IGJ1ZltidWZp XTsNCj4gPiArICAgICAgICB1bnNpZ25lZCBpbnQgYml0Ow0KPiA+ICsNCj4gPiArICAgICAgICBm b3IgKGJpdCA9IDA7IGJpdCA8IDg7IGJpdCsrKSB7DQo+ID4gKyAgICAgICAgICAgIGlmIChieXRl ICYgMHg4MCkNCj4gPiArICAgICAgICAgICAgICAgIGhhc2ggXj0gcHJlZml4Ow0KPiA+ICsgICAg ICAgICAgICBwcmVmaXggPDw9IDE7DQo+ID4gKyAgICAgICAgICAgIGJ5dGUgPDw9MTsNCj4gPiAr ICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgIC8qDQo+ID4gKyAgICAgICAgICogJ3ByZWZp eCcgaGFzIG5vdyBiZWVuIGxlZnQtc2hpZnRlZCBieSA4LCBzbw0KPiA+ICsgICAgICAgICAqIE9S IGluIHRoZSBuZXh0IGJ5dGUuDQo+ID4gKyAgICAgICAgICovDQo+ID4gKyAgICAgICAgcHJlZml4 IHw9IChrZXlpIDwga2V5bGVuKSA/IGtleVtrZXlpXSA6IDA7DQo+ID4gKyAgICAgICAga2V5aSsr Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIC8qIFRoZSB2YWxpZCBwYXJ0IG9mIHRoZSBo YXNoIGlzIGluIHRoZSB1cHBlciAzMiBiaXRzLiAqLw0KPiA+ICsgICAgcmV0dXJuIGhhc2ggPj4g MzI7DQo+ID4gK30NCj4gPiArI2VuZGlmIC8qIFhFTl9ORVRJRl9ERUZJTkVfVE9FUExJVFogKi8N Cj4gPg0KPiA+ICAvKg0KPiA+IC0gKiBDb250cm9sIHJlcXVlc3RzIChuZXRpZl9jdHJsX3JlcXVl c3RfdCkNCj4gPiAtICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID4gKyAqIENvbnRyb2wgcmVxdWVzdHMgKHN0cnVjdCB4ZW5fbmV0aWZfY3RybF9yZXF1ZXN0KQ0K PiA+ICsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Cj4gPiAgICoNCj4gPiAgICogQWxsIHJlcXVlc3RzIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6 DQo+ID4gICAqDQo+ID4gQEAgLTI2OCwyNSArMzQxLDI1IEBADQo+ID4gICAqIGRhdGFbXTogYW55 IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0IChkZXRlcm1pbmVkIGJ5IHR5cGUpDQo+ ID4gICAqLw0KPiA+DQo+ID4gLXN0cnVjdCBuZXRpZl9jdHJsX3JlcXVlc3Qgew0KPiA+ICtzdHJ1 Y3QgeGVuX25ldGlmX2N0cmxfcmVxdWVzdCB7DQo+ID4gICAgICB1aW50MTZfdCBpZDsNCj4gPiAg ICAgIHVpbnQxNl90IHR5cGU7DQo+ID4NCj4gPiAtI2RlZmluZSBORVRJRl9DVFJMX1RZUEVfSU5W QUxJRCAgICAgICAgICAgICAgICAgICAgMA0KPiA+IC0jZGVmaW5lIE5FVElGX0NUUkxfVFlQRV9H RVRfVE9FUExJVFpfRkxBR1MgICAgICAgICAxDQo+ID4gLSNkZWZpbmUgTkVUSUZfQ1RSTF9UWVBF X1NFVF9UT0VQTElUWl9GTEFHUyAgICAgICAgIDINCj4gPiAtI2RlZmluZSBORVRJRl9DVFJMX1RZ UEVfU0VUX1RPRVBMSVRaX0tFWSAgICAgICAgICAgMw0KPiA+IC0jZGVmaW5lIE5FVElGX0NUUkxf VFlQRV9HRVRfVE9FUExJVFpfTUFQUElOR19PUkRFUiA0DQo+ID4gLSNkZWZpbmUgTkVUSUZfQ1RS TF9UWVBFX1NFVF9UT0VQTElUWl9NQVBQSU5HX09SREVSIDUNCj4gPiAtI2RlZmluZSBORVRJRl9D VFJMX1RZUEVfU0VUX1RPRVBMSVRaX01BUFBJTkcgICAgICAgNg0KPiA+ICsjZGVmaW5lIFhFTl9O RVRJRl9DVFJMX1RZUEVfSU5WQUxJRCAgICAgICAgICAgICAgIDANCj4gPiArI2RlZmluZSBYRU5f TkVUSUZfQ1RSTF9UWVBFX0dFVF9IQVNIX0ZMQUdTICAgICAgICAxDQo+ID4gKyNkZWZpbmUgWEVO X05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9GTEFHUyAgICAgICAgMg0KPiA+ICsjZGVmaW5lIFhF Tl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfS0VZICAgICAgICAgIDMNCj4gPiArI2RlZmluZSBY RU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9IQVNIX01BUFBJTkdfU0laRSA0DQo+ID4gKyNkZWZpbmUg WEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9NQVBQSU5HX1NJWkUgNQ0KPiA+ICsjZGVmaW5l IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfTUFQUElORyAgICAgIDYNCj4gPiArI2RlZmlu ZSBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0FMR09SSVRITSAgICA3DQo+ID4NCj4gPiAg ICAgIHVpbnQzMl90IGRhdGFbM107DQo+ID4gIH07DQo+ID4gLXR5cGVkZWYgc3RydWN0IG5ldGlm X2N0cmxfcmVxdWVzdCBuZXRpZl9jdHJsX3JlcXVlc3RfdDsNCj4gPg0KPiA+ICAvKg0KPiA+IC0g KiBDb250cm9sIHJlc3BvbnNlcyAobmV0aWZfY3RybF9yZXNwb25zZV90KQ0KPiA+IC0gKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ICsgKiBDb250cm9sIHJl c3BvbnNlcyAoc3RydWN0IHhlbl9uZXRpZl9jdHJsX3Jlc3BvbnNlKQ0KPiA+ICsgKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ICAgKg0KPiA+ ICAgKiBBbGwgcmVzcG9uc2VzIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6DQo+ID4gICAqDQo+ ID4gQEAgLTMwNCw0OCArMzc3LDc0IEBAIHR5cGVkZWYgc3RydWN0IG5ldGlmX2N0cmxfcmVxdWVz dA0KPiA+IG5ldGlmX2N0cmxfcmVxdWVzdF90Ow0KPiA+ICAgKiAgICAgICBzdGF0dXMpDQo+ID4g ICAqLw0KPiA+DQo+ID4gLXN0cnVjdCBuZXRpZl9jdHJsX3Jlc3BvbnNlIHsNCj4gPiArc3RydWN0 IHhlbl9uZXRpZl9jdHJsX3Jlc3BvbnNlIHsNCj4gPiAgICAgIHVpbnQxNl90IGlkOw0KPiA+ICAg ICAgdWludDE2X3QgdHlwZTsNCj4gPiAgICAgIHVpbnQzMl90IHN0YXR1czsNCj4gPg0KPiA+IC0j ZGVmaW5lIE5FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgIDANCj4gPiAtI2RlZmlu ZSBORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAxDQo+ID4gLSNkZWZpbmUgTkVU SUZfQ1RSTF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVURVIgMg0KPiA+IC0jZGVmaW5lIE5FVElGX0NU UkxfU1RBVFVTX0JVRkZFUl9PVkVSRkxPVyAgIDMNCj4gPiArI2RlZmluZSBYRU5fTkVUSUZfQ1RS TF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgMA0KPiA+ICsjZGVmaW5lIFhFTl9ORVRJRl9DVFJM X1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAxDQo+ID4gKyNkZWZpbmUgWEVOX05FVElGX0NUUkxf U1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSIDINCj4gPiArI2RlZmluZSBYRU5fTkVUSUZfQ1RSTF9T VEFUVVNfQlVGRkVSX09WRVJGTE9XICAgMw0KPiA+DQo+ID4gICAgICB1aW50MzJfdCBkYXRhOw0K PiA+ICB9Ow0KPiA+IC10eXBlZGVmIHN0cnVjdCBuZXRpZl9jdHJsX3Jlc3BvbnNlIG5ldGlmX2N0 cmxfcmVzcG9uc2VfdDsNCj4gPg0KPiA+ICAvKg0KPiA+ICAgKiBDb250cm9sIG1lc3NhZ2VzDQo+ ID4gICAqID09PT09PT09PT09PT09PT0NCj4gPiAgICoNCj4gPiAtICogTkVUSUZfQ1RSTF9UWVBF X0dFVF9UT0VQTElUWl9GTEFHUw0KPiA+ICsgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNI X0FMR09SSVRITQ0KPiA+ICsgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHNldCB0 aGUgZGVzaXJlZCBoYXNoIGFsZ29yaXRobS4NCj4gPiArICoNCj4gPiArICogUmVxdWVzdDoNCj4g PiArICoNCj4gPiArICogIHR5cGUgICAgPSBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0FM R09SSVRITQ0KPiA+ICsgKiAgZGF0YVswXSA9IGEgWEVOX05FVElGX0NUUkxfSEFTSF9BTEdPUklU SE1fKiB2YWx1ZQ0KPiA+ICsgKiAgZGF0YVsxXSA9IDANCj4gPiArICogIGRhdGFbMl0gPSAwDQo+ ID4gKyAqDQo+ID4gKyAqIFJlc3BvbnNlOg0KPiA+ICsgKg0KPiA+ICsgKiAgc3RhdHVzID0gWEVO X05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uDQo+IG5vdA0K PiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3VwcG9ydGVkDQo+ID4gKyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5W QUxJRF9QQVJBTUVURVIgLSBUaGUgYWxnb3JpdGhtDQo+IGlzDQo+ID4gbm90DQo+ID4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0 ZWQNCj4gPiArICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAg ICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVsDQo+ID4gKyAqDQo+ID4gKyAqIE5PVEU6IFNldHRp bmcgZGF0YVswXSB0byBYRU5fTkVUSUZfQ1RSTF9IQVNIX0FMR09SSVRITV9OT05FDQo+ID4gZGlz YWJsZXMNCj4gPiArICogICAgICAgaGFzaGluZyBhbmQgdGhlIGJhY2tlbmQgaXMgZnJlZSB0byBj aG9vc2UgaG93IGl0IHN0ZWVycyBwYWNrZXRzDQo+ID4gKyAqICAgICAgIHRvIHF1ZXVlcyAod2hp Y2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyKS4NCj4gPiArICoNCj4gPiArICogWEVOX05FVElG X0NUUkxfVFlQRV9HRVRfSEFTSF9GTEFHUw0KPiA+ICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+ID4gICAqDQo+ID4gLSAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRl bmQgdG8gcXVlcnkgdGhlIHR5cGVzIG9mIHRvZXBsaXR6DQo+ID4gLSAqIGhhc2ggc3VwcG9ydGVk IGJ5IHRoZSBiYWNrZW5kLg0KPiA+ICsgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRv IHF1ZXJ5IHRoZSB0eXBlcyBvZiBoYXNoIHN1cHBvcnRlZCBieQ0KPiA+ICsgKiB0aGUgYmFja2Vu ZC4NCj4gPiAgICoNCj4gPiAgICogUmVxdWVzdDoNCj4gPiAgICoNCj4gPiAtICogIHR5cGUgICAg PSBORVRJRl9DVFJMX1RZUEVfR0VUX1RPRVBMSVRaX0ZMQUdTDQo+ID4gKyAqICB0eXBlICAgID0g WEVOX05FVElGX0NUUkxfVFlQRV9HRVRfSEFTSF9GTEFHUw0KPiA+ICAgKiAgZGF0YVswXSA9IDAN Cj4gPiAgICogIGRhdGFbMV0gPSAwDQo+ID4gICAqICBkYXRhWzJdID0gMA0KPiA+ICAgKg0KPiA+ ICAgKiBSZXNwb25zZToNCj4gPiAgICoNCj4gPiAtICogIHN0YXR1cyA9IE5FVElGX0NUUkxfU1RB VFVTX05PVF9TVVBQT1JURUQgLSBPcGVyYXRpb24gbm90DQo+ID4gc3VwcG9ydGVkDQo+ID4gLSAq ICAgICAgICAgICBORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgIC0gT3BlcmF0aW9uIHN1 Y2Nlc3NmdWwNCj4gPiArICogIHN0YXR1cyA9IFhFTl9ORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQ UE9SVEVEIC0gT3BlcmF0aW9uIG5vdA0KPiA+IHN1cHBvcnRlZA0KPiA+ICsgKiAgICAgICAgICAg WEVOX05FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgLSBPcGVyYXRpb24gc3VjY2Vzc2Z1 bA0KPiA+ICAgKiAgZGF0YSAgID0gc3VwcG9ydGVkIGhhc2ggdHlwZXMgKGlmIG9wZXJhdGlvbiB3 YXMgc3VjY2Vzc2Z1bCkNCj4gPiAgICoNCj4gPiAtICogTkVUSUZfQ1RSTF9UWVBFX1NFVF9UT0VQ TElUWl9GTEFHUw0KPiA+ICsgKiBOT1RFOiBBIHZhbGlkIGhhc2ggYWxnb3JpdGhtIG11c3QgYmUg c2VsZWN0ZWQgYmVmb3JlIHRoaXMgb3BlcmF0aW9uDQo+IGNhbg0KPiA+ICsgKiAgICAgICBzdWNj ZWVkLg0KPiA+ICsgKg0KPiA+ICsgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX0ZMQUdT DQo+ID4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAgICoNCj4g PiAtICogVGhpcyBpcyBzZW50IGJ5IHRoZSBmcm9udGVuZCB0byBzZXQgdGhlIHR5cGVzIG9mIHRv ZXBsaXR6IGhhc2ggdGhhdA0KPiA+IC0gKiB0aGUgYmFja2VuZCBzaG91bGQgY2FsY3VsYXRlLiAo U2VlIGFib3ZlIGZvciBoYXNoIHR5cGUgZGVmaW5pdGlvbnMpLg0KPiA+ICsgKiBUaGlzIGlzIHNl bnQgYnkgdGhlIGZyb250ZW5kIHRvIHNldCB0aGUgdHlwZXMgb2YgaGFzaCB0aGF0IHRoZSBiYWNr ZW5kDQo+ID4gKyAqIHNob3VsZCBjYWxjdWxhdGUuIChTZWUgYWJvdmUgZm9yIGhhc2ggdHlwZSBk ZWZpbml0aW9ucykuDQo+ID4gICAqIE5vdGUgdGhhdCB0aGUgJ21heGltYWwnIHR5cGUgb2YgaGFz aCBzaG91bGQgYWx3YXlzIGJlIGNob3Nlbi4gRm9yDQo+ID4gICAqIGV4YW1wbGUsIGlmIHRoZSBm cm9udGVuZCBzZXRzIGJvdGggSVBWNCBhbmQgSVBWNF9UQ1AgaGFzaCB0eXBlcyB0aGVuDQo+ID4g ICAqIHRoZSBsYXR0ZXIgaGFzaCB0eXBlIHNob3VsZCBiZSBjYWxjdWxhdGVkIGZvciBhbnkgVENQ IHBhY2tldCBhbmQgdGhlDQo+ID4gQEAgLTM1Myw0NSArNDUyLDM1IEBAIHR5cGVkZWYgc3RydWN0 IG5ldGlmX2N0cmxfcmVzcG9uc2UNCj4gPiBuZXRpZl9jdHJsX3Jlc3BvbnNlX3Q7DQo+ID4gICAq DQo+ID4gICAqIFJlcXVlc3Q6DQo+ID4gICAqDQo+ID4gLSAqICB0eXBlICAgID0gTkVUSUZfQ1RS TF9UWVBFX1NFVF9UT0VQTElUWl9GTEFHUw0KPiA+IC0gKiAgZGF0YVswXSA9IGJpdHdpc2UgT1Ig b2YgTkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNIXyogdmFsdWVzDQo+ID4gKyAqICB0eXBlICAgID0g WEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9GTEFHUw0KPiA+ICsgKiAgZGF0YVswXSA9IGJp dHdpc2UgT1Igb2YgWEVOX05FVElGX0NUUkxfSEFTSF9UWVBFXyogdmFsdWVzDQo+ID4gICAqICBk YXRhWzFdID0gMA0KPiA+ICAgKiAgZGF0YVsyXSA9IDANCj4gPiAgICoNCj4gPiAgICogUmVzcG9u c2U6DQo+ID4gICAqDQo+ID4gLSAqICBzdGF0dXMgPSBORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQ UE9SVEVEICAgICAtIE9wZXJhdGlvbiBub3QNCj4gPiBzdXBwb3J0ZWQNCj4gPiAtICogICAgICAg ICAgIE5FVElGX0NUUkxfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSIC0gT25lIG9yIG1vcmUgZmxh Zw0KPiB2YWx1ZQ0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpcyBpbnZhbGlkIG9yDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkDQo+ID4gLSAqICAgICAgICAgICBO RVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVs DQo+ID4gKyAqICBzdGF0dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAg ICAgLSBPcGVyYXRpb24NCj4gbm90DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQNCj4gPiArICogICAgICAgICAgIFhF Tl9ORVRJRl9DVFJMX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUiAtIE9uZSBvciBtb3JlDQo+IGZs YWcNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhbHVlIGlzIGludmFsaWQgb3INCj4gPiArICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkDQo+ID4gKyAqICAgICAg ICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgLSBPcGVyYXRpb24g c3VjY2Vzc2Z1bA0KPiA+ICAgKiAgZGF0YSAgID0gMA0KPiA+ICAgKg0KPiA+IC0gKiBOT1RFOiBT ZXR0aW5nIGRhdGFbMF0gdG8gemVybyBkaXNhYmxlcyB0b2VwbGl0eiBoYXNoaW5nIGFuZCB0aGUg YmFja2VuZA0KPiA+IC0gKiAgICAgICBpcyBmcmVlIHRvIGNob29zZSBob3cgaXQgc3RlZXJzIHBh Y2tldHMgdG8gcXVldWVzICh3aGljaCBpcyB0aGUNCj4gPiAtICogICAgICAgZGVmYXVsdCBiZWhh dmlvdXIpLg0KPiA+ICsgKiBOT1RFOiBBIHZhbGlkIGhhc2ggYWxnb3JpdGhtIG11c3QgYmUgc2Vs ZWN0ZWQgYmVmb3JlIHRoaXMgb3BlcmF0aW9uDQo+IGNhbg0KPiA+ICsgKiAgICAgICBzdWNjZWVk Lg0KPiA+ICsgKiAgICAgICBBbHNvLCBzZXR0aW5nIGRhdGFbMF0gdG8gemVybyBkaXNhYmxlcyBo YXNoaW5nIGFuZCB0aGUgYmFja2VuZA0KPiA+ICsgKiAgICAgICBpcyBmcmVlIHRvIGNob29zZSBo b3cgaXQgc3RlZXJzIHBhY2tldHMgdG8gcXVldWVzLg0KPiA+ICAgKg0KPiA+IC0gKiBORVRJRl9D VFJMX1RZUEVfU0VUX1RPRVBMSVRaX0tFWQ0KPiA+ICsgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NF VF9IQVNIX0tFWQ0KPiA+ICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ ICAgKg0KPiA+IC0gKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHNldCB0aGUga2V5 IG9mIHRoZSB0b2VwbGl0eiBoYXNoIHRoYXQNCj4gPiAtICogdGhlIGJhY2tlbmQgc2hvdWxkIGNh bGN1bGF0ZS4gVGhlIHRvZXBsaXR6IGFsZ29yaXRobSBpcyBpbGx1c3RyYXRlZA0KPiA+IC0gKiBi eSB0aGUgZm9sbG93aW5nIHBzZXVkby1jb2RlOg0KPiA+IC0gKg0KPiA+IC0gKiAoQnVmZmVyW10g YW5kIEtleVtdIGFyZSB0cmVhdGVkIGFzIHNoaWZ0LXJlZ2lzdGVycyB3aGVyZSB0aGUgTVNCIG9m DQo+ID4gLSAqIEJ1ZmZlci9LZXlbMF0gaXMgY29uc2lkZXJlZCAnbGVmdC1tb3N0JyBhbmQgdGhl IExTQiBvZiBCdWZmZXIvS2V5W04tMV0NCj4gPiAtICogaXMgdGhlICdyaWdodC1tb3N0JykuDQo+ ID4gLSAqDQo+ID4gLSAqIFZhbHVlID0gMA0KPiA+IC0gKiBGb3IgbnVtYmVyIG9mIGJpdHMgaW4g QnVmZmVyW10NCj4gPiAtICogICAgSWYgKGxlZnQtbW9zdCBiaXQgb2YgQnVmZmVyW10gaXMgMSkN Cj4gPiAtICogICAgICAgIFZhbHVlIF49IGxlZnQtbW9zdCAzMiBiaXRzIG9mIEtleVtdDQo+ID4g LSAqICAgIEtleVtdIDw8IDENCj4gPiAtICogICAgQnVmZmVyW10gPDwgMQ0KPiA+ICsgKiBUaGlz IGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHNldCB0aGUga2V5IG9mIHRoZSBoYXNoIGlmIHRo ZSBhbGdvcml0aG0NCj4gPiArICogcmVxdWlyZXMgaXQuIChTZWUgaGFzaCBhbGdvcml0aG1zIGFi b3ZlKS4NCj4gPiAgICoNCj4gPiAgICogUmVxdWVzdDoNCj4gPiAgICoNCj4gPiAtICogIHR5cGUg ICAgPSBORVRJRl9DVFJMX1RZUEVfU0VUX1RPRVBMSVRaX0tFWQ0KPiA+ICsgKiAgdHlwZSAgICA9 IFhFTl9ORVRJRl9DVFJMX1RZUEVfU0VUX0hBU0hfS0VZDQo+ID4gICAqICBkYXRhWzBdID0gZ3Jh bnQgcmVmZXJlbmNlIG9mIHBhZ2UgY29udGFpbmluZyB0aGUga2V5IChhc3N1bWVkIHRvDQo+ID4g ICAqICAgICAgICAgICAgc3RhcnQgYXQgYmVnaW5uaW5nIG9mIGdyYW50KQ0KPiA+ICAgKiAgZGF0 YVsxXSA9IHNpemUgb2Yga2V5IGluIG9jdGV0cw0KPiA+IEBAIC0zOTksMTEgKzQ4OCwxMyBAQCB0 eXBlZGVmIHN0cnVjdCBuZXRpZl9jdHJsX3Jlc3BvbnNlDQo+ID4gbmV0aWZfY3RybF9yZXNwb25z ZV90Ow0KPiA+ICAgKg0KPiA+ICAgKiBSZXNwb25zZToNCj4gPiAgICoNCj4gPiAtICogIHN0YXR1 cyA9IE5FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uIG5vdA0K PiA+IHN1cHBvcnRlZA0KPiA+IC0gKiAgICAgICAgICAgTkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJ RF9QQVJBTUVURVIgLSBLZXkgc2l6ZSBpcyBpbnZhbGlkDQo+ID4gLSAqICAgICAgICAgICBORVRJ Rl9DVFJMX1NUQVRVU19CVUZGRVJfT1ZFUkZMT1cgICAtIEtleSBzaXplIGlzIGxhcmdlciB0aGFu DQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSBiYWNrZW5kIHN1cHBvcnRzDQo+ID4gLSAqICAgICAgICAgICBORVRJRl9DVFJMX1NUQVRV U19TVUNDRVNTICAgICAgICAgICAtIE9wZXJhdGlvbiBzdWNjZXNzZnVsDQo+ID4gKyAqICBzdGF0 dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAgICAgLSBPcGVyYXRpb24N Cj4gbm90DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdXBwb3J0ZWQNCj4gPiArICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NU QVRVU19JTlZBTElEX1BBUkFNRVRFUiAtIEtleSBzaXplIGlzDQo+IGludmFsaWQNCj4gPiArICog ICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19CVUZGRVJfT1ZFUkZMT1cgICAtIEtleSBz aXplIGlzDQo+IGxhcmdlcg0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhhbiB0aGUgYmFja2VuZA0KPiA+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMNCj4gPiAr ICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgICAgICAtIE9w ZXJhdGlvbiBzdWNjZXNzZnVsDQo+ID4gICAqICBkYXRhICAgPSAwDQo+ID4gICAqDQo+ID4gICAq IE5PVEU6IEFueSBrZXkgb2N0ZXRzIG5vdCBzcGVjaWZpZWQgYXJlIGFzc3VtZWQgdG8gYmUgemVy byAodGhlIGtleQ0KPiA+IEBAIC00MTEsNjcgKzUwMiw3MyBAQCB0eXBlZGVmIHN0cnVjdCBuZXRp Zl9jdHJsX3Jlc3BvbnNlDQo+ID4gbmV0aWZfY3RybF9yZXNwb25zZV90Ow0KPiA+ICAgKiAgICAg ICBpbnZhbGlkYXRlcyBhbnkgcHJldmlvdXMga2V5LCBoZW5jZSBzcGVjaWZ5aW5nIGEga2V5IHNp emUgb2YNCj4gPiAgICogICAgICAgemVybyB3aWxsIGNsZWFyIHRoZSBrZXkgKHdoaWNoIGVuc3Vy ZXMgdGhhdCB0aGUgY2FsY3VsYXRlZCBoYXNoDQo+ID4gICAqICAgICAgIHdpbGwgYWx3YXlzIGJl IHplcm8pLg0KPiA+IC0gKiAgICAgICBUaGUgbWF4aW11bSBzaXplIG9mIGtleSBpcyBiYWNrZW5k IHNwZWNpZmljLCBidXQgaXMgYWxzbyBsaW1pdGVkDQo+ID4gLSAqICAgICAgIGJ5IHRoZSBzaW5n bGUgZ3JhbnQgcmVmZXJlbmNlLg0KPiA+ICsgKiAgICAgICBUaGUgbWF4aW11bSBzaXplIG9mIGtl eSBpcyBhbGdvcml0aG0gYW5kIGJhY2tlbmQgc3BlY2lmaWMsIGJ1dA0KPiA+ICsgKiAgICAgICBp cyBhbHNvIGxpbWl0ZWQgYnkgdGhlIHNpbmdsZSBncmFudCByZWZlcmVuY2UuDQo+ID4gICAqICAg ICAgIFRoZSBncmFudCByZWZlcmVuY2UgbWF5IGJlIHJlYWQtb25seSBhbmQgbXVzdCByZW1haW4g dmFsaWQgdW50aWwNCj4gPiAgICogICAgICAgdGhlIHJlc3BvbnNlIGhhcyBiZWVuIHByb2Nlc3Nl ZC4NCj4gPiAgICoNCj4gPiAtICogTkVUSUZfQ1RSTF9UWVBFX0dFVF9UT0VQTElUWl9NQVBQSU5H X09SREVSDQo+ID4gLSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiA+ICsgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX0dFVF9IQVNIX01BUFBJTkdfU0laRQ0KPiA+ ICsgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICAgKg0K PiA+IC0gKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHF1ZXJ5IHRoZSBtYXhpbXVt IG9yZGVyIG9mIG1hcHBpbmcNCj4gPiAtICogdGFibGUgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5k LiBUaGUgb3JkZXIgaXMgc3BlY2lmaWVkIGluIHRlcm1zIG9mDQo+ID4gLSAqIHRhYmxlIGVudHJp ZXMgaS5lLiB0aGUgdGFibGUgbWF5IGNvbnRhaW4gdXAgdG8gMl5vcmRlciBlbnRyaWVzLg0KPiA+ ICsgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHF1ZXJ5IHRoZSBtYXhpbXVtIHNp emUgb2YgbWFwcGluZw0KPiA+ICsgKiB0YWJsZSBzdXBwb3J0ZWQgYnkgdGhlIGJhY2tlbmQuIFRo ZSBzaXplIGlzIHNwZWNpZmllZCBpbiB0ZXJtcyBvZg0KPiA+ICsgKiB0YWJsZSBlbnRyaWVzLg0K PiA+ICAgKg0KPiA+ICAgKiBSZXF1ZXN0Og0KPiA+ICAgKg0KPiA+IC0gKiAgdHlwZSAgICA9IE5F VElGX0NUUkxfVFlQRV9HRVRfVE9FUExJVFpfTUFQUElOR19PUkRFUg0KPiA+ICsgKiAgdHlwZSAg ICA9IFhFTl9ORVRJRl9DVFJMX1RZUEVfR0VUX0hBU0hfTUFQUElOR19TSVpFDQo+ID4gICAqICBk YXRhWzBdID0gMA0KPiA+ICAgKiAgZGF0YVsxXSA9IDANCj4gPiAgICogIGRhdGFbMl0gPSAwDQo+ ID4gICAqDQo+ID4gICAqIFJlc3BvbnNlOg0KPiA+ICAgKg0KPiA+IC0gKiAgc3RhdHVzID0gTkVU SUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAtIE9wZXJhdGlvbiBub3QNCj4gPiBzdXBwb3J0 ZWQNCj4gPiAtICogICAgICAgICAgIE5FVElGX0NUUkxfU1RBVFVTX1NVQ0NFU1MgICAgICAgLSBP cGVyYXRpb24gc3VjY2Vzc2Z1bA0KPiA+IC0gKiAgZGF0YSAgID0gbWF4aW11bSBvcmRlciBvZiBt YXBwaW5nIHRhYmxlIChpZiBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwpDQo+ID4gKyAqICBzdGF0 dXMgPSBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfTk9UX1NVUFBPUlRFRCAtIE9wZXJhdGlvbiBub3QN Cj4gPiBzdXBwb3J0ZWQNCj4gPiArICogICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19T VUNDRVNTICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwNCj4gPiArICogIGRhdGEgICA9IG1h eGltdW0gbnVtYmVyIG9mIGVudHJpZXMgYWxsb3dlZCBpbiB0aGUgbWFwcGluZyB0YWJsZQ0KPiA+ ICsgKiAgICAgICAgICAgKGlmIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCkgb3IgemVybyBpZiBh IG1hcHBpbmcgdGFibGUgaXMNCj4gPiArICogICAgICAgICAgIG5vdCBzdXBwb3J0ZWQgKGkuZS4g aGFzaCBtYXBwaW5nIGlzIGRvbmUgb25seSBieSBtb2R1bGFyDQo+ID4gKyAqICAgICAgICAgICBh cml0aG1ldGljKS4NCj4gPiAgICoNCj4gPiAtICogTkVUSUZfQ1RSTF9UWVBFX1NFVF9UT0VQTElU Wl9NQVBQSU5HX09SREVSDQo+ID4gLSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiA+ICsgKiBYRU5fTkVUSUZfQ1RSTF9UWVBFX1NFVF9IQVNIX01BUFBJTkdf U0laRQ0KPiA+ICsgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4g ICAqDQo+ID4gLSAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRlbmQgdG8gc2V0IHRoZSBhY3R1 YWwgb3JkZXIgb2YgdGhlIG1hcHBpbmcNCj4gPiAtICogdGFibGUgdG8gYmUgdXNlZCBieSB0aGUg YmFja2VuZC4gVGhlIG9yZGVyIGlzIHNwZWNpZmllZCBpbiB0ZXJtcyBvZg0KPiA+IC0gKiB0YWJs ZSBlbnRyaWVzIGkuZS4gdGhlIHRhYmxlIHdpbGwgY29udGFpbiB0byAyXm9yZGVyIGVudHJpZXMu DQo+ID4gKyAqIFRoaXMgaXMgc2VudCBieSB0aGUgZnJvbnRlbmQgdG8gc2V0IHRoZSBhY3R1YWwg c2l6ZSBvZiB0aGUgbWFwcGluZw0KPiA+ICsgKiB0YWJsZSB0byBiZSB1c2VkIGJ5IHRoZSBiYWNr ZW5kLiBUaGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gdGVybXMgb2YNCj4gPiArICogdGFibGUgZW50 cmllcy4NCj4gPiAgICogQW55IHByZXZpb3VzIHRhYmxlIGlzIGludmFsaWRhdGVkIGJ5IHRoaXMg bWVzc2FnZSBhbmQgYW55IG5ldyB0YWJsZQ0KPiA+IC0gKiBpcyBhc3N1bWVkIHRvIGJlIHplcm8g ZmlsbGVkLiBUaGUgZGVmYXVsdCBvcmRlciBpcyB6ZXJvIGFuZCBoZW5jZSB0aGUNCj4gPiAtICog ZGVmYXVsdCB0YWJsZSBjb250YWlucyBhIHNpbmdsZSBlbnRyeSBtYXBwaW5nIGFsbCBoYXNoZXMg dG8gcXVldWUtMC4NCj4gPiArICogaXMgYXNzdW1lZCB0byBiZSB6ZXJvIGZpbGxlZC4NCj4gPiAg ICoNCj4gPiAgICogUmVxdWVzdDoNCj4gPiAgICoNCj4gPiAtICogIHR5cGUgICAgPSBORVRJRl9D VFJMX1RZUEVfU0VUX1RPRVBMSVRaX01BUFBJTkdfT1JERVINCj4gPiAtICogIGRhdGFbMF0gPSBv cmRlciBvZiBtYXBwaW5nIHRhYmxlDQo+ID4gKyAqICB0eXBlICAgID0gWEVOX05FVElGX0NUUkxf VFlQRV9TRVRfSEFTSF9NQVBQSU5HX1NJWkUNCj4gPiArICogIGRhdGFbMF0gPSBudW1iZXIgb2Yg ZW50cmllcyBpbiBtYXBwaW5nIHRhYmxlDQo+ID4gICAqICBkYXRhWzFdID0gMA0KPiA+ICAgKiAg ZGF0YVsyXSA9IDANCj4gPiAgICoNCj4gPiAgICogUmVzcG9uc2U6DQo+ID4gICAqDQo+ID4gLSAq ICBzdGF0dXMgPSBORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAtIE9wZXJhdGlv biBub3QNCj4gPiBzdXBwb3J0ZWQNCj4gPiAtICogICAgICAgICAgIE5FVElGX0NUUkxfU1RBVFVT X0lOVkFMSURfUEFSQU1FVEVSIC0gVGFibGUgb3JkZXIgaXMgaW52YWxpZA0KPiA+IC0gKiAgICAg ICAgICAgTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgLSBPcGVyYXRpb24gc3Vj Y2Vzc2Z1bA0KPiA+ICsgKiAgc3RhdHVzID0gWEVOX05FVElGX0NUUkxfU1RBVFVTX05PVF9TVVBQ T1JURUQgICAgIC0gT3BlcmF0aW9uDQo+IG5vdA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkDQo+ID4gKyAqICAgICAg ICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVURVIgLSBUYWJsZSBzaXpl IGlzDQo+ID4gaW52YWxpZA0KPiA+ICsgKiAgICAgICAgICAgWEVOX05FVElGX0NUUkxfU1RBVFVT X1NVQ0NFU1MgICAgICAgICAgIC0gT3BlcmF0aW9uIHN1Y2Nlc3NmdWwNCj4gPiAgICogIGRhdGEg ICA9IDANCj4gPiAgICoNCj4gPiAtICogTkVUSUZfQ1RSTF9UWVBFX1NFVF9UT0VQTElUWl9NQVBQ SU5HDQo+ID4gKyAqIE5PVEU6IFNldHRpbmcgZGF0YVswXSB0byAwIG1lYW5zIHRoYXQgaGFzaCBt YXBwaW5nIHNob3VsZCBiZSBkb25lDQo+ID4gKyAqICAgICAgIHVzaW5nIG1vZHVsYXIgYXJpdGht ZXRpYy4NCj4gPiArICoNCj4gPiArICogWEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9NQVBQ SU5HDQo+ID4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICAg Kg0KPiA+ICAgKiBUaGlzIGlzIHNlbnQgYnkgdGhlIGZyb250ZW5kIHRvIHNldCB0aGUgY29udGVu dCBvZiB0aGUgdGFibGUgbWFwcGluZw0KPiA+IC0gKiB0b2VwbGl0eiBoYXNoIHZhbHVlIHRvIHF1 ZXVlIG51bWJlci4gVGhlIGJhY2tlbmQgc2hvdWxkIGNhbGN1bGF0ZSB0aGUNCj4gPiAtICogaGFz aCBmcm9tIHRoZSBwYWNrZXQgaGVhZGVyLCB1c2UgaXQgYXMgYW4gaW5kZXggaW50byB0aGUgdGFi bGUgKG1vZHVsbw0KPiA+IC0gKiB0aGUgc2l6ZSBvZiB0aGUgdGFibGUpIGFuZCB0aGVuIHN0ZWVy IHRoZSBwYWNrZXQgdG8gdGhlIHF1ZXVlIG51bWJlcg0KPiA+IC0gKiBmb3VuZCBhdCB0aGF0IGlu ZGV4Lg0KPiA+ICsgKiBoYXNoIHZhbHVlIHRvIHF1ZXVlIG51bWJlci4gVGhlIGJhY2tlbmQgc2hv dWxkIGNhbGN1bGF0ZSB0aGUgaGFzaA0KPiA+IGZyb20NCj4gPiArICogdGhlIHBhY2tldCBoZWFk ZXIsIHVzZSBpdCBhcyBhbiBpbmRleCBpbnRvIHRoZSB0YWJsZSAobW9kdWxvIHRoZSBzaXplDQo+ ID4gKyAqIG9mIHRoZSB0YWJsZSkgYW5kIHRoZW4gc3RlZXIgdGhlIHBhY2tldCB0byB0aGUgcXVl dWUgbnVtYmVyIGZvdW5kIGF0DQo+ID4gKyAqIHRoYXQgaW5kZXguDQo+ID4gICAqDQo+ID4gICAq IFJlcXVlc3Q6DQo+ID4gICAqDQo+ID4gLSAqICB0eXBlICAgID0gTkVUSUZfQ1RSTF9UWVBFX1NF VF9UT0VQTElUWl9NQVBQSU5HDQo+ID4gKyAqICB0eXBlICAgID0gWEVOX05FVElGX0NUUkxfVFlQ RV9TRVRfSEFTSF9NQVBQSU5HDQo+ID4gICAqICBkYXRhWzBdID0gZ3JhbnQgcmVmZXJlbmNlIG9m IHBhZ2UgY29udGFpbmluZyB0aGUgbWFwcGluZyAoc3ViLSl0YWJsZQ0KPiA+ICAgKiAgICAgICAg ICAgIChhc3N1bWVkIHRvIHN0YXJ0IGF0IGJlZ2lubmluZyBvZiBncmFudCkNCj4gPiAgICogIGRh dGFbMV0gPSBzaXplIG9mIChzdWItKXRhYmxlIGluIGVudHJpZXMNCj4gPiBAQCAtNDc5LDEyICs1 NzYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfY3RybF9yZXNwb25zZQ0KPiA+IG5ldGlmX2N0 cmxfcmVzcG9uc2VfdDsNCj4gPiAgICoNCj4gPiAgICogUmVzcG9uc2U6DQo+ID4gICAqDQo+ID4g LSAqICBzdGF0dXMgPSBORVRJRl9DVFJMX1NUQVRVU19OT1RfU1VQUE9SVEVEICAgICAtIE9wZXJh dGlvbiBub3QNCj4gPiBzdXBwb3J0ZWQNCj4gPiAtICogICAgICAgICAgIE5FVElGX0NUUkxfU1RB VFVTX0lOVkFMSURfUEFSQU1FVEVSIC0gVGFibGUgc2l6ZSBvciBjb250ZW50DQo+IGlzDQo+ID4g LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFs aWQNCj4gPiAtICogICAgICAgICAgIE5FVElGX0NUUkxfU1RBVFVTX0JVRkZFUl9PVkVSRkxPVyAg IC0gVGFibGUgc2l6ZSBpcyBsYXJnZXINCj4gdGhhbg0KPiA+IC0gKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYmFja2VuZCBzdXBwb3J0cw0KPiA+ IC0gKiAgICAgICAgICAgTkVUSUZfQ1RSTF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgLSBPcGVy YXRpb24gc3VjY2Vzc2Z1bA0KPiA+ICsgKiAgc3RhdHVzID0gWEVOX05FVElGX0NUUkxfU1RBVFVT X05PVF9TVVBQT1JURUQgICAgIC0gT3BlcmF0aW9uDQo+IG5vdA0KPiA+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkDQo+ID4g KyAqICAgICAgICAgICBYRU5fTkVUSUZfQ1RSTF9TVEFUVVNfSU5WQUxJRF9QQVJBTUVURVIgLSBU YWJsZSBzaXplIG9yDQo+ID4gY29udGVudA0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW52YWxpZA0KPiA+ICsgKiAgICAgICAg ICAgWEVOX05FVElGX0NUUkxfU1RBVFVTX0JVRkZFUl9PVkVSRkxPVyAgIC0gVGFibGUgc2l6ZSBp cw0KPiA+IGxhcmdlcg0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhhbiB0aGUgYmFja2VuZA0KPiA+ICsgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMNCj4gPiArICog ICAgICAgICAgIFhFTl9ORVRJRl9DVFJMX1NUQVRVU19TVUNDRVNTICAgICAgICAgICAtIE9wZXJh dGlvbiBzdWNjZXNzZnVsDQo+ID4gICAqICBkYXRhICAgPSAwDQo+ID4gICAqDQo+ID4gICAqIE5P VEU6IFRoZSBvdmVyYWxsIHRhYmxlIGhhcyB0aGUgZm9sbG93aW5nIGZvcm1hdDoNCj4gPiBAQCAt NTAwLDkgKzU5OSw4IEBAIHR5cGVkZWYgc3RydWN0IG5ldGlmX2N0cmxfcmVzcG9uc2UNCj4gPiBu ZXRpZl9jdHJsX3Jlc3BvbnNlX3Q7DQo+ID4gICAqICAgICAgIHwgICAgICBtYXBwaW5nW04tMl0g ICAgIHwgICAgICBtYXBwaW5nW04tMV0gICAgIHwNCj4gPiAgICogICAgICAgKy0tLS0tKy0tLS0t Ky0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKw0KPiA+ICAgKg0KPiA+IC0gKiAg ICAgICB3aGVyZSBOID09IDJeb3JkZXIgYXMgc3BlY2lmaWVkIGJ5IGENCj4gPiAtICogICAgICAg TkVUSUZfQ1RSTF9UWVBFX1NFVF9UT0VQTElUWl9NQVBQSU5HX09SREVSIG1lc3NhZ2UgYW5kDQo+ ID4gZWFjaA0KPiA+IC0gKiAgICAgICBtYXBwaW5nIG11c3Qgc3BlY2lmaWVzIGEgcXVldWUgYmV0 d2VlbiAwIGFuZA0KPiA+ICsgKiAgICAgICB3aGVyZSBOIGlzIHNwZWNpZmllZCBieSBhDQo+ID4g WEVOX05FVElGX0NUUkxfVFlQRV9TRVRfSEFTSF9NQVBQSU5HX1NJWkUNCj4gPiArICogICAgICAg bWVzc2FnZSBhbmQgZWFjaCAgbWFwcGluZyBtdXN0IHNwZWNpZmllcyBhIHF1ZXVlIGJldHdlZW4g MCBhbmQNCj4gPiAgICogICAgICAgIm11bHRpLXF1ZXVlLW51bS1xdWV1ZXMiIChzZWUgYWJvdmUp Lg0KPiA+ICAgKiAgICAgICBUaGUgYmFja2VuZCBtYXkgc3VwcG9ydCBhIG1hcHBpbmcgdGFibGUg bGFyZ2VyIHRoYW4gY2FuIGJlDQo+ID4gICAqICAgICAgIG1hcHBlZCBieSBhIHNpbmdsZSBncmFu dCByZWZlcmVuY2UuIFRodXMgc3ViLXRhYmxlcyB3aXRoaW4gYQ0KPiA+IEBAIC01MTMsNyArNjEx LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfY3RybF9yZXNwb25zZQ0KPiA+IG5ldGlmX2N0cmxf cmVzcG9uc2VfdDsNCj4gPiAgICogICAgICAgdGhlIHJlc3BvbnNlIGhhcyBiZWVuIHByb2Nlc3Nl ZC4NCj4gPiAgICovDQo+ID4NCj4gPiAtREVGSU5FX1JJTkdfVFlQRVMobmV0aWZfY3RybCwgc3Ry dWN0IG5ldGlmX2N0cmxfcmVxdWVzdCwgc3RydWN0DQo+ID4gbmV0aWZfY3RybF9yZXNwb25zZSk7 DQo+ID4gK0RFRklORV9SSU5HX1RZUEVTKHhlbl9uZXRpZl9jdHJsLA0KPiA+ICsgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgeGVuX25ldGlmX2N0cmxfcmVxdWVzdCwNCj4gPiArICAgICAgICAgICAg ICAgICAgc3RydWN0IHhlbl9uZXRpZl9jdHJsX3Jlc3BvbnNlKTsNCj4gPg0KPiA+ICAvKg0KPiA+ ICAgKiBHdWVzdCB0cmFuc21pdA0KPiA+IEBAIC01MzEsNyArNjMxLDcgQEAgREVGSU5FX1JJTkdf VFlQRVMobmV0aWZfY3RybCwgc3RydWN0DQo+ID4gbmV0aWZfY3RybF9yZXF1ZXN0LCBzdHJ1Y3Qg bmV0aWZfY3RybF9yZXNwbw0KPiA+ICAgKiAgLi4uDQo+ID4gICAqICBGcmFnbWVudCBOOiBuZXRp Zl90eF9yZXF1ZXN0X3QgIC0gKG9ubHkgaWYgZnJhZ21lbnQgTi0xIGZsYWdzIGluY2x1ZGUNCj4g PiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUVFhGX21vcmVfZGF0 YSAtIGZsYWdzIG9uIHByZWNlZGluZw0KPiA+IC0gKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBleHRyYXMgYXJlIG5vdCByZWxldmVudCBoZXJlKQ0KPiA+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYXMgYXJlIG5vdCByZWxldmFudCBoZXJl KQ0KPiA+ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gMA0K PiA+ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBmcmFnbWVu dCBzaXplDQo+ID4gICAqDQo+ID4gQEAgLTU4OSw3ICs2ODksNyBAQCBERUZJTkVfUklOR19UWVBF UyhuZXRpZl9jdHJsLCBzdHJ1Y3QNCj4gPiBuZXRpZl9jdHJsX3JlcXVlc3QsIHN0cnVjdCBuZXRp Zl9jdHJsX3Jlc3BvDQo+ID4gICAqICAuLi4NCj4gPiAgICogIEZyYWdtZW50IE46IG5ldGlmX3J4 X3JlcXVlc3RfdCAgLSAob25seSBpZiBmcmFnbWVudCBOLTEgZmxhZ3MgaW5jbHVkZQ0KPiA+ICAg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRSWEZfbW9yZV9kYXRhIC0g ZmxhZ3Mgb24gcHJlY2VkaW5nDQo+ID4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV4dHJhcyBhcmUgbm90IHJlbGV2ZW50IGhlcmUpDQo+ID4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhcyBhcmUgbm90IHJlbGV2YW50IGhlcmUpDQo+ ID4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSAwDQo+ID4g ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IGZyYWdtZW50IHNp emUNCj4gPiAgICoNCj4gPiBAQCAtNjMxLDcgKzczMSw3IEBAIERFRklORV9SSU5HX1RZUEVTKG5l dGlmX2N0cmwsIHN0cnVjdA0KPiA+IG5ldGlmX2N0cmxfcmVxdWVzdCwgc3RydWN0IG5ldGlmX2N0 cmxfcmVzcG8NCj4gPiAgICogICAgICAgZGVzY3JpYmVkIGJlbG93LCBleHRyYSBpbmZvIHN0cnVj dHVyZXMgb3ZlcmxheSB0aGUgaWQgZmllbGQpLg0KPiA+ICAgKiAgICAgICBJbnN0ZWFkIGl0IGFz c3VtZXMgdGhhdCByZXNwb25zZXMgYWx3YXlzIGFwcGVhciBpbiB0aGUgc2FtZSByaW5nDQo+ID4g ICAqICAgICAgIHNsb3QgYXMgdGhlaXIgY29ycmVzcG9uZGluZyByZXF1ZXN0LiBUaHVzLCB0byBt YWludGFpbg0KPiA+IC0gKiAgICAgICBjb21wYXRpYmlsdHksIGJhY2tlbmRzIG11c3QgbWFrZSBz dXJlIHRoaXMgaXMgdGhlIGNhc2UuDQo+ID4gKyAqICAgICAgIGNvbXBhdGliaWxpdHksIGJhY2tl bmRzIG11c3QgbWFrZSBzdXJlIHRoaXMgaXMgdGhlIGNhc2UuDQo+ID4gICAqDQo+ID4gICAqIEV4 dHJhIEluZm8NCj4gPiAgICogPT09PT09PT09PQ0KPiA+IEBAIC02OTYsMjEgKzc5NiwyMyBAQCBE RUZJTkVfUklOR19UWVBFUyhuZXRpZl9jdHJsLCBzdHJ1Y3QNCj4gPiBuZXRpZl9jdHJsX3JlcXVl c3QsIHN0cnVjdCBuZXRpZl9jdHJsX3Jlc3BvDQo+ID4gICAqIGZsYWdzOiBYRU5fTkVUSUZfRVhU UkFfRkxBR18qDQo+ID4gICAqIGFkZHI6IGFkZHJlc3MgdG8gYWRkL3JlbW92ZQ0KPiA+ICAgKg0K PiA+IC0gKiBYRU5fTkVUSUZfRVhUUkFfVFlQRV9UT0VQTElUWjoNCj4gPiArICogWEVOX05FVElG X0VYVFJBX1RZUEVfSEFTSDoNCj4gPiAgICoNCj4gPiAgICogQSBiYWNrZW5kIHRoYXQgc3VwcG9y dHMgdGVvcGxpdHogaGFzaGluZyBpcyBhc3N1bWVkIHRvIGFjY2VwdA0KPiA+ICAgKiB0aGlzIHR5 cGUgb2YgZXh0cmEgaW5mbyBpbiB0cmFuc21pdCBwYWNrZXRzLg0KPiA+IC0gKiBBIGZyb250ZW5k IHRoYXQgZW5hYmxlcyB0b2VwbGl0eiBoYXNoaW5nIGlzIGFzc3VtZWQgdG8gYWNjZXB0DQo+ID4g KyAqIEEgZnJvbnRlbmQgdGhhdCBlbmFibGVzIGhhc2hpbmcgaXMgYXNzdW1lZCB0byBhY2NlcHQN Cj4gPiAgICogdGhpcyB0eXBlIG9mIGV4dHJhIGluZm8gaW4gcmVjZWl2ZSBwYWNrZXRzLg0KPiA+ ICAgKg0KPiA+ICAgKiAgICAwICAgICAxICAgICAyICAgICAzICAgICA0ICAgICA1ICAgICA2ICAg ICA3ICBvY3RldA0KPiA+ICAgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rDQo+ID4gLSAqIHx0eXBlIHxmbGFnc3xodHlwZXwgcGFkIHxMU0IgLS0tLSB2 YWx1ZSAtLS0tIE1TQnwNCj4gPiArICogfHR5cGUgfGZsYWdzfGh0eXBlfCBhbGcgfExTQiAtLS0t IHZhbHVlIC0tLS0gTVNCfA0KPiA+ICAgKiArLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0rLS0tLS0rDQo+ID4gICAqDQo+ID4gLSAqIHR5cGU6IE11c3QgYmUgWEVOX05F VElGX0VYVFJBX1RZUEVfVE9FUExJVFoNCj4gPiArICogdHlwZTogTXVzdCBiZSBYRU5fTkVUSUZf RVhUUkFfVFlQRV9IQVNIDQo+ID4gICAqIGZsYWdzOiBYRU5fTkVUSUZfRVhUUkFfRkxBR18qDQo+ ID4gLSAqIGh0eXBlOiBIYXNoIHR5cGUgKG9uZSBvZiBfTkVUSUZfQ1RSTF9UT0VQTElUWl9IQVNI XyogLSBzZWUgYWJvdmUpDQo+ID4gKyAqIGh0eXBlOiBIYXNoIHR5cGUgKG9uZSBvZiBfWEVOX05F VElGX0NUUkxfSEFTSF9UWVBFXyogLSBzZWUNCj4gYWJvdmUpDQo+ID4gKyAqIGFsZzogVGhlIGFs Z29yaXRobSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgaGFzaCAob25lIG9mDQo+ID4gKyAqICAgICAg WEVOX05FVElGX0NUUkxfSEFTSF9UWVBFX0FMR09SSVRITV8qIC0gc2VlIGFib3ZlKQ0KPiA+ICAg KiB2YWx1ZTogSGFzaCB2YWx1ZQ0KPiA+ICAgKi8NCj4gPg0KPiA+IEBAIC03NDUsNyArODQ3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgbmV0aWZfdHhfcmVxdWVzdA0KPiBuZXRpZl90eF9yZXF1ZXN0X3Q7 DQo+ID4gICNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfR1NPICAgICAgICgxKSAgLyogdS5n c28gKi8NCj4gPiAgI2RlZmluZSBYRU5fTkVUSUZfRVhUUkFfVFlQRV9NQ0FTVF9BREQgKDIpICAv KiB1Lm1jYXN0ICovDQo+ID4gICNkZWZpbmUgWEVOX05FVElGX0VYVFJBX1RZUEVfTUNBU1RfREVM ICgzKSAgLyogdS5tY2FzdCAqLw0KPiA+IC0jZGVmaW5lIFhFTl9ORVRJRl9FWFRSQV9UWVBFX1RP RVBMSVRaICAoNCkgIC8qIHUudG9lcGxpdHogKi8NCj4gPiArI2RlZmluZSBYRU5fTkVUSUZfRVhU UkFfVFlQRV9IQVNIICAgICAgKDQpICAvKiB1Lmhhc2ggKi8NCj4gPiAgI2RlZmluZSBYRU5fTkVU SUZfRVhUUkFfVFlQRV9NQVggICAgICAgKDUpDQo+ID4NCj4gPiAgLyogbmV0aWZfZXh0cmFfaW5m b190IGZsYWdzLiAqLw0KPiA+IEBAIC03NzYsOSArODc4LDkgQEAgc3RydWN0IG5ldGlmX2V4dHJh X2luZm8gew0KPiA+ICAgICAgICAgIH0gbWNhc3Q7DQo+ID4gICAgICAgICAgc3RydWN0IHsNCj4g PiAgICAgICAgICAgICAgdWludDhfdCB0eXBlOw0KPiA+IC0gICAgICAgICAgICB1aW50OF90IHBh ZDsNCj4gPiArICAgICAgICAgICAgdWludDhfdCBhbGdvcml0aG07DQo+ID4gICAgICAgICAgICAg IHVpbnQ4X3QgdmFsdWVbNF07DQo+ID4gLSAgICAgICAgfSB0b2VwbGl0ejsNCj4gPiArICAgICAg ICB9IGhhc2g7DQo+ID4gICAgICAgICAgdWludDE2X3QgcGFkWzNdOw0KPiA+ICAgICAgfSB1Ow0K PiA+ICB9Ow0KPiA+IC0tDQo+ID4gMi4xLjQNCj4gDQo+IA0KPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBYZW4tZGV2ZWwgbWFpbGluZyBsaXN0DQo+ IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnDQo+IGh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK