From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1EF39A0032; Tue, 13 Sep 2022 15:36:47 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BAA314021D; Tue, 13 Sep 2022 15:36:46 +0200 (CEST) Received: from mailgw01.pantheon.sk (mailgw01.pantheon.sk [46.229.239.26]) by mails.dpdk.org (Postfix) with ESMTP id E896940151 for ; Tue, 13 Sep 2022 15:36:45 +0200 (CEST) Received: from mailgw01.pantheon.sk (localhost.localdomain [127.0.0.1]) by mailgw01.pantheon.sk (Proxmox) with ESMTP id 5B944201C38; Tue, 13 Sep 2022 15:36:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; h=cc:cc:content-transfer-encoding:content-type:content-type :date:from:from:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=dkim; bh=NjyV9TD5kUeCZIZsJN79 9BSaPjNlfSyUNe6HcGEf7Qg=; b=pa0qRVSpXo5rES3CWar0P4Fu1lhEXe4ET3QF 0dUENNdRXJBsNKugWyo66Zg0NCHbIj/mz7iOtp8p/lKhj3X4HHbHd6eSMjVwN5yp qDxZmnw3jJUwteGWwmAKkk2BXQ/WJBSaFdu+kXuR8X9acBhOGm9LB/0rV5LFY+5+ ztukH9ho42xYxl4UnhmKCCjTH013qZm7nhsiI+gNVXPDkgi6u4xAxerD7ZwDInxW bH6pZ8veN2BCZlZREsCpf7fkahJWQlIPjp7YOTfi8fTljJRwvqCxNbYiItP1vtPH fbeg8e5nmqyIiyExvMYfdRinZC8rgW/ajWQaLwjsEgKkUGNPHg== From: =?utf-8?B?SnVyYWogTGlua2XFoQ==?= To: Bruce Richardson CC: "thomas@monjalon.net" , "david.marchand@redhat.com" , "ronan.randles@intel.com" , "Honnappa.Nagarahalli@arm.com" , "ohilyard@iol.unh.edu" , "lijuan.tu@intel.com" , "dev@dpdk.org" Subject: RE: [PATCH v4 4/9] dts: add ssh pexpect library Thread-Topic: [PATCH v4 4/9] dts: add ssh pexpect library Thread-Index: AQHYoznJckIj0tYmjEujEyO7igXj6K3VaZWAgAg38DA= Date: Tue, 13 Sep 2022 13:36:42 +0000 Message-ID: References: <20220728100044.1318484-1-juraj.linkes@pantheon.tech> <20220729105550.1382664-1-juraj.linkes@pantheon.tech> <20220729105550.1382664-5-juraj.linkes@pantheon.tech> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.101.4.10] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQnJ1Y2UgUmljaGFyZHNv biA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1i ZXIgOCwgMjAyMiAxMTo1MyBBTQ0KPiBUbzogSnVyYWogTGlua2XFoSA8anVyYWoubGlua2VzQHBh bnRoZW9uLnRlY2g+DQo+IENjOiB0aG9tYXNAbW9uamFsb24ubmV0OyBkYXZpZC5tYXJjaGFuZEBy ZWRoYXQuY29tOw0KPiByb25hbi5yYW5kbGVzQGludGVsLmNvbTsgSG9ubmFwcGEuTmFnYXJhaGFs bGlAYXJtLmNvbTsNCj4gb2hpbHlhcmRAaW9sLnVuaC5lZHU7IGxpanVhbi50dUBpbnRlbC5jb207 IGRldkBkcGRrLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0IDQvOV0gZHRzOiBhZGQgc3No IHBleHBlY3QgbGlicmFyeQ0KPiANCj4gT24gRnJpLCBKdWwgMjksIDIwMjIgYXQgMTA6NTU6NDVB TSArMDAwMCwgSnVyYWogTGlua2XFoSB3cm90ZToNCj4gPiBUaGUgbGlicmFyeSB1c2VzIHRoZSBw ZXhwZWN0IHB5dGhvbiBsaWJyYXJ5IGFuZCBpbXBsZW1lbnRzIGNvbm5lY3Rpb24NCj4gPiB0byBh IG5vZGUgYW5kIHR3byB3YXlzIHRvIGludGVyYWN0IHdpdGggdGhlIG5vZGU6DQo+ID4gMS4gU2Vu ZCBhIHN0cmluZyB3aXRoIHNwZWNpZmllZCBwcm9tcHQgd2hpY2ggd2lsbCBiZSBtYXRjaGVkIGFm dGVyDQo+ID4gICAgdGhlIHN0cmluZyBoYXMgYmVlbiBzZW50IHRvIHRoZSBub2RlLg0KPiA+IDIu IFNlbmQgYSBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkLiBObyBwcm9tcHQgaXMgc3BlY2lmaWVkIGhl cmUuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBPd2VuIEhpbHlhcmQgPG9oaWx5YXJkQGlvbC51 bmguZWR1Pg0KPiA+IFNpZ25lZC1vZmYtYnk6IEp1cmFqIExpbmtlxaEgPGp1cmFqLmxpbmtlc0Bw YW50aGVvbi50ZWNoPg0KPiANCj4gQ29tbWVudHMgaW5saW5lIGJlbG93Lg0KPiBUaGFua3MsDQo+ IC9CcnVjZQ0KPiANCj4gPiAtLS0NCj4gPiAgZHRzL2ZyYW1ld29yay9leGNlcHRpb24ucHkgICB8 ICA1NyArKysrKysrKysrDQo+ID4gIGR0cy9mcmFtZXdvcmsvc3NoX3BleHBlY3QucHkgfCAyMDUN Cj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgZHRzL2ZyYW1ld29y ay91dGlscy5weSAgICAgICB8ICAxMiArKw0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDI3NCBpbnNl cnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkdHMvZnJhbWV3b3JrL2V4Y2VwdGlv bi5weSAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gZHRzL2ZyYW1ld29yay9zc2hfcGV4cGVjdC5w eSAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gZHRzL2ZyYW1ld29yay91dGlscy5weQ0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL2R0cy9mcmFtZXdvcmsvZXhjZXB0aW9uLnB5IGIvZHRzL2ZyYW1ld29y ay9leGNlcHRpb24ucHkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwMDAw Li4zNWU4MWE0ZDk5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2R0cy9mcmFtZXdvcmsv ZXhjZXB0aW9uLnB5DQo+ID4gQEAgLTAsMCArMSw1NyBAQA0KPiA+ICsjIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgIyBDb3B5cmlnaHQoYykgMjAxMC0yMDE0DQo+ID4gK0lu dGVsIENvcnBvcmF0aW9uICMgQ29weXJpZ2h0KGMpIDIwMjIgUEFOVEhFT04udGVjaCBzLnIuby4N Cj4gPiArIyBDb3B5cmlnaHQoYykgMjAyMiBVbml2ZXJzaXR5IG9mIE5ldyBIYW1wc2hpcmUgIw0K PiA+ICsNCj4gPiArIiIiDQo+ID4gK1VzZXItZGVmaW5lZCBleGNlcHRpb25zIHVzZWQgYWNyb3Nz IHRoZSBmcmFtZXdvcmsuDQo+ID4gKyIiIg0KPiA+ICsNCj4gPiArDQo+ID4gK2NsYXNzIFRpbWVv dXRFeGNlcHRpb24oRXhjZXB0aW9uKToNCj4gPiArICAgICIiIg0KPiA+ICsgICAgQ29tbWFuZCBl eGVjdXRpb24gdGltZW91dC4NCj4gPiArICAgICIiIg0KPiA+ICsNCj4gPiArICAgIGNvbW1hbmQ6 IHN0cg0KPiA+ICsgICAgb3V0cHV0OiBzdHINCj4gPiArDQo+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgY29tbWFuZDogc3RyLCBvdXRwdXQ6IHN0cik6DQo+ID4gKyAgICAgICAgc2VsZi5jb21t YW5kID0gY29tbWFuZA0KPiA+ICsgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0DQo+ID4gKw0K PiA+ICsgICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOg0KPiA+ICsgICAgICAgIHJldHVybiBm IlRJTUVPVVQgb24ge3NlbGYuY29tbWFuZH0iDQo+ID4gKw0KPiA+ICsgICAgZGVmIGdldF9vdXRw dXQoc2VsZikgLT4gc3RyOg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLm91dHB1dA0KPiA+ICsN Cj4gPiArDQo+ID4gK2NsYXNzIFNTSENvbm5lY3Rpb25FeGNlcHRpb24oRXhjZXB0aW9uKToNCj4g PiArICAgICIiIg0KPiA+ICsgICAgU1NIIGNvbm5lY3Rpb24gZXJyb3IuDQo+ID4gKyAgICAiIiIN Cj4gPiArDQo+ID4gKyAgICBob3N0OiBzdHINCj4gPiArDQo+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgaG9zdDogc3RyKToNCj4gPiArICAgICAgICBzZWxmLmhvc3QgPSBob3N0DQo+ID4gKw0K PiA+ICsgICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOg0KPiA+ICsgICAgICAgIHJldHVybiBm IkVycm9yIHRyeWluZyB0byBjb25uZWN0IHdpdGgge3NlbGYuaG9zdH0iDQo+ID4gKw0KPiA+ICsN Cj4gPiArY2xhc3MgU1NIU2Vzc2lvbkRlYWRFeGNlcHRpb24oRXhjZXB0aW9uKToNCj4gPiArICAg ICIiIg0KPiA+ICsgICAgU1NIIHNlc3Npb24gaXMgbm90IGFsaXZlLg0KPiA+ICsgICAgSXQgY2Fu IG5vIGxvbmdlciBiZSB1c2VkLg0KPiA+ICsgICAgIiIiDQo+ID4gKw0KPiA+ICsgICAgaG9zdDog c3RyDQo+ID4gKw0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q6IHN0cik6DQo+ID4g KyAgICAgICAgc2VsZi5ob3N0ID0gaG9zdA0KPiA+ICsNCj4gPiArICAgIGRlZiBfX3N0cl9fKHNl bGYpIC0+IHN0cjoNCj4gPiArICAgICAgICByZXR1cm4gZiJTU0ggc2Vzc2lvbiB3aXRoIHtzZWxm Lmhvc3R9IGhhcyBkaWVkIg0KPiA+IGRpZmYgLS1naXQgYS9kdHMvZnJhbWV3b3JrL3NzaF9wZXhw ZWN0LnB5DQo+ID4gYi9kdHMvZnJhbWV3b3JrL3NzaF9wZXhwZWN0LnB5IG5ldyBmaWxlIG1vZGUg MTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uZThmNjQ1MTVjMA0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9kdHMvZnJhbWV3b3JrL3NzaF9wZXhwZWN0LnB5DQo+ID4gQEAgLTAsMCAr MSwyMDUgQEANCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICMg Q29weXJpZ2h0KGMpIDIwMTAtMjAxNA0KPiA+ICtJbnRlbCBDb3Jwb3JhdGlvbiAjIENvcHlyaWdo dChjKSAyMDIyIFBBTlRIRU9OLnRlY2ggcy5yLm8uDQo+ID4gKyMgQ29weXJpZ2h0KGMpIDIwMjIg VW5pdmVyc2l0eSBvZiBOZXcgSGFtcHNoaXJlICMNCj4gPiArDQo+ID4gK2ltcG9ydCB0aW1lDQo+ ID4gK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbA0KPiA+ICsNCj4gPiArZnJvbSBwZXhwZWN0 IGltcG9ydCBweHNzaA0KPiA+ICsNCj4gPiArZnJvbSAuZXhjZXB0aW9uIGltcG9ydCBTU0hDb25u ZWN0aW9uRXhjZXB0aW9uLA0KPiA+ICtTU0hTZXNzaW9uRGVhZEV4Y2VwdGlvbiwgVGltZW91dEV4 Y2VwdGlvbiBmcm9tIC5sb2dnZXIgaW1wb3J0IERUU0xPRw0KPiA+ICtmcm9tIC51dGlscyBpbXBv cnQgR1JFRU4sIFJFRA0KPiA+ICsNCj4gPiArIiIiDQo+ID4gK1RoZSBtb2R1bGUgaGFuZGxlcyBz c2ggc2Vzc2lvbnMgdG8gVEcgYW5kIFNVVC4NCj4gPiArSXQgaW1wbGVtZW50cyB0aGUgc2VuZF9l eHBlY3QgZnVuY3Rpb24gdG8gc2VuZCBjb21tYW5kcyBhbmQgZ2V0IG91dHB1dA0KPiBkYXRhLg0K PiA+ICsiIiINCj4gPiArDQo+ID4gKw0KPiA+ICtjbGFzcyBTU0hQZXhwZWN0Og0KPiA+ICsgICAg dXNlcm5hbWU6IHN0cg0KPiA+ICsgICAgcGFzc3dvcmQ6IHN0cg0KPiA+ICsgICAgbm9kZTogc3Ry DQo+ID4gKyAgICBsb2dnZXI6IERUU0xPRw0KPiA+ICsgICAgbWFnaWNfcHJvbXB0OiBzdHINCj4g PiArDQo+ID4gKyAgICBkZWYgX19pbml0X18oDQo+ID4gKyAgICAgICAgc2VsZiwNCj4gPiArICAg ICAgICBub2RlOiBzdHIsDQo+ID4gKyAgICAgICAgdXNlcm5hbWU6IHN0ciwNCj4gPiArICAgICAg ICBwYXNzd29yZDogT3B0aW9uYWxbc3RyXSwNCj4gPiArICAgICAgICBsb2dnZXI6IERUU0xPRywN Cj4gPiArICAgICk6DQo+ID4gKyAgICAgICAgc2VsZi5tYWdpY19wcm9tcHQgPSAiTUFHSUMgUFJP TVBUIg0KPiA+ICsgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyDQo+ID4gKw0KPiA+ICsgICAg ICAgIHNlbGYubm9kZSA9IG5vZGUNCj4gPiArICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5h bWUNCj4gPiArICAgICAgICBzZWxmLnBhc3N3b3JkID0gcGFzc3dvcmQgb3IgIiINCj4gPiArICAg ICAgICBzZWxmLmxvZ2dlci5pbmZvKGYic3NoIHtzZWxmLnVzZXJuYW1lfUB7c2VsZi5ub2RlfSIp DQo+ID4gKw0KPiA+ICsgICAgICAgIHNlbGYuX2Nvbm5lY3RfaG9zdCgpDQo+ID4gKw0KPiA+ICsg ICAgZGVmIF9jb25uZWN0X2hvc3Qoc2VsZikgLT4gTm9uZToNCj4gPiArICAgICAgICAiIiINCj4g PiArICAgICAgICBDcmVhdGUgY29ubmVjdGlvbiB0byBhc3NpZ25lZCBub2RlLg0KPiA+ICsgICAg ICAgICIiIg0KPiA+ICsgICAgICAgIHJldHJ5X3RpbWVzID0gMTANCj4gPiArICAgICAgICB0cnk6 DQo+ID4gKyAgICAgICAgICAgIGlmICI6IiBpbiBzZWxmLm5vZGU6DQo+IA0KPiBTaG91bGQgdGhp cyBjaGVjayBhbmQgdGhlIHJlbGV2YW50IHNwbGl0dGluZyBiZWxvdyB0byBhc3NpZ24gdG8gc2Vs Zi5pcCBhbmQNCj4gc2VsZi5wb3J0LCBub3QgYmUgZG9uIGF0IGluaXQgd2hlbiB0aGUgbm9kZSBp cyBwYXNzZWQgaW4/IENlcnRhaW5seSB0aGUgc3BsaXR0aW5nDQo+IHNob3VsZCBwcm9iYWJseSBi ZSBkb25lIG91dHNpZGUgdGhlIGxvb3AsIHJhdGhlciB0aGFuIHJlLWRvaW5nIHRoZSBzcGxpdCBp bnRvIGlwDQo+IGFuZCBwb3J0IDEwIHRpbWVzPw0KPiANCg0KSXQgZGVmaW5pdGVseSBzaG91bGQg Oi0pLg0KSSdsbCBtb3ZlIGl0IHRvIGluaXQuDQoNCj4gPiArICAgICAgICAgICAgICAgIHdoaWxl IHJldHJ5X3RpbWVzOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuaXAgPSBzZWxmLm5v ZGUuc3BsaXQoIjoiKVswXQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IGlu dChzZWxmLm5vZGUuc3BsaXQoIjoiKVsxXSkNCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnNlc3Npb24gPSBweHNzaC5weHNzaChlbmNvZGluZz0idXRmLTgiKQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHRyeToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXNzaW9u LmxvZ2luKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnBhc3N3b3JkLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3JpZ2luYWxfcHJvbXB0PSJbJCM+XSIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwb3J0PXNlbGYucG9ydCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxvZ2luX3RpbWVvdXQ9MjAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXNzd29yZF9yZWdleD1yIig/aSkoPzpwYXNzd29yZDopfCg/OnBhc3NwaHJhc2UgZm9yDQo+ IGtleSl8KD9pKShwYXNzd29yZCBmb3IgLis6KSIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICkNCj4gPiArICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGUpDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHRpbWUuc2xlZXAoMikNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0 cnlfdGltZXMgLT0gMQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgicmV0cnkg JWQgdGltZXMgY29ubmVjdGluZy4uLiIgJSAoMTAgLSByZXRyeV90aW1lcykpDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgZWxzZToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsN Cj4gPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJjb25uZWN0IHRvICVzOiVzIGZhaWxlZCIgJSAoc2VsZi5pcCwgc2VsZi5w b3J0KSkNCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c2Vzc2lvbiA9IHB4c3NoLnB4c3NoKGVuY29kaW5nPSJ1dGYtOCIpDQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnNlc3Npb24ubG9naW4oDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5u b2RlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5wYXNzd29yZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICBv cmlnaW5hbF9wcm9tcHQ9IlskIz5dIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzd29y ZF9yZWdleD1yIig/aSkoPzpwYXNzd29yZDopfCg/OnBhc3NwaHJhc2UgZm9yDQo+IGtleSl8KD9p KShwYXNzd29yZCBmb3IgLis6KSIsDQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKGYiQ29ubmVjdGlvbiB0byB7c2VsZi5ub2RlfSBz dWNjZWVkZWQiKQ0KPiA+ICsgICAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KCJzdHR5IC1lY2hv IiwgIiMiKQ0KPiA+ICsgICAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KCJzdHR5IGNvbHVtbnMg MTAwMCIsICIjIikNCj4gPiArICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6DQo+ID4gKyAg ICAgICAgICAgIHByaW50KFJFRChzdHIoZSkpKQ0KPiA+ICsgICAgICAgICAgICBpZiBnZXRhdHRy KHNlbGYsICJwb3J0IiwgTm9uZSk6DQo+ID4gKyAgICAgICAgICAgICAgICBzdWdnZXN0aW9uID0g KA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICJcblN1Z2dlc3Npb246IENoZWNrIGlmIHRoZSBm aXJld2FsbCBvbiBbICVzIF0gIiAlIHNlbGYuaXANCj4gPiArICAgICAgICAgICAgICAgICAgICAr ICJpcyBzdG9wcGVkXG4iDQo+ID4gKyAgICAgICAgICAgICAgICApDQo+IA0KPiBJJ2Qgc3VnZ2Vz dCB1c2luZyBmLXN0cmluZ3MgaGVyZSB0byBhdm9pZCBzcGxpdHRpbmcgZXJyb3IgbWVzc2FnZXMg YWNyb3NzIGxpbmVzLg0KPiBUaGV5IGNhbiBhbHNvIGJlIHVzZWQgZm9yIHN0cmluZ3MgYWJvdmUg dG9vIHRvIGluY3JlYXNlIHJlYWRhYmlsaXR5Lg0KPiANCj4gV2Ugc2hvdWxkIHByb2JhYmx5IGxv b2sgdG8gc3RhbmRhcmRpemUgYWxsIHN0cmluZ3MgdXNlZCBpbiBEVFMgdG8gYSBzaW5nbGUgZm9y bWF0DQo+IC0gZWl0aGVyIGYtc3RyaW5ncyBvciB0aGUgc3R5bGUgZ2l2ZW4gaGVyZSwgcmF0aGVy IHRoYW4gdXNpbmcgYSBtaXguDQo+IA0KDQpUaGlzIGlzIG9uZSBvZiB0aGUgbWFueSB0aGluZ3Mg d2UgbGVmdCBmcm9tIHRoZSBvcmlnaW5hbCBjb2RlIHRvIGZhY2lsaXRhdGUgZGlzY3Vzc2lvbiAt IHdvdWxkIHRoaXMgYmUgYSByZXF1aXJlbWVudCBvciBjYW4gd2Ugc2tpcCBpdCAocG9zc2libHkg Y2hhbmdpbmcgaXQgbGF0ZXIpPyBJIHByZWZlciBmLXN0cmluZ3MgZXZlcnl3aGVyZSBhbmQgSSds bCBjaGFuZ2UgaXQgd2hlcmUgSSBjYW4sIGF0IGxlYXN0IGluIHRoaXMgcGF0Y2guDQpNYXliZSB3 ZSBjb3VsZCBkbyB0aGlzIG9uZSBwYXRjaCB0aGUgYmVzdCB3ZSBjYW4gdG8gc2hvd2Nhc2Ugd2hh dCB0aGUgY29kZSBzaG91bGQgaWRlYWxseSBsb29rIGxpa2UgYW5kIHBvc3NpYmx5IGxvb3NlbiBy ZXF1aXJlbWVudHMgaW4gc3Vic2VxdWVudCBwYXRjaGVzPyBUaGlzIHdpbGwgbGVhdmUgdGVjaG5p Y2FsIGRlYnQgc28gaXQgZG9lc24ndCBzb3VuZCBnb29kLg0KDQo+ID4gKyAgICAgICAgICAgICAg ICBwcmludChHUkVFTihzdWdnZXN0aW9uKSkNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIHJhaXNl IFNTSENvbm5lY3Rpb25FeGNlcHRpb24oc2VsZi5ub2RlKQ0KPiA+ICsNCj4gPiArICAgIGRlZiBz ZW5kX2V4cGVjdF9iYXNlKHNlbGYsIGNvbW1hbmQ6IHN0ciwgZXhwZWN0ZWQ6IHN0ciwgdGltZW91 dDogZmxvYXQpIC0+DQo+IHN0cjoNCj4gPiArICAgICAgICBzZWxmLmNsZWFuX3Nlc3Npb24oKQ0K PiA+ICsgICAgICAgIHNlbGYuc2Vzc2lvbi5QUk9NUFQgPSBleHBlY3RlZA0KPiA+ICsgICAgICAg IHNlbGYuX19zZW5kbGluZShjb21tYW5kKQ0KPiA+ICsgICAgICAgIHNlbGYuX19wcm9tcHQoY29t bWFuZCwgdGltZW91dCkNCj4gPiArDQo+ID4gKyAgICAgICAgYmVmb3JlID0gc2VsZi5nZXRfb3V0 cHV0X2JlZm9yZSgpDQo+ID4gKyAgICAgICAgcmV0dXJuIGJlZm9yZQ0KPiA+ICsNCj4gPiArICAg IGRlZiBzZW5kX2V4cGVjdCgNCj4gPiArICAgICAgICBzZWxmLCBjb21tYW5kOiBzdHIsIGV4cGVj dGVkOiBzdHIsIHRpbWVvdXQ6IGZsb2F0ID0gMTUsIHZlcmlmeTogYm9vbCA9IEZhbHNlDQo+ID4g KyAgICApIC0+IHN0ciB8IGludDoNCj4gPiArDQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+ICsgICAg ICAgICAgICByZXQgPSBzZWxmLnNlbmRfZXhwZWN0X2Jhc2UoY29tbWFuZCwgZXhwZWN0ZWQsIHRp bWVvdXQpDQo+ID4gKyAgICAgICAgICAgIGlmIHZlcmlmeToNCj4gPiArICAgICAgICAgICAgICAg IHJldF9zdGF0dXMgPSBzZWxmLnNlbmRfZXhwZWN0X2Jhc2UoImVjaG8gJD8iLCBleHBlY3RlZCwg dGltZW91dCkNCj4gPiArICAgICAgICAgICAgICAgIGlmIG5vdCBpbnQocmV0X3N0YXR1cyk6DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldA0KPiA+ICsgICAgICAgICAgICAgICAg ZWxzZToNCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiQ29tbWFu ZDogJXMgZmFpbHVyZSEiICUgY29tbWFuZCkNCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm LmxvZ2dlci5lcnJvcihyZXQpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludChy ZXRfc3RhdHVzKQ0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHJldA0KPiA+ICsgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPiArICAg ICAgICAgICAgcHJpbnQoDQo+ID4gKyAgICAgICAgICAgICAgICBSRUQoDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIkV4Y2VwdGlvbiBoYXBwZW5lZCBpbiBbJXNdIGFuZCBvdXRwdXQgaXMgWyVz XSINCj4gPiArICAgICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBzZWxmLmdldF9vdXRwdXRf YmVmb3JlKCkpDQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4gKyAgICAgICAgICAgICkNCj4g PiArICAgICAgICAgICAgcmFpc2UgZQ0KPiA+ICsNCj4gPiArICAgIGRlZiBzZW5kX2NvbW1hbmQo c2VsZiwgY29tbWFuZDogc3RyLCB0aW1lb3V0OiBmbG9hdCA9IDEpIC0+IHN0cjoNCj4gPiArICAg ICAgICB0cnk6DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY2xlYW5fc2Vzc2lvbigpDQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX19zZW5kbGluZShjb21tYW5kKQ0KPiA+ICsgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToNCj4gPiArICAgICAgICAgICAgcmFpc2UgZQ0KPiA+ICsNCj4gPiArICAg ICAgICBvdXRwdXQgPSBzZWxmLmdldF9zZXNzaW9uX2JlZm9yZSh0aW1lb3V0PXRpbWVvdXQpDQo+ ID4gKyAgICAgICAgc2VsZi5zZXNzaW9uLlBST01QVCA9IHNlbGYuc2Vzc2lvbi5VTklRVUVfUFJP TVBUDQo+ID4gKyAgICAgICAgc2VsZi5zZXNzaW9uLnByb21wdCgwLjEpDQo+ID4gKw0KPiA+ICsg ICAgICAgIHJldHVybiBvdXRwdXQNCj4gPiArDQo+ID4gKyAgICBkZWYgY2xlYW5fc2Vzc2lvbihz ZWxmKSAtPiBOb25lOg0KPiA+ICsgICAgICAgIHNlbGYuZ2V0X3Nlc3Npb25fYmVmb3JlKHRpbWVv dXQ9MC4wMSkNCj4gPiArDQo+ID4gKyAgICBkZWYgZ2V0X3Nlc3Npb25fYmVmb3JlKHNlbGYsIHRp bWVvdXQ6IGZsb2F0ID0gMTUpIC0+IHN0cjoNCj4gPiArICAgICAgICAiIiINCj4gPiArICAgICAg ICBHZXQgYWxsIG91dHB1dCBiZWZvcmUgdGltZW91dA0KPiA+ICsgICAgICAgICIiIg0KPiA+ICsg ICAgICAgIHNlbGYuc2Vzc2lvbi5QUk9NUFQgPSBzZWxmLm1hZ2ljX3Byb21wdA0KPiA+ICsgICAg ICAgIHRyeToNCj4gPiArICAgICAgICAgICAgc2VsZi5zZXNzaW9uLnByb21wdCh0aW1lb3V0KQ0K PiA+ICsgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPiArICAgICAgICAgICAgcGFz cw0KPiA+ICsNCj4gPiArICAgICAgICBiZWZvcmUgPSBzZWxmLmdldF9vdXRwdXRfYWxsKCkNCj4g PiArICAgICAgICBzZWxmLl9fZmx1c2goKQ0KPiA+ICsNCj4gPiArICAgICAgICByZXR1cm4gYmVm b3JlDQo+ID4gKw0KPiA+ICsgICAgZGVmIF9fZmx1c2goc2VsZikgLT4gTm9uZToNCj4gPiArICAg ICAgICAiIiINCj4gPiArICAgICAgICBDbGVhciBhbGwgc2Vzc2lvbiBidWZmZXINCj4gPiArICAg ICAgICAiIiINCj4gPiArICAgICAgICBzZWxmLnNlc3Npb24uYnVmZmVyID0gIiINCj4gPiArICAg ICAgICBzZWxmLnNlc3Npb24uYmVmb3JlID0gIiINCj4gPiArDQo+ID4gKyAgICBkZWYgX19wcm9t cHQoc2VsZiwgY29tbWFuZDogc3RyLCB0aW1lb3V0OiBmbG9hdCkgLT4gTm9uZToNCj4gPiArICAg ICAgICBpZiBub3Qgc2VsZi5zZXNzaW9uLnByb21wdCh0aW1lb3V0KToNCj4gPiArICAgICAgICAg ICAgcmFpc2UgVGltZW91dEV4Y2VwdGlvbihjb21tYW5kLCBzZWxmLmdldF9vdXRwdXRfYWxsKCkp DQo+ID4gKyBmcm9tIE5vbmUNCj4gPiArDQo+ID4gKyAgICBkZWYgX19zZW5kbGluZShzZWxmLCBj b21tYW5kOiBzdHIpIC0+IE5vbmU6DQo+ID4gKyAgICAgICAgaWYgbm90IHNlbGYuaXNhbGl2ZSgp Og0KPiA+ICsgICAgICAgICAgICByYWlzZSBTU0hTZXNzaW9uRGVhZEV4Y2VwdGlvbihzZWxmLm5v ZGUpDQo+ID4gKyAgICAgICAgaWYgbGVuKGNvbW1hbmQpID09IDIgYW5kIGNvbW1hbmQuc3RhcnRz d2l0aCgiXiIpOg0KPiA+ICsgICAgICAgICAgICBzZWxmLnNlc3Npb24uc2VuZGNvbnRyb2woY29t bWFuZFsxXSkNCj4gPiArICAgICAgICBlbHNlOg0KPiA+ICsgICAgICAgICAgICBzZWxmLnNlc3Np b24uc2VuZGxpbmUoY29tbWFuZCkNCj4gPiArDQo+ID4gKyAgICBkZWYgZ2V0X291dHB1dF9iZWZv cmUoc2VsZikgLT4gc3RyOg0KPiA+ICsgICAgICAgIGlmIG5vdCBzZWxmLmlzYWxpdmUoKToNCj4g PiArICAgICAgICAgICAgcmFpc2UgU1NIU2Vzc2lvbkRlYWRFeGNlcHRpb24oc2VsZi5ub2RlKQ0K PiA+ICsgICAgICAgIGJlZm9yZTogbGlzdFtzdHJdID0gc2VsZi5zZXNzaW9uLmJlZm9yZS5yc3Bs aXQoIlxyXG4iLCAxKQ0KPiANCj4gVGhlIGNhc3QgaW4gdGhlIG1pZGRsZSBvZiBweXRvbiBjb2Rl IHNlZW1zIHN0cmFuZ2UuIERvZXMgcnNwbGl0IG5vdCBhbHdheXMNCj4gcmV0dXJuIGEgbGlzdCB2 YWx1ZT8gSW4gcXVpY2sgdGVzdGluZyBoZXJlIGV2ZW4gZG9pbmcgIiIucnNwbGl0KCJ4IiwxKSBy ZXR1cm5zIGEgbGlzdA0KPiB3aXRoIHRoZSBlbXB0eSBzdHJpbmcuDQo+IA0KDQpJdCBkb2Vzbid0 IG5lZWQgdG8gYmUgdGhlcmUsIEknbGwgcmVtb3ZlIGl0Lg0KDQo+ID4gKyAgICAgICAgaWYgYmVm b3JlWzBdID09ICJbUEVYUEVDVF0iOg0KPiA+ICsgICAgICAgICAgICBiZWZvcmVbMF0gPSAiIg0K PiA+ICsNCj4gPiArICAgICAgICByZXR1cm4gYmVmb3JlWzBdDQo+IA0KPiBNaWdodCBiZSBzbGln aHRseSBtb3JlIHJlYWRhYmxlIGFzOg0KPiAJcmV0dmFsID0gc2VsZi5zZXNzaW9uLmJlZm9yZS5y c3BsaXQoIlxyXG4iLCAxKVswXQ0KPiAJaWYgcmV0dmFsID09ICJbUEVYUEVDVF0iDQo+IAkJcmV0 dXJuICIiDQo+IAlyZXR1cm4gcmV0dmFsDQo+IA0KDQpBY2suDQoNCj4gPiArDQo+ID4gKyAgICBk ZWYgZ2V0X291dHB1dF9hbGwoc2VsZikgLT4gc3RyOg0KPiA+ICsgICAgICAgIG91dHB1dDogc3Ry ID0gc2VsZi5zZXNzaW9uLmJlZm9yZQ0KPiA+ICsgICAgICAgIG91dHB1dC5yZXBsYWNlKCJbUEVY UEVDVF0iLCAiIikNCj4gPiArICAgICAgICByZXR1cm4gb3V0cHV0DQo+ID4gKw0KPiANCj4gVGhp cyBmdW5jdGlvbiBpcyBtaXNzaW5nIHRoZSBpc2FsaXZlKCkgY2hlY2sgaW4gdGhlIHByZXZpb3Vz IGZ1bmN0aW9uIGFib3ZlLg0KPiBBbHNvLCBjb3VsZCB5b3UgcmV3cml0ZSAiZ2V0X291dHB1dF9i ZWZvcmUiIHRvIHVzZSAiZ2V0X291dHB1dF9hbGwiIHRvIGF2b2lkDQo+IGhhdmluZyBjaGVja3Mg Zm9yIFtQRVhQRUNUXSBpbiBtdWx0aXBsZSBwbGFjZXMgLSBhbmQgYWxzbyBjaGVja3MgZm9yIGlz YWxpdmUoKS4NCj4gDQoNClllYSwgdGhlIGNvZGUgaGFzIHRoZXNlIHNvcnRzIG9mIGFudGlwYXR0 ZXJucyBldmVyeXdoZXJlLiBJJ2xsIHJlZmFjdG9yIGl0IGEgYml0Lg0KDQo+ID4gKyAgICBkZWYg Y2xvc2Uoc2VsZiwgZm9yY2U6IGJvb2wgPSBGYWxzZSkgLT4gTm9uZToNCj4gPiArICAgICAgICBp ZiBmb3JjZSBpcyBUcnVlOg0KPiA+ICsgICAgICAgICAgICBzZWxmLnNlc3Npb24uY2xvc2UoKQ0K PiA+ICsgICAgICAgIGVsc2U6DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuaXNhbGl2ZSgpOg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zZXNzaW9uLmxvZ291dCgpDQo+ID4gKw0KPiA+ICsg ICAgZGVmIGlzYWxpdmUoc2VsZikgLT4gYm9vbDoNCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5z ZXNzaW9uLmlzYWxpdmUoKQ0KPiA+IGRpZmYgLS1naXQgYS9kdHMvZnJhbWV3b3JrL3V0aWxzLnB5 IGIvZHRzL2ZyYW1ld29yay91dGlscy5weSBuZXcgZmlsZQ0KPiA+IG1vZGUgMTAwNjQ0IGluZGV4 IDAwMDAwMDAwMDAuLmRiODczNDk4MjcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHRz L2ZyYW1ld29yay91dGlscy5weQ0KPiA+IEBAIC0wLDAgKzEsMTIgQEANCj4gPiArIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICMgQ29weXJpZ2h0KGMpIDIwMTAtMjAxNA0K PiA+ICtJbnRlbCBDb3Jwb3JhdGlvbiAjIENvcHlyaWdodChjKSAyMDIyIFBBTlRIRU9OLnRlY2gg cy5yLm8uDQo+ID4gKyMgQ29weXJpZ2h0KGMpIDIwMjIgVW5pdmVyc2l0eSBvZiBOZXcgSGFtcHNo aXJlICMNCj4gPiArDQo+ID4gK2RlZiBSRUQodGV4dDogc3RyKSAtPiBzdHI6DQo+ID4gKyAgICBy ZXR1cm4gZiJcdTAwMUJbMzE7MW17c3RyKHRleHQpfVx1MDAxQlswbSINCj4gPiArDQo+ID4gKw0K PiA+ICtkZWYgR1JFRU4odGV4dDogc3RyKSAtPiBzdHI6DQo+ID4gKyAgICByZXR1cm4gZiJcdTAw MUJbMzI7MW17c3RyKHRleHQpfVx1MDAxQlswbSINCj4gPiAtLQ0KPiA+IDIuMzAuMg0KPiA+DQoN Cg==