Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp381263pxf; Wed, 31 Mar 2021 05:57:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxL/sQNJHR4E6iBM6Yy7Rq0FVJip8ZIajkAdPAvoqMQoSL23BRIIrjXFPi/lIAy+rcUQXRW X-Received: by 2002:a05:6402:614:: with SMTP id n20mr3520368edv.58.1617195435042; Wed, 31 Mar 2021 05:57:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617195435; cv=none; d=google.com; s=arc-20160816; b=RbZhHMXOXy+IVpTmeemwDNNSY1di/JuWnXqorF1S+MWosarfSDie4puhAlBTrCq2FF 5ezvy7JY/Jj8r9y/CD47SB90RfDteY+7KrA03mXKRS97w2Zz/OyOv3gFGzjIZNV4Di8O SX2gxSnRlwd4HegWF5WM0bfJ2x4mIwwoRdUkQknc0V2MP4OXrlYKr2ht1H+Gw6or6N2a 2DzJ7biR20WyiPxoRmPbp1XoWZIf28OiSRnUgR2miSP4QeAEc/lRUt00ko2L+L3Qf6ZE /hEfTWrcmCqKlMZTO1pOvj6qZ2qUr54jHRGkX6PLJdkKg9oTbKnKA4GGvFqdPvWr3Ivb 5Plg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=KaNEoBu5WWtiIbS3we4259xa4oB6I3tTGnN8ucqxoyI=; b=I6JuUcATc2enav35OZPuZb+vI/v8EYnm5djGK0KRZuIRj7aCDRqghtytMUJM3UbQR0 9SzCGCcVJ1oFClGnSfe1jfjNExj95Ly9A8SX2F3i7lp0OUeBSuE2a5gnL7f1h4mlfWmR DtvTqCnoKcnxFmrq84BpT8w0HTzf09yPWloxFy7orK7V06DcaN3x73RXweJWEFCdJmFw T3bXXLoEWUIBnRTsjgghJ3lurVOMKt3kbGmGhDd+x8pQZS/kE8QC26dW2fl1iwMqEWSo 8JX2kwvx9e+CA6EhXPGiwsGy5nRsIoaw9nY6yYUyfXhFfXmOgxGadZBfRboNrKC2VkBj A7SA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=XnDp6Zw9; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i5si1567343ejh.313.2021.03.31.05.56.42; Wed, 31 Mar 2021 05:57:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=XnDp6Zw9; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235695AbhCaMyn (ORCPT + 99 others); Wed, 31 Mar 2021 08:54:43 -0400 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]:49236 "EHLO smtp-fw-6001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235601AbhCaMyG (ORCPT ); Wed, 31 Mar 2021 08:54:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1617195246; x=1648731246; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:mime-version: content-transfer-encoding; bh=KaNEoBu5WWtiIbS3we4259xa4oB6I3tTGnN8ucqxoyI=; b=XnDp6Zw9bfv+N3fSSfLtpic+A3tNfrVTSE9wFBsdlaxlE/G3JwDrgVi+ 9eXtU9nMhEiqBZo+h0yPpdlIuYLLoKJa+rsDX7C0UvG91A4FnTCQ267VK ynnLbDbR6hidb/C2L5jO90/9fWEdLFY3pB2boKzSDPFidpIUhRM89wLFZ E=; X-IronPort-AV: E=Sophos;i="5.81,293,1610409600"; d="scan'208";a="103803937" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-2b-859fe132.us-west-2.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-6001.iad6.amazon.com with ESMTP; 31 Mar 2021 12:53:59 +0000 Received: from EX13D18EUA003.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan2.pdx.amazon.com [10.236.137.194]) by email-inbound-relay-2b-859fe132.us-west-2.amazon.com (Postfix) with ESMTPS id 48D482220C8; Wed, 31 Mar 2021 12:53:58 +0000 (UTC) Received: from EX13D18EUA004.ant.amazon.com (10.43.165.164) by EX13D18EUA003.ant.amazon.com (10.43.165.133) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 31 Mar 2021 12:53:56 +0000 Received: from EX13D18EUA004.ant.amazon.com ([10.43.165.164]) by EX13D18EUA004.ant.amazon.com ([10.43.165.164]) with mapi id 15.00.1497.012; Wed, 31 Mar 2021 12:53:56 +0000 From: "Mohamed Abuelfotoh, Hazem" To: "linux-nfs@vger.kernel.org" CC: "trond.myklebust@hammerspace.com" Subject: Re: NFS read performance degradation after upgrading to kernel 5.4.* Thread-Topic: NFS read performance degradation after upgrading to kernel 5.4.* Thread-Index: AQHXJKmxdeeWg+Zy5UOb4+776OBXz6qbMo4AgAL/doA= Date: Wed, 31 Mar 2021 12:53:56 +0000 Message-ID: <0D482540-0455-4AA7-B534-FCE24793ECB0@amazon.com> References: In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.165.192] Content-Type: text/plain; charset="utf-8" Content-ID: <08B7C06A08CEDD4EABFFA3A103677D33@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org SGkgVHJvbmQsDQoNCkkgYW0gd29uZGVyaW5nIGlmIHdlIHNob3VsZCBjb25zaWRlciByYWlzaW5n IHRoZSBkZWZhdWx0IG1heGltdW0gTkZTIHJlYWQgYWhlYWQgc2l6ZSBnaXZlbiB0aGUgZmFjdHMg SSBtZW50aW9uZWQgaW4gbXkgcHJldmlvdXMgZS1tYWlsLg0KDQpUaGFuayB5b3UuDQoNCkhhemVt DQoNCu+7v09uIDI5LzAzLzIwMjEsIDE3OjA3LCAiTW9oYW1lZCBBYnVlbGZvdG9oLCBIYXplbSIg PGFidWVoYXplQGFtYXpvbi5jb20+IHdyb3RlOg0KDQoNCiAgICBIZWxsbyBUZWFtLA0KDQogICAg LVdlIGhhdmUgZ290IG11bHRpcGxlIGN1c3RvbWVycyBjb21wbGFpbmluZyBhYm91dCBORlMgcmVh ZCBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBhZnRlciB0aGV5IHVwZ3JhZGVkIHRvIGtlcm5lbCA1 LjQuKg0KDQogICAgLUFmdGVyIGRvaW5nIHNvbWUgZGVlcCBkaXZlIGFuZCB0ZXN0aW5nIHdlIGZp Z3VyZWQgb3V0IHRoYXQgdGhlIHJlYXNvbiBiZWhpbmQgdGhlIHJlZ3Jlc3Npb24gd2FzIHBhdGNo ICBORlM6IE9wdGltaXNlIHRoZSBkZWZhdWx0IHJlYWRhaGVhZCBzaXplWzFdIFdoaWNoIGhhcyBi ZWVuIG1lcmdlZCB0byBMaW51eCBrZXJuZWxzIDUuNC4qIGFuZCBhYm92ZS4NCiAgICAtT3VyIGN1 c3RvbWVycyBhcmUgdXNpbmcgQVdTIEVDMiBpbnN0YW5jZXMgYXMgY2xpZW50IG1vdW50aW5nIEVG UyBleHBvcnQgKHdoaWNoIGlzIEFXUyBtYW5hZ2VkIE5GU1Y0IHNlcnZpY2UpLCBJIGFtIHNoYXJp bmcgdGhlIHJlc3VsdHMgdGhhdCB3ZSBnb3QgYmVmb3JlICYgYWZ0ZXIgdGhlIHVwZ3JhZGUgZ2l2 ZW4gdGhhdCB0aGUgTkZTIHNlcnZlcihFRlMpIHNob3VsZCBiZSBhYmxlIHRvIGFjaGlldmUgYmV0 d2VlbiAyNTAtMzAwTUIvc2VjIHdoaWNoIHRoZSBjbGllbnRzIGNhbiBhY2hpZXZlIHdpdGhvdXQg cGF0Y2hbMV0gd2hpbGUgZ2V0dGluZyBxdWFydGVyIG9mIHRoaXMgc3BlZWQgYXJvdW5kIDcwTUIv c2VjIHdpdGggdGhlIG1lbnRpb25lZCBwYXRjaCBtZXJnZWQgYXMgc2VlbiBiZWxvdy4NCg0KICAg ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQogICAgQmVmb3JlIHRoZSB1 cGdyYWRlOg0KICAgICMgdW5hbWUgLXINCiAgICA0LjE0LjIyNS0xNjguMzU3LmFtem4yLng4Nl82 NA0KICAgIFtyb290QGlwLTE3Mi0zMS0yOC0xMzUgZWMyLXVzZXJdIyBzeW5jOyBlY2hvIDMgPiAv cHJvYy9zeXMvdm0vZHJvcF9jYWNoZXMNCiAgICBbcm9vdEBpcC0xNzItMzEtMjgtMTM1IGVjMi11 c2VyXSMgbW91bnQgLXQgbmZzNCAtbyBuZnN2ZXJzPTQuMSxyc2l6ZT0xMDQ4NTc2LHdzaXplPTEw NDg1NzYsaGFyZCx0aW1lbz02MDAscmV0cmFucz0yLG5vcmVzdnBvcnQgZnMtNjcwMGY1NTMuZWZz LmV1LXdlc3QtMS5hbWF6b25hd3MuY29tOi8gZWZzDQogICAgW3Jvb3RAaXAtMTcyLTMxLTI4LTEz NSBlYzItdXNlcl0jIHJzeW5jIC0tcHJvZ3Jlc3MgZWZzL3Rlc3QgLg0KICAgIHRlc3QNCiAgICAg IDgsNTg5LDkzNCw1OTIgMTAwJSAgMzEzLjIwTUIvcyAgICAwOjAwOjI2ICh4ZnIjMSwgdG8tY2hr PTAvMSkNCg0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQogICAgQWZ0 ZXIgdGhlIHVwZ3JhZGUgdXNpbmcgdGhlIHNhbWUgY2xpZW50ICYgc2VydmVyOg0KICAgICN1bmFt ZSAtcjsgc3luYzsgZWNobyAzID4gL3Byb2Mvc3lzL3ZtL2Ryb3BfY2FjaGVzOyAuL25mcy1yZWFk YWhlYWQgc2hvdyAvaG9tZS9lYzItdXNlci9lZnMvO3JzeW5jIC0tcHJvZ3Jlc3MgZWZzL3Rlc3Qg Lg0KICAgIDUuNC4wLTEuMTMyLjY0LmFtem4yLng4Nl82NA0KICAgIC9ob21lL2VjMi11c2VyL2Vm cyAwOjQwIC9zeXMvY2xhc3MvYmRpLzA6NDAvcmVhZF9haGVhZF9rYiA9IDEyOA0KICAgIHRlc3QN CiAgICAgIDEsMDczLDc0MSw4MjQgMTAwJSAgIDY4LjYxTUIvcyAgICAwOjAwOjE0ICh4ZnIjMSwg dG8tY2hrPTAvMSkNCg0KDQogICAgLVdlIGFyZSAgcmVjb21tZW5kaW5nWzJdIEVGUyB1c2VycyB0 byB1c2UgcnNpemU9MTA0ODU3NiBhcyBtb3VudCBvcHRpb24gZm9yIGdldHRpbmcgdGhlIGJlc3Qg cmVhZCBwZXJmb3JtYW5jZSBmcm9tIHRoZWlyIEVGUyBleHBvcnRzIGdpdmVuIHRoYXQgRUMyIHRv IEVGUyB0cmFmZmljIGlzIHJlc2lkaW5nIGluIHRoZSBzYW1lIEFXUyBhdmFpbGFiaWxpdHkgem9u ZSBoZW5jZSBpdCBoYXMgbG93IGxhdGVuY3kgYW5kIHVwIHRvIDI1MC0zMDBNQi9zZWMgdGhyb3Vn aHB1dCBob3dldmVyIHdpdGggdGhlIG1lbnRpb25lZCBwYXRjaCBtZXJnZWQgdGhlIGN1c3RvbWVy IGNhbuKAmXQgYWNoaWV2ZSB0aGlzIHRocm91Z2hwdXQgYWZ0ZXIgdGhlIGtlcm5lbCB1cGdyYWRl IGJlY2F1c2UgdGhlIGRlZmF1bHQgTkZTIHJlYWQgYWhlYWQgaGFzIGJlZW4gZGVjcmVhc2VkIGZy b20gKDE1KnJzaXplKT0xNSBNQiB0byAxMjhLQiBzbyB0aGUgY2xpZW50cyBoYXZlIHRvIG1hbnVh bGx5IHJhaXNlIHRoZSBtYW51YWxseSByYWlzZSB0aGUgcmVhZF9haGVhZF9rYiBwYXJhbWV0ZXIg ZnJvbSAxMjggdG8gMTUzNjAgdG8gZ2V0IHRoZSBzYW1lIGV4cGVyaWVuY2UgdGhleSB3ZXJlIGdl dHRpbmcgYmVmb3JlIHRoZSB1cGdyYWRlLg0KICAgIC1XZSBrbm93IHRoYXQgdGhlIHB1cnBvc2Ug b2YgdGhlIG1lbnRpb25lZCBwYXRjaCB3YXMgdG8gZGVjcmVhc2UgT1MgYm9vdCB0aW1lIChmb3Ig bmV0Ym9vdCB1c2VycykgYWxzbyBkZWNyZWFzaW5nIEFwcGxpY2F0aW9uIHN0YXJ0IHVwIHRpbWVz IGluIGNvbmdlc3RlZCAmIExvdyB0aHJvdWdocHV0IG5ldHdvcmtzIGFzIG1lbnRpb25lZCBpbiBb M10sIGhvd2V2ZXIgdGhpcyB3b3VsZCBhbHNvIGNhdXNlIHJlZ3Jlc3Npb24gZm9yIGhpZ2ggdGhy b3VnaHB1dCAmIGxvdyBsYXRlbmN5IHdvcmtsb2FkIGVzcGVjaWFsbHkgc2VxdWVudGlhbCByZWFk IHdvcmtmbG93cy4NCiAgICAtQWZ0ZXIgZG9pbmcgZnVydGhlciBkZWJ1Z2dpbmcgd2UgYWxzbyBm b3VuZCB0aGF0IHRoZSBtYXhpbXVtIHJlYWQgYWhlYWQgc2l6ZSBpcyBjb25zdGFudCBzbyB0aGVy ZSBpcyBubyBBdXRvdHVuaW5nIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gZXZlbiBpZiB0aGUgY2xp ZW50IGlzIGZpbGxpbmcgdGhlIHJlYWQgYWhlYWQgd2luZG93IHdoaWNoIG1lYW5zIGFueSBORlMg Y2xpZW50IHNwZWNpYWxseSBvbmVzIHVzaW5nIG1heGltdW0gcnNpemUgbW91bnQgb3B0aW9uIHdp bGwgaGF2ZSB0byBtYW51YWxseSB0dW5lIHRoZWlyIG1heGltdW0gTkZTIHJlYWQgYWhlYWQgc2l6 ZSBhZnRlciB0aGUgdXBncmFkZSB3aGljaCBpbiBteSBvcGluaW9uIGlzIHNvbWUgc29ydCBvZiBy ZWdyZXNzaW9uIGZyb20gb2xkZXIga2VybmVscyBiZWhhdmlvdXIuDQoNCiAgICAgIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KICAgIEFmdGVyIGluY3JlYXNpbmcgdGhlIG1heGlt dW0gTkZTIHJlYWQgYWhlYWQgc2l6ZSB0byAxNU1CIGl04oCZcyBjbGVhciB0aGF0IHJlYWQgYWhl YWQgd2luZG93IGlzIGV4cGFuZGVkIGFzIGV4cGVjdGVkIGFuZCBpdCB3aWxsIGJlIGRvdWJsZWQg dW50aWwgaXQgcmVhY2ggMTVNQi4NCg0KICAgIE1hciAyOSAxMToyNToxOCBpcC0xNzItMzEtMTct MTkxIGtlcm5lbDogaW5pdF9yYV9zaXplIDI1Ng0KICAgIE1hciAyOSAxMToyNToxOCBpcC0xNzIt MzEtMTctMTkxIGtlcm5lbDogY3VycmVudCByYSAyNTYNCiAgICBNYXIgMjkgMTE6MjU6MTggaXAt MTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzODQwDQogICAgTWFyIDI5IDExOjI1OjE4IGlw LTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDU5DQogICAgTWFyIDI5IDExOjI1OjE4 IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzINCiAgICBNYXIgMjkgMTE6MjU6MTgg aXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IGN1cnJlbnQgcmEgNTEyDQogICAgTWFyIDI5IDExOjI1 OjE4IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzg0MA0KICAgIE1hciAyOSAxMToy NToxOCBpcC0xNzItMzEtMTctMTkxIGtlcm5lbDogY3VycmVudCByYSAxMDI0DQogICAgTWFyIDI5 IDExOjI1OjE4IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzg0MA0KICAgIE1hciAy OSAxMToyNToxOCBpcC0xNzItMzEtMTctMTkxIGtlcm5lbDogY3VycmVudCByYSAyMDQ4DQogICAg TWFyIDI5IDExOjI1OjE4IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzg0MA0KDQog ICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KICAgIFdpdGggMTI4S0IgYXMg bWF4aW11bSBORlMgcmVhZCBhaGVhZCBzaXplLCAgdGhlIHJlYWQgYWhlYWQgd2luZG93IHNpemUg aXMgaW5jcmVhc2luZyB1bnRpbCBpdCByZWFjaCB0aGUgY29uZmlndXJlZCBtYXhpbXVtIFJlYWQg YWhlYWQgKDEyOEtCKS4NCg0KICAgIE1hciAyOSAxMTozNTozNyBpcC0xNzItMzEtMTctMTkxIGtl cm5lbDogbWF4IHJhIDMyDQogICAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2Vy bmVsOiBtYXggcmEgMzINCiAgICBNYXIgMjkgMTE6MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJu ZWw6IGluaXRfcmFfc2l6ZSAzMg0KICAgIE1hciAyOSAxMTozNTozNyBpcC0xNzItMzEtMTctMTkx IGtlcm5lbDogY3VycmVudCByYSA0MA0KICAgIE1hciAyOSAxMTozNTozNyBpcC0xNzItMzEtMTct MTkxIGtlcm5lbDogY3VycmVudCByYSAzMg0KICAgIE1hciAyOSAxMTozNTozNyBpcC0xNzItMzEt MTctMTkxIGtlcm5lbDogbWF4IHJhIDMyDQogICAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0zMS0x Ny0xOTEga2VybmVsOiBjdXJyZW50IHJhIDQwDQogICAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0z MS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzINCiAgICBNYXIgMjkgMTE6MzU6MzcgaXAtMTcyLTMx LTE3LTE5MSBrZXJuZWw6IGN1cnJlbnQgcmEgNjQNCiAgICBNYXIgMjkgMTE6MzU6MzcgaXAtMTcy LTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzMg0KICAgIE1hciAyOSAxMTozNTozNyBpcC0xNzIt MzEtMTctMTkxIGtlcm5lbDogbWF4IHJhIDMyDQogICAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0z MS0xNy0xOTEga2VybmVsOiBpbml0X3JhX3NpemUgNA0KICAgIE1hciAyOSAxMTozNTozNyBpcC0x NzItMzEtMTctMTkxIGtlcm5lbDogY3VycmVudCByYSA0DQogICAgTWFyIDI5IDExOjM1OjM3IGlw LTE3Mi0zMS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzINCiAgICBNYXIgMjkgMTE6MzU6MzcgaXAt MTcyLTMxLTE3LTE5MSBrZXJuZWw6IGN1cnJlbnQgcmEgNjQNCiAgICBNYXIgMjkgMTE6MzU6Mzcg aXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSA2NA0KICAgIE1hciAyOSAxMTozNTozNyBp cC0xNzItMzEtMTctMTkxIGtlcm5lbDogY3VycmVudCByYSA2NA0KICAgIE1hciAyOSAxMTozNToz NyBpcC0xNzItMzEtMTctMTkxIGtlcm5lbDogbWF4IHJhIDMyDQogICAgTWFyIDI5IDExOjM1OjM3 IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDMyDQogICAgTWFyIDI5IDExOjM1 OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzINCiAgICBNYXIgMjkgMTE6MzU6 MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IGN1cnJlbnQgcmEgNTkNCiAgICBNYXIgMjkgMTE6 MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzMg0KICAgIE1hciAyOSAxMToz NTozNyBpcC0xNzItMzEtMTctMTkxIGtlcm5lbDogY3VycmVudCByYSAzMg0KICAgIE1hciAyOSAx MTozNTozNyBpcC0xNzItMzEtMTctMTkxIGtlcm5lbDogbWF4IHJhIDMyDQogICAgTWFyIDI5IDEx OjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDMyDQogICAgTWFyIDI5 IDExOjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzINCg0KICAgIC1JbiBt eSByZXByb2R1Y3Rpb24gSSB1c2VkIHJzeW5jIGFzIGNsYXJpZmllZCBhYm92ZSBhbmQgaXQgaXMg YWx3YXlzIGRvaW5nIHJlYWQgc3lzY2FsbHMgcmVxdWVzdGluZyAyNTYgS0IgaW4gZWFjaCBjYWxs Og0KICAgIDE1OjQ3OjEwLjc4MDY1OCByZWFkKDMsICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIi4uLiwgMjYyMTQ0KSA9IDI2 MjE0NCA8MC4wMjM3NDk+DQogICAgMTU6NDc6MTAuODA1NDY3IHJlYWQoMywgIlwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiLi4u LCAyNjIxNDQpID0gMjYyMTQ0IDwwLjAyMzczOT4NCiAgICAxNTo0NzoxMC44MzAyNzIgcmVhZCgz LCAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMCIuLi4sIDI2MjE0NCkgPSAyNjIxNDQgPDAuMDIzNjY0Pg0KICAgIDE1OjQ3OjEw Ljg1NDk3MiByZWFkKDMsICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIi4uLiwgMjYyMTQ0KSA9IDI2MjE0NCA8MC4wMjM4MTQ+ DQogICAgMTU6NDc6MTAuODc5ODM3IHJlYWQoMywgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiLi4uLCAyNjIxNDQpID0gMjYy MTQ0IDwwLjAyMzYyNT4NCiAgICAxNTo0NzoxMC45MDQ0OTYgcmVhZCgzLCAiXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIuLi4s IDI2MjE0NCkgPSAyNjIxNDQgPDAuMDIzNjQ1Pg0KICAgIDE1OjQ3OjEwLjkyOTE4MCByZWFkKDMs ICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwIi4uLiwgMjYyMTQ0KSA9IDI2MjE0NCA8MC4wMjQwNzI+DQogICAgMTU6NDc6MTAu OTU0MzA4IHJlYWQoMywgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiLi4uLCAyNjIxNDQpID0gMjYyMTQ0IDwwLjAyMzY2OT4N Cg0KDQogICAgLUxvb2tpbmcgaW50byB0aGUgcmVhZGFoZWFkIHNvdXJjZSBjb2RlIGFuZCBJIGNh biBzZWUgdGhhdCByZWFkYWhlYWQgaXMgZG9pbmcgc29tZSBoZXVyaXN0aWNzIHRvIGRldGVybWlu ZSBpZiB0aGUgYWNjZXNzIHBhdHRlcm4gaXMgc2VxdWVudGlhbCBvciByYW5kb20gdGhlbiBpdCBt b2RpZnkgdGhlIHJlYWQgYWhlYWQgd2luZG93KGFtb3VudCBvZiBkYXRhIGl0IHdpbGwgcHJlZmV0 Y2gpIGFjY29yZGluZ2x5LCByZWFkIGFoZWFkIGNhbid0IGFsc28gcmVhZCBiZXlvbmQgdGhlIHJl cXVlc3RlZCBmaWxlIHNpemUsIHRoaXMgdGhlb3JldGljYWxseSBtZWFucyB0aGF0IGhhdmluZyBM YXJnZSBORlMgTWF4IHJlYWQgYWhlYWQgc2l6ZSAoMTVNQikgc2hvdWxkbid0IGhhdmUgbXVjaCBp bXBhY3Qgb24gcGVyZm9ybWFuY2UgZXZlbiB3aXRoIHJhbmRvbSBJL08gcGF0dGVybiBvciB3aXRo IGRhdGEgc2V0IGNvbnNpc3RzIG9mIHNtYWxsIGZpbGVzLCB0aGUgb25seSBtYWpvciBpbXBhY3Qg b2YgaGF2aW5nIGxhcmdlIE5GUyByZWFkIGFoZWFkIHNpemUgd291bGQgYmUgc29tZSBuZXR3b3Jr aW5nIGNvbmdlc3Rpb24gb3IgYm9vdHVwIGRlbGF5IHdpdGggaG9zdHMgdXNpbmcgY29uZ2VzdGVk IG9yIGxvdyB0aHJvdWdocHV0IG5ldHdvcmtzIGFzIGlsbHVzdHJhdGVkIGluIGh0dHBzOi8vYnVn emlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0OTM5ICYgaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvbGludXgtbmZzLzBiNzYyMTNlLTQyNmItMDY1NC01YjY5LTAyYmZlYWQ3ODAzMUBn bWFpbC5jb20vVC8uDQogICAgLVdpdGggcGF0Y2ggaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlz dHMvbGludXgtbmZzL21zZzc1MDE4Lmh0bWwgdGhlIHBhY2tldCBjYXB0dXJlcyBhcmUgc2hvd2lu ZyB0aGUgY2xpZW50IGVpdGhlciBhc2tpbmcgZm9yIDEyOEtCIG9yIDI1NiBLQiBpbiB0aGUgTkZT IFJFQUQgY2FsbHMgYW5kIGl0IGNhbid0IHJlYWNoIGV2ZW4gdGhlIDFNQiBjb25maWd1cmVkIHJz aXplIG1vdW50IG9wdGlvbiB0aGlzIGlzIGJlY2F1c2UgdGhlIG9uZGVtYW5kX3JlYWRhaGVhZCB3 aGljaCBzaG91bGQgYmUgcmVzcG9uc2libGUgZm9yIG1vdmluZyBhbmQgc2NhbGluZyB0aGUgcmVh ZCBhaGVhZCB3aW5kb3cgaGFzIGFuIGlmIGNvbmRpdGlvbiB3aGljaCB3YXMgYSBwYXJ0IG9mIGh0 dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZy9t c2cxMjc0NzQzLmh0bWwsIHRoaXMgcGF0Y2ggYWN0dWFsbHkgbW9kaWZpZWQgcmVhZCBhaGVhZCB0 byBpc3N1ZSB0aGUgbWF4aW11bSBvZiB0aGUgdXNlciByZXF1ZXN0IHNpemUocnN5bmMgaXMgZG9p bmcgMjU2S0IgcmVhZCByZXF1ZXN0cyksIGFuZCB0aGUgcmVhZC1haGVhZCBtYXggc2l6ZSgxMjhL QiBieSBkZWZhdWx0KSwgYnV0IGNhcHBlZCB0byB0aGUgbWF4IHJlcXVlc3Qgc2l6ZSBvbiB0aGUg ZGV2aWNlIHNpZGUoMU1CIGluIG91ciBjYXNlKS4gVGhlIGxhdHRlciBpcyBkb25lIHRvIGF2b2lk IHJlYWRpbmcgYWhlYWQgdG9vIG11Y2gsIGlmIHRoZSBhcHBsaWNhdGlvbiBhc2tzIGZvciBhIGh1 Z2UgcmVhZC4gdGhpcyBpcyB3aHkgd2l0aCAxMjhLQiBhcyByZWFkIGFoZWFkIHNpemUgYW5kIGFw cGxpY2F0aW9uIGFza2luZyBmb3IgMjU2S0Igd2UgbmV2ZXIgZXhjZWVkIDI1NktCIGJlY2F1c2Ug dGhpcyBwYXRjaCBhY3R1YWxseSBpbnRlbmRlZCB0byBkbyB0aGF0LCBpdCBhdm9pZHMgbGltaXRp bmcgdGhlIHJlcXVlc3RlZCBkYXRhIHRvIHRoZSBtYXhpbXVtIHJlYWQgYWhlYWQgc2l6ZSBidXQg d2UgYXJlIHN0aWxsIGxpbWl0ZWQgYnkgdGhlIG1pbmltdW0gYmV0d2VlbiBhbW91bnQgb2YgZGF0 YSBhcHBsaWNhdGlvbiBpcyByZWFkaW5nIHdoaWNoIGlzIDI1NktCIGFzIHN5bmMgaW4gcnN5bmMg c3RyYWNlIG91dHB1dCAmIGJkaS0+aW9fcGFnZXMoMjU2IHBhZ2VzPTFNQikgYXMgY29uZmlndXJl ZCBpbiB0aGUgcnNpemUgbW91bnQgb3B0aW9uLg0KDQogICAgLU91dHB1dCBhZnRlciBhZGRpbmcg c29tZSBkZWJ1Z2dpbmcgdG8gdGhlIGtlcm5lbCBzaG93aW5nIHRoZSBzaXplIG9mIGVhY2ggdmFy aWFibGUgaW4gdGhlIG1lbnRpb25lZCAiaWYiIGNvbmRpdGlvbjoNCg0KICAgIFsgIDIzOC4zODc3 ODhdIHJlcV9zaXplPSA2NCAtLS0tLS0+MjU2TUIgcnN5bmMgcmVhZCByZXF1ZXN0cw0KICAgIFsg IDIzOC4zODc3OTBdIGlvIHBhZ2VzPSAyNTYtLS0tLT4xTUIgYXMgc3VwcG9ydGVkIGJ5IEVGUyBh bmQgYXMgY29uZmlndXJlZCBpbiB0aGUgcnNpemUgbW91bnQgb3B0aW9uLg0KICAgIFsgIDIzOC4z OTA0ODddIG1heF9wYWdlcyBiZWZvcmU9IDMyLS0tLS0+MTI4IEtCIHJlYWQgYWhlYWQgc2l6ZSB3 aGljaCBpcyB0aGUgZGVmYXVsdC4NCiAgICBbICAyMzguMzkzMTc3XSBtYXhfcGFnZXMgYWZ0ZXI9 IDY0LS0tLT5yYWlzZWQgdG8gMjU2IEtCIGJlY2F1c2Ugb2YgY2hhbmdlcyBtZW50aW9uZWQgaW4g WzRdICJtYXhfcGFnZXMgPSBtaW4ocmVxX3NpemUsIGJkaS0+aW9fcGFnZXMpOyINCg0KICAgIGh0 dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L2xhdGVzdC9zb3VyY2UvbW0vcmVhZGFoZWFk LmMjTDQzNQ0KDQogICAgLyoNCiAgICAgKiBBIG1pbmltYWwgcmVhZGFoZWFkIGFsZ29yaXRobSBm b3IgdHJpdmlhbCBzZXF1ZW50aWFsL3JhbmRvbSByZWFkcy4NCiAgICAgKi8NCiAgICBzdGF0aWMg dm9pZCBvbmRlbWFuZF9yZWFkYWhlYWQoc3RydWN0IHJlYWRhaGVhZF9jb250cm9sICpyYWN0bCwN CiAgICAgICAgICAgIHN0cnVjdCBmaWxlX3JhX3N0YXRlICpyYSwgYm9vbCBoaXRfcmVhZGFoZWFk X21hcmtlciwNCiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcmVxX3NpemUpDQogICAgew0KICAg ICAgICBzdHJ1Y3QgYmFja2luZ19kZXZfaW5mbyAqYmRpID0gaW5vZGVfdG9fYmRpKHJhY3RsLT5t YXBwaW5nLT5ob3N0KTsNCiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXhfcGFnZXMgPSByYS0+cmFf cGFnZXM7DQogICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkX3BhZ2VzOw0KICAgICAgICB1bnNpZ25l ZCBsb25nIGluZGV4ID0gcmVhZGFoZWFkX2luZGV4KHJhY3RsKTsNCiAgICAgICAgcGdvZmZfdCBw cmV2X2luZGV4Ow0KDQogICAgICAgIC8qDQogICAgICAgICAqIElmIHRoZSByZXF1ZXN0IGV4Y2Vl ZHMgdGhlIHJlYWRhaGVhZCB3aW5kb3csIGFsbG93IHRoZSByZWFkIHRvDQogICAgICAgICAqIGJl IHVwIHRvIHRoZSBvcHRpbWFsIGhhcmR3YXJlIElPIHNpemUNCiAgICAgICAgICovDQogICAgICAg IGlmIChyZXFfc2l6ZSA+IG1heF9wYWdlcyAmJiBiZGktPmlvX3BhZ2VzID4gbWF4X3BhZ2VzKQ0K ICAgICAgICAgICAgbWF4X3BhZ2VzID0gbWluKHJlcV9zaXplLCBiZGktPmlvX3BhZ2VzKTsNCg0K DQogICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiAgICAt V2l0aCAxMjhLQiBhcyBkZWZhdWx0IG1heGltdW0gcmVhZCBhaGVhZCBzaXplIHRoZSBwYWNrZXQg Y2FwdHVyZSBmcm9tIHRoZSBjbGllbnQgc2lkZSBpcyBzaG93aW5nIHRoZSBORlN2NCBSRUFEIGNh bGxzICBzaG93aW5nIGNvdW50IGluIGJ5dGVzICBtb3ZpbmcgYmV0d2VlbiAxMjhLQiB0byAyNTZL Qi4NCg0KICAgIDczNDAzICAgICAgICAgMjkgMTcyLjMxLjE3LjE5MSAtPiAxNzIuMzEuMjguMTYx IE5GUyAzOTQgVjQgQ2FsbCBSRUFEIFN0YXRlSUQ6IDB4Y2VjMiBPZmZzZXQ6IDEwNzI5NTUzOTIg TGVuOiAxMzEwNzINCiAgICA3MzQwNCAgICAgICAgIDI5IDE3Mi4zMS4xNy4xOTEgLT4gMTcyLjMx LjI4LjE2MSBORlMgMzk0IFY0IENhbGwgUkVBRCBTdGF0ZUlEOiAweGNlYzIgT2Zmc2V0OiAxMDcz MDg2NDY0IExlbjogMjYyMTQ0DQogICAgNzM0MDYgICAgICAgICAyOSAxNzIuMzEuMjguMTYxIC0+ IDE3Mi4zMS4xNy4xOTEgTkZTIDg2OTkgVjQgUmVwbHkgKENhbGwgSW4gNzM0MDMpW1VucmVhc3Nl bWJsZWQgUGFja2V0XQ0KICAgIDczNDE1ICAgICAgICAgMjkgMTcyLjMxLjE3LjE5MSAtPiAxNzIu MzEuMjguMTYxIE5GUyAzOTQgVjQgQ2FsbCBSRUFEIFN0YXRlSUQ6IDB4Y2VjMiBPZmZzZXQ6IDEw NzMzNDg2MDggTGVuOiAxMzEwNzINCiAgICA3MzQxNiAgICAgICAgIDI5IDE3Mi4zMS4yOC4xNjEg LT4gMTcyLjMxLjE3LjE5MSBORlMgODY5OSBWNCBSZXBseSAoQ2FsbCBJbiA3MzQwNClbVW5yZWFz c2VtYmxlZCBQYWNrZXRdDQogICAgNzM0MjggICAgICAgICAyOSAxNzIuMzEuMTcuMTkxIC0+IDE3 Mi4zMS4yOC4xNjEgTkZTIDM5NCBWNCBDYWxsIFJFQUQgU3RhdGVJRDogMHhjZWMyIE9mZnNldDog MTA3MzQ3OTY4MCBMZW46IDEzMTA3Mg0KICAgIDczNDI5ICAgICAgICAgMjkgMTcyLjMxLjI4LjE2 MSAtPiAxNzIuMzEuMTcuMTkxIE5GUyA4Njk5IFY0IFJlcGx5IChDYWxsIEluIDczNDE1KVtVbnJl YXNzZW1ibGVkIFBhY2tldF0NCiAgICA3MzQzOCAgICAgICAgIDI5IDE3Mi4zMS4xNy4xOTEgLT4g MTcyLjMxLjI4LjE2MSBORlMgMzk0IFY0IENhbGwgUkVBRCBTdGF0ZUlEOiAweGNlYzIgT2Zmc2V0 OiAxMDczNjEwNzUyIExlbjogMTMxMDcyDQogICAgNzM0MzkgICAgICAgICAyOSAxNzIuMzEuMjgu MTYxIC0+IDE3Mi4zMS4xNy4xOTEgTkZTIDg2OTkgVjQgUmVwbHkgKENhbGwgSW4gNzM0MjgpW1Vu cmVhc3NlbWJsZWQgUGFja2V0XQ0KDQogICAgLW5mc3N0YXQgaXMgc2hvd2luZyA4MTgzIE5GU1Y0 IFJFQUQgY2FsbHMgcmVxdWlyZWQgdG8gcmVhZCAxR0IgZmlsZS4NCg0KICAgICMgbmZzc3RhdCAN CiAgICBDbGllbnQgcnBjIHN0YXRzOg0KICAgIGNhbGxzICAgICAgcmV0cmFucyAgICBhdXRocmVm cnNoDQogICAgODIwNCAgICAgICAwICAgICAgICAgIDgyMDQgICAgDQoNCiAgICBDbGllbnQgbmZz IHY0Og0KICAgIG51bGwgICAgICAgICByZWFkICAgICAgICAgd3JpdGUgICAgICAgIGNvbW1pdCAg ICAgICBvcGVuICAgICAgICAgb3Blbl9jb25mICAgIA0KICAgIDEgICAgICAgICAwJSA4MTgzICAg ICA5OSUgMCAgICAgICAgIDAlIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAl IA0KICAgIG9wZW5fbm9hdCAgICBvcGVuX2RncmQgICAgY2xvc2UgICAgICAgIHNldGF0dHIgICAg ICBmc2luZm8gICAgICAgcmVuZXcgICAgICAgIA0KICAgIDEgICAgICAgICAwJSAwICAgICAgICAg MCUgMSAgICAgICAgIDAlIDAgICAgICAgICAwJSAyICAgICAgICAgMCUgMCAgICAgICAgIDAlIA0K ICAgIHNldGNsbnRpZCAgICBjb25maXJtICAgICAgbG9jayAgICAgICAgIGxvY2t0ICAgICAgICBs b2NrdSAgICAgICAgYWNjZXNzICAgICAgIA0KICAgIDAgICAgICAgICAwJSAwICAgICAgICAgMCUg MCAgICAgICAgIDAlIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMSAgICAgICAgIDAlIA0KICAg IGdldGF0dHIgICAgICBsb29rdXAgICAgICAgbG9va3VwX3Jvb3QgIHJlbW92ZSAgICAgICByZW5h bWUgICAgICAgbGluayAgICAgICAgIA0KICAgIDQgICAgICAgICAwJSAxICAgICAgICAgMCUgMSAg ICAgICAgIDAlIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAlIA0KICAgIHN5 bWxpbmsgICAgICBjcmVhdGUgICAgICAgcGF0aGNvbmYgICAgIHN0YXRmcyAgICAgICByZWFkbGlu ayAgICAgcmVhZGRpciAgICAgIA0KICAgIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMSAgICAg ICAgIDAlIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAlIA0KICAgIHNlcnZl cl9jYXBzICBkZWxlZ3JldHVybiAgZ2V0YWNsICAgICAgIHNldGFjbCAgICAgICBmc19sb2NhdGlv bnMgcmVsX2xrb3duZXIgIA0KICAgIDMgICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAg IDAlIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAlIA0KICAgIHNlY2luZm8g ICAgICBleGNoYW5nZV9pZCAgY3JlYXRlX3NlcyAgIGRlc3Ryb3lfc2VzICBzZXF1ZW5jZSAgICAg Z2V0X2xlYXNlX3QgIA0KICAgIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMiAgICAgICAgIDAl IDEgICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAlIA0KICAgIHJlY2xhaW1fY29t cCBsYXlvdXRnZXQgICAgZ2V0ZGV2aW5mbyAgIGxheW91dGNvbW1pdCBsYXlvdXRyZXR1cm4gZ2V0 ZGV2bGlzdCAgIA0KICAgIDAgICAgICAgICAwJSAxICAgICAgICAgMCUgMCAgICAgICAgIDAlIDAg ICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAlIA0KICAgIChudWxsKSAgICAgICAN CiAgICAxIDAlDQoNCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN Cg0KICAgIC1XaGVuIHVzaW5nIDE1TUIgYXMgbWF4aW11bSByZWFkIGFoZWFkIHNpemUsIHRoZSBj bGllbnQgaXMgc2VuZGluZyAxTUIgTkZTVjQgcmVhZCByZXF1ZXN0cyBoZW5jZSBpdOKAmXMgYWJs ZSB0byByZWFkIHRoZSBzYW1lIDFHQiBmaWxlIGluIDEwMjQgTkZTIFJFQUQgY2FsbHMgDQoNCiAg ICAjdW5hbWUgLXI7IG1vdW50IC10IG5mczQgLW8gbmZzdmVycz00LjEscnNpemU9MTA1MjY3Mix3 c2l6ZT0xMDQ4NTc2LGhhcmQsdGltZW89NjAwLHJldHJhbnM9Mixub3Jlc3Zwb3J0IGZzLTY3MDBm NTUzLmVmcy5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbTovIGVmczsgLi9uZnMtcmVhZGFoZWFkIHNo b3cgL2hvbWUvZWMyLXVzZXIvZWZzLw0KICAgIDUuMy45DQogICAgL2hvbWUvZWMyLXVzZXIvZWZz IDA6NDAgL3N5cy9jbGFzcy9iZGkvMDo0MC9yZWFkX2FoZWFkX2tiID0gMTUzNjANCiAgICAjc3lu YzsgZWNobyAzID4gL3Byb2Mvc3lzL3ZtL2Ryb3BfY2FjaGVzDQogICAgI3JzeW5jIC0tcHJvZ3Jl c3MgZWZzL3Rlc3QgLg0KICAgIHRlc3QNCiAgICAgIDEsMDczLDc0MSw4MjQgMTAwJSAgMjYwLjE1 TUIvcyAgICAwOjAwOjAzICh4ZnIjMSwgdG8tY2hrPTAvMSkNCiAgICBbcm9vdEBpcC0xNzItMzEt MTctNDIgZWMyLXVzZXJdIyBuZnNzdGF0IA0KICAgIENsaWVudCBycGMgc3RhdHM6DQogICAgY2Fs bHMgICAgICByZXRyYW5zICAgIGF1dGhyZWZyc2gNCiAgICAxMDQzICAgICAgIDAgICAgICAgICAg MTA0MyAgICANCg0KICAgIENsaWVudCBuZnMgdjQ6DQogICAgbnVsbCAgICAgICAgIHJlYWQgICAg ICAgICB3cml0ZSAgICAgICAgY29tbWl0ICAgICAgIG9wZW4gICAgICAgICBvcGVuX2NvbmYgICAg DQogICAgMSAgICAgICAgIDAlIDEwMjQgICAgIDk4JSAwICAgICAgICAgMCUgMCAgICAgICAgIDAl IDAgICAgICAgICAwJSAwICAgICAgICAgMCUgDQogICAgb3Blbl9ub2F0ICAgIG9wZW5fZGdyZCAg ICBjbG9zZSAgICAgICAgc2V0YXR0ciAgICAgIGZzaW5mbyAgICAgICByZW5ldyAgICAgICAgDQog ICAgMSAgICAgICAgIDAlIDAgICAgICAgICAwJSAxICAgICAgICAgMCUgMCAgICAgICAgIDAlIDIg ICAgICAgICAwJSAwICAgICAgICAgMCUgDQogICAgc2V0Y2xudGlkICAgIGNvbmZpcm0gICAgICBs b2NrICAgICAgICAgbG9ja3QgICAgICAgIGxvY2t1ICAgICAgICBhY2Nlc3MgICAgICAgDQogICAg MCAgICAgICAgIDAlIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAlIDAgICAg ICAgICAwJSAxICAgICAgICAgMCUgDQogICAgZ2V0YXR0ciAgICAgIGxvb2t1cCAgICAgICBsb29r dXBfcm9vdCAgcmVtb3ZlICAgICAgIHJlbmFtZSAgICAgICBsaW5rICAgICAgICAgDQogICAgMiAg ICAgICAgIDAlIDEgICAgICAgICAwJSAxICAgICAgICAgMCUgMCAgICAgICAgIDAlIDAgICAgICAg ICAwJSAwICAgICAgICAgMCUgDQogICAgc3ltbGluayAgICAgIGNyZWF0ZSAgICAgICBwYXRoY29u ZiAgICAgc3RhdGZzICAgICAgIHJlYWRsaW5rICAgICByZWFkZGlyICAgICAgDQogICAgMCAgICAg ICAgIDAlIDAgICAgICAgICAwJSAxICAgICAgICAgMCUgMCAgICAgICAgIDAlIDAgICAgICAgICAw JSAwICAgICAgICAgMCUgDQogICAgc2VydmVyX2NhcHMgIGRlbGVncmV0dXJuICBnZXRhY2wgICAg ICAgc2V0YWNsICAgICAgIGZzX2xvY2F0aW9ucyByZWxfbGtvd25lciAgDQogICAgMyAgICAgICAg IDAlIDAgICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAlIDAgICAgICAgICAwJSAw ICAgICAgICAgMCUgDQogICAgc2VjaW5mbyAgICAgIGV4Y2hhbmdlX2lkICBjcmVhdGVfc2VzICAg ZGVzdHJveV9zZXMgIHNlcXVlbmNlICAgICBnZXRfbGVhc2VfdCAgDQogICAgMCAgICAgICAgIDAl IDAgICAgICAgICAwJSAyICAgICAgICAgMCUgMSAgICAgICAgIDAlIDAgICAgICAgICAwJSAwICAg ICAgICAgMCUgDQogICAgcmVjbGFpbV9jb21wIGxheW91dGdldCAgICBnZXRkZXZpbmZvICAgbGF5 b3V0Y29tbWl0IGxheW91dHJldHVybiBnZXRkZXZsaXN0ICAgDQogICAgMCAgICAgICAgIDAlIDEg ICAgICAgICAwJSAwICAgICAgICAgMCUgMCAgICAgICAgIDAlIDAgICAgICAgICAwJSAwICAgICAg ICAgMCUgDQogICAgKG51bGwpICAgICAgIA0KICAgIDEgMCUgDQoNCiAgICAtVGhlIHBhY2tldCBj YXB0dXJlIGZyb20gdGhlIGNsaWVudCBzaWRlIGlzIHNob3dpbmcgTkZTdjQgUkVBRCBjYWxscyB3 aXRoIDFNQiBhcyByZWFkIGNvdW50IGluIGJ5dGVzIHdoZW4gaGF2aW5nIDE1TUIgYXMgbWF4aW11 bSBORlMgcmVhZCBhaGVhZCBzaXplLg0KDQogICAgMjAyMS0wMy0yMiAxNDoyNTozNC45ODQ3MzEg IDkzOTggMTcyLjMxLjE3LjQyIOKGkiAxNzIuMzEuMjguMTYxIE5GUyAwLjAwMDM3NSBWNCBDYWxs IFJFQUQgU3RhdGVJRDogMHgzNjQwIE9mZnNldDogOTQzNzE4NDAgTGVuOiAxMDQ4NTc2IA0KICAg IDIwMjEtMDMtMjIgMTQ6MjU6MzQuOTg0ODA1ICA5NDA1IDE3Mi4zMS4xNy40MiDihpIgMTcyLjMx LjI4LjE2MSBORlMgMC4wMDAwNzQgVjQgQ2FsbCBSRUFEIFN0YXRlSUQ6IDB4MzY0MCBPZmZzZXQ6 IDk1NDIwNDE2IExlbjogMTA0ODU3NiANCiAgICAyMDIxLTAzLTIyIDE0OjI1OjM0Ljk4NDkwMiAg OTQxNiAxNzIuMzEuMTcuNDIg4oaSIDE3Mi4zMS4yOC4xNjEgTkZTIDAuMDAwMDk3IFY0IENhbGwg UkVBRCBTdGF0ZUlEOiAweDM2NDAgT2Zmc2V0OiA5NjQ2ODk5MiBMZW46IDEwNDg1NzYgDQogICAg MjAyMS0wMy0yMiAxNDoyNTozNC45ODQ5NDEgIDk0MjEgMTcyLjMxLjE3LjQyIOKGkiAxNzIuMzEu MjguMTYxIE5GUyAwLjAwMDAzOSBWNCBDYWxsIFJFQUQgU3RhdGVJRDogMHgzNjQwIE9mZnNldDog OTc1MTc1NjggTGVuOiAxMDQ4NTc2IA0KDQogICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjDQoNCg0KICAgIC1JIHRoaW5rIHRoZXJlIGFyZSAyIG9wdGlvbnMgdG8gbWl0 aWdhdGUgdGhpcyBiZWhhdmlvdXIgd2hpY2ggSSBhbSBsaXN0aW5nIGJlbG93Og0KICAgIEEpUmFp c2luZyB0aGUgZGVmYXVsdCBtYXhpbXVtIE5GUyByZWFkIGFoZWFkICBzaXplIGJlY2F1c2UgdGhl IGN1cnJlbnQgZGVmYXVsdCAxMjhLQiBkb2VzbuKAmXQgc2VlbSB0byBiZSBzdWZmaWNpZW50IGZv ciBIaWdoIHRocm91Z2hvdXQgJiBsb3cgbGF0ZW5jeSB3b3JrbG9hZCwgSSBzdHJvbmdseSBiZWxp ZXZlIHRoYXQgdGhlIE5GUyByc2l6ZSBtb3VudCBvcHRpb24gc2hvdWxkIGJlIHVzZWQgYXMgdmFy aWFibGUgaW4gZGVjaWRpbmcgdGhlIG1heGltdW0gTkZTIHJlYWQgYWhlYWQgIHNpemUgd2hpY2gg d2FzIHRoZSBjYXNlIGJlZm9yZSBbMV0gd2hpbGUgbm93IGl04oCZcyBhbHdheXMgMTI4S0IgcmVn YXJkbGVzcyB0aGUgdXRpbGl6ZWQgcnNpemUgbW91bnQgb3B0aW9uLiBBbHNvIEkgdGhpbmsgY2xp ZW50cyBydW5uaW5nIGluIEhpZ2ggbGF0ZW5jeSAmIExvdyB0aHJvdWdob3V0IGVudmlyb25tZW50 IHNob3VsZG7igJl0IHVzZSAxTUIgYXMgcnNpemUgaW4gdGhlaXIgbW91bnQgb3B0aW9ucyhpLmUg dGhleSBzaG91bGQgdXNlIHNtYWxsZXIgcnNpemUpIGJlY2F1c2UgaXQgbWF5IGluY3JlYXNlIHRo ZWlyIHN1ZmZlcmluZyBldmVuIHdpdGggbG93IG1heGltdW0gTkZTIHJlYWQgYWhlYWQgc2l6ZS4N CiAgICBCKUFkZGluZyBzb21lIGxvZ2ljIHRvIHJlYWQgYWhlYWQgdG8gaGF2ZSBzb21lIGtpbmQg b2YgQXV0b3R1bmluZyAoU2ltaWxhciB0byBUQ1AgQXV0b3R1bmluZykgd2hlcmUgdGhlIG1heGlt dW0gcmVhZCBhaGVhZCBzaXplIGNhbiBkeW5hbWljYWxseSBpbmNyZWFzZSBpbiBjYXNlIHRoZSBj bGllbnQvcmVhZGVyIGlzIGNvbnN0YW50bHkgZmlsbGluZyB1cC91dGlsaXppbmcgdGhlIHJlYWQg YWhlYWQgd2luZG93IHNpemUuDQoNCg0KICAgIExpbmtzOg0KICAgIFsxXSBodHRwczovL3d3dy5z cGluaWNzLm5ldC9saXN0cy9saW51eC1uZnMvbXNnNzUwMTguaHRtbA0KICAgIFsyXSBodHRwczov L2RvY3MuYXdzLmFtYXpvbi5jb20vZWZzL2xhdGVzdC91Zy9tb3VudGluZy1mcy1uZnMtbW91bnQt c2V0dGluZ3MuaHRtbA0KICAgIFszXSBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19i dWcuY2dpP2lkPTIwNDkzOQ0KICAgIFs0XSBodHRwczovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2xp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcvbXNnMTI3NDc0My5odG1sDQoNCg0KICAgIFRoYW5r IHlvdS4NCg0KICAgIEhhemVtDQoNCg0KDQoNCgoKCkFtYXpvbiBXZWIgU2VydmljZXMgRU1FQSBT QVJMLCAzOCBhdmVudWUgSm9obiBGLiBLZW5uZWR5LCBMLTE4NTUgTHV4ZW1ib3VyZywgUi5DLlMu IEx1eGVtYm91cmcgQjE4NjI4NAoKQW1hem9uIFdlYiBTZXJ2aWNlcyBFTUVBIFNBUkwsIElyaXNo IEJyYW5jaCwgT25lIEJ1cmxpbmd0b24gUGxhemEsIEJ1cmxpbmd0b24gUm9hZCwgRHVibGluIDQs IElyZWxhbmQsIGJyYW5jaCByZWdpc3RyYXRpb24gbnVtYmVyIDkwODcwNQoKCg==