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=GgjqMLLy; 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 5C3D540022 for ; Tue, 11 Aug 2026 12:25:53 +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=E9P70y4lt0jLmIiUV5+0ctrZrEc7J91Cg4fBPs8TCAQ=; b=GgjqMLLycJoklcGACoCLyWqJRhuRyEwRq0BCDdY+ruKniopUxnn+p7aF AXFl5La/1O1Cg9JNiuHCHvmw9x5tAuRqFx/z8iz5+2RJtCSUiyY4Zi31E ogCTXD9tZFoYOZ6ypkrFMVlY+fhJH0725+uzmkTdbNG5O/iHRe2ar1Eqk A=; X-CSE-ConnectionGUID: NjUn8oVLQq+B3JozPywjhw== X-CSE-MsgGUID: M3XDOWvMTvWARxyUkzpc1w== 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.25,217,1779141600"; d="asc'?scan'208,217";a="289796713" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 11 Aug 2026 14:25:50 +0200 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id B4C3A81400; Tue, 11 Aug 2026 14:25:50 +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 5518C813FB for ; Tue, 11 Aug 2026 14:25:39 +0200 (CEST) X-CSE-ConnectionGUID: 7VgWTxp4QomRi/OzRnkqTA== X-CSE-MsgGUID: kVN4ruLATe6rfzQFsLoxow== IronPort-SDR: 6a7b14c0_4Rnnhnjhjtne0AF6VxzyXLYaeKbhulxSBfFXhBAce7LFwh6 lqhKnVdA6nJ37T+4tjO+i+GdJtVUGBtiTRjQRXg== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0HGBwDmE3tqhSIeaIFaglkCgTuBBBsBbl8zBwhJA4QZP?= =?us-ascii?q?IFjgWyOJIEWkDeCPIcwgRCBaYErFiECDgcBAwEIBS4BGwQBAgQBAQECAQIBg?= =?us-ascii?q?0eBNwIWjVICHwYBBDMGDgECBAMCAwEBAQEBAQEBAQEBCwEBAQQBAQECAQECB?= =?us-ascii?q?AMBAQEBAhABAQEBQEmGFQEGMw1JARABgWoZODcdHV4CBAMGBwEBAQEBAQEBA?= =?us-ascii?q?QIBAQEiAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQIECAEHEgptDgECBgQGEwEBLgMBBhgjAwkHBAEGAwIEDQE1FwEJCRQGg?= =?us-ascii?q?mgBgiACAlADBAEMBqkPmyJ6fzOBAYIMAQEGgQg+AgESD9pIgWAJCRSBIRiBW?= =?us-ascii?q?IQZglAPDQEFJUlqAgEChFGDIiR5AgcgD4FVRIEVgilKB2+BfkUHFwEBAQEYf?= =?us-ascii?q?w0EEAQBAQZHCQmDHIJqgiY8PhKBPDwFSxwFGCVMgQqDHIEpgkWGeYFmA1ksA?= =?us-ascii?q?VUTFwsHBV6BCAMqLy1uMh2BIz4XNVgbBgWBHYEohGgjGTZ8gQlegSsqZRIXg?= =?us-ascii?q?QmCNAKCdoEtOQttPTcUGYxmECENgTxKGSCBeQ44CDAnHAcOBQEKCQgOAQEFF?= =?us-ascii?q?QYCNhoCGAUHAwIWAQ4DCAQJCgQEFykGCwseDwIDkkMGDiglBQIBdI5njhmTd?= =?us-ascii?q?m00B4QhgWAGDIhGQ4Emi2aGSoNXhASBV4VAhX0DhwCSUSKYZiOJXoEmCYFva?= =?us-ascii?q?4dcjUgSKgIGCwQJCIUxgX4kSWIBARkBAgwHMxowQ4IzAQEyCRYxHA+IIYEVh?= =?us-ascii?q?EkrGYMCXkFAPYMaO8cFA0I1AgEBCjEHAgcBAQsBA4VOHQEBaYMJiBYya2EBA?= =?us-ascii?q?Q?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:HYwfr6HBU2FfYQivpLqE18eALOsnbusQ8zAXPiFKOH5om6mj/a 2TdZsgtCMc5Ax8ZJhCo6HiBEDjexPhHPdOiOF7AV7IZmfbUQWTQ71K3M/L/HnLGiH19OJRvJ 0QFpRWOZnXFlY/qc775WCDYrEdKTS8gcSVuds= X-Talos-CUID: 9a23:gTMim2w3scolz640inOLBgVLJM8aTm3FkE7XJnW5TkF7cruWUGO5rfY= X-Talos-MUID: 9a23:5GC2nAnaf2KGJRG0xJbudnphCuE0+bmKIXwAz48IqfCqLgh3KzCC2WE= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.25,217,1779141600"; d="asc'?scan'208,217";a="154038242" X-URL-ContentFilter: X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-MGA-submission: =?us-ascii?q?MDETj1qKMD3YGkGG/FecGiwybLovAxrlEmvyp6?= =?us-ascii?q?rrylQ416iClNkPxm4TgqKPlCEs7dAxryMVOoYHMBGdCY1G4CfbzQuaEr?= =?us-ascii?q?JiM0/LQocRhNP+AEd/nbyhvoSrMIQhTPlawTTzwvqAW2YnDcU0DL84ij?= =?us-ascii?q?Ps0XoQYmJqeq6trUCG0iyEpw=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; 11 Aug 2026 14:25:36 +0200 Received: from TM.local (unknown [37.165.248.46]) (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 77FF11A403; Tue, 11 Aug 2026 14:25:34 +0200 (CEST) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 11 Aug 2026 14:25:27 +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 Aug 11 14:25:35 2026 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.499176, queueID=D03EC1A420 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: 19564 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 ZWsgb2YgQXVndXN0IDA0IHRvIDExLA0KMjAyNi4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpEdW5lIDMu MjQNCk5ldyByZWxlYXNlcyBvZiBNZXJsaW4gYW5kIE9DYW1sLUxTUCBmb3IgT0NhbWwgNS41IGFu ZCB0cnVuaw0Kc2RsMyBiaW5kaW5ncw0KSkZMQTIwMjcgOiBQcmVtaWVyIGFwcGVsIMOgIGNvbW11 bmljYXRpb25zDQpoZWdlbCAwLjE0LjANCk5ldyByZWxlYXNlIDEuMS4wIG9mIGlmcy1mcmFjdGFs cw0KT1NFQy0yMDI2LTE0OiBtaXJhZ2UtY3J5cHRvLXBrOiBSU0Egc2lnbmF0dXJlIHZlcmlmaWNh dGlvbiByYWlzZXMgdW5kb2N1bWVudGVkIGV4Y2VwdGlvbg0KT1NFQy0yMDI2LTE1OiBtaXJhZ2Ut Y3J5cHRvLWVjOiBFQyBwdWJsaWMga2V5IG91dCBvZiBib3VuZHMgcmVhZA0KTmV3IHBhY2thZ2U6 IGZsb2F0bWwNCm9jYW1sLWFuZHJvaWQgcmVib290IQ0KUmF2ZWwgMS4wLjEg4oCUIGEgZnVuY3Rp b25hbCBsYW5ndWFnZSBjb21waWxpbmcgdG8gaW50ZXJhY3Rpb24gbmV0cw0KTmV3IHBhY2thZ2U6 IFA0LVNwZWNUZWMNCk5ldyBwYWNrYWdlOiBOZW9Ecml2ZXIgMC4xLjIg4oCTIE5lbzRqIERhdGFi YXNlIGRyaXZlcg0Kb3BhbS1hdWRpdA0Kc2hha3VoYWNoaSB2MC4zLjIgLSBBIG11c2ljIGNvbGxl Y3Rpb24gbWFuYWdlcg0KQnl0cmVhbSAwLjEg4oCTIGZpcnN0IHJlbGVhc2UNClNtYWppIEdseXBo IFBhdGgNClNtYWppIEdseXBoIFBhdGgsIHR3byB1c2FnZSBleGFtcGxlcywgU21hamkgT3V0bGlu ZSBEZXNjcmlwdGlvbiBhbmQgU21hamkgU3Ryb2tlIERlc2NyaXB0aW9uDQpPbGQgQ1dODQoNCg0K RHVuZSAzLjI0DQrilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0 cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1kdW5lLTMtMjQvMTgzMTYvOD4NCg0KDQpDb250 aW51aW5nIHRoaXMgdGhyZWFkLCBBbGkgQ2FnbGF5YW4gYW5ub3VuY2VkDQrilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIANCg0KICBUaGUgRHVuZSB0ZWFtIGlzIHBsZWFzZWQgdG8gYW5ub3VuY2UgW3Ro ZSByZWxlYXNlIG9mIGR1bmUgMy4yNC4yXS4NCg0KICBTZWUgW3RoZSBmdWxsIGNoYW5nZWxvZ10g Zm9yIHRoZSBuZXcgZml4ZXMsIGFuZCBmb3IgYXR0cmlidXRpb24gdG8gdGhlDQogIGNvbnRyaWJ1 dG9ycyB3aG8gbWFkZSBpdCBhbGwgcG9zc2libGUuIFRoYW5rIHlvdSwgY29udHJpYnV0b3JzIQ0K DQogIElmIHlvdSBlbmNvdW50ZXIgYSBwcm9ibGVtIHdpdGggdGhpcyByZWxlYXNlLCBwbGVhc2Ug cmVwb3J0IGl0IGluIFtvdXINCiAgaXNzdWUgdHJhY2tlcl0uDQoNCg0KW3RoZSByZWxlYXNlIG9m IGR1bmUgMy4yNC4yXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9kdW5lL3JlbGVhc2VzL3Rh Zy8zLjI0LjI+DQoNClt0aGUgZnVsbCBjaGFuZ2Vsb2ddIDxodHRwczovL2dpdGh1Yi5jb20vb2Nh bWwvZHVuZS9yZWxlYXNlcy90YWcvMy4yNC4yPg0KDQpbb3VyIGlzc3VlIHRyYWNrZXJdIDxodHRw czovL2dpdGh1Yi5jb20vb2NhbWwvZHVuZS9pc3N1ZXM+DQoNCg0KTmV3IHJlbGVhc2VzIG9mIE1l cmxpbiBhbmQgT0NhbWwtTFNQIGZvciBPQ2FtbCA1LjUgYW5kIHRydW5rDQrilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0K ICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1uZXctcmVsZWFz ZXMtb2YtbWVybGluLWFuZC1vY2FtbC1sc3AtZm9yLW9jYW1sLTUtNS1hbmQtdHJ1bmsvMTg0MTQv MT4NCg0KDQp2ZHMgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIANCg0KICBJIGFtIGdsYWQgdG8gYW5ub3VuY2UgTWVybGluIGA1LjguMS01MDUnLCBhIG5l dyByZWxlYXNlIHRoYXQgbm90YWJseQ0KICBmaXhlcyBhIGNhY2hpbmcgaXNzdWUgdGhhdCBtYW5p ZmVzdGVkIGZyZXF1ZW50bHkgd2hlbiB1c2luZyBPQ2FtbC1MU1ANCiAgd2l0aCBEdW5lIGluIHdh dGNoIG1vZGUuDQoNCiAgV2UgYWxzbyByZWxlYXNlZCBwcmV2aWV3IHZlcnNpb25zIG9mIGJvdGgg TWVybGluIGFuZCBPQ2FtbC1MU1Agd29ya2luZw0KICB3aXRoIHRvZGF5J3MgT0NhbWwgY29tcGls ZXIncyB0cnVuay4gWW91IGNhbiB1c2UgdGhlbSB0byBoYWNrIG9uIHRoZQ0KICBjb21waWxlciwg YnV0IHRoZXkgd2lsbCBicmVhayBhZ2FpbiB3aXRoIGZ1dHVyZXMgY2hhbmdlcyB0byB0aGUgdHlw ZXMNCiAgQVNULg0KDQoNCnNkbDMgYmluZGluZ3MNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3Qv YW5uLXNkbDMtYmluZGluZ3MvMTg0MTUvMT4NCg0KDQpzYW5ldHRlIGFubm91bmNlZA0K4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVsbG8h DQoNCiAgaXQncyBteSBwbGVhc3VyZSB0byBhbm5vdW5jZSBhICh2ZXJ5KSBwcmVsaW1pbmFyeSB2 ZXJzaW9uIG9mDQogIGBPQ2FtbC1zZGwzJyAob3Igc2ltcGx5IGBzZGwzJyBmb3IgdGhlIHBhY2th Z2UgbmFtZSksIHdoaWNoIG9idmlvdXNseQ0KICBpcyBhIHNldCBvZiBiaW5kaW5ncyBmb3IgdGhl IFtTREwzXSBsaWJyYXJ5Lg0KDQogIDxodHRwczovL2dpdGh1Yi5jb20vc2FuZXR0ZS9vY2FtbC1z ZGwzPg0KDQogIFdoeSBhbm5vdW5jaW5nIGEgcHJlbGltaW5hcnkgdmVyc2lvbj8gRmlyc3QsIGJl Y2F1c2UgSSB3b24ndCBoYXZlIG11Y2gNCiAgdGltZSB0byB3b3JrIG9uIGl0IGluIHRoZSBuZXh0 IGNvdXBsZSBvZiBtb250aHMsIGFuZCBzZWNvbmQsIGJlY2F1c2UgSQ0KICBiZWxpZXZlIHlvdSBj YW4gYWxyZWFkeSBoYXZlIGZ1biB3aXRoIGl0IQ0KDQogIFRoZSBiaW5kaW5ncyBhcmUgZ2VuZXJh dGVkIGJ5IGEgcHJvZ3JhbSB0aGF0IHVzZXMgYGNsYW5nJyB0byBpbnNwZWN0DQogIHRoZSBTREwg Y29kZS4gVGhpcyBpcyBhIGZpcnN0IHBoYXNlOyBub3QgYWxsIGZ1bmN0aW9ucyBhcmUgdXNhYmxl IHlldC4NCiAgSSBoYXZlIHN0YXJ0ZWQgdG8gd3JpdGUgbWFudWFsIHdyYXBwZXJzIGZvciBhIGZl dyBvZiB0aGVtLiAoU2VlIHRoZQ0KICBleGFtcGxlcykuDQoNCiAgX0FJIGRpc2NsYWltZXI6XyBB bHRob3VnaCBJIGhhdmUgdG8gYWRtaXQgY2hhdEdQVCB3YXMgbXkgZnJpZW5kIGZvcg0KICB1bmRl cnN0YW5kaW5nIGhvdyB0byB1c2UgYGNsYW5nJyBhbmQgYGN0eXBlcycsIEkgd291bGQgbGlrZSB0 byBzdGF0ZQ0KICBoZXJlIHRoYXQgdGhlIHdob2xlIGJpbmRpbmcgZ2VuZXJhdG9yIChwbHVzIGFs bCBtYW51YWwgYWRkaXRpb25zLCBvZg0KICBjb3Vyc2UpIHdhcyBlbnRpcmVseSB3cml0dGVuIGJ5 IChteSkgaGFuZC4NCg0KDQpbU0RMM10gPGh0dHBzOi8vd3d3LmxpYnNkbC5vcmcvPg0KDQoNCkpG TEEyMDI3IDogUHJlbWllciBhcHBlbCDDoCBjb21tdW5pY2F0aW9ucw0K4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAg QXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9qZmxhMjAyNy1wcmVtaWVy LWFwcGVsLWEtY29tbXVuaWNhdGlvbnMvMTg0MTcvMT4NCg0KDQpZYW5uaWNrIFpha293c2tpIGFu bm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgVGhpcyBtZXNzYWdlIGlzIGludGVu dGlvbmFsbHkgd3JpdHRlbiBpbiBGcmVuY2guIEl0IGlzIGEgY2FsbCBmb3INCiAgcGFwZXJzIGZv ciB0aGUg4oCcRnJhbmNvcGhvbmUgRGF5cyBvbiBGdW5jdGlvbmFsIExhbmd1YWdlc+KAnSB0byBi ZSBoZWxkDQogIGF0IHRoZSBlbmQgb2YgSmFudWFyeSAyMDI3IGluIEJyaXRhbnkuIFBhcGVycyBj YW4gYmUgd3JpdHRlbiBpbg0KICBFbmdsaXNoLCBidXQgdGhlIHByZXNlbnRhdGlvbnMgdGhlbXNl bHZlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgZ2l2ZW4gaW4NCiAgRnJlbmNoLg0KDQogIE1lcmNpIGRl IGZhaXJlIGNpcmN1bGVyIDogcHJlbWllciBhcHBlbCDDoCBjb21tdW5pY2F0aW9ucw0KDQogIEpG TEEgMjAyNyA6IEpvdXJuw6llcyBGcmFuY29waG9uZXMgZGVzIExhbmdhZ2VzIEFwcGxpY2F0aWZz DQoNCiAgPGh0dHA6Ly9qZmxhLmV1L2pmbGEyMDI3Lmh0bWw+DQoNCiAgMjYgamFudmllciBhdSAy OSBqYW52aWVyIDIwMjcNCg0KICBNYWlzb24gU2FpbnQtRnJhbsOnb2lzDQoNCiAgTGVzIDM4w6ht ZXMgSm91cm7DqWVzIEZyYW5jb3Bob25lcyBkZXMgTGFuZ2FnZXMgQXBwbGljYXRpZnMgKEpGTEEp IHNlDQogIHRpZW5kcm9udCBlbiBCcmV0YWduZSwgw6AgRGluYXJkIChJbGxlLWV0LVZpbGFpbmUp LCBkdSBtYXJkaSAyNiBqYW52aWVyDQogIDIwMjcgYXUgdmVuZHJlZGkgMjkgamFudmllciAyMDI3 Lg0KDQogIExlcyBKRkxBIHLDqXVuaXNzZW50IGNvbmNlcHRldXLCt3JpY2VzLCB1dGlsaXNhdGV1 csK3cmljZXMgZXQNCiAgdGjDqW9yaWNpZW7Ct25lcyA7IGVsbGVzIG9udCBwb3VyIGFtYml0aW9u IGRlIGNvdXZyaXIgbGVzIGRvbWFpbmVzIGRlcw0KICBsYW5nYWdlcyBhcHBsaWNhdGlmcywgZGUg bGEgcHJldXZlIGZvcm1lbGxlLCBkZSBsYSB2w6lyaWZpY2F0aW9uIGRlDQogIHByb2dyYW1tZXMs IGV0IGRlcyBvYmpldHMgbWF0aMOpbWF0aXF1ZXMgcXVpIHNvdXMtdGVuZGVudCBjZXMNCiAgb3V0 aWxzLiBDZXMgZG9tYWluZXMgZG9pdmVudCDDqnRyZSBwcmlzIGF1IHNlbnMgbGFyZ2UgOiBub3Vz IHNvdWhhaXRvbnMNCiAgcHJvbW91dm9pciBsZXMgcG9udHMgZW50cmUgbGVzIGRpZmbDqXJlbnRl cyB0aMOpbWF0aXF1ZXMuDQoNCiAg4oCiIExhbmdhZ2VzIGZvbmN0aW9ubmVscyBldCBhcHBsaWNh dGlmcyA6IHPDqW1hbnRpcXVlLCBjb21waWxhdGlvbiwNCiAgICBvcHRpbWlzYXRpb24sIHR5cGFn ZSwgZXh0ZW5zaW9ucyDDoCBkJ2F1dHJlcyBwYXJhZGlnbWVzLg0KDQogIOKAoiBBc3Npc3RhbnRz IGRlIHByZXV2ZSA6IGltcGzDqW1lbnRhdGlvbiwgbm91dmVsbGVzIHRhY3RpcXVlcywNCiAgICBk w6l2ZWxvcHBlbWVudHMgcHLDqXNlbnRhbnQgdW4gaW50w6lyw6p0IHRow6lvcmlxdWUsIHRlY2hu aXF1ZSBvdQ0KICAgIG3DqXRob2RvbG9naXF1ZS4NCg0KICDigKIgTG9naXF1ZSwgY29ycmVzcG9u ZGFuY2UgcHJldXZlLXByb2dyYW1tZSwgcsOpYWxpc2FiaWxpdMOpLCBleHRyYWN0aW9uDQogICAg ZGUgcHJvZ3JhbW1lcywgbW9kw6hsZXMuDQoNCiAg4oCiIFNww6ljaWZpY2F0aW9uLCBwcm90b3R5 cGFnZSwgZMOpdmVsb3BwZW1lbnRzIGZvcm1lbHMgZCdhbGdvcml0aG1lcy4NCg0KICDigKIgVsOp cmlmaWNhdGlvbiBkZSBwcm9ncmFtbWVzIG91IGRlIG1vZMOobGVzLCB2w6lyaWZpY2F0aW9uIGTD qWR1Y3RpdmUsDQogICAgaW50ZXJwcsOpdGF0aW9uIGFic3RyYWl0ZSwgcmFmZmluZW1lbnQuDQoN CiAg4oCiIFV0aWxpc2F0aW9uIGluZHVzdHJpZWxsZSBkZXMgbGFuZ2FnZXMgZm9uY3Rpb25uZWxz IGV0IGFwcGxpY2F0aWZzLA0KICAgIG91IGRlcyBtw6l0aG9kZXMgaXNzdWVzIGRlIGxhIGNvbW11 bmF1dMOpIHNjaWVudGlmaXF1ZS4gT3V0aWxzIGV0DQogICAgcGxhdGVmb3JtZXMgcG91ciBsZSB3 ZWIuDQoNCiAg4oCiIEVuc2VpZ25lbWVudCBvdSBkaWZmdXNpb24gZGVzIGxhbmdhZ2VzIGZvbmN0 aW9ubmVscyBldA0KICAgIGFwcGxpY2F0aWZzLiBFbnZpcm9ubmVtZW50cyBldCBtw6l0aG9kZXMg ZGUgZMOpdmVsb3BwZW1lbnQsIHJldG91cnMNCiAgICBkJ2V4cMOpcmllbmNlLg0KDQogIExlcyBh cnRpY2xlcyBzb3VtaXMgYXV4IEpGTEEgc29udCByZWx1cyBwYXIgYXUgbW9pbnMgZGV1eCBwZXJz b25uZXMNCiAgcydpbHMgc29udCBhY2NlcHTDqXMsIGV0IGF1IG1vaW5zIHRyb2lzIHBlcnNvbm5l cyBzJ2lscyBzb250IHJlamV0w6lzLg0KICBMZXMgY3JpdGlxdWVzIGR1IGNvbWl0w6kgZGUgcHJv Z3JhbW1lIHNvbnQgdG91am91cnMgYmllbnZlaWxsYW50ZXMgZXQNCiAgbGEgcGx1cGFydCBkdSB0 ZW1wcyBlbmNvdXJhZ2VhbnRlcyBldCBjb25zdHJ1Y3RpdmVzLCBtw6ptZSBlbiBjYXMgZGUNCiAg cmVqZXQuDQoNCiAgSWwgbid5IGEgZG9uYyBwYXMgZGUgcmFpc29uIGRlIG5lIHBhcyBzb3VtZXR0 cmUgYXV4IEpGTEEgIQ0KDQogIERBVEVTIElNUE9SVEFOVEVTDQoNCiAgLyFcXCBBdHRlbnRpb24g OiBsZXMgZGF0ZXMgbGltaXRlcyBzb250IGZlcm1lcyBldCBkw6lmaW5pdGl2ZXMuICBJbCBuJ3kN CiAgYXVyYSBwYXMgZCdleHRlbnNpb24uIC8hDQoNCiAg4oCiIFNvdW1pc3Npb24gZGVzIHLDqXN1 bcOpcyBldCBhcnRpY2xlcyA6IDE2IG9jdG9icmUgMjAyNiwgR01UKzINCiAg4oCiIE5vdGlmaWNh dGlvbiBhdXggYXV0ZXVycyBldCBhdXRyaWNlcyA6IDIgZMOpY2VtYnJlIDIwMjYsIEdNVCsyDQog IOKAoiBWZXJzaW9uIGZpbmFsZSBkZXMgYXJ0aWNsZXMgOiAxNiBkw6ljZW1icmUgMjAyNiwgR01U KzINCg0KICBTT1VNSVNTSU9OUw0KDQogIE5vdXMgYWNjZXB0b25zIGRldXggdHlwZXMgZGUgc291 bWlzc2lvbnMgOg0KDQogIOKAoiBBcnRpY2xlIGRlIHJlY2hlcmNoZSAoMTggcGFnZXMgbWF4Likg cG9ydGFudCBzdXIgZGVzIHRyYXZhdXgNCiAgICBvcmlnaW5hdXguIE5vdXMgYWNjZXB0b25zIGRl cyB0cmF2YXV4IGVuIGNvdXJzLCBwb3VyIGxlc3F1ZWxzDQogICAgbCdhc3BlY3QgcmVjaGVyY2hl IG4nZXN0IHBhcyBlbnRpw6hyZW1lbnQgZmluYWxpc8OpLiBOb3VzIGVuY291cmFnZW9ucw0KICAg IGF1c3NpIGxhIHNvdW1pc3Npb24gZCdhcnRpY2xlcyBwcsOpc2VudGFudCBhdmVjIMOpbMOpZ2Fu Y2UgdW4gcsOpc3VsdGF0DQogICAgY29ubnUgc291cyB1biBhbmdsZSBub3V2ZWF1Lg0KDQogIOKA oiBBcnRpY2xlIGNvdXJ0ICg5IHBhZ2VzIG1heC4pIGTDqWNyaXZhbnQgdW4gcHJvYmzDqG1lIHBh cnRpY3VsaWVyLCBsZXMNCiAgICBwaXN0ZXMgZW4gY291cnMgZCdpbnZlc3RpZ2F0aW9uLCBldCB2 aXNhbnQgw6AgcmVjaGVyY2hlciBkZSBsJ2FpZGUgZGUNCiAgICBsYSBwYXJ0IGRlIGxhIGNvbW11 bmF1dMOpLiBMZXMgYXJ0aWNsZXMgY291cnRzIHBldXZlbnQgw6lnYWxlbWVudA0KICAgIHByw6lz ZW50ZXIgZGUgbWFuacOocmUgc3ludGjDqXRpcXVlIGV0IGNvaMOpcmVudGUgZGVzIHLDqXN1bHRh dHMgZMOpasOgDQogICAgcHVibGnDqXMuIEVuZmluLCBpbHMgcGV1dmVudCBwcsOpc2VudGVyIHVu IG91dGlsIGxvZ2ljaWVsIGRvbnQNCiAgICBsJ2V4cG9zw6kgY29uc3RpdHVlcmEgdW5lIGTDqW1v bnN0cmF0aW9uLg0KDQogIENPTlNJR05FUyBBVVggQVVURVVSUyBFVCBBVVRSSUNFUw0KDQogIExl cyBhcnRpY2xlcyBwZXV2ZW50IMOqdHJlIHLDqWRpZ8OpcyBlbiBmcmFuw6dhaXMgb3UgZW4gYW5n bGFpcy4NCg0KICBMYSBmb3JtZSBkZSBsJ2FydGljbGUgZG9pdCDDqnRyZSBzb2lnbsOpZSwgZXQg bGUgY29udGVudSByw6lkaWfDqSBkZQ0KICBtYW5pw6hyZSBzdHJ1Y3R1csOpZSBldCBjbGFpcmUu DQoNCiAgTGUgc3R5bGUgTGFUZVggamZsYXJ0IGRvaXQgaW1ww6lyYXRpdmVtZW50IMOqdHJlIHV0 aWxpc8OpIHNhbnMNCiAgbW9kaWZpY2F0aW9uIGRlIGxhIG1pc2UgZW4gcGFnZS4gTGUgc3R5bGUg TGFUZVggZXQgc2EgZG9jdW1lbnRhdGlvbg0KICBzb250IGRpc3BvbmlibGVzIGRlcHVpcyBsZSBz aXRlIHdlYiBkZSBsYSBjb25mw6lyZW5jZS4NCg0KICBMZXMgbGltaXRlcyBkZSBwYWdlcyBzb250 IHN0cmljdGVzLiBMZXMgcsOpZsOpcmVuY2VzIGJpYmxpb2dyYXBoaXF1ZXMgbmUNCiAgc29udCBw YXMgY29tcHRhYmlsaXPDqWVzIGRhbnMgbGEgbGltaXRlIGRlIHBhZ2VzLiBMZXMgYW5uZXhlcyBh dXgNCiAgYXJ0aWNsZXMgbmUgc29udCBwYXMgYXV0b3Jpc8OpZXMuDQoNCiAgTGVzIGF1dGV1cnMg ZXQgYXV0cmljZXMgcGV1dmVudCBzb3VtZXR0cmUgZHUgbWF0w6lyaWVsIHN1cHBsw6ltZW50YWly ZSwNCiAgc8OpcGFyw6kgZGUgbCdhcnRpY2xlIHNvdW1pcywgc291cyBmb3JtZSBkZSB0ZXh0ZSAo dmVyc2lvbiBsb25ndWUsIHNhbnMNCiAgbGltaXRlIGRlIHBhZ2VzKSBldC9vdSBkZSBkw6l2ZWxv cHBlbWVudCBsb2dpY2llbC4gTCfDqXZhbHVhdGlvbiBkZSBjZQ0KICBtYXTDqXJpZWwgc3VwcGzD qW1lbnRhaXJlIGVzdCDDoCBsYSBkaXNjcsOpdGlvbiBkdSBjb21pdMOpIGRlDQogIHByb2dyYW1t ZS4gTGVzIGFydGljbGVzIHNvdW1pcyBkb2l2ZW50IGRvbmMgw6p0cmUgYXV0by1jb250ZW51cyBl dA0KICDDqXZhbHVhYmxlcyBzYW5zIGNlIG1hdMOpcmllbCBzdXBwbMOpbWVudGFpcmUuDQoNCiAg TGVzIHNvdW1pc3Npb25zIHBhcmFsbMOobGVzIGRhbnMgZCdhdXRyZXMgY29uZsOpcmVuY2VzLCBq b3VybmF1eCBvdQ0KICB3b3Jrc2hvcHMgYXZlYyBhY3RlcyBuZSBzb250IHBhcyBhdXRvcmlzw6ll cy4NCg0KICBMZXMgbWVtYnJlcyBkdSBjb21pdMOpIGRlIHByb2dyYW1tZSBzb250IGF1dG9yaXPD qXMgw6Agc291bWV0dHJlIHVuDQogIGFydGljbGUuIExlcyBwcsOpc2lkZW50ZXMgZHUgY29taXTD qSBuZSBsZSBzb250IHBhcy4NCg0KICBMZXMgYXJ0aWNsZXMgZG9pdmVudCDDqnRyZSBzb3VtaXMg dmlhIGxlIHNpdGUgOg0KDQogIDxodHRwczovL3R5cGVzLWhvdGNycC5wYXJpcy5pbnJpYS5mci9q ZmxhMjc+DQoNCiAgTCfDqXZhbHVhdGlvbiBkZXMgYXJ0aWNsZXMgc3VpdCB1biBwcm9jZXNzdXMg ZW4gc2ltcGxlLWF2ZXVnbGUgOiBsZXMNCiAgcmFwcG9ydHMgZGVzIGFydGljbGVzIHNvbnQgYW5v bnltZXMsIG1haXMgcGFzIGxlcyBhdXRldXJzIGV0IGF1dHJpY2VzLg0KDQogIExlcyBhcnRpY2xl cyBhY2NlcHTDqXMgc2Vyb250IHB1Ymxpw6lzIGRhbnMgbGVzIGFjdGVzIGRlIGxhIGNvbmbDqXJl bmNlLA0KICBzdXIgSEFMLCBldCBsZXMgYXV0ZXVycyBldCBhdXRyaWNlcyBlbiBkb25uZXJvbnQg dW5lIHByw6lzZW50YXRpb24gbG9ycw0KICBkZXMgam91cm7DqWVzLiBMZXMgcHLDqXNlbnRhdGlv bnMgc2Vyb250LCBkZSBwcsOpZsOpcmVuY2UsIGRvbm7DqWVzIGVuDQogIGZyYW7Dp2Fpcy4NCg0K ICBZYW5uaWNrIFpBS09XU0tJIGV0IFN0ZWZhbmlhIERVTUJSQVZBDQoNCiAgSkZMQSAyMDI3DQoN Cg0KaGVnZWwgMC4xNC4wDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0K ICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1oZWdlbC0wLTE0LTAv MTg0MjMvMT4NCg0KDQpFdGhhbiBDaG91IGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVsbG8sDQoNCiAg QWZ0ZXIgc29tZSBmZWVkYmFjayB3ZSd2ZSByZWNlaXZlZCBhYm91dCBIZWdlbCwgSSBhbSBoYXBw eSB0byBhbm5vdW5jZQ0KICB2MC4xNC4wIGhhcyByZW1vdmVkIHRoZSBkZXBlbmRlbmN5IG9uIENv cmUuIFRoZSBDb3JlIGdlbmVyYXRvcnMgZnJvbQ0KICB0aGUgcHJldmlvdXMgdmVyc2lvbnMgbm93 IGV4aXN0IGluIGFuIG9wdGlvbmFsIHN1YmxpYnJhcnkgY2FsbGVkDQogIEhlZ2VsX2phbmUuIFRo YW5rcyB0byBAYy1jdWJlIGZvciBoaXMgaGVscCB3aXRoIGhpcyByZWxlYXNlIQ0KDQogIEZvciBz bGlnaHRseSBtb3JlIGRldGFpbCwgc2VlIHRoZSByZWxlYXNlIG5vdGVzOg0KDQogIDxodHRwczov L2dpdGh1Yi5jb20vaGVnZWxkZXYvaGVnZWwtb2NhbWwvcmVsZWFzZXMjcmVsZWFzZS12MC4xNC4w Pg0KDQoNCk5ldyByZWxlYXNlIDEuMS4wIG9mIGlmcy1mcmFjdGFscw0K4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlz Y3Vzcy5vY2FtbC5vcmcvdC9uZXctcmVsZWFzZS0xLTEtMC1vZi1pZnMtZnJhY3RhbHMvMTg0MjUv MT4NCg0KDQpDw6lkcmljIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGVsbG8gZXZlcnlvbmUsDQoNCiAgW2lmcy1mcmFjdGFs c10g4oCUIGEgc21hbGwgbGlicmFyeSBhbmQgQ0xJIHRoYXQgZHJhd3MgdGhlIGF0dHJhY3RvcnMg b2YNCiAgaXRlcmF0ZWQgZnVuY3Rpb24gc3lzdGVtcyAodGhlIEJhcm5zbGV5IGZlcm4gYW5kIGZy aWVuZHMpIHdpdGggdGhlDQogIGNoYW9zIGdhbWUg4oCUIGp1c3QgZ290IGl0cyBmaXJzdCBmZWF0 dXJlIHJlbGVhc2Ugc2luY2UgYXJyaXZpbmcgb24gb3BhbQ0KICB0aGlzIHN1bW1lci4gQWZ0ZXIg c2l4dGVlbiB5ZWFycyBvZiBpbnRlbnNpdmUgZGV2ZWxvcG1lbnQgOy0pDQoNCiAgPGh0dHBzOi8v dXMxLmRpc2NvdXJzZS1jZG4uY29tL2ZsZXgwMjAvdXBsb2Fkcy9vY2FtbC9vcmlnaW5hbC8yWC82 LzY5NTMzNDQyZjY3MWVmMmJhMzdmYjBjNTAyOTc4MGI4ZWM4YjEwYzUucG5nPg0KDQogIFdoYXQn cyBuZXcgaW4gMS4xLjA6DQoNCiAg4oCiIEhlYWRsZXNzIFBORyByZW5kZXJpbmcuIFVudGlsIG5v dyB0aGUgZnJhY3RhbHMgY291bGQgb25seSBiZSBkcmF3bg0KICAgIGludG8gYSBncmFwaGljcyB3 aW5kb3cuIFlvdSBjYW4gbm93IHJlbmRlciBzdHJhaWdodCB0byBhIGZpbGUsIG5vDQogICAgZGlz cGxheSBuZWVkZWQ6DQogICAg4pSM4pSA4pSA4pSA4pSADQogICAg4pSCIGlmcy1mcmFjdGFscyAt byBmZXJuLnBuZyAtcyA4MDB4MTI4MCBiYXJuc2xleQ0KICAgIOKUlOKUgOKUgOKUgOKUgA0KICDi gKIgb3IgZnJvbSBjb2RlLCBzYXZlX3BuZyBiYXJuc2xleSAyMDAwMDAgImZlcm4ucG5nIi4gVGhp cyBtYWtlcyB0aGUNCiAgICBwYWNrYWdlIHVzYWJsZSBvbiBzZXJ2ZXJzIGFuZCBpbiBDSSwgYW5k IG1hZGUgdGVzdGluZyBtdWNoIGVhc2llci4gQQ0KICAgIGZ1biBjb25zdHJhaW50IEkgc2V0IG15 c2VsZjogbm8gbmV3IGRlcGVuZGVuY2llcyDigJQgdGhlIFBORyB3cml0ZXIgaXMNCiAgICBzZWxm LWNvbnRhaW5lZCwgd3JpdGluZyA4LWJpdCBQTkdzIHdpdGggc3RvcmVkIGRlZmxhdGUgYmxvY2tz IGluDQogICAgcHVyZSBPQ2FtbC4NCiAg4oCiIERlbnNpdHkgY29sb3JpbmcuIFRoZSBjaGFvcyBn YW1lIGRvZXNuJ3QgdmlzaXQgdGhlIGF0dHJhY3Rvcg0KICAgIHVuaWZvcm1seSDigJQgc29tZSBy ZWdpb25zIGFyZSBoaXQgZmFyIG1vcmUgb2Z0ZW4gdGhhbiBvdGhlcnMsIGFuZA0KICAgIHRoYXQg ZGVuc2l0eSBpcyB3aGVyZSBtdWNoIG9mIHRoZSB2aXN1YWwgc3RydWN0dXJlIGxpdmVzLiBXaXRo IC1jDQogICAgKG9yIHNhdmVfcG5nIFx+Y29sb3I6dHJ1ZSksIHBpeGVscyBhcmUgY29sb3JlZCBi eSB0aGVpciBoaXQgY291bnQgb24NCiAgICBhIGxvZyBzY2FsZS4gVGhlIGltYWdlIGFib3ZlIGlz IHRoZSByZXN1bHQ6IHRoZSBmZXJuIGdldHMgaXRzIHZlaW5zDQogICAgYmFjay4NCiAgICDilIzi lIDilIDilIDilIANCiAgICDilIIgaWZzLWZyYWN0YWxzIC1jIC1vIGZlcm4ucG5nIC1zIDgwMHgx MjgwIGJhcm5zbGV5DQogICAg4pSU4pSA4pSA4pSA4pSADQoNCiAgSW5zdGFsbCBvciB1cGdyYWRl IHdpdGggb3BhbSBpbnN0YWxsIGlmcy1mcmFjdGFscywgdGhlbiB0cnkNCiAgaWZzLWZyYWN0YWxz IOKAk2xpc3QgdG8gc2VlIGFsbCBzaXh0ZWVuIGF0dHJhY3RvcnMuDQoNCiAgSWYgeW91J3JlIGN1 cmlvdXMgaG93IG5ldyBhdHRyYWN0b3JzIGdldCBkZXNpZ25lZCDigJQgaG93IG9uZSBmaW5kcyB0 aGUNCiAgc2l4IGNvZWZmaWNpZW50cyBwZXIgYWZmaW5lIG1hcCB0aGF0IHByb2R1Y2UgYSBtYXBs ZSBsZWFmIG9yIGENCiAgc3VuZmxvd2VyIOKAlCBJIHdyb3RlIHRoZSB0ZWNobmlxdWVzIHVwIGlu IGEgc2hvcnQgcGFwZXIsIEJ1aWxkaW5nIE5ldw0KICBJRlMgQXR0cmFjdG9yczogYSBXb3JraW5n IFZvY2FidWxhcnkgb2YgQWZmaW5lIE1hcHMgKA0KICA8aHR0cHM6Ly9kb2kub3JnLzEwLjUyODEv emVub2RvLjIxODA0Nzc4PiApLCB3aXRoIGEgbW9yZSBuYXJyYXRpdmUNCiAgYWNjb3VudCBvbiBt eSBibG9nICgNCiAgPGh0dHBzOi8vd3d3LmNlZHJpY2JvbmhvbW1lLm9yZy8yMDI2LzA3LzI3L2No YWxsZW5naW5nLWNsYXVkZS13aXRoLWlmcy1mcmFjdGFscy8+DQogICkuDQoNCiAgT25lIGRpc2Ns b3N1cmUsIHNpbmNlIGl0J3MgdGhlIGludGVyZXN0aW5nIHBhcnQgb2YgdGhlIHN0b3J5OiB0aGUg bmV3DQogIGF0dHJhY3RvcnMgd2VyZSBkZXNpZ25lZCBieSBDbGF1ZGUgKEFudGhyb3BpYydzIEZh YmxlIDUgbW9kZWwpIOKAlCB0aGUNCiAgYmxvZyBwb3N0IHJlY291bnRzIHRoYXQgZXhwZXJpbWVu dC4gRXZlcnl0aGluZyBlbHNlIOKAlCB0aGUgbGlicmFyeSwgdGhlDQogIENMSSwgdGhlIFBORyB3 cml0ZXIsIGFuZCB0aGUgcGFwZXIgaXRzZWxmIOKAlCBpcyBteSBvd24gd29yaywgbm90IExMTQ0K ICBvdXRwdXQuDQoNCiAg4oCiIFJlcG9zaXRvcnk6DQogICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9j ZWRyaWNib25ob21tZS9pdGVyYXRlZC1mdW5jdGlvbi1zeXN0ZW1zPg0KICDigKIgb3BhbTogPGh0 dHBzOi8vb3BhbS5vY2FtbC5vcmcvcGFja2FnZXMvaWZzLWZyYWN0YWxzLz4NCiAg4oCiIENoYW5n ZWxvZzoNCiAgICA8aHR0cHM6Ly9naXRodWIuY29tL2NlZHJpY2JvbmhvbW1lL2l0ZXJhdGVkLWZ1 bmN0aW9uLXN5c3RlbXMvYmxvYi9tYXN0ZXIvQ0hBTkdFUy5tZD4NCg0KICBGZWVkYmFjayBhbmQg bmV3IGZyYWN0YWwgZGVmaW5pdGlvbnMgYXJlIHZlcnkgd2VsY29tZS4gSnVzdCBtYWtlIGENCiAg cHVsbC1yZXF1ZXN0Lg0KDQogIElmIHlvdSBkZXNpZ24gYW4gYXR0cmFjdG9yIHlvdSBsaWtlLCBJ J2QgbG92ZSB0byBzZWUgaXQhDQoNCg0KW2lmcy1mcmFjdGFsc10NCjxodHRwczovL2dpdGh1Yi5j b20vY2VkcmljYm9uaG9tbWUvaXRlcmF0ZWQtZnVuY3Rpb24tc3lzdGVtcz4NCg0KDQpPU0VDLTIw MjYtMTQ6IG1pcmFnZS1jcnlwdG8tcGs6IFJTQSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIHJhaXNl cyB1bmRvY3VtZW50ZWQgZXhjZXB0aW9uDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZANCg0KSGFubmVzIE1laG5lcnQgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBB IG5ldyBzZWN1cml0eSBhZHZpc29yeSBpcyBhdmFpbGFibGUuIEFzIHVzdWFsLCBpdCBjYW4gYmUg Zm91bmQgYXQNCiAgPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9zZWN1cml0eS1hZHZpc29yaWVz PiBhbmQNCiAgPGh0dHBzOi8vb3N2LmRldi9saXN0P3E9JmVjb3N5c3RlbT1vcGFtPg0KDQogIEJl c3QsDQoNCiAgSGFubmVzDQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiBpZDogT1NFQy0yMDI2 LTE0DQogIOKUgiBtb2RpZmllZDogIjIwMjYtMDgtMDdUMTM6MDA6MDBaIg0KICDilIIgcHVibGlz aGVkOiAiMjAyNi0wOC0wN1QxMzowMDowMFoiDQogIOKUgiBzZXZlcml0eTogIkNWU1M6My4xL0FW Ok4vQUM6TC9QUjpML1VJOk4vUzpVL0M6Ti9JOk4vQTpMIg0KICDilIIgc2V2ZXJpdHlfc2NvcmU6 ICI0LjMgKE1lZGl1bSkiDQogIOKUgiBhZmZlY3RlZDogIm1pcmFnZS1jcnlwdG8tcGsiIHs8ICIy LjMuMCJ9DQogIOKUgiBldmVudHM6IFsNCiAg4pSCICAgIFsNCiAg4pSCICAgICAgZ2l0ICJodHRw czovL2dpdGh1Yi5jb20vbWlyYWdlL21pcmFnZS1jcnlwdG8uZ2l0IiBbDQogIOKUgiAgICAgICAg W2ZpeGVkICJhMGY1OWEwYzkwZWIwNjc1MDViNTVhMDNkM2JiMTA0ZWFjZDZkZDMzIl0NCiAg4pSC ICAgICAgXQ0KICDilIIgICAgXQ0KICDilIIgXQ0KICDilIIgY3JlZGl0czogWw0KICDilIIgICAg W3JlcG9ydGVyICJUaG9tYXMgR2F6YWduYWlyZSJdDQogIOKUgiAgICBbcmVtZWRpYXRpb25fZGV2 ZWxvcGVyICJIYW5uZXMgTWVobmVydCJdDQogIOKUgiBdDQogIOKUgiBjd2U6IFsgQ1dFLTI0OCBd DQogIOKUgiBhZmZlY3RlZF9iaW5kaW5nczogWw0KICDilIIgICAgIk1pcmFnZV9jcnlwdG9fcGsu UnNhLmVuY3J5cHQiDQogIOKUgiAgICAiTWlyYWdlX2NyeXB0b19way5Sc2EuZGVjcnlwdCINCiAg 4pSCICAgICJNaXJhZ2VfY3J5cHRvX3BrLlJzYS5QS0NTMS5lbmNyeXB0Ig0KICDilIIgICAgIk1p cmFnZV9jcnlwdG9fcGsuUnNhLlBLQ1MxLmRlY3J5cHQiDQogIOKUgiAgICAiTWlyYWdlX2NyeXB0 b19way5Sc2EuUEtDUzEuc2lnX2VuY29kZSINCiAg4pSCICAgICJNaXJhZ2VfY3J5cHRvX3BrLlJz YS5QS0NTMS5zaWdfZGVjb2RlIg0KICDilIIgICAgIk1pcmFnZV9jcnlwdG9fcGsuUnNhLlBLQ1Mx LnNpZ24iDQogIOKUgiAgICAiTWlyYWdlX2NyeXB0b19way5Sc2EuUEtDUzEudmVyaWZ5Ig0KICDi lIIgICAgIk1pcmFnZV9jcnlwdG9fcGsuUnNhLk9BRVAuZW5jcnlwdCINCiAg4pSCICAgICJNaXJh Z2VfY3J5cHRvX3BrLlJzYS5PQUVQLmRlY3J5cHQiDQogIOKUgiAgICAiTWlyYWdlX2NyeXB0b19w ay5Sc2EuUFNTLnNpZ24iDQogIOKUgiAgICAiTWlyYWdlX2NyeXB0b19way5Sc2EuUFNTLnZlcmlm eSINCiAg4pSCIF0NCiAg4pSU4pSA4pSA4pSA4pSADQoNCg0KUlNBIHNpZ25hdHVyZSB2ZXJpZmlj YXRpb24gcmFpc2VzIHVuZG9jdW1lbnRlZCBleGNlcHRpb24NCuKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFRoZSBSU0EgZGVjcnlwdCBh bmQgZW5jcnlwdCBmdW5jdGlvbnMgcmFpc2UgYW4gSW52YWxpZF9hcmd1bWVudA0KICBleGNlcHRp b24gaWYgdGhlIG1lc3NhZ2UgaXMgc21hbGxlciB0aGFuIDIuIFRoaXMgbGVhZHMgdG8gWDUwOQ0K ICBjZXJ0aWZpY2F0ZXMgd2l0aCBhIHNpZ25hdHVyZSB2YWx1ZSBvZiAwIG9yIDEgdG8gdGhyb3cg dGhpcw0KICBJbnZhbGlkX2FyZ3VtZW50IGV4Y2VwdGlvbiBpbnN0ZWFkIG9mIGEgcHJvcGVyIGVy cm9yLg0KDQoNCuKXiiBGaXgNCg0KICBUaGUgZml4IGlzIHRvIHJldXNlIHRoZSBJbnN1ZmZpY2ll bnRfa2V5IGV4Y2VwdGlvbiwgd2hpY2ggaXMNCiAgZG9jdW1lbnRlZCBhbmQgY2F1Z2h0IGZ1cnRo ZXIgdXAgaW4gdGhlIHN0YWNrLg0KDQoNCuKXiiBUaW1lbGluZQ0KDQogIOKAoiBKdWx5IDI4dGgg MjAyNjogcmVwb3J0IHRvIHNlY3VyaXR5QG9jYW1sLm9yZw0KICDigKIgQXVndXN0IDd0aDogcmVs ZWFzZSBvZiBtaXJhZ2UtY3J5cHRvLXBrIDIuMy4wIGFuZCBzZWN1cml0eSBhZHZpc29yeQ0KDQoN Ck9TRUMtMjAyNi0xNTogbWlyYWdlLWNyeXB0by1lYzogRUMgcHVibGljIGtleSBvdXQgb2YgYm91 bmRzIHJlYWQNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQpIYW5uZXMgTWVobmVydCBhbm5vdW5j ZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEEgbmV3IHNlY3VyaXR5IGFkdmlzb3J5IGlzIGF2YWls YWJsZS4gQXMgdXN1YWwsIGl0IGNhbiBiZSBmb3VuZCBhdA0KICA8aHR0cHM6Ly9naXRodWIuY29t L29jYW1sL3NlY3VyaXR5LWFkdmlzb3JpZXM+IGFuZA0KICA8aHR0cHM6Ly9vc3YuZGV2L2xpc3Q/ cT0mZWNvc3lzdGVtPW9wYW0+DQoNCiAgQmVzdCwNCg0KICBIYW5uZXMNCg0KICDilIzilIDilIDi lIDilIANCiAg4pSCIGlkOiBPU0VDLTIwMjYtMTUNCiAg4pSCIG1vZGlmaWVkOiAiMjAyNi0wOC0w N1QxMzowMDowMFoiDQogIOKUgiBwdWJsaXNoZWQ6ICIyMDI2LTA4LTA3VDEzOjAwOjAwWiINCiAg 4pSCIHNldmVyaXR5OiAiQ1ZTUzozLjEvQVY6Ti9BQzpML1BSOkwvVUk6Ti9TOlUvQzpOL0k6Ti9B OkwiDQogIOKUgiBzZXZlcml0eV9zY29yZTogIjQuMyAoTWVkaXVtKSINCiAg4pSCIGFmZmVjdGVk OiAibWlyYWdlLWNyeXB0by1lYyIgezwgIjIuMy4wIn0NCiAg4pSCIGV2ZW50czogWw0KICDilIIg ICAgWw0KICDilIIgICAgICBnaXQgImh0dHBzOi8vZ2l0aHViLmNvbS9taXJhZ2UvbWlyYWdlLWNy eXB0by5naXQiIFsNCiAg4pSCICAgICAgICBbZml4ZWQgIjFmMGJmNjcwNDRlNjdjZjZlNDY5MTFm Y2Q3N2EwZmY3MDZiNmMzZTciXQ0KICDilIIgICAgICBdDQogIOKUgiAgICBdDQogIOKUgiBdDQog IOKUgiBjcmVkaXRzOiBbDQogIOKUgiAgICBbcmVwb3J0ZXIgIlRob21hcyBHYXphZ25haXJlIl0N CiAg4pSCICAgIFtyZW1lZGlhdGlvbl9kZXZlbG9wZXIgIkhhbm5lcyBNZWhuZXJ0Il0NCiAg4pSC IF0NCiAg4pSCIGN3ZTogWyBDV0UtMTI1IENXRS0yNDggXQ0KICDilIIgYWZmZWN0ZWRfYmluZGlu Z3M6IFsNCiAg4pSCICAgICJNaXJhZ2VfY3J5cHRvX2VjLlAyNTYuRHNhLnB1Yl9vZl9vY3RldHMi DQogIOKUgiAgICAiTWlyYWdlX2NyeXB0b19lYy5QMjU2LkRoLmtleV9leGNoYW5nZSINCiAg4pSC ICAgICJNaXJhZ2VfY3J5cHRvX2VjLlAzODQuRHNhLnB1Yl9vZl9vY3RldHMiDQogIOKUgiAgICAi TWlyYWdlX2NyeXB0b19lYy5QMzg0LkRoLmtleV9leGNoYW5nZSINCiAg4pSCICAgICJNaXJhZ2Vf Y3J5cHRvX2VjLlA1MjEuRHNhLnB1Yl9vZl9vY3RldHMiDQogIOKUgiAgICAiTWlyYWdlX2NyeXB0 b19lYy5QNTIxLkRoLmtleV9leGNoYW5nZSINCiAg4pSCIF0NCiAg4pSU4pSA4pSA4pSA4pSADQoN Cg0KRUMgcHVibGljIGtleSBvdXQgb2YgYm91bmRzIHJlYWQNCuKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIFRoZSBpbnRlcm5hbCBQb2ludC5vZl9vY3RldHMgZnVu Y3Rpb24gaXMgbWlzc2luZyBhIGxlbmd0aCBjaGVjayBmb3INCiAgY29tcHJlc3NlZCBwb2ludHMs IGFuZCB0aHVzIGlzIHJhaXNpbmcgYW4gZXhjZXB0aW9uIHdoZW4gYSBzaG9ydA0KICBidWZmZXIg aXMgcHJvdmlkZWQuIFRoaXMgYWZmZWN0cyBhbGwgTklTVCBjdXJ2ZXMgKFAtMjU2LCBQLTM4NCwg UC01MjEpDQogIGFuZCBib3RoIGBEc2EucHViX29mX29jdGV0cycgYW5kIGBEaC5rZXlfZXhjaGFu Z2UnIGZ1bmN0aW9ucy4NCg0KDQril4ogRml4DQoNCiAgVGhlIGZpeCBpcyB0byBjaGVjayB0aGUg bGVuZ3RoIG9mIHRoZSBwcm92aWRlZCBidWZmZXIuDQoNCg0K4peKIFRpbWVsaW5lDQoNCiAg4oCi IEp1bHkgMjh0aCAyMDI2OiByZXBvcnQgdG8gc2VjdXJpdHlAb2NhbWwub3JnDQogIOKAoiBBdWd1 c3QgN3RoOiByZWxlYXNlIG9mIG1pcmFnZS1jcnlwdG8tcGsgMi4zLjAgYW5kIHNlY3VyaXR5IGFk dmlzb3J5DQoNCg0KTmV3IHBhY2thZ2U6IGZsb2F0bWwNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRw czovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLW5ldy1wYWNrYWdlLWZsb2F0bWwvMTg0MzEvMT4N Cg0KDQpPcGFsZSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgA0KDQogIEhpIDrigIspIFdhbnRlZCB0byBhbm5vdW5jZSBhIG5ldyBwYWNrYWdl IEkgd29ya2VkIG9uIG92ZXIgdGhlIHBhc3Qgd2Vlaw0KICBJIGp1c3QgcHVibGlzaGVkLCAqW2Zs b2F0bWxdKiEgSXQncyBhIHRpbnkgd3JhcHBlciBhcm91bmQgUnVzdCdzIHNvZnQNCiAgZmxvYXQg bGlicmFyeSAoW2BydXN0Y19hcGZsb2F0J10pLCBlbmFibGluZyBmYXN0IGFuZCBlZmZpY2llbnQN CiAgSUVFRS03NTQgYGZsb2F0MTYnLCBgZmxvYXQzMicsIGBmbG9hdDY0JyBhbmQgYGZsb2F0MTI4 JyBpbiBPQ2FtbC4gSQ0KICBhbHNvIG1hZGUgc3VyZSB0aGUgY29kZSBhbGxvY2F0ZXMgYXMgbGl0 dGxlIGFzIHBvc3NpYmxlLCBzbyBpdCBzaG91bGQNCiAgYmUgcmVhc29uYWJseSBlZmZpY2llbnQu DQoNCiAgKkRpc2NsYWltZXI6KiBhIGdvb2QgY2h1bmsgb2YgdGhlIGNvZGUgaXMgTExNLWF1dGhv cmVkLiBJIGNob3NlIHRoZQ0KICAgaW50ZXJmYWNlIEkgd2FudGVkIGFuZCBndWlkZWQgaXQsIGJ1 dCB0aGUgZ2x1ZSBjb2RlIHdpdGggUnVzdCBpcyBMTE0NCiAgIGdlbmVyYXRlZCAoYW5kIGV4dGVu c2l2ZWx5IHRlc3RlZCEpDQoNCiAgSSBoYWQgdG8gY3JlYXRlIGl0IGZvciBbU290ZXJpYV0sIHdo ZXJlIHdlIG5lZWQgcmVkdWN0aW9ucyBmb3INCiAgY29uY3JldGUgZmxvYXQgb3BlcmF0aW9ucywg dG8gYXZvaWQgdXNpbmcgWjMgd2hlbiBwb3NzaWJsZS4gTWF5YmUNCiAgeW91J2xsIGZpbmQgYSB1 c2UgZm9yIGl0IHRvbyENCg0KDQpbZmxvYXRtbF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9OMWFyay9m bG9hdG1sPg0KDQpbYHJ1c3RjX2FwZmxvYXQnXSA8aHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFu Zy9ydXN0Y19hcGZsb2F0Pg0KDQpbU290ZXJpYV0gPGh0dHBzOi8vc290ZXJpYS10b29scy5jb20+ DQoNCg0Kb2NhbWwtYW5kcm9pZCByZWJvb3QhDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0 cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1vY2FtbC1hbmRyb2lkLXJlYm9vdC8xODQzMi8x Pg0KDQoNClJvbWFpbiBCZWF1eGlzIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSGkg YWxsIQ0KDQogIEkgaGF2ZSBqdXN0IHB1c2hlZCBhIGZ1bGwgcmVib290IG9mIHRoZSBbQW5kcm9p ZCBjcm9zcy1jb21waWxlcl0gb3BhbQ0KICByZXBvc2l0b3J5IQ0KDQogIFRoZSByZWJvb3QgZm9s bG93cyB0aGUgbW9zdCByZWNlbnQgcHJhY3RpY2VzIHNldCBieSB0aGUgd2luZG93cw0KICBjb3Vu dGVyIHBhcnQgYW5kIGlzIHByZXR0eSBjbGVhbiwgdGhhbmtzIHRvIHRoZSB2YXN0IGltcHJvdmVt ZW50cyBtYWRlDQogIGluIGNyb3NzLWNvbXBpbGluZyBzdXBwb3J0IGluIHRoZSBtYWluIE9DYW1s IGNvbXBpbGVyIHJlY2VudGx5Lg0KDQogIE5vdCBhbGwgcGFja2FnZXMgaGF2ZSBiZWVuIG1pZ3Jh dGVkLCBkdWUgdG8gbGFjayBvZiB0aW1lLiBUaGUgb2xkDQogIGJyYW5jaCBpcyBzdGlsbCBhdmFp bGFibGUgYXQgYG9sZC1tYWluJy4NCg0KICBUaGlzIGlzIGEgY29tbXVuaXR5IHJlcG9zaXRvcnkg c28sIGlmIGNyb3NzLWNvbXBpbGluZyBPQ2FtbCBjb2RlIGlzIGluDQogIHlvdXIgd2hlZWxob3Vz ZSwgZmVlbCBmcmVlIHRvIHN1Ym1pdCBzb21lIHBhdGNoZXMhDQoNCg0KW0FuZHJvaWQgY3Jvc3Mt Y29tcGlsZXJdDQo8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sLWNyb3NzL29wYW0tY3Jvc3MtYW5k cm9pZD4NCg0KDQpSYXZlbCAxLjAuMSDigJQgYSBmdW5jdGlvbmFsIGxhbmd1YWdlIGNvbXBpbGlu ZyB0byBpbnRlcmFjdGlvbiBuZXRzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNo aXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1uZXctcGFja2FnZS1yYXZl bC0xLTAtMS1hLWZ1bmN0aW9uYWwtbGFuZ3VhZ2UtY29tcGlsaW5nLXRvLWludGVyYWN0aW9uLW5l dHMvMTg0MzMvMT4NCg0KDQpLYXlvIFRlaSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhpIGFsbCENCg0KICBJIGFt IGhhcHB5IHRvIGFubm91bmNlIHRoYXQgUmF2ZWwgMS4wLjEgaXMgbm93IGF2YWlsYWJsZSBvbiBv cGFtLg0KDQogIFJhdmVsIGlzIGEgc21hbGwgZnVuY3Rpb25hbCBsYW5ndWFnZSB0aGF0IGNvbXBp bGVzIHRvIGludGVyYWN0aW9uIG5ldHMNCiAg4oCUIGEgZ3JhcGgtcmV3cml0aW5nIG1vZGVsIHdp dGggc3Ryb25nIGNvbmZsdWVuY2UgYW5kIGltcGxpY2l0DQogIHBhcmFsbGVsaXNtLiBJdCBmZWF0 dXJlcyB1c2VyLWRlZmluZWQgYWxnZWJyYWljIGRhdGEgdHlwZXMsIGRlZXANCiAgcGF0dGVybiBt YXRjaGluZywgZmlyc3QtY2xhc3MgZnVuY3Rpb25zIHdpdGggbGV4aWNhbCBjbG9zdXJlcywgYW5k DQogIGF1dG9tYXRpYyByZXNvdXJjZSBtYW5hZ2VtZW50IHZpYSBsYWJlbGVkIGR1cGxpY2F0aW9u IGFuZCBlcmFzdXJlDQogIG5vZGVzLg0KDQogIDxodHRwczovL29wYW0ub2NhbWwub3JnL3BhY2th Z2VzL3JhdmVsLz4NCg0KICBGZWVkYmFjayBhbmQgY29udHJpYnV0aW9ucyBhcmUgd2VsY29tZSEN Cg0KDQpOZXcgcGFja2FnZTogUDQtU3BlY1RlYw0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToN CiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tbmV3LXBhY2thZ2UtcDQtc3BlY3Rl Yy8xODQzNC8xPg0KDQoNCkhhZWNoYW4gS3dvbiBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEhp IQ0KDQogIFdlIGFyZSBoYXBweSB0byBhbm5vdW5jZSB0aGUgZmlyc3QgcHVibGljIHJlbGVhc2Ug b2YgYHA0c3BlY3RlYycsIGENCiAgZnJhbWV3b3JrIGZvciBtZWNoYW5pemluZyB0aGUgUDQgbGFu Z3VhZ2Ugc3BlY2lmaWNhdGlvbi4gSXQgcHJvdmlkZXMgYQ0KICBkb21haW4tc3BlY2lmaWMgbGFu Z3VhZ2UgZm9yIHdyaXRpbmcgZm9ybWFsIHNwZWNpZmljYXRpb25zIGluIHRoZSBmb3JtDQogIG9m ICphbGdvcml0aG1pYyBpbmZlcmVuY2UgcnVsZXMqIFsoTGVlIGV0IGFsLiwgMjAyNildLg0KDQog IEEgc3BlY2lmaWNhdGlvbiB3cml0dGVuIGluIFA0LVNwZWNUZWMgaXMgKmV4ZWN1dGFibGUqLiBC eSB3cml0aW5nDQogIHR5cGluZyBydWxlcyB3aXRoIFA0LVNwZWNUZWMsIHlvdSBnZXQgYSByZWZl cmVuY2UgdHlwZSBjaGVja2VyLiBCeQ0KICB3cml0aW5nIGR5bmFtaWMgc2VtYW50aWNzIHJ1bGVz LCB5b3UgZ2V0IGEgcmVmZXJlbmNlIGludGVycHJldGVyLiBUaGUNCiAgKnByb3NlIGJhY2tlbmQq IGFsc28gZ2VuZXJhdGVzIGh1bWFuLXJlYWRhYmxlIGRvY3VtZW50YXRpb24gZnJvbSB0aGUNCiAg bWVjaGFuaXplZCBzcGVjaWZpY2F0aW9uLg0KDQogIDxodHRwczovL29wYW0ub2NhbWwub3JnL3Bh Y2thZ2VzL3A0c3BlY3RlYy8+DQoNCiAgRm9yIGRldGFpbGVkIGluc3RydWN0aW9uLCBzb3VyY2Ug Y29kZSBhbmQgdGhlIG1lY2hhbml6ZWQgUDQNCiAgc3BlY2lmaWNhdGlvbiwgY2hlY2sgb3V0IHRo ZSBHaXRIdWIgcmVwb3NpdG9yeSBsaW5rZWQgdG8gdGhlIHBhY2thZ2UuDQoNCg0KWyhMZWUgZXQg YWwuLCAyMDI2KV0gPGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yNjA4LjAwNjM5Pg0KDQoNCk5ldyBw YWNrYWdlOiBOZW9Ecml2ZXIgMC4xLjIg4oCTIE5lbzRqIERhdGFiYXNlIGRyaXZlcg0K4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0 dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9uZXctcGFja2FnZS1uZW9kcml2ZXItMC0xLTItbmVv NGotZGF0YWJhc2UtZHJpdmVyLzE4NDM2LzE+DQoNCg0KVG9tYXN6IEJhcmHFhHNraSBhbm5vdW5j ZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEknbSBoYXBweSB0byBhbm5vdW5jZSB0aGF0IGZp cnN0IHB1YmxpYyByZWxlYXNlIG9mIE5lbzRqIERyaXZlci4NCg0KICBJdCBpcyBhIHB1cmUgT2Nh bWwgZHJpdmVyIGZvciBOZW80aiBkYXRhYmFzZSBidWlsZCBmb3IgRWlvLiBJdCBpcw0KICBpbnRl bmRlZCB0byByZWFjaCBmdWxsIGZlYXR1cmUgcGFyaXR5IHdpdGggb2ZmaWNpYWwgZHJpdmVycy4g QWx0aG91Z2gNCiAgaXQncyBub3QgdGhlcmUgeWV0LCBhdCB0aGlzIHN0YWdlIGl0J3MgZnVsbHkg dXNhYmxlIHdpdGggdGhlIGZvbGxvd2luZw0KICBmZWF0dXJlczoNCg0KICDigKIgQm9sdCBwcm90 b2NvbCAzLjAsIDQuMuKAkzQuNCwgNS4w4oCTNS44IGFuZCA2LjAuDQogIOKAoiBQbGFpbiBgYm9s dDovLycgYW5kIFRMUyBgYm9sdCtzOi8vJyAvIGBib2x0K3NzYzovLycgY29ubmVjdGlvbnMuDQog IOKAoiBBdXRvLWNvbW1pdCBxdWVyaWVzIHdpdGggbGF6eSBzdHJlYW1pbmcgcmVzdWx0cy4NCiAg 4oCiIEJvdGggZXhwbGljaXQgYW5kIG1hbmFnZWQgdHJhbnNhY3Rpb25zIHdpdGggYXV0b21hdGlj IHJldHJ5Lg0KICDigKIgQm9va21hcmtzLg0KICDigKIgVGVtcG9yYWwgdHlwZXMgd2l0aCBuYW1l ZCB0aW1lIHpvbmVzIChlbWJlZGRlZCBJQU5BIGRhdGFiYXNlIHBsdXMgYW4NCiAgICBMTVQgZmFs bGJhY2sgYmVmb3JlIDE5NzApLg0KICDigKIgQmFzaWMgYXV0aGVudGljYXRpb24gKExPR09OIGFm dGVyIEhFTExPIG9uIEJvbHQgPj0gNS4xKS4NCiAg4oCiIFRlc3RLaXQgY29uZm9ybWFuY2U6IDEx NCBvZiAxMjYgdGVzdHMgcGFzc2luZyAoMTIgc2tpcHBlZCkuDQoNCiAgPGh0dHBzOi8vb3BhbS5v Y2FtbC5vcmcvcGFja2FnZXMvbmVvZHJpdmVyLz4NCg0KDQpvcGFtLWF1ZGl0DQrilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1s Lm9yZy90L2Fubi1vcGFtLWF1ZGl0LzE4NDM4LzE+DQoNCg0KSGFubmVzIE1laG5lcnQgYW5ub3Vu Y2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIANCg0KICBEZWFyIGV2ZXJ5b25lLA0KDQogIEknbSBoYXBweSB0 byBhbm5vdW5jZSB0aGF0IGBvcGFtLWF1ZGl0JyBoYXMgYmVlbiByZWxlYXNlZCB0byBvcGFtIGlu DQogIGl0cyBpbml0aWFsIHZlcnNpb24uIEl0IGlzIGFuIG9wYW0gcGx1Z2luIChzbyB5b3UgaW5z dGFsbCBpdCBpbiBvbmUNCiAgc3dpdGNoIGFuZCBoYXZlIGl0IGF2YWlsYWJsZSBpbiBhbGwgc3dp dGNoZXMgYXMgYG9wYW0gYXVkaXQnKS4NCg0KICBTbywgb3BhbS1hdWRpdCBrZWVwcyBhIGxvY2Fs IGNvcHkgb2YgdGhlIHNlY3VyaXR5LWFkdmlzb3J5IGRhdGFiYXNlDQogIGZyb20gdGhlIFtPQ2Ft bCBTZWN1cml0eSBUZWFtXS4gV2hlbiB5b3UgcnVuIGBvcGFtIGF1ZGl0JywgaXQgd2lsbA0KICBp bnNwZWN0IGFsbCBpbnN0YWxsZWQgcGFja2FnZXMgaW4geW91ciBzd2l0Y2ggYWdhaW5zdCB0aGUg a25vd24NCiAgYWR2aXNvcmllcyBhbmQgcmVwb3J0IHdoaWNoIGluc3RhbGxlZCBwYWNrYWdlcyBo YXZlIGEga25vd24gc2VjdXJpdHkNCiAgdnVsbmVyYWJpbGl0eS4NCg0KICBJdCBlaXRoZXIgcmV0 dXJucyAwIGlmIG5vIGtub3duIHZ1bG5lcmFibGUgcGFja2FnZXMgd2VyZSBmb3VuZCwgb3INCiAg bm9uLXplcm8gYW5kIGEgbGlzdCBvZiBpbnN0YWxsZWQgdnVsbmVyYWJsZSBwYWNrYWdlcy4gVGhp cyB3YXksIHlvdXINCiAgQ0kgc3lzdGVtcyBjYW4gYmVmb3JlIHB1Ymxpc2hpbmcgeW91ciBhcHBs aWNhdGlvbiBjYWxsIGBvcGFtIGF1ZGl0Jw0KICBhbmQgZW5zdXJlIHRoYXQgbm8gdnVsbmVyYWJs ZSBwYWNrYWdlIHNuZWFrZWQgaW50byB5b3VyIGJpbmFyeS4NCg0KICBBbiBlYXJsaWVyIG1lbnRp b24gaW4gaGVyZQ0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3JlcXVlc3QtZm9yLWNv bW1lbnRzLXdoYXQtdG8tZG8td2l0aC1vcGFtLXBhY2thZ2VzLXRoYXQtaGF2ZS1rbm93bi1zZWN1 cml0eS12dWxuZXJhYmlsaXRpZXMvMTgwODcvMj4NCg0KICBTb3VyY2UgY29kZSBhdCA8aHR0cHM6 Ly9naXRodWIuY29tL2hhbm5lc20vb3BhbS1hdWRpdD4gLSBidWcgcmVwb3J0cw0KICBhbmQgZmVh dHVyZSByZXF1ZXN0cyBhcmUgdmVyeSB3ZWxjb21lLg0KDQoNCltPQ2FtbCBTZWN1cml0eSBUZWFt XSA8aHR0cHM6Ly9vY2FtbC5vcmcvc2VjdXJpdHk+DQoNCg0Kc2hha3VoYWNoaSB2MC4zLjIgLSBB IG11c2ljIGNvbGxlY3Rpb24gbWFuYWdlcg0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAg QXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tc2hha3VoYWNoaS12 MC0zLTItYS1tdXNpYy1jb2xsZWN0aW9uLW1hbmFnZXIvMTg0NDAvMT4NCg0KDQpFcnVFcmkgYW5u b3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAN Cg0KICBEZWFyIGFsbCwNCg0KICBJ4oCZbSBoYXBweSB0byBhbm5vdW5jZSB0aGUgcmVsZWFzZSBz aGFrdWhhY2hpIHYwLjMuMiwgd2hpY2ggYWxzbw0KICBjb250YWlucyAwLjMuMCBhbmQgMC4zLjEg dGhhdCBJIGZvcmdvdCB0byBhbm5vdW5jZS4NCg0KICBTaGFrdWhhY2hpIGlzIHN0aWxsIGEgbXVz aWMgY29sbGVjdGlvbiBtYW5hZ2VyLg0KDQogIFRoZSBUTDtEUiBvZiB0aG9zZSByZWxlYXNlczoN CiAg4oCiIFJlZ2V4IHN1YnN0aXR1dGlvbiBpcyBzbG93IGFuZCByZXBsYWNpbmcgaXQgdmFzdGx5 IGltcHJvdmVzIHRoZQ0KICAgIHNwZWVkIG9mIGZvcm1hdHRpbmcuDQogIOKAoiBGaXhpbmcgcXVp dGUgc29tZSB3cm9uZyBiZWhhdmlvcnMgYW5kIG15IG93biBtaXN0YWtlcy4NCiAg4oCiIEEgbG90 IG9mIG5ldyBmdW5jdGlvbnMgZXhwb3NlZCB3aGljaCBtYWtlIGl0IGEgc29tZXdoYXQgdXNhYmxl DQogICAgZm91bmRhdGlvbiB0byBidWlsdCB0aGluZ3Mgb24gdG9wLg0KICDigKIgRmlnaHRpbmcg YWdhaW5zdCBPQ2FtbCdzIGxpbmthZ2Ugc3RyYXRlZ3kgdG8gYWxsb3cgcGx1Z2lucyAodXNpbmcN CiAgICBkeW5saW5rKSB0byBoYXZlIGFsbCB0aGUgbmVlZGVkIGRlcGVuZGVuY2llcy4NCiAg4oCi IEZldyBuZXcgb3B0aW9ucyAoX2VnXy4gX3NvcnRpbmcgaXRlbXMsIGF2b2lkaW5nIGluc2VydGlu ZyBkdXBsaWNhdGUNCiAgICBzb25ncywg4oCmXykuDQoNCiAgVG8gc2VlIHRoZSBsaXN0IG9mIGFs bCBjaGFuZ2VzLCB5b3UgY2FuIHJlYWQgdGhlIGNoYW5nZWxvZy4NCg0KICA8aHR0cHM6Ly9jb2Rl YmVyZy5vcmcvRXJ1RXJpL3NoYWt1aGFjaGk+DQoNCiAgVGhhbmtzIHlvdSBmb3IgeW91ciB0aW1l DQoNCiAgU2luY2VyZWx5IHlvdXJzLg0KDQoNCkJ5dHJlYW0gMC4xIOKAkyBmaXJzdCByZWxlYXNl DQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNj dXNzLm9jYW1sLm9yZy90L2Fubi1ieXRyZWFtLTAtMS1maXJzdC1yZWxlYXNlLzE4NDQ1LzE+DQoN Cg0KTWlraGFpbCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgA0KDQogIFlvIQ0KDQogIEkgYW0gaGFwcHkgdG8gYW5ub3VuY2UgdGhl IGZpcnN0IHB1YmxpYyByZWxlYXNlIG9mIFtCeXRyZWFtXSwgYQ0KICBsaWJyYXJ5IGZvciBzdHJl YW1pbmcgYnl0ZXMgYW5kIGNydW5jaGluZyB0aGVtLg0KDQogIFRoaXMgbGlicmFyeSBjb250YWlu cyBhbmdvc3RpYyBJL08gcnVudGltZSBtZWNoYW5pc21zIGZvciBvcmdhbml6YXRpb24NCiAgYnl0 ZSBzdHJlYW1zIHByb2Nlc3NpbmcgZm9yIHdyaXRlIGFuZCByZWFkIGluIGFuIGVmZmljaWVudCBt YW5uZXIsDQogIGUuZy4gZm9yIGJ1aWxkaW5ncyBjb2RlY3MgYW5kIHByb3RvY29sIGltcGxlbWVu dGF0aW9ucy4NCg0KICBUaGUgaWRlYSBhbmQgbW90aXZhdGlvbiBmb3IgY3JlYXRpbmcgdGhpcyBw cm9qZWN0IGFyb3NlIGZyb20gdGhlIG5lZWQNCiAgdG8gZWZmZWN0aXZlbHkgcGFyc2UgYWxsIGtp bmRzIG9mIGJpbmFyeSBmb3JtYXRzIGFuZA0KICBwcm90b2NvbHMuIEV4aXN0aW5nIHRhbmRlbSBb QW5nc3Ryb21dIGFuZCBbRmFyYWRheV0gaXMgZ3JlYXQsIGJ1dCBpdA0KICBpcyBtb3JlIGV4cHJl c3NpdmUgdGhhbiBJIG5lZWQuIEFuZCBbQnl0ZXNyd10gYW5kIFtJb3N0cmVhbV0gdGFsaw0KICBh Ym91dCBob3cgdG8gcmVjZWl2ZSBhbmQgc2VuZCBkYXRhLCBub3QgaG93IHRvIHByb2Nlc3Mgb3Ig cmVjb3JkIGl0Lg0KDQogIFRoYXQncyB3aHkgQnl0cmVhbSBzb2x2ZXMgdGhpcyBwcm9ibGVtLiBJ dCBib3Jyb3dzIGlkZWFzIGZyb20gc2xpY2VzDQogIGFuZCBsaWZldGltZXMgZnJvbSBCeXRlU3cg YW5kIHVuYnVmZmVyaW5nIGZyb20gQW5nc3Ryb20sIGFsbG93aW5nIHlvdQ0KICB0byB3cml0ZSBy ZWd1bGFyIE9DYW1sIGNvZGUgbGlrZSB3aXRoIHRoZSBTdGRsaWIgY2hhbm5lbHMsIHdoaWNoIC93 b3JrDQogIGluIHN0cmVhbWluZy8gbW9kZSAvYXQgYW55IEkvTyBydW50aW1lLy4NCg0KDQpbQnl0 cmVhbV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9keDNtb2QvYnl0cmVhbT4NCg0KW0FuZ3N0cm9tXSA8 aHR0cHM6Ly9vY2FtbC5vcmcvcC9hbmdzdHJvbS9sYXRlc3Q+DQoNCltGYXJhZGF5XSA8aHR0cHM6 Ly9vY2FtbC5vcmcvcC9mYXJhZGF5L2xhdGVzdD4NCg0KW0J5dGVzcnddIDxodHRwczovL2dpdGh1 Yi5jb20vZGJ1ZW56bGkvYnl0ZXNydz4NCg0KW0lvc3RyZWFtXSA8aHR0cHM6Ly9vY2FtbC5vcmcv cC9pb3N0cmVhbS9sYXRlc3Q+DQoNCkZpcnN0IHJlbGVhc2UgZGV0YWlscw0K4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAg U3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgdmVyc2lvbiwgdHdvIGFic3RyYWN0aW9ucyBhcmUgYWxy ZWFkeQ0KICBhdmFpbGFibGUgdG8geW91LCBvbmUgZm9yIGlucHV0IChgQnl0cmVhbS5Jbi50Jyks IGFuZCB0aGUgb3RoZXIgZm9yDQogIG91dHB1dHRpbmcgZGF0YSAoYEJ5dHJlYW0uT3V0LnQnKS4g Qm90aCB1c2UgW0JpZ2FycmF5XSB1bmRlciB0aGUgaG9vZA0KICB0byByZXByZXNlbnQgYW4gYXJy YXkgb2YgYnl0ZXMuIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGNob2ljZSBpcyB0bw0KICBhdm9p ZCBkdXBsaWNhdGlvbiBhbmQgZml4IHJ1bnRpbWUgd2hlbiB0cmFuc2ZlcnJpbmcgdGhpcyBkYXRh IHRvDQogIGV4dGVybmFsIGZ1bmN0aW9ucy4NCg0KICBBcyBhbHJlYWR5IG1lbnRpb25lZCwgaW5o ZXJpdGluZyBpZGVhcyBmcm9tIGBCeXRlc3J3JywgQnl0cmVhbSB1c2VzDQogIHRoZSBtZWNoYW5p c20gb2YgY2h1bmtzIHRvIGZlZWQgdGhlIHN0cmVhbS4gQW4gZXhhbXBsZSBpbGx1c3RyYXRlcyB0 aGUNCiAgYmFzaWMgY29uY2VwdCBvZiBjaHVua2luZzoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKU giAoKiBRdWV1ZSBhcyBhIGJ5dGUgY2h1bmsgc291cmNlLiAqKQ0KICDilIIgbGV0IHF1ZXVlID0N CiAg4pSCICAgbGV0IHF1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluDQogIOKUgiAgIFF1ZXVlLmFk ZCAiaGUiIHF1ZXVlOw0KICDilIIgICAoKiAuLi4gKikNCiAg4pSCICAgUXVldWUuYWRkICJkISIg cXVldWU7DQogIOKUgiAgIHF1ZXVlDQogIOKUgiBpbg0KICDilIIgDQogIOKUgiAoKiBSZWFkZXIg ZnVuY3Rpb24gdGhhdCByZXR1cm5zIGNodW5rcyBvZiB0ZXh0IGZyb20gdGhlIHNvdXJjZS4gKikN CiAg4pSCIGxldCByZWFkZXIgKCkgPQ0KICDilIIgICBtYXRjaCBRdWV1ZS50YWtlX29wdCBxdWV1 ZSB3aXRoDQogIOKUgiAgIHwgTm9uZSAtPg0KICDilIIgICAgICgqKiBGb3IgY2xvc2UgaW5jb21p bmcgYnl0ZSBzdHJlYW0sIHRoZSByZWFkZXIgDQogIOKUgiAgICAgICAgIHNob3VsZCByYWlzZSBh biBFbmRfb2ZfZmlsZSBleGNlcHRpb24uICAqKQ0KICDilIIgICAgIHJhaXNlIEVuZF9vZl9maWxl DQogIOKUgiAgIHwgU29tZSBjaHVuayAtPiBCc3RyLm9mX3N0cmluZyBjaHVuaw0KICDilIIgaW4N CiAg4pSCIA0KICDilIIgbGV0IGluX3N0cmVhbSA9IEJ5dHJlYW0uSW4ubWFrZSByZWFkZXIgaW4g DQogIOKUgiBCeXRyZWFtLkluLmlucHV0X3N0cmluZyBpbl9zdHJlYW0gNw0KICDilIIgKCogLSA6 IHN0cmluZyA9ICJoZWxsbyB3IiAqKQ0KICDilJTilIDilIDilIDilIANCiAgYW5kIGFsdGVybmF0 aXZlIGZvciBvdXRnb2luZyBieXRlIHN0cmVhbS4NCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAo KiBRdWV1ZSBhcyBhIGJ5dGUgY2h1bmsgc2luay4gKikNCiAg4pSCIGxldCBxdWV1ZSA9IFF1ZXVl LmNyZWF0ZSAoKSBpbg0KICDilIIgDQogIOKUgiAoKiBXcml0ZXIgZnVuY3Rpb24gdGhhdCBvdXRw dXRzIGNodW5rcyBvZiB0ZXh0IHRvIHRoZSBzaW5rLiAqKQ0KICDilIIgbGV0IHdyaXRlciAofmJ1 ZmZlciwgfmxlbmd0aDpsZW4sIC4uKSA9DQogIOKUgiAgIFF1ZXVlLmFkZCBCc3RyLihzdWJfc3Ry aW5nIH5vZmY6MCB+bGVuIGJ1ZmZlcikgcXVldWUNCiAg4pSCIGluDQogIOKUgiANCiAg4pSCIGxl dCBvdXRfc3RyZWFtID0gQnl0cmVhbS5PdXQubWFrZSB3cml0ZXIgaW4gDQogIOKUgiAoKiAuLi4g KikNCiAg4pSU4pSA4pSA4pSA4pSADQogIEluIHJlYWwgY2FzZXMsIHdlIHdpbGwgb2YgY291cnNl IHVzZSBjaGFubmVscywgZmlsZXMsIHNvY2tldHMsIGFuZA0KICBvdGhlciB0aGluZ3MgdG8gY29t bXVuaWNhdGUgd2l0aCB0aGUgb3V0c2lkZSB3b3JsZC4gQW5kIGRvIGl0DQogIHN0cmVhbWluZy4N CiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiBtb2R1bGUgQnNvbiA9IHN0cnVjdA0KICDilIIgICAo KiAuLi4gKikNCiAg4pSCIA0KICDilIIgICBsZXQgZnJvbV9jaGFubmVsIGljID0gDQogIOKUgiAg ICAgbGV0IGluX3N0cmVhbSA9IEJ5dHJlYW0uSW4ub2ZfY2hhbm5lbCBpYyBpbg0KICDilIIgICAg IENvZGVjLmlucHV0X2RvY3VtZW50IGluX3N0cmVhbQ0KICDilIIgDQogIOKUgiAgIGxldCBpbnRv X2NoYW5uZWwgb2MgZG9jID0gDQogIOKUgiAgICAgbGV0IG91dF9zdHJlYW0gPSBCeXRyZWFtLk91 dC5vZl9jaGFubmVsIG9jIGluIA0KICDilIIgICAgIENvZGVjLm91dHB1dF9kb2N1bWVudCBvdXRf c3RyZWFtIGRvYw0KICDilIIgDQogIOKUgiAgIGxldCB0b19zdHJpbmcgZG9jID0gDQogIOKUgiAg ICAgQnl0cmVhbS5PdXQud2l0aF9pbnRvX3N0cmluZyBAQCBmdW4gb3V0X3N0cmVhbSAtPiANCiAg 4pSCICAgICBDb2RlYy5vdXRwdXRfZG9jdW1lbnQgb3V0X3N0cmVhbQ0KICDilJTilIDilIDilIDi lIANCg0KICBXb3JraW5nIHdpdGggYEx3dCcgdGhyb3VnaCBgTHd0X2RpcmVjdCcgaXMgY3VycmVu dGx5IGF2YWlsYWJsZSBpbiBhbg0KICBleHBlcmltZW50YWwgY2FwYWNpdHkuDQoNCiAg4pSM4pSA 4pSA4pSA4pSADQogIOKUgiAjcmVxdWlyZSAiYnl0cmVhbS5sd3QiOzsNCiAg4pSCIA0KICDilIIg bGV0IHNvbWV0aGluZ19pbnRvX2NoYW5uZWwgb2MgPSANCiAg4pSCICAgbGV0JWx3dCBvdXRfc3Ry ZWFtID0gQnl0cmVhbV9sd3QuT3V0Lm9mX2NoYW5uZWwgb2MgaW4gDQogIOKUgiAgICgqIFRoZSB1 c3VhbCBCeXRyZWFtIGNvZGUuICopDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIFdpdGggb3RoZXIg ZGlyZWN0IHN0eWxlIEkvTyBydW50aW1lcyAobGlrZSBgRWlvJywgYE1pb3UnLCBldGMpLCBpdA0K ICB3aWxsIHdvcmsgbXVjaCBiZXR0ZXIuDQoNCiAgT3IgeWV0IGV4YW1wbGUuDQoNCiAg4pSM4pSA 4pSA4pSA4pSADQogIOKUgiBtYXRjaCByZXF1ZXN0IHdpdGgNCiAg4pSCIHwgYFBvc3QgIi9hcmNo aXZlcy8iLCBib2R5X3N0cmVhbSAtPg0KICDilIIgICAoKiBUaGUgcmVhZGVyIGhhcyBpdHMgb3du IGludGVybmFsIGJ1ZmZlciBtZWNoYW5pc20gdGhhdCBhbGxvd3MgaXQgdG8gYnVmZmVyaXplIA0K ICDilIIgICAgICB0aGUgY29udGVudHMgb2YgdGhlIGJvZHkgc3RyZWFtIGFuZCBkZWNvZGUgdGhl bSB3aXRob3V0IGNvcHlpbmcgY2h1bmtzLiAqKQ0KICDilIIgICBsZXQgcmVhZGVyID0gQXJjaGl2 ZV9yZWFkZXIuaW5fc3RyZWFtX29mIGJvZHlfc3RyZWFtIGluDQogIOKUgiAgIGxldCBhcmNoaXZl X21ldGEgPQ0KICDilIIgICAgIEJ5dHJlYW0uSW4ubWFrZSBBcmNoaXZlX3JlYWRlci4odG9faGFu ZGxlciByZWFkZXIpDQogIOKUgiAgICAgfD4gQXJjaGl2ZV9yZWFkZXIuaW5wdXRfYXJjaGl2ZV93 aXRob3V0X2NvbnRlbnRzIA0KICDilIIgICBpbg0KICDilIIgDQogIOKUgiAgIGxldCBibG9iID0g QXJjaGl2ZV9yZWFkZXIuYmxvYiByZWFkZXIgaW4gDQogIOKUgiAgIHByb2Nlc3NfYXJjaGl2ZSB+ bWV0YTphcmNoaXZlX21ldGEgfmJsb2IgKCkNCiAg4pSCICAgKCogLi4uICopDQogIOKUlOKUgOKU gOKUgOKUgA0KDQoNCltCaWdhcnJheV0gPGh0dHBzOi8vb2NhbWwub3JnL21hbnVhbC81LjUvYXBp L0JpZ2FycmF5Lmh0bWw+DQoNCg0KUGxhbnMgZm9yIHRoZSBuZXh0IHJlbGVhc2UNCuKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjA0KDQogIOKAoiBJbXByb3ZlIGRvY3VtZW50YXRpb25zDQogIOKAoiBBZGQg dW5pdCB0ZXN0cw0KICDigKIgQWRkIGNvbWJpbmF0b3JzPw0KICDigKIgKllvdXIgc3VnZ2VzdGlv bnPigKYuKg0KDQoNCkluc3RhbGxhdGlvbiBhbmQgcGxheQ0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgQWxyZWFkeSBh dmFpbGFibGUgYXQgW09QQU1dIQ0KDQogIFlvdSBjYW4gaW5zdGFsbCB0aGUgYGJ5dHJlYW0nIGxp YnJhcnkgdXNpbmcgdGhlIE9QQU0gcGFja2FnZSBtYW5hZ2VyDQogIG9yIGFueSBvdGhlciBtZXRo b2QgeW91IHByZWZlci4NCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAkIG9wYW0gaW5zdGFsbCBi eXRyZWFtDQogIOKUlOKUgOKUgOKUgOKUgA0KICBZb3UgY2FuIGFsc28gZ2V0IHRoZSBsYXRlc3Qg dmVyc2lvbiBvZiB0aGUgdXBzdHJlYW0gKGRldmVsb3BlcikNCiAgYnJhbmNoLg0KICDilIzilIDi lIDilIDilIANCiAg4pSCICQgb3BhbSBwaW4gYnl0cmVhbS5kZXYgaHR0cHM6Ly9naXRodWIuY29t L2R4M21vZC9ieXRyZWFtLmdpdA0KICDilJTilIDilIDilIDilIANCiAgSWYgeW91IGFyZSB1c2lu ZyBbRHVuZV0sIHBsZWFzZSBhZGQgdGhlIGBieXRyZWFtJyBsaWJyYXJ5IHRvIHlvdXINCiAgZGVw ZW5kZW5jaWVzLg0KDQoNCltPUEFNXSA8aHR0cHM6Ly9vcGFtLm9jYW1sLm9yZy8+DQoNCltEdW5l XSA8aHR0cHM6Ly9kdW5lLmJ1aWxkLz4NCg0KDQpTaG93Y2FzZXMNCuKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjA0KDQogIFlvdSBjYW4gZXhwbG9yZSBlY29zeXN0ZW0gbGlicmFyaWVzIHRoYXQg dXNlIEJ5dHJlYW0gdG8gYmV0dGVyDQogIHVuZGVyc3RhbmQgaXRzIGFwcGxpY2FiaWxpdHkuDQoN CiAg4oCiIFtScG1maWxlXSBpcyB0aGUgbGlicmFyeSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBS UE0gcGFja2FnZXMgaGFzDQogICAgYmVlbiBwb3J0ZWQgZnJvbSBbQW5nc3Ryb21dIHNpbmNlIHZl cnNpb24gMS4wLjAgKCpjdXJyZW50bHksIHdlIGFyZQ0KICAgIGluIHRoZSBwcm9jZXNzIG9mIGRl dmVsb3BtZW50Kik7DQogIOKAoiBbSW50ZWxfaGV4XSAqKnBsYW5uZWQqKjsNCiAg4oCiIGFuZCBt YW55IG1vcmXigKYNCg0KDQpbUnBtZmlsZV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9keDNtb2QvcnBt ZmlsZT4NCg0KW0FuZ3N0cm9tXSA8aHR0cHM6Ly9naXRodWIuY29tL2luaGFiaXRlZHR5cGUvYW5n c3Ryb20+DQoNCltJbnRlbF9oZXhdIDxodHRwczovL2dpdGh1Yi5jb20vZHgzbW9kL2ludGVsX2hl eD4NCg0KDQpBZnRlcndvcmQNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIEkgd2ls bCBiZSB2ZXJ5IGhhcHB5IHRvIGhlYXIgeW91ciBvcGluaW9uIGFib3V0IHRoaXMgbGlicmFyeS4g TWF5YmUNCiAgeW91IGNvdWxkIHByb3ZpZGUgc29tZSBmZWVkYmFjay4gQWxzbywgY29tbWVudHMg ZnJvbSBzZW5pb3IgY29sbGVhZ3Vlcw0KICBhYm91dCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFu ZCB0aGUgQVBJIHdvdWxkIGJlIGFwcHJlY2lhdGVkLiBUaGUNCiAgc291cmNlIGNvZGUgaXMgb3Bl biB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHNvIGl0J3MgYWx3YXlzIHJlYWR5IGZvcg0KICBjaGFu Z2VzLg0KDQogIEVuam95IGl0ISA6Y2FtZWw6IDpob3RfYmV2ZXJhZ2U6DQoNCg0KU21hamkgR2x5 cGggUGF0aA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ DQoNCiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9hbm4tc21hamktZ2x5 cGgtcGF0aC8xODQ0Ni8xPg0KDQoNClpBTiBEb1llIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgW1NtYWppIEdseXBo IFBhdGhdDQoNCiAgQW4gT0NhbWwgbGlicmFyeSBmb3IgbWFuaXB1bGF0aW9uIG9mIGZvbnQgZ2x5 cGggb3V0bGluZXMuIEl0IHByb3ZpZGVzDQogIGEgc3VpdGUgb2YgdG9vbHMgZm9yIGFuYWx5emlu ZywgdHJhbnNmb3JtaW5nLCBjb21wb3NpbmcsIGFuZA0KICBjb252ZXJ0aW5nIGdseXBoIHBhdGhz IGJldHdlZW4gZGlmZmVyZW50IGZvcm1hdHMuDQoNCiAgVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHR3 byBwcmltYXJ5IHBhdGggZGVzY3JpcHRpb24gc3RhbmRhcmRzOg0KDQogIDEuIFNWRyBQYXRoOiBT dXBwb3J0cyBgPHBhdGg+JyBlbGVtZW50IChpbmNsdWRpbmcgaXRzIGBkJyBhdHRyaWJ1dGUpDQog ICAgIGFuZCBvcHRpb25hbCBgPGc+JyBlbGVtZW50IGFzIGNvbnRhaW5lcnMuDQogIDIuIEdsaWYg Rm9ybWF0OiBTdXBwb3J0cyB0aGUgZGF0YSB1c2VkIHRvIGRlc2NyaWJlIGdseXBoIG91dGxpbmVz IGluDQogICAgIHRoZSBVbmlmaWVkIEZvbnQgT2JqZWN0IChVRk8pIGZvcm1hdC4NCg0KICBJdCBo YXMgcHVibGlzaGVkIG9uIG9wYW0sIHNvIGl0IGNhbiBiZSBpbnN0YWxsZWQgZWFzaWx5IGJ5IGBv cGFtDQogIGluc3RhbGwgc21hamlfZ2x5cGhfcGF0aCcNCg0KICBBbmQgaGVyZSBhcmUgW3R3byB1 c2UgY2FzZSBzYW1wbGVzXQ0KDQoNCltTbWFqaSBHbHlwaCBQYXRoXSA8aHR0cHM6Ly9naXRodWIu Y29tL3NtYWppLW9yZy9zbWFqaV9nbHlwaF9wYXRoPg0KDQpbdHdvIHVzZSBjYXNlIHNhbXBsZXNd DQo8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3NtYWppLWdseXBoLXBhdGgtdHdvLXVzZWNh c2VzLXNtYWppLW91dGxpbmUtZGVzY3JpcHRpb24tYW5kLXNtYWppLXN0cm9rZS1kZXNjcmlwdGlv bi8xODQ0Nz4NCg0KDQpTbWFqaSBHbHlwaCBQYXRoLCB0d28gdXNhZ2UgZXhhbXBsZXMsIFNtYWpp IE91dGxpbmUgRGVzY3JpcHRpb24gYW5kIFNtYWppIFN0cm9rZSBEZXNjcmlwdGlvbg0K4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToN CiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9zbWFqaS1nbHlwaC1wYXRoLXR3by11c2Fn ZS1leGFtcGxlcy1zbWFqaS1vdXRsaW5lLWRlc2NyaXB0aW9uLWFuZC1zbWFqaS1zdHJva2UtZGVz Y3JpcHRpb24vMTg0NDcvMT4NCg0KDQpaQU4gRG9ZZSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFtTbWFqaSBHbHlw aCBQYXRoXQ0KDQogIFtTbWFqaSBHbHlwaCBPdXRsaW5lIERlc2NyaXB0aW9uXQ0KDQogIFtTbWFq aSBHbHlwaCBTdHJva2UgRGVzY3JpcHRpb25dDQoNCiAgSeKAmWQgbGlrZSB0byBpbnRyb2R1Y2Ug dHdvIHByYWN0aWNhbCBhcHBsaWNhdGlvbnMgb2YgdGhlIFNtYWppIEdseXBoDQogIFBhdGggbGli cmFyeTogKlNtYWppIEdseXBoIE91dGxpbmUgRGVzY3JpcHRpb24oZ29kKSogYW5kICpTbWFqaSBH bHlwaA0KICBzdHJva2UgZGVzY3JpcHRpb24oZ3NkKSouIEN1cnJlbnRseSwgdGhlc2UgYXJlbid0 IHB1Ymxpc2hlZCBvbiBvcGFtDQogIHlldDsgSSd2ZSBqdXN0IHByb3ZpZGVkIHRoZSBsaW5rcyBo ZXJlIGFzIGV4YW1wbGVzIG9mIGhvdyB5b3UgY2FuIHVzZQ0KICB0aGUgU21hamkgR2x5cGggUGF0 aCBsaWJyYXJ5LiBJZiB5b3UgZmluZCB0aGVzZSBleGFtcGxlcyBoZWxwZnVsLA0KICBwbGVhc2Ug bGV0IG1lIGtub3cgYnkgcmVwbHlpbmcgb3IgZ2l2aW5nIGl0IGEgImxpa2Ui4oCUdGhhdCdsbCBs ZXQgbWUNCiAga25vdyB0aGVyZSdzIGludGVyZXN0IHNvIEkgY2FuIGdldCB0aGVtIG9udG8gb3Bh bSBmb3IgYmV0dGVyDQogIG1haW50ZW5hbmNlLg0KDQogIEnigJl2ZSBkZXNpZ25lZCBhIG1hcmt1 cCBsYW5ndWFnZSB0aGF0IG1ha2VzIGl0IHZlcnkgZWFzeSB0byBidWlsZA0KICBnbHlwaHMgYnkg Y29tYmluaW5nIGRpZmZlcmVudCBzdHJva2VzLiBUaGFua3MgdG8gU21hamkgR2x5cGggUGF0aCwN CiAgY3JlYXRpbmcgYSBnbHlwaCBpcyBiYXNpY2FsbHkgbGlrZSBwbGF5aW5nIHdpdGggYnVpbGRp bmcgYmxvY2tz4oCUeW91DQogIGNhbiBldmVuIGdlbmVyYXRlIGFuIGFuaW1hdGlvbiBvZiB0aGUg ZW50aXJlIHdyaXRpbmcgcHJvY2VzcyENCg0KICBDaGVjayBvdXQgdGhlc2UgZXhhbXBsZXM6DQoN CiAgKkV4YW1wbGUgMToqIEJ1aWxkaW5nIHRoZSAi5YWrIiBjaGFyYWN0ZXIgYnkgY29tYmluaW5n IHR3byBzdHJva2VzLg0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgPGdvZCB2ZXJzaW9uPSIx LjAiPg0KICDilIIgICA8Z2x5cGggdW5pY29kZT0iNTE2YiwwIj4NCiAg4pSCICAgICA8c3Ryb2tl IHR5cGU9InQiIHg9IjAiIHk9IjAiIHdpZHRoPSI1NiIgaGVpZ2h0PSIxMTIiLz4NCiAg4pSCICAg ICA8c3Ryb2tlIHR5cGU9InAiIHg9Ijc2IiB5PSIwIiB3aWR0aD0iNTYiIGhlaWdodD0iMTEyIi8+ DQogIOKUgiAgIDwvZ2x5cGg+DQogIOKUgiA8L2dvZD4NCiAg4pSU4pSA4pSA4pSA4pSADQoNCiAg PGh0dHBzOi8vZ2l0aHViLmNvbS9rYW5kdS9zdGF0aWMvcmF3L21hc3Rlci9zbWFqaS9jamt2L2dv ZC81MTZiLDAub3V0bGluZS5zdmc+DQoNCiAgKkV4YW1wbGUgMjoqIENvbWJpbmluZyBhbiBleGlz dGluZyAiZ29kIiAo5LiNKSBhbmQgYSBob3Jpem9udGFsIHN0cm9rZQ0KICAgKOS4gCkgdG8gY3Jl YXRlICLkuJUiICh3aXRoIGFuaW1hdGlvbikuDQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiA8 Z29kIHZlcnNpb249IjEuMCI+DQogIOKUgiAgIDxnbHlwaCB1bmljb2RlPSI0ZTE1LDAiPg0KICDi lIIgICAgIDxjaGFyYWN0ZXIgdXRmOD0gIuS4jSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEyOCIgaGVp Z2h0PSIxMjAiLz4NCiAg4pSCICAgICA8c3Ryb2tlIHR5cGU9ImgiIHg9IjAiIHk9IjExNCIgd2lk dGg9IjEyOCIgaGVpZ2h0PSIxNCIvPg0KICDilIIgICA8L2dseXBoPg0KICDilIIgPC9nb2Q+DQog IOKUlOKUgOKUgOKUgOKUgA0KDQogIDxodHRwczovL2dpdGh1Yi5jb20va2FuZHUvc3RhdGljL3Jh dy9tYXN0ZXIvc21hamkvY2prdi9nb2QvNGUxNSwwLmFuaW1hdGlvbi5zdmc+DQoNCiAgSWYgdGhp cyBpbWFnZSBpcyBzdGlsbCwgdHJ5IHRvIHJlbG9hZCB0aGUgaW1hZ2Ugb3Igb3BlbiB0aGlzIGlt YWdlIGluDQogIGEgbmV3IHRhYiBvciB3aW5kb3cgdG8gcmVzdGFydCB0aGUgYW5pbWF0aW9uLg0K DQogIEFmdGVyIHVzaW5nIEdPRCBmb3IgYSB3aGlsZSwgSSByZWFsaXplZCBpdOKAmXMgYWN0dWFs bHkgYmV0dGVyIHN1aXRlZA0KICBmb3IgcGhvbmV0aWMgc2NyaXB0cyByYXRoZXIgdGhhbiBpZGVv Z3JhcGguIEJlY2F1c2Ugb2YgdGhhdCwgSQ0KICBkZXNpZ25lZCBhIG5ldyBsaWJyYXJ5IHNwZWNp ZmljYWxseSBmb3IgaWRlb2dyYXBoIChlc3BlY2lhbGx5DQogIENoaW5lc2UpOiAqU21hamkgR2x5 cGggU3Ryb2tlIERlc2NyaXB0aW9uIChHU0QpKi4NCg0KICBGb3IgYSBkZWVwZXIgZGl2ZSBpbnRv IEdPRCwgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gaXQgYW5kIEdTRCwgYW5kDQogIHRoZSBwcm9z L2NvbnMgb2YgZWFjaCB1c2UgY2FzZSwgY2hlY2sgb3V0IHRoZSBsaW5rcyBhdCB0aGUNCiAgYmVn aW5uaW5nLiBJJ2xsIGtlZXAgaXQgYnJpZWYgaGVyZeKAlGZlZWwgZnJlZSB0byBjaGVjayB0aG9z ZSBvdXQgaWYNCiAgeW91J3JlIGludGVyZXN0ZWQhDQoNCg0KW1NtYWppIEdseXBoIFBhdGhdIDxo dHRwczovL2dpdGh1Yi5jb20vc21hamktb3JnL3NtYWppX2dseXBoX3BhdGg+DQoNCltTbWFqaSBH bHlwaCBPdXRsaW5lIERlc2NyaXB0aW9uXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFqaS1vcmcv c21hamlfZ29kPg0KDQpbU21hamkgR2x5cGggU3Ryb2tlIERlc2NyaXB0aW9uXQ0KPGh0dHBzOi8v Z2l0aHViLmNvbS9zbWFqaS1vcmcvc21hamlfZ3NkPg0KDQoNCk9sZCBDV04NCuKVkOKVkOKVkOKV kOKVkOKVkOKVkA0KDQogIElmIHlvdSBoYXBwZW4gdG8gbWlzcyBhIENXTiwgeW91IGNhbiBbc2Vu ZCBtZSBhIG1lc3NhZ2VdIGFuZCBJJ2xsIG1haWwNCiAgaXQgdG8geW91LCBvciBnbyB0YWtlIGEg bG9vayBhdCBbdGhlIGFyY2hpdmVdIG9yIHRoZSBbUlNTIGZlZWQgb2YgdGhlDQogIGFyY2hpdmVz XS4NCg0KICBJZiB5b3UgYWxzbyB3aXNoIHRvIHJlY2VpdmUgaXQgZXZlcnkgd2VlayBieSBtYWls LCB5b3UgbWF5IHN1YnNjcmliZQ0KICB0byB0aGUgW2NhbWwtbGlzdF0uDQoNCiAgW0FsYW4gU2No bWl0dF0NCg0KDQpbc2VuZCBtZSBhIG1lc3NhZ2VdIDxtYWlsdG86YWxhbi5zY2htaXR0QHBvbHl0 ZWNobmlxdWUub3JnPg0KDQpbdGhlIGFyY2hpdmVdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUu bmV0L2N3bi8+DQoNCltSU1MgZmVlZCBvZiB0aGUgYXJjaGl2ZXNdIDxodHRwczovL2FsYW4ucGV0 aXRlcG9tbWUubmV0L2N3bi9jd24ucnNzPg0KDQpbY2FtbC1saXN0XSA8aHR0cHM6Ly9zeW1wYS5p bnJpYS5mci9zeW1wYS9pbmZvL2NhbWwtbGlzdD4NCg0KW0FsYW4gU2NobWl0dF0gPGh0dHBzOi8v YWxhbi5wZXRpdGVwb21tZS5uZXQvPg0KDQo= --==-=-= 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 August 04 to 11, 2026.

Dune 3.24

Continuing this thread, Ali Caglayan announced

The Dune team is pleased to announce the release of dune 3.24.2.

See the full = changelog for the new fixes, and for attribution to the contributors wh= o made it all possible. Thank you, contributors!

If you encounter a problem with this release, please report it in our issue tracker.

New releases of Merlin and OCaml-LSP for OCaml 5.5 and trunk

vds announced

I am glad to announce Merlin 5.8.1-505, a new release that not= ably fixes a caching issue that manifested frequently when using OCaml-LSP = with Dune in watch mode.

We also released preview versions of both Merlin and OCaml-LSP working with= today's OCaml compiler's trunk. You can use them to hack on the compiler, = but they will break again with futures changes to the types AST.

sdl3 bindings

sanette announced

Hello!

it's my pleasure to announce a (very) preliminary version of OCaml-sd= l3 (or simply sdl3 for the package name), which obvious= ly is a set of bindings for the SDL3 library.

https://github.com/sanett= e/ocaml-sdl3

Why announcing a preliminary version? First, because I won't have much time= to work on it in the next couple of months, and second, because I believe = you can already have fun with it!

The bindings are generated by a program that uses clang to ins= pect the SDL code. This is a first phase; not all functions are usable yet.= I have started to write manual wrappers for a few of them. (See the examp= les).

AI disclaimer: Although I have to admit ch= atGPT was my friend for understanding how to use clang and ctypes, I would like to state here that the whole binding generat= or (plus all manual additions, of course) was entirely written by (my) hand.

JFLA2027 : Premier appel =C3=A0 communications

Yannick Zakowski announced

This message is intentionally written in French. It is a call for papers fo= r the =E2=80=9CFrancophone Days on Functional Languages=E2=80=9D to be held at th= e end of January 2027 in Britany. Papers can be written in English, but the presentations themselves are expected to be given in French.

Merci de faire circuler : premier appel =C3=A0 communications

JFLA 2027 : Journ=C3=A9es Francophones des Langages Applicatifs

http://jfla.eu/jfla2027.html

26 janvier au 29 janvier 2027

Maison Saint-Fran=C3=A7ois

Les 38=C3=A8mes Journ=C3=A9es Francophones des Langages Applicatifs (JFLA) = se tiendront en Bretagne, =C3=A0 Dinard (Ille-et-Vilaine), du mardi 26 janvier 2027 au vendredi 29 janvier 2027.

Les JFLA r=C3=A9unissent concepteur=C2=B7rices, utilisateur=C2=B7rices et t= h=C3=A9oricien=C2=B7nes ; elles ont pour ambition de couvrir les domaines des langages applicatifs, d= e la preuve formelle, de la v=C3=A9rification de programmes, et des objets math= =C3=A9matiques qui sous-tendent ces outils. Ces domaines doivent =C3=AAtre pris au sens la= rge : nous souhaitons promouvoir les ponts entre les diff=C3=A9rentes th=C3=A9matiques.

  • Langages fonctionnels et applicatifs : s=C3=A9mantique, compilation, op= timisation, typage, extensions =C3=A0 d'autres paradigmes.
  • Assistants de preuve : impl=C3=A9mentation, nouvelles tactiques, d=C3= =A9veloppements pr=C3=A9sentant un int=C3=A9r=C3=AAt th=C3=A9orique, technique ou m=C3=A9th= odologique.
  • Logique, correspondance preuve-programme, r=C3=A9alisabilit=C3=A9, extr= action de programmes, mod=C3=A8les.
  • Sp=C3=A9cification, prototypage, d=C3=A9veloppements formels d'algorith= mes.
  • V=C3=A9rification de programmes ou de mod=C3=A8les, v=C3=A9rification d= =C3=A9ductive, interpr=C3=A9tation abstraite, raffinement.
  • Utilisation industrielle des langages fonctionnels et applicatifs, ou des m=C3=A9thodes issues de la communaut=C3=A9 scientifique. Outils et plateformes pour le web.
  • Enseignement ou diffusion des langages fonctionnels et applicatifs. Environnements et m=C3=A9thodes de d=C3=A9veloppement, retours d'exp=C3=A9rience.

Les articles soumis aux JFLA sont relus par au moins deux personnes s'ils s= ont accept=C3=A9s, et au moins trois personnes s'ils sont rejet=C3=A9s. Les cr= itiques du comit=C3=A9 de programme sont toujours bienveillantes et la plupart du temps encourageantes et constructives, m=C3=AAme en cas de rejet.

Il n'y a donc pas de raison de ne pas soumettre aux JFLA !

DATES IMPORTANTES

/!\\ Attention : les dates limites sont fermes et d=C3=A9finitives. Il n'y aura pas d'extension. /!

  • Soumission des r=C3=A9sum=C3=A9s et articles : 16 octobre 2026, GMT+2
  • Notification aux auteurs et autrices : 2 d=C3=A9cembre 2026, GMT+2
  • Version finale des articles : 16 d=C3=A9cembre 2026, GMT+2

SOUMISSIONS

Nous acceptons deux types de soumissions :

  • Article de recherche (18 pages max.) portant sur des travaux originaux.= Nous acceptons des travaux en cours, pour lesquels l'aspect recherche n'est pas enti=C3=A8rement finalis=C3=A9. Nous encourageons aussi la soumission d'art= icles pr=C3=A9sentant avec =C3=A9l=C3=A9gance un r=C3=A9sultat connu sous un angl= e nouveau.
  • Article court (9 pages max.) d=C3=A9crivant un probl=C3=A8me particulie= r, les pistes en cours d'investigation, et visant =C3=A0 rechercher de l'aide de la part de = la communaut=C3=A9. Les articles courts peuvent =C3=A9galement pr=C3=A9senter = de mani=C3=A8re synth=C3=A9tique et coh=C3=A9rente des r=C3=A9sultats d=C3=A9j=C3=A0 publi= =C3=A9s. Enfin, ils peuvent pr=C3=A9senter un outil logiciel dont l'expos=C3=A9 constituera une d=C3=A9= monstration.

CONSIGNES AUX AUTEURS ET AUTRICES

Les articles peuvent =C3=AAtre r=C3=A9dig=C3=A9s en fran=C3=A7ais ou en ang= lais.

La forme de l'article doit =C3=AAtre soign=C3=A9e, et le contenu r=C3=A9dig= =C3=A9 de mani=C3=A8re structur=C3=A9e et claire.

Le style LaTeX jflart doit imp=C3=A9rativement =C3=AAtre utilis=C3=A9 sans = modification de la mise en page. Le style LaTeX et sa documentation sont disponibles depuis le= site web de la conf=C3=A9rence.

Les limites de pages sont strictes. Les r=C3=A9f=C3=A9rences bibliographiqu= es ne sont pas comptabilis=C3=A9es dans la limite de pages. Les annexes aux articles ne so= nt pas autoris=C3=A9es.

Les auteurs et autrices peuvent soumettre du mat=C3=A9riel suppl=C3=A9menta= ire, s=C3=A9par=C3=A9 de l'article soumis, sous forme de texte (version longue, sans limite de pages) et/ou de d=C3=A9veloppement logiciel. L'=C3=A9valuation de ce mat=C3=A9riel= suppl=C3=A9mentaire est =C3=A0 la discr=C3=A9tion du comit=C3=A9 de programme. Les articles soumis = doivent donc =C3=AAtre auto-contenus et =C3=A9valuables sans ce mat=C3=A9riel suppl=C3=A9mentaire.

Les soumissions parall=C3=A8les dans d'autres conf=C3=A9rences, journaux ou= workshops avec actes ne sont pas autoris=C3=A9es.

Les membres du comit=C3=A9 de programme sont autoris=C3=A9s =C3=A0 soumettr= e un article. Les pr=C3=A9sidentes du comit=C3=A9 ne le sont pas.

Les articles doivent =C3=AAtre soumis via le site :

https://types-hotcrp= .paris.inria.fr/jfla27

L'=C3=A9valuation des articles suit un processus en simple-aveugle : les ra= pports des articles sont anonymes, mais pas les auteurs et autrices.

Les articles accept=C3=A9s seront publi=C3=A9s dans les actes de la conf=C3= =A9rence, sur HAL, et les auteurs et autrices en donneront une pr=C3=A9sentation lors des jour= n=C3=A9es. Les pr=C3=A9sentations seront, de pr=C3=A9f=C3=A9rence, donn=C3=A9es en fran=C3= =A7ais.

Yannick ZAKOWSKI et Stefania DUMBRAVA

JFLA 2027

hegel 0.14.0

Ethan Chou announced

Hello,

After some feedback we've received about Hegel, I am happy to announce v0.1= 4.0 has removed the dependency on Core. The Core generators from the previo= us versions now exist in an optional sublibrary called Hegel_jane. Thanks t= o @c-cube for his help with his release!

For slightly more detail, see the release notes:

https://github.com/hegeldev/hegel-ocaml/releases#release-v0.14.0

New release 1.1.0 of ifs-fractals

C=C3=A9dric announced

Hello everyone,

ifs= -fractals =E2=80=94 a small library and CLI that draws the attractors o= f iterated function systems (the Barnsley fern and friends) with the chaos = game =E2=80=94 just got its first feature release since arriving on opam th= is summer. After sixteen years of intensive development ;-)

3D"69533442f671ef2b=

What's new in 1.1.0:

  • Headless PNG rendering. Until now the fractals could only be drawn into a g= raphics window. You can now render straight to a file, no display needed:

    ifs-fractals -o fern.png -s 800x1280 barnsley
    
  • or from code, save_png barnsley 200000 "fern.png". This makes the packa= ge usable on servers and in CI, and made testing much easier. A fun constra= int I set myself: no new dependencies =E2=80=94 the PNG writer is self-cont= ained, writing 8-bit PNGs with stored deflate blocks in pure OCaml.
  • Density coloring. The chaos game doesn't visit the attractor uniformly =E2= =80=94 some regions are hit far more often than others, and that density is= where much of the visual structure lives. With -c (or save_png \~color:tru= e), pixels are colored by their hit count on a log scale. The image above = is the result: the fern gets its veins back.

    ifs-fractals -c -o fern.png -s 800x1280 barnsley
    

Install or upgrade with opam install ifs-fractals, then try ifs-fractals &n= dash;list to see all sixteen attractors.

If you're curious how new attractors get designed =E2=80=94 how one finds t= he six coefficients per affine map that produce a maple leaf or a sunflower= =E2=80=94 I wrote the techniques up in a short paper, Building New IFS Att= ractors: a Working Vocabulary of Affine Maps ( https://doi.org/10.5281/zenodo.21804778 ), with= a more narrative account on my blog ( https://www.cedricb= onhomme.org/2026/07/27/challenging-claude-with-ifs-fractals/ ).

