[ruby-core:116690] [Ruby master Bug#19991] rb_register_postponed_job async-signal-unsafety causes crash in GC
From:
"ivoanjo (Ivo Anjo) via ruby-core" <ruby-core@...>
Date:
2024-02-13 09:01:11 UTC
List:
ruby-core #116690
SXNzdWUgIzE5OTkxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgaXZvYW5qbyAoSXZvIEFuam8pLg0NCg0N Cg0NCkkndmUgYWxzbyBkb2N1bWVudGVkIGhvdyB0byB3b3JrYXJvdW5kIHRoaXMgaXNzdWUgaW4g dGhlIERhdGFkb2cgUnVieSBwcm9maWxlciBpbiBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9w cm9maWxlci9wcm9maWxlcl90cm91Ymxlc2hvb3RpbmcvcnVieS8jc2VnbWVudGF0aW9uLWZhdWx0 cy1pbi1nY19maW5hbGl6ZV9kZWZlcnJlZC1pbi1ydWJ5LXZlcnNpb25zLTI2LXRvLTMyIGFsdGhv dWdoIHdlJ3JlIHN0aWxsIGNvbnNpZGVyaW5nIHB1dHRpbmcgaW4gYSB3b3JrYXJvdW5kIGluIHRo ZSBwcm9maWxlciBpdHNlbGYuDQ0KDQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0NCkJ1ZyAjMTk5OTE6IHJiX3JlZ2lzdGVyX3Bvc3Rwb25lZF9qb2IgYXN5bmMtc2ln bmFsLXVuc2FmZXR5IGNhdXNlcyBjcmFzaCBpbiBHQw0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcu b3JnL2lzc3Vlcy8xOTk5MSNjaGFuZ2UtMTA2NzAzDQ0KDQ0KKiBBdXRob3I6IGtqdHNhbmFrdHNp ZGlzIChLSiBUc2FuYWt0c2lkaXMpDQ0KKiBTdGF0dXM6IENsb3NlZA0NCiogUHJpb3JpdHk6IE5v cm1hbA0NCiogQmFja3BvcnQ6IDMuMDogVU5LTk9XTiwgMy4xOiBVTktOT1dOLCAzLjI6IFVOS05P V04NDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KT3VyIHByb2R1 Y3Rpb24gYXBwbGljYXRpb24gZXhwZXJpZW5jZWQgYW4gaW50ZXJwcmV0ZXIgY3Jhc2ggdG9kYXkg dGhhdCBJ4oCZbSBmYWlybHkgc3VyZSBpcyB0aGUgcmVzdWx0IG9mIGEgYnVnIGluIHRoZSBgcmJf cmVnaXN0ZXJfcG9zdHBvbmVkX2pvYmAgaW5mcmFzdHJ1Y3R1cmUuDQ0KDQ0KIyMgRGlhZ25vc2lz DQ0KDQ0KSeKAmXZlIGF0dGFjaGVkIGEgbW9yZSBjb21wbGV0ZSB2ZXJzaW9uIG9mIHRoZSBjcmFz aCBkdW1wLCBidXQgdGhlIGtleSBpbmZvcm1hdGlvbiBJIHRoaW5rIGlzIHRoZSBmb2xsb3dpbmcg YmFja3RyYWNlOg0NCg0NCmBgYA0NCjxpbnRlcm5hbDpnYz46MzU6IFtCVUddIFNlZ21lbnRhdGlv biBmYXVsdCBhdCAweDAwMDAwMDAwMDAwMDAwYzgNDQouLi4uDQ0KL3Vzci9saWIvbGlicnVieS5z by4zLjEocmJfdm1fYnVncmVwb3J0KzB4NjBjKSBbMHhmZmZmYWFmNTdhNmNdIHZtX2R1bXAuYzo3 NTkNDQovdXNyL2xpYi9saWJydWJ5LnNvLjMuMShyYl9idWdfZm9yX2ZhdGFsX3NpZ25hbCsweGQ4 KSBbMHhmZmZmYWFkNmQxMjBdIGVycm9yLmM6ODIxDQ0KL3Vzci9saWIvbGlicnVieS5zby4zLjEo c2lnc2VndisweDU4KSBbMHhmZmZmYWFlYjQzNTBdIHNpZ25hbC5jOjk2NA0NCi91c3IvbGliL2xp YnJ1Ynkuc28uMy4xKHNpZ2lsbCkgKG51bGwpOjANDQpsaW51eC12ZHNvLnNvLjEoX19rZXJuZWxf cnRfc2lncmV0dXJuKzB4MCkgWzB4ZmZmZmFiMjBmNzhjXQ0NCi91c3IvbGliL2xpYnJ1Ynkuc28u My4xKHJiaW1wbF9hdG9taWNfZXhjaGFuZ2UrMHgwKSBbMHhmZmZmYWFkOTQwMThdIGdjLmM6NDA4 MQ0NCi91c3IvbGliL2xpYnJ1Ynkuc28uMy4xKGdjX2ZpbmFsaXplX2RlZmVycmVkKSBnYy5jOjQw ODENDQovdXNyL2xpYi9saWJydWJ5LnNvLjMuMShyYl9wb3N0cG9uZWRfam9iX2ZsdXNoKzB4MjE4 KSBbMHhmZmZmYWFmNWRkNjBdIHZtX3RyYWNlLmM6MTcyOA0NCi91c3IvbGliL2xpYnJ1Ynkuc28u My4xKHJiX3RocmVhZHB0cl9leGVjdXRlX2ludGVycnVwdHMrMHgzMjgpIFsweGZmZmZhYWVmNzUy MF0gdGhyZWFkLmM6MjQ0NA0NCi91c3IvbGliL2xpYnJ1Ynkuc28uMy4xKHZtX2V4ZWNfY29yZSsw eDRlNTQpIFsweGZmZmZhYWY0MWM2Y10gdm0uaW5jOjU4OA0NCi91c3IvbGliL2xpYnJ1Ynkuc28u My4xKHJiX3ZtX2V4ZWMrMHgxNDQpIFsweGZmZmZhYWY0MjdjY10gdm0uYzoyMjExDQ0KYGBgDQ0K DQ0KSSBkaXNhc3NlbWJsZWQgYGdjX2ZpbmFsaXplX2RlZmVycmVkYCBpbiBHREIgKGRpZmZlcmVu dCBleGVjdXRpb24sIHNvIHRoZSBhZGRyZXNzZXMgZG9u4oCZdCBsaW5lIHVwIC0gdGhpcyBpcyBO T1QgZnJvbSBhIGNvcmUgZHVtcCk6DQ0KDQ0KYGBgDQ0KKGdkYikgZGlzYXNzZW1ibGUgZ2NfZmlu YWxpemVfZGVmZXJyZWQNDQpEdW1wIG9mIGFzc2VtYmxlciBjb2RlIGZvciBmdW5jdGlvbiBnY19m aW5hbGl6ZV9kZWZlcnJlZDoNDQogICAweDAwMDBmZmZmZjdjYzNmZjggPCswPjogIHN0cCB4Mjks IHgzMCwgW3NwLCAjLTQ4XSENDQogICAweDAwMDBmZmZmZjdjYzNmZmMgPCs0PjogIG1vdiB3MSwg IzB4MSAvLyAjMQ0NCiAgIDB4MDAwMGZmZmZmN2NjNDAwMCA8Kzg+OiAgbW92IHgyOSwgc3ANDQog ICAweDAwMDBmZmZmZjdjYzQwMDQgPCsxMj46IHN0cCB4MTksIHgyMCwgW3NwLCAjMTZdDQ0KICAg MHgwMDAwZmZmZmY3Y2M0MDA4IDwrMTY+OiBtb3YgeDE5LCB4MA0NCiAgIDB4MDAwMGZmZmZmN2Nj NDAwYyA8KzIwPjogYWRkIHgyMCwgeDAsICMweGM4DQ0KICAgMHgwMDAwZmZmZmY3Y2M0MDEwIDwr MjQ+OiBsZGF4ciB3MCwgW3gyMF0NDQogICAuLi4uIGNvbnRpbnVlcyAuLi4uDQ0KYGBgDQ0KDQ0K QmFzZWQgb24gdGhlIGxpbmUgbnVtYmVycyBmcm9tIHRoZSBkZWJ1Z2luZm8sIHRoZSBmYXVsdGlu ZyBpbnN0cnVjdGlvbiBpcyBsaWtlbHkgdG8gYmUgYGdjX2ZpbmFsaXplX2RlZmVycmVkKzI0YCAo d2hpY2ggaXMgdGhlIGlubGluZWQgYHJiaW1wbF9hdG9taWNfZXhjaGFuZ2VgKS4gVGhhdCB3b3Vs ZCBhdHRlbXB0IGEgbG9hZCBvZiAweGM4IGlmIHgwIHdhcyB6ZXJvIC0gaS5lLiBpZiBgZ2NfZmlu YWxpemVfZGVmZXJyZWRgIHdhcyBjYWxsZWQgd2l0aCBhIE5VTEwgb2Jqc3BhY2UuDQ0KDQ0KVGhl IGVucXVldWluZyBvZiBgZ2NfZmluYWxpemVfZGVmZXJyZWRgIHdpdGggcG9zdHBvbmVkIGpvYiBv bmx5IGhhcHBlbnMgaW4gb25lIHBsYWNlIChpbiBnY19zd2VlcF9wYWdlLCBbaGVyZV0oaHR0cHM6 Ly9naXRodWIuY29tL3J1YnkvcnVieS9ibG9iLzVjZmY0YzVhYTM3NTc4NzkyNGUyZGY1YzBiOTgx ZGQ5MjJiOTVhOGMvZ2MuYyNMNTY1MEMyOS1MNTY1MEMyOSkpIGFuZCBpZiBgb2Jqc3BhY2VgIHdh cyBudWxsIHRoZXJlIHRoZW4gdGhlIGNyYXNoIHdvdWxkIGhhdmUgaGFkIHRvIGhhdmUgYWxyZWFk eSBoYXBwZW5lZCBpbiBgZ2Nfc3dlZXBfcGFnZWAuIFRodXMsIEkgdGhpbmsgdGhhdCBgZ2NfZmlu YWxpemVfZGVmZXJyZWRgIHdhcyBfZW5xdWV1ZWRfIGludG8gdGhlIHBvc3Rwb25lZCBqb2IgbGlz dCB3aXRoIGEgbm90LU5VTEwgYXJndW1lbnQsIGJ1dCB0aGUgYXJndW1lbnQgd2FzIGNvcnJ1cHRl ZCB3aGlsc3QgaXQgd2FzIGluIGB2bS0+cG9zdHBvbmVkX2pvYl9idWZmZXJgLCBhbmQgaWYgb2Jq c3BhY2Ugd2FzIG51bGwgdGhlcmUgdGhlbiB0aGUgY3Jhc2ggd291bGQgaGF2ZSBoYWQgdG8gaGF2 ZSBhbHJlYWR5IGhhcHBlbmVkIGluIGBnY19zd2VlcF9wYWdlYC4gVGh1cywgSSB0aGluayB0aGF0 IGBnY19maW5hbGl6ZV9kZWZlcnJlZGAgd2FzIGVucXVldWVkIGludG8gdGhlIHBvc3Rwb25lZCBq b2IgbGlzdCB3aXRoIGEgbm90LU5VTEwgYXJndW1lbnQsIGJ1dCB0aGUgYXJndW1lbnQgd2FzIGNv cnJ1cHRlZCB3aGlsc3QgaXQgd2FzIGluIGB2bS0+cG9zdHBvbmVkX2pvYl9idWZmZXJgLg0NCg0N CkkgaGFkIGEgbG9vayBhdCB0aGUgcG9zdHBvbmVkIGpvYiBjb2RlLCB3aGljaCBpcyBvZiBjb3Vy c2UgdmVyeSB0cmlja3kgYmVjYXVzZSBpdCBuZWVkcyB0byBiZSBhc3luYy1zaWduYWwtc2FmZS4g TW9yZSBzcGVjaWZpY2FsbHk6DQ0KKiBJdCBuZWVkcyB0byB3b3JrIGlmIHJ1biBmcm9tIGEgdGhy ZWFkIG5vdCBob2xkaW5nIHRoZSBHVkwNDQoqIEl0IG5lZWRzIHRvIHdvcmsgaWYgcnVuIGZyb20g YSB0aHJlYWQsIHdoaWxzdCBhbm90aGVyIHRocmVhZCBpcyBhY3R1YWxseSBleGVjdXRpbmcgYHJi X3Bvc3Rwb25lZF9qb2JfZmx1c2hgDQ0KKiBJdCBuZWVkcyB0byB3b3JrIGlmIHJ1biBmcm9tIGEg c2lnbmFsIGNhdWdodCBpbiBhIHRocmVhZCB0aGF0IGlzIGN1cnJlbnRseSBleGVjdXRpbmcgYHJi X3Bvc3Rwb25lZF9qb2JfZmx1c2hgICh0aGlzIHJ1bGVzIG91dCB0cml2aWFsIG11dGV4LWJhc2Vk IHNvbHV0aW9ucykNDQoNDQpXZSB1c2UgdGhlIERhdGFkb2cgY29udGludW91cyBwcm9maWxlciBp biBvdXIgYXBwbGljYXRpb24gKENDOiBAaXZvYW5qbyA7KSwgd2hpY2ggY2FsbHMgYHJiX3Bvc3Rw b25lZF9qb2JfcmVnaXN0ZXJgIHRvIGNhcHR1cmUgcHJvZmlsaW5nIHNhbXBsZXMuIFRodXMsIEkg dGhpbmsgb3VyIGFwcGxpY2F0aW9uIGlzIGxpa2VseSB0byBoaXQgYWxsIG9mIHRob3NlIHNjZW5h cmlvcyBzZW1pLXJlZ3Vhcmx5Lg0NCg0NCk15IGJlc3QgZ3Vlc3MgYXQgYSBwbGF1c2libGUgc2Vx dWVuY2Ugb2YgZXZlbnRzLCB0byBnZW5lcmF0ZSB0aGlzIHBhcnRpY3VsYXIgY3Jhc2gsIGlzIHRo YXQ6DQ0KMS4gYHJiX3Bvc3Rwb25lZF9qb2JfZmx1c2hgIHdhcyBydW5uaW5nIG9uIHRocmVhZCBU MS4NDQoyLiBUaGVyZSBpcyBhIHF1ZXVlZCBjYWxsIHRvIGdjX2ZpbmFsaXplX2RlZmVycmVkIHNp dHRpbmcgaW4gYHZtLT5wb3N0cG9uZWRfam9iX2J1ZmZlclt2bS0+cG9zdHBvbmVkX2pvYl9pbmRl eC0xXWAuDQ0KMy4gVDEgZXhlY3V0ZWQgdGhlIGBBVE9NSUNfQ0FTYCBhdCB2bV90cmFjZS5jOjE4 MDAsIGRlY3JlbWVudGluZyBgdm0tPnBvc3Rwb25lZF9qb2JfaW5kZXhgICh3aGljaCBub3cgZXF1 YWxzIGBpbmRleCAtIDFgKSBhbmQgZGV0ZXJtaW5pbmcgdGhhdCBhIGpvYiBhdCBpbmRleCBpbmRl eCBzaG91bGQgYmUgcnVuLg0NCjQuIFRocmVhZCBUMiByZWNlaXZlZCBhIHNpZ25hbCwgYW5kIHRo ZSBEYXRhZG9nIGNvbnRpbnVvdXMgcHJvZmlsZXIgY2FsbGVkIGByYl9wb3N0cG9uZWRfam9iX3Jl Z2lzdGVyX29uZSgwLCBzYW1wbGVfZnJvbV9wb3N0cG9uZWRfam9iLCBOVUxMKWANDQo1LiBUMiBl eGVjdXRlZCB0aGUgYEFUT01JQ19DQVNgIGF0IHZtX3RyYWNlLmM6MTY3OSwgcmUtaW5jcmVtZW50 aW5nIGB2bS0+cG9zdHBvbmVkX2pvYl9pbmRleGAuIEl04oCZcyBub3cgZXF1YWwgdG8gYGluZGV4 YCBmcm9tIFQxIGFnYWluLg0NCjYuIFQyIHRoZW4gZXhlY3V0ZXMgdGhlIHNldHMgb24gYHBqb2It PmZ1bmNgIGFuZCBgcGpvYi0+ZGF0YWAgYXQgdm1fdHJhY2UuYzoxNjg3LiBJdCBzZXRzIGAtPmZ1 bmNgIHRvIGBzYW1wbGVfZnJvbV9wb3N0cG9uZWRfam9iYCAoZnJvbSBkZHRyYWNlKSwgYW5kIGAt PmRhdGFgIHRvIDAuDQ0KNy4gVDEgdGhlbiBnb2VzIHRvIGNhbGwgYCgqcGpvYi0+ZnVuYykocGpv Yi0+ZGF0YSlgIGF0IHZtX3RyYWNlLmM6MTgwMg0NCjguIFNpbmNlIHRoZXJlIGlzIG5vIG1lbW9y eSBiYXJyaWVyIGJldHdlZW4gNiAmIDcsIFQxIGlzIGFsbG93ZWQgdG8gc2VlIHRoZSBlZmZlY3Rz IG9mIHRoZSBzZXQgb24gYHBqb2ItPmRhdGFgIGFuZCBub3Qgc2VlIHRoYXQgb2YgYHBqb2ItPmZ1 bmNgLg0NCjksIFQxIHRodXMgY2FsbHMgYGdjX2ZpbmFsaXplX2RlZmVycmVkYCAod2hpY2ggaXQg d2FzIG1lYW50IHRvIGRvKSB3aXRoIGFuIGFyZ3VtZW50IG9mIDAgKHdoaWNoIGl0IHdhcyBub3Qp Lg0NCg0NCiMjIFNvbHV0aW9uDQ0KDQ0KTWFuYWdpbmcgYSB0aHJlYWQtc2FmZSBsaXN0IG9mIHRv by1iaWctdG8tYmUtYXRvbWljIG9iamVjdHMgKGxpa2UgYHJiX3Bvc3Rwb25lZF9qb2JfdGApIGlz IHJlYWxseSB0cmlja3kuIEkgdGhpbmsgaXQgbWlnaHQgYmUgYmVzdCBmb3IgdGhpcyBjb2RlIGlm IHdlIHVzZSBhIGNvbWJpbmF0aW9uIG9mIG1hc2tpbmcgc2lnbmFscyAodG8gcHJldmVudCBtYW5p cHVsYXRpb24gb2YgdGhlIHBvc3Rwb25lZCBqb2IgbGlzdCBvY2N1cnJpbmcgZHVyaW5nIGByYl9w b3N0cG9uZWRfam9iX2ZsdXNoYCwgYW5kIHVzaW5nIGEgc2VtYXBob3JlIHRvIHByb3RlY3QgdGhl IGxpc3QgKHNpbmNlIHNlbWFwaG9yZXMgYXJlIHJlcXVpcmVkIHRvIGJlIGFzeW5jLXNpZ25hbC1z YWZlIG9uIFBPU0lYIHN5c3RlbXMpLiBJJ3ZlIGltcGxlbWVudGVkIHRoaXMgaW4gYSBQUiBoZXJl OiBodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1bGwvODg1Ng0NCg0NCkl0IHNlZW1zIF9z bGlnaHRseV8gc2xvd2VyIHRvIGRvIGl0IHRoaXMgd2F5IC0gc2VtYXBob3JlcyByZXF1aXJlIHN5 c3RlbSBjYWxscyBpbiB0aGUgdW5jb250ZW5kZWQgY2FzZSwgd2hpY2ggaXMgd2h5IHRoZXkncmUg YXN5bmMtc2lnbmFsLXNhZmUgYnV0IGFsc28gbWFrZXMgdGhlbSBtb3JlIGV4cGVuc2l2ZSB0aGFu IHB0aHJlYWQgbXV0ZXhlcywgd2hpY2ggZG9uJ3QsIG9uIG1vc3Qgc3lzdGVtcy4gSSByYW4gbXkg YnJhbmNoIHRocm91Z2ggeWppdCBiZW5jaDoNDQoNDQpXaXRoIG15IHBhdGNoOg0NCg0NCmBgYA0N CmludGVycDogcnVieSAzLjMuMGRldiAoMjAyMy0xMS0wN1QwODoxNDowOVoga3RzYW5ha3RzaWRp cy9wb3N0Li4gMzQyZjMwZjU2NikgW2FybTY0LWRhcndpbjIyXQ0NCnlqaXQ6IHJ1YnkgMy4zLjBk ZXYgKDIwMjMtMTEtMDdUMDg6MTQ6MDlaIGt0c2FuYWt0c2lkaXMvcG9zdC4uIDM0MmYzMGY1NjYp ICtZSklUIFthcm02NC1kYXJ3aW4yMl0NDQoNDQotLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0g IC0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0t LS0tLQ0NCmJlbmNoICAgICAgICAgICBpbnRlcnAgKG1zKSAgc3RkZGV2ICglKSAgeWppdCAobXMp ICBzdGRkZXYgKCUpICB5aml0IDFzdCBpdHIgIGludGVycC95aml0DQ0KYWN0aXZlcmVjb3JkICAg IDMxLjIgICAgICAgICAzLjQgICAgICAgICAxNy4wICAgICAgIDUuNyAgICAgICAgIDEuMjkgICAg ICAgICAgMS44Mw0NCmNodW5reS1wbmcgICAgICA1NDMuNSAgICAgICAgMC41ICAgICAgICAgMzY3 LjAgICAgICAwLjcgICAgICAgICAxLjQwICAgICAgICAgIDEuNDgNDQplcnViaS1yYWlscyAgICAg MTA0NC4yICAgICAgIDAuNiAgICAgICAgIDU2NC43ICAgICAgMS4zICAgICAgICAgMS42OSAgICAg ICAgICAxLjg1DQ0KaGV4YXBkZiAgICAgICAgIDE1MTcuNiAgICAgICAzLjEgICAgICAgICA5MTcu NiAgICAgIDEuMiAgICAgICAgIDEuNDYgICAgICAgICAgMS42NQ0NCmxpcXVpZC1jICAgICAgICAz Ny4xICAgICAgICAgMS4zICAgICAgICAgMjguOSAgICAgICAxLjQgICAgICAgICAwLjg5ICAgICAg ICAgIDEuMjkNDQpsaXF1aWQtY29tcGlsZSAgMzkuMCAgICAgICAgIDEuNCAgICAgICAgIDI5Ljkg ICAgICAgMS42ICAgICAgICAgMC43NiAgICAgICAgICAxLjMwDQ0KbGlxdWlkLXJlbmRlciAgIDg5 LjkgICAgICAgICAxLjggICAgICAgICAzOS42ICAgICAgIDEuNCAgICAgICAgIDEuMzcgICAgICAg ICAgMi4yNw0NCmxvYnN0ZXJzICAgICAgICA1OTguMiAgICAgICAgMS43ICAgICAgICAgNDM1LjQg ICAgICA1LjIgICAgICAgICAwLjYzICAgICAgICAgIDEuMzcNDQptYWlsICAgICAgICAgICAgNzku OCAgICAgICAgIDMuMSAgICAgICAgIDUyLjUgICAgICAgMS4wICAgICAgICAgMC43OSAgICAgICAg ICAxLjUyDQ0KcHN5Y2gtbG9hZCAgICAgIDE0NDEuNSAgICAgICAxLjcgICAgICAgICA4ODUuNCAg ICAgIDAuNSAgICAgICAgIDEuNjAgICAgICAgICAgMS42Mw0NCnJhaWxzYmVuY2ggICAgICAxMDEw LjggICAgICAgMS4wICAgICAgICAgNjA5LjMgICAgICAxLjMgICAgICAgICAxLjI0ICAgICAgICAg IDEuNjYNDQpydWJ5LWxzcCAgICAgICAgNDAuOSAgICAgICAgIDMuNCAgICAgICAgIDI5LjIgICAg ICAgMzAuMCAgICAgICAgMC42NiAgICAgICAgICAxLjQwDQ0Kc2VxdWVsICAgICAgICAgIDM5Ljgg ICAgICAgICAxLjggICAgICAgICAzMy4wICAgICAgIDIuNCAgICAgICAgIDEuMTggICAgICAgICAg MS4yMQ0NCi0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0t ICAtLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tDQ0KYGBgDQ0KDQ0KV2l0aG91 dCB0aGUgcGF0Y2g6DQ0KYGBgDQ0KaW50ZXJwOiBydWJ5IDMuMy4wZGV2ICgyMDIzLTExLTA3VDA3 OjU2OjQzWiBtYXN0ZXIgNWEyNzc5ZDQwZikgW2FybTY0LWRhcndpbjIyXQ0NCnlqaXQ6IHJ1Ynkg My4zLjBkZXYgKDIwMjMtMTEtMDdUMDc6NTY6NDNaIG1hc3RlciA1YTI3NzlkNDBmKSArWUpJVCBb YXJtNjQtZGFyd2luMjJdDQ0KDQ0KLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0t LS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0NDQpi ZW5jaCAgICAgICAgICAgaW50ZXJwIChtcykgIHN0ZGRldiAoJSkgIHlqaXQgKG1zKSAgc3RkZGV2 ICglKSAgeWppdCAxc3QgaXRyICBpbnRlcnAveWppdA0NCmFjdGl2ZXJlY29yZCAgICAzMS4zICAg ICAgICAgMy4zICAgICAgICAgMTYuNyAgICAgICA1LjUgICAgICAgICAxLjM2ICAgICAgICAgIDEu ODgNDQpjaHVua3ktcG5nICAgICAgNTIxLjYgICAgICAgIDAuNiAgICAgICAgIDM0OC44ICAgICAg MC43ICAgICAgICAgMS40MCAgICAgICAgICAxLjUwDQ0KZXJ1YmktcmFpbHMgICAgIDEwMzguOSAg ICAgICAwLjkgICAgICAgICA1NjYuMyAgICAgIDEuMiAgICAgICAgIDEuNzAgICAgICAgICAgMS44 Mw0NCmhleGFwZGYgICAgICAgICAxNTAxLjkgICAgICAgMS4xICAgICAgICAgOTUxLjcgICAgICAz LjkgICAgICAgICAxLjQyICAgICAgICAgIDEuNTgNDQpsaXF1aWQtYyAgICAgICAgMzYuNyAgICAg ICAgIDEuMiAgICAgICAgIDI5LjMgICAgICAgMS43ICAgICAgICAgMC44NiAgICAgICAgICAxLjI1 DQ0KbGlxdWlkLWNvbXBpbGUgIDM4LjggICAgICAgICAxLjEgICAgICAgICAyOS43ICAgICAgIDMu NyAgICAgICAgIDAuNzMgICAgICAgICAgMS4zMQ0NCmxpcXVpZC1yZW5kZXIgICA5Mi4yICAgICAg ICAgMC45ICAgICAgICAgMzguMyAgICAgICAxLjAgICAgICAgICAxLjQ3ICAgICAgICAgIDIuNDAN DQpsb2JzdGVycyAgICAgICAgNTgyLjUgICAgICAgIDIuMCAgICAgICAgIDQyOS44ICAgICAgNS42 ICAgICAgICAgMC41OSAgICAgICAgICAxLjM2DQ0KbWFpbCAgICAgICAgICAgIDc3LjkgICAgICAg ICAxLjMgICAgICAgICA1NC44ICAgICAgIDAuOSAgICAgICAgIDAuNzYgICAgICAgICAgMS40Mg0N CnBzeWNoLWxvYWQgICAgICAxNDE5LjEgICAgICAgMC43ICAgICAgICAgODg3LjcgICAgICAwLjUg ICAgICAgICAxLjYwICAgICAgICAgIDEuNjANDQpyYWlsc2JlbmNoICAgICAgMTAxNy44ICAgICAg IDEuMSAgICAgICAgIDYwOS45ICAgICAgMS4yICAgICAgICAgMS4yNCAgICAgICAgICAxLjY3DQ0K cnVieS1sc3AgICAgICAgIDQxLjAgICAgICAgICAyLjIgICAgICAgICAyOC44ICAgICAgIDI4Ljgg ICAgICAgIDAuNjQgICAgICAgICAgMS40Mw0NCnNlcXVlbCAgICAgICAgICAzNi4wICAgICAgICAg MS41ICAgICAgICAgMzAuNCAgICAgICAxLjggICAgICAgICAxLjExICAgICAgICAgIDEuMTgNDQot LS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0t LS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLQ0NCmBgYA0NCg0NCk1heWJlIHRoaXMgaXMg d2l0aGluIHRoZSBub2lzZSBmbG9vciwgYnV0IEkgdGhvdWdodCBJIHNob3VsZCBicmluZyBpdCB1 cC4NDQoNDQotLS1GaWxlcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KY3Jhc2gu dHh0ICgzLjY5IEtCKQ0NCg0NCg0NCi0tIA0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0N CiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNv cmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNj cmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBy dWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvcG9zdG9y aXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==