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=-4.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 76FD6C433EC for ; Fri, 24 Jul 2020 08:39:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 51F0D2068F for ; Fri, 24 Jul 2020 08:39:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727026AbgGXIji (ORCPT ); Fri, 24 Jul 2020 04:39:38 -0400 Received: from szxga01-in.huawei.com ([45.249.212.187]:2660 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726591AbgGXIjh (ORCPT ); Fri, 24 Jul 2020 04:39:37 -0400 Received: from nkgeml706-chm.china.huawei.com (unknown [172.30.72.54]) by Forcepoint Email with ESMTP id 7BE901D073B00CCE4537; Fri, 24 Jul 2020 16:39:31 +0800 (CST) Received: from nkgeml708-chm.china.huawei.com (10.98.57.160) by nkgeml706-chm.china.huawei.com (10.98.57.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1913.5; Fri, 24 Jul 2020 16:39:31 +0800 Received: from nkgeml708-chm.china.huawei.com ([10.98.57.160]) by nkgeml708-chm.china.huawei.com ([10.98.57.160]) with mapi id 15.01.1913.007; Fri, 24 Jul 2020 16:39:31 +0800 From: "Guodeqing (A)" To: Eric Dumazet CC: David Miller , "kuba@kernel.org" , "maheshb@google.com" , "netdev@vger.kernel.org" Subject: =?utf-8?B?562U5aSNOiDnrZTlpI06IFtQQVRDSCx2Ml0gaXB2bGFuOiBhZGQgdGhlIGNo?= =?utf-8?Q?eck_of_ip_header_checksum?= Thread-Topic: =?utf-8?B?562U5aSNOiBbUEFUQ0gsdjJdIGlwdmxhbjogYWRkIHRoZSBjaGVjayBvZiBp?= =?utf-8?Q?p_header_checksum?= Thread-Index: AQHWYAm+rUNsYHTSi0meLRdQUe+OMKkTgFQAgADaT6D//41agIACK6Qw//+Yl4CAAK/d8A== Date: Fri, 24 Jul 2020 08:39:31 +0000 Message-ID: References: <1595409499-25008-1-git-send-email-geffrey.guo@huawei.com> <20200722.130408.2000579366934431355.davem@davemloft.net> <6c050a3a1111445287edc52ca6cb056d@huawei.com> <7bb7522a2bda40b8b4a9aac54ea1098b@huawei.com> <05c52750-7f22-74f1-2470-d3e246a25113@gmail.com> In-Reply-To: <05c52750-7f22-74f1-2470-d3e246a25113@gmail.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.164.122.165] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCj4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0KPiDlj5Hku7bkuro6IEVyaWMgRHVtYXpldCBb bWFpbHRvOmVyaWMuZHVtYXpldEBnbWFpbC5jb21dDQo+IOWPkemAgeaXtumXtDogRnJpZGF5LCBK dWx5IDI0LCAyMDIwIDEzOjE0DQo+IOaUtuS7tuS6ujogR3VvZGVxaW5nIChBKSA8Z2VmZnJleS5n dW9AaHVhd2VpLmNvbT47IEVyaWMgRHVtYXpldA0KPiA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4NCj4g 5oqE6YCBOiBEYXZpZCBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+OyBrdWJhQGtlcm5lbC5v cmc7DQo+IG1haGVzaGJAZ29vZ2xlLmNvbTsgbmV0ZGV2QHZnZXIua2VybmVsLm9yZw0KPiDkuLvp opg6IFJlOiDnrZTlpI06IFtQQVRDSCx2Ml0gaXB2bGFuOiBhZGQgdGhlIGNoZWNrIG9mIGlwIGhl YWRlciBjaGVja3N1bQ0KPiANCj4gUGxlYXNlIGRvIG5vdCB0b3AtcG9zdCBvbiBuZXRkZXYgLyBs a21sDQo+ICggaHR0cHM6Ly93d3cubWVkaWF3aWtpLm9yZy93aWtpL01haWxpbmdfbGlzdF9ldGlx dWV0dGUgKQ0KPiANCg0KVGhhbmtzIGZvciB5b3VyIHJlbWluZGVyLg0KDQo+IA0KPiANCj4gT24g Ny8yMy8yMCA4OjM1IFBNLCBHdW9kZXFpbmcgKEEpIHdyb3RlOg0KPiA+IFRoZSBpaGwgY2hlY2sg bWF5YmUgbm90IHN1aXRhYmxlIGluIGlwX2Zhc3RfY3N1bSwgdGhlIGNvcnJlY3Qgb2YgdGhlIGlo bCB2YWx1ZQ0KPiBjYW4gYmUgY2hlY2tlZCBiZWZvcmUgY2FsbGluZyB0aGUgaXBfZmFzdF9jc3Vt Lg0KPiA+DQo+ID4gVGhlIGltcGxlbWVudGF0aW9uIG9mIGlwX2Zhc3RfY3N1bSBpcyBkaWZmZXJl bnQgaW4gZGlmZmVyZW50IGNwdSBhcmNoaXRlY3R1cmUuDQo+IHRoZSBJUCBwYWNrZXQgd2lsbCBk byBpcCBmb3J3YXJkIGluIHRoZSBpcHZsYW4gbDMvbDNzIG1vZGUgYW5kIHRoZSBjb3JydXB0ZWQg aXANCj4gcGFja2V0DQo+ID4NCj4gPiBzaG91bGQgYmUgZGlzY2FyZGVkIGFzIHNvb24gYXMgcG9z c2libGUuIFRoYW5rcy4NCj4gDQo+IFRoZW4gdGhlICJhcyBzb29uIGFzIHBvc3NpYmxlIiBzaG91 bGQgYmUgZG9uZSBpbiBuZXRlbSwgcmlnaHQgPw0KPiANCg0KVGhlIGNvcnJ1cHQgZnVuY3Rpb24g b2YgbmV0ZW0gaXMgdGhlIGVtdWxhdGlvbiBvZiByYW5kb20gbm9pc2UgaW50cm9kdWNpbmcgYW4g ZXJyb3IgaW4gYSByYW5kb20NCnBvc2l0aW9uIGZvciBhIGNob3NlbiBwZXJjZW50IG9mIHBhY2tl dHMgdG8gdGVzdCB0aGUgbmV0d29yayBtb2R1bGUuc28gdGhlIG5ldGVtIGRvZXMgbm90IGRpc2dh cmQNCnRoZSBwYWNrZXQuDQoNCj4gQWx0ZXJuYXRpdmVseSBmaXggYXJtNjQgaXBfZmFzdF9jc3Vt KCkgc28gdGhhdCBpdCBtYXRjaGVzIHRoZSByZWZlcmVuY2UNCj4gaW1wbGVtZW50YXRpb24gKGxp Yi9jaGVja3N1bS5jKQ0KPiANCj4gV2UgZG8gbm90IHdhbnQgYWRkaW5nIGNvZGUgaW4gaXB2bGFu IHRoYXQgaXMgZXNzZW50aWFsbHkgZGVhZCBjb2RlIGZvciBub3JtYWwNCj4gdXNhZ2VzLg0KPiAN Cg0KQWRkIHRoZSBpcF9mYXN0X2NzdW0gY2hlY2sgaW4gaXB2bGFuX2dldF9MM19oZHIgaXMgcmVk dW5jZGFudC5JIHdpbGwgbW9kaWZ5IHRoZSBwYXRjaCB0byBmaXggdGhlIHBhbmljIG9mIGRvaW5n IA0KdGhlIHNwZWN0aWFsIHRlc3QgaW4gYXJtNjQgVk0uDQoNCj4gaXBfZmFzdF9jc3VtKCkgaXMg bm90IGZyZWUuDQo+IA0KPiBTbywgdGhpcyBpcyBhIE5BQ0sgZnJvbSBteSBzaWRlLCBpbiBjYXNl IHRoaXMgd2FzIG5vdCBjbGVhciBlbm91Z2guDQo+IA0KPiANCj4gDQo+ID4NCj4gPg0KPiA+IC0t LS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4gPiDlj5Hku7bkuro6IEVyaWMgRHVtYXpldCBbbWFpbHRv OmVkdW1hemV0QGdvb2dsZS5jb21dDQo+ID4g5Y+R6YCB5pe26Ze0OiBUaHVyc2RheSwgSnVseSAy MywgMjAyMCAxMDoxNQ0KPiA+IOaUtuS7tuS6ujogR3VvZGVxaW5nIChBKSA8Z2VmZnJleS5ndW9A aHVhd2VpLmNvbT4NCj4gPiDmioTpgIE6IERhdmlkIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD47IGt1YmFAa2VybmVsLm9yZzsNCj4gbWFoZXNoYkBnb29nbGUuY29tOyBuZXRkZXZAdmdlci5r ZXJuZWwub3JnDQo+ID4g5Li76aKYOiBSZTogW1BBVENILHYyXSBpcHZsYW46IGFkZCB0aGUgY2hl Y2sgb2YgaXAgaGVhZGVyIGNoZWNrc3VtDQo+ID4NCj4gPiBPbiBXZWQsIEp1bCAyMiwgMjAyMCBh dCA2OjU5IFBNIEd1b2RlcWluZyAoQSkgPGdlZmZyZXkuZ3VvQGh1YXdlaS5jb20+DQo+IHdyb3Rl Og0KPiA+Pg0KPiA+PiBJIGFtIHNvcnJ5LCB0aGUgbWFpbCBpcyBub3Qgc2VudCB0byB5b3UgZGly ZWN0bHk7DQo+ID4+DQo+ID4+IElmIGRvIHRoZSBmb2xsb3dpbmcgdGVzdCx0aGlzIHdpbGwgY2F1 c2UgYSBwYW5pYyBpbiBhIGFybTY0IFZNLiB0aGlzIGNhbiBiZQ0KPiByZXByb2R1Y2VkIGVhc2ls eS4NCj4gPj4NCj4gPj4gTGludXggb3NjIDUuOC4wLXJjNisgIzMgU01QIFRodSBKdWwgMjMgMDE6 NDA6NDcgVVRDIDIwMjAgYWFyY2g2NA0KPiA+Pg0KPiA+PiBUaGUgcHJvZ3JhbXMgaW5jbHVkZWQg d2l0aCB0aGUgRGViaWFuIEdOVS9MaW51eCBzeXN0ZW0gYXJlIGZyZWUNCj4gPj4gc29mdHdhcmU7 IHRoZSBleGFjdCBkaXN0cmlidXRpb24gdGVybXMgZm9yIGVhY2ggcHJvZ3JhbSBhcmUgZGVzY3Jp YmVkDQo+ID4+IGluIHRoZSBpbmRpdmlkdWFsIGZpbGVzIGluIC91c3Ivc2hhcmUvZG9jLyovY29w eXJpZ2h0Lg0KPiA+Pg0KPiA+PiBEZWJpYW4gR05VL0xpbnV4IGNvbWVzIHdpdGggQUJTT0xVVEVM WSBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudA0KPiA+PiBwZXJtaXR0ZWQgYnkgYXBwbGljYWJs ZSBsYXcuDQo+ID4+IHJvb3RAb3NjOn4jIGlmY29uZmlnIGV0aDAgdXANCj4gPj4gcm9vdEBvc2M6 fiMgaXAgbmV0bnMgYWRkIG5zMQ0KPiA+PiByb290QG9zYzp+IyBpcCBsaW5rIGFkZCBndyBsaW5r IGV0aDAgdHlwZSBpcHZsYW4gcm9vdEBvc2M6fiMgaXAgYWRkcg0KPiA+PiBhZGQgMTY4LjE2LjAu MS8yNCBkZXYgZ3cgcm9vdEBvc2M6fiMgaXAgbGluayBzZXQgZGV2IGd3IHVwIHJvb3RAb3NjOn4j DQo+ID4+IGlwIGxpbmsgYWRkIGlwMSBsaW5rIGV0aDAgdHlwZSBpcHZsYW4gcm9vdEBvc2M6fiMg aXAgbGluayBzZXQgaXAxDQo+ID4+IG5ldG5zIG5zMSByb290QG9zYzp+IyBpcCBuZXRucyBleGVj IG5zMSBpcCBsaW5rIHNldCBpcDEgdXAgcm9vdEBvc2M6fiMNCj4gPj4gaXAgbmV0bnMgZXhlYyBu czEgaXAgYWRkciBhZGQgMTY4LjE2LjAuMi8yNCBkZXYgaXAxIHJvb3RAb3NjOn4jIGlwDQo+ID4+ IG5ldG5zIGV4ZWMgbnMxIGlwIGxpbmsgc2V0IGxvIHVwIHJvb3RAb3NjOn4jIGlwIG5ldG5zIGV4 ZWMgbnMxIGlwIGFkZHINCj4gPj4gYWRkIDEyNy4wLjAuMS84IGRldiBsbyBSVE5FVExJTksgYW5z d2VyczogRmlsZSBleGlzdHMgcm9vdEBvc2M6fiMgaXANCj4gPj4gbmV0bnMgZXhlYyBuczEgdGMg cWRpc2MgYWRkIGRldiBpcDEgcm9vdCBuZXRlbSBjb3JydXB0IDEwMCUNCj4gPj4gcm9vdEBvc2M6 fiMgaXAgbmV0bnMgZXhlYyBuczEgcGluZyAxNjguMTYuMC4xIFBJTkcgMTY4LjE2LjAuMQ0KPiA+ PiAoMTY4LjE2LjAuMSkgNTYoODQpIGJ5dGVzIG9mIGRhdGEuDQo+ID4+IEZyb20gMTY4LjE2LjAu MSBpY21wX3NlcT0yIERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFibGUgRnJvbQ0KPiA+PiAxNjgu MTYuMC4xIGljbXBfc2VxPTEyIERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFibGUgRnJvbSAxNjgu MTYuMC4xDQo+ID4+IGljbXBfc2VxPTMwIERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFibGUNCj4g Pj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT00OCB0dGw9NjQgdGltZT0wLjA1 MiBtcw0KPiA+PiA2NCBieXRlcyBmcm9tIDE2OC4xNi4wLjE6IGljbXBfc2VxPTY1IHR0bD02NCB0 aW1lPTAuMDYwIG1zIEZyb20NCj4gPj4gMTY4LjE2LjAuMSBpY21wX3NlcT04MCBEZXN0aW5hdGlv biBIb3N0IFVucmVhY2hhYmxlIEZyb20gMTY4LjE2LjAuMQ0KPiA+PiBpY21wX3NlcT05NyBEZXN0 aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlDQo+ID4+IDY0IGJ5dGVzIGZyb20gMTY4LjE2LjAuMTog aWNtcF9zZXE9MTAwIHR0bD02NCB0aW1lPTAuMDIyIG1zDQo+ID4+IDY0IGJ5dGVzIGZyb20gMTY4 LjE2LjAuMTogaWNtcF9zZXE9MTAxIHR0bD02NCB0aW1lPTAuMDU0IG1zDQo+ID4+IDY0IGJ5dGVz IGZyb20gMTY4LjE2LjAuMTogaWNtcF9zZXE9MTAzIHR0bD02NCB0aW1lPTAuMDUzIG1zIEZyb20N Cj4gPj4gMTY4LjE2LjAuMSBpY21wX3NlcT0xMDIgRGVzdGluYXRpb24gSG9zdCBVbnJlYWNoYWJs ZSBGcm9tIDE2OC4xNi4wLjENCj4gPj4gaWNtcF9zZXE9MTI3IERlc3RpbmF0aW9uIEhvc3QgVW5y ZWFjaGFibGUNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0xMzIgdHRs PTY0IHRpbWU9MC4wNTcgbXMNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3Nl cT0xMzUgdHRsPTY0IHRpbWU9MC4wNTEgbXMNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4x OiBpY21wX3NlcT0xNDEgdHRsPTY0IHRpbWU9MC4wNTEgbXMgRnJvbQ0KPiA+PiAxNjguMTYuMC4x IGljbXBfc2VxPTE0MCBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlIEZyb20gMTY4LjE2LjAu MQ0KPiA+PiBpY21wX3NlcT0xNDIgRGVzdGluYXRpb24gSG9zdCBVbnJlYWNoYWJsZSBGcm9tIDE2 OC4xNi4wLjENCj4gaWNtcF9zZXE9MTUwDQo+ID4+IERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFi bGUgRnJvbSAxNjguMTYuMC4xIGljbXBfc2VxPTE1NCBEZXN0aW5hdGlvbg0KPiA+PiBIb3N0IFVu cmVhY2hhYmxlIEZyb20gMTY4LjE2LjAuMSBpY21wX3NlcT0xNjQgRGVzdGluYXRpb24gSG9zdA0K PiA+PiBVbnJlYWNoYWJsZSBGcm9tIDE2OC4xNi4wLjEgaWNtcF9zZXE9MTY5IERlc3RpbmF0aW9u IEhvc3QgVW5yZWFjaGFibGUNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3Nl cT0xNzMgdHRsPTY0IHRpbWU9MC4wNTYgbXMNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4x OiBpY21wX3NlcT0xODUgdHRsPTY0IHRpbWU9MC4wNTggbXMNCj4gPj4gNjQgYnl0ZXMgZnJvbSAx NjguMTYuMC4xOiBpY21wX3NlcT0yMDIgdHRsPTY0IHRpbWU9MC4wNTYgbXMNCj4gPj4gNjQgYnl0 ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0yMDMgdHRsPTY0IHRpbWU9MC4wNTcgbXMNCj4g Pj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0yMTkgdHRsPTY0IHRpbWU9MC4w NTAgbXMNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0yMjcgdHRsPTY0 IHRpbWU9MC4wNTcgbXMNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0y MjggdHRsPTY0IHRpbWU9MC4wNDQgbXMgRnJvbQ0KPiA+PiAxNjguMTYuMC4xIGljbXBfc2VxPTIz NyBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlIEZyb20gMTY4LjE2LjAuMQ0KPiA+PiBpY21w X3NlcT0yMzkgRGVzdGluYXRpb24gSG9zdCBVbnJlYWNoYWJsZQ0KPiA+PiA2NCBieXRlcyBmcm9t IDE2OC4xNi4wLjE6IGljbXBfc2VxPTI0MyB0dGw9NjQgdGltZT0wLjA1MyBtcyBGcm9tDQo+ID4+ IDE2OC4xNi4wLjEgaWNtcF9zZXE9MjQyIERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFibGUNCj4g Pj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0yNDYgdHRsPTY0IHRpbWU9MC4w NTYgbXMNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0yNTQgdHRsPTY0 IHRpbWU9MC4wNTYgbXMNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0y NTUgdHRsPTY0IHRpbWU9MC4wNTQgbXMgRnJvbQ0KPiA+PiAxNjguMTYuMC4xIGljbXBfc2VxPTI2 MyBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlIEZyb20gMTY4LjE2LjAuMQ0KPiA+PiBpY21w X3NlcT0yNjkgRGVzdGluYXRpb24gSG9zdCBVbnJlYWNoYWJsZSBGcm9tIDE2OC4xNi4wLjENCj4g aWNtcF9zZXE9MjczDQo+ID4+IERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFibGUNCj4gPj4gNjQg Ynl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0yNzkgdHRsPTY0IHRpbWU9MC4wNTcgbXMg RnJvbQ0KPiA+PiAxNjguMTYuMC4xIGljbXBfc2VxPTI4NCBEZXN0aW5hdGlvbiBIb3N0IFVucmVh Y2hhYmxlIEZyb20gMTY4LjE2LjAuMQ0KPiA+PiBpY21wX3NlcT0yODYgRGVzdGluYXRpb24gSG9z dCBVbnJlYWNoYWJsZQ0KPiA+PiA2NCBieXRlcyBmcm9tIDE2OC4xNi4wLjE6IGljbXBfc2VxPTI5 MSB0dGw9NjQgdGltZT0wLjA1NCBtcw0KPiA+PiA2NCBieXRlcyBmcm9tIDE2OC4xNi4wLjE6IGlj bXBfc2VxPTI5MyB0dGw9NjQgdGltZT0wLjA1OCBtcyBGcm9tDQo+ID4+IDE2OC4xNi4wLjEgaWNt cF9zZXE9Mjk0IERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFibGUgRnJvbSAxNjguMTYuMC4xDQo+ ID4+IGljbXBfc2VxPTI5OCBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlDQo+ID4+IDY0IGJ5 dGVzIGZyb20gMTY4LjE2LjAuMTogaWNtcF9zZXE9MzA5IHR0bD02NCB0aW1lPTAuMDU2IG1zIEZy b20NCj4gPj4gMTY4LjE2LjAuMSBpY21wX3NlcT0zMTAgRGVzdGluYXRpb24gSG9zdCBVbnJlYWNo YWJsZSBGcm9tIDE2OC4xNi4wLjENCj4gPj4gaWNtcF9zZXE9MzEyIERlc3RpbmF0aW9uIEhvc3Qg VW5yZWFjaGFibGUNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT0zMzIg dHRsPTY0IHRpbWU9MC4wNTUgbXMgRnJvbQ0KPiA+PiAxNjguMTYuMC4xIGljbXBfc2VxPTMzNCBE ZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlDQo+ID4+IDY0IGJ5dGVzIGZyb20gMTY4LjE2LjAu MTogaWNtcF9zZXE9MzQwIHR0bD02NCB0aW1lPTAuMDU1IG1zDQo+ID4+IDY0IGJ5dGVzIGZyb20g MTY4LjE2LjAuMTogaWNtcF9zZXE9MzQ0IHR0bD02NCB0aW1lPTAuMDUwIG1zDQo+ID4+IDY0IGJ5 dGVzIGZyb20gMTY4LjE2LjAuMTogaWNtcF9zZXE9MzU1IHR0bD02NCB0aW1lPTAuMDU3IG1zDQo+ ID4+IDY0IGJ5dGVzIGZyb20gMTY4LjE2LjAuMTogaWNtcF9zZXE9MzU4IHR0bD02NCB0aW1lPTAu MDUwIG1zIEZyb20NCj4gPj4gMTY4LjE2LjAuMSBpY21wX3NlcT0zNTYgRGVzdGluYXRpb24gSG9z dCBVbnJlYWNoYWJsZSBGcm9tIDE2OC4xNi4wLjENCj4gPj4gaWNtcF9zZXE9MzY5IERlc3RpbmF0 aW9uIEhvc3QgVW5yZWFjaGFibGUNCj4gPj4gNjQgYnl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21w X3NlcT0zODIgdHRsPTY0IHRpbWU9MC4wNTMgbXMgRnJvbQ0KPiA+PiAxNjguMTYuMC4xIGljbXBf c2VxPTM4MSBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlIEZyb20gMTY4LjE2LjAuMQ0KPiA+ PiBpY21wX3NlcT0zOTYgRGVzdGluYXRpb24gSG9zdCBVbnJlYWNoYWJsZQ0KPiA+PiA2NCBieXRl cyBmcm9tIDE2OC4xNi4wLjE6IGljbXBfc2VxPTQwMCB0dGw9NjQgdGltZT0wLjA1OCBtcyBGcm9t DQo+ID4+IDE2OC4xNi4wLjEgaWNtcF9zZXE9NDA2IERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFi bGUgRnJvbSAxNjguMTYuMC4xDQo+ID4+IGljbXBfc2VxPTQxNCBEZXN0aW5hdGlvbiBIb3N0IFVu cmVhY2hhYmxlIEZyb20gMTY4LjE2LjAuMQ0KPiBpY21wX3NlcT00MTcNCj4gPj4gRGVzdGluYXRp b24gSG9zdCBVbnJlYWNoYWJsZQ0KPiA+PiA2NCBieXRlcyBmcm9tIDE2OC4xNi4wLjE6IGljbXBf c2VxPTQyMiB0dGw9NjQgdGltZT0wLjAxOCBtcw0KPiA+PiA2NCBieXRlcyBmcm9tIDE2OC4xNi4w LjE6IGljbXBfc2VxPTQyMyB0dGw9NjQgdGltZT0wLjA1OCBtcw0KPiA+PiA2NCBieXRlcyBmcm9t IDE2OC4xNi4wLjE6IGljbXBfc2VxPTQyOSB0dGw9NjQgdGltZT0wLjA1NiBtcw0KPiA+PiA2NCBi eXRlcyBmcm9tIDE2OC4xNi4wLjE6IGljbXBfc2VxPTQ0NSB0dGw9NjQgdGltZT0wLjA0OSBtcyBG cm9tDQo+ID4+IDE2OC4xNi4wLjEgaWNtcF9zZXE9NDQ0IERlc3RpbmF0aW9uIEhvc3QgVW5yZWFj aGFibGUgRnJvbSAxNjguMTYuMC4xDQo+ID4+IGljbXBfc2VxPTQ1MyBEZXN0aW5hdGlvbiBIb3N0 IFVucmVhY2hhYmxlIEZyb20gMTY4LjE2LjAuMQ0KPiBpY21wX3NlcT00NTUNCj4gPj4gRGVzdGlu YXRpb24gSG9zdCBVbnJlYWNoYWJsZQ0KPiA+PiA2NCBieXRlcyBmcm9tIDE2OC4xNi4wLjE6IGlj bXBfc2VxPTQ1NiB0dGw9NjQgdGltZT0wLjAyNCBtcw0KPiA+PiA2NCBieXRlcyBmcm9tIDE2OC4x Ni4wLjE6IGljbXBfc2VxPTQ2OSB0dGw9NjQgdGltZT0wLjA1OCBtcyBGcm9tDQo+ID4+IDE2OC4x Ni4wLjEgaWNtcF9zZXE9NDc1IERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFibGUNCj4gPj4gNjQg Ynl0ZXMgZnJvbSAxNjguMTYuMC4xOiBpY21wX3NlcT00ODMgdHRsPTY0IHRpbWU9MC4wNTQgbXMg RnJvbQ0KPiA+PiAxNjguMTYuMC4xIGljbXBfc2VxPTQ4OCBEZXN0aW5hdGlvbiBIb3N0IFVucmVh Y2hhYmxlDQo+ID4+IDY0IGJ5dGVzIGZyb20gMTY4LjE2LjAuMTogaWNtcF9zZXE9NTA0IHR0bD02 NCB0aW1lPTAuMDU2IG1zDQo+ID4+IDY0IGJ5dGVzIGZyb20gMTY4LjE2LjAuMTogaWNtcF9zZXE9 NTA1IHR0bD02NCB0aW1lPTAuMDU1IG1zIEZyb20NCj4gPj4gMTY4LjE2LjAuMSBpY21wX3NlcT01 MTAgRGVzdGluYXRpb24gSG9zdCBVbnJlYWNoYWJsZSBGcm9tIDE2OC4xNi4wLjENCj4gPj4gaWNt cF9zZXE9NTExIERlc3RpbmF0aW9uIEhvc3QgVW5yZWFjaGFibGUNCj4gPj4gNjQgYnl0ZXMgZnJv bSAxNjguMTYuMC4xOiBpY21wX3NlcT01MTYgdHRsPTY0IHRpbWU9MC4wNTUgbXMgRnJvbQ0KPiA+ PiAxNjguMTYuMC4xIGljbXBfc2VxPTUxOSBEZXN0aW5hdGlvbiBIb3N0IFVucmVhY2hhYmxlIFsg IDU4Mi4zNjg5MzhdDQo+ID4+IFVuYWJsZSB0byBoYW5kbGUga2VybmVsIHBhZ2luZyByZXF1ZXN0 IGF0IHZpcnR1YWwgYWRkcmVzcw0KPiA+PiBmZmZmMDAwMGY4NWYwMDAwIFsgIDU4Mi4zNjk3MzJd IE1lbSBhYm9ydCBpbmZvOg0KPiA+PiBbICA1ODIuMzY5OTg3XSAgIEVTUiA9IDB4OTYwMDAwMDcN Cj4gPj4gWyAgNTgyLjM3MDI2Nl0gICBFQyA9IDB4MjU6IERBQlQgKGN1cnJlbnQgRUwpLCBJTCA9 IDMyIGJpdHMNCj4gPj4gWyAgNTgyLjM3MDgzM10gICBTRVQgPSAwLCBGblYgPSAwDQo+ID4+IFsg IDU4Mi4zNzExMTNdICAgRUEgPSAwLCBTMVBUVyA9IDANCj4gPj4gWyAgNTgyLjM3MTM5MV0gRGF0 YSBhYm9ydCBpbmZvOg0KPiA+PiBbICA1ODIuMzcxNjcxXSAgIElTViA9IDAsIElTUyA9IDB4MDAw MDAwMDcNCj4gPj4gWyAgNTgyLjM3MjAxN10gICBDTSA9IDAsIFduUiA9IDANCj4gPj4gWyAgNTgy LjM3MjI5OV0gc3dhcHBlciBwZ3RhYmxlOiA0ayBwYWdlcywgNDgtYml0IFZBcywNCj4gPj4gcGdk cD0wMDAwMDAwMTJkYWI3MDAwIFsgIDU4Mi4zNzI4OTZdIFtmZmZmMDAwMGY4NWYwMDAwXQ0KPiA+ PiBwZ2Q9MDAwMDAwMDEzZmZmODAwMywgcDRkPTAwMDAwMDAxM2ZmZjgwMDMsIHB1ZD0wMDAwMDAw MTNmOWY0MDAzLA0KPiA+PiBwbWQ9MDAwMDAwMDEzZjgzODAwMywgcHRlPTAwMDAwMDAwMDAwMDAw MDAgWyAgNTgyLjM3NDAzM10gSW50ZXJuYWwNCj4gZXJyb3I6IE9vcHM6IDk2MDAwMDA3IFsjMV0g U01QIFsgIDU4Mi4zNzQ0NjhdIE1vZHVsZXMgbGlua2VkIGluOg0KPiA+PiBbICA1ODIuMzc0Nzk1 XSBDUFU6IDEgUElEOiA1MjUgQ29tbTogcGluZyBOb3QgdGFpbnRlZCA1LjguMC1yYzYrICMzIFsN Cj4gPj4gNTgyLjM3NTQ2OF0gSGFyZHdhcmUgbmFtZTogUUVNVSBLVk0gVmlydHVhbCBNYWNoaW5l LCBCSU9TIDAuMC4wDQo+ID4+IDAyLzA2LzIwMTUgWyAgNTgyLjM3NjIxNV0gcHN0YXRlOiAyMDQw MDAwNSAobnpDdiBkYWlmICtQQU4gLVVBTw0KPiA+PiBCVFlQRT0tLSkgWyAgNTgyLjM3NjgwNV0g cGMgOiBfX2lwX2xvY2FsX291dCsweDg0LzB4MTg4IFsgIDU4Mi4zNzcyMzRdDQo+ID4+IGxyIDog aXBfbG9jYWxfb3V0KzB4MzQvMHg2OCBbICA1ODIuMzc3NjM1XSBzcCA6IGZmZmY4MDAwMTMyNjM0 NDAgWw0KPiA+PiA1ODIuMzc3OTg2XSB4Mjk6IGZmZmY4MDAwMTMyNjM0NDAgeDI4OiAwMDAwMDAw MDAwMDAwMDAxDQo+IFsgIDU4Mi4zNzg1MzZdDQo+ID4+IHgyNzogZmZmZjgwMDAxMTFkMjAxOCB4 MjY6IGZmZmY4MDAwMTE0Y2JhODAgWyAgNTgyLjM3OTA5M10geDI1Og0KPiA+PiBmZmZmMDAwMGVj NGU3NDAwIHgyNDogMDAwMDAwMDAwMDAwMDAwMCBbICA1ODIuMzc5NjUzXSB4MjM6DQo+ID4+IDAw MDAwMDAwMDAwMDAwNjIgeDIyOiBmZmZmODAwMDExNGM5MDAwIFsgIDU4Mi4zODAyMjFdIHgyMToN Cj4gPj4gZmZmZjAwMDBkOTdhYzYwMCB4MjA6IGZmZmYwMDAwZWM1MTkwMDAgWyAgNTgyLjM4MDc3 OF0geDE5Og0KPiA+PiBmZmZmODAwMDExNWI1YmMwIHgxODogMDAwMDAwMDAwMDAwMDAwMCBbICA1 ODIuMzgxMzI0XSB4MTc6DQo+ID4+IDAwMDAwMDAwMDAwMDAwMDAgeDE2OiAwMDAwMDAwMDAwMDAw MDAwIFsgIDU4Mi4zODE4NzZdIHgxNToNCj4gPj4gMDAwMDAwMDAwMDAwMDAwMCB4MTQ6IDAwMDAw MDAwMDAwMDAwMDAgWyAgNTgyLjM4MjQzMV0geDEzOg0KPiA+PiAwMDAwMDAwMDAwMDAwMDAwIHgx MjogMDAwMDAwMDAwMDAwMDAwMSBbICA1ODIuMzgyOTg2XSB4MTE6DQo+ID4+IGZmZmY4MDAwMTBk MjE4MzggeDEwOiAwMDAwMDAwMDAwMDAwMDAxIFsgIDU4Mi4zODM1NjddIHg5IDoNCj4gPj4gMDAw MDAwMDAwMDAwMDAwMSB4OCA6IDAwMDAwMDAwMDAwMDAwMDAgWyAgNTgyLjM4NDEzNl0geDcgOg0K PiA+PiAwMDAwMDAwMDAwMDAwMDAwIHg2IDogZmZmZjAwMDBlYzRlNWUwMCBbICA1ODIuMzg0Njkz XSB4NSA6DQo+ID4+IDAyNDA3OWNhNTQwMDAxODQgeDQgOiBmZmZmMDAwMGVjNGU1ZTEwIFsgIDU4 Mi4zODUyNDZdIHgzIDoNCj4gPj4gMDAwMDAwMDAwMDAwMDAwMCB4MiA6IGZmZmYwMDA0ZWM0ZTVl MjAgWyAgNTgyLjM4NTgwOF0geDEgOg0KPiA+PiBmZmZmMDAwMGY4NWYwMDAwIHgwIDogMDMxZDA3 OTYyNmE5YzdhZSBbICA1ODIuMzg2MzY1XSBDYWxsIHRyYWNlOg0KPiA+PiBbICA1ODIuMzg2NjI5 XSAgX19pcF9sb2NhbF9vdXQrMHg4NC8weDE4OCBbICA1ODIuMzg3MDMwXQ0KPiA+PiBpcF9sb2Nh bF9vdXQrMHgzNC8weDY4IFsgIDU4Mi4zODc0MDBdICBpcHZsYW5fcXVldWVfeG1pdCsweDU0OC8w eDVjMA0KPiBbDQo+ID4+IDU4Mi4zODc4NDVdICBpcHZsYW5fc3RhcnRfeG1pdCsweDJjLzB4OTAg WyAgNTgyLjM4ODI4M10NCj4gPj4gZGV2X2hhcmRfc3RhcnRfeG1pdCsweGI0LzB4MjYwIFsgIDU4 Mi4zODg3MzJdDQo+ID4+IHNjaF9kaXJlY3RfeG1pdCsweDFiNC8weDU1MCBbICA1ODIuMzg5MTQ1 XSAgX19xZGlzY19ydW4rMHgxNDAvMHg2NDgNCj4gWw0KPiA+PiA1ODIuMzg5NTI0XSAgX19kZXZf cXVldWVfeG1pdCsweDZhNC8weDhiOCBbICA1ODIuMzg5OTQ4XQ0KPiA+PiBkZXZfcXVldWVfeG1p dCsweDI0LzB4MzAgWyAgNTgyLjM5MDMzOV0NCj4gaXBfZmluaXNoX291dHB1dDIrMHgzMjQvMHg1 ODANCj4gPj4gWyAgNTgyLjM5MDc3MF0gIF9faXBfZmluaXNoX291dHB1dCsweDEzMC8weDIxOCBb ICA1ODIuMzkxMjE4XQ0KPiA+PiBpcF9maW5pc2hfb3V0cHV0KzB4MzgvMHhkMCBbICA1ODIuMzkx NjMzXSAgaXBfb3V0cHV0KzB4YjQvMHgxMzAgWw0KPiA+PiA1ODIuMzkxOTg0XSAgaXBfbG9jYWxf b3V0KzB4NTgvMHg2OCBbICA1ODIuMzkyMzY5XQ0KPiA+PiBpcF9zZW5kX3NrYisweDJjLzB4ODgg WyAgNTgyLjM5MjcyOV0NCj4gaXBfcHVzaF9wZW5kaW5nX2ZyYW1lcysweDQ0LzB4NTANCj4gPj4g WyAgNTgyLjM5MzE4OV0gIHJhd19zZW5kbXNnKzB4N2E0LzB4OTg4IFsgIDU4Mi4zOTM1NjldDQo+ ID4+IGluZXRfc2VuZG1zZysweDRjLzB4NzggWyAgNTgyLjM5Mzk0Ml0gIHNvY2tfc2VuZG1zZysw eDU4LzB4NjggWw0KPiA+PiA1ODIuMzk0MzExXSAgX19fX3N5c19zZW5kbXNnKzB4Mjg0LzB4MmMw IFsgIDU4Mi4zOTQ3MjFdDQo+ID4+IF9fX3N5c19zZW5kbXNnKzB4OTAvMHhkMCBbICA1ODIuMzk1 MTEzXSAgX19zeXNfc2VuZG1zZysweDc4LzB4ZDAgWw0KPiA+PiA1ODIuMzk1NTA0XSAgX19hcm02 NF9zeXNfc2VuZG1zZysweDJjLzB4MzggWyAgNTgyLjM5NTk0Ml0NCj4gPj4gZWwwX3N2Y19jb21t b24uY29uc3Rwcm9wLjIrMHg3MC8weDEyOA0KPiA+PiBbICA1ODIuMzk2NDcyXSAgZG9fZWwwX3N2 YysweDM0LzB4YTANCj4gPj4gWyAgNTgyLjM5NjgzNF0gIGVsMF9zeW5jX2hhbmRsZXIrMHhlYy8w eDEyOCBbICA1ODIuMzk3MjQ5XQ0KPiA+PiBlbDBfc3luYysweDE0MC8weDE4MCBbICA1ODIuMzk3 NjExXSBDb2RlOiBhYjAzMDAwNSA5MTAwMTQ0Mg0KPiA5YTAzMDAwMA0KPiA+PiA4YjAyMDg4MiAo Yjg0MDQ0MjMpIFsgIDU4Mi4zOTgyNjRdIC0tLVsgZW5kIHRyYWNlIDkyYWRiNTRjODYxMWY4YzUN Cj4gPj4gXS0tLSBbICA1ODIuMzk4NzU0XSBLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogRmF0 YWwgZXhjZXB0aW9uIGluDQo+ID4+IGludGVycnVwdCBbICA1ODIuMzk5NDgxXSBTTVA6IHN0b3Bw aW5nIHNlY29uZGFyeSBDUFVzIFsgIDU4Mi4zOTk5MjNdDQo+ID4+IEtlcm5lbCBPZmZzZXQ6IDB4 YzAwMDAgZnJvbSAweGZmZmY4MDAwMTAwMDAwMDAgWyAgNTgyLjQwMDU2MV0NCj4gPj4gUEhZU19P RkZTRVQ6IDB4NDAwMDAwMDAgWyAgNTgyLjQwMDkzOV0gQ1BVIGZlYXR1cmVzOg0KPiAweDA0MDAw MiwyMmEwODIzOA0KPiA+PiBbICA1ODIuNDAxMzgwXSBNZW1vcnkgTGltaXQ6IG5vbmUgWyAgNTgy LjQwMTcxMF0gLS0tWyBlbmQgS2VybmVsIHBhbmljDQo+ID4+IC0gbm90IHN5bmNpbmc6IEZhdGFs IGV4Y2VwdGlvbiBpbiBpbnRlcnJ1cHQgXS0tLQ0KPiA+Pg0KPiA+PiBUaGlzIHBhbmljIGlzIGJl Y2F1c2UgdGhlIGlwIGhlYWRlciBpcyBjb3JydXB0ZWQuIFRoZSBpaGwgb2YgdGhlIGlwIGhlYWRl ciBpcw0KPiBlcnJvcu+8jHRoaXMgY2F1c2UgaXBfZmFzdF9jc3VtIGFjY2VzcyB0aGUgaWxsZWdh bCBhZGRyZXNzLg0KPiA+PiAyMyBzdGF0aWMgaW5saW5lIF9fc3VtMTYgaXBfZmFzdF9jc3VtKGNv bnN0IHZvaWQgKmlwaCwgdW5zaWduZWQgaW50DQo+ID4+IGlobCkNCj4gPj4gIDI0IHsNCj4gPj4g IDI1ICAgICBfX3VpbnQxMjhfdCB0bXA7DQo+ID4+ICAyNiAgICAgdTY0IHN1bTsNCj4gPj4gIDI3 DQo+ID4+ICAyOCAgICAgdG1wID0gKihjb25zdCBfX3VpbnQxMjhfdCAqKWlwaDsNCj4gPj4gIDI5 ICAgICBpcGggKz0gMTY7DQo+ID4+ICAzMCAgICAgaWhsIC09IDQ7DQo+IC0tLS0taGVyZSwgaWYg aWhsIGlzIHNtYWxsZXIgdGhhbiA1LCB0aGUgbmV4dCB3aWxsIGFjY2VzcyB0aGUgaWxsZWdhbCBh ZGRyZXNzLg0KPiA+DQo+ID4NCj4gPiBXZWxsLCB0aGUgYnVnIGlzIHRoZXJlIHRoZW4uDQo+ID4N Cj4gPiBDb2RlIGZvciBvdGhlciBhcmNoZXMgaXMgZGlmZmVyZW50Lg0KPiA+DQo+ID4geDg2IGZv ciBpbnN0YW5jZSBoYXMgYSB0ZXN0IGZvciBzaWxseSBpaGwNCj4gPg0KPiA+IHN0YXRpYyBpbmxp bmUgX19zdW0xNiBpcF9mYXN0X2NzdW0oY29uc3Qgdm9pZCAqaXBoLCB1bnNpZ25lZCBpbnQgaWhs KQ0KPiB7IHVuc2lnbmVkIGludCBzdW07DQo+ID4NCj4gPiBhc20oIiAgbW92bCAoJTEpLCAlMFxu Ig0KPiA+ICAgICAiICBzdWJsICQ0LCAlMlxuIg0KPiA+ICAgICAiICBqYmUgMmZcbiIgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tLSBoZXJlDQo+ID4gICAgICIgIGFkZGwgNCglMSksICUwXG4i DQo+ID4gICAgICIgIGFkY2wgOCglMSksICUwXG4iDQo+ID4gICAgICIgIGFkY2wgMTIoJTEpLCAl MFxuIg0KPiA+ICAgICAiMTogYWRjbCAxNiglMSksICUwXG4iDQo+ID4gICAgICIgIGxlYSA0KCUx KSwgJTFcbiINCj4gPiAgICAgIiAgZGVjbCAlMlxuIg0KPiA+ICAgICAiICBqbmUgMWJcbiINCj4g PiAgICAgIiAgYWRjbCAkMCwgJTBcbiINCj4gPiAgICAgIiAgbW92bCAlMCwgJTJcbiINCj4gPiAg ICAgIiAgc2hybCAkMTYsICUwXG4iDQo+ID4gICAgICIgIGFkZHcgJXcyLCAldzBcbiINCj4gPiAg ICAgIiAgYWRjbCAkMCwgJTBcbiINCj4gPiAgICAgIiAgbm90bCAlMFxuIg0KPiA+ICAgICAiMjoi DQo+ID4gLyogU2luY2UgdGhlIGlucHV0IHJlZ2lzdGVycyB3aGljaCBhcmUgbG9hZGVkIHdpdGgg aXBoIGFuZCBpaGwNCj4gPiAgICBhcmUgbW9kaWZpZWQsIHdlIG11c3QgYWxzbyBzcGVjaWZ5IHRo ZW0gYXMgb3V0cHV0cywgb3IgZ2NjDQo+ID4gICAgd2lsbCBhc3N1bWUgdGhleSBjb250YWluIHRo ZWlyIG9yaWdpbmFsIHZhbHVlcy4gKi8NCj4gPiAgICAgOiAiPXIiIChzdW0pLCAiPXIiIChpcGgp LCAiPXIiIChpaGwpDQo+ID4gICAgIDogIjEiIChpcGgpLCAiMiIgKGlobCkNCj4gPiAgICAgOiAi bWVtb3J5Iik7DQo+ID4gcmV0dXJuIChfX2ZvcmNlIF9fc3VtMTYpc3VtOw0KPiA+IH0NCj4gPg0K PiA+DQo+ID4+ICAzMSAgICAgdG1wICs9ICgodG1wID4+IDY0KSB8ICh0bXAgPDwgNjQpKTsNCj4g Pj4gIDMyICAgICBzdW0gPSB0bXAgPj4gNjQ7DQo+ID4+ICAzMyAgICAgZG8gew0KPiA+PiAgMzQg ICAgICAgICBzdW0gKz0gKihjb25zdCB1MzIgKilpcGg7DQo+ID4+ICAzNSAgICAgICAgIGlwaCAr PSA0Ow0KPiA+PiAgMzYgICAgIH0gd2hpbGUgKC0taWhsKTsNCj4gPj4gIDM3DQo+ID4+ICAzOCAg ICAgc3VtICs9ICgoc3VtID4+IDMyKSB8IChzdW0gPDwgMzIpKTsNCj4gPj4gIDM5ICAgICByZXR1 cm4gY3N1bV9mb2xkKChfX2ZvcmNlIHUzMikoc3VtID4+IDMyKSk7DQo+ID4+ICA0MCB9DQo+ID4+ DQo+ID4+IEkgdGhpbmsgdGhpcyBwYW5pYyBtYXkgYmUgYSBwcm9ibGVtLCB0aGFua3MuDQo+ID4+ DQo+ID4+DQo+ID4+DQo+ID4+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4gPj4g5Y+R5Lu25Lq6 OiBDb25nIFdhbmcgW21haWx0bzp4aXlvdS53YW5nY29uZ0BnbWFpbC5jb21dDQo+ID4+IOWPkemA geaXtumXtDogV2VkbmVzZGF5LCBKdWx5IDIyLCAyMDIwIDM6MzkNCj4gPj4g5pS25Lu25Lq6OiBH dW9kZXFpbmcgKEEpIDxnZWZmcmV5Lmd1b0BodWF3ZWkuY29tPg0KPiA+PiDmioTpgIE6IERhdmlk IE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD47IEpha3ViIEtpY2luc2tpDQo+ID4+IDxrdWJh QGtlcm5lbC5vcmc+OyBNYWhlc2ggQmFuZGV3YXIgPG1haGVzaGJAZ29vZ2xlLmNvbT47IEVyaWMN Cj4gRHVtYXpldA0KPiA+PiA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT47IExpbnV4IEtlcm5lbCBOZXR3 b3JrIERldmVsb3BlcnMNCj4gPj4gPG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc+DQo+ID4+IOS4u+mi mDogUmU6IFtQQVRDSF0gaXB2bGFuOiBhZGQgdGhlIGNoZWNrIG9mIGlwIGhlYWRlciBjaGVja3N1 bQ0KPiA+Pg0KPiA+PiBPbiBUdWUsIEp1bCAyMSwgMjAyMCBhdCA2OjE3IEFNIGd1b2RlcWluZyA8 Z2VmZnJleS5ndW9AaHVhd2VpLmNvbT4NCj4gd3JvdGU6DQo+ID4+Pg0KPiA+Pj4gVGhlIGlwIGhl YWRlciBjaGVja3N1bSBjYW4gYmUgZXJyb3IgaW4gdGhlIGZvbGxvd2luZyBzdGVwcy4NCj4gPj4+ ICQgaXAgbmV0bnMgYWRkIG5zMQ0KPiA+Pj4gJCBpcCBsaW5rIGFkZCBndyBsaW5rIGV0aDAgdHlw ZSBpcHZsYW4gJCBpcCBhZGRyIGFkZCAxNjguMTYuMC4xLzI0DQo+ID4+PiBkZXYgZ3cgJCBpcCBs aW5rIHNldCBkZXYgZ3cgdXAgJCBpcCBsaW5rIGFkZCBpcDEgbGluayBldGgwIHR5cGUNCj4gPj4+ IGlwdmxhbiAkIGlwIGxpbmsgc2V0IGlwMSBuZXRucyBuczEgJCBpcCBuZXRucyBleGVjIG5zMSBp cCBsaW5rIHNldA0KPiA+Pj4gaXAxIHVwICQgaXAgbmV0bnMgZXhlYyBuczEgaXAgYWRkciBhZGQg MTY4LjE2LjAuMi8yNCBkZXYgaXAxICQgaXANCj4gPj4+IG5ldG5zIGV4ZWMgbnMxIHRjIHFkaXNj IGFkZCBkZXYgaXAxIHJvb3QgbmV0ZW0gY29ycnVwdCA1MCUgJCBpcA0KPiA+Pj4gbmV0bnMgZXhl YyBuczEgcGluZw0KPiA+Pj4gMTY4LjE2LjAuMQ0KPiA+Pj4NCj4gPj4+IFRoZSBpcCBoZWFkZXIg b2YgYSBwYWNrZXQgbWF5YmUgbW9kaWZpZWQgd2hlbiBpdCBzdGVwcyBpbg0KPiA+Pj4gaXB2bGFu X3Byb2Nlc3NfdjRfb3V0Ym91bmQgYmVjYXVzZSBvZiB0aGUgbmV0ZW0sIHRoZSBjb3JydXB0dGVk DQo+ID4+PiBwYWNrZXRzIHNob3VsZCBiZSBkcm9wcGVkLg0KPiA+Pg0KPiA+PiBUaGlzIGRvZXMg bm90IG1ha2UgbXVjaCBzZW5zZSwgYXMgeW91IGludGVudGlvbmFsbHkgY29ycnVwdCB0aGUgaGVh ZGVyLg0KPiBNb3JlIGltcG9ydGFudGx5LCB0aGUgY2hlY2sgeW91IGFkZCBpcyB0b28gbGF0ZSwg cmlnaHQ/DQo+ID4+IGlwdmxhbl94bWl0X21vZGVfbDMoKSBhbHJlYWR5IGRvZXMgdGhlIGFkZHIg bG9va3VwIHdpdGggSVAgaGVhZGVyLA0KPiA+Pg0KPiA+PiBUaGFua3MuDQo+ID4+DQo+ID4+IC0t LS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4gPj4g5Y+R5Lu25Lq6OiBEYXZpZCBNaWxsZXIgW21haWx0 bzpkYXZlbUBkYXZlbWxvZnQubmV0XQ0KPiA+PiDlj5HpgIHml7bpl7Q6IFRodXJzZGF5LCBKdWx5 IDIzLCAyMDIwIDQ6MDQNCj4gPj4g5pS25Lu25Lq6OiBHdW9kZXFpbmcgKEEpIDxnZWZmcmV5Lmd1 b0BodWF3ZWkuY29tPg0KPiA+PiDmioTpgIE6IGt1YmFAa2VybmVsLm9yZzsgbWFoZXNoYkBnb29n bGUuY29tOyBlZHVtYXpldEBnb29nbGUuY29tOw0KPiA+PiBuZXRkZXZAdmdlci5rZXJuZWwub3Jn DQo+ID4+IOS4u+mimDogUmU6IFtQQVRDSCx2Ml0gaXB2bGFuOiBhZGQgdGhlIGNoZWNrIG9mIGlw IGhlYWRlciBjaGVja3N1bQ0KPiA+Pg0KPiA+PiBGcm9tOiBndW9kZXFpbmcgPGdlZmZyZXkuZ3Vv QGh1YXdlaS5jb20+DQo+ID4+IERhdGU6IFdlZCwgMjIgSnVsIDIwMjAgMTc6MTg6MTkgKzA4MDAN Cj4gPj4NCj4gPj4+IFRoZSBpcCBoZWFkZXIgY2hlY2tzdW0gY2FuIGJlIGVycm9yIGluIHRoZSBm b2xsb3dpbmcgc3RlcHMuDQo+ID4+DQo+ID4+IFlvdSBkaWQgbm90IHJlc3BvbmQgdG8gbXkgZmVl ZGJhY2sgZnJvbSB5b3VyIHByZXZpb3VzIHN1Ym1pc3Npb25zLg0KPiA+Pg0KPiA+PiBQYWNrZXRz IGNyZWF0ZWQgaW5zaWRlIG9mIHRoZSBrZXJuZWwgaGF2ZSBjb3JyZWN0IGNoZWNrc3VtcywgYW5k IHRoZSBpcHZsYW4NCj4gZHJpdmVyIGNhbiBkZXBlbmQgdXBvbiB0aGlzIHByZWNvbmRpdGlvbi4N Cj4gPj4NCj4gPj4gSSBhbSBub3QgYXBwbHlpbmcgdGhpcyBwYXRjaCwgc29ycnkuDQo=