From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.5 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, T_SCC_BODY_TEXT_LINE,T_SPF_PERMERROR,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 7A0031F54E for ; Sat, 6 Aug 2022 12:28:27 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sendgrid.me header.i=@sendgrid.me header.b="FHQ8N25m"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 9A968120E7E; Sat, 6 Aug 2022 21:28:24 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 8E190120E7E for ; Sat, 6 Aug 2022 21:28:21 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.me; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=smtpapi; bh=12pbBNi9ABix2+UGsv/MMdnvgYtXG+7uocjPZMi6d2A=; b=FHQ8N25mqMftL4HHpjfb0S5gbEPLpqXmV2amVRINid9YwLn0YS75rX+MHjlz+DWhINjG oby7unew2bL2cNXAxDhg8XwSW+pUWxWnpncYdUoyy4yeUHBcRgDazSUijfshe/hv9KLw/B it8tKcNe0Xx34NFBCcJ3Sjt9JOttw09gA= Received: by filterdrecv-66b95c5ffd-vzjsk with SMTP id filterdrecv-66b95c5ffd-vzjsk-1-62EE5E63-28 2022-08-06 12:28:19.618954842 +0000 UTC m=+1354958.112605069 Received: from herokuapp.com (unknown) by geopod-ismtpd-4-0 (SG) with ESMTP id ql7OxX43T8yDLWBK8-gehA for ; Sat, 06 Aug 2022 12:28:19.512 +0000 (UTC) Date: Sat, 06 Aug 2022 12:28:19 +0000 (UTC) From: "Eregon (Benoit Daloze)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18949 X-Redmine-Issue-Author: Eregon X-Redmine-Sender: Eregon X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 85841 X-SG-EID: =?us-ascii?Q?DvL3W2Xo+Vk=2FeUn3F50L=2FNc8u9NqZCnbE0mXZHiyye4R1YZg=2FtAFc0SAFzpcS=2F?= =?us-ascii?Q?Zcr7BqPN=2FYCcMZBMITNeIci9STxYay0JAJWPbek?= =?us-ascii?Q?rFR+qW19EhbjiT2iKmTnApV4hYm6hpXqsutmtER?= =?us-ascii?Q?RVkStp60OBWzEUjuFcILzv+cM73pwdZLbo3ZGO0?= =?us-ascii?Q?uV0yiWBL7fd9u44TVz14qxSm5g2q5lrYKJ1w7jv?= =?us-ascii?Q?CwZVPovwY=2FSZ7lfK3AfGawyt9b2pJkyEwBE7k0x?= =?us-ascii?Q?OQEXx5z8sfSI5JvwhiSWA=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109433 Subject: [ruby-core:109433] [Ruby master Feature#18949] Deprecate and remove replicate and dummy encodings X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Reply-To: Ruby developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE4OTQ5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KU3RhdHVzIGNoYW5nZWQgZnJvbSBSZWplY3RlZCB0byBPcGVuDQoNClRoaXMgaXMgYSBkaXNh cHBvaW50aW5nIGFuc3dlciwgaXQgc291bmRzIGxpa2UgdGhlcmUgd2FzIG5vdCBlbm91Z2ggdGlt ZSBhdCB0aGUgZGV2IG1lZXRpbmcgdG8gY29uc2lkZXIgdGhpcyBpc3N1ZSBwcm9wZXJseSBtYXli ZT8gKHRoYXQncyBmaW5lLCBidXQgdGhlbiBkb24ndCByZWplY3QgcGxlYXNlKQ0KSSByZW9wZW4g YmVjYXVzZSB0aGlzIGlzc3VlIGlzIHN0aWxsIHZhc3RseSB1bmFuc3dlcmVkLg0KQWxzbyBpdCBm ZWVscyBub3Qgc28gcmVzcGVjdGZ1bCB0byBtZSB0byBhbnN3ZXIgd2l0aCBhIHNpbmdsZSBzaG9y dCB1bmNsZWFyIHNlbnRlbmNlIHRvIGEgY2FyZWZ1bGx5LWNyYWZ0ZWQgaXNzdWUuDQpJIGVzdGlt YXRlIEkgaGF2ZSBhIGxvdCBvZiBleHBlcmllbmNlIGluIHRoaXMgYXJlYSBzaW5jZSBJIHJlaW1w bGVtZW50ZWQgZHVtbXkvcmVwbGljYXRlIGVuY29kaW5ncyBpbiBUcnVmZmxlUnVieSByZWNlbnRs eS4NCg0KVGhlIGRldiBtZWV0aW5nIGxvZyBoYXMgbm8gbm90ZXMgYWJvdXQgYSBkaXNjdXNzaW9u OiBodHRwczovL2dpdGh1Yi5jb20vcnVieS9kZXYtbWVldGluZy1sb2cvYmxvYi9tYXN0ZXIvRGV2 TWVldGluZy0yMDIyLTA3LTIxLm1kI2ZlYXR1cmUtMTg5NDktZGVwcmVjYXRlLWFuZC1yZW1vdmUt cmVwbGljYXRlLWFuZC1kdW1teS1lbmNvZGluZ3MtZXJlZ29uDQoNCm5hcnVzZSAoWXVpIE5BUlVT RSkgd3JvdGUgaW4gI25vdGUtMTE6DQo+IFN0cmluZyBpcyBhIGNvbnRhaW5lciBhbmQgYW4gZW5j b2RpbmcgaXMgYSBsYWJlbCBvZiBpdC4gV2hpbGUgZGF0YSB3aG9zZSBlbmNvZGluZyBpcyBhbiBl bmNvZGluZyBjYXRlZ29yaXplZCBpbiBkdW1teSBlbmNvZGluZ3MgaW4gUnVieSwgd2UgY2Fubm90 IGF2b2lkIHN1Y2ggZW5jb2RpbmdzLg0KDQpTbywgdGhlcmUgYXJlIDMgdGhpbmdzIHdlIGNhbiBk ZWNpZGUsIHdoaWNoIEkgcG9pbnRlZCBvdXQgaW4gaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcv aXNzdWVzLzE4OTQ5I25vdGUtNg0KSXQgc2VlbXMgeW91IGFyZSBhZ2FpbnN0ICIzLiBEZXByZWNh dGUgYW5kIHRoZW4gcmVtb3ZlIG90aGVyIGR1bW15IGVuY29kaW5ncyIuDQpXaGF0IGFib3V0IHRo ZSBvdGhlciBwb2ludHMsIDEuIGFuZCAyLj8NCg0KQ291bGQgeW91IGV4cGxhaW4geW91ciBwb2lu dCBvZiB2aWV3IGJldHRlcj8NCldobyB1c2VzIGR1bW15IGVuY29kaW5ncyBhbmQgd2hhdCBmb3I/ IFNpbmNlIG5vIHN0cmluZyBvcGVyYXRpb25zIHJlYWxseSB3b3JrcyBvbiB0aGVtLCB0aGV5IGFy ZSBpbmRlZWQgbm90aGluZyBtb3JlIHRoYW4gYSBsYWJlbCArIHRoZSB0cmFuc2NvZGluZyB0YWJs ZS4NCg0KSSBhZ3JlZSAzLiBpcyBtb3JlIGRpZmZpY3VsdCwgYW5kIGlzIGxlc3MgaW1wb3J0YW50 IHRoYW4gMS4vMi4uDQoxLiBzZWVtcyBzdHJhaWdodGZvcndhcmQsIHRoZXJlIHNlZW1zIHRvIGJl IGV4dHJlbWVseSBmZXcgdXNhZ2VzIG9mIGl0LCBhbmQgdGhleSBjYW4gYmUgcmVwbGFjZWQgYnkg RW5jb2Rpbmc6OkJJTkFSWSBlYXNpbHkuDQogICBJbiBmYWN0IGBFbmNvZGluZyNyZXBsaWNhdGVg IGlzIHVzZWQgaW4gemVybyBnZW1zLCBzbyBJIHRoaW5rIGl0J3MgZmFpciBlbm91Z2ggdG8gZGVw cmVjYXRlIGFuZCB0aGVuIHJlbW92ZSBpdCB3aXRob3V0IGZ1cnRoZXIgZGlzY3Vzc2lvbi4NCjIu IEkgdGhpbmsgd2UgbmVlZCB0byBldmFsdWF0ZSB1c2FnZXMgb2YgdGhlIGR1bW15IFVURi0xNiBh bmQgVVRGLTMyIGVuY29kaW5ncywgZS5nLiwgd2l0aCBgZ2VtLWNvZGVzZWFyY2hgLg0KDQpGb3Ig YmV0dGVyIGNvbXBhdGliaWxpdHkgYmV0d2VlbiBSdWJpZXMgd2UgbmVlZCB0byBkbyAyLiBhcyB3 ZWxsLCBhcyBtZW50aW9uZWQgYWJvdmUgdGhlIG92ZXJoZWFkIGFuZCBjb21wbGV4aXR5IGZvciBk dW1teSBVVEYtMTYvVVRGLTMyIGlzIHRvbyBtdWNoLCBhbmQgSlJ1YnkgJiBUcnVmZmxlUnVieSBh bHJlYWR5IGRvIG5vdCBkZWFsIHdpdGggaXQgZm9yIG1hbnkgU3RyaW5nIG9wZXJhdGlvbnMuDQpJ dCBpcyBhbHNvIGNsZWFybHkgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBjb3N0IGZvciBDUnVi eS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAj MTg5NDk6IERlcHJlY2F0ZSBhbmQgcmVtb3ZlIHJlcGxpY2F0ZSBhbmQgZHVtbXkgZW5jb2Rpbmdz DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg5NDkjY2hhbmdlLTk4NTg0DQoN CiogQXV0aG9yOiBFcmVnb24gKEJlbm9pdCBEYWxvemUpDQoqIFN0YXR1czogT3Blbg0KKiBQcmlv cml0eTogTm9ybWFsDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpS dWJ5IGhhcyBhIGxvdCBvZiBhY2NpZGVudGFsIGNvbXBsZXhpdHkuDQpTb21ldGltZXMgaXQgYmVj b21lcyBjbGVhciBzb21lIGZlYXR1cmVzIGJyaW5nIGEgbG90IG9mIGNvbXBsZXhpdHkgYW5kIHll dCBwcm92aWRlIGxpdHRsZSB2YWx1ZSBvciBhcmUgdXNlZCB2ZXJ5IHJhcmVseS4NCkFsc28gbW9z dCBSdWJ5IHVzZXJzIGRvIG5vdCBldmVuIGtub3cgYWJvdXQgdGhlc2UgZmVhdHVyZXMuDQpSZXBs aWNhdGUgYW5kIGR1bW15IGVuY29kaW5ncyBzZWVtIHRvIGNsZWFybHkgZmFsbCBpbnRvIHRoaXMg Y2F0ZWdvcnksIGFsbW9zdCBub2JvZHkgdXNlcyB0aGVtIGJ1dCB0aGV5IGFkZCBhIHNpZ25pZmlj YW50IGNvbXBsZXhpdHkgYW5kIGFsc28gYWRkIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2Ugb3Zl cmhlYWQuDQpOb3RhYmx5LCB0aGUgZXhpc3RlbmNlIG9mIHRob3NlIG1lYW5zIHRoZSBudW1iZXIg b2YgZW5jb2RpbmdzIGluIGEgUnVieSBydW50aW1lIGlzIGFjdHVhbGx5IHZhcmlhYmxlIGFuZCBu b3QgZml4ZWQuDQpUaGF0IG1lYW5zIGV4dHJhIHN5bmNocm9uaXphdGlvbiwgaGFzaHRhYmxlIGxv b2t1cHMsIGluZGlyZWN0aW9ucywgZnVuY3Rpb24gY2FsbHMsIGV0Yy4NCg0KIyMgUmVwbGljYXRl IEVuY29kaW5ncw0KDQpSZXBsaWNhdGUgZW5jb2RpbmdzIGFyZSBjcmVhdGVkIHVzaW5nIGBFbmNv ZGluZyNyZXBsaWNhdGUobmFtZSlgLg0KSXQgYWxtb3N0IHNvdW5kcyBsaWtlIGFuIGFsaWFzIGJ1 dCBpbiBmYWN0IGl0IGlzIG1vcmUgdGhhbiB0aGF0IGFuZCBjcmVhdGVzIGEgbmV3IEVuY29kaW5n IG9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQgYnkgYSBTdHJpbmc6DQpgYGBydWJ5DQplID0gRW5j b2Rpbmc6OlVTX0FTQ0lJLnJlcGxpY2F0ZSgnTVktVVMtQVNDSUknKQ0KcyA9ICJhYmMiLmZvcmNl X2VuY29kaW5nKGUpDQpwIHMuZW5jb2RpbmcgIyA9PiBlDQpwIHMuZW5jb2RpbmcubmFtZSAjID0+ ICdNWS1VUy1BU0NJSScNCmBgYA0KDQpUaGlzIHNlZW1zIGNvbXBsZXRlbHkgdXNlbGVzcy4NClRo ZXJlIGlzIGFuIG9idmlvdXMgZmlyc3Qgc3RlcCBoZXJlIHdoaWNoIGlzIHRvIGNoYW5nZSBgRW5j b2RpbmcjcmVwbGljYXRlYCB0byByZXR1cm4gdGhlIHJlY2VpdmVyLCBhbmQganVzdCBpbnN0YWxs IGFuIGFsaWFzIGZvciBpdC4NClRoYXQgYXZvaWRzIGNyZWF0aW5nIG1vcmUgZW5jb2RpbmcgaW5z dGFuY2VzIG5lZWRsZXNzbHkuDQoNCkkgdGhpbmsgd2Ugc2hvdWxkIGFsc28gZGVwcmVjYXRlIGFu ZCByZW1vdmUgdGhpcyBtZXRob2QgdGhvdWdoLCBpdCBpcyBuZXZlciBhIGdvb2QgaWRlYSB0byBo YXZlIGEgZ2xvYmFsIG11dGFibGUgbWFwIGxpa2UgdGhpcy4NCklmIHNvbWVvbmUgd2FudCBleHRy YSBhbGlhc2VzIGZvciBlbmNvZGluZ3MsIHRoZXkgY2FuIGVhc2lseSB0byBkbyBzbyBieSBoYXZp bmcgdGhlaXIgb3duIEhhc2g6IGB7IGFsaWFzID0+IGVuY29kaW5nIH0uZmV0Y2gobmFtZSkgeyBF bmNvZGluZy5maW5kKG5hbWUpIH1gLg0KDQojIyBEdW1teSBFbmNvZGluZ3MNCg0KRHVtbXkgZW5j b2RpbmdzIGFyZSBub3QgcmVhbCBlbmNvZGluZ3MuIFRoZXkgYXJlIGFydGlmaWNpYWwgZW5jb2Rp bmdzIGRlc2lnbmVkIHRvIGxvb2sgbGlrZSBlbmNvZGluZ3MsIGJ1dCBkb24ndCBmdW5jdGlvbiBh cyBlbmNvZGluZ3MgaW4gUnVieS4NCkZyb20gdGhlIGRvY3M6DQpgYGANCmVuYy5kdW1teT8gLT4g dHJ1ZSBvciBmYWxzZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpSZXR1cm5zIHRydWUgZm9yIGR1bW15IGVu Y29kaW5ncy4gQSBkdW1teSBlbmNvZGluZyBpcyBhbiBlbmNvZGluZyBmb3INCndoaWNoIGNoYXJh Y3RlciBoYW5kbGluZyBpcyBub3QgcHJvcGVybHkgaW1wbGVtZW50ZWQuIEl0IGlzIHVzZWQgZm9y DQpzdGF0ZWZ1bCBlbmNvZGluZ3MuDQpgYGANCg0KSSB3b25kZXIgd2h5IHdlIGhhdmUgdGhvc2Ug aGFsZi1pbXBsZW1lbnRlZCBlbmNvZGluZ3MgaW4gY29yZSwgaXQgc291bmRzIHRvIG1lIGxpa2Ug dW5maW5pc2hlZCB3b3JrIHdoaWNoIHNob3VsZCBub3QgaGF2ZSBiZWVuIG1lcmdlZC4NCg0KVGhl ICJjb2RlcG9pbnRzIiBvZiBkdW1teSBlbmNvZGluZ3MgYXJlIGp1c3QgImJ5dGVzIiBhbmQgc28g dGhleSBiZWhhdmUgdGhlIHNhbWUgYXMgYEVuY29kaW5nOjpCSU5BUllgLCB3aXRoIHRoZSBleGNl cHRpb24gb2YgdGhlIFVURi0xNiBhbmQgVVRGLTMyIGR1bW15IGVuY29kaW5ncy4NCg0KIyMjIFVU Ri0xNiBhbmQgVVRGLTMyIGR1bW15IGVuY29kaW5ncw0KDQpUaGVzZSB0d28gYXJlIHNwZWNpYWwg ZHVtbXkgZW5jb2RpbmdzLg0KV2hhdCB0aGV5IGRvIGlzIHRoZXkgc2NhbiB0aGUgZmlyc3QgMiBv ciA0IGJ5dGVzIG9mIHRoZSBTdHJpbmcsIGFuZCBpZiB0aG9zZSBieXRlcyBhcmUgYSBieXRlLW9y ZGVyIG1hcmsgKEJPTSksDQp0aGUgdHJ1ZSAiYWN0dWFsIiBlbmNvZGluZyBpcyByZXNvbHZlZCB0 byBVVEYtMTZCRS9VVEYtMTZMRSBvciBVVEYtMzJCRS9VVEYtMzJMRS4NCk90aGVyd2lzZSwgYEVu Y29kaW5nOjpCSU5BUllgIGlzIHJldHVybmVkLg0KVGhpcyBsb2dpYyBpcyBkb25lIGJ5IGBnZXRf YWN0dWFsX2VuY29kaW5nKClgLg0KDQpXaGF0IGlzIHdlaXJkIGlzIHRoaXMgY2hlY2sgaXMgbm90 IGRvbmUgb24gU3RyaW5nIGNyZWF0aW9uLCBubywgaXQgaXMgZG9uZSAqZXZlcnkgdGltZSogdGhl IGVuY29kaW5nIG9mIHRoYXQgU3RyaW5nIGlzIGFjY2Vzc2VkIChhbmQgdGhlIHJlc3VsdCBpcyBu b3Qgc3RvcmVkIG9uIHRoZSBTdHJpbmcpLg0KVGhhdCBpcyBhIG5lZWRsZXNzIG92ZXJoZWFkIGFu ZCByZWFsbHkgdW5yZWxpYWJsZSBzZW1hbnRpY3MuDQpEbyB3ZSByZWFsbHkgd2FudCBhIFN0cmlu ZyB3aGljaCBhdXRvbWFnaWNhbGx5IGNoYW5nZXMgYmV0d2VlbiBVVEYtMTZMRSBhbmQgVVRGLTE2 QkUgYmFzZWQgb24gbXV0YXRpbmcgaXRzIGJ5dGVzPyBJIHRoaW5rIG5vYm9keSB3YW50cyB0aGF0 Og0KYGBgcnVieQ0KcyA9ICJceEZGXHhGRWFceDAwYlx4MDBjXHgwMGRceDAwIi5mb3JjZV9lbmNv ZGluZygiVVRGLTE2IikNCnAgcyAjID0+ICJcdUZFRkZhYmNkIg0Kcy5zZXRieXRlIDAsIDI1NA0K cy5zZXRieXRlIDEsIDI1NQ0KcCBzICMgPT4gIlx1RkVGRlx1NjEwMFx1NjIwMFx1NjMwMFx1NjQw MCINCmBgYA0KDQpJIHRoaW5rIHRoZSBwYXRoIGlzIGNsZWFyLCB3ZSBzaG91bGQgZGVwcmVjYXRl IGFuZCB0aGVuIHJlbW92ZSBFbmNvZGluZzo6VVRGXzE2IGFuZCBFbmNvZGluZzo6VVRGXzMyIChk dW1teSBlbmNvZGluZ3MpLg0KQW5kIHRoZW4gd2Ugbm8gbG9uZ2VyIG5lZWQgYGdldF9hY3R1YWxf ZW5jb2RpbmcoKWAgYW5kIHRoZSBvdmVyaGVhZCBpdCBhZGRzIHRvIGV2ZXJ5IFN0cmluZyBtZXRo b2QuDQoNCldlIGNvdWxkIGFsc28ga2VlcCB0aG9zZSBjb25zdGFudHMgYW5kIG1ha2UgdGhlbSBy ZWZlciB0aGUgbmF0aXZlLWVuZGlhbiBVVEYtMTYvMzIuDQpCdXQgdGhhdCBjb3VsZCBjYXVzZSBj b25mdXNpbmcgZXJyb3JzIGFzIHdlIHdvdWxkIGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGVtLg0K V2UgY291bGQgYWRkIGBFbmNvZGluZzo6VVRGXzE2TkVgIC8gYEVuY29kaW5nOjpVVEZfMTZfTkFU SVZFX0VORElBTmAgaWYgdGhhdCBpcyB1c2VmdWwuDQoNCkFub3RoZXIgcG9zc2liaWxpdHkgd291 bGQgYmUgdG8gcmVzb2x2ZSB0aGVzZSBlbmNvZGluZ3Mgb24gU3RyaW5nIGNyZWF0aW9uLCBsaWtl Og0KYGBgDQoiXHhGRlx4RkUiLmZvcmNlX2VuY29kaW5nKCJVVEYtMTYiKS5lbmNvZGluZyAjID0+ IFVURi0xNkxFDQpTdHJpbmcubmV3KCJceEZGXHhGRSIsIGVuY29kaW5nOiBFbmNvZGluZzo6VVRG XzE2KS5lbmNvZGluZyAjID0+IFVURi0xNkxFDQoiYWIiLmZvcmNlX2VuY29kaW5nKCJVVEYtMTYi KS5lbmNvZGluZyAjIGV4Y2VwdGlvbiwgbm90IGEgQk9NDQpTdHJpbmcubmV3KCJhYiIsIGVuY29k aW5nOiBFbmNvZGluZzo6VVRGXzE2KS5lbmNvZGluZyAjIGV4Y2VwdGlvbiwgbm90IGEgQk9NDQpg YGANCkkgdGhpbmsgaXQgaXMgdW5uZWNlc3NhcnkgdG8ga2VlcCBzdWNoIGNvbXBsZXhpdHkgdGhv dWdoLg0KQSBjbGFzcyBtZXRob2Qgb24gU3RyaW5nIG9yIEVuY29kaW5nIGxpa2UgZS5nLiBgRW5j b2RpbmcuZmluZF9mcm9tX2JvbShzdHJpbmcpYCBpcyBzbyBtdWNoIGNsZWFyZXIgYW5kIGVmZmlj aWVudCAobm8gbmVlZCB0byBzcGVjaWFsIGNhc2UgdGhvc2UgZW5jb2RpbmdzIGluIFN0cmluZy5u ZXcsICNmb3JjZV9lbmNvZGluZywgZXRjKS4NCg0KRldJVyBKUnVieSBzZWVtcyB0byB1c2UgYGdl dEFjdHVhbEVuY29kaW5nKClgIG9ubHkgaW4gMiBwbGFjZXMgKHNjYW5Gb3JDb2RlUmFuZ2UsIGlu c3BlY3QpLCB3aGljaCBpcyBhbiBpbmRpY2F0aW9uIHRob3NlIGR1bW15IFVURiBlbmNvZGluZ3Mg YXJlIGJhcmVseSB1c2VkIGlmIGV2ZXIuIFNpbWlsYXJseSwgVHJ1ZmZsZVJ1Ynkgb25seSBoYXMg NCB1c2FnZXMgb2YgYEdldEFjdHVhbEVuY29kaW5nTm9kZWAuDQoNCiMjIyBFeGlzdGluZyBkdW1t eSBlbmNvZGluZ3MNCg0KYGBgDQo+IEVuY29kaW5nLmxpc3Quc2VsZWN0KCY6ZHVtbXk/KSANClsj PEVuY29kaW5nOlVURi0xNiAoZHVtbXkpPiwgICM8RW5jb2Rpbmc6VVRGLTMyIChkdW1teSk+LA0K ICM8RW5jb2Rpbmc6SUJNMDM3IChkdW1teSk+LCAjPEVuY29kaW5nOlVURi03IChkdW1teSk+LA0K ICM8RW5jb2Rpbmc6SVNPLTIwMjItSlAgKGR1bW15KT4sICM8RW5jb2Rpbmc6SVNPLTIwMjItSlAt MiAoZHVtbXkpPiwgIzxFbmNvZGluZzpJU08tMjAyMi1KUC1LRERJIChkdW1teSk+LA0KICM8RW5j b2Rpbmc6Q1A1MDIyMCAoZHVtbXkpPiwgIzxFbmNvZGluZzpDUDUwMjIxIChkdW1teSk+XQ0KYGBg DQoNClNvIGJlc2lkZXMgVVRGLTE2L1VURi0zMiBkdW1teSwgaXQncyBvbmx5IDcgZW5jb2Rpbmdz Lg0KRG9lcyBhbnlvbmUgdXNlIG9uZSBvZiB0aGVzZSA3IGR1bW15IGVuY29kaW5ncz8NCg0KV2hh dCBpcyBpbnRlcmVzdGluZyB0byBub3RlLCBpcyB0aGF0IHRoZXNlIGVuY29kaW5ncyBhcmUgZXhh Y3RseSB0aGUgb25lcyB0aGF0IGFyZSBhbHNvIG5vdCBBU0NJSS1jb21wYXRpYmxlLCB3aXRoIHRo ZSBleGNlcHRpb24gb2YgVVRGLTE2QkUvVVRGLTE2TEUvVVRGLTMyQkUvVVRGLTMyTEUgKG5vbi1k dW1teSkuDQpBcyBhIG5vdGUsIFVURi17MTYsMzJ9e0JFLExFfSBhcmUgQVNDSUktY29tcGF0aWJs ZSBpbiBjb2RlcG9pbnRzIGJ1dCBub3QgaW4gYnl0ZXMsIGFuZCBSdWJ5IHVzZXMgdGhlIGJ5dGVz IGRlZmluaXRpb24gb2YgQVNDSUktY29tcGF0aWJsZS4NClRoZXJlIGlzIHBvdGVudGlhbCB0byBz aW1wbGlmeSBlbmNvZGluZyBjb21wYXRpYmlsaXR5IHJ1bGVzIGFuZCBlbmNvZGluZyBjb21wYXRp YmlsaXR5IGNoZWNrcyBiYXNlZCBvbiB0aGF0Lg0KU28gd2hhdCB0aGlzIG1lYW5zIGlzIGlmIHdl IHJlbW92ZWQgZHVtbXkgZW5jb2RpbmdzLCBhbGwgZW5jb2RpbmdzIGV4Y2VwdCBVVEYtezE2LDMy fXtCRSxMRX0gd291bGQgYmUgQVNDSUktY29tcGF0aWJsZSwgd2hpY2ggd291bGQgbGVhZCB0byBz aWduaWZpY2FudCBzaW1wbGlmaWNhdGlvbnMgZm9yIG1hbnkgc3RyaW5nIG9wZXJhdGlvbnMgd2hp Y2ggY3VycmVudGx5IG5lZWQgdG8gaGFuZGxlIGR1bW15IGVuY29kaW5ncyBzcGVjaWFsbHkuDQpV bmljb2RlIGVuY29kaW5ncyBsaWtlIFVURi17MTYsMzJ9e0JFLExFfSBhbHJlYWR5IGhhdmUgc3Bl Y2lhbCBiZWhhdmlvciBmb3Igc29tZSBSdWJ5IG1ldGhvZHMsIHNvIHRob3NlIGFyZSBhbHJlYWR5 IGhhbmRsZWQgc3BlY2lhbGx5IGluIHNvbWUgcGxhY2VzICh0aGV5IGFyZSB0aGUgb25seSBlbmNv ZGluZ3Mgd2l0aCBtaW5MZW5ndGggPiAxKS4NCg0KYGBgDQo+IEVuY29kaW5nLmxpc3QucmVqZWN0 KCY6YXNjaWlfY29tcGF0aWJsZT8pDQpbIzxFbmNvZGluZzpVVEYtMTZCRT4sICM8RW5jb2Rpbmc6 VVRGLTE2TEU+LA0KICM8RW5jb2Rpbmc6VVRGLTMyQkU+LCAjPEVuY29kaW5nOlVURi0zMkxFPiwN CiAjPEVuY29kaW5nOlVURi0xNiAoZHVtbXkpPiwgIzxFbmNvZGluZzpVVEYtMzIgKGR1bW15KT4s DQogIzxFbmNvZGluZzpJQk0wMzcgKGR1bW15KT4sICM8RW5jb2Rpbmc6VVRGLTcgKGR1bW15KT4s DQogIzxFbmNvZGluZzpJU08tMjAyMi1KUCAoZHVtbXkpPiwgIzxFbmNvZGluZzpJU08tMjAyMi1K UC0yIChkdW1teSk+LCAjPEVuY29kaW5nOklTTy0yMDIyLUpQLUtEREkgKGR1bW15KT4sDQogIzxF bmNvZGluZzpDUDUwMjIwIChkdW1teSk+LCAjPEVuY29kaW5nOkNQNTAyMjEgKGR1bW15KT5dDQpg YGANCg0KV2hhdCBjYW4gd2UgZG8gd2l0aCBzdWNoIGEgZHVtbXkgbm9uLUFTQ0lJLWNvbXBhdGli bGUgZW5jb2Rpbmc/DQpBbG1vc3Qgbm90aGluZyB1c2VmdWw6DQpgYGBydWJ5DQpzID0gImFiYyIu ZW5jb2RlKCJJQk0wMzciKQ0KPT4gIlx4ODFceDgyXHg4MyINCj4gcy5ieXRlcw0KPT4gWzEyOSwg MTMwLCAxMzFdDQo+IHMuY29kZXBvaW50cw0KPT4gWzEyOSwgMTMwLCAxMzFdDQo+IHMgPT0gImFi YyINCj0+IGZhbHNlDQo+ICLDqXTDqSIuZW5jb2RlKCJJQk0wMzciKQ0KPT4gIlx4NTFceEEzXHg1 MSINCmBgYA0KDQpTbyBhYm91dCB0aGUgb25seSB0aGluZyB0aGF0IHdvcmtzIHdpdGggdGhlbSBp cyBgU3RyaW5nI2VuY29kZWAuDQoNCkkgdGhpbmsgd2UgY291bGQgcHJlc2VydmUgdGhhdCBmdW5j dGlvbmFsaXR5LCBpZiBhY3R1YWxseSB1c2VkIChkb2VzIGFueW9uZSB1c2Ugb25lIG9mIHRoZXNl IDcgZHVtbXkgZW5jb2RpbmdzPyksIHRocm91Z2g6DQpgYGBydWJ5DQo+ICLDqXTDqSIuZW5jb2Rl KCJJQk0wMzciKQ0KPT4gIlx4NTFceEEzXHg1MSIgKC5lbmNvZGluZyA9PSBCSU5BUlkpDQo+ICJc eDUxXHhBM1x4NTEiLmVuY29kZSgiVVRGLTgiLCAiSUJNMDM3IikgIyBlbmNvZGUgZnJvbSBJQk0w MzcgdG8gVVRGLTgNCj0+ICLDqXTDqSIgKC5lbmNvZGluZyA9PSBVVEYtOCkNCmBgYA0KDQpUaGF0 IHdheSB0aGVyZSBpcyBubyBuZWVkIGZvciB0aG9zZSB0byBiZSBFbmNvZGluZyBpbnN0YW5jZXMs IHdlIHdvdWxkIG9ubHkgbmVlZCB0aGUgY29udmVyc2lvbiB0YWJsZXMuDQoNCkl0IGlzIGV2ZW4g YmV0dGVyIGlmIHdlIGNhbiByZW1vdmUgdGhlbSwgc28gdGhlIG5vdGlvbiBvZiAiZHVtbXkgZW5j b2RpbmdzIiBjYW4gZGlzYXBwZWFyIGNvbXBsZXRlbHkgYW5kIG5vYm9keSBuZWVkcyB0byB1bmRl cnN0YW5kIG9yIGltcGxlbWVudCB0aGVtLg0KDQojIyMgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5n KG5hbWUpDQoNClRoZSBDLUFQSSBoYXMgYHJiX2RlZmluZV9kdW1teV9lbmNvZGluZyhjb25zdCBj aGFyICpuYW1lKWAuDQpUaGlzIGNyZWF0ZXMgYSBuZXcgRW5jb2RpbmcgaW5zdGFuY2Ugd2l0aCBg ZHVtbXk/PXRydWVgLCBhbmQgaXQgaXMgYWxzbyBub24tQVNDSUktY29tcGF0aWJsZS4NClRoZXJl IHNlZW1zIHRvIGJlIG5vIHB1cnBvc2UgdG8gdGhpcyBiZXNpZGVzIHN0b3JpbmcgdGhlIG1ldGFk YXRhIG9mIGFuIGVuY29kaW5nIHdoaWNoIGRvZXMgbm90IGV4aXN0IGluIFJ1YnkuDQpUaGlzIHNl ZW1zIGEgcmVhbGx5IGV4cGVuc2l2ZS9jb21wbGV4IHdheSB0byBoYW5kbGUgdGhhdCBmcm9tIHRo ZSBWTSBwb2ludCBvZiB2aWV3IChiZWNhdXNlIGl0IGR5bmFtaWNhbGx5IGNyZWF0ZXMgYW4gRW5j b2RpbmcgYW5kIGFkZCBpdCB0byBsaXN0cy9tYXBzL2V0YykuDQpBIHNpbXBsZSByZXBsYWNlbWVu dCB3b3VsZCBiZSB0byBtYXJrIHRoZSBTdHJpbmcgYXMgQklOQVJZIGFuZCBzYXZlIHRoZSBlbmNv ZGluZyBuYW1lIGFzIGFuIGluc3RhbmNlIHZhcmlhYmxlIG9mIHRoYXQgU3RyaW5nLg0KU2luY2Ug YW55d2F5IFJ1YnkgY2FuJ3QgdW5kZXJzdGFuZCBhbnl0aGluZyBhYm91dCB0aGF0IFN0cmluZywg aXQncyBqdXN0IHJhdyBieXRlcyB0byBSdWJ5J3MgZXllcy4NCg0KIyMgU3VtbWFyeQ0KDQpJIHN1 Z2dlc3Qgd2UgZGVwcmVjYXRlIHJlcGxpY2F0ZSBhbmQgZHVtbXkgZW5jb2RpbmdzIGluIFJ1Ynkg My4yLg0KQW5kIHRoZW4gd2UgcmVtb3ZlIHRoZW0gaW4gdGhlIG5leHQgdmVyc2lvbi4NCg0KVGhp cyB3aWxsIHNpZ25pZmljYW50bHkgc2ltcGxpZnkgc3RyaW5nLXJlbGF0ZWQgbWV0aG9kcywgYW5k IHRoZSBiZWhhdmlvciBleHBvc2VkIHRvIFJ1YnkgdXNlcnMuDQoNCkl0IHdpbGwgYWxzbyBzaWdu aWZpY2FudGx5IHNwZWVkdXAgZW5jb2RpbmcgbG9va3VwIGluIENSdWJ5IChhbmQgb3RoZXIgUnVi eSBpbXBsZW1lbnRhdGlvbnMpLg0KV2l0aCBhIGZpeGVkIG51bWJlciBvZiBlbmNvZGluZ3Mgd2Ug Y2FuIGVuc3VyZSBhbGwgZW5jb2RpbmcgaW5kaWNlcyBmaXQgaW4gNyBiaXRzLCBhbmQgYEVOQ09E SU5HX0dFVGAgY2FuIGJlIHNpbXBseSBgUkJfRU5DT0RJTkdfR0VUX0lOTElORURgLg0KYGdldF9h Y3R1YWxfZW5jb2RpbmcoKWAgd2lsbCBiZSBnb25lIGFuZCBpdHMgb3ZlcmhlYWQgYXMgd2VsbC4N CmByYl9lbmNfZnJvbV9pbmRleCgpYCB3b3VsZCBiZSBqdXN0IGByZXR1cm4gZ2xvYmFsX2VuY190 YWJsZS0+bGlzdFtpbmRleF0uZW5jO2AsIGluc3RlYWQgb2YgdGhlIGV4cGVuc2l2ZSBiZWhhdmlv ciBjdXJyZW50bHkgd2l0aCBgR0xPQkFMX0VOQ19UQUJMRV9FVkFMYCB3aGljaCB0YWtlcyBhIGxv Y2sgYW5kIG1vcmUgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgUmFjdG9ycy4NCk1hbnkgY2hlY2tz IGluIHRoZXNlIG1ldGhvZHMgd291bGQgYmUgcmVtb3ZlZCBhcyB3ZWxsLg0KWWV0IGFub3RoZXIg aW1wcm92ZW1lbnQgd291bGQgYmUgdG8gbG9hZCBhbGwgZW5jb2RpbmdzIGVhZ2VybHksIHRoYXQg aXMgc21hbGwgYW5kIGZhc3QgaW4gbXkgZXhwZXJpZW5jZSwgd2hhdCBpcyBzbG93IGFuZCBiaWcg aXMgdGhlIGNvbnZlcnNpb24gdGFibGVzLCB0aGF0J2Qgc2ltcGxpZnkgYG11c3RfZW5jaW5kZXgo KWAgZnVydGhlci4NClRoZXNlIGNoYW5nZXMgd291bGQgYWZmZWN0IG1vc3QgU3RyaW5nIG1ldGhv ZHMsIHdoaWNoIHVzZQ0KYGBgDQpTVFJfRU5DX0dFVC0+Z2V0X2VuY29kaW5nIHdoaWNoIGRvZXM6 DQogIGdldF9hY3R1YWxfZW5jb2RpbmctPnJiX2VuY19mcm9tX2luZGV4IGFuZCBwb3NzaWJseSAt PmVuY19mcm9tX2luZGV4DQogIEVOQ09ESU5HX0dFVC0+UkJfRU5DT0RJTkdfR0VUX0lOTElORUQg YW5kIHBvc3NpYmx5IC0+cmJfZW5jX2dldF9pbmRleC0+ZW5jX2dldF9pbmRleF9zdHItPnJiX2F0 dHJfZ2V0DQpgYGANClNvbWUgb2YgdGhlc2UgZGV0YWlscyBhcmUgbWVudGlvbmVkIGluIGh0dHBz Oi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82MDk1I2Rpc2N1c3Npb25fcjkxNTE0OTcwOC4N ClRoZSBvdmVyaGVhZCBpcyBzbyBsYXJnZSB0aGF0IGl0IGlzIHdvcnRoIGhhbmRsaW5nIHNvbWUg aGFyZGNvZGVkIGVuY29kaW5nIGluZGljZXMgZGlyZWN0bHkgaW4gU3RyaW5nIG1ldGhvZHMuDQpU aGlzIGZlZWxzIHdyb25nLCBnZXR0aW5nIHRoZSBlbmNvZGluZyBmcm9tIGEgU3RyaW5nIHNob3Vs ZCBiZSBzaW1wbGUsIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgZmFzdC4NCg0KRnVydGhlciBvcHRpbWl6 YXRpb25zIHdpbGwgYmUgdW5sb2NrZWQgYXMgdGhlIGVuY29kaW5nIGxpc3QgYmVjb21lcyBmaXhl ZCBhbmQgaW1tdXRhYmxlLg0KRm9yIGV4YW1wbGUsIHRoZSBuYW1lLXRvLUVuY29kaW5nIG1hcCBp cyB0aGVuIGltbXV0YWJsZSBhbmQgY291bGQgdXNlIHBlcmZlY3QgaGFzaGluZy4NCklubGluZSBj YWNoaW5nIHRob3NlIGxvb2t1cHMgYWxzbyBiZWNvbWVzIGVhc2llciBhcyB0aGUgdGhlIG1hcCBj YW5ub3QgY2hhbmdlLg0KQWxzbyB0aGF0IG1hcCB3b3VsZCBubyBsb25nZXIgbmVlZCBzeW5jaHJv bml6YXRpb24sIGV0Yy4NCg0KIyMgVG8gRGVjaWRlDQoNCkVhY2ggaXRlbSBpcyBpbmRlcGVuZGVu dC4gSSB0aGluayAxICYgMiBhcmUgdmVyeSBpbXBvcnRhbnQsIDMgbGVzcyBidXQgd291bGQgYmUg bmljZS4NCg0KMS4gRGVwcmVjYXRlIGFuZCB0aGVuIHJlbW92ZSBgRW5jb2RpbmcjcmVwbGljYXRl YCBhbmQgYHJiX2RlZmluZV9kdW1teV9lbmNvZGluZygpYC4gV2l0aCB0aGF0IHRoZXJlIGlzIGEg Zml4ZWQgbnVtYmVyIG9mIGVuY29kaW5ncywgYSBsb3Qgb2Ygc2ltcGxpZmljYXRpb25zIGFuZCBt YW55IG9wdGltaXphdGlvbnMgYmVjb21lIGF2YWlsYWJsZS4gVGhleSBhcmUgdXNlZCByZXNwZWN0 aXZlbHkgaW4gb25seSAxIGdlbSBhbmQgNSBnZW1zLCBzZWUgaHR0cHM6Ly9idWdzLnJ1YnktbGFu Zy5vcmcvaXNzdWVzLzE4OTQ5I25vdGUtNA0KMi4gRGVwcmVjYXRlIGFuZCB0aGVuIHJlbW92ZSB0 aGUgZHVtbXkgVVRGLTE2IGFuZCBVVEYtMzIgZW5jb2RpbmdzLiBUaGlzIHJlbW92ZXMgdGhlIG5l ZWQgZm9yIGBnZXRfYWN0dWFsX2VuY29kaW5nKClgIHdoaWNoIGlzIGV4cGVuc2l2ZS4gVGhpcyBm dW5jdGlvbmFsaXR5IHNlZW1zIHJhcmVseSB1c2VkIGluIHByYWN0aWNlLCBhbmQgaXQgb25seSB3 b3JrcyB3aGVuIHN1Y2ggc3RyaW5ncyBoYXZlIGEgQk9NLCB3aGljaCBpcyB2ZXJ5IHJhcmUuDQoz LiBEZXByZWNhdGUgYW5kIHRoZW4gcmVtb3ZlIG90aGVyIGR1bW15IGVuY29kaW5ncywgc28gdGhl cmUgYXJlIG5vIG1vcmUgZHVtbXkgImhhbGYtaW1wbGVtZW50ZWQiIGVuY29kaW5ncyBhbmQgYWxs IGVuY29kaW5ncyBhcmUgQVNDSUktY29tcGF0aWJsZSBpbiB0ZXJtcyBvZiBjb2RlcG9pbnRzLg0K DQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCg==