From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver= Authentication-Results: plum; dmarc=fail (p=none dis=none) header.from=polytechnique.org Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=FQjBZRnE; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=polytechnique.org header.i=@polytechnique.org header.a=rsa-sha256 header.s=svoboda header.b=ETYjiqIq; dkim-atps=neutral Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id C3DFDB80123 for ; Tue, 6 Aug 2024 10:00:44 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:to:date:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=19W1umn84Y1R3hhSeIpq/oSv3HvLSq6XmebUveeP0n4=; b=FQjBZRnELOnfEz/OXcKjhWb5NVAqsmZ4o0kVVd8UxpevBQuIbE572hs5 HtKb+/7eIehV5/rQGNo9vesIjc3rgbfHpZtQGD27RQpNMcl/dt8AgWKyP hYT2iy/5gWkPxewhn50Lr5IDD5zkoaBwE7wx6c8/xBV8q7bKIbYWt19AM k=; Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (signature did not verify [final]) header.i=@polytechnique.org X-IronPort-AV: E=Sophos;i="6.09,267,1716242400"; d="scan'208,217";a="178235239" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 06 Aug 2024 11:00:43 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id C7062E0133; Tue, 6 Aug 2024 11:00:43 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 677FFE0035 for ; Tue, 6 Aug 2024 11:00:38 +0200 (CEST) IronPort-SDR: 66b1e633_o74JGnBusTbvb6S2upp2ZQKDPpgtrfuikYhRLElvJr80ER+ bUMu3NRslnF1RWOXyKUanjlOxOwGyCDtglM9+GQ== X-IPAS-Result: =?us-ascii?q?A0EKAQDQ5bFmmCIeaIFagliBQVsoGQFdBlozBwhIAwGEU?= =?us-ascii?q?oNPhS2IcoZsilyIRYIxgVYUgSw5FAEDAQ0uAQUNAQIEAQEDAQIBgguCdAIWi?= =?us-ascii?q?TcCHwYBBDEIDgECBAEBAQEDAgMBAQEBAQEIAQEFAQEBAgEBAgQGAQIQAQEBA?= =?us-ascii?q?QEBAQE3BUmFdQ2CShkVI2+BJQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQIMAYEeAQgKEwEBLQsYIwMQBAEGAwIEDQE1FwESF?= =?us-ascii?q?AaCZgGCZAMEAQwGkQubPHqBMoEBggwBAQaBCD4CAQIJAgUBDgkm2gSBGUoJg?= =?us-ascii?q?UiIJwkaAShIagKEQgmEMicPgVVEgz1KB2+CYQEBAQEYgREBEQIBCCEkCYMlg?= =?us-ascii?q?mmGK1USaYRYAVsSgQovFoIvYYEnBWMFCgEmgWRXD0UEDgFxPxJCAgyDBXwmg?= =?us-ascii?q?SMQhxtqhyuBRyIDJjMhEwFVExcLCQVkhhmCTIMtghqEFoUugWsMYYdygXCBP?= =?us-ascii?q?oFeSoJ4S4VdgQOCWXwjHUADC209NRQbpGYEDSQBgz0IBjgILAQoAQcaDgUcD?= =?us-ascii?q?gIgAiQKCA4KHAUKBRQPFwoEBRABBg8eAQsLAi0DkjQLLgMqdY44oXVtNAeEG?= =?us-ascii?q?IFdBgyJAYEkjieHS4QFTIEKiW2BPYZ9kC2CESKYTiKCNIJBhF8KgRsJgW0eT?= =?us-ascii?q?JUyEwMTAwoZhRqBaQI2bD8BGgEOBzMaMEMNDIJOCRYwHA+OLRZwHAEIgkOBP?= =?us-ascii?q?oMbO4EBgUDBd0E1AgEBCS4CBwEKAQEDCYVFHQEBhkCBSwEB?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 NVhD7jSyXlp8Hxs5YA= IronPort-HdrOrdr: A9a23:JNfoh6GJApx+5YqDpLqEN8eALOsnbusQ8zAXPiFKKCC9F/byqy nAppsmPHPP+VUssQgb6Km90fC7MAvhHOBOkPUs1MaZMjUO0VHARO1fBODZowEIdReOlNK1rZ 0QCJSX/7DLfD1HZbqR2njdLz5pqOPszEjj7d2y85/tJjsaDJ2Jhm1Ce2Cm+q0ffng6OXJffK DsnPZ6mw== X-Talos-CUID: 9a23:CgaDmmM5V3AE7O5DY3NcqGExXcofd0be9CjfOUGmDGR5cejA X-Talos-MUID: =?us-ascii?q?9a23=3A7B3oyA+/HH3hjYJfs8HQehmQf8E45qCiB19Rqqs?= =?us-ascii?q?pvuOAGnV7PQyRiyviFw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.09,267,1716242400"; d="scan'208,217";a="93650469" X-MGA-submission: =?us-ascii?q?MDFxJPrvWlS+xoLvO4TrOl2ljzx0qyOV4Ribg2?= =?us-ascii?q?I2XUhKFyhvQOf4mOlKWHnD/yqPm04zgpf8KX2N609tqLpJo8FkaGv3RT?= =?us-ascii?q?tHAOOeX8p7TLNWgsxO7Lw5NL1LXAM6qRU548AvucTVOfXwc49mEcEXaP?= =?us-ascii?q?wKGOP6P43M6v3Yn2TXQraE+Q=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2024 11:00:36 +0200 Received: from TM.local (88-121-115-170.subs.proxad.net [88.121.115.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id ECC715648F9; Tue, 6 Aug 2024 11:00:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1722934834; bh=7TERO5s9tFiilL4ZAGg+Z/FtQciOSK+VXs4fDybKkgE=; h=From:To:Subject:Date:Message-ID; b=ETYjiqIq1kv3JG3B8GqFOVNShAcy4mvpH1m+uoT6ng6It+gD+Xe50pEEyGiGSQlCz vqfM4ObB8oKxLJrQI72P9RRb3lZYI/2g9g+7ZP3UjwB9o72vr0DDOPS4PZRwusB19K BmNwwgpNiF4h/l65PGnWH87Fhd+bmHR8aNnbTneI= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 06 Aug 2024 11:00:30 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Aug 6 11:00:35 2024 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.445295, queueID=B71185648FA X-Org-Mail: alan.schmitt.1995@polytechnique.org Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 19169 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgSnVseSAzMCB0byBBdWd1c3QNCjA2LCAyMDI0Lg0KDQpUYWJsZSBvZiBDb250ZW50cw0K 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNClBw eGxpYiBkZXYgbWVldGluZ3MNClByYWdtYXRpYyBDYXRlZ29yeSBUaGVvcnkNCnBweGxpYi4wLjMz LjANCk9DYW1sLUxTUCAxLjE5LjAgZm9yIE9DYW1sIDUuMg0KTWxGcm9udCAtIEEgcGFja2FnaW5n IHN5c3RlbSBmb3IgT0NhbWwNCk9DYW1sLm9yZyBOZXdzbGV0dGVyOiBKdWx5IDIwMjQNCk90aGVy IE9DYW1sIE5ld3MNCk9sZCBDV04NCg0KDQpQcHhsaWIgZGV2IG1lZXRpbmdzDQrilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNo aXZlOiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3BweGxpYi1kZXYtbWVldGluZ3MvMTI0 NDEvMjg+DQoNCg0KQ29udGludWluZyB0aGlzIHRocmVhZCwgUGF0cmljayBGZXJyaXMgYW5ub3Vu Y2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBNZWV0aW5nIG5vdGVzIGFy ZSBhdmFpbGFibGUgaGVyZToNCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC1wcHgvcHB4bGli L3dpa2kvRGV2LU1lZXRpbmctMjAyNC0wNy0yMz4NCg0KICBUaGFuayB5b3UgdG8gYWxsIG9mIHRo ZSBwYXJ0aWNpcGFudHMuIElmIGFueW9uZSBpcyBpbnRlcmVzdGVkIGluDQogIGFkZGluZyBpdGVt cyBmb3IgdGhlIG5leHQgbWVldGluZyBpbiBBdWd1c3QgZG8gcGluZyBtZS4NCg0KICBVbnRpbCB0 aGVuIGhhcHB5IHBweC1pbmcgOikpDQoNCg0KUHJhZ21hdGljIENhdGVnb3J5IFRoZW9yeQ0K4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5v cmcvdC9wcmFnbWF0aWMtY2F0ZWdvcnktdGhlb3J5LzE1MDU2LzE+DQoNCg0KRG1pdHJpaSBLb3Zh bmlrb3YgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJIHN0YXJ0ZWQg d3JpdGluZyBhIHNlcmllcyBvbiAqUHJhZ21hdGljIENhdGVnb3J5IFRoZW9yeSBmb3INCiAgQmVn aW5uZXJzKiBmb2N1c2luZyBvbiByZWFsLXdvcmxkIHVzZSBjYXNlcyByYXRoZXIgdGhhbiB0aGVv cnkuIEFsbA0KICBjb2RlIGV4YW1wbGVzIGFyZSBpbiBPQ2FtbC4NCg0KICBUaGUgZmlyc3QgcGFy dCB3YXMganVzdCBmaW5pc2hlZDoNCiAg4oCiIFtQYXJ0IDE6IFNlbWlncm91cCBJbnRyb10NCg0K ICBJdCdzIGp1c3QgdGhlIGJlZ2lubmluZywgYW5kIEkgaGF2ZSBwbGFucyB0byBkZXNjcmliZSBt b3JlIGFuZCBwcm92aWRlDQogIG1vcmUgZXhhbXBsZXMgaW4gZnV0dXJlIHBhcnRzLiBJIGFsc28g cGxhbiB0byBtYWtlIGEgdmlkZW8gdmVyc2lvbiBhcw0KICB3ZWxsLg0KDQogIEkgaG9wZSB5b3Un bGwgZW5qb3kgaXQhDQoNCg0KW1BhcnQgMTogU2VtaWdyb3VwIEludHJvXQ0KPGh0dHBzOi8vZGV2 LnRvL2Noc2hlcnNoL3ByYWdtYXRpYy1jYXRlZ29yeS10aGVvcnktcGFydC0xLXNlbWlncm91cC1p bnRyby0xaWduPg0KDQoNCnBweGxpYi4wLjMzLjANCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qv YW5uLXBweGxpYi0wLTMzLTAvMTUwNjEvMT4NCg0KDQpOYXRoYW4gUmVib3VycyBhbm5vdW5jZWQN CuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgA0KDQogIFRoZSBQcHhsaWIgZGV2IHRlYW0gaXMgaGFwcHkgdG8gYW5u b3VuY2UgdGhlIHJlbGVhc2Ugb2YNCiAgYHBweGxpYi4wLjMzLjAnLg0KDQogIFlvdSBjYW4gZmlu ZCB0aGUgZnVsbCBjaGFuZ2Vsb2cgZm9yIHRoaXMgcmVsZWFzZSBbaGVyZV0uDQoNCg0KW2hlcmVd IDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtcHB4L3BweGxpYi9yZWxlYXNlcy90YWcvMC4zMy4w Pg0KDQpXYXJuaW5nIHNpbGVuY2luZyBmb3IgYFtAQGRlcml2aW5nIC4uXScgZ2VuZXJhdGVkIGNv ZGUNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQog IFRoaXMgcmVsZWFzZSdzIG1haW4gZmVhdHVyZSBpcyBhIHNlcmllcyBvZiBpbXByb3ZlbWVudCB0 byBmbGFncw0KICBjb250cm9sbGluZyB1bnVzZWQgdmFsdWUvbW9kdWxlL3R5cGUgd2FybmluZ3Mg c2lsZW5jaW5nLg0KDQogIFRoZSBgcHB4bGliJyBkcml2ZXIgZ2VuZXJhdGVzIHdhcm5pbmcgc2ls ZW5jaW5nIGl0ZW1zIHRvIHByZXZlbnQNCiAgYFtAQGRlcml2aW5nIC4uLl0nICBnZW5lcmF0ZWQg Y29kZSB0byB0cmlnZ2VyIHVudXNlZCBjb2RlDQogIHdhcm5pbmdzLiBUaHJlZSB3YXJuaW5ncyBh cmUgZGlzYWJsZWQgdGhhdCB3YXk6DQogIOKAoiBXYXJuaW5nIDMyOiB1bnVzZWQgdmFsdWUNCiAg 4oCiIFdhcm5pbmcgNjA6IHVudXNlZCBtb2R1bGUNCiAg4oCiIFdhcm5pbmcgMzQ6IHVudXNlZCB0 eXBlDQoNCiAgVGhlIGZpcnN0IHR3byBhcmUgZGlzYWJsZWQgZm9yIHZhbHVlcyBhbmQgbW9kdWxl cyBnZW5lcmF0ZWQgYnkgdGhlDQogIGRlcml2ZXIgd2hpbGUgdGhlIHRoaXJkIGlzIGRpc2FibGVk IGZvciB0aGUgdHlwZXMgaW4gdGhlIHR5cGUNCiAgZGVjbGFyYXRpb24gdG8gd2hpY2ggdGhlIGBb QEBkZXJpdmluZyAuLi5dJyBhdHRyaWJ1dGUgaXMgYXR0YWNoZWQuDQoNCiAgVGhpcyBmZWF0dXJl IHdhcyBhZGRlZCBhIGxvbmcgdGltZSBhZ28gdG8gYXZvaWQgbWFudWFsbHkgZGlzYWJsaW5nDQog IHRob3NlIHdhcm5pbmdzIHdoZW4gd29ya2luZyB3aXRoIGRlcml2ZXJzIHRoYXQgZ2VuZXJhdGUg YSBzZXQgb2YNCiAgdmFsdWVzIGFuZCBtb2R1bGVzIG9ubHkgdG8gdXNlIGEgc3Vic2V0IG9mIHRo b3NlLiBBbHRlcm5hdGl2ZWx5LCB0aGUNCiAgdW51c2VkIHR5cGUgd2FybmluZyBzaWxlbmNpbmcg d2FzIGFkZGVkIHRvIGFsbG93IGRlZmluaW5nIGFuIGFsaWFzDQogIHR5cGUgb25seSB0byBiZSBj b25zdW1lZCBieSBhIGRlcml2ZXIsIGUuZy46DQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgdHlw ZSBlcnJvciA9IFtgTm90X2ZvdW5kIHwgYEludmFsaWRfYXJnXSBbQEBkZXJpdmluZyB0b19zdHJp bmddDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIFdlIHNpbmNlIHRoZW4gYmVsaWV2ZSB0aGF0IHdl IHNob3VsZCBub3QgZGlzYWJsZSB3YXJuaW5ncyBsaWdodGx5LCBhcw0KICB0aGlzIGJlaGF2aW91 ciBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gZmluZCBhbmQgcmVtb3ZlIGRlYWQgY29kZS4gVGhlDQog IHJpZ2h0IGFwcHJvYWNoIGluIHRob3NlIHNpdHVhdGlvbnMgc2hvdWxkIGJlIHRvIGZpeCB0aGUg UFBYIGRlcml2ZXJzDQogIHNvIHRoYXQgdGhleSBhcmUgbW9yZSBjb25maWd1cmFibGUgYW5kIGNh biBiZSB1c2VkIHdpdGhvdXQgdHJpZ2dlcmluZw0KICBzdWNoIHdhcm5pbmdzLg0KDQogIFdlIHdp bGwgc3RhcnQgdG8gbW92ZSB0b3dhcmQgcmVtb3ZpbmcgdGhpcyBmZWF0dXJlLCBidXQgc2luY2Ug aXQgaXMNCiAgc3RpbGwgdXNlZnVsIGluIHNvbWUgcGxhY2VzLCB3ZSBoYWQgdG8gY29tZSB1cCB3 aXRoIGEgcGxhbiB0byBhbGxvdw0KICB0cmFuc2l0aW9uaW5nIG91dCBvZiBpdC4NCg0KICBJbiBg cHB4bGliLjAuMzEuMCcgd2UgYWRkZWQgdGhlIGAtdW51c2VkLWNvZGUtd2FybmluZ3MnIGRyaXZl ciBmbGFnDQogIGFuZCB0aGUgYD91bnVzZWRfY29kZV93YXJuaW5ncycncyBgRGVyaXZpbmcuVjIu bWFrZScgb3B0aW9uYWwgYXJndW1lbnQNCiAgdG8gY29udHJvbCB3aGV0aGVyIHRvIHNpbGVuY2Ug V2FybmluZ3MgMzIgYW5kIDYwLiBXaGVuIGJvdGggYXJlIHNldCB0bw0KICBgdHJ1ZScsIGJ5IHRo ZSB1c2VyIGFuZCB0aGUgZGVyaXZlciBhdXRob3JzLCB0aGUgd2FybmluZ3MgYXJlIG5vdA0KICBz aWxlbmNlZC4NCg0KICBBcyBvZiBgcHB4bGliLjAuMzMuMCcsIHRoZXNlIGFsc28gY29udHJvbCB0 aGUgc2lsZW5jaW5nIG9mIFdhcm5pbmcgMzQNCiAgKHVudXNlZCB0eXBlKS4gYGZvcmNlJyBjYW4g bm93IGJlIHBhc3NlZCB0byB0aGUNCiAgYC11bnVzZWQtY29kZS13YXJuaW5ncycgZmxhZyBpbiBv cmRlciB0byBkaXNhYmxlIHdhcm5pbmdzIHNpbGVuY2luZywNCiAgcmVnYXJkbGVzcyBvZiB0aGUg ZGVyaXZlcnMgb3B0aW5nIGluLg0KDQogIFRoaXMgYWxsb3dzIHVzZXJzIHRvIHRlc3Qgd2hldGhl ciB0aGVpciBjb2RlYmFzZSBhbmQgdGhlaXIgc2V0IG9mDQogIGRlcml2ZXJzIHJlbHkgb24gd2Fy bmluZyBzaWxlbmNpbmcgb3Igbm90IGFuZCB0byB1c2UgdGhvc2UgcmVzdWx0cyB0bw0KICBlbGlt aW5hdGUgZGVhZCBjb2RlIGFuZC9vciByZXBvcnQgaXNzdWVzIHVwc3RyZWFtIHRvIHRoZSBkZXJp dmVycyB0aGV5DQogIHVzZS4NCg0KICBXZSBhbHNvIGFkZGVkIGEgc2VwYXJhdGUgYC11bnVzZWQt dHlwZS13YXJuaW5ncycgZmxhZyB0aGF0IHdvcmtzDQogIHNpbWlsYXJseSB0byBgLXVudXNlZC1j b2RlLXdhcm5pbmdzJyAoaS5lLiwgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YNCiAgdGhlIGA/dW51 c2VkX2NvZGVfd2FybmluZ3MnIGFyZ3VtZW50KSwgYnV0IGl0IG9ubHkgY29udHJvbHMgV2Fybmlu ZyAzNA0KICBzaWxlbmNpbmcsIGFzIGl0IHR1cm5zIG91dCBpdCBpcyBsZXNzIGxpa2VseSB0byBj YXVzZSB1bndhbnRlZA0KICB3YXJuaW5ncyB0aGFuIHdpdGggdGhlIG90aGVyIHR3by4gVGhpcyB3 aWxsIGFsbG93IHVzZXJzIHRvIGRpc2FibGUgaXQNCiAgbW9yZSBlYXNpbHksIHdpdGhvdXQgaGF2 aW5nIHRvIGRlYWwgd2l0aCBXYXJuaW5ncyAzMiBhbmQgNjAgc3RyYWlnaHQNCiAgYXdheS4NCg0K ICBXZSB3YW50IHRvIGVuY291cmFnZSB1c2VycyB0byB0cnkgdGhvc2Ugb24gdGhlaXIgY29kZWJh c2UgaW4gb3JkZXIgdG8NCiAgc2VlIHRoZSBpbXBhY3QgaXQgaGFzLiBEaWQgeW91IGhhdmUgZGVh ZCBjb2RlIGx5aW5nIGFyb3VuZCB0aGF0DQogIHNsaXBwZWQgcGFzdCB1bmRldGVjdGVkPyBEb2Vz IHRoaXMgdHJpZ2dlciB1bndhbnRlZCB3YXJuaW5ncyBiZWNhdXNlDQogIG9mIGRlcml2ZXIncyBn ZW5lcmF0ZWQgY29kZT8NCg0KICBUaGUgcGxhbiBpcyB0byBnaXZlIHRoZSBlY29zeXN0ZW0gc29t ZSB0aW1lIHRvIHRyeSB0aG9zZSBmZWF0dXJlcyBhbmQNCiAgYWRhcHQgYnkgZml4aW5nIGluZGl2 aWR1YWwgZGVyaXZlcnMgYW5kIGZsaXBwaW5nDQogIGA/dW51c2VkX2NvZGVfd2FybmluZ3MnIHRv IHRydWUgYXMgdGhleSBkby4gQWZ0ZXIgYSB3aGlsZSwgd2Ugd2lsbA0KICBzd2FwIHRoZSBkZWZh dWx0IHZhbHVlIG9mIHRoZSBkcml2ZXIgZmxhZyB0byBgdHJ1ZScgc28gdGhhdCBvbmx5DQogIGRl cml2ZXJzIHRoYXQgaGF2ZW4ndCBvcHRlZCBpbiB3aWxsIGVuYWJsZSB3YXJuaW5nIHNpbGVuY2lu Zy4gVGhlbiBhcw0KICB0aW1lIGdvZXMgd2Ugd2lsbCBzd2FwIHRoZSBkZWZhdWx0IG9mIHRoZSBg RGVyaXZpbmcubWFrZScgYXJndW1lbnQgc28NCiAgdGhhdCBkZXJpdmVycyB3aWxsIGluc3RlYWQg aGF2ZSB0byBleHBsaWNpdGx5IG9wdCBvdXQgdG8gZ2V0IHRoZQ0KICB3YXJuaW5nIHNpbGVuY2lu Zy4gRmluYWxseSwgb25jZSB3ZSBhcmUgY29uZmlkZW50IHRoZSBlY29zeXN0ZW0gaXMgaW4NCiAg YSBnb29kIGVub3VnaCBzdGF0ZSwgd2Ugd2lsbCByZW1vdmUgdGhpcyBmZWF0dXJlIGFsdG9nZXRo ZXIuDQoNCg0KT3RoZXIgZmVhdHVyZXMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjA0KDQogIGBwcHhsaWIuMC4zMy4wJyBhbHNvIGNvbWVzIHdpdGggYSBjb3VwbGUg b2YgbmV3IGZlYXR1cmVzIGZvciBQUFgNCiAgYXV0aG9yczoNCiAg4oCiIEEgY291cGxlIG5ldyBg QXN0X2J1aWxkZXInIGZ1bmN0aW9uczogYGVsaXN0X3RhaWwnIGFuZCBgcGxpc3RfdGFpbCcNCiAg ICB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGxpc3QgZXhwcmVzc2lvbnMgYW5kIHBhdHRlcm5z IHdpdGggYQ0KICAgIGN1c3RvbSB0YWlsOiBgZWxpc3RfdGFpbCBbZXhwcjE7IGV4cHIyXSB0YWls X2V4cHInIHJldHVybnMgdGhlDQogICAgZXhwcmVzc2lvbiBmb3IgYGV4cHIxOjpleHByMjo6dGFp bF9leHByJy4NCiAg4oCiIGBDb250ZXh0X2ZyZWUuc3BlY2lhbF9mdW5jdGlvbicnLCBhIG5ldyB2 ZXJzaW9uIG9mDQogICAgYHNwZWNpYWxfZnVuY3Rpb24nIHRoYXQgYWxsb3dzIHBhc3NpbmcgYSBg TG9uZ2lkZW50LnQnIGRpcmVjdGx5DQogICAgcmF0aGVyIHRoYXQgcmVseWluZyBvbiBwYXJzaW5n IHRoZSBzdHJpbmcgYXJndW1lbnQgdG8gYQ0KICAgIGBMb25naWRlbnQudCcuDQoNCiAgRmluYWxs eSwgdGhlIHJlbGVhc2UgaW5jbHVkZXMgYSBmZXcgYnVnIGZpeGVzIHRvIGBMb25naWRlbnQucGFy c2UnIGFuZA0KICBgQ29kZV9wYXRoLm1haW5fbW9kdWxlX25hbWUnIGFuZCBmaXhlcyB0aGUgYGxv Y2F0aW9uLWNoZWNrJyBmbGFnIHNvIGl0DQogIGlzIG5vdCByZXF1aXJlZCB0byBhbHNvIHBhc3Mg YC1jaGVjaycgdG8gZW5hYmxlIGxvY2F0aW9uIGNoZWNrcy4gSXQNCiAgYWxzbyBmaXhlcyB0aGUg NS4yIG1pZ3JhdGlvbnMgbG9jYXRpb25zLCBhcyB3ZSB1c2VkIHRvIGJ1aWxkIG5vZGVzDQogIHdp dGggaW5jb25zaXN0ZW50IGxvY2F0aW9ucyB3aGVuIG1pZ3JhdGluZyBgUGV4cF9mdW5jdGlvbicg bm9kZXMuDQoNCg0KSHVnZSB0aGFua3MgdG8gb3VyIGV4dGVybmFsIGNvbnRyaWJ1dG9ycw0K4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWMDQoNCiAgV2Ugd291bGQgbGlrZSB0byB0aGFuayBvdXIgZXh0ZXJuYWwgY29udHJpYnV0b3Jz IHdobyBoYXZlIGJlZW4gYSBodWdlDQogIHBhcnQgb2YgdGhpcyByZWxlYXNlOiBAb2N0YWNocm9u LCBAdmctYiwgYW5kIEBqY2hhdmFycmksIGFuZCBhIHNwZWNpYWwNCiAgbWVudGlvbiB0byBAbWJh cmJpbiwgd2hvIGhhcyBub3Qgb25seSBjb250cmlidXRlZCBhIGxvdCB0byB0aGUgd2FybmluZw0K ICBzaWxlbmNpbmcgZmVhdHVyZXMgYnV0IGhhcyBiZWVuIGV4dGVuc2l2ZWx5IHRlc3RpbmcgYW5k IHByb3ZpZGluZyB2ZXJ5DQogIHVzZWZ1bCBmZWVkYmFjayBvbiB0aGVtLg0KDQogIEFuZCBvZiBj b3Vyc2UsIGFzIHVzdWFsLCB3ZSdkIGxpa2UgdG8gdGhhbmsgdGhlIE9DYW1sIFNvZnR3YXJlDQog IEZvdW5kYXRpb24gd2hvIGhhcyBiZWVuIGZ1bmRpbmcgbXkgd29yayBvbiBQcHhsaWIgYW5kIG9u IHRoaXMgcmVsZWFzZSwNCiAgbWFraW5nIGFsbCBvZiB0aGlzIHBvc3NpYmxlIQ0KDQoNCk9DYW1s LUxTUCAxLjE5LjAgZm9yIE9DYW1sIDUuMg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tb2Nh bWwtbHNwLTEtMTktMC1mb3Itb2NhbWwtNS0yLzE1MDcxLzE+DQoNCg0KdmRzIGFubm91bmNlZA0K 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSSBhbSBoYXBweSB0 byBhbm5vdW5jZSwgb24gYmVoYWxmIG9mIHRoZSBvY2FtbC1sc3AgdGVhbSwgdGhlIHJlbGVhc2UN CiAgb2YgYG9jYW1sLWxzcC1zZXJ2ZXInIGAxLjE5LjAnIGFuZCBhc3NvY2lhdGVkIGxpYnJhcmll cy4gVGhpcyByZWxlYXNlDQogIHByaW1hcnkgZ29hbCBpcyB0byBicmluZyBvZmZpY2lhbCBzdXBw b3J0IGZvciBPQ2FtbCA1LjIg8J+Qqy4NCg0KDQpGZWF0dXJlcw0K4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWMDQoNCiAg4oCiIEFkZCBjdXN0b20NCiAgICBbfm9jYW1sbHNwL2dldERvY3VtZW50YXRp b25+XSgvb2NhbWwtbHNwLXNlcnZlci9kb2NzL29jYW1sbHNwL2dldERvY3VtZW50YXRpb24tc3Bl Yy5tZCkNCiAgICByZXF1ZXN0IChvY2FtbC9vY2FtbC1sc3AjMTMzNikNCiAg4oCiIEFkZCBzdXBw b3J0IGZvciBPQ2FtbCA1LjIgKG9jYW1sL29jYW1sLWxzcCMxMjMzKQ0KDQoNCkZpeGVzDQrilYzi lYzilYzilYzilYwNCg0KICDigKIgS2lsbCB1bm5lY2Vzc2FyeSBvY2FtbGZvcm1hdCBwcm9jZXNz ZXMgd2l0aCBzaWd0ZXJtIHJhdGhlciB0aGFuDQogICAgc2lnaW50IG9yIHNpZ2tpbGwgKG9jYW1s L29jYW1sLWxzcCMxMzQzKQ0KDQoNCk1sRnJvbnQgLSBBIHBhY2thZ2luZyBzeXN0ZW0gZm9yIE9D YW1sDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1t bGZyb250LWEtcGFja2FnaW5nLXN5c3RlbS1mb3Itb2NhbWwvMTUwNzIvMT4NCg0KDQpqYmVja2Zv cmQgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIANCg0KICBIZXJlIGFyZSB0aGUgaW50cm9kdWN0b3J5IHBhcmFncmFwaHMg ZnJvbSBpdHMgb3ZlcnZpZXc6DQoNCiAgICAgICAgYE1sRnJvbnQnIGFkZHMgYSBKYXZhLWxpa2Ug cGFja2FnaW5nIHN5c3RlbSB0byBPQ2FtbC4gVGhlDQogICAgICAgIGBNbEZyb250JyBuYW1lIGlz IGEgaG9tYWdlIHRvIGBjZnJvbnQnIHdoaWNoIHdhcyB0b29saW5nDQogICAgICAgIHRoYXQgdHJh bnNsYXRlZCAiQyB3aXRoIENsYXNzZXMiIChub3cga25vd24gYXMgQysrKSBpbnRvIEMNCiAgICAg ICAgY29kZS4gU2ltaWxhcmx5LCBgTWxGcm9udCctYmFzZWQgdG9vbHMgY2FuIHRyYW5zbGF0ZSBP Q2FtbA0KICAgICAgICB3aXRoIHBhY2thZ2VzIGludG8gY29udmVudGlvbmFsIE9DYW1sLiAg4oCm ICBBdCBpdHMgbW9zdA0KICAgICAgICBiYXNpYyBjb3JlLCBgTWxGcm9udCcgZ2l2ZXMgYSB3ZWxs LWRlZmluZWQsIGNvbnNpc3RlbnQNCiAgICAgICAgbWVhbmluZyB0byBhIG1vZHVsZSByZWZlcmVu Y2UgbGlrZQ0KICAgICAgICBgQWNtZVdpZGdldHNfU3RkLkFjdGl2aXRpZXMuTWFudWZhY3R1cmlu ZycgYWNyb3NzIHRoZQ0KICAgICAgICBkb21haW5zIG9mOg0KDQogICAgICAgIDEuIE9DYW1sIHNv dXJjZSBjb2RlLg0KICAgICAgICAyLiBmaW5kbGliIGxpYnJhcmllcy4NCiAgICAgICAgMy4gb3Bh bSBwYWNrYWdlcy4NCg0KICBgTWxGcm9udCcgaXMgQXBhY2hlIDIuMCBsaWNlbnNlZCBhbmQgaXMg bWVhbnQgdG8gYmUgdXNlZCBieSBidWlsZA0KICBzeXN0ZW1zIChEdW5lLCBvY2FtbGJ1aWxkLCBE a0NvZGVyKSBhbmQgcGFja2FnZSBtYW5hZ2VycyAob3BhbSkuIE9uZQ0KICBvZiBpdHMgY3JpdGlj YWwgZGVwZW5kZW5jaWVzIGlzIFtjb2RlcHRdLg0KDQogIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0 IGBNbEZyb250JyBpbiB0aGUgZm9sbG93aW5nIHBvc3RzICh3aXRoIG1vcmUNCiAgY29taW5nKToN Cg0KICDigKIgW2h0dHBzOi8vZGlza3V2LmNvbS9tbGZyb250L292ZXJ2aWV3LTEvXQ0KICDigKIg W2h0dHBzOi8vZGlza3V2LmNvbS9tbGZyb250L292ZXJ2aWV3LTIvXQ0KDQogIC9Dcm9zcy1wb3N0 IG5vdGljZTogVGhlIGZpcnN0IGFydGljbGUgd2FzIHBvc3RlZCBhdA0KICBbaHR0cHM6Ly9sb2Jz dGUucnMvcy83Z2hzbG8vb3ZlcnZpZXdfb2NhbWxmcm9udF07IG5vIGNvbW1lbnRzDQogICg6KCku IEJ1dCBJIHN0aWxsIGxpa2UgdG8gZ2V0IGZpcnN0LWhhbmQgZmVlZGJhY2sgb24gd2hhdCB3b3Jr cyB3ZWxsDQogIGluIG90aGVyIGxhbmd1YWdlcywgc28gcGxlYXNlIGNoaW1lIGluIGV2ZW4gaWYg eW91IGRvbid0IGZlZWwgdGhhdA0KICBPQ2FtbCBpcyB5b3VyIHN0cm9uZyBzdWl0Li8NCg0KDQpb Y29kZXB0XSA8aHR0cHM6Ly9naXRodWIuY29tL09jdGFjaHJvbi9jb2RlcHQ+DQoNCltodHRwczov L2Rpc2t1di5jb20vbWxmcm9udC9vdmVydmlldy0xL10NCjxodHRwczovL2Rpc2t1di5jb20vbWxm cm9udC9vdmVydmlldy0xLz4NCg0KW2h0dHBzOi8vZGlza3V2LmNvbS9tbGZyb250L292ZXJ2aWV3 LTIvXQ0KPGh0dHBzOi8vZGlza3V2LmNvbS9tbGZyb250L292ZXJ2aWV3LTIvPg0KDQpbaHR0cHM6 Ly9sb2JzdGUucnMvcy83Z2hzbG8vb3ZlcnZpZXdfb2NhbWxmcm9udF0NCjxodHRwczovL2xvYnN0 ZS5ycy9zLzdnaHNsby9vdmVydmlld19vY2FtbGZyb250Pg0KDQoNCk9DYW1sLm9yZyBOZXdzbGV0 dGVyOiBKdWx5IDIwMjQNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQog IEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qvb2NhbWwtb3JnLW5ld3Ns ZXR0ZXItanVseS0yMDI0LzE1MDg3LzE+DQoNCg0KU2FiaW5lIFNjaG1hbHR6IGFubm91bmNlZA0K 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgV2VsY29tZSB0byB0aGUgSnVseSAyMDI0IGVkaXRpb24g b2YgdGhlIE9DYW1sLm9yZyBuZXdzbGV0dGVyISBUaGlzDQogIHVwZGF0ZSBoYXMgYmVlbiBjb21w aWxlZCBieSB0aGUgT0NhbWwub3JnIG1haW50YWluZXJzLiBZb3UgY2FuIGZpbmQNCiAgW3ByZXZp b3VzIHVwZGF0ZXNdIG9uIERpc2N1c3MuDQoNCiAgT3VyIGdvYWwgaXMgdG8gbWFrZSBPQ2FtbC5v cmcgdGhlIGJlc3QgcmVzb3VyY2UgZm9yIGFueW9uZSB3aG8gd2FudHMNCiAgdG8gZ2V0IHN0YXJ0 ZWQgYW5kIGJlIHByb2R1Y3RpdmUgaW4gT0NhbWwuIFRoZSBPQ2FtbC5vcmcgbmV3c2xldHRlcg0K ICBwcm92aWRlcyBhbiB1cGRhdGUgb24gb3VyIHByb2dyZXNzIHRvd2FyZHMgdGhhdCBnb2FsIGFu ZCBhbiBvdmVydmlldw0KICBvZiB0aGUgY2hhbmdlcyB3ZSBhcmUgd29ya2luZyBvbi4NCg0KICBX ZSBjb3VsZG4ndCBkbyBpdCB3aXRob3V0IGFsbCB0aGUgYW1hemluZyBwZW9wbGUgd2hvIGhlbHAg dXMgcmV2aWV3LA0KICByZXZpc2UsIGFuZCBjcmVhdGUgYmV0dGVyIE9DYW1sIGRvY3VtZW50YXRp b24gYW5kIHdvcmsgb24gaXNzdWVzLiBZb3VyDQogIHBhcnRpY2lwYXRpb24gZW5hYmxlcyB1cyB0 byBzbyBtdWNoIG1vcmUgdGhhbiB3ZSBjb3VsZCBqdXN0IGJ5DQogIG91cnNlbHZlcy4gVGhhbmsg eW91IQ0KDQogIFRoaXMgbmV3c2xldHRlciBjb3ZlcnM6DQogIOKAoiAqQ29tbXVuaXR5LURyaXZl biBEZXZlbG9wbWVudCBvZiBPQ2FtbC5vcmcqDQogIOKAoiAqUmVjaXBlcyBmb3IgdGhlIE9DYW1s IENvb2tib29rOiogSGVscCB1cyBtYWtlIHRoZSBPQ2FtbCBDb29rYm9vaw0KICAgICByZWFsbHkg dXNlZnVsIGJ5IGNvbnRyaWJ1dGluZyBhbmQgcmV2aWV3aW5nIHJlY2lwZXMgZm9yIGNvbW1vbg0K ICAgICB0YXNrcyENCiAg4oCiICpDb21tdW5pdHkgJiBNYXJrZXRpbmcgUGFnZXMgUmV3b3JrOiog SW1wbGVtZW50YXRpb24gd29yayBpbg0KICAgICBwcm9ncmVzcy4NCiAg4oCiICpHZW5lcmFsIElt cHJvdmVtZW50czoqIEFzIHVzdWFsLCB3ZSBhbHNvIHdvcmtlZCBvbiBnZW5lcmFsDQogICAgIG1h aW50ZW5hbmNlIGFuZCBpbXByb3ZlbWVudHMsIHNvIHdlJ3JlIGhpZ2hsaWdodGluZyBzb21lIG9m IHRoZQ0KICAgICB3b3JrIHRoYXQgaGFwcGVuZWQgYmVsb3cuDQoNCg0KW3ByZXZpb3VzIHVwZGF0 ZXNdIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3RhZy9vY2FtbG9yZy1uZXdzbGV0dGVyPg0K DQpDb21tdW5pdHktRHJpdmVuIERldmVsb3BtZW50IG9mIE9DYW1sLm9yZw0K4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoN CiAgQWZ0ZXIgcmV3b3JraW5nIG1vc3Qgb2YgdGhlIE9DYW1sLm9yZyB3ZWJzaXRlIHRvIGJlIG1v cmUgdXNlZnVsLCBtb3JlDQogIHVzYWJsZSwgYW5kIG5pY2VyIHRvIGxvb2sgYXQsIHRoZSB0ZWFt IGF0IFRhcmlkZXMgdGhhdCBoYXMgYmVlbg0KICB3b3JraW5nIG9uIE9DYW1sLm9yZyBpcyBkaXNi YW5kaW5nLiBIb3dldmVyLCBPQ2FtbC5vcmcgd2lsbCBjb250aW51ZQ0KICB0byBiZSBtYWludGFp bmVkIGFuZCBleHRlbmRlZCBieSBieSB0aGUgT0NhbWwgUGxhdGZvcm0gYW5kIE9DYW1sDQogIGNv bXBpbGVyIGNvbnRyaWJ1dG9ycywgYXMgd2VsbCBhcyBieSB0aGUgd2lkZXIgT0NhbWwgY29tbXVu aXR5Lg0KDQogIFlvdSBjYW4gcmVhY2ggb3V0IHRvIFt0aGUgT0NhbWwub3JnIG1haW50YWluZXJz XSB0byBkaXNjdXNzIGFueSBiaWdnZXINCiAgY2hhbmdlcyBvciBhZGRpdGlvbnMgeW91J2QgbGlr ZSB0byBtYWtlLiBDb250cmlidXRpb25zIHRvIGltcHJvdmUNCiAgZXhpc3RpbmcgZmVhdHVyZXMg YW5kIGJ1ZyBmaXhlcyBhcmUgYWx3YXlzIHdlbGNvbWUhDQoNCg0KW3RoZSBPQ2FtbC5vcmcgbWFp bnRhaW5lcnNdDQo8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZz90YWI9cmVhZG1l LW92LWZpbGUjbWFpbnRhaW5lcnM+DQoNCuKXiiBPcGVuIElzc3VlcyBmb3IgQ29udHJpYnV0b3Jz DQoNCiAgWW91IGNhbiBmaW5kIFtvcGVuIGlzc3VlcyBmb3IgY29udHJpYnV0b3JzIGhlcmVdIQ0K DQoNCiAgW29wZW4gaXNzdWVzIGZvciBjb250cmlidXRvcnMgaGVyZV0NCiAgPGh0dHBzOi8vZ2l0 aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvaXNzdWVzP3E9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rbGFi ZWwlM0ElMjJoZWxwK3dhbnRlZCUyMitubyUzQWFzc2lnbmVlPg0KDQoNClJlY2lwZXMgZm9yIHRo ZSBPQ2FtbCBDb29rYm9vaw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg VGhlIE9DYW1sIENvb2tib29rIGlzIGEgcGxhY2Ugd2hlcmUgT0NhbWwgZGV2ZWxvcGVycyBzaGFy ZSBob3cgdG8NCiAgc29sdmUgY29tbW9uIHRhc2tzIHVzaW5nIHBhY2thZ2VzIGZyb20gdGhlIGVj b3N5c3RlbS4NCg0KICBBIHJlY2lwZSBpcyBhIGNvZGUgc2FtcGxlIGFuZCBleHBsYW5hdGlvbnMg b24gaG93IHRvIHBlcmZvcm0gYSB0YXNrDQogIHVzaW5nIGEgY29tYmluYXRpb24gb2Ygb3Blbi1z b3VyY2UgbGlicmFyaWVzLg0KDQogIFRoZSBDb29rYm9vayBpcyBsaXZlIGF0IFtvY2FtbC5vcmcv Y29va2Jvb2tdLg0KDQogIEhlcmUncyBob3cgeW91IGNhbiBoZWxwOg0KDQogIDEuIEhlbHAgcmV2 aWV3IHRoZSBbb3BlbiBwdWxsIHJlcXVlc3RzIGZvciBjb29rYm9vayByZWNpcGVzXSENCiAgMi4g Q29udHJpYnV0ZSBuZXcgcmVjaXBlcyBhbmQgdGFza3MgZm9yIHRoZSBjb29rYm9vayENCg0KICBU aGFuayB5b3UgYWxsIGZvciB0aGUgbWFueSBjb250cmlidXRpb25zISBPbmUgYXJlYSB3aGVyZSB3 ZSBjb3VsZCB1c2UNCiAgaGVscCBpcyBpbiByZXZpZXdpbmcgYW5kIGltcHJvdmluZyB0aGUgc3Vn Z2VzdGVkIHJlY2lwZXMgYW5kIHRhc2tzLg0KDQogICpSZWxldmFudCBQUnMgYW5kIEFjdGl2aXRp ZXM6Kg0KICDigKIgKG9wZW4pIFBSOiBjb29rYm9vayByZWNpcGVzIGZvciBwYXJzZS1jb21tYW5k LWxpbmUtYXJndW1lbnRzDQogICAgW29jYW1sL29jYW1sLm9yZyMyNTczXSBieSBbQHJpY2hhcmRo dXh0b25dDQogIOKAoiAob3BlbikgUFI6IENvb2tib29rIENoZWNrIGEgV2VicGFnZSBmb3IgQnJv a2VuIExpbmtzDQogICAgW29jYW1sL29jYW1sLm9yZyMyNTgxXSBieSBbQGdnc21pdGg4NDJdDQog IOKAoiAob3BlbikgUFI6IGNvb2tib29rOiAiY3JlYXRlIGFuZCBhd2FpdCBwcm9taXNlcyI6IEx3 dCwgQXN5bmMNCiAgICBbb2NhbWwvb2NhbWwub3JnIzI1ODRdIGJ5IFtAcmljaGFyZGh1eHRvbl0N CiAg4oCiIChvcGVuKSBQUjogQ29va0Jvb2s6IHJlYWQtY3N2IC0gYmFzaWMgZXhhbXBsZSBvZiBy ZWFkaW5nIHJlY29yZHMNCiAgICBmcm9tIGEgQ1NWIHN0cmluZyBbb2NhbWwvb2NhbWwub3JnIzI1 ODldIGJ5IFtAZGFuaWVsY2xhcmtlXQ0KICDigKIgKG9wZW4pIFBSOiBDb29rYm9vazogRW1haWwg cmVnZXggcGF0Y2ggW29jYW1sL29jYW1sLm9yZyMyNTkxXSBieQ0KICAgIFtARi1Mb3llcl0NCiAg 4oCiIEZpeGVzIGFuZCBJbXByb3ZlbWVudHMgdG8gZXhpc3RpbmcgcmVjaXBlczoNCiAgICDigKIg UFI6IFVwZGF0ZSAwMC11cmkubWw6IG1pc3NpbmcgYXJnIFtvY2FtbC9vY2FtbC5vcmcjMjYxOF0g YnkNCiAgICAgIFtAdHRhbXR0YW1dDQoNCg0KW29jYW1sLm9yZy9jb29rYm9va10gPGh0dHBzOi8v b2NhbWwub3JnL2Nvb2tib29rPg0KDQpbb3BlbiBwdWxsIHJlcXVlc3RzIGZvciBjb29rYm9vayBy ZWNpcGVzXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbHM/cT1pcyUz QXByK2lzJTNBb3BlbitsYWJlbCUzQUNvb2tib29rPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1NzNd IDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU3Mz4NCg0KW0ByaWNo YXJkaHV4dG9uXSA8aHR0cHM6Ly9naXRodWIuY29tL3JpY2hhcmRodXh0b24+DQoNCltvY2FtbC9v Y2FtbC5vcmcjMjU4MV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8y NTgxPg0KDQpbQGdnc21pdGg4NDJdIDxodHRwczovL2dpdGh1Yi5jb20vZ2dzbWl0aDg0Mj4NCg0K W29jYW1sL29jYW1sLm9yZyMyNTg0XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9y Zy9wdWxsLzI1ODQ+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU4OV0gPGh0dHBzOi8vZ2l0aHViLmNv bS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTg5Pg0KDQpbQGRhbmllbGNsYXJrZV0gPGh0dHBzOi8v Z2l0aHViLmNvbS9kYW5pZWxjbGFya2U+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU5MV0gPGh0dHBz Oi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTkxPg0KDQpbQEYtTG95ZXJdIDxo dHRwczovL2dpdGh1Yi5jb20vRi1Mb3llcj4NCg0KW29jYW1sL29jYW1sLm9yZyMyNjE4XSA8aHR0 cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI2MTg+DQoNCltAdHRhbXR0YW1d IDxodHRwczovL2dpdGh1Yi5jb20vdHRhbXR0YW0+DQoNCg0KQ29tbXVuaXR5ICYgTWFya2V0aW5n IFBhZ2VzIFJld29yaw0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWMDQoNCiAgV2UgaGF2ZSBbVUkgZGVzaWducyBmb3IgdGhlIHJld29ya2VkIGFuZCBuZXcgcGFn ZXMgb2YgdGhlIGNvbW11bml0eQ0KICBzZWN0aW9uXSwgYW5kIGltcGxlbWVudGF0aW9uIGlzIGJl aW5nIHdvcmtlZCBvbiBieSBbQG95ZW51Z2ExN10sIG91cg0KICBmb3JtZXIgT3V0cmVhY2h5IGlu dGVybiENCg0KICAqUmVsZXZhbnQgUFJzIGFuZCBBY3Rpdml0aWVzOioNCiAg4oCiIFBSOiBJbXBs ZW1lbnQgbmV3IGNvbW11bml0eSBvdmVydmlldyBwYWdlIFtvY2FtbC9vY2FtbC5vcmcjMjYwNV0g YnkNCiAgICBbQG95ZW51Z2ExN10NCiAg4oCiIFBSOiBGaXggdHlwbyBhbmQgY2FzZSBpbmNvbnNp c3RlbmNpZXMgb24gY29tbXVuaXR5IHBhZ2UNCiAgICBbb2NhbWwvb2NhbWwub3JnIzI2MTZdIGJ5 IFtAcGpsYXN0XQ0KICDigKIgUFI6IFJlZGVzaWduIE9DYW1sIFBsYW5ldCBQYWdlIFtvY2FtbC9v Y2FtbC5vcmcjMjYxN10gYnkNCiAgICBbQG95ZW51Z2ExN10NCg0KDQpbVUkgZGVzaWducyBmb3Ig dGhlIHJld29ya2VkIGFuZCBuZXcgcGFnZXMgb2YgdGhlIGNvbW11bml0eSBzZWN0aW9uXQ0KPGh0 dHBzOi8vd3d3LmZpZ21hLmNvbS9maWxlLzdobW9Xa1FQOVBnTFRmWkNxaVpNV2EvT0NhbWwtQ29t bXVuaXR5LVBhZ2VzP3R5cGU9ZGVzaWduJm5vZGUtaWQ9NjM3JTNBNDUzOSZtb2RlPWRlc2lnbiZ0 PVJwUWxHdk9wZWcxYTkzQVotMT4NCg0KW0BveWVudWdhMTddIDxodHRwczovL2dpdGh1Yi5jb20v b3llbnVnYTE3Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzI2MDVdIDxodHRwczovL2dpdGh1Yi5jb20v b2NhbWwvb2NhbWwub3JnL3B1bGwvMjYwNT4NCg0KW29jYW1sL29jYW1sLm9yZyMyNjE2XSA8aHR0 cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI2MTY+DQoNCltAcGpsYXN0XSA8 aHR0cHM6Ly9naXRodWIuY29tL3BqbGFzdD4NCg0KW29jYW1sL29jYW1sLm9yZyMyNjE3XSA8aHR0 cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI2MTc+DQoNCg0KR2VuZXJhbCBJ bXByb3ZlbWVudHMgYW5kIERhdGEgQWRkaXRpb25zDQrilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICAqU3VtbWFyeToqDQogIOKA oiBUaGUgc2VsZWN0ZWQgT1MgaXMgbm93IHBhcnQgb2YgdGhlIGFuY2hvciB0YWcgb2YgdGhlIFVS TCBvbiB0aGUNCiAgICA8aHR0cHM6Ly9vY2FtbC5vcmcvaW5zdGFsbD4gcGFnZS4gVGhpcyBhbGxv d3MgcGVvcGxlIHRvIGxpbmsgdG8NCiAgICBxdWljayBpbnN0YWxsIGluc3RydWN0aW9ucyBmb3Ig YSBzcGVjaWZpYyBPUy4NCiAg4oCiIFdlIGFwcHJlY2lhdGUgdGhlIGNvbnRyaWJ1dGlvbnMgdG8g dGhlIE9DYW1sIGRvY3VtZW50YXRpb24hDQogIOKAoiBXZSdyZSBjaGVja2luZyBmb3IgYmFja2xp bmtzIHRvIE9DYW1sLm9yZyBhZ2FpbiB3aXRoIEFocmVmcy4NCg0KICAqUmVsZXZhbnQgUFJzIGFu ZCBBY3Rpdml0aWVzOioNCiAg4oCiIChvcGVuKSBQUjogQnVpbGQgb24gT0NhbWwgNSAob2NhbWxu ZXQgLXNhZmUtc3RyaW5nIHdvcmthcm91bmQpDQogICAgW29jYW1sL29jYW1sLm9yZyMyNjA5XSBi eSBbQGFhbnRyb25dDQogIOKAoiBQUjogQWhyZWYgdGFnIFtvY2FtbC9vY2FtbC5vcmcjMjU3MV0g YnkgW0BjdWlodGxhdWFjXQ0KICDigKIgUFI6IElzc3VlICMyNTgzOiBBZGRlZCBPUyBBbmNob3Ig VGFncyB0byBvY2FtbC5vcmcvaW5zdGFsbA0KICAgIFtvY2FtbC9vY2FtbC5vcmcjMjYwMF0gYnkg W0BTaXN5cGhpYW5MaWdlcl0NCiAg4oCiIFBSOiBQZXJmb3JtYW5jZTogY2FjaGUgc2VhcmNoIGlu ZGV4IGRpZ2VzdCB1bnRpbCBvY2FtbC1kb2NzLWNpDQogICAgY29tcHV0ZXMgaXQgW29jYW1sL29j YW1sLm9yZyMyNjIwXSBieSBbQHNhYmluZV0NCiAg4oCiIERvY3VtZW50YXRpb24NCiAgICDigKIg UFI6IFVud3JhcHBlZCBsaWJyYXJpZXMgW29jYW1sL29jYW1sLm9yZyMyNTYyXSBieSBbQGN1aWh0 bGF1YWNdDQogICAg4oCiIFBSOiBFeHBsYWluIGZvbGRlcnMgYmluLCBsaWIgYW5kIF9idWlsZCBb b2NhbWwvb2NhbWwub3JnIzI1NjhdIGJ5DQogICAgICBbQGN1aWh0bGF1YWNdDQogICAg4oCiIFBS OiBVc2UgYGxheW91dCBvcGFtJyBpbiBgLmVudnJjJyBpbiBvcGFtIHBhdGggZG9jDQogICAgICBb b2NhbWwvb2NhbWwub3JnIzI1OTddIGJ5IFtAc21vcmltb3RvXQ0KICAgIOKAoiBQUjogVXNlIHN1 ZG8gaW4gaW5zdGFsbCB0dXRvcmlhbCBbb2NhbWwvb2NhbWwub3JnIzI1NThdIGJ5DQogICAgICBb QGN1aWh0bGF1YWNdDQogICAg4oCiIFBSOiBBZGQgZG9jdW1lbnRhdGlvbiBhYm91dCBjb21tZW50 cyB0byBUb3VyIG9mIE9jYW1sDQogICAgICBbb2NhbWwvb2NhbWwub3JnIzI2MTNdIGJ5IFtATm9h aFRoZUR1a2VdDQogICAg4oCiIFBSOiBGaXggRXhhbXBsZSByZWZlcmVuY2luZyBUeXBlIG5vdCB5 ZXQgRGVmaW5lZA0KICAgICAgW29jYW1sL29jYW1sLm9yZyMyNjA2XSBieSBbQGF2bGVjXQ0KICDi gKIgUmVmYWN0b3IgKyBDb2RlIGhlYWx0aDoNCiAgICDigKIgUFI6IE9wZW4gRGF0YV9pbnRmIGlu IGRhdGEubWxpIFtvY2FtbC9vY2FtbC5vcmcjMjU2M10gYnkNCiAgICAgIFtAY3VpaHRsYXVhY10N CiAgICDigKIgUFI6IE1ha2UgZGF0YSBlcnJvciBmaWxlIHBhdGggY29weS1wYXN0ZSByZWFkeQ0K ICAgICAgW29jYW1sL29jYW1sLm9yZyMyNTY3XSBieSBbQGN1aWh0bGF1YWNdDQogICAg4oCiIFBS OiBUZXN0IG9jYW1sL3NldHVwLW9jYW1sIHYzIFtvY2FtbC9vY2FtbC5vcmcjMjU3MF0gYnkNCiAg ICAgIFtAY3VpaHRsYXVhY10NCiAgICDigKIgUFI6IFVwZGF0ZSBvY2FtbC9zZXR1cC1vY2FtbCB0 byB2MyBbb2NhbWwvb2NhbWwub3JnIzI1NjVdIGJ5DQogICAgICBbQHNtb3JpbW90b10NCiAgICDi gKIgUFI6IFJlZmFjdG9yaW5nIHBhcnRzIGZyb20gUFIgIzI0NDMgW29jYW1sL29jYW1sLm9yZyMy NTc2XSBieQ0KICAgICAgW0BjdWlodGxhdWFjXQ0KICAgIOKAoiBQUjogQnVtcCBwZXRlci1ldmFu cy9jcmVhdGUtcHVsbC1yZXF1ZXN0IGZyb20gNSB0byA2DQogICAgICBbb2NhbWwvb2NhbWwub3Jn IzI1ODhdIGJ5IFtAZGVwZW5kYWJvdF0NCiAgICDigKIgUFI6IFNldCBPQ2FtbCB0byA0LjE0LjIg W29jYW1sL29jYW1sLm9yZyMyNTg3XSBieSBbQGN1aWh0bGF1YWNdDQogICAg4oCiIFBSOiBmaXg6 IHdyaXRlIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGZvbGRlciBbb2NhbWwvb2NhbWwub3JnIzI1NzJd DQogICAgICBieSBbQGFzaGlzaDBrdW1hcl0NCiAgICDigKIgUFI6IHN5bmMgZGVidWctY2kgYW5k IGNpIFtvY2FtbC9vY2FtbC5vcmcjMjU4Ml0gYnkgW0BjdWlodGxhdWFjXQ0KICDigKIgRGF0YQ0K ICAgIOKAoiBQUjogY2hhbmdlbG9nOiBkdW5lIDMuMTYuMCBbb2NhbWwvb2NhbWwub3JnIzI1NjZd IGJ5IFtAZW1pbGxvbl0NCiAgICDigKIgUFI6IChkYXRhKSBhZGQgT0NhbWwub3JnIG5ld3NsZXR0 ZXIgSnVuZSAyMDI0DQogICAgICBbb2NhbWwvb2NhbWwub3JnIzI1NzVdIGJ5IFtAc2FiaW5lXQ0K ICAgIOKAoiBQUjogQWRkIGNoYW5nZWxvZyBmb3IgdGhlIGxhdGVzdCBtZXJsaW4gcmVsZWFzZXMN CiAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjU4MF0gYnkgW0B2b29kb29zXQ0KICAgIOKAoiBQUjog QWRkIGNoYW5nZWxvZyBmb3IgdGhlIGxhdGVzdCBvY2FtbC1sc3AgcmVsZWFzZQ0KICAgICAgW29j YW1sL29jYW1sLm9yZyMyNTkzXSBieSBbQFBpemllRHVzdF0NCiAgICDigKIgUFI6IEFkZCBtaXNz aW5nIGNoYW5nZWxvZyBmb3Igb3BhbSAyLjIuMCBbb2NhbWwvb2NhbWwub3JnIzI1OThdIGJ5DQog ICAgICBbQGtpdC10eS1rYXRlXQ0KICAgIOKAoiBQUjogQWRkIGNoYW5nZWxvZyBlbnRyeSBmb3Ig cHB4bGliLjAuMzMuMCByZWxlYXNlDQogICAgICBbb2NhbWwvb2NhbWwub3JnIzI2MTVdIGJ5IFtA TmF0aGFuUmViXQ0KDQoNCltvY2FtbC9vY2FtbC5vcmcjMjYwOV0gPGh0dHBzOi8vZ2l0aHViLmNv bS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNjA5Pg0KDQpbQGFhbnRyb25dIDxodHRwczovL2dpdGh1 Yi5jb20vYWFudHJvbj4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTcxXSA8aHR0cHM6Ly9naXRodWIu Y29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1NzE+DQoNCltAY3VpaHRsYXVhY10gPGh0dHBzOi8v Z2l0aHViLmNvbS9jdWlodGxhdWFjPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI2MDBdIDxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjYwMD4NCg0KW0BTaXN5cGhpYW5MaWdl cl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9TaXN5cGhpYW5MaWdlcj4NCg0KW29jYW1sL29jYW1sLm9y ZyMyNjIwXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI2MjA+DQoN CltAc2FiaW5lXSA8aHR0cHM6Ly9naXRodWIuY29tL3NhYmluZT4NCg0KW29jYW1sL29jYW1sLm9y ZyMyNTYyXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1NjI+DQoN CltvY2FtbC9vY2FtbC5vcmcjMjU2OF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5v cmcvcHVsbC8yNTY4Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1OTddIDxodHRwczovL2dpdGh1Yi5j b20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU5Nz4NCg0KW0BzbW9yaW1vdG9dIDxodHRwczovL2dp dGh1Yi5jb20vc21vcmltb3RvPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1NThdIDxodHRwczovL2dp dGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU1OD4NCg0KW29jYW1sL29jYW1sLm9yZyMy NjEzXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI2MTM+DQoNCltA Tm9haFRoZUR1a2VdIDxodHRwczovL2dpdGh1Yi5jb20vTm9haFRoZUR1a2U+DQoNCltvY2FtbC9v Y2FtbC5vcmcjMjYwNl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8y NjA2Pg0KDQpbQGF2bGVjXSA8aHR0cHM6Ly9naXRodWIuY29tL2F2bGVjPg0KDQpbb2NhbWwvb2Nh bWwub3JnIzI1NjNdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU2 Mz4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTY3XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29j YW1sLm9yZy9wdWxsLzI1Njc+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU3MF0gPGh0dHBzOi8vZ2l0 aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTcwPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1 NjVdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU2NT4NCg0KW29j YW1sL29jYW1sLm9yZyMyNTc2XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9w dWxsLzI1NzY+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU4OF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9v Y2FtbC9vY2FtbC5vcmcvcHVsbC8yNTg4Pg0KDQpbQGRlcGVuZGFib3RdIDxodHRwczovL2dpdGh1 Yi5jb20vZGVwZW5kYWJvdD4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTg3XSA8aHR0cHM6Ly9naXRo dWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1ODc+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU3 Ml0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTcyPg0KDQpbQGFz aGlzaDBrdW1hcl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9hc2hpc2gwa3VtYXI+DQoNCltvY2FtbC9v Y2FtbC5vcmcjMjU4Ml0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8y NTgyPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1NjZdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwv b2NhbWwub3JnL3B1bGwvMjU2Nj4NCg0KW0BlbWlsbG9uXSA8aHR0cHM6Ly9naXRodWIuY29tL2Vt aWxsb24+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU3NV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2Ft bC9vY2FtbC5vcmcvcHVsbC8yNTc1Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1ODBdIDxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU4MD4NCg0KW0B2b29kb29zXSA8aHR0 cHM6Ly9naXRodWIuY29tL3Zvb2Rvb3M+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU5M10gPGh0dHBz Oi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTkzPg0KDQpbQFBpemllRHVzdF0g PGh0dHBzOi8vZ2l0aHViLmNvbS9QaXppZUR1c3Q+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU5OF0g PGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTk4Pg0KDQpbQGtpdC10 eS1rYXRlXSA8aHR0cHM6Ly9naXRodWIuY29tL2tpdC10eS1rYXRlPg0KDQpbb2NhbWwvb2NhbWwu b3JnIzI2MTVdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjYxNT4N Cg0KW0BOYXRoYW5SZWJdIDxodHRwczovL2dpdGh1Yi5jb20vTmF0aGFuUmViPg0KDQoNCk90aGVy IE9DYW1sIE5ld3MNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkA0KDQpGcm9tIHRoZSBvY2FtbC5vcmcgYmxvZw0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVyZSBh cmUgbGlua3MgZnJvbSBtYW55IE9DYW1sIGJsb2dzIGFnZ3JlZ2F0ZWQgYXQgW3RoZSBvY2FtbC5v cmcNCiAgYmxvZ10uDQoNCiAg4oCiIFtUaGUgc2xpZGVzIHByZXNlbnRlZCBhdCBGcmFtYS1DIERh eXMgMjAyNCBhcmUgYXZhaWxhYmxlXQ0KICDigKIgW01vbm9jdWx0dXJlIG9mIEluc2VjdXJpdHk6 IEhvdyBDcm93ZFN0cmlrZSdzIE91dGFnZSBFeHBvc2VzIHRoZQ0KICAgIFJpc2tzIG9mIFVuY2hl Y2tlZCBDb21wbGV4aXR5IGluIEN5YmVyc2VjdXJpdHldDQogIOKAoiBbVXBjb21pbmcgT0NhbWwg RXZlbnRzIChBdWcgMjAyNCBhbmQgb253YXJkcyldDQoNCg0KW3RoZSBvY2FtbC5vcmcgYmxvZ10g PGh0dHBzOi8vb2NhbWwub3JnL2Jsb2cvPg0KDQpbVGhlIHNsaWRlcyBwcmVzZW50ZWQgYXQgRnJh bWEtQyBEYXlzIDIwMjQgYXJlIGF2YWlsYWJsZV0NCjxodHRwczovL2ZyYW1hLWMuY29tL2h0bWwv cHVibGljYXRpb25zL2ZyYW1hLWMtZGF5cy0yMDI0L2luZGV4Lmh0bWw+DQoNCltNb25vY3VsdHVy ZSBvZiBJbnNlY3VyaXR5OiBIb3cgQ3Jvd2RTdHJpa2UncyBPdXRhZ2UgRXhwb3NlcyB0aGUgUmlz a3MNCm9mIFVuY2hlY2tlZCBDb21wbGV4aXR5IGluIEN5YmVyc2VjdXJpdHldDQo8aHR0cHM6Ly90 YXJpZGVzLmNvbS9ibG9nLzIwMjQtMDgtMDEtbW9ub2N1bHR1cmUtb2YtaW5zZWN1cml0eS1ob3ct Y3Jvd2RzdHJpa2Utcy1vdXRhZ2UtZXhwb3Nlcy10aGUtcmlza3Mtb2YtdW5jaGVja2VkLWNvbXBs ZXhpdHktaW4tY3liZXJzZWN1cml0eT4NCg0KW1VwY29taW5nIE9DYW1sIEV2ZW50cyAoQXVnIDIw MjQgYW5kIG9ud2FyZHMpXQ0KPGh0dHBzOi8vb2NhbWwub3JnL2V2ZW50cz4NCg0KDQpPbGQgQ1dO DQrilZDilZDilZDilZDilZDilZDilZANCg0KICBJZiB5b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04s IHlvdSBjYW4gW3NlbmQgbWUgYSBtZXNzYWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0IHRvIHlvdSwg b3IgZ28gdGFrZSBhIGxvb2sgYXQgW3RoZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBmZWVkIG9mIHRo ZQ0KICBhcmNoaXZlc10uDQoNCiAgSWYgeW91IGFsc28gd2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5 IHdlZWsgYnkgbWFpbCwgeW91IG1heSBzdWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0K DQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4u c2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFu LnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0 cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0 dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvaW5mby9jYW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1p dHRdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --=-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of July 30 to August 06,= 2024.

