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.1 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,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 7D0B11F8C8 for ; Mon, 4 Oct 2021 19:09:15 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id C2C951211FF; Tue, 5 Oct 2021 04:09:12 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 7EE3B1211F0 for ; Tue, 5 Oct 2021 04:09:10 +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; s=smtpapi; bh=kex27IHdXE0ng+U2QVyjB12mBYOgHWkWpDj8yp7Ffbc=; b=X5c4ESYIXhVU1Cb2mmhVoo0sdjODE/J2bq0qTztSIdH9mch/Nh0NCmPB160T9g3Q9Cci +u2b+o23JEB5hBgwrSPgM326rShoOHENLnf4c9MtUGJcHmsmdSmVKIGG55xsiL+aId7AjX D47JwMZYDOx0tEGifXxjyGMTcQQrdbYLY= Received: by filterdrecv-656998cfdd-k9vkv with SMTP id filterdrecv-656998cfdd-k9vkv-1-615B5154-C5 2021-10-04 19:09:08.593095009 +0000 UTC m=+1107709.378407501 Received: from herokuapp.com (unknown) by geopod-ismtpd-6-2 (SG) with ESMTP id YTSblTs0TAm5iBmNn8n6pA for ; Mon, 04 Oct 2021 19:09:08.520 +0000 (UTC) Date: Mon, 04 Oct 2021 19:09:08 +0000 (UTC) From: "ko1 (Koichi Sasada)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18239 X-Redmine-Issue-Author: peterzhu2118 X-Redmine-Sender: ko1 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: 81756 X-SG-EID: =?us-ascii?Q?YkmFGMrQnymZs=2F4gaHJnvrsFPAGAfVipS20r=2FEutHlZKBkOXJV3+2vYlfF3wrB?= =?us-ascii?Q?u+wzn1=2FYobjg0PO+JI9qcf52d9vx+pSHE27L3oc?= =?us-ascii?Q?cPfty4jxdDjaNgsnwjkkX2gArXyHeTdmEZ+Rlmy?= =?us-ascii?Q?KF6Wxn3iSEZ9FBFZbSIrgZdbpzX5FhG+LYFlapa?= =?us-ascii?Q?rrCZ8caIu7Esa+k6fw5PsVAkS3FNIcjb14osH18?= =?us-ascii?Q?ScadUl0guSVstgf0WNlyj94qGkrRHK7zeuZX7Vm?= =?us-ascii?Q?skhmDzvl56NBIk4Sz+Lng=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 105549 Subject: [ruby-core:105549] [Ruby master Feature#18239] Variable Width Allocation: Strings 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" SXNzdWUgIzE4MjM5IGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4KCgpU aGFuayB5b3UgZm9yIHlvdXIgcmVwbHkuCgpwZXRlcnpodTIxMTggKFBldGVyIFpodSkgd3JvdGUg aW4gI25vdGUtMzoKPiAtIFRoZSBSU3RyaW5nIGxheW91dCBkb2VzIG5vdCBjaGFuZ2UgbXVjaC4g VGhlIG9ubHkgYmlnIGNoYW5nZSBpcyB0aGF0IHRoZSBsZW5ndGggZm9yIGVtYmVkZGVkIHN0cmlu Z3MgaXMgbW92ZWQgZnJvbSB1c2luZyA1IGJpdHMgaW4gdGhlIGhlYWRlciB0byBhIGZpZWxkIGlu IHRoZSBSU3RyaW5nLiBUaGlzIGlzIGJlY2F1c2UgdGhlIDUgYml0cyBsaW1pdHMgdGhlIGxlbmd0 aCBvZiBhIG1heGltdW0gMzIgYnl0ZXMuCgpTbyBmbGFncyBkb2Vzbid0IGhhdmUgYSBzaXplIGFu ZCBldmVyeSBTdHJpbmcgaGFzIDEgd29yZCAoOEIgb24gNjRiaXQgQ1BVKSBsZW5ndGggZmllbGQ/ CgpodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1bGwvNDkzMy9maWxlcyNkaWZmLTZkNmUy Y2JlYzU4NzBhZDc4MWEzMGI3NjEwYTYzMWEyYjY4NTY2OTYxZmQ4OTI0YmE0YzA4YjJiNjc1ZGMx M2RSMjg4CgpBaCwgSSBzZWUuIEl0IGlzICJlbWJlZCIgYW5kIHNob3J0IGxlbmd0aCBmaWVsZCAr IGNvbnRlbnRzIGZpZWxkIChjaGFyW10pLgoKPiAtIFRoZSBzbG90IHNpemVzIGhhdmUgbm90IGNo YW5nZWQgKDQwQiwgODBCLCAxNjBCLCAzMjBCKS4gV2UgaGF2ZSBub3QgdHJpZWQgb3RoZXIgc2l6 ZXMuIE1lbW9yeSB1c2FnZSB3YXMgbm90IGEgcHJvYmxlbSBpbiBhbnkgb2YgdGhlIGJlbmNobWFy a3Mgd2UgcmFuIChpbiBtb3N0IGNhc2VzIFZXQSBoYWQgbG93ZXIgbWVtb3J5IHVzYWdlIHRoYW4g bWFzdGVyKS4gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiBvbiBzd2l0Y2hpbmcgdG8gcG93ZXJzLW9m LTIgc2l6ZXMsIHNvIHdlIG1heSByZXZpc2l0IHRoaXMgaXNzdWUgYW5kIHRyeSBtb3JlIHNpemVz LgoKSXMgaXQgZWFzeSB0byBpbmNyZWFzZS9kZWNyZWFzZSB0aGUgc2l6ZXM/IG9yIG9wdGltaXpl ZCBmb3IgNCBzaXplcz8KCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkZlYXR1cmUgIzE4MjM5OiBWYXJpYWJsZSBXaWR0aCBBbGxvY2F0aW9uOiBTdHJpbmdzCmh0dHBz Oi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODIzOSNjaGFuZ2UtOTQwMDUKCiogQXV0aG9y OiBwZXRlcnpodTIxMTggKFBldGVyIFpodSkKKiBTdGF0dXM6IE9wZW4KKiBQcmlvcml0eTogTm9y bWFsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBHaXRIdWIgUFI6 IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvaXNzdWVzLzQ5MzMKCiMgRmVhdHVyZSBkZXNj cmlwdGlvbgoKU2luY2UgbWVyZ2luZyAjMTgwNDUgd2hpY2ggaW50cm9kdWNlZCBzaXplIHBvb2xz IGluc2lkZSB0aGUgR0MgdG8gYWxsb2NhdGUgdmFyaW91cyBzaXplZCBzbG90cywgd2UndmUgYmVl biB3b3JraW5nIG9uIGV4cGFuZGluZyB0aGUgdXNhZ2Ugb2YgVldBIGludG8gbW9yZSB0eXBlcyAo YmVmb3JlIHRoaXMgcGF0Y2gsIG9ubHkgY2xhc3NlcyBhcmUgYWxsb2NhdGVkIHRocm91Z2ggVldB KS4gVGhpcyBwYXRjaCBjaGFuZ2VzIHN0cmluZ3MgdG8gdXNlIFZXQS4KCiMjIFN1bW1hcnkKCi0g VGhpcyBwYXRjaCBhbGxvY2F0ZXMgc3RyaW5ncyB1c2luZyBWV0EuCi0gU3RyaW5nIGVtYmVkZGVk IHRocm91Z2ggVldBIGFyZSBlbWJlZGRlZC4gVGhlIHBhdGNoIGNoYW5nZXMgc3RyaW5ncyB0byBz dXBwb3J0IGR5bmFtaWMgY2FwYWNpdHkgZW1iZWRkZWQgc3RyaW5ncy4KLSBXZSBkbyBub3QgaGFu ZGxlIHJlc2l6aW5nIGluIFZXQSBpbiB0aGlzIHBhdGNoIChlbWJlZGRlZCBzdHJpbmdzIHJlc2l6 ZWQgdXAgYXJlIG1vdmVkIGJhY2sgdG8gbWFsbG9jKSwgd2hpY2ggbWF5IHJlc3VsdCBpbiB3YXN0 ZWQgc3BhY2UuIEhvd2V2ZXIsIGluIGJlbmNobWFya3MsIHRoaXMgZG9lcyBub3QgYXBwZWFyIHRv IGJlIGFuIGlzc3VlLgotIFdlIHByb3Bvc2UgZW5hYmxpbmcgVldBIGJ5IGRlZmF1bHQuIFdlIGFy ZSBjb25maWRlbnQgYWJvdXQgdGhlIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2Ugb2YgdGhpcyBm ZWF0dXJlLgoKIyMgU3RyaW5nIGFsbG9jYXRpb24KClN0cmluZ3Mgd2l0aCBrbm93biBzaXplcyBh dCBhbGxvY2F0aW9uIHRpbWUgdGhhdCBhcmUgc21hbGwgZW5vdWdoIGlzIGFsbG9jYXRlZCBhcyBh biBlbWJlZGRlZCBzdHJpbmcuIEVtYmVkZGVkIHN0cmluZyBoZWFkZXJzIGFyZSBub3cgMTggYnl0 ZXMsIHNvIHRoZSBtYXhpbXVtIGVtYmVkZGVkIHN0cmluZyBsZW5ndGggaXMgbm93IDMwMiBieXRl cyAoY3VycmVudGx5IFZXQSBpcyBjb25maWd1cmVkIHRvIGFsbG9jYXRlIHVwIHRvIDMyMCBieXRl IHNsb3RzLCBidXQgY2FuIGJlIGVhc2lseSBjb25maWd1cmVkIGZvciBldmVuIGxhcmdlciBzbG90 cykuIEVtYmVkZGVkIHN0cmluZ3MgaGF2ZSB0aGVpciBjb250ZW50cyBkaXJlY3RseSBmb2xsb3cg dGhlIG9iamVjdCBoZWFkZXJzLiBUaGlzIGFpbXMgdG8gaW1wcm92ZSBjYWNoZSBwZXJmb3JtYW5j ZSBzaW5jZSB0aGUgY29udGVudHMgYXJlIG9uIHRoZSBzYW1lIGNhY2hlIGxpbmUgYXMgdGhlIG9i amVjdCBoZWFkZXJzLiBGb3Igc3RyaW5ncyB3aXRoIHVua25vd24gc2l6ZXMsIG9yIHdpdGggY29u dGVudHMgdGhhdCBhcmUgdG9vIGxhcmdlLCBpdCBmYWxscyBiYWNrIHRvIGFsbG9jYXRlIDQwIGJ5 dGUgc2xvdHMgYW5kIHN0b3JlIHRoZSBjb250ZW50cyBpbiB0aGUgbWFsbG9jIGhlYXAuCgojIyBT dHJpbmcgcmVhbGxvY2F0aW9uCgpJZiBhbiBlbWJlZGRlZCBzdHJpbmcgaXMgZXhwYW5kZWQgYW5k IGNhbiBubyBsb25nZXIgZmlsbCB0aGUgc2xvdCwgaXQgaXMgbW92ZWQgaW50byB0aGUgbWFsbG9j IGhlYXAuIFRoaXMgbWF5IG1lYW4gdGhhdCBzb21lIHNwYWNlIGluIHRoZSBzbG90IGlzIHdhc3Rl ZC4gRm9yIGV4YW1wbGUsIGlmIHRoZSBzdHJpbmcgd2FzIG9yaWdpbmFsbHkgYWxsb2NhdGVkIGlu IGEgMTYwIGJ5dGUgc2xvdCBhbmQgbW92ZWQgdG8gdGhlIG1hbGxvYyBoZWFwLCAxMjAgYnl0ZXMg b2YgdGhlIHNsb3QgaXMgd2FzdGVkIChzaW5jZSB3ZSBvbmx5IG5lZWQgNDAgYnl0ZXMgZm9yIGEg c3RyaW5nIHdpdGggY29udGVudHMgb24gdGhlIG1hbGxvYyBoZWFwKS4gVGhpcyBwYXRjaCBkb2Vz IG5vdCBhaW0gdG8gdGFja2xlIHRoaXMgaXNzdWUuIE1lbW9yeSB1c2FnZSBhbHNvIGRvZXMgbm90 IGFwcGVhciB0byBiZSBhbiBpc3N1ZSBpbiBhbnkgb2YgdGhlIGJlbmNobWFya3MuCgojIyBJbmNv bXBhdGliaWxpdHkgb2YgVldBIGFuZCBub24tVldBIGJ1aWx0IGdlbXMKCkdlbXMgd2l0aCBuYXRp dmUgZXh0ZW5zaW9ucyBidWlsdCB3aXRoIFZXQSBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCBub24t VldBIGJ1aWx0IGdlbXMgKGFuZCB2aWNlIHZlcnNhKS4gV2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBW V0EgYW5kIG5vbi1WV0EgcnViaWVzLCBnZW1zIG11c3QgYmUgcmVidWlsdC4gVGhpcyBpcyBiZWNh dXNlIHRoZSBoZWFkZXIgZmlsZSBgcnN0cmluZy5oYCBjaGFuZ2VzIGRlcGVuZGluZyBvbiB3aGV0 aGVyIGBVU0VfUlZBUkdDYCBpcyBzZXQgb3Igbm90ICh0aGUgaW50ZXJuYWwgc3RyaW5nIGltcGxl bWVudGF0aW9uIGNoYW5nZXMgd2l0aCBWV0EpLgoKIyMgRW5hYmxpbmcgVldBIGJ5IGRlZmF1bHQK CkluIHRoaXMgcGF0Y2gsIHdlIHByb3Bvc2UgZW5hYmxpbmcgVldBIGJ5IGRlZmF1bHQuIFdlIGJl bGlldmUgdGhhdCB0aGUgcGVyZm9ybWFuY2UgZGF0YSBzdXBwb3J0cyB0aGlzIChzZWUgdGhlIFti ZW5jaG1hcmsgcmVzdWx0c10oI0JlbmNobWFyay1yZXN1bHRzKSBzZWN0aW9uKS4gV2UncmUgYWxz byBjb25maWRlbnQgYWJvdXQgaXRzIHN0YWJpbGl0eS4gSXQgcGFzc2VzcyBhbGwgdGVzdHMgb24g Q0kgZm9yIHRoZSBTaG9waWZ5IG1vbm9saXRoIGFuZCB3ZSd2ZSByYW4gdGhpcyB2ZXJzaW9uIG9m IFJ1Ynkgb24gYSBzbWFsbCBwb3J0aW9uIG9mIHByb2R1Y3Rpb24gdHJhZmZpYyBpbiBhIFNob3Bp Znkgc2VydmljZSBmb3IgYWJvdXQgYSB3ZWVrICh3aGVyZSBpdCBzZXJ2ZWQgb3ZlciA1MDAgbWls bGlvbiByZXF1ZXN0cykuCgpBbHRob3VnaCBWV0EgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCB3ZSBw bGFuIG9uIHN1cHBvcnRpbmcgdGhlIGBVU0VfUlZBUkdDYCBmbGFnIGFzIGFuIGVzY2FwZSBoYXRj aCB0byBkaXNhYmxlIFZXQSB1bnRpbCBhdCBsZWFzdCBSdWJ5IDMuMSBpcyByZWxlYXNlZCAoaS5l LiB3ZSBtYXkgcmVtb3ZlIGl0IHN0YXJ0aW5nIDIwMjIpLgoKIyBCZW5jaG1hcmsgc2V0dXAKCkJl bmNobWFya2luZyB3YXMgZG9uZSBvbiBhIGJhcmUtbWV0YWwgVWJ1bnR1IG1hY2hpbmUgb24gQVdT LiBBbGwgYmVuY2htYXJrIHJlc3VsdHMgYXJlIHVzaW5nIGdsaWJjIGJ5IGRlZmF1bHQsIGV4Y2Vw dCB3aGVuIGplbWFsbG9jIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgoKYGBgCiQgdW5hbWUgLWEK TGludXggNS44LjAtMTAzOC1hd3MgIzQwfjIwLjA0LjEtVWJ1bnR1IFNNUCBUaHUgSnVuIDE3IDEz OjI1OjI4IFVUQyAyMDIxIHg4Nl82NCB4ODZfNjQgeDg2XzY0IEdOVS9MaW51eApgYGAKCmdsaWJj IHZlcnNpb246CgpgYGAKJCBsZGQgLS12ZXJzaW9uCmxkZCAoVWJ1bnR1IEdMSUJDIDIuMzEtMHVi dW50dTkuMikgMi4zMQpDb3B5cmlnaHQgKEMpIDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcg Y29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCndhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpXcml0dGVuIGJ5IFJv bGFuZCBNY0dyYXRoIGFuZCBVbHJpY2ggRHJlcHBlci4KYGBgCgpqZW1hbGxvYyB2ZXJzaW9uOgoK YGBgCiQgYXB0IGxpc3QgLS1pbnN0YWxsZWQgfCBncmVwIGplbWFsbG9jCgpXQVJOSU5HOiBhcHQg ZG9lcyBub3QgaGF2ZSBhIHN0YWJsZSBDTEkgaW50ZXJmYWNlLiBVc2Ugd2l0aCBjYXV0aW9uIGlu IHNjcmlwdHMuCgpsaWJqZW1hbGxvYy1kZXYvZm9jYWwsbm93IDUuMi4xLTF1YnVudHUxIGFtZDY0 IFtpbnN0YWxsZWRdCmxpYmplbWFsbG9jMi9mb2NhbCxub3cgNS4yLjEtMXVidW50dTEgYW1kNjQg W2luc3RhbGxlZCxhdXRvbWF0aWNdCmBgYAoKVG8gbWVhc3VyZSBtZW1vcnkgdXNhZ2Ugb3ZlciB0 aW1lLCB0aGUgW21zdGF0IHRvb2xdKGh0dHBzOi8vZ2l0aHViLmNvbS9icG93ZXJzL21zdGF0KSB3 YXMgdXNlZC4KClJ1YnkgbWFzdGVyIHdhcyBiZW5jaG1hcmtlZCBvbiBjb21taXQgWzdhZGZiMTRm NjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvY29tbWl0LzdhZGZiMTRmNjApLiBUaGUg YnJhbmNoIHdhcyByZWJhc2VkIG9uIHRvcCBvZiB0aGUgc2FtZSBjb21taXQuCgpQZXJmb3JtYW5j ZSBiZW5jaG1hcmtzIG9mIHRoaXMgYnJhbmNoIHdpdGhvdXQgVldBIHR1cm5lZCBvbiBhcmUgaW5j bHVkZWQgdG8gbWFrZSBzdXJlIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGEgcGVyZm9y bWFuY2UgcmVncmVzc2lvbiBjb21wYXJlZCB0byBtYXN0ZXIuCgojIEJlbmNobWFyayByZXN1bHRz CgojIyBTdW1tYXJ5CgotIE9uIGEgbGl2ZSwgcHJvZHVjdGlvbiBTaG9waWZ5IHNlcnZpY2UsIHdl IHNlZSBubyBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpbiByZXNwb25zZSB0aW1lcy4gSG93ZXZl ciwgVldBIGhhcyBsb3dlciBtZW1vcnkgdXNhZ2UuCi0gT24gcmFpbHNiZW5jaCwgd2Ugc2VlIGEg bWlub3IgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuIEhvd2V2ZXIsIHdlIGFsc28gc2VlIHdvcnNl IHAxMDAgcmVzcG9uc2UgdGltZXMuIFRoZSByZWFzb24gaXMgYW5hbHl6ZWQgaW4gdGhlIFtyYWls c2JlbmNoXSgjcmFpbHNiZW5jaCkgc2VjdGlvbiBiZWxvdy4gVldBIHVzZXMgbW9yZSBtZW1vcnkg d2hlbiB1c2luZyBnbGliYywgYnV0IHVzZXMgYW4gZXF1YWwgYW1vdW50IG9mIG1lbW9yeSBmb3Ig amVtYWxsb2MuCi0gT24gcmRvYyBnZW5lcmF0aW9uLCBWV0EgdXNlcyBzaWduaWZpY2FudGx5IGxl c3MgbWVtb3J5IGZvciBhIHNtYWxsIHJlZHVjdGlvbiBpbiBwZXJmb3JtYW5jZS4KLSBNaWNyb2Jl bmNobWFya3Mgc2hvdyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBmb3Igc3Ry aW5ncyB0aGF0IGFyZSBlbWJlZGRlZCBpbiBWV0EgKGUuZy4gYFN0cmluZyM9PWAgaXMgc2lnbmlm aWNhbnRseSBmYXN0ZXIpLgoKIyMgU2hvcGlmeSBwcm9kdWN0aW9uCgpXZSBkZXBsb3llZCB0aGlz IGJyYW5jaCB3aXRoIFZXQSBlbmFibGVkIHZzLiBSdWJ5IG1hc3RlciBjb21taXQgN2FkZmIxNGY2 MCBvbiBhIHNtYWxsIHBvcnRpb24gb2YgbGl2ZSwgcHJvZHVjdGlvbiB0cmFmZmljIGZvciBhIFNo b3BpZnkgd2ViIGFwcGxpY2F0aW9uIHRvIHRlc3QgcmVhbC13b3JsZCBwZXJmb3JtYW5jZS4gVGhp cyBkYXRhIHdhcyBjb2xsZWN0ZWQgZm9yIGEgcGVyaW9kIG9mIDEgZGF5IHdoZXJlIHRoZXkgZWFj aCBzZXJ2ZWQgYXBwcm94aW1hdGVseSA4NCBtaWxsaW9uIHJlcXVlc3RzLiBBdmVyYWdlLCBtZWRp YW4sIHA5MCwgcDk5IHJlc3BvbnNlIHRpbWVzIHdlcmUgd2l0aGluIHRoZSBtYXJnaW4gb2YgZXJy b3Igb2YgZWFjaCBvdGhlciAoPDElIGRpZmZlcmVuY2UpLiBIb3dldmVyLCBWV0EgY29uc2lzdGVu dGx5IGhhZCBsb3dlciBtZW1vcnkgdXNhZ2UgKFJlc2lkZW50IFNldCBTaXplKSBieSAwLjk2eC4K CiMjIHJhaWxzYmVuY2gKCkZvciByYWlsc2JlbmNoLCB3ZSByYW4gdGhlIFtyYWlsc2JlbmNoIGJl bmNobWFya10oaHR0cHM6Ly9naXRodWIuY29tL2swa3VidW4vcmFpbHNiZW5jaC9ibG9iL21hc3Rl ci9iaW4vYmVuY2gpLiBGb3IgYm90aCB0aGUgcGVyZm9ybWFuY2UgYW5kIG1lbW9yeSBiZW5jaG1h cmtzLCAyNSBydW5zIHdlcmUgY29uZHVjdGVkIGZvciBlYWNoIGNvbWJpbmF0aW9uIChicmFuY2gg KyBnbGliYywgbWFzdGVyICsgZ2xpYmMsIGJyYW5jaCArIGplbWFsbG9jLCBtYXN0ZXIgKyBqZW1h bGxvYykuCgpJbiB0aGlzIGJlbmNobWFyaywgVldBIHN1ZmZlcnMgZnJvbSBwb29yIHAxMDAuIFRo aXMgaXMgYmVjYXVzZSByYWlsc2JlbmNoIGlzIHJlbGF0aXZlbHkgc21hbGwgKG9ubHkgb25lIGNv bnRyb2xsZXIgYW5kIG1vZGVsKSwgc28gdGhlcmUgYXJlIG5vdCBtYW55IHBhZ2VzIGluIGVhY2gg c2l6ZSBwb29scy4gSW5jcmVtZW50YWwgbWFya2luZyByZXF1aXJlcyB0aGVyZSB0byBiZSBtYW55 IHBvb2xlZCBwYWdlcywgYnV0IGJlY2F1c2UgdGhlcmUgYXJlIG5vdCBhIGxvdCBvZiBwb29sZWQg cGFnZXMgKGR1ZSB0byB0aGUgc21hbGwgaGVhcCBzaXplKSwgaXQgaGFzIHRvIG1hcmsgYSB2ZXJ5 IGxhcmdlIG51bWJlciBvZiBvYmplY3RzIGF0IGV2ZXJ5IHN0ZXAuIFdlIGRvIG5vdCBleHBlY3Qg dGhpcyB0byBiZSBhIHByb2JsZW0gZm9yIHJlYWwgYXBwcyB3aXRoIGEgbGFyZ2VyIG51bWJlciBv ZiBvYmplY3RzIGFsbG9jYXRlZCBhdCBib290LCBhbmQgdGhpcyBpcyBjb25maXJtZWQgYnkgbWV0 cmljcyBjb2xsZWN0ZWQgaW4gdGhlIFtTaG9waWZ5IHByb2R1Y3Rpb24gYXBwbGljYXRpb25dKCNT aG9waWZ5LXByb2R1Y3Rpb24pLgoKIyMjIGdsaWJjCgpVc2luZyBnbGliYywgVldBIGlzIGFib3V0 IDEuMDE4eCBmYXN0ZXIgdGhhbiBtYXN0ZXIgaW4gcmFpbHNiZW5jaCBpbiB0aHJvdWdocHV0IChS UFMpLgoKYGBgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rCnwgICAgICAgICAgIHwgQnJhbmNoIChWV0Egb24pIHwgQnJhbmNoIChWV0Eg b2ZmKSB8IE1hc3RlciB8CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rCnwgUlBTICAgICAgIHwgNzQwLjkyICAgICAgICAgIHwgNzIyLjk3 ICAgICAgICAgICB8IDc0NS4zMSB8CnwgcDUwIChtcykgIHwgMS4zMSAgICAgICAgICAgIHwgMS4z NyAgICAgICAgICAgICB8IDEuMzMgICB8CnwgcDkwIChtcykgIHwgMS40MCAgICAgICAgICAgIHwg MS40NSAgICAgICAgICAgICB8IDEuNDMgICB8CnwgcDk5IChtcykgIHwgMi4zNiAgICAgICAgICAg IHwgMS44MCAgICAgICAgICAgICB8IDEuNzggICB8CnwgcDEwMCAobXMpIHwgMjEuMzggICAgICAg ICAgIHwgMTcuMjggICAgICAgICAgICB8IDE1LjE1ICB8CistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rCmBgYAoKIVtdKGh0dHBzOi8vaS5p bWd1ci5jb20vOXlKM2ZPNS5wbmcpCgpBdmVyYWdlIG1heCBtZW1vcnkgdXNhZ2UgZm9yIFZXQTog MTA0LjgyIE1CCgpBdmVyYWdlIG1heCBtZW1vcnkgdXNhZ2UgZm9yIG1hc3RlcjogMTAxLjE3IE1C CgpWV0EgdXNlcyAxLjA0eCBtb3JlIG1lbW9yeS4KCiMjIyBqZW1hbGxvYwoKVXNpbmcgZ2xpYmMs IFZXQSBpcyBhYm91dCAxLjA2eCBmYXN0ZXIgdGhhbiBtYXN0ZXIgaW4gcmFpbHNiZW5jaCBpbiBS UFMuCgpgYGAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSsKfCAgICAgICAgICAgfCBCcmFuY2ggKFZXQSBvbikgfCBCcmFuY2ggKFZXQSBv ZmYpIHwgTWFzdGVyIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSsKfCBSUFMgICAgICAgfCA3ODEuMjEgICAgICAgICAgfCA3NDIuMTIg ICAgICAgICAgIHwgNzM5LjA0IHwKfCBwNTAgKG1zKSAgfCAxLjI1ICAgICAgICAgICAgfCAxLjMx ICAgICAgICAgICAgIHwgMS4zMCAgIHwKfCBwOTAgKG1zKSAgfCAxLjMyICAgICAgICAgICAgfCAx LjM5ICAgICAgICAgICAgIHwgMS4zOCAgIHwKfCBwOTkgKG1zKSAgfCAyLjE1ICAgICAgICAgICAg fCAyLjUzICAgICAgICAgICAgIHwgNC40MSAgIHwKfCBwMTAwIChtcykgfCAyMS4xMSAgICAgICAg ICAgfCAxNi42MCAgICAgICAgICAgIHwgMTUuNzUgIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSsKYGBgCgohW10oaHR0cHM6Ly9pLmlt Z3VyLmNvbS9ObHRicXEwLnBuZykKCkF2ZXJhZ2UgbWF4IG1lbW9yeSB1c2FnZSBmb3IgVldBOiAx MDIuNjggTUIKCkF2ZXJhZ2UgbWF4IG1lbW9yeSB1c2FnZSBmb3IgbWFzdGVyOiAxMDMuMTQgTUIK ClZXQSB1c2VzIDEuMDB4IGxlc3MgbWVtb3J5LgoKIyMgcmRvYyBnZW5lcmF0aW9uCgpJbiByZG9j IGdlbmVyYXRpb24sIHdlIHNlZSBzaWduaWZpY2FudCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9uIGF0 IHRoZSBjb3N0IG9mIHNtYWxsIHBlcmZvcm1hbmNlIHJlZHVjdGlvbi4KCiMjIyBnbGliYwoKYGBg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSsKfCAgICAgICAgICAgfCBCcmFuY2ggKFZXQSBvbikgfCBCcmFuY2gg KFZXQSBvZmYpIHwgTWFzdGVyIHwgVldBIHNwZWVkdXAgfAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgVGlt ZSAocykgIHwgMTYuNjggICAgICAgICAgIHwgMTYuMDggICAgICAgICAgICB8IDE1Ljg3ICB8IDAu OTV4ICAgICAgIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKwpgYGAKCiFbXShodHRwczovL2kuaW1ndXIuY29t L0hKQ3Rvd1MucG5nKQoKQXZlcmFnZSBtYXggbWVtb3J5IHVzYWdlIGZvciBWV0E6IDI5NS4xOSBN QgoKQXZlcmFnZSBtYXggbWVtb3J5IHVzYWdlIGZvciBtYXN0ZXI6IDM2NS4wNiBNQgoKVldBIHVz ZXMgMC44MXggbGVzcyBtZW1vcnkuCgojIyMgamVtYWxsb2MKCmBgYAorLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r CnwgICAgICAgICAgIHwgQnJhbmNoIChWV0Egb24pIHwgQnJhbmNoIChWV0Egb2ZmKSB8IE1hc3Rl ciB8IFZXQSBzcGVlZHVwIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKwp8IFRpbWUgKHMpICB8IDE2LjM0ICAg ICAgICAgICB8IDE1LjY0ICAgICAgICAgICAgfCAxNS41MSAgfCAwLjk1eCAgICAgIHwKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tKwpgYGAKCiFbXShodHRwczovL2kuaW1ndXIuY29tL2xyZFV4WHcucG5nKQoKQXZl cmFnZSBtYXggbWVtb3J5IHVzYWdlIGZvciBWV0E6IDI4MS4xNiBNQgoKQXZlcmFnZSBtYXggbWVt b3J5IHVzYWdlIGZvciBtYXN0ZXI6IDMxNi40OSBNQgoKVldBIHVzZXMgMC44OXggbGVzcyBtZW1v cnkuCgojIyBMaXF1aWQgYmVuY2htYXJrcwoKRm9yIHRoZSBsaXF1aWQgYmVuY2htYXJrcywgd2Ug cmFuIHRoZSBbbGlxdWlkIGJlbmNobWFya10oaHR0cHM6Ly9naXRodWIuY29tL1Nob3BpZnkvbGlx dWlkL2Jsb2IvbWFzdGVyL3BlcmZvcm1hbmNlL2JlbmNobWFyay5yYikgYXZlcmFnZWQgb3ZlciA1 IHJ1bnMgZWFjaC4gV2Ugc2VlIHRoYXQgVldBIGlzIGZhc3RlciBhY3Jvc3MgdGhlIGJvYXJkLgoK YGBgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAgICAgICAgIHwg QnJhbmNoIChWV0Egb24pIHwgQnJhbmNoIChWV0Egb2ZmKSB8IE1hc3RlciB8IFZXQSBzcGVlZHVw IHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgUGFyc2UgKGkvcykgICAgICAgICAgfCA0 MC40MCAgICAgICAgICAgfCAzOC40NCAgICAgICAgICAgIHwgMzkuNDcgIHwgMS4wMnggICAgICB8 CnwgUmVuZGVyIChpL3MpICAgICAgICAgfCAxMjYuNDcgICAgICAgICAgfCAxMjEuOTcgICAgICAg ICAgIHwgMTIxLjIwIHwgMS4wNHggICAgICB8CnwgUGFyc2UgJiBSZW5kZXIgKGkvcykgfCAyOC44 MSAgICAgICAgICAgfCAyNy41MiAgICAgICAgICAgIHwgMjguMDIgIHwgMS4wM3ggICAgICB8Cist LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKwpgYGAKCiMjIE1pY3JvYmVuY2htYXJrcwoKVGhlc2Ug bWljcm9iZW5jaG1hcmtzIGFyZSB2ZXJ5IGZhdm91cmFibGUgZm9yIFZXQSBzaW5jZSB0aGUgc3Ry aW5ncyBjcmVhdGVkIGhhdmUgYSBsZW5ndGggb2YgNzEsIHNvIHRoZXkgYXJlIGVtYmVkZGVkIGlu IFZXQSBhbmQgYWxsb2NhdGVkIG9uIHRoZSBtYWxsb2MgaGVhcCBmb3IgbWFzdGVyLgoKYGBgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAgICAgICB8IEJyYW5jaCAo VldBIG9uKSB8IEJyYW5jaCAoVldBIG9mZikgfCBNYXN0ZXIgIHwgVldBIHNwZWVkdXAgfAorLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKwp8IFN0cmluZyM9PSAoaS9zKSAgICB8IDEuODA2ayAgICAg ICAgICB8IDEuMzM0ayAgICAgICAgICAgfCAxLjMzN2sgIHwgMS4zNXggICAgICAgfAp8IFN0cmlu ZyN0aW1lcyAoaS9zKSB8IDYuMDEwTSAgICAgICAgICB8IDUuMjM4TSAgICAgICAgICAgfCA1LjI0 N00gIHwgMS4xNXggICAgICAgfAp8IFN0cmluZyNbXT0gKGkvcykgICB8IDEuMDMxayAgICAgICAg ICB8IDg2My44MTYgICAgICAgICAgfCA4OTcuOTE1IHwgMS4xNXggICAgICAgfAorLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKwpgYGAKCnt7Y29sbGFwc2UoQmVuY2htYXJrIHNvdXJjZSBjb2RlKQoK YGBgcnVieQpyZXF1aXJlICJidW5kbGVyL2lubGluZSIKZ2VtZmlsZSBkbwogIHNvdXJjZSAiaHR0 cHM6Ly9ydWJ5Z2Vtcy5vcmciCiAgZ2VtICJiZW5jaG1hcmstaXBzIgplbmQKCkNPVU5UID0gMTBf MDAwCgpzdHJzMSA9IFtdCnN0cnMyID0gW10KCm5pbmUgPSAiOSIKCkNPVU5ULnRpbWVzIGRvCiAg c3RyczEgPDwgWyoiQSIuLiJaIiwgKiIwIi4uIjkiXS5qb2luKCIgIikKICBzdHJzMiA8PCBbKiJB Ii4uIloiLCAqIjAiLi4iOSJdLmpvaW4oIiAiKQplbmQKCkJlbmNobWFyay5pcHMgZG8gfHh8CiAg eC5yZXBvcnQoIlN0cmluZyM9PSIpIGRvIHx0aW1lc3wKICAgIGkgPSAwCiAgICB3aGlsZSBpIDwg dGltZXMKICAgICAgQ09VTlQudGltZXMgeyB8aXwgc3RyczFbaV0gPT0gc3RyczJbaV0gfQogICAg ICBpICs9IDEKICAgIGVuZAogIGVuZAoKICB4LnJlcG9ydCgiU3RyaW5nI3RpbWVzIikgZG8gfHRp bWVzfAogICAgaSA9IDAKICAgIHdoaWxlIGkgPCB0aW1lcwogICAgICAiYSIgKiAxMDAKICAgICAg aSArPSAxCiAgICBlbmQKICBlbmQKCiAgeC5yZXBvcnQoIlN0cmluZyNbXT0iKSBkbyB8dGltZXN8 CiAgICBpID0gMAogICAgd2hpbGUgaSA8IHRpbWVzCiAgICAgIHN0cnMxLmVhY2ggeyB8c3RyfCBz dHJbLTFdID0gbmluZSB9CiAgICAgIGkgKz0gMQogICAgZW5kCiAgZW5kCmVuZApgYGAKfX0KCgoK LS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwo=