From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx3.molgen.mpg.de (mx3.molgen.mpg.de [141.14.17.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF4F07C for ; Mon, 23 Jan 2023 18:53:37 +0000 (UTC) Received: from [192.168.0.2] (ip5f5aefaf.dynamic.kabel-deutschland.de [95.90.239.175]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: pmenzel) by mx.molgen.mpg.de (Postfix) with ESMTPSA id 120E761CC40F9; Mon, 23 Jan 2023 19:53:34 +0100 (CET) Message-ID: <04793400-b368-ecd8-ce52-009e60533753@molgen.mpg.de> Date: Mon, 23 Jan 2023 19:53:33 +0100 Precedence: bulk X-Mailing-List: regressions@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [Intel-wired-lan] Supermicro AOC-STGN-I1S (Intel 82599EN based 10G adapter) - poor network perfomance after moving to Debian 11.5 To: Bartek Kois Cc: intel-wired-lan@osuosl.org, regressions@lists.linux.dev References: <652bf236-d97e-832c-e0f3-24927a46d7ad@molgen.mpg.de> <744de70c-782d-5d36-87fc-e6b92ac84190@gmail.com> <30de7b89-6a4f-8dab-d671-027140bbb52b@gmail.com> <3b957674-a559-ac1e-27b8-b81e6eeffe75@gmail.com> <05d381af-5ccb-0d87-97d3-e2fc4ce870fc@molgen.mpg.de> Content-Language: en-US From: Paul Menzel In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Dear Bartek, Am 23.01.23 um 19:38 schrieb Bartek Kois: > > W dniu 22.01.2023 o 21:28, Paul Menzel pisze: >> Dear Bartek, >> >> >> Am 19.01.23 um 18:17 schrieb Bartek Kois: >>> W dniu 19.01.2023 o 18:09, Paul Menzel pisze: >> >>>> Am 19.01.23 um 17:58 schrieb Bartek Kois: >>>>> W dniu 19.01.2023 o 13:24, Bartek Kois pisze: >>>>>> >>>>>> W dniu 19.01.2023 o 11:17, Paul Menzel pisze: >>>>>>> >>>>>>> #regzbot ^introduced: 4.9.88..5.10.149 >>>> >>>>>>> Am 14.01.23 um 11:23 schrieb Bartek Kois: >>>>>>> >>>>>>>> After moving from Debian 9.7 to 11.5 as soon as I perform "ip >>>>>>>> link set enp1s0 up" for my 10G adapter (AOC-STGN-I1S - Intel >>>>>>>> 82599EN based 10G adapter) I am experiencing high cpu load (even >>>>>>>> if no traffic is passing through the adapter) and network >>>>>>>> performance is low (when network is connected). >>>>>>> >>>>>>> How do you test the network performance? Please give exact >>>>>>> numbers for comparison. >>>>>>> >>>>>> I am using this server as a router for my subscribers with >>>>>> iptables (for NAT and firewall) and hfsc (for QoS). First I >>>>>> encountered this problem while migrating form Debian 9.7 to 11.5. >>>>>> Routers based  on Supermicro X11SSL-F (Intel® C232 chipset) works >>>>>> with no problems after that migration, but routers based on >>>>>> Supermicro X9SCL (Intel C202 PCH) and Supermicro X10SLL+-F (Intel >>>>>> C222 Express PCH) starts behaving strangely with high cpu load >>>>>> (0.5-0.8 while before it was around 0.0-0.1) and subscribers not >>>>>> being able to utilize their plans. I tried to strip down the >>>>>> problem and ends up with clean system with no iptables or hfsc >>>>>> rules behaving the same (higher load) right after setting the 10G >>>>>> link upeven if no traffic is passing by. >>>>>> >>>>>>>> The cpu load is oscillating between 0.1 and 0.3 on vanilla system >>>>>>>> with no network attached. The problem can be observed on the >>>>>>>> following platforms: Supermicro X9SCL (Intel C202 PCH) and >>>>>>>> Supermicro X10SLL+-F (Intel C222 Express PCH), but for the >>>>>>>> Supermicro >>>>>>>> X11SSL-F (Intel® C232 chipset) everything is working well. >>>>>>>> >>>>>>>> Tested environments: >>>>>>>> Debian 9.7 - Linux 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1 >>>>>>>> (2018-05-07) x86_64 GNU/Linux [all platforms working well with >>>>>>>> no problems: Supermicro X9SCL (Intel C202 PCH), Supermicro >>>>>>>> X10SLL+-F (Intel C222 Express PCH), Supermicro X11SSL-F (Intel® >>>>>>>> C232 chipset)] >>>>>>> >>>>>>>> Debian 11.5 - Linux 5.10.0-19-amd64 #1 SMP Debian 5.10.149-2 >>>>>>>> (2022-10-21) x86_64 GNU/Linux [older platforms: Supermicro X9SCL >>>>>>>> (Intel C202 PCH), Supermicro X10SLL+-F (Intel C222 Express PCH) >>>>>>>> behave problematic as described above | newer platform: >>>>>>>> Supermicro X11SSL-F (Intel® C232 chipset) working well with no >>>>>>>> problems] >>>>>>> >>>>>>> Maybe create a bug at the Linux kernel bug tracker [1], where you >>>>>>> can attach all the logs (`dmesg`, `lspci -nnk -s …`, …). >>>>>>> >>>>>> I`ve already reported that to the Debian team >>>>>> ttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1024763, but so >>>>>> far nobody took care of this issue so far. >>>>>> >>>>>>>> So far to solve the problem I was trying to upgrade system to >>>>>>>> the newest stable version, upgrade kernel to version 6.x, >>>>>>>> upgrade ixgbe driver to the newest version but with no luck. >>>>>>> >>>>>>> Thank you for checking that. Too bad it’s still present. To rule >>>>>>> out some user space problem, could you test Debian 9.7 with a >>>>>>> stable Linux release, currently 6.1.7? >>>>>>> >>>>>>> What does `sudo perf top --sort comm,dso` show, where the time is >>>>>>> spent? >>>>>> >>>>>> During my first test in real enviroment with subscribers I gether >>>>>> the following data through the perf: >>>>>> >>>>>>   27.83%  [kernel]                   [k] strncpy >>>>>>   14.80%  [kernel]                   [k] nft_do_chain >>>>>>    7.61%  [kernel]                   [k] memcmp >>>>>>    5.63%  [kernel]                   [k] nft_meta_get_eval >>>>>>    3.14%  [kernel]                   [k] nft_cmp_eval >>>>>>    2.79%  [kernel]                   [k] asm_exc_nmi >>>>>>    1.07%  [kernel]                   [k] module_get_kallsym >>>>>>    0.92%  [kernel]                   [k] >>>>>> kallsyms_expand_symbol.constprop.0 >>>>>>    0.85%  [kernel]                   [k] ixgbe_poll >>>>>>    0.75%  [kernel]                   [k] format_decode >>>>>>    0.61%  [kernel]                   [k] number >>>>>>    0.56%  [kernel]                   [k] menu_select >>>>>>    0.54%  [kernel]                   [k] clflush_cache_range >>>>>>    0.52%  [kernel]                   [k] cpuidle_enter_state >>>>>>    0.51%  [kernel]                   [k] vsnprintf >>>>>>    0.50%  [kernel]                   [k] u32_classify >>>>>>    0.49%  [kernel]                   [k] fib_table_lookup >>>>>>    0.40%  [kernel]                   [k] dma_pte_clear_level >>>>>>    0.39%  [kernel]                   [k] domain_mapping >>>>>>    0.36%  [kernel]                   [k] ixgbe_xmit_fram >>>>>> >>>>>> >>>>>>     PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM TIME+ COMMAND >>>>>>      18 root      20   0       0      0      0 S  28.2 0.0 7:06.27 ksoftirqd/1 >>>>>>      12 root      20   0       0      0      0 R  12.0 0.0 4:10.88 ksoftirqd/0 >>>> >>>> […] >>>> >>>> Do you see different behavior in `/proc/interrupts`? >>>> >>> This is how it looks like for Debian 11.5 - Linux 5.10.0-19-amd64 #1 >>> SMP Debian 5.10.149-2 (2022-10-21) x86_64 GNU/Linux on Supermicro >>> X10SLL+-F (Intel C222 Express PCH): >>> >>>        1 root      20   0  163948  10288   7696 S   0.0   0.1 0:39.58 systemd >> >> […] >> >> The content of `/proc/interrupts` has a different format on my system. >> >> ``` >> $ head -3 /proc/interrupts >>            CPU0       CPU1       CPU2       CPU3 >>   1:      55560          0        113          0  IR-IO-APIC 1-edge i8042 >>   8:          0          0          0          0  IR-IO-APIC 8-edge rtc0 >> ``` >> […] >> >>> and for Debian 9.7 - Linux 4.9.0-6-amd64 #1 SMP Debian >>> 4.9.88-1+deb9u1 on Supermicro X10SLL+-F (Intel C222 Express PCH) >>> >>> 31659 root      20   0       0      0      0 S   0.3  0.0 0:00.92 kworker/7:0 >>>      1 root      20   0   57032   6736   5256 S   0.0  0.1 2:28.14 systemd >> >> […] >>>>>>>> Supermicro support suggested as follows: >>>>>>>> it might be kernel related debian 11.5 has kernel 5.10 which is >>>>>>>> a recent kernel it might not properly support the chipsets for >>>>>>>> X9 therefore i suggest to use RHEL or CentOS as they use much >>>>>>>> older kernel versions. I expect that with ubuntu 20.04 you see >>>>>>>> the same problem it uses kernel 5.4 >>>>>>> >>> Testing another GNU/Linux distribution for another data >>>>>>> point, might be a good idea. >>>>>>> >>>>>>> As nobody has responded yet, bisecting the issue is probably the >>>>>>> fastest way to get to the bottom of this. Luckily the problem >>>>>>> seems reproducible and you seem to be able to build a Linux >>>>>>> kernel yourself, so that should work. (For testing purposes you >>>>>>> could also test with Ubuntu, as they provide Linux kernel builds >>>>>>> for (almost) all releases in their Linux kernel mainline PPA [2].) >>>>>>> >>>>>> Of course  I can try Ubuntu and report how it is working. >>>>>> >>>>> Ubuntu (5.15.0-43-generic) seems to be working in the same way >>>>> generating higher load after executing "ip link set enp1s0 up". >>>> >>>> That is good to know. (Is this Ubuntu 22.04?) What about Ubuntu >>>> 20.04 with Linux 5.4, and Ubuntu 18.04 with 4.15? >>>> >>>> Anyway, I think, you won’t come around bisecting. Another hint, make >>>> sure that you can build a 4.9 Linux kernel yourself, that does not >>>> exhibit that issue. >>>> >>> That`s right, it is 22.04. I don`t have to build it. Standard kernel >>> Linux 4.9.0-6-amd64 from Debian 9.7 worked without problems for past >>> 4 years. >> >> If nobody of the developers/maintainers is going to step up, you are >> on your own. Again, as you can reproduce this easily, the fastest way >> is to bisect the issue, which you can do on your own. > > How can I investigate that further? I repeat myself, please bisect the issue. It’s the fastest way. > I thought about trying to change some > of the parameters related to ixgbe driver and observe if anything is > changing, but when I am trying to do: > > sudo modprobe ixgbe IntMode=0 > > I get the following error in the dmesg: > > [ 2137.324772] ixgbe: unknown parameter 'IntMode' ignored <<<<<<<<< […] `modinfo ixgbe` shows the supported parameters. Kind regards, Paul PS: If you need help bisecting, please ask. Otherwise, I am out of this thread. >>>>>>> [1]: https://bugzilla.kernel.org/ >>>>>>> [2]: https://kernel.ubuntu.com/~kernel-ppa/mainline/ 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 Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D209EC05027 for ; Mon, 23 Jan 2023 18:53:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 7FCDC40137; Mon, 23 Jan 2023 18:53:43 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 7FCDC40137 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1674500023; bh=/yC6ewMhuNJzpDqqswnAD/8TyKf2dzJLqINchosQKcY=; h=Date:To:References:From:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=kg7Ks1srD1ipdnZkbh8Sjw5YhTaCSYYlNMzX9kNsZjX6O4vzY9SB0lxxECqj7+f54 BtTZRYF3nk4Jf/iep1v0dBDTJUlxGrWFFRXLFF4lTekZdFroUu17Kh6IpY+leEMSam xb7vOwoPE7gfgPsZIYIzWsWBruXz/T0EdA+6THPA690+gLkvCotwWiOPZn/Un3hVQ0 NTVbiGnQiGJzuPyDmuk26aIWTtgEIwT1GZxii2xr09tqESNbF0NE39fVXU59j047J3 HXV8yWOrtcgH9AXrvI17kUhoWGr3GhPUZdhx1+wwO9Xldar+m0XmL2PQFjWhDRsdux XBCX5rxB8LBKw== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iPmwNks6qjF0; Mon, 23 Jan 2023 18:53:42 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp2.osuosl.org (Postfix) with ESMTP id 11F5440B38; Mon, 23 Jan 2023 18:53:42 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 11F5440B38 Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id E3D411BF373 for ; Mon, 23 Jan 2023 18:53:39 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id BEC6940B38 for ; Mon, 23 Jan 2023 18:53:39 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org BEC6940B38 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gQzqoKGmXGia for ; Mon, 23 Jan 2023 18:53:37 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 3149B40137 Received: from mx3.molgen.mpg.de (mx3.molgen.mpg.de [141.14.17.11]) by smtp2.osuosl.org (Postfix) with ESMTPS id 3149B40137 for ; Mon, 23 Jan 2023 18:53:37 +0000 (UTC) Received: from [192.168.0.2] (ip5f5aefaf.dynamic.kabel-deutschland.de [95.90.239.175]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: pmenzel) by mx.molgen.mpg.de (Postfix) with ESMTPSA id 120E761CC40F9; Mon, 23 Jan 2023 19:53:34 +0100 (CET) Message-ID: <04793400-b368-ecd8-ce52-009e60533753@molgen.mpg.de> Date: Mon, 23 Jan 2023 19:53:33 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 To: Bartek Kois References: <652bf236-d97e-832c-e0f3-24927a46d7ad@molgen.mpg.de> <744de70c-782d-5d36-87fc-e6b92ac84190@gmail.com> <30de7b89-6a4f-8dab-d671-027140bbb52b@gmail.com> <3b957674-a559-ac1e-27b8-b81e6eeffe75@gmail.com> <05d381af-5ccb-0d87-97d3-e2fc4ce870fc@molgen.mpg.de> Content-Language: en-US From: Paul Menzel In-Reply-To: Subject: Re: [Intel-wired-lan] Supermicro AOC-STGN-I1S (Intel 82599EN based 10G adapter) - poor network perfomance after moving to Debian 11.5 X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-wired-lan@osuosl.org, regressions@lists.linux.dev Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" RGVhciBCYXJ0ZWssCgoKQW0gMjMuMDEuMjMgdW0gMTk6Mzggc2NocmllYiBCYXJ0ZWsgS29pczoK PiAKPiBXIGRuaXUgMjIuMDEuMjAyMyBvwqAyMToyOCwgUGF1bCBNZW56ZWwgcGlzemU6Cj4+IERl YXIgQmFydGVrLAo+Pgo+Pgo+PiBBbSAxOS4wMS4yMyB1bSAxODoxNyBzY2hyaWViIEJhcnRlayBL b2lzOgo+Pj4gVyBkbml1IDE5LjAxLjIwMjMgb8KgMTg6MDksIFBhdWwgTWVuemVsIHBpc3plOgo+ Pgo+Pj4+IEFtIDE5LjAxLjIzIHVtIDE3OjU4IHNjaHJpZWIgQmFydGVrIEtvaXM6Cj4+Pj4+IFcg ZG5pdSAxOS4wMS4yMDIzIG/CoDEzOjI0LCBCYXJ0ZWsgS29pcyBwaXN6ZToKPj4+Pj4+Cj4+Pj4+ PiBXIGRuaXUgMTkuMDEuMjAyMyBvwqAxMToxNywgUGF1bCBNZW56ZWwgcGlzemU6Cj4+Pj4+Pj4K Pj4+Pj4+PiAjcmVnemJvdCBeaW50cm9kdWNlZDogNC45Ljg4Li41LjEwLjE0OQo+Pj4+Cj4+Pj4+ Pj4gQW0gMTQuMDEuMjMgdW0gMTE6MjMgc2NocmllYiBCYXJ0ZWsgS29pczoKPj4+Pj4+Pgo+Pj4+ Pj4+PiBBZnRlciBtb3ZpbmcgZnJvbSBEZWJpYW4gOS43IHRvIDExLjUgYXMgc29vbiBhcyBJIHBl cmZvcm0gImlwIAo+Pj4+Pj4+PiBsaW5rIHNldCBlbnAxczAgdXAiIGZvciBteSAxMEcgYWRhcHRl ciAoQU9DLVNUR04tSTFTIC0gSW50ZWwgCj4+Pj4+Pj4+IDgyNTk5RU4gYmFzZWQgMTBHIGFkYXB0 ZXIpIEkgYW0gZXhwZXJpZW5jaW5nIGhpZ2ggY3B1IGxvYWQgKGV2ZW4gCj4+Pj4+Pj4+IGlmIG5v IHRyYWZmaWMgaXMgcGFzc2luZyB0aHJvdWdoIHRoZSBhZGFwdGVyKSBhbmQgbmV0d29yayAKPj4+ Pj4+Pj4gcGVyZm9ybWFuY2UgaXMgbG93ICh3aGVuIG5ldHdvcmsgaXMgY29ubmVjdGVkKS4KPj4+ Pj4+Pgo+Pj4+Pj4+IEhvdyBkbyB5b3UgdGVzdCB0aGUgbmV0d29yayBwZXJmb3JtYW5jZT8gUGxl YXNlIGdpdmUgZXhhY3QgCj4+Pj4+Pj4gbnVtYmVycyBmb3IgY29tcGFyaXNvbi4KPj4+Pj4+Pgo+ Pj4+Pj4gSSBhbSB1c2luZyB0aGlzIHNlcnZlciBhcyBhIHJvdXRlciBmb3IgbXkgc3Vic2NyaWJl cnMgd2l0aCAKPj4+Pj4+IGlwdGFibGVzIChmb3IgTkFUIGFuZCBmaXJld2FsbCkgYW5kIGhmc2Mg KGZvciBRb1MpLiBGaXJzdCBJIAo+Pj4+Pj4gZW5jb3VudGVyZWQgdGhpcyBwcm9ibGVtIHdoaWxl IG1pZ3JhdGluZyBmb3JtIERlYmlhbiA5LjcgdG8gMTEuNS4gCj4+Pj4+PiBSb3V0ZXJzIGJhc2Vk wqAgb24gU3VwZXJtaWNybyBYMTFTU0wtRiAoSW50ZWzCriBDMjMyIGNoaXBzZXQpIHdvcmtzIAo+ Pj4+Pj4gd2l0aCBubyBwcm9ibGVtcyBhZnRlciB0aGF0IG1pZ3JhdGlvbiwgYnV0IHJvdXRlcnMg YmFzZWQgb24gCj4+Pj4+PiBTdXBlcm1pY3JvIFg5U0NMIChJbnRlbCBDMjAyIFBDSCkgYW5kIFN1 cGVybWljcm8gWDEwU0xMKy1GIChJbnRlbCAKPj4+Pj4+IEMyMjIgRXhwcmVzcyBQQ0gpIHN0YXJ0 cyBiZWhhdmluZyBzdHJhbmdlbHkgd2l0aCBoaWdoIGNwdSBsb2FkIAo+Pj4+Pj4gKDAuNS0wLjgg d2hpbGUgYmVmb3JlIGl0IHdhcyBhcm91bmQgMC4wLTAuMSkgYW5kIHN1YnNjcmliZXJzIG5vdCAK Pj4+Pj4+IGJlaW5nIGFibGUgdG8gdXRpbGl6ZSB0aGVpciBwbGFucy4gSSB0cmllZCB0byBzdHJp cCBkb3duIHRoZSAKPj4+Pj4+IHByb2JsZW0gYW5kIGVuZHMgdXAgd2l0aCBjbGVhbiBzeXN0ZW0g d2l0aCBubyBpcHRhYmxlcyBvciBoZnNjIAo+Pj4+Pj4gcnVsZXMgYmVoYXZpbmcgdGhlIHNhbWUg KGhpZ2hlciBsb2FkKSByaWdodCBhZnRlciBzZXR0aW5nIHRoZSAxMEcgCj4+Pj4+PiBsaW5rIHVw ZXZlbiBpZiBubyB0cmFmZmljIGlzIHBhc3NpbmcgYnkuCj4+Pj4+Pgo+Pj4+Pj4+PiBUaGUgY3B1 IGxvYWQgaXMgb3NjaWxsYXRpbmcgYmV0d2VlbiAwLjEgYW5kIDAuMyBvbiB2YW5pbGxhIHN5c3Rl bQo+Pj4+Pj4+PiB3aXRoIG5vIG5ldHdvcmsgYXR0YWNoZWQuIFRoZSBwcm9ibGVtIGNhbiBiZSBv YnNlcnZlZCBvbiB0aGUgCj4+Pj4+Pj4+IGZvbGxvd2luZyBwbGF0Zm9ybXM6IFN1cGVybWljcm8g WDlTQ0wgKEludGVsIEMyMDIgUENIKSBhbmQKPj4+Pj4+Pj4gU3VwZXJtaWNybyBYMTBTTEwrLUYg KEludGVsIEMyMjIgRXhwcmVzcyBQQ0gpLCBidXQgZm9yIHRoZSAKPj4+Pj4+Pj4gU3VwZXJtaWNy bwo+Pj4+Pj4+PiBYMTFTU0wtRiAoSW50ZWzCriBDMjMyIGNoaXBzZXQpIGV2ZXJ5dGhpbmcgaXMg d29ya2luZyB3ZWxsLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBUZXN0ZWQgZW52aXJvbm1lbnRzOgo+Pj4+ Pj4+PiBEZWJpYW4gOS43IC0gTGludXggNC45LjAtNi1hbWQ2NCAjMSBTTVAgRGViaWFuIDQuOS44 OC0xK2RlYjl1MSAKPj4+Pj4+Pj4gKDIwMTgtMDUtMDcpIHg4Nl82NCBHTlUvTGludXggW2FsbCBw bGF0Zm9ybXMgd29ya2luZyB3ZWxsIHdpdGggCj4+Pj4+Pj4+IG5vIHByb2JsZW1zOiBTdXBlcm1p Y3JvIFg5U0NMIChJbnRlbCBDMjAyIFBDSCksIFN1cGVybWljcm8gCj4+Pj4+Pj4+IFgxMFNMTCst RiAoSW50ZWwgQzIyMiBFeHByZXNzIFBDSCksIFN1cGVybWljcm8gWDExU1NMLUYgKEludGVswq4g Cj4+Pj4+Pj4+IEMyMzIgY2hpcHNldCldCj4+Pj4+Pj4KPj4+Pj4+Pj4gRGViaWFuIDExLjUgLSBM aW51eCA1LjEwLjAtMTktYW1kNjQgIzEgU01QIERlYmlhbiA1LjEwLjE0OS0yIAo+Pj4+Pj4+PiAo MjAyMi0xMC0yMSkgeDg2XzY0IEdOVS9MaW51eCBbb2xkZXIgcGxhdGZvcm1zOiBTdXBlcm1pY3Jv IFg5U0NMIAo+Pj4+Pj4+PiAoSW50ZWwgQzIwMiBQQ0gpLCBTdXBlcm1pY3JvIFgxMFNMTCstRiAo SW50ZWwgQzIyMiBFeHByZXNzIFBDSCkgCj4+Pj4+Pj4+IGJlaGF2ZSBwcm9ibGVtYXRpYyBhcyBk ZXNjcmliZWQgYWJvdmUgfCBuZXdlciBwbGF0Zm9ybTogCj4+Pj4+Pj4+IFN1cGVybWljcm8gWDEx U1NMLUYgKEludGVswq4gQzIzMiBjaGlwc2V0KSB3b3JraW5nIHdlbGwgd2l0aCBubyAKPj4+Pj4+ Pj4gcHJvYmxlbXNdCj4+Pj4+Pj4KPj4+Pj4+PiBNYXliZSBjcmVhdGUgYSBidWcgYXQgdGhlIExp bnV4IGtlcm5lbCBidWcgdHJhY2tlciBbMV0sIHdoZXJlIHlvdSAKPj4+Pj4+PiBjYW4gYXR0YWNo IGFsbCB0aGUgbG9ncyAoYGRtZXNnYCwgYGxzcGNpIC1ubmsgLXMg4oCmYCwg4oCmKS4KPj4+Pj4+ Pgo+Pj4+Pj4gSWB2ZSBhbHJlYWR5IHJlcG9ydGVkIHRoYXQgdG8gdGhlIERlYmlhbiB0ZWFtIAo+ Pj4+Pj4gdHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTEw MjQ3NjMsIGJ1dCBzbyAKPj4+Pj4+IGZhciBub2JvZHkgdG9vayBjYXJlIG9mIHRoaXMgaXNzdWUg c28gZmFyLgo+Pj4+Pj4KPj4+Pj4+Pj4gU28gZmFyIHRvIHNvbHZlIHRoZSBwcm9ibGVtIEkgd2Fz IHRyeWluZyB0byB1cGdyYWRlIHN5c3RlbSB0byAKPj4+Pj4+Pj4gdGhlIG5ld2VzdCBzdGFibGUg dmVyc2lvbiwgdXBncmFkZSBrZXJuZWwgdG8gdmVyc2lvbiA2LngsIAo+Pj4+Pj4+PiB1cGdyYWRl IGl4Z2JlIGRyaXZlciB0byB0aGUgbmV3ZXN0IHZlcnNpb24gYnV0IHdpdGggbm8gbHVjay4KPj4+ Pj4+Pgo+Pj4+Pj4+IFRoYW5rIHlvdSBmb3IgY2hlY2tpbmcgdGhhdC4gVG9vIGJhZCBpdOKAmXMg c3RpbGwgcHJlc2VudC4gVG8gcnVsZSAKPj4+Pj4+PiBvdXQgc29tZSB1c2VyIHNwYWNlIHByb2Js ZW0sIGNvdWxkIHlvdSB0ZXN0IERlYmlhbiA5Ljcgd2l0aCBhIAo+Pj4+Pj4+IHN0YWJsZSBMaW51 eCByZWxlYXNlLCBjdXJyZW50bHkgNi4xLjc/Cj4+Pj4+Pj4KPj4+Pj4+PiBXaGF0IGRvZXMgYHN1 ZG8gcGVyZiB0b3AgLS1zb3J0IGNvbW0sZHNvYCBzaG93LCB3aGVyZSB0aGUgdGltZSBpcyAKPj4+ Pj4+PiBzcGVudD8KPj4+Pj4+Cj4+Pj4+PiBEdXJpbmcgbXkgZmlyc3QgdGVzdCBpbiByZWFsIGVu dmlyb21lbnQgd2l0aCBzdWJzY3JpYmVycyBJIGdldGhlciAKPj4+Pj4+IHRoZSBmb2xsb3dpbmcg ZGF0YSB0aHJvdWdoIHRoZSBwZXJmOgo+Pj4+Pj4KPj4+Pj4+IMKgIDI3LjgzJcKgIFtrZXJuZWxd wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFtrXSBzdHJuY3B5Cj4+Pj4+PiDC oCAxNC44MCXCoCBba2VybmVsXcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBb a10gbmZ0X2RvX2NoYWluCj4+Pj4+PiDCoMKgIDcuNjElwqAgW2tlcm5lbF3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgW2tdIG1lbWNtcAo+Pj4+Pj4gwqDCoCA1LjYzJcKgIFtr ZXJuZWxdwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFtrXSBuZnRfbWV0YV9n ZXRfZXZhbAo+Pj4+Pj4gwqDCoCAzLjE0JcKgIFtrZXJuZWxdwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFtrXSBuZnRfY21wX2V2YWwKPj4+Pj4+IMKgwqAgMi43OSXCoCBba2Vy bmVsXcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBba10gYXNtX2V4Y19ubWkK Pj4+Pj4+IMKgwqAgMS4wNyXCoCBba2VybmVsXcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBba10gbW9kdWxlX2dldF9rYWxsc3ltCj4+Pj4+PiDCoMKgIDAuOTIlwqAgW2tlcm5l bF3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgW2tdIAo+Pj4+Pj4ga2FsbHN5 bXNfZXhwYW5kX3N5bWJvbC5jb25zdHByb3AuMAo+Pj4+Pj4gwqDCoCAwLjg1JcKgIFtrZXJuZWxd wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFtrXSBpeGdiZV9wb2xsCj4+Pj4+ PiDCoMKgIDAuNzUlwqAgW2tlcm5lbF3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgW2tdIGZvcm1hdF9kZWNvZGUKPj4+Pj4+IMKgwqAgMC42MSXCoCBba2VybmVsXcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBba10gbnVtYmVyCj4+Pj4+PiDCoMKgIDAuNTYl wqAgW2tlcm5lbF3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgW2tdIG1lbnVf c2VsZWN0Cj4+Pj4+PiDCoMKgIDAuNTQlwqAgW2tlcm5lbF3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgW2tdIGNsZmx1c2hfY2FjaGVfcmFuZ2UKPj4+Pj4+IMKgwqAgMC41MiXC oCBba2VybmVsXcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBba10gY3B1aWRs ZV9lbnRlcl9zdGF0ZQo+Pj4+Pj4gwqDCoCAwLjUxJcKgIFtrZXJuZWxdwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFtrXSB2c25wcmludGYKPj4+Pj4+IMKgwqAgMC41MCXCoCBb a2VybmVsXcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBba10gdTMyX2NsYXNz aWZ5Cj4+Pj4+PiDCoMKgIDAuNDklwqAgW2tlcm5lbF3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgW2tdIGZpYl90YWJsZV9sb29rdXAKPj4+Pj4+IMKgwqAgMC40MCXCoCBba2Vy bmVsXcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBba10gZG1hX3B0ZV9jbGVh cl9sZXZlbAo+Pj4+Pj4gwqDCoCAwLjM5JcKgIFtrZXJuZWxdwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFtrXSBkb21haW5fbWFwcGluZwo+Pj4+Pj4gwqDCoCAwLjM2JcKgIFtr ZXJuZWxdwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFtrXSBpeGdiZV94bWl0 X2ZyYW0KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gwqDCoMKgIFBJRCBVU0VSwqDCoMKgwqDCoCBQUsKg IE5JwqDCoMKgIFZJUlTCoMKgwqAgUkVTwqDCoMKgIFNIUiBTwqAgJUNQVSAlTUVNIFRJTUUrIENP TU1BTkQKPj4+Pj4+IMKgwqDCoMKgIDE4IHJvb3TCoMKgwqDCoMKgIDIwwqDCoCAwwqDCoMKgwqDC oMKgIDDCoMKgwqDCoMKgIDDCoMKgwqDCoMKgIDAgU8KgIDI4LjIgMC4wIDc6MDYuMjcga3NvZnRp cnFkLzEKPj4+Pj4+IMKgwqDCoMKgIDEyIHJvb3TCoMKgwqDCoMKgIDIwwqDCoCAwwqDCoMKgwqDC oMKgIDDCoMKgwqDCoMKgIDDCoMKgwqDCoMKgIDAgUsKgIDEyLjAgMC4wIDQ6MTAuODgga3NvZnRp cnFkLzAKPj4+Pgo+Pj4+IFvigKZdCj4+Pj4KPj4+PiBEbyB5b3Ugc2VlIGRpZmZlcmVudCBiZWhh dmlvciBpbiBgL3Byb2MvaW50ZXJydXB0c2A/Cj4+Pj4KPj4+IFRoaXMgaXMgaG93IGl0IGxvb2tz IGxpa2UgZm9yIERlYmlhbiAxMS41IC0gTGludXggNS4xMC4wLTE5LWFtZDY0ICMxIAo+Pj4gU01Q IERlYmlhbiA1LjEwLjE0OS0yICgyMDIyLTEwLTIxKSB4ODZfNjQgR05VL0xpbnV4IG9uIFN1cGVy bWljcm8gCj4+PiBYMTBTTEwrLUYgKEludGVsIEMyMjIgRXhwcmVzcyBQQ0gpOgo+Pj4KPj4+IMKg wqDCoMKgwqDCoCAxIHJvb3TCoMKgwqDCoMKgIDIwwqDCoCAwwqAgMTYzOTQ4wqAgMTAyODjCoMKg IDc2OTYgU8KgwqAgMC4wwqDCoCAwLjEgMDozOS41OCBzeXN0ZW1kCj4+Cj4+IFvigKZdCj4+Cj4+ IFRoZSBjb250ZW50IG9mIGAvcHJvYy9pbnRlcnJ1cHRzYCBoYXMgYSBkaWZmZXJlbnQgZm9ybWF0 IG9uIG15IHN5c3RlbS4KPj4KPj4gYGBgCj4+ICQgaGVhZCAtMyAvcHJvYy9pbnRlcnJ1cHRzCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgIENQVTDCoMKgwqDCoMKgwqAgQ1BVMcKgwqDCoMKgwqDCoCBD UFUywqDCoMKgwqDCoMKgIENQVTMKPj4gwqAgMTrCoMKgwqDCoMKgIDU1NTYwwqDCoMKgwqDCoMKg wqDCoMKgIDDCoMKgwqDCoMKgwqDCoCAxMTPCoMKgwqDCoMKgwqDCoMKgwqAgMMKgIElSLUlPLUFQ SUMgMS1lZGdlIGk4MDQyCj4+IMKgIDg6wqDCoMKgwqDCoMKgwqDCoMKgIDDCoMKgwqDCoMKgwqDC oMKgwqAgMMKgwqDCoMKgwqDCoMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoMKgIDDCoCBJUi1JTy1B UElDIDgtZWRnZSBydGMwCj4+IGBgYAo+PiBb4oCmXQo+Pgo+Pj4gYW5kIGZvciBEZWJpYW4gOS43 IC0gTGludXggNC45LjAtNi1hbWQ2NCAjMSBTTVAgRGViaWFuIAo+Pj4gNC45Ljg4LTErZGViOXUx IG9uIFN1cGVybWljcm8gWDEwU0xMKy1GIChJbnRlbCBDMjIyIEV4cHJlc3MgUENIKQo+Pj4KPj4+ IDMxNjU5IHJvb3TCoMKgwqDCoMKgIDIwwqDCoCAwwqDCoMKgwqDCoMKgIDDCoMKgwqDCoMKgIDDC oMKgwqDCoMKgIDAgU8KgwqAgMC4zwqAgMC4wIDA6MDAuOTIgIGt3b3JrZXIvNzowCj4+PiDCoMKg wqDCoCAxIHJvb3TCoMKgwqDCoMKgIDIwwqDCoCAwwqDCoCA1NzAzMsKgwqAgNjczNsKgwqAgNTI1 NiBTwqDCoCAwLjDCoCAwLjEgMjoyOC4xNCBzeXN0ZW1kCj4+Cj4+IFvigKZdCj4+Pj4+Pj4+IFN1 cGVybWljcm8gc3VwcG9ydCBzdWdnZXN0ZWQgYXMgZm9sbG93czoKPj4+Pj4+Pj4gaXQgbWlnaHQg YmUga2VybmVsIHJlbGF0ZWQgZGViaWFuIDExLjUgaGFzIGtlcm5lbCA1LjEwIHdoaWNoIGlzIAo+ Pj4+Pj4+PiBhIHJlY2VudCBrZXJuZWwgaXQgbWlnaHQgbm90IHByb3Blcmx5IHN1cHBvcnQgdGhl IGNoaXBzZXRzIGZvciAKPj4+Pj4+Pj4gWDkgdGhlcmVmb3JlIGkgc3VnZ2VzdCB0byB1c2UgUkhF TCBvciBDZW50T1MgYXMgdGhleSB1c2UgbXVjaCAKPj4+Pj4+Pj4gb2xkZXIga2VybmVsIHZlcnNp b25zLiBJIGV4cGVjdCB0aGF0IHdpdGggdWJ1bnR1IDIwLjA0IHlvdSBzZWUgCj4+Pj4+Pj4+IHRo ZSBzYW1lIHByb2JsZW0gaXQgdXNlcyBrZXJuZWwgNS40Cj4+Pj4+Pj4gPj4+IFRlc3RpbmcgYW5v dGhlciBHTlUvTGludXggZGlzdHJpYnV0aW9uIGZvciBhbm90aGVyIGRhdGEgCj4+Pj4+Pj4gcG9p bnQsIG1pZ2h0IGJlIGEgZ29vZCBpZGVhLgo+Pj4+Pj4+Cj4+Pj4+Pj4gQXMgbm9ib2R5IGhhcyBy ZXNwb25kZWQgeWV0LCBiaXNlY3RpbmcgdGhlIGlzc3VlIGlzIHByb2JhYmx5IHRoZSAKPj4+Pj4+ PiBmYXN0ZXN0IHdheSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBMdWNraWx5IHRoZSBw cm9ibGVtIAo+Pj4+Pj4+IHNlZW1zIHJlcHJvZHVjaWJsZSBhbmQgeW91IHNlZW0gdG8gYmUgYWJs ZSB0byBidWlsZCBhIExpbnV4IAo+Pj4+Pj4+IGtlcm5lbCB5b3Vyc2VsZiwgc28gdGhhdCBzaG91 bGQgd29yay4gKEZvciB0ZXN0aW5nIHB1cnBvc2VzIHlvdSAKPj4+Pj4+PiBjb3VsZCBhbHNvIHRl c3Qgd2l0aCBVYnVudHUsIGFzIHRoZXkgcHJvdmlkZSBMaW51eCBrZXJuZWwgYnVpbGRzIAo+Pj4+ Pj4+IGZvciAoYWxtb3N0KSBhbGwgcmVsZWFzZXMgaW4gdGhlaXIgTGludXgga2VybmVsIG1haW5s aW5lIFBQQSBbMl0uKQo+Pj4+Pj4+Cj4+Pj4+PiBPZiBjb3Vyc2XCoCBJIGNhbiB0cnkgVWJ1bnR1 IGFuZCByZXBvcnQgaG93IGl0IGlzIHdvcmtpbmcuCj4+Pj4+Pgo+Pj4+PiBVYnVudHUgKDUuMTUu MC00My1nZW5lcmljKSBzZWVtcyB0byBiZSB3b3JraW5nIGluIHRoZSBzYW1lIHdheSAKPj4+Pj4g Z2VuZXJhdGluZyBoaWdoZXIgbG9hZCBhZnRlciBleGVjdXRpbmcgImlwIGxpbmsgc2V0IGVucDFz MCB1cCIuCj4+Pj4KPj4+PiBUaGF0IGlzIGdvb2QgdG8ga25vdy4gKElzIHRoaXMgVWJ1bnR1IDIy LjA0PykgV2hhdCBhYm91dCBVYnVudHUgCj4+Pj4gMjAuMDQgd2l0aCBMaW51eCA1LjQsIGFuZCBV YnVudHUgMTguMDQgd2l0aCA0LjE1Pwo+Pj4+Cj4+Pj4gQW55d2F5LCBJIHRoaW5rLCB5b3Ugd29u 4oCZdCBjb21lIGFyb3VuZCBiaXNlY3RpbmcuIEFub3RoZXIgaGludCwgbWFrZSAKPj4+PiBzdXJl IHRoYXQgeW91IGNhbiBidWlsZCBhIDQuOSBMaW51eCBrZXJuZWwgeW91cnNlbGYsIHRoYXQgZG9l cyBub3QgCj4+Pj4gZXhoaWJpdCB0aGF0IGlzc3VlLgo+Pj4+Cj4+PiBUaGF0YHMgcmlnaHQsIGl0 IGlzIDIyLjA0LiBJIGRvbmB0IGhhdmUgdG8gYnVpbGQgaXQuIFN0YW5kYXJkIGtlcm5lbCAKPj4+ IExpbnV4IDQuOS4wLTYtYW1kNjQgZnJvbSBEZWJpYW4gOS43IHdvcmtlZCB3aXRob3V0IHByb2Js ZW1zIGZvciBwYXN0IAo+Pj4gNCB5ZWFycy4KPj4KPj4gSWYgbm9ib2R5IG9mIHRoZSBkZXZlbG9w ZXJzL21haW50YWluZXJzIGlzIGdvaW5nIHRvIHN0ZXAgdXAsIHlvdSBhcmUgCj4+IG9uIHlvdXIg b3duLiBBZ2FpbiwgYXMgeW91IGNhbiByZXByb2R1Y2UgdGhpcyBlYXNpbHksIHRoZSBmYXN0ZXN0 IHdheSAKPj4gaXMgdG8gYmlzZWN0IHRoZSBpc3N1ZSwgd2hpY2ggeW91IGNhbiBkbyBvbiB5b3Vy IG93bi4KPiAKPiBIb3cgY2FuIEkgaW52ZXN0aWdhdGUgdGhhdCBmdXJ0aGVyPwoKSSByZXBlYXQg bXlzZWxmLCBwbGVhc2UgYmlzZWN0IHRoZSBpc3N1ZS4gSXTigJlzIHRoZSBmYXN0ZXN0IHdheS4K Cj4gSSB0aG91Z2h0IGFib3V0IHRyeWluZyB0byBjaGFuZ2Ugc29tZSAKPiBvZiB0aGUgcGFyYW1l dGVycyByZWxhdGVkIHRvIGl4Z2JlIGRyaXZlciBhbmQgb2JzZXJ2ZSBpZiBhbnl0aGluZyBpcyAK PiBjaGFuZ2luZywgYnV0IHdoZW4gSSBhbSB0cnlpbmcgdG8gZG86Cj4gCj4gc3VkbyBtb2Rwcm9i ZSBpeGdiZSBJbnRNb2RlPTAKPiAKPiBJIGdldCB0aGUgZm9sbG93aW5nIGVycm9yIGluIHRoZSBk bWVzZzoKPiAKPiBbIDIxMzcuMzI0NzcyXSBpeGdiZTogdW5rbm93biBwYXJhbWV0ZXIgJ0ludE1v ZGUnIGlnbm9yZWQgPDw8PDw8PDw8Cgpb4oCmXQoKYG1vZGluZm8gaXhnYmVgIHNob3dzIHRoZSBz dXBwb3J0ZWQgcGFyYW1ldGVycy4KCgpLaW5kIHJlZ2FyZHMsCgpQYXVsCgoKUFM6IElmIHlvdSBu ZWVkIGhlbHAgYmlzZWN0aW5nLCBwbGVhc2UgYXNrLiBPdGhlcndpc2UsIEkgYW0gb3V0IG9mIHRo aXMgCnRocmVhZC4KCgo+Pj4+Pj4+IFsxXTogaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnLwo+ Pj4+Pj4+IFsyXTogaHR0cHM6Ly9rZXJuZWwudWJ1bnR1LmNvbS9+a2VybmVsLXBwYS9tYWlubGlu ZS8KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt d2lyZWQtbGFuIG1haWxpbmcgbGlzdApJbnRlbC13aXJlZC1sYW5Ab3N1b3NsLm9yZwpodHRwczov L2xpc3RzLm9zdW9zbC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC13aXJlZC1sYW4K