Ppxlib dev meetings

Continuing this thread, Patrick Ferris announced

Meeting notes are available here: https://github.com/ocaml-ppx/ppxlib/wiki= /Dev-Meeting-2024-07-23

Thank you to all of the participants. If anyone is interested in adding ite= ms for the next meeting in August do ping me.

Until then happy ppx-ing :))

Pragmatic Category Theory

Dmitrii Kovanikov announced

I started writing a series on Pragmatic Category Theory for Beginners focusing on real-world use cases rather than theory. All code examples ar= e in OCaml.

The first part was just finished:

It's just the beginning, and I have plans to describe more and provide more= examples in future parts. I also plan to make a video version as well.

I hope you'll enjoy it!

ppxlib.0.33.0

Nathan Rebours announced

The Ppxlib dev team is happy to announce the release of ppxlib.0.33.0= .

You can find the full changelog for this release here.

Warning silencing for [@@deriving ..] ge= nerated code

This release's main feature is a series of improvement to flags controlling= unused value/module/type warnings silencing.

The ppxlib driver generates warning silencing items to prevent= [@@deriving ...] generated code to trigger unused code warnings. Three warnings are disabled= that way:

  • Warning 32: unused value
  • Warning 60: unused module
  • Warning 34: unused type

The first two are disabled for values and modules generated by the deriver = while the third is disabled for the types in the type declaration to which = the [@@deriving ...] attribute is attached.

