From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by sourceware.org (Postfix) with ESMTPS id 37A5F3858C5E for ; Tue, 4 Apr 2023 14:43:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 37A5F3858C5E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680619380; x=1712155380; h=from:to:subject:date:message-id:references:in-reply-to: mime-version:content-transfer-encoding; bh=137ldfh5/zh0hv9i4YL6dKUJQQ6RbueP8b0hxUt5lzY=; b=IDec9oM1gsI/vZxPiHbrfE4I8xCYoaxY1Jlzy8mUL4/BjI6u2Rz3u7Pj TyX2vQwRxlwDEtEr+Bj598qVdoJF2M3Vxl5a92ZboKLI6oQTGK9d8JQiI jOzMWL5FUp8AnD2ALrAwGhwzTtcBpfpXb5JINVL/VtH79qjeGGDwj5oHs 6msc2czKuC7ACM/3dFMbAUvon1Fo6gMPt/Bmm8IBqzv5E9Wh8Rhqecqyt SsVN6PzkOD2f/ejLTGwHH1E0WIJJy9TL25F1xJIz5hkQSDaSsYkh5fpyi 4uvCalsvL9XoUjG/1LlOk8p6qPwfcyJB8HQNE0lcS0iLfsQq8K0l/qPre w==; X-IronPort-AV: E=McAfee;i="6600,9927,10670"; a="344768797" X-IronPort-AV: E=Sophos;i="5.98,318,1673942400"; d="scan'208";a="344768797" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2023 07:42:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10670"; a="1016128768" X-IronPort-AV: E=Sophos;i="5.98,318,1673942400"; d="scan'208";a="1016128768" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga005.fm.intel.com with ESMTP; 04 Apr 2023 07:42:58 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 4 Apr 2023 07:42:58 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 4 Apr 2023 07:42:58 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 4 Apr 2023 07:42:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mU1+gU088IHycK+MkJ47W1v+RsyvBw6WbOPINZSNHVBwLZInWK7lVVtLzoKp9JktlpZZ78Tc3udJm54sCIFUvzBzwbhKju9dAg+0oMDtdzSdv4WkC/u1MEUlszW5N0Tkgbf3gjaZs51ACfT8sS9FPWRkwzJtG8RX2kyoHRBC4qgJGKwh21cUJDQlZNxEEi9VW5q6DhYUgMEHsuoMMHEcaLLuiEnm8J8SK/ddEEf8bvJx6FoycX14EyDaIfZ5MN+gKx2LEQkIOxnnFL38bDeGe12ZmX1JrTUP4ZEgDHBQQiVDhJ7CqLYWWOMjq1t0z2nZimFtnN3Vb+DOWtp34CqiQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kRa/FTzsITjj2EplvuQMZBFXZmsCDLEuTUqBKpdVdWM=; b=mquMHYBtwUNzakCHB/7qmVzRgJUGRM2JEZEnYAR/bwMvLoBQyltEN0L32sltdj40JLFgpZG7fTNQgrkems42+mPPiqCWNrrBACIJVAfPLm46i+qBvpw0ZsQp0QRm7Xzifw/OKOjSGMyp4bArtx6zGGaVl/bl8kTm6MPBz7J9VPkrCrKhjRGH451G9FqzuoX/5iiFdK073ri3UnYwzR14ppxWPlRONHfPxV1DgLD0Zn0N2jCGeBuO0q8sLlWHnzCsfPdIrhs9PaYtf17QwXbFRvYXMXB+81cczq8bbWmQwYuY4ovGAbzKhP+IHPChoEvrUzu+e5zucTrOv4I8FdgyXA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN2PR11MB4566.namprd11.prod.outlook.com (2603:10b6:208:24e::16) by IA1PR11MB7811.namprd11.prod.outlook.com (2603:10b6:208:3f9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.33; Tue, 4 Apr 2023 14:42:55 +0000 Received: from MN2PR11MB4566.namprd11.prod.outlook.com ([fe80::4183:b193:7a77:3af2]) by MN2PR11MB4566.namprd11.prod.outlook.com ([fe80::4183:b193:7a77:3af2%4]) with mapi id 15.20.6254.035; Tue, 4 Apr 2023 14:42:55 +0000 From: "Willgerodt, Felix" To: Simon Marchi , "gdb-patches@sourceware.org" Subject: RE: [PATCH v8 09/10] btrace, python: Enable ptwrite filter registration. Thread-Topic: [PATCH v8 09/10] btrace, python: Enable ptwrite filter registration. Thread-Index: AQHZXAx57drYN+SYxkSs1o5oHay8hq8KEQEAgASDlJCAC42hgIABFfcg Date: Tue, 4 Apr 2023 14:42:55 +0000 Message-ID: References: <20230321154626.448816-1-felix.willgerodt@intel.com> <20230321154626.448816-10-felix.willgerodt@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR11MB4566:EE_|IA1PR11MB7811:EE_ x-ms-office365-filtering-correlation-id: 452dc6f5-4b3c-45fb-15e3-08db351ae048 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: W8mmA8OGHl83zrrTS+MqtxIGZrIY/o14bv4isV6FoIx/5HqI1DjaCNiyR3E2JVt7gxMKjC4QWy825EkVoRLht6vCnpEfSoVwtcO2zV5hDKMpn0i4Notb/Hou9OyF/1jbym0tWl62iNcWbU5Ec9+PRa1MD6x5ocpB7aKYBNYGS3wneZZ/+wCmwSmebpvRgTvpao3IhOgTPRFzp0tQD/Td8vXVw8Rr3PR7O6bf2B85tn7YgYx5/AaSGeZyrzKwoBvQRD5T3GU2sKi3G4I+kDgLiO1UfhRm9qRC4YtW8RV1Hw6gR0TUh7NuGD1RcwMTepkFiCsuYCutIwH93Trmnplo9oHkeOdPlADLZBfOEDoR89Su69/aIaJimtZU6RtlisBxPlka9vxA/1fnamKWWXiJT6EdtbbLlEuo80AV58PDw1AigkIwdvXPoLzXFOPT5w/Y9YQI9X6Og5D/Ws5TO/ANJ/mR2Ycz/4N4JFBIf7sBlD+F6mL4WguAulMlFy3elEVmYf2GKb+RlxtQymlpD4hALUiIckcpiRlQBXH4xh7XtxKWuhgmHphuSH7h9YuVuA+IGvXtw1FB6FV8Yt728LCWYZiZDApoYMzksJLsoYaYUGI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR11MB4566.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(376002)(396003)(136003)(366004)(346002)(451199021)(55016003)(41300700001)(66476007)(66446008)(64756008)(66556008)(76116006)(66946007)(8676002)(316002)(478600001)(30864003)(52536014)(8936002)(122000001)(82960400001)(5660300002)(110136005)(38100700002)(83380400001)(186003)(7696005)(966005)(71200400001)(6506007)(9686003)(53546011)(26005)(86362001)(38070700005)(33656002)(2906002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RE1zOU9ZTXAxb1pUMjNhUTRtU0hqWXRzVVpoNTNYejRmYmpUUE9RYWNYWnEr?= =?utf-8?B?NFl5MXNaUlp2TVJjaGFNSDFpYmZvQlNWbG9raHVqdVhsenNTVHVkaDkxVjkw?= =?utf-8?B?OVBIKzdJRm15YTRpMWlxcUdGbXplTFVBY08ra00zMUFpM3dqM2h3YXN4c3lN?= =?utf-8?B?blBEd0NPS01NNmQwTGlQMXNVcHRCTWxkSENKNnBQczBQSjRkSll0b0hUa3BR?= =?utf-8?B?VitqZ096TWtCZEYzbC9mVkRneWwxdnhZYWlZQS95Z2x0UHhmcC8xYWRVZG9M?= =?utf-8?B?YnJBVUhUc3ZOYUtvNFBJWWlYZWVYNld1d0R3UWRObU5GUTJkQ0FVVG9Uelhn?= =?utf-8?B?L2tYY2I3NlFPV1drcnZVMzM3TWJ5Ty8yaDJRTmVXU1dWWlJWR3ZGQ3p2T2gz?= =?utf-8?B?NDg4bG91TWRtMzRtTG54c3hNcEt2VTRyZExrTG1xcUFIU0dDenBQQ1pPTnVN?= =?utf-8?B?RWU1TGM4MEZkVGVDU1VOdUJrUUhtSlVlWTlDVXNTMERPUWdBTkJneDFCQlYw?= =?utf-8?B?WjJhZ3BZbnU4WkhCOXVjSWtFdmJPOEV3VHdHRDYrNFB2OFJzRlF2VVhDWDVq?= =?utf-8?B?YW5JbDJNZzl2Ym5WSVhwOXBHZ2dxYVprdVNQaXlzMmZmaVgxRmFRNEMwRm5D?= =?utf-8?B?Q2JWTWVEbmdub2NRZm1xSzY5VzdkeURHN054NGEyOWgybWZkVnRUeVFGZS8x?= =?utf-8?B?aVltVGJCdCtSZTdIT0dhZm44WTN2YUg2UUtjMVdPZmk1Q0ZualJLMzA1dXpJ?= =?utf-8?B?YnlWRmRXNjlyamExVE9ZNzA1TEpCMVd0dU1BemxLR0xvTDYyc1h4SHNtcU5R?= =?utf-8?B?Z0NoZ2xoa0NJTDAwR0ljQ2pFNFlsNjdsaHVPb1NqS2RoVStxcDg2V2M2clkz?= =?utf-8?B?cVJsODlFcGhETnQ3TWZCNWJIYzVNbGM1T3AvMEhDRGhKdk9mUUVtanRjVEhI?= =?utf-8?B?NXFPUXNXVHIzQUZLQytFVnFHZkFZNEkyNVM1ZFFpYlFKTzVYcWF1RmNkVWdS?= =?utf-8?B?S3AxLzdrU0UwYmJxdmNUMTdXTm1haC9BS1JmUExOcDdORW55OTR2THc1QWhP?= =?utf-8?B?V1hUVHBSNVhVb0psRHNFSHA1RzlRNU1LUmE1NlViNHQ0TXh6TE5XWHVDQTZK?= =?utf-8?B?Q2FNOTQzMVo3Zzh6N0dmVXZLWHRCUUJGZ2xGWFQrRkIxbzhpQUFPdjRoR2lS?= =?utf-8?B?eWd1b254c3hscTgreHQrcFhPOHlkWnZMUWUvQWlnY3VzbzhYaSt3UTFKcXFM?= =?utf-8?B?cWUzZUl6TkpPWDU3U1d5c1EyRkd5VU45bzBvcmFMS21NeDhpYUNOUnB3OVVX?= =?utf-8?B?alEzVENKc1NlWGhxckg4Z2NGZ1BCR3VaMm5xbTVlc0xCcmt0RXg0UW1lVml3?= =?utf-8?B?UmYvTUt2bW9uUlR3am5lcEk1M3N6dWcyUmxjRkphNHBFclVWZ3dyRzFmbVND?= =?utf-8?B?MFRKRlpSc3BoR25yeEFWT29KdU5vUEU2M2paTjRxcS9JYVl0SlZnN1k3OGt1?= =?utf-8?B?Qk1oMmdvdGk5SVl5d2JmenlPWVM2N1pBVVFkQjlnalQ4cXpXT1pqaXlKaGh4?= =?utf-8?B?dCtYRU44YXRNOGZXa3VZNC9ic2JOYUtXbnlHWmFjT1gxMzJ5R2hNZEdMbUs0?= =?utf-8?B?MEVhcVFENWI3WkhJWUgwUTdjaVBtMnZ0ZU02cjdjT3RaOUErOUN4ZXVaeVpl?= =?utf-8?B?bnlkSC9yNHFuL3EzUU9DR0ZOclRjdDNxSlZSR1lVb2lVbk8xWEFMZzZ1SmVj?= =?utf-8?B?NmhrN3p0Ky9jcTdaZlBhTTFHMFFOQ3ExZlkzSVBhSGV6aEpKc0tVbDlva1lT?= =?utf-8?B?cGVWMWMzcU9kTmhIcUY1Ym4zN1Jwak1WRkhDLzl1a3NTS3YveTNOdDBLZG81?= =?utf-8?B?M3FUelVCR2svWXVudDJZMURpUkZQeTJ1Ymc2N3ExTUxGK2M0T0hUazdjMStR?= =?utf-8?B?L09UVnRxamV1QnM3bnpUVDk2QTBrcVBBTHluemNVdVVWSXNhT1c4TU9qeUFi?= =?utf-8?B?TXRzY0tIcmR5OFZUNTgvRVZQQ08ybHlIMldPQUpTNlYvT1dxNlhLbTZ0NFh2?= =?utf-8?B?UThpUWhCbWVsYXJyc2N3dnRQQmFQRmlsaE5CT1ljUTFIQXFHSmZNcGVzR1NC?= =?utf-8?B?NzdBQkplcGlSaldMYmxIbno3YS9rellDcWM2dkxNNGdKQXN3ZHRpbjBHQ0Fv?= =?utf-8?B?bFE9PQ==?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4566.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 452dc6f5-4b3c-45fb-15e3-08db351ae048 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Apr 2023 14:42:55.0954 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vsMKkkoqVDGiucUMMPYcnlWGFOBhUSEngX2pjDVkN0Ygb5jV5XkUQDsF7tiGbH6YYkzg7YlAacmg9KEL4ndTqtb61SGM9i+d3WL7Y2LutU8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB7811 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTaW1vbiBNYXJjaGkgPHNpbWFy a0BzaW1hcmsuY2E+DQo+IFNlbnQ6IE1vbnRhZywgMy4gQXByaWwgMjAyMyAyMjo0NQ0KPiBUbzog V2lsbGdlcm9kdCwgRmVsaXggPGZlbGl4LndpbGxnZXJvZHRAaW50ZWwuY29tPjsgZ2RiLQ0KPiBw YXRjaGVzQHNvdXJjZXdhcmUub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjggMDkvMTBdIGJ0 cmFjZSwgcHl0aG9uOiBFbmFibGUgcHR3cml0ZSBmaWx0ZXINCj4gcmVnaXN0cmF0aW9uLg0KPiAN Cj4gPj4+ICtkZWYgcHR3cml0ZV9leGl0X2hhbmRsZXIoZXZlbnQpOg0KPiA+Pj4gKyAgICAiIiJF eGl0IGhhbmRsZXIgdG8gcHJ1bmUgX3B0d3JpdGVfZmlsdGVyIG9uIGluZmVyaW9yIGV4aXQuIiIi DQo+ID4+PiArICAgIGZvciBrZXkgaW4gbGlzdChfcHR3cml0ZV9maWx0ZXIua2V5cygpKToNCj4g Pj4NCj4gPj4gSSBkb24ndCB0aGluayB0aGUgbGlzdCgpIGlzIG5lZWRlZC4NCj4gPg0KPiA+IEl0 IGFjdHVhbGx5IGlzIG5lZWRlZCwgYXMgSSByZS1zaXplIHRoZSBhcnJheToNCj4gPg0KPiA+Pj4+ IG15ZGljdCA9IHsxOiAib25lIiwgMjogInR3byJ9DQo+ID4+Pj4gZm9yIGsgaW4gbXlkaWN0Lmtl eXMoKToNCj4gPiAuLi4gICAgIGlmIGsgPT0gMjoNCj4gPiAuLi4gICAgICAgICBkZWwgbXlkaWN0 W2tdDQo+ID4gLi4uDQo+ID4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOg0KPiA+ ICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4NCj4gPiBSdW50aW1lRXJyb3I6 IGRpY3Rpb25hcnkgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24NCj4gQWggb2ssIGl0J3Mg dG8gdGFrZSBhICJzbmFwc2hvdCIgb2YgdGhlIGtleXMuDQo+IA0KPiA+PiBJIGd1ZXNzIHRoYXQg YW5zd2VycyBteSBxdWVzdGlvbiBvbiB0aGUgcHJldmlvdXMgcGF0Y2ggYWJvdXQgdGhlIHVzZQ0K PiA+PiBjYXNlIG9mIHRoYXQgY2xlYXIgbWV0aG9kLiAgSWYgdGhhdCdzIHRoZSBvbmx5IGdvYWwg b2YgdGhlIGNsZWFyIG1ldGhvZCwNCj4gPj4gYW5kIGlmIHRoZXJlIGFyZSBubyB1c2UgY2FzZSBm b3IgdGhlIHVzZXIgdG8gY2FsbCBpdCwgSSB0aGluayBpdCB3b3VsZA0KPiA+PiBiZSBiZXR0ZXIg dG8gaGF2ZSBhbiBpbnRlcm5hbCBmdW5jdGlvbiBpbnN0ZWFkLg0KPiA+Pg0KPiA+PiBDYW4geW91 IGV4cGxhaW4gd2h5IGl0cyBuZWVkZWQgdG8gc3dpdGNoIHRocmVhZHMgYW5kIGNhbGwgY2xlYXIg b24gdGhlDQo+ID4+IHNhbWUgcmVjb3JkaW5nIG9iamVjdCwgYnV0IG9uY2Ugd2l0aCBlYWNoIHRo cmVhZCBzZWxlY3RlZD8gIEkgdGhvdWdodA0KPiA+PiB0aGUgcmVjb3JkaW5nIHdvdWxkIGJlIHBl ci1pbmZlcmlvciwgYW5kIG9uZSBjYWxsIHRvIGNsZWFyIHdvdWxkIGNsZWFyDQo+ID4+IHRoZSBk YXRhIGZvciBhbGwgdGhyZWFkcyBvZiB0aGF0IGluZmVyaW9yLg0KPiA+DQo+ID4gVGhlIHJlY29y ZGluZ3MgYXJlIHBlciB0aHJlYWQgbm90IHBlciBJbmZlcmlvci4gVGhvdWdoIEkgZG9uJ3QgdGhp bmsgeW91DQo+ID4gY2FuIGFjdHVhbGx5IHJlY29yZCBvbmx5IG9uZSB0aHJlYWQgb2YgYW4gaW5m ZXJpb3IsIGFzIEdEQiB3aWxsIGFsd2F5cw0KPiA+IHN0YXJ0IGEgcmVjb3JkaW5nIGZvciBhbGwg dGhyZWFkcywgb3Igc3RhcnQgcmVjb3JkaW5nIGEgbmV3IHRocmVhZCBpZiB0aGUNCj4gPiBleGlz dGluZyB0aHJlYWQgaXMgYWxyZWFkeSByZWNvcmRpbmcuDQo+ID4NCj4gPiBXZSB3YW50IHRvIGFs bG93IGludGVybmFsIHN0YXRlIG9mIGEgZmlsdGVyIGZ1bmN0aW9uIHRvIGJlIG1haW50YWluZWQN Cj4gPiBwZXIgdGhyZWFkLiBIZW5jZSB0aGUgY29weSBhbmQgY2xlYXJpbmcgZm9yIGFsbCB0aHJl YWRzIG9mIHRoZSBpbmZlcmlvci4NCj4gPiBJIGltcGxlbWVudGVkIHRoZSBjbGVhcigpIHBhdGNo IGJhc2VkIG9uIGZlZWRiYWNrIGZyb20gTWFya3VzLg0KPiA+IE5vdGUgdGhhdCB0aGVyZSBpcyBh bHJlYWR5ICJtYWludGVuYW5jZSBidHJhY2UgY2xlYXIiIGluIENMSS4NCj4gPg0KPiA+IFRoYXQg c2FpZCwgeW91IGFyZSByaWdodCwgSSBzaG91bGRuJ3QgY2xlYXIgdGhlIHNhbWUgb2JqZWN0LiBJ biB0aGUgZmlyc3QNCj4gPiB2ZXJzaW9uIG9mIHRoaXMgc2VyaWVzIEkgc3RpbGwgaGFkIGl0IHJp Z2h0LCBidXQgY2hhbmdlZCBpdCBmb3IgVjIuDQo+ID4gSSBjYW4ndCBleGFjdGx5IHJlbWVtYmVy IHdoeS4NCj4gPg0KPiA+IFRoaXMgc3RpbGwgbGVhdmVzIHRoZSBwcm9ibGVtIG9mIG11bHRpcGxl IGluZmVyaW9ycywgdGhhdCB5b3UgYWxzbw0KPiA+IGNvbW1lbnRlZCBvbiBiZWxvdy4NCj4gPiBJ IHRoaW5rIG91ciBhY3R1YWwgaWRlYSB3YXMgdG8gaGF2ZSB0aGlzIGdsb2JhbGx5LCBmb3IgYWxs IGluZmVyaW9ycy4NCj4gPiBCdXQgdGhhdCBtZWFucyBJIHdvdWxkIG5lZWQgdG8gY2xlYXIgYWxs IHRyYWNlcyBmb3IgYWxsIGluZmVyaW9ycyBhYm92ZS4NCj4gPiBOb3QganVzdCBhbGwgdGhyZWFk cyBvZiB0aGUgY3VycmVudCBpbmZlcmlvci4NCj4gPiBUaGF0IGNhbiBlYXNpbHkgYmUgZG9uZSwg dW5sZXNzIG91ciBvdGhlciBkaXNjdXNzaW9ucyBnbyBpbnRvIGEgZGlmZmVyZW50DQo+ID4gZGly ZWN0aW9uLCBhbmQgd2UgbWFrZSB0aGlzIHBlci1pbmZlcmlvci4NCj4gPg0KPiA+IFNvIEkgd291 bGQgY2hhbmdlIHRoaXMgdG8gc29tZXRoaW5nIGxpa2UgdGhpczoNCj4gPg0KPiA+IGRlZiBfY2xl YXJfdHJhY2VzKCk6DQo+ID4gICAgICIiIkhlbHBlciBmdW5jdGlvbiB0byBjbGVhciB0aGUgdHJh Y2Ugb2YgYWxsIHRocmVhZHMuIiIiDQo+ID4gICAgIGN1cnJlbnRfdGhyZWFkID0gZ2RiLnNlbGVj dGVkX3RocmVhZCgpDQo+ID4NCj4gPiAgICAgZm9yIGluZmVyaW9yIGluIGdkYi5pbmZlcmlvcnMo KToNCj4gPiAgICAgICAgIGZvciB0aHJlYWQgaW4gaW5mZXJpb3IudGhyZWFkcygpOg0KPiA+ICAg ICAgICAgICAgIHRocmVhZC5zd2l0Y2goKQ0KPiA+ICAgICAgICAgICAgIHJlY29yZGluZyA9IGdk Yi5jdXJyZW50X3JlY29yZGluZygpDQo+ID4gICAgICAgICAgICAgaWYgcmVjb3JkaW5nIGlzIG5v dCBOb25lOg0KPiA+ICAgICAgICAgICAgICAgICByZWNvcmRpbmcuY2xlYXIoKQ0KPiA+DQo+ID4g ICAgIGN1cnJlbnRfdGhyZWFkLnN3aXRjaCgpDQo+ID4NCj4gPiBOb3Qgc3VyZSBpZiBpdCBpcyB3 b3J0aCBleGl0aW5nIGVhcmx5IHBlciBpbmZlcmlvci4gSSBjb3VsZG4ndCBmaW5kDQo+ID4gYSBz Y2VuYXJpbyB3aGVyZSB5b3UgY2FuIHNlbGVjdGl2ZWx5IHJlY29yZCAob3Igbm90IHJlY29yZCkN Cj4gPiBvbmUgdGhyZWFkIG9mIGEgbXVsdGktdGhyZWFkZWQgaW5mZXJpb3IuDQo+IA0KPiBGb3Ig b3VyIGludGVybmFsIFB5dGhvbiBoZWxwZXIgY29kZSwgaXQncyBmaW5lIHRvIGRvIHRoaW5ncyBi YXNlZCBvbg0KPiBzb21lIGludGVybmFsIGtub3dsZWRnZSBvZiBob3cgR0RCIGlzIGltcGxlbWVu dGVkLiAgU28sIGlmIHdlIGtub3cgd2hhdA0KPiBkb2luZyAiY2xlYXIiIG9uIG9uZSB0aHJlYWQg Y2xlYXJzIHRoZSByZWNvcmRpbmcgZm9yIHRoZSB3aG9sZSBpbmZlcmlvciwNCj4gdGhlbiB3ZSBj YW4gZG8ganVzdCBvbmUgdGhyZWFkIHBlciBpbmZlcmlvci4gIElmIEdEQiBjaGFuZ2VzLCB3ZSBj YW4NCj4gYWRqdXN0IHRoYXQgY29kZSBhdCB0aGUgc2FtZSB0aW1lLg0KPiANCj4gQnV0IHNlZWlu ZyB0aGlzLCBJIHRoaW5rIHRoYXQgZnJvbSBhIFB5dGhvbiB1c2VyIHBvaW50IG9mIHZpZXcsIHRo ZQ0KPiBjbGVhciBtZXRob2QgeW91IGFyZSBwcm9wb3NpbmcgaXMgYSBiaXQgY29uZnVzaW5nLiAg SXQgaXMgY2FsbGVkIG9uIGENCj4gUmVjb3JkIG9iamVjdCwgd2hpY2ggaXMgcGVyLXRocmVhZCwg YnV0IGl0IGNsZWFycyB0aGUgcmVjb3JkaW5nIGZvciBhbGwNCj4gdGhyZWFkcyBvZiB0aGUgaW5m ZXJpb3IuICBUaGlzIHdvdWxkIGJlIHVuZXhwZWN0ZWQsIHVubGVzcyBkb2N1bWVudGVkIGFzDQo+ IHN1Y2ggaW4gdGhlIGRvYyAoYnV0IGV2ZW4gdGhlbiwgaXQgZmVlbHMgYSBiaXQgYXdrd2FyZCku DQo+IA0KPiBUaGUgZG9jIHRhbGtzIGFib3V0ICJ0aGUgY3VycmVudCByZWNvcmRpbmciIGhlcmUg YW5kIHRoZXJlLCBidXQgaXQncw0KPiB1bmNsZWFyIHdoYXQgdGhlIHNjb3BlIG9mIHRoZSByZWNv cmRpbmcgaXMuDQoNCkkgYWdyZWUgb24gdGhlIGRvYyBwYXJ0LiBJdCB3b3VsZCBpbmRlZWQgYmUg bmljZSB0byB3cml0ZSB0aGlzIGRvd24uDQoNClRob3VnaCwgSSB0aGluayB5b3UgbWlzdW5kZXJz dG9vZCBzb21lIHRoaW5ncyAob3IgbWF5YmUgSSBkaWQpLg0KR2RiLmN1cnJlbnRfcmVjb3JkaW5n KCkuY2xlYXIoKSwgYXMgYWRkZWQgaW4gcGF0Y2ggNSwgZG9lcyBjbGVhciBvbiBhIA0KcGVyLXRo cmVhZCBiYXNpcy4gTm90IG9uIGEgcGVyIGluZmVyaW9yIGJhc2lzIGFzIHlvdSB3cml0ZS4NCkJ1 dCBtYXliZSB5b3UgbWVhbnQgX2NsZWFyX3RyYWNlcygpIGhlcmU/IFRoaXMgaXMgc3VwcG9zZWQg dG8gYmUNCmFuIGludGVybmFsIGZ1bmN0aW9uLCBhcyB0aGUgbGVhZGluZyB1bmRlcnNjb3JlIHN1 Z2dlc3RzLiBJdCBpbmRlZWQNCmRvZXMgY2xlYXIgYWxsIHJlY29yZGluZ3MgZm9yIGFsbCB0aHJl YWRzLiBBcyB0aGF0IGlzIG5lZWRlZCBmb3IgcHR3cml0ZSwNCndoaWNoIGlzIHRoZSBvbmx5IGlu dGVuZGVkIHVzZSBjYXNlIG9mIHRoaXMgaW50ZXJuYWwgZnVuY3Rpb24uDQoNClNvIEkgZG9uJ3Qg cXVpdGUgc2VlIHdoYXQgd291bGQgYmUgdW5leHBlY3RlZC4NCg0KPiA+Pj4gKw0KPiA+Pj4gKyAg ICAgICAgY3VycmVudF90aHJlYWQuc3dpdGNoKCkNCj4gPj4+ICsNCj4gPj4+ICsNCj4gPj4+ICtk ZWYgcmVnaXN0ZXJfZmlsdGVyKGZpbHRlcl8pOg0KPiA+Pj4gKyAgICAiIiJSZWdpc3RlciB0aGUg cHR3cml0ZSBmaWx0ZXIgZnVuY3Rpb24uIiIiDQo+ID4+PiArICAgIGlmIGZpbHRlcl8gaXMgbm90 IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShmaWx0ZXJfKToNCj4gPj4+ICsgICAgICAgIHJhaXNlIFR5 cGVFcnJvcigiVGhlIGZpbHRlciBtdXN0IGJlIGNhbGxhYmxlIG9yICdOb25lJy4iKQ0KPiA+Pj4g Kw0KPiA+Pj4gKyAgICAjIENsZWFyIHRoZSB0cmFjZXMgb2YgYWxsIHRocmVhZHMgdG8gZm9yY2Ug cmUtZGVjb2Rpbmcgd2l0aA0KPiA+Pj4gKyAgICAjIHRoZSBuZXcgZmlsdGVyLg0KPiA+Pj4gKyAg ICB0aHJlYWRfbGlzdCA9IGdkYi5zZWxlY3RlZF9pbmZlcmlvcigpLnRocmVhZHMoKQ0KPiA+Pj4g KyAgICBfY2xlYXJfdHJhY2VzKHRocmVhZF9saXN0KQ0KPiA+Pg0KPiA+PiBDb3VsZCB3ZSBhdm9p ZCByZWx5aW5nIG9uIHRoZSBzZWxlY3RlZCBpbmZlcmlvcj8gIEZvciBpbnN0YW5jZSwgaXQgY291 bGQNCj4gPj4gYmUgYSBtZXRob2QgaW4gSW5mZXJpb3I6DQo+ID4+DQo+ID4+ICAgaW5mLnJlZ2lz dGVyX3B0d3JpdGVfZmlsdGVyKGYpDQo+ID4+DQo+ID4+IG9yIHBhc3MgYW4gaW5mZXJpb3IgdG8g dGhpcyBmdW5jdGlvbjoNCj4gPj4NCj4gPj4gICBwdHdyaXRlLnJlZ2lzdGVyX2ZpbHRlcihpbmYs IGYpDQo+ID4+DQo+ID4+IEkgZG9uJ3QgbGlrZSBoYXZpbmcgdG8gc3dpdGNoIGluZmVyaW9yIGFs bCB0aGUgdGltZSBpbiBHREIgdG8gZG8NCj4gPj4gcGVyLWluZmVyaW9yIHN0dWZmLCBJIGRvbid0 IHdhbnQgdG8gaW1wb3NlIHRoYXQgdG8gb3VyIFB5dGhvbiB1c2VycyA6KS4NCj4gPg0KPiA+IEkg Z2V0IHdoZXJlIHlvdSBhcmUgY29taW5nIGZyb20uIFRob3VnaCBvbmUgY291bGQgYXJndWUgdGhh dCB0aGlzIGlzDQo+IGFscmVhZHkNCj4gPiB0aGUgY2FzZSB0b2RheS4gU3RhcnRpbmcgcmVjb3Jk aW5ncyBpcyBhbHJlYWR5IHBlciBpbmZlcmlvci4NCj4gPiBJZiB3ZSBoYXZlIHR3byBpbmZlcmlv cnMgYW5kIHN0YXJ0IHJlY29yZGluZyBvbmUgd2UgZG9uJ3QgYXV0b21hdGljYWxseQ0KPiA+IHJl Y29yZCB0aGUgc2Vjb25kIG9uZS4gQW5kIGlmIHdlIGhhdmUgb25lIGluZmVyaW9yIHRoYXQgaXMg YmVpbmcgcmVjb3JkZWQsDQo+ID4gYW5kIGFkZCBhIHNlY29uZCwgdGhlIHNlY29uZCBhbHNvIHdv bid0IGJlIHJlY29yZGVkLiBZb3UgYWxzbyBkb24ndCBoYXZlDQo+ID4gYW55IG9wdGlvbiwgYXBh cnQgZnJvbSBzd2l0Y2hpbmcgaW5mZXJpb3JzIGFuZCBzdGFydGluZyB0aGUgcmVjb3JkaW5nDQo+ IG1hbnVhbGx5Lg0KPiANCj4gSSB0aGluayBpdCdzIGEgZmxhdyBpbiB0aGUgY3VycmVudCBBUEkg dGhhdCB5b3UgbmVlZCB0byBzd2l0Y2ggY3VycmVudA0KPiBpbmZlcmlvciB0byBzdGFydCByZWNv cmRpbmcgb24gYSBzcGVjaWZpYyBpbmZlcmlvci4gIEFuZCBhbHNvLCBpdCdzIGENCj4gZmxhdyBp biB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0IGl0IGRvZXNuJ3Qgc3RhdGUgdGhhdCB0aGUgcmVjb3Jk aW5nIGlzDQo+IHN0YXJ0ZWQgZm9yIHRoZSBjdXJyZW50IGluZmVyaW9yLiAgVGhlIHVzZXIgaXMg bGVmdCB0byBndWVzcyAob3IgbXVzdA0KPiBleHBlcmltZW50LCBvciByZWFkIHRoZSBHREIgc291 cmNlIGNvZGUsIG9yIGhhdmUgYmFkIHN1cnByaXNlcykgYWJvdXQNCj4gd2hhdCBoYXBwZW5zIHdo ZW4geW91IGhhdmUgbXVsdGlwbGUgaW5mZXJpb3JzLg0KDQpJIGFncmVlLg0KDQo+IEJ1dCBpZiBJ IHVuZGVyc3Rvb2QgeW91IGNsZWFybHksIHJlZ2lzdGVyX2ZpbHRlciBpcyByZWFsbHkgbWVhbnQg dG8NCj4gaW5zdGFsbCBhIGdsb2JhbCBmaWx0ZXIgKHZhbGlkIGZvciBhbGwgaW5mZXJpb3JzLCBj dXJyZW50IGFuZCBmdXR1cmUpLg0KPiBBbmQgdGhlIGNhbGwgdG8gX2NsZWFyX3RyYWNlcyBpcyBt ZWFudCB0byBjbGVhciBhbGwgdHJhY2VzIG9mIGFsbA0KPiBpbmZlcmlvcnMuICBJbiB0aGF0IGNh c2UsIGl0J3MgZmluZSBmb3IgcmVnaXN0ZXJfcHR3cml0ZV9maWx0ZXIgdG8gYmUNCj4gZ2xvYmFs Lg0KDQpUaGF0IGlzIHJpZ2h0Lg0KDQo+ID4gRm9yIHRocmVhZHMgdGhhdCBpcyBkaWZmZXJlbnQu IFNwYXduaW5nIHRocmVhZHMgd2lsbCBhbHNvIGJlIHJlY29yZGVkDQo+ID4gYXV0b21hdGljYWxs eS4gQW5kIGlmIHlvdSBoYXZlIHR3byB0aHJlYWRzIGFuZCBzdGFydCByZWNvcmRpbmcsIGJvdGgN Cj4gPiB3aWxsIGJlIHJlY29yZGVkLg0KPiA+DQo+ID4gV2hhdCB5b3Ugc3VnZ2VzdCBpcyBkZWZp bml0ZWx5IHBvc3NpYmxlLCB5ZWFycyBhZ28gSSBoYWQgYSB2ZXJzaW9uIHRoYXQNCj4gPiB3b3Vs ZCBhbGxvdyByZWdpc3RlcmluZyBkaWZmZXJlbnQgZmlsdGVycyBwZXIgdGhyZWFkLCBidXQgd2Ug ZGVjaWRlZCBhZ2FpbnN0DQo+ID4gdGhhdC4NCj4gDQo+IEkgZG9uJ3QgdGhpbmsgdGhhdCBpcyB3 aGF0IEkgc3VnZ2VzdGVkLiAgSWYgeW91ciBleHBlcmllbmNlIHN1Z2dlc3RzDQo+IHRoYXQgaGF2 aW5nIGp1c3Qgb25lIGdsb2JhbCBmaWx0ZXIgaXMgZW5vdWdoLCBJIGNhbid0IGFyZ3VlIHdpdGgg dGhhdC4NCj4gUGx1cywgaXQgd291bGQgcHJvYmFibHkgYmUgcG9zc2libGUgdG8gaW1wbGVtZW50 IHBlci1pbmZlcmlvciBvcg0KPiBwZXItdGhyZWFkIGZpbHRlcnMgaW4gdGhlIGZ1dHVyZSBpZiBu ZWVkZWQsIHRoYXQgd291bGQgdGFrZSBwcmVjZWRlbmNlDQo+IG9uIHRoZSBnbG9iYWwgZmlsdGVy Lg0KPiANCj4gTXkgcG9pbnQgaXMganVzdCB0aGF0IGFuIEFQSSB0aGF0IHJlcXVpcmVzIHRoZSB1 c2VyIHRvIHN3aXRjaCBjb250ZXh0LA0KPiB0aGVuIG1ha2UgYW4gQVBJIGNhbGwsIHRoZW4gcmVz dG9yZSB0aGUgb3JpZ2luYWwgY29udGV4dCwgaXMgYmFkLiAgSXQncw0KPiB1bmNsZWFyIGFuZCBl cnJvciBwcm9uZS4gIEkga25vdyB3ZSBoYXZlIHNvbWUgb2YgdGhhdCBhbHJlYWR5LCBidXQgSQ0K PiB3b3VsZCBsaWtlIHRvIGF2b2lkIGFkZGluZyBtb3JlLg0KDQpJIGFnYWluIHNlZSB5b3VyIHBv aW50cy4gQWJvdmUgeW91IHdyb3RlOg0KDQpTaW1vbj4gSW4gdGhhdCBjYXNlLCBpdCdzIGZpbmUg Zm9yIHJlZ2lzdGVyX3B0d3JpdGVfZmlsdGVyIHRvIGJlDQpTaW1vbj4gZ2xvYmFsLg0KDQpTbyBJ IHdvbid0IGNoYW5nZSBhbnl0aGluZyBoZXJlIG5vdy4gRXh0ZW5kaW5nIGl0IGluIHRoZSBmdXR1 cmUgc2hvdWxkIGJlDQpzaW1wbGUsIEkgYWdyZWUuDQoNCj4gPj4+ICsNCj4gPj4+ICsNCj4gPj4+ ICtkZWYgZ2V0X2ZpbHRlcigpOg0KPiA+Pj4gKyAgICAiIiJSZXR1cm5zIHRoZSBmaWx0ZXJzIG9m IHRoZSBjdXJyZW50IHRocmVhZC4iIiINCj4gPj4+ICsgICAgIyBUaGUga2V5IGlzIG9mIHRoaXMg Zm9ybWF0IHRvIGVuYWJsZSBhbiBwZXItaW5mZXJpb3IgY2xlYW51cCB3aGVuIGFuDQo+ID4+PiAr ICAgICMgaW5mZXJpb3IgZXhpdHMuDQo+ID4+PiArICAgIGtleSA9DQo+IGYie2dkYi5zZWxlY3Rl ZF9pbmZlcmlvcigpLnBpZH0ue2dkYi5zZWxlY3RlZF90aHJlYWQoKS5wdGlkWzFdfSINCj4gPj4N Cj4gPj4gSSBkb24ndCB0aGluayB3ZSBjYW4gdXNlIGYtc3RyaW5ncywgd2UgY2xhaW0gdG8gc3Vw cG9ydCBiYWNrIHRvIFB5dGhvbg0KPiA+PiAzLjQuDQo+ID4NCj4gPiBEaWQgd2Ugd3JpdGUgZG93 biB3aGF0IHdlIHN1cHBvcnQgY2xlYXJseT8gVGhlIGdkYi9SRUFETUUgYWN0dWFsbHkNCj4gc2F5 cyAzLjIuDQo+IA0KPiBTb3JyeSwgSSBzYWlkIDMuNCBiZWNhdXNlIEkgcmVtZW1iZXJlZCBzZW5k aW5nIGEgcGF0Y2ggdGhhdCByYWlzZWQgdGhlDQo+IG1pbmltdW0gbGV2ZWwgdG8gMy40LiAgQnV0 IHRoYXQgcGF0Y2ggd2FzIHJlamVjdGVkLCBzbyBpdCdzIHBsYXVzaWJsZSB3ZQ0KPiBzdGlsbCBz dXBwb3J0IDMuMjoNCj4gDQo+ICAgaHR0cHM6Ly9pbmJveC5zb3VyY2V3YXJlLm9yZy9nZGItcGF0 Y2hlcy8yMDIyMDEwNzE1MjkyMS4yODU4OTA5LTMtDQo+IHNpbW9uLm1hcmNoaUBwb2x5bXRsLmNh LyN0DQo+IA0KPiA+IEFuZCBJIHRoaW5rIGl0IG1pZ2h0IGJlIGdvb2QgdG8gbWVudGlvbiB0aGlz IGhlcmU6DQo+ID4gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9JbnRlcm5hbHMlMjBH REItUHl0aG9uLUNvZGluZy0NCj4gU3RhbmRhcmRzDQo+IA0KPiBGZWVsIGZyZWUgdG8gZWRpdCB0 aGF0IHBhZ2UuICBIb3dldmVyLCB0aGUgcmlzayBvZiBoYXZpbmcgaXQgZG9jdW1lbnRlZA0KPiBh dCBtdWx0aXBsZSBwbGFjZXMgaXMgdGhhdCB3ZSBjYW4gZWFzaWx5IGZvcmdldCB0byB1cGRhdGUg b25lIHNwb3QuDQo+IE1heWJlIHB1dCBhIGxpbmsgdG8gdGhlIFJFQURNRSwgYW5kIHNheSAibWFr ZSBzdXJlIHlvdXIgY2hhbmdlcyBhcmUNCj4gY29tcGF0aWJsZSB3aXRoIHRoZSBtaW5pbXVtIFB5 dGhvbiB2ZXJzaW9uIG1lbnRpb25lZCBpbiB0aGUgUkVBRE1FIj8NCg0KR29vZCBwb2ludCwgeWVz IGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBpcyBtdWNoIGJldHRlci4NCkkgYW0gbm8gbG9uZ2Vy IHRoaW5raW5nIGl0IGlzIGEgbXVzdCBhbmQgSSBkb24ndCB0aGluayBJIGNhbiBlZGl0IGl0IGFu eXdheS4NCg0KPiA+IEl0IHNlZW1zIGxpa2UgdGhlcmUgYXJlIGFscmVhZHkgc29tZSBmIHN0cmlu Z3MgaW4gdGhlIG1hc3RlciBicmFuY2g6DQo+ID4NCj4gPiAuL2xpYi9nZGIvZGFwL2lvLnB5OjYz OiAgICAgICAgICAgIGhlYWRlciA9IGYiQ29udGVudC1MZW5ndGg6DQo+IHtsZW4oYm9keV9ieXRl cyl9XHJcblxyXG4iDQo+ID4gLi9saWIvZ2RiL2RhcC9sYXVuY2gucHk6Mjk6ICAgICAgICBzZW5k X2dkYihmImZpbGUge19wcm9ncmFtfSIpDQo+ID4gLi9saWIvZ2RiL2RhcC9zdGF0ZS5weToyNTog ICAgICAgIGV4ZWNfYW5kX2xvZyhmInRocmVhZCB7dGhyZWFkX2lkfSIpDQo+ID4NCj4gPiBJIGp1 c3QgZGlkIGEgcXVpY2sgZ3JlcCBhbmQgZGlkbid0IGxvb2sgYXQgYWxsIG9jY2FzaW9ucy4NCj4g Pg0KPiA+IFRoYXQgc2FpZCwgSSB3aWxsIHJlbW92ZSBmIHN0cmluZ3MuDQo+IA0KPiBQcm9iYWJs eSBlcnJvbmVvdXMgdGhlbi4gIFNpbmNlIHRoaXMgaXMgc3BlY2lmaWNhbGx5IGluIERBUCBjb2Rl LCB3b3VsZA0KPiBzb21lb25lIHVzaW5nIFB5dGhvbiAzLjQgaGl0IGFuIGVycm9yIHdoZW4gX25v dF8gdXNpbmcgREFQPyAgSSB3b3VsZA0KPiBndWVzcyBub3QsIHByb2JhYmx5IHdoeSB0aGlzIHdh c24ndCBub3RpY2VkLiAgT3IsIG5vYm9keSB0ZXN0cyB3aXRoDQo+IG9sZGVyIFB5dGhvbiB2ZXJz aW9ucy4uLg0KPiANCj4gPj4gWW91IGNvdWxkIHBlcmhhcHMgYWxzbyBwYXNzIHRoZSBrZXkgb3Ig dGhlIHBpZCArIGx3cCBmcm9tIHRoZSBDKysgY29kZQ0KPiA+PiAodGFrZW4gZnJvbSBpbmZlcmlv cl9wdGlkKS4gIENhbGxpbmcgc2VsZWN0ZWRfaW5mZXJpb3IgdHdpY2UgaXMganVzdA0KPiA+PiBt b3JlIGNodXJuIHRvIGdldCB0aGUgc2FtZSBpbmZvLg0KPiA+DQo+ID4gVGhpcyBpc24ndCBzdXBw b3NlZCB0byBiZSBsaW1pdGVkIHRvIGJlIGNhbGxlZCBmcm9tIEMrKyBjb2RlLg0KPiANCj4gT2ss IEkgZGlkbid0IGNvbnNpZGVyIHRoYXQuDQo+IA0KPiBPbmUgdGhpbmcgdG8gbm90ZSBpcyB0aGF0 IHRoZXJlIGlzbid0IGFsd2F5cyBhIHNlbGVjdGVkIHRocmVhZCwgc28geW91DQo+IG1pZ2h0IHdh bnQgdG8gaGFuZGxlIHRoYXQgYXBwcm9wcmlhdGVseS4NCj4gDQo+ID4gQW5kIEkgdGhpbmsgaGF2 aW5nIGl0IHdpdGhvdXQgYW55IGFyZ3VtZW50cyBpcyBhIGJpdCBlYXNpZXIgdG8gdXNlIGZyb20N Cj4gcHl0aG9uLg0KPiA+IEkgY2hhbmdlZCBpdCBhY2NvcmRpbmcgdG8geW91ciBwcmlvciBzdWdn ZXN0aW9ucyBhbmQgbWFkZSBpdCBhIHR1cGxlLg0KPiA+IEJ1dCBJIGd1ZXNzIHRoaXMgYWxzbyBk ZXBlbmRzIG9uIG91ciBwZXItaW5mZXJpb3IgZGlzY3Vzc2lvbiBhYm92ZS4NCj4gDQo+IEluZGVl ZC4gIEkgaGFkIG5vdCBub3RpY2VkIHByZXZpb3VzbHksIGJ1dCB3aGF0IEkgc2FpZCBlYXJsaWVy IGlzIHRydWUNCj4gZm9yIGdldF9maWx0ZXIgYXMgd2VsbC4gIEkgd291bGQgbXVjaCByYXRoZXIg c2VlIGdldF9maWx0ZXIgdGFrZSBhDQo+IHRocmVhZCBhcyBhcmd1bWVudCwgdGhhbiByZWx5aW5n IG9uIHRoZSBzZWxlY3RlZCB0aHJlYWQuDQoNCk9rYXksIEkgd2lsbCBhZGQgdGhpcy4gUHJvYmFi bHkgYXMgYW4gb3B0aW9uYWwgYXJndW1lbnQsIGFzIEkgdGhpbmsNCnRoYXQgbWFrZXMgaXQgbXVj aCBlYXNpZXIgZm9yIHNpbmdsZSB0aHJlYWRlZCB1c2Vycy4NCg0KPiA+DQo+ID4+PiArDQo+ID4+ PiArICAgICMgQ3JlYXRlIGEgbmV3IGZpbHRlciBmb3IgbmV3IHRocmVhZHMuDQo+ID4+PiArICAg IGlmIGtleSBub3QgaW4gX3B0d3JpdGVfZmlsdGVyLmtleXMoKToNCj4gPj4+ICsgICAgICAgIF9w dHdyaXRlX2ZpbHRlcltrZXldID0gZGVlcGNvcHkoX3B0d3JpdGVfZmlsdGVyWyJnbG9iYWwiXSkN Cj4gPj4NCj4gPj4gV2h5IGlzIHRoZSBkZWVwY29weSBuZWVkZWQuICBCZWNhdXNlIHVzZXJzIGNv dWxkIHJlZ2lzdGVyIGEgY29tcGxleA0KPiA+PiBvYmplY3Qgd2l0aCBhIF9fY2FsbF9fIG1ldGhv ZCwgaW4gd2hpY2ggY2FzZSBhIHNpbXBsZSBjb3B5IHdvdWxkIG5vdCBkbw0KPiA+PiB0aGUgc2Ft ZSBhcyBkZWVwY29weT8gIEp1c3Qgd29uZGVyaW5nIGlmIHRoYXQncyB3aGF0IHVzZXJzIHdvdWxk IGV4cGVjdC4NCj4gPg0KPiA+IFdlIHdhbnRlZCB0byBtYWludGFpbiBpbnRlcm5hbCBzdGF0ZSBw ZXIgdGhyZWFkIGluIGFuIGVhc3kgZmFzaGlvbi4NCj4gPiBBcyB5b3UgYWxyZWFkeSBzYXcgaW4g UGF0Y2ggMTAuDQo+IA0KPiBJIHVuZGVyc3RhbmQgdGhhdCB5b3Ugd2FudCB0byBoYXZlIG9uZSBj b3B5IG9mIHRoZSBmaWx0ZXIgcGVyIHRocmVhZC4NCj4gDQo+IEJ1dCBkb2luZyBhIGNvcHkgc2Vl bXMgbGlrZSBhIHN0cmFuZ2UgaW5zdGFudGlhdGlvbiBzdHJhdGVneS4gIFRoZQ0KPiAiZ2xvYmFs IiBmaWx0ZXIgaXNuJ3QgZXZlciB1c2VkLCByaWdodD8gIEl0IG9ubHkgc2VydmVzIHRvIG1ha2Ug Y29waWVzPw0KPiBJIHRoaW5rIGEgbW9yZSBjb21tb24gcGF0dGVybiB3b3VsZCBiZSBmb3IgdGhl IHVzZXIgdG8gcmVnaXN0ZXIgYQ0KPiBmYWN0b3J5IGZ1bmN0aW9uIChyZWFsbHksIG55IGNhbGxh YmxlIHRoYXQgZml0cyB0aGUgYmlsbCkgd2hpY2ggd291bGQgYmUNCj4gY2FsbGVkIHdoZW5ldmVy IHdlIG5lZWQgdG8gY3JlYXRlIGFuIGluc3RhbmNlLg0KDQpNaG0sIEkgdGhpbmsgdGhhdCB3b3Vs ZCBtYWtlIHRoaXMgYSBiaXQgdG9vIGNvbXBsZXggZm9yIHVzZXJzLg0KSSBkb24ndCB0aGluayB0 aGV5IHdhbnQgdG8gY2FyZSBhYm91dCBwcm92aWRpbmcgYSBnZW5lcmF0b3IgYXMgd2VsbA0KdGhh dCByZXR1cm5zIGEgY2FsbGFibGUuIEkgZG9uJ3Qgc2VlIGFueSBuZXcgZmVhdHVyZSB0aGF0DQpp cyBiZWluZyB1bmxvY2tlZCB3aXRoIHRoYXQsIGp1c3QgbW9yZSB0YXNrcyBmb3IgdGhlIHVzZXIu DQoNCkFuZCBpZiBpdCBkb2VzIGF0IHNvbWUgcG9pbnQsIHRoZSBjb2RlIHNob3VsZCBiZSBzdHJh aWdodGZvcndhcmQgdG8NCmV4dGVuZCBpbiB0aGUgZnV0dXJlLg0KDQo+ID4+PiArew0KPiA+Pj4g KyAgc3RkOjpzdHJpbmcgcmVzdWx0Ow0KPiA+Pj4gKw0KPiA+Pj4gKyAgaWYgKChQeU9iamVjdCAq KSBwdHdfZmlsdGVyID09IG51bGxwdHIpDQo+ID4+PiArICAgIGVycm9yIChfKCJObyB2YWxpZCBw dHdyaXRlIGZpbHRlci4iKSk7DQo+ID4+DQo+ID4+IEkgdGhpbmsgdGhpcyBjYW4gb25seSBoYXBw ZW4gaWYgZ2V0X3B0d3JpdGVfZmlsdGVyIGhhcyBmYWlsZWQsIGluDQo+ID4+IGdkYnB5X2xvYWRf cHR3cml0ZV9maWx0ZXIuICBTbyBwZXJoYXBzIGdkYnB5X2xvYWRfcHR3cml0ZV9maWx0ZXIgY2Fu IGJlDQo+ID4+IHdyaXR0ZW4gYXM6DQo+ID4+DQo+ID4+ICAgICBidGluZm8tPnB0d19jb250ZXh0 ID0gZ2V0X3B0d3JpdGVfZmlsdGVyICgpOw0KPiA+PiAgICAgaWYgKGJ0aW5mby0+cHR3X2NvbnRl eHQgIT0gbnVsbHB0cikNCj4gPj4gICAgICAgYnRpbmZvLT5wdHdfY2FsbGJhY2tfZnVuID0gJnJl Y3B5X2NhbGxfZmlsdGVyOw0KPiA+Pg0KPiA+PiAuLi4gc3VjaCB0aGF0IHJlY3B5X2NhbGxfZmls dGVyIGlzIG9ubHkgaW5zdGFsbGVkIHdoZW4gdGhlcmUgaXMNCj4gPj4gc29tZXRoaW5nIGluIHB0 d19jb250ZXh0LiAgcmVjcHlfY2FsbF9maWx0ZXIgY291bGQgdGhlbiBkbzoNCj4gPj4NCj4gPj4g ICBnZGJfYXNzZXJ0IChwdHdfZmlsdGVyICE9IG51bGxwdHIpOw0KPiA+DQo+ID4gSSBndWVzcyBJ IGNvdWxkIGRvIHRoYXQuIFlldCB3ZSBjaGVjayBwdHdfY2FsbGJhY2tfZnVuIGJlZm9yZSBjYWxs aW5nIGl0DQo+ID4gaW4gYnRyYWNlLmMuIFNlZSBwYXRjaCAxMC4gU28gdGhhdCBhbG9uZSB3b3Vs ZCBhY3R1YWxseSBoaWRlIHByb2JsZW1zIHRvIHRoZQ0KPiB1c2VyLg0KPiA+IEFuZCBqdXN0IG5v dCBwcmludCBhbnkgcHR3cml0ZSBzdHJpbmcgc2lsZW50bHkuIEV2ZW4gaWYgdGhlIHVzZXIgZ2F2 ZSBhIGN1c3RvbQ0KPiA+IGxpc3RlbmVyIGZ1bmN0aW9uLiBTbyB3ZSB3b3VsZCBhbHNvIG5lZWQg dG8gcmVtb3ZlIHRoYXQgY2hlY2suDQo+ID4NCj4gPiBJIGFtIGFsc28gd29uZGVyaW5nIHdoYXQg dGhlIGFkdmFudGFnZSB5b3Ugc2VlIGlzLg0KPiA+IFRoYXQgd2UgaGF2ZSBhbiBhc3NlcnQgaW5z dGVhZCBvZiBhbiBlcnJvcj8gSSBndWVzcyBJIGNvdWxkIGRvIHRoYXQgZXZlbg0KPiA+IHdpdGhv dXQgdGhlIGNoYW5nZSBpbiBnZGJweV9sb2FkX3B0d3JpdGVfZmlsdGVyLg0KPiANCj4gSnVzdCB0 cnlpbmcgdG8gY2hvb3NlIHRoZSByaWdodCB0b29sIGZvciB0aGUgam9iLCB3aGljaCBpbiB0dXJu cyBoZWxwcw0KPiBidWlsZCB0aGUgcmlnaHQgbWVudGFsIG1vZGVsLiAgZXJyb3IoKSBjYWxscyBh cmUgZm9yIGVycm9ycyB0aGF0IGFyZW4ndA0KPiBHREIncyBmYXVsdCwgZXJyb3JzIHRoYXQgYXJl IG5vdCB0aGUgcmVzdWx0IG9mIGEgYnVnIGluIEdEQi4gIGdkYl9hc3NlcnQNCj4gaXMgdG8gY2F0 Y2ggdGhpbmdzIHByb2dyYW1taW5nIGVycm9ycyBpbiBHREIuDQo+IA0KPiBJZiBJIHNlZToNCj4g DQo+ICAgZ2RiX2Fzc2VydCAoZm9vID09IG51bGxwdHIpOw0KPiANCj4gSSBjb25jbHVkZSB0aGF0 IHRoZXJlIHNob3VsZCBiZSBub3Qgc2l0dWF0aW9uIHdoZXJlIGZvbyBpcyBudWxscHRyLiAgSWYN Cj4gSSBzZWU6DQo+IA0KPiAgIGlmIChmb28gLS0gbnVsbHB0cikNCj4gICAgIGVycm9yICguLi4p DQo+IA0KPiBUaGVuIEkgY29uY2x1ZGUgdGhlcmUgYXJlIHNvbWUgdmFsaWQgc2l0dWF0aW9ucyB3 aGVyZSBmb28gaXMgbnVsbHB0cg0KPiAoYW5kIHRoZW4gd2UgaGF2ZSB0byB3b3JyeSBhYm91dCBo b3cgdGhleSBhcmUgaGFuZGxlZCkuDQoNCkkgd2lsbCBjaGFuZ2UgdGhlIGVycm9yIGluIHJlY3B5 X2NhbGxfZmlsdGVyIHRvIGFuIGFzc2VydC4NCkkgc3RpbGwgZG9uJ3Qgc2VlIHRoZSBwb2ludCBv ZiBub3QgcmVnaXN0ZXJpbmcgcHR3X2NhbGxiYWNrX2Z1bigpLg0KSSBmZWFyIHRoYXQgd2lsbCBq dXN0IGhpZGUgdGhpbmdzLg0KQW55d2F5LCBJIHdpbGwgbG9vayBhdCB0aGlzIGFnYWluIHdoZW4g aW1wbGVtZW50aW5nIHRoZSBwcmludGluZyBpbiBDKysNCnRoYXQgeW91IHN1Z2dlc3RlZCBmb3Ig YnVpbGRzIHdpdGhvdXQgUHl0aG9uLiBJIHRoaW5rIHRoZSBwaWN0dXJlDQptaWdodCBiZSBjbGVh cmVyIG9uY2UgSSBoYXZlIHRoYXQuDQoNCj4gPj4+IGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5 dGhvbi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9weXRob24tDQo+IGludGVybmFsLmgNCj4gPj4+ IGluZGV4IDI1OGY1YzQyNTM3Li5jMjEyMzJjMDdkYyAxMDA2NDQNCj4gPj4+IC0tLSBhL2dkYi9w eXRob24vcHl0aG9uLWludGVybmFsLmgNCj4gPj4+ICsrKyBiL2dkYi9weXRob24vcHl0aG9uLWlu dGVybmFsLmgNCj4gPj4+IEBAIC0zNzYsNiArMzc2LDkgQEAgZXh0ZXJuIGVudW0gZXh0X2xhbmdf cmMNCj4gPj4gZ2RicHlfYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyDQo+ID4+PiAgICAgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsDQo+ID4+PiAgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsDQo+ID4+PiAgICAgY29uc3Qgc3RydWN0IGxhbmd1 YWdlX2RlZm4gKmxhbmd1YWdlKTsNCj4gPj4+ICtleHRlcm4gdm9pZCBnZGJweV9sb2FkX3B0d3Jp dGVfZmlsdGVyDQo+ID4+PiArICAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZu ICpleHRsYW5nLA0KPiA+Pj4gKyAgIHN0cnVjdCBidHJhY2VfdGhyZWFkX2luZm8gKmJ0aW5mbyk7 DQo+ID4+DQo+ID4+IENhbiB0aGlzIGRlY2xhcmF0aW9uIGJlIGluIHB5LXJlY29yZC1idHJhY2Uu aD8gIEkgcmVhbGx5IGRvbid0IHNlZSB3aHkNCj4gPj4gYWxsIHRoZSBkZWNsYXJhdGlvbnMgYXJl IHN0dWZmZWQgaW50byBweXRob24uaC4gIEFsc28sIHBsZWFzZSBtb3ZlIHRoZQ0KPiA+PiBjb21t ZW50IHRvIHRoZSBkZWNsYXJhdGlvbiwgYW5kIHB1dCB0aGUgYXBwcm9wcmlhdGUgLyogU2VlIC4u LiAqLw0KPiA+PiBjb21tZW50IG9uIHRoZSBkZWZpbml0aW9uLg0KPiA+DQo+ID4gSSBkb24ndCB0 aGluayBzby4gSSBtb2RlbGxlZCB0aGlzIGFmdGVyIHRoZSBvdGhlciBleHRlbnNpb24gbGFuZ3Vh Z2UNCj4gaW50ZXJmYWNlcy4NCj4gPiBUaGVzZSBhcmUgYWxzbyBhbGwgaW4gaGVyZSwgd2l0aG91 dCBhbnkgY29tbWVudC4gVGhpcyBmdW5jdGlvbiBpcyBiZWluZw0KPiBjYWxsZWQNCj4gPiB2aWEg YXBwbHlfZXh0X2xhbmdfcHR3cml0ZV9maWx0ZXIuIFdoaWNoIGlzIGNhbGxlZCBmcm9tIGJ0cmFj ZS5jLg0KPiA+IEFzIGZhciBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoYXQgaXMgaG93IHlvdSBpbnRl cmFjdCB3aXRoIHRoZSBweXRob24gbGF5ZXIuDQo+ID4gVG8gYWxzbyBhbGxvdyB0aGUgc2FtZSB0 aGluZ3MgdG8gYmUgZG9uZSBpbiBndWlsZSwgaWYgc29tZW9uZSBmZWVscyBsaWtlIGl0Lg0KPiA+ IFBsZWFzZSB0ZWxsIG1lIGlmIEkgbWlzdW5kZXJzdG9vZCB0aGUgYXJjaGl0ZWN0dXJlLg0KPiAN Cj4gSSB0aGluayB5b3UncmUgcmlnaHQgdGhhdCBldmVyeXRoaW5nIGdvZXMgdGhyb3VnaCBweXRo b24vcHl0aG9uLmguICBJDQo+IGRvbid0IGtub3cgd2h5IHRob3VnaCwgd2Ugd2UgY2FuJ3QgaGF2 ZSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gdmFyaW91cyAuaA0KPiBmaWxlcy4gIFBlcmhhcHMgaXQn cyBlYXNpZXIgdG8gbWFuYWdlIGZvciB3aGVuIGJ1aWxkaW5nIHdpdGggUHl0aG9uDQo+IGRpc2Fi bGVkLCBJIGRvbid0IGtub3cuICBJbiBhbnkgY2FzZSwgbm90IHJlYWxseSBpbXBvcnRhbnQgcmln aHQgbm93LA0KPiBzb3JyeSBmb3IgYnJpbmdpbmcgdGhhdCB1cC4NCg0KTm8gd29ycmllcywgSSBh cHByZWNpYXRlIHRoZSByZXZpZXchDQoNClRoYW5rcywNCkZlbGl4DQpJbnRlbCBEZXV0c2NobGFu ZCBHbWJIClJlZ2lzdGVyZWQgQWRkcmVzczogQW0gQ2FtcGVvbiAxMCwgODU1NzkgTmV1YmliZXJn LCBHZXJtYW55ClRlbDogKzQ5IDg5IDk5IDg4NTMtMCwgd3d3LmludGVsLmRlIDxodHRwOi8vd3d3 LmludGVsLmRlPgpNYW5hZ2luZyBEaXJlY3RvcnM6IENocmlzdGluIEVpc2Vuc2NobWlkLCBTaGFy b24gSGVjaywgVGlmZmFueSBEb29uIFNpbHZhICAKQ2hhaXJwZXJzb24gb2YgdGhlIFN1cGVydmlz b3J5IEJvYXJkOiBOaWNvbGUgTGF1ClJlZ2lzdGVyZWQgT2ZmaWNlOiBNdW5pY2gKQ29tbWVyY2lh bCBSZWdpc3RlcjogQW10c2dlcmljaHQgTXVlbmNoZW4gSFJCIDE4NjkyOAo=