From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F64AC4360F for ; Fri, 1 Mar 2019 19:21:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 33D7320857 for ; Fri, 1 Mar 2019 19:21:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="XHVz9Lwc"; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="SK9Qlg4I" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726170AbfCATVb (ORCPT ); Fri, 1 Mar 2019 14:21:31 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:34476 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725290AbfCATVa (ORCPT ); Fri, 1 Mar 2019 14:21:30 -0500 Received: from pps.filterd (m0148461.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x21JDiJH015458; Fri, 1 Mar 2019 11:20:58 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=uCfdxLJMYiATuvqVxg7GdjaPELCLls+bIApmoc/d3C4=; b=XHVz9LwctC1wvp5wltgeODdeOiyyrEhLlnxBGErSvcksMMevv3bQymbTlPZ6AS0CZGcV 7hksxV+pXbZHvgTC+LqdJV5eklbOQ1v4y/r+xOgXtuhVAb360NWBtlVwof8kxW3uiF2f PHeomqdMtadozkTTxVTTuWjc0BgsE0kkZTA= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2qya66r78s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 01 Mar 2019 11:20:58 -0800 Received: from frc-mbx03.TheFacebook.com (2620:10d:c0a1:f82::27) by frc-hub05.TheFacebook.com (2620:10d:c021:18::175) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1713.5; Fri, 1 Mar 2019 11:20:06 -0800 Received: from frc-hub06.TheFacebook.com (2620:10d:c021:18::176) by frc-mbx03.TheFacebook.com (2620:10d:c0a1:f82::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1713.5; Fri, 1 Mar 2019 11:20:06 -0800 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1713.5 via Frontend Transport; Fri, 1 Mar 2019 11:20:06 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uCfdxLJMYiATuvqVxg7GdjaPELCLls+bIApmoc/d3C4=; b=SK9Qlg4I/tlaPK4WS2rmIAwi/YM3ow/hZWLNGJ+n5U3TCmjefq4wA9INN4H4yCgbQH9HXZLt9xRvl/fNp77b2hCJiMPpunMPCXJgsw6H/90jgM8mRkWsy2d3F6LsDsi22Ia1Z6uAK87CiOEEAFZpjiW5cSmavZN8xqi6eXddrVs= Received: from BYAPR15MB3384.namprd15.prod.outlook.com (20.179.59.17) by BYAPR15MB3303.namprd15.prod.outlook.com (20.179.58.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.16; Fri, 1 Mar 2019 19:19:58 +0000 Received: from BYAPR15MB3384.namprd15.prod.outlook.com ([fe80::d051:e43:9e14:b94]) by BYAPR15MB3384.namprd15.prod.outlook.com ([fe80::d051:e43:9e14:b94%4]) with mapi id 15.20.1665.017; Fri, 1 Mar 2019 19:19:58 +0000 From: Yonghong Song To: Andrii Nakryiko CC: Daniel Borkmann , Alexei Starovoitov , "bpf@vger.kernel.org" , "netdev@vger.kernel.org" , "joe@wand.net.nz" , "john.fastabend@gmail.com" , "tgraf@suug.ch" , Andrii Nakryiko , "jakub.kicinski@netronome.com" , "lmb@cloudflare.com" Subject: Re: [PATCH bpf-next v2 5/7] bpf, libbpf: support global data/bss/rodata sections Thread-Topic: [PATCH bpf-next v2 5/7] bpf, libbpf: support global data/bss/rodata sections Thread-Index: AQHUz7wVyvWwKXwnbUuxMyCVCB5fAqX3FN6AgAAKXAD//3ywgIAAiXoAgAACpIA= Date: Fri, 1 Mar 2019 19:19:58 +0000 Message-ID: References: <20190228231829.11993-1-daniel@iogearbox.net> <20190228231829.11993-6-daniel@iogearbox.net> <1e21ba74-f236-60b8-f33c-f3f060419197@fb.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BYAPR11CA0057.namprd11.prod.outlook.com (2603:10b6:a03:80::34) To BYAPR15MB3384.namprd15.prod.outlook.com (2603:10b6:a03:10e::17) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2620:10d:c090:200::3:cd24] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 98a283a0-6677-41b6-a3ee-08d69e7ae4e4 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(2017052603328)(7153060)(7193020);SRVR:BYAPR15MB3303; x-ms-traffictypediagnostic: BYAPR15MB3303: x-ms-exchange-purlcount: 1 x-microsoft-exchange-diagnostics: 1;BYAPR15MB3303;20:q4vVgMyBTjuR07PsBmGN+Exi8RZixSbAbMslzWJdc1NAAJqIzTAIrZpNa85VgcgCdV3V514i7eB3mtSdp1dI60p6+LndrfJ8TDp975wNE6bLVl0pVw9+Qtdk+HEIVrW/DEhplYiRQMNZfccv8y392xBqjHMaFUNyFnNqsmmuQIU= x-microsoft-antispam-prvs: x-forefront-prvs: 09634B1196 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39860400002)(396003)(136003)(366004)(346002)(376002)(189003)(199004)(446003)(31686004)(2906002)(105586002)(97736004)(486006)(476003)(5660300002)(46003)(186003)(106356001)(4326008)(14454004)(11346002)(478600001)(99286004)(316002)(25786009)(54906003)(966005)(6436002)(6306002)(71200400001)(6512007)(229853002)(8936002)(36756003)(71190400001)(6486002)(7736002)(86362001)(256004)(8676002)(5024004)(14444005)(81166006)(81156014)(305945005)(2616005)(76176011)(31696002)(6246003)(53946003)(53936002)(53546011)(6116002)(102836004)(6506007)(386003)(68736007)(93886005)(52116002)(30864003)(6916009)(579004)(505234006);DIR:OUT;SFP:1102;SCL:1;SRVR:BYAPR15MB3303;H:BYAPR15MB3384.namprd15.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: RbS2eWUAXe0eWtwtaJm5r8lafz5BHxn17SWuqrqLNEARC7axoiRExSr00thuZtV6Cv4Vz0q7hc3XYBFGM1ARvLbvpW1xi9s/eT0EqqIQsi31YeTMEOo+IThQCrnqNsLzrck7KAGn9Ecv2UHPXInMnwLi3iQYgc1502vI85trRZJWM75gZTkgjW9ynVSgN9X+sQryTOw/iMF3A+ZzFOw+coudssMgwH7HyRj/MSVUgF5a8BpOUcZjM+cQzHvi2ko5TDVeGam//btVefWubnW8Xh/bB1bhl3PglF8J2ItmBkQBIGGS0mmeWBU035ZL05nUB7E0BBMrXTjyQeigL5VvjbUJ7ChEpXeuOAYAic9WPUjU6pUq21U7BUxouHtx+ITwb0/xBdjoTOWbN55pk7HmlUamoIKFQNFKsv/EzG9njuU= Content-Type: text/plain; charset="utf-8" Content-ID: <43185B6F19553542A142DD08C652551D@namprd15.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 98a283a0-6677-41b6-a3ee-08d69e7ae4e4 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Mar 2019 19:19:58.5593 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR15MB3303 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-03-01_13:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCk9uIDMvMS8xOSAxMToxMCBBTSwgQW5kcmlpIE5ha3J5aWtvIHdyb3RlOg0KPiBPbiBGcmks IE1hciAxLCAyMDE5IGF0IDEwOjU4IEFNIFlvbmdob25nIFNvbmcgPHloc0BmYi5jb20+IHdyb3Rl Og0KPj4NCj4+DQo+Pg0KPj4gT24gMy8xLzE5IDEwOjQ4IEFNLCBBbmRyaWkgTmFrcnlpa28gd3Jv dGU6DQo+Pj4gT24gRnJpLCBNYXIgMSwgMjAxOSBhdCAxMDozMSBBTSBZb25naG9uZyBTb25nIDx5 aHNAZmIuY29tPiB3cm90ZToNCj4+Pj4NCj4+Pj4NCj4+Pj4NCj4+Pj4gT24gMi8yOC8xOSAzOjE4 IFBNLCBEYW5pZWwgQm9ya21hbm4gd3JvdGU6DQo+Pj4+PiBUaGlzIHdvcmsgYWRkcyBCUEYgbG9h ZGVyIHN1cHBvcnQgZm9yIGdsb2JhbCBkYXRhIHNlY3Rpb25zDQo+Pj4+PiB0byBsaWJicGYuIFRo aXMgYWxsb3dzIHRvIHdyaXRlIEJQRiBwcm9ncmFtcyBpbiBtb3JlIG5hdHVyYWwNCj4+Pj4+IEMt bGlrZSB3YXkgYnkgYmVpbmcgYWJsZSB0byBkZWZpbmUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgY29u c3QNCj4+Pj4+IGRhdGEuDQo+Pj4+Pg0KPj4+Pj4gQmFjayBhdCBMUEMgMjAxOCBbMF0gd2UgcHJl c2VudGVkIGEgZmlyc3QgcHJvdG90eXBlIHdoaWNoDQo+Pj4+PiBpbXBsZW1lbnRlZCBzdXBwb3J0 IGZvciBnbG9iYWwgZGF0YSBzZWN0aW9ucyBieSBleHRlbmRpbmcgQlBGDQo+Pj4+PiBzeXNjYWxs IHdoZXJlIHVuaW9uIGJwZl9hdHRyIHdvdWxkIGdldCBhZGRpdGlvbmFsIG1lbW9yeS9zaXplDQo+ Pj4+PiBwYWlyIGZvciBlYWNoIHNlY3Rpb24gcGFzc2VkIGR1cmluZyBwcm9nIGxvYWQgaW4gb3Jk ZXIgdG8gbGF0ZXINCj4+Pj4+IGFkZCB0aGlzIGJhc2UgYWRkcmVzcyBpbnRvIHRoZSBsZGltbTY0 IGluc3RydWN0aW9uIGFsb25nIHdpdGgNCj4+Pj4+IHRoZSB1c2VyIHByb3ZpZGVkIG9mZnNldCB3 aGVuIGFjY2Vzc2luZyBhIHZhcmlhYmxlLiBDb25zZW5zdXMNCj4+Pj4+IGZyb20gTFBDIHdhcyB0 aGF0IGZvciBwcm9wZXIgdXBzdHJlYW0gc3VwcG9ydCwgaXQgd291bGQgYmUNCj4+Pj4+IG1vcmUg ZGVzaXJhYmxlIHRvIHVzZSBtYXBzIGluc3RlYWQgb2YgYnBmX2F0dHIgZXh0ZW5zaW9uIGFzDQo+ Pj4+PiB0aGlzIHdvdWxkIGFsbG93IGZvciBpbnRyb3NwZWN0aW9uIG9mIHRoZXNlIHNlY3Rpb25z IGFzIHdlbGwNCj4+Pj4+IGFzIHBvdGVudGlhbCBsaWZlIHVwZGF0ZXMgb2YgdGhlaXIgY29udGVu dC4gVGhpcyB3b3JrIGZvbGxvd3MNCj4+Pj4+IHRoaXMgcGF0aCBieSB0YWtpbmcgdGhlIGZvbGxv d2luZyBzdGVwcyBmcm9tIGxvYWRlciBzaWRlOg0KPj4+Pj4NCj4+Pj4+ICAgICAxKSBJbiBicGZf b2JqZWN0X19lbGZfY29sbGVjdCgpIHN0ZXAgd2UgcGljayB1cCAiLmRhdGEiLA0KPj4+Pj4gICAg ICAgICIucm9kYXRhIiwgYW5kICIuYnNzIiBzZWN0aW9uIGluZm9ybWF0aW9uLg0KPj4+Pj4NCj4+ Pj4+ICAgICAyKSBJZiBwcmVzZW50LCBpbiBicGZfb2JqZWN0X19pbml0X2dsb2JhbF9tYXBzKCkg d2UgY3JlYXRlDQo+Pj4+PiAgICAgICAgYSBtYXAgdGhhdCBjb3JyZXNwb25kcyB0byBlYWNoIG9m IHRoZSBwcmVzZW50IHNlY3Rpb25zLg0KPj4+Pj4gICAgICAgIEdpdmVuIHNlY3Rpb24gc2l6ZSBh bmQgYWNjZXNzIHByb3BlcnRpZXMgY2FuIGRpZmZlciwgYQ0KPj4+Pj4gICAgICAgIHNpbmdsZSBl bnRyeSBhcnJheSBtYXAgaXMgY3JlYXRlZCB3aXRoIHZhbHVlIHNpemUgdGhhdA0KPj4+Pj4gICAg ICAgIGlzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEVMRiBzZWN0aW9uIHNpemUgb2YgLmRhdGEsIC5i c3MNCj4+Pj4+ICAgICAgICBvciAucm9kYXRhLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBtYXAg aXMgY3JlYXRlZCBhcw0KPj4+Pj4gICAgICAgIHJlYWQtb25seSBmcm9tIHByb2dyYW0gc2lkZSBz dWNoIHRoYXQgdmVyaWZpZXIgcmVqZWN0cw0KPj4+Pj4gICAgICAgIGFueSB3cml0ZSBhdHRlbXB0 cyBpbnRvIC5yb2RhdGEuIEluIGEgc3Vic2VxdWVudCBzdGVwLA0KPj4+Pj4gICAgICAgIGZvciAu ZGF0YSBhbmQgLnJvZGF0YSBzZWN0aW9ucywgdGhlIHNlY3Rpb24gY29udGVudCBpcw0KPj4+Pj4g ICAgICAgIGNvcGllZCBpbnRvIHRoZSBtYXAgdGhyb3VnaCBicGZfbWFwX3VwZGF0ZV9lbGVtKCku IEZvcg0KPj4+Pj4gICAgICAgIC5ic3MgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IHNpbmNlIGFycmF5 IG1hcCBpcyBhbHJlYWR5DQo+Pj4+PiAgICAgICAgemVyby1pbml0aWFsaXplZCBieSBkZWZhdWx0 Lg0KPj4+Pj4NCj4+Pj4+ICAgICAzKSBJbiBicGZfcHJvZ3JhbV9fY29sbGVjdF9yZWxvYygpIHN0 ZXAsIHdlIHJlY29yZCB0aGUNCj4+Pj4+ICAgICAgICBjb3JyZXNwb25kaW5nIG1hcCwgaW5zbiBp bmRleCwgYW5kIHJlbG9jYXRpb24gdHlwZSBmb3INCj4+Pj4+ICAgICAgICB0aGUgZ2xvYmFsIGRh dGEuDQo+Pj4+Pg0KPj4+Pj4gICAgIDQpIEFuZCBsYXN0IGJ1dCBub3QgbGVhc3QgaW4gdGhlIGFj dHVhbCByZWxvY2F0aW9uIHN0ZXAgaW4NCj4+Pj4+ICAgICAgICBicGZfcHJvZ3JhbV9fcmVsb2Nh dGUoKSwgd2UgbWFyayB0aGUgbGRpbW02NCBpbnN0cnVjdGlvbg0KPj4+Pj4gICAgICAgIHdpdGgg c3JjX3JlZyA9IEJQRl9QU0VVRE9fTUFQX1ZBTFVFIHdoZXJlIGluIHRoZSBmaXJzdA0KPj4+Pj4g ICAgICAgIGltbSBmaWVsZCB0aGUgbWFwJ3MgZmlsZSBkZXNjcmlwdG9yIGlzIHN0b3JlZCBhcyBz aW1pbGFybHkNCj4+Pj4+ICAgICAgICBkb25lIGFzIGluIEJQRl9QU0VVRE9fTUFQX0ZELCBhbmQg aW4gdGhlIHNlY29uZCBpbW0gZmllbGQNCj4+Pj4+ICAgICAgICAoYXMgbGRpbW02NCBpcyAyLWlu c24gd2lkZSkgd2Ugc3RvcmUgdGhlIGFjY2VzcyBvZmZzZXQNCj4+Pj4+ICAgICAgICBpbnRvIHRo ZSBzZWN0aW9uLg0KPj4+Pj4NCj4+Pj4+ICAgICA1KSBPbiBrZXJuZWwgc2lkZSwgdGhpcyBzcGVj aWFsIG1hcmtlZCBCUEZfUFNFVURPX01BUF9WQUxVRQ0KPj4+Pj4gICAgICAgIGxvYWQgd2lsbCB0 aGVuIHN0b3JlIHRoZSBhY3R1YWwgdGFyZ2V0IGFkZHJlc3MgaW4gb3JkZXINCj4+Pj4+ICAgICAg ICB0byBoYXZlIGEgJ21hcC1sb29rdXAnLWZyZWUgYWNjZXNzLiBUaGF0IGlzLCB0aGUgYWN0dWFs DQo+Pj4+PiAgICAgICAgbWFwIHZhbHVlIGJhc2UgYWRkcmVzcyArIG9mZnNldC4gVGhlIGRlc3Rp bmF0aW9uIHJlZ2lzdGVyDQo+Pj4+PiAgICAgICAgaW4gdGhlIHZlcmlmaWVyIHdpbGwgdGhlbiBi ZSBtYXJrZWQgYXMgUFRSX1RPX01BUF9WQUxVRSwNCj4+Pj4+ICAgICAgICBjb250YWluaW5nIHRo ZSBmaXhlZCBvZmZzZXQgYXMgcmVnLT5vZmYgYW5kIGJhY2tpbmcgQlBGDQo+Pj4+PiAgICAgICAg bWFwIGFzIHJlZy0+bWFwX3B0ci4gTWVhbmluZywgaXQncyB0cmVhdGVkIGFzIGFueSBvdGhlcg0K Pj4+Pj4gICAgICAgIG5vcm1hbCBtYXAgdmFsdWUgZnJvbSB2ZXJpZmljYXRpb24gc2lkZSwgb25s eSB3aXRoDQo+Pj4+PiAgICAgICAgZWZmaWNpZW50LCBkaXJlY3QgdmFsdWUgYWNjZXNzIGluc3Rl YWQgb2YgYWN0dWFsIGNhbGwgdG8NCj4+Pj4+ICAgICAgICBtYXAgbG9va3VwIGhlbHBlciBhcyBp biB0aGUgdHlwaWNhbCBjYXNlLg0KPj4+Pj4NCj4+Pj4+IFNpbXBsZSBleGFtcGxlIGR1bXAgb2Yg cHJvZ3JhbSB1c2luZyBnbG9iYWxzIHZhcnMgaW4gZWFjaA0KPj4+Pj4gc2VjdGlvbjoNCj4+Pj4+ DQo+Pj4+PiAgICAgICMgcmVhZGVsZiAtYSB0ZXN0X2dsb2JhbF9kYXRhLm8NCj4+Pj4+ICAgICAg Wy4uLl0NCj4+Pj4+ICAgICAgWyA2XSAuYnNzICAgICAgICAgICAgICBOT0JJVFMgICAgICAgICAg IDAwMDAwMDAwMDAwMDAwMDAgIDAwMDAwMzI4DQo+Pj4+PiAgICAgICAgICAgMDAwMDAwMDAwMDAw MDAxMCAgMDAwMDAwMDAwMDAwMDAwMCAgV0EgICAgICAgMCAgICAgMCAgICAgOA0KPj4+Pj4gICAg ICBbIDddIC5kYXRhICAgICAgICAgICAgIFBST0dCSVRTICAgICAgICAgMDAwMDAwMDAwMDAwMDAw MCAgMDAwMDAzMjgNCj4+Pj4+ICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDEwICAwMDAwMDAwMDAw MDAwMDAwICBXQSAgICAgICAwICAgICAwICAgICA4DQo+Pj4+PiAgICAgIFsgOF0gLnJvZGF0YSAg ICAgICAgICAgUFJPR0JJVFMgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwICAwMDAwMDMzOA0KPj4+ Pj4gICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMTggIDAwMDAwMDAwMDAwMDAwMDAgICBBICAgICAg IDAgICAgIDAgICAgIDgNCj4+Pj4+ICAgICAgWy4uLl0NCj4+Pj4+ICAgICAgICA5NTogMDAwMDAw MDAwMDAwMDAwMCAgICAgOCBPQkpFQ1QgIExPQ0FMICBERUZBVUxUICAgIDYgc3RhdGljX2Jzcw0K Pj4+Pj4gICAgICAgIDk2OiAwMDAwMDAwMDAwMDAwMDA4ICAgICA4IE9CSkVDVCAgTE9DQUwgIERF RkFVTFQgICAgNiBzdGF0aWNfYnNzMg0KPj4+Pj4gICAgICAgIDk3OiAwMDAwMDAwMDAwMDAwMDAw ICAgICA4IE9CSkVDVCAgTE9DQUwgIERFRkFVTFQgICAgNyBzdGF0aWNfZGF0YQ0KPj4+Pj4gICAg ICAgIDk4OiAwMDAwMDAwMDAwMDAwMDA4ICAgICA4IE9CSkVDVCAgTE9DQUwgIERFRkFVTFQgICAg NyBzdGF0aWNfZGF0YTINCj4+Pj4+ICAgICAgICA5OTogMDAwMDAwMDAwMDAwMDAwMCAgICAgOCBP QkpFQ1QgIExPQ0FMICBERUZBVUxUICAgIDggc3RhdGljX3JvZGF0YQ0KPj4+Pj4gICAgICAgMTAw OiAwMDAwMDAwMDAwMDAwMDA4ICAgICA4IE9CSkVDVCAgTE9DQUwgIERFRkFVTFQgICAgOCBzdGF0 aWNfcm9kYXRhMg0KPj4+Pj4gICAgICAgMTAxOiAwMDAwMDAwMDAwMDAwMDEwICAgICA4IE9CSkVD VCAgTE9DQUwgIERFRkFVTFQgICAgOCBzdGF0aWNfcm9kYXRhMw0KPj4+Pj4gICAgICBbLi4uXQ0K Pj4+Pj4NCj4+Pj4+ICAgICAgIyBicGZ0b29sIHByb2cNCj4+Pj4+ICAgICAgMTAzOiBzY2hlZF9j bHMgIG5hbWUgbG9hZF9zdGF0aWNfZGF0ICB0YWcgMzdhOGI2ODIyZmMzOWEyOSAgZ3BsDQo+Pj4+ PiAgICAgICAgICAgbG9hZGVkX2F0IDIwMTktMDItMjhUMDI6MDI6MzUrMDAwMCAgdWlkIDANCj4+ Pj4+ICAgICAgICAgICB4bGF0ZWQgNzEyQiAgaml0ZWQgNDI2QiAgbWVtbG9jayA0MDk2QiAgbWFw X2lkcyA2Myw2NCw2NSw2Ng0KPj4+Pj4gICAgICAjIGJwZnRvb2wgbWFwIHNob3cgaWQgNjMNCj4+ Pj4+ICAgICAgNjM6IGFycmF5ICBuYW1lIC5ic3MgIGZsYWdzIDB4MCAgICAgICAgICAgICAgICAg ICAgICA8LS0gLmJzcyBhcmVhLCBydw0KPj4+Pj4gICAgICAgICAga2V5IDRCICB2YWx1ZSAxNkIg IG1heF9lbnRyaWVzIDEgIG1lbWxvY2sgNDA5NkINCj4+Pj4+ICAgICAgIyBicGZ0b29sIG1hcCBz aG93IGlkIDY0DQo+Pj4+PiAgICAgIDY0OiBhcnJheSAgbmFtZSAuZGF0YSAgZmxhZ3MgMHgwICAg ICAgICAgICAgICAgICAgICAgPC0tIC5kYXRhIGFyZWEsIHJ3DQo+Pj4+PiAgICAgICAgICBrZXkg NEIgIHZhbHVlIDE2QiAgbWF4X2VudHJpZXMgMSAgbWVtbG9jayA0MDk2Qg0KPj4+Pj4gICAgICAj IGJwZnRvb2wgbWFwIHNob3cgaWQgNjUNCj4+Pj4+ICAgICAgNjU6IGFycmF5ICBuYW1lIC5yb2Rh dGEgIGZsYWdzIDB4ODAgICAgICAgICAgICAgICAgICA8LS0gLnJvZGF0YSBhcmVhLCBybw0KPj4+ Pj4gICAgICAgICAga2V5IDRCICB2YWx1ZSAyNEIgIG1heF9lbnRyaWVzIDEgIG1lbWxvY2sgNDA5 NkINCj4+Pj4+DQo+Pj4+PiAgICAgICMgYnBmdG9vbCBwcm9nIGR1bXAgeGxhdGVkIGlkIDEwMw0K Pj4+Pj4gICAgICBpbnQgbG9hZF9zdGF0aWNfZGF0YShzdHJ1Y3QgX19za19idWZmICogc2tiKToN Cj4+Pj4+ICAgICAgOyBpbnQgbG9hZF9zdGF0aWNfZGF0YShzdHJ1Y3QgX19za19idWZmICpza2Ip DQo+Pj4+PiAgICAgICAgIDA6IChiNykgcjEgPSAwDQo+Pj4+PiAgICAgIDsga2V5ID0gMDsNCj4+ Pj4+ICAgICAgICAgMTogKDYzKSAqKHUzMiAqKShyMTAgLTQpID0gcjENCj4+Pj4+ICAgICAgICAg MjogKGJmKSByNiA9IHIxMA0KPj4+Pj4gICAgICA7IGludCBsb2FkX3N0YXRpY19kYXRhKHN0cnVj dCBfX3NrX2J1ZmYgKnNrYikNCj4+Pj4+ICAgICAgICAgMzogKDA3KSByNiArPSAtNA0KPj4+Pj4g ICAgICA7IGJwZl9tYXBfdXBkYXRlX2VsZW0oJnJlc3VsdCwgJmtleSwgJnN0YXRpY19ic3MsIDAp Ow0KPj4+Pj4gICAgICAgICA0OiAoMTgpIHIxID0gbWFwW2lkOjY2XQ0KPj4+Pj4gICAgICAgICA2 OiAoYmYpIHIyID0gcjYNCj4+Pj4+ICAgICAgICAgNzogKDE4KSByMyA9IG1hcFtpZDo2M11bMF0r MCAgICAgICAgIDwtLSBkaXJlY3Qgc3RhdGljX2JzcyBhZGRyIGluIC5ic3MgYXJlYQ0KPj4+Pj4g ICAgICAgICA5OiAoYjcpIHI0ID0gMA0KPj4+Pj4gICAgICAgIDEwOiAoODUpIGNhbGwgYXJyYXlf bWFwX3VwZGF0ZV9lbGVtIzk5ODg4DQo+Pj4+PiAgICAgICAgMTE6IChiNykgcjEgPSAxDQo+Pj4+ PiAgICAgIDsga2V5ID0gMTsNCj4+Pj4+ICAgICAgICAxMjogKDYzKSAqKHUzMiAqKShyMTAgLTQp ID0gcjENCj4+Pj4+ICAgICAgOyBicGZfbWFwX3VwZGF0ZV9lbGVtKCZyZXN1bHQsICZrZXksICZz dGF0aWNfZGF0YSwgMCk7DQo+Pj4+PiAgICAgICAgMTM6ICgxOCkgcjEgPSBtYXBbaWQ6NjZdDQo+ Pj4+PiAgICAgICAgMTU6IChiZikgcjIgPSByNg0KPj4+Pj4gICAgICAgIDE2OiAoMTgpIHIzID0g bWFwW2lkOjY0XVswXSswICAgICAgICAgPC0tIGRpcmVjdCBzdGF0aWNfZGF0YSBhZGRyIGluIC5k YXRhIGFyZWENCj4+Pj4+ICAgICAgICAxODogKGI3KSByNCA9IDANCj4+Pj4+ICAgICAgICAxOTog KDg1KSBjYWxsIGFycmF5X21hcF91cGRhdGVfZWxlbSM5OTg4OA0KPj4+Pj4gICAgICAgIDIwOiAo YjcpIHIxID0gMg0KPj4+Pj4gICAgICA7IGtleSA9IDI7DQo+Pj4+PiAgICAgICAgMjE6ICg2Mykg Kih1MzIgKikocjEwIC00KSA9IHIxDQo+Pj4+PiAgICAgIDsgYnBmX21hcF91cGRhdGVfZWxlbSgm cmVzdWx0LCAma2V5LCAmc3RhdGljX3JvZGF0YSwgMCk7DQo+Pj4+PiAgICAgICAgMjI6ICgxOCkg cjEgPSBtYXBbaWQ6NjZdDQo+Pj4+PiAgICAgICAgMjQ6IChiZikgcjIgPSByNg0KPj4+Pj4gICAg ICAgIDI1OiAoMTgpIHIzID0gbWFwW2lkOjY1XVswXSswICAgICAgICAgPC0tIGRpcmVjdCBzdGF0 aWNfcm9kYXRhIGFkZHIgaW4gLnJvZGF0YSBhcmVhDQo+Pj4+PiAgICAgICAgMjc6IChiNykgcjQg PSAwDQo+Pj4+PiAgICAgICAgMjg6ICg4NSkgY2FsbCBhcnJheV9tYXBfdXBkYXRlX2VsZW0jOTk4 ODgNCj4+Pj4+ICAgICAgICAyOTogKGI3KSByMSA9IDMNCj4+Pj4+ICAgICAgOyBrZXkgPSAzOw0K Pj4+Pj4gICAgICAgIDMwOiAoNjMpICoodTMyICopKHIxMCAtNCkgPSByMQ0KPj4+Pj4gICAgICA7 IGJwZl9tYXBfdXBkYXRlX2VsZW0oJnJlc3VsdCwgJmtleSwgJnN0YXRpY19ic3MyLCAwKTsNCj4+ Pj4+ICAgICAgICAzMTogKDE4KSByNyA9IG1hcFtpZDo2M11bMF0rOCAgICAgICAgIDwtLS4NCj4+ Pj4+ICAgICAgICAzMzogKDE4KSByMSA9IG1hcFtpZDo2Nl0gICAgICAgICAgICAgICAgIHwNCj4+ Pj4+ICAgICAgICAzNTogKGJmKSByMiA9IHI2ICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4+ Pj4+ICAgICAgICAzNjogKDE4KSByMyA9IG1hcFtpZDo2M11bMF0rOCAgICAgICAgIDwtLSBkaXJl Y3Qgc3RhdGljX2JzczIgYWRkciBpbiAuYnNzIGFyZWENCj4+Pj4+ICAgICAgICAzODogKGI3KSBy NCA9IDANCj4+Pj4+ICAgICAgICAzOTogKDg1KSBjYWxsIGFycmF5X21hcF91cGRhdGVfZWxlbSM5 OTg4OA0KPj4+Pj4gICAgICBbLi4uXQ0KPj4+Pj4NCj4+Pj4+IEZvciBub3cgLmRhdGEvLnJvZGF0 YS8uYnNzIG1hcHMgYXJlIG5vdCBleHBvc2VkIHZpYSBBUEkgdG8gdGhlDQo+Pj4+PiB1c2VyLCBi dXQgdGhpcyBjb3VsZCBiZSBkb25lIGluIGEgc3Vic2VxdWVudCBzdGVwLg0KPj4+Pj4NCj4+Pj4+ IEJhc2VkIHVwb24gcmVjZW50IGZpeCBpbiBMTFZNLCBjb21taXQgYzBkYjZiNmJkNDQ0ICgiW0JQ Rl0gRG9uJ3QNCj4+Pj4+IGZhaWwgZm9yIHN0YXRpYyB2YXJpYWJsZXMiKS4NCj4+Pj4+DQo+Pj4+ PiBKb2ludCB3b3JrIHdpdGggSm9lIFN0cmluZ2VyLg0KPj4+Pj4NCj4+Pj4+ICAgICAgWzBdIExQ QyAyMDE4LCBCUEYgdHJhY2ssICJFTEYgcmVsb2NhdGlvbiBmb3Igc3RhdGljIGRhdGEgaW4gQlBG IiwNCj4+Pj4+ICAgICAgICAgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbHBjLWJwZjIwMTguaHRt bCNzZXNzaW9uLTMNCj4+Pj4+DQo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQm9ya21hbm4g PGRhbmllbEBpb2dlYXJib3gubmV0Pg0KPj4+Pj4gU2lnbmVkLW9mZi1ieTogSm9lIFN0cmluZ2Vy IDxqb2VAd2FuZC5uZXQubno+DQo+Pj4+PiAtLS0NCj4+Pj4+ICAgICB0b29scy9pbmNsdWRlL3Vh cGkvbGludXgvYnBmLmggfCAgMTAgKy0NCj4+Pj4+ICAgICB0b29scy9saWIvYnBmL2xpYmJwZi5j ICAgICAgICAgfCAyNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQo+Pj4+PiAg ICAgMiBmaWxlcyBjaGFuZ2VkLCAyMjYgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pDQo+ Pj4+Pg0KPj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaCBi L3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaA0KPj4+Pj4gaW5kZXggODg4NDA3MmUxYTQ2 Li4wNGIyNmY1OWI0MTMgMTAwNjQ0DQo+Pj4+PiAtLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGlu dXgvYnBmLmgNCj4+Pj4+ICsrKyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaA0KPj4+ Pj4gQEAgLTI4Nyw3ICsyODcsNyBAQCBlbnVtIGJwZl9hdHRhY2hfdHlwZSB7DQo+Pj4+PiBbLi4u XQ0KPj4+Pj4gQEAgLTk5OSw4ICsxMTIwLDEwIEBAIGJwZl9wcm9ncmFtX19jb2xsZWN0X3JlbG9j KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgR0VsZl9TaGRyICpzaGRyLA0KPj4+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpIChyZWwucl9pbmZvID4+IDMyKSwNCj4+Pj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSBzeW0uc3RfdmFsdWUsIHN5bS5z dF9uYW1lKTsNCj4+Pj4+DQo+Pj4+PiAtICAgICAgICAgICAgIGlmIChzeW0uc3Rfc2huZHggIT0g bWFwc19zaG5keCAmJiBzeW0uc3Rfc2huZHggIT0gdGV4dF9zaG5keCkgew0KPj4+Pj4gLSAgICAg ICAgICAgICAgICAgICAgIHByX3dhcm5pbmcoIlByb2dyYW0gJyVzJyBjb250YWlucyBub24tbWFw IHJlbGF0ZWQgcmVsbyBkYXRhIHBvaW50aW5nIHRvIHNlY3Rpb24gJXVcbiIsDQo+Pj4+PiArICAg ICAgICAgICAgIGlmIChzeW0uc3Rfc2huZHggIT0gbWFwc19zaG5keCAmJiBzeW0uc3Rfc2huZHgg IT0gdGV4dF9zaG5keCAmJg0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgc3ltLnN0X3NobmR4ICE9 IGRhdGFfc2huZHggJiYgc3ltLnN0X3NobmR4ICE9IHJvZGF0YV9zaG5keCAmJg0KPj4+Pj4gKyAg ICAgICAgICAgICAgICAgc3ltLnN0X3NobmR4ICE9IGJzc19zaG5keCkgew0KPj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIHByX3dhcm5pbmcoIlByb2dyYW0gJyVzJyBjb250YWlucyB1bnJlY29n bml6ZWQgcmVsbyBkYXRhIHBvaW50aW5nIHRvIHNlY3Rpb24gJXVcbiIsDQo+Pj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ctPnNlY3Rpb25fbmFtZSwgc3ltLnN0X3No bmR4KTsNCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtTElCQlBGX0VSUk5P X19SRUxPQzsNCj4+Pj4+ICAgICAgICAgICAgICAgICB9DQo+Pj4+PiBAQCAtMTA0NSw2ICsxMTY4 LDMwIEBAIGJwZl9wcm9ncmFtX19jb2xsZWN0X3JlbG9jKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJv ZywgR0VsZl9TaGRyICpzaGRyLA0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgcHJvZy0+ cmVsb2NfZGVzY1tpXS50eXBlID0gUkVMT19MRDY0Ow0KPj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgcHJvZy0+cmVsb2NfZGVzY1tpXS5pbnNuX2lkeCA9IGluc25faWR4Ow0KPj4+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgcHJvZy0+cmVsb2NfZGVzY1tpXS5tYXBfaWR4ID0gbWFwX2lk eDsNCj4+Pj4+ICsgICAgICAgICAgICAgfSBlbHNlIGlmIChzeW0uc3Rfc2huZHggPT0gZGF0YV9z aG5keCB8fA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bS5zdF9zaG5keCA9PSBy b2RhdGFfc2huZHggfHwNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBzeW0uc3Rfc2hu ZHggPT0gYnNzX3NobmR4KSB7DQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUg PSAoc3ltLnN0X3NobmR4ID09IGRhdGFfc2huZHgpICAgPyBSRUxPX0RBVEEgOg0KPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bS5zdF9zaG5keCA9PSByb2RhdGFfc2hu ZHgpID8gUkVMT19ST0RBVEEgOg0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVMT19CU1M7DQo+Pj4+PiArDQo+ Pj4+PiArICAgICAgICAgICAgICAgICAgICAgZm9yIChtYXBfaWR4ID0gMDsgbWFwX2lkeCA8IG5y X21hcHNfZ2xvYmFsOyBtYXBfaWR4KyspIHsNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChtYXBzX2dsb2JhbFttYXBfaWR4XS5nbG9iYWxfdHlwZSA9PSB0eXBlKSB7DQo+ Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByX2RlYnVnKCJyZWxv Y2F0aW9uOiBmaW5kIG1hcCAlemQgKCVzKSBmb3IgaW5zbiAldVxuIiwNCj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwX2lkeCwgbWFwc19nbG9i YWxbbWFwX2lkeF0ubmFtZSwgaW5zbl9pZHgpOw0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0NCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB9DQo+Pj4+PiArDQo+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgaWYgKG1hcF9pZHggPj0gbnJfbWFwc19nbG9iYWwpIHsNCj4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByX3dhcm5pbmcoImJwZiByZWxvY2F0aW9u OiBtYXBfaWR4ICVkIGxhcmdlIHRoYW4gJWRcbiIsDQo+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpbnQpbWFwX2lkeCwgKGludClucl9tYXBzX2dsb2JhbCAt IDEpOw0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1MSUJCUEZf RVJSTk9fX1JFTE9DOw0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4+Pj4+ICsNCj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICBwcm9nLT5yZWxvY19kZXNjW2ldLnR5cGUgPSB0eXBl Ow0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHByb2ctPnJlbG9jX2Rlc2NbaV0uaW5zbl9p ZHggPSBpbnNuX2lkeDsNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBwcm9nLT5yZWxvY19k ZXNjW2ldLm1hcF9pZHggPSBtYXBfaWR4Ow0KPj4+Pj4gICAgICAgICAgICAgICAgIH0NCj4+Pj4+ ICAgICAgICAgfQ0KPj4+Pj4gICAgICAgICByZXR1cm4gMDsNCj4+Pj4+IEBAIC0xMTc2LDE1ICsx MzIzLDU4IEBAIGJwZl9vYmplY3RfX3Byb2JlX2NhcHMoc3RydWN0IGJwZl9vYmplY3QgKm9iaikN Cj4+Pj4+ICAgICB9DQo+Pj4+Pg0KPj4+Pj4gICAgIHN0YXRpYyBpbnQNCj4+Pj4gWy4uLl0NCj4+ Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW50DQo+Pj4+PiArYnBmX29iamVjdF9fY3JlYXRlX21hcHMo c3RydWN0IGJwZl9vYmplY3QgKm9iaikNCj4+Pj4+ICt7DQo+Pj4+PiAgICAgICAgIHVuc2lnbmVk IGludCBpOw0KPj4+Pj4gICAgICAgICBpbnQgZXJyOw0KPj4+Pj4NCj4+Pj4+ICAgICAgICAgZm9y IChpID0gMDsgaSA8IG9iai0+bnJfbWFwczsgaSsrKSB7DQo+Pj4+PiAgICAgICAgICAgICAgICAg c3RydWN0IGJwZl9tYXAgKm1hcCA9ICZvYmotPm1hcHNbaV07DQo+Pj4+PiAtICAgICAgICAgICAg IHN0cnVjdCBicGZfbWFwX2RlZiAqZGVmID0gJm1hcC0+ZGVmOw0KPj4+Pj4gICAgICAgICAgICAg ICAgIGNoYXIgKmNwLCBlcnJtc2dbU1RSRVJSX0JVRlNJWkVdOw0KPj4+Pj4gICAgICAgICAgICAg ICAgIGludCAqcGZkID0gJm1hcC0+ZmQ7DQo+Pj4+Pg0KPj4+Pj4gQEAgLTExOTMsNDEgKzEzODMs NyBAQCBicGZfb2JqZWN0X19jcmVhdGVfbWFwcyhzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKQ0KPj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLT5uYW1lLCBtYXAtPmZkKTsN Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4+Pj4gICAgICAgICAg ICAgICAgIH0NCj4+Pj4+IC0NCj4+Pj4+IC0gICAgICAgICAgICAgaWYgKG9iai0+Y2Fwcy5uYW1l KQ0KPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9hdHRyLm5hbWUgPSBtYXAtPm5h bWU7DQo+Pj4+PiAtICAgICAgICAgICAgIGNyZWF0ZV9hdHRyLm1hcF9pZmluZGV4ID0gbWFwLT5t YXBfaWZpbmRleDsNCj4+Pj4+IC0gICAgICAgICAgICAgY3JlYXRlX2F0dHIubWFwX3R5cGUgPSBk ZWYtPnR5cGU7DQo+Pj4+PiAtICAgICAgICAgICAgIGNyZWF0ZV9hdHRyLm1hcF9mbGFncyA9IGRl Zi0+bWFwX2ZsYWdzOw0KPj4+Pj4gLSAgICAgICAgICAgICBjcmVhdGVfYXR0ci5rZXlfc2l6ZSA9 IGRlZi0+a2V5X3NpemU7DQo+Pj4+PiAtICAgICAgICAgICAgIGNyZWF0ZV9hdHRyLnZhbHVlX3Np emUgPSBkZWYtPnZhbHVlX3NpemU7DQo+Pj4+PiAtICAgICAgICAgICAgIGNyZWF0ZV9hdHRyLm1h eF9lbnRyaWVzID0gZGVmLT5tYXhfZW50cmllczsNCj4+Pj4+IC0gICAgICAgICAgICAgY3JlYXRl X2F0dHIuYnRmX2ZkID0gMDsNCj4+Pj4+IC0gICAgICAgICAgICAgY3JlYXRlX2F0dHIuYnRmX2tl eV90eXBlX2lkID0gMDsNCj4+Pj4+IC0gICAgICAgICAgICAgY3JlYXRlX2F0dHIuYnRmX3ZhbHVl X3R5cGVfaWQgPSAwOw0KPj4+Pj4gLSAgICAgICAgICAgICBpZiAoYnBmX21hcF90eXBlX19pc19t YXBfaW5fbWFwKGRlZi0+dHlwZSkgJiYNCj4+Pj4+IC0gICAgICAgICAgICAgICAgIG1hcC0+aW5u ZXJfbWFwX2ZkID49IDApDQo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2F0dHIu aW5uZXJfbWFwX2ZkID0gbWFwLT5pbm5lcl9tYXBfZmQ7DQo+Pj4+PiAtDQo+Pj4+PiAtICAgICAg ICAgICAgIGlmIChvYmotPmJ0ZiAmJiAhYnBmX21hcF9maW5kX2J0Zl9pbmZvKG1hcCwgb2JqLT5i dGYpKSB7DQo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2F0dHIuYnRmX2ZkID0g YnRmX19mZChvYmotPmJ0Zik7DQo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2F0 dHIuYnRmX2tleV90eXBlX2lkID0gbWFwLT5idGZfa2V5X3R5cGVfaWQ7DQo+Pj4+PiAtICAgICAg ICAgICAgICAgICAgICAgY3JlYXRlX2F0dHIuYnRmX3ZhbHVlX3R5cGVfaWQgPSBtYXAtPmJ0Zl92 YWx1ZV90eXBlX2lkOw0KPj4+Pj4gLSAgICAgICAgICAgICB9DQo+Pj4+PiAtDQo+Pj4+PiAtICAg ICAgICAgICAgICpwZmQgPSBicGZfY3JlYXRlX21hcF94YXR0cigmY3JlYXRlX2F0dHIpOw0KPj4+ Pj4gLSAgICAgICAgICAgICBpZiAoKnBmZCA8IDAgJiYgY3JlYXRlX2F0dHIuYnRmX2tleV90eXBl X2lkKSB7DQo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgY3AgPSBsaWJicGZfc3RyZXJyb3Jf cihlcnJubywgZXJybXNnLCBzaXplb2YoZXJybXNnKSk7DQo+Pj4+PiAtICAgICAgICAgICAgICAg ICAgICAgcHJfd2FybmluZygiRXJyb3IgaW4gYnBmX2NyZWF0ZV9tYXBfeGF0dHIoJXMpOiVzKCVk KS4gUmV0cnlpbmcgd2l0aG91dCBCVEYuXG4iLA0KPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWFwLT5uYW1lLCBjcCwgZXJybm8pOw0KPj4+Pj4gLSAgICAgICAgICAgICAg ICAgICAgIGNyZWF0ZV9hdHRyLmJ0Zl9mZCA9IDA7DQo+Pj4+PiAtICAgICAgICAgICAgICAgICAg ICAgY3JlYXRlX2F0dHIuYnRmX2tleV90eXBlX2lkID0gMDsNCj4+Pj4+IC0gICAgICAgICAgICAg ICAgICAgICBjcmVhdGVfYXR0ci5idGZfdmFsdWVfdHlwZV9pZCA9IDA7DQo+Pj4+PiAtICAgICAg ICAgICAgICAgICAgICAgbWFwLT5idGZfa2V5X3R5cGVfaWQgPSAwOw0KPj4+Pj4gLSAgICAgICAg ICAgICAgICAgICAgIG1hcC0+YnRmX3ZhbHVlX3R5cGVfaWQgPSAwOw0KPj4+Pj4gLSAgICAgICAg ICAgICAgICAgICAgICpwZmQgPSBicGZfY3JlYXRlX21hcF94YXR0cigmY3JlYXRlX2F0dHIpOw0K Pj4+Pj4gLSAgICAgICAgICAgICB9DQo+Pj4+PiAtDQo+Pj4+PiArICAgICAgICAgICAgICpwZmQg PSBicGZfb2JqZWN0X19jcmVhdGVfbWFwKG9iaiwgbWFwKTsNCj4+Pj4+ICAgICAgICAgICAgICAg ICBpZiAoKnBmZCA8IDApIHsNCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBq Ow0KPj4+Pj4NCj4+Pj4+IEBAIC0xNDEyLDYgKzE1NjgsMjQgQEAgYnBmX3Byb2dyYW1fX3JlbG9j YXRlKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgc3RydWN0IGJwZl9vYmplY3QgKm9iaikNCj4+ Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZwcm9nLT5yZWxvY19kZXNjW2ldKTsNCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChlcnIpDQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7 DQo+Pj4+PiArICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvZy0+cmVsb2NfZGVzY1tpXS50eXBl ID09IFJFTE9fREFUQSB8fA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ctPnJl bG9jX2Rlc2NbaV0udHlwZSA9PSBSRUxPX1JPREFUQSB8fA0KPj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHByb2ctPnJlbG9jX2Rlc2NbaV0udHlwZSA9PSBSRUxPX0JTUykgew0KPj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBicGZfaW5zbiAqaW5zbnMgPSBwcm9nLT5pbnNu czsNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zbl9pZHgsIG1hcF9pZHgsIGRh dGFfb2ZmOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGluc25faWR4ID0g cHJvZy0+cmVsb2NfZGVzY1tpXS5pbnNuX2lkeDsNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICBtYXBfaWR4ICA9IHByb2ctPnJlbG9jX2Rlc2NbaV0ubWFwX2lkeDsNCj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICBkYXRhX29mZiA9IGluc25zW2luc25faWR4XS5pbW07DQo+Pj4+DQo+Pj4+ IEkgd2FudCB0byBwb2ludCB0byBhIHN1YnRsZSBkaWZmZXJlbmNlIGhlcmUgYmV0d2VlbiBoYW5k bGluZyBwdXJlIGdsb2JhbA0KPj4+PiB2YXJpYWJsZXMgYW5kIHN0YXRpYyBnbG9iYWwgdmFyaWFi bGVzLiBUaGUgImltbSIgdmFsdWUgaXMgb25seSBhdmFpbGFibGUNCj4+Pj4gZm9yIHN0YXRpYyB2 YXJpYWJsZXMuIEZvciBleGFtcGxlLA0KPj4+Pg0KPj4+PiAtYmFzaC00LjQkIGNhdCBnLmMNCj4+ Pj4gc3RhdGljIHZvbGF0aWxlIGxvbmcgc2cgPSAyOw0KPj4+PiBzdGF0aWMgdm9sYXRpbGUgaW50 IHNpID0gMzsNCj4+Pj4gbG9uZyBnID0gNDsNCj4+Pj4gaW50IGkgPSA1Ow0KPj4+PiBpbnQgdGVz dCgpIHsgcmV0dXJuIHNnICsgc2kgKyBnICsgaTsgfQ0KPj4+PiAtYmFzaC00LjQkDQo+Pj4+IC1i YXNoLTQuNCQgY2xhbmcgLXRhcmdldCBicGYgLU8yIC1jIGcuYw0KPj4+Pg0KPj4+PiAtYmFzaC00 LjQkIHJlYWRlbGYgLXMgZy5vDQo+Pj4+DQo+Pj4+DQo+Pj4+IFN5bWJvbCB0YWJsZSAnLnN5bXRh YicgY29udGFpbnMgOCBlbnRyaWVzOg0KPj4+PiAgICAgICBOdW06ICAgIFZhbHVlICAgICAgICAg IFNpemUgVHlwZSAgICBCaW5kICAgVmlzICAgICAgTmR4IE5hbWUNCj4+Pj4gICAgICAgICAwOiAw MDAwMDAwMDAwMDAwMDAwICAgICAwIE5PVFlQRSAgTE9DQUwgIERFRkFVTFQgIFVORA0KPj4+PiAg ICAgICAgIDE6IDAwMDAwMDAwMDAwMDAwMDAgICAgIDAgRklMRSAgICBMT0NBTCAgREVGQVVMVCAg QUJTIGcuYw0KPj4+PiAgICAgICAgIDI6IDAwMDAwMDAwMDAwMDAwMTAgICAgIDggT0JKRUNUICBM T0NBTCAgREVGQVVMVCAgICA0IHNnDQo+Pj4+ICAgICAgICAgMzogMDAwMDAwMDAwMDAwMDAxOCAg ICAgNCBPQkpFQ1QgIExPQ0FMICBERUZBVUxUICAgIDQgc2kNCj4+Pj4gICAgICAgICA0OiAwMDAw MDAwMDAwMDAwMDAwICAgICAwIFNFQ1RJT04gTE9DQUwgIERFRkFVTFQgICAgNA0KPj4+PiAgICAg ICAgIDU6IDAwMDAwMDAwMDAwMDAwMDAgICAgIDggT0JKRUNUICBHTE9CQUwgREVGQVVMVCAgICA0 IGcNCj4+Pj4gICAgICAgICA2OiAwMDAwMDAwMDAwMDAwMDA4ICAgICA0IE9CSkVDVCAgR0xPQkFM IERFRkFVTFQgICAgNCBpDQo+Pj4+ICAgICAgICAgNzogMDAwMDAwMDAwMDAwMDAwMCAgIDEyOCBG VU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDIgdGVzdA0KPj4+PiAtYmFzaC00LjQkDQo+Pj4+IC1i YXNoLTQuNCQgbGx2bS1yZWFkZWxmIC1yIGcubw0KPj4+Pg0KPj4+PiBSZWxvY2F0aW9uIHNlY3Rp b24gJy5yZWwudGV4dCcgYXQgb2Zmc2V0IDB4MWQ4IGNvbnRhaW5zIDQgZW50cmllczoNCj4+Pj4g ICAgICAgIE9mZnNldCAgICAgICAgICAgICBJbmZvICAgICAgICAgICAgIFR5cGUgICAgICAgICAg ICAgICBTeW1ib2wncw0KPj4+PiBWYWx1ZSAgU3ltYm9sJ3MgTmFtZQ0KPj4+PiAwMDAwMDAwMDAw MDAwMDAwICAwMDAwMDAwNDAwMDAwMDAxIFJfQlBGXzY0XzY0DQo+Pj4+IDAwMDAwMDAwMDAwMDAw MDAgLmRhdGENCj4+Pj4gMDAwMDAwMDAwMDAwMDAxOCAgMDAwMDAwMDQwMDAwMDAwMSBSX0JQRl82 NF82NA0KPj4+PiAwMDAwMDAwMDAwMDAwMDAwIC5kYXRhDQo+Pj4+IDAwMDAwMDAwMDAwMDAwMzgg IDAwMDAwMDA1MDAwMDAwMDEgUl9CUEZfNjRfNjQgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAw IGcNCj4+Pj4gMDAwMDAwMDAwMDAwMDA1OCAgMDAwMDAwMDYwMDAwMDAwMSBSX0JQRl82NF82NCAg ICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDggaQ0KPj4+PiAtYmFzaC00LjQkIGxsdm0tb2JqZHVt cCAtZCBnLm8NCj4+Pj4NCj4+Pj4gZy5vOiAgICBmaWxlIGZvcm1hdCBFTEY2NC1CUEYNCj4+Pj4N Cj4+Pj4gRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiAudGV4dDoNCj4+Pj4gMDAwMDAwMDAwMDAwMDAw MCB0ZXN0Og0KPj4+PiAgICAgICAgICAgMDogICAgICAgMTggMDEgMDAgMDAgMTAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+Pj4gcjEgPSAxNiBsbA0KPj4+PiAgICAgICAgICAg MjogICAgICAgNzkgMTEgMDAgMDAgMDAgMDAgMDAgMDAgICAgICAgICByMSA9ICoodTY0ICopKHIx ICsgMCkNCj4+Pj4gICAgICAgICAgIDM6ICAgICAgIDE4IDAyIDAwIDAwIDE4IDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+Pj4+IHIyID0gMjQgbGwNCj4+Pj4gICAgICAgICAgIDU6 ICAgICAgIDYxIDIyIDAwIDAwIDAwIDAwIDAwIDAwICAgICAgICAgcjIgPSAqKHUzMiAqKShyMiAr IDApDQo+Pj4+ICAgICAgICAgICA2OiAgICAgICAwZiAyMSAwMCAwMCAwMCAwMCAwMCAwMCAgICAg ICAgIHIxICs9IHIyDQo+Pj4+ICAgICAgICAgICA3OiAgICAgICAxOCAwMiAwMCAwMCAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KPj4+PiByMiA9IDAgbGwNCj4+Pj4gICAgICAg ICAgIDk6ICAgICAgIDc5IDIyIDAwIDAwIDAwIDAwIDAwIDAwICAgICAgICAgcjIgPSAqKHU2NCAq KShyMiArIDApDQo+Pj4+ICAgICAgICAgIDEwOiAgICAgICAwZiAyMSAwMCAwMCAwMCAwMCAwMCAw MCAgICAgICAgIHIxICs9IHIyDQo+Pj4+ICAgICAgICAgIDExOiAgICAgICAxOCAwMiAwMCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KPj4+PiByMiA9IDAgbGwNCj4+Pj4g ICAgICAgICAgMTM6ICAgICAgIDYxIDIwIDAwIDAwIDAwIDAwIDAwIDAwICAgICAgICAgcjAgPSAq KHUzMiAqKShyMiArIDApDQo+Pj4+ICAgICAgICAgIDE0OiAgICAgICAwZiAxMCAwMCAwMCAwMCAw MCAwMCAwMCAgICAgICAgIHIwICs9IHIxDQo+Pj4+ICAgICAgICAgIDE1OiAgICAgICA5NSAwMCAw MCAwMCAwMCAwMCAwMCAwMCAgICAgICAgIGV4aXQNCj4+Pj4gLWJhc2gtNC40JA0KPj4+Pg0KPj4+ PiBZb3UgY2FuIHNlZSB0aGUgYWJvdmUsIHRoZSBub24tc3RhdGljIGdsb2JhbCBhY2Nlc3MgZG9l cyBub3QgaGF2ZSBpdHMNCj4+Pj4gaW4tc2VjdGlvbiBvZmZzZXQgZW5jb2RlZCBpbiB0aGUgaW5z biBpdHNlbGYuIFRoZSBkaWZmZXJlbmNlIGlzIGR1ZSB0bw0KPj4+PiBsbHZtIHRyZWF0aW5nIHN0 YXRpYyBnbG9iYWwgYW5kIG5vbi1zdGF0aWMgZ2xvYmFsIGRpZmZlcmVudGx5Lg0KPj4+Pg0KPj4+ PiBUbyBzdXBwb3J0IGJvdGggY2FzZXMsIGR1cmluZyByZWxvY2F0aW9uIHJlY29yZGluZyBzdGFn ZSwgeW91IGNhbg0KPj4+PiBhbHNvIHJlY29yZDoNCj4+Pj4gICAgICAgLiBzeW1ib2wgYmluZGlu ZyAoR0VMRl9TVF9CSU5EKHN5bS5zdF9pbmZvKSksDQo+Pj4+ICAgICAgICAgbm9uLXN0YXRpYyBn bG9iYWwgaGFzIGJpbmRpbmcgU1RCX0dMT0JBTCBhbmQgc3RhdGljDQo+Pj4+ICAgICAgICAgZ2xv YmFsIGhhcyBiaW5kaW5nIFNUQl9MT0NBTA0KPj4+PiAgICAgICAuIHN5bWJvbCB2YWx1ZSAoc3lt LnN0X3ZhbHVlKQ0KPj4+Pg0KPj4+PiBEdXJpbmcgdGhlIGFib3ZlIHJlbG9jYXRpb24gcmVzb2x1 dGlvbiwgaWYgc3ltYm9sIGJpbmQgaXMgbG9jYWwsIGRvDQo+Pj4+IHdoYXQgeW91IGFscmVhZHkg ZGlkIGhlcmUuIElmIHN5bWJvbCBiaW5kIGlzIGdsb2JhbCwgYXNzaWduIGRhdGFfb2ZmDQo+Pj4+ IHdpdGggc3ltYm9sIHZhbHVlLg0KPj4+Pg0KPj4+PiBUaGlzIGFwcGxpZWQgdG8gYm90aCAuZGF0 YSBhbmQgLnJvZGF0YSBzZWN0aW9ucy4NCj4+Pj4NCj4+Pj4gVGhlIG5vbiBpbml0aWFsaXplZA0K Pj4+PiBnbG9iYWwgdmFyaWFibGUgd2lsbCBub3QgYmUgaW4gYW55IGFsbG9jYXRlZCBzZWN0aW9u IGluIEVMRiBmaWxlLA0KPj4+PiBpdCBpcyBpbiBhIENPTSBzZWN0aW9uIHdoaWNoIGlzIHRvIGJl IGFsbG9jYXRlZCBieSBsb2FkZXIuDQo+Pj4+IFNvIHVzZXIgZGVmaW5lcyBzb21lIGxpa2UNCj4+ Pj4gICAgICAgaW50IGc7DQo+Pj4+IGFuZCBsYXRlciBvbiB1c2VzIGl0LiBSaWdodCBub3csIGl0 IHdpbGwgbm90IHdvcmsuIFRoZSB3b3JrYXJvdW5kDQo+Pj4+IGlzICJpbnQgZyA9IDQiLCBvciAi c3RhdGljIGludCBnIi4gSSBndWVzcyBpdCBzaG91bGQgYmUNCj4+Pj4gb2theSwgd2Ugc2hvdWxk IGVuY291cmFnZSB1c2VycyB0byB1c2UgInN0YXRpYyIgdmFyaWFibGVzIGluc3RlYWQuDQo+Pj4N Cj4+PiBXb3VsZCBpdCBiZSByZWFzb25hYmxlIHRvIGp1c3QgcGxhaW4gZGlzYWJsZSB1c2FnZSBv ZiB1bmluaXRpYWxpemVkDQo+Pj4gZ2xvYmFsIHZhcmlhYmxlcywgYXMgaXQga2luZCBvZiBnb2Vz IGFnYWluc3QgQlBGJ3MgcGhpbG9zb3BoeSB0aGF0DQo+Pj4gZXZlcnl0aGluZyBzaG91bGQgYmUg d3JpdHRlbiB0bywgYmVmb3JlIGNhbiBiZSByZWFkPyBTbyB3aGlsZSB3ZSBjYW4NCj4+PiBqdXN0 IGltcGxpY2l0bHkgemVyby1vdXQgZXZlcnl0aGluZyBiZWZvcmVoYW5kLCBpdCBtaWdodCBiZSBh IGdvb2QNCj4+PiBpZGVhIHRvIHJlbWluZCBhbmQgZW5mb3JjZSB0aGF0IGV4cGxpY3RseT8NCj4+ DQo+PiBUaGVyZSB3aWxsIGJlIGEgdmVyaWZpZXIgZXJyb3IsIHNvIHRoZSBwcm9ncmFtIHdpdGgg ImludCBnIiB3aWxsIG5vdA0KPj4gcnVuLCB0aGUgc2FtZSBhcyB0b2RheS4NCj4gDQo+IFllYWgs IEkgdW5kZXJzdGFuZCwgYnV0IHdpdGggcHJldHR5IG9ic2N1cmUgZXJyb3IgYWJvdXQgbm90IHN1 cHBvcnRpbmcNCj4gcmVsb2NhdGlvbnMgYW5kIHN0dWZmLCByaWdodD8NCj4gDQo+Pg0KPj4gV2Ug Y291bGQgaW1wcm92ZSBieSBmbGFnZ2luZyB0aGUgZXJyb3IgYXQgY29tcGlsZXIgZXJyb3Igb3Ig bGliYnBmIHRpbWUuDQo+IA0KPiBTbyB0aGF0J3MgbXkgcG9pbnQsIHRoYXQgaGF2aW5nIGNvbXBp bGVyIGVtaXQgbmljZXIgZXJyb3IgZm9yDQo+IHRhcmdldD1icGYgd291bGQgYmUgbmljZSB0b3Vj aCB0byB1c2VyIGV4cGVyaWVuY2UgOikNCg0KSSBqdXN0IHJlbW92ZWQgYSBjb21waWxlciBlcnJv ciBmb3Igc3RhdGljIHZhcmlhYmxlcy4uLg0KDQpJIHdpbGwgd2FpdCBmb3IgdGhpcyBwYXRjaCBs YW5kcywgaGVhciBwZW9wbGUgY29tcGxhaW5zIChlaXRoZXIgbmVlZCB0bw0Kc3VwcG9ydCAiaW50 IGc7IiBvciBuZWVkIGJldHRlciBlcnJvciBtZXNzYWdlcywgZXRjLikgYW5kIHRoZW4gZGVjaWRl DQp3aGF0IG5leHQgdG8gZG8gLi4uDQoNCj4gDQo+PiBCdXQgaXQgaXMgbm90IHJlcXVpcmVkLiBJ IGFtIG1lbnRpb25pbmcganVzdCBmb3IgY29tcGxldGVuZXNzLg0KPj4NCj4+Pg0KPj4+Pg0KPj4+ Pj4gKw0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChpbnNuX2lkeCArIDEgPj0gKGlu dClwcm9nLT5pbnNuc19jbnQpIHsNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByX3dhcm5pbmcoInJlbG9jYXRpb24gb3V0IG9mIHJhbmdlOiAnJXMnXG4iLA0KPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9nLT5zZWN0aW9uX25hbWUp Ow0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1MSUJCUEZfRVJS Tk9fX1JFTE9DOw0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICBpbnNuc1tpbnNuX2lkeF0uc3JjX3JlZyA9IEJQRl9QU0VVRE9fTUFQX1ZB TFVFOw0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGluc25zW2luc25faWR4XS5pbW0gPSBv YmotPm1hcHNfZ2xvYmFsW21hcF9pZHhdLmZkOw0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg IGluc25zW2luc25faWR4ICsgMV0uaW1tID0gZGF0YV9vZmY7DQo+Pj4+PiAgICAgICAgICAgICAg ICAgfQ0KPj4+Pj4gICAgICAgICB9DQo+Pj4+Pg0KPj4+Pj4gQEAgLTE3MTcsNiArMTg5MSw3IEBA IF9fYnBmX29iamVjdF9fb3Blbihjb25zdCBjaGFyICpwYXRoLCB2b2lkICpvYmpfYnVmLCBzaXpl X3Qgb2JqX2J1Zl9zeiwNCj4+Pj4+DQo+Pj4+PiAgICAgICAgIENIRUNLX0VSUihicGZfb2JqZWN0 X19lbGZfaW5pdChvYmopLCBlcnIsIG91dCk7DQo+Pj4+PiAgICAgICAgIENIRUNLX0VSUihicGZf b2JqZWN0X19jaGVja19lbmRpYW5uZXNzKG9iaiksIGVyciwgb3V0KTsNCj4+Pj4+ICsgICAgIENI RUNLX0VSUihicGZfb2JqZWN0X19wcm9iZV9jYXBzKG9iaiksIGVyciwgb3V0KTsNCj4+Pj4+ICAg ICAgICAgQ0hFQ0tfRVJSKGJwZl9vYmplY3RfX2VsZl9jb2xsZWN0KG9iaiwgZmxhZ3MpLCBlcnIs IG91dCk7DQo+Pj4+PiAgICAgICAgIENIRUNLX0VSUihicGZfb2JqZWN0X19jb2xsZWN0X3JlbG9j KG9iaiksIGVyciwgb3V0KTsNCj4+Pj4+ICAgICAgICAgQ0hFQ0tfRVJSKGJwZl9vYmplY3RfX3Zh bGlkYXRlKG9iaiwgbmVlZHNfa3ZlciksIGVyciwgb3V0KTsNCj4+Pj4+IEBAIC0xNzg5LDcgKzE5 NjQsOCBAQCBpbnQgYnBmX29iamVjdF9fdW5sb2FkKHN0cnVjdCBicGZfb2JqZWN0ICpvYmopDQo+ Pj4+Pg0KPj4+Pj4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqLT5ucl9tYXBzOyBpKyspDQo+ Pj4+PiAgICAgICAgICAgICAgICAgemNsb3NlKG9iai0+bWFwc1tpXS5mZCk7DQo+Pj4+PiAtDQo+ Pj4+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqLT5ucl9tYXBzX2dsb2JhbDsgaSsrKQ0KPj4+ Pj4gKyAgICAgICAgICAgICB6Y2xvc2Uob2JqLT5tYXBzX2dsb2JhbFtpXS5mZCk7DQo+Pj4+PiAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBvYmotPm5yX3Byb2dyYW1zOyBpKyspDQo+Pj4+PiAgICAg ICAgICAgICAgICAgYnBmX3Byb2dyYW1fX3VubG9hZCgmb2JqLT5wcm9ncmFtc1tpXSk7DQo+Pj4+ Pg0KPj4+Pj4gQEAgLTE4MTAsNyArMTk4Niw2IEBAIGludCBicGZfb2JqZWN0X19sb2FkKHN0cnVj dCBicGZfb2JqZWN0ICpvYmopDQo+Pj4+Pg0KPj4+Pj4gICAgICAgICBvYmotPmxvYWRlZCA9IHRy dWU7DQo+Pj4+Pg0KPj4+Pj4gLSAgICAgQ0hFQ0tfRVJSKGJwZl9vYmplY3RfX3Byb2JlX2NhcHMo b2JqKSwgZXJyLCBvdXQpOw0KPj4+Pj4gICAgICAgICBDSEVDS19FUlIoYnBmX29iamVjdF9fY3Jl YXRlX21hcHMob2JqKSwgZXJyLCBvdXQpOw0KPj4+Pj4gICAgICAgICBDSEVDS19FUlIoYnBmX29i amVjdF9fcmVsb2NhdGUob2JqKSwgZXJyLCBvdXQpOw0KPj4+Pj4gICAgICAgICBDSEVDS19FUlIo YnBmX29iamVjdF9fbG9hZF9wcm9ncyhvYmopLCBlcnIsIG91dCk7DQo+Pj4+Pg0K