[#75687] [Ruby trunk Bug#12416] struct rb_id_table lacks mark function — shyouhei@...
Issue #12416 has been reported by Shyouhei Urabe.
3 messages
2016/05/23
[#75763] [Ruby trunk Feature#12435] Using connect_nonblock to open TCP connections in Net::HTTP#connect — mohamed.m.m.hafez@...
Issue #12435 has been reported by Mohamed Hafez.
3 messages
2016/05/28
[#75774] Errno::EAGAIN thrown by OpenSSL::SSL::SSLSocket#connect_nonblock — Mohamed Hafez <mohamed.m.m.hafez@...>
Hi all, every now and then in my production server, I'm
4 messages
2016/05/30
[#75775] Re: Errno::EAGAIN thrown by OpenSSL::SSL::SSLSocket#connect_nonblock
— Mohamed Hafez <mohamed.m.m.hafez@...>
2016/05/30
Or does MRI's OpenSSL::SSL::SSLSocket#connect_nonblock just return
[#75782] Important: Somewhat backwards-incompatible change (Fwd: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full Unicode case mapping for UTF-8) — Martin J. Dürst <duerst@...>
V2l0aCB0aGUgY2hhbmdlIGJlbG93LCBJIGhhdmUgYWN0aXZhdGVkIGZ1bGwgVW5pY29kZSBjYXNl
4 messages
2016/05/31
[ruby-core:75419] [Ruby trunk Feature#12361] Proposal: add Geo::Coord class to standard library
From:
zverok.offline@...
Date:
2016-05-09 17:26:55 UTC
List:
ruby-core #75419
SXNzdWUgIzEyMzYxIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IFZpY3RvciBTaGVwZWxldi4KCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRmVhdHVyZSAjMTIzNjE6IFByb3Bv c2FsOiBhZGQgR2VvOjpDb29yZCBjbGFzcyB0byBzdGFuZGFyZCBsaWJyYXJ5Cmh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xMjM2MQoKKiBBdXRob3I6IFZpY3RvciBTaGVwZWxldgoq IFN0YXR1czogT3BlbgoqIFByaW9yaXR5OiBOb3JtYWwKKiBBc3NpZ25lZTogCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyMgUHJvcG9zYWwKCkFkZCBgR2VvOjpDb29y ZGAgY2xhc3MgdG8gUnVieSBzdGFuZGFyZCBsaWJyYXJ5LCByZXByZXNlbnRpbmcgYFtsYXRpdHVk ZSwgbG9uZ2l0dWRlXWAgcGFpciArIGNvbnZlbmllbmNlIG1ldGhvZHMuIEFkZCBgR2VvYCBzdGFu ZGFyZCBsaWJyYXJ5IHdpdGggYWRkaXRpb25hbCBjYWxjdWxhdGlvbnMgYW5kIGNvbnZlbmllbmNl IG1ldGhvZHMuCgojIyBSYXRpb25hbGUKCkluIG1vZGVybiBhcHBsaWNhdGlvbnMsIHdvcmtpbmcg d2l0aCBnZW9ncmFwaGljYWwgY29vcmRpbmF0ZXMgaXMgZnJlcXVlbnQuIFdlIHByb3Bvc2UgdG8g dGhpbmsgb2Ygc3VjaCBjb29yZGluYXRlcyAobmFtZWx5LCBgbGF0aXR1ZGUsIGxvbmdpdHVkZWAg cGFpcikgYXMgb2YgImJhc2ljIiB0eXBlIHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSBzdGFu ZGFyZCBsaWJyYXJ5IC0gdGhlIHNhbWUgd2F5IGFzIHdlIHN1cHBvcnQgYFRpbWVgL2BEYXRlYC9g RGF0ZVRpbWVgIGluc3RlYWQgb2YgaGF2aW5nIGl0IGRlZmluZWQKYnkgdXNlci9nZW1zLgoKVGhp cyB0eXBlIGlzIHRvbyAic21hbGwiIHRvIGJlIGRlZmluZWQgYnkgc2VwYXJhdGUgZ2VtLCBzbywg YWxsIG9mIGV4aXN0aW5nIGdlbyBnZW1zIChHZW9LaXQsIFJHZW8sIEdlb1J1YnksIEdyYXRpY3Vs ZSBldGMuKSBkZWZpbmUgdGhlaXIgb3duIGBMYXRMbmdgLCBvciBgTG9jYXRpb25gLCBvciBgUG9p bnRgLCB3aGF0ZXZlci4KCk9uIG90aGVyIGhhbmQsIEFQSSBkZXNpZ24gZm9yIHRoaXMgInNtYWxs IiB0eXBlIGlzIHZhZ3VlIGVub3VnaCBmb3IgYWxsIHRob3NlIHNpbWlsYXIgdHlwZXMgdG8gYmUg aW5jb21wYXRpYmxlIGFuZCBicmVhayBzbWFsbCBoYWJpdHMgYW5kIGNvbnZlbnRpb25zIHdoZW4g eW91IGNoYW5nZSBmcm9tIG9uZSBnZW8gbGlicmFyeSB0byBhbm90aGVyLCBvciB0cnkgdG8gdXNl IHNldmVyYWwKc2ltdWx0YW5lb3VzbHkuCgpBZGRpdGlvbmFseSwgbWFueSBnZW1zIHNvbWVob3cg d29ya2luZyB3aXRoIGdlbyBjb29yZGluYXRlcyAoZm9yIHdlYXRoZXIsIG9yIHRpbWV6b25lLCBv ciBhbm90aGVyIHRhc2tzKSBnZW5lcmFsbHkgcHJlZmVyIG5vdCB0byBpbnRyb2R1Y2UgdHlwZSwg YW5kIGp1c3Qgd29yayB3aXRoIGBbbGF0LCBsbmddYCBhcnJheSwgd2hpY2ggaXMgbm90IHZlcnkg Y29udmVuaWVudCwgZmFpdGhmdWxseS4KClNvLCBoYXZpbmcgImdlbyBjb29yZGluYXRlcyIgZnVu Y3Rpb25hbGl0eSBpbiBzdGFuZGFyZCBsaWJyYXJ5IHNlZW1zIHJlYXNvbmFibGUgYW5kIHZhbHVh YmxlLgoKIyMgRXhpc3RpbmcvcmVmZXJlbmNlIHNvbHV0aW9ucwoKUnVieToKCiogW0dlb0tpdDo6 TGF0TG5nXShodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9naXRodWIvZ2Vva2l0L2dlb2tpdC9tYXN0 ZXIvR2Vva2l0L0xhdExuZyk7CiogW1JHZW86OkZlYXR1cmU6OlBvaW50XShodHRwOi8vd3d3LnJ1 Ynlkb2MuaW5mby9nZW1zL3JnZW8vUkdlby9GZWF0dXJlL1BvaW50KSAod2l0aCBzZXZlcmFsICJw cml2YXRlIiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzKTsgUkdlbyBpbXBsZW1lbnRzIGZ1bGwgW09H QyBTaW1wbGUgRmVhdHVyZXNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpbXBsZV9G ZWF0dXJlcykgc3BlY2lmaWNhdGlvbiwgc28sIGl0cyBwb2ludHMgaGF2ZSBgemAgYW5kIGBtYCBj b29yZGluYXRlcywgcHJvamVjdGlvbiBhbmQgbXVjaCBtb3JlOwoqIFtHcmF0aWN1bGU6OkxvY2F0 aW9uXShodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9naXRodWIvY29sbGVjdGl2ZWlkZWEvZ3JhdGlj dWxlL0dyYXRpY3VsZS9Mb2NhdGlvbikgKG5vdCBzdHJpY3RseSBhIGBbbGF0LGxuZ11gIHdyYXBw ZXIpOwoqIFtSb3NhbWFyeTo6Tm9kZV0oaHR0cDovL3d3dy5ydWJ5ZG9jLmluZm8vZ2Vtcy9yb3Nl bWFyeS8wLjQuNC9Sb3NlbWFyeS9Ob2RlKSAoZm9sbG93cyBuYW1pbmcgY29udmVudGlvbiBvZiB1 bmRlcmx5aW5nIE9wZW5TdHJlZXRNYXAgQVBJKTsKCk90aGVyIHNvdXJjZXM6CiogUHl0aG9uOiBb Z2VvcHkuUG9pbnRdKGh0dHA6Ly9nZW9weS5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0LyNnZW9w eS5wb2ludC5Qb2ludCk7CiogW0VsYXN0aWNTZWFyY2hdKGh0dHBzOi8vd3d3LmVsYXN0aWMuY28v YmxvZy9nZW8tbG9jYXRpb24tYW5kLXNlYXJjaCkgdXNlcyBoYXNoIHdpdGggImxhdCIgYW5kICJs b24iIGtleXM7CiogR29vZ2xlIE1hcHMgW0dlb2NvZGluZyBBUEldKGh0dHBzOi8vZGV2ZWxvcGVy cy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9nZW9jb2RpbmcvaW50cm8jR2VvY29kaW5n UmVzcG9uc2VzKSB1c2VzIGhhc2ggd2l0aCAibGF0IiBhbmQgImxuZyIga2V5czsKKiBQb3N0R0lT OiBbcHJldHR5IGNvbXBsaWNhdGVkXShodHRwOi8vcG9zdGdpcy5uZXQvZG9jcy9tYW51YWwtMi4y L3VzaW5nX3Bvc3RnaXNfZGJtYW5hZ2VtZW50Lmh0bWwjUmVmT2JqZWN0KSAgaGFzIF9nZW9tZXRy aWNhbF8gKHByb2plY3RlZCkgYW5kIF9nZW9ncmFwaGljYWxfIChsYXQsIGxuZykgcG9pbnRzIGFu ZCBzdHVmZi4KCiMjIERlc2lnbiBkZWNpc2lvbnMKCldoaWxlIGRlc2lnbmluZyBgR2VvYCBsaWJy YXJ5LCBvdXIgcmVmZXJlbmNlIHBvaW50IHdhcyBzdGFuZGFyZCBgVGltZWAgY2xhc3MgKGFuZCwg dG8gbGVzc2VyIGV4dGVudCwgYERhdGVgL2BEYXRlVGltZWApLiBJdCBoYXMgdGhpcyByZXNwb25z aWJpbGl0aWVzOgoqIHN0b3JlcyBkYXRhIGluIHNpbXBsZSBpbnRlcm5hbCBmb3JtOwoqIGhlbHBz IHRvIHBhcnNlIGFuZCBmb3JtYXQgZGF0YSB0byBhbmQgZnJvbSBzdHJpbmdzOwoqIHByb3ZpZGVz IGVhc3kgYWNjZXNzIHRvIGxvZ2ljYWwgY29tcG9uZW50cyBvZiBkYXRhOwoqIGFsbG93cyBtb3N0 IHNpbXBsZSBhbmQgdW5hbWJpZ3VvdXMgY2FsY3VsYXRpb25zLgoKKipNYWluIHR5cGUgbmFtZSoq OiBhcyBmYXIgYXMgd2UgY2FuIHNlZSwgdGhlcmUncyBubyBnb29kIHNpbmd1bGFyIG5hbWUgZm9y IGAobGF0LCBsbmcpYCBwYWlyIGNvbmNlcHQuIEFzIG1lbnRpb25lZCBhYm92ZSwgdGhlcmUgY2Fu IGJlIHNlZW4gbmFtZXMgbGlrZSBgTGF0TG5nYCwgb3IgYExvY2F0aW9uYCwgb3IgYFBvaW50YDsg YW5kIGluIG5hdHVyYWwgbGFuZ3VhZ2UKanVzdCAiY29vcmRpbmF0ZXMiIHVzZWQgZnJlcXVlbnRs eS4gV2UgcHJvcG9zZSB0aGUgbmFtZSBgQ29vcmRgLCB3aGljaCBpcyBwcmV0dHkgc2hvcnQsIGVh c3kgdG8gcmVtZW1iZXIsIGRlbW9uc3RyYXRlcyBpbnRlbnRpb25zIChhbmQgbG9va3MgbGlrZSBz aW5ndWxhciwgc28geW91IGNhbiBoYXZlICJvbmUgY29vcmQgb2JqZWN0IiBhbmQgImFycmF5IG9m IGNvb3JkcyIsCndoaWNoIGlzIG5vdCAxMDAlIGxpbmd1aXN0aWNhbGx5IGNvcnJlY3QsIHlldCBj b252ZW5pZW50KS4gQWx0ZXJuYXRpdmUgYFBvaW50YCBuYW1lIHNlZW1zIHRvIGJlIHRvbyBhbWJp Z291cywgYmVpbmcgdXNlZCBpbiBtYW55IGNvbnRleHRzLgoKYEdlbzo6Q29vcmRgIG9iamVjdCBp cyAqKmltbXV0YWJsZSoqLCB0aGVyZSdzIG5vIHNlbWFudGljYWwgc2Vuc2UgaW4gYGxvY2F0aW9u LmxhdGl0dWRlID0gLi4uYCBvciBzb21ldGhpbmcgbGlrZSB0aGlzLgoKKipVbml0cyoqOiBgR2Vv YCBjYWxjdWxhdGlvbnMgKGp1c3QgbGlrZSBgVGltZWAgY2FsY3VsYXRpb25zKSBwcm92aWRlIG5v IHVuaXRzIG9wdGlvbnMsIGp1c3QgcmV0dXJuaW5nIG51bWJlcnMgbWVhc3VyZWQgaW4gImRlZmF1 bHQiIHVuaXRzOiBtZXRyZXMgZm9yIGRpc3RhbmNlcyAoYXMgdGhleSBhcmUgU0kgdW5pdCkgYW5k IGRlZ3JlZXMgZm9yIGF6aW11dGguIExhdGl0dWRlIGFuZCBsb25naXR1ZGUgYXJlIHN0b3JlZCBp biBkZWdyZWVzLCBidXQgcmFkaWFucyB2YWx1ZXMgYWNjZXNzb3JzIGFyZSBwcm92aWRlZCAoYmVp bmcgd2lkZWx5IHVzZWQgaW4gZ2VvZGVzeSBtYXRoKS4KClRoZXJlJ3MgaW50cm9kdWNlZCAqKmNv bmNlcHQgb2YgZ2xvYmUqKiB1c2VkIGludGVybmFsbHkgZm9yIGNhbGN1bGF0aW9ucy4gT25seSBn ZW5lcmljIChzcGhlcmUpIGFuZCBFYXJ0aCBnbG9iZXMgYXJlIGltcGxlbWVudGVkLCBidXQgZm9y IDIwMTYgd2UgZmVlbCBsaWtlIGN1cnJlbnQgZGVzaWduIG9mIGJhc2ljIHR5cGVzIHNob3VsZCB0 YWtlIGluIGNvbnNpZGVyYXRpb24KcG9zc2liaWxpdHkgb2Ygd3JpdGluZyBSdWJ5IHNjcmlwdHMg Zm9yIE1hcnMgbWFwcyBhbmFseXNpcy4gT25seSBvbmUgZ2VvZGVzeSBmb3JtdWxhIGlzIGltcGxl bWVudGVkIChWaW5jZW50eSwgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgb25lIG9mIHRoZSBtb3N0IHBy ZWNpc2UpLCBhcyBmb3Igc3RhbmRhcmQgbGlicmFyeSBjbGFzcyBpdCBjb25zaWRlcmVkIHVubmVj ZXNzYXJ5IHRvIHByb3ZpZGUgdXNlciB3aXRoIGdlb2Rlc3kgZm9ybXVsYWUgb3B0aW9ucy4KCk5v ICoqbWFwIHByb2plY3Rpb24qKiBtYXRoIHdhcyBhZGRlZCBpbnRvIGN1cnJlbnQgcHJvcG9zYWws IGJ1dCBpdCBtYXkgYmUgYSBnb29kIGRpcmVjdGlvbiBmb3IgZnVydGhlciB3b3JrLiBObyAqKmVs ZXZhdGlvbioqIGRhdGEgY29uc2lkZXJlZCBlaXRoZXIuCgojIyBQcm9wb3NhbCBkZXRhaWxzCgoj IyMgYEdlbzo6Q29vcmRgIGNsYXNzCgpSZXByZXNlbnRzIGBbbGF0aXR1ZGUsIGxvbmdpdHVkZV1g IHBhaXIuIExhdGl0dWRlIGlzIC05MCB0byArOTAgKGRlZ3JlZXMpLiBMb25naXR1ZGUgaXMgLTE4 MCB0byArMTgwLgoKQ2xhc3MgbWV0aG9kczoKKiBgbmV3KGxhdCwgbG5nKWAgY3JlYXRlcyBpbnN0 YW5jZSBmcm9tIHR3byBOdW1lcmljcyAoaW4gZGVncmVlcyk7CiogYG5ldyhsYXQ6LCBsbmc6KWAg a2V5d29yZCBhcmd1bWVudHMgZm9ybSBvZiBhYm92ZTsKKiBgbmV3KGxhdGQ6LCBsYXRtOiwgbGF0 czosIGxhdGg6LCBsbmdkOiBsbmdtOiwgbG5nczogbG5naDopYCBjcmVhdGVzIGluc3RhbmNlIGZy b20gY29vcmRpbmF0ZXMgaW4gKGRlZywgbWluLCBzZWMsIGhlbWlzcGhlcmUpIGZvcm07IGhlbWlz cGhlcmVzIGFyZSAiTiIvIlMiIGZvciBsYXRpdHVkZSBhbmQgIlciL0UiIGZvciBsb25naXR1ZGU7 IGFueSBjb21wb25lbnQgZXhjZXB0IGZvciBkZWdyZWVzIGNhbiBiZSBvbWl0dGVkOyBpZiBoZW1p c3BoZXJlIGlzIG9taXR0ZWQsIGl0IGlzIGRlY2lkZWQgYnkgZGVncmVlcyBzaWduIChsYXQ6IHBv c2l0aXZlIGlzICJOIiwgbG5nOiBwb3NpdGl2ZSBpcyAiRSIpOwoqIGBmcm9tX2goaGFzaClgIGNy ZWF0ZXMgaW5zdGFuY2UgZnJvbSBoYXNoIHdpdGggYCJsYXQiYCBvciBgImxhdGl0dWRlImAga2V5 IGFuZCBgImxvbiJgIG9yIGAibG5nImAgb3IgYCJsb25naXR1ZGUiYCBrZXkgKGNhc2UtaW5kZXBl bmRlbnQpOwoqIGBmcm9tX3JhZGlhbnMocGhpLCBsYSlgIGNyZWF0ZXMgaW5zdGFuY2UgZnJvbSBy YWRpYW4gdmFsdWVzOwoqIGBzdHJwY29vcmRgIHBhcnNlcyBzdHJpbmcgaW50byBjb29yZGluYXRl cyBieSBwcm92aWRlZCBwYXR0ZXJuIChzZWUgYmVsb3cgZm9yIHBhdHRlcm4gZGVzY3JpcHRpb24p OwoqIGBwYXJzZV9sbGAgcGFyc2VzIGNvb3JkaW5hdGVzIHN0cmluZyBpbiBgImZsb2F0LCBmbG9h dCJgIGZvcm07CiogYHBhcnNlX2Rtc2AgcGFyc2VzIGNvb3JkaW5hdGVzIHN0cmluZyBpbiBgZCBt IHMgaCwgZCBtIHMgaGAgZm9ybWF0IChjb25zaWRlcmluZyBzZXZlcmFsIHdpZGVseSB1c2VkIHN5 bWJvbHMgZm9yIGRlZ3JlZXMsIG1pbnV0ZXMgYW5kIHNlY29uZHMpOwoqIGBwYXJzZWAgdHJpZXMg dG8gcGFyc2Ugc3RyaW5nIGludG8gY29vcmRpbmF0ZXMgZnJvbSB2YXJpb3VzIGZvcm1hdHMuCgpJ bnN0YW5jZSBtZXRob2RzOgoqIGBsYXRgIGFuZCBgbG5nYCwgcmV0dXJuaW5nIGBGbG9hdGBzLCBz aWduZWQ7CiogYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWAgYXMgYW4gYWxpYXNlczsgYGxvbmAg YXMgYW4gYWRkaXRpb25hbCBhbGlhc2VzIGZvciBsb25naXR1ZGU7CiogYGxhdGRgLCBgbGF0bWAs IGBsYXRzYCwgYGxhdGhgOiBkZWdyZWUsIG1pbnV0ZSwgc2Vjb25kLCBoZW1pc3BoZXJlOyBgbGF0 ZGAgYW5kIGBsYXRtYCBhcmUgYEZpeG51bWAsIGBsYXRzYCBpcyBgRmxvYXRgLCBgbGF0aGAgaXMg Ik4iLyJTIjsgYWxsIG51bWJlcnMgYXJlIHVuc2lnbmVkOwoqIGBsbmdkYCwgYGxuZ21gLCBgbG5n c2AsIGBsbmdoYDogdGhlIHNhbWUgZm9yIGxvbmdpdHVkZSAoaGVtaXNwaGVyZSBpcyAiVyIvIkUi KTsKKiBgbGF0ZG1zKG5vaGVtaXNwaGVyZSA9IGZhbHNlKWAgcmV0dXJucyBgW2xhdGQsIGxhdG0s IGxhdHMsIGxhdGhdYCB3aXRoIGBub2hlbWlzcGhlcmVgIHBhcmFtIGVxdWFsIHRvIGBmYWxzZWAs IGFuZCBgW8KxbGF0ZCwgbGF0bSwgbGF0c11gIHdpdGggYHRydWVgOyBzYW1lIHdpdGggYGxuZ2Rt c2AgZm9yIGxvbmdpdHVkZTsKKiBgcGhpYCBhbmQgYM+GYCBpcyBsYXRpdHVkZSBpbiByYWRpYW5z IChoZWxwZnVsIGZvciBtYXRoKSwgYGxhYCBvciBgzrtgIGlzIGxvbmdpdHVkZSBpbiByYWRpYW5z IChub3QgYGxhbWJkYWAgdG8gbm90IGNvbmZ1c2Ugd2l0aCBLZXJuZWwgbWV0aG9kKTsKKiBgdG9f c2AgcmV0dXJuaW5nIHN0cmluZyBsaWtlICI1MC4wMDQ0NDQsMzYuMjMxMzg5IiAoZ29vZCBmb3Ig bWFwIFVSTHMgY29uc3RydWN0aW9uLCBmb3IgZXhhbXBsZSk7CiogYHRvX2gobGF0OiA6bGF0LCBs bmc6IDpsbmcpYCBjb252ZXJ0cyBjb29yZCB0byBoYXNoICh3aXRoIGRlc2lyZWQga2V5IG5hbWVz KTsKKiBgdG9fYWAgY29udmVydHMgY29vcmQgdG8gc2ltcGxlIGBbbGF0LCBsbmddYCBwYWlyOwoq IGBzdHJmY29vcmQoZm9ybWF0c3RyKWAgZm9yIGNvbXBsZXggY29vcmRpbmF0ZSBmb3JtYXR0aW5n IChzZWUgYmVsb3cgZm9yIGZvcm1hdCBzdHJpbmcgZGVzY3JpcHRpb24pOwoqIGBkaXN0YW5jZShv dGhlcilgIGNhbGN1bGF0ZXMgZGlzdGFuY2UgdG8gYW5vdGhlciBwb2ludCAoaW4gbWV0cmVzKTsK KiBgYXppbXV0aChvdGhlcilgIGNhbGN1bGF0ZXMgZGlyZWN0aW9uIHRvIHRhcmdldCAoaW4gZGVn cmVlcyk7CiogYGVuZHBvaW50KGRpcmVjdGlvbiwgYXppbXV0aClgIGNhbGN1bGF0ZXMgZmluYWwg cG9pbnQgb2YgdGhlIGxpbmUgb2YgYGRpc3RhbmNlYCBtZXRyZXMgZ29pbmcgaW4gYGF6aW11dGhg IGRpcmVjdGlvbiBmcm9tIGN1cnJlbnQgcG9pbnQuCgojIyMjIGBzdHJwY29vcmRgL2BzdHJmY29v cmRgCgpFeGFtcGxlOgoKfn5+cnVieQpraGFya2l2LnN0cmZjb29yZCgnJWxhdGR1wrAlbGF0beKA siVsYXRz4oCzICVsYXRoLCAlbG5nZHXCsCVsbmdt4oCyJWxuZ3PigLMgJWxuZ2gnKQojID0+ICI1 MMKwMOKAsjE24oCzIE4sIDM2wrAxM+KAsjUz4oCzIEUiCn5+fgoKRGlyZWN0aXZlczoKKiBgJWxh dGAgLSBmdWxsIGxhdGl0dWRlLCBmbG9hdDsgY2FuIGJlIGZvcm1hdHRlZCB3aXRoIG1vcmUgY29u dHJvbCBsaWtlIGAlLjRsYXRgIChmb3VyIGRpZ2l0cyBhZnRlciBwb2ludCkgb3IgYCUrbGF0YCAo ZXhwbGljaXQgcGx1cyBzaWduIGZvciBwb3NpdGl2ZSBsYXRpdHVkZXMpOwoqIGAlbGF0ZGAgLSBs YXRpdHVkZSBkZWdyZWVzLCB1bnNpZ25lZCwgaW50ZWdlcgoqIGAlbGF0ZHNgIC0gbGF0aXR1ZGUg ZGVncmVlcywgc2lnbmVkCiogYCVsYXRtYCAtIGxhdGl0dWRlIG1pbnV0ZXMsIHVuc2lnbmVkLCBp bnRlZ2VyCiogYCVsYXRzYCAtIGxhdGl0dWRlIHNlY29uZHMsIHVuc2lnbmVkLCBpbnRlZ2VyLCBi dXQgY2FuIGJlIGZvcm1hdHRlZCBhcyBmbG9hdDogYCUuMmxhdHNgCiogYCVsYXRoYCAtIGxhdGl0 dWRlIGhlbWlzcGhlcmUsIG9uZSBsZXR0ZXIgKCJOIi8iUyIpCiogYCVsbmdgLCBgJWxuZ2RgLCBg JWxuZ2RzYCwgYCVsbmdzYCwgYCVsbmdoYCwgYCVsbmdIYCAtIHNhbWUgZm9yIGxvbmdpdHVkZQoq IGAlJWAgbGl0ZXJhbCBgJWAgc2lnbgoKIyMjIEN1cnJlbnQgaW1wbGVtZW50YXRpb24KClByb3Bv c2VkIGltcGxlbWVudGF0aW9uIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2dpdGh1Yi5jb20venZl cm9rL2dlb19jb29yZC4KCkl0IHdhcyBjcmVhdGVkIHdpdGggdGhvdWdodHMgb2Ygc3RhbmRhcmQg bGlicmFyeSwgc28sIGFsbCBkb2NzIGFyZSBpbiBSRG9jIGZvcm1hdCwgYW5kIHRlc3RzL3NwZWNz IGFyZSBpbiBtc3BlYy1jb21wYXRpYmxlIHJzcGVjIGZsYXZvdXIuCgoKCgotLSAKaHR0cHM6Ly9i dWdzLnJ1YnktbGFuZy5vcmcvCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVz dEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1s YW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==