One disclosure, since it's the interesting part of the story: the new attra= ctors were designed by Claude (Anthropic's Fable 5 model) =E2=80=94 the blo= g post recounts that experiment. Everything else =E2=80=94 the library, the= CLI, the PNG writer, and the paper itself =E2=80=94 is my own work, not LL= M output.

Feedback and new fractal definitions are very welcome. Just make a pull-req= uest.

If you design an attractor you like, I'd love to see it!

OSEC-2026-14: mirage-crypto-pk: RSA signature verification rai= ses undocumented exception

Hannes Mehnert announced

A new security advisory is available. As usual, it can be found at=20 https://github.com= /ocaml/security-advisories and=20 https://osv.dev/= list?q=3D&ecosystem=3Dopam

Best,

Hannes

id: OSEC-2026-14
modified: "2026-08-07T13:00:00Z"
published: "2026-08-07T13:00:00Z"
severity: "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
severity_score: "4.3 (Medium)"
affected: "mirage-crypto-pk" {< "2.3.0"}
events: [
   [
     git "https://github.com/mirage/mirage-crypto.git" [
       [fixed "a0f59a0c90eb067505b55a03d3bb104eacd6dd33"]
     ]
   ]
]
credits: [
   [reporter "Thomas Gazagnaire"]
   [remediation_developer "Hannes Mehnert"]
]
cwe: [ CWE-248 ]
affected_bindings: [
   "Mirage_crypto_pk.Rsa.encrypt"
   "Mirage_crypto_pk.Rsa.decrypt"
   "Mirage_crypto_pk.Rsa.PKCS1.encrypt"
   "Mirage_crypto_pk.Rsa.PKCS1.decrypt"
   "Mirage_crypto_pk.Rsa.PKCS1.sig_encode"
   "Mirage_crypto_pk.Rsa.PKCS1.sig_decode"
   "Mirage_crypto_pk.Rsa.PKCS1.sign"
   "Mirage_crypto_pk.Rsa.PKCS1.verify"
   "Mirage_crypto_pk.Rsa.OAEP.encrypt"
   "Mirage_crypto_pk.Rsa.OAEP.decrypt"
   "Mirage_crypto_pk.Rsa.PSS.sign"
   "Mirage_crypto_pk.Rsa.PSS.verify"
]

