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=MFRRsrmp; 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 00C94400CB for ; Tue, 13 Oct 2026 06:58:04 +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=sqO/XxJ3LEuisiO47sdR2CyNsruNwCYkv0Y9IPQdRY0=; b=MFRRsrmpFHOOPL1kxWE4Ve9ECYAo3bDG4BnPPjwvnmLqfpsbuqhBaKrj XPcHdTNx7k04QP1PHvE58HyICed/FbIwY+QfK6RpRVqeSqamkY+Pms03N Jo4UN07gCrugGeo7MIx5JpAxMYZY58o4IvbRE3oq+Ici+Mp5m1xSMW3Ey U=; X-CSE-ConnectionGUID: ms0G5oNxRzyMaT/v2/gdQQ== X-CSE-MsgGUID: l5Y2w/rOT8uT6b3ofdBlgA== 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.27,155,1787004000"; d="asc'?scan'208,217";a="299865911" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 13 Oct 2026 08:58:04 +0200 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id C27DD824F0; Tue, 13 Oct 2026 08:58:03 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id E518D800F4 for ; Tue, 13 Oct 2026 08:57:57 +0200 (CEST) X-CSE-ConnectionGUID: 9WLomsNYSdic6nIkn32Ghg== X-CSE-MsgGUID: TS2wJ8VdQF6kMJA5A5RRxQ== IronPort-SDR: 6acdd674_F1hJx0BBX5nBNM/lIDDZKmLa06AhBH1OsVmQLZ8FfNlUyID Sn+s/3EK4W1ETFWTnI0zw4Om2ma7Xh6PsLjqVww== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0G2DQCl1c1qhSIeaIFahBaBBBsBb2EzBwhJRg+EA4NPj?= =?us-ascii?q?iSBFopRhWWCPIcwgRANgVyBKxYFHAIOBwEDAQgFLgEbBAECBAEBAQIBAgGCC?= =?us-ascii?q?4ItRgIWjX0CHwYBBDQTAQIEAwIDAQEBAQEBAQEBAQELAQEBBAEBAQIBAQIEA?= =?us-ascii?q?wEBAQECEAEBAQFASYZPDYt9LSRxYAQBAgYBBgEBAQEBAQEBAScBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgQHAQEHEg4QZ?= =?us-ascii?q?wkEBhMBATEHGCMDFAEGAwIEDQEQJQMBEwESFAQCgiREAYIgAgIWAzcDBQwGo?= =?us-ascii?q?FebJHp/M4EBggwBAQaBCT4DAg1B2RsNcoFiCQmBNRiBWIQagk0EDw0BK0lqA?= =?us-ascii?q?gEChFGCW4FmJw+BVUSBFTWCPgdvggQBGkIBAQEBWkoEAQERAgEaDyQJgyWCa?= =?us-ascii?q?oIRFXoSG4FdYAEESIZujDKCQiwBVRMXCwcFYIEIAyovLW4yHYEjPhcvWBsGB?= =?us-ascii?q?YEdgSCCFiMZNnqBCV6BKylhEBeBCYIHAoJUggACAUlBDgdFUwklQxJHJiIIE?= =?us-ascii?q?gkBExowC4EbODwJKEEXDHMMHQUtbT03FRmPexAhDYFWSBkVCYFmLw44CBUUI?= =?us-ascii?q?hUCASEEBhMIDgIUDjYtEwMFFB0JBQkERhYvklokAQMFJQOLKIQzog8wPTQHh?= =?us-ascii?q?CGBYAYMiQqBJotmg1iGSYQEgVeFQIV9hwOSVCKYZiOCNocoXUkJgW9rhAmRV?= =?us-ascii?q?xMVB4UqgX8jSSM/HgwHMxowQw0TgkcJCj0cD44tARaDSxVBLk+BIQWBI1E7x?= =?us-ascii?q?wUDQjUCAQE7BwIHAQwEhWsBAYw6gUwBAQ?= IronPort-PHdr: A9a23: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 XgEHMlXz3XOCZkZkwx4cbsm4lJWL9L/Ens= IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:a/aAda6tV16RrvKd6gPXwALXdLJyesId70hD6qm+c202TiX4rb HXoB11737JYVoqOE3I3OrwXJVoIkmsjKKdg7NhWItKNTOO0ADDQe4N0WKh+UyGJ8SUzJ866U 4USdkANDSGNykHsS+V2njaLz9Z+qj8zEn+v5ak856zd21XQpAl3Ad8AR2SVml7XhNPC5Z8K5 aG5sVGrTK8eXIRB/7Le0U4Yw== X-Talos-CUID: 9a23:XjUgCW4usIJTkftTBdsspXEwHcU+VEzmwHbbfUmZCmAyEpKVRgrF X-Talos-MUID: =?us-ascii?q?9a23=3ARzQ4Rg3lt2cStni0Y4Lw/diW+jUj35/0F2Jdr5k?= =?us-ascii?q?/lZeHEA5ZZh7Atg6ne9py?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.27,155,1787004000"; d="asc'?scan'208,217";a="159636821" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-MGA-submission: =?us-ascii?q?MDEx3/0s2d7LWEOmARoupqlOv75/70dMOgBLqf?= =?us-ascii?q?UEM9vBv8CgVJNiSnQi2Kc9zOdOXWI2DO9EBR0D913vtNqoFo+CWhpS6T?= =?us-ascii?q?ZhuJerwqLiaYjU6iuL7sPkzCQdglnrhZ/d1vOZj5lLjzrxHJ0e9FxtY/?= =?us-ascii?q?uCsW9eVhchVpPpsHcjWBsA5Q=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; 13 Oct 2026 08:57:57 +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 AEF5C1A46A; Tue, 13 Oct 2026 08:57:48 +0200 (CEST) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 13 Oct 2026 08:57:47 +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 Oct 13 08:57:50 2026 +0200 (CEST)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.444091, queueID=6DA641A479 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: 19593 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 ZWsgb2YgT2N0b2JlciAwNiB0byAxMywNCjIwMjYuDQoNClRhYmxlIG9mIENvbnRlbnRzDQrilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KYmV0YWNh bGVuZGFycyAxLjAuMCDigJQgZGV0ZXJtaW5pc3RpYyBkYXRlIGFuZCBjYWxlbmRhciB1dGlsaXRp ZXMNClNlZGxleCAzLjguMQ0Kb3BhbSAyLjYuMQ0Kc2hha3VoYWNoaSB2MC40LjANCkRvY2ZkOiBU VUkgbXVsdGlsaW5lIGZ1enp5IGRvY3VtZW50IGZpbmRlciAtIDEzLjEuMyArIHByb3BlciB1c2Vy IGd1aWRlDQpPVVBTIG1lZXR1cCBvY3RvYmVyIDIwMjYNCmZha2VyIDAuMS4xOiBmYWtlIChidXQg cmVhbGlzdGljKSBkYXRhLCBzZWVkLWNvbXBhdGlibGUgd2l0aCBmYWtlci1qcw0KT2xkIENXTg0K DQoNCmJldGFjYWxlbmRhcnMgMS4wLjAg4oCUIGRldGVybWluaXN0aWMgZGF0ZSBhbmQgY2FsZW5k YXIgdXRpbGl0aWVzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6 Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1iZXRhY2FsZW5kYXJzLTEtMC0wLWRldGVybWluaXN0 aWMtZGF0ZS1hbmQtY2FsZW5kYXItdXRpbGl0aWVzLzE4NTkzLzE+DQoNCg0KQmV0YSBDYWxlbmRh cnMgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJ4oCZbSBoYXBweSB0byBhbm5vdW5j ZSB0aGUgZmlyc3Qgc3RhYmxlIHJlbGVhc2Ugb2YgKmJldGFjYWxlbmRhcnMqLCBhbg0KICBPQ2Ft bCBsaWJyYXJ5IGZvciB0aW1lem9uZS1pbmRlcGVuZGVudCBjaXZpbC1kYXRlIGFyaXRobWV0aWMg YW5kDQogIGRldGVybWluaXN0aWMgY2FsZW5kYXIgZ2VuZXJhdGlvbi4NCg0KICBUaGUgbGlicmFy eSBwcm92aWRlcyBHcmVnb3JpYW4gZGF0ZSBvcGVyYXRpb25zLCBjb25maWd1cmFibGUgbW9udGgg YW5kDQogIHllYXIgZ3JpZHMsIGJvdW5kZWQgcmVjdXJyZW5jZSBydWxlcywgYW5kIGRhdGUtcmFu Z2UgYW5kDQogIGNhbGVuZGFyLWJvdW5kYXJ5IHV0aWxpdGllcy4gSXQgaXMgZGVzaWduZWQgZm9y IHByZWRpY3RhYmxlIGRhdGUtb25seQ0KICB3b3JrIHdpdGhvdXQgcmVseWluZyBvbiBsb2NhbCB0 aW1lIHpvbmVzLg0KDQogIEluc3RhbGwgaXQgd2l0aCBvcGFtOg0KDQogIOKUjOKUgOKUgOKUgOKU gA0KICDilIIgb3BhbSB1cGRhdGUNCiAg4pSCIG9wYW0gaW5zdGFsbCBiZXRhY2FsZW5kYXJzDQog IOKUlOKUgOKUgOKUgOKUgA0KDQogIOKAoiBTb3VyY2U6IDxodHRwczovL2dpdGh1Yi5jb20vbWF0 ZW9wZWRlcnNlbi9iZXRhY2FsZW5kYXJzLW9jYW1sPg0KICDigKIgUmVsZWFzZToNCiAgICA8aHR0 cHM6Ly9naXRodWIuY29tL21hdGVvcGVkZXJzZW4vYmV0YWNhbGVuZGFycy1vY2FtbC9yZWxlYXNl cy90YWcvdjEuMC4wPg0KICDigKIgQVBJIGRvY3M6IDxodHRwczovL21hdGVvcGVkZXJzZW4uZ2l0 aHViLmlvL2JldGFjYWxlbmRhcnMtb2NhbWwvPg0KICDigKIgb3BhbSBwYWNrYWdlIG1ldGFkYXRh Og0KICAgIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb3BhbS1yZXBvc2l0b3J5L2Jsb2IvbWFz dGVyL3BhY2thZ2VzL2JldGFjYWxlbmRhcnMvYmV0YWNhbGVuZGFycy4xLjAuMC9vcGFtPg0KDQog IFRoZSBwYWNrYWdlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIE9DYW1sIDQuMTQgYW5kIDUuNSwgaW5j bHVkaW5nIGl0cw0KICB0ZXN0IHN1aXRlIGFuZCBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbi4gRmVl ZGJhY2sgYW5kIHF1ZXN0aW9ucyBhcmUNCiAgd2VsY29tZS4NCg0KDQpTZWRsZXggMy44LjENCuKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczov L2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLXNlZGxleC0zLTgtMS8xODU5NS8xPg0KDQoNCkhodWdv IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA DQoNCiAgU2VkbGV4IDMuOC4xIGlzIG91dCEg8J+OiQ0KDQogIFNlZGxleCBpcyBhIHVuaWNvZGUt ZnJpZW5kbHkgbGV4ZXIgZ2VuZXJhdG9yIGZvciBPQ2FtbCBvcmlnaW5hbGx5DQogIHdyaXR0ZW4g YnkgQWxhaW4gRnJpc2NoIGF0IExleGlGaSBhbmQgbm93IG1haW50YWluZWQgdW5kZXIgdGhlDQog IFtvY2FtbC1jb21tdW5pdHldIHVtYnJlbGxhLg0KDQogIFRoZSBoZWFkbGluZSBmZWF0dXJlIGlz ICpuYW1lZCBjYXB0dXJlIGdyb3VwcyouIFN1Yi1wYXR0ZXJucyBjYW4gYmUNCiAgYm91bmQgd2l0 aCBPQ2FtbCdzIGBhcycgc3ludGF4IGFuZCByZWFkIGJhY2sgaW4gdGhlIGFjdGlvbjoNCg0KICDi lIzilIDilIDilIDilIANCiAg4pSCIG1hdGNoJXNlZGxleCBidWYgd2l0aA0KICDilIIgfCAoUGx1 cyAoJzAnLi4nOScpIGFzIG51bSksICcuJywgKFBsdXMgKCcwJy4uJzknKSBhcyBmcmFjKSAtPg0K ICDilIIgICAgIGxldCBuID0gU2VkbGV4aW5nLlV0Zjgub2Zfc3VibWF0Y2ggbnVtIGluDQogIOKU giAgICAgbGV0IGYgPSBTZWRsZXhpbmcuVXRmOC5vZl9zdWJtYXRjaCBmcmFjIGluDQogIOKUgiAg ICAgUHJpbnRmLnByaW50ZiAiaW50ZWdlcj0lcyBmcmFjdGlvbmFsPSVzXG4iIG4gZg0KICDilIIg fCBfIC0+ICgpDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIENhcHR1cmVzIGFyZSBpbXBsZW1lbnRl ZCB3aXRoIGEgdGFnZ2VkIERGQSwgc28gdGhlIGdlbmVyYXRlZCBsZXhlcg0KICByZW1haW5zIGEg c2luZ2xlIHBhc3Mgd2l0aCBubyBiYWNrdHJhY2tpbmcsIGFuZCBsZXhlcnMgdGhhdCBkb24ndCB1 c2UNCiAgYGFzJyBnZW5lcmF0ZSB0aGUgc2FtZSBjb2RlIGFzIGJlZm9yZS4gU3ViLW1hdGNoZXMg YXJlIGxlZnRtb3N0LWdyZWVkeQ0KICB3aXRoaW4gdGhlIGxvbmdlc3QgbWF0Y2guICBgYXMnIGlz IG5vdCBhbGxvd2VkIHVuZGVyIGBTdGFyJywgYFBsdXMnLA0KICBgT3B0JywgYFJlcCcsIGBDb21w bCcsIGBTdWInIG9yIGBJbnRlcnNlY3QnLg0KDQogIFRoaXMgcmVsZWFzZSBhbHNvIGJyaW5ncywg YW1vbmcgb3RoZXIgdGhpbmdzOg0KDQogIOKAoiBVbmljb2RlIDE4LjAuMA0KICDigKIgRmFzdGVy IGBsZXhlbWUnLCBgc3ViX2xleGVtZScgYW5kIGBvZl9zdWJtYXRjaCcgZm9yIExhdGluMSwgVVRG LTgNCiAgICBhbmQgVVRGLTE2DQoNCiAgWW91IGNhbiByZWFkIHRoZSBub3RlcyBpbg0KICA8aHR0 cHM6Ly9naXRodWIuY29tL29jYW1sLWNvbW11bml0eS9zZWRsZXgvcmVsZWFzZXMvdGFnL3YzLjg+ DQogICh1bnJlbGVhc2VkKSBhbmQNCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC1jb21tdW5p dHkvc2VkbGV4L3JlbGVhc2VzL3RhZy92My44LjE+Lg0KDQogIEl0IHNob3VsZCBiZSBhdmFpbGFi bGUgc29vbiBvbiBvcGFtLg0KDQoNCltvY2FtbC1jb21tdW5pdHldIDxodHRwczovL2dpdGh1Yi5j b20vb2NhbWwtY29tbXVuaXR5Pg0KDQoNCm9wYW0gMi42LjENCuKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5u LW9wYW0tMi02LTEvMTg1OTcvMT4NCg0KDQpLYXRlIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGkgZXZlcnlvbmUsDQoNCiAgKm9wYW0g Mi42LjEqIGlzIG5vdyBhdmFpbGFibGUuDQoNCiAgVGhpcyByZWxlYXNlICpmaXgqZXMgYSAqcmVn ciplc3Npb24gZnJvbSAyLjYuMCB3aGVyZSBgb3BhbSBpbnN0YWxsDQogIC0tZGVwcy1vbmx5JyB3 b3VsZCAqbm90IGluc3QqYWxsIHRoZSBgZGVwZXh0cycgZmllbGQgZnJvbSB0aGUNCiAgKnBhY2sq YWdlcyBiZWluZyAqcmVxdWUqc3RlZC4NCg0KICBJdCBhbHNvICppbXByKm92ZXMgaGFuZGxpbmcg b2YgR2l0IHJlcG9zaXRvcmllcyBpbiB0aGluZ3MgbGlrZQ0KICAqZG9ja2VyKiBjb250YWluZXJz IGFuZCB3b3JrcyBhcm91bmQgYSAqYnVnKiBpbiBHaXQtZm9yLVdpbmRvd3MNCiAgMi41Ni4wLndp bmRvd3MuMSAoZS5nLiBzaGlwcGVkIGJ5ICpHaXRIdWIgQWN0aW9ucyopDQoNCiAgOm9wZW5fYm9v azogWW91IGNhbiByZWFkIG91ciBbYmxvZyBwb3N0XSBmb3IgcmVsZXZhbnQgKmxpbmtzKiBhbmQN CiAgKmRldGFpbHMqLg0KDQoNCltibG9nIHBvc3RdIDxodHRwczovL29wYW0ub2NhbWwub3JnL2Js b2cvb3BhbS0yLTYtMS8+DQoNClRyeSBpdCENCuKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFRo ZSB1cGdyYWRlIGluc3RydWN0aW9ucyBhcmUgdW5jaGFuZ2VkOg0KDQogIEZvciBVbml4IHN5c3Rl bXMNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiBiYXNoIC1jICJzaCA8KGN1cmwgLWZzU0wgaHR0 cHM6Ly9vcGFtLm9jYW1sLm9yZy9pbnN0YWxsLnNoKSAtLXZlcnNpb24gMi42LjEiDQogIOKUlOKU gOKUgOKUgOKUgA0KICBvciBmcm9tIFBvd2VyU2hlbGwgZm9yIFdpbmRvd3Mgc3lzdGVtcw0KICDi lIzilIDilIDilIDilIANCiAg4pSCIEludm9rZS1FeHByZXNzaW9uICImIHsgJChJbnZva2UtUmVz dE1ldGhvZCBodHRwczovL29wYW0ub2NhbWwub3JnL2luc3RhbGwucHMxKSB9IC1WZXJzaW9uIDIu Ni4xIg0KICDilJTilIDilIDilIDilIANCiAgUGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHRvIHRo ZSBbYnVnLXRyYWNrZXJdLg0KDQogIEhhcHB5IGhhY2tpbmcsIDw+IDw+IFRoZSBvcGFtIHRlYW0g PD4gPD4gOmNhbWVsOg0KDQogIC9Cb2xkIHRleHQgaXMgZG90dGVkIGFyb3VuZCBhcyBhbiBleHBl cmltZW50IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWQNCiAgYW5kIGZhc3RlciB0byBjb21wcmVo ZW5kLw0KDQoNCltidWctdHJhY2tlcl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vcGFtL2lz c3Vlcz4NCg0KDQpzaGFrdWhhY2hpIHYwLjQuMA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5v Y2FtbC5vcmcvdC9hbm4tc2hha3VoYWNoaS12MC00LTAvMTg1OTkvMT4NCg0KDQpFcnVFcmkgYW5u b3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICBEZWFyIGFsbCwNCg0KICBJ4oCZbSBoYXBweSB0byBhbm5vdW5jZSB0aGUgcmVsZWFzZSBv ZiBzaGFrdWhhY2hpIHYwLjQuMC4NCg0KICBTaGFrdWhhY2hpIGlzIHN0aWxsIGEgbXVzaWMgY29s bGVjdGlvbiBtYW5hZ2VyLg0KDQogIFRoaXMgcmVsZWFzZSBpbXBsZW1lbnRzIHRoZSAyIG1haW5z IG1pc3NpbmcgYml0czoNCiAg4oCiIFF1ZXJ5IGZsb2F0L2RhdGUgcHJvcGVydHkgZnJvbSB0aGUg Y29tbWFuZCBsaW5lDQogICAg4pSM4pSA4pSA4pSA4pSADQogICAg4pSCICMgZXhhbXBsZTogIExp c3QgYWxsIG11c2ljcyBvZiAqR29vZ2dvc2gqIHBsYXllZCB3aXRoaW4gdGhlIGxhc3QgMjQgaG91 cg0KICAgIOKUgiAkIHNraGMgbGlzdCAlcGxheWVkX2F0OjFkYWdvLi5ub3cgJWFydGlzdDpHb29n b29zaA0KICAgIOKUgiAjIE9yIHdpdGggdGhlIFMtZXhwcmVzc2lvbiBzeW50YXgNCiAgICDilIIg JCBza2hjIGxpc3QgLVEgIihhbmQgJXBsYXllZF9hdDoxZGFnby4ubm93ICVhcnRpc3Q6R29vZ29v c2gpIg0KICAgIOKUlOKUgOKUgOKUgOKUgA0KICDigKIgQ29tcGxleCBzdGF0cyBhcmUgZmluYWxs eSBjb21wdXRlZCB3aGVuIHF1ZXJ5aW5nIGFuIGFydGlzdA0KICAgIOKUjOKUgOKUgOKUgOKUgA0K ICAgIOKUgiAjIGV4YW1wbGU6IExpc3QgYWxsIGFydGlzdHMgaGF2aW5nIGF0IGxlYXN0IHR3byBh bGJ1bXMNCiAgICDilIIgJCBza2hjIGxpc3QgLUlhcnRpc3QgJWFsYnVtX2NvdW50OjIuLg0KICAg IOKUlOKUgOKUgOKUgOKUgA0KDQogIFRoaXMgcmVsZWFzZSBhbHNvIHN1cHBvcnRzIG1vcmXigKYg YSBzZW5zaWJsZSB0YWdnaW5nL3dyaXRpbmcNCiAgcHJvcGVydGllcy4NCiAg4oCiIFdoZW4gYWRk aW5nIGEgbXVzaWMgdGhlIHByb3BlcnR5IC9BTEJVTUFSVElTVFMvIChyZXNwLiAvQVJUSVNUUy8p DQogICAgd2lsbCBiZSBsb29rZWQgZmlyc3QgYW5kIGZhbGxiYWNrIHRvIC8qQUxCVU1BUlRJU1Qv DQogICAgKHJlc3AuIC8qQVJUSVNULykuDQogIOKAoiBXaGVuIHRhZ2dpbmcsIHR3byBuZXcgb3B0 aW9ucyAvLWovIGFuZCAvLUovIHdoaWNoIHNldCBhIGpvaW5waHJhc2UNCiAgICBiZXR3ZWVuIHRo ZSBuYW1lIG9mIGFydGlzdHMgYW5kIGFydGlzdHMgb2YgYWxidW1zDQogIOKUjOKUgOKUgOKUgOKU gA0KICDilIIgJCBza2hjIHRhZyAtYSAiU29uYSBKb2JhcnRlaCIgLWogJyYnIC1hICJZb3Vzc291 IE4nRG91ciIgS2FtYmVuZ3dvLmZsYWMNCiAg4pSCICMgV2lsbCBzZXQgQVJUSVNUIGFzIGEgc2lu Z2xlIHZhbHVlIGFuZCBBUlRJU1RTIGFzIHZhbHVlIGNvbnRhaW5pbmcgdHdvIHZhbHVlcw0KICDi lIIgIyBBUlRJU1QgPSBTb25hIEpvYmFydGVoICYgWW91c3NvdSBOJ0RvdXINCiAg4pSCICMgQVJU SVNUUyA9IFNvbmEgSm9iYXJ0ZWggfCBZb3Vzc291IE4nRG91cg0KICDilJTilIDilIDilIDilIAN Cg0KICA8aHR0cHM6Ly9jb2RlYmVyZy5vcmcvRXJ1RXJpL3NoYWt1aGFjaGk+DQoNCiAgVGhhbmtz IHlvdSBmb3IgeW91ciB0aW1lIFNpbmNlcmVseSB5b3Vycy4NCg0KDQpEb2NmZDogVFVJIG11bHRp bGluZSBmdXp6eSBkb2N1bWVudCBmaW5kZXIgLSAxMy4xLjMgKyBwcm9wZXIgdXNlciBndWlkZQ0K 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToN CiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tZG9jZmQtdHVpLW11bHRpbGluZS1m dXp6eS1kb2N1bWVudC1maW5kZXItMTMtMS0zLXByb3Blci11c2VyLWd1aWRlLzE4NjAxLzE+DQoN Cg0KRGFycmVuIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSADQoNCiAgSGkgYWxsLA0KDQogIEkgYW0gaGFwcHkgdG8gYW5ub3VuY2UgdGhl IHJlbGVhc2Ugb2YgRG9jZmQgMTMuMS4zLiBBbmQgc2luY2UgSSBnb3QgYQ0KICBiaXQgb2YgdGlt ZSAoZ290IGxhaWQgb2ZmIGZyb20gbWFzcyByZXN0cnVjdHVyaW5nKSwgSSBmaW5hbGx5IGNvbWJp bmVkDQogIGFsbCB0aGUgc2NhdHRlcmVkIGluc3RydWN0aW9ucyBpbnRvIGEgcHJvcGVyICh0aG91 Z2ggYmFzaWMpIHVzZXINCiAgZ3VpZGUsIHdoaWNoIEkgaG9wZSBuaWNlbHkgaWxsdXN0cmF0ZXMg dGhlIGNvb2wgcGFydHMgb2YgRG9jZmQuDQoNCiAgW1VzZXIgR3VpZGVdIC0gW1JlcG9dDQoNCg0K W1VzZXIgR3VpZGVdIDxodHRwczovL2RhcnJlbmxkbC5naXRodWIuaW8vZG9jZmQvZ3VpZGUvaW5k ZXguaHRtbD4NCg0KW1JlcG9dIDxodHRwczovL2dpdGh1Yi5jb20vZGFycmVubGRsL2RvY2ZkPg0K DQpXaGF0IERvY2ZkIGlzDQrilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYwN Cg0KICBUaGluayBpbnRlcmFjdGl2ZSBncmVwIGZvciB0ZXh0IGZpbGVzLCBQREZzLCBET0NYcywg ZXRjLCBidXQNCiAgd29yZC90b2tlbiBiYXNlZCBpbnN0ZWFkIG9mIHJlZ2V4IGFuZCBsaW5lIGJh c2VkLCBzbyB5b3UgY2FuIHNlYXJjaA0KICBhY3Jvc3MgbGluZXMgZWFzaWx5Lg0KDQogIERvY2Zk IGFpbXMgdG8gcHJvdmlkZSBnb29kIFVYIHZpYSBpbnRlZ3JhdGlvbiB3aXRoIGNvbW1vbiB0ZXh0 IGVkaXRvcnMNCiAgYW5kIFBERiB2aWV3ZXJzLCBzbyB5b3UgY2FuIGp1bXAgZGlyZWN0bHkgdG8g YSBzZWFyY2ggcmVzdWx0IHdpdGggYQ0KICBzaW5nbGUga2V5IHByZXNzLg0KDQogIDxodHRwczov L2dpdGh1Yi5jb20vZGFycmVubGRsL2RvY2ZkL3Jhdy9tYWluL2RlbW8tdmhzLWdpZnMvcmVwby5n aWY+DQoNCiAgQ2hlZXJzLCBEYXJyZW4NCg0KDQpPVVBTIG1lZXR1cCBvY3RvYmVyIDIwMjYNCuKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3Jn L3Qvb3Vwcy1tZWV0dXAtbm92ZW1iZXItMjAyNi8xODYxMC8xPg0KDQoNCmFuY29saWUgYW5ub3Vu Y2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICBUaGUgbmV4dCBPVVBTIG1lZXR1cCB3aWxsIHRha2UgcGxhY2Ugb24gKlR1ZXNkYXksIDNy ZCBvZiBOb3ZlbWJlcioNCiAgMjAyNi4gSXQgd2lsbCBzdGFydCBhdCAqNjozMHBtKiBhdCB0aGUg KjQgcGxhY2UgSnVzc2lldSogaW4gUGFyaXMuIEl0DQogIHdpbGwgYmUgaW4gdGhlIGluIHRoZSAq YW1waGl0aGVhdGVyIDQ1QSouIFRoZXJlIGlzIGEgW21hcCBvZiB0aGUNCiAgYnVpbGRpbmdzXS4N Cg0KICBQbGVhc2UsICpbcmVnaXN0ZXIgb24gbWVldHVwXSogYXMgc29vbiBhcyBwb3NzaWJsZSB0 byBsZXQgdXMga25vdyBob3cNCiAgbWFueSBwaXp6YSB3ZSBzaG91bGQgb3JkZXIuDQoNCiAgRm9y IG1vcmUgZGV0YWlscywgeW91IG1heSBjaGVjayB0aGUgW09VUFPigJkgd2Vic2l0ZSBdLg0KDQog IE1vcmVvdmVyLCB3ZeKAmWQgbGlrZSB0byBhbm5vdW5jZSB0aGF0IHRoZSBvcmdhbml6aW5nIHRl YW0gbW92ZWQgdG8gdGhlDQogIFtPQ2FtbCBadWxpcF0uIEZlZWwgZnJlZSB0byBjb250YWN0IHVz IHRoZXJlIGlmIHlvdeKAmWQgbGlrZSB0byBzdWdnZXN0DQogIHRhbGtzLg0KDQogIOKAlA0KDQog IFRoaXMgdGltZSB3ZeKAmWxsIGhhdmUgdGhlIGZvbGxvd2luZyB0YWxrczoNCg0KICAqQ29tcGls aW5nIEZGSS1oZWF2eSBPQ2FtbCB0byBXZWJBc3NlbWJseTogQW4gRXhwZXJpZW5jZSBSZXBvcnQg b24NCiAgIE1PUFNBIOKAkyBSw6lkYSBCb3Vkcm91c3MqDQoNCiAgTGFyZ2UgT0NhbWwgYXBwbGlj YXRpb25zIG9mdGVuIHJlbHkgb24gbmF0aXZlIEMgYW5kIEMrKyBsaWJyYXJpZXMNCiAgdGhyb3Vn aCB0aGUgT0NhbWwgRkZJLCBtYWtpbmcgdGhlbSBkaWZmaWN1bHQgdG8gcnVuIGluIHRoZQ0KICBi cm93c2VyLiBFeGlzdGluZyBicm93c2VyIGJhY2tlbmRzIGNvbXBpbGUgT0NhbWwgdG8gSmF2YVNj cmlwdCBvcg0KICBXZWJBc3NlbWJseSwgYnV0IGxlYXZlIHRoZSBuYXRpdmUgZGVwZW5kZW5jeSBz dGFjayBiZWhpbmQuDQoNCiAgSW4gdGhpcyBwcmVzZW50YXRpb24sIHdlIGV4cGxvcmUgYSBkaWZm ZXJlbnQgYXBwcm9hY2g6IGNvbXBpbGluZyB0aGUNCiAgT0NhbWwgcnVudGltZSB0b2dldGhlciB3 aXRoIHRoZSBjb21wbGV0ZSBuYXRpdmUgZGVwZW5kZW5jeSBzdGFjayB0bw0KICBXZWJBc3NlbWJs eSB1c2luZyBFbXNjcmlwdGVuLCBhbmQgcnVubmluZyB0aGUgb3JpZ2luYWwgT0NhbWwgYnl0ZWNv ZGUNCiAgb24gdG9wIG9mIGl0LiBGRkkgY2FsbHMgYXJlIHJlc29sdmVkIHRocm91Z2ggYSBzdGF0 aWMgcHJpbWl0aXZlIHRhYmxlLA0KICB3aXRob3V0IG1vZGlmeWluZyBleGlzdGluZyBGRkkgY29k ZSBvciBDYW1sSURMLWdlbmVyYXRlZCBiaW5kaW5ncy4NCg0KICBXZSBkZW1vbnN0cmF0ZSB0aGlz IGFwcHJvYWNoIG9uIE1PUFNBLCBhIHN0YXRpYyBhbmFseXplciBjb21iaW5pbmcNCiAgT0NhbWwg d2l0aCBMTFZNL0NsYW5nLCBHTVAsIE1QRlIsIEFwcm9uLCBhbmQgQ2FtbElETCwgYW5kIHNob3cg aG93IHRoZQ0KICBjb21wbGV0ZSBhcHBsaWNhdGlvbiBjYW4gcnVuIGRpcmVjdGx5IGluIGEgd2Vi IGJyb3dzZXIuDQoNCiAgKkRlc2lnbmluZyBhIFNldC1UaGVvcmV0aWMgVHlwZSBMaWJyYXJ5IGlu IE9DYW1sIOKAkyBNaWNrYcOrbCBMYXVyZW50Kg0KDQogIEluIHRoaXMgdGFsaywgSSB3aWxsIHNo YXJlIG15IGV4cGVyaWVuY2UgdXNpbmcgT0NhbWwgdG8gZGVzaWduIGENCiAgbGlicmFyeSBmb3Ig c2V0LXRoZW9yZXRpYyB0eXBlcy4gIFNldC10aGVvcmV0aWMgdHlwZXMgYXJlIGRpZmZpY3VsdCB0 bw0KICBkZWZpbmUgYmVjYXVzZSB0aGV5IGNvbnNpc3Qgb2Ygc2V2ZXJhbCByZWN1cnNpdmUgY29t cG9uZW50cyBhbmQNCiAgbGF5ZXJzLiAgRnVydGhlcm1vcmUsIHRoZSB0ZXJtaW5hdGlvbiBvZiBj ZXJ0YWluIG9wZXJhdGlvbnMgb24NCiAgcmVjdXJzaXZlIHR5cGVzIGRlcGVuZHMgb24gYSBoYXNo LWNvbnNpbmcgc3lzdGVtIG9wZXJhdGluZyBhdCB2YXJpb3VzDQogIGxldmVscy4gIEkgd2lsbCBk aXNjdXNzIHRoZSBjaGFsbGVuZ2VzIGFuZCBhZHZhbnRhZ2VzIG9mIHVzaW5nIE9DYW1sLA0KICBz dWNoIGFzIHRoZSBkaWZmaWN1bHR5IG9mIG1ha2luZyBzb21lIHJlY3Vyc2l2ZSBtb2R1bGVzIHR5 cGVjaGVjayBhbmQNCiAgaG93IHdlIHVzZWQgYWxnZWJyYWljIGVmZmVjdHMgdG8gaW1wbGVtZW50 IG91ciBoYXNoLWNvbnNpbmcgc3lzdGVtLg0KDQogIOKAlA0KDQogIEFmdGVyIHRoZSB0YWxrcyB0 aGVyZSB3aWxsIGJlIHNvbWUgcGl6emFzIG9mZmVyZWQgYnkgdGhlIFtPQ2FtbA0KICBTb2Z0d2Fy ZSBGb3VuZGF0aW9uXSBhbmQgbGF0ZXIgb24gd2XigJlsbCBtb3ZlIHRvIGEgcHViIG5lYXJieSBh cyB1c3VhbC4NCg0KDQpbbWFwIG9mIHRoZSBidWlsZGluZ3NdDQo8aHR0cHM6Ly9zY2llbmNlcy5z b3Jib25uZS11bml2ZXJzaXRlLmZyL3ZpZS1kZS1jYW1wdXMtc2NpZW5jZXMvYWNjdWVpbC12aWUt cHJhdGlxdWUvcGxhbi1kdS1jYW1wdXM+DQoNCltyZWdpc3RlciBvbiBtZWV0dXBdDQo8aHR0cHM6 Ly93d3cubWVldHVwLmNvbS9mci1GUi9vY2FtbC1wYXJpcy9ldmVudHMvMzE2OTQ1NTAzPg0KDQpb T1VQU+KAmSB3ZWJzaXRlIF0gPGh0dHBzOi8vb3Vwcy5mcmFtYS5pbz4NCg0KW09DYW1sIFp1bGlw XSA8aHR0cHM6Ly9vY2FtbC56dWxpcGNoYXQuY29tPg0KDQpbT0NhbWwgU29mdHdhcmUgRm91bmRh dGlvbl0gPGh0dHBzOi8vb2NhbWwtc2Yub3JnPg0KDQoNCmZha2VyIDAuMS4xOiBmYWtlIChidXQg cmVhbGlzdGljKSBkYXRhLCBzZWVkLWNvbXBhdGlibGUgd2l0aCBmYWtlci1qcw0K4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlz Y3Vzcy5vY2FtbC5vcmcvdC9hbm4tZmFrZXItMC0xLTEtZmFrZS1idXQtcmVhbGlzdGljLWRhdGEt c2VlZC1jb21wYXRpYmxlLXdpdGgtZmFrZXItanMvMTg2MTEvMT4NCg0KDQpCYXJ0ZWsgVGVvZG9y Y3p5ayBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEknbSBoYXBweSB0 byBhbm5vdW5jZSBbZmFrZXJdLCBhIGxpYnJhcnkgZm9yIGdlbmVyYXRpbmcgZmFrZSBidXQNCiAg cmVhbGlzdGljIGRhdGE6IG5hbWVzLCBhZGRyZXNzZXMsIGVtYWlscywgcGhvbmUgbnVtYmVycywg Y29tcGFuaWVzLA0KICBkYXRlcywgZmluYW5jZSBkYXRhLCBsb3JlbSBpcHN1bSBhbmQgbW9yZSwg aW4gNzcgbG9jYWxlcy4NCg0KICDilIzilIDilIDilIDilIANCiAg4pSCIG9wYW0gaW5zdGFsbCBm YWtlcg0KICDilJTilIDilIDilIDilIANCg0KICBBcyBmYXIgYXMgSSBjb3VsZCBmaW5kLCBPQ2Ft bCBkaWRuJ3QgaGF2ZSBhIGZha2VyLXN0eWxlDQogIGxpYnJhcnkuIFByb3BlcnR5LXRlc3Rpbmcg Z2VuZXJhdG9ycyBsaWtlIFFDaGVjayBnaXZlIHlvdSByYW5kb20NCiAgdmFsdWVzLCBidXQgbm90 IHBsYXVzaWJsZSwgbG9jYWxpc2VkIGZpeHR1cmVzIGZvciBkZW1vcywgc2VlZGluZyBhDQogIGRl dmVsb3BtZW50IGRhdGFiYXNlIG9yIHNuYXBzaG90IHRlc3RzLg0KDQogIGZha2VyIGlzIGEgcG9y dCBvZiBbQGZha2VyLWpzL2Zha2VyXSAxMC42LjAsIHdpdGggKipzZWVkLWZvci1zZWVkDQogIHBh cml0eSoqOiBmb3IgdGhlIHNhbWUgc2VlZCwgZXZlcnkgbWV0aG9kIHJldHVybnMgZXhhY3RseSB3 aGF0DQogIGZha2VyLWpzIHJldHVybnMuIEl0IHVzZXMgdGhlIHNhbWUgTWVyc2VubmVUd2lzdGVy MTk5MzcgZ2VuZXJhdG9yIGFuZA0KICB0aGUgc2FtZSBhbGdvcml0aG1zLCBzbyBhbiBPQ2FtbCBz ZXJ2aWNlIGFuZCBhIEpTL1RTIHNlcnZpY2UgY2FuIHNoYXJlDQogIGZpeHR1cmVzLg0KDQogIOKU jOKUgOKUgOKUgOKUgA0KICDilIIgbGV0ICgpID0NCiAg4pSCICAgbGV0IGYgPSBGYWtlci5jcmVh dGUgfnNlZWQ6NDIgKCkgaW4NCiAg4pSCICAgcHJpbnRfZW5kbGluZSAoRmFrZXIuUGVyc29uLmZ1 bGxfbmFtZSBmKTsNCiAg4pSCICAgcHJpbnRfZW5kbGluZSAoRmFrZXIuSW50ZXJuZXQuZW1haWwg Zik7DQogIOKUgiAgIHByaW50X2VuZGxpbmUgKEZha2VyLkxvY2F0aW9uLmNpdHkgZik7DQogIOKU giAgIHByaW50X2VuZGxpbmUNCiAg4pSCICAgICAoRmFrZXIuSGVscGVycy5mYWtlICJ7e3BlcnNv bi5maXJzdE5hbWV9fSB3b3JrcyBhcyBhIHt7cGVyc29uLmpvYlRpdGxlfX0iIGYpOw0KICDilIIg ICBsZXQgZGUgPSBGYWtlci5Mb2NhbGVzLkRlLmZha2VyICgpIGluDQogIOKUgiAgIEZha2VyLnNl ZWQgZGUgNDI7DQogIOKUgiAgIHByaW50X2VuZGxpbmUgKEZha2VyLlBlcnNvbi5mdWxsX25hbWUg ZGUpOw0KICDilIIgICBsZXQgamEgPSBGYWtlci5Mb2NhbGVzLkphLmZha2VyICgpIGluDQogIOKU giAgIEZha2VyLnNlZWQgamEgNDI7DQogIOKUgiAgIHByaW50X2VuZGxpbmUgKEZha2VyLlBlcnNv bi5mdWxsX25hbWUgamEpDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIOKUjOKUgOKUgOKUgOKUgA0K ICDilIIgTmlraXRhIENyaXN0DQogIOKUgiBNb2lzZXMuU2lwZXMtRWZmZXJ0ejE4QGdtYWlsLmNv bQ0KICDilIIgTG9sYXZpbGxlDQogIOKUgiBKZWFubmV0dGUgd29ya3MgYXMgYSBGb3J3YXJkIElt cGxlbWVudGF0aW9uIEFuYWx5c3QNCiAg4pSCIE1lbGluZGEgRHJhZ3UNCiAg4pSCIOWQieW3nSDn tZDooaMNCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAgVGhlIGVxdWl2YWxlbnQgZmFrZXItanMgY29k ZSBwcmludHMgdGhlIHNhbWUgc2l4IGxpbmVzLg0KDQogICpXaGF0J3MgaW4gaXQqDQoNCiAg4oCi IEFsbCAyNiBmYWtlci1qcyBtb2R1bGVzIChgRmFrZXIuUGVyc29uJywgYEZha2VyLkludGVybmV0 JywNCiAgICBgRmFrZXIuTG9jYXRpb24nLCBgRmFrZXIuRGF0ZScsIGBGYWtlci5GaW5hbmNlJywg YEZha2VyLkNvbW1lcmNlJywNCiAgICDigKYpIGFuZCBhbGwgNzcgbG9jYWxlcy4NCiAg4oCiIFRo ZSBBUEkgbWlycm9ycyBmYWtlci1qcywgc28gdGhlIFtmYWtlci1qcyBBUEkgcmVmZXJlbmNlXSBk b2N1bWVudHMNCiAgICBldmVyeSBtZXRob2QuIFRoZSBmYWtlciBpbnN0YW5jZSBpcyBhbHdheXMg dGhlIGxhc3QgYXJndW1lbnQsIGFuZA0KICAgIG9wdGlvbnMgYXJlIG9wdGlvbmFsIGxhYmVsbGVk IGFyZ3VtZW50czogYGZha2VyLm51bWJlci5pbnQoeyBtaW46IDEsDQogICAgbWF4OiAxMCB9KScg YmVjb21lcyBgRmFrZXIuTnVtYmVyLmludCB+bWluOjEgfm1heDoxMCBmJy4NCiAg4oCiIE5vIGRl cGVuZGVuY2llcyBiZXlvbmQgdGhlIHN0ZGxpYiBhbmQgYHVuaXgnLiBMb2NhbGVzIGFyZSBsaW5r ZWQgb24NCiAgICBkZW1hbmQsIHNvIGFuIEVuZ2xpc2gtb25seSBwcm9ncmFtIGRvZXNuJ3QgY2Fy cnkgdGhlIG90aGVyIDc2Lg0KDQogICpIb3cgcGFyaXR5IGlzIGNoZWNrZWQqDQoNCiAgYGR1bmUg dGVzdCcgY29tcGFyZXMgdGhlIE9DYW1sIG91dHB1dCB3aXRoIGZpeHR1cmVzIGdlbmVyYXRlZCBi eQ0KICBydW5uaW5nIGZha2VyLWpzIGl0c2VsZjogMyBzZWVkcyBmb3IgZXZlcnkgY2FzZSwgcGx1 cyBhIHN3ZWVwIG9mIGV2ZXJ5DQogIG1ldGhvZCBpbiBldmVyeSBsb2NhbGUgKGFib3V0IDcyLDAw MCBjaGVja3MpLiBHZXR0aW5nIHRoZW0gYWxsIHRvIHBhc3MNCiAgbWVhbnQgc29sdmluZyBhIGZl dyBwcm9ibGVtcyB0aGF0IG1heSBpbnRlcmVzdCBwZW9wbGUgaGVyZToNCg0KICDigKIgKkZNQSBj b250cmFjdGlvbi4qIE9uIGFybTY0LCB0aGUgT0NhbWwgY29tcGlsZXIgZnVzZXMgYGEgKi4gYiAr LiBjJw0KICAgICBpbnRvIGEgc2luZ2xlIGZ1c2VkIG11bHRpcGx5LWFkZCwgd2hpY2ggcm91bmRz IGRpZmZlcmVudGx5IGZyb20NCiAgICAgVjguIFRoZSBwb3J0IHVzZXMgYW4gZXhwbGljaXQgbXVs dGlwbHkgd2hlcmUgaXQgbWF0dGVycy4NCiAg4oCiICpFdmFsdWF0aW9uIG9yZGVyLiogT0NhbWwg ZXZhbHVhdGVzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgcmVjb3JkDQogICAgIGZpZWxkcyByaWdo dCB0byBsZWZ0LCBzbyBldmVyeSByYW5kb20gZHJhdyBpcyBib3VuZCB3aXRoIGBsZXQnIGluDQog ICAgIGZha2VyLWpzJ3Mgb3JkZXIuDQogIOKAoiAqVVRGLTE2IHNlbWFudGljcy4qIEpTIHN0cmlu ZyBsZW5ndGhzLCBjYXNlIG1hcHBpbmcgYW5kIE5GS0QNCiAgICAgbm9ybWFsaXNhdGlvbiBhcmUg ZW11bGF0ZWQgb24gVVRGLTggc3RyaW5ncywgd2l0aCB0YWJsZXMgZ2VuZXJhdGVkDQogICAgIGZy b20gTm9kZS4NCiAg4oCiICpGbG9hdGluZy1wb2ludCBtYXRocy4qIGBsb2NhdGlvbi5uZWFyYnlH UFNDb29yZGluYXRlJyB1c2VzIGEgcG9ydA0KICAgICBvZiBWOCdzIGZkbGlibSBgc2lufi9+Y29z Jy4gVGhlIG9uZSBrbm93biBwbGF0Zm9ybSBkZXBlbmRlbmNlIGlzDQogICAgIGBNYXRoLnBvdycg aW4gdGhlIGV4cG9uZW50aWFsIGRpc3RyaWJ1dG9yOiBOb2RlIGNhbGxzIHRoZSBzeXN0ZW0NCiAg ICAgbGlibSwgc28gZmFrZXItanMgaXRzZWxmIHJvdW5kcyB0aGUgbGFzdCBiaXQgZGlmZmVyZW50 bHkgb24NCiAgICAgRnJlZUJTRC4gb3BhbS1yZXBvLWNpIGZvdW5kIHRoaXMsIGFuZCAwLjEuMSBp cyB0aGUgZml4Lg0KDQogIFRoZSBwb3J0aW5nIG5vdGVzIGFyZSBpbiBbZG9jcy9QT1JUSU5HLm1k XSwgYW5kIHRoZSByZW1haW5pbmcNCiAgZGlmZmVyZW5jZXMgYXJlIGxpc3RlZCBpbiB0aGUgW1JF QURNRV0gdW5kZXIgIktub3duIGRpZmZlcmVuY2VzIi4NCg0KICAqTGlua3MqDQoNCiAg4oCiIFBh Y2thZ2UgYW5kIEFQSSBkb2NzOiA8aHR0cHM6Ly9vY2FtbC5vcmcvcC9mYWtlcj4NCiAg4oCiIFNv dXJjZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9iYXJ0ZW8vZmFrZXItb2NhbWw+DQogIOKAoiBJc3N1 ZXM6IDxodHRwczovL2dpdGh1Yi5jb20vYmFydGVvL2Zha2VyLW9jYW1sL2lzc3Vlcz4NCg0KICBB bGwgdGhlIGRhdGEgYW5kIGFsZ29yaXRobXMgY29tZSBmcm9tIGZha2VyLWpzLCBzbyBtYW55IHRo YW5rcyB0byB0aGUNCiAgZmFrZXItanMgdGVhbSBhbmQgY29udHJpYnV0b3JzLiBGZWVkYmFjayBh bmQgYnVnIHJlcG9ydHMgYXJlIHZlcnkNCiAgd2VsY29tZSwgZXNwZWNpYWxseSBhbnkgY2FzZSB3 aGVyZSB0aGUgb3V0cHV0IGRpZmZlcnMgZnJvbSBmYWtlci1qcy4NCg0KDQpbZmFrZXJdIDxodHRw czovL29jYW1sLm9yZy9wL2Zha2VyPg0KDQpbQGZha2VyLWpzL2Zha2VyXSA8aHR0cHM6Ly9naXRo dWIuY29tL2Zha2VyLWpzL2Zha2VyPg0KDQpbZmFrZXItanMgQVBJIHJlZmVyZW5jZV0gPGh0dHBz Oi8vZmFrZXJqcy5kZXYvYXBpLz4NCg0KW2RvY3MvUE9SVElORy5tZF0NCjxodHRwczovL2dpdGh1 Yi5jb20vYmFydGVvL2Zha2VyLW9jYW1sL2Jsb2IvbWFpbi9kb2NzL1BPUlRJTkcubWQ+DQoNCltS RUFETUVdIDxodHRwczovL2dpdGh1Yi5jb20vYmFydGVvL2Zha2VyLW9jYW1sI3JlYWRtZT4NCg0K DQpPbGQgQ1dODQrilZDilZDilZDilZDilZDilZDilZANCg0KICBJZiB5b3UgaGFwcGVuIHRvIG1p c3MgYSBDV04sIHlvdSBjYW4gW3NlbmQgbWUgYSBtZXNzYWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0 IHRvIHlvdSwgb3IgZ28gdGFrZSBhIGxvb2sgYXQgW3RoZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBm ZWVkIG9mIHRoZQ0KICBhcmNoaXZlc10uDQoNCiAgSWYgeW91IGFsc28gd2lzaCB0byByZWNlaXZl IGl0IGV2ZXJ5IHdlZWsgYnkgbWFpbCwgeW91IG1heSBzdWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1s LWxpc3RdLg0KDQogIFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFp bHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0 cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hp dmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4NCg0KW2NhbWwt bGlzdF0gPGh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvaW5mby9jYW1sLWxpc3Q+DQoNCltB bGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --==-=-= 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 October 06 to 13, 202= 6.

Sedlex 3.8.1

Hhugo announced

Sedlex 3.8.1 is out! =F0=9F=8E=89

Sedlex is a unicode-friendly lexer generator for OCaml originally written by Alain Frisch at LexiFi and now maintained under the ocaml-community umbrella.

The headline feature is named capture groups. Sub-patterns can be bo= und with OCaml's as syntax and read back in the action:

match%sedlex buf <=
span style=3D"color: #006f00; font-weight: bold;">with
| (Plus ('0'..'9') as num), '.', (Plus ('0'..'9') as frac) -&=
gt;
    let n =3D Sedlexing.Utf8.of_submatch num in
    let f =3D Sedlexing.Utf8.of_submatch frac in
    Printf.printf=
 "integer=3D%s fractional=3D%s\n" n f
| _ -> ()

Captures are implemented with a tagged DFA, so the generated lexer remains a single pass with no backtracking, and lexers that don't use as= generate the same code as before. Sub-matches are leftmost-greedy within the longest mat= ch. as is not allowed under Star, Plus, = Opt, Rep, Compl, Sub or Intersect.

This release also brings, among other things:

  • Unicode 18.0.0
  • Faster lexeme, sub_lexeme and of_submat= ch for Latin1, UTF-8 and UTF-16

You can read the notes in htt= ps://github.com/ocaml-community/sedlex/releases/tag/v3.8 (unreleased) a= nd h= ttps://github.com/ocaml-community/sedlex/releases/tag/v3.8.1.