This feature was added a long time ago to avoid manually disabling those wa= rnings when working with derivers that generate a set of values and modules= only to use a subset of those. Alternatively, the unused type warning sile= ncing was added to allow defining an alias type only to be consumed by a de= river, e.g.:

type error =3D [`Not_found | `Invalid_arg]=
 [@@deriving to_string]

We since then believe that we should not disable warnings lightly, as this = behaviour makes it difficult to find and remove dead code. The right approa= ch in those situations should be to fix the PPX derivers so that they are m= ore configurable and can be used without triggering such warnings.

We will start to move toward removing this feature, but since it is still u= seful in some places, we had to come up with a plan to allow transitioning = out of it.

In ppxlib.0.31.0 we added the -unused-code-warnings driver flag and the ?unused_code_warnings's Deriving.V2.make optional= argument to control whether to silence Warnings 32 and 60. When both are s= et to true, by the user and the deriver authors, the warnings = are not silenced.

As of ppxlib.0.33.0, these also control the silencing of Warni= ng 34 (unused type). force can now be passed to the -unu= sed-code-warnings flag in order to disable warnings silencing, regar= dless of the derivers opting in.

This allows users to test whether their codebase and their set of derivers = rely on warning silencing or not and to use those results to eliminate dead= code and/or report issues upstream to the derivers they use.

