[#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:83397] [Ruby trunk Feature#12589] VM performance improvement proposal
From:
vmakarov@...
Date:
2017-10-19 15:38:17 UTC
List:
ruby-core #83397
SXNzdWUgIzEyNTg5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdm1ha2Fyb3YgKFZsYWRpbWlyIE1ha2Fy b3YpLgoKCmswa3VidW4gKFRha2FzaGkgS29rdWJ1bikgd3JvdGU6Cgo+ID4gQW4gYWx0ZXJuYXRp dmUgYXBwcm9hY2ggY2FuIGJlIHVzZWZ1bCBidXQgaXQgbWlnaHQgYmUgYSB3YXN0ZSBvZiB5b3Vy IHRpbWUgYXQgdGhlIGVuZC4gQnV0IGFueSBwZXJmb3JtYW5jZSB3b3JrIHJlcXVpcmVzIGEgbG90 IGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucyAoZS5nLiB0aGUgY3VycmVudCBnbG9iYWwgUkEg aW4gR0NDIHdhcyBhY3R1YWxseSBvbmUgb2YgbXkgc2V2ZW4gZGlmZmVyZW50IFJBIGltcGxlbWVu dGF0aW9ucyksIHNvbWUgdGVtcG9yYXJ5IHNvbHV0aW9ucyBtaWdodCBiZWNvbWUgcGVybWFuZW50 LiB3aG8ga25vd3MuCj4gCj4gQXMgSSdtIGhhY2tpbmcgUnVieSBhcyBub3Qgd29yayBidXQganVz dCBob2JieSB0byBlbmpveSBpbXByb3ZpbmcgbXkgUnVieSBjb3JlIHVuZGVyc3RhbmRpbmcsIGl0 IHdvdWxkbid0IGJlIGEgd2FzdGUgb2YgdGltZSBldmVuIGlmIEkgZW5kIHVwIHdpdGggZGV2ZWxv cGluZyBzZXZlbiBkaWZmZXJlbnQgSklUIGltcGxlbWVudGF0aW9ucyA6KQo+IAoKU29ycnksIFRh a2FzaGkuICBJIHdhcyBpbmFjY3VyYXRlLiAgSSBhbSBhZ3JlZS4gIEFueSBzZXJpb3VzIHByb2Js ZW0gc29sdmluZyAoZXZlbiBpZiBpdCBkb2VzIG5vdCByZXN1bHQgaW4gTVJJIGNvZGUgY2hhbmdl KSBtYWtlcyBhbnlvbmUgYSBiZXR0ZXIsIG1vcmUgZXhwZXJpZW5jZWQgTVJJIGRldmVsb3Blci4K Cj4gPiBTbyB0aGUgc29sdXRpb24gd291bGQgYmUgaW1wbGVtZW50aW5nIGFuYWx5c2lzIG9uIFJU TCB0byB1c2UgZG91YmxlIHZhbHVlcyBpbiBKSVR0ZWQgY29kZSBvZiBhIG1ldGhvZCB0byBhdm9p ZCBkb3VibGUtPmZsb251bSBhbmQgZmxvbnVtLT5kb3VibGUgY29udmVyc2lvbnMuIFJUTCBpcyBh IGdvb2QgZml0IHRvIHRoaXMuCj4gCj4gUXVlc3Rpb24gZm9yIG15IGJldHRlciB1bmRlcnN0YW5k aW5nOiBEbyB5b3UgbWVhbiBHQ0MgYW5kIENsYW5nIGNhbid0IG9wdGltaXplIGRvdWJsZTwtPmZs b251bSBjb252ZXJzaW9uIHdlbGwgZXZlbiBpZiBhbGwgbmVjZXNzYXJ5IGNvZGUgaXMgaW5saW5l ZD8KClllcy4gSXQgaXMgdG9vIGNvbXBsaWNhdGVkIGZvciB0aGVtLiAgVGFnZ2luZyBkb3VibGVz IG1hbmlwdWxhdGVzIHdpdGggZXhwb25lbnQgYW5kIG1hbnRpc3NhIGJ5IGNvbnN0cmFpbmluZyBl eHBvbmVudCByYW5nZSBhbmQgdXNpbmcgYSBwYXJ0IG9mIGV4cG9uZW50IGZpZWxkIHRvIHN0b3Jl IGZldyBsZXNzIHNpZ25pZmljYW50IGJpdHMgb2YgbWFudGlzc2EuICBFdmVuIHdvcnNlLCBwcm9j ZXNzaW5nIDAuMCBtYWtlcyBpdCBldmVuIG1vcmUgY29tcGxpY2F0ZWQuICBPcHRpbWl6aW5nIGNv bXBpbGVycyBhcmUgbm90IHNtYXJ0IGVub3VnaCB0byBzZWUgdGhhdCB1bnRhZ2luZyBkb3VibGVz IGlzIGEgcmV2ZXJzZSBvcGVyYXRpb24gdG8gdGFnZ2luZyBhbmQgdmljZSB2ZXJzYS4gCgo+IElm IHNvLCBoYXZpbmcgc3BlY2lhbCBlZmZvcnQgdG8gb3B0aW1pemUgaXQgaW4gUnVieSBjb3JlIG1h a2VzIHNlbnNlLiBJJ20gbm90IHN1cmUgd2h5IHdlIGNhbid0IGRvIHRoYXQgd2l0aCBzdGFjay1i YXNlZCBpbnN0cnVjdGlvbnMgb3IganVzdCBpbiBKSVQtZWQgQyBjb2RlIGdlbmVyYXRpb24gcHJv Y2Vzcy4gQ2FuJ3Qgd2UgaW50cm9kdWNlIGluc3RydWN0aW9uIHNwZWNpYWxpemF0aW9uICh0byBh dm9pZCBkb3VibGU8LT5mbG9udW0gY29udmVyc2lvbiwgbm90IHN1cmUgaXRzIGRldGFpbHMpIHdp dGhvdXQgaGF2aW5nIGFsbCBpbnN0cnVjdGlvbnMgYXMgcmVnaXN0ZXItYmFzZWQ/CgpZb3UgY2Fu IGRvIHRoZSBvcHRpbWl6YXRpb24gd2l0aCBzdGFjayBpbnNucy4gIFlvdSBuZWVkIHRvIGFuYWx5 emUgYWxsIG1ldGhvZChzKSBjb2RlIGFuZCBzZWUgd2hlcmUgZnJvbSBvcGVyYW5kIHZhbHVlcyBj b21lLiAgSXQgaXMgZWFzaWVyIHRvIGRvIHdpdGggUlRMLgoKQnV0IGFjdHVhbGx5IHRoZSB3b3Jz dCBwYXJ0IHdpdGggdXNpbmcgc3RhY2sgaW5zbnMgZm9yIG9wdGltaXphdGlvbnMgaXMgdGhhdCB5 b3UgY2FuIG5vdCBlYXNpbHkgdHJhbnNmb3JtIGEgcHJvZ3JhbSBvbiB0aGVtIChlLmcuIG1vdmUg YW4gaW52YXJpYW50IGV4cHJlc3Npb24gZnJvbSB0aGUgbG9vcCAtLSB5b3UgbmVlZCB0byBpbnRy b2R1Y2UgbmV3IGxvY2FsIHZhcnMgZm9yIHRoaXMpIGJlY2F1c2UgdGhleSBwcm9jZXNzIHZhbHVl cyBvbmx5IGluIGEgc3RhY2sgbW9kZSBhbmQgb3B0aW1pemVkIGNvZGUgY2FuIHByb2Nlc3MgdmFs dWVzIGluIGFueSBvcmRlci4KCkluIGFueSBjYXNlLCBpZiB3ZSBhcmUgZ29pbmcgdG8gZG8gc29t ZSBvcHRpbWl6YXRpb25zIGJ5IG91cnNlbGYgKGFuZCBJIHNlZSBzdWNoIG5lY2Vzc2l0eSBpbiB0 aGUgZnV0dXJlKSBub3Qgb25seSBieSBHQ0MvTExWTSwgd2UgbmVlZCBhIGNvbnZlbmllbnQgSVIg Zm9yIHRoaXMuICBJIHRyaWVkIHRvIGV4cGxhaW4gaXQgaW4gbXkgcHJlc2VudGF0aW9uIGF0IFJ1 YnlLYWlnaS4KCk9uZSBzaW1wbGUgY2FzZSB3aGVyZSB3ZSBjYW4gYXZvaWQgdW50YWdnaW5nIGlz IFJUTCBpbnNuIHdpdGggaW1tZWRpYXRlIG9wZXJhbmQgKHdlIGNhbiB1c2UgZG91YmxlIG5vdCBW QUxVRSBmb3IgdGhlIGltbWVkaWF0ZSBvcGVyYW5kKS4gIEl0IGlzIGFjdHVhbGx5IG9uIG15IFRP RE8gbGlzdC4KIAo+IAo+ID4gQmFzaWMgdHlwZSBpbmZlcmVuY2UgY291bGQgYmUgYW5vdGhlciBl eGFtcGxlIGZvciBSVEwgbmVjZXNzaXR5LiBJIGNvdWxkIGZpbmQgb3RoZXIgZXhhbXBsZXMuCj4g Cj4gVHlwZSBpbmZlcmVuY2UgYXQgUlRMIGluc3RydWN0aW9ucyBpcyBpbnRlcmVzdGluZyB0b3Bp YyB3aGljaCBJIGNvdWxkbid0IHVuZGVyc3RhbmQgd2VsbCBmcm9tIGRpc2N1c3Npb24gd2l0aCB5 b3UgYXQgUnVieUthaWdpLiBJJ20gbG9va2luZyBmb3J3YXJkIHRvIHNlZWluZyB0aGUgZXhhbXBs ZSEKCmh0dHBzOi8vZ2l0aHViLmNvbS9kaW5vLWxhbmcvZGluby9ibG9iL21hc3Rlci9ESU5PL2Rf aW5mZXJlbmNlLmMgaXMgYW4gZXhhbXBsZSBob3cgYSBiYXNpYyB0eXBlIGluZmVyZW5jZSBjYW4g YmUgaW1wbGVtZW50ZWQgb24gUlRMLWxpa2UgbGFuZ3VhZ2UuICBJdCBpcyBhIGRpZmZlcmVudCBh cHByb2FjaCB0byBhbGdvcml0aG0gVyBpbiBIaW5kbGV54oCTTWlsbmVyIHR5cGUgc3lzdGVtLiAg VGhlIGFsZ29yaXRobSBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIHN0ZXBzCgoxLiAgQnVpbGRp bmcgYSBjb250cm9sIGZsb3cgZ3JhcGggKENGRykgY29uc2lzdGluZyBvZiBiYXNpYyBibG9ja3Mg YW5kIGNvbnRyb2wgZmxvdyBlZGdlcyBjb25uZWN0aW5nIHRoZW0uCjIuICBDYWxjdWxhdGluZyBh dmFpbGFibGUgcmVzdWx0cyBvZiBSVEwgaW5zdHJ1Y3Rpb25zIOKAkyB0aGlzIGlzIGEgZm9yd2Fy ZCBkYXRhLWZsb3cgcHJvYmxlbSBvbiB0aGUgQ0ZHLgozLiAgVXNpbmcgdGhlIGF2YWlsYWJpbGl0 eSBpbmZvcm1hdGlvbiwgYnVpbGRpbmcgZGVmLXVzZSBjaGFpbnMgY29ubmVjdGluZyBwb3NzaWJs ZSBvcGVyYW5kcyBhbmQgcmVzdWx0cyBvZiBSVEwgaW5zdHJ1Y3Rpb25zIGFuZCB2YXJpYWJsZXMu CjQuICBDYWxjdWxhdGluZyAgdGhlICB0eXBlcyAgb2YgIFJUTCAgaW5zdHJ1Y3Rpb24gIG9wZXJh bmRzICBhbmQgcmVzdWx0cyAg4oCTICB0aGlzICBpcyAgYSAgZm9yd2FyZCAgZGF0YS1mbG93ICBw cm9ibGVtICBvbiAgdGhlICBkZWYtdXNlIGdyYXBoLgoKVGhlIGRlZmluaXRpb24gb2YgYXZhaWxh YmlsaXR5IGFuZCBkZWYtdXNlIGNoYWlucyBjYW4gYmUgZm91bmQgcHJhY3RpY2FsbHkgaW4gYW55 IGJvb2sgYWJvdXQgb3B0aW1pemluZyBjb21waWxlcnMuCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpGZWF0dXJlICMxMjU4OTogVk0gcGVyZm9ybWFuY2UgaW1wcm92 ZW1lbnQgcHJvcG9zYWwKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzEyNTg5I2No YW5nZS02NzM2MwoKKiBBdXRob3I6IHZtYWthcm92IChWbGFkaW1pciBNYWthcm92KQoqIFN0YXR1 czogT3BlbgoqIFByaW9yaXR5OiBOb3JtYWwKKiBBc3NpZ25lZTogCiogVGFyZ2V0IHZlcnNpb246 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgSGVsbG8uICBJJ2Qg bGlrZSB0byBzdGFydCBhIGJpZyBNUkkgcHJvamVjdCBidXQgSSBkb24ndCB3YW50IHRvCmRpc3J1 cHQgc29tZWJvZHkgZWxzZSBwbGFucy4gIFRoZXJlZm9yZSBJJ2QgbGlrZSB0byBoYXZlIE1SSQpk ZXZlbG9wZXIncyBvcGluaW9uIG9uIHRoZSBwcm9wb3NlZCBwcm9qZWN0IG9yIGluZm9ybWF0aW9u IGlmIHNvbWVib2R5CmlzIGFscmVhZHkgd29ya2luZyBvbiBhbiBhbmFsb2dvdXMgcHJvamVjdC4K CiAgQmFzaWNhbGx5IEkgd2FudCB0byBpbXByb3ZlIG92ZXJhbGwgTVJJIFZNIHBlcmZvcm1hbmNl OgoKICAqIEZpcnN0IG9mIGFsbCwgSSdkIGxpa2UgdG8gY2hhbmdlIFZNIGluc25zIGFuZCBtb3Zl IGZyb20KICAgICoqc3RhY2stYmFzZWQqKiBpbnNucyB0byAqKnJlZ2lzdGVyIHRyYW5zZmVyKiog b25lcy4gIFRoZSBpZGVhIGJlaGluZAogICAgaXQgaXMgdG8gZGVjcmVhc2UgVk0gZGlzcGF0Y2gg b3ZlcmhlYWQgYXMgYXBwcm94aW1hdGVseSAyIHRpbWVzCiAgICBsZXNzIFJUTCBpbnNucyBhcmUg bmVjZXNzYXJ5IHRoYW4gc3RhY2sgYmFzZWQgaW5zbnMgZm9yIHRoZSBzYW1lCiAgICBwcm9ncmFt IChmb3IgUnVieSBpdCBpcyBwcm9iYWJseSBldmVuIGxlc3MgYXMgYSB0eXBpY2FsIFJ1YnkgcHJv Z3JhbQogICAgY29udGFpbnMgYSBsb3Qgb2YgbWV0aG9kIGNhbGxzIGFuZCB0aGUgYXJndW1lbnRz IGFyZSBwYXNzZWQgdGhyb3VnaAogICAgdGhlIHN0YWNrKS4KCiAgICBCdXQgKmRlY3JlYXNpbmcg bWVtb3J5IHRyYWZmaWMqIGlzIGV2ZW4gbW9yZSBpbXBvcnRhbnQgYWR2YW50YWdlCiAgICBvZiBS VEwgaW5zbnMgYXMgYW4gUlRMIGluc24gY2FuIGFkZHJlc3MgdGVtcG9yYXJpZXMgKHN0YWNrKSBh bmQKICAgIGxvY2FsIHZhcmlhYmxlcyBpbiBhbnkgY29tYmluYXRpb24uICBTbyB0aGVyZSBpcyBu byBuZWNlc3NpdHkgdG8KICAgIHB1dCBhbiBpbnNuIHJlc3VsdCBvbiB0aGUgc3RhY2sgYW5kIHRo ZW4gbW92ZSBpdCB0byBhIGxvY2FsCiAgICB2YXJpYWJsZSBvciBwdXQgdmFyaWFibGUgdmFsdWUg b24gdGhlIHN0YWNrIGFuZCB0aGVuIHVzZSBpdCBhcyBhbgogICAgaW5zbiBvcGVyYW5kLiAgSW5z bnMgZG9pbmcgbW9yZSBhbHNvIHByb3ZpZGUgYSBiaWdnZXIgc2NvcGUgZm9yIEMKICAgIGNvbXBp bGVyIG9wdGltaXphdGlvbnMuCgogICAgVGhlIGJpZ2dlc3QgY2hhbmdlcyB3aWxsIGJlIGluIGZp bGVzIGNvbXBpbGUuYyBhbmQgaW5zbnMuZGVmICh0aGV5CiAgICB3aWxsIGJlIGJhc2ljYWxseSBy ZXdyaXR0ZW4pLiAgKipTbyB0aGUgcHJvamVjdCBpcyBub3QgYSBuZXcgVk0KICAgIG1hY2hpbmUu ICBNUkkgVk0gaXMgbXVjaCBtb3JlIHRoYW4gdGhlc2UgMiBmaWxlcy4qKgoKICAgIFRoZSBkaXNh ZHZhbnRhZ2Ugb2YgUlRMIGluc25zIGlzIGEgYmlnZ2VyIGluc24gbWVtb3J5IGZvb3RwcmludAog ICAgKHdoaWNoIGNhbiBiZSB1cHRvIDMwJSBtb3JlKSBhbHRob3VnaCBhcyBJIHdyb3RlIHRoZXJl IGFyZSBmZXdlcgogICAgbnVtYmVyIG9mIFJUTCBpbnNucy4KCiAgICBBbm90aGVyIGRpc2FkdmFu dGFnZSBvZiBSVEwgaW5zbnMgKnNwZWNpZmljYWxseSogZm9yIFJ1YnkgaXMgdGhhdAogICAgaW5z bnMgZm9yIGNhbGwgc2VxdWVuY2VzIHdpbGwgYmUgYmFzaWNhbGx5IHRoZSBzYW1lIHN0YWNrIGJh c2VkCiAgICBvbmVzIGJ1dCBvbmx5IGJpZ2dlciBhcyB0aGV5IGFkZHJlc3MgdGhlIHN0YWNrIGV4 cGxpY2l0bHkuCgogICogU2Vjb25kbHksIEknZCBsaWtlIHRvICoqY29tYmluZSBzb21lIGZyZXF1 ZW50IGluc24gc2VxdWVuY2VzKiogaW50bwogICAgYmlnZ2VyIGluc25zLiAgQWdhaW4gaXQgZGVj cmVhc2VzIGluc24gZGlzcGF0Y2ggb3ZlcmhlYWQgYW5kCiAgICBtZW1vcnkgdHJhZmZpYyBldmVu IG1vcmUuICBBbHNvIGl0IHBlcm1pdHMgdG8gcmVtb3ZlIHNvbWUgdHlwZQogICAgY2hlY2tpbmcu CgogICAgVGhlIGZpcnN0IHRoaW5nIG9uIG15IG1pbmQgaXMgYSBzZXF1ZW5jZSBvZiBhIGNvbXBh cmUgaW5zbiBhbmQgYQogICAgYnJhbmNoIGFuZCB1c2luZyBpbW1lZGlhdGUgb3BlcmFuZHMgYmVz aWRlcyB0ZW1wb3JhcnkgKHN0YWNrKSBhbmQKICAgIGxvY2FsIHZhcmlhYmxlcy4gIEFsc28gaXQg aXMgbm90IGEgdHJpdmlhbCB0YXNrIGZvciBSdWJ5IGFzIHRoZQogICAgY29tcGFyZSBjYW4gYmUg aW1wbGVtZW50ZWQgYXMgYSBtZXRob2QuCgogIEkgYWxyZWFkeSBkaWQgc29tZSBleHBlcmltZW50 cy4gIFJUTCBpbnNucyAmIGNvbWJpbmluZyBpbnNucyBwZXJtaXRzCnRvIHNwZWVkIHRoZSBmb2xs b3dpbmcgbWljcm8tYmVuY2htYXJrIGluIG1vcmUgMiB0aW1lczoKCmBgYAppID0gMAp3aGlsZSBp PDMwXzAwMF8wMDAgIyBiZW5jaG1hcmsgbG9vcCAxCiAgaSArPSAxCmVuZApgYGAKClRoZSBnZW5l cmF0ZWQgUlRMIGluc25zIGZvciB0aGUgYmVuY2htYXJrIGFyZQoKYGBgCj09IGRpc2FzbTogIzxJ U2VxOjxtYWluPkB3aGlsZS5yYj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQo9PSBjYXRjaCB0YWJsZQp8IGNhdGNoIHR5cGU6IGJyZWFrICBzdDogMDAwNyBlZDogMDAyMCBz cDogMDAwMCBjb250OiAwMDIwCnwgY2F0Y2ggdHlwZTogbmV4dCAgIHN0OiAwMDA3IGVkOiAwMDIw IHNwOiAwMDAwIGNvbnQ6IDAwMDUKfCBjYXRjaCB0eXBlOiByZWRvICAgc3Q6IDAwMDcgZWQ6IDAw MjAgc3A6IDAwMDAgY29udDogMDAwNwp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxvY2FsIHRhYmxlIChzaXpl OiAyLCB0ZW1wOiAxLCBhcmdjOiAwIFtvcHRzOiAwLCByZXN0OiAtMSwgcG9zdDogMCwgYmxvY2s6 IC0xLCBrdzogLTFALTEsIGt3cmVzdDogLTFdKQpbIDJdIGkKMDAwMCBzZXRfbG9jYWxfdmFsICAg IDIsIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggICAxKQow MDAzIGp1bXAgICAgICAgICAgICAgMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKCAgIDIpCjAwMDUganVtcCAgICAgICAgICAgICAxMwowMDA3IHBsdXNpICAg ICAgICAgICAgPGNhbGxjYWNoZT4sIDIsIDIsIDEsIC0xICAgICAgICAgICAgICAgICAgICAgICAg KCAgIDMpCjAwMTMgYnRsdGkgICAgICAgICAgICA3LCA8Y2FsbGNhY2hlPiwgLTEsIDIsIDMwMDAw MDAwLCAtMSAgICAgICAgICAgICAoICAgMikKMDAyMCBsb2NhbF9yZXQgICAgICAgIDIsIDAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggICAzKQpgYGAKCkluIHRo aXMgZXhwZXJpbWVudCBJIGlnbm9yZWQgdHJhY2UgaW5zbnMgKHRoYXQgaXMgYW5vdGhlciBzdG9y eSkgYW5kIGEKY29tcGxpY2F0aW9uIHRoYXQgYSBpbnRlZ2VyIGNvbXBhcmUgaW5zbiBjYW4gYmUg cmUtaW1wbGVtZW50ZWQgYXMgYQpSdWJ5IG1ldGhvZC4gIEluc24gYmZsdGkgaXMgY29tYmluYXRp b24gb2YgTFQgaW1tZWRpYXRlIGNvbXBhcmUgYW5kCmJyYW5jaCB0cnVlLgoKQSBtb2RpZmljYXRp b24gb2YgZmliIGJlbmNobWFyayBpcyBzcGVkIHVwIGluIDEuMzUgdGltZXM6CgpgYGAKZGVmIGZp Yl9tIG4KICBpZiBuIDwgMQogICAgMQogIGVsc2UKICAgIGZpYl9tKG4tMSkgKiBmaWJfbShuLTIp CiAgZW5kCmVuZAoKZmliX20oNDApCmBgYAoKVGhlIFJUTCBjb2RlIG9mIGZpYl9tIGxvb2tzIGxp a2UKCmBgYAo9PSBkaXNhc206ICM8SVNlcTpmaWJfbUBmbS5yYj49PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KbG9jYWwgdGFibGUgKHNpemU6IDIsIHRlbXA6IDMsIGFy Z2M6IDEgW29wdHM6IDAsIHJlc3Q6IC0xLCBwb3N0OiAwLCBibG9jazogLTEsIGt3OiAtMUAtMSwg a3dyZXN0OiAtMV0pClsgMl0gbjxBcmc+CjAwMDAgYmZsdGkgICAgICAgICAgICAxMCwgPGNhbGxj YWNoZT4sIC0xLCAyLCAxLCAtMSAgICAgICAgICAgICAgICAgICAoICAgMikKMDAwNyB2YWxfcmV0 ICAgICAgICAgIDEsIDE2CjAwMTAgbWludXNpICAgICAgICAgICA8Y2FsbGNhY2hlPiwgLTIsIDIs IDEsIC0yICAgICAgICAgICAgICAgICAgICAgICAoICAgNSkKMDAxNiBzaW1wbGVfY2FsbF9zZWxm IDxjYWxsaW5mbyFtaWQ6ZmliX20sIGFyZ2M6MSwgRkNBTEx8QVJHU19TSU1QTEU+LCA8Y2FsbGNh Y2hlPiwgLTEKMDAyMCBtaW51c2kgICAgICAgICAgIDxjYWxsY2FjaGU+LCAtMywgMiwgMiwgLTMK MDAyNiBzaW1wbGVfY2FsbF9zZWxmIDxjYWxsaW5mbyFtaWQ6ZmliX20sIGFyZ2M6MSwgRkNBTEx8 QVJHU19TSU1QTEU+LCA8Y2FsbGNhY2hlPiwgLTIKMDAzMCBtdWx0ICAgICAgICAgICAgIDxjYWxs Y2FjaGU+LCAtMSwgLTEsIC0yLCAtMQowMDM2IHRlbXBfcmV0ICAgICAgICAgLTEsIDE2CmBgYAoK SW4gcmVhbGl0eSwgdGhlIGltcHJvdmVtZW50IG9mIG1vc3QgcHJvZ3JhbXMgcHJvYmFibHkgd2ls bCBiZSBhYm91dAoxMCUuICBUaGF0IGlzIGJlY2F1c2Ugb2YgdmVyeSBkeW5hbWljIG5hdHVyZSBv ZiBSdWJ5IChhIGxvdCBvZiBjYWxscywKY2hlY2tzIGZvciByZWRlZmluaXRpb24gb2YgYmFzaWMg dHlwZSBvcGVyYXRpb25zLCBjaGVja2luZyBvdmVyZmxvd3MKdG8gc3dpdGNoIHRvIEdNUCBudW1i ZXJzKS4gIEZvciBleGFtcGxlLCBpbnRlZ2VyIGFkZGl0aW9uIGNhbiBub3QgYmUKbGVzcyB0aGFu IGFib3V0IHg4Ni02NCAxNyBpbnNucyBvdXQgb2YgdGhlIGN1cnJlbnQgNTAgaW5zbnMgb24gdGhl CmZhc3QgcGF0aC4gIFNvIGV2ZW4gaWYgeW91IG1ha2UgdGhlIHJlc3QgKDMzKSBpbnNucyAyIHRp bWVzIGZhc3RlciwKdGhlIGltcHJvdmVtZW50IHdpbGwgYmUgb25seSAzMCUuCgpBIHZlcnkgaW1w b3J0YW50IHBhcnQgb2YgTVJJIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGlzIHRvIG1ha2UgY2Fs bHMKZmFzdCBiZWNhdXNlIHRoZXJlIGFyZSBhIGxvdCBvZiB0aGVtIGluIFJ1YnkgYnV0IGFzIEkg cmVhZCBpbiBzb21lCktvaWNoaSBTYXNhZGEncyBwcmVzZW50YXRpb25zIGhlIHBheXMgYSBsb3Qg b2YgYXR0ZW50aW9uIHRvIGl0LiAgU28gSQpkb24ndCB3YW50IHRvIHRvdWNoIGl0LgoKICAqIFRo aXJkbHkuICBJIHdhbnQgdG8gaW1wbGVtZW50IHRoZSBpbnNucyBhcyBzbWFsbCBpbmxpbmUgZnVu Y3Rpb25zCiAgICBmb3IgZnV0dXJlIEFPVCBjb21waWxlciwgb2YgY291cnNlLCBpZiB0aGUgcHJv amVjdHMgZGVzY3JpYmVkCiAgICBhYm92ZSBhcmUgc3VjY2Vzc2Z1bC4gIEl0IHdpbGwgcGVybWl0 IGVhc3kgQU9UIGdlbmVyYXRpb24gb2YgQyBjb2RlCiAgICB3aGljaCB3aWxsIGJlIGJhc2ljYWxs eSBjYWxscyBvZiB0aGUgZnVuY3Rpb25zLgoKICAgIEknZCBsaWtlIHRvIGltcGxlbWVudCBBT1Qg Y29tcGlsZXIgd2hpY2ggd2lsbCBnZW5lcmF0ZSBhIFJ1YnkKICAgIG1ldGhvZCBjb2RlLCBjYWxs IGEgQyBjb21waWxlciB0byBnZW5lcmF0ZSBhIGJpbmFyeSBzaGFyZWQgY29kZQogICAgYW5kIGxv YWQgaXQgaW50byBNUkkgZm9yIHN1YnNlcXVlbnQgY2FsbHMuICBUaGUga2V5IGlzIHRvIG1pbmlt aXplCiAgICB0aGUgY29tcGlsYXRpb24gdGltZS4gIFRoZXJlIGFyZSBtYW55IGFwcHJvYWNoZXMg dG8gZG8gaXQgYnV0IEkKICAgIGRvbid0IHdhbnQgdG8gZGlzY3VzcyBpdCByaWdodCBub3cuCgog ICAgQyBnZW5lcmF0aW9uIGlzIGVhc3kgYW5kIG1vc3QgcG9ydGFibGUgaW1wbGVtZW50YXRpb24g b2YgQU9UIGJ1dAogICAgaW4gZnV0dXJlIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBHQ0MgSklUIHBs dWdpbiBvciBMTFZNIElSIHRvCiAgICBkZWNyZWFzZSBvdmVyaGVhZCBvZiBDIHNjYW5uZXIvcGFy c2VyLgoKICAgIEMgY29tcGlsZXIgd2lsbCBzZWUgYSBiaWdnZXIgc2NvcGUgKGFsbCBtZXRob2Qg aW5zbnMpIHRvIGRvCiAgICBvcHRpbWl6YXRpb25zLiAgSSB0aGluayB1c2luZyBBT1QgY2FuIGdp dmUgYW5vdGhlciAxMCUKICAgIGltcHJvdmVtZW50LiAgSXQgaXMgbm90IHRoYXQgYmlnIGFnYWlu IGJlY2F1c2Ugb2YgZHluYW1pYyBuYXR1cmUKICAgIG9mIFJ1YnkgYW5kIGFueSBDIGNvbXBpbGVy IGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dAogICAgYWxpYXNpbmcgZm9yIHR5cGlj YWwgZ2VuZXJhdGVkIEMgcHJvZ3JhbS4KCiAgICBUaGUgbGlmZSB3aXRoIHRoZSBwZXJmb3JtYW5j ZSBwb2ludCBvZiB2aWV3IHdvdWxkIGJlIGVhc3kgaWYgUnVieQogICAgZGlkIG5vdCBwZXJtaXQg dG8gcmVkZWZpbmUgYmFzaWMgb3BlcmF0aW9ucyBmb3IgYmFzaWMgdHlwZXMsCiAgICBlLmcuIHBs dXMgZm9yIGludGVnZXIuICBJbiB0aGlzIGNhc2Ugd2UgY291bGQgZXZhbHVhdGUgdHlwZXMgb2YK ICAgIG9wZXJhbmRzIGFuZCByZXN1bHRzIHVzaW5nIHNvbWUgZGF0YSBmbG93IGFuYWx5c2lzIGFu ZCBnZW5lcmF0ZQogICAgZmFzdGVyIHNwZWNpYWxpemVkIGluc25zLiAgU3RpbGwgYSBncmFkdWFs IHR5cGluZyBpZiBpdCBpcwogICAgaW50cm9kdWNlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUnVi eSB3b3VsZCBoZWxwIHRvIGdlbmVyYXRlIHN1Y2gKICAgIGZhc3RlciBpbnNucy4KCiAgQWdhaW4g SSB3cm90ZSB0aGlzIHByb3Bvc2FsIGZvciBkaXNjdXNzaW9uIGFzIEkgZG9uJ3Qgd2FudCB0byBi ZSBpbgphIHBvc2l0aW9uIHRvIGNvbXBldGUgd2l0aCBzb21lYm9keSBlbHNlIG9uZ29pbmcgYmln IHByb2plY3QuICBJdAptaWdodCBiZSBjb3VudGVycHJvZHVjdGl2ZSBmb3IgTVJJIGRldmVsb3Bt ZW50LiAgRXNwZWNpYWxseSBJIGRvbid0CndhbnQgaXQgYmVjYXVzZSB0aGUgcHJvamVjdCBpcyBi aWcgYW5kIGxvbmcgYW5kIHByb2JhYmx5IHdpbGwgaGF2ZSBhCmxvdCBvZiB0ZWhjbmljYWwgb2Jz dGFjbGVzIGFuZCBoYXZlIGEgcG9zc2liaWx0eSB0byBiZSBhIGZhaWx1cmUuCgoKCgotLSAKaHR0 cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUt cmVxdWVzdEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMu cnVieS1sYW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==