It should be available soon on opam.

opam 2.6.1

Kate announced

Hi everyone,

opam 2.6.1 is now available.

This release *fix*es a *regr*ession from 2.6.0 where opam install --d= eps-only would *not inst*all the depexts field from the= *pack*ages being *reque*sted.

It also impr*oves handling of Git repositories in things like *docker containers and works around a bug in Git-for-Windows 2.56.0.window= s.1 (e.g. shipped by GitHub Actions)

:open_book: You can read our blog post for relevant links and details.

Try it!

The upgrade instructions are unchanged:

For Unix systems

bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.=
6.1"

or from PowerShell for Windows systems

Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/insta=
ll.ps1) } -Version 2.6.1"

Please report any issues to the bug-tracker.

Happy hacking, <> <> The opam team <> <> :camel:

Bold text is dotted around as an experiment to make it easier to read an= d faster to comprehend

shakuhachi v0.4.0

EruEri announced

Dear all,

I=E2=80=99m happy to announce the release of shakuhachi v0.4.0.

Shakuhachi is still a music collection manager.

This release implements the 2 mains missing bits:

  • Query float/date property from the command line=20=20

    # example:  List all musics of *Googgosh* played within the last 24 hour
    $ skhc list %played_at:1dago..now %artist:Googoosh
    # Or with the S-expression syntax
    $ skhc list -Q "(and %played_at:1dago..now %artist:Googoosh)"
    
  • Complex stats are finally computed when querying an artist

    # example: List all artists having at least two albums
    $ skhc list -Iartist %album_count:2..
    

