[ruby-core:75427] [Ruby trunk Feature#12361] Proposal: add Geo::Coord class to standard library

From: duerst@...
Date: 2016-05-10 04:19:45 UTC
List: ruby-core #75427
SXNzdWUgIzEyMzYxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgTWFydGluIETDvHJzdC4KCgpPbiBydWJ5
Z2VtcywgSSBzZWUgYSBsb3Qgb2YgZ2VtcyB3aXRoICdnZW8nIGluIHRoZWlyIG5hbWUuIFdoaWNo
IG9uZSBpcyB5b3Vycz8gSG93IHBvcHVsYXIgaXMgaXQ/IFRoZXNlIGRheXMsIGl0J3MgZWFzeSB0
byB1c2Ugc29tZXRoaW5nIGFzIGEgZ2VtLCBzbyBpdCdzIG5vdCB0aGF0IG5lY2Vzc2FyeSB0byBp
bmNsdWRlIHRoaW5ncyBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgoKWW91IG1ha2UgYSBsb3Qg
b2YgY29tcGFyaXNvbnMgd2l0aCBUaW1lLiBUaW1lIGhhcyB0aGluZ3Mgc3VjaCBhcyB0aW1lem9u
ZXMuIEdlbyBjb29yZGluYXRlcyBhbHNvIGhhdmUgYWxsIGtpbmRzIG9mIGNvbXBsaWNhdGVkIGRl
dGFpbHMuIEkgaGFwcGVuIHRvIGx1cmsgb24gdGhlIElFVEYgZ2VvanNvbiBsaXN0LCBhbmQgdGhl
cmUgc3VjaCB0aGluZ3MgZ2V0IGRpc2N1c3NlZC4gRm9yIGV4YW1wbGUsIHRoZXJlIHNlZW1zIHRv
IGJlIExhdC9Mb25nIGZvcm1hdHMgYW5kIExvbmcvTGF0IGZvcm1hdHMuIFdoeSBkaWQgeW91IGNo
b29zZSBMYXQvTG9uZz8gQWxzbywgcGVvcGxlIHRoZXJlIG9mdGVuIHRhbGsgYWJvdXQgc29tZXRo
aW5nIGNhbGxlZCBDUlMgKGNvb3JkaW5hdGUgcmVmZXJlbmNlIHN5c3RlbSwgSSBndWVzcykuIFdo
aWNoIG9uZSBkbyB5b3UgdXNlLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpGZWF0dXJlICMxMjM2MTogUHJvcG9zYWw6IGFkZCBHZW86OkNvb3JkIGNsYXNzIHRvIHN0
YW5kYXJkIGxpYnJhcnkKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzEyMzYxI2No
YW5nZS01ODU0NQoKKiBBdXRob3I6IFZpY3RvciBTaGVwZWxldgoqIFN0YXR1czogT3BlbgoqIFBy
aW9yaXR5OiBOb3JtYWwKKiBBc3NpZ25lZTogCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIyMgUHJvcG9zYWwKCkFkZCBgR2VvOjpDb29yZGAgY2xhc3MgdG8gUnVieSBz
dGFuZGFyZCBsaWJyYXJ5LCByZXByZXNlbnRpbmcgYFtsYXRpdHVkZSwgbG9uZ2l0dWRlXWAgcGFp
ciArIGNvbnZlbmllbmNlIG1ldGhvZHMuIEFkZCBgR2VvYCBzdGFuZGFyZCBsaWJyYXJ5IHdpdGgg
YWRkaXRpb25hbCBjYWxjdWxhdGlvbnMgYW5kIGNvbnZlbmllbmNlIG1ldGhvZHMuCgojIyBSYXRp
b25hbGUKCkluIG1vZGVybiBhcHBsaWNhdGlvbnMsIHdvcmtpbmcgd2l0aCBnZW9ncmFwaGljYWwg
Y29vcmRpbmF0ZXMgaXMgZnJlcXVlbnQuIFdlIHByb3Bvc2UgdG8gdGhpbmsgb2Ygc3VjaCBjb29y
ZGluYXRlcyAobmFtZWx5LCBgbGF0aXR1ZGUsIGxvbmdpdHVkZWAgcGFpcikgYXMgb2YgImJhc2lj
IiB0eXBlIHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSBzdGFuZGFyZCBsaWJyYXJ5IC0gdGhl
IHNhbWUgd2F5IGFzIHdlIHN1cHBvcnQgYFRpbWVgL2BEYXRlYC9gRGF0ZVRpbWVgIGluc3RlYWQg
b2YgaGF2aW5nIGl0IGRlZmluZWQKYnkgdXNlci9nZW1zLgoKVGhpcyB0eXBlIGlzIHRvbyAic21h
bGwiIHRvIGJlIGRlZmluZWQgYnkgc2VwYXJhdGUgZ2VtLCBzbywgYWxsIG9mIGV4aXN0aW5nIGdl
byBnZW1zIChHZW9LaXQsIFJHZW8sIEdlb1J1YnksIEdyYXRpY3VsZSBldGMuKSBkZWZpbmUgdGhl
aXIgb3duIGBMYXRMbmdgLCBvciBgTG9jYXRpb25gLCBvciBgUG9pbnRgLCB3aGF0ZXZlci4KCk9u
IG90aGVyIGhhbmQsIEFQSSBkZXNpZ24gZm9yIHRoaXMgInNtYWxsIiB0eXBlIGlzIHZhZ3VlIGVu
b3VnaCBmb3IgYWxsIHRob3NlIHNpbWlsYXIgdHlwZXMgdG8gYmUgaW5jb21wYXRpYmxlIGFuZCBi
cmVhayBzbWFsbCBoYWJpdHMgYW5kIGNvbnZlbnRpb25zIHdoZW4geW91IGNoYW5nZSBmcm9tIG9u
ZSBnZW8gbGlicmFyeSB0byBhbm90aGVyLCBvciB0cnkgdG8gdXNlIHNldmVyYWwKc2ltdWx0YW5l
b3VzbHkuCgpBZGRpdGlvbmFseSwgbWFueSBnZW1zIHNvbWVob3cgd29ya2luZyB3aXRoIGdlbyBj
b29yZGluYXRlcyAoZm9yIHdlYXRoZXIsIG9yIHRpbWV6b25lLCBvciBhbm90aGVyIHRhc2tzKSBn
ZW5lcmFsbHkgcHJlZmVyIG5vdCB0byBpbnRyb2R1Y2UgdHlwZSwgYW5kIGp1c3Qgd29yayB3aXRo
IGBbbGF0LCBsbmddYCBhcnJheSwgd2hpY2ggaXMgbm90IHZlcnkgY29udmVuaWVudCwgZmFpdGhm
dWxseS4KClNvLCBoYXZpbmcgImdlbyBjb29yZGluYXRlcyIgZnVuY3Rpb25hbGl0eSBpbiBzdGFu
ZGFyZCBsaWJyYXJ5IHNlZW1zIHJlYXNvbmFibGUgYW5kIHZhbHVhYmxlLgoKIyMgRXhpc3Rpbmcv
cmVmZXJlbmNlIHNvbHV0aW9ucwoKUnVieToKCiogW0dlb0tpdDo6TGF0TG5nXShodHRwOi8vd3d3
LnJ1Ynlkb2MuaW5mby9naXRodWIvZ2Vva2l0L2dlb2tpdC9tYXN0ZXIvR2Vva2l0L0xhdExuZyk7
CiogW1JHZW86OkZlYXR1cmU6OlBvaW50XShodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9nZW1zL3Jn
ZW8vUkdlby9GZWF0dXJlL1BvaW50KSAod2l0aCBzZXZlcmFsICJwcml2YXRlIiBpbXBsZW1lbnRh
dGlvbiBjbGFzc2VzKTsgUkdlbyBpbXBsZW1lbnRzIGZ1bGwgW09HQyBTaW1wbGUgRmVhdHVyZXNd
KGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpbXBsZV9GZWF0dXJlcykgc3BlY2lmaWNh
dGlvbiwgc28sIGl0cyBwb2ludHMgaGF2ZSBgemAgYW5kIGBtYCBjb29yZGluYXRlcywgcHJvamVj
dGlvbiBhbmQgbXVjaCBtb3JlOwoqIFtHcmF0aWN1bGU6OkxvY2F0aW9uXShodHRwOi8vd3d3LnJ1
Ynlkb2MuaW5mby9naXRodWIvY29sbGVjdGl2ZWlkZWEvZ3JhdGljdWxlL0dyYXRpY3VsZS9Mb2Nh
dGlvbikgKG5vdCBzdHJpY3RseSBhIGBbbGF0LGxuZ11gIHdyYXBwZXIpOwoqIFtSb3NhbWFyeTo6
Tm9kZV0oaHR0cDovL3d3dy5ydWJ5ZG9jLmluZm8vZ2Vtcy9yb3NlbWFyeS8wLjQuNC9Sb3NlbWFy
eS9Ob2RlKSAoZm9sbG93cyBuYW1pbmcgY29udmVudGlvbiBvZiB1bmRlcmx5aW5nIE9wZW5TdHJl
ZXRNYXAgQVBJKTsKCk90aGVyIHNvdXJjZXM6CiogUHl0aG9uOiBbZ2VvcHkuUG9pbnRdKGh0dHA6
Ly9nZW9weS5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0LyNnZW9weS5wb2ludC5Qb2ludCk7Ciog
W0VsYXN0aWNTZWFyY2hdKGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vYmxvZy9nZW8tbG9jYXRpb24t
YW5kLXNlYXJjaCkgdXNlcyBoYXNoIHdpdGggImxhdCIgYW5kICJsb24iIGtleXM7CiogR29vZ2xl
IE1hcHMgW0dlb2NvZGluZyBBUEldKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMv
ZG9jdW1lbnRhdGlvbi9nZW9jb2RpbmcvaW50cm8jR2VvY29kaW5nUmVzcG9uc2VzKSB1c2VzIGhh
c2ggd2l0aCAibGF0IiBhbmQgImxuZyIga2V5czsKKiBQb3N0R0lTOiBbcHJldHR5IGNvbXBsaWNh
dGVkXShodHRwOi8vcG9zdGdpcy5uZXQvZG9jcy9tYW51YWwtMi4yL3VzaW5nX3Bvc3RnaXNfZGJt
YW5hZ2VtZW50Lmh0bWwjUmVmT2JqZWN0KSAgaGFzIF9nZW9tZXRyaWNhbF8gKHByb2plY3RlZCkg
YW5kIF9nZW9ncmFwaGljYWxfIChsYXQsIGxuZykgcG9pbnRzIGFuZCBzdHVmZi4KCiMjIERlc2ln
biBkZWNpc2lvbnMKCldoaWxlIGRlc2lnbmluZyBgR2VvYCBsaWJyYXJ5LCBvdXIgcmVmZXJlbmNl
IHBvaW50IHdhcyBzdGFuZGFyZCBgVGltZWAgY2xhc3MgKGFuZCwgdG8gbGVzc2VyIGV4dGVudCwg
YERhdGVgL2BEYXRlVGltZWApLiBJdCBoYXMgdGhpcyByZXNwb25zaWJpbGl0aWVzOgoqIHN0b3Jl
cyBkYXRhIGluIHNpbXBsZSBpbnRlcm5hbCBmb3JtOwoqIGhlbHBzIHRvIHBhcnNlIGFuZCBmb3Jt
YXQgZGF0YSB0byBhbmQgZnJvbSBzdHJpbmdzOwoqIHByb3ZpZGVzIGVhc3kgYWNjZXNzIHRvIGxv
Z2ljYWwgY29tcG9uZW50cyBvZiBkYXRhOwoqIGFsbG93cyBtb3N0IHNpbXBsZSBhbmQgdW5hbWJp
Z3VvdXMgY2FsY3VsYXRpb25zLgoKKipNYWluIHR5cGUgbmFtZSoqOiBhcyBmYXIgYXMgd2UgY2Fu
IHNlZSwgdGhlcmUncyBubyBnb29kIHNpbmd1bGFyIG5hbWUgZm9yIGAobGF0LCBsbmcpYCBwYWly
IGNvbmNlcHQuIEFzIG1lbnRpb25lZCBhYm92ZSwgdGhlcmUgY2FuIGJlIHNlZW4gbmFtZXMgbGlr
ZSBgTGF0TG5nYCwgb3IgYExvY2F0aW9uYCwgb3IgYFBvaW50YDsgYW5kIGluIG5hdHVyYWwgbGFu
Z3VhZ2UKanVzdCAiY29vcmRpbmF0ZXMiIHVzZWQgZnJlcXVlbnRseS4gV2UgcHJvcG9zZSB0aGUg
bmFtZSBgQ29vcmRgLCB3aGljaCBpcyBwcmV0dHkgc2hvcnQsIGVhc3kgdG8gcmVtZW1iZXIsIGRl
bW9uc3RyYXRlcyBpbnRlbnRpb25zIChhbmQgbG9va3MgbGlrZSBzaW5ndWxhciwgc28geW91IGNh
biBoYXZlICJvbmUgY29vcmQgb2JqZWN0IiBhbmQgImFycmF5IG9mIGNvb3JkcyIsCndoaWNoIGlz
IG5vdCAxMDAlIGxpbmd1aXN0aWNhbGx5IGNvcnJlY3QsIHlldCBjb252ZW5pZW50KS4gQWx0ZXJu
YXRpdmUgYFBvaW50YCBuYW1lIHNlZW1zIHRvIGJlIHRvbyBhbWJpZ291cywgYmVpbmcgdXNlZCBp
biBtYW55IGNvbnRleHRzLgoKYEdlbzo6Q29vcmRgIG9iamVjdCBpcyAqKmltbXV0YWJsZSoqLCB0
aGVyZSdzIG5vIHNlbWFudGljYWwgc2Vuc2UgaW4gYGxvY2F0aW9uLmxhdGl0dWRlID0gLi4uYCBv
ciBzb21ldGhpbmcgbGlrZSB0aGlzLgoKKipVbml0cyoqOiBgR2VvYCBjYWxjdWxhdGlvbnMgKGp1
c3QgbGlrZSBgVGltZWAgY2FsY3VsYXRpb25zKSBwcm92aWRlIG5vIHVuaXRzIG9wdGlvbnMsIGp1
c3QgcmV0dXJuaW5nIG51bWJlcnMgbWVhc3VyZWQgaW4gImRlZmF1bHQiIHVuaXRzOiBtZXRyZXMg
Zm9yIGRpc3RhbmNlcyAoYXMgdGhleSBhcmUgU0kgdW5pdCkgYW5kIGRlZ3JlZXMgZm9yIGF6aW11
dGguIExhdGl0dWRlIGFuZCBsb25naXR1ZGUgYXJlIHN0b3JlZCBpbiBkZWdyZWVzLCBidXQgcmFk
aWFucyB2YWx1ZXMgYWNjZXNzb3JzIGFyZSBwcm92aWRlZCAoYmVpbmcgd2lkZWx5IHVzZWQgaW4g
Z2VvZGVzeSBtYXRoKS4KClRoZXJlJ3MgaW50cm9kdWNlZCAqKmNvbmNlcHQgb2YgZ2xvYmUqKiB1
c2VkIGludGVybmFsbHkgZm9yIGNhbGN1bGF0aW9ucy4gT25seSBnZW5lcmljIChzcGhlcmUpIGFu
ZCBFYXJ0aCBnbG9iZXMgYXJlIGltcGxlbWVudGVkLCBidXQgZm9yIDIwMTYgd2UgZmVlbCBsaWtl
IGN1cnJlbnQgZGVzaWduIG9mIGJhc2ljIHR5cGVzIHNob3VsZCB0YWtlIGluIGNvbnNpZGVyYXRp
b24KcG9zc2liaWxpdHkgb2Ygd3JpdGluZyBSdWJ5IHNjcmlwdHMgZm9yIE1hcnMgbWFwcyBhbmFs
eXNpcy4gT25seSBvbmUgZ2VvZGVzeSBmb3JtdWxhIGlzIGltcGxlbWVudGVkIChWaW5jZW50eSwg
Z2VuZXJhbGx5IGNvbnNpZGVyZWQgb25lIG9mIHRoZSBtb3N0IHByZWNpc2UpLCBhcyBmb3Igc3Rh
bmRhcmQgbGlicmFyeSBjbGFzcyBpdCBjb25zaWRlcmVkIHVubmVjZXNzYXJ5IHRvIHByb3ZpZGUg
dXNlciB3aXRoIGdlb2Rlc3kgZm9ybXVsYWUgb3B0aW9ucy4KCk5vICoqbWFwIHByb2plY3Rpb24q
KiBtYXRoIHdhcyBhZGRlZCBpbnRvIGN1cnJlbnQgcHJvcG9zYWwsIGJ1dCBpdCBtYXkgYmUgYSBn
b29kIGRpcmVjdGlvbiBmb3IgZnVydGhlciB3b3JrLiBObyAqKmVsZXZhdGlvbioqIGRhdGEgY29u
c2lkZXJlZCBlaXRoZXIuCgojIyBQcm9wb3NhbCBkZXRhaWxzCgojIyMgYEdlbzo6Q29vcmRgIGNs
YXNzCgpSZXByZXNlbnRzIGBbbGF0aXR1ZGUsIGxvbmdpdHVkZV1gIHBhaXIuIExhdGl0dWRlIGlz
IC05MCB0byArOTAgKGRlZ3JlZXMpLiBMb25naXR1ZGUgaXMgLTE4MCB0byArMTgwLgoKQ2xhc3Mg
bWV0aG9kczoKKiBgbmV3KGxhdCwgbG5nKWAgY3JlYXRlcyBpbnN0YW5jZSBmcm9tIHR3byBOdW1l
cmljcyAoaW4gZGVncmVlcyk7CiogYG5ldyhsYXQ6LCBsbmc6KWAga2V5d29yZCBhcmd1bWVudHMg
Zm9ybSBvZiBhYm92ZTsKKiBgbmV3KGxhdGQ6LCBsYXRtOiwgbGF0czosIGxhdGg6LCBsbmdkOiBs
bmdtOiwgbG5nczogbG5naDopYCBjcmVhdGVzIGluc3RhbmNlIGZyb20gY29vcmRpbmF0ZXMgaW4g
KGRlZywgbWluLCBzZWMsIGhlbWlzcGhlcmUpIGZvcm07IGhlbWlzcGhlcmVzIGFyZSAiTiIvIlMi
IGZvciBsYXRpdHVkZSBhbmQgIlciL0UiIGZvciBsb25naXR1ZGU7IGFueSBjb21wb25lbnQgZXhj
ZXB0IGZvciBkZWdyZWVzIGNhbiBiZSBvbWl0dGVkOyBpZiBoZW1pc3BoZXJlIGlzIG9taXR0ZWQs
IGl0IGlzIGRlY2lkZWQgYnkgZGVncmVlcyBzaWduIChsYXQ6IHBvc2l0aXZlIGlzICJOIiwgbG5n
OiBwb3NpdGl2ZSBpcyAiRSIpOwoqIGBmcm9tX2goaGFzaClgIGNyZWF0ZXMgaW5zdGFuY2UgZnJv
bSBoYXNoIHdpdGggYCJsYXQiYCBvciBgImxhdGl0dWRlImAga2V5IGFuZCBgImxvbiJgIG9yIGAi
bG5nImAgb3IgYCJsb25naXR1ZGUiYCBrZXkgKGNhc2UtaW5kZXBlbmRlbnQpOwoqIGBmcm9tX3Jh
ZGlhbnMocGhpLCBsYSlgIGNyZWF0ZXMgaW5zdGFuY2UgZnJvbSByYWRpYW4gdmFsdWVzOwoqIGBz
dHJwY29vcmRgIHBhcnNlcyBzdHJpbmcgaW50byBjb29yZGluYXRlcyBieSBwcm92aWRlZCBwYXR0
ZXJuIChzZWUgYmVsb3cgZm9yIHBhdHRlcm4gZGVzY3JpcHRpb24pOwoqIGBwYXJzZV9sbGAgcGFy
c2VzIGNvb3JkaW5hdGVzIHN0cmluZyBpbiBgImZsb2F0LCBmbG9hdCJgIGZvcm07CiogYHBhcnNl
X2Rtc2AgcGFyc2VzIGNvb3JkaW5hdGVzIHN0cmluZyBpbiBgZCBtIHMgaCwgZCBtIHMgaGAgZm9y
bWF0IChjb25zaWRlcmluZyBzZXZlcmFsIHdpZGVseSB1c2VkIHN5bWJvbHMgZm9yIGRlZ3JlZXMs
IG1pbnV0ZXMgYW5kIHNlY29uZHMpOwoqIGBwYXJzZWAgdHJpZXMgdG8gcGFyc2Ugc3RyaW5nIGlu
dG8gY29vcmRpbmF0ZXMgZnJvbSB2YXJpb3VzIGZvcm1hdHMuCgpJbnN0YW5jZSBtZXRob2RzOgoq
IGBsYXRgIGFuZCBgbG5nYCwgcmV0dXJuaW5nIGBGbG9hdGBzLCBzaWduZWQ7CiogYGxhdGl0dWRl
YCBhbmQgYGxvbmdpdHVkZWAgYXMgYW4gYWxpYXNlczsgYGxvbmAgYXMgYW4gYWRkaXRpb25hbCBh
bGlhc2VzIGZvciBsb25naXR1ZGU7CiogYGxhdGRgLCBgbGF0bWAsIGBsYXRzYCwgYGxhdGhgOiBk
ZWdyZWUsIG1pbnV0ZSwgc2Vjb25kLCBoZW1pc3BoZXJlOyBgbGF0ZGAgYW5kIGBsYXRtYCBhcmUg
YEZpeG51bWAsIGBsYXRzYCBpcyBgRmxvYXRgLCBgbGF0aGAgaXMgIk4iLyJTIjsgYWxsIG51bWJl
cnMgYXJlIHVuc2lnbmVkOwoqIGBsbmdkYCwgYGxuZ21gLCBgbG5nc2AsIGBsbmdoYDogdGhlIHNh
bWUgZm9yIGxvbmdpdHVkZSAoaGVtaXNwaGVyZSBpcyAiVyIvIkUiKTsKKiBgbGF0ZG1zKG5vaGVt
aXNwaGVyZSA9IGZhbHNlKWAgcmV0dXJucyBgW2xhdGQsIGxhdG0sIGxhdHMsIGxhdGhdYCB3aXRo
IGBub2hlbWlzcGhlcmVgIHBhcmFtIGVxdWFsIHRvIGBmYWxzZWAsIGFuZCBgW8KxbGF0ZCwgbGF0
bSwgbGF0c11gIHdpdGggYHRydWVgOyBzYW1lIHdpdGggYGxuZ2Rtc2AgZm9yIGxvbmdpdHVkZTsK
KiBgcGhpYCBhbmQgYM+GYCBpcyBsYXRpdHVkZSBpbiByYWRpYW5zIChoZWxwZnVsIGZvciBtYXRo
KSwgYGxhYCBvciBgzrtgIGlzIGxvbmdpdHVkZSBpbiByYWRpYW5zIChub3QgYGxhbWJkYWAgdG8g
bm90IGNvbmZ1c2Ugd2l0aCBLZXJuZWwgbWV0aG9kKTsKKiBgdG9fc2AgcmV0dXJuaW5nIHN0cmlu
ZyBsaWtlICI1MC4wMDQ0NDQsMzYuMjMxMzg5IiAoZ29vZCBmb3IgbWFwIFVSTHMgY29uc3RydWN0
aW9uLCBmb3IgZXhhbXBsZSk7CiogYHRvX2gobGF0OiA6bGF0LCBsbmc6IDpsbmcpYCBjb252ZXJ0
cyBjb29yZCB0byBoYXNoICh3aXRoIGRlc2lyZWQga2V5IG5hbWVzKTsKKiBgdG9fYWAgY29udmVy
dHMgY29vcmQgdG8gc2ltcGxlIGBbbGF0LCBsbmddYCBwYWlyOwoqIGBzdHJmY29vcmQoZm9ybWF0
c3RyKWAgZm9yIGNvbXBsZXggY29vcmRpbmF0ZSBmb3JtYXR0aW5nIChzZWUgYmVsb3cgZm9yIGZv
cm1hdCBzdHJpbmcgZGVzY3JpcHRpb24pOwoqIGBkaXN0YW5jZShvdGhlcilgIGNhbGN1bGF0ZXMg
ZGlzdGFuY2UgdG8gYW5vdGhlciBwb2ludCAoaW4gbWV0cmVzKTsKKiBgYXppbXV0aChvdGhlcilg
IGNhbGN1bGF0ZXMgZGlyZWN0aW9uIHRvIHRhcmdldCAoaW4gZGVncmVlcyk7CiogYGVuZHBvaW50
KGRpcmVjdGlvbiwgYXppbXV0aClgIGNhbGN1bGF0ZXMgZmluYWwgcG9pbnQgb2YgdGhlIGxpbmUg
b2YgYGRpc3RhbmNlYCBtZXRyZXMgZ29pbmcgaW4gYGF6aW11dGhgIGRpcmVjdGlvbiBmcm9tIGN1
cnJlbnQgcG9pbnQuCgojIyMjIGBzdHJwY29vcmRgL2BzdHJmY29vcmRgCgpFeGFtcGxlOgoKfn5+
cnVieQpraGFya2l2LnN0cmZjb29yZCgnJWxhdGR1wrAlbGF0beKAsiVsYXRz4oCzICVsYXRoLCAl
bG5nZHXCsCVsbmdt4oCyJWxuZ3PigLMgJWxuZ2gnKQojID0+ICI1MMKwMOKAsjE24oCzIE4sIDM2
wrAxM+KAsjUz4oCzIEUiCn5+fgoKRGlyZWN0aXZlczoKKiBgJWxhdGAgLSBmdWxsIGxhdGl0dWRl
LCBmbG9hdDsgY2FuIGJlIGZvcm1hdHRlZCB3aXRoIG1vcmUgY29udHJvbCBsaWtlIGAlLjRsYXRg
IChmb3VyIGRpZ2l0cyBhZnRlciBwb2ludCkgb3IgYCUrbGF0YCAoZXhwbGljaXQgcGx1cyBzaWdu
IGZvciBwb3NpdGl2ZSBsYXRpdHVkZXMpOwoqIGAlbGF0ZGAgLSBsYXRpdHVkZSBkZWdyZWVzLCB1
bnNpZ25lZCwgaW50ZWdlcgoqIGAlbGF0ZHNgIC0gbGF0aXR1ZGUgZGVncmVlcywgc2lnbmVkCiog
YCVsYXRtYCAtIGxhdGl0dWRlIG1pbnV0ZXMsIHVuc2lnbmVkLCBpbnRlZ2VyCiogYCVsYXRzYCAt
IGxhdGl0dWRlIHNlY29uZHMsIHVuc2lnbmVkLCBpbnRlZ2VyLCBidXQgY2FuIGJlIGZvcm1hdHRl
ZCBhcyBmbG9hdDogYCUuMmxhdHNgCiogYCVsYXRoYCAtIGxhdGl0dWRlIGhlbWlzcGhlcmUsIG9u
ZSBsZXR0ZXIgKCJOIi8iUyIpCiogYCVsbmdgLCBgJWxuZ2RgLCBgJWxuZ2RzYCwgYCVsbmdzYCwg
YCVsbmdoYCwgYCVsbmdIYCAtIHNhbWUgZm9yIGxvbmdpdHVkZQoqIGAlJWAgbGl0ZXJhbCBgJWAg
c2lnbgoKIyMjIEN1cnJlbnQgaW1wbGVtZW50YXRpb24KClByb3Bvc2VkIGltcGxlbWVudGF0aW9u
IGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2dpdGh1Yi5jb20venZlcm9rL2dlb19jb29yZC4KCkl0
IHdhcyBjcmVhdGVkIHdpdGggdGhvdWdodHMgb2Ygc3RhbmRhcmQgbGlicmFyeSwgc28sIGFsbCBk
b2NzIGFyZSBpbiBSRG9jIGZvcm1hdCwgYW5kIHRlc3RzL3NwZWNzIGFyZSBpbiBtc3BlYy1jb21w
YXRpYmxlIHJzcGVjIGZsYXZvdXIuCgoKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcv
CgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5LWxhbmcub3JnP3N1
YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1sYW5nLm9yZy9jZ2ktYmluL21h
aWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==

In This Thread

Prev Next