[ruby-core:121726] [Ruby Feature#21221] Proposal to upstream ZJIT
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2025-04-24 17:50:32 UTC
List:
ruby-core #121726
SXNzdWUgIzIxMjIxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpJIChtaXMpdW5kZXJzdG9vZCBzaWRlLWV4aXQgYXMgYW55dGhpbmcgZ2V0dGluZyBvdXQg b2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgd2hldGhlciB0aGF0J3MganVtcGluZyB0 byBvdGhlciBjb21waWxlZCBjb2RlIG9yIGRlb3B0aW1pemluZyB0byBpbnRlcnByZXRlci4NCkJ1 dCBpdCdzIGNsZWFyIGl0J3MgbWVhbnQgb25seSBhcyBkZW9wdGltaXppbmcgdG8gaW50ZXJwcmV0 ZXIgaW4gYm90aCBsYXRlc3QgY29tbWVudHMuDQpJbiBteSByZXBseSBJIHdhcyBldmVuIG1vc3Rs eSBmb2N1c2luZyBvbiB0aGUgImp1bXBpbmcgdG8gb3RoZXIgY29tcGlsZWQgY29kZSIgcGFydCBv ZiBpdC4NClByb2JhYmx5IHRoYXQgY2xhcmlmaWVzIHRoZSBhYm92ZS4NCg0KSU9XLCB0cmFjaW5n IGFuZCBJIHRoaW5rIExCQlYgYXMgd2VsbCBvY2N1ciBzb21lIG92ZXJoZWFkIGZvciBtdWx0aXBs ZSBmcmVxdWVudCBwYXRocyB3aXRoaW4gYSBtZXRob2QgYmVjYXVzZSBvZiB0aGUgbmVlZCB0byBq dW1wIGJldHdlZW4gbXVsdGlwbGUgImNvbXBpbGVkIHRyYWNlcyIvY29tcGlsYXRpb24gdW5pdHMg KGFuZCBzZXBhcmF0ZSBjb21waWxhdGlvbiB1bml0cyBtZWFucyBsZXNzIG9wdGltYWwgcmVnaXN0 ZXIgYWxsb2NhdGlvbiwgZXRjIGFzIHNvbWUga25vd2xlZGdlIGlzIGxvc3QgZnJvbSBvbmUgY29t cGlsYXRpb24gdG8gdGhlIG90aGVyIHdoZW4gY29tcGlsaW5nKS4NCg0KPiBJZiB5b3UgcHJvZmls ZSB5b3VyIGludGVycHJldGVyLCB5b3UgcnVuIGludG8gdGhlIGlzc3VlIHRoYXQgc29tZSBicmFu Y2hlcyBtYXkganVzdCBuZXZlciBoYXZlIGJlZW4gZXhlY3V0ZWQgd2hlbiB5b3UgaGl0IHlvdXIg dGhyZXNob2xkIGFuZCBkZWNpZGUgdG8gSklUIHRoZSBtZXRob2QsIHNvIHlvdSBoYXZlIGluY29t cGxldGUgdHlwZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGF0aHMgbm90IHlldCB0YWtlbi4NCg0K VGhlIEpJVCBjYW4gdGhlbiB0dXJuIHRoYXQgcGF0aCBpbiBhIGRlb3B0aW1pemF0aW9uIGFuZCB0 aGVuIHRoYXQgZG9lc24ndCBhZmZlY3QgdGhlIHByZWNpc2lvbiBvZiB0eXBlcy4gaS5lLiB0aGUg KGJyYW5jaCkgcHJvZmlsZSBrbm93cyBpdCdzIGRlYWQgY29kZS4gSXQgZGVwZW5kcyBvbiBoYXZp bmcgYnJhbmNoIHByb2ZpbGVzIHRob3VnaC4NCg0KPiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgc3Ry aWN0bHkgdHJ1ZS4gT25lIGNvdWxkIGltYWdpbmUgZG9pbmcgTEJCViBpbiAidHJhY2luZyBtb2Rl IiB3aXRob3V0IGdlbmVyYXRpbmcgYW55IGNvZGUsIGFuZCB0aGVuIGdlbmVyYXRpbmcgY29kZSBh ZnRlciBoaXR0aW5nIGEgdGhyZXNob2xkLg0KDQpNbWggYnV0IHRoZW4geW91J2QgbmVlZCBhIHRy YWNpbmcgaW50ZXJwcmV0ZXIgKHNlZW1zIGEgbm9uLXRyaXZpYWwgYWRkaXRpb24gYW5kIGtpbmRh IHNlcGFyYXRlIGZyb20gTEJCViksIG9yIGEgbW9yZSBwcmVjaXNlbHkgYSB2YXJpYW50IG9mIHRo ZSBpbnRlcnByZXRlciB3aGljaCBjYWxscyBiYWNrcyBpbnRvIHRoZSBjb21waWxlciBvbiBicmFu Y2hlcyAodGhhdCdzIHNpbXBsZXIpLiBHb29kIHBvaW50LCB0aGF0IHdvdWxkIGdpdmUgYSBzY29w ZSBvZiBhIHRyYWNlL3NlcXVlbmNlIG9mIGJhc2ljIGJsb2NrcyB3aXRob3V0IG5lZWRpbmcgdG8g Z2VuZXJhdGUgbmF0aXZlIGNvZGUgdHdpY2UuIEluIHRoYXQgc2NlbmFyaW8gaXQgZmVlbHMgdmVy eSBjbG9zZSB0byByZWd1bGFyIHRyYWNpbmcuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCkZlYXR1cmUgIzIxMjIxOiBQcm9wb3NhbCB0byB1cHN0cmVhbSBaSklU DQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjEyMjEjY2hhbmdlLTExMjc3OQ0K DQoqIEF1dGhvcjogbWF4aW1lY2IgKE1heGltZSBDaGV2YWxpZXItQm9pc3ZlcnQpDQoqIFN0YXR1 czogT3Blbg0KKiBBc3NpZ25lZTogbWF4aW1lY2IgKE1heGltZSBDaGV2YWxpZXItQm9pc3ZlcnQp DQoqIFRhcmdldCB2ZXJzaW9uOiAzLjUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCiMgQmFja2dyb3VuZA0KDQpGb3IgdGhlIHBhc3QgMyBtb250aHMsIHRoZSBZSklU IHRlYW0gYXQgU2hvcGlmeSBoYXMgYmVlbiB3b3JraW5nIG9uIGEgbmV4dC1nZW5lcmF0aW9uIFJ1 YnkgSklULCB3aGljaCB3ZSByZWZlciB0byBhcyBaSklULiAgVGhpcyBuZXcgY29tcGlsZXIgaXMg Y3VycmVudGx5IGJlaW5nIGRldmVsb3BlZCBpbiBhIHByaXZhdGUgZm9yaywgd2l0aCB0aGUgaG9w ZSB0aGF0IHdlIGNhbiBldmVudHVhbGx5IHVwc3RyZWFtIGl0IGludG8gcnVieS9ydWJ5LiBNYXhp bWUgQ2hldmFsaWVyLUJvaXN2ZXJ0IHdpbGwgZ2l2ZSBhIHRhbGsgYXQgUnVieUthaWdpIDIwMjUg dG8gb2ZmaWNpYWxseSBhbm5vdW5jZSB0aGUgcHJvamVjdCB0byB0aGUgUnVieSBjb21tdW5pdHkg YW5kIHRoZSBicm9hZGVyIHB1YmxpYy4NCg0KIyBEZXNpZ24gb2YgWkpJVA0KDQpZSklUIGNvbXBp bGVzIFlBUlYgYnl0ZWNvZGUgbW9yZSBvciBsZXNzIGRpcmVjdGx5IHRvIG1hY2hpbmUgY29kZS4g VGhpcyBoYXMgdGhlIGJlbmVmaXQgdGhhdCBZSklUIGNvbXBpbGVzIGNvZGUgZmFzdCBhbmQgdGhh dCBpdOKAmXMgYSByZWxhdGl2ZWx5IHNpbXBsZSBhcmNoaXRlY3R1cmUsIHdoaWNoIHdhcyBoZWxw ZnVsIGluIGJ1aWxkaW5nIHRoZSBjb21waWxlciBpbmNyZW1lbnRhbGx5LiBUaGUgZG93bnNpZGUg aXMgdGhhdCBZSklUIGlzIGRpZmZpY3VsdCB0byBleHRlbmQgYW5kIGJ1aWxkIHVwb24uIEluIHBh cnRpY3VsYXIsIFlKSVQgaXMgdmVyeSBsaW1pdGVkIHdoZW4gaXQgY29tZXMgdG8gb3B0aW1pemF0 aW9ucyB0aGF0IGNyb3NzIFlBUlYgaW5zdHJ1Y3Rpb24gYm91bmRhcmllcy4gV2XigJl2ZSBrbm93 biBmb3Igc29tZSB0aW1lIHRoYXQgaW4gb3JkZXIgdG8gdW5sb2NrIGhpZ2hlciBsZXZlbHMgb2Yg cGVyZm9ybWFuY2UsIGEgUnVieSBKSVQgd291bGQgbmVlZCB0aGUgYWJpbGl0eSB0byBwZXJmb3Jt IG1vcmUgYWdncmVzc2l2ZSBpbmxpbmluZywgYnV0IGl0IGlzIGNoYWxsZW5naW5nIHRvIGNsZWFu bHkgZG8gdGhpcyBpbiBZSklULg0KDQpUaGUgbWFpbiBpbm5vdmF0aW9uIG9mIFpKSVQgaXMgdGhh dCBpdCBoYXMgaXRzIG93biBTdGF0aWMgU2luZ2xlIEFzc2lnbm1lbnQgKFNTQSkgSW50ZXJtZWRp YXRlIFJlcHJlc2VudGF0aW9uIChJUikuIFlBUlYgYnl0ZWNvZGUgaXMgY29udmVydGVkIGludG8g dGhpcyBJUiwgd2hpY2ggY2FuIHRoZW4gYmUgb3B0aW1pemVkIHVzaW5nIG11bHRpcGxlIG9wdGlt aXphdGlvbiBwYXNzZXMuIFRoZXNlIHBhc3NlcyBjYW4gYmUgb3J0aG9nb25hbCBhbmQgbW9kdWxh ciB0byBzb21lIGRlZ3JlZSwgd2hpY2ggbWFrZXMgdGhlIGRlc2lnbiBvZiB0aGUgY29tcGlsZXIg ZWFzaWVyIHRvIHJlYXNvbiBhYm91dCwgZWFzaWVyIHRvIGV4dGVuZCBhbmQgYWxzbyBvcGVucyB1 cCB0aGUgcG9zc2liaWxpdHkgb2YgaGF2aW5nIG11bHRpcGxlIEpJVCBjb21waWxhdGlvbiB0aWVy cyBpbiB0aGUgZnV0dXJlLCB3aGljaCBpcyBzb21ldGhpbmcgdGhhdCBib3RoIE1hdHogYW5kIFRh a2FzaGkgS29rdWJ1biBoYXZlIGhvcGVkIHRvIHNlZSBpbiBhIFJ1YnkgSklUIGZvciBzb21lIHRp bWUuDQoNCkluIGFkZGl0aW9uIHRvIHRoaXMsIHdlIGFyZSBtb3ZpbmcgdG8gYSBtb3JlIHRyYWRp dGlvbmFsIG1ldGhvZC1iYXNlZCBKSVQgY29tcGlsZXIgZGVzaWduLiBJIChNYXhpbWUpIGhhdmUg aGFkIHRoZSBjaGFuY2UgdG8gaGVscCBidWlsZCBhbmQgZGVwbG95IExhenkgQmFzaWMgQmxvY2sg VmVyc2lvbmluZyAoTEJCViksIGFuIG9mZnNob290IG9mIG15IFBoRCByZXNlYXJjaCBpbnRvIGEg cHJvZHVjdGlvbiBjb21waWxlciwgYW4gb3Bwb3J0dW5pdHkgd2hpY2ggSeKAmW0gdmVyeSB0aGFu a2Z1bCBmb3IuIEhvd2V2ZXIsIEkgZmVlbCBsaWtlIFpKSVQgbWlnaHQgYmVuZWZpdCBmcm9tIGhh dmluZyBhIGNvbXBpbGVyIGFyY2hpdGVjdHVyZSB0aGF0IGlzIG1vcmUg4oCcc3RhbmRhcmTigJ0u IFdpdGggWUpJVCwgd2XigJl2ZSBoYWQgdmVyeSBmZXcgY29udHJpYnV0aW9ucyBmcm9tIFJ1Ynkg Q29yZSBjb250cmlidXRvcnMgb3V0c2lkZSBvZiBTaG9waWZ5LiBJ4oCZbSBob3BpbmcgdGhhdCBp ZiB3ZSBidWlsZCBhIGNvbXBpbGVyIHdpdGggYW4gYXJjaGl0ZWN0dXJlIHRoYXQgaXMgbW9yZSB0 ZXh0Ym9vay1saWtlLCB3ZSBjb3VsZCBoYXZlIGEgcHJvamVjdCB0aGF0IGlzIG1vcmUgYXBwcm9h Y2hhYmxlIGZvciBuZXcgY29udHJpYnV0b3JzIGFuZCB0aHVzIG1vcmUgaW5jbHVzaXZlIG9mIG90 aGVyIFJ1YnkgY29yZSBtZW1iZXJzIG91dHNpZGUgb2YgU2hvcGlmeSwgd2hpY2ggd291bGQgYmUg Z3JlYXQgZm9yIHRoZSBsb25nLXRlcm0gZnV0dXJlIG9mIFJ1YnkuDQoNCiMgQ3VycmVudCBTdGF0 dXMNCg0KSXQgaXMgc3RpbGwgZWFybHkgZGF5cyBmb3IgWkpJVC4gV2UgYXJlIG9ubHkgMyBtb250 aHMgaW50byBpdHMgZGV2ZWxvcG1lbnQuIEFzIHN1Y2gsIFpKSVQgaXMgY3VycmVudGx5IHZlcnkg bXVjaCBpbmNvbXBsZXRlIGFuZCBjYW4gb25seSBydW4gc21hbGwgdGVzdHMgYW5kIG1pY3JvYmVu Y2htYXJrcy4gTm9uZXRoZWxlc3MsIHdlIHdvdWxkIHN0aWxsIGxpa2UgdG8gdXBzdHJlYW0gaXQg YmVjYXVzZSBkZXZlbG9waW5nIGluIGEgZm9yayBtYWtlcyBpdCBtdWNoIGhhcmRlciB0byBrZWVw IHVwIHdpdGggdXBzdHJlYW0gY2hhbmdlcyBpbiBSdWJ5LiBXZeKAmXJlIGhvcGluZyB0byBicmlu ZyBpdCBtdWNoIGZhcnRoZXIgYWxvbmcgdGhpcyB5ZWFyLCBhbmQgd2UgYmVsaWV2ZSB0aGF0IFpK SVQgd2lsbCBiZSBmYWlybHkgdW5pbnRydXNpdmUgaW4gdGhlIHVwc3RyZWFtIHJlcG8gZ2l2ZW4g dGhhdCBpdCB3aWxsIGhhdmUgbm8gbW9yZSBkZXBlbmRlbmNpZXMgdGhhbiBZSklULCBhbmQgaXQg d2lsbCBhbHNvIGJlIGd1YXJkZWQgYnkgYSBjb21tYW5kLWxpbmUgc3dpdGNoLg0KUnVieSAzLjUg LyAyMDI1IE9iamVjdGl2ZXMNCk91ciBnb2FsIGZvciB0aGUgZW5kIG9mIHRoZSB5ZWFyIGlzIHRv IGJyaW5nIFpKSVQgYXBwcm94aW1hdGVseSBhdCBwYXJpdHkgd2l0aCBZSklUIGluIHRlcm1zIG9m IHBlcmZvcm1hbmNlLiBXZSBleHBlY3QgdGhhdCBpdCB3aWxsIGJlIHJlbGF0aXZlbHkgZWFzeSB0 byBvdXRwZXJmb3JtIFlKSVQgb24gc21hbGwgbWljcm9iZW5jaG1hcmtzLCBidXQgdGhhdCBtYXRj aGluZyBZSklU4oCZcyBwZXJmb3JtYW5jZSBhY3Jvc3MgbGFyZ2VyIFJ1YnkgcHJvZ3JhbXMgd2ls bCB0YWtlIHNldmVyYWwgbW9udGhzIGJlY2F1c2Ugb2YgdGhlIGJyZWFkdGggb2YgUnVieSBmZWF0 dXJlcyB1c2VkLiBJdCBpcyBub24tdHJpdmlhbCB0byBlZmZpY2llbnRseSBoYW5kbGUgbWVnYW1v cnBoaWMgY2FsbCBzaXRlcyBtYWtpbmcgdXNlIG9mIGtleXdvcmQgYXJndW1lbnRzLCBmb3IgaW5z dGFuY2UuDQoNCkl0IHNob3VsZCBub3QgYmUgZGlmZmljdWx0IHRvIGJyaW5nIFpKSVQgYXQgcGFy aXR5IHdpdGggWUpJVCBpbiB0ZXJtcyBvZiBzdXBwb3J0ZWQvdW5zdXBwb3J0ZWQgUnVieSBmZWF0 dXJlcywgYmVjYXVzZSB0aGUgSklUIGNvbXBpbGVyIGNhbiBhbHdheXMgZmFsbCBiYWNrIHRvIHRo ZSBpbnRlcnByZXRlciBmb3IgYW55IGZlYXR1cmUgaXQgZG9lc27igJl0IHN1cHBvcnQuDQoNClNv bWUgZmVhdHVyZXMgd2UgYWltIHRvIGltcGxlbWVudC9jb21wbGV0ZSBpbiB0aW1lIGZvciBSdWJ5 IDMuNToNCi0gRmFzdCBKSVQtdG8tSklUIGNhbGxzIHVzaW5nIGEgY3VzdG9tIGNhbGxpbmcgY29u dmVudGlvbg0KLSBQb2x5bW9ycGhpYyBpbmxpbmUgY2FjaGVzDQotIFN1cHBvcnQgZm9yIGZ1bGwg ZGVvcHRpbWl6YXRpb24gKGUuZy4gZm9yIFRyYWNlUG9pbnQpDQotIEFiaWxpdHkgdG8gZGVvcHRp bWl6ZSBzaW5nbGUgZnVuY3Rpb25zIChlLmcuIG1ldGhvZCByZWRlZmluZWQsIGNhbGxlciBnZXRz IGRlb3B0aW1pemVkKQ0KLSBTaWRlLWV4aXQgbXVjaCBsZXNzIG9mdGVuIHRoYW4gWUpJVCAoY3J1 Y2lhbCBmb3IgZ29vZCBwZXJmb3JtYW5jZSkNCi0gQWJpbGl0eSB0byBzZXJpYWxpemUgbWFjaGlu ZSBjb2RlDQotIERlYWQtY29kZSBlbGltaW5hdGlvbiwgY29uc3RhbnQgcHJvcGFnYXRpb24NCi0g RnVzaW9uIG9mIGNvbXBhcmlzb24gYW5kIGJyYW5jaCBpbnN0cnVjdGlvbnMNCg0KU3RyZXRjaCBn b2FscyBhbmQgbG9uZ2VyLXRlcm0gZ29hbHM6DQotIFN1cHBvcnQgdHdvIEpJVCBjb21waWxhdGlv biB0aWVycw0KLSBBZ2dyZXNzaXZlIGlubGluaW5nIG9mIFJ1YnkgY2FsbHMNCi0gT3B0aW1pemUg R0MgYWxsb2NhdGlvbnMNCi0gQWxsb2NhdGlvbiBlbGlzaW9uIHRvIHNwZWVkIHVwIGFsbG9jYXRp b25zIGFuZCByZWR1Y2UgR0MgcHJlc3N1cmUNCg0KV2UgYXJlIGN1cnJlbnRseSB1c2luZyBhIG1v ZGlmaWVkL2ltcHJvdmVkIHZlcnNpb24gb2YgdGhlIFlKSVQgYmFja2VuZCB0byBnZW5lcmF0ZSBt YWNoaW5lIGNvZGUuIFRoaXMgbWVhbnMgWkpJVCBpcyBjb21pbmcgb3V0IG9mIHRoZSBnYXRlIHdp dGggc3VwcG9ydCBmb3IgYm90aCB4ODYtNjQgYW5kIGFybTY0LCBhcyBZSklUIGRpZC4NCg0KVGhl IGFiaWxpdHkgdG8gc2VyaWFsaXplIG1hY2hpbmUgY29kZSBpcyBzb21ldGhpbmcgdGhhdCB3ZSBo b3BlIHRvIGJlIGFibGUgdG8gaW1wbGVtZW50IGluIFpKSVQuIFRoaXMgd291bGQgYWxsb3cgdXMg dG8gc2F2ZSBjb21waWxlZCBjb2RlIGFuZCByZXVzZSBpdCBpbiBmdXR1cmUgZXhlY3V0aW9ucyBv ZiBhIGdpdmVuIHByb2dyYW0uIFRoaXMgd291bGQgZW5hYmxlIGZhc3RlciBzdGFydHVwIHRpbWVz LiBXZSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoaXMgaXMgaW1wb3J0YW50IGluIHByb2R1 Y3Rpb24gZW52aXJvbm1lbnRzIHN1Y2ggYXMgU2hvcGlmeeKAmXMgd2hlcmUgY29kZSBjYW4gYmUg KHJlKWRlcGxveWVkIHNldmVyYWwgdGltZXMgYSBkYXksIGJ1dCBpdCBhbHNvIG1ha2VzIHNlbnNl IG9uIGEgc21hbGxlciBzY2FsZSB3aGVyZSBpbmRpdmlkdWFscyBydW4gY29kZSBvbiBhIHBlcnNv bmFsIGNvbXB1dGVyIGFuZCBjYW4gYmVuZWZpdCBmcm9tIHNvZnR3YXJlIHN0YXJ0aW5nIHVwIGZh c3Rlci4NCg0KIyBNZXJnaW5nIExvZ2lzdGljcw0KDQpMaWtlIGl0cyBwcmVkZWNlc3NvciwgWkpJ VCBpcyB3cml0dGVuIGluIFJ1c3QsIGFuZCBoYXMgdmVyeSBmZXcgZGVwZW5kZW5jaWVzIGJ5IGRl c2lnbi4gSW4gcGFydGljdWxhciwgdGhlcmUgYXJlIG5vIGV4dGVybmFsIGRlcGVuZGVuY2llcyBv dXRzaWRlIG9mIHRoZSBSdXN0IGNvbXBpbGVyIChydXN0YykgdG8gYnVpbGQgWkpJVCB3aXRoIFJ1 YnkuDQoNCkdpdmVuIHRoYXQgaXQgaXMgdmVyeSBlYXJseSBpbiBaSklU4oCZcyBkZXZlbG9wbWVu dCBwcm9jZXNzLCB3ZSB3b3VsZCBsaWtlIHRvIHVwc3RyZWFtIFpKSVQgd2l0aG91dCByZXBsYWNp bmcgWUpJVCwgc28gYXMgdG8gZW5zdXJlIHRoYXQgUnVieSAzLjUgc2hpcHMgd2l0aCBhIHdlbGwt dGVzdGVkLCBwcm9kdWN0aW9uLXJlYWR5IEpJVC4gQXMgd2l0aCBZSklULCB3ZSB3b3VsZCBsaWtl IHRvIHN1Z2dlc3QgdGhhdCBaSklUIHNob3VsZCBiZSBndWFyZGVkIGJ5IGEgLS16aml0IGNvbW1h bmQtbGluZSBzd2l0Y2guIFNpbmNlIHVzaW5nIHRoZSBjb21waWxlciBpcyBvcHQtaW4sIHRoZXJl IGlzIHZlcnkgbGl0dGxlIHJpc2sgZm9yIHRoZSBhdmVyYWdlIFJ1YnkgdXNlci4gV2UgY2FuIGFk anVzdCB0aGUgd2F5IHdlIGFkdmVydGlzZSBaSklUIGF0IHRoZSB0aW1lIG9mIHRoZSBSdWJ5IDMu NSByZWxlYXNlIGFuZCBob3cgbXVjaCB3ZSB3YW50IHRoZSBicm9hZGVyIFJ1YnkgY29tbXVuaXR5 IHRvIHRyeSBpdCBiYXNlZCBvbiBpdHMgbGV2ZWwgb2YgbWF0dXJpdHkgYXQgdGhhdCBwb2ludC4g SWYgWkpJVCBpcyBub3Qgc3VmZmljaWVudGx5IG1hdHVyZSwgd2UgY2FuIHNpbXBseSB0ZWxsIHBl b3BsZSB0aGF0IGl0IGlzIGV4cGVyaW1lbnRhbCBhbmQgb25seSBmb3IgZW50aHVzaWFzdHMsIGFu ZCByZWNvbW1lbmQgdGhhdCB0aGV5IHVzZSBZSklUIGluc3RlYWQuDQoNCldlIGFyZSBjdXJyZW50 bHkgZGV2ZWxvcGluZyBaSklUIHVzaW5nIFJ1c3QgMS44NS4wIHNvIHRoYXQgd2UgY2FuIHVzZSB0 aGUgMjAyNCBlZGl0aW9uIG9mIFJ1c3QuIFRoaXMgc2hvdWxkbuKAmXQgYmUgYSBwcm9ibGVtIHNp bmNlIFJ1c3QgY2FuIGVhc2lseSBiZSBpbnN0YWxsZWQgdXNpbmcgdGhlIHJ1c3R1cCB0b29sLCBh bmQgaWYgYSBzdWZmaWNpZW50bHkgcmVjZW50IFJ1c3QgY29tcGlsZXIgaXMgbm90IGF2YWlsYWJs ZSwgQ1J1YnkgY2FuIHN0aWxsIGJ1aWxkIHdpdGhvdXQgWkpJVCwgb3Igd2l0aCBZSklUIG9ubHkg KFlKSVQgcmVxdWlyZXMgcnVzdGMgMS41OC4wKS4NCg0KSW4gdGVybXMgb2YgYnVpbGQgc3RyYXRl Z3ksIGlmIGEgcmVjZW50IHZlcnNpb24gb2YgdGhlIFJ1c3QgY2FyZ28gdG9vbCBpcyBpbnN0YWxs ZWQsIGl0IG1heSBiZSBwb3NzaWJsZSB0byBhdXRvbWF0aWNhbGx5IGJ1aWxkIGJvdGggWUpJVCBh bmQgWkpJVCBpbiB0aGUgc2FtZSBiaW5hcnkuIE90aGVyd2lzZSwgWUpJVCBjb3VsZCBiZSBidWls dCB3aXRob3V0IFpKSVQgYXMgbG9uZyBhcyBydXN0YyAxLjU4LjAgb3IgbW9yZSBhIHJlY2VudCB2 ZXJzaW9uIGlzIGF2YWlsYWJsZS4gSWYgbmVpdGhlciBpcyBhdmFpbGFibGUsIHRoZW4gQ1J1Ynkg Y2FuIGJlIGJ1aWx0IHdpdGhvdXQgZWl0aGVyIEpJVCBhcyBhIGZhbGxiYWNrLiBBbm90aGVyIHBv c3NpYmlsaXR5LCBpZiB3ZSB3YW50IHRvIGJlIG1vcmUgY29uc2VydmF0aXZlIGZvciBSdWJ5IDMu NSwgaXMgdG8gb25seSBlbmFibGUgYnVpbGRpbmcgWkpJVCBpZiBjb25maWd1cmUgaXMgcnVuIHdp dGggYW4gZXhwbGljaXQgLS1lbmFibGUtemppdC4gV2UgY2FuIHBvdGVudGlhbGx5IG1ha2UgdGhp cyBkZWNpc2lvbiBjbG9zZXIgdG8gdGhlIGVuZCBvZiB0aGUgeWVhci4NCg0KVGhlIHRpbWVsaW5l IGZvciB1cHN0cmVhbWluZyB3b3VsZCBiZSBpbiB0aGUgNCB0byA2IHdlZWtzIGZvbGxvd2luZyBS dWJ5S2FpZ2kuIFRvIG1lcmdlIFpKSVQgdXBzdHJlYW0sIHdlIHdpbGwgcmViYXNlIHRoZSBjb21t aXRzIG9uIHJ1YnkvcnVieeKAmHMgbWFzdGVyIGJyYW5jaCBhbmQgZ2VuZXJhbGx5IHByZXNlcnZl IHRoZSBjb21taXQgaGlzdG9yeS4gU29tZSBjb21taXQgbWVzc2FnZXMgd2lsbCBiZSBjbGVhbmVk IHVwIGFuZCBpbXByb3ZlZCBwcmlvciB0byBtZXJnaW5nLiBTb21lIGNvbW1pdHMgd2hpY2ggYXJl IGxvZ2ljYWxseSByZWxhdGVkIG1heSBiZSBzcXVhc2hlZCB0b2dldGhlci4gV2Ugd2lsbCBvbmx5 IGVuYWJsZSBhIHNtYWxsIHN1YnNldCBvZiBDSSB0ZXN0cyBmb3IgWkpJVCBhdCBmaXJzdCwgc28g YXMgdG8ga2VlcCBhbGwgdGVzdHMgcGFzc2luZy4NCg0KDQoNCg0KDQotLSANCmh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnLw0KIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KIHJ1YnktY29yZSBtYWlsaW5nIGxpc3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFu Zy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1s LnJ1YnktbGFuZy5vcmcKIHJ1YnktY29yZSBpbmZvIC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9y Zy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1sYW5nLm9yZy8=