This release also supports more… a sensible tagging/writing properti= es.

  • When adding a music the property ALBUMARTISTS (resp. ARTISTS<= /i>) will be looked first and fallback to *ALBUMARTIST (resp. *AR= TIST).
  • When tagging, two new options -j and -J which set a joinp= hrase between the name of artists and artists of albums
$ skhc tag -a "Sona Jobarteh" -j '&' -a "Youssou N'Dour" Kambengwo.flac
# Will set ARTIST as a single value and ARTISTS as value containing two val=
ues
# ARTIST =3D Sona Jobarteh & Youssou N'Dour
# ARTISTS =3D Sona Jobarteh | Youssou N'Dour

https://codeberg.org/Eru= Eri/shakuhachi

Thanks you for your time Sincerely yours.

Docfd: TUI multiline fuzzy document finder - 13.1.3 + proper u= ser guide

Darren announced

Hi all,

I am happy to announce the release of Docfd 13.1.3. And since I got a bit o= f time (got laid off from mass restructuring), I finally combined all the s= cattered instructions into a proper (though basic) user guide, which I hope= nicely illustrates the cool parts of Docfd.

User Guide - Repo

What Docfd is

Think interactive grep for text files, PDFs, DOCXs, etc, but word/token bas= ed instead of regex and line based, so you can search across lines easily.

