[#111712] [Ruby master Feature#19322] Support spawning "private" child processes — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtqdHNhbmFrdHNpZGlzIChLSiBUc2Fu
14 messages
2023/01/07
[ruby-core:111788] [Ruby master Feature#19322] Support spawning "private" child processes
From:
"Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date:
2023-01-11 19:39:07 UTC
List:
ruby-core #111788
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N DQoNDQoNDQpBbHNvIHRoZSBoYWNrcyBmb3IgTUpJVCBpbiBwcm9jZXNzLmMgYXJlIGFscmVhZHkg aW5mYW1vdXMsIGxldCdzIG5vdCBhZGQgb24gdG9wIG9mIGl0IGFuZCBmb3JjZSBldmVyeSBSdWJ5 IGltcGxlbWVudGF0aW9uIHRvIGhhdmUgc3VjaCBjb21wbGV4aXR5IHBsZWFzZS4NDQoNDQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KRmVhdHVyZSAjMTkzMjI6IFN1 cHBvcnQgc3Bhd25pbmcgInByaXZhdGUiIGNoaWxkIHByb2Nlc3Nlcw0NCmh0dHBzOi8vYnVncy5y dWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTMyMiNjaGFuZ2UtMTAxMjAwDQ0KDQ0KKiBBdXRob3I6IGtq dHNhbmFrdHNpZGlzIChLSiBUc2FuYWt0c2lkaXMpDQ0KKiBTdGF0dXM6IE9wZW4NDQoqIFByaW9y aXR5OiBOb3JtYWwNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0K IyMgQmFja2dyb3VuZA0NCg0NClRoZSB0cmFkaXRpb25hbCBVbml4IHByb2Nlc3MgQVBJcyAoYGZv cmtgIGV0YykgYXJlIHBvb3JseSBpc29sYXRlZC4gSWYgYSBsaWJyYXJ5IHNwYXducyBhIGNoaWxk IHByb2Nlc3MsIHRoaXMgaXMgbm90IHRyYW5zcGFyZW50IHRvIHRoZSBwcm9ncmFtIHVzaW5nIHRo ZSBsaWJyYXJ5LiBBbnkgc2lnbmFsIGhhbmRsZXIgZm9yIGBTSUdDSExEYCBpbiB0aGUgcHJvZ3Jh bSB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBzcGF3bmVkIHByb2Nlc3MgZXhpdHMsIGFuZCBldmVu IHdvcnNlLCBpZiB0aGUgcGFyZW50IGNhbGxzIGBQcm9jZXNzLndhaXRwaWQyKC0xKWAsIGl0IHdp bGwgY29uc3VtZSB0aGUgcmV0dXJuZWQgc3RhdHVzIGNvZGUsIHN0ZWFsaW5nIGl0IGZyb20gdGhl IGxpYnJhcnkhDQ0KDQ0KVW5mb3J0dW5hdGVseSwgdGhlIHByYWN0aWNlIG9mIHJlc3BvbmRpbmcg dG8gYFNJR0NITERgIGJ5IGNhbGxpbmcgYHdhaXRwaWQyKC0xKWAgaW4gYSBsb29wIGlzIGEgcHJl dHR5IGNvbW1vbiB1bml4aXNtLiBGb3IgZXhhbXBsZSwgVW5pY29ybiBkb2VzIGl0IFtoZXJlXSho dHRwczovL3loYnQubmV0L3VuaWNvcm4uZ2l0L3RyZWUvbGliL3VuaWNvcm4vaHR0cF9zZXJ2ZXIu cmIjbjQwMSkuIEluIHNob3J0LCB0aGVyZSBpcyBubyByZWxpYWJsZSB3YXkgZm9yIGEgZ2VtIHRv IHNwYXduIGEgY2hpbGQgcHJvY2VzcyBpbiBhIHdheSB0aGF0IGNhbuKAmXQgKHVuaW50ZW50aW9u YWxseSkgYmUgaW50ZXJmZXJlZCB3aXRoIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBwcm9ncmFtLg0N Cg0NCiMjIFByb2JsZW0gc3RhdGVtZW50DQ0KDQ0KQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBwcm9n cmFtLg0NCg0NCmBgYHJ1YnkNDQojIEltYWdpbmUgdGhpcyBwYXJ0IG9mIHRoZSBwcm9ncmFtIGlz IGluIHNvbWUgdG9wLWxldmVsIGFwcGxpY2F0aW9uIGV2ZW50IGxvb3ANDQojIG9yIHNvbWV0aGlu ZyAtIHNpbWlsYXIgdG8gaG93IFVuaWNvcm4gd29ya3MuIEl0IGRldGVjdHMgY2hpbGQgcHJvY2Vz c2VzIGV4aXRpbmcNDQojIGFuZCB0YWtlcyBzb21lIGFjdGlvbiAocG9zc2libHkgcmVzdGFydGlu ZyBhIGNyYXNoZWQgd29ya2VyLCBmb3IgZXhhbXBsZSkuDQ0KU2lnbmFsLnRyYXAoOkNITEQpIGRv DQ0KICBsb29wIGRvDQ0KICAgIGJlZ2luDQ0KICAgICAgcGlkLCBzdGF0dXMgPSBQcm9jZXNzLndh aXRwaWQyIC0xDQ0KICAgICAgcHV0cyAiU2lnbmFsIGhhbmRsZXIgcmVhcGVkICN7cGlkfSAje3N0 YXR1cy5pbnNwZWN0fSINDQogICAgcmVzY3VlIEVycm5vOjpFQ0hJTEQNDQogICAgICBwdXRzICJT aWduYWwgaGFuZGxlciByZWFwZWQgbm90aGluZyINDQogICAgICBicmVhaw0NCiAgICBlbmQNDQog IGVuZA0NCmVuZA0NCg0NCiMgSW1hZ2luZSB0aGF0IF90aGlzXyBwYXJ0IG9mIHRoZSBwcm9ncmFt IGlzIGJ1cmllZCBkZWVwIGluIHNvbWUgZ2VtLiBJdCBrbm93cw0NCiMgbm90aGluZyBhYm91dCB0 aGUgYXBwbGljYXRpb24gU0lHQ0hMRCBoYW5kbGluZywgYW5kIHF1aXRlIHBvc3NpYmx5IHRoZSBh cHBsaWNhdGlvbg0NCiMgYXV0aG9yIG1pZ2h0IG5vdCBldmVuIGtub3cgdGhpcyBnZW0gc3Bhd25z IGEgY2hpbGQgcHJvY2VzcyB0byBkbyBpdHMgd29yayENDQpyZXF1aXJlICdvcGVuMycNDQpsb29w IGRvDQ0KICBvLCBzdGF0dXMgPSBPcGVuMy5jYXB0dXJlMigiL2Jpbi9zaCIsICItYyIsICJlY2hv ICdoZWxsbyciKQ0NCiAgcHV0cyAicmFuIGNvbW1hbmQsIGdvdCAje28uY2hvbXB9ICN7c3RhdHVz Lmluc3BlY3R9Ig0NCmVuZA0NCmBgYA0NCg0NCkluIGN1cnJlbnQgdmVyc2lvbnMgb2YgUnVieSwg X3NvbWVfIGxvb3AgaXRlcmF0aW9ucyB3aWxsIGZ1bmN0aW9uIGNvcnJlY3RseSwgYW5kIHByaW50 IHNvbWV0aGluZyBsaWtlIHRoaXMuIFRoZSBnZW0gZ2V0cyB0aGUgYFByb2Nlc3M6OlN0YXR1c2Ag b2JqZWN0IGZyb20gaXRzIGNvbW1hbmQgYW5kIGNhbiBrbm93IGlmIGUuZy4gaXQgZXhpdGVkIGFi bm9ybWFsbHkuDQ0KDQ0KYGBgDQ0KcmFuIGNvbW1hbmQsIGdvdCBvaGFpdGhhciAjPFByb2Nlc3M6 OlN0YXR1czogcGlkIDExNTM2ODcgZXhpdCAwPg0NClNpZ25hbCBoYW5kbGVyIHJlYXBlZCBub3Ro aW5nDQ0KYGBgDQ0KDQ0KSG93ZXZlciwgb3RoZXIgaXRlcmF0aW9ucyBvZiB0aGUgbG9vcCBwcmlu dCB0aGlzLiBUaGUgc2lnbmFsIGhhbmRsZXIgcnVucyBhbmQgY2FsbHMgYFByb2Nlc3Mud2FpdHBp ZDIoLTEpYCBiZWZvcmUgdGhlIGNvZGUgaW4gb3BlbjMgY2FuIGRvIHNvLiBUaGVuLCB0aGUgZ2Vt IGNvZGUgZG9lcyBub3QgZ2V0IGEgYFByb2Nlc3M6OlN0YXR1c2Agb2JqZWN0ISBUaGlzIGlzIGFs c28gcG90ZW50aWFsbHkgYmFkIGZvciB0aGUgYXBwbGljYXRpb247IGl0IHJlYXBlZCBhIGNoaWxk IHByb2Nlc3MgaXQgZGlkbid0IGV2ZW4ga25vdyBleGlzdGVkLCBhbmQgaXQgbWlnaHQgY2F1c2Ug c29tZSBzdXJwcmlzaW5nIGJ1Z3MgaWYgdGhlIGFwcGxpY2F0aW9uIGF1dGhvciBkaWRuJ3Qga25v dyB0aGlzIHdhcyBhIHBvc3NpYmlsaXR5Lg0NCg0NCmBgYA0NClNpZ25hbCBoYW5kbGVyIHJlYXBl ZCAxMTUzNTk2ICM8UHJvY2Vzczo6U3RhdHVzOiBwaWQgMTE1MzU5NiBleGl0IDA+DQ0KU2lnbmFs IGhhbmRsZXIgcmVhcGVkIG5vdGhpbmcNDQpyYW4gY29tbWFuZCwgZ290IG9oYWl0aGFyIG5pbA0N CmBgYA0NCg0NCldlIHdvdWxkIGxpa2UgYSBmYW1pbHkgb2YgQVBJcyB3aGljaCBhbGxvdyBhIGdl bSB0byBzcGF3biBhIGNoaWxkIHByb2Nlc3MgYW5kIGd1YXJhbnRlZXMgdGhhdCB0aGUgZ2VtIGNh biB3YWl0IG9uIGl0LiBTb21lIGNvbmN1cnJlbnQgY2FsbCB0byBgUHJvY2Vzcy53YWl0cGlkMigt MSlgIChvciBldmVuIGBQcm9jZXNzLndhaXRwaWQyKCRzb21lX2x1Y2t5X2d1ZXNzX2Zvcl90aGVf cGlkKWApIHNob3VsZCBub3Qgc3RlYWwgdGhlIHN0YXR1cyBvdXQgZnJvbSB1bmRlcm5lYXRoIHRo ZSBjb2RlIHdoaWNoIGNyZWF0ZWQgdGhlIHByb2Nlc3MuIElkZWFsbHksIHdlIHNob3VsZCBldmVu IHN1cHByZXNzIHRoZSBgU0lHQ0hMRGAgc2lnbmFsIHRvIGF2b2lkIHRoZSBhcHBsaWNhdGlvbiBz aWduYWwgaGFuZGxlciBuZWVkbGVzc2x5IHdha2luZyB1cC4NDQoNDQoNDQojIyBQcm9wb3NlZCBS dWJ5LWxldmVsIEFQSXMuDQ0KDQ0KSSBwcm9wb3NlIHdlIGNyZWF0ZSB0aGUgZm9sbG93aW5nIG5l dyBtZXRob2RzIGluIFJ1YnkuDQ0KDQ0KKiBgUHJvY2Vzcy5zcGF3bl9wcml2YXRlYA0NCiogYFBy b2Nlc3MuZm9ya19wcml2YXRlYA0NCg0NClRoZXNlIG1ldGhvZHMgYmVoYXZlIGlkZW50aWNhbGx5 IHRvIHRoZWlyIG5vbi1fcHJpdmF0ZSB2ZXJzaW9ucyBpbiBhbGwgcmVzcGVjdCwgZXhjZXB0IGlu c3RlYWQgb2YgcmV0dXJuaW5nIGEgcGlkLCB0aGV5IHJldHVybiBhbiBvYmplY3Qgb2YgdHlwZSBg UHJvY2Vzczo6UHJpdmF0ZUhhbmRsZWAuDQ0KDQ0KYFByb2Nlc3M6OlByaXZhdGVIYW5kbGVgIHdv dWxkIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOg0NCg0NCiogYHBpZCgpYCAtIHJldHVybnMg dGhlIHBpZCBmb3IgdGhlIGNyZWF0ZWQgcHJvY2Vzcw0NCiogYHdhaXQoKWAgLSBibG9ja3MgdGhl IGNhbGxlciB1bnRpbCB0aGUgY3JlYXRlZCBwcm9jZXNzIGhhcyBleGl0ZWQsIGFuZCByZXR1cm5z IGEgYFByb2Nlc3M6OlN0YXR1c2Agb2JqZWN0LiBJZiB0aGUgaGFuZGxlIGhhcyBfYWxyZWFkeV8g aGFkIGAjd2FpdGAgY2FsbGVkIG9uIGl0LCBpdCByZXR1cm5zIHRoZSBzYW1lIGBQcm9jZXNzOjpT dGF0dXNgIG9iamVjdCBhcyB3YXMgcmV0dXJuZWQgdGhlbiBpbW1lZGlhdGVseS4gVGhpcyBpcyB1 bmxpa2UgYFByb2Nlc3Mud2FpdHBpZGAgYW5kIGZyaWVuZHMsIHdoaWNoIHdvdWxkIHJhaXNlIGFu IEVDSElMRCBpbiB0aGlzIGNhc2UgKG9yLCBpbiB0aGUgZmFjZSBvZiBwaWQgd3JhcGFyb3VuZCwg cG90ZW50aWFsbHkgd2FpdCBvbiBzb21lIG90aGVyIHRvdGFsbHkgdW5yZWxhdGVkIGNoaWxkIHBy b2Nlc3Mgd2l0aCB0aGUgc2FtZSBwaWQpLg0NCiogYHdhaXRfbm9uYmxvY2soKWAgLSBpZiB0aGUg Y3JlYXRlZCBwcm9jZXNzIGhhcyBleGl0ZWQsIGJlaGF2ZXMgbGlrZSBgI3dhaXRgOyBvdGhlcndp c2UsIGl0IHJldHVybnMgYSBgUHJvY2Vzczo6U3RhdHVzYCBvYmplY3QgZm9yIHdoaWNoIGAjZXhp dGVkP2AgcmV0dXJucyBmYWxzZS4NDQoqIGBraWxsKC4uLilgIC0gaWYgdGhlIGNyZWF0ZWQgcHJv Y2VzcyBoYXMgbm90IGJlZW4gcmVhcGVkIHZpYSBhIGNhbGwgdG8gYCN3YWl0YCwgcGVyZm9ybXMg aWRlbnRpY2FsbHkgdG8gYFByb2Nlc3Mua2lsbCAuLi4sIHBpZGAuIE90aGVyd2lzZSwgaWYgdGhl IHByb2Nlc3MgX2hhc18gYmVlbiByZWFwZWQsIHJhaXNlcyBgRXJybm86OkVTUkNIYCBpbW1lZGlh dGVseSB3aXRob3V0IGlzc3VpbmcgYSBzeXN0ZW0gY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQsIGlm IHBpZHMgd3JhcCBhcm91bmQsIHRoYXQgdGhlIHdyb25nIHByb2Nlc3MgaXMgbm90IHNpZ25hbGVk IGJ5IG1pc3Rha2UuDQ0KDQ0KQSBjYWxsIHRvIGBQcm9jZXNzLndhaXRgLCBgUHJvY2Vzcy53YWl0 cGlkYCwgb3IgYFByb2Nlc3Mud2FpdHBpZDJgIHdpbGwgX25ldmVyXyByZXR1cm4gYSBgUHJvY2Vz czo6U3RhdHVzYCBmb3IgYSBwcm9jZXNzIHN0YXJ0ZWQgd2l0aCBhIGBfcHJpdmF0ZWAgbWV0aG9k LCBldmVuIGlmIHRoYXQgY2FsbCBpcyBtYWRlIHdpdGggdGhlIHBpZCBvZiB0aGUgY2hpbGQgcHJv Y2Vzcy4gVGhlIF9vbmx5XyB3YXkgdG8gcmVhcCBhIHByaXZhdGUgY2hpbGQgcHJvY2VzcyBpcyB0 aHJvdWdoIGBQcm9jZXNzOjpQcml2YXRlSGFuZGxlYC4NDQoNDQpUaGUgaW1wbGVtZW50YXRpb24g b2YgYElPLnBvcGVuYCwgYEtlcm5lbCNzeXN0ZW1gLCBgS2VybmVsI3BvcGVuYCwgYmFja3RpY2tz LCBhbmQgdGhlIGBPcGVuM2AgbW9kdWxlIHdvdWxkIGJlIGNoYW5nZWQgdG8gdXNlIHRoaXMgcHJp dmF0ZSBwcm9jZXNzIG1lY2hhbmlzbSBpbnRlcm5hbGx5LCBhbHRob3VnaCB0aGV5IGRvIG5vdCBy ZXR1cm4gcGlkcyBzbyB0aGV5IGRvIG5vdCBuZWVkIHRvIGhhdmUgdGhlaXIgaW50ZXJmYWNlcyBj aGFuZ2VkLiAobm90ZSB0aG91Z2ggLSBJIGRvbid0IGJlbGlldmUgYEtlcm5lbCNzeXN0ZW1gIHN1 ZmZlcnMgZnJvbSB0aGUgc2FtZSBwcm9ibGVtIGFzIHRoZSBgb3BlbjNgIGV4YW1wbGUgYWJvdmUs IGJlY2F1c2UgaXQgZG9lcyBub3QgeWllbGQgdGhlIEdWTCBub3IgY2hlY2sgaW50ZXJydXB0cyBp biBiZXR3ZWVuIHNwYXduaW5nIHRoZSBjaGlsZCBhbmQgd2FpdGluZyBvbiBpdCkNDQoNDQojIyBJ bXBsZW1lbnRhdGlvbiBzdHJhdGVneQ0NCg0NCkkgYmVsaWV2ZSB0aGlzIGNhbiBiZSBpbXBsZW1l bnRlZCwgaW4gYnJvYWQgc3Ryb2tlcywgd2l0aCBhbiBhcHByb2FjaCBsaWtlIHRoaXM6DQ0KDQ0K KiBLZWVwIGEgZ2xvYmFsIHRhYmxlIG1hcHBpbmcgcGlkcyAtPiBoYW5kbGVzIGZvciBwcm9jZXNz ZXMgY3JlYXRlZCB3aXRoIGBmb3JrX3ByaXZhdGVgIG9yIGBzcGF3bl9wcml2YXRlYC4NDQoqIFdo ZW4gYSBjaGlsZCBwcm9jZXNzIGlzIHdhaXRlZCBvbiwgY29uc3VsdCB0aGUgaGFuZGxlIHRhYmxl LiBJZiB0aGVyZSBpcyBhIGhhbmRsZSByZWdpc3RlcmVkLCBhbmQgdGhlIHdhaXQgY2FsbCB3YXMg bWFkZSB3aXRob3V0IHRoZSBoYW5kbGUsIGRvIE5PVCByZXR1cm4gdGhlIHJlYXBlZCBzdGF0dXMu IEluc3RlYWQsIHNhdmUgdGhlIHN0YXR1cyBhZ2FpbnN0IHRoZSBoYW5kbGUsIGFuZCByZXBlYXQg dGhlIGNhbGwgdG8gYHdhaXRwaWRgLg0NCiogSWYgdGhlIHdhaXQgY2FsbCBfd2FzXyBtYWRlIHdp dGggdGhlIGhhbmRsZSwgd2UgY2FuIHJldHVybiB0aGUgDQ0KKiBPbmNlIGEgaGFuZGxlIGhhcyBo YWQgdGhlIGNoaWxkIHN0YXR1cyBzYXZlZCBhZ2FpbnN0IGl0LCBpdCBpcyByZW1vdmVkIGZyb20g dGhlIHRhYmxlLg0NCiogQSBzdWJzZXF1ZW50IGNhbGwgdG8gd2FpdCBvbiB0aGF0IHBpIHRoZSBo YW5kbGUgd2lsbCBsb29rIHVwIHRoZSBzYXZlZCBpbmZvcm1hdGlvbiBhbmQgcmV0dXJuIGl0IHdp dGhvdXQgbWFraW5nIGEgc3lzdGVtIGNhbGwuDQ0KDQ0KSW4gZmFjdCwgbW9zdCBvZiB0aGUgaW5m cmFzdHJ1Y3R1cmUgdG8gZG8gdGhpcyBjb3JyZWN0bHkgaXMgYWxyZWFkeSBpbiBwbGFjZSAtIGl0 IHdhcyBhZGRlZCBieSBAazBrdWJ1biBhbmQgQG5vcm1hbHBlcnNvbiBmb3VyIHllYXJzIGFnbyAt IGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNDg2Ny4gTUpJVCBoYWQgYSBzaW1p bGFyIHByb2JsZW0gdG8gdGhlIG9uZSBkZXNjcmliZWQgaW4gdGhpcyBpc3N1ZTsgaXQgbmVlZHMg dG8gZm9yayBhIEMgY29tcGlsZXIsIGJ1dCBpZiB0aGUgYXBwbGljYXRpb24gcGVyZm9ybXMgYSBg UHJvY2Vzcy53YWl0cGlkMigtMSlgLCBpdCBjb3VsZCB3aW5kIHVwIHJlYXBpbmcgdGhlIGdjYyBw cm9jZXNzIG91dCBmcm9tIHVuZGVybmVhdGggbWppdC4gVGhpcyBjb2RlIGhhcyBjaGFuZ2VkIGNv bnNpZGVyYWJseSBvdmVyIHRoZSBjb3Vyc2Ugb2YgbGFzdCB5ZWFyLCBidXQgbXkgdW5kZXJzdGFu ZGluZyBpcyB0aGF0IG1qaXQgc3RpbGwgdXNlcyB0aGlzIGluZnJhc3RydWN0dXJlIHRvIHByb3Rl Y3QgaXRzIFJ1YnkgY2hpbGQtcHJvY2VzcyBmcm9tIGJlY29taW5nIHZpc2libGUgdG8gUnVieSBj b2RlLg0NCg0NCkluIGFueSBjYXNlLCB0aGUgd2F5IHdhaXRwaWQgd29ya3MgX2N1cnJlbnRseV8s IGlzIHRoYXQuLi4NDQoNDQoqIFJ1YnkgYWN0dWFsbHkgZG9lcyBhbGwgY2FsbHMgdG8gYHdhaXRw aWRgIGFzIGBXTk9IQU5HYCAoaS5lLiBub25ibG9ja2luZykgaW50ZXJuYWxseS4NDQoqIElmIGEg Y2FsbCB0byBgd2FpdHBpZGAgZmluZHMgbm8gY2hpbGRyZW4sIGl0IGJsb2NrcyB0aGUgdGhyZWFk LCByZXByZXNlbnRpbmcgdGhlIHN0YXRlIGluIGEgc3RydWN0dXJlIG9mIHR5cGUgYHN0cnVjdCB3 YWl0cGlkX3N0YXRlYC4NDQoqIFJ1YnkgYWxzbyBrZWVwcyBhIGxpc3Qgb2YgYWxsIGB3YWl0cGlk X3N0YXRlYCdzIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyB3YWl0ZWQgZm9yLCBgdm0tPndhaXRp bmdfcGlkc2AgYW5kIGB2bS0+d2FpdGluZ19ncnBzYC4NDQoqIFRoZXNlIHN0cnVjdHVyZXMgYXJl IHByb3RlY3RlZCB3aXRoIGEgc3BlY2lmaWMgbXV0ZXgsIGB2bS0+d2FpdHBpZF9sb2NrYC4NDQoq IFJ1YnkgaW50ZXJuYWxseSB1c2VzIHRoZSBTSUdDSExEIHNpZ25hbCB0byByZWFwIHRoZSBkZWFk IGNoaWxkcmVuLCBhbmQgdGhlbiBmaW5kIGEgd2FpdGluZyBjYWxsIHRvIGB3YWl0cGlkYCAodmlh IHRoZSB0d28gbGlzdHMpIHRvIGFjdHVhbGx5IGRpc3BhdGNoIHRoZSByZWFwZWQgc3RhdHVzIHRv LiANDQoqIElmIHNvbWUgY2FsbGVyIGlzIHdhaXRpbmcgZm9yIGEgc3BlY2lmaWMgcGlkLCB0aGF0 IF9hbHdheXNfIHRha2VzIHByaW9yaXR5IG92ZXIgc29tZSBvdGhlciBjYWxsZXIgdGhhdCdzIHdh aXRpbmcgZm9yIGEgcGlkLWdyb3VwIChlLmcuIGAtMWApLg0NCg0NCm1qaXQncyBjaGlsZCBwcm9j ZXNzIGlzIHByb3RlY3RlZCwgYmVjYXVzZToNDQoNDQoqIFdoZW4gbWppdCBmb3JrcywgaXQgdXNl cyBhIG1ldGhvZCBgcmJfbWppdF9mb3JrYCB0byBkbyBzby4NDQoqIFRoYXQgY2FsbHMgdGhlIGFj dHVhbCBgZm9ya2AgaW1wbGVtZW50YXRpb24gX3doaWxzdCBzdGlsbCBob2xkaW5nXyBgdm0tPndh aXRwaWRfbG9ja2ANDQoqIEJlZm9yZSB5aWVsZGluZyB0aGUgbG9jaywgaXQgaW5zZXJ0cyBhbiBl bnRyeSBpbiBgdm0tPndhaXRpbmdfcGlkc2Agc2F5aW5nIHRoYXQgbWppdCBpcyB3YWl0aW5nIGZv ciB0aGUganVzdC1jcmVhdGVkIGNoaWxkLg0NCiogU2luY2UgZGlyZWN0IHdhaXRzIGZvciBwaWRz IGFsd2F5cyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwaWQtZ3JvdXBzLCB0aGlzIGVuc3VyZXMgdGhh dCBtaml0IHdpbGwgYWx3YXlzIHJlYXAgaXRzIG93biBjaGlsZHJlbi4NDQoNDQpJIGJlbGlldmUg dGhpcyBtZWNoYW5pc20gY2FuIGJlIGV4dGVuZGVkIGFuZCBnZW5lcmFsaXNlZCB0byBwb3dlciB0 aGUgcHJvcG9zZWQgQVBJLCBhbmQgbWppdCBjb3VsZCBpdHNlbGYgdXNlIHRoYXQgcmF0aGVyIHRo YW4gaGF2aW5nIG1qaXQtc3BlY2lmaWMgaGFuZGxpbmcgaW4gYHByb2Nlc3MuY2AuDQ0KDQ0KIyMg UE9DIGltcGxlbWVudGF0aW9uDQ0KDQ0KSSBza2V0Y2hlZCBvdXQgYSBfdmVyeV8gcm91Z2ggUE9D IHRvIHNlZSBpZiB3aGF0IEkgc2FpZCBhYm92ZSB3b3VsZCBiZSBwb3NzaWJsZSwgYW5kIEkgdGhp bmsgaXQgaXM6DQ0KDQ0KaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9jb21taXQvNjAwOWM1 NjRiMTY4NjIwMDE1MzVmMmI1NjFmMWExMmY2ZTdlMGM1Nw0NCg0NClRoZSBmb2xsb3dpbmcgc2Ny aXB0IGJlaGF2ZXMgaG93IEkgZXhwZWN0IHdpdGggdGhpcyBwYXRjaDoNDQoNDQpgYGBydWJ5DQ0K cGlkLCBoID0gUHJvY2Vzcy5zcGF3bl9wcml2YXRlICIvYmluL3NoIiwgIi1jIiwgInNsZWVwIDE7 IGV4aXQgNjkiDQ0KcHV0cyAicGlkIC0+ICN7cGlkfSINDQpwdXRzICJoIC0+ICN7aH0iDQ0KDQ0K IyBzaG91bGQgRVNSQ0guDQ0Kc2xlZXAgMg0NCmJlZ2luDQ0KICAgIFByb2Nlc3Mud2FpdHBpZDIg LTENDQpyZXNjdWUgPT4gZQ0NCiAgICBwdXRzICJ3YWl0cGlkIGVyciAtPiAje2V9Ig0NCmVuZA0N CndwaWQsIHN0YXR1cyA9IGgud2FpdA0NCnB1dHMgIndwaWQgLT4gI3t3cGlkfSINDQpwdXRzICJz dGF0dXMgLT4gI3tzdGF0dXMuaW5zcGVjdH0iDQ0KYGBgDQ0KDQ0KYGBgDQ0Ka3RzYW5ha3RzaWRp c0BsaW1hLWxpbnV4MSBydWJ5ICUgLi90b29sL3J1bnJ1YnkucmIgLS0gLi90c3QxLnJiDQ0KcGlk IC0+IDExNTQxMDUNDQpoIC0+ICM8UHJvY2Vzczo6UHJpdmF0ZUhhbmRsZToweDAwMDBmZmZmOTQw MTQwOTg+DQ0Kd2FpdHBpZCBlcnIgLT4gTm8gY2hpbGQgcHJvY2Vzc2VzDQ0Kd3BpZCAtPiAxMTU0 MTA1DQ0Kc3RhdHVzIC0+ICM8UHJvY2Vzczo6U3RhdHVzOiBwaWQgMTE1NDEwNSBleGl0IDQ+DQ0K YGBgDQ0KDQ0KVGhlIGNoaWxkIHByb2Nlc3MgY2FuIGJlIHdhaXRlZCBvbiB3aXRoIHRoZSBoYW5k bGUsIGFuZCB0aGUgY2FsbCB0byBgd2FpdHBpZDIoLTEpYCBmaW5kcyBub3RoaW5nLg0NCg0NCiMj IFByZXZpb3VzIGlkZWE6IE9TLXNwZWNpZmljIGhhbmRsZXMNDQoNDQpNeSBmaXJzdCB2ZXJzaW9u IG9mIHRoaXMgcHJvcG9zYWwgaW52b2x2ZWQgYSBzaW1pbGFyIEFQSSwgYnV0IHBvd2VyaW5nIGl0 IHdpdGggcGxhdGZvcm0tc3BlY2lmaWMgY29uY2VwdHMgYXZhaWxhYmxlIG9uIExpbnV4LCBXaW5k b3dzLCBhbmQgRnJlZUJTRCB3aGljaCBvZmZlciByaWNoZXIgY29udHJvbCB0aGFuIGp1c3QgcGlk cyAmIHRoZSBgd2FpdGAgc3lzY2FsbC4gSW4gcGFydGljdWxhciwgSSBoYWQgYmVsaWV2ZWQgdGhh dCB3ZSBjb3VsZCB1c2UgdGhlIGBjbG9uZWAgc3lzY2FsbCBpbiBMaW51eCB0byBjcmVhdGUgYSBj aGlsZCBwcm9jZXNzIHdoaWNoOg0NCg0NCiogQ291bGQgYmUgcmVmZXJyZWQgdG8gYnkgYSB1bmlx dWUgZmlsZSBkZXNjcmlwdG9yIChhIHBpZGZkKSB3aGljaCB3b3VsZCBiZSBndWFyYW50ZWVkIG5l dmVyIHRvIGJlIHJlLXVzZWQgKHVubGlrZSBhIHBpZCksDQ0KKiBXb3VsZCBub3QgZ2VuZXJhdGUg YSBzaWduYWwgd2hlbiBpdCBleGl0ZWQgKGkuZS4gbm8gU0lHQ0hMRCkuDQ0KKiBDb3VsZCBub3Qg YmUgd2FpdGVkIG9uIGJ5IGFuIHVuc3BlY3RpbmcgdG8gYHdhaXRwaWRgIChleGNlcHQgaWYgYSBz cGVjaWFsIGZsYWcgYF9fV0NMT05FYCBhcyBwYXNzZWQpLg0NCg0NClVuZm9ydHVuYXRlbHksIHdo ZW4gSSB0cmllZCB0byBpbXBsZW1lbnQgdGhpcywgSSByYW4gaW50byBhIHByZXR0eSBzZXJpb3Vz IHNuYWcuIEl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBzdWNoIGEgcHJvY2VzcyAtIEJVVCwgd2hl biB0aGUgcHJvY2VzcyBleGVjJ3MsIGl0IGdvZXMgX2JhY2tfIHRvICJyYWlzZS1TSUdDSExELW9u LWV4aXQiIGFuZCAiYWxsb3ctd2FpdGluZy13aXRob3V0LV9fV0NMT05FIiBtb2Rlcy4gSSBndWVz cyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGNsb25lIHN5c2NhbGwgaXMgcmVhbGx5IGRlc2ln bmVkIHRvIHBvd2VyIHRocmVhZHMgaW4gTGludXgsIHJhdGhlciB0aGFuIGJlaW5nIGEgZ2VuZXJh bC1wdXJwb3NlICJoaWRkZW4gcHJvY2VzcyIgQVBJLg0NCg0NClNvLCBJIGRvbid0IHRoaW5rIHdl IHNob3VsZCB1c2UgcGlkZmRzIGluIHRoaXMgcHJvcG9zYWwuDQ0KDQ0KIyMgTW90aXZhdGlvbg0N Cg0NCk15IHVzZS1jYXNlIGZvciB0aGlzIGlzIHRoYXQgSeKAmW0gd29ya2luZyBvbiBhIHBlcmYt YmFzZWQgcHJvZmlsaW5nIHRvb2wgZm9yIFJ1YnkuIFRvIGdldCBhcm91bmQgc29tZSBMaW51eCBj YXBhYmlsaXR5IGlzc3VlcywgSSB3YW50IG15IHByb2ZpbGVyIGdlbSAob3IgQ1J1YnkgcGF0Y2gs IHdoYXRldmVyIGl0IHdpbmRzIHVwIGJlaW5nISkgdG8gZm9yayBhIHByaXZpbGVnZWQgaGVscGVy IGJpbmFyeSB0byBkbyBzb21lIGVCUEYgdHdpZGRsaW5nLiBCdXQsIGlmIHlvdeKAmXJlIHByb2Zp bGluZyBlLmcuIGEgVW5pY29ybiBtYXN0ZXIgcHJvY2VzcywgdGhlIHJlc3VsdCBvZiB0aGF0IGJp bmFyeSBleGl0aW5nIG1pZ2h0IGJlIGNhdWdodCBieSBVbmljb3JuIGl0c2VsZiwgcmF0aGVyIHRo YW4gbXkgKGdlbSB8IGludGVycHJldGVyIGZlYXR1cmUpLg0NCg0NCkluIG15IGNhc2UsIEknbSBz byBkZWVwIGluIGxpbnV4IHNwZWNpZmljIHN0dWZmIHRoYXQganVzdCBjYWxsaW5nIGBjbG9uZSgy KWAgZnJvbSBteSBleHRlbnNpb24gaXMgcHJvYmFibHkgZmluZSwgYnV0IEkgaGFkIGVub3VnaCBv ZiBhIGxvb2sgYXQgdGhpcyBwcm9jZXNzIG1hbmFnZW1lbnQgc3R1ZmYgSSB0aG91Z2h0IGl0IHdv dWxkIGJlIHdvcnRoIGFza2luZyB0aGUgcXVlc3Rpb24gaWYgdGhpcyBtaWdodCBiZSB1c2VmdWwg dG8gb3RoZXIsIG1vcmUgbm9ybWFsLCBnZW1zLg0NCg0NCg0NCg0NCg0NCi0tIA0NCmh0dHBzOi8v YnVncy5ydWJ5LWxhbmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5 LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2 ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFu Zy5vcmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3Jn Lw==