From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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=T0MvNt8v; dkim-atps=neutral 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=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id 2CCDA400B7 for ; Tue, 19 May 2026 08:52:35 +0000 (UTC) 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=ZBfOIcc2WIeNFnT7mTKpmHU+H3a6zS48W2etLsw/5vU=; b=T0MvNt8vMIpeSn4dDV0JY2youJPPxnabF4UM8i06VFOtpnGu4KDew4b/ d9OuDOyz7ck/BXqUrJ1GBIahaC+6p00toTfnsiTTcWh0Zbws3Ss+18Gr4 lhRielDQxoibe+ngPSh6sNXpw0V3BXFiLz7iEDg4OUlyBJ1M7duXG4Hyz 4=; X-CSE-ConnectionGUID: 2UFVzYcbQNed4VaWt/cF7w== X-CSE-MsgGUID: UCqAsKFyQhOt/Fd3wYGhXA== Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@prod-sympa-app.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.27 as permitted sender) identity=mailfrom; client-ip=128.93.162.27; 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 ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 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@prod-sympa-app.inria.fr) identity=helo; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@prod-sympa-app.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.23,243,1770591600"; d="asc'?scan'208,217";a="277203385" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 19 May 2026 10:52:33 +0200 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 337CC82A39; Tue, 19 May 2026 10:52:33 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id D9ACC82A39 for ; Tue, 19 May 2026 10:52:25 +0200 (CEST) X-CSE-ConnectionGUID: wCqlIxFSSPO/n/3d6HNyTA== X-CSE-MsgGUID: 8FErbdeFQc6BErLDXA0tHQ== IronPort-SDR: 6a0c24c8_nA3e+W+p3IhAavz4u1i129f5jCnc8JaK4nNSNg2DNxB7k0y 8XK5/XdSv7BzJxpgFj9p0AH/hkZfXbNwnkSLDpQ== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0ErBQB4JAxqjyIeaIFQCoQWgQQbAWxfMwcISQOEVYNPj?= =?us-ascii?q?iWRTYhLgjANgVyBEQMYFiECDgcBAwEIBS4BBRoBAgQBAQECAQIBgguCLkYYj?= =?us-ascii?q?R0CHwYBBDQTAQIEAwIDAQEBAQEBAQEBAQELAQEBBAEBAQIBAQIEAwEBAQECE?= =?us-ascii?q?AEBAQEBATkFSYZPDYJFUXFlCTcBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQECBAgBKXUJChMBASsDChgjAxQBBgMCBA0BNQMBE?= =?us-ascii?q?wESFAaCaAGCIgJPAwUMBpQgm0R6gTKBAYIMAQEGgQhTAQ4J2jqBXgkJgTUYg?= =?us-ascii?q?ViBAYMZgksPDQEqSWoCAQKETwmENycPgVVEgRU1gkRvgkoXAQEBAVxIBAkLA?= =?us-ascii?q?QFNgy6CaYIRFYEOgXuCdAUbNIFkh0+CQiwBVRMXCwcFXoEIAyovLW4yHYEjP?= =?us-ascii?q?hczWBsHBYFLgTeBXIEEhF54IywDS4ErdQMLbT03FBuJORAhDYEkRBkcD4FdB?= =?us-ascii?q?g4LFCABDx0fEAQBAhgOBQEbDgIFGwIkCggjFgoTBhkNBAoFFgERFwYLOpJOH?= =?us-ascii?q?xUFJXecf5RjNAeEH4FeBgyJCIEmkjCDV4QEgVeLPJlUIphkIoI2hygzKkkJg?= =?us-ascii?q?W9rlWAICw2FOIF/Iy4bfg4HMxowIiGCZwlHHA+SI4E+gSaBJFA7TsIqMkI1A?= =?us-ascii?q?gEBBwMxBwIHDgKFawEBjDqBSwEB?= IronPort-PHdr: A9a23:IyM9uxWWFFMAh3/ar1q+POXJgm/V8KyjWzF92vMcY1JmTK2v8tzYM VDF4r011RmVBtids6oP0raP6PioGTRZp8ra7DZaKN0EfiRGoPtVtjRoONSCB0z/IayiRA0BN +MGeXlbulqWCgxrIvv4fEDYuXao7DQfSV3VPAtxIfnpSMaJ15zkn++99IfObApWmTGzfa19L AmsrQXWq8IanZZuJrw+xxbHonZEYfhayX9nKV6OkBvw+8m98IJ++ChUp/4t6tRMXKr0cqk3V 7BUECgqP2Uo78D3qBfPSheC6XQbXmgKiBRDHhLL7Av9Xpf/syv6svRy1SyHNsDoTr46RCqv4 b5zRBHnkCkIOCc1/X/YhMJtlK5Urw6vqBJ5w47PfYGaL+F+cb/HfdMbXmVOQMBcXDFcD4ymb osPC+0BPftEr4T4ulADoweyCRWqCejyzTBGm2L23bYi0+s/DQ7GwAIuH9ULsHvOrdX1MroZX eS6waTMyDnOae5d1zXg54jSah0voe+CU69+f8TSxkYgCxjIjlqMpYH/JT6ZyvgBvmqd4uF9V eyvkWknqwRprzWzwscjkI/JjZ8IxF/Y9SV5xYc1JcGkSEVmZtOrCp9QuDucN4dsWcMtX2Fou CM7yr0apZ62ZzAKyJMjxx/fd/yIbZSH4hLlVOaQODd4mWxqdKi4hxao/kit0+vxXdS731hWt CRKiMXMtmwT2BzJ7MiKUudw80S/1DuRygze5PxIL0A2mKfHKZMs3Lo9m5oQvEjeECH4llj7g bKZe0gn5uSm5evpb7XpqJGSOIJ5lwXzP6sol8eiD+o4NQ0OUHKa+eS6zLDj5VP2QKlLjv0qj KbZqJfaJcEepqGnGQNV1Jgs6wqnAzehzNsXh3wHLFZfdBKAlYjpNEnCIOjiAvekn1Sjjixkx /HAPrH7HprNKX3DnK/ufbZ8905cyBczwstF651IDbEBJer/WkDwtNzEDh85Lhe7z/z9BNph0 YMeXHqDAqCYMKPOsV+I+/kgL/ONZI8SoDryN/wl5/nzjXAkg1MSYa6p3Z4PZH+iGPRpPl+Zb mTig9cCD2gKug4+Q/LqiVGYVD5ceW6+X6095jEnDIKpF5zMSpqxj7yG2Se3BpxXZmFJClyWF Hfoc52IW+wMaSKUPs9hkiILVaSgS4A9yB6hqgr6y716IebO/y0YsYrv28Ju5+LPlBEy9Dp0A NqY026XVW10mXkIRzAu0KB7u0N9zEqM0axmjP1YD9BT4e1GUhsiOZ7Tzux6F9TyVRjacduTS VamRc2qATA3TtIrwt8BeVxxG9u4jh3FwiGkAKcVmqSWCJAq9q/QxWX9K9pyxnrc2qQtk0MqT 8VAOGG+m6Jy+RXfC5TXn0iZmKumb7oQ0DPX+GudwmeDuEdVWxNqX6rfR3AQfE7WoMz55kzcS 7+uDqwqMg5OyMKfMKdKctrpjVFGRff/JtvRf2Kxm2GxBRaR27ODcpDme2IH3CXSEEQEkgYT8 miaNQUmGyutvWbTACZzGV7zbE7g6+dzpG+hQkI6wAyGd0hh2KC0+h4Ri/ycUfQT3rcctSk8t zt6AUqx0srUBNqGuwdvYL1Rb90m7lpfzWLZsAh9P5y8L698mlEecwJ3v0L31xVqFIpMi88qr GklzAdqM62Y1ElOdzWC0ZDrJrLXKmzy/BGza67KwVzRy9GW+roJ6PsktVrjpxulFk8t/nRoy dVV1GGc5prSAAoITZ3xSlo39wR9p7zCfiYy/YbU1Xl1Pamwsz/CwM4pCfA+yhegetdfKLmLG BXzE80cHciuKfYll0KnbhIeJOxS8rU7MNu8d/SawK6rIPpgnDW+gGha+Ix93VyD9y1/RODSx 5sLw+2W0hOdVzjiklevsdr5lJhBZTAdA2az0zDkBIlVZqxyYYYEF3uhI82xxtV/np7tRmBX+ ESkB1Mc18+lYQedb1/83Q1VzUkZuXOpliWmwTJojzwnqLKT0zHLw+v4bhoIJnZGSnF7g1n0L oa4l8saXFCmbwUxjhWo+Vv0ybVDqKRkN2nTT19HfyjoIGFmVau9rqCMbtJS5p014m1rV7H2Z U+cAPappwQc+yf8GS1YySxtM3mhs5D92hh7k361LXBprXOfd9sj6w3Y4Yn1QfdXlgENRCx5l SWfUlG4Nt/v5t6UkpbfrsimUGawSpBYcS/q1J6N8iyh6js5UlWEg/mvl4i/QkAB2ijh2ow2B E0gzT75a4jvjeGhNP5/O1NvDxn64tZ7HYd3ls0xgosR0D4UnMbd5mIJxEH0N9gTwqfidDwVX zdeytrc5k7+001mL26V75r+UmSBz8BhYdijf25Q3TgyvIhREKnB1LVfhmNup0ag6wfYYPxzh DAYnMAU0yZPsucggl8B93CFBbQDAURTPSrtjgmFqdeko/BeYG+pN6O71E9/gcyJBrafpApRQ zD8JodkGjV/vY1kKFyZ6HTo8cn/fcXIK9IeshrBixDbk+1cM448jNIPlXMhIWX5rGEowO49j AVz0Ne9pofvx3xF2qW/D1YYMzT0Y5lW4TTxleNEmc3Q2YmzH5JnEzFNXZ3yTPvuHihA/fLgf x2DFjExsBL5UfLWABOf5UF6rnnOD4HjNneZI2McxMljQx/VLVJWgQQdVjE31pAjEQXiyMvke UZ/rjcfgzyw4hJIw+QuLBL/V2bDuC+wbTMlVJWULBxX9xxPoUDPPo3W7+5+GT1Z4oz0tBaEe Qn5L0xDCWAEXFDBBki2Z+P/o4CYr67DXqzlc6irA/3Gs+FVWvaWyIj614Jn+2zJLcCTJjx4C PZ93ENfXHd/EsCfmjMVSiVRmTieCqzT7Bq65CBzqdiytfrxXwe6r7C1MOMHANNGwUWauPKbM OqBmCtyKTBZz44Bg3jSx+0W2FcUzTpldzysDagovynQSqndgelSUw5dbDl8fpgtjep0zkxWN MjXh8mgnLd8h/hzEFxFUF39humxYsgbP2y2NFXGHVuGcrOcKneYpqO/KbP5QrpWguJOshS2s jvOCE7vMAOIkDzxXgyuO+VB5M2CFCRXo5r1MhNkCGy5CcnjdgX+Kth8yzs/3bwzgHrOc28aK zl1NU1X/PWc6iZRg/M3HGIkjDItFtO/w3Oo6cDif7ov5ONsBjVomula5nUj1rYT6ztLEfVxk S2UtdVuplC6jsGFzSdhWxdV7DMXlMSMp0oHW+2R+pRbWHnC9Q4A9i3JUUVM/oM5TIa3/fsMg tHU3Lr+MjJD787Z8YMHCs7YJdjGVRhpeRvlFTjIDRcUGDuiNGXRnUtYw7mZ8nyYqIR/q4C5w cBfDOYDCBpuTrVBVhcAfpRKOpp8UzI6nKTOiccJ4SD7txzNXIBAuZuBUPuOAPLpITLfjL9eZ hJOz6mrSOZbfoD9xUFmbUF32YrQHE+FF+t3mXU0XwkdmhBhyS1mSWkix0/uagWs+WIeU/muk Us/jgJ4J/8m9DLt/0sfLF3XoiA9iw80xcWjhiqeOm2UTu/4TcRNBiz4ulJkeKjBeF4gXAubp xlIDWLcQLZAk7ZrdWZqkRLR/5xVFqtVSaRCJgQbxfSWe+kA21NBrC6q3glCufuDDoFt3lhPE 9bkvzdL3ARta8QwLKrbKf9Sz1ResamJuzehyuE7xAJNb1ZI6m6ZfzQE/VAZLrRzbTT95fRis EbR/lkLMHhJTfchpehms18wK/jVhTy1yKZNcwjyNvTDffrD6i6ZzZLOGQt2jR9A1Ehdoeovi 5ZlKhLIERt3iuDMcnZBfYnDMV0HPpMUrSKKO3jU97yVnto2Pp3jRLqwFbbc6P8Y2hCtTlkgE tlevJoNQcn+ixq9T4+vb78dl0d3vFyydgncAKwbIUDazDsK8ZPgl8F7j9YBeWlVRGx5NW/fC q//ngYxm7LDWd43Zi1fRY4YLjcsX8b8nSdFvnNGBT3x0+QDyQHE4SWu7ijXCTD9aZJkapL2L Vt0D8qq/Dwk76WsoVvHq9PGIGXrKdlputnO8P4X4ZGdBLtYQKJ8vEHVh4RDDyXwAiiWSYLzf MC2MNVkZMeRaD7ySlGljjMpU8r9dM2gKKSFm0CgRIpZtpWawCF2NcK5EWJWEBNxqucfoaNkM FRZMtxiOUKu7Fx4bPDsRWXQms+jSGusNzZMGvxWzOHgIqdS0zJpdOixjn0pUpA9yeCzt08LX pADyB/ElpPBL8FTVzb+HntFdkDBvy08wiJaDN1ql9Y56SmdnWBJKzePZfBkY2xCvsghCBWVO 3ojA24xQRmHhorG4xKw97oV4i1Wks0S1LFV9n/ksdWMBVDkELzuspjTvyc6OJI+pLZtNIX4P sacnJbOx3rHS53BrgCOUCi7DudX3N9KL2gLJZsA0XFgMssAt41b7EM3XcprPL1DBp4nobWyY CZlByofnmcJEpmN1zsYjqKgyqPXw12OJY86PkVO4/AgypMNFjR7aSQEqOq/WpXKwiWaH3MTL l5b5EwJ7QYE3OeYm8j9547ZUJJHyzhXuu95FCzRGcswn7MaYmSG2B7gT/Gwj+Gi3QRT1e/hl N4BV0wmYaCy7+xRi00jJaoxLvUA+InQvW3RHX4= IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:/1NV/auHFTgRkGZeZDxpZqbn7skDWNV00zEX/kB9WHVpm5Sj5q eTdPRy73DJYUUqKRcdcLG7SdO9qBznhP1ICOUqUItKGTOW3FdAT7sSkLcKoQeQeREWn9Q1vc wLT0E9MqyUMbEQt6jHCXyDc+rIt+PnzEnHv4vjJjxWPHhXgulbnn9E4yigYzZLeDU= X-Talos-CUID: =?us-ascii?q?9a23=3A3BdnmWsi3mbCC68g37sgBoLT6Is6WWTZ7Wf+GHS?= =?us-ascii?q?ALiFvD+aZF3+26Z9Nxp8=3D?= X-Talos-MUID: 9a23:6tTr9ArPcnFyYsxo1UMez2FMGd1i76mAMUtTu7gcn+W0HHRsGw7I2Q== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.23,243,1770591600"; d="asc'?scan'208,217";a="277203275" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-MGA-submission: =?us-ascii?q?MDGmZVe+bRwglRS6Jc/lo7EkppyZsWQSNBbfm+?= =?us-ascii?q?26Rv70qE3/8CGuKGwaH9yxC/WyQynWz37AHtHKl2+AIqutZKaQlZ4feY?= =?us-ascii?q?YVxbHGREe+ttr5vNhUxuDRGrIx96nYEFWBSzS4uJk3cIf9SQrUrsbK+X?= =?us-ascii?q?ZbARjYsq9ANdLGW8h/unGvdA=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 May 2026 10:52:24 +0200 Received: from mac-03220211.irisa.fr (mac-03220211.irisa.fr [131.254.21.249]) (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 F395B1A55F; Tue, 19 May 2026 10:52:23 +0200 (CEST) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 19 May 2026 10:52:21 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="===-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue May 19 10:52:24 2026 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.434588, queueID=217C21A561 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: 19509 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: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: multipart/alternative; boundary="==-=-=" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgTWF5IDEyIHRvIDE5LA0KMjAyNi4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpob3RzZWF0IFNx dWF2YSAoYSB0aW55IExhYmxHdGsyIGRlbW8pDQpSZXF1ZXN0IGZvciBjb21tZW50czogV2hhdCB0 byBkbyB3aXRoIG9wYW0gcGFja2FnZXMgdGhhdCBoYXZlIGtub3duIHNlY3VyaXR5IHZ1bG5lcmFi aWxpdGllcw0Kb2RvYyAzLjIuMSByZWxlYXNlDQpMaXN0IHlvdXIgb3BlbiBPQ2FtbCBwb3NpdGlv bnMgb24gdGhlIE9DYW1sLm9yZyBqb2IgYm9hcmQNCkNhbW15IFN0b3JpZXM6IGEgc21hbGwgT0Nh bWwgd2ViY29taWMgZXhwZXJpbWVudCDwn5CrDQpNbEZyb250X1Byb2dyZXNzWmlnIC0gWmlnLWNv bXBhdGlibGUgcHJvZ3Jlc3MgdHJlZXMNCmxvbyAtIGx1YSBvZiBvY2FtbA0KT2xkIENXTg0KDQoN CmhvdHNlYXQgU3F1YXZhIChhIHRpbnkgTGFibEd0azIgZGVtbykNCuKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxo dHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWhvdHNlYXQtc3F1YXZhLWEtdGlueS1sYWJs Z3RrMi1kZW1vLzE3OTU3LzI+DQoNCg0KQ29udGludWluZyB0aGlzIHRocmVhZCwgRGFtaWVuIEd1 aWNoYXJkIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAg TmV3ZXIgMS4yIHZlcnNpb24sIG5vdyBkZXRlY3RzIGV2ZW50dWFsIGRyYXcgZ2FtZXMuDQoNCiAg PGh0dHBzOi8vcGFzdGViaW4uY29tL0RqWjAzeVBhPg0KDQoNClJlcXVlc3QgZm9yIGNvbW1lbnRz OiBXaGF0IHRvIGRvIHdpdGggb3BhbSBwYWNrYWdlcyB0aGF0IGhhdmUga25vd24gc2VjdXJpdHkg dnVsbmVyYWJpbGl0aWVzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3Jl cXVlc3QtZm9yLWNvbW1lbnRzLXdoYXQtdG8tZG8td2l0aC1vcGFtLXBhY2thZ2VzLXRoYXQtaGF2 ZS1rbm93bi1zZWN1cml0eS12dWxuZXJhYmlsaXRpZXMvMTgwODcvMT4NCg0KDQpIYW5uZXMgTWVo bmVydCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIERlYXIgZXZlcnlvbmUsDQoNCiAg d2UgKHRoZSBPQ2FtbCBzZWN1cml0eSkgdGVhbSBpcyBjdXJpb3VzIHdoYXQgdGhlIHByYWN0aWNl IHNob3VsZCBiZQ0KICBmb3Igb3BhbSBwYWNrYWdlcyB0aGF0IGhhdmUga25vd24gc2VjdXJpdHkg dnVsbmVyYWJpbGl0aWVzPw0KDQogIE9uZSB3YXkgaXMgdG8gbWFyayB0aGVtIHdpdGggYGF2YWls YWJsZTogZmFsc2UnIGluIHRoZQ0KICBvcGFtLXJlcG9zaXRvcnksIHdoaWNoIHdpbGwgbWFrZSB0 aGVtIG5vdCBpbnN0YWxsYWJsZSAoYXBhcnQgZnJvbSBpZg0KICB5b3UgbWFudWFsbHkgZWRpdCB0 aGUgb3BhbSBmaWxlKS4NCg0KICBFc3BlY2lhbGx5IGZvciB0aGUgT0NhbWwgY29tcGlsZXIgaXQg aXMgYSB0cmlja3kgcXVlc3Rpb246IHRoZSByZWNlbnQNCiAgdnVsbmVyYWJpbGl0eSAoaW4gTWFy c2hhbCkgYWZmZWN0cyBldmVyeXRoaW5nIDwgNC4xNC4zIHwgPiA1ICYgPCA1LjQuMQ0KICDigJMg c28gbWFya2luZyB0aGVzZSBjb21waWxlcnMgYXMgdW5hdmFpbGFibGUgd2lsbCByZXN1bHQgaW4g bG90cyBvZg0KICBwcm9qZWN0cyB0aGF0IHJlcXVpcmUgc3VjaCBvbGRlciBPQ2FtbCB2ZXJzaW9u cyB0byBub3QgYmUgZWFzaWx5DQogIGluc3RhbGxhYmxlIGFueW1vcmUuIEVzcGVjaWFsbHkgc2lu Y2UgdGhlIE1hcnNoYWwgaXNzdWUgaXMgbm90IGV4cG9zZWQNCiAgaW4gbWFueSAoYW55PykgYXBw bGljYXRpb25zLCBpdCBmZWVscyB3cm9uZyB0byBkaXNhbGxvdyAvIG1ha2UgaXQgaGFyZA0KICBm b3IgYW55b25lIHRvIGluc3RhbGwgdGhlc2UgY29tcGlsZXJzLg0KDQogIFNvbWUgaWRlYXMgd2Ug aGF2ZSBmb3IgdGhlIGZ1dHVyZToNCiAg4oCiIGFubm90YXRlIHRoZSBleGFjdCBmdW5jdGlvbihz KSB0aGF0IGlzL2FyZSB2dWxuZXJhYmlsZSBpbiB0aGUNCiAgICBzZWN1cml0eSBhZHZpc29yeSAo dGh1cywgeW91IGNvdWxkIGF1dG9tYXRpY2FsbHkgc2VhcmNoIGZvciB1c2Ugb2YNCiAgICB0aGF0 IGZ1bmN0aW9uKQ0KICDigKIgcHJvdmlkZSBhbiAib3BhbSBhdWRpdCIgd2hpY2ggdGFrZXMgdGhl IGFkdmlzb3J5IGRhdGFiYXNlIGFuZA0KICAgIGluc3BlY3RzIHlvdXIgb3BhbSBzd2l0Y2ggd2hl dGhlciB5b3UgaGF2ZSBpbnN0YWxsZWQgYW55IHZ1bG5lcmFibGUNCiAgICBwYWNrYWdlDQoNCiAg QnV0IGZvciB0aGUgc2hvcnQgJiBtZWRpdW0gdGVybSwgd2UnZCBhcHByZWNpYXRlIGlucHV0IG9u IHdoYXQgdG8gZG8NCiAgd2l0aCBub3JtYWwgb3BhbSBwYWNrYWdlcyB0aGF0IGhhdmUgYWR2aXNv cmllczsgYW5kIGFsc28gd2hldGhlciB0bw0KICB0cmVhdCB0aGUgY29tcGlsZXIgcGFja2FnZXMg ZGlmZmVyZW50bHkgb3Igbm90Lg0KDQoNCm9kb2MgMy4yLjEgcmVsZWFzZQ0K4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTog PGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tb2RvYy0zLTItMS1yZWxlYXNlLzE4MDg4 LzE+DQoNCg0KSm9uIEx1ZGxhbSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFRoZSBvZG9jIHRlYW0gaXMg cGxlYXNlZCB0byBhbm5vdW5jZSB0aGUgcmVsZWFzZSBvZiBvZG9jIDMuMi4xIQ0KDQoNCkhpZ2hs aWdodHMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQril4ogT0NhbWwgNS41LjAg c3VwcG9ydA0KDQogIG9kb2Mgbm93IGNvbXBpbGVzIGFnYWluc3QsIGFuZCBwcm9kdWNlcyBkb2N1 bWVudGF0aW9uIGZvciwgT0NhbWwgNS41LjANCiAgKEBwYW5nbGVzZCwgQHh2dywgWyMxNDA2XSku DQoNCg0KICBbIzE0MDZdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2RvYy9pc3N1ZXMvMTQw Nj4NCg0KDQril4ogT3hDYW1sIHN1cHBvcnQNCg0KICBvZG9jIG5vdyBzdXBwb3J0cyBPeENhbWwg bmF0aXZlbHksIHRoYW5rcyB0byBAbHVrZW1hdXJlciBhbmQgQGFydC13DQogIChbIzEzOTldKS4g UmlnaHQgbm93IHRoaXMgaXMgdmVyeSBiYXJlLWJvbmVzLCBidXQgZnVsbCBzdXBwb3J0IGZvciB0 aGUNCiAgdmFyaW91cyBmZWF0dXJlcyBvZiBPeENhbWwgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4g SWYgeW91J3JlDQogIGludGVyZXN0ZWQsIGNoZWNrIG91dCB0aGUgW1BSc10hDQoNCiAgT25lIHRo aW5nIHdvcnRoIGZsYWdnaW5nOiBiZWNhdXNlIE94Q2FtbCBpcyBtb3ZpbmcgbXVjaCBmYXN0ZXIg dGhhbg0KICB1cHN0cmVhbSBPQ2FtbCwgZWFjaCBvZG9jIHJlbGVhc2Ugd2lsbCBsaWtlbHkgc3Vw cG9ydCBvbmx5IGEgc2luZ2xlDQogIE94Q2FtbCByZWxlYXNlLCBpbiBjb250cmFzdCB0byBvdXIg dXN1YWwgcG9saWN5IG9mIHN1cHBvcnRpbmcgZXZlcnkNCiAgT0NhbWwgYmFjayB0byA0LjA4LiBJ ZiB5b3UncmUgZG9jdW1lbnRpbmcgYW4gT3hDYW1sIHByb2plY3QsIHBsZWFzZQ0KICB1c2UgYSBt YXRjaGVkIHBhaXIgb2Ygb2RvYyBhbmQgb3hjYW1sLWNvbXBpbGVyLg0KDQoNCiAgWyMxMzk5XSA8 aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29kb2MvaXNzdWVzLzEzOTk+DQoNCiAgW1BSc10gPGh0 dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vZG9jL3B1bGxzPg0KDQoNCkFkZGVkDQrilYzilYzilYzi lYzilYwNCg0KICDigKIgUGVyc2lzdGVudCBMYVRlWCBtYWNyb3MgaW4gdGhlIEhUTUwvS2FUZVgg YmFja2VuZCAoQGRsZXNicmUsDQogICAgWyMxMzkxXSkuDQogIOKAoiBUaGUgYG1hcmtkb3duLWdl bmVyYXRlJyBjb21tYW5kIG5vdyBhY2NlcHRzIG11bHRpcGxlIGAub2RvY2wnIGZpbGVzDQogICAg aW4gYSBzaW5nbGUgaW52b2NhdGlvbiwgc28geW91IG5vIGxvbmdlciBuZWVkIHRvIHdyYXAgaXQg aW4gYSBzaGVsbA0KICAgIGxvb3AgKEBkYXZlc254LCBbIzEzODddKS4NCg0KDQpbIzEzOTFdIDxo dHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2RvYy9pc3N1ZXMvMTM5MT4NCg0KWyMxMzg3XSA8aHR0 cHM6Ly9naXRodWIuY29tL29jYW1sL29kb2MvaXNzdWVzLzEzODc+DQoNCg0KQ2hhbmdlZCAvIEZp eGVkDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwNCg0KICDi gKIgRml4ZWQgdHdvIGxvbmctc3RhbmRpbmcgY29tcGlsZS10aW1lIGNyYXNoZXMsIFsjOTMwXSBh bmQgIzEzODUNCiAgICAoQGpvbmx1ZGxhbSwgWyMxNDAwXSkuDQogIOKAoiBUaGUgTWFya2Rvd24g YmFja2VuZCBub3cgYXNzdW1lcyBgb2NhbWwnIGFzIHRoZSBsYW5ndWFnZSBpZCBvbg0KICAgIGRl Y2xhcmF0aW9ucywgYW5kIGNvbGxlY3RzIGNvZGUgc25pcHBldHMgaW50byBhIHNpbmdsZSBibG9j ayB3aXRoDQogICAgY29tbWVudHMgcmF0aGVyIHRoYW4gc3BsaXR0aW5nIHZhcmlhbnRzL3JlY29y ZHMgcGVyDQogICAgY29uc3RydWN0b3IvZmllbGQuDQogIOKAoiBVUkwgcmVtYXBwaW5nIG5vdyB3 b3JrcyBjb3JyZWN0bHkgZm9yIHBhZ2UgcmVmZXJlbmNlcyAoQGpvbmx1ZGxhbSwNCiAgICBbIzEz OTVdKS4NCiAg4oCiIEluY3JlbWVudGFsIGJ1aWxkcyBubyBsb25nZXIgYnJlYWsgdW5kZXIgdGhl IGNvbmRpdGlvbnMgZGVzY3JpYmVkIGluDQogICAgWyMxMzk2XSAoQGpvbmx1ZGxhbSwgWyMxNDAy XSkuDQogIOKAoiBgLS13YXJuLWVycm9yJyBub3cgcmVsaWFibHkgcHJvbW90ZXMgYWxsIHdhcm5p bmdzIHRvIGVycm9ycw0KICAgIChAam9ubHVkbGFtLCBbIzE0MDJdKS4NCiAg4oCiIFBvbHltb3Jw aGljIGFyZ3VtZW50cyBhcmUgbm8gbG9uZ2VyIG1pc3NpbmcgdGhlaXIgcGFyZW50aGVzZXMNCiAg ICAoQGFydC13LCBbIzE0MDRdKS4NCiAg4oCiIEZpeGVkIGEgcmVncmVzc2lvbiB0aGF0IGJyb2tl IGRvY3MgZm9yIHBhY2thZ2VzIGRlcGVuZGluZyBvbiB+YmFzZQ0KICAgIH51bmRlciBPQ2FtbCA1 LjUuMCAoQGpvbmx1ZGxhbSwgWyMxNDI2XSwgWyMxNDI3XSkuDQogIOKAoiBGaXhlZCBhIHJlZ3Jl c3Npb24gdGhhdCBicm9rZSBkb2NzIGZvciBwYWNrYWdlcyBkZXBlbmRpbmcgb24NCiAgICBgbWVy bGluLWxpYicgKEBqb25sdWRsYW0sIFsjMTQyOV0sIFsjMTQzMF0pLg0KDQoNClsjOTMwXSA8aHR0 cHM6Ly9naXRodWIuY29tL29jYW1sL29kb2MvaXNzdWVzLzkzMD4NCg0KWyMxNDAwXSA8aHR0cHM6 Ly9naXRodWIuY29tL29jYW1sL29kb2MvaXNzdWVzLzE0MDA+DQoNClsjMTM5NV0gPGh0dHBzOi8v Z2l0aHViLmNvbS9vY2FtbC9vZG9jL2lzc3Vlcy8xMzk1Pg0KDQpbIzEzOTZdIDxodHRwczovL2dp dGh1Yi5jb20vb2NhbWwvb2RvYy9pc3N1ZXMvMTM5Nj4NCg0KWyMxNDAyXSA8aHR0cHM6Ly9naXRo dWIuY29tL29jYW1sL29kb2MvaXNzdWVzLzE0MDI+DQoNClsjMTQwNF0gPGh0dHBzOi8vZ2l0aHVi LmNvbS9vY2FtbC9vZG9jL2lzc3Vlcy8xNDA0Pg0KDQpbIzE0MjZdIDxodHRwczovL2dpdGh1Yi5j b20vb2NhbWwvb2RvYy9pc3N1ZXMvMTQyNj4NCg0KWyMxNDI3XSA8aHR0cHM6Ly9naXRodWIuY29t L29jYW1sL29kb2MvaXNzdWVzLzE0Mjc+DQoNClsjMTQyOV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9v Y2FtbC9vZG9jL2lzc3Vlcy8xNDI5Pg0KDQpbIzE0MzBdIDxodHRwczovL2dpdGh1Yi5jb20vb2Nh bWwvb2RvYy9pc3N1ZXMvMTQzMD4NCg0KDQpJbnN0YWxsYXRpb24NCuKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgb3BhbSB1cGRh dGUNCiAg4pSCIG9wYW0gaW5zdGFsbCBvZG9jDQogIOKUlOKUgOKUgOKUgOKUgA0KDQoNClVzZQ0K 4pWM4pWM4pWMDQoNCiAgUGxlYXNlIHVzZSBbb2RvY19kcml2ZXJdIHRvIGJ1aWxkIGFuZCB0ZXN0 IHlvdXIgcGFja2FnZSdzIGRvY3MgbG9jYWxseQ0KICBhbmQgdG8gc2VlIGhvdyB0aGV5IHdpbGwg bG9vayBvbiBvY2FtbC5vcmcuDQoNCiAgT2RpZyBhbmQgRHVuZSBjb250aW51ZSB0byB3b3JrIGFz IGJlZm9yZSwgbm8gY2hhbmdlcyByZXF1aXJlZC4gRnVsbA0KICBzdXBwb3J0IGZvciBhbGwgb2Yg dGhlIGZlYXR1cmVzIG9mIG9kb2MgMy54IGlzIGJlaW5nIHdvcmtlZCBvbiBpbg0KICBEdW5lLg0K DQoNCltvZG9jX2RyaXZlcl0gPGh0dHBzOi8vb2NhbWwuZ2l0aHViLmlvL29kb2Mvb2RvYy1kcml2 ZXIvaW5kZXguaHRtbD4NCg0KDQpUaGFua3MNCuKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFRoYW5r cyB0byBldmVyeW9uZSB3aG8gY29udHJpYnV0ZWQgY29kZSwgcmV2aWV3cywgYnVnIHJlcG9ydHMs IGFuZA0KICB0ZXN0aW5nIGZvciB0aGlzIHJlbGVhc2U6IEBhcnQtdywgQGRhdmVzbngsIEBkbGVz YnJlLCBAam9ubHVkbGFtLA0KICBAbHVrZW1hdXJlciwgQHBhbmdsZXNkLCBhbmQgQHh2dywgYW5k IGFueW9uZSBlbHNlIEkndmUgZm9yZ290dGVuIQ0KDQogIEFzIGFsd2F5cywgcGxlYXNlIHJlcG9y dCBhbnkgaXNzdWVzIG9uIFtnaXRodWJdLg0KDQoNCltnaXRodWJdIDxodHRwczovL2dpdGh1Yi5j b20vb2NhbWwvb2RvYy9pc3N1ZXM+DQoNCg0KTGlzdCB5b3VyIG9wZW4gT0NhbWwgcG9zaXRpb25z IG9uIHRoZSBPQ2FtbC5vcmcgam9iIGJvYXJkDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9k aXNjdXNzLm9jYW1sLm9yZy90L2xpc3QteW91ci1vcGVuLW9jYW1sLXBvc2l0aW9ucy1vbi10aGUt b2NhbWwtb3JnLWpvYi1ib2FyZC8xMTM3Ny8yND4NCg0KDQpDb250aW51bmlnIHRoaXMgdGhyZWFk LCBEYW5pZWwgTGFtcGluZyBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gA0KDQogIFBsZWFzZSBjYW4gSSBwb3N0IHRoaXMgam9iIHRoYXQgd2UgYXJlIGhpcmluZyBmb3Iu DQoNCiAg4oCiIHRpdGxlOiBTZW5pb3IgU3lzdGVtcyBTb2Z0d2FyZSBFbmdpbmVlcg0KICDigKIg bGluazoNCiAgICA8aHR0cHM6Ly9jYXJlZXJzLmNsb3VkLmNvbS9qb2JzL3Nlbmlvci1zb2Z0d2Fy ZS1lbmdpbmVlci14ZW5zZXJ2ZXItdG9vbHN0YWNrLXJlbW90ZS11bml0ZWQta2luZ2RvbT4NCiAg 4oCiIGxvY2F0aW9uczogUmVtb3RlLCBVbml0ZWQtS2luZ2RvbQ0KICDigKIgcHVibGljYXRpb25f ZGF0ZTogMjAyNi0wNS0xNA0KICDigKIgY29tcGFueTogQ2xvdWQgU29mdHdhcmUgR3JvdXANCiAg 4oCiIGNvbXBhbnlfbG9nbzoNCiAgICA8aHR0cHM6Ly93d3cuY2xvdWQuY29tL21lZGlhXzFlNDBl N2QwNDhmMDExN2Q0NTQzYzk0MGY5ZTc0MzNiNTQ5YzA4YTAzLnN2Zz4NCg0KDQpDYW1teSBTdG9y aWVzOiBhIHNtYWxsIE9DYW1sIHdlYmNvbWljIGV4cGVyaW1lbnQg8J+Qqw0K4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlz Y3Vzcy5vY2FtbC5vcmcvdC9jYW1teS1zdG9yaWVzLWEtc21hbGwtb2NhbWwtd2ViY29taWMtZXhw ZXJpbWVudC8xODEyOC8xPg0KDQoNClJhbWlybyBDaGVjYS1HYXJjaWEgYW5ub3VuY2VkDQrilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIaSBldmVyeW9uZSwNCg0KICBJJ3ZlIGJl ZW4gZXhwZXJpbWVudGluZyBsYXRlbHkgd2l0aCB3YXlzIHRvIG1ha2UgdGVjaG5pY2FsIHRvcGlj cyBmZWVsDQogIGEgYml0IG1vcmUgdmlzdWFsIGFuZCBhcHByb2FjaGFibGUsIGFuZCBzb21laG93 IHRoYXQgZW5kZWQgdXAgdHVybmluZw0KICBpbnRvIGEgc21hbGwgaG9iYnkgcHJvamVjdCBjYWxs ZWQgQ2FtbXkgU3Rvcmllcy4NCg0KICBJdCdzIGEgY29sbGVjdGlvbiBvZiBzaG9ydCBjb21pY3Mg YWJvdXQgT0NhbWwgZmVhdHVyaW5nIGEgY2FtZWwgbWFzY290DQogICgiQ2FtbXkiKSB0b2dldGhl ciB3aXRoIHNvbWUgZmFtaWxpYXIgZmFjZXMgZnJvbSB0aGUgZWNvc3lzdGVtIGxpa2UNCiAgRHVu ZSwgT1BBTSwgTWVybGluIGFuZCBPZG9jIGFzIGNoYXJhY3RlcnMgYW5kIHRlYW1tYXRlcy4NCg0K ICBUaGUgaWRlYSBpcyBub3QgdG8gbWFrZSBmb3JtYWwgdHV0b3JpYWxzIG9yIGRvY3VtZW50YXRp b24sIGJ1dCByYXRoZXINCiAgcGxheWZ1bCB2aXN1YWwgZXhwbGFuYXRpb25zIG9mIGNvbmNlcHRz IGxpa2UgdmFyaWFudHMsIGZ1bmN0b3JzLA0KICBjb25jdXJyZW5jeSwgRHVuZSBzdGFuemFzLCBP UEFNIHN3aXRjaGVzLCBhbmQgb3RoZXIgT0NhbWwgdG9waWNzIEkNCiAgZm91bmQgaW50ZXJlc3Rp bmcgd2hpbGUgbGVhcm5pbmcgYW5kIGV4cGxvcmluZyB0aGUgZWNvc3lzdGVtLg0KDQogIE1vc3Qg b2YgdGhlIGltYWdlcyB3ZXJlIGNyZWF0ZWQgdGhyb3VnaCBsb3RzIG9mIGl0ZXJhdGlvbiB3aXRo IEFJDQogIGltYWdlIGdlbmVyYXRpb24gdG9vbHMuIFNvbWV0aW1lcyB0aGUgcmVzdWx0cyBhcmUg c3VycHJpc2luZ2x5IGdvb2QsDQogIHNvbWV0aW1lcyB0aGUgdGV4dCBiZWNvbWVzIG5vbnNlbnNl LCBhbmQgb2NjYXNpb25hbGx5IHJhbmRvbSBoZWFydHMNCiAgYXBwZWFyIGZvciBubyByZWFzb24u IEkndmUgYWxzbyBrZXB0IG1hbnkgb2YgdGhlIGxlZnRvdmVyIGRyYWZ0cw0KICB2aXNpYmxlIGJl Y2F1c2UgSSB0aG91Z2h0IHRoZSBwcm9jZXNzIGl0c2VsZiB3YXMgZnVubnkgYW5kDQogIGludGVy ZXN0aW5nLg0KDQogIEZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgY29tbXVuaXRpZXMgdGVuZCB0byBo YXZlIGEgcmVwdXRhdGlvbiBmb3IgYmVpbmcNCiAgcXVpdGUgdGVjaG5pY2FsIGFuZCBzZXJpb3Vz LCBhbmQgSSBzb21ldGltZXMgZmVlbCB0aGF0IGEgbW9yZSB2aXN1YWwNCiAgYW5kIGNvbW11bml0 eS1kcml2ZW4gYXBwcm9hY2ggY291bGQgaGVscCBtYWtlIHNvbWUgb2YgdGhlc2UgaWRlYXMgZmVl bA0KICBhIGJpdCBtb3JlIGFwcHJvYWNoYWJsZS4gU28gdGhpcyBpcyBtb3N0bHkgYSBzbWFsbCBl eHBlcmltZW50IGluIHRoYXQNCiAgZGlyZWN0aW9uLg0KDQogIEZlZWRiYWNrIGlzIHZlcnkgd2Vs Y29tZSwgZXNwZWNpYWxseSBzaW5jZSB0aGVyZSBhcmUgcHJvYmFibHkNCiAgdGVjaG5pY2FsIGlu YWNjdXJhY2llcyBvciBtaXNsZWFkaW5nIGlkZWFzIGhlcmUgYW5kIHRoZXJlLiBTdWdnZXN0aW9u cw0KICBmb3IgZnV0dXJlIHRvcGljcywgZm9ybWF0cyBvciBjb25jZXB0cyBhcmUgYWxzbyBhcHBy ZWNpYXRlZC4NCg0KICBBdCB0aGUgbW9tZW50LCBtb3N0IHBhZ2VzIGFsc28gaW5jbHVkZSBzbWFs bCBub3Rlcywgc2lkZSBjb21tZW50cyBvcg0KICBzaG9ydCBzdG9yaWVzIGFib3V0IGhvdyBlYWNo IGNvbWljIHdhcyBjcmVhdGVkLCBzaW5jZSB0aGUgcHJvamVjdCBpcw0KICBzdGlsbCB2ZXJ5IG11 Y2ggaW4gYSBkaXNjdXNzaW9uIGFuZCBleHBlcmltZW50YXRpb24gcGhhc2UuDQoNCiAg4oCiIPCf lJcgTGl2ZTogPGh0dHBzOi8vcmNoZy5naXRodWIuaW8vY2FtbXkvPg0KICDigKIg8J+UlyBSZXBv OiA8aHR0cHM6Ly9naXRodWIuY29tL1JDSEcvY2FtbXk+DQoNCiAgSG9wZSB5b3UgZW5qb3kgaXQg 8J+Qqw0KDQoNCk1sRnJvbnRfUHJvZ3Jlc3NaaWcgLSBaaWctY29tcGF0aWJsZSBwcm9ncmVzcyB0 cmVlcw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2 ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tbWxmcm9udC1wcm9ncmVzc3pp Zy16aWctY29tcGF0aWJsZS1wcm9ncmVzcy10cmVlcy8xODE0Mi8xPg0KDQoNCmpiZWNrZm9yZCBh bm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgA0KDQogIEkgYW0gcGxlYXNlZCB0byBhbm5vdW5jZSBNbEZyb250X1Byb2dyZXNz WmlnLiBJbnN0YWxsIGluc3RydWN0aW9ucywNCiAgZG9jcyBhbmQgZXhhbXBsZXMgZnVydGhlciBi ZWxvdy4NCg0KICBUTERSOiBJdCByZW5kZXJzIGEgcHJvZ3Jlc3MgdHJlZSAoYSBnZW5lcmFsaXph dGlvbiBvZiBhIHByb2dyZXNzDQogIGJhcikuIFRoZSBraWxsZXIgZmVhdHVyZSBpcyByZW5kZXJp bmcgYSBzaW5nbGUgcHJvZ3Jlc3MgdHJlZSB3aXRoDQogIHByb2dyZXNzIGRhdGEgZmVkIGZyb20g Y29tcGF0aWJsZSBjaGlsZC9ncmFuZGNoaWxkL2V0YyBwcm9jZXNzZXMgKHNlZQ0KICAybmQgYW5k IDNyZCBleGFtcGxlcykuIE1sRnJvbnRfUHJvZ3Jlc3NaaWcgaXMgYSBwb3J0IG9mIFppZydzDQog IGBwcm9ncmVzcycgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCBpbXByb3ZlbWVudHMgZm9yIFdpbmRv d3MgYW5kDQogIHByb3RvY29sIGNvbXBhdGliaWxpdHkgd2l0aCB6aWcgcHJvY2Vzc2VzLiBUaGUg bW90aXZhdGlvbiBhbmQNCiAgYWxnb3JpdGhtIGlzIGF0DQogIDxodHRwczovL2FuZHJld2tlbGxl eS5tZS9wb3N0L3ppZy1uZXctY2xpLXByb2dyZXNzLWJhci1leHBsYWluZWQuaHRtbD4uIFRoZQ0K ICBwb3J0IHdhcyBpbml0aWFsbHkgQUktYXNzaXN0ZWQ7IHByb21wdHMgZm9yIHByb2dyZXNzLnpp ZyBbc3RhcnQgYXQNCiAgbGluZSAxIGhlcmVdIGFuZCBDYWJpbmV0IChnb3Zlcm5tZW50KSBkYXRh IFtzdGFydHMgb24gbGluZSAyMTggaGVyZV0uDQoNCg0KW3N0YXJ0IGF0IGxpbmUgMSBoZXJlXQ0K PGh0dHBzOi8vZ2l0bGFiLmNvbS9ka21sL2J1aWxkLXRvb2xzL01sRnJvbnQvLS9ibG9iL2I4Nzg3 ZjM0NTIzOGJmZTEzMWM0ZjkyYmJlMTQxYzk2Nzg4YzNiMWEvc3JjL01sRnJvbnRfUHJvZ3Jlc3Na aWcvWmlnLm1sPg0KDQpbc3RhcnRzIG9uIGxpbmUgMjE4IGhlcmVdDQo8aHR0cHM6Ly9naXRsYWIu Y29tL2RrbWwvYnVpbGQtdG9vbHMvTWxGcm9udC8tL2Jsb2IvYjg3ODdmMzQ1MjM4YmZlMTMxYzRm OTJiYmUxNDFjOTY3ODhjM2IxYS90ZXN0cy9Ea1plcm9fUnVudGltZUMvU3ludGhldGljRGVtb0Qu bWwjTDIxOD4NCg0KRXhhbXBsZXM6IE5vcm1hbCBQcm9ncmVzcyBUcmVlDQrilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYwNCg0KICDilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHi lIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIHilIENCiAgIFdoYXQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbiBMaW5rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCiAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQogICBDYWJpbmV0 IG9mZmljaWFscyBzaW5jZSAxOTc1ICAgICAgICAgICBbaHR0cHM6Ly9hc2NpaW5lbWEub3JnL2Ev TldjMnZiUGVSUXVPeUdBYV0gDQogICBPQ2FtbCBzcGF3bnMgYSB6aWcgYnVpbGQgICAgICAgICAg ICAgICBbaHR0cHM6Ly9hc2NpaW5lbWEub3JnL2EvVHU5b2ZySDNla0tVQ3lMa10gDQogICBPQ2Ft bCBzcGF3bnMgT0NhbWwgd2hpY2ggc3Bhd25zIE9DYW1sICBbaHR0cHM6Ly9hc2NpaW5lbWEub3Jn L2EvVGR0dDUyaVFxU3NJWGNrdV0gDQogIOKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKU geKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgeKUgQ0KDQogIC9aaWcg c2VlbXMgdG8gaGF2ZSBhIGJ1ZywgYXQgbGVhc3Qgb24gV2luZG93cywgd2hlcmUgYSB6aWcgcGFy ZW50DQogIGNhbid0IGNvbGxlY3QgZGF0YSBmcm9tIGFuIE9DYW1sL3ppZyBjaGlsZC4gVGhhdCBp cyB3aHkgdGhlcmUgYXJlIG5vDQogICJ6aWcgc3Bhd25zIE9DYW1sIiBleGFtcGxlcy4vDQoNCg0K W2h0dHBzOi8vYXNjaWluZW1hLm9yZy9hL05XYzJ2YlBlUlF1T3lHQWFdDQo8aHR0cHM6Ly9hc2Np aW5lbWEub3JnL2EvTldjMnZiUGVSUXVPeUdBYT4NCg0KW2h0dHBzOi8vYXNjaWluZW1hLm9yZy9h L1R1OW9mckgzZWtLVUN5TGtdDQo8aHR0cHM6Ly9hc2NpaW5lbWEub3JnL2EvVHU5b2ZySDNla0tV Q3lMaz4NCg0KW2h0dHBzOi8vYXNjaWluZW1hLm9yZy9hL1RkdHQ1MmlRcVNzSVhja3VdDQo8aHR0 cHM6Ly9hc2NpaW5lbWEub3JnL2EvVGR0dDUyaVFxU3NJWGNrdT4NCg0KDQpFeGFtcGxlOiBQZXJm b3JtYW5jZSBNb25pdG9yaW5nDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwN Cg0KICBIZXJlIGlzIGEgc25hcHNob3Qgb2YgbXkgc2luZ2xlLXRocmVhZGVkIGJ1aWxkIHN5c3Rl bS4gVGhlIGludGVyZXN0aW5nDQogIHBhcnRzIG9mIHRoZSBjYWxsIHN0YWNrIGFyZSBhZGRlZCB0 byB0aGUgcHJvZ3Jlc3MgdHJlZSAoYmFzaWNhbGx5DQogIGBzdGFydCcgYW5kIGBlbmRfJyBhcm91 bmQgYSBmdW5jdGlvbik6DQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAkIC4vZGswIGRpc3Ry aWJ1dGUgQ29tbW9uc0Jhc2VfU3RkLWRpc3Qtd2luMzIgLS1saWJyYXJ5ICdDb21tb25zQmFzZV9T dGRAMi41Ljk5OTkxMTEyMjIzMycgZGlzdC13aW4zMi51DQogIOKUgiANCiAg4pSCIFtzaWduaWZ5 XSBOZXcgYnVpbGQga2V5IHBhaXIgaW4gdC9rL2J1aWxkLnB1YiBhbmQgdC9rL2J1aWxkLnNlYyAu Li4NCiAg4pSCIFtzaWduaWZ5XSBEaXN0cmlidXRlIGtleSBwYWlyIGFtb25nIHRydXN0ZWQgY293 b3JrZXJzIG9ubHkhDQogIOKUgiDilrowLzJdIGRpc3RyaWJ1dGUgQ29tbW9uc0Jhc2VfU3RkLWRp c3Qtd2luMzINCiAg4pSCICAgIOKUlOKUgCBbMi81XSBwcmVwYXJlIGRpc3RyaWJ1dGlvbg0KICDi lIIgICAgICAg4pSU4pSAIFsyOS8zMl0gZ2V0LW9iamVjdCBDb21tb25zQmFzZV9TdGQuVG95Ym94 QDAuLi4NCiAg4pSCICAgICAgICAgIOKUlOKUgCBkbCB0b3lib3gtYWFyY2g2NEB0b3lib3ggc3og ODA2Sw0KICDilIIgICAgICAgICAgICAg4pSU4pSAIGxhbmRsZXkubmV0L3RveWJveC4uLm9hZHMv YmluYXJpZXMvMC44LjkNCiAg4pSCICAgICAgICAgICAgICAgIOKUlOKUgCBbMC8xXSBNaUIgZG93 bmxvYWRlZA0KICDilJTilIDilIDilIDilIANCg0KICBCeSBzZWVpbmcgdGhlICLilroiIHRyZWUg bm90IHVwZGF0ZSBmb3IgbW9yZSB0aGFuIDEwIHNlY29uZHMsIEkgY291bGQNCiAgc2VlIHRoYXQg ZG93bmxvYWRpbmcgYSBzbWFsbCA4MDZLIGZpbGUgZnJvbSB0aGUgYGxhbmRsZXkubmV0L3RveWJv eCcNCiAgd2Vic2VydmVyIHdhcyBraWxsaW5nIHRoZSBwZXJmb3JtYW5jZS4NCiAgICAgICAgSXQg aXMgZWFzeSB0byBpZGVudGlmeSBwZXJmIGJvdHRsZW5lY2tzIHRoYXQgbGFzdCBsb25nZXINCiAg ICAgICAgdGhhbiAwLjUgc2Vjb25kcy4NCg0KDQpQYWNrYWdlcw0K4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWMDQoNCiAg4oCiIE1sRnJvbnRfUHJvZ3Jlc3M6IFRoZSBBUEkgd2hpY2ggY2FuIGJlIHVz ZWQgd2l0aCBvbmUgb2YgZm91cg0KICAgIGJhY2tlbmRzLiBJbmNsdWRlcyB0aGUgInNpbGVudCIg YW5kICJwbGFpbiIgYmFja2VuZHMuDQogIOKAoiBNbEZyb250X1Byb2dyZXNzWmlnOiBUaGUgemln IGNvbXBhdGlibGUgYmFja2VuZCAoaGlnaCByZWZyZXNoIHJhdGUpDQogIOKAoiBNbEZyb250X1By b2dyZXNzUGVyaW9kOiBBIGJhY2tlbmQgd2hpY2ggZHVtcHMgdGhlIHByb2dyZXNzIHRyZWUNCiAg ICBwZXJpb2RpY2FsbHkgdG8gdGhlIGNvbnNvbGUuDQoNCiAgRG9jcyBhcmUgYXQgW2h0dHBzOi8v ZGttbC5naXRsYWIuaW8vYnVpbGQtdG9vbHMvTWxGcm9udC9dLg0KDQoNCltodHRwczovL2RrbWwu Z2l0bGFiLmlvL2J1aWxkLXRvb2xzL01sRnJvbnQvXQ0KPGh0dHBzOi8vZGttbC5naXRsYWIuaW8v YnVpbGQtdG9vbHMvTWxGcm9udC8+DQoNCg0KSW5zdGFsbGluZyBJdA0K4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgSSBoYXZlIGl0IGluIHRoZSBvcGFtIHF1ZXVl DQogIChbaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29wYW0tcmVwb3NpdG9yeS9wdWxsLzI5OTE4 XSkgYW5kIGRvbid0DQogIGV4cGVjdCBpdCB0byBiZSByZWxlYXNlZCB1bnRpbCB0aGUgQUkgdGhy ZWFkIGlzIHJlc29sdmVkLiBJbnN0YWxsIHRoZQ0KICBibGVlZGluZyBlZGdlIHdpdGg6DQoNCiAg 4pSM4pSA4pSA4pSA4pSADQogIOKUgiBmb3IgcGtnIGluIE1sRnJvbnRfUHJvZ3Jlc3MgTWxGcm9u dF9Db3JlIE1sRnJvbnRfTHVhIE1sRnJvbnRfWmlwRmlsZSBVbmlmaWVkU2NyaXB0X1N0ZCBNbEZy b250X1RodW5rIE1sRnJvbnRfQ29uc29sZSBNbEZyb250X1Byb2dyZXNzWmlnOyBkbw0KICDilIIg ICBvcGFtIHBpbiBhZGQgJHBrZyBodHRwczovL2dpdGxhYi5jb20vZGttbC9idWlsZC10b29scy9N bEZyb250Ly0vcmVsZWFzZXMvcGVybWFsaW5rL2xhdGVzdC9kb3dubG9hZHMvTWxGcm9udC50YXIu Z3oNCiAg4pSCIGRvbmUNCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAgKEV2ZW4gdGhvdWdoIEkgZG9j dW1lbnQgIkFJIiBpbiBhIGNvdXBsZSBmaWxlcywgSSBkbyBpdCBmb3IgbXkgb3duDQogIGJlbmVm aXQsIGFwcGx5IGl0IG5hcnJvd2x5LCBhbmQga2VlcCBpdCB1bmRlciBteSBjb250cm9sLiBBbW9u ZyBvdGhlcg0KICB0aGluZ3MsIEkgY2FuJ3QgaW1hZ2luZSB0aGVyZSBhcmUgbWFueSAoQW1lcmlj YW4pIGF0dG9ybmV5cyB3aG8gd291bGQNCiAgc2F5IGl0IGlzIHdpc2UgZm9yIG1lIHRvIHByb2Fj dGl2ZWx5IGFuZCBxdWFzaS1wZXJtYW5lbnRseSBsYWJlbA0KICBwYWNrYWdlcyBhcyAiQUkgYXNz aXN0ZWQvZXRjLiIsIHNvIEknbGwga2VlcCBteSBwYWNrYWdlcyBvdXQgb2YgdGhlDQogIG9wYW0g cmVwb3NpdG9yeSBpZiB0aGF0IGJlY29tZXMgYSBuZXcgcG9saWN5LikNCg0KICBFbmpveSENCg0K DQpbaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29wYW0tcmVwb3NpdG9yeS9wdWxsLzI5OTE4XQ0K PGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vcGFtLXJlcG9zaXRvcnkvcHVsbC8yOTkxOD4NCg0K DQpsb28gLSBsdWEgb2Ygb2NhbWwNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwu b3JnL3QvYW5uLWxvby1sdWEtb2Ytb2NhbWwvMTgxNDMvMT4NCg0KDQpCZW4gYW5ub3VuY2VkDQri lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIaQ0KDQogIExpa2Ug bWVudGlvbmVkIGluIHRoZSB0aXRsZSB0aGlzIGNvbXBpbGVzIE9jYW1sIChCeXRlY29kZSkgaW50 byBMdWENCiAgKGx1YTUuMSkuIFRoaXMgcHJvamVjdCBpcyBhaSBnZW5lcmF0ZWQsIEkgdHJpZWQg dG8gZnVsbHkgZGlzY2xvc2UgdGhhdA0KICB3aXRoIHRoZSBtZXRob2RzIGRlc2NyaWJlZCBpbiB0 aGUgcHJvamVjdCBvY2FtbC1haS1kaXNsb3N1cmU6DQoNCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9t YWx0YXNlYS9sdWFfb2Zfb2NhbWw+DQoNCg0KT2xkIENXTg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ DQoNCiAgSWYgeW91IGhhcHBlbiB0byBtaXNzIGEgQ1dOLCB5b3UgY2FuIFtzZW5kIG1lIGEgbWVz c2FnZV0gYW5kIEknbGwgbWFpbA0KICBpdCB0byB5b3UsIG9yIGdvIHRha2UgYSBsb29rIGF0IFt0 aGUgYXJjaGl2ZV0gb3IgdGhlIFtSU1MgZmVlZCBvZiB0aGUNCiAgYXJjaGl2ZXNdLg0KDQogIElm IHlvdSBhbHNvIHdpc2ggdG8gcmVjZWl2ZSBpdCBldmVyeSB3ZWVrIGJ5IG1haWwsIHlvdSBtYXkg c3Vic2NyaWJlDQogIHRvIHRoZSBbY2FtbC1saXN0XS4NCg0KICBbQWxhbiBTY2htaXR0XQ0KDQoN CltzZW5kIG1lIGEgbWVzc2FnZV0gPG1haWx0bzphbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmc+DQoNClt0aGUgYXJjaGl2ZV0gPGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5uZXQvY3duLz4N Cg0KW1JTUyBmZWVkIG9mIHRoZSBhcmNoaXZlc10gPGh0dHBzOi8vYWxhbi5wZXRpdGVwb21tZS5u ZXQvY3duL2N3bi5yc3M+DQoNCltjYW1sLWxpc3RdIDxodHRwczovL3N5bXBhLmlucmlhLmZyL3N5 bXBhL2luZm8vY2FtbC1saXN0Pg0KDQpbQWxhbiBTY2htaXR0XSA8aHR0cHM6Ly9hbGFuLnBldGl0 ZXBvbW1lLm5ldC8+DQoNCg== --==-=-= 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 May 12 to 19, 2026.

hotseat Squava (a tiny LablGtk2 demo)

Continuing this thread, Damien Guichard announced

Newer 1.2 version, now detects eventual draw games.

https://pastebin.com/DjZ03yPa

Request for comments: What to do with opam packages that have = known security vulnerabilities

Hannes Mehnert announced

Dear everyone,

we (the OCaml security) team is curious what the practice should be for opa= m packages that have known security vulnerabilities?

One way is to mark them with available: false in the opam-repo= sitory, which will make them not installable (apart from if you manually ed= it the opam file).

Especially for the OCaml compiler it is a tricky question: the recent vulne= rability (in Marshal) affects everything < 4.14.3 | > 5 & < 5.= 4.1 – so marking these compilers as unavailable will result in lots o= f projects that require such older OCaml versions to not be easily installa= ble anymore. Especially since the Marshal issue is not exposed in many (any= ?) applications, it feels wrong to disallow / make it hard for anyone to in= stall these compilers.

Some ideas we have for the future:

  • annotate the exact function(s) that is/are vulnerabile in the security = advisory (thus, you could automatically search for use of that function)
  • provide an "opam audit" which takes the advisory database and inspects = your opam switch whether you have installed any vulnerable package

But for the short & medium term, we'd appreciate input on what to do wi= th normal opam packages that have advisories; and also whether to treat the= compiler packages differently or not.

odoc 3.2.1 release

Jon Ludlam announced

The odoc team is pleased to announce the release of odoc 3.2.1!

Highlights

  • OCaml 5.5.0 support

    odoc now compiles against, and produces documentation for, OCaml 5.5.0 (@pa= nglesd, @xvw, #1406).

  • OxCaml support

    odoc now supports OxCaml natively, thanks to @lukemaurer and @art-w (#1399). Right now this = is very bare-bones, but full support for the various features of OxCaml is = already in progress. If you're interested, check out the PRs!

    One thing worth flagging: because OxCaml is moving much faster than upstrea= m OCaml, each odoc release will likely support only a single OxCaml release= , in contrast to our usual policy of supporting every OCaml back to 4.08. I= f you're documenting an OxCaml project, please use a matched pair of odoc a= nd oxcaml-compiler.

Added

  • Persistent LaTeX macros in the HTML/KaTeX backend (@dlesbre, #1391).
  • The markdown-generate command now accepts multiple .= odocl files in a single invocation, so you no longer need to wrap it= in a shell loop (@davesnx, #1387).

Changed / Fixed

  • Fixed two long-standing compile-time crashes, #930 and #1385 (@jonludlam, #1400).
  • The Markdown backend now assumes ocaml as the language id = on declarations, and collects code snippets into a single block with commen= ts rather than splitting variants/records per constructor/field.
  • URL remapping now works correctly for page references (@jonludlam, #1395).
  • Incremental builds no longer break under the conditions described in #1396 (@jonludlam, = #1402).
  • --warn-error now reliably promotes all warnings to errors = (@jonludlam, #1402).
  • Polymorphic arguments are no longer missing their parentheses (@art-w, = #1404).
  • Fixed a regression that broke docs for packages depending on ~base ~und= er OCaml 5.5.0 (@jonludlam, #1426, #14= 27).
  • Fixed a regression that broke docs for packages depending on merl= in-lib (@jonludlam, #1429, #143= 0).

Installation

opam update
opam install odoc

Use

Please use = odoc_driver to build and test your package's docs locally and to see ho= w they will look on ocaml.org.

Odig and Dune continue to work as before, no changes required. Full support= for all of the features of odoc 3.x is being worked on in Dune.

Thanks

Thanks to everyone who contributed code, reviews, bug reports, and testing = for this release: @art-w, @davesnx, @dlesbre, @jonludlam, @lukemaurer, @pan= glesd, and @xvw, and anyone else I've forgotten!

As always, please report any issues on github.

List your open OCaml positions on the OCaml.org job board

Continunig this thread, Daniel Lamping announced

Please can I post this job that we are hiring for.

Cammy Stories: a small OCaml webcomic experiment =F0=9F=90=AB<= /h2>

Ramiro Checa-Garcia announced

Hi everyone,

I've been experimenting lately with ways to make technical topics feel a bi= t more visual and approachable, and somehow that ended up turning into a sm= all hobby project called Cammy Stories.

It's a collection of short comics about OCaml featuring a camel mascot ("Ca= mmy") together with some familiar faces from the ecosystem like Dune, OPAM,= Merlin and Odoc as characters and teammates.

The idea is not to make formal tutorials or documentation, but rather playf= ul visual explanations of concepts like variants, functors, concurrency, Du= ne stanzas, OPAM switches, and other OCaml topics I found interesting while= learning and exploring the ecosystem.

Most of the images were created through lots of iteration with AI image gen= eration tools. Sometimes the results are surprisingly good, sometimes the t= ext becomes nonsense, and occasionally random hearts appear for no reason. = I've also kept many of the leftover drafts visible because I thought the pr= ocess itself was funny and interesting.

Functional programming communities tend to have a reputation for being quit= e technical and serious, and I sometimes feel that a more visual and commun= ity-driven approach could help make some of these ideas feel a bit more app= roachable. So this is mostly a small experiment in that direction.

Feedback is very welcome, especially since there are probably technical ina= ccuracies or misleading ideas here and there. Suggestions for future topics= , formats or concepts are also appreciated.

At the moment, most pages also include small notes, side comments or short = stories about how each comic was created, since the project is still very m= uch in a discussion and experimentation phase.

Hope you enjoy it =F0=9F=90=AB

MlFront_ProgressZig - Zig-compatible progress trees

jbeckford announced

I am pleased to announce MlFront_ProgressZig. Install instructions, docs an= d examples further below.

TLDR: It renders a progress tree (a generalization of a progress bar). The = killer feature is rendering a single progress tree with progress data fed f= rom compatible child/grandchild/etc processes (see 2nd and 3rd examples). M= lFront_ProgressZig is a port of Zig's progress standard librar= y, with improvements for Windows and protocol compatibility with zig proces= ses. The motivation and algorithm is at https://andrewkelley.me/post/= zig-new-cli-progress-bar-explained.html. The port was initially AI-assi= sted; prompts for progress.zig start at line 1 here and Cabinet (government) data start= s on line 218 here.

Examples: Normal Progress Tree

What Animation Link
Cabinet officials since 1975 https://asciinema.org/a/NWc2vbPeRQuOyGAa
OCaml spawns a zig build https://asciinema.org/a/Tu9ofrH3ekKUCyLk
OCaml spawns OCaml which spawns OCaml https://asciinema.org/a/Tdtt52iQqSsIXcku

Zig seems to have a bug, at least on Windows, where a zig parent can't c= ollect data from an OCaml/zig child. That is why there are no "zig spawns O= Caml" examples.

Example: Performance Monitoring

Here is a snapshot of my single-threaded build system. The interesting part= s of the call stack are added to the progress tree (basically start and end_ around a function):

$ ./dk0 distribute CommonsBase_Std-dist-win32 --library 'CommonsBase_Std@2.=
5.999911122233' dist-win32.u

[signify] New build key pair in t/k/build.pub and t/k/build.sec ...
[signify] Distribute key pair among trusted coworkers only!
=E2=96=BA0/2] distribute CommonsBase_Std-dist-win32
   =E2=94=94=E2=94=80 [2/5] prepare distribution
      =E2=94=94=E2=94=80 [29/32] get-object CommonsBase_Std.Toybox@0...
         =E2=94=94=E2=94=80 dl toybox-aarch64@toybox sz 806K
            =E2=94=94=E2=94=80 landley.net/toybox...oads/binaries/0.8.9
               =E2=94=94=E2=94=80 [0/1] MiB downloaded

By seeing the "=E2=96=BA" tree not update for more than 10 seconds, I could= see that downloading a small 806K file from the landley.net/toybox webserver was killing the performance.

It is easy to identify perf bottlenecks that last longer than 0.5 seconds.

Packages

  • MlFront_Progress: The API which can be used with one of four backends. = Includes the "silent" and "plain" backends.
  • MlFront_ProgressZig: The zig compatible backend (high refresh rate)
  • MlFront_ProgressPeriod: A backend which dumps the progress tree periodi= cally to the console.

Docs are at https:/= /dkml.gitlab.io/build-tools/MlFront/.

Installing It

I have it in the opam queue (https://github.com/ocaml/opam-repository/pull/29918) = and don't expect it to be released until the AI thread is resolved. Install= the bleeding edge with:

for pkg in MlFront_Progress MlFront_Core MlFront_Lua MlFront_ZipFile Unifie=
dScript_Std MlFront_Thunk MlFront_Console MlFront_ProgressZig; do
  opam pin add $pkg https://gitlab.com/dkml/build-tools/MlFront/-/releases/=
permalink/latest/downloads/MlFront.tar.gz
done

(Even though I document "AI" in a couple files, I do it for my own benefit,= apply it narrowly, and keep it under my control. Among other things, I can= 't imagine there are many (American) attorneys who would say it is wise for= me to proactively and quasi-permanently label packages as "AI assisted/etc= .", so I'll keep my packages out of the opam repository if that becomes a n= ew policy.)

Enjoy!

loo - lua of ocaml

Ben announced

Hi

Like mentioned in the title this compiles Ocaml (Bytecode) into Lua (lua5.1= ). This project is ai generated, I tried to fully disclose that with the me= thods described in the project ocaml-ai-dislosure:

https://github.com/mal= tasea/lua_of_ocaml

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.

--==-=-=-- --=-=-=-- --===-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQFvBAEBCABZFiEE6lXof/BsSVW56ZmGBA0KO07S5ccFAmoMJMUbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmcACgkQBA0KO07S5ccYuggAjhd1gOWya2Isx5SL1I0uDYixk1jaGbtRJFbmi8L7 0Ecp/ymKOTGaEGs88d5QsUmGPlGXwRXwIBH32pf57aMNYVgE9TS9KP6d1hDk8Ou3 q4g5vqyNK1M6ZoxTjRFwwh/vKTEzfT55P1bb31ib4Iw6wA/t82XNHqN6Jmri8rVy x7rSWkh3LGdbuSuXsGxsW5GnxRsgJh6rSv9j3D4fYLZ9/FnGMg0S/qrT8DFvgTLn /xdqlodp/n48+Dr/n4d60yPon5QePNVD9lSJYnw1D4acM3Ul1znQtf5gUoz0hQ96 GnDBk3xkNrya8tR99ixcv7r4/lzqpLeMtfIwRPbnlnSFuw== =NZj4 -----END PGP SIGNATURE----- --===-=-=--