Docfd aims to provide good UX via integration with common text editors and = PDF viewers, so you can jump directly to a search result with a single key = press.

3D"repo.gif"

Cheers, Darren

OUPS meetup october 2026

ancolie announced

The next OUPS meetup will take place on Tuesday, 3rd of November 202= 6. It will start at 6:30pm at the 4 place Jussieu in Paris. I= t will be in the in the amphitheater 45A. There is a map of the buildings.

Please, register on meetup as soon as possible to let us know how man= y pizza we should order.

For more details, you may check the OUPS= =E2=80=99 website .

Moreover, we=E2=80=99d like to announce that the organizing team moved to t= he OCaml Zulip. Feel free to co= ntact us there if you=E2=80=99d like to suggest talks.

—

This time we=E2=80=99ll have the following talks:

Compiling FFI-heavy OCaml to WebAssembly: An Experience Report on MOPSA = – R=C3=A9da Boudrouss

Large OCaml applications often rely on native C and C++ libraries through t= he OCaml FFI, making them difficult to run in the browser. Existing browser= backends compile OCaml to JavaScript or WebAssembly, but leave the native = dependency stack behind.

In this presentation, we explore a different approach: compiling the OCaml = runtime together with the complete native dependency stack to WebAssembly u= sing Emscripten, and running the original OCaml bytecode on top of it. FFI = calls are resolved through a static primitive table, without modifying exis= ting FFI code or CamlIDL-generated bindings.

