[#83096] File.setuid? on IO (Re: [ruby-cvs:67289] normal:r60108 (trunk): file.c: release GVL in File.{setuid?, setgid?, sticky?}) — Nobuyoshi Nakada <nobu@...>
On 2017/10/04 8:47, [email protected] wrote:
5 messages
2017/10/04
[#83100] Re: File.setuid? on IO (Re: [ruby-cvs:67289] normal:r60108 (trunk): file.c: release GVL in File.{setuid?, setgid?, sticky?})
— Eric Wong <normalperson@...>
2017/10/04
Nobuyoshi Nakada <[email protected]> wrote:
[#83105] Re: File.setuid? on IO (Re: [ruby-cvs:67289] normal:r60108 (trunk): file.c: release GVL in File.{setuid?, setgid?, sticky?})
— Nobuyoshi Nakada <nobu@...>
2017/10/04
On 2017/10/04 15:55, Eric Wong wrote:
[#83107] Alias Enumerable#include? to Enumerable#includes? — Alberto Almagro <albertoalmagro@...>
Hello,
9 messages
2017/10/04
[#83113] Re: Alias Enumerable#include? to Enumerable#includes?
— "Urabe, Shyouhei" <shyouhei@...>
2017/10/05
This has been requested countless times, then rejected each and every time.
[#83129] Re: Alias Enumerable#include? to Enumerable#includes?
— Alberto Almagro <albertoalmagro@...>
2017/10/05
Sorry I didn't found it on the core mail list's archive.
[#83138] Re: Alias Enumerable#include? to Enumerable#includes?
— "Urabe, Shyouhei" <shyouhei@...>
2017/10/06
Ruby has not been made of popular votes so far. You have to show us
[#83149] Re: Alias Enumerable#include? to Enumerable#includes?
— Eric Wong <normalperson@...>
2017/10/06
Alberto Almagro <[email protected]> wrote:
[#83200] [Ruby trunk Feature#13996] [PATCH] file.c: apply2files releases GVL — normalperson@...
Issue #13996 has been reported by normalperson (Eric Wong).
4 messages
2017/10/10
[ruby-core:83422] [Ruby trunk Feature#12589] VM performance improvement proposal
From:
takashikkbn@...
Date:
2017-10-20 10:13:02 UTC
List:
ruby-core #83422
SXNzdWUgIzEyNTg5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgazBrdWJ1biAoVGFrYXNoaSBLb2t1YnVu KS4KCgo+IEluIGFueSBjYXNlLCBpZiB3ZSBhcmUgZ29pbmcgdG8gZG8gc29tZSBvcHRpbWl6YXRp b25zIGJ5IG91cnNlbGYgKGFuZCBJIHNlZSBzdWNoIG5lY2Vzc2l0eSBpbiB0aGUgZnV0dXJlKSBu b3Qgb25seSBieSBHQ0MvTExWTSwgd2UgbmVlZCBhIGNvbnZlbmllbnQgSVIgZm9yIHRoaXMuIAoK WWVhaCwgSSBzYXcgcnRsX2V4ZWMuYyB0cmFuc2Zvcm1zIElTZXEgZHluYW1pY2FsbHkgYW5kIGFs bG93cyBNSklUIHRvIGhhdmUgaW5zbiB0aGF0IGNhbiBiZSBpbmxpbmVkIGVhc2lseS4gSSBjYW4g aW1hZ2luZSB0aGUgc2FtZSBpZGVhIHdpbGwgd29yayBvbiBzdGFjay0+UlRMLT5KSVQgdmVyc2lv biBvZiB5b3VyIE1KSVQuIEZvciBvdXIgc2hhcmVkIGdvYWwgKHN0YWNrLT5KSVQpLCBJIGFncmVl IHRoYXQgaGF2aW5nIGFueSBJUiBtaWdodCBiZSBhIGhlbHBmdWwgdG9vbC4KCj4gVGFnZ2luZyBk b3VibGVzIG1hbmlwdWxhdGVzIHdpdGggZXhwb25lbnQgYW5kIG1hbnRpc3NhIGJ5IGNvbnN0cmFp bmluZyBleHBvbmVudCByYW5nZSBhbmQgdXNpbmcgYSBwYXJ0IG9mIGV4cG9uZW50IGZpZWxkIHRv IHN0b3JlIGZldyBsZXNzIHNpZ25pZmljYW50IGJpdHMgb2YgbWFudGlzc2EuIEV2ZW4gd29yc2Us IHByb2Nlc3NpbmcgMC4wIG1ha2VzIGl0IGV2ZW4gbW9yZSBjb21wbGljYXRlZC4gT3B0aW1pemlu ZyBjb21waWxlcnMgYXJlIG5vdCBzbWFydCBlbm91Z2ggdG8gc2VlIHRoYXQgdW50YWdpbmcgZG91 YmxlcyBpcyBhIHJldmVyc2Ugb3BlcmF0aW9uIHRvIHRhZ2dpbmcgYW5kIHZpY2UgdmVyc2EuCj4K PiBPbmUgc2ltcGxlIGNhc2Ugd2hlcmUgd2UgY2FuIGF2b2lkIHVudGFnZ2luZyBpcyBSVEwgaW5z biB3aXRoIGltbWVkaWF0ZSBvcGVyYW5kICh3ZSBjYW4gdXNlIGRvdWJsZSBub3QgVkFMVUUgZm9y IHRoZSBpbW1lZGlhdGUgb3BlcmFuZCkuCgpUaGF0IG1ha2VzIHNlbnNlLiBJZiBjb21waWxlciBj YW4ndCBkbyB0aGF0IHdpdGggaW5saW5lZCBjb2RlLCB3ZSBuZWVkIHRvIGRvIGluIE1KSVQgbGV2 ZWwgYW5kIGl0IHdvdWxkIGRlY3JlYXNlIGVmZm9ydCBpbiBzb21lIGxldmVsIGlmIGluc25zIGFy ZSBSVEwuCgo+IGh0dHBzOi8vZ2l0aHViLmNvbS9kaW5vLWxhbmcvZGluby9ibG9iL21hc3Rlci9E SU5PL2RfaW5mZXJlbmNlLmMgaXMgYW4gZXhhbXBsZSBob3cgYSBiYXNpYyB0eXBlIGluZmVyZW5j ZSBjYW4gYmUgaW1wbGVtZW50ZWQgb24gUlRMLWxpa2UgbGFuZ3VhZ2UuIEl0IGlzIGEgZGlmZmVy ZW50IGFwcHJvYWNoIHRvIGFsZ29yaXRobSBXIGluIEhpbmRsZXnigJNNaWxuZXIgdHlwZSBzeXN0 ZW0uIFRoZSBhbGdvcml0aG0gY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBzdGVwcwo+Cj4gQnVp bGRpbmcgYSBjb250cm9sIGZsb3cgZ3JhcGggKENGRykgY29uc2lzdGluZyBvZiBiYXNpYyBibG9j a3MgYW5kIGNvbnRyb2wgZmxvdyBlZGdlcyBjb25uZWN0aW5nIHRoZW0uCkNhbGN1bGF0aW5nIGF2 YWlsYWJsZSByZXN1bHRzIG9mIFJUTCBpbnN0cnVjdGlvbnMg4oCTIHRoaXMgaXMgYSBmb3J3YXJk IGRhdGEtZmxvdyBwcm9ibGVtIG9uIHRoZSBDRkcuClVzaW5nIHRoZSBhdmFpbGFiaWxpdHkgaW5m b3JtYXRpb24sIGJ1aWxkaW5nIGRlZi11c2UgY2hhaW5zIGNvbm5lY3RpbmcgcG9zc2libGUgb3Bl cmFuZHMgYW5kIHJlc3VsdHMgb2YgUlRMIGluc3RydWN0aW9ucyBhbmQgdmFyaWFibGVzLgo+IENh bGN1bGF0aW5nIHRoZSB0eXBlcyBvZiBSVEwgaW5zdHJ1Y3Rpb24gb3BlcmFuZHMgYW5kIHJlc3Vs dHMg4oCTIHRoaXMgaXMgYSBmb3J3YXJkIGRhdGEtZmxvdyBwcm9ibGVtIG9uIHRoZSBkZWYtdXNl IGdyYXBoLgo+IFRoZSBkZWZpbml0aW9uIG9mIGF2YWlsYWJpbGl0eSBhbmQgZGVmLXVzZSBjaGFp bnMgY2FuIGJlIGZvdW5kIHByYWN0aWNhbGx5IGluIGFueSBib29rIGFib3V0IG9wdGltaXppbmcg Y29tcGlsZXJzLgoKVGhhbmsgeW91IGZvciBwb2ludGluZyBpdCBvdXQgYW5kIHN1bW1hcnkuIEkn bGwgdGFrZSBhIGxvb2suCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkZlYXR1cmUgIzEyNTg5OiBWTSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBwcm9wb3NhbApodHRw czovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTI1ODkjY2hhbmdlLTY3Mzg5CgoqIEF1dGhv cjogdm1ha2Fyb3YgKFZsYWRpbWlyIE1ha2Fyb3YpCiogU3RhdHVzOiBPcGVuCiogUHJpb3JpdHk6 IE5vcm1hbAoqIEFzc2lnbmVlOiAKKiBUYXJnZXQgdmVyc2lvbjogCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBIZWxsby4gIEknZCBsaWtlIHRvIHN0YXJ0IGEgYmln IE1SSSBwcm9qZWN0IGJ1dCBJIGRvbid0IHdhbnQgdG8KZGlzcnVwdCBzb21lYm9keSBlbHNlIHBs YW5zLiAgVGhlcmVmb3JlIEknZCBsaWtlIHRvIGhhdmUgTVJJCmRldmVsb3BlcidzIG9waW5pb24g b24gdGhlIHByb3Bvc2VkIHByb2plY3Qgb3IgaW5mb3JtYXRpb24gaWYgc29tZWJvZHkKaXMgYWxy ZWFkeSB3b3JraW5nIG9uIGFuIGFuYWxvZ291cyBwcm9qZWN0LgoKICBCYXNpY2FsbHkgSSB3YW50 IHRvIGltcHJvdmUgb3ZlcmFsbCBNUkkgVk0gcGVyZm9ybWFuY2U6CgogICogRmlyc3Qgb2YgYWxs LCBJJ2QgbGlrZSB0byBjaGFuZ2UgVk0gaW5zbnMgYW5kIG1vdmUgZnJvbQogICAgKipzdGFjay1i YXNlZCoqIGluc25zIHRvICoqcmVnaXN0ZXIgdHJhbnNmZXIqKiBvbmVzLiAgVGhlIGlkZWEgYmVo aW5kCiAgICBpdCBpcyB0byBkZWNyZWFzZSBWTSBkaXNwYXRjaCBvdmVyaGVhZCBhcyBhcHByb3hp bWF0ZWx5IDIgdGltZXMKICAgIGxlc3MgUlRMIGluc25zIGFyZSBuZWNlc3NhcnkgdGhhbiBzdGFj ayBiYXNlZCBpbnNucyBmb3IgdGhlIHNhbWUKICAgIHByb2dyYW0gKGZvciBSdWJ5IGl0IGlzIHBy b2JhYmx5IGV2ZW4gbGVzcyBhcyBhIHR5cGljYWwgUnVieSBwcm9ncmFtCiAgICBjb250YWlucyBh IGxvdCBvZiBtZXRob2QgY2FsbHMgYW5kIHRoZSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0aHJvdWdo CiAgICB0aGUgc3RhY2spLgoKICAgIEJ1dCAqZGVjcmVhc2luZyBtZW1vcnkgdHJhZmZpYyogaXMg ZXZlbiBtb3JlIGltcG9ydGFudCBhZHZhbnRhZ2UKICAgIG9mIFJUTCBpbnNucyBhcyBhbiBSVEwg aW5zbiBjYW4gYWRkcmVzcyB0ZW1wb3JhcmllcyAoc3RhY2spIGFuZAogICAgbG9jYWwgdmFyaWFi bGVzIGluIGFueSBjb21iaW5hdGlvbi4gIFNvIHRoZXJlIGlzIG5vIG5lY2Vzc2l0eSB0bwogICAg cHV0IGFuIGluc24gcmVzdWx0IG9uIHRoZSBzdGFjayBhbmQgdGhlbiBtb3ZlIGl0IHRvIGEgbG9j YWwKICAgIHZhcmlhYmxlIG9yIHB1dCB2YXJpYWJsZSB2YWx1ZSBvbiB0aGUgc3RhY2sgYW5kIHRo ZW4gdXNlIGl0IGFzIGFuCiAgICBpbnNuIG9wZXJhbmQuICBJbnNucyBkb2luZyBtb3JlIGFsc28g cHJvdmlkZSBhIGJpZ2dlciBzY29wZSBmb3IgQwogICAgY29tcGlsZXIgb3B0aW1pemF0aW9ucy4K CiAgICBUaGUgYmlnZ2VzdCBjaGFuZ2VzIHdpbGwgYmUgaW4gZmlsZXMgY29tcGlsZS5jIGFuZCBp bnNucy5kZWYgKHRoZXkKICAgIHdpbGwgYmUgYmFzaWNhbGx5IHJld3JpdHRlbikuICAqKlNvIHRo ZSBwcm9qZWN0IGlzIG5vdCBhIG5ldyBWTQogICAgbWFjaGluZS4gIE1SSSBWTSBpcyBtdWNoIG1v cmUgdGhhbiB0aGVzZSAyIGZpbGVzLioqCgogICAgVGhlIGRpc2FkdmFudGFnZSBvZiBSVEwgaW5z bnMgaXMgYSBiaWdnZXIgaW5zbiBtZW1vcnkgZm9vdHByaW50CiAgICAod2hpY2ggY2FuIGJlIHVw dG8gMzAlIG1vcmUpIGFsdGhvdWdoIGFzIEkgd3JvdGUgdGhlcmUgYXJlIGZld2VyCiAgICBudW1i ZXIgb2YgUlRMIGluc25zLgoKICAgIEFub3RoZXIgZGlzYWR2YW50YWdlIG9mIFJUTCBpbnNucyAq c3BlY2lmaWNhbGx5KiBmb3IgUnVieSBpcyB0aGF0CiAgICBpbnNucyBmb3IgY2FsbCBzZXF1ZW5j ZXMgd2lsbCBiZSBiYXNpY2FsbHkgdGhlIHNhbWUgc3RhY2sgYmFzZWQKICAgIG9uZXMgYnV0IG9u bHkgYmlnZ2VyIGFzIHRoZXkgYWRkcmVzcyB0aGUgc3RhY2sgZXhwbGljaXRseS4KCiAgKiBTZWNv bmRseSwgSSdkIGxpa2UgdG8gKipjb21iaW5lIHNvbWUgZnJlcXVlbnQgaW5zbiBzZXF1ZW5jZXMq KiBpbnRvCiAgICBiaWdnZXIgaW5zbnMuICBBZ2FpbiBpdCBkZWNyZWFzZXMgaW5zbiBkaXNwYXRj aCBvdmVyaGVhZCBhbmQKICAgIG1lbW9yeSB0cmFmZmljIGV2ZW4gbW9yZS4gIEFsc28gaXQgcGVy bWl0cyB0byByZW1vdmUgc29tZSB0eXBlCiAgICBjaGVja2luZy4KCiAgICBUaGUgZmlyc3QgdGhp bmcgb24gbXkgbWluZCBpcyBhIHNlcXVlbmNlIG9mIGEgY29tcGFyZSBpbnNuIGFuZCBhCiAgICBi cmFuY2ggYW5kIHVzaW5nIGltbWVkaWF0ZSBvcGVyYW5kcyBiZXNpZGVzIHRlbXBvcmFyeSAoc3Rh Y2spIGFuZAogICAgbG9jYWwgdmFyaWFibGVzLiAgQWxzbyBpdCBpcyBub3QgYSB0cml2aWFsIHRh c2sgZm9yIFJ1YnkgYXMgdGhlCiAgICBjb21wYXJlIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhIG1l dGhvZC4KCiAgSSBhbHJlYWR5IGRpZCBzb21lIGV4cGVyaW1lbnRzLiAgUlRMIGluc25zICYgY29t YmluaW5nIGluc25zIHBlcm1pdHMKdG8gc3BlZWQgdGhlIGZvbGxvd2luZyBtaWNyby1iZW5jaG1h cmsgaW4gbW9yZSAyIHRpbWVzOgoKYGBgCmkgPSAwCndoaWxlIGk8MzBfMDAwXzAwMCAjIGJlbmNo bWFyayBsb29wIDEKICBpICs9IDEKZW5kCmBgYAoKVGhlIGdlbmVyYXRlZCBSVEwgaW5zbnMgZm9y IHRoZSBiZW5jaG1hcmsgYXJlCgpgYGAKPT0gZGlzYXNtOiAjPElTZXE6PG1haW4+QHdoaWxlLnJi Pj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj09IGNhdGNoIHRhYmxlCnwg Y2F0Y2ggdHlwZTogYnJlYWsgIHN0OiAwMDA3IGVkOiAwMDIwIHNwOiAwMDAwIGNvbnQ6IDAwMjAK fCBjYXRjaCB0eXBlOiBuZXh0ICAgc3Q6IDAwMDcgZWQ6IDAwMjAgc3A6IDAwMDAgY29udDogMDAw NQp8IGNhdGNoIHR5cGU6IHJlZG8gICBzdDogMDAwNyBlZDogMDAyMCBzcDogMDAwMCBjb250OiAw MDA3CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KbG9jYWwgdGFibGUgKHNpemU6IDIsIHRlbXA6IDEsIGFyZ2M6 IDAgW29wdHM6IDAsIHJlc3Q6IC0xLCBwb3N0OiAwLCBibG9jazogLTEsIGt3OiAtMUAtMSwga3dy ZXN0OiAtMV0pClsgMl0gaQowMDAwIHNldF9sb2NhbF92YWwgICAgMiwgMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAgIDEpCjAwMDMganVtcCAgICAgICAgICAg ICAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICAgMikK MDAwNSBqdW1wICAgICAgICAgICAgIDEzCjAwMDcgcGx1c2kgICAgICAgICAgICA8Y2FsbGNhY2hl PiwgMiwgMiwgMSwgLTEgICAgICAgICAgICAgICAgICAgICAgICAoICAgMykKMDAxMyBidGx0aSAg ICAgICAgICAgIDcsIDxjYWxsY2FjaGU+LCAtMSwgMiwgMzAwMDAwMDAsIC0xICAgICAgICAgICAg ICggICAyKQowMDIwIGxvY2FsX3JldCAgICAgICAgMiwgMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCAgIDMpCmBgYAoKSW4gdGhpcyBleHBlcmltZW50IEkgaWdu b3JlZCB0cmFjZSBpbnNucyAodGhhdCBpcyBhbm90aGVyIHN0b3J5KSBhbmQgYQpjb21wbGljYXRp b24gdGhhdCBhIGludGVnZXIgY29tcGFyZSBpbnNuIGNhbiBiZSByZS1pbXBsZW1lbnRlZCBhcyBh ClJ1YnkgbWV0aG9kLiAgSW5zbiBiZmx0aSBpcyBjb21iaW5hdGlvbiBvZiBMVCBpbW1lZGlhdGUg Y29tcGFyZSBhbmQKYnJhbmNoIHRydWUuCgpBIG1vZGlmaWNhdGlvbiBvZiBmaWIgYmVuY2htYXJr IGlzIHNwZWQgdXAgaW4gMS4zNSB0aW1lczoKCmBgYApkZWYgZmliX20gbgogIGlmIG4gPCAxCiAg ICAxCiAgZWxzZQogICAgZmliX20obi0xKSAqIGZpYl9tKG4tMikKICBlbmQKZW5kCgpmaWJfbSg0 MCkKYGBgCgpUaGUgUlRMIGNvZGUgb2YgZmliX20gbG9va3MgbGlrZQoKYGBgCj09IGRpc2FzbTog IzxJU2VxOmZpYl9tQGZtLnJiPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpsb2NhbCB0YWJsZSAoc2l6ZTogMiwgdGVtcDogMywgYXJnYzogMSBbb3B0czogMCwgcmVz dDogLTEsIHBvc3Q6IDAsIGJsb2NrOiAtMSwga3c6IC0xQC0xLCBrd3Jlc3Q6IC0xXSkKWyAyXSBu PEFyZz4KMDAwMCBiZmx0aSAgICAgICAgICAgIDEwLCA8Y2FsbGNhY2hlPiwgLTEsIDIsIDEsIC0x ICAgICAgICAgICAgICAgICAgICggICAyKQowMDA3IHZhbF9yZXQgICAgICAgICAgMSwgMTYKMDAx MCBtaW51c2kgICAgICAgICAgIDxjYWxsY2FjaGU+LCAtMiwgMiwgMSwgLTIgICAgICAgICAgICAg ICAgICAgICAgICggICA1KQowMDE2IHNpbXBsZV9jYWxsX3NlbGYgPGNhbGxpbmZvIW1pZDpmaWJf bSwgYXJnYzoxLCBGQ0FMTHxBUkdTX1NJTVBMRT4sIDxjYWxsY2FjaGU+LCAtMQowMDIwIG1pbnVz aSAgICAgICAgICAgPGNhbGxjYWNoZT4sIC0zLCAyLCAyLCAtMwowMDI2IHNpbXBsZV9jYWxsX3Nl bGYgPGNhbGxpbmZvIW1pZDpmaWJfbSwgYXJnYzoxLCBGQ0FMTHxBUkdTX1NJTVBMRT4sIDxjYWxs Y2FjaGU+LCAtMgowMDMwIG11bHQgICAgICAgICAgICAgPGNhbGxjYWNoZT4sIC0xLCAtMSwgLTIs IC0xCjAwMzYgdGVtcF9yZXQgICAgICAgICAtMSwgMTYKYGBgCgpJbiByZWFsaXR5LCB0aGUgaW1w cm92ZW1lbnQgb2YgbW9zdCBwcm9ncmFtcyBwcm9iYWJseSB3aWxsIGJlIGFib3V0CjEwJS4gIFRo YXQgaXMgYmVjYXVzZSBvZiB2ZXJ5IGR5bmFtaWMgbmF0dXJlIG9mIFJ1YnkgKGEgbG90IG9mIGNh bGxzLApjaGVja3MgZm9yIHJlZGVmaW5pdGlvbiBvZiBiYXNpYyB0eXBlIG9wZXJhdGlvbnMsIGNo ZWNraW5nIG92ZXJmbG93cwp0byBzd2l0Y2ggdG8gR01QIG51bWJlcnMpLiAgRm9yIGV4YW1wbGUs IGludGVnZXIgYWRkaXRpb24gY2FuIG5vdCBiZQpsZXNzIHRoYW4gYWJvdXQgeDg2LTY0IDE3IGlu c25zIG91dCBvZiB0aGUgY3VycmVudCA1MCBpbnNucyBvbiB0aGUKZmFzdCBwYXRoLiAgU28gZXZl biBpZiB5b3UgbWFrZSB0aGUgcmVzdCAoMzMpIGluc25zIDIgdGltZXMgZmFzdGVyLAp0aGUgaW1w cm92ZW1lbnQgd2lsbCBiZSBvbmx5IDMwJS4KCkEgdmVyeSBpbXBvcnRhbnQgcGFydCBvZiBNUkkg cGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgaXMgdG8gbWFrZSBjYWxscwpmYXN0IGJlY2F1c2UgdGhl cmUgYXJlIGEgbG90IG9mIHRoZW0gaW4gUnVieSBidXQgYXMgSSByZWFkIGluIHNvbWUKS29pY2hp IFNhc2FkYSdzIHByZXNlbnRhdGlvbnMgaGUgcGF5cyBhIGxvdCBvZiBhdHRlbnRpb24gdG8gaXQu ICBTbyBJCmRvbid0IHdhbnQgdG8gdG91Y2ggaXQuCgogICogVGhpcmRseS4gIEkgd2FudCB0byBp bXBsZW1lbnQgdGhlIGluc25zIGFzIHNtYWxsIGlubGluZSBmdW5jdGlvbnMKICAgIGZvciBmdXR1 cmUgQU9UIGNvbXBpbGVyLCBvZiBjb3Vyc2UsIGlmIHRoZSBwcm9qZWN0cyBkZXNjcmliZWQKICAg IGFib3ZlIGFyZSBzdWNjZXNzZnVsLiAgSXQgd2lsbCBwZXJtaXQgZWFzeSBBT1QgZ2VuZXJhdGlv biBvZiBDIGNvZGUKICAgIHdoaWNoIHdpbGwgYmUgYmFzaWNhbGx5IGNhbGxzIG9mIHRoZSBmdW5j dGlvbnMuCgogICAgSSdkIGxpa2UgdG8gaW1wbGVtZW50IEFPVCBjb21waWxlciB3aGljaCB3aWxs IGdlbmVyYXRlIGEgUnVieQogICAgbWV0aG9kIGNvZGUsIGNhbGwgYSBDIGNvbXBpbGVyIHRvIGdl bmVyYXRlIGEgYmluYXJ5IHNoYXJlZCBjb2RlCiAgICBhbmQgbG9hZCBpdCBpbnRvIE1SSSBmb3Ig c3Vic2VxdWVudCBjYWxscy4gIFRoZSBrZXkgaXMgdG8gbWluaW1pemUKICAgIHRoZSBjb21waWxh dGlvbiB0aW1lLiAgVGhlcmUgYXJlIG1hbnkgYXBwcm9hY2hlcyB0byBkbyBpdCBidXQgSQogICAg ZG9uJ3Qgd2FudCB0byBkaXNjdXNzIGl0IHJpZ2h0IG5vdy4KCiAgICBDIGdlbmVyYXRpb24gaXMg ZWFzeSBhbmQgbW9zdCBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbiBvZiBBT1QgYnV0CiAgICBpbiBm dXR1cmUgaXQgaXMgcG9zc2libGUgdG8gdXNlIEdDQyBKSVQgcGx1Z2luIG9yIExMVk0gSVIgdG8K ICAgIGRlY3JlYXNlIG92ZXJoZWFkIG9mIEMgc2Nhbm5lci9wYXJzZXIuCgogICAgQyBjb21waWxl ciB3aWxsIHNlZSBhIGJpZ2dlciBzY29wZSAoYWxsIG1ldGhvZCBpbnNucykgdG8gZG8KICAgIG9w dGltaXphdGlvbnMuICBJIHRoaW5rIHVzaW5nIEFPVCBjYW4gZ2l2ZSBhbm90aGVyIDEwJQogICAg aW1wcm92ZW1lbnQuICBJdCBpcyBub3QgdGhhdCBiaWcgYWdhaW4gYmVjYXVzZSBvZiBkeW5hbWlj IG5hdHVyZQogICAgb2YgUnVieSBhbmQgYW55IEMgY29tcGlsZXIgaXMgbm90IHNtYXJ0IGVub3Vn aCB0byBmaWd1cmUgb3V0CiAgICBhbGlhc2luZyBmb3IgdHlwaWNhbCBnZW5lcmF0ZWQgQyBwcm9n cmFtLgoKICAgIFRoZSBsaWZlIHdpdGggdGhlIHBlcmZvcm1hbmNlIHBvaW50IG9mIHZpZXcgd291 bGQgYmUgZWFzeSBpZiBSdWJ5CiAgICBkaWQgbm90IHBlcm1pdCB0byByZWRlZmluZSBiYXNpYyBv cGVyYXRpb25zIGZvciBiYXNpYyB0eXBlcywKICAgIGUuZy4gcGx1cyBmb3IgaW50ZWdlci4gIElu IHRoaXMgY2FzZSB3ZSBjb3VsZCBldmFsdWF0ZSB0eXBlcyBvZgogICAgb3BlcmFuZHMgYW5kIHJl c3VsdHMgdXNpbmcgc29tZSBkYXRhIGZsb3cgYW5hbHlzaXMgYW5kIGdlbmVyYXRlCiAgICBmYXN0 ZXIgc3BlY2lhbGl6ZWQgaW5zbnMuICBTdGlsbCBhIGdyYWR1YWwgdHlwaW5nIGlmIGl0IGlzCiAg ICBpbnRyb2R1Y2VkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBSdWJ5IHdvdWxkIGhlbHAgdG8gZ2Vu ZXJhdGUgc3VjaAogICAgZmFzdGVyIGluc25zLgoKICBBZ2FpbiBJIHdyb3RlIHRoaXMgcHJvcG9z YWwgZm9yIGRpc2N1c3Npb24gYXMgSSBkb24ndCB3YW50IHRvIGJlIGluCmEgcG9zaXRpb24gdG8g Y29tcGV0ZSB3aXRoIHNvbWVib2R5IGVsc2Ugb25nb2luZyBiaWcgcHJvamVjdC4gIEl0Cm1pZ2h0 IGJlIGNvdW50ZXJwcm9kdWN0aXZlIGZvciBNUkkgZGV2ZWxvcG1lbnQuICBFc3BlY2lhbGx5IEkg ZG9uJ3QKd2FudCBpdCBiZWNhdXNlIHRoZSBwcm9qZWN0IGlzIGJpZyBhbmQgbG9uZyBhbmQgcHJv YmFibHkgd2lsbCBoYXZlIGEKbG90IG9mIHRlaGNuaWNhbCBvYnN0YWNsZXMgYW5kIGhhdmUgYSBw b3NzaWJpbHR5IHRvIGJlIGEgZmFpbHVyZS4KCgoKCi0tIApodHRwczovL2J1Z3MucnVieS1sYW5n Lm9yZy8KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0QHJ1YnktbGFuZy5v cmc/c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxhbmcub3JnL2NnaS1i aW4vbWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K