From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B00CF6ABA for ; Thu, 25 Jan 2024 02:51:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706151091; cv=none; b=YlIIyuRSDJiuBgar/h14oTiCyZiCevBiNKc6D/flvEnqZYskgGnXRhkpK5twNzwx40KhMiWxF2ltNavfOOzKsa4nvJ0iwRPZQR8JG8y9V2EmmXqJ6muCNATyptRi9hADuDGn7bCKHDZK5Z343xv3o43B04g679ptahqdmrHQ/9M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706151091; c=relaxed/simple; bh=OWHCaxty9B+6FiBjuIuGiPARETmu69uFU32tT9X+OM0=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=E+VnOLjXFjcBamzlQyhdyjL0STKl8F7vgK0jMQ+WVTl65c4yCkxhN9/eOL1zFn5acCLmfxvQConAMmnUHhsoPhn3kRm5H45qOJ7uHqojMjMx1a+lnsc3saWQJNmYZtqi1JLUOyVL4BxYz9HTLiAX0CZEKWOS6GVVmEGFLmCO5wQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GTC3uz0k; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GTC3uz0k" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-339237092dcso4447851f8f.3 for ; Wed, 24 Jan 2024 18:51:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706151088; x=1706755888; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=brWuhPv08m5IHqo2Fx2aVHV5rCfwWbI9NZG9MaN0KwU=; b=GTC3uz0kqt39ZF1MuX14BG61BqFam9CWnJ1hVsFrEp/c4HYTO98VpKtX2xRBwVz3Cm jQlkqthFa0MnGJKYJi5noDUag5sN7xsy6Xi2mfJzh0QgMYSOAGcAYYKuWBGUQTMEFa7/ KKyYOWdPbsfZcDYfntTFYXXQZWIIDy0emnfWOA7aUK3tqYYxVC0lBAp/Iz9FkVr93IOk YA36Hma/IZZ+LPNvjJr/bv4T7Lsri8TX3W/Dt44vQxryAo4+41GhHOtXl2VDpd0STaB2 FnS52nLCwsWA7bhtOWhdMgxhDLunaelolH7dY8Fu//gCXRbIp1ahwjAx1FcR4DQ3dOdW lF2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706151088; x=1706755888; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=brWuhPv08m5IHqo2Fx2aVHV5rCfwWbI9NZG9MaN0KwU=; b=Ury5QndZzeMUH0kno4hWYYFes4XmGGoIWERlgj8VAzExDrXB3LYszWmsX+2k9lClTj iKZRVbWnjrDI6uGafeB6XFROrPxLXZykVnrZfbCYmxbRuWIW5XA+sQy+sdC4/3jmvEz7 AQBPHY4zA7BCGKHoRDmQMzJZBPoXD/78/4tF7gcVhZwdRJ1Swx2xKAlFZ8Jyhz+egMtN BS47r1Fa1ZuKcpuODKN/1rcUFfBW/O0QbFFvlbYMrwRKT8ObWERkXPZk9DQhbAcbBLBU D3XOAn+/phgwSbF97YhAc7apbKvxqSIMb/CxkGQCaIq9YbITb/Gq02wbJLDH76SeLudl XDrw== X-Gm-Message-State: AOJu0YyqqUX6a/vIVcuVmQ7frBtxBJQ3rZCuO5ImvMtJgDJg9gp6nj43 uB0IZzMILhxHHNQhmmnY9wZwgOglGTgsnyWo8eq12AmsaUHY6/zw0xf3OlmerDKdN/tXU4oD7G1 X3iPilxW6ayBOGYlmgbTqXOSVNBM= X-Google-Smtp-Source: AGHT+IF4VAHiiFinwZ6qaHTmt83F1jaKQA1bfTfDoTM/+zm9H1I/M2FBjrQ5st+f4+BQZl7+SsJ0C8QCgzuOh8UaIPQ= X-Received: by 2002:adf:f549:0:b0:337:2994:15b1 with SMTP id j9-20020adff549000000b00337299415b1mr106934wrp.135.1706151087602; Wed, 24 Jan 2024 18:51:27 -0800 (PST) Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <1b5d01da4e1b$95506b50$bff141f0$@gmail.com> <20240123213100.GA221838@maniforge> <1e9101da4e44$e24a1720$a6de4560$@gmail.com> <20240123215214.GC221862@maniforge> In-Reply-To: <20240123215214.GC221862@maniforge> From: Alexei Starovoitov Date: Wed, 24 Jan 2024 18:51:16 -0800 Message-ID: Subject: Re: [Bpf] Standardizing BPF assembly language? To: David Vernet Cc: Dave Thaler , bpf@ietf.org, bpf , "Jose E. Marchesi" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jan 23, 2024 at 1:52=E2=80=AFPM David Vernet w= rote: > > > > A second question would be, which dialect(s) to standardize. Jose'= s > > > > link above argues that the second dialect should be the one > > > > standardized (tools are free to support multiple dialects for > > > > backwards compat if they want). See the link for rationale. > > > > > > My recollection was that the outcome of that discussion is that we we= re > > going > > > to continue to support both. If we wanted to standardize, I have a ha= rd > > time > > > seeing any other way other than to standardize both dialects unless > > there's > > > been a significant change in sentiment since LSFMM. > > > > If "standardize both", does that mean neither is mandatory and each too= l > > is free to pick one or the other? And would the IANA registry require = a > > document > > adding any new instructions to specify the assembly in both dialects? > > Well, if we're standardizing on both, then yes I think it would be > mandatory for a tool to support both, and I think instructions would > require assembly for both dialects. I think it's obvious that there is no way we will add gcc's flavor of asm to kernel and llvm. > Practically speaking that's already > what's happening, no? Both dialects are already pervasive, They are not. There are thousands of lines of asm written in pseudo-c used in production applications and probably only ubpf/tests and gcc/tests in that other asm, since gcc bpf support is not yet in the released gcc ver= sion. There is also this asm flavor: https://github.com/Xilinx-CNS/ebpf_asm Which is different from pseudo-c and ubpf asm. I don't think asm syntax should be an IETF draft. From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.ietf.org (mail.ietf.org [50.223.129.194]) (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 DD64B566A for ; Thu, 25 Jan 2024 02:51:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=50.223.129.194 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706151094; cv=none; b=Mol/psLkp3wGHbtfisMp8A3MYK7hNhF6mWnGBY8KAtuIBHcz6K5MeLp31qm4AvS6nO4iLwA5uR4A++kHkp55HsAvl66f6GCjGvXoOYwy5MKbZcAji14PmF+doYMfJ8xIc56J0fWdl1D5rM/J14goae0aS3wG8dKWUHFA5PiTvps= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706151094; c=relaxed/simple; bh=4Stp0nJTEzvexXn6zF/VXscWHdf+39fRPF5CoX/xmDc=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:To:Cc: Subject:Content-Type; b=IGxFYJBdI0OR8d65rsMVqaLHv016ICb+SP3IePW7ug/kRDOsbQEBtWDinXiRoP/v4H6Q/VdGfD9P+l/PVCw6ClxjlWjX+ANn3YH0FVH6Z6Q5ZeydjyqhkrOZakE+7O2TpfqXiaz6feIdiw7CD8lyHE+i90bqkLAUwY9Vwtf0yx0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=ietf.org; dkim=pass (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b=wo3ZKDsK; dkim=pass (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b=wo3ZKDsK; dkim=fail (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YxOhgXCb reason="signature verification failed"; arc=none smtp.client-ip=50.223.129.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ietf.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b="wo3ZKDsK"; dkim=pass (1024-bit key) header.d=ietf.org header.i=@ietf.org header.b="wo3ZKDsK"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YxOhgXCb" Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id B8201C1516EB for ; Wed, 24 Jan 2024 18:51:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1706151091; bh=4Stp0nJTEzvexXn6zF/VXscWHdf+39fRPF5CoX/xmDc=; h=References:In-Reply-To:From:Date:To:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe; b=wo3ZKDsK9ZS4/qVH+fIGzglhovyu5wewQ6s0EAC+5X2komnCXQglZI67H4iuHg3sJ n1/IJ6c2J8YRVbms4Hn8rgYXRuIM4jY2gqk7vN8f4vlLeDwi2r/oeMUxuvc2EznQvv z4bqsLY7zDD1dO5F/9mRN0dA+keHmOuiapAaTc7w= X-Mailbox-Line: From bpf-bounces@ietf.org Wed Jan 24 18:51:31 2024 Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id 89B84C14F71B; Wed, 24 Jan 2024 18:51:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1706151091; bh=4Stp0nJTEzvexXn6zF/VXscWHdf+39fRPF5CoX/xmDc=; h=References:In-Reply-To:From:Date:To:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe; b=wo3ZKDsK9ZS4/qVH+fIGzglhovyu5wewQ6s0EAC+5X2komnCXQglZI67H4iuHg3sJ n1/IJ6c2J8YRVbms4Hn8rgYXRuIM4jY2gqk7vN8f4vlLeDwi2r/oeMUxuvc2EznQvv z4bqsLY7zDD1dO5F/9mRN0dA+keHmOuiapAaTc7w= Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8BC2BC14F710 for ; Wed, 24 Jan 2024 18:51:30 -0800 (PST) X-Virus-Scanned: amavisd-new at amsl.com X-Spam-Flag: NO X-Spam-Score: -2.108 X-Spam-Level: Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id e98ovb7eMZOG for ; Wed, 24 Jan 2024 18:51:29 -0800 (PST) Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) (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) by ietfa.amsl.com (Postfix) with ESMTPS id EC240C14F6F3 for ; Wed, 24 Jan 2024 18:51:29 -0800 (PST) Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3394ca0c874so1238746f8f.2 for ; Wed, 24 Jan 2024 18:51:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706151088; x=1706755888; darn=ietf.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=brWuhPv08m5IHqo2Fx2aVHV5rCfwWbI9NZG9MaN0KwU=; b=YxOhgXCbvASBtV0ObvMVJPKDkE0K85oa/mxCg0iSN9eVav9UT+A10eAHq/uoo7uK0p 01Z1PQMzjLrskgyoTB8EHZXEJ1j1iIC5sIM9LO0HrL08Ap6aZMXahzQEW0J7xcX1TF4U hcs82M+n096mimlr3M5G4x340yYHQiUpwU+0xhTW99WUToR2TirVSwb/ej+5ICe2hcuZ 2mfvQ9k3rW6mv8Jb5xM19bP1UmJO6y3Hj7udLHvzM5jBI/i5W+UYCRYbmA//OaMnBWtM pGgId/10Ga0b8skH3pssccfOu7a8IPHbO4tG2Wx6SfCUgEkGsBmx+RKhTjTHbjjbPDFs ULdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706151088; x=1706755888; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=brWuhPv08m5IHqo2Fx2aVHV5rCfwWbI9NZG9MaN0KwU=; b=namYuZtJsF6CSOcjDhViubUDjVQ2srTs3Axho6Tgv6FSqlEYuiYyjEbuFEnmMExyRK lXwmQKBzQh/cEjf40jawX7a7DqahzxZ5rO6u5EHrbA9ibsfVGcE0I5l1vlYKWEpBmXMp s/gF7xJl7i9ueqHtwOS0zVnLgKhulr/58K41tw5ogjahb23/kLW2MSZG0sIMbwqgg9Dn xdM5Blga9LY1IJqej+Q5Y+3ZYAfxY+qQgfFhMGzgY4+yvx6TLgXnAhGHYnsgU3Q4fKoT QwWQZqL+RKI8SmtvbiX1BuhRSyNAONoYENjPzqAKC3sO9R+GS+9qmKGjCFuSCY3yR72b WejA== X-Gm-Message-State: AOJu0Yz0i/ak0N1Di1mmx+vnZ5y6NKgOapJ85WvfsiW2F1jFJCILleF0 V5ZDTA0O7aYMIdcL/jBpwvcroFVGDd2wyUqoYkO16zLrV7J/HYcHR+zO0IwjXwe66c2zEGU9HEq sJ3jJtHgF8FPGlFLHVHeU/8sCQPQ= X-Google-Smtp-Source: AGHT+IF4VAHiiFinwZ6qaHTmt83F1jaKQA1bfTfDoTM/+zm9H1I/M2FBjrQ5st+f4+BQZl7+SsJ0C8QCgzuOh8UaIPQ= X-Received: by 2002:adf:f549:0:b0:337:2994:15b1 with SMTP id j9-20020adff549000000b00337299415b1mr106934wrp.135.1706151087602; Wed, 24 Jan 2024 18:51:27 -0800 (PST) Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <1b5d01da4e1b$95506b50$bff141f0$@gmail.com> <20240123213100.GA221838@maniforge> <1e9101da4e44$e24a1720$a6de4560$@gmail.com> <20240123215214.GC221862@maniforge> In-Reply-To: <20240123215214.GC221862@maniforge> From: Alexei Starovoitov Date: Wed, 24 Jan 2024 18:51:16 -0800 Message-ID: To: David Vernet Cc: Dave Thaler , bpf@ietf.org, bpf , "Jose E. Marchesi" Archived-At: Subject: Re: [Bpf] Standardizing BPF assembly language? X-BeenThere: bpf@ietf.org X-Mailman-Version: 2.1.39 Precedence: list List-Archive: List-Post: List-Help: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: bpf-bounces@ietf.org Sender: "Bpf" Message-ID: <20240125025116.T28NJEB4nz5nzRf220YLVShIk2lqZA84alAUau75Vdo@z> T24gVHVlLCBKYW4gMjMsIDIwMjQgYXQgMTo1MuKAr1BNIERhdmlkIFZlcm5ldCA8dm9pZEBtYW5p ZmF1bHQuY29tPiB3cm90ZToKPiA+ID4gPiBBIHNlY29uZCBxdWVzdGlvbiB3b3VsZCBiZSwgd2hp Y2ggZGlhbGVjdChzKSB0byBzdGFuZGFyZGl6ZS4gIEpvc2Uncwo+ID4gPiA+IGxpbmsgYWJvdmUg YXJndWVzIHRoYXQgdGhlIHNlY29uZCBkaWFsZWN0IHNob3VsZCBiZSB0aGUgb25lCj4gPiA+ID4g c3RhbmRhcmRpemVkICh0b29scyBhcmUgZnJlZSB0byBzdXBwb3J0IG11bHRpcGxlIGRpYWxlY3Rz IGZvcgo+ID4gPiA+IGJhY2t3YXJkcyBjb21wYXQgaWYgdGhleSB3YW50KS4gIFNlZSB0aGUgbGlu ayBmb3IgcmF0aW9uYWxlLgo+ID4gPgo+ID4gPiBNeSByZWNvbGxlY3Rpb24gd2FzIHRoYXQgdGhl IG91dGNvbWUgb2YgdGhhdCBkaXNjdXNzaW9uIGlzIHRoYXQgd2Ugd2VyZQo+ID4gZ29pbmcKPiA+ ID4gdG8gY29udGludWUgdG8gc3VwcG9ydCBib3RoLiBJZiB3ZSB3YW50ZWQgdG8gc3RhbmRhcmRp emUsIEkgaGF2ZSBhIGhhcmQKPiA+IHRpbWUKPiA+ID4gc2VlaW5nIGFueSBvdGhlciB3YXkgb3Ro ZXIgdGhhbiB0byBzdGFuZGFyZGl6ZSBib3RoIGRpYWxlY3RzIHVubGVzcwo+ID4gdGhlcmUncwo+ ID4gPiBiZWVuIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGluIHNlbnRpbWVudCBzaW5jZSBMU0ZNTS4K PiA+Cj4gPiBJZiAic3RhbmRhcmRpemUgYm90aCIsIGRvZXMgdGhhdCBtZWFuIG5laXRoZXIgaXMg bWFuZGF0b3J5IGFuZCBlYWNoIHRvb2wKPiA+IGlzIGZyZWUgdG8gcGljayBvbmUgb3IgdGhlIG90 aGVyPyAgQW5kIHdvdWxkIHRoZSBJQU5BIHJlZ2lzdHJ5IHJlcXVpcmUgYQo+ID4gZG9jdW1lbnQK PiA+IGFkZGluZyBhbnkgbmV3IGluc3RydWN0aW9ucyB0byBzcGVjaWZ5IHRoZSBhc3NlbWJseSBp biBib3RoIGRpYWxlY3RzPwo+Cj4gV2VsbCwgaWYgd2UncmUgc3RhbmRhcmRpemluZyBvbiBib3Ro LCB0aGVuIHllcyBJIHRoaW5rIGl0IHdvdWxkIGJlCj4gbWFuZGF0b3J5IGZvciBhIHRvb2wgdG8g c3VwcG9ydCBib3RoLCBhbmQgSSB0aGluayBpbnN0cnVjdGlvbnMgd291bGQKPiByZXF1aXJlIGFz c2VtYmx5IGZvciBib3RoIGRpYWxlY3RzLgoKSSB0aGluayBpdCdzIG9idmlvdXMgdGhhdCB0aGVy ZSBpcyBubyB3YXkgd2Ugd2lsbCBhZGQgZ2NjJ3MgZmxhdm9yCm9mIGFzbSB0byBrZXJuZWwgYW5k IGxsdm0uCgo+IFByYWN0aWNhbGx5IHNwZWFraW5nIHRoYXQncyBhbHJlYWR5Cj4gd2hhdCdzIGhh cHBlbmluZywgbm8/IEJvdGggZGlhbGVjdHMgYXJlIGFscmVhZHkgcGVydmFzaXZlLAoKVGhleSBh cmUgbm90LiBUaGVyZSBhcmUgdGhvdXNhbmRzIG9mIGxpbmVzIG9mIGFzbSB3cml0dGVuIGluIHBz ZXVkby1jCnVzZWQgaW4gcHJvZHVjdGlvbiBhcHBsaWNhdGlvbnMgYW5kIHByb2JhYmx5IG9ubHkg dWJwZi90ZXN0cyBhbmQgZ2NjL3Rlc3RzCmluIHRoYXQgb3RoZXIgYXNtLCBzaW5jZSBnY2MgYnBm IHN1cHBvcnQgaXMgbm90IHlldCBpbiB0aGUgcmVsZWFzZWQgZ2NjIHZlcnNpb24uCgpUaGVyZSBp cyBhbHNvIHRoaXMgYXNtIGZsYXZvcjoKaHR0cHM6Ly9naXRodWIuY29tL1hpbGlueC1DTlMvZWJw Zl9hc20KCldoaWNoIGlzIGRpZmZlcmVudCBmcm9tIHBzZXVkby1jIGFuZCB1YnBmIGFzbS4KCkkg ZG9uJ3QgdGhpbmsgYXNtIHN5bnRheCBzaG91bGQgYmUgYW4gSUVURiBkcmFmdC4KCi0tIApCcGYg bWFpbGluZyBsaXN0CkJwZkBpZXRmLm9yZwpodHRwczovL3d3dy5pZXRmLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2JwZgo=