We demonstrate this approach on MOPSA, a static analyzer combining OCaml wi= th LLVM/Clang, GMP, MPFR, Apron, and CamlIDL, and show how the complete app= lication can run directly in a web browser.

Designing a Set-Theoretic Type Library in OCaml – Micka=C3=ABl Lau= rent

In this talk, I will share my experience using OCaml to design a library fo= r set-theoretic types. Set-theoretic types are difficult to define because they consist of several= recursive components and layers. Furthermore, the termination of certain operations on recursive types depen= ds on a hash-consing system operating at various levels. I will discuss the challenges and advantages of using OCaml, such as the di= fficulty of making some recursive modules typecheck and how we used algebra= ic effects to implement our hash-consing system.

—

After the talks there will be some pizzas offered by the OCaml Software Foundation and later on we=E2=80=99ll mov= e to a pub nearby as usual.

faker 0.1.1: fake (but realistic) data, seed-compatible with f= aker-js

Bartek Teodorczyk announced

I'm happy to announce faker, a li= brary for generating fake but realistic data: names, addresses, emails, pho= ne numbers, companies, dates, finance data, lorem ipsum and more, in 77 loc= ales.

opam install faker

As far as I could find, OCaml didn't have a faker-style library. Property-t= esting generators like QCheck give you random values, but not plausible, lo= calised fixtures for demos, seeding a development database or snapshot test= s.

faker is a port of @faker-js/= faker 10.6.0, with seed-for-seed parity: for the same see= d, every method returns exactly what faker-js returns. It uses the same Mer= senneTwister19937 generator and the same algorithms, so an OCaml service an= d a JS/TS service can share fixtures.

let () =3D
  let f =3D Faker.create ~seed:42 () in
  print_endline (Faker.P=
erson.full_name f);
  print_endline (Faker.I=
nternet.email f);
  print_endline (Faker.L=
ocation.city f);
  print_endline
    (Faker.Helpers.fake "{{person.firstName}} works as a {{p=
erson.jobTitle}}" f);
  let de =3D Faker.Locales.De.faker () in
  Faker.seed de 4=
2;
  print_endline (Faker.P=
erson.full_name de);
  let ja =3D Faker.Locales.Ja.faker () in
  Faker.seed ja 4=
2;
  print_endline (Faker.P=
erson.full_name ja)
Nikita Crist
Moises.Sipes-Effertz18@gmail.com
Lolaville
Jeannette works as a Forward Implementation Analyst
Melinda Dragu
=E5=90=89=E5=B7=9D =E7=B5=90=E8=A1=A3

The equivalent faker-js code prints the same six lines.

What's in it

  • All 26 faker-js modules (Faker.Person, Faker.Interne= t, Faker.Location, Faker.Date, Faker= .Finance, Faker.Commerce, …) and all 77 locales.=
  • The API mirrors faker-js, so the f= aker-js API reference documents every method. The faker instance is alw= ays the last argument, and options are optional labelled arguments: f= aker.number.int({ min: 1, max: 10 }) becomes Faker.Number.int = ~min:1 ~max:10 f.
  • No dependencies beyond the stdlib and unix. Locales are li= nked on demand, so an English-only program doesn't carry the other 76.

How parity is checked

dune test compares the OCaml output with fixtures generated by= running faker-js itself: 3 seeds for every case, plus a sweep of every met= hod in every locale (about 72,000 checks). Getting them all to pass meant s= olving a few problems that may interest people here:

  • FMA contraction. On arm64, the OCaml compiler fuses a *. b= +. c into a single fused multiply-add, which rounds differently fro= m V8. The port uses an explicit multiply where it matters.
  • Evaluation order. OCaml evaluates function arguments and record = fields right to left, so every random draw is bound with let i= n faker-js's order.
  • UTF-16 semantics. JS string lengths, case mapping and NFKD norma= lisation are emulated on UTF-8 strings, with tables generated from Node.
  • Floating-point maths. location.nearbyGPSCoordinate = uses a port of V8's fdlibm sin~/~cos. The one known platform d= ependence is Math.pow in the exponential distributor: Node cal= ls the system libm, so faker-js itself rounds the last bit differently on F= reeBSD. opam-repo-ci found this, and 0.1.1 is the fix.

The porting notes are in docs/PORTING.md, and the remaining difference= s are listed in the README under "Known differences".

Links

All the data and algorithms come from faker-js, so many thanks to the faker= -js team and contributors. Feedback and bug reports are very welcome, espec= ially any case where the output differs from faker-js.

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/BsSVW56ZmGBA0KO07S5ccFAmrN1msbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmcACgkQBA0KO07S5cfVeggAxYR+rW6loXA8ho9NXa+Bs4w1kV3i6pRiYlt63NBA /Qt8CvRdcZoYCFdbxXHlSoOlFUo5uFuA6LzztTLiKqaf78GoHXh8RXbJ+zQ/F6Ds rgdjNLbpAvPeLmJrlT6ybCwKkFZERM8vh9KDVbF8xTWiAf9rEnWpqy9D9H+Mvq8/ +JWWR72MJ+IZx4UkIXpnbIUFwwq9hT9U32t67XFZuXev6BhaLo5HDL4ICxS+LHMN fmSNrV/C4rlhHfEFMzn23uQ3+bt37zcA7U5ie4xoEtuFag77LF3BAtKeUcl0lRfJ iSIUX68J42ZJOpGtflbn87oc3XVLGG6aqJw7NqJvIuQN5g== =6XS3 -----END PGP SIGNATURE----- --===-=-=--