We also added a separate -unused-type-warnings flag that works= similarly to -unused-code-warnings (i.e., depends on the value of the ?unused_code_warnings argument), but it only controls Warning 34 si= lencing, as it turns out it is less likely to cause unwanted warnings than = with the other two. This will allow users to disable it more easily, withou= t having to deal with Warnings 32 and 60 straight away.

We want to encourage users to try those on their codebase in order to see t= he impact it has. Did you have dead code lying around that slipped past und= etected? Does this trigger unwanted warnings because of deriver's generated= code?

The plan is to give the ecosystem some time to try those features and adapt= by fixing individual derivers and flipping ?unused_code_warnings to true as they do. After a while, we will swap the default value of th= e driver flag to true so that only derivers that haven't opted= in will enable warning silencing. Then as time goes we will swap the defau= lt of the Deriving.make argument so that derivers will instead= have to explicitly opt out to get the warning silencing. Finally, once we = are confident the ecosystem is in a good enough state, we will remove this = feature altogether.

Other features

ppxlib.0.33.0 also comes with a couple of new features for PPX= authors:

  • A couple new Ast_builder functions: elist_tail and plist_tail that can be used to build list expressions and patterns with a custom tail: elist_tail [expr1; expr2] tail_expr returns the expression for expr1::expr2::tail_expr.
  • Context_free.special_function', a new version of spe= cial_function that allows passing a Longident.t directly rather that relying on p= arsing the string argument to a Longident.t.