RSA signature verification raises undocumented except= ion

The RSA decrypt and encrypt functions raise an Invalid_argument=20 exception if the message is smaller than 2. This leads to X509 certificates with a signature value of 0 or 1 to throw this Invalid_argument exception instead of a proper error.

  • Fix

    The fix is to reuse the Insufficient_key exception, which is documented and caught further up in the stack.

  • Timeline
    • July 28th 2026: report to security@ocaml.org
    • August 7th: release of mirage-crypto-pk 2.3.0 and security advisory

OSEC-2026-15: mirage-crypto-ec: EC public key out of bounds re= ad

Hannes Mehnert announced

A new security advisory is available. As usual, it can be found at=20 https://github.com= /ocaml/security-advisories and=20 https://osv.dev/= list?q=3D&ecosystem=3Dopam

Best,

Hannes

id: OSEC-2026-15
modified: "2026-08-07T13:00:00Z"
published: "2026-08-07T13:00:00Z"
severity: "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
severity_score: "4.3 (Medium)"
affected: "mirage-crypto-ec" {< "2.3.0"}
events: [
   [
     git "https://github.com/mirage/mirage-crypto.git" [
       [fixed "1f0bf67044e67cf6e46911fcd77a0ff706b6c3e7"]
     ]
   ]
]
credits: [
   [reporter "Thomas Gazagnaire"]
   [remediation_developer "Hannes Mehnert"]
]
cwe: [ CWE-125 CWE-248 ]
affected_bindings: [
   "Mirage_crypto_ec.P256.Dsa.pub_of_octets"
   "Mirage_crypto_ec.P256.Dh.key_exchange"
   "Mirage_crypto_ec.P384.Dsa.pub_of_octets"
   "Mirage_crypto_ec.P384.Dh.key_exchange"
   "Mirage_crypto_ec.P521.Dsa.pub_of_octets"
   "Mirage_crypto_ec.P521.Dh.key_exchange"
]

EC public key out of bounds read

The internal Point.of_octets function is missing a length check for=20 compressed points, and thus is raising an exception when a short buffer is=20 provided. This affects all NIST curves (P-256, P-384, P-521) and both=20 Dsa.pub_of_octets and Dh.key_exchange functions.

  • Fix

    The fix is to check the length of the provided buffer.

  • Timeline
    • July 28th 2026: report to security@ocaml.org
    • August 7th: release of mirage-crypto-pk 2.3.0 and security advisory

New package: floatml

Opale announced

Hi :=E2=80=8B) Wanted to announce a new package I worked on over the past w= eek I just published, float= ml! It's a tiny wrapper around Rust's soft float library (rustc_apfloat<= /a>), enabling fast and efficient IEEE-754 float16, floa= t32, float64 and float128 in OCaml. I also= made sure the code allocates as little as possible, so it should be reason= ably efficient.

Disclaimer: a good chunk of the code is LLM-authored. I chose the in= terface I wanted and guided it, but the glue code with Rust is LLM generate= d (and extensively tested!)

I had to create it for Soteria, w= here we need reductions for concrete float operations, to avoid using Z3 wh= en possible. Maybe you'll find a use for it too!

ocaml-android reboot!

Romain Beauxis announced

Hi all!

I have just pushed a full reboot of the Android cross-compiler opam repository!

The reboot follows the most recent practices set by the windows counter par= t and is pretty clean, thanks to the vast improvements made in cross-compil= ing support in the main OCaml compiler recently.

Not all packages have been migrated, due to lack of time. The old branch is= still available at old-main.

This is a community repository so, if cross-compiling OCaml code is in your= wheelhouse, feel free to submit some patches!

Ravel 1.0.1 =E2=80=94 a functional language compiling to inte= raction nets

Kayo Tei announced

Hi all!

I am happy to announce that Ravel 1.0.1 is now available on opam.

Ravel is a small functional language that compiles to interaction nets =E2= =80=94 a graph-rewriting model with strong confluence and implicit parallel= ism. It features user-defined algebraic data types, deep pattern matching, = first-class functions with lexical closures, and automatic resource managem= ent via labeled duplication and erasure nodes.

https://opam.ocaml.org/p= ackages/ravel/

Feedback and contributions are welcome!

New package: P4-SpecTec

Haechan Kwon announced

Hi!

We are happy to announce the first public release of p4spectec= , a framework for mechanizing the P4 language specification. It provides a = domain-specific language for writing formal specifications in the form of <= b>algorithmic inference rules (Lee et al., 2026).

A specification written in P4-SpecTec is executable. By writing typi= ng rules with P4-SpecTec, you get a reference type checker. By writing dyna= mic semantics rules, you get a reference interpreter. The prose backend<= /b> also generates human-readable documentation from the mechanized specifi= cation.

https://opam.ocaml.o= rg/packages/p4spectec/

For detailed instruction, source code and the mechanized P4 specification, = check out the GitHub repository linked to the package.

New package: NeoDriver 0.1.2 =E2=80=93 Neo4j Database driver<= /h2>

Tomasz Bara=C5=84ski announced

I'm happy to announce that first public release of Neo4j Driver.

It is a pure Ocaml driver for Neo4j database build for Eio. It is intended = to reach full feature parity with official drivers. Although it's not there= yet, at this stage it's fully usable with the following features:

  • Bolt protocol 3.0, 4.2=E2=80=934.4, 5.0=E2=80=935.8 and 6.0.
  • Plain bolt:// and TLS bolt+s:// / bolt+= ssc:// connections.
  • Auto-commit queries with lazy streaming results.
  • Both explicit and managed transactions with automatic retry.
  • Bookmarks.
  • Temporal types with named time zones (embedded IANA database plus an LM= T fallback before 1970).
  • Basic authentication (LOGON after HELLO on Bolt >=3D 5.1).
  • TestKit conformance: 114 of 126 tests passing (12 skipped).

https://opam.ocaml.o= rg/packages/neodriver/

opam-audit

Hannes Mehnert announced

Dear everyone,

I'm happy to announce that opam-audit has been released to opa= m in its initial version. It is an opam plugin (so you install it in one sw= itch and have it available in all switches as opam audit).

So, opam-audit keeps a local copy of the security-advisory database from th= e OCaml Security Team. When you = run opam audit, it will inspect all installed packages in your= switch against the known advisories and report which installed packages ha= ve a known security vulnerability.

It either returns 0 if no known vulnerable packages were found, or non-zero= and a list of installed vulnerable packages. This way, your CI systems can= before publishing your application call opam audit and ensure= that no vulnerable package sneaked into your binary.

An earlier mention in here https://discuss.ocaml.org/t/request-for-comments-what-to-d= o-with-opam-packages-that-have-known-security-vulnerabilities/18087/2

Source code at https://gi= thub.com/hannesm/opam-audit - bug reports and feature requests are very= welcome.

shakuhachi v0.3.2 - A music collection manager

EruEri announced

Dear all,

I=E2=80=99m happy to announce the release shakuhachi v0.3.2, which also con= tains 0.3.0 and 0.3.1 that I forgot to announce.

Shakuhachi is still a music collection manager.

The TL;DR of those releases:

  • Regex substitution is slow and replacing it vastly improves the speed o= f formatting.
  • Fixing quite some wrong behaviors and my own mistakes.
  • A lot of new functions exposed which make it a somewhat usable foundati= on to built things on top.
  • Fighting against OCaml's linkage strategy to allow plugins (using dynli= nk) to have all the needed dependencies.
  • Few new options (eg. sorting items, avoiding inserting duplicate songs, …= ).

To see the list of all changes, you can read the changelog.

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

Thanks you for your time

Sincerely yours.

Bytream 0.1 =E2=80=93 first release

Mikhail announced

Yo!

I am happy to announce the first public release of Bytream, a library for streaming bytes and crunch= ing them.

This library contains angostic I/O runtime mechanisms for organization byte= streams processing for write and read in an efficient manner, e.g. for bui= ldings codecs and protocol implementations.

The idea and motivation for creating this project arose from the need to ef= fectively parse all kinds of binary formats and protocols. Existing tandem = Angstrom and Faraday is great, but it is more e= xpressive than I need. And = Bytesrw and Iostream talk about how to receive and send data, not how to process or record it.

That's why Bytream solves this problem. It borrows ideas from slices and li= fetimes from ByteSw and unbuffering from Angstrom, allowing you to write re= gular OCaml code like with the Stdlib channels, which work in streaming<= /i> mode at any I/O runtime.

First release details

Starting from the first version, two abstractions are already available to = you, one for input (Bytream.In.t), and the other for outputtin= g data (Bytream.Out.t). Both use Bigarray under the hood to represent an a= rray of bytes. The motivation for this choice is to avoid duplication and f= ix runtime when transferring this data to external functions.

As already mentioned, inheriting ideas from Bytesrw, Bytream u= ses the mechanism of chunks to feed the stream. An example illustrates the = basic concept of chunking:

(* Q=
ueue as a byte chunk source. *)
let queue =3D
  let queue =3D Queue.create () in
  Queue.add "he" queue;
  (* ... *)
  Queue.add "d!" queue;
  queue
in

(* Reader function that returns chunk=
s of text from the source. *)
let reader () =3D
  match Queue.take_opt queue with
  | None ->
    (** For close incom=
ing byte stream, the reader 
        should raise an=
 End_of_file exception.  *)
    raise End_of_file
  | Some chunk -> Bstr.of_string chunk
in

let in_stream =3D Bytream.In.make reader in=20
Bytream.In.input_=
string in_stream 7
(* - : string =3D "hello w" *)

and alternative for outgoing byte stream.

(* Q=
ueue as a byte chunk sink. *)
let queue =3D Queue.create () in

(* Writer function that outputs chunk=
s of text to the sink. *)
let writer (~buffer=
, ~length:=
len, ..) =3D
  Queue.add Bstr.(sub_string ~off:0 ~len buffer) qu=
eue
in

let out_stream =3D Bytream.Out.make writer in=20
(* ... *)

In real cases, we will of course use channels, files, sockets, and other th= ings to communicate with the outside world. And do it streaming.

module Bson =3D struct<=
/span>
  (* ... *)

  let from_channel ic=
 =3D=20
    let in_stream =3D Bytream.In.of_channel ic in
    Codec.input_d=
ocument in_stream

  let into_channel oc=
 doc =3D=20
    let out_stream =3D Bytream.Out.of_channel oc in=20
    Codec.output_=
document out_stream doc

  let to_string doc =3D=20
    Bytream.Out.w=
ith_into_string @@ fun Codec.output_=
document out_stream

Working with Lwt through Lwt_direct is currently = available in an experimental capacity.

#require=
 "bytream.lwt";;

let something_into_channel oc =3D=20
  let%lwt out_stream=
 =3D Bytream_lwt.=
Out.of_channel oc in=20
  (* The usual Bytream code. *)

With other direct style I/O runtimes (like Eio, Miou, etc), it will work much better.

Or yet example.=20

match request with
| `Post "/archives/", body_stream ->
  (* The reader has its own internal bu=
ffer mechanism that allows it to bufferize 
     the contents of th=
e body stream and decode them without copying chunks. *)
  let reader =3D Archive_reader.in_stream_of body_stream in
  let archive_meta =3D
    Bytream.In.ma=
ke Archive_reader.(to_handler reader)
    |> Archive_reader.input_archive_without_conten=
ts=20
  in

  let blob =3D Archive_reader.blob reader in=20
  process_archive ~meta<=
/span>:archive_meta ~blob ()
  (* ... *)

Plans for the next release

  • Improve documentations
  • Add unit tests
  • Add combinators?
  • Your suggestions….

Installation and play

Already available at OPAM!

You can install the bytream library using the OPAM package man= ager or any other method you prefer.

$ opam install bytream

You can also get the latest version of the upstream (developer) branch.

$ opam pin bytream.dev https://github.com/dx3mod/bytream.git

If you are using Dune, please add the <= code>bytream library to your dependencies.

Showcases

You can explore ecosystem libraries that use Bytream to better understand i= ts applicability.

  • Rpmfile is the librar= y for reading and writing RPM packages has been ported from Angstrom since version 1.0.0 (currently, we are in the process of development);
  • Intel_hex pla= nned;
  • and many more…

Afterword

I will be very happy to hear your opinion about this library. Maybe you cou= ld provide some feedback. Also, comments from senior colleagues about imple= mentation details and the API would be appreciated. The source code is open= under the MIT license, so it's always ready for changes.

Enjoy it! :camel: :hot_beverage:

Smaji Glyph Path, two usage examples, Smaji Outline Descripti= on and Smaji Stroke Description

ZAN DoYe announced

Smaji Glyph Path<= /a>

Smaji Glyph Outline Desc= ription

Smaji Glyph Stroke Descr= iption

I=E2=80=99d like to introduce two practical applications of the Smaji Glyph= Path library: Smaji Glyph Outline Description(god) and Smaji Gly= ph stroke description(gsd). Currently, these aren't published on opam y= et; I've just provided the links here as examples of how you can use the Sm= aji Glyph Path library. If you find these examples helpful, please let me k= now by replying or giving it a "like"=E2=80=94that'll let me know there's i= nterest so I can get them onto opam for better maintenance.

I=E2=80=99ve designed a markup language that makes it very easy to build gl= yphs by combining different strokes. Thanks to Smaji Glyph Path, creating a= glyph is basically like playing with building blocks=E2=80=94you can even = generate an animation of the entire writing process!

Check out these examples:

Example 1: Building the "=E5=85=AB" character by combining two strok= es.

<god version=3D"1.0">
  <unicode=3D"516b,0">
    <stroke type=3D"t" x=3D=
"0" =
y=3D"0" width=3D"56" height=3D=
"112"/>
    <stroke type=3D"p" x=3D=
"76" y=3D"0" width=3D"56" height=3D"112"/>
  <glyph>
<=
/god>

3D"516b,0.outline.svg"

Example 2: Combining an existing "god" (=E4=B8=8D) and a horizontal = stroke (=E4=B8=80) to create "=E4=B8=95" (with animation).

<god version=3D"1.0">
  <unicode=3D"4e15,0">
    <character utf8=3D "不" =
x=3D"0" y=3D"0" width=3D"128"<=
/span> height=3D"120"/>
    <stroke type=3D"h" x=3D=
"0" =
y=3D"114" width=3D"128" height=3D"14"/>
  <glyph>
<=
/god>

3D"4e15,0.animation.svg"

If this image is still, try to reload the image or open this image in a new= tab or window to restart the animation.

After using GOD for a while, I realized it=E2=80=99s actually better suited= for phonetic scripts rather than ideograph. Because of that, I designed a = new library specifically for ideograph (especially Chinese): Smaji Glyph= Stroke Description (GSD).

For a deeper dive into GOD, the differences between it and GSD, and the pro= s/cons of each use case, check out the links at the beginning. I'll keep it= brief here=E2=80=94feel free to check those out if you're interested!

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/BsSVW56ZmGBA0KO07S5ccFAmp7FLcbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmcACgkQBA0KO07S5ccHQwf/fcFh2dr2EoFn7j+hKG4TMB0+ybMcRAskgSortBkn aBvLogOBkORUtaugyosrLy5wYU/tDIBGoWVHCNbpSJH67jHX/iNcslhzpTTCk6hZ 6C9nmQkYeGloik3ik13JX6Q4yBcuNhzWPXsb3LMN3OYV1zGtCnbhC+HFkSJfb2NJ Sa+WECoAN5OWqFVT345b5ZHQmOxxz06gyKy0yey6aX7zE1rNiUXbaDlg6WdCb8q0 j2dXEY5b6Rd/m0WGvcB2q2SalpqIfd3jyUTMgTC+XN5s2Jx987ipokOcRHlWsfOw suWOoD0Wj8e6/phhRADtz6Ec/pK59El4BhAau5hV10r76A== =RKxh -----END PGP SIGNATURE----- --===-=-=--