[#122973] [PATCH] Add Gem.default_install — Felipe Contreras via ruby-core <ruby-core@...>
We need a way to enable user installs by default so that tools like
3 messages
2025/08/17
[ruby-core:123060] [Ruby Feature#21550] Ractor.sharable_proc/sharable_lambda to make sharable Proc object
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2025-08-23 13:35:23 UTC
List:
ruby-core #123060
SXNzdWUgIzIxNTUwIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpTdW1tYXJ5OiBJIHRoaW5rIG9wdGlvbiAyIGlzIGdyZWF0IGl0J3MgYm90aCBmbGV4aWJs ZSwgY2xlYXIgYW5kIHNhZmUsIGFuZCB3ZSBzaG91bGQgaW1wbGVtZW50IGl0Lg0KSXQgYWRkcmVz c2VzIHRoZSBjb25jZXJucyBpbiAjMjEwMzkuDQpJdCBzaG91bGQgYmUgZWFzeSB0byBpbXBsZW1l bnQsIGJlY2F1c2UgaWYgZ2l2ZW4gYSBQcm9jIGl0J3MgdGhlIHNhbWUgc2VtYW50aWNzIGFzIGBS YWN0b3IubmV3KHByb2Nfb2JqZWN0KWAsIGFuZCB3aGVuIGdpdmVuIGEgbGl0ZXJhbCBibG9jayBp dCdzIHRoZSBkZXNpcmVkIG1vcmUgZmxleGlibGUgc2VtYW50aWNzIHdoaWNoIGFueXdheSBib3Ro IG9wdGlvbnMgd2FudC4NCg0KV2hhdCBmb2xsb3cgaXMgc29tZSBtb3JlIHRob3VnaHRzLCB3aGlj aCBtaWdodCBsZWFkIHRvIHNvbWUgaW1wcm92ZW1lbnRzIGxhdGVyIGJ1dCBhbnl3YXkgSSBiZWxp ZXZlIGl0J3MgZmluZSB0byBpbXBsZW1lbnQgb3B0aW9uIDIgYXMtaXMuDQoNCi0tLQ0KDQpJIHdv bmRlciBpZiB0aGUgYWJpbGl0eSB0byBjYXB0dXJlIG91dGVyIGxvY2FsIHZhcmlhYmxlcyBmb3Ig c2hhcmVhYmxlIHByb2NzIGlzIGV2ZW4gbmVlZGVkIGF0IGFsbC4NCkJlY2F1c2UgdGhhdCBvbmx5 IHdvcmtzIGlmIHRoZSB2YWx1ZSBvZiB0aGUgY2FwdHVyZWQgdmFyaWFibGVzIGlzIHNoYXJlYWJs ZSwgd2hpY2ggc2VlbXMgbm90IHNvIGxpa2VseSAob25seSBudW1iZXJzL3RydWUvZmFsc2Uvbmls L2Zyb3plbi1zdHJpbmctbGl0ZXJhbHMvbW9kdWxlcy9yZWdleHBzIGFyZSBmcm96ZW4vc2hhcmVh YmxlIHdpdGhvdXQgYW4gZXhwbGljaXQgZnJlZXplL21ha2Vfc2hhcmVhYmxlIGNhbGwpLg0KSSB3 b3VsZCBsaWtlIHRvIHNlZSBzb21lIGNvbmNyZXRlIGV4YW1wbGVzIG9mIGJsb2NrcyB0byBiZSBt YWRlIHNoYXJlYWJsZSB3aGljaCBjYXB0dXJlIG91dGVyIGxvY2FsIHZhcmlhYmxlcywgYW5kIGhv dyB0aGV5IGhhbmRsZSB0aGUgY2FzZSBvZiBjYXB0dXJlZCB2YXJpYWJsZSB2YWx1ZXMgbm90IGFs cmVhZHkgYmVpbmcgZGVlcGx5IGZyb3plbiAoY2MgQHRlbmRlcmxvdmVtYWtpbmcgeW91IHNhaWQg dGhlcmUgd2VyZSBzb21lIGluIFJhaWxzIElJUkMpLg0KDQpSZWxhdGVkIHRvIHRoYXQsIG1heWJl IGl0IHdvdWxkIGJlIHVzZWZ1bCBmb3INCmBgYHJ1YnkNCm8gPSBPYmplY3QubmV3DQpSYWN0b3Iu c2hhcmVhYmxlX3Byb2Mgew0KICBvDQp9DQpgYGANCg0KdG8gY2FsbCBgUmFjdG9yLm1ha2Vfc2hh cmVhYmxlKG8pYD8NCk9yIG1heWJlIGBSYWN0b3IubWFrZV9zaGFyZWFibGUobywgY29weTogdHJ1 ZSlgIG9uIGBSYWN0b3Iuc2hhcmVhYmxlX3Byb2MoY29weTogdHJ1ZSkgeyAuLi4gfWA/DQpUaG91 Z2ggbm90IHN1cmUgaWYgcmVhc29uYWJsZSBvciB0b28gc3VycHJpc2luZy4gSXQgbWlnaHQgYmUg c3VycHJpc2luZyBmb3IgY2FzZXMgd2hlcmUgaXQgZnJlZXplcyBtYW55IG9iamVjdHMsIGUuZy4g aWYgYG9gIGlzIGBGb28ubmV3KFtdKWAgdGhlIEFycmF5IGFsc28gZ2V0cyBmcm96ZW4gKHdoaWNo IG1pZ2h0IGJyZWFrIHRoaW5ncykuDQpJIHRoaW5rIHRoYXQgY2FzZSBtYWtlcyBpdCBjbGVhciB0 aGlzIG1pZ2h0IG1heWJlIGJlIGFjY2VwdGFibGUgd2l0aCBhIGxpdGVyYWwgYmxvY2ssIGJ1dCB3 b3VsZCBuZXZlciBiZSBhY2NlcHRhYmxlIHdpdGggYSBQcm9jIG9iamVjdCAoaXQgd291bGQgZnJl ZXplIHRoaW5ncyBmYXIgYXdheSBhbmQgYmUgaGFyZCB0byBkZWJ1ZykuDQoNCkluIHNvbWUgd2F5 IHdlIGNhbiBzZWUgYSBibG9jayBhcyBhbiBvYmplY3Qgd2l0aCBhbiBleHRyYSBgQGl2YXJgIGJl aW5nIHRoZSAiY2FwdHVyZWQgZW52aXJvbm1lbnQiIHdoaWNoIGNvbnRhaW5zIHRoZSBjYXB0dXJl ZCB2YXJpYWJsZXMuDQpGcm9tIHRoYXQgUE9WLCBtYWtpbmcgdGhlIFByb2Mgc2hhcmVhYmxlIHRo ZW4gd291bGQgcmF0aGVyIG5hdHVyYWxseSBtYWtlIHRoYXQgImNhcHR1cmVkIGVudmlyb25tZW50 IiBhbmQgb2JqZWN0cyBpbnNpZGUgc2hhcmVhYmxlIGFzIHdlbGwuDQoNCi0tLQ0KDQpJIGZpbmQg aXQgaW50ZXJlc3RpbmcgdGhhdCB3ZSBhbGwgc2VlbSB0byBhZ3JlZSBvbiBgQXNzaWduaW5nIHRv IG91dGVyIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHdpdGhpbiB0aGUgc2hhcmVhYmxlIFByb2MgaXMg bm90IGFsbG93ZWQgKGVycm9yIGF0IGNyZWF0aW9uKWAgYnV0IG5vdCBvbiBgQXNzaWduaW5nIHRv IG91dGVyIGxvY2FsIHZhcmlhYmxlcyBmcm9tIG91dHNpZGUgdGhlIHNoYXJlYWJsZSBQcm9jIGlz IG5vdCBhbGxvd2VkIHRocm91Z2ggYW4gZXhjZXB0aW9uIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZSBh IHNoYXJlYWJsZSBQcm9jIGluIHN1Y2ggYSBjYXNlYC4NCklNTyB0aGV5IGFyZSBqdXN0IGJvdGgg c2lkZXMgb2YgdGhlIHNhbWUgaXNzdWUuDQpCdXQgSSB1bmRlcnN0YW5kIHRoZSBzZWNvbmQgb25l IGlzIG1vcmUgdHJpY2t5IGJlY2F1c2UgZS5nLiBpdCdzIGltcG9zc2libGUgdG8gZGV0ZWN0IGFz c2lnbm1lbnRzIHdpdGhpbiBldmFsIGF0IChmaWxlKSBwYXJzZSB0aW1lIChJTU8gc28gcmFyZSBv ZiBhbiBlZGdlIGNhc2UgdG8gbm90IHdvcnJ5IGFib3V0IHRoYXQgdG9vIG11Y2gpLg0KSSBhbHNv IGFncmVlIHRoZSBzZWNvbmQgb25lIGlzIG1vcmUgcmFyZWx5IHVzZWQsIHRob3VnaCB0aGF0IGRv ZXNuJ3QgbWVhbiBpdCBkb2Vzbid0IG1hdHRlci4NCg0KLS0tDQoNCldpdGggb3B0aW9uIDEgaXQg d291bGQgYnJlYWsgZXhpc3RpbmcgYmxvY2tzLCBzbyBJIGFtIGFnYWluc3QgaXQsIGUuZy46DQpg YGBydWJ5DQp2aXNpdHMgPSAwDQpnZXQgJy8nIGRvICMgYXNzdW1pbmcgdGhpcyBibG9jayBpcyBu b3QgbWFkZSBzaGFyZWFibGUgKGJlY2F1c2UgdGhhdCBpcyBmb3JiaWRkZW4sIHNlZSBgQXNzaWdu aW5nIHRvIG91dGVyIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHdpdGhpbiB0aGUgc2hhcmVhYmxlIFBy b2MgaXMgbm90IGFsbG93ZWQgKGVycm9yIGF0IGNyZWF0aW9uKWApDQogIHZpc2l0cyArPSAxDQog ICJIZWxsbyINCmVuZA0KZ2V0ICcvdmlzaXRzJyBkbyAjIGlmIHRoaXMgYmxvY2sgaXMgbWFkZSBz aGFyZWFibGUgYW5kIGNhbGxlZCwgaXQgd2lsbCBiZWhhdmUgaW5jb3JyZWN0bHkgYW5kIHVzZSBh IHNuYXBzaG90IG9mIGB2aXNpdHNgDQogIHZpc2l0cy50b19zDQplbmQNCmBgYA0KQ29uY3JldGVs eSwgYXNzdW1pbmcgdGhlIHNlY29uZCBibG9jayBpcyBtYWRlIHNoYXJlYWJsZSBhdCBsb2FkIHRp bWUsIGlmIHRoZSBibG9jayBpcyB1c2VkIG9ubHkgaW4gbm9uLW1haW4gUmFjdG9ycyBidXQgbm90 IGluIG1haW4gUmFjdG9yczoNCiogaWYgdGhlIHJlcXVlc3QgaGl0cyB0aGUgbWFpbiBSYWN0b3Ig aXQgd291bGQgYmUgY29ycmVjdCAodGhlIG51bWJlciBvZiB2aXNpdHMgb2YgYC9gKQ0KKiBpZiBp dCBoaXRzIGEgbm9uLW1haW4gUmFjdG9yIGl0IHdvdWxkIGJlIGluY29ycmVjdCAoMCkuDQoNClRo YXQncyBwcmV0dHkgYmFkIGZvciBvYnZpb3VzIHJlYXNvbnMuDQpJZiB0aGUgc2hhcmVkIGJsb2Nr IGlzIGluc3RlYWQgdXNlZCBieSBhbGwgUmFjdG9ycywgaW5jbHVkaW5nIHRoZSBtYWluIG9uZSB0 aGVuIGl0IHdvdWxkIGFsd2F5cyBiZSBpbmNvcnJlY3QgKDApLiBTdGlsbCBjbGVhcmx5IGJyZWFr aW5nIHRoZSBwcm9ncmFtL2ludGVuZGVkIHNlbWFudGljcy4NCg0KU28gc3RhbmRhcmQgUnVieSBj b2RlLCBzcGVjaWZpY2FsbHkgYmxvY2tzIChhbmQgdGhlaXIgaW50ZW5kZWQgbG9naWMpIHdvdWxk IGJlIGJyb2tlbiAianVzdCBiZWNhdXNlIGEgUHJvYyBoYXMgYmVlbiBtYWRlIFJhY3Rvci1zaGFy ZWFibGUiLg0KDQpUaGlzIGlzIHdvcnNlIHRoYW4ganVzdCBgaW5zdGFuY2VfZXhlY2AsIGJlY2F1 c2UgYSBibG9jayBjYWxsZWQgd2l0aCBgaW5zdGFuY2VfZXhlY2AgaXMgdHlwaWNhbGx5IGFsd2F5 cyBjYWxsZWQgd2l0aCB0aGUgc2FtZSBraW5kIG9mIHJlY2VpdmVyLg0KQW5kIHRoZSB3b3JzZSBj YXNlIHdpdGggYGluc3RhbmNlX2V4ZWNgIGlzIGEgTm9NZXRob2RFcnJvciBvciBjYWxsaW5nIHRo ZSB3cm9uZyBtZXRob2QgKHZlcnkgdW5saWtlbHkpLg0KVGhlIHdvcnNlIGNhc2Ugd2l0aCBvcHRp b24gMSBpcyByZWFkaW5nIGEgc3RhbGUvb3V0ZGF0ZWQvaW5jb25zaXN0ZW50IHZhbHVlLCB2ZXJ5 IG11Y2ggbGlrZSBhIHN0YWxlIHJlYWQgd2hpY2ggaXMgdXN1YWxseSBhIHJhY2UgY29uZGl0aW9u L211bHRpdGhyZWFkaW5nIHByb2JsZW0sIGJ1dCBoZXJlIFJhY3RvciB3b3VsZCBhY3R1YWxseSBp bnRyb2R1Y2UgdGhpcyBpc3N1ZSBldmVuIHRob3VnaCBSYWN0b3IgaXMgbWVhbnQgdG8gcHJldmVu dCBzdWNoIGlzc3Vlcy4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KRmVhdHVyZSAjMjE1NTA6IFJhY3Rvci5zaGFyYWJsZV9wcm9jL3NoYXJhYmxlX2xhbWJkYSB0 byBtYWtlIHNoYXJhYmxlIFByb2Mgb2JqZWN0DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9p c3N1ZXMvMjE1NTAjY2hhbmdlLTExNDM3OA0KDQoqIEF1dGhvcjoga28xIChLb2ljaGkgU2FzYWRh KQ0KKiBTdGF0dXM6IE9wZW4NCiogQXNzaWduZWU6IGtvMSAoS29pY2hpIFNhc2FkYSkNCiogVGFy Z2V0IHZlcnNpb246IDMuNQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KTGV0J3MgaW50cm9kdWNlIGEgd2F5IHRvIG1ha2UgYSBzaGFyYWJsZSBQcm9jLg0KDQoqIGBS YWN0b3Iuc2hhcmVhYmxlX3Byb2Moc2VsZjogbmlsLCAmYmxvY2spYCBtYWtlcyBwcm9jLg0KKiBg UmFjdG9yLnNoYXJlYWJsZV9sYW1iZGEoc2VsZjogbmlsLCAmYmxvY2spYCBtYWtlcyBsYW1iZGEu DQoNClNlZSBhbHNvOiBodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjEwMzkNCg0K IyMgQmFja2dyb3VuZA0KDQojIyMgTW90aXZhdGlvbg0KDQpCZWluZyBhYmxlIHRvIGNyZWF0ZSBh IHNoYXJlYWJsZSBQcm9jIGlzIGltcG9ydGFudCBmb3IgUmFjdG9ycy4gRm9yIGV4YW1wbGUsIHdl IG9mdGVuIHdhbnQgdG8gc2VuZCBhIHRhc2sgdG8gYW5vdGhlciBSYWN0b3I6DQoNCmBgYHJ1YnkN CndvcmtlciA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdGFzayA9IFJhY3Rvci5yZWNlaXZlDQog ICAgdGFzay5jYWxsKC4uLikNCiAgZW5kDQplbmQNCg0KdGFzayA9IChzaGFyYWJsZV9wcm9jKQ0K d29ya2VyIDw8IHRhc2sNCg0KdGFzayA9IChzaGFyYWJsZV9wcm9jKQ0Kd29ya2VyIDw8IHRhc2sN Cg0KdGFzayA9IChzaGFyYWJsZV9wcm9jKQ0Kd29ya2VyIDw8IHRhc2sNCmBgYA0KDQpUaGVyZSBh cmUgdmFyaW91cyB3YXlzIHRvIHJlcHJlc2VudCBhIHRhc2ssIGJ1dCB1c2luZyBhIFByb2MgaXMg c3RyYWlnaHRmb3J3YXJkLg0KDQpIb3dldmVyLCB0byBtYWtlIGEgUHJvYyBzaGFyZWFibGUgdG9k YXksIHNlbGYgbXVzdCBhbHNvIGJlIHNoYXJlYWJsZSwgd2hpY2ggbGVhZHMgdG8gcGF0dGVybnMg bGlrZToNCg0KYGBgcnVieQ0KICBuaWwuaW5zdGFuY2VfZXZhbHsgUHJvYy5uZXd7IC4uLiB9IH0N CmBgYA0KDQpUaGlzIGlzIG5vaXN5IGFuZCBjcnlwdGljLiBXZSBwcm9wb3NlIGRlZGljYXRlZCBt ZXRob2RzIHRvIGNyZWF0ZSBzaGFyZWFibGUgUHJvYyBvYmplY3RzIGRpcmVjdGx5Lg0KDQoNCiMj IFNwZWNpZmljYXRpb24NCg0KKiBgUmFjdG9yLnNoYXJlYWJsZV9wcm9jKHNlbGY6IG5pbCwgJmJs b2NrKWAgbWFrZXMgYSBwcm9jLg0KKiBgUmFjdG9yLnNoYXJlYWJsZV9sYW1iZGEoc2VsZjogbmls LCAmYmxvY2spYCBtYWtlcyBhIGxhbWJkYS4NCg0KQm90aCBtZXRob2RzIGNyZWF0ZSB0aGUgUHJv Yy9sYW1iZGEgd2l0aCB0aGUgZ2l2ZW4gc2VsZiBhbmQgbWFrZSB0aGUgcmVzdWx0aW5nIG9iamVj dCBzaGFyZWFibGUuDQoNCkNhcHR1cmVkIG91dGVyIHZhcmlhYmxlcyBmb2xsb3cgdGhlIGN1cnJl bnQgYFJhY3Rvci5tYWtlX3NoYXJlYWJsZWAgc2VtYW50aWNzOg0KDQoqIElmIGEgY2FwdHVyZWQg b3V0ZXIgbG9jYWwgdmFyaWFibGUgcmVmZXJzIHRvIGEgc2hhcmVhYmxlIG9iamVjdCwgYSBzaGFy ZWFibGUgUHJvYyBtYXkgcmVhZCBpdC4NCiogSWYgYW55IGNhcHR1cmVkIG91dGVyIHZhcmlhYmxl IHJlZmVycyB0byBhIG5vbuKAkXNoYXJlYWJsZSBvYmplY3QsIGNyZWF0aW5nIHRoZSBzaGFyZWFi bGUgUHJvYyByYWlzZXMgYW4gZXJyb3IuDQoNCg0KYGBgcnVieQ0KYSA9IDQyDQpiID0gInN0ciIN ClJhY3Rvci5zaGFyYWxiZV9wcm9jew0KICBwIGEgIz0+IDQyDQp9DQoNClJhY3Rvci5zaGFyYWxi ZV9wcm9jeyAjIGVycm9yIHdoZW4gbWFraW5nIGEgc2hhcmVhbGJlIHByb2MNCiAgcCBiICM9PiA0 Mg0KfQ0KYGBgDQoNCiogVGhlIGNhcHR1cmVkIG91dGVyIGxvY2FsIHZhcmlhYmxlcyBhcmUgY29w aWVkIGJ5IHZhbHVlIHdoZW4gdGhlIHNoYXJlYWJsZSBQcm9jIGlzIGNyZWF0ZWQuIFN1YnNlcXVl bnQgbW9kaWZpY2F0aW9ucyBvZiB0aG9zZSB2YXJpYWJsZXMgaW4gdGhlIGNyZWF0b3Igc2NvcGUg ZG8gbm90IGFmZmVjdCB0aGUgUHJvYy4NCg0KYGBgcnVieQ0KYSA9IDQyDQpzaHByID0gUmFjdG9y LnNoYXJhYmxlX3Byb2N7DQogIHAgYQ0KfQ0KYSA9IDANCnNocHIuY2FsbCAjPT4gNDINCmBgYA0K DQoqIEFzc2lnbmluZyB0byBvdXRlciBsb2NhbCB2YXJpYWJsZXMgZnJvbSB3aXRoaW4gdGhlIHNo YXJlYWJsZSBQcm9jIGlzIG5vdCBhbGxvd2VkIChlcnJvciBhdCBjcmVhdGlvbikuDQoNCmBgYHJ1 YnkNCmEgPSA0Mg0KUmFjdG9yLnNoYXJlYWJsZV9wcm9jeyAjIGVycm9yIHdoZW4gbWFraW5nIGEg c2hhcmVhbGJlIHByb2MNCiAgYSA9IDQzDQp9DQoNCmBgYA0KDQpNb3JlIGFib3V0IG91dGVyLXZh cmlhYmxlIGhhbmRsaW5nIGFyZSBkaXNjdXNzZWQgYmVsb3cuDQoNCkluIG90aGVyIHdvcmRzLCBm cm9tIHRoZSBwZXJzcGVjdGl2ZSBvZiBhIHNoYXJlYWJsZSBQcm9jLCBjYXB0dXJlZCBvdXRlciBs b2NhbHMgYXJlIHJlYWTigJFvbmx5IGNvbnN0YW50cy4NCg0KVGhpcyBwcm9wb3NhbCBkb2VzIG5v dCBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiBSYWN0b3IubWFrZV9zaGFyZWFibGUoKSBpdHNlbGYu DQoNCiMjIERpc2N1c3Npb24gYWJvdXQgb3V0ZXIgbG9jYWwgdmFyaWFibGVzDQoNCltGZWF0dXJl ICMyMTAzOV0gZGlzY3Vzc2VzIGhvdyBjYXB0dXJlZCB2YXJpYWJsZXMgc2hvdWxkIGJlIGhhbmRs ZWQuDQpJIHByb3Bvc2UgdHdvIG9wdGlvbnMuDQoNCiMjIyAxLiBObyBwcm9ibGVtIHRvIGNoYW5n ZSB0aGUgb3V0ZXItdmFyaWFibGUgc2VtYW50aWNzDQoNCkBFcmVnb24gbm90ZWQgdGhhdCB0aGUg Y3VycmVudCBiZWhhdmlvciBvZiBgUmFjdG9yLm1ha2Vfc2hhcmVhYmxlKHByb2Nfb2JqKWAgY2Fu IHN1cnByaXNlIHVzZXJzLiBXaGlsZSB0aGF0IGlzIHVuZGVyc3RhbmRhYmxlLCBSdWJ5IGFscmVh ZHkgaGFzIHNpbWlsYXIgKnN1cnByaXNlcyouDQoNCkZvciBpbnN0YW5jZToNCg0KYGBgcnVieQ0K UlNwZWMuZGVzY3JpYmUgJ2ZvbycgZG8NCiAgcCBzZWxmICM9PiBSU3BlYzo6RXhhbXBsZUdyb3Vw czo6Rm9vDQplbmQNCmBgYA0KDQpIZXJlLCBgc2VsZmAgaXMgaW1wbGljaXRseSByZXBsYWNlZCwg bGlrZWx5IHZpYSBgaW5zdGFuY2VfZXhlY2AuDQpUaGlzIGNhbiBiZSBzdXJwcmlzaW5nIGlmIG9u ZSBkb2VzIG5vdCBrbm93IHNlbGYgY2FuIGNoYW5nZSwgeWV0IGl0IGlzIGFjY2VwdGVkIGluIFJ1 YnkuDQpXZSB2aWV3IHRoZSBjdXJyZW50IHNpdHVhdGlvbiBhcyBhIHNpbWlsYXIga2luZCBvZiBz dXJwcmlzZS4NCg0KDQojIyMgMi4gRW5mb3JjZSBhIHN0cmljdCBydWxlIGZvciBub27igJFsZXhp Y2FsIHVzYWdlDQoNClRoZSBkaWZmaWN1bHR5IGlzIHRoYXQgaXQgaXMgaGFyZCB0byBrbm93IHdo aWNoIGJsb2NrIHdpbGwgYmVjb21lIHNoYXJlYWJsZSB1bmxlc3MgaXQgaXMgbGV4aWNhbGx5IHVz YWdlLg0KDQpgYGBydWJ5DQojICgxKSBPbiB0aGlzIGNvZGUsIGl0IGlzIGNsZWFyIHRoYXQgdGhl IGJsb2NrIHdpbGwgYmUgc2hhcmVhYmxlIGJsb2NrOg0KDQphID0gNDINClJhY3Rvci5zaGFyYWJs ZV9wcm9jew0KICBwIGENCn0NCg0KIyAoMikgT24gdGhpcyBjb2RlLCBpdCBpcyBub3QgY2xlYXIg dGhhdCB0aGUgYmxvY2sgYmVjb21lcyBzaGFyYWJsZSBvciBub3QNCmdldCBwYXRoIGRvDQogIHAg YQ0KZW5kDQoNCiMgKDMpIE9uIHRoaXMgY29kZSwgaXQgaGFzIG5vIHByb2JsZW0gYmVjYXVzZQ0K Z2V0ICcvaGVsbG8nIGRvDQogICJ3b3JsZCINCmVuZA0KYGBgDQoNClRoZSBpZGVhIGlzIHRvIGFs bG93IGFjY2Vzc2luZyBjYXB0dXJlZCBvdXRlciB2YXJpYWJsZXMgb25seSBmb3IgbGV4aWNhbGx5 IGV4cGxpY2l0IHVzZXMgb2YgYFJhY3Rvci5zaGFyZWFibGVfcHJvY2AgYXMgaW4gKDEpLCBhbmQg dG8gcmFpc2UgYW4gZXJyb3IgZm9yIG5vbuKAkWxleGljYWwgY2FzZXMgYXMgaW4gKDIpLg0KU28g dGhlIGV4YW1wbGUgKDMpIGlzIGFsbG93ZWQgaWYgdGhlIGJsb2NrIGJlY29tZXMgc2hhcmFibGUg b3Igbm90Lg0KDQpUaGUgc3RyaWN0IHJ1bGUgaXMgc2FtZSBhcyBgUmFjdG9yLm5ld2AgYmxvY2sg cnVsZS4gDQoNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGlu ZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5k IGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUg aW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3Jl Lm1sLnJ1YnktbGFuZy5vcmcvCg==