Finally, the release includes a few bug fixes to Longident.parse and Code_path.main_module_name and fixes the location-check<= /code> flag so it is not required to also pass -check to enable location checks. It als= o fixes the 5.2 migrations locations, as we used to build nodes with inconsistent locations= when migrating Pexp_function nodes.

Huge thanks to our external contributors

We would like to thank our external contributors who have been a huge part = of this release: @octachron, @vg-b, and @jchavarri, and a special mention t= o @mbarbin, who has not only contributed a lot to the warning silencing fea= tures but has been extensively testing and providing very useful feedback o= n them.

And of course, as usual, we'd like to thank the OCaml Software Foundation w= ho has been funding my work on Ppxlib and on this release, making all of th= is possible!

OCaml-LSP 1.19.0 for OCaml 5.2

vds announced

I am happy to announce, on behalf of the ocaml-lsp team, the release of ocaml-lsp-server 1.19.0 and associated libraries. Th= is release primary goal is to bring official support for OCaml 5.2 =F0=9F= =90=AB.

Features

  • Add custom [~ocamllsp/getDocumentation~](/ocaml-lsp-server/docs/ocamlls= p/getDocumentation-spec.md) request (ocaml/ocaml-lsp#1336)
  • Add support for OCaml 5.2 (ocaml/ocaml-lsp#1233)

Fixes

  • Kill unnecessary ocamlformat processes with sigterm rather than sigint = or sigkill (ocaml/ocaml-lsp#1343)

MlFront - A packaging system for OCaml

jbeckford announced

Here are the introductory paragraphs from its overview:

MlFront adds a Java-like packaging system to OCaml. The = MlFront name is a homage to cfront which was tooling th= at translated "C with Classes" (now known as C++) into C code. Similarly, <= code>MlFront-based tools can translate OCaml with packages into conv= entional OCaml. … At its most basic core, MlFront gives a well-defined, consiste= nt meaning to a module reference like AcmeWidgets_Std.Activities.Manu= facturing across the domains of:

  1. OCaml source code.
  2. findlib libraries.
  3. opam packages.

MlFront is Apache 2.0 licensed and is meant to be used by buil= d systems (Dune, ocamlbuild, DkCoder) and package managers (opam). One of i= ts critical dependencies is codept.

You can read more about MlFront in the following posts (with m= ore coming):

Cross-post notice: The first article was posted at https://lobste.rs/s/7ghslo/overview_o= camlfront; no comments (:(). But I still like to get first-hand feedbac= k on what works well in other languages, so please chime in even if you don= 't feel that OCaml is your strong suit.

OCaml.org Newsletter: July 2024

Sabine Schmaltz announced

Welcome to the July 2024 edition of the OCaml.org newsletter! This update h= as been compiled by the OCaml.org maintainers. You can find previous updates on Disc= uss.

Our goal is to make OCaml.org the best resource for anyone who wants to get= started and be productive in OCaml. The OCaml.org newsletter provides an u= pdate on our progress towards that goal and an overview of the changes we a= re working on.

We couldn't do it without all the amazing people who help us review, revise= , and create better OCaml documentation and work on issues. Your participat= ion enables us to so much more than we could just by ourselves. Thank you!

This newsletter covers:

  • Community-Driven Development of OCaml.org
  • Recipes for the OCaml Cookbook: Help us make the OCaml Cookbook = really useful by contributing and reviewing recipes for common tasks!
  • Community & Marketing Pages Rework: Implementation work in p= rogress.
  • General Improvements: As usual, we also worked on general mainte= nance and improvements, so we're highlighting some of the work that happene= d below.

Community-Driven Development of OCaml.org

After reworking most of the OCaml.org website to be more useful, more usabl= e, and nicer to look at, the team at Tarides that has been working on OCaml= .org is disbanding. However, OCaml.org will continue to be maintained and e= xtended by by the OCaml Platform and OCaml compiler contributors, as well a= s by the wider OCaml community.

You can reach out to the OCaml.org maintainers to discuss any bigg= er changes or additions you'd like to make. Contributions to improve existi= ng features and bug fixes are always welcome!

Recipes for the OCaml Cookbook

The OCaml Cookbook is a place where OCaml developers share how to solve com= mon tasks using packages from the ecosystem.

A recipe is a code sample and explanations on how to perform a task using a= combination of open-source libraries.

The Cookbook is live at ocaml.org/co= okbook.

Here's how you can help:

  1. Help review the open pull requests for cookbook reci= pes!
  2. Contribute new recipes and tasks for the cookbook!

Thank you all for the many contributions! One area where we could use help = is in reviewing and improving the suggested recipes and tasks.

Relevant PRs and Activities:

Community & Marketing Pages Rework

We have UI designs for the reworked and new pages of the = community section, and implementation is being worked on by @oyenuga17, our former Outreachy intern!

Relevant PRs and Activities:

General Improvements and Data Additions

Summary:

  • The selected OS is now part of the anchor tag of the URL on the https://ocaml.org/install page. This all= ows people to link to quick install instructions for a specific OS.
  • We appreciate the contributions to the OCaml documentation!
  • We're checking for backlinks to OCaml.org again with Ahrefs.

Relevant PRs and Activities:

Old CWN

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a loo= k at the archive or the <= a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive= s.

If you also wish to receive it every week by mail, you may subscribe to the= caml-list.

--=-=-=--