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.7 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_PASS,UNPARSEABLE_RELAY shortcircuit=no autolearn=ham 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 3016E1F403 for ; Sat, 8 Oct 2022 14:27:26 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.b="KPuYXuZm"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 94EE1120A76; Sat, 8 Oct 2022 23:27:21 +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 22B60120A50 for ; Sat, 8 Oct 2022 23:27:18 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=s1; bh=7To58e5EJUgzre9p/YmjPDrHGvGtjXvSoadLhY/UVCg=; b=KPuYXuZmm6dUaZ48JT4a+xI7SXILf6pdqk7w495CL2LeTeJDyH7hNGLAWuHmZh6Hzkqv 4wbHvcl/KXXWEAuVjjdBBKVVJDakzYdCIN/qj+x+7J/UewcUHqUSywPFCJsYLixN+R6Ndl oSNSd/j1gePGq4oQLkV/lA4VAxP6xPd/FwRIwdO8qku4zeadQoVA4wZlVMZsPfdwM73m5e kyRyf7xs83KFgTRAnpbTLD1c5Q6MG+Y6bpS7AoPfbPE5/z6YSwDQGqu1tgP9y3p6bKtQ6q UXV3Xtz1hLqY9pTsuUEQ/1nDaP3G0kdI49YAytI+7vtcVR6j6dfFBMibVOj9fkGg== Received: by filterdrecv-b56db8d66-j26j2 with SMTP id filterdrecv-b56db8d66-j26j2-1-634188BA-22 2022-10-08 14:27:06.887528366 +0000 UTC m=+923893.485465770 Received: from herokuapp.com (unknown) by geopod-ismtpd-3-6 (SG) with ESMTP id hLSbIIR9RSaHZeR_oZ8Gig for ; Sat, 08 Oct 2022 14:27:06.780 +0000 (UTC) Date: Sat, 08 Oct 2022 14:27:06 +0000 (UTC) From: "shioyama (Chris Salzberg)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 19024 X-Redmine-Issue-Author: shioyama X-Redmine-Sender: shioyama 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: 86696 X-SG-EID: =?us-ascii?Q?2eXjFJg7SJ5y3z7=2FYZLzXiX0MH8ZxaRPe+ZjMibzxKHc16mJTtFOJX09zPdTSg?= =?us-ascii?Q?i7RAdHtyRFyjpk4L96iTT9m5Mpw0LXz5lR9wlty?= =?us-ascii?Q?qBqkXlie7KSSv94La3G2otdCF0s=2FHnNfHcA9s1h?= =?us-ascii?Q?u6msW5RFkMFibsl=2FfOjp266D4DUpiyYdMe0z8jF?= =?us-ascii?Q?aGvDRf3wGtNitJCx2o2KrTM048HJlQh2OqWIDyj?= =?us-ascii?Q?fgsB3Ai4elWjoMPXXL2E7R+qLEPn518Mgi0JRWA?= =?us-ascii?Q?ULod2bNh4D6vRWVvwjUeA=3D=3D?= To: ruby-core@neon.ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 110238 Subject: [ruby-core:110238] [Ruby master Feature#19024] Proposal: Import Modules 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" SXNzdWUgIzE5MDI0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgc2hpb3lhbWEgKENocmlzIFNhbHpiZXJn KS4KCgpCZWZvcmUgSSBzdGFydCwgSSdkIGxpa2UgdG8gcHV0IGFzaWRlIHRoZSBwcm9ibGVtIG9m IHRyYW5zaXRpdmUgYHJlcXVpcmVgIGFuZCBvZiBjb21waWxlZCBuYXRpdmUgZXh0ZW5zaW9ucyBm b3IgYSBtb21lbnQuIFRoZXNlIGFyZSB0aGUgbW9zdCBjb250ZW50aW91cyBwb2ludHMgb2YgdGhp cyBwcm9wb3NhbCwgYW5kIEkgbm93IHJlZ3JldCBtYWtpbmcgdGhlbSBzbyBjZW50cmFsIGJlY2F1 c2UgdGhleSBhcmUgbm90IGFjdHVhbGx5IGVzc2VudGlhbC4KClJlYWRpbmcgdGhlIGZlZWRiYWNr IGhlcmUsIEkgaGF2ZSBjb21lIHRvIHJlYWxpemUgdGhhdCB0aGUgZGlzdGluY3Rpb24gYmV0d2Vl biAicGFja2FnZXMiIGFuZCAiaW1wb3J0cyIgaXMgdGhlIG1vcmUgaW1wb3J0YW50IHBvaW50LCBz byBJJ20gZ29pbmcgdG8gZm9jdXMgb24gdGhhdC4KCj4gSW4gb3JkZXIgdG8gdW5kZXJzdGFuZCB0 aGUgZ29hbCBkZXNjcmlwdGlvbiAiaXNvbGF0ZSBjb21wb25lbnRzIiwgaXQgd291bGQgaGVscCBt ZSBpZiB5b3UgY291bGQgZGVzY3JpYmUgb25lIGNvbmNyZXRlIHdheSB0byB1c2UgdGhpcyBpZGVh IGluIGFuIGFwcGxpY2F0aW9uLCBhbmQgdGhhdCBkZXNjcmlwdGlvbiBzaG91bGQgY292ZXIgdGhl IGltcGxpY2F0aW9ucyBmb3IgdW5yZWxhdGVkIDNyZC1wYXJ0eSBnZW1zLgoKTGV0IG1lIHN0YXJ0 IGJ5IGNsYXJpZnlpbmcgdGhlIHdvcmQgImNvbXBvbmVudHMiIGhlcmUsIGJlY2F1c2UgaXQgbWF5 IG5vdCBoYXZlIGJlZW4gdGhlIGJlc3QgY2hvaWNlIG9mIHdvcmQgb24gbXkgcGFydC4KCkkgc2Vl IHRoZSBuYW1lc3BhY2UgcHJvYmxlbSBoZXJlIGFzIG9uZSBvZiBzY2FsaW5nIGluIHR3byBkaWZm ZXJlbnQgInNwYWNlcyIgb2YgY29tcG9uZW50czoKCjEuIFRoZSBzcGFjZSBvZiBjb2RlIGxpdmlu ZyB0b2dldGhlciBpbiBhIHNpbmdsZSBhcHBsaWNhdGlvbgoyLiBUaGUgc3BhY2Ugb2YgY29kZSBz aGFyZWQgYmV0d2VlbiBhbGwgYXBwbGljYXRpb25zIChnZW1zKQoKSSB3YW50IHRvIGZvY3VzIG9u IGhvdyB0d28gY29uY2VwdHMsIGVuY2Fwc3VsYXRpb24gYW5kIG5hbWVzcGFjaW5nLCByZWxhdGUg dG8gc2NhbGluZyBjaGFsbGVuZ2VzIGluIHRoZXNlIHR3byBzcGFjZXMuIFRoYXQgd2lsbCBtb3Rp dmF0ZSB0aGUgcHJvcG9zYWwgSSd2ZSBwcmVzZW50ZWQgaGVyZS4KCkVuY2Fwc3VsYXRpb24gYW5k IG5hbWVzcGFjaW5nIGFyZSBkaXJlY3RseSByZWxhdGVkOiBSdWJ5J3MgbWVjaGFuaXNtIGZvciBl bmNhcHN1bGF0aW9uIF9pc18gbmFtZXNwYWNpbmcuIFlvdSBuYW1lIHNvbWV0aGluZyBpbiBhIGZp bGUgYW5kIGRlZmluZSB3aGF0IHlvdSB3YW50IHVuZGVyIGl0LCBhbmQgaG9wZSBub2JvZHkgcmVh Y2hlcyBpbnRvIHRoYXQgbW9kdWxlIG5hbWVzcGFjZSB3aGVuIHRoZXkgc2hvdWxkbid0LiBZb3Ug aGF2ZSBgcHJpdmF0ZV9jb25zdGFudGAgYW5kIHRoYXQncyBhYm91dCBpdC4KClRoZSBmYWN0IHRo YXQgbmFtZXNwYWNpbmcgaXMgdGhlIG1haW4gbWVjaGFuaXNtIHRvIGVuZm9yY2UgZW5jYXBzdWxh dGlvbiBpcyBwcm9ibGVtYXRpYyBpbiBteSBvcGluaW9uIGJlY2F1c2UgaXQgZnVuZGFtZW50YWxs eSBtaXNhbGlnbnMgdHdvIHZlcnkgaW1wb3J0YW50IGluY2VudGl2ZXMsIG9uZSBuYXR1cmFsIGFu ZCBvbmUgdGhhdCB3ZSB3YW50IHRvIGNyZWF0ZSAoYm90aCBpbiBhcHBsaWNhdGlvbiBjb2RlIGFu ZCBpbiBnZW0gY29kZSkuCgpUaGUgZmlyc3QgdGhpbmcgdGhhdCBpcyBuYXR1cmFsbHkgaW5jZW50 aXZpemVkIChieSB0aGUgZWZmb3J0IGl0IHRha2VzIHRvIGRvIGl0KSBpcyAqKnRvIHdyaXRlIGxl c3MgY29kZSoqLCBwYXJ0aWN1bGFybHkgYm9pbGVycGxhdGUgY29kZS4gSXQncyBtdWNoIGVhc2ll ciB0byB3cml0ZSBgUHJvZHVjdGAgdGhhbiBpdCBpcyB0byB3cml0ZSBgTWVyY2hhbmRpc2luZzo6 UHJvZHVjdGAsIGFuZCBtdWNoIGVhc2llciB0byBub3Qgd3JhcCB5b3VyIGdlbSBjb2RlIGluIGBt b2R1bGUgTWVyY2hhbmRpc2luZ2AgdGhhbiBpdCBpcyB0byB3cmFwIGl0LiBUaGUgaW50ZXJwcmV0 ZXIgbWF5IHRyZWF0IHRoZXNlIHJvdWdobHkgdGhlIHNhbWUgd2F5LCBidXQgaHVtYW5zIHdpbGwg c2VlIHRoZW0gcXVpdGUgZGlmZmVyZW50bHkgYW5kIG5hdHVyYWxseSBwcmVmZXIgdGhlIGZvcm1l ciBvdmVyIHRoZSBsYXR0ZXIuCgpUaGUgc2Vjb25kIHRoaW5nIHRoYXQgd2UgX3dhbnRfIHRvIGlu Y2VudGl2aXplIGlzICoqdG8gZ3JvdXAgcmVsYXRlZCBjb2RlIHRvZ2V0aGVyKiouICBBbmQgYmVj YXVzZSBuYW1pbmcgX2lzXyBlbmNhcHN1bGF0aW5nLCBncm91cGluZyByZXF1aXJlcyBuYW1lc3Bh Y2luZzogdGhlIG1lcmNoYW5kaXNpbmcgY29uY2VwdCBvZiAicHJvZHVjdCIgc2hvdWxkIGJlIG5h bWVkIGBNZXJjaGFuZGlzaW5nOjpQcm9kdWN0YCBhbmQgbm90IGBQcm9kdWN0YC4gTW9yZW92ZXIs IGFzIGEgdGF4b25vbXkgb2YgY29uY2VwdHMgZ3Jvd3MsIHdlIG5lZWQgZnVydGhlciBzdWJkaXZp c2lvbnMsIHdoaWNoIG1lYW5zIGRlZXBlciBuYW1lc3BhY2luZy4KClNvICoqaW5jZW50aXZlcyBh cmUgaW4gZGlyZWN0IG9wcG9zaXRpb24qKjogaW4gb3JkZXIgdG8gX2RvIHRoZSByaWdodCB0aGlu Z18sIHlvdSBuZWVkIHRvIGJlIHZlcnkgY29uc2NpZW50aW91cyB0byB3cmFwIGFsbCB5b3VyIGNv ZGUgaW4gdGhlIGFwcHJvcHJpYXRlIGxpdGVyYWwgbmFtZXNwYWNlLCBldmVuIHRob3VnaCB0aGUg bmF0dXJhbCBtb3RpdmF0aW9uIGlzIF9ub3RfIHRvIGRvIHRoYXQuIFRoaXMgcHJvYmxlbSBvbmx5 IGdldHMgd29yc2UgYXMgYSBjb2RlYmFzZSBncm93czogZG8gd2UgZ3JvdXAgIkV4dGVybmFsIFBh eW1lbnQgQVBJIGNsaWVudHMiIHRvZ2V0aGVyIHVuZGVyIGBQYXltZW50czo6QXBpQ2xpZW50c2Ag b3IganVzdCB1bmRlciBgUGF5bWVudHNgPyBHcm91cGluZyBjb2RlIGluIGEgbmF0dXJhbCB3YXkg cmVxdWlyZXMgc2FjcmlmaWNpbmcgY29udmVuaWVuY2UuCgpUaGlzIGlzIGEgdGVycmlibGUgdHJh ZGVvZmYuIFRoZSByZWFsaXR5IGlzIHRoYXQgaG93ZXZlciBtdWNoIHlvdSBjYW4gdHJ5IHRvIGVu Y291cmFnZSAiZG9pbmcgdGhlIHJpZ2h0IHRoaW5nIiwgeW91IHdpbGwgYWx3YXlzIGJlIGZpZ2h0 aW5nIGEgbG9zaW5nIGJhdHRsZS4gKEkgc2hvdWxkIGtub3csIEknbSBmaWdodGluZyB0aGlzIGJh dHRsZSBldmVyeSBkYXkhKSBBbmQgdGhpcyBpcyBhIGJhdHRsZSB3aGljaCBJIGJlbGlldmUgaXMg dW5uZWNlc3NhcnksIGJlY2F1c2UgdGhlIGxpdGVyYWwgbmFtZXNwYWNlIGlzIG1vc3RseSByZWR1 bmRhbnQ7IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYWxyZWFkeSBzZXJ2ZXMgdG8gc2lnbmFsIGdyb3Vw aW5nLgoKVGhlICJwYWNrYWdpbmciIGFwcHJvYWNoLCBieSB3aGljaCBJIG1lYW4gd2hhdCBQYWNr d2VyayBkb2VzLCBlbmZvcmNlcyBib3VuZGFyaWVzIHdpdGggYSBzdGljaywgYnV0IGl0IGRvZXMg bm90IGZpeCB0aGlzIHByb2ZvdW5kIG1pc2FsaWdubWVudC4gSW4gZmFjdCwgaXQgZW50cmVuY2hl cyBsaXRlcmFsIG5hbWVzcGFjZXMgYXMgdGhlIGd1YXJkaWFuIG9mIGJvdW5kYXJpZXMsIHdoaWNo IEkgdGhpbmsgaXMgZnVuZGFtZW50YWxseSB0aGUgd3JvbmcgYXBwcm9hY2guCgo+IEkgYmVsaWV2 ZSB5b3VyIHBhaW4gcG9pbnQgaXMgdGhhdCBSdWJ5IGRvZXMgbm90IGhhdmUgZm9ybWFsIG5hbWVz cGFjZXMsIGFuZCB3ZSBzaGFyZSBpdC4KClllcywgYnV0IHRoZXJlIGlzIGEgbW9yZSBzdWJ0bGUg cG9pbnQgdGhhdCBJJ3ZlIHNvIGZhciBiZWVuIHVuc3VjY2Vzc2Z1bCBhdCBjb252ZXlpbmcsIHBh cnRseSBiZWNhdXNlIG9ubHkgaW4gd3JpdGluZyB0aGlzIGhhdmUgSSBjb21lIHRvIHNlZSBpdCBj bGVhcmx5IG15c2VsZi4KClRoZSBwb2ludHMgSSBtYWRlIGFib3ZlIGFyZSBhYm91dCBfbGl0ZXJh bF8gbmFtZXNwYWNlcywgYnkgd2hpY2ggSSBtZWFuIG5hbWVzcGFjZXMgdGhhdCBhcmUgbGl0ZXJh bGx5IHdyaXR0ZW4gaW50byB0aGUgZmlsZS4gQ29udHJhc3QgdGhpcyB3aXRoIHRoZSBjYXNlIG9m IGBsb2FkICJmb28ucmIiLCBtb2RgLCB3aGVyZSBgbW9kYCBhY3RzIGFzIG5hbWVzcGFjZSBpbiBg Zm9vLnJiYCBidXQgaXMgX2ltcGxpY2l0Xy4gKipJbiB0aGlzIGNhc2UsIHRoZSBpbmNlbnRpdmVz IGFib3ZlIGNhbiBpbiBmYWN0IGJlIGFsaWduZWQuKioKCkBmeG4gVG8gZ2V0IGJhY2sgdG8geW91 ciBvcmlnaW5hbCBxdWVzdGlvbiwgbGV0J3MgYXNzdW1lIHRoaXMgaXMgX29wdC1pbl8sIGFuZCB0 aGF0IGl0IGRvZXMgbm90IGFwcGx5IHRvIGNvbXBpbGVkIGV4dGVuc2lvbnMgKGdlbXMgdGhhdCB3 YW50IHRvIG9wdC1pbiB3b3VsZCBiZSBhYmxlIHRvIGRvIHNvIGhvd2V2ZXIpLiBJIHRoaW5rIHRo b3NlIGFyZSB0aGUga2V5IHBvaW50cyB0aGF0IG1ha2VzIHRoaXMgY29udGVudGlvdXMuCgpTbyB3 aXRoIHRob3NlIG91dCBvZiB0aGUgd2F5LCB3aGF0IEkgd2FudCBpcyB0aGF0IGluc3RlYWQgb2Yg dGhpczoKCmBgYHJ1YnkKIyBwYXltZW50cy9hcGlfY2xpZW50cy9mb29fY2xpZW50LnJiCnJlcXVp cmUgIm15X2NsaWVudF9nZW0iCgptb2R1bGUgUGF5bWVudHMKICBtb2R1bGUgQXBpQ2xpZW50cwog ICAgY2xhc3MgRm9vQ2xpZW50IDwgTXlDbGllbnRHZW06OkFwaUNsaWVudAogICAgICAjIC4uLgog ICAgZW5kCiAgZW5kCmVuZAoKIyBwYXltZW50cy9hcGlfY2xpZW50cy9iYXJfY2xpZW50LnJiCnJl cXVpcmUgIm15X2NsaWVudF9nZW0iCgptb2R1bGUgUGF5bWVudHMKICBtb2R1bGUgQXBpQ2xpZW50 cwogICAgY2xhc3MgQmFyQ2xpZW50IDwgTXlDbGllbnRHZW06OkFwaUNsaWVudAogICAgICAjIC4u LgogICAgZW5kCiAgZW5kCmVuZAoKIyBwYXltZW50cy5yYgpyZXF1aXJlICJwYXltZW50cy9hcGlf Y2xpZW50cy9mb29fY2xpZW50IgpyZXF1aXJlICJwYXltZW50cy9hcGlfY2xpZW50cy9iYXJfY2xp ZW50IgoKbW9kdWxlIFBheW1lbnRzCiAgIyBkbyBzb21ldGhpbmcgd2l0aCBBcGlDbGllbnRzOjpG b29DbGllbnQsIEFwaUNsaWVudDo6QmFyQ2xpZW50IGV0YwplbmQKYGBgCgp3ZSBoYXZlIGluc3Rl YWQgc29tZXRoaW5nIGxpa2UgdGhpcyAoYXNzdW1pbmcgIm15X2NsaWVudF9nZW0iIG9wdHMgaW4g dG8gYmVpbmcgImltcG9ydGFibGUiLCB3aGF0ZXZlciB0aGF0IG1lYW5zKToKCmBgYHJ1YnkKIyBw YXltZW50cy9hcGlfY2xpZW50cy9mb29fY2xpZW50LnJiCmFwaV9jbGllbnQgPSBpbXBvcnQgIm15 X2NsaWVudF9nZW0vYXBpX2NsaWVudCIKCmNsYXNzIEZvb0NsaWVudCA8IGFwaV9jbGllbnQ6OkFw aUNsaWVudAogICMgLi4uCmVuZAoKIyBwYXltZW50cy9hcGlfY2xpZW50cy9iYXJfY2xpZW50LnJi CmFwaV9jbGllbnQgPSBpbXBvcnQgIm15X2NsaWVudF9nZW0vYXBpX2NsaWVudCIKCmNsYXNzIEJh ckNsaWVudCA8IGFwaV9jbGllbnQ6OkFwaUNsaWVudAogICMgLi4uCmVuZAoKIyBwYXltZW50cy5y Ygptb2R1bGUgUGF5bWVudHMKICBmb29fY2xpZW50ID0gaW1wb3J0ICIuL2FwaV9jbGllbnRzL2Zv b19jbGllbnQiCiAgYmFyX2NsaWVudCA9IGltcG9ydCAiLi9hcGlfY2xpZW50cy9iYXJfY2xpZW50 IgoKICAjIGRvIHNvbWV0aGluZyB3aXRoIGZvb19jbGllbnQ6OkZvb0NsaWVudCBhbmQgYmFyX2Ns aWVudDo6QmFyQ2xpZW50CmVuZApgYGAKClRvIG1lIGF0IGxlYXN0LCBoYXZpbmcgZGVhbHQgd2l0 aCBfcmVhbXNfIG9mIG5hbWVzcGFjZSBib2lsZXJwbGF0ZSwgSSBjYW5ub3QgZXhwcmVzcyB0byB5 b3Ugd2hhdCBhIHBsZWFzdXJlIGl0IGlzIGp1c3QgdG8gd3JpdGUgdGhpcyBoZXJlLiBJdCB0YWtl cyBhd2F5IHNvIG11Y2ggdGhhdCBpcyBpcnJlbGV2YW50IGFuZCBsZWF2ZXMgb25seSB3aGF0IF9p c18gcmVsZXZhbnQ6IHdoYXQgdGhlIGNvZGUgaXMgYWN0dWFsbHkgZG9pbmcuIFRoaXMgSSBiZWxp ZXZlIGlzIHdoeSB0aGlzIGlkZWEgaGFzIGdlbmVyYXRlZCBbc28gbXVjaCBleGNpdGVtZW50XSho dHRwczovL3R3aXR0ZXIuY29tL2ZsYXZvcmpvbmVzL3N0YXR1cy8xNTcwMzkwNjMzNTI0NzQ0MTk1 KS4KCkF0IHRoaXMgcG9pbnQsIHdoYXQgSSd2ZSB3cml0dGVuIGFib3ZlIGlzIGFscmVhZHkgaW1w bGVtZW50YWJsZSB3aXRoIHRoZSByZWNlbnQgY2hhbmdlIHRvIGBsb2FkYCBhbG9uZS4gSSBhbSBu b3QgZGVwZW5kaW5nIG9uIHRyYW5zaXRpdml0eSBvZiBgcmVxdWlyZWAgaGVyZSBhbmQgdGhlIEkn bSBhc3N1bWluZyB0aGUgY29kZSBpbiBgbXlfY2xpZW50X2dlbWAgaXMgYWxsIFJ1YnkgYW5kIGhh cyBubyBuYXRpdmUgZXh0ZW5zaW9uLiAoQXNzdW1lIGhlcmUgdGhhdCBgbXlfY2xpZW50X2dlbWAg b3B0cyBpbiB0byBtYWtlIGl0cyBjb2RlICJpbXBvcnRhYmxlIiwgd2hhdGV2ZXIgdGhhdCBtZWFu cyAtLSB0aGlzIGlzIHNvbWV0aGluZyB0byB3b3JrIG91dCkuCgpTbyB0aGUgbWlzYWxpZ25tZW50 IG9mIGluY2VudGl2ZXMsIGFzIEkndmUgcHJlc2VudGVkIGl0LCBpcyByZXNvbHZhYmxlIGluIGEg d2F5LiBCdXQgdGhlcmUncyBhIHByb2JsZW0sIGJlY2F1c2Ugd2hpbGUgSSBoYXZlICJpbXBvcnRl ZCIgYCJwYXltZW50cy9hcGlfY2xpZW50cy9mb29fY2xpZW50YCwgdGhhdCBpbXBvcnRlZCBjb2Rl IGNhbiBmcmVlbHkgYWNjZXNzIGFueXRoaW5nIGVsc2UgaW4gdGhlIHRvcGxldmVsIG5hbWVzcGFj ZS4gU28gYDo6UGF5bWVudHNgIGluIGBwYXltZW50cy9hcGlfY2xpZW50cy9mb29fY2xpZW50LnJi YCByZXNvbHZlcyB0byB0aGUgdG9wbGV2ZWwgYDo6UGF5bWVudHNgLgoKSW4gb3RoZXIgd29yZHMs IHRoZSBwcm9ibGVtIHRoYXQgUGFja3dlcmsgc29sdmVzIGlzIHN0aWxsIHRoZXJlLgoKV2UgYXJl IGFjdHVhbGx5IF9yZWFsbHkgY2xvc2VfIHRob3VnaCB0byB3aGF0IEkgdGhpbmsgaXMgYSBiZXR0 ZXIgc29sdXRpb24gdG8gdGhhdCBwcm9ibGVtLiBJZiB0b3BsZXZlbCBpbiB0aGUgaW1wb3J0ZWQg ZmlsZSByZXNvbHZlZCB0byB0aGUgdG9wIG9mIHRoZSBpbXBvcnQgY29udGV4dCwgd2Ugd291bGQg YWN0dWFsbHkgYWNoaWV2ZSBhIGtpbmQgb2YgIm5lc3RlZCBlbmNhcHN1bGF0aW9uIi4gQSB3cmFw cGVkIGxvYWQgY29udGV4dCBvbmx5ICJzZWVzIiBhcyBmYXIgdXAgYXMgaXRzIHdyYXAgbW9kdWxl LiBJdCBpcyBlc3NlbnRpYWxseSBhICJ1bml2ZXJzZSB1bnRvIGl0c2VsZiIuIFRoZSBpbXBvcnRl ciBzaWRlIGNhbiBzZWUgZG93biB0aGUgbmFtZXNwYWNlLCBidXQgdGhlICJpbXBvcnRlZSIgY2Fu bm90IHNlZSB1cCBwYXN0IGl0cyB0b3BsZXZlbC4KClRoZXJlIGlzIG5vIGNvbmZsaWN0IHdpdGgg YHJlcXVpcmVgIGhlcmUgYmVjYXVzZSBjb2RlIHRoYXQgaXMgcmVxdWlyZWQgYWx3YXlzIHJlc29s dmVzIHRvIHRoZSBhYnNvbHV0ZSB0b3BsZXZlbCwgbm90aGluZyBjaGFuZ2VzIHRoZXJlLiBDb2Rl IHRoYXQgaXMgbG9hZGVkIHVuZGVyIGEgd3JhcCBuYW1lc3BhY2UgY2Fubm90IHNlZSBvdXRzaWRl IGl0cyBuYW1lc3BhY2UgdW5sZXNzIGl0cyBsb2FkIG1vZHVsZSBoYXMgcmVmZXJlbmNlcyB0byB0 aGF0IGdsb2JhbCBjb250ZXh0LgoKVGhpcyBtZWFucyB0aGF0IGFueXRpbWUgeW91IHdhbnQgYSBu ZXcgdG9wbGV2ZWwsIHlvdSBjYW4gaGF2ZSBvbmUuIFRoZSBvcmlnaW5hbCAidHJ1ZSIgdG9wbGV2 ZWwgKHVzZWQgYnkgYHJlcXVpcmVgKSBpcyBzdGlsbCB0aGVyZSBhcyBhbHdheXMuCgpJIGhhdmUg cm91Z2hseSBpbXBsZW1lbnRlZCB0aGlzIGlkZWEgd2l0aCBjcmVmIGZsYWdzIGluIFtteSBSdWJ5 IHBhdGNoXShodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L2NvbXBhcmUvbWFzdGVyLi4uc2hp b3lhbWE6cnVieTppbXBvcnRfbW9kdWxlcykgKGlnbm9yZSB0aGUgY2hhbmdlIHRvIG1ha2UgYHJl cXVpcmVgIHRyYW5zaXRpdmUpLiBBbHRob3VnaCB0aGVyZSBhcmUgZWRnZSBjYXNlcyB0byBjb25z aWRlciAoYW5kIEkgY2FuIHNlZSBhIGNvdXBsZSksIEkgZmVlbCB0aGlzIGlzIGFjdHVhbGx5IHRo ZSBwb3RlbnRpYWwgYmFzaXMgZm9yIGFuIGltcGxlbWVudGF0aW9uIG9mICJpbXBvcnRzIiB3aGlj aCBhdm9pZHMgdGhlIGZ1bmRhbWVudGFsIHByb2JsZW1zIHJhaXNlZCBzbyBmYXIsIHdoaWxlIG9m ZmVyaW5nIHRoZSBrZXkgbWlzc2luZyBlbGVtZW50IHRvIG1ha2UgImNvZGUgd3JhcHBpbmciIGJl Y29tZSBhIG11Y2ggbW9yZSBwb3dlcmZ1bCBjb25jZXB0IGZvciBlbmNhcHN1bGF0aW9uIGFuZCBj b2RlIG9yZ2FuaXphdGlvbiBib3RoIGluIGFwcGxpY2F0aW9uIGFuZCBpbiBnZW0gY29kZS4KCkkn bGwgc3RvcCBoZXJlIGJlY2F1c2UgdGhpcyBpcyBhbHJlYWR5IHdheSB0b28gbG9uZy4gSGFwcHkg dG8gZWxhYm9yYXRlIGZ1cnRoZXIgb24gcG9pbnRzIHRoYXQgbWlnaHQgYmUgdW5jbGVhci4KCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRmVhdHVyZSAjMTkwMjQ6IFBy b3Bvc2FsOiBJbXBvcnQgTW9kdWxlcwpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMv MTkwMjQjY2hhbmdlLTk5NTI1CgoqIEF1dGhvcjogc2hpb3lhbWEgKENocmlzIFNhbHpiZXJnKQoq IFN0YXR1czogT3BlbgoqIFByaW9yaXR5OiBOb3JtYWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpUaGVyZSBpcyBubyBnZW5lcmFsIHdheSBpbiBSdWJ5IHRvIGxvYWQg Y29kZSBvdXRzaWRlIG9mIHRoZSBnbG9iYWxseS1zaGFyZWQgbmFtZXNwYWNlLiBUaGlzIG1ha2Vz IGl0IGhhcmQgdG8gaXNvbGF0ZSBjb21wb25lbnRzIG9mIGFuIGFwcGxpY2F0aW9uIGZyb20gZWFj aCBvdGhlciBhbmQgZnJvbSB0aGUgYXBwbGljYXRpb24gaXRzZWxmLCBsZWFkaW5nIHRvIGNvbXBs aWNhdGVkIHJlbGF0aW9uc2hpcHMgdGhhdCBjYW4gYmVjb21lIGludHJhY3RhYmxlIGFzIGFwcGxp Y2F0aW9ucyBncm93IGluIHNpemUuCgpUaGUgZ3Jvd2luZyBwb3B1bGFyaXR5IG9mIGEgZ2VtIGxp a2UgW1BhY2t3ZXJrXShodHRwczovL2dpdGh1Yi5jb20vc2hvcGlmeS9wYWNrd2VyayksIHdoaWNo IHByb3ZpZGVzIGEgbmV3IGNvbmNlcHQgb2YgInBhY2thZ2UiIHRvIGVuZm9jZSBib3VuZGFyaWVz IHN0YXRpY2FsbHkgaW4gQ0ksIGlzIGV2aWRlbmNlIHRoYXQgdGhpcyBpcyBhIHJlYWwgcHJvYmxl bS4gQnV0IGludHJvZHVjaW5nIGEgbmV3IHBhY2thZ2luZyBjb25jZXB0IGFuZCBDSSBzdGVwIGlz IGF0IGJlc3Qgb25seSBhIHBhcnRpYWwgc29sdXRpb24sIHdpdGggZG93bnNpZGVzOiBpdCBhZGRz IGNvbXBsZXhpdHkgYW5kIGNvZ25pdGl2ZSBvdmVyaGVhZCB0aGF0IHdvdWxkbid0IGJlIG5lY2Vz c2FyeSBpZiBSdWJ5IHByb3ZpZGVkIGJldHRlciBwYWNrYWdpbmcgaXRzZWxmIChhcyBNYXR6IGhh cyBzdWdnZXN0ZWQgW2l0IHNob3VsZF0oaHR0cHM6Ly95b3V0dS5iZS9EcDEyYTNLR05Gdz90PTI5 NTYpKS4KClRoZXJlIGlzIF9vbmVfIGxpbWl0ZWQgd2F5IGluIFJ1YnkgY3VycmVudGx5IHRvIGxv YWQgY29kZSB3aXRob3V0IHBvbGx1dGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZTogYGxvYWRgIHdp dGggdGhlIGB3cmFwYCBwYXJhbWV0ZXIsIHdoaWNoIGFzIG9mIGh0dHBzOi8vYnVncy5ydWJ5LWxh bmcub3JnL2lzc3Vlcy82MjEwIGNhbiBub3cgYmUgYSBtb2R1bGUuIEhvd2V2ZXIsIHRoaXMgb3B0 aW9uIGRvZXMgbm90IGFwcGx5IHRyYW5zaXRpdmVseSB0byBgcmVxdWlyZWAgY2FsbHMgd2l0aGlu IHRoZSBsb2FkZWQgZmlsZSwgc28gaXRzIHVzZWZ1bG5lc3MgaXMgbGltaXRlZC4KCk15IHByb3Bv c2FsIGhlcmUgaXMgdG8gZW5hYmxlIG1vZHVsZSBpbXBvcnRzIGJ5IGRvaW5nIHRoZSBmb2xsb3dp bmc6CgoxLiBhcHBseSB0aGUgYHdyYXBgIG1vZHVsZSBuYW1lc3BhY2UgdHJhbnNpdGl2ZWx5IHRv IGByZXF1aXJlYHMgaW5zaWRlIHRoZSBsb2FkZWQgY29kZSwgaW5jbHVkaW5nIG5hdGl2ZSBleHRl bnNpb25zIChvciBwcm92aWRlIGEgbmV3IGZsYWcgb3IgbWV0aG9kIHRoYXQgd291bGQgZG8gdGhp cyksCjIuIG1ha2UgdGhlIGB3cmFwYCBtb2R1bGUgdGhlIHRvcGxldmVsIGNvbnRleHQgZm9yIGNv ZGUgbG9hZGVkIHVuZGVyIGl0LCBzbyBgOjpGb29gIHJlc29sdmVzIHRvIGA8dG9wX3dyYXBwZXI+ OjpGb29gIGluIGxvYWRlZCBjb2RlIChvciwgYWdhaW4sIHByb3ZpZGUgYSBuZXcgZmxhZyBvciBt ZXRob2QgdGhhdCB3b3VsZCBkbyB0aGlzKS4gX0Fsc28gbWFrZSB0aGlzIGFwcGx5IHdoZW4gY29k ZSB1bmRlciB0aGUgd3JhcHBlciBtb2R1bGUgaXMgY2FsbGVkIG91dHNpZGUgb2YgdGhlIGxvYWQg cHJvY2VzcyAod2hlbiBgdG9wX3dyYXBwZXJgIGlzIG5vIGxvbmdlciBzZXQpICZtZGFzaDsgdGhp cyBtYXkgYmUgcXVpdGUgaGFyZCB0byBkb18uCjMuIHJlc29sdmUgYG5hbWVgIG9uIGFub255bW91 cyBtb2R1bGVzIHVuZGVyIHRoZSB3cmFwcGVkIG1vZHVsZSB0byB0aGVpciBuYW1lcyB3aXRob3V0 IHRoZSB0b3Agd3JhcHBlciBtb2R1bGUsIHNvIGA8dG9wX3dyYXBwZXI+OjpGb28ubmFtZWAgZXZh bHVhdGVzIHRvIGAiRm9vImAuIFRoZXJlIG1heSBiZSBvdGhlciB3YXlzIHRvIGhhbmRsZSB0aGlz IHByb2JsZW0sIGJ1dCBhIGdlbSBsaWtlIFJhaWxzIHVzZXMgYG5hbWVgIHRvIHJlc29sdmUgZmls ZW5hbWVzIGFuZCBmYWlscyB3aGVuIGFub255bW91cyBtb2R1bGVzIHJldHVybiBzb21ldGhpbmcg bGlrZSBgIzxNb2R1bGU6IC4uLj46OkFjdGl2ZVJlY29yZGAgaW5zdGVhZCBvZiBqdXN0IGBBY3Rp dmVSZWNvcmRgLgoKSSBoYXZlIHJvdWdobHkgaW1wbGVtZW50ZWQgdGhlc2UgdGhyZWUgdGhpbmdz IGluIFt0aGlzIHBhdGNoXShodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L2NvbXBhcmUvbWFz dGVyLi4uc2hpb3lhbWE6cnVieTppbXBvcnRfbW9kdWxlcykuIFRoaXMgaW1wbGVtZW50YXRpb24g aXMgaW5jb21wbGV0ZSAoaXQgZG9lcyBub3QgY292ZXIgdGhlIGxhc3QgaGlnaGxpZ2h0ZWQgcGFy dCBvZiAyKSBidXQgcHJvdmlkZXMgZW5vdWdoIG9mIGEgYmFzaXMgdG8gaW1wbGVtZW50IGFuIGBp bXBvcnRgIG1ldGhvZCwgd2hpY2ggSSBoYXZlIGRvbmUgaW4gYSBnZW0gY2FsbGVkIFtJbV0oaHR0 cHM6Ly9naXRodWIuY29tL3NoaW95YW1hL2ltKS4KCkltIHByb3ZpZGVzIGFuIGBpbXBvcnRgIG1l dGhvZCB3aGljaCBjYW4gYmUgdXNlZCB0byBpbXBvcnQgZ2VtIGNvZGUgdW5kZXIgYSBuYW1lc3Bh Y2U6CgpgYGBydWJ5CnJlcXVpcmUgImltIgpleHRlbmQgSW0KCmFjdGl2ZV9tb2RlbCA9IGltcG9y dCAiYWN0aXZlX21vZGVsIgojPT4gPCNJbTo6SW1wb3J0IHJvb3Q6IGFjdGl2ZV9tb2RlbD4KCkFj dGl2ZU1vZGVsCiM9PiBOYW1lRXJyb3IKCmFjdGl2ZV9tb2RlbDo6QWN0aXZlTW9kZWwKIz0+IEFj dGl2ZU1vZGVsCgphY3RpdmVfcmVjb3JkID0gaW1wb3J0ICJhY3RpdmVfcmVjb3JkIgojPT4gPCNJ bTo6SW1wb3J0IHJvb3Q6IGFjdGl2ZV9yZWNvcmQ+CgojIENvbnN0YW50cyBkZWZpbmVkIGluIHRo ZSBzYW1lIGZpbGUgdW5kZXIgZGlmZmVyZW50IGltcG9ydHMgcG9pbnQgdG8gdGhlIHNhbWUgb2Jq ZWN0cwphY3RpdmVfcmVjb3JkOjpBY3RpdmVNb2RlbCA9PSBhY3RpdmVfbW9kZWw6OkFjdGl2ZU1v ZGVsCiM9PiB0cnVlCmBgYAoKV2l0aCB0aGUgY29uc3RhbnRzIGFsbCBsb2FkZWQgdW5kZXIgYW4g YW5vbnltb3VzIG5hbWVzcGFjZSwgYW55IGNvZGUgaW1wb3J0aW5nIHRoZSBnZW0gY2FuIG5hbWUg Y29uc3RhbnRzIGhvd2V2ZXIgaXQgbGlrZXM6CgpgYGBydWJ5CmNsYXNzIFBvc3QgPCBhY3RpdmVf cmVjb3JkOjpBY3RpdmVSZWNvcmQ6OkJhc2UKZW5kCgpBUiA9IGFjdGl2ZV9yZWNvcmQ6OkFjdGl2 ZVJlY29yZAoKUG9zdC5zdXBlcmNsYXNzCiM9PiBBUjo6QmFzZQpgYGAKCk5vdGUgdGhhdCB0aGlz IGVuYWJsZXMgdGhlIGltcG9ydGVyIHRvIGNvbXBsZXRlbHkgZGV0ZXJtaW5lIHRoZSBuYW1pbmcg Zm9yIGV2ZXJ5IGNvbnN0YW50IGl0IGltcG9ydHMuIFNvIGdlbXMgY2FuIG9wdCB0byBoaWRlIHRo ZWlyIGRlcGVuZGVuY2llcyBieSAiYW5jaG9yaW5nIiB0aGVtIGluc2lkZSB0aGVpciBvd24gbmFt ZXNwYWNlLCBsaWtlIHRoaXM6CgpgYGBydWJ5CiMgaW4gbGliL215X2dlbS5yYgptb2R1bGUgTXlH ZW0KICBkZXAgPSBpbXBvcnQgIm15X2dlbV9kZXBlbmRlbmN5IgoKICAjIG15X2dlbV9kZXBlbmRl bmN5IGlzICJhbmNob3JlZCIgdW5kZXIgdGhlIE15R2VtIG5hbWVzcGFjZSwgc28gbm90IGV4cG9z ZWQgdG8gdXNlcnMKICAjIG9mIHRoZSBnZW0gdW5sZXNzIHRoZXkgYWxzbyByZXF1aXJlIGl0Lgog IE15R2VtRGVwZW5kZW5jeSA9IGRlcAoKICAjLi4uCmVuZApgYGAKClRoZXJlIGFyZSBhIGNvdXBs ZSBpbXBvcnRhbnQgaW1wbGVtZW50YXRpb24gZGVjaXNpb25zIGluIHRoZSBnZW06CgoxLiBfT25s eSBsb2FkIGNvZGUgb25jZS5fIFdoZW4gdGhlIHNhbWUgZmlsZSBpcyBpbXBvcnRlZCBhZ2FpbiAo ZWl0aGVyIGRpcmVjdGx5IG9yIHRyYW5zaXRpdmVseSksICJjb3B5IiBjb25zdGFudHMgZnJvbSBw cmV2aW91c2x5IGltcG9ydGVkIG5hbWVzcGFjZSB0byB0aGUgbmV3IG5hbWVzcGFjZSB1c2luZyBh IHJlZ2lzdHJ5IHdoaWNoIG1hcHMgd2hpY2ggbmFtZXNwYWNlIChpbXBvcnQpIHdhcyB1c2VkIHRv IGxvYWQgd2hpY2ggZmlsZSAoYXMgc2hvd24gYWJvdmUgd2l0aCBhY3RpdmVyZWNvcmQvYWN0aXZl bW9kZWwpLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCBkaWZmZXJlbnQgaW1wb3J0 cyBjYW4gInNlZSIgc2hhcmVkIGZpbGVzLiBBIHNpbWlsYXIgcmVnaXN0cnkgaXMgdXNlZCB0byB0 cmFjayBhdXRvbG9hZHMgc28gdGhhdCB0aGV5IHdvcmsgY29ycmVjdGx5IHdoZW4gdXNlZCBmcm9t IGltcG9ydGVkIGNvZGUuCjIuIFRvcGxldmVsIGNvcmUgdHlwZXMgKGBOaWxDbGFzc2AsIGBUcnVl Q2xhc3NgLCBgRmFsc2VDbGFzc2AsIGBTdHJpbmdgLCBldGMpIGFyZSAiYWxpYXNlZCIgdG8gY29u c3RhbnRzIHVuZGVyIGVhY2ggaW1wb3J0IG1vZHVsZSB0byBtYWtlIHRoZW0gYXZhaWxhYmxlLiBU aHVzIHRoZXJlIGNhbiBiZSBzaWRlLWVmZmVjdHMgb2YgaW1wb3J0aW5nIGNvZGUsIGJ1dCB0aGlz IGFsbG93cyBhIGdlbSBsaWtlIFJhaWxzIHRvIG1vbmtleXBhdGNoIGNvcmUgY2xhc3NlcyB3aGlj aCBpdCBuZWVkcyB0byBkbyBmb3IgaXQgdG8gd29yay4KMy4gYE9iamVjdC5jb25zdF9taXNzaW5n YCBpcyBwYXRjaGVkIHRvIGNoZWNrIHRoZSBjYWxsZXIgbG9jYXRpb24gYW5kIHJlc29sdmUgdG8g dGhlIGNvbnN0YW50IGRlZmluZWQgdW5kZXIgYW4gaW1wb3J0LCBpZiB0aGVyZSBpcyBhbiBpbXBv cnQgZGVmaW5lZCBmb3IgdGhhdCBmaWxlLgoKVG8gYmUgY2xlYXI6ICoqSSB0aGluayAxKSBzaG91 bGQgYmUgaW1wbGVtZW50ZWQgaW4gUnVieSwgYnV0IG5vdCAyKSBhbmQgMykuKiogVGhlIGxhc3Qg b25lIChgT2JqZWN0LmNvbnN0X21pc3NpbmdgKSBpcyBhIGhhY2sgdG8gc3VwcG9ydCB0aGUgY2Fz ZSB3aGVyZSBhIHRvcGxldmVsIGNvbnN0YW50IGlzIHJlZmVyZW5jZWQgZnJvbSBhIG1ldGhvZCBj YWxsZWQgaW4gaW1wb3J0ZWQgY29kZSAoYXQgd2hpY2ggcG9pbnQgdGhlIGB0b3Bfd3JhcHBlcmAg aXMgbm90IGFjdGl2ZS4pCgpJIGtub3cgdGhpcyBpcyBhIGJpZyBwcm9wb3NhbCwgYW5kIHRoZXJl IGFyZSBzdHJvbmcgb3BpbmlvbnMgaGVsZC4gSSB3b3VsZCByZWFsbHkgYXBwcmVjaWF0ZSBjb25z dHJ1Y3RpdmUgZmVlZGJhY2sgb24gdGhpcyBnZW5lcmFsIGlkZWEuCgpTZWUgYWxzbyBzaW1pbGFy IGRpc2N1c3Npb24gaW46IGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xMDMyMAoK CgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==