[ruby-core:121560] [Ruby Feature#21221] Proposal to upstream ZJIT
From:
"maximecb (Maxime Chevalier-Boisvert) via ruby-core" <ruby-core@...>
Date:
2025-04-07 18:27:57 UTC
List:
ruby-core #121560
SXNzdWUgIzIxMjIxIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IG1heGltZWNiIChNYXhpbWUgQ2hldmFs aWVyLUJvaXN2ZXJ0KS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KRmVhdHVyZSAjMjEyMjE6IFByb3Bvc2FsIHRvIHVwc3RyZWFtIFpKSVQNCmh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8yMTIyMQ0KDQoqIEF1dGhvcjogbWF4aW1lY2IgKE1heGlt ZSBDaGV2YWxpZXItQm9pc3ZlcnQpDQoqIFN0YXR1czogT3Blbg0KKiBBc3NpZ25lZTogbWF4aW1l Y2IgKE1heGltZSBDaGV2YWxpZXItQm9pc3ZlcnQpDQoqIFRhcmdldCB2ZXJzaW9uOiAzLjUNCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQmFja2dyb3VuZA0KDQpG b3IgdGhlIHBhc3QgMyBtb250aHMsIHRoZSBZSklUIHRlYW0gYXQgU2hvcGlmeSBoYXMgYmVlbiB3 b3JraW5nIG9uIGEgbmV4dC1nZW5lcmF0aW9uIFJ1YnkgSklULCB3aGljaCB3ZSByZWZlciB0byBh cyBaSklULiAgVGhpcyBuZXcgY29tcGlsZXIgaXMgY3VycmVudGx5IGJlaW5nIGRldmVsb3BlZCBp biBhIHByaXZhdGUgZm9yaywgd2l0aCB0aGUgaG9wZSB0aGF0IHdlIGNhbiBldmVudHVhbGx5IHVw c3RyZWFtIGl0IGludG8gcnVieS9ydWJ5LiBNYXhpbWUgQ2hldmFsaWVyLUJvaXN2ZXJ0IHdpbGwg Z2l2ZSBhIHRhbGsgYXQgUnVieUthaWdpIDIwMjUgdG8gb2ZmaWNpYWxseSBhbm5vdW5jZSB0aGUg cHJvamVjdCB0byB0aGUgUnVieSBjb21tdW5pdHkgYW5kIHRoZSBicm9hZGVyIHB1YmxpYy4NCg0K IyBEZXNpZ24gb2YgWkpJVA0KDQpZSklUIGNvbXBpbGVzIFlBUlYgYnl0ZWNvZGUgbW9yZSBvciBs ZXNzIGRpcmVjdGx5IHRvIG1hY2hpbmUgY29kZS4gVGhpcyBoYXMgdGhlIGJlbmVmaXQgdGhhdCBZ SklUIGNvbXBpbGVzIGNvZGUgZmFzdCBhbmQgdGhhdCBpdOKAmXMgYSByZWxhdGl2ZWx5IHNpbXBs ZSBhcmNoaXRlY3R1cmUsIHdoaWNoIHdhcyBoZWxwZnVsIGluIGJ1aWxkaW5nIHRoZSBjb21waWxl ciBpbmNyZW1lbnRhbGx5LiBUaGUgZG93bnNpZGUgaXMgdGhhdCBZSklUIGlzIGRpZmZpY3VsdCB0 byBleHRlbmQgYW5kIGJ1aWxkIHVwb24uIEluIHBhcnRpY3VsYXIsIFlKSVQgaXMgdmVyeSBsaW1p dGVkIHdoZW4gaXQgY29tZXMgdG8gb3B0aW1pemF0aW9ucyB0aGF0IGNyb3NzIFlBUlYgaW5zdHJ1 Y3Rpb24gYm91bmRhcmllcy4gV2XigJl2ZSBrbm93biBmb3Igc29tZSB0aW1lIHRoYXQgaW4gb3Jk ZXIgdG8gdW5sb2NrIGhpZ2hlciBsZXZlbHMgb2YgcGVyZm9ybWFuY2UsIGEgUnVieSBKSVQgd291 bGQgbmVlZCB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIG1vcmUgYWdncmVzc2l2ZSBpbmxpbmluZywg YnV0IGl0IGlzIGNoYWxsZW5naW5nIHRvIGNsZWFubHkgZG8gdGhpcyBpbiBZSklULg0KDQpUaGUg bWFpbiBpbm5vdmF0aW9uIG9mIFpKSVQgaXMgdGhhdCBpdCBoYXMgaXRzIG93biBTdGF0aWMgU2lu Z2xlIEFzc2lnbm1lbnQgKFNTQSkgSW50ZXJtZWRpYXRlIFJlcHJlc2VudGF0aW9uIChJUikuIFlB UlYgYnl0ZWNvZGUgaXMgY29udmVydGVkIGludG8gdGhpcyBJUiwgd2hpY2ggY2FuIHRoZW4gYmUg b3B0aW1pemVkIHVzaW5nIG11bHRpcGxlIG9wdGltaXphdGlvbiBwYXNzZXMuIFRoZXNlIHBhc3Nl cyBjYW4gYmUgb3J0aG9nb25hbCBhbmQgbW9kdWxhciB0byBzb21lIGRlZ3JlZSwgd2hpY2ggbWFr ZXMgdGhlIGRlc2lnbiBvZiB0aGUgY29tcGlsZXIgZWFzaWVyIHRvIHJlYXNvbiBhYm91dCwgZWFz aWVyIHRvIGV4dGVuZCBhbmQgYWxzbyBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgaGF2aW5n IG11bHRpcGxlIEpJVCBjb21waWxhdGlvbiB0aWVycyBpbiB0aGUgZnV0dXJlLCB3aGljaCBpcyBz b21ldGhpbmcgdGhhdCBib3RoIE1hdHogYW5kIFRha2FzaGkgS29rdWJ1biBoYXZlIGhvcGVkIHRv IHNlZSBpbiBhIFJ1YnkgSklUIGZvciBzb21lIHRpbWUuDQoNCkluIGFkZGl0aW9uIHRvIHRoaXMs IHdlIGFyZSBtb3ZpbmcgdG8gYSBtb3JlIHRyYWRpdGlvbmFsIG1ldGhvZC1iYXNlZCBKSVQgY29t cGlsZXIgZGVzaWduLiBJIChNYXhpbWUpIGhhdmUgaGFkIHRoZSBjaGFuY2UgdG8gaGVscCBidWls ZCBhbmQgZGVwbG95IExhenkgQmFzaWMgQmxvY2sgVmVyc2lvbmluZyAoTEJCViksIGFuIG9mZnNo b290IG9mIG15IFBoRCByZXNlYXJjaCBpbnRvIGEgcHJvZHVjdGlvbiBjb21waWxlciwgYW4gb3Bw b3J0dW5pdHkgd2hpY2ggSeKAmW0gdmVyeSB0aGFua2Z1bCBmb3IuIEhvd2V2ZXIsIEkgZmVlbCBs aWtlIFpKSVQgbWlnaHQgYmVuZWZpdCBmcm9tIGhhdmluZyBhIGNvbXBpbGVyIGFyY2hpdGVjdHVy ZSB0aGF0IGlzIG1vcmUg4oCcc3RhbmRhcmTigJ0uIFdpdGggWUpJVCwgd2XigJl2ZSBoYWQgdmVy eSBmZXcgY29udHJpYnV0aW9ucyBmcm9tIFJ1YnkgQ29yZSBjb250cmlidXRvcnMgb3V0c2lkZSBv ZiBTaG9waWZ5LiBJ4oCZbSBob3BpbmcgdGhhdCBpZiB3ZSBidWlsZCBhIGNvbXBpbGVyIHdpdGgg YW4gYXJjaGl0ZWN0dXJlIHRoYXQgaXMgbW9yZSB0ZXh0Ym9vay1saWtlLCB3ZSBjb3VsZCBoYXZl IGEgcHJvamVjdCB0aGF0IGlzIG1vcmUgYXBwcm9hY2hhYmxlIGZvciBuZXcgY29udHJpYnV0b3Jz IGFuZCB0aHVzIG1vcmUgaW5jbHVzaXZlIG9mIG90aGVyIFJ1YnkgY29yZSBtZW1iZXJzIG91dHNp ZGUgb2YgU2hvcGlmeSwgd2hpY2ggd291bGQgYmUgZ3JlYXQgZm9yIHRoZSBsb25nLXRlcm0gZnV0 dXJlIG9mIFJ1YnkuDQoNCiMgQ3VycmVudCBTdGF0dXMNCg0KSXQgaXMgc3RpbGwgZWFybHkgZGF5 cyBmb3IgWkpJVC4gV2UgYXJlIG9ubHkgMyBtb250aHMgaW50byBpdHMgZGV2ZWxvcG1lbnQuIEFz IHN1Y2gsIFpKSVQgaXMgY3VycmVudGx5IHZlcnkgbXVjaCBpbmNvbXBsZXRlIGFuZCBjYW4gb25s eSBydW4gc21hbGwgdGVzdHMgYW5kIG1pY3JvYmVuY2htYXJrcy4gTm9uZXRoZWxlc3MsIHdlIHdv dWxkIHN0aWxsIGxpa2UgdG8gdXBzdHJlYW0gaXQgYmVjYXVzZSBkZXZlbG9waW5nIGluIGEgZm9y ayBtYWtlcyBpdCBtdWNoIGhhcmRlciB0byBrZWVwIHVwIHdpdGggdXBzdHJlYW0gY2hhbmdlcyBp biBSdWJ5LiBXZeKAmXJlIGhvcGluZyB0byBicmluZyBpdCBtdWNoIGZhcnRoZXIgYWxvbmcgdGhp cyB5ZWFyLCBhbmQgd2UgYmVsaWV2ZSB0aGF0IFpKSVQgd2lsbCBiZSBmYWlybHkgdW5pbnRydXNp dmUgaW4gdGhlIHVwc3RyZWFtIHJlcG8gZ2l2ZW4gdGhhdCBpdCB3aWxsIGhhdmUgbm8gbW9yZSBk ZXBlbmRlbmNpZXMgdGhhbiBZSklULCBhbmQgaXQgd2lsbCBhbHNvIGJlIGd1YXJkZWQgYnkgYSBj b21tYW5kLWxpbmUgc3dpdGNoLg0KUnVieSAzLjUgLyAyMDI1IE9iamVjdGl2ZXMNCk91ciBnb2Fs IGZvciB0aGUgZW5kIG9mIHRoZSB5ZWFyIGlzIHRvIGJyaW5nIFpKSVQgYXBwcm94aW1hdGVseSBh dCBwYXJpdHkgd2l0aCBZSklUIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlLiBXZSBleHBlY3QgdGhh dCBpdCB3aWxsIGJlIHJlbGF0aXZlbHkgZWFzeSB0byBvdXRwZXJmb3JtIFlKSVQgb24gc21hbGwg bWljcm9iZW5jaG1hcmtzLCBidXQgdGhhdCBtYXRjaGluZyBZSklU4oCZcyBwZXJmb3JtYW5jZSBh Y3Jvc3MgbGFyZ2VyIFJ1YnkgcHJvZ3JhbXMgd2lsbCB0YWtlIHNldmVyYWwgbW9udGhzIGJlY2F1 c2Ugb2YgdGhlIGJyZWFkdGggb2YgUnVieSBmZWF0dXJlcyB1c2VkLiBJdCBpcyBub24tdHJpdmlh bCB0byBlZmZpY2llbnRseSBoYW5kbGUgbWVnYW1vcnBoaWMgY2FsbCBzaXRlcyBtYWtpbmcgdXNl IG9mIGtleXdvcmQgYXJndW1lbnRzLCBmb3IgaW5zdGFuY2UuDQoNCkl0IHNob3VsZCBub3QgYmUg ZGlmZmljdWx0IHRvIGJyaW5nIFpKSVQgYXQgcGFyaXR5IHdpdGggWUpJVCBpbiB0ZXJtcyBvZiBz dXBwb3J0ZWQvdW5zdXBwb3J0ZWQgUnVieSBmZWF0dXJlcywgYmVjYXVzZSB0aGUgSklUIGNvbXBp bGVyIGNhbiBhbHdheXMgZmFsbCBiYWNrIHRvIHRoZSBpbnRlcnByZXRlciBmb3IgYW55IGZlYXR1 cmUgaXQgZG9lc27igJl0IHN1cHBvcnQuDQoNClNvbWUgZmVhdHVyZXMgd2UgYWltIHRvIGltcGxl bWVudC9jb21wbGV0ZSBpbiB0aW1lIGZvciBSdWJ5IDMuNToNCi0gRmFzdCBKSVQtdG8tSklUIGNh bGxzIHVzaW5nIGEgY3VzdG9tIGNhbGxpbmcgY29udmVudGlvbg0KLSBQb2x5bW9ycGhpYyBpbmxp bmUgY2FjaGVzDQotIFN1cHBvcnQgZm9yIGZ1bGwgZGVvcHRpbWl6YXRpb24gKGUuZy4gZm9yIFRy YWNlUG9pbnQpDQotIEFiaWxpdHkgdG8gZGVvcHRpbWl6ZSBzaW5nbGUgZnVuY3Rpb25zIChlLmcu IG1ldGhvZCByZWRlZmluZWQsIGNhbGxlciBnZXRzIGRlb3B0aW1pemVkKQ0KLSBTaWRlLWV4aXQg bXVjaCBsZXNzIG9mdGVuIHRoYW4gWUpJVCAoY3J1Y2lhbCBmb3IgZ29vZCBwZXJmb3JtYW5jZSkN Ci0gQWJpbGl0eSB0byBzZXJpYWxpemUgbWFjaGluZSBjb2RlDQotIERlYWQtY29kZSBlbGltaW5h dGlvbiwgY29uc3RhbnQgcHJvcGFnYXRpb24NCi0gRnVzaW9uIG9mIGNvbXBhcmlzb24gYW5kIGJy YW5jaCBpbnN0cnVjdGlvbnMNCg0KU3RyZXRjaCBnb2FscyBhbmQgbG9uZ2VyLXRlcm0gZ29hbHM6 DQotIFN1cHBvcnQgdHdvIEpJVCBjb21waWxhdGlvbiB0aWVycw0KLSBBZ2dyZXNzaXZlIGlubGlu aW5nIG9mIFJ1YnkgY2FsbHMNCi0gT3B0aW1pemUgR0MgYWxsb2NhdGlvbnMNCi0gQWxsb2NhdGlv biBlbGlzaW9uIHRvIHNwZWVkIHVwIGFsbG9jYXRpb25zIGFuZCByZWR1Y2UgR0MgcHJlc3N1cmUN Cg0KV2UgYXJlIGN1cnJlbnRseSB1c2luZyBhIG1vZGlmaWVkL2ltcHJvdmVkIHZlcnNpb24gb2Yg dGhlIFlKSVQgYmFja2VuZCB0byBnZW5lcmF0ZSBtYWNoaW5lIGNvZGUuIFRoaXMgbWVhbnMgWkpJ VCBpcyBjb21pbmcgb3V0IG9mIHRoZSBnYXRlIHdpdGggc3VwcG9ydCBmb3IgYm90aCB4ODYtNjQg YW5kIGFybTY0LCBhcyBZSklUIGRpZC4NCg0KVGhlIGFiaWxpdHkgdG8gc2VyaWFsaXplIG1hY2hp bmUgY29kZSBpcyBzb21ldGhpbmcgdGhhdCB3ZSBob3BlIHRvIGJlIGFibGUgdG8gaW1wbGVtZW50 IGluIFpKSVQuIFRoaXMgd291bGQgYWxsb3cgdXMgdG8gc2F2ZSBjb21waWxlZCBjb2RlIGFuZCBy ZXVzZSBpdCBpbiBmdXR1cmUgZXhlY3V0aW9ucyBvZiBhIGdpdmVuIHByb2dyYW0uIFRoaXMgd291 bGQgZW5hYmxlIGZhc3RlciBzdGFydHVwIHRpbWVzLiBXZSBrbm93IGZyb20gZXhwZXJpZW5jZSB0 aGF0IHRoaXMgaXMgaW1wb3J0YW50IGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHN1Y2ggYXMg U2hvcGlmeeKAmXMgd2hlcmUgY29kZSBjYW4gYmUgKHJlKWRlcGxveWVkIHNldmVyYWwgdGltZXMg YSBkYXksIGJ1dCBpdCBhbHNvIG1ha2VzIHNlbnNlIG9uIGEgc21hbGxlciBzY2FsZSB3aGVyZSBp bmRpdmlkdWFscyBydW4gY29kZSBvbiBhIHBlcnNvbmFsIGNvbXB1dGVyIGFuZCBjYW4gYmVuZWZp dCBmcm9tIHNvZnR3YXJlIHN0YXJ0aW5nIHVwIGZhc3Rlci4NCg0KIyBNZXJnaW5nIExvZ2lzdGlj cw0KDQpMaWtlIGl0cyBwcmVkZWNlc3NvciwgWkpJVCBpcyB3cml0dGVuIGluIFJ1c3QsIGFuZCBo YXMgdmVyeSBmZXcgZGVwZW5kZW5jaWVzIGJ5IGRlc2lnbi4gSW4gcGFydGljdWxhciwgdGhlcmUg YXJlIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcyBvdXRzaWRlIG9mIHRoZSBSdXN0IGNvbXBpbGVy IChydXN0YykgdG8gYnVpbGQgWkpJVCB3aXRoIFJ1YnkuDQoNCkdpdmVuIHRoYXQgaXQgaXMgdmVy eSBlYXJseSBpbiBaSklU4oCZcyBkZXZlbG9wbWVudCBwcm9jZXNzLCB3ZSB3b3VsZCBsaWtlIHRv IHVwc3RyZWFtIFpKSVQgd2l0aG91dCByZXBsYWNpbmcgWUpJVCwgc28gYXMgdG8gZW5zdXJlIHRo YXQgUnVieSAzLjUgc2hpcHMgd2l0aCBhIHdlbGwtdGVzdGVkLCBwcm9kdWN0aW9uLXJlYWR5IEpJ VC4gQXMgd2l0aCBZSklULCB3ZSB3b3VsZCBsaWtlIHRvIHN1Z2dlc3QgdGhhdCBaSklUIHNob3Vs ZCBiZSBndWFyZGVkIGJ5IGEgLS16aml0IGNvbW1hbmQtbGluZSBzd2l0Y2guIFNpbmNlIHVzaW5n IHRoZSBjb21waWxlciBpcyBvcHQtaW4sIHRoZXJlIGlzIHZlcnkgbGl0dGxlIHJpc2sgZm9yIHRo ZSBhdmVyYWdlIFJ1YnkgdXNlci4gV2UgY2FuIGFkanVzdCB0aGUgd2F5IHdlIGFkdmVydGlzZSBa SklUIGF0IHRoZSB0aW1lIG9mIHRoZSBSdWJ5IDMuNSByZWxlYXNlIGFuZCBob3cgbXVjaCB3ZSB3 YW50IHRoZSBicm9hZGVyIFJ1YnkgY29tbXVuaXR5IHRvIHRyeSBpdCBiYXNlZCBvbiBpdHMgbGV2 ZWwgb2YgbWF0dXJpdHkgYXQgdGhhdCBwb2ludC4gSWYgWkpJVCBpcyBub3Qgc3VmZmljaWVudGx5 IG1hdHVyZSwgd2UgY2FuIHNpbXBseSB0ZWxsIHBlb3BsZSB0aGF0IGl0IGlzIGV4cGVyaW1lbnRh bCBhbmQgb25seSBmb3IgZW50aHVzaWFzdHMsIGFuZCByZWNvbW1lbmQgdGhhdCB0aGV5IHVzZSBZ SklUIGluc3RlYWQuDQoNCldlIGFyZSBjdXJyZW50bHkgZGV2ZWxvcGluZyBaSklUIHVzaW5nIFJ1 c3QgMS44NS4wIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgMjAyNCBlZGl0aW9uIG9mIFJ1c3QuIFRo aXMgc2hvdWxkbuKAmXQgYmUgYSBwcm9ibGVtIHNpbmNlIFJ1c3QgY2FuIGVhc2lseSBiZSBpbnN0 YWxsZWQgdXNpbmcgdGhlIHJ1c3R1cCB0b29sLCBhbmQgaWYgYSBzdWZmaWNpZW50bHkgcmVjZW50 IFJ1c3QgY29tcGlsZXIgaXMgbm90IGF2YWlsYWJsZSwgQ1J1YnkgY2FuIHN0aWxsIGJ1aWxkIHdp dGhvdXQgWkpJVCwgb3Igd2l0aCBZSklUIG9ubHkgKFlKSVQgcmVxdWlyZXMgcnVzdGMgMS41OC4w KS4NCg0KSW4gdGVybXMgb2YgYnVpbGQgc3RyYXRlZ3ksIGlmIGEgcmVjZW50IHZlcnNpb24gb2Yg dGhlIFJ1c3QgY2FyZ28gdG9vbCBpcyBpbnN0YWxsZWQsIGl0IG1heSBiZSBwb3NzaWJsZSB0byBh dXRvbWF0aWNhbGx5IGJ1aWxkIGJvdGggWUpJVCBhbmQgWkpJVCBpbiB0aGUgc2FtZSBiaW5hcnku IE90aGVyd2lzZSwgWUpJVCBjb3VsZCBiZSBidWlsdCB3aXRob3V0IFpKSVQgYXMgbG9uZyBhcyBy dXN0YyAxLjU4LjAgb3IgbW9yZSBhIHJlY2VudCB2ZXJzaW9uIGlzIGF2YWlsYWJsZS4gSWYgbmVp dGhlciBpcyBhdmFpbGFibGUsIHRoZW4gQ1J1YnkgY2FuIGJlIGJ1aWx0IHdpdGhvdXQgZWl0aGVy IEpJVCBhcyBhIGZhbGxiYWNrLiBBbm90aGVyIHBvc3NpYmlsaXR5LCBpZiB3ZSB3YW50IHRvIGJl IG1vcmUgY29uc2VydmF0aXZlIGZvciBSdWJ5IDMuNSwgaXMgdG8gb25seSBlbmFibGUgYnVpbGRp bmcgWkpJVCBpZiBjb25maWd1cmUgaXMgcnVuIHdpdGggYW4gZXhwbGljaXQgLS1lbmFibGUtempp dC4gV2UgY2FuIHBvdGVudGlhbGx5IG1ha2UgdGhpcyBkZWNpc2lvbiBjbG9zZXIgdG8gdGhlIGVu ZCBvZiB0aGUgeWVhci4NCg0KVGhlIHRpbWVsaW5lIGZvciB1cHN0cmVhbWluZyB3b3VsZCBiZSBp biB0aGUgNCB0byA2IHdlZWtzIGZvbGxvd2luZyBSdWJ5S2FpZ2kuIFRvIG1lcmdlIFpKSVQgdXBz dHJlYW0sIHdlIHdpbGwgcmViYXNlIHRoZSBjb21taXRzIG9uIHJ1YnkvcnVieeKAmHMgbWFzdGVy IGJyYW5jaCBhbmQgZ2VuZXJhbGx5IHByZXNlcnZlIHRoZSBjb21taXQgaGlzdG9yeS4gU29tZSBj b21taXQgbWVzc2FnZXMgd2lsbCBiZSBjbGVhbmVkIHVwIGFuZCBpbXByb3ZlZCBwcmlvciB0byBt ZXJnaW5nLiBTb21lIGNvbW1pdHMgd2hpY2ggYXJlIGxvZ2ljYWxseSByZWxhdGVkIG1heSBiZSBz cXVhc2hlZCB0b2dldGhlci4gV2Ugd2lsbCBvbmx5IGVuYWJsZSBhIHNtYWxsIHN1YnNldCBvZiBD SSB0ZXN0cyBmb3IgWkpJVCBhdCBmaXJzdCwgc28gYXMgdG8ga2VlcCBhbGwgdGVzdHMgcGFzc2lu Zy4NCg0KDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KIF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5n IGxpc3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQg YW4gZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBp bmZvIC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUu bWwucnVieS1sYW5nLm9yZy8=