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,URIBL_BLOCKED autolearn=ham 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 2CC3BC43381 for ; Fri, 1 Mar 2019 18:12:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D500B206BA for ; Fri, 1 Mar 2019 18:12:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="XjTm4dUP"; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="Cwb514/9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726835AbfCASMM (ORCPT ); Fri, 1 Mar 2019 13:12:12 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:58928 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726195AbfCASMM (ORCPT ); Fri, 1 Mar 2019 13:12:12 -0500 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x21I1mwf029143; Fri, 1 Mar 2019 10:11:42 -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=Ri3nwoBWrmL1v4MOQ/ed3ltqlE0KNVTccjFBU6rLYNg=; b=XjTm4dUP5KWHr3GoGU4NBsHjHF89Nhckya9NaKQdKxTLOIYIohm7kgdloeTwU+DfcTQa cizn/mqVu+yfGCf2hctVkoMgpIcIVmAaSn2Fpxho4oGosc0rMH/mGPgDR+cuzSYOfhaY 0Mitb68/79M2GdP0PzMDyIz27SveYBsREoM= Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2qy80w8e15-7 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 01 Mar 2019 10:11:42 -0800 Received: from prn-hub05.TheFacebook.com (2620:10d:c081:35::129) by prn-hub04.TheFacebook.com (2620:10d:c081:35::128) 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 10:11:25 -0800 Received: from NAM01-BY2-obe.outbound.protection.outlook.com (192.168.54.28) by o365-in.thefacebook.com (192.168.16.29) 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 10:11:25 -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=Ri3nwoBWrmL1v4MOQ/ed3ltqlE0KNVTccjFBU6rLYNg=; b=Cwb514/9FKthZE7o2QajKNAklzvLbdzBe0NsdELoRtX8tiFta+AiCRaVvI7IHYhJBWUFEBxhv7K2QZGcsPehhdDl4mE/OHihLiQHEdQCq2oh/e9NXAWMPDCUt32oQFvrKSZsEo3u3D7VGP36FNSXl1+echVmqVmXBx5Teate9Ig= Received: from BYAPR15MB3384.namprd15.prod.outlook.com (20.179.59.17) by BYAPR15MB3384.namprd15.prod.outlook.com (20.179.59.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.15; Fri, 1 Mar 2019 18:11:22 +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 18:11:22 +0000 From: Yonghong Song To: Daniel Borkmann , Alexei Starovoitov CC: "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: AQHUz7wVyvWwKXwnbUuxMyCVCB5fAqX3FN6A Date: Fri, 1 Mar 2019 18:11:22 +0000 Message-ID: <1e21ba74-f236-60b8-f33c-f3f060419197@fb.com> References: <20190228231829.11993-1-daniel@iogearbox.net> <20190228231829.11993-6-daniel@iogearbox.net> In-Reply-To: <20190228231829.11993-6-daniel@iogearbox.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BYAPR02CA0048.namprd02.prod.outlook.com (2603:10b6:a03:54::25) 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: d12de8fa-dc21-415a-3979-08d69e714f6a x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(2017052603328)(7153060)(7193020);SRVR:BYAPR15MB3384; x-ms-traffictypediagnostic: BYAPR15MB3384: x-ms-exchange-purlcount: 1 x-microsoft-exchange-diagnostics: 1;BYAPR15MB3384;20:zlurQnLixbPLcSR+raQ6qCo54Dn4IMo1SF4fYpDKk+fkPxHLMW8XGHc0czhjaQNAtsYB53zu+ejGJzvfplySD1M+Fvpu+5bN1GNrl3s4lNbbozKEbH8YnuEUJARRBfiwo8mt/NPjHjlopQPgTkast8vzM3tKU1sfNt5py+GrrtA= x-microsoft-antispam-prvs: x-forefront-prvs: 09634B1196 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39860400002)(396003)(366004)(346002)(376002)(136003)(199004)(189003)(6116002)(5660300002)(8936002)(52116002)(54906003)(386003)(6506007)(53546011)(316002)(97736004)(6436002)(6512007)(229853002)(6306002)(31696002)(2906002)(6486002)(53946003)(6636002)(4326008)(86362001)(102836004)(110136005)(30864003)(6246003)(53936002)(25786009)(68736007)(105586002)(81156014)(8676002)(31686004)(46003)(478600001)(966005)(36756003)(81166006)(2616005)(476003)(446003)(486006)(256004)(14454004)(11346002)(76176011)(99286004)(186003)(71190400001)(71200400001)(305945005)(7736002)(5024004)(14444005)(106356001)(505234006);DIR:OUT;SFP:1102;SCL:1;SRVR:BYAPR15MB3384;H:BYAPR15MB3384.namprd15.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX: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: gYJIpGOVUDsgYrVJOQPd8EJoH2q3Rs36KbB3ZGZXabbsmuwQoLkW8qp9LZA7D0H/nKxVRyHmyYze+yJYzzOmhc136RtqE8/35PwYBn0bmmaKTtKIST+0ZOHTtPgRnAjwM9kkgiVAccAN5SRDMoD5v+khKJqalnE6Ey1JJqAMY4wFFqxh+t6CkwGsXezfToEy2InPfofEP2R51OjZzzAU8FVQyF16YSvrcqnMZKWmhtY496BGYQQkLsnvV7EAkSeNB4yCi4gf40jihdwqphW6I0Uf8chHbEu6i/eH0B/RX04bSy5v+SLcvVgsKsI9yKgSi5GFJMe6EBLeSo71wUXUTC4FV0fB9u3bqCr/x05tJBLcGsjoB+uBMXlqHK1rmYoLL7onsjmjtMKyDIlIWd1SCYYQrkPhp7OCMIw64ohlUFY= Content-Type: text/plain; charset="utf-8" Content-ID: <25A8AA3203659349999EF71C9A9F4F6F@namprd15.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: d12de8fa-dc21-415a-3979-08d69e714f6a X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Mar 2019 18:11:22.3010 (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: BYAPR15MB3384 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-03-01_12:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org DQoNCk9uIDIvMjgvMTkgMzoxOCBQTSwgRGFuaWVsIEJvcmttYW5uIHdyb3RlOg0KPiBUaGlzIHdv cmsgYWRkcyBCUEYgbG9hZGVyIHN1cHBvcnQgZm9yIGdsb2JhbCBkYXRhIHNlY3Rpb25zDQo+IHRv IGxpYmJwZi4gVGhpcyBhbGxvd3MgdG8gd3JpdGUgQlBGIHByb2dyYW1zIGluIG1vcmUgbmF0dXJh bA0KPiBDLWxpa2Ugd2F5IGJ5IGJlaW5nIGFibGUgdG8gZGVmaW5lIGdsb2JhbCB2YXJpYWJsZXMg YW5kIGNvbnN0DQo+IGRhdGEuDQo+IA0KPiBCYWNrIGF0IExQQyAyMDE4IFswXSB3ZSBwcmVzZW50 ZWQgYSBmaXJzdCBwcm90b3R5cGUgd2hpY2gNCj4gaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgZ2xv YmFsIGRhdGEgc2VjdGlvbnMgYnkgZXh0ZW5kaW5nIEJQRg0KPiBzeXNjYWxsIHdoZXJlIHVuaW9u IGJwZl9hdHRyIHdvdWxkIGdldCBhZGRpdGlvbmFsIG1lbW9yeS9zaXplDQo+IHBhaXIgZm9yIGVh Y2ggc2VjdGlvbiBwYXNzZWQgZHVyaW5nIHByb2cgbG9hZCBpbiBvcmRlciB0byBsYXRlcg0KPiBh ZGQgdGhpcyBiYXNlIGFkZHJlc3MgaW50byB0aGUgbGRpbW02NCBpbnN0cnVjdGlvbiBhbG9uZyB3 aXRoDQo+IHRoZSB1c2VyIHByb3ZpZGVkIG9mZnNldCB3aGVuIGFjY2Vzc2luZyBhIHZhcmlhYmxl LiBDb25zZW5zdXMNCj4gZnJvbSBMUEMgd2FzIHRoYXQgZm9yIHByb3BlciB1cHN0cmVhbSBzdXBw b3J0LCBpdCB3b3VsZCBiZQ0KPiBtb3JlIGRlc2lyYWJsZSB0byB1c2UgbWFwcyBpbnN0ZWFkIG9m IGJwZl9hdHRyIGV4dGVuc2lvbiBhcw0KPiB0aGlzIHdvdWxkIGFsbG93IGZvciBpbnRyb3NwZWN0 aW9uIG9mIHRoZXNlIHNlY3Rpb25zIGFzIHdlbGwNCj4gYXMgcG90ZW50aWFsIGxpZmUgdXBkYXRl cyBvZiB0aGVpciBjb250ZW50LiBUaGlzIHdvcmsgZm9sbG93cw0KPiB0aGlzIHBhdGggYnkgdGFr aW5nIHRoZSBmb2xsb3dpbmcgc3RlcHMgZnJvbSBsb2FkZXIgc2lkZToNCj4gDQo+ICAgMSkgSW4g YnBmX29iamVjdF9fZWxmX2NvbGxlY3QoKSBzdGVwIHdlIHBpY2sgdXAgIi5kYXRhIiwNCj4gICAg ICAiLnJvZGF0YSIsIGFuZCAiLmJzcyIgc2VjdGlvbiBpbmZvcm1hdGlvbi4NCj4gDQo+ICAgMikg SWYgcHJlc2VudCwgaW4gYnBmX29iamVjdF9faW5pdF9nbG9iYWxfbWFwcygpIHdlIGNyZWF0ZQ0K PiAgICAgIGEgbWFwIHRoYXQgY29ycmVzcG9uZHMgdG8gZWFjaCBvZiB0aGUgcHJlc2VudCBzZWN0 aW9ucy4NCj4gICAgICBHaXZlbiBzZWN0aW9uIHNpemUgYW5kIGFjY2VzcyBwcm9wZXJ0aWVzIGNh biBkaWZmZXIsIGENCj4gICAgICBzaW5nbGUgZW50cnkgYXJyYXkgbWFwIGlzIGNyZWF0ZWQgd2l0 aCB2YWx1ZSBzaXplIHRoYXQNCj4gICAgICBpcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBFTEYgc2Vj dGlvbiBzaXplIG9mIC5kYXRhLCAuYnNzDQo+ICAgICAgb3IgLnJvZGF0YS4gSW4gdGhlIGxhdHRl ciBjYXNlLCB0aGUgbWFwIGlzIGNyZWF0ZWQgYXMNCj4gICAgICByZWFkLW9ubHkgZnJvbSBwcm9n cmFtIHNpZGUgc3VjaCB0aGF0IHZlcmlmaWVyIHJlamVjdHMNCj4gICAgICBhbnkgd3JpdGUgYXR0 ZW1wdHMgaW50byAucm9kYXRhLiBJbiBhIHN1YnNlcXVlbnQgc3RlcCwNCj4gICAgICBmb3IgLmRh dGEgYW5kIC5yb2RhdGEgc2VjdGlvbnMsIHRoZSBzZWN0aW9uIGNvbnRlbnQgaXMNCj4gICAgICBj b3BpZWQgaW50byB0aGUgbWFwIHRocm91Z2ggYnBmX21hcF91cGRhdGVfZWxlbSgpLiBGb3INCj4g ICAgICAuYnNzIHRoaXMgaXMgbm90IG5lY2Vzc2FyeSBzaW5jZSBhcnJheSBtYXAgaXMgYWxyZWFk eQ0KPiAgICAgIHplcm8taW5pdGlhbGl6ZWQgYnkgZGVmYXVsdC4NCj4gDQo+ICAgMykgSW4gYnBm X3Byb2dyYW1fX2NvbGxlY3RfcmVsb2MoKSBzdGVwLCB3ZSByZWNvcmQgdGhlDQo+ICAgICAgY29y cmVzcG9uZGluZyBtYXAsIGluc24gaW5kZXgsIGFuZCByZWxvY2F0aW9uIHR5cGUgZm9yDQo+ICAg ICAgdGhlIGdsb2JhbCBkYXRhLg0KPiANCj4gICA0KSBBbmQgbGFzdCBidXQgbm90IGxlYXN0IGlu IHRoZSBhY3R1YWwgcmVsb2NhdGlvbiBzdGVwIGluDQo+ICAgICAgYnBmX3Byb2dyYW1fX3JlbG9j YXRlKCksIHdlIG1hcmsgdGhlIGxkaW1tNjQgaW5zdHJ1Y3Rpb24NCj4gICAgICB3aXRoIHNyY19y ZWcgPSBCUEZfUFNFVURPX01BUF9WQUxVRSB3aGVyZSBpbiB0aGUgZmlyc3QNCj4gICAgICBpbW0g ZmllbGQgdGhlIG1hcCdzIGZpbGUgZGVzY3JpcHRvciBpcyBzdG9yZWQgYXMgc2ltaWxhcmx5DQo+ ICAgICAgZG9uZSBhcyBpbiBCUEZfUFNFVURPX01BUF9GRCwgYW5kIGluIHRoZSBzZWNvbmQgaW1t IGZpZWxkDQo+ICAgICAgKGFzIGxkaW1tNjQgaXMgMi1pbnNuIHdpZGUpIHdlIHN0b3JlIHRoZSBh Y2Nlc3Mgb2Zmc2V0DQo+ICAgICAgaW50byB0aGUgc2VjdGlvbi4NCj4gDQo+ICAgNSkgT24ga2Vy bmVsIHNpZGUsIHRoaXMgc3BlY2lhbCBtYXJrZWQgQlBGX1BTRVVET19NQVBfVkFMVUUNCj4gICAg ICBsb2FkIHdpbGwgdGhlbiBzdG9yZSB0aGUgYWN0dWFsIHRhcmdldCBhZGRyZXNzIGluIG9yZGVy DQo+ICAgICAgdG8gaGF2ZSBhICdtYXAtbG9va3VwJy1mcmVlIGFjY2Vzcy4gVGhhdCBpcywgdGhl IGFjdHVhbA0KPiAgICAgIG1hcCB2YWx1ZSBiYXNlIGFkZHJlc3MgKyBvZmZzZXQuIFRoZSBkZXN0 aW5hdGlvbiByZWdpc3Rlcg0KPiAgICAgIGluIHRoZSB2ZXJpZmllciB3aWxsIHRoZW4gYmUgbWFy a2VkIGFzIFBUUl9UT19NQVBfVkFMVUUsDQo+ICAgICAgY29udGFpbmluZyB0aGUgZml4ZWQgb2Zm c2V0IGFzIHJlZy0+b2ZmIGFuZCBiYWNraW5nIEJQRg0KPiAgICAgIG1hcCBhcyByZWctPm1hcF9w dHIuIE1lYW5pbmcsIGl0J3MgdHJlYXRlZCBhcyBhbnkgb3RoZXINCj4gICAgICBub3JtYWwgbWFw IHZhbHVlIGZyb20gdmVyaWZpY2F0aW9uIHNpZGUsIG9ubHkgd2l0aA0KPiAgICAgIGVmZmljaWVu dCwgZGlyZWN0IHZhbHVlIGFjY2VzcyBpbnN0ZWFkIG9mIGFjdHVhbCBjYWxsIHRvDQo+ICAgICAg bWFwIGxvb2t1cCBoZWxwZXIgYXMgaW4gdGhlIHR5cGljYWwgY2FzZS4NCj4gDQo+IFNpbXBsZSBl eGFtcGxlIGR1bXAgb2YgcHJvZ3JhbSB1c2luZyBnbG9iYWxzIHZhcnMgaW4gZWFjaA0KPiBzZWN0 aW9uOg0KPiANCj4gICAgIyByZWFkZWxmIC1hIHRlc3RfZ2xvYmFsX2RhdGEubw0KPiAgICBbLi4u XQ0KPiAgICBbIDZdIC5ic3MgICAgICAgICAgICAgIE5PQklUUyAgICAgICAgICAgMDAwMDAwMDAw MDAwMDAwMCAgMDAwMDAzMjgNCj4gICAgICAgICAwMDAwMDAwMDAwMDAwMDEwICAwMDAwMDAwMDAw MDAwMDAwICBXQSAgICAgICAwICAgICAwICAgICA4DQo+ICAgIFsgN10gLmRhdGEgICAgICAgICAg ICAgUFJPR0JJVFMgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwICAwMDAwMDMyOA0KPiAgICAgICAg IDAwMDAwMDAwMDAwMDAwMTAgIDAwMDAwMDAwMDAwMDAwMDAgIFdBICAgICAgIDAgICAgIDAgICAg IDgNCj4gICAgWyA4XSAucm9kYXRhICAgICAgICAgICBQUk9HQklUUyAgICAgICAgIDAwMDAwMDAw MDAwMDAwMDAgIDAwMDAwMzM4DQo+ICAgICAgICAgMDAwMDAwMDAwMDAwMDAxOCAgMDAwMDAwMDAw MDAwMDAwMCAgIEEgICAgICAgMCAgICAgMCAgICAgOA0KPiAgICBbLi4uXQ0KPiAgICAgIDk1OiAw MDAwMDAwMDAwMDAwMDAwICAgICA4IE9CSkVDVCAgTE9DQUwgIERFRkFVTFQgICAgNiBzdGF0aWNf YnNzDQo+ICAgICAgOTY6IDAwMDAwMDAwMDAwMDAwMDggICAgIDggT0JKRUNUICBMT0NBTCAgREVG QVVMVCAgICA2IHN0YXRpY19ic3MyDQo+ICAgICAgOTc6IDAwMDAwMDAwMDAwMDAwMDAgICAgIDgg T0JKRUNUICBMT0NBTCAgREVGQVVMVCAgICA3IHN0YXRpY19kYXRhDQo+ICAgICAgOTg6IDAwMDAw MDAwMDAwMDAwMDggICAgIDggT0JKRUNUICBMT0NBTCAgREVGQVVMVCAgICA3IHN0YXRpY19kYXRh Mg0KPiAgICAgIDk5OiAwMDAwMDAwMDAwMDAwMDAwICAgICA4IE9CSkVDVCAgTE9DQUwgIERFRkFV TFQgICAgOCBzdGF0aWNfcm9kYXRhDQo+ICAgICAxMDA6IDAwMDAwMDAwMDAwMDAwMDggICAgIDgg T0JKRUNUICBMT0NBTCAgREVGQVVMVCAgICA4IHN0YXRpY19yb2RhdGEyDQo+ICAgICAxMDE6IDAw MDAwMDAwMDAwMDAwMTAgICAgIDggT0JKRUNUICBMT0NBTCAgREVGQVVMVCAgICA4IHN0YXRpY19y b2RhdGEzDQo+ICAgIFsuLi5dDQo+IA0KPiAgICAjIGJwZnRvb2wgcHJvZw0KPiAgICAxMDM6IHNj aGVkX2NscyAgbmFtZSBsb2FkX3N0YXRpY19kYXQgIHRhZyAzN2E4YjY4MjJmYzM5YTI5ICBncGwN Cj4gICAgICAgICBsb2FkZWRfYXQgMjAxOS0wMi0yOFQwMjowMjozNSswMDAwICB1aWQgMA0KPiAg ICAgICAgIHhsYXRlZCA3MTJCICBqaXRlZCA0MjZCICBtZW1sb2NrIDQwOTZCICBtYXBfaWRzIDYz LDY0LDY1LDY2DQo+ICAgICMgYnBmdG9vbCBtYXAgc2hvdyBpZCA2Mw0KPiAgICA2MzogYXJyYXkg IG5hbWUgLmJzcyAgZmxhZ3MgMHgwICAgICAgICAgICAgICAgICAgICAgIDwtLSAuYnNzIGFyZWEs IHJ3DQo+ICAgICAgICBrZXkgNEIgIHZhbHVlIDE2QiAgbWF4X2VudHJpZXMgMSAgbWVtbG9jayA0 MDk2Qg0KPiAgICAjIGJwZnRvb2wgbWFwIHNob3cgaWQgNjQNCj4gICAgNjQ6IGFycmF5ICBuYW1l IC5kYXRhICBmbGFncyAweDAgICAgICAgICAgICAgICAgICAgICA8LS0gLmRhdGEgYXJlYSwgcncN Cj4gICAgICAgIGtleSA0QiAgdmFsdWUgMTZCICBtYXhfZW50cmllcyAxICBtZW1sb2NrIDQwOTZC DQo+ICAgICMgYnBmdG9vbCBtYXAgc2hvdyBpZCA2NQ0KPiAgICA2NTogYXJyYXkgIG5hbWUgLnJv ZGF0YSAgZmxhZ3MgMHg4MCAgICAgICAgICAgICAgICAgIDwtLSAucm9kYXRhIGFyZWEsIHJvDQo+ ICAgICAgICBrZXkgNEIgIHZhbHVlIDI0QiAgbWF4X2VudHJpZXMgMSAgbWVtbG9jayA0MDk2Qg0K PiANCj4gICAgIyBicGZ0b29sIHByb2cgZHVtcCB4bGF0ZWQgaWQgMTAzDQo+ICAgIGludCBsb2Fk X3N0YXRpY19kYXRhKHN0cnVjdCBfX3NrX2J1ZmYgKiBza2IpOg0KPiAgICA7IGludCBsb2FkX3N0 YXRpY19kYXRhKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikNCj4gICAgICAgMDogKGI3KSByMSA9IDAN Cj4gICAgOyBrZXkgPSAwOw0KPiAgICAgICAxOiAoNjMpICoodTMyICopKHIxMCAtNCkgPSByMQ0K PiAgICAgICAyOiAoYmYpIHI2ID0gcjEwDQo+ICAgIDsgaW50IGxvYWRfc3RhdGljX2RhdGEoc3Ry dWN0IF9fc2tfYnVmZiAqc2tiKQ0KPiAgICAgICAzOiAoMDcpIHI2ICs9IC00DQo+ICAgIDsgYnBm X21hcF91cGRhdGVfZWxlbSgmcmVzdWx0LCAma2V5LCAmc3RhdGljX2JzcywgMCk7DQo+ICAgICAg IDQ6ICgxOCkgcjEgPSBtYXBbaWQ6NjZdDQo+ICAgICAgIDY6IChiZikgcjIgPSByNg0KPiAgICAg ICA3OiAoMTgpIHIzID0gbWFwW2lkOjYzXVswXSswICAgICAgICAgPC0tIGRpcmVjdCBzdGF0aWNf YnNzIGFkZHIgaW4gLmJzcyBhcmVhDQo+ICAgICAgIDk6IChiNykgcjQgPSAwDQo+ICAgICAgMTA6 ICg4NSkgY2FsbCBhcnJheV9tYXBfdXBkYXRlX2VsZW0jOTk4ODgNCj4gICAgICAxMTogKGI3KSBy MSA9IDENCj4gICAgOyBrZXkgPSAxOw0KPiAgICAgIDEyOiAoNjMpICoodTMyICopKHIxMCAtNCkg PSByMQ0KPiAgICA7IGJwZl9tYXBfdXBkYXRlX2VsZW0oJnJlc3VsdCwgJmtleSwgJnN0YXRpY19k YXRhLCAwKTsNCj4gICAgICAxMzogKDE4KSByMSA9IG1hcFtpZDo2Nl0NCj4gICAgICAxNTogKGJm KSByMiA9IHI2DQo+ICAgICAgMTY6ICgxOCkgcjMgPSBtYXBbaWQ6NjRdWzBdKzAgICAgICAgICA8 LS0gZGlyZWN0IHN0YXRpY19kYXRhIGFkZHIgaW4gLmRhdGEgYXJlYQ0KPiAgICAgIDE4OiAoYjcp IHI0ID0gMA0KPiAgICAgIDE5OiAoODUpIGNhbGwgYXJyYXlfbWFwX3VwZGF0ZV9lbGVtIzk5ODg4 DQo+ICAgICAgMjA6IChiNykgcjEgPSAyDQo+ICAgIDsga2V5ID0gMjsNCj4gICAgICAyMTogKDYz KSAqKHUzMiAqKShyMTAgLTQpID0gcjENCj4gICAgOyBicGZfbWFwX3VwZGF0ZV9lbGVtKCZyZXN1 bHQsICZrZXksICZzdGF0aWNfcm9kYXRhLCAwKTsNCj4gICAgICAyMjogKDE4KSByMSA9IG1hcFtp ZDo2Nl0NCj4gICAgICAyNDogKGJmKSByMiA9IHI2DQo+ICAgICAgMjU6ICgxOCkgcjMgPSBtYXBb aWQ6NjVdWzBdKzAgICAgICAgICA8LS0gZGlyZWN0IHN0YXRpY19yb2RhdGEgYWRkciBpbiAucm9k YXRhIGFyZWENCj4gICAgICAyNzogKGI3KSByNCA9IDANCj4gICAgICAyODogKDg1KSBjYWxsIGFy cmF5X21hcF91cGRhdGVfZWxlbSM5OTg4OA0KPiAgICAgIDI5OiAoYjcpIHIxID0gMw0KPiAgICA7 IGtleSA9IDM7DQo+ICAgICAgMzA6ICg2MykgKih1MzIgKikocjEwIC00KSA9IHIxDQo+ICAgIDsg YnBmX21hcF91cGRhdGVfZWxlbSgmcmVzdWx0LCAma2V5LCAmc3RhdGljX2JzczIsIDApOw0KPiAg ICAgIDMxOiAoMTgpIHI3ID0gbWFwW2lkOjYzXVswXSs4ICAgICAgICAgPC0tLg0KPiAgICAgIDMz OiAoMTgpIHIxID0gbWFwW2lkOjY2XSAgICAgICAgICAgICAgICAgfA0KPiAgICAgIDM1OiAoYmYp IHIyID0gcjYgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiAgICAgIDM2OiAoMTgpIHIzID0g bWFwW2lkOjYzXVswXSs4ICAgICAgICAgPC0tIGRpcmVjdCBzdGF0aWNfYnNzMiBhZGRyIGluIC5i c3MgYXJlYQ0KPiAgICAgIDM4OiAoYjcpIHI0ID0gMA0KPiAgICAgIDM5OiAoODUpIGNhbGwgYXJy YXlfbWFwX3VwZGF0ZV9lbGVtIzk5ODg4DQo+ICAgIFsuLi5dDQo+IA0KPiBGb3Igbm93IC5kYXRh Ly5yb2RhdGEvLmJzcyBtYXBzIGFyZSBub3QgZXhwb3NlZCB2aWEgQVBJIHRvIHRoZQ0KPiB1c2Vy LCBidXQgdGhpcyBjb3VsZCBiZSBkb25lIGluIGEgc3Vic2VxdWVudCBzdGVwLg0KPiANCj4gQmFz ZWQgdXBvbiByZWNlbnQgZml4IGluIExMVk0sIGNvbW1pdCBjMGRiNmI2YmQ0NDQgKCJbQlBGXSBE b24ndA0KPiBmYWlsIGZvciBzdGF0aWMgdmFyaWFibGVzIikuDQo+IA0KPiBKb2ludCB3b3JrIHdp dGggSm9lIFN0cmluZ2VyLg0KPiANCj4gICAgWzBdIExQQyAyMDE4LCBCUEYgdHJhY2ssICJFTEYg cmVsb2NhdGlvbiBmb3Igc3RhdGljIGRhdGEgaW4gQlBGIiwNCj4gICAgICAgIGh0dHA6Ly92Z2Vy Lmtlcm5lbC5vcmcvbHBjLWJwZjIwMTguaHRtbCNzZXNzaW9uLTMNCj4gDQo+IFNpZ25lZC1vZmYt Ynk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+DQo+IFNpZ25lZC1vZmYt Ynk6IEpvZSBTdHJpbmdlciA8am9lQHdhbmQubmV0Lm56Pg0KPiAtLS0NCj4gICB0b29scy9pbmNs dWRlL3VhcGkvbGludXgvYnBmLmggfCAgMTAgKy0NCj4gICB0b29scy9saWIvYnBmL2xpYmJwZi5j ICAgICAgICAgfCAyNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQo+ICAgMiBm aWxlcyBjaGFuZ2VkLCAyMjYgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pDQo+IA0KPiBk aWZmIC0tZ2l0IGEvdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oIGIvdG9vbHMvaW5jbHVk ZS91YXBpL2xpbnV4L2JwZi5oDQo+IGluZGV4IDg4ODQwNzJlMWE0Ni4uMDRiMjZmNTliNDEzIDEw MDY0NA0KPiAtLS0gYS90b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgNCj4gKysrIGIvdG9v bHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oDQo+IEBAIC0yODcsNyArMjg3LDcgQEAgZW51bSBi cGZfYXR0YWNoX3R5cGUgew0KPiBbLi4uXQ0KPiBAQCAtOTk5LDggKzExMjAsMTAgQEAgYnBmX3By b2dyYW1fX2NvbGxlY3RfcmVsb2Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBHRWxmX1NoZHIg KnNoZHIsDQo+ICAgCQkJIChsb25nIGxvbmcpIChyZWwucl9pbmZvID4+IDMyKSwNCj4gICAJCQkg KGxvbmcgbG9uZykgc3ltLnN0X3ZhbHVlLCBzeW0uc3RfbmFtZSk7DQo+ICAgDQo+IC0JCWlmIChz eW0uc3Rfc2huZHggIT0gbWFwc19zaG5keCAmJiBzeW0uc3Rfc2huZHggIT0gdGV4dF9zaG5keCkg ew0KPiAtCQkJcHJfd2FybmluZygiUHJvZ3JhbSAnJXMnIGNvbnRhaW5zIG5vbi1tYXAgcmVsYXRl ZCByZWxvIGRhdGEgcG9pbnRpbmcgdG8gc2VjdGlvbiAldVxuIiwNCj4gKwkJaWYgKHN5bS5zdF9z aG5keCAhPSBtYXBzX3NobmR4ICYmIHN5bS5zdF9zaG5keCAhPSB0ZXh0X3NobmR4ICYmDQo+ICsJ CSAgICBzeW0uc3Rfc2huZHggIT0gZGF0YV9zaG5keCAmJiBzeW0uc3Rfc2huZHggIT0gcm9kYXRh X3NobmR4ICYmDQo+ICsJCSAgICBzeW0uc3Rfc2huZHggIT0gYnNzX3NobmR4KSB7DQo+ICsJCQlw cl93YXJuaW5nKCJQcm9ncmFtICclcycgY29udGFpbnMgdW5yZWNvZ25pemVkIHJlbG8gZGF0YSBw b2ludGluZyB0byBzZWN0aW9uICV1XG4iLA0KPiAgIAkJCQkgICBwcm9nLT5zZWN0aW9uX25hbWUs IHN5bS5zdF9zaG5keCk7DQo+ICAgCQkJcmV0dXJuIC1MSUJCUEZfRVJSTk9fX1JFTE9DOw0KPiAg IAkJfQ0KPiBAQCAtMTA0NSw2ICsxMTY4LDMwIEBAIGJwZl9wcm9ncmFtX19jb2xsZWN0X3JlbG9j KHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgR0VsZl9TaGRyICpzaGRyLA0KPiAgIAkJCXByb2ct PnJlbG9jX2Rlc2NbaV0udHlwZSA9IFJFTE9fTEQ2NDsNCj4gICAJCQlwcm9nLT5yZWxvY19kZXNj W2ldLmluc25faWR4ID0gaW5zbl9pZHg7DQo+ICAgCQkJcHJvZy0+cmVsb2NfZGVzY1tpXS5tYXBf aWR4ID0gbWFwX2lkeDsNCj4gKwkJfSBlbHNlIGlmIChzeW0uc3Rfc2huZHggPT0gZGF0YV9zaG5k eCB8fA0KPiArCQkJICAgc3ltLnN0X3NobmR4ID09IHJvZGF0YV9zaG5keCB8fA0KPiArCQkJICAg c3ltLnN0X3NobmR4ID09IGJzc19zaG5keCkgew0KPiArCQkJaW50IHR5cGUgPSAoc3ltLnN0X3No bmR4ID09IGRhdGFfc2huZHgpICAgPyBSRUxPX0RBVEEgOg0KPiArCQkJCSAgIChzeW0uc3Rfc2hu ZHggPT0gcm9kYXRhX3NobmR4KSA/IFJFTE9fUk9EQVRBIDoNCj4gKwkJCQkJCQkJICAgIFJFTE9f QlNTOw0KPiArDQo+ICsJCQlmb3IgKG1hcF9pZHggPSAwOyBtYXBfaWR4IDwgbnJfbWFwc19nbG9i YWw7IG1hcF9pZHgrKykgew0KPiArCQkJCWlmIChtYXBzX2dsb2JhbFttYXBfaWR4XS5nbG9iYWxf dHlwZSA9PSB0eXBlKSB7DQo+ICsJCQkJCXByX2RlYnVnKCJyZWxvY2F0aW9uOiBmaW5kIG1hcCAl emQgKCVzKSBmb3IgaW5zbiAldVxuIiwNCj4gKwkJCQkJCSBtYXBfaWR4LCBtYXBzX2dsb2JhbFtt YXBfaWR4XS5uYW1lLCBpbnNuX2lkeCk7DQo+ICsJCQkJCWJyZWFrOw0KPiArCQkJCX0NCj4gKwkJ CX0NCj4gKw0KPiArCQkJaWYgKG1hcF9pZHggPj0gbnJfbWFwc19nbG9iYWwpIHsNCj4gKwkJCQlw cl93YXJuaW5nKCJicGYgcmVsb2NhdGlvbjogbWFwX2lkeCAlZCBsYXJnZSB0aGFuICVkXG4iLA0K PiArCQkJCQkgICAoaW50KW1hcF9pZHgsIChpbnQpbnJfbWFwc19nbG9iYWwgLSAxKTsNCj4gKwkJ CQlyZXR1cm4gLUxJQkJQRl9FUlJOT19fUkVMT0M7DQo+ICsJCQl9DQo+ICsNCj4gKwkJCXByb2ct PnJlbG9jX2Rlc2NbaV0udHlwZSA9IHR5cGU7DQo+ICsJCQlwcm9nLT5yZWxvY19kZXNjW2ldLmlu c25faWR4ID0gaW5zbl9pZHg7DQo+ICsJCQlwcm9nLT5yZWxvY19kZXNjW2ldLm1hcF9pZHggPSBt YXBfaWR4Ow0KPiAgIAkJfQ0KPiAgIAl9DQo+ICAgCXJldHVybiAwOw0KPiBAQCAtMTE3NiwxNSAr MTMyMyw1OCBAQCBicGZfb2JqZWN0X19wcm9iZV9jYXBzKHN0cnVjdCBicGZfb2JqZWN0ICpvYmop DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBpbnQNClsuLi5dDQo+ICsNCj4gK3N0YXRpYyBpbnQN Cj4gK2JwZl9vYmplY3RfX2NyZWF0ZV9tYXBzKHN0cnVjdCBicGZfb2JqZWN0ICpvYmopDQo+ICt7 DQo+ICAgCXVuc2lnbmVkIGludCBpOw0KPiAgIAlpbnQgZXJyOw0KPiAgIA0KPiAgIAlmb3IgKGkg PSAwOyBpIDwgb2JqLT5ucl9tYXBzOyBpKyspIHsNCj4gICAJCXN0cnVjdCBicGZfbWFwICptYXAg PSAmb2JqLT5tYXBzW2ldOw0KPiAtCQlzdHJ1Y3QgYnBmX21hcF9kZWYgKmRlZiA9ICZtYXAtPmRl ZjsNCj4gICAJCWNoYXIgKmNwLCBlcnJtc2dbU1RSRVJSX0JVRlNJWkVdOw0KPiAgIAkJaW50ICpw ZmQgPSAmbWFwLT5mZDsNCj4gICANCj4gQEAgLTExOTMsNDEgKzEzODMsNyBAQCBicGZfb2JqZWN0 X19jcmVhdGVfbWFwcyhzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKQ0KPiAgIAkJCQkgbWFwLT5uYW1l LCBtYXAtPmZkKTsNCj4gICAJCQljb250aW51ZTsNCj4gICAJCX0NCj4gLQ0KPiAtCQlpZiAob2Jq LT5jYXBzLm5hbWUpDQo+IC0JCQljcmVhdGVfYXR0ci5uYW1lID0gbWFwLT5uYW1lOw0KPiAtCQlj cmVhdGVfYXR0ci5tYXBfaWZpbmRleCA9IG1hcC0+bWFwX2lmaW5kZXg7DQo+IC0JCWNyZWF0ZV9h dHRyLm1hcF90eXBlID0gZGVmLT50eXBlOw0KPiAtCQljcmVhdGVfYXR0ci5tYXBfZmxhZ3MgPSBk ZWYtPm1hcF9mbGFnczsNCj4gLQkJY3JlYXRlX2F0dHIua2V5X3NpemUgPSBkZWYtPmtleV9zaXpl Ow0KPiAtCQljcmVhdGVfYXR0ci52YWx1ZV9zaXplID0gZGVmLT52YWx1ZV9zaXplOw0KPiAtCQlj cmVhdGVfYXR0ci5tYXhfZW50cmllcyA9IGRlZi0+bWF4X2VudHJpZXM7DQo+IC0JCWNyZWF0ZV9h dHRyLmJ0Zl9mZCA9IDA7DQo+IC0JCWNyZWF0ZV9hdHRyLmJ0Zl9rZXlfdHlwZV9pZCA9IDA7DQo+ IC0JCWNyZWF0ZV9hdHRyLmJ0Zl92YWx1ZV90eXBlX2lkID0gMDsNCj4gLQkJaWYgKGJwZl9tYXBf dHlwZV9faXNfbWFwX2luX21hcChkZWYtPnR5cGUpICYmDQo+IC0JCSAgICBtYXAtPmlubmVyX21h cF9mZCA+PSAwKQ0KPiAtCQkJY3JlYXRlX2F0dHIuaW5uZXJfbWFwX2ZkID0gbWFwLT5pbm5lcl9t YXBfZmQ7DQo+IC0NCj4gLQkJaWYgKG9iai0+YnRmICYmICFicGZfbWFwX2ZpbmRfYnRmX2luZm8o bWFwLCBvYmotPmJ0ZikpIHsNCj4gLQkJCWNyZWF0ZV9hdHRyLmJ0Zl9mZCA9IGJ0Zl9fZmQob2Jq LT5idGYpOw0KPiAtCQkJY3JlYXRlX2F0dHIuYnRmX2tleV90eXBlX2lkID0gbWFwLT5idGZfa2V5 X3R5cGVfaWQ7DQo+IC0JCQljcmVhdGVfYXR0ci5idGZfdmFsdWVfdHlwZV9pZCA9IG1hcC0+YnRm X3ZhbHVlX3R5cGVfaWQ7DQo+IC0JCX0NCj4gLQ0KPiAtCQkqcGZkID0gYnBmX2NyZWF0ZV9tYXBf eGF0dHIoJmNyZWF0ZV9hdHRyKTsNCj4gLQkJaWYgKCpwZmQgPCAwICYmIGNyZWF0ZV9hdHRyLmJ0 Zl9rZXlfdHlwZV9pZCkgew0KPiAtCQkJY3AgPSBsaWJicGZfc3RyZXJyb3JfcihlcnJubywgZXJy bXNnLCBzaXplb2YoZXJybXNnKSk7DQo+IC0JCQlwcl93YXJuaW5nKCJFcnJvciBpbiBicGZfY3Jl YXRlX21hcF94YXR0ciglcyk6JXMoJWQpLiBSZXRyeWluZyB3aXRob3V0IEJURi5cbiIsDQo+IC0J CQkJICAgbWFwLT5uYW1lLCBjcCwgZXJybm8pOw0KPiAtCQkJY3JlYXRlX2F0dHIuYnRmX2ZkID0g MDsNCj4gLQkJCWNyZWF0ZV9hdHRyLmJ0Zl9rZXlfdHlwZV9pZCA9IDA7DQo+IC0JCQljcmVhdGVf YXR0ci5idGZfdmFsdWVfdHlwZV9pZCA9IDA7DQo+IC0JCQltYXAtPmJ0Zl9rZXlfdHlwZV9pZCA9 IDA7DQo+IC0JCQltYXAtPmJ0Zl92YWx1ZV90eXBlX2lkID0gMDsNCj4gLQkJCSpwZmQgPSBicGZf Y3JlYXRlX21hcF94YXR0cigmY3JlYXRlX2F0dHIpOw0KPiAtCQl9DQo+IC0NCj4gKwkJKnBmZCA9 IGJwZl9vYmplY3RfX2NyZWF0ZV9tYXAob2JqLCBtYXApOw0KPiAgIAkJaWYgKCpwZmQgPCAwKSB7 DQo+ICAgCQkJc2l6ZV90IGo7DQo+ICAgDQo+IEBAIC0xNDEyLDYgKzE1NjgsMjQgQEAgYnBmX3By b2dyYW1fX3JlbG9jYXRlKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgc3RydWN0IGJwZl9vYmpl Y3QgKm9iaikNCj4gICAJCQkJCQkgICAgICAmcHJvZy0+cmVsb2NfZGVzY1tpXSk7DQo+ICAgCQkJ aWYgKGVycikNCj4gICAJCQkJcmV0dXJuIGVycjsNCj4gKwkJfSBlbHNlIGlmIChwcm9nLT5yZWxv Y19kZXNjW2ldLnR5cGUgPT0gUkVMT19EQVRBIHx8DQo+ICsJCQkgICBwcm9nLT5yZWxvY19kZXNj W2ldLnR5cGUgPT0gUkVMT19ST0RBVEEgfHwNCj4gKwkJCSAgIHByb2ctPnJlbG9jX2Rlc2NbaV0u dHlwZSA9PSBSRUxPX0JTUykgew0KPiArCQkJc3RydWN0IGJwZl9pbnNuICppbnNucyA9IHByb2ct Pmluc25zOw0KPiArCQkJaW50IGluc25faWR4LCBtYXBfaWR4LCBkYXRhX29mZjsNCj4gKw0KPiAr CQkJaW5zbl9pZHggPSBwcm9nLT5yZWxvY19kZXNjW2ldLmluc25faWR4Ow0KPiArCQkJbWFwX2lk eCAgPSBwcm9nLT5yZWxvY19kZXNjW2ldLm1hcF9pZHg7DQo+ICsJCQlkYXRhX29mZiA9IGluc25z W2luc25faWR4XS5pbW07DQoNCkkgd2FudCB0byBwb2ludCB0byBhIHN1YnRsZSBkaWZmZXJlbmNl IGhlcmUgYmV0d2VlbiBoYW5kbGluZyBwdXJlIGdsb2JhbCANCnZhcmlhYmxlcyBhbmQgc3RhdGlj IGdsb2JhbCB2YXJpYWJsZXMuIFRoZSAiaW1tIiB2YWx1ZSBpcyBvbmx5IGF2YWlsYWJsZQ0KZm9y IHN0YXRpYyB2YXJpYWJsZXMuIEZvciBleGFtcGxlLA0KDQotYmFzaC00LjQkIGNhdCBnLmMNCnN0 YXRpYyB2b2xhdGlsZSBsb25nIHNnID0gMjsNCnN0YXRpYyB2b2xhdGlsZSBpbnQgc2kgPSAzOw0K bG9uZyBnID0gNDsNCmludCBpID0gNTsNCmludCB0ZXN0KCkgeyByZXR1cm4gc2cgKyBzaSArIGcg KyBpOyB9DQotYmFzaC00LjQkDQotYmFzaC00LjQkIGNsYW5nIC10YXJnZXQgYnBmIC1PMiAtYyBn LmMgDQoNCi1iYXNoLTQuNCQgcmVhZGVsZiAtcyBnLm8gDQoNCg0KU3ltYm9sIHRhYmxlICcuc3lt dGFiJyBjb250YWlucyA4IGVudHJpZXM6DQogICAgTnVtOiAgICBWYWx1ZSAgICAgICAgICBTaXpl IFR5cGUgICAgQmluZCAgIFZpcyAgICAgIE5keCBOYW1lDQogICAgICAwOiAwMDAwMDAwMDAwMDAw MDAwICAgICAwIE5PVFlQRSAgTE9DQUwgIERFRkFVTFQgIFVORA0KICAgICAgMTogMDAwMDAwMDAw MDAwMDAwMCAgICAgMCBGSUxFICAgIExPQ0FMICBERUZBVUxUICBBQlMgZy5jDQogICAgICAyOiAw MDAwMDAwMDAwMDAwMDEwICAgICA4IE9CSkVDVCAgTE9DQUwgIERFRkFVTFQgICAgNCBzZw0KICAg ICAgMzogMDAwMDAwMDAwMDAwMDAxOCAgICAgNCBPQkpFQ1QgIExPQ0FMICBERUZBVUxUICAgIDQg c2kNCiAgICAgIDQ6IDAwMDAwMDAwMDAwMDAwMDAgICAgIDAgU0VDVElPTiBMT0NBTCAgREVGQVVM VCAgICA0DQogICAgICA1OiAwMDAwMDAwMDAwMDAwMDAwICAgICA4IE9CSkVDVCAgR0xPQkFMIERF RkFVTFQgICAgNCBnDQogICAgICA2OiAwMDAwMDAwMDAwMDAwMDA4ICAgICA0IE9CSkVDVCAgR0xP QkFMIERFRkFVTFQgICAgNCBpDQogICAgICA3OiAwMDAwMDAwMDAwMDAwMDAwICAgMTI4IEZVTkMg ICAgR0xPQkFMIERFRkFVTFQgICAgMiB0ZXN0DQotYmFzaC00LjQkDQotYmFzaC00LjQkIGxsdm0t cmVhZGVsZiAtciBnLm8NCg0KUmVsb2NhdGlvbiBzZWN0aW9uICcucmVsLnRleHQnIGF0IG9mZnNl dCAweDFkOCBjb250YWlucyA0IGVudHJpZXM6DQogICAgIE9mZnNldCAgICAgICAgICAgICBJbmZv ICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICBTeW1ib2wncyANClZhbHVlICBTeW1ib2wn cyBOYW1lDQowMDAwMDAwMDAwMDAwMDAwICAwMDAwMDAwNDAwMDAwMDAxIFJfQlBGXzY0XzY0IA0K MDAwMDAwMDAwMDAwMDAwMCAuZGF0YQ0KMDAwMDAwMDAwMDAwMDAxOCAgMDAwMDAwMDQwMDAwMDAw MSBSX0JQRl82NF82NCANCjAwMDAwMDAwMDAwMDAwMDAgLmRhdGENCjAwMDAwMDAwMDAwMDAwMzgg IDAwMDAwMDA1MDAwMDAwMDEgUl9CUEZfNjRfNjQgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAw IGcNCjAwMDAwMDAwMDAwMDAwNTggIDAwMDAwMDA2MDAwMDAwMDEgUl9CUEZfNjRfNjQgICAgICAg ICAgICAwMDAwMDAwMDAwMDAwMDA4IGkNCi1iYXNoLTQuNCQgbGx2bS1vYmpkdW1wIC1kIGcubw0K DQpnLm86ICAgIGZpbGUgZm9ybWF0IEVMRjY0LUJQRg0KDQpEaXNhc3NlbWJseSBvZiBzZWN0aW9u IC50ZXh0Og0KMDAwMDAwMDAwMDAwMDAwMCB0ZXN0Og0KICAgICAgICAwOiAgICAgICAxOCAwMSAw MCAwMCAxMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCANCnIxID0gMTYgbGwNCiAg ICAgICAgMjogICAgICAgNzkgMTEgMDAgMDAgMDAgMDAgMDAgMDAgICAgICAgICByMSA9ICoodTY0 ICopKHIxICsgMCkNCiAgICAgICAgMzogICAgICAgMTggMDIgMDAgMDAgMTggMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgDQpyMiA9IDI0IGxsDQogICAgICAgIDU6ICAgICAgIDYxIDIy IDAwIDAwIDAwIDAwIDAwIDAwICAgICAgICAgcjIgPSAqKHUzMiAqKShyMiArIDApDQogICAgICAg IDY6ICAgICAgIDBmIDIxIDAwIDAwIDAwIDAwIDAwIDAwICAgICAgICAgcjEgKz0gcjINCiAgICAg ICAgNzogICAgICAgMTggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgDQpyMiA9IDAgbGwNCiAgICAgICAgOTogICAgICAgNzkgMjIgMDAgMDAgMDAgMDAgMDAgMDAg ICAgICAgICByMiA9ICoodTY0ICopKHIyICsgMCkNCiAgICAgICAxMDogICAgICAgMGYgMjEgMDAg MDAgMDAgMDAgMDAgMDAgICAgICAgICByMSArPSByMg0KICAgICAgIDExOiAgICAgICAxOCAwMiAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCANCnIyID0gMCBsbA0KICAg ICAgIDEzOiAgICAgICA2MSAyMCAwMCAwMCAwMCAwMCAwMCAwMCAgICAgICAgIHIwID0gKih1MzIg KikocjIgKyAwKQ0KICAgICAgIDE0OiAgICAgICAwZiAxMCAwMCAwMCAwMCAwMCAwMCAwMCAgICAg ICAgIHIwICs9IHIxDQogICAgICAgMTU6ICAgICAgIDk1IDAwIDAwIDAwIDAwIDAwIDAwIDAwICAg ICAgICAgZXhpdA0KLWJhc2gtNC40JA0KDQpZb3UgY2FuIHNlZSB0aGUgYWJvdmUsIHRoZSBub24t c3RhdGljIGdsb2JhbCBhY2Nlc3MgZG9lcyBub3QgaGF2ZSBpdHMNCmluLXNlY3Rpb24gb2Zmc2V0 IGVuY29kZWQgaW4gdGhlIGluc24gaXRzZWxmLiBUaGUgZGlmZmVyZW5jZSBpcyBkdWUgdG8NCmxs dm0gdHJlYXRpbmcgc3RhdGljIGdsb2JhbCBhbmQgbm9uLXN0YXRpYyBnbG9iYWwgZGlmZmVyZW50 bHkuDQoNClRvIHN1cHBvcnQgYm90aCBjYXNlcywgZHVyaW5nIHJlbG9jYXRpb24gcmVjb3JkaW5n IHN0YWdlLCB5b3UgY2FuDQphbHNvIHJlY29yZDoNCiAgICAuIHN5bWJvbCBiaW5kaW5nIChHRUxG X1NUX0JJTkQoc3ltLnN0X2luZm8pKSwNCiAgICAgIG5vbi1zdGF0aWMgZ2xvYmFsIGhhcyBiaW5k aW5nIFNUQl9HTE9CQUwgYW5kIHN0YXRpYw0KICAgICAgZ2xvYmFsIGhhcyBiaW5kaW5nIFNUQl9M T0NBTA0KICAgIC4gc3ltYm9sIHZhbHVlIChzeW0uc3RfdmFsdWUpDQoNCkR1cmluZyB0aGUgYWJv dmUgcmVsb2NhdGlvbiByZXNvbHV0aW9uLCBpZiBzeW1ib2wgYmluZCBpcyBsb2NhbCwgZG8NCndo YXQgeW91IGFscmVhZHkgZGlkIGhlcmUuIElmIHN5bWJvbCBiaW5kIGlzIGdsb2JhbCwgYXNzaWdu IGRhdGFfb2ZmDQp3aXRoIHN5bWJvbCB2YWx1ZS4NCg0KVGhpcyBhcHBsaWVkIHRvIGJvdGggLmRh dGEgYW5kIC5yb2RhdGEgc2VjdGlvbnMuDQoNClRoZSBub24gaW5pdGlhbGl6ZWQNCmdsb2JhbCB2 YXJpYWJsZSB3aWxsIG5vdCBiZSBpbiBhbnkgYWxsb2NhdGVkIHNlY3Rpb24gaW4gRUxGIGZpbGUs DQppdCBpcyBpbiBhIENPTSBzZWN0aW9uIHdoaWNoIGlzIHRvIGJlIGFsbG9jYXRlZCBieSBsb2Fk ZXIuDQpTbyB1c2VyIGRlZmluZXMgc29tZSBsaWtlDQogICAgaW50IGc7DQphbmQgbGF0ZXIgb24g dXNlcyBpdC4gUmlnaHQgbm93LCBpdCB3aWxsIG5vdCB3b3JrLiBUaGUgd29ya2Fyb3VuZA0KaXMg ImludCBnID0gNCIsIG9yICJzdGF0aWMgaW50IGciLiBJIGd1ZXNzIGl0IHNob3VsZCBiZQ0Kb2th eSwgd2Ugc2hvdWxkIGVuY291cmFnZSB1c2VycyB0byB1c2UgInN0YXRpYyIgdmFyaWFibGVzIGlu c3RlYWQuDQoNCj4gKw0KPiArCQkJaWYgKGluc25faWR4ICsgMSA+PSAoaW50KXByb2ctPmluc25z X2NudCkgew0KPiArCQkJCXByX3dhcm5pbmcoInJlbG9jYXRpb24gb3V0IG9mIHJhbmdlOiAnJXMn XG4iLA0KPiArCQkJCQkgICBwcm9nLT5zZWN0aW9uX25hbWUpOw0KPiArCQkJCXJldHVybiAtTElC QlBGX0VSUk5PX19SRUxPQzsNCj4gKwkJCX0NCj4gKwkJCWluc25zW2luc25faWR4XS5zcmNfcmVn ID0gQlBGX1BTRVVET19NQVBfVkFMVUU7DQo+ICsJCQlpbnNuc1tpbnNuX2lkeF0uaW1tID0gb2Jq LT5tYXBzX2dsb2JhbFttYXBfaWR4XS5mZDsNCj4gKwkJCWluc25zW2luc25faWR4ICsgMV0uaW1t ID0gZGF0YV9vZmY7DQo+ICAgCQl9DQo+ICAgCX0NCj4gICANCj4gQEAgLTE3MTcsNiArMTg5MSw3 IEBAIF9fYnBmX29iamVjdF9fb3Blbihjb25zdCBjaGFyICpwYXRoLCB2b2lkICpvYmpfYnVmLCBz aXplX3Qgb2JqX2J1Zl9zeiwNCj4gICANCj4gICAJQ0hFQ0tfRVJSKGJwZl9vYmplY3RfX2VsZl9p bml0KG9iaiksIGVyciwgb3V0KTsNCj4gICAJQ0hFQ0tfRVJSKGJwZl9vYmplY3RfX2NoZWNrX2Vu ZGlhbm5lc3Mob2JqKSwgZXJyLCBvdXQpOw0KPiArCUNIRUNLX0VSUihicGZfb2JqZWN0X19wcm9i ZV9jYXBzKG9iaiksIGVyciwgb3V0KTsNCj4gICAJQ0hFQ0tfRVJSKGJwZl9vYmplY3RfX2VsZl9j b2xsZWN0KG9iaiwgZmxhZ3MpLCBlcnIsIG91dCk7DQo+ICAgCUNIRUNLX0VSUihicGZfb2JqZWN0 X19jb2xsZWN0X3JlbG9jKG9iaiksIGVyciwgb3V0KTsNCj4gICAJQ0hFQ0tfRVJSKGJwZl9vYmpl Y3RfX3ZhbGlkYXRlKG9iaiwgbmVlZHNfa3ZlciksIGVyciwgb3V0KTsNCj4gQEAgLTE3ODksNyAr MTk2NCw4IEBAIGludCBicGZfb2JqZWN0X191bmxvYWQoc3RydWN0IGJwZl9vYmplY3QgKm9iaikN Cj4gICANCj4gICAJZm9yIChpID0gMDsgaSA8IG9iai0+bnJfbWFwczsgaSsrKQ0KPiAgIAkJemNs b3NlKG9iai0+bWFwc1tpXS5mZCk7DQo+IC0NCj4gKwlmb3IgKGkgPSAwOyBpIDwgb2JqLT5ucl9t YXBzX2dsb2JhbDsgaSsrKQ0KPiArCQl6Y2xvc2Uob2JqLT5tYXBzX2dsb2JhbFtpXS5mZCk7DQo+ ICAgCWZvciAoaSA9IDA7IGkgPCBvYmotPm5yX3Byb2dyYW1zOyBpKyspDQo+ICAgCQlicGZfcHJv Z3JhbV9fdW5sb2FkKCZvYmotPnByb2dyYW1zW2ldKTsNCj4gICANCj4gQEAgLTE4MTAsNyArMTk4 Niw2IEBAIGludCBicGZfb2JqZWN0X19sb2FkKHN0cnVjdCBicGZfb2JqZWN0ICpvYmopDQo+ICAg DQo+ICAgCW9iai0+bG9hZGVkID0gdHJ1ZTsNCj4gICANCj4gLQlDSEVDS19FUlIoYnBmX29iamVj dF9fcHJvYmVfY2FwcyhvYmopLCBlcnIsIG91dCk7DQo+ICAgCUNIRUNLX0VSUihicGZfb2JqZWN0 X19jcmVhdGVfbWFwcyhvYmopLCBlcnIsIG91dCk7DQo+ICAgCUNIRUNLX0VSUihicGZfb2JqZWN0 X19yZWxvY2F0ZShvYmopLCBlcnIsIG91dCk7DQo+ICAgCUNIRUNLX0VSUihicGZfb2JqZWN0X19s b2FkX3Byb2dzKG9iaiksIGVyciwgb3V0KTsNCj4gDQo=