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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95DF3C74A5B for ; Fri, 17 Mar 2023 14:29:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231200AbjCQO3T (ORCPT ); Fri, 17 Mar 2023 10:29:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49654 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230079AbjCQO3S (ORCPT ); Fri, 17 Mar 2023 10:29:18 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5D747D9C; Fri, 17 Mar 2023 07:29:12 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 6B8F66226B; Fri, 17 Mar 2023 14:29:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 56996C433EF; Fri, 17 Mar 2023 14:29:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1679063351; bh=D3V8W1v72x8mIyG6Ens123mTd1y9kzSOKpYqPHAW7PI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=q+s8F3AifNO8AjIPQqst3WN0ZV1pQbk/u2d2LqRK7UFa6YE2z1vkD54OjQTS+4ZOI DyuO0zIZp/owksQ8P7mMM3T6NxuA2gXorXMTxGOqcGJxLXc9ngARElCL+kjL8Mikxh I4Fhz96bxyYMzTDzDJSZUym5APnit9NfuQ8NXW8AZWpkMcBHvQ2vkCEP7VHweXa4qx S4zpmyUnKgxiLtwMmwLerzXULgndMvbe3YxP9o613kl1UkTluLEFrGxk9lZN/GdmjU Zeo0Kkasggy+uKf3s1v1/G04wpocS/xU0YoFr8UaSCVpfgzn8hpdcAcEoNo9P0N6bO wxJmhbdiEyRdw== Date: Fri, 17 Mar 2023 15:29:03 +0100 From: Marek =?UTF-8?B?QmVow7pu?= To: Andrew Lunn Cc: Christian Marangi , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Heiner Kallweit , Russell King , Gregory Clement , Sebastian Hesselbarth , Andy Gross , Bjorn Andersson , Konrad Dybcio , John Crispin , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, Lee Jones , linux-leds@vger.kernel.org Subject: Re: [net-next PATCH v4 04/14] net: phy: Add a binding for PHY LEDs Message-ID: <20230317152903.5103f2c4@dellmb> In-Reply-To: <6cf03603-2a8e-4c08-a61b-aef164a0f5d9@lunn.ch> References: <20230317023125.486-1-ansuelsmth@gmail.com> <20230317023125.486-5-ansuelsmth@gmail.com> <20230317084519.12d3587a@dellmb> <6cf03603-2a8e-4c08-a61b-aef164a0f5d9@lunn.ch> X-Mailer: Claws Mail 4.1.0 (GTK 3.24.35; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On Fri, 17 Mar 2023 14:55:11 +0100 Andrew Lunn wrote: > On Fri, Mar 17, 2023 at 08:45:19AM +0100, Marek Beh=C3=BAn wrote: > > On Fri, 17 Mar 2023 03:31:15 +0100 > > Christian Marangi wrote: > > =20 > > > + cdev->brightness_set_blocking =3D phy_led_set_brightness; > > > + cdev->max_brightness =3D 1; > > > + init_data.devicename =3D dev_name(&phydev->mdio.dev); > > > + init_data.fwnode =3D of_fwnode_handle(led); > > > + > > > + err =3D devm_led_classdev_register_ext(dev, cdev, &init_data); =20 > >=20 > > Since init_data.devname_mandatory is false, devicename is ignored. > > Which is probably good, becuse the device name of a mdio device is > > often ugly, taken from devicetree or switch drivers, for example: > > f1072004.mdio-mii > > fixed-0 > > mv88e6xxx-1 > > So either don't fill devicename or use devname_mandatory (and maybe > > fill devicename with something less ugly, but I guess if we don't have > > much choice if we want to keep persistent names). > >=20 > > Without devname_mandatory, the name of the LED classdev will be of the > > form > > color:function[-function-enumerator], > > i.e. > > green:lan > > amber:lan-1 > >=20 > > With multiple switch ethenret ports all having LAN function, it is > > worth noting that the function enumerator must be explicitly used in the > > devicetree, otherwise multiple LEDs will be registered under the same > > name, and the LED subsystem will add a number at the and of the name > > (function led_classdev_next_name), resulting in names > > green:lan > > green:lan_1 > > green:lan_2 > > ... =20 >=20 > I'm testing on a Marvell RDK, with limited LEDs. It has one LED on the > front port to represent the WAN port. The DT patch is at the end of > the series. With that, i end up with: >=20 > root@370rd:/sys/class/leds# ls -l > total 0 > lrwxrwxrwx 1 root root 0 Mar 17 01:10 f1072004.mdio-mii:00:WAN -> ../../d= evices/platform/soc/soc:interna > l-regs/f1072004.mdio/mdio_bus/f1072004.mdio-mii/f1072004.mdio-mii:00/leds= /f1072004.mdio-mii:00:WAN >=20 > I also have: >=20 > root@370rd:/sys/class/net/eth0/phydev/leds# ls > f1072004.mdio-mii:00:WAN Hmm, yes I see. If label is specified, devicename is used even if devname_mandatory is false. > f1072004.mdio-mii:00: is not nice, but it is unique to a netdev. The > last part then comes from the label property. Since there is only one > LED, i went with what the port is intended to be used as. If there had > been more LEDs, i would of probably used labels like "LINK" and > "ACTIVITY", since that is often what they reset default > to. Alternatively, you could names the "Left" and "Right", which does > suggest they can be given any function. >=20 > I don't actually think the name is too important, so long as it is > unique. You are going to find it via /sys/class/net. MAC LEDs should > be /sys/class/net/eth42/leds, and PHY LEDs will be > /sys/class/net/phydev/leds. Maybe the name may not be that important from the perspective of a user who just wants to find the LED for a given phy, yes, but the proposal of how LED classdev should be named was done in good faith and accepted years ago. The documentation still defines the name format and until that part of documenation is changed, I think we should at least try to follow it. Also, the label DT property has been deprecated for LEDs. IMO it should be removed from that last patch of this series. > It has been discussed in the past to either extend ethtool to > understand this, or write a new little tool to make it easier to > manipulate these LEDs. Yes, and this would solve the problem for a user who wants to change the behaviour of a LED for a given PHY. But a user who wants to list all available LEDs by listing /sys/class/leds can also retrieve a nice list of names that make sense, if the documented format is followed. Marek 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.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 ED292C6FD1D for ; Fri, 17 Mar 2023 14:30:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=SjOq3BgWLgEgWKPCR5zmrbPeQVEDut2NtpMZ31hkBpc=; b=igmbWighdf84ez +vQdP9NJjdvbUVc9G9DV0Ez8pbG6omgDpFUBtDcb7ljhZ+ERrpJt8QXAxMSG4jPS3sMk1RdGuTi5y XRV0w8+QjwOVTVpOwsnz1AUI7ifGvPydVM/IQDcS9ZI+PIZsixEUpXipSiYMOYHKvelKCS8a2PfoJ 41paauvN2IcDXTNKyPnLYcnWolgOkO/ra9OLhJ5MWNoFDxoyXPHobeBeJZteE8dYGeVYnN6ZOqtjS RLZawxv9zOv3nh6MfHHwfh6SXIkXP/RUVhPWLlryvZ5+UWCt/8ot9DZ/sUiY7sCqQBXDSM9xRFfO2 cp7BiIw+CfF5MGLCy29Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pdB53-002Skr-2s; Fri, 17 Mar 2023 14:29:17 +0000 Received: from ams.source.kernel.org ([145.40.68.75]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pdB50-002Sjm-3D for linux-arm-kernel@lists.infradead.org; Fri, 17 Mar 2023 14:29:16 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 48EF0B825D1; Fri, 17 Mar 2023 14:29:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 56996C433EF; Fri, 17 Mar 2023 14:29:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1679063351; bh=D3V8W1v72x8mIyG6Ens123mTd1y9kzSOKpYqPHAW7PI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=q+s8F3AifNO8AjIPQqst3WN0ZV1pQbk/u2d2LqRK7UFa6YE2z1vkD54OjQTS+4ZOI DyuO0zIZp/owksQ8P7mMM3T6NxuA2gXorXMTxGOqcGJxLXc9ngARElCL+kjL8Mikxh I4Fhz96bxyYMzTDzDJSZUym5APnit9NfuQ8NXW8AZWpkMcBHvQ2vkCEP7VHweXa4qx S4zpmyUnKgxiLtwMmwLerzXULgndMvbe3YxP9o613kl1UkTluLEFrGxk9lZN/GdmjU Zeo0Kkasggy+uKf3s1v1/G04wpocS/xU0YoFr8UaSCVpfgzn8hpdcAcEoNo9P0N6bO wxJmhbdiEyRdw== Date: Fri, 17 Mar 2023 15:29:03 +0100 From: Marek =?UTF-8?B?QmVow7pu?= To: Andrew Lunn Cc: Christian Marangi , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Heiner Kallweit , Russell King , Gregory Clement , Sebastian Hesselbarth , Andy Gross , Bjorn Andersson , Konrad Dybcio , John Crispin , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, Lee Jones , linux-leds@vger.kernel.org Subject: Re: [net-next PATCH v4 04/14] net: phy: Add a binding for PHY LEDs Message-ID: <20230317152903.5103f2c4@dellmb> In-Reply-To: <6cf03603-2a8e-4c08-a61b-aef164a0f5d9@lunn.ch> References: <20230317023125.486-1-ansuelsmth@gmail.com> <20230317023125.486-5-ansuelsmth@gmail.com> <20230317084519.12d3587a@dellmb> <6cf03603-2a8e-4c08-a61b-aef164a0f5d9@lunn.ch> X-Mailer: Claws Mail 4.1.0 (GTK 3.24.35; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230317_072915_325226_4D8A68B9 X-CRM114-Status: GOOD ( 37.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCAxNyBNYXIgMjAyMyAxNDo1NToxMSArMDEwMApBbmRyZXcgTHVubiA8YW5kcmV3QGx1 bm4uY2g+IHdyb3RlOgoKPiBPbiBGcmksIE1hciAxNywgMjAyMyBhdCAwODo0NToxOUFNICswMTAw LCBNYXJlayBCZWjDum4gd3JvdGU6Cj4gPiBPbiBGcmksIDE3IE1hciAyMDIzIDAzOjMxOjE1ICsw MTAwCj4gPiBDaHJpc3RpYW4gTWFyYW5naSA8YW5zdWVsc210aEBnbWFpbC5jb20+IHdyb3RlOgo+ ID4gICAKPiA+ID4gKwljZGV2LT5icmlnaHRuZXNzX3NldF9ibG9ja2luZyA9IHBoeV9sZWRfc2V0 X2JyaWdodG5lc3M7Cj4gPiA+ICsJY2Rldi0+bWF4X2JyaWdodG5lc3MgPSAxOwo+ID4gPiArCWlu aXRfZGF0YS5kZXZpY2VuYW1lID0gZGV2X25hbWUoJnBoeWRldi0+bWRpby5kZXYpOwo+ID4gPiAr CWluaXRfZGF0YS5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKGxlZCk7Cj4gPiA+ICsKPiA+ID4g KwllcnIgPSBkZXZtX2xlZF9jbGFzc2Rldl9yZWdpc3Rlcl9leHQoZGV2LCBjZGV2LCAmaW5pdF9k YXRhKTsgIAo+ID4gCj4gPiBTaW5jZSBpbml0X2RhdGEuZGV2bmFtZV9tYW5kYXRvcnkgaXMgZmFs c2UsIGRldmljZW5hbWUgaXMgaWdub3JlZC4KPiA+IFdoaWNoIGlzIHByb2JhYmx5IGdvb2QsIGJl Y3VzZSB0aGUgZGV2aWNlIG5hbWUgb2YgYSBtZGlvIGRldmljZSBpcwo+ID4gb2Z0ZW4gdWdseSwg dGFrZW4gZnJvbSBkZXZpY2V0cmVlIG9yIHN3aXRjaCBkcml2ZXJzLCBmb3IgZXhhbXBsZToKPiA+ ICAgZjEwNzIwMDQubWRpby1taWkKPiA+ICAgZml4ZWQtMAo+ID4gICBtdjg4ZTZ4eHgtMQo+ID4g U28gZWl0aGVyIGRvbid0IGZpbGwgZGV2aWNlbmFtZSBvciB1c2UgZGV2bmFtZV9tYW5kYXRvcnkg KGFuZCBtYXliZQo+ID4gZmlsbCBkZXZpY2VuYW1lIHdpdGggc29tZXRoaW5nIGxlc3MgdWdseSwg YnV0IEkgZ3Vlc3MgaWYgd2UgZG9uJ3QgaGF2ZQo+ID4gbXVjaCBjaG9pY2UgaWYgd2Ugd2FudCB0 byBrZWVwIHBlcnNpc3RlbnQgbmFtZXMpLgo+ID4gCj4gPiBXaXRob3V0IGRldm5hbWVfbWFuZGF0 b3J5LCB0aGUgbmFtZSBvZiB0aGUgTEVEIGNsYXNzZGV2IHdpbGwgYmUgb2YgdGhlCj4gPiBmb3Jt Cj4gPiAgIGNvbG9yOmZ1bmN0aW9uWy1mdW5jdGlvbi1lbnVtZXJhdG9yXSwKPiA+IGkuZS4KPiA+ ICAgZ3JlZW46bGFuCj4gPiAgIGFtYmVyOmxhbi0xCj4gPiAKPiA+IFdpdGggbXVsdGlwbGUgc3dp dGNoIGV0aGVucmV0IHBvcnRzIGFsbCBoYXZpbmcgTEFOIGZ1bmN0aW9uLCBpdCBpcwo+ID4gd29y dGggbm90aW5nIHRoYXQgdGhlIGZ1bmN0aW9uIGVudW1lcmF0b3IgbXVzdCBiZSBleHBsaWNpdGx5 IHVzZWQgaW4gdGhlCj4gPiBkZXZpY2V0cmVlLCBvdGhlcndpc2UgbXVsdGlwbGUgTEVEcyB3aWxs IGJlIHJlZ2lzdGVyZWQgdW5kZXIgdGhlIHNhbWUKPiA+IG5hbWUsIGFuZCB0aGUgTEVEIHN1YnN5 c3RlbSB3aWxsIGFkZCBhIG51bWJlciBhdCB0aGUgYW5kIG9mIHRoZSBuYW1lCj4gPiAoZnVuY3Rp b24gbGVkX2NsYXNzZGV2X25leHRfbmFtZSksIHJlc3VsdGluZyBpbiBuYW1lcwo+ID4gICBncmVl bjpsYW4KPiA+ICAgZ3JlZW46bGFuXzEKPiA+ICAgZ3JlZW46bGFuXzIKPiA+ICAgLi4uICAKPiAK PiBJJ20gdGVzdGluZyBvbiBhIE1hcnZlbGwgUkRLLCB3aXRoIGxpbWl0ZWQgTEVEcy4gSXQgaGFz IG9uZSBMRUQgb24gdGhlCj4gZnJvbnQgcG9ydCB0byByZXByZXNlbnQgdGhlIFdBTiBwb3J0LiBU aGUgRFQgcGF0Y2ggaXMgYXQgdGhlIGVuZCBvZgo+IHRoZSBzZXJpZXMuIFdpdGggdGhhdCwgaSBl bmQgdXAgd2l0aDoKPiAKPiByb290QDM3MHJkOi9zeXMvY2xhc3MvbGVkcyMgbHMgLWwKPiB0b3Rh bCAwCj4gbHJ3eHJ3eHJ3eCAxIHJvb3Qgcm9vdCAwIE1hciAxNyAwMToxMCBmMTA3MjAwNC5tZGlv LW1paTowMDpXQU4gLT4gLi4vLi4vZGV2aWNlcy9wbGF0Zm9ybS9zb2Mvc29jOmludGVybmEKPiBs LXJlZ3MvZjEwNzIwMDQubWRpby9tZGlvX2J1cy9mMTA3MjAwNC5tZGlvLW1paS9mMTA3MjAwNC5t ZGlvLW1paTowMC9sZWRzL2YxMDcyMDA0Lm1kaW8tbWlpOjAwOldBTgo+IAo+IEkgYWxzbyBoYXZl Ogo+IAo+IHJvb3RAMzcwcmQ6L3N5cy9jbGFzcy9uZXQvZXRoMC9waHlkZXYvbGVkcyMgbHMKPiBm MTA3MjAwNC5tZGlvLW1paTowMDpXQU4KCkhtbSwgeWVzIEkgc2VlLiAgSWYgbGFiZWwgaXMgc3Bl Y2lmaWVkLCBkZXZpY2VuYW1lIGlzIHVzZWQgZXZlbiBpZgpkZXZuYW1lX21hbmRhdG9yeSBpcyBm YWxzZS4KCj4gZjEwNzIwMDQubWRpby1taWk6MDA6IGlzIG5vdCBuaWNlLCBidXQgaXQgaXMgdW5p cXVlIHRvIGEgbmV0ZGV2LiBUaGUKPiBsYXN0IHBhcnQgdGhlbiBjb21lcyBmcm9tIHRoZSBsYWJl bCBwcm9wZXJ0eS4gU2luY2UgdGhlcmUgaXMgb25seSBvbmUKPiBMRUQsIGkgd2VudCB3aXRoIHdo YXQgdGhlIHBvcnQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcy4gSWYgdGhlcmUgaGFkCj4gYmVl biBtb3JlIExFRHMsIGkgd291bGQgb2YgcHJvYmFibHkgdXNlZCBsYWJlbHMgbGlrZSAiTElOSyIg YW5kCj4gIkFDVElWSVRZIiwgc2luY2UgdGhhdCBpcyBvZnRlbiB3aGF0IHRoZXkgcmVzZXQgZGVm YXVsdAo+IHRvLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgbmFtZXMgdGhlICJMZWZ0IiBhbmQg IlJpZ2h0Iiwgd2hpY2ggZG9lcwo+IHN1Z2dlc3QgdGhleSBjYW4gYmUgZ2l2ZW4gYW55IGZ1bmN0 aW9uLgo+IAo+IEkgZG9uJ3QgYWN0dWFsbHkgdGhpbmsgdGhlIG5hbWUgaXMgdG9vIGltcG9ydGFu dCwgc28gbG9uZyBhcyBpdCBpcwo+IHVuaXF1ZS4gWW91IGFyZSBnb2luZyB0byBmaW5kIGl0IHZp YSAvc3lzL2NsYXNzL25ldC4gTUFDIExFRHMgc2hvdWxkCj4gYmUgL3N5cy9jbGFzcy9uZXQvZXRo NDIvbGVkcywgYW5kIFBIWSBMRURzIHdpbGwgYmUKPiAvc3lzL2NsYXNzL25ldC9waHlkZXYvbGVk cy4KCk1heWJlIHRoZSBuYW1lIG1heSBub3QgYmUgdGhhdCBpbXBvcnRhbnQgZnJvbSB0aGUgcGVy c3BlY3RpdmUgb2YgYSB1c2VyCndobyBqdXN0IHdhbnRzIHRvIGZpbmQgdGhlIExFRCBmb3IgYSBn aXZlbiBwaHksIHllcywgYnV0IHRoZQpwcm9wb3NhbCBvZiBob3cgTEVEIGNsYXNzZGV2IHNob3Vs ZCBiZSBuYW1lZCB3YXMgZG9uZSBpbiBnb29kIGZhaXRoCmFuZCBhY2NlcHRlZCB5ZWFycyBhZ28u IFRoZSBkb2N1bWVudGF0aW9uIHN0aWxsIGRlZmluZXMgdGhlIG5hbWUgZm9ybWF0CmFuZCB1bnRp bCB0aGF0IHBhcnQgb2YgZG9jdW1lbmF0aW9uIGlzIGNoYW5nZWQsIEkgdGhpbmsgd2Ugc2hvdWxk IGF0CmxlYXN0IHRyeSB0byBmb2xsb3cgaXQuCgpBbHNvLCB0aGUgbGFiZWwgRFQgcHJvcGVydHkg aGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgTEVEcy4gSU1PIGl0IHNob3VsZApiZSByZW1vdmVkIGZy b20gdGhhdCBsYXN0IHBhdGNoIG9mIHRoaXMgc2VyaWVzLgoKPiBJdCBoYXMgYmVlbiBkaXNjdXNz ZWQgaW4gdGhlIHBhc3QgdG8gZWl0aGVyIGV4dGVuZCBldGh0b29sIHRvCj4gdW5kZXJzdGFuZCB0 aGlzLCBvciB3cml0ZSBhIG5ldyBsaXR0bGUgdG9vbCB0byBtYWtlIGl0IGVhc2llciB0bwo+IG1h bmlwdWxhdGUgdGhlc2UgTEVEcy4KClllcywgYW5kIHRoaXMgd291bGQgc29sdmUgdGhlIHByb2Js ZW0gZm9yIGEgdXNlciB3aG8gd2FudHMgdG8gY2hhbmdlCnRoZSBiZWhhdmlvdXIgb2YgYSBMRUQg Zm9yIGEgZ2l2ZW4gUEhZLiBCdXQgYSB1c2VyIHdobyB3YW50cyB0byBsaXN0CmFsbCBhdmFpbGFi bGUgTEVEcyBieSBsaXN0aW5nIC9zeXMvY2xhc3MvbGVkcyBjYW4gYWxzbyByZXRyaWV2ZSBhIG5p Y2UKbGlzdCBvZiBuYW1lcyB0aGF0IG1ha2Ugc2Vuc2UsIGlmIHRoZSBkb2N1bWVudGVkIGZvcm1h dCBpcyBmb2xsb3dlZC4KCk1hcmVrCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2Vy bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==