[#116016] [Ruby master Bug#20150] Memory leak in grapheme clusters — "peterzhu2118 (Peter Zhu) via ruby-core" <ruby-core@...>
Issue #20150 has been reported by peterzhu2118 (Peter Zhu).
7 messages
2024/01/04
[#116382] [Ruby master Feature#20205] Enable `frozen_string_literal` by default — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Issue #20205 has been reported by byroot (Jean Boussier).
77 messages
2024/01/23
[ruby-core:116371] [Ruby master Feature#20196] Proposal: Binary data literal
From:
"ziggythehamster (Keith Gable) via ruby-core" <ruby-core@...>
Date:
2024-01-22 18:51:10 UTC
List:
ruby-core #116371
SXNzdWUgIzIwMTk2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgemlnZ3l0aGVoYW1zdGVyIChLZWl0aCBH YWJsZSkuDQ0KDQ0KDQ0KcnVieUZlZWRiYWNrIChyb2JlcnQgaGVpbGVyKSB3cm90ZSBpbiAjbm90 ZS0xOg0NCj4gSSB0aGluayBpdCBtYXkgYmUgZWFzaWVyIHRvIGZvY3VzIG9ubHkgb24gJWIoKSBh dCBmaXJzdCwgcmF0aGVyIHRoYW4gY29uY29taXRhbnRseSBvbiAlQigpIGFzDQ0KPiB3ZWxsLCBm b3IgcmV0dXJuaW5nIGFuIElPOjpCdWZmZXIuIEl0IGNvdWxkIHBvc3NpYmx5IGJlIGNvbmZ1c2lu ZyBpZiB0aGVyZSBpcyBib3RoICViKCkgYW5kDQ0KPiAlQigpIHN1Z2dlc3RlZCBkb2luZyBkaWZm ZXJlbnQgdGhpbmdzIC0gdGhhdCdzIHdoeSBJIHRoaW5rIGZvY3VzaW5nIGp1c3Qgb24gJWIoKSBt YXkNDQo+IGJlIGVhc2llciBhbmQgcmVkdWNlIHRoZSBzY29wZSAoYW5kIHBvc3NpYmxlIGltcGFj dCk7IGFuZCBpZiAlYigpIGZpbmRzIGFwcHJvdmFsLCBvbmUgY2FuDQ0KPiB0aGVuIHN0aWxsIGZv Y3VzIG9uICVCKCkgdmlhIGEgcHJvcG9zYWwuIEJ1dCB0aGlzIGlzIGp1c3QgYSBzdWdnZXN0aW9u IC0gZmVlbCBmcmVlIHRvIGlnbm9yZQ0NCj4gaXQgaWYgeW91ciBleHBlY3RhdGlvbiBpcyBkaWZm ZXJlbnQuDQ0KDQ0KSSBhZ3JlZSB3aXRoIHRoYXQuIFRlY2huaWNhbGx5IGAlQltdYCB3b3VsZCBi ZSBlcXVpdmFsZW50IHRvIGBJTzo6QnVmZmVyLmZvciglYltdKWAgYW5kIHRoYXQncyBub3QgdGhh dCBtdWNoIGV4dHJhIHR5cGluZy4NDQoNDQpydWJ5RmVlZGJhY2sgKHJvYmVydCBoZWlsZXIpIHdy b3RlIGluICNub3RlLTE6DQ0KPiBJZiBJIHVuZGVyc3RhbmQgdGhlIHByb3Bvc2FsIGhlcmUgY29y cmVjdGx5LCB0aGVuICViKCkgd291bGQgYWxsb3cgdXNlcnMgdG8gbW9yZQ0NCj4gZWFzaWx5IGFk ZCBjb21tZW50cyBhbmQgZm9ybWF0dGluZyBhcyB0byBob3cgdGhlIHVzZXIgd2FudHMgYmluYXJ5 IGRhdGEgdG8gYmUgc3RvcmVkDQ0KPiBpbiBhIC5yYiBmaWxlPyBGb3Igc2FrZSBvZiBjb21wbGV0 aW9uLCBjb3VsZCB0aGUgY3VycmVudCB3YXkgaG93IHRvIGhhbmRsZSBzdWNoIA0NCj4gZGF0YSBh bHNvIGJlIHNob3duLCBmb3IgY29tcGFyaXNvbiAxOjE/IFRoYXQgbWF5IGhlbHAgZm9sa3MgZGVj aWRlIG9uIHRoZSBvYmplY3RpdmUNDQo+IGFkdmFudGFnZXMgYW5kIHRyYWRlLW9mZnMgaW4gcmVn YXJkcyB0byB0aGUgc3VnZ2VzdGVkIGZlYXR1cmUuDQ0KDQ0KWW91J3JlIGNvcnJlY3QsIGJ1dCBl dmVuIHdpdGhvdXQgY29tbWVudCBzdXBwb3J0LCBoYXZpbmcgYSBzeW50YXggZm9yIHRoaXMgbWFr ZXMgaXQgZWFzaWVyIHRvIHdvcmsgd2l0aCBzbWFsbCBibG9iIGNvbnN0YW50cy4NDQoNDQpUaGUg ZXhhbXBsZSB0aGF0IEkgcmFuIGludG8gdGhhdCBJIHdhbnRlZCB0aGlzIGlzIHRoYXQgd2UncmUg d3JpdGluZyBhbiBhcHBsaWNhdGlvbiB0byBtaWdyYXRlIGRhdGEgZnJvbSBvbmUgUmVkaXMgc2Vy dmVyIHRvIGFub3RoZXIsIGFuZCBpbiBvdXIgY2FzZSwgd2Ugb25seSBjYXJlIGFib3V0IHRoZSBr ZXkgYW5kIHRoZSBvYmplY3QncyBpZGxlIHRpbWUuIFRoZSBvbmx5IHdheSB0byBlc3RhYmxpc2gg YSBrZXkgaW4gUmVkaXMgd2l0aCBhIGNvcnJlY3QgaWRsZSB0aW1lIGlzIHRvIHVzZSBgUkVTVE9S RWAsIHdoaWNoIHJlcXVpcmVzIHlvdSB0byBwYXNzIHNvbWV0aGluZyB0aGF0IGlzIHNlcmlhbGl6 ZWQgaW4gUmVkaXMgYERVTVBgIGZvcm1hdC4gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlIGRv bid0IHdhbnQgdG8gaGF2ZSB0byBkdW1wIHRoZSBjb25zdGFudCB2YWx1ZSBvZiB0aGUga2V5cyAo dHVybnMgYE8oTilgIGludG8gYE8oMk4pYCksIHNvIHdlIHdlcmUgZ29pbmcgdG8gbWFrZSBhIFJ1 YnkgY29uc3RhbnQgZXF1YWwgdG8gYSB2YWxpZCBzZXJpYWxpemF0aW9uIHBheWxvYWQuIEhlcmUn cyB3aGF0IHRoYXQgbG9va3MgbGlrZToNDQoNDQpgYGBydWJ5DQ0KIyBUaGlzIGRvZXNuJ3Qgd29y ayBiZWNhdXNlIHRoZSBlbmNvZGluZyBpcyB3cm9uZyAoZGVmYXVsdHMgdG8gd2hhdGV2ZXIgdGhl IHN5c3RlbSBlbmNvZGluZyBpcykNDQpSRURJU19EVU1QX09ORSA9ICJceDAwXHhjMFx4MDFcdFx4 MDBceGY2XHg4YVx4YjZ6XHg4NVx4ODdyTSINDQoNDQojIFRoaXMgZG9lc24ndCB3b3JrIGJlY2F1 c2UgdGhlIGJhcmUgc3RyaW5nIGlzIHRyZWF0ZWQgbGlrZSBpdCdzIHRoZSBzeXN0ZW0gZW5jb2Rp bmcgYnkgc29tZSB0b29scy4uLiBhbHNvIGl0J3MgYSBiaXQgdmVyYm9zZQ0NClJFRElTX0RVTVBf T05FID0gU3RyaW5nLm5ldygiXHgwMFx4YzBceDAxXHRceDAwXHhmNlx4OGFceGI2elx4ODVceDg3 ck0iLCBlbmNvZGluZzogRW5jb2Rpbmc6OkJJTkFSWSkuZnJlZXplDQ0KDQ0KIyBUaGlzIHdvcmtz IGJ1dCByZXF1aXJlcyB5b3Uga25vdyB3aGF0IHBhY2sgZG9lcyBhbmQgZG9lc24ndCBhbGxvdyB5 b3UgdG8gYWRkIGFueSBhbm5vdGF0aW9ucw0NClJFRElTX0RVTVBfT05FID0gWyIwMGMwMDEwOTAw ZjY4YWI2N2E4NTg3NzI0ZCJdLnBhY2soIkgqIikuZnJlZXplDQ0KDQ0KIyBJZiB0aGlzIHByb3Bv c2VkIHN5bnRheCBleGlzdGVkDQ0KUkVESVNfRFVNUF9PTkUgPSAlYlswMGMwMDEwOTAwZjY4YWI2 N2E4NTg3NzI0ZF0NDQoNDQojIElmIHdlIHdhbnRlZCB0byBkb2N1bWVudCBpdCB1c2luZyB0aGUg cHJvcG9zZWQgc3ludGF4DQ0KUkVESVNfRFVNUF9PTkUgPSAlYlsNDQogIDAwICAgICAgICAgICAg ICAgIyBTdHJpbmcNDQogIGMwICAgICAgICAgICAgICAgIyA4LWJpdCBpbnRlZ2VyDQ0KICAwMSAg ICAgICAgICAgICAgICMgIjEiDQ0KICAwOTAwICAgICAgICAgICAgICMgUkRCIHZlcnNpb24NDQog IGY2OGFiNjdhODU4NzcyNGQgIyBDUkM2NA0NCl0NDQoNDQojIE9yIGRvY3VtZW50IHdpdGggZXhp c3Rpbmcgc3ludGF4DQ0KUkVESVNfRFVNUF9PTkUgPSBbDQ0KICBbDQ0KICAgICIwMCIsICAgICAg ICAgICAgICAjIFN0cmluZw0NCiAgICAiYzAiLCAgICAgICAgICAgICAgIyA4LWJpdCBpbnRlZ2Vy DQ0KICAgICIwMSIsICAgICAgICAgICAgICAjICIxIg0NCiAgICAiMDkwMCIsICAgICAgICAgICAg IyBSREIgdmVyc2lvbg0NCiAgICAiZjY4YWI2N2E4NTg3NzI0ZCIgIyBDUkM2NA0NCiAgXS5qb2lu DQ0KXS5wYWNrKCJIKiIpLmZyZWV6ZQ0NCmBgYA0NCg0NCkFub3RoZXIgY2FzZSB3aGVyZSB3ZSB3 b3JrIHdpdGggc21hbGwgc25pcHBldHMgbGlrZSB0aGlzIGlzIGluIHNwZWNzLiBXZSB1c2UgS2Fm a2Egd2l0aCB0aGUgW0NvbmZsdWVudCBTY2hlbWEgUmVnaXN0cnkgd2lyZSBmb3JtYXRdKGh0dHBz Oi8vZG9jcy5jb25mbHVlbnQuaW8vcGxhdGZvcm0vY3VycmVudC9zY2hlbWEtcmVnaXN0cnkvZnVu ZGFtZW50YWxzL3NlcmRlcy1kZXZlbG9wL2luZGV4Lmh0bWwjd2lyZS1mb3JtYXQpLCBhbmQgaXQn cyB1c2VmdWwgdG8gdmVyaWZ5IHRoYXQgd2UncmUgdHJ5aW5nIHRvIHdyaXRlIHRoZSBjb3JyZWN0 IHBheWxvYWRzIHRvIEthZmthLiBXZSBlbmQgdXAgc3R1YmJpbmcgdGhlIHNjaGVtYSBJRCBsb29r dXBzLCBzbyB3ZSBlbmQgdXAgd2l0aCBhIGNvbnN0YW50IGhlYWRlciBgIlx4MDBceDAwXHgwMFx4 MDBceDAxImAgdGhhdCBpcyBwcmVwZW5kZWQgdG8gd2hhdGV2ZXIgcGF5bG9hZCB3ZSBleHBlY3Qg dG8gd3JpdGUuIFRoaXMgaXMgc3VwZXIgdHJpdmlhbCB0byBkbyBpbiBSdWJ5LCBidXQgd2UgZW5k IHVwIHdpdGggc29tZXRoaW5nIGxpa2UgdGhpcyBpbiBvdXIgc3BlY3Mgc28gdGhhdCBjb2xsZWFn dWVzIGFyZSBhYmxlIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGlzIHNwZWNpYWwgY29uc3RhbnQgbWVh bnM6DQ0KDQ0KYGBgcnVieQ0NCiMgICAgICAgICAgICAgICBtYWdpYyBieXRlDQ0KIyAgICAgICAg ICAgICAgICAgICB8fCwsLCwsLCwsLS0tLS0tIHNjaGVtYSBJRCAoaW50MzIpDQ0KbGV0KDpzcl9o ZWFkZXIpIHsgWyIwMDAwMDAwMDAxIl0ucGFjaygiSCoiKS5mcmVlemUgfQ0NCg0NCiMgSWYgd2Ug d2FudGVkIHRvIGRvY3VtZW50IGl0IHVzaW5nIGV4aXN0aW5nIHN5bnRheA0NCmxldCg6c3JfaGVh ZGVyKSBkbw0NCiAgWw0NCiAgICBbDQ0KICAgICAgIjAwIiwgICAgICAjIG1hZ2ljIGJ5dGUNDQog ICAgICAiMDAwMDAwMDEiICMgc2NoZW1hIElEDQ0KICAgIF0uam9pbg0NCiAgXS5wYWNrKCJIKiIp LmZyZWV6ZQ0NCmVuZA0NCg0NCiMgT3IgaWYgdGhlIHByb3Bvc2VkIHN5bnRheCBleGlzdGVkDQ0K bGV0KDpzcl9oZWFkZXIpIGRvDQ0KICAlYlsNDQogICAgMDAgICAgICAgIyBtYWdpYyBieXRlDQ0K ICAgIDAwMDAwMDAxICMgc2NoZW1hIElEDQ0KICBdDQ0KZW5kDQ0KYGBgDQ0KDQ0KcnVieUZlZWRi YWNrIChyb2JlcnQgaGVpbGVyKSB3cm90ZSBpbiAjbm90ZS0xOg0NCj4gQXQgdGhlIGxlYXN0IEkg ZmluZCB0aGUgc3ludGF4IHByb3Bvc2FsIGhlcmUgbmljZSwgc28gSSBhbSArMSBvbiBpdC4gSXQg c2VlbXMgdXNlZnVsDQ0KPiBhbmQgcG9zc2libHkgYW4gaW1wcm92ZW1lbnQgb3ZlciB0aGUgc3Rh dHVzIHF1bywgYnV0IEkgcmFyZWx5IGRlYWwgd2l0aCBiaW5hcnkgZGF0YQ0NCj4gaW4gcnVieSBt eXNlbGYsIHNvIEkgbWF5IG5vdCB0aGUgYmVzdCBpbmRpdmlkdWFsIHRvIGNvbW1lbnQgb24gYW4g b2JqZWN0aXZlIHVzZWZ1bG5lc3MNDQo+IG9mIHRoZSBzdWdnZXN0ZWQgZmVhdHVyZSBhdCBoYW5k Lg0NCj4gDQ0KPiBJIGd1ZXNzIG9uZSBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb24gdG8gbWFrZSBp cyB3aGV0aGVyICViKCkgbWF5IGJlIHVzZWQgZm9yIGFub3RoZXINDQo+IGZlYXR1cmUgb3IgZnVu Y3Rpb25hbGl0eSBpbiB0aGUgZnV0dXJlIChvciBub3QpLCBhcyBvbmNlIHdoZW4gYSBmZWF0dXJl IGlzIHN1Z2dlc3RlZA0NCj4gKGZvciBzeW50YXggc3VjaCBhcyAlYigpKSwgY2hhbmdpbmcgaXQg aW4gdGhlIGZ1dHVyZSBtYXkgYmUgYSBiaXQgcHJvYmxlbWF0aWMgZHVlIHRvDQ0KPiBtYXR6IGZh dm91cmluZyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aGVuIHBvc3NpYmxlLCBzbyB0aGF0IHNo b3VsZCBiZSBkaXNjdXNzZWQgdXBmcm9udA0NCj4gaW4gbXkgb3Bpbmlvbi4NDQo+IA0NCj4gSSdk IGFsc28gc3VnZ2VzdCB0byBhZGQgdGhpcyB0byBhbiB1cGNvbWluZyBkZXZlbG9wZXIgbWVldGlu ZywgYWZ0ZXIgc29tZSBkaXNjdXNzaW9uLA0NCj4gdG8gZ2V0IG1hdHonIGFuZCB0aGUgY29yZSdz IHRlYW0gb3BpbmlvbiBvbiBpdCAoYWZ0ZXIgdGhhdCBkaXNjdXNzaW9uKS4NDQoNDQpJIGFsc28g aW5mcmVxdWVudGx5IG5lZWQgdG8gZG8gdGhpcywgYnV0IHdoZW4gSSBkbywgSSBmaW5kIHRoZSBw b3NzaWJsZSBzeW50YXhlcyB0byBub3QgYmUgYXMgcGxlYXNpbmcgYXMgdGhleSBjb3VsZCBiZS4g TmV3IHBlcmNlbnQgbGl0ZXJhbHMgYXJlIHZlcnkgcmFyZWx5IGFkZGVkLCBzbyBJIGRvbid0IHRo aW5rIHRoZXJlIGFyZSBhbnkgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgY29uY2VybnMuIE9uZSB3 YXkgSSBjb3VsZCBzZWUgdGhpcyBkaXNjdXNzaW9uIGdvaW5nIGlzIHRvd2FyZCBhIG1vcmUgZ2Vu ZXJpYyAiZm9sZCB3aGl0ZXNwYWNlIGFuZCBzdXBwb3J0IGNvbW1lbnRzIiBzeW50YXggbGlrZSB0 aGlzIChzaW1pbGFyIHRvIG11bHRpLWxpbmUgcmVnZXhlcyk6DQ0KDQ0KYGBgcnVieQ0NCiVjWw0N CiAgVGhlIHF1aWNrIGJyb3duICMgY29tbWVudA0NCiAgZm94IGp1bXBlZCBvdmVyICMgYW5vdGhl ciBjb21tZW50DQ0KICB0aGUgbGF6eSBkb2cuICAgIyBhIHRoaXJkIGNvbW1lbnQNDQpdICMgPT4g IlRoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgdGhlIGxhenkgZG9nLiINDQpgYGANDQoN DQpUaGlzIHdvdWxkIHRoZW4gYWxsb3cgZm9yIHRoaXM6DQ0KDQ0KYGBgcnVieQ0NClslY1sNDQog ICAgMDAwMTAyICMgZm9vDQ0KICAgIDAzMDQwNSAjIGJhcg0NCl0uZGVsZXRlKCcgJyldLnBhY2so IkgqIikuZnJlZXplDQ0KYGBgDQ0KDQ0KV2hpY2ggaXMgbGVzcyBwcmV0dHkgYnV0IGNvdWxkIGJl IHR1cm5lZCBpbnRvIHRoaXMgd2l0aCBhIG1ldGhvZCBsaWtlOg0NCg0NCmBgYHJ1YnkNDQpiaW5z dHIgJWNbDQ0KICAwMDAxMDIgIyBmb28NDQogIDAzMDQwNSAjIGJhcg0NCl0NDQpgYGANDQoNDQpy ZXRybyAoSm9zZWYgxaBpbcOhbmVrKSB3cm90ZSBpbiAjbm90ZS0yOg0NCj4gPiBBIGxpYnJhcnkg KHBvc3NpYmx5IHN0YW5kYXJkIGxpYnJhcnkvZ2VtKSBjb3VsZCBoYXZlIGEgZnVuY3Rpb24gbGlr ZSBiaW5hcnkgdGFrZSBhIHN0cmluZyAocG90ZW50aWFsbHkgYSBoZXJlZG9jKSBhbmQgcGFyc2Ug aXQgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIHJ1bGVzIEkgd3JvdGUgYWJvdmUuIFlvdSB3b3VsZCBo YXZlIHRvIG1ha2UgdGhlIHBhcnNlciBzdHJpcCB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cywgYW5k IG9ubHkgaGV4IGJ5dGVzIGNvdWxkIGJlIGludGVycG9sYXRlZC4NDQo+IA0NCj4gSGF2ZSB5b3Ug Y2hlY2tlZCBbYmluZGF0YV0oaHR0cHM6Ly9naXRodWIuY29tL2RtZW5kZWwvYmluZGF0YSkgZ2Vt PyBUaGVyZSBpcyBhbHNvIFtrYWl0YWldKGh0dHBzOi8va2FpdGFpLmlvLykgcHJvamVjdC4NDQoN DQpCb3RoIG9mIHRoZXNlIGFyZSB2ZXJ5IHVzZWZ1bCBsaWJyYXJpZXMgd2hlbiB5b3UgYXJlIHdv cmtpbmcgd2l0aCBtb3JlIHRoYW4gYSBzbmlwcGV0IG9mIGJpbmFyeSBkYXRhLCBidXQgSSByYXJl bHkgZmluZCBteXNlbGYgbmVlZGluZyB0byB3b3JrIHdpdGggYW55dGhpbmcgbW9yZSB0aGFuIGEg c2hvcnQgc3RyaW5nIHRoYXQgaXMgZWl0aGVyIGNvbnN0YW50IG9yIF9tb3N0bHlfIGNvbnN0YW50 LiBBIG1vcmUgZm9ybWFsIGRlY2xhcmF0aW9uIG9mIGRhdGEgc3RydWN0dXJlcyBhbmQgc3VjaCBs aWtlIHRoZSBhYm92ZSB3b3VsZCBkZWZpbml0ZWx5IGJlIHByZWZlcnJlZCBmb3IgYW55dGhpbmcg bW9yZSB0aGFuIHNuaXBwZXRzIG9mIGJpbmFyeSBkYXRhLiBJdCdzIGZhciBtb3JlIGZyZXF1ZW50 IHRoYXQgSSB3YW50IHRvIGRvIHNvbWV0aGluZyBsaWtlIGFib3ZlLCBvciBsYXN0IG5pZ2h0IEkg Zm91bmQgbXlzZWxmIHdhbnRpbmcgdG8gYmUgYWJsZSB0byBkbyB0aGlzIHRvIGFuIHg4Ni0xNiBi aW5hcnk6DQ0KDQ0KYGBgcnVieQ0NCmJpbiA9IEZpbGUuYmlucmVhZCgnZm9vLmJpbicpDQ0KDQ0K IyBjb252ZXJ0IGFsbCBqbXAgKzB4MDAgaW5zdHJ1Y3Rpb25zIHRvIHR3byBieXRlIG5vcHMgYmVj YXVzZSBHaGlkcmEgZ2V0cyBjb25mdXNlZDoNDQpiaW4uZ3N1YiglYltlYiAwMF0sICViWzY2IDkw XSkNDQoNDQpGaWxlLmJpbndyaXRlKCdiYXIuYmluJywgYmluKQ0NCmBgYA0NCg0NCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQpGZWF0dXJlICMyMDE5NjogUHJvcG9z YWw6IEJpbmFyeSBkYXRhIGxpdGVyYWwNDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1 ZXMvMjAxOTYjY2hhbmdlLTEwNjM4OA0NCg0NCiogQXV0aG9yOiB6aWdneXRoZWhhbXN0ZXIgKEtl aXRoIEdhYmxlKQ0NCiogU3RhdHVzOiBPcGVuDQ0KKiBQcmlvcml0eTogTm9ybWFsDQ0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NCkkgc29tZXRpbWVzIGZpbmQgbXlz ZWxmIG5lZWRpbmcgdG8gd3JpdGUgc29tZSBieXRlcyBpbiBhIFJ1Ynkgc3RyaW5nIGxpdGVyYWws IGFuZCB0aGlzIGV4cGVyaWVuY2UgbGVhdmVzIGEgbG90IHRvIGJlIGRlc2lyZWQ6DQ0KDQ0KKiBC YXJlIHN0cmluZ3MgZG9uJ3Qgd29yayAocG90ZW50aWFsIGZvciBlbmNvZGluZyBjb3JydXB0aW9u IHVubGVzcyB5b3UgcmVtZW1iZXIgdG8gYC5mb3JjZV9lbmNvZGluZ2AgYW5kIG5ldmVyIGNvcHkt cGFzdGUganVzdCB0aGUgbGl0ZXJhbCBpbnRvIHNvbWV3aGVyZSBlbHNlKSBhbmQgYXJlIG5vdCBw YXJ0aWN1bGFybHkgcGxlYXNhbnQgZ2l2ZW4gYWxsIG9mIHRoZSBiYWNrc2xhc2hlcw0NCiogV3Jh cHBpbmcgdGhpcyBpbiBgU3RyaW5nLm5ldygiXHg4OVBOR1xyXG5ceDFBXG5ceDAwXHgwMFx4MDBc cklIRFJceDAwXHgwMFx4MDBgXHgwMFx4MDBceDAwYFxiXHgwNlx4MDBceDAwXHgwMFx4RTJceDk4 dzhceDAwXHgwMDAlSURBVCIsIGVuY29kaW5nOiAnQklOQVJZJylgIGlzIGJldHRlciwgYnV0IG1h bnkgdG9vbHMgZXhwbG9kZSB3aXRoIHRoaXMgYmVjYXVzZSB0aGV5IGV4cGVjdCBhbGwgc3RyaW5n cyB0byBiZSB2YWxpZCBVVEYtOCBldmVuIGlmIHRoZXkncmUgYW4gYXJndW1lbnQgdG8gU3RyaW5n Lm5ldywgYW5kIGl0IHN0aWxsIGRvZXNuJ3QgaGF2ZSB0aGUgImJlYXV0eSIgb25lIG1pZ2h0IGV4 cGVjdCBmcm9tIFJ1YnkgKGFsc28gaXQncyBub3QgZnJvemVuIHVubGVzcyB5b3UgYWxzbyBmcmVl emUgaXQpDQ0KKiBgWyI5ODA1ZTQ3NGQwYTBhMWEwMDAwMDAwZDA5NDg0NDQyNTAwMDAwMDA2MDAw MDAwMDY4MDYwMDAwMDAwMmU4OTc3ODMwMDAwMDM1Mjk0NDQxNDQ1Il0ucGFjaygiaCoiKWAgcGFy c2VzIGluIGFsbCB0b29scyBhbmQgaXMgbGVzcyBoYXJzaCB0byBsb29rIGF0LCBidXQgaWYgeW91 J3JlIHdyaXRpbmcgYmluYXJ5IGRhdGEsIHlvdSBwcm9iYWJseSB3YW50IHRvIGFubm90YXRlIGl0 DQ0KDQ0KSGVyZSdzIG15IGJhc2ljIHN5bnRheCBwcm9wb3NhbDoNDQoNDQpgYGANDQolYlsNDQog IDg5NTA0ZTQ3MGQwYTFhMGEgIyBQTkcgaGVhZGVyDQ0KICAwMDAwMDAwZCAgICAgICAgICMgTGVu Z3RoID0gMTMgYnl0ZXMNDQogIDQ5NDg0NDUyICAgICAgICAgIyBJSERSIGNodW5rDQ0KICAwMDAw MDA2MCAgICAgICAgICMgV2lkdGggPSA5NnB4DQ0KICAwMDAwMDA2MCAgICAgICAgICMgSGVpZ2h0 ID0gOTZweA0NCiAgMDggMDYgICAgICAgICAgICAjIDhicHAgUkdCQQ0NCiAgMDAgMDAgMDAgICAg ICAgICAjIGRlZmxhdGUgLyBubyBmaWx0ZXIgLyBub24taW50ZXJsYWNlZA0NCl0NDQoNDQojID0+ ICJceDg5UE5HXHJcblx4MUFcblx4MDBceDAwXHgwMFxySUhEUlx4MDBceDAwXHgwMGBceDAwXHgw MFx4MDBgXGJceDA2XHgwMFx4MDBceDAwIg0NCmBgYA0NCg0NCk1vcmUgZm9ybWFsbHk6DQ0KDQ0K KiBUbyBtYXRjaCB0aGUgbmliYmxlIG9yZGVyaW5nIG9mIGEgcmVndWxhciBzdHJpbmcgZXNjYXBl LCB0aGUgaGV4IGNoYXJhY3RlcnMgYXJlIGhpZ2ggbmliYmxlIGZpcnN0ICh0aGUgc2FtZSBhcyB0 aGUgYEhgIHVucGFjayBjaGFyYWN0ZXIpLg0NCiogSXQgZm9sbG93cyB0aGUgc2FtZSBydWxlcyBh cyBvdGhlciBwZXJjZW50IGxpdGVyYWxzLCBhbmQgSSBhbSBmbGV4aWJsZSBvbiB3aGF0IGNoYXJh Y3RlciBpcyB1c2VkLiBJIGNob3NlIGBiYCBiZWNhdXNlIGBoYCBjb3VsZCBiZSBjb25mdXNpbmcg cGFpcmVkIHdpdGggdGhlIGBoYC9gSGAgdW5wYWNrIGNoYXJhY3RlcnMgYW5kIHRoZSBpbnZlcnRl ZCBtZWFuaW5nLg0NCiogV2UgY291bGQgc2F5IHRoYXQgaGlnaC1uaWJibGUtZmlyc3QgaXMgY2Fw aXRhbGl6ZWQgYW5kIHRoZSBsb3dlci1jYXNlIHZlcnNpb24gaXMgbG93LW5pYmJsZS1maXJzdCwg YnV0IEkgaW1hZ2luZSBtb3N0IHBlb3BsZSB3aWxsIHdhbnQgaGlnaC1uaWJibGUtZmlyc3QuIFdl IGNvdWxkIGFsc28gc2F5IHRoYXQgYCViW11gIHJldHVybnMgYSBgU3RyaW5nYCBidXQgYCVCW11g IHJldHVybnMgYW4gYElPOjpCdWZmZXJgLCB3aGljaCBoYXMgZ3JlYXRlciB1dGlsaXR5IHRoYW4g aGF2aW5nIHRoZSBjYXBhYmlsaXR5IG9mIHdyaXRpbmcgbG93LW5pYmJsZS1maXJzdCBsaXRlcmFs cw0NCiogV2hpdGVzcGFjZSBpcyBpZ25vcmVkDQ0KKiBDb21tZW50cyBhcmUgYWxsb3dlZA0NCiog VGhlIGVuY29kaW5nIGlzIGFsd2F5cyBgRW5jb2Rpbmc6OkJJTkFSWWANDQoqIFRoZSByZXN1bHRp bmcgc3RyaW5nIGlzIGFsd2F5cyBmcm96ZW4gKGFuZCBpZiBgJUJbXWAgbWVhbnMgYnVmZmVyIHRo ZW4gdGhhdCBpcyByZWFkLW9ubHkgYXMgd2VsbCkNDQoqIGEtZiBjYW4gYWxzbyBiZSB3cml0dGVu IEEtRg0NCg0NClRoaW5ncyB0byBjb25zaWRlcjoNDQoNDQoqIEludGVycG9sYXRpb24gY291bGQg YmUgYWxsb3dlZCBsaWtlIG5vcm1hbCBzdHJpbmdzDQ0KKiBFbWJlZGRpbmcgc3RyaW5ncyBjb3Vs ZCBiZSBhbGxvd2VkIChleGFtcGxlIGJlbG93KQ0NCiogYD9gIGxpdGVyYWxzIChjaGFyYWN0ZXJz KSBzaG91bGQgYmUgaGFuZGxlZCBpZGVudGljYWxseSB0byBob3cgb3RoZXIga2luZHMgb2Ygc3Ry aW5ncyBhcmUgZW1iZWRkZWQgaWYgdGhhdCBpcyBhbGxvd2VkDQ0KKiBJZiBpbnRlcnBvbGF0aW9u IGlzIGFsbG93ZWQgYW5kIHlvdSBpbnRlcnBvbGF0ZSBhIG51bWJlciwgdGhpcyBzaG91bGQgZWl0 aGVyIGludGVycG9sYXRlIGAudG9fc2AgYXMgeW91IHdvdWxkIGV4cGVjdCBpbiBhIHN0cmluZyBv ciByYWlzZSBhbiBlcnJvciwgYmVjYXVzZSB0aGVyZSBpcyBubyB1bnN1cnByaXNpbmcgd2F5IHRv IHRha2UgYSBudW1iZXIgYW5kIGNvbnZlcnQgaXQgdG8gb25lIG9yIG1vcmUgYnl0ZXMNDQoqIFN0 cmluZ3MgZW5jb2RlZCBhcyBgRW5jb2Rpbmc6OkJJTkFSWWAgY291bGQgaGF2ZSB0aGVpciBgLmlu c3BlY3RgIG91dHB1dCB1c2UgdGhpcyBsaXRlcmFsDQ0KKiBXaGVuIGRlYWxpbmcgd2l0aCBiaXRt YXNrcywgaXQncyBvZnRlbiBjb252ZW5pZW50IHRvIHdyaXRlIHRoZW0gb3V0IGluIGJpbmFyeSBp bnN0ZWFkIG9mIGhleCBzbyB0aGUgb24gYml0cyBhcmUgZWFzaWVyIHRvIGlkZW50aWZ5LCBidXQg dGhlcmUgaXMgbm8gc3ludGF4IGZvciB0aGF0IGhlcmUgdGhhdCBJIGFtIGZvbmQgb2YuLi4gYnV0 IHNvbWVvbmUgbWlnaHQgaGF2ZSBhbiBpZGVhLiBJIHRob3VnaHQgYWJvdXQgYC4wMDAwMTExMWAg b3IgYCEwMDAwMTExMWAgd2l0aCBtYW5kYXRvcnkgd2hpdGVzcGFjZSBiZWZvcmUgcmVzdW1pbmcg aGV4IGNoYXJhY3RlcnMsIGJ1dCB0aG9zZSBkaWRuJ3QgZmVlbCByaWdodCB0byBtZQ0NCg0NCkV4 YW1wbGUgd2l0aCBlbWJlZGRlZCBzdHJpbmdzOg0NCg0NCg0NCmBgYA0NCiViWw0NCiAgODkgIlBO RyIgMGQwYTFhMGEgIyBQTkcgaGVhZGVyDQ0KICAwMDAwMDAwZCAgICAgICAgICAjIExlbmd0aCA9 IDEzIGJ5dGVzDQ0KICAiSUhEUiIgICAgICAgICAgICAjIElIRFIgY2h1bmsNDQogIDAwMDAwMDYw ICAgICAgICAgICMgV2lkdGggPSA5NnB4DQ0KICAwMDAwMDA2MCAgICAgICAgICAjIEhlaWdodCA9 IDk2cHgNDQogIDA4IDA2ICAgICAgICAgICAgICMgOGJwcCBSR0JBDQ0KICAwMCAwMCAwMCAgICAg ICAgICAjIGRlZmxhdGUgLyBubyBmaWx0ZXIgLyBub24taW50ZXJsYWNlZA0NCl0NDQpgYGANDQoN DQpFeGFtcGxlIHdpdGggaW50ZXJwb2xhdGlvbjoNDQoNDQpgYGANDQolYlsNDQogICN7cG5nX2hl YWRlcn0NDQogICN7aWhkciA9IGNodW5rKDppaGRyLCB3aWR0aDogOTYsIGhlaWdodDogOTYsIGJw cDogOCwgZm9ybWF0OiA6cmdiYSl9DQ0KICAje3BuZ19jcmMoaWhkcil9ICMgSSBkaWRuJ3QgaW5j bHVkZSB0aGlzIGluIHRoZSBvdGhlciBleGFtcGxlcyBidXQgSSBuZWVkZWQgc29tZXRoaW5nIHRv IGRlbW9uc3RyYXRlIGhlcmUNDQpdDQ0KYGBgDQ0KDQ0KT3RoZXIgcG9zc2libGUgYWx0ZXJuYXRp dmVzOg0NCg0NCiogQSBsaWJyYXJ5IChwb3NzaWJseSBzdGFuZGFyZCBsaWJyYXJ5L2dlbSkgY291 bGQgaGF2ZSBhIGZ1bmN0aW9uIGxpa2UgYGJpbmFyeWAgdGFrZSBhIHN0cmluZyAocG90ZW50aWFs bHkgYSBoZXJlZG9jKSBhbmQgcGFyc2UgaXQgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIHJ1bGVzIEkg d3JvdGUgYWJvdmUuIFlvdSB3b3VsZCBoYXZlIHRvIG1ha2UgdGhlIHBhcnNlciBzdHJpcCB3aGl0 ZXNwYWNlIGFuZCBjb21tZW50cywgYW5kIG9ubHkgaGV4IGJ5dGVzIGNvdWxkIGJlIGludGVycG9s YXRlZC4NDQoqIEEgbmV3IHBhY2svdW5wYWNrIHN5bWJvbCBjb3VsZCBiZSBjcmVhdGVkIHRoYXQg ZG9lcyB0aGUgc2FtZSB0aGluZyBhcyBhYm92ZSwgc28geW91IGNvdWxkIGBbImhleCAjY29tbWVu dHNcbmV0YyJdLnBhY2soIi4uLiIpYA0NCiogWW91IGNvdWxkIHByb2JhYmx5IGRvIGEgbG90IG9m IHRoaXMgd2l0aCBhbiBhcnJheSBvZiBoZXggc3RyaW5ncyBhbmQgYHBhY2tgIGJ1dCBpdCBkb2Vz bid0IGFsbG93IGZvciBmcmVlZm9ybSB3aGl0ZXNwYWNlIGFuZCB0aGUgd2F5IHlvdSBkbyBpdCBp cyBub3Qgb2J2aW91cyB3aXRob3V0IHJlYWRpbmcgdGhlIGRvY3MgZm9yIGBwYWNrYCAuLi4gYW5k IGFsc28geW91IGFsbG9jYXRlIGEgYnVuY2ggb2Ygc3RyaW5ncyB5b3UgZG9uJ3QgbmVlZA0NCiog QSBgRGF0YWAtbGlrZSBvYmplY3QgbW9yZSBjbG9zZWx5IHJlbGF0ZWQgdG8gYElPOjpCdWZmZXJg IGNvdWxkIGJlIGRlZmluZWQgdGhhdCBkZWNsYXJlcyB0aGUgc2l6ZSBvZiB0aGluZ3MgY29udGFp bmVkIHdpdGhpbiBhIGJ1ZmZlciBhbmQgdGhlbiBhIGNvbnN0YW50IGNvdWxkIGJlIHdyaXR0ZW4g dG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBEYXRhLXN1YmNsYXNzIGNvbnRhaW5pbmcgdGhl IGFjdHVhbCBkYXRhIHlvdSB3YW50IHRvIHdyaXRlIG91dCAuLi4gYnV0IHRoaXMgaXMgYSBsb3Qg b2Ygd29yaw0NCg0NClBvdGVudGlhbCB1c2VyczoNDQoNDQoqIFBlb3BsZSB3cml0aW5nIHByb3Rv Y29sIGNvZGUgaW4gUnVieQ0NCiogUGVvcGxlIHdobyBuZWVkIHRvIHdyaXRlIG91dCBtYWdpYyBj b25zdGFudHMgKGluIG15IGNhc2U6IHRoZSBSREIgZW5jb2Rpbmcgb2YgYSBSZWRpcyB2YWx1ZSkN DQoqIFBlb3BsZSB1c2luZyBzb21ldGhpbmcgbGlrZSBNZXRhc3Bsb2l0IEZyYW1ld29yayB0byBy ZXZlcnNlIGVuZ2luZWVyIHNvbWV0aGluZw0NCiogVG9vbHMgY291bGQgZS5nLiBkaXNhc3NlbWJs ZSB4ODYgaW50byBhIGxpdGVyYWwgd2l0aCBjb21tZW50cyBzaG93aW5nIHRoZSBhc3NlbWJseSBt bmVtb25pY3MNDQoNDQoNDQoNDQotLSANDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NDQog X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3Jl IG1haWxpbmcgbGlzdCAtLSBydWJ5LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3Jp YmUgc2VuZCBhbiBlbWFpbCB0byBydWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVi eS1jb3JlIGluZm8gLS0gaHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL3Bvc3Rvcml1 cy9saXN0cy9ydWJ5LWNvcmUubWwucnVieS1sYW5nLm9yZy8=