[#106341] [Ruby master Bug#18369] users.detect(:name, "Dorian") as shorthand for users.detect { |user| user.name == "Dorian" } — dorianmariefr <noreply@...>
SXNzdWUgIzE4MzY5IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGRvcmlhbm1hcmllZnIgKERvcmlhbiBN
14 messages
2021/11/30
[#106351] [Ruby master Bug#18371] Release branches (release information in general) — "tenderlovemaking (Aaron Patterson)" <noreply@...>
SXNzdWUgIzE4MzcxIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHRlbmRlcmxvdmVtYWtpbmcgKEFhcm9u
7 messages
2021/11/30
[ruby-core:106012] [Ruby master Feature#18020] Introduce `IO::Buffer` for fiber scheduler.
From:
"ioquatix (Samuel Williams)" <noreply@...>
Date:
2021-11-10 12:24:00 UTC
List:
ruby-core #106012
SXNzdWUgIzE4MDIwIGhhcyBiZWVuIHVwZGF0ZWQgYnkgaW9xdWF0aXggKFNhbXVlbCBXaWxsaWFt cykuCgoKTXkgaW5pdGlhbCBhc3Nlc3NtZW50LCBiYXNlZCBvbiB0aGUgY2hhbmdlcyB3ZSBtYWRl LCBpcyB0aGF0IHdlIGFyZSBwb3RlbnRpYWxseSBpbmNvcnJlY3RseSB1c2luZyBgZmRgIGJlZm9y ZSB0aGlzIFBSIGlzIGFwcGxpZWQuIEZvciBpdCB0byBmYWlsIGluIHRoZSB3YXkgaXQgaXMsIGl0 IG1lYW5zIHdlIGFyZSBzdGlsbCB1c2luZyBgZnB0ci0+ZmRgIGV2ZW4gdGhvdWdoIGl0IHdhcyBh bHJlYWR5IHNldCB0byAtMSBhbmQvb3IgY2xvc2VkLgoKVGhpcyBQUiBtYXkgaGVscCB3b3JrIGFy b3VuZCB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC81MTAwCgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYXR1cmUgIzE4MDIwOiBJ bnRyb2R1Y2UgYElPOjpCdWZmZXJgIGZvciBmaWJlciBzY2hlZHVsZXIuCmh0dHBzOi8vYnVncy5y dWJ5LWxhbmcub3JnL2lzc3Vlcy8xODAyMCNjaGFuZ2UtOTQ1NjUKCiogQXV0aG9yOiBpb3F1YXRp eCAoU2FtdWVsIFdpbGxpYW1zKQoqIFN0YXR1czogQ2xvc2VkCiogUHJpb3JpdHk6IE5vcm1hbAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkFmdGVyIGNvbnRpbnVpbmcg dG8gYnVpbGQgb3V0IHRoZSBmaWJlciBzY2hlZHVsZXIgaW50ZXJmYWNlIGFuZCB0aGUgc3BlY2lm aWMgaG9va3MgcmVxdWlyZWQgZm9yIGBpb191cmluZ2AsIEkgZm91bmQgc29tZSB0cm91YmxlIHdp dGhpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgYElPYC4KCkkgZm91bmQgdGhhdCBpbiBzb21lIGNh c2VzLCB3ZSBuZWVkIHRvIHJlYWQgaW50byB0aGUgaW50ZXJuYWwgSU8gYnVmZmVycyBkaXJlY3Rs eS4gSSB0cmllZCBjcmVhdGluZyBhICJmYWtlIHN0cmluZyIgaW4gb3JkZXIgdG8gdHJhbnNpdCBi YWNrIGludG8gdGhlIFJ1YnkgZmliZXIgc2NoZWR1bGVyIGludGVyZmFjZSBhbmQgdGhpcyBkaWQg d29yayB0byBhIGNlcnRhaW4gZXh0ZW50LCBidXQgSSB3YXMgdG9sZCB3ZSBjYW5ub3QgZXhwb3Nl IGZha2Ugc3RyaW5nIHRvIFJ1Ynkgc2NoZWR1bGVyIGludGVyZmFjZS4KClNvLCBhZnRlciB0aGlz LCBhbmQgbWFueSBvdGhlciBmcnVzdHJhdGlvbnMgd2l0aCB1c2luZyBgU3RyaW5nYCBhcyBhIElP IGJ1ZmZlciwgSSBkZWNpZGVkIHRvIGltcGxlbWVudCBhIGxvdyBsZXZlbCBgSU86OkJ1ZmZlcmAg YmFzZWQgb24gbXkgbmVlZHMgZm9yIGhpZ2ggcGVyZm9ybWFuY2UgSU8sIGFuZCBhcyBwYXJ0IG9m IHRoZSBmaWJlciBzY2hlZHVsZXIgaW50ZXJmYWNlLgoKSGVyZSBpcyByb3VnaGx5IHRoZSBpbnRl cmZhY2UgaW1wbGVtZW50ZWQgYnkgdGhlIHNjaGVkdWxlciB3LnIudC4gdGhlIGJ1ZmZlcjoKCmBg YHJ1YnkKY2xhc3MgU2NoZWR1bGVyCiAgIyBAcGFyYW1ldGVyIGJ1ZmZlciBbSU86OkJ1ZmZlcl0g QnVmZmVyIGZvciByZWFkaW5nIGludG8uCiAgZGVmIGlvX3JlYWQoaW8sIGJ1ZmZlciwgbGVuZ3Ro KQogICAgIyBpbXBsZW1lbnRhdGlvbiBwcm92aWRlZCBieSBgcmVhZGAgc3lzdGVtIGNhbGwsIElP X1VSSU5HX1JFQURWLCBldGMuCiAgZW5kCgogICMgQHBhcmFtZXRlciBidWZmZXIgW0lPOjpCdWZm ZXJdIEJ1ZmZlciBmb3Igd3JpdGluZyBmcm9tLgogIGRlZiBpb193cml0ZShpbywgYnVmZmVyLCBs ZW5ndGgpCiAgICAjIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkIGJ5IGB3cml0ZWAgc3lzdGVtIGNh bGwsIElPX1VSSU5HX1dSSVRFViwgZXRjLgogIGVuZAoKICAjIFBvdGVudGlhbCBuZXcgaG9va3Mg KFNvY2tldCNyZWN2bXNnLCBzZW5kbXNnLCBldGMpOgogIGRlZiBpb19yZWN2bXNnKGlvLCBidWZm ZXIsIGxlbmd0aCkKICBlbmQKZW5kCmBgYAoKSW4gcmV2aWV3aW5nIG90aGVyIGxhbmd1YWdlIGRl c2lnbnMsIEkgZm91bmQgdGhhdCB0aGlzIGRlc2lnbiBpcyB2ZXJ5IHNpbWlsYXIgdG8gQ3J5c3Rh bCdzIElPIGJ1ZmZlcmluZyBzdHJhdGVneS4KClRoZSBwcm9wb3NlZCBpbXBsZW1lbnRhdGlvbiBw cm92aWRlcyBlbm91Z2ggb2YgYW4gaW50ZXJmYWNlIHRvIGltcGxlbWVudCBib3RoIG5hdGl2ZSBz Y2hlZHVsZXJzIGFzIHdlbGwgYXMgcHVyZSBSdWJ5IHNjaGVkdWxlcnMuIEl0IGFsc28gcHJvdmlk ZXMgc29tZSBleHRyYSBmdW5jdGlvbmFsaXR5IGZvciBpbnRlcnByZXRpbmcgdGhlIGRhdGEgaW4g dGhlIGJ1ZmZlci4gVGhpcyBpcyBtb3N0bHkgZm9yIHRlc3RpbmcgYW5kIGV4cGVyaW1lbnRhdGlv biwgYWx0aG91Z2ggaXQgbWlnaHQgbWFrZSBzZW5zZSB0byBleHBvc2UgdGhpcyBpbnRlcmZhY2Ug Zm9yIGJpbmFyeSBwcm90b2NvbHMgbGlrZSBIVFRQLzIsIFFVSUMsIFdlYlNvY2tldHMsIGV0Yy4K CiMjIFByb3Bvc2VkIFNvbHV0aW9uCgpXZSBpbnRyb2R1Y2UgbmV3IGNsYXNzIGBJTzo6QnVmZmVy YC4KCmBgYHJ1YnkKY2xhc3MgSU86OkJ1ZmZlcgogICMgQHJldHVybnMgW0lPOjpCdWZmZXJdIEEg YnVmZmVyIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgZGF0YS4KICBkZWYgc2VsZi5m b3Ioc3RyaW5nKQogIGVuZAoKICBQQUdFX1NJWkUgPSAjIC4uLiBvcGVyYXRpbmcgc3lzdGVtIHBh Z2Ugc2l6ZQoKICAjIEByZXR1cm5zIFtJTzo6QnVmZmVyXSBBIGJ1ZmZlciB3aXRoIHRoZSBjb250 ZW50cyBvZiB0aGUgZmlsZSBtYXBwZWQgdG8gbWVtb3J5LgogIGRlZiBzZWxmLm1hcChmaWxlKQog IGVuZAoKICAjIEZsYWdzIGZvciBidWZmZXIgc3RhdGUuCiAgRVhURVJOQUwgPSAjIFRoZSBidWZm ZXIgaXMgZnJvbSBleHRlcm5hbCBtZW1vcnkuCiAgSU5URVJOQUwgPSAjIFRoZSBidWZmZXIgaXMg ZnJvbSBpbnRlcm5hbCBtZW1vcnkgKG1hbGxvYykuCiAgTUFQUEVEID0gIyBUaGUgYnVmZmVyIGlz IGZyb20gbWFwcGVkIG1lbW9yeSAobW1hcCwgVmlydHVhbEFsbG9jLCBldGMpCiAgTE9DS0VEID0g IyBUaGUgYnVmZmVyIGlzIGxvY2tlZCBmb3IgdXNhZ2UgKGNhbm5vdCBiZSByZXNpemVkKQogIFBS SVZBVEUgPSAjIFRoZSBidWZmZXIgaXMgbWFwcGVkIGFzIGNvcHktb24td3JpdGUuCiAgSU1NVVRB QkxFID0gIyBUaGUgYnVmZmVyIGNhbm5vdCBiZSBtb2RpZmllZC4KCiAgIyBAcmV0dXJucyBbSU86 OkJ1ZmZlcl0gQSBidWZmZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHNpemUsIGFsbG9jYXRlZCBhY2Nv cmRpbmcgdG8gdGhlIGdpdmVuIGZsYWdzLgogIGRlZiBpbml0aWFsaXplKHNpemUsIGZsYWdzKQog IGVuZAoKICAjIEByZXR1cm5zIFtJbnRlZ3JhbF0gVGhlIHNpemUgb2YgdGhlIGJ1ZmZlcgogIGF0 dHIgOnNpemUKCiAgIyBAcmV0dXJucyBbU3RyaW5nXSBBIGJyaWVmIHN1bW1hcnkgYW5kIGhleCBk dW1wIG9mIHRoZSBidWZmZXIuCiAgZGVmIGluc3BlY3QKICBlbmQKCiAgIyBAcmV0dXJucyBbU3Ry aW5nXSBBIGJyaWVmIHN1bW1hcnkgb2YgdGhlIGJ1ZmZlci4KICBkZWYgdG9fcwogIGVuZAoKICAj IEZsYWcgcHJlZGljYXRlczoKICBkZWYgZXh0ZXJuYWw/CiAgZW5kCgogIGRlZiBpbnRlcm5hbD8K ICBlbmQKCiAgZGVmIG1hcHBlZD8KICBlbmQKCiAgZGVmIGxvY2tlZD8KICBlbmQKCiAgZGVmIGlt bXV0YWJsZT8KICBlbmQKCiAgIyBGbGFncyBmb3IgZW5kaWFuL2J5dGUgb3JkZXI6CiAgTElUVExF X0VORElBTiA9ICMgLi4uCiAgQklHX0VORElBTiA9ICMgLi4uCiAgSE9TVF9FTkRJQU4gPSAjIC4u LgogIE5FVFdPUktfRU5ESUFOPSAjIC4uLgoKICAjIExvY2sgdGhlIGJ1ZmZlciAocHJldmVudCBy ZXNpemUsIHVubWFwLCBjaGFuZ2VzIHRvIGJhc2UgYW5kIHNpemUpLgogIGRlZiBsb2NrCiAgICBy YWlzZSAiQWxyZWFkeSBsb2NrZWQhIiBpZiBmbGFncyAmIExPQ0tFRAogICAgCiAgICBmbGFncyB8 PSBMT0NLRUQKICBlbmQKCiAgIyBVbmxvY2sgdGhlIGJ1ZmZlci4KICBkZWYgdW5sb2NrCiAgICBy YWlzZSAiTm90IGxvY2tlZCEiIHVubGVzcyBmbGFncyAmIExPQ0tFRAogICAgCiAgICBmbGFncyB8 PSB+TE9DS0VECiAgZW5kCgogIC8vIE1hbmlwdWxhdGlvbjoKICAjIEByZXR1cm5zIFtJTzo6QnVm ZmVyXSBBIHNsaWNlIG9mIHRoZSBidWZmZXIncyBkYXRhLiBEb2VzIG5vdCBjb3B5LgogIGRlZiBz bGljZShvZmZzZXQsIGxlbmd0aCkKICBlbmQKCiAgIyBAcmV0dXJucyBbU3RyaW5nXSBBIGJpbmFy eSBzdHJpbmcgc3RhcnRpbmcgYXQgb2Zmc2V0LCBsZW5ndGggYnl0ZXMuCiAgZGVmIHRvX3N0cihv ZmZzZXQsIGxlbmd0aCkKICBlbmQKCiAgIyBDb3B5IHRoZSBzcGVjaWZpZWQgc3RyaW5nIGludG8g dGhlIGJ1ZmZlciBhdCB0aGUgZ2l2ZW4gb2Zmc2V0LgogIGRlZiBjb3B5KHN0cmluZywgb2Zmc2V0 KQogIGVuZAoKICAjIENvbXBhcmUgdHdvIGJ1ZmZlcnMuCiAgZGVmIDw9PihvdGhlcikKICBlbmQK CiAgaW5jbHVkZSBDb21wYXJhYmxlCgogICMgUmVzaXplIHRoZSBidWZmZXIsIHByZXNlcnZpbmcg dGhlIGdpdmVuIGxlbmd0aCAoaWYgbm9uLXplcm8pLgogIGRlZiByZXNpemUoc2l6ZSwgcHJlc2Vy dmUgPSAwKQogIGVuZAoKICAjIENsZWFyIHRoZSBidWZmZXIgdG8gdGhlIHNwZWNpZmllZCB2YWx1 ZS4KICBkZWYgY2xlYXIodmFsdWUgPSAwLCBvZmZzZXQgPSAwLCBsZW5ndGggPSAoQHNpemUgLSBv ZmZzZXQpKQogIGVuZAoKICAjIERhdGEgVHlwZXM6CiAgIyBMb3dlciBjYXNlOiBsaXR0bGUgZW5k aWFuLgogICMgVXBwZXIgY2FzZTogYmlnIGVuZGlhbiAobmV0d29yayBlbmRpYW4pLgogICMKICAj IDpVOCAgICAgICAgfCB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyLgogICMgOlM4ICAgICAgICB8IHNp Z25lZCA4LWJpdCBpbnRlZ2VyLgogICMKICAjIDp1MTYsIDpVMTYgfCB1bnNpZ25lZCAxNi1iaXQg aW50ZWdlci4KICAjIDpzMTYsIDpTMTYgfCBzaWduZWQgMTYtYml0IGludGVnZXIuCiAgIwogICMg OnUzMiwgOlUzMiB8IHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyLgogICMgOnMzMiwgOlMzMiB8IHNp Z25lZCAzMi1iaXQgaW50ZWdlci4KICAjCiAgIyA6dTY0LCA6VTY0IHwgdW5zaWduZWQgNjQtYml0 IGludGVnZXIuCiAgIyA6czY0LCA6UzY0IHwgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyLgogICMKICAj IDpmMzIsIDpGMzIgfCAzMi1iaXQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLgogICMgOmY2NCwgOkY2 NCB8IDY0LWJpdCBmbG9hdGluZyBwb2ludCBudW1iZXIuCgogICMgR2V0IHRoZSBnaXZlbiBkYXRh IHR5cGUgYXQgdGhlIHNwZWNpZmllZCBvZmZzZXQuCiAgZGVmIGdldCh0eXBlLCBvZmZzZXQpCiAg ZW5kCgogICMgU2V0IHRoZSBnaXZlbiB2YWx1ZSBhcyB0aGUgc3BlY2lmaWVkIGRhdGEgdHlwZSBh dCB0aGUgc3BlY2lmaWVkIG9mZnNldC4KICBkZWYgc2V0KHR5cGUsIG9mZnNldCwgdmFsdWUpCiAg ZW5kCmVuZApgYGAKClRoZSBDIGludGVyZmFjZSBwcm92aWRlcyBhIGZldyBjb252ZW5pZW50IG1l dGhvZHMgZm9yIGFjY2Vzc2luZyB0aGUgdW5kZXJseWluZyBkYXRhIGJ1ZmZlcjoKCmBgYGMKdm9p ZCByYl9pb19idWZmZXJfZ2V0X211dGFibGUoVkFMVUUgc2VsZiwgdm9pZCAqKmJhc2UsIHNpemVf dCAqc2l6ZSk7CnZvaWQgcmJfaW9fYnVmZmVyX2dldF9pbW11dGFibGUoVkFMVUUgc2VsZiwgY29u c3Qgdm9pZCAqKmJhc2UsIHNpemVfdCAqc2l6ZSk7CmBgYAoKSW4gdGhlIGZpYmVyIHNjaGVkdWxl ciwgaXQgaXMgdXNlZCBsaWtlIHRoaXM6CgpgYGBjClZBTFVFCnJiX2ZpYmVyX3NjaGVkdWxlcl9p b19yZWFkX21lbW9yeShWQUxVRSBzY2hlZHVsZXIsIFZBTFVFIGlvLCB2b2lkICpiYXNlLCBzaXpl X3Qgc2l6ZSwgc2l6ZV90IGxlbmd0aCkKewogICAgVkFMVUUgYnVmZmVyID0gcmJfaW9fYnVmZmVy X25ldyhiYXNlLCBzaXplLCBSQl9JT19CVUZGRVJfTE9DS0VEKTsKCiAgICBWQUxVRSByZXN1bHQg PSByYl9maWJlcl9zY2hlZHVsZXJfaW9fcmVhZChzY2hlZHVsZXIsIGlvLCBidWZmZXIsIGxlbmd0 aCk7CgogICAgcmJfaW9fYnVmZmVyX2ZyZWUoYnVmZmVyKTsKCiAgICByZXR1cm4gcmVzdWx0Owp9 CmBgYAoKVGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGZyb20gYGlvLmNgIGF0IHZhcmlvdXMgcGxh Y2VzIHRvIGZpbGwgdGhlIGJ1ZmZlci4gV2Ugc3BlY2lmaWNhbGx5IHRoZSBgKGJhc2UsIHNpemUp YCB0dXBsZSwgYWxvbmcgd2l0aCBgbGVuZ3RoYCB3aGljaCBpcyB0aGUgKm1pbmltdW0qIGxlbmd0 aCByZXF1aXJlZCBhbmQgYXNzaXN0cyB3aXRoIGVmZmljaWVudCBub24tYmxvY2tpbmcgaW1wbGVt ZW50YXRpb24uCgpUaGUgYHVyaW5nLmNgIGltcGxlbWVudGF0aW9uIGluIHRoZSBldmVudCBnZW0g dXNlcyB0aGlzIGludGVyZmFjZSBsaWtlIHNvOgoKYGBgYwpWQUxVRSBFdmVudF9CYWNrZW5kX1VS aW5nX2lvX3JlYWQoVkFMVUUgc2VsZiwgVkFMVUUgZmliZXIsIFZBTFVFIGlvLCBWQUxVRSBidWZm ZXIsIFZBTFVFIF9sZW5ndGgpIHsKCXN0cnVjdCBFdmVudF9CYWNrZW5kX1VSaW5nICpkYXRhID0g TlVMTDsKCVR5cGVkRGF0YV9HZXRfU3RydWN0KHNlbGYsIHN0cnVjdCBFdmVudF9CYWNrZW5kX1VS aW5nLCAmRXZlbnRfQmFja2VuZF9VUmluZ19UeXBlLCBkYXRhKTsKCQoJaW50IGRlc2NyaXB0b3Ig PSBSQl9OVU0ySU5UKHJiX2Z1bmNhbGwoaW8sIGlkX2ZpbGVubywgMCkpOwoJCgl2b2lkICpiYXNl OwoJc2l6ZV90IHNpemU7CglyYl9pb19idWZmZXJfZ2V0X211dGFibGUoYnVmZmVyLCAmYmFzZSwg JnNpemUpOwoJCglzaXplX3Qgb2Zmc2V0ID0gMDsKCXNpemVfdCBsZW5ndGggPSBOVU0yU0laRVQo X2xlbmd0aCk7CgkKCXdoaWxlIChsZW5ndGggPiAwKSB7CgkJc2l6ZV90IG1heGltdW1fc2l6ZSA9 IHNpemUgLSBvZmZzZXQ7CgkJaW50IHJlc3VsdCA9IGlvX3JlYWQoZGF0YSwgZmliZXIsIGRlc2Ny aXB0b3IsIChjaGFyKiliYXNlK29mZnNldCwgbWF4aW11bV9zaXplKTsKCQkKCQlpZiAocmVzdWx0 ID09IDApIHsKCQkJYnJlYWs7CgkJfSBlbHNlIGlmIChyZXN1bHQgPiAwKSB7CgkJCW9mZnNldCAr PSByZXN1bHQ7CgkJCWlmICgoc2l6ZV90KXJlc3VsdCA+IGxlbmd0aCkgYnJlYWs7CgkJCWxlbmd0 aCAtPSByZXN1bHQ7CgkJfSBlbHNlIGlmICgtcmVzdWx0ID09IEVBR0FJTiB8fCAtcmVzdWx0ID09 IEVXT1VMREJMT0NLKSB7CgkJCUV2ZW50X0JhY2tlbmRfVVJpbmdfaW9fd2FpdChzZWxmLCBmaWJl ciwgaW8sIFJCX0lOVDJOVU0oUkVBREFCTEUpKTsKCQl9IGVsc2UgewoJCQlyYl9zeXNlcnJfZmFp bCgtcmVzdWx0LCBzdHJlcnJvcigtcmVzdWx0KSk7CgkJfQoJfQoJCglyZXR1cm4gU0laRVQyTlVN KG9mZnNldCk7Cn0KYGBgCgojIyBCdWZmZXIgQWxsb2NhdGlvbgoKVGhlIExpbnV4IGtlcm5lbCBw cm92aWRlcyBzb21lIGFkdmFuY2VkIG1lY2hhbmlzbXMgZm9yIHJlZ2lzdGVyaW5nIGJ1ZmZlcnMg Zm9yIGFzeW5jaHJvbm91cyBJL08gdG8gcmVkdWNlIHBlci1vcGVyYXRpb24gb3ZlcmhlYWQuCgo+ IFRoZSBpb191cmluZ19yZWdpc3RlcigpIHN5c3RlbSBjYWxsIHJlZ2lzdGVycyB1c2VyIGJ1ZmZl cnMgb3IgZmlsZXMgZm9yIHVzZSBpbiBhbiBpb191cmluZyg3KSBpbnN0YW5jZSByZWZlcmVuY2Vk IGJ5IGZkLiBSZWdpc3RlcmluZyBmaWxlcyBvciB1c2VyIGJ1ZmZlcnMgYWxsb3dzIHRoZSBrZXJu ZWwgdG8gdGFrZSBsb25nIHRlcm0gcmVmZXJlbmNlcyB0byBpbnRlcm5hbCBkYXRhIHN0cnVjdHVy ZXMgb3IgY3JlYXRlIGxvbmcgdGVybSBtYXBwaW5ncyBvZiBhcHBsaWNhdGlvbiBtZW1vcnksIGdy ZWF0bHkgcmVkdWNpbmcgcGVyLUkvTyBvdmVyaGVhZC4KCldpdGggYXBwcm9wcmlhdGUgc3VwcG9y dCwgd2UgY2FuIHVzZSBgSU9SSU5HX09QX1BST1ZJREVfQlVGRkVSU2AgdG8gZWZmaWNpZW50bHkg bWFuYWdlIGJ1ZmZlcnMgaW4gYXBwbGljYXRpb25zIHdoaWNoIGFyZSBkZWFsaW5nIHdpdGggbG90 cyBvZiBzb2NrZXRzLiBTZWUgPGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2lvLXVyaW5nLzIwMjAw MjI4MjAzMDUzLjI1MDIzLTEtYXhib2VAa2VybmVsLmRrL1QvPiBmb3IgbW9yZSBkZXRhaWxzIGFi b3V0IGhvdyBpdCB3b3Jrcy4gSSdtIHN0aWxsIGV4cGxvcmluZyB0aGUgcGVyZm9ybWFuY2UgaW1w bGljYXRpb25zIG9mIHRoaXMsIGJ1dCB0aGUgcHJvcG9zZWQgaW1wbGVtZW50YXRpb24gcHJvdmlk ZXMgc3VmZmljaWVudCBtZXRhLWRhdGEgZm9yIHVzIHRvIGV4cGxvcmUgdGhpcyBpbiByZWFsIHdv cmxkIHNjaGVkdWxlcnMuCgpQUjogaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzQ2 MjEKCgoKLS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwoKVW5zdWJzY3JpYmU6IDxtYWls dG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8 aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1j b3JlPgo=