[ruby-core:112985] [Ruby master Feature#19541] Proposal: Generate frame unwinding info for YJIT code
From:
"alanwu (Alan Wu) via ruby-core" <ruby-core@...>
Date:
2023-03-23 23:31:13 UTC
List:
ruby-core #112985
SXNzdWUgIzE5NTQxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgYWxhbnd1IChBbGFuIFd1KS4NDQoNDQoN DQpJIHdvdWxkIGV4cGxvcmUgc29sdXRpb25zIHRoYXQgaW52b2x2ZSBnZW5lcmF0aW5nIG5vIGV4 dHJhIG1ldGFkYXRhDQ0KYmVjYXVzZSB0aGF0J3MgaWRlYWwsIGFuZCBtYXkgaGVscCB0aGUgV2lu ZG93cyBwb3J0IGluIHRoZSBmdXR1cmUuDQ0KRm9yIGV4YW1wbGUsIGlmIHdlIHJlbHkgb24gZnJh bWUgcG9pbnRlciB1bndpbmRpbmcsIGl0J2QgYmUgaW5jb3JyZWN0IHdoZW4gdGhlIFBDIGlzIGlu DQ0Kc2VjdGlvbnMgb2YgdGhlIHByb2xvZ3VlL2VwaWxvZ3VlLCBidXQgd291bGQgY292ZXIgbW9z dCBjcmFzaGVzLg0NCldlIGNvdWxkIHJlYWQgYXJvdW5kIHRoZSBQQyB0byBmaWd1cmUgb3V0IGhv dyB0byB1bndpbmQgZnJvbSB0aG9zZSBzZWN0aW9ucw0NCmZvciBmdWxsIHJvYnVzdG5lc3MgbGF0 ZXIuDQ0KDQ0KRm9yIHRoaXMgc2V0dXAsIHdlIGRvIG5lZWQgdG8gY2hhbmdlIGNvZGVnZW4gZm9y IHg2NCB0byBzZXQgdXAgYFJCUGAsIGFzIHlvdSBtZW50aW9uZWQuDQ0KSSBkb24ndCBleHBlY3Qg bm90aWNlYWJsZSBwZXJmIGxvc3MgZWl0aGVyIGFuZCB3aWxsIGJlbmNobWFyayBpdC4gU2V0dGlu ZyB1cCB0aGUNDQpmcmFtZSBwb2ludGVyIG9wZW5zIHVwIGRpZmZlcmVudCBvcHRpb25zIHdoZW4g cHJvZmlsaW5nIHdpdGggTGludXggYHBlcmZgLA0NCnNvIGl0IHNlZW1zIHRvIGJlIHdvcnRoIGl0 IHJlZ2FyZGxlc3MuDQ0KDQ0KVGhlIEdEQiBQeXRob24gdW53aW5kaW5nIGludGVyZmFjZSBkb2Vz IHNlZW0gZW50aWNpbmcuIFRoYW5rcyBmb3IgYnJpbmdpbmcgaXQgdXAuDQ0KTWF5YmUgdGhvdWdo LCBvbiB4NjQgR0RCIGFscmVhZHkgdXNlcyB0aGUgZnJhbWUgcG9pbnRlciBhcyBhIGZhbGxiYWNr IHNvIHdpbGwgd29yaw0NCndpdGhvdXQgZXh0cmEgaGVscD8gU2VlbXMgbGlrZSBBNjQgd2lsbCBu ZWVkIHRoZSBzY3JpcHQsIHRob3VnaC4NDQoNDQpUaGUgcGxhbiB3aXRoIG1hbnVhbGx5IHVud2lu ZGluZyB3aXRoIGBsaWJ1bndpbmRgIHNvdW5kcyB3b3J0aCB0cnlpbmcuIEl0DQ0KZG9lcyBzZWVt IGxpa2UgdGhlIGxpYnJhcnkgaXMgbm90IHJlYWxseSBkZXNpZ25lZCB0byBkaXJlY3RseSBzdXBw b3J0IHRoaXM7DQ0Kc29ycnkgSSBkaWRuJ3QgY2hlY2sgdGhhdCBiZWZvcmUgbXkgcHJldmlvdXMg cmVwbHkuIElmIGl0IGRvZXNuJ3Qgd29yaywgbWF5YmUgYSBzb2x1dGlvbg0NCnRoYXQgcmVnaXN0 ZXJzIGEgc2luZ2xlIGdsb2JhbCBlbnRyeSBvZiBEV0FSRiB1bndpbmQgdGhhdCBhc3N1bWVzIGZy YW1lIHBvaW50ZXIgdmFsaWRpdHkgd2hpY2gNDQpjb3ZlcnMgdGhlIGVudGlyZSBjb2RlIHJlZ2lv biBjb3VsZCB3b3JrPyBUaGF0IHNob3VsZCBtYWtlIGNvbXBsZXhpdHkgYW5kIG1lbW9yeQ0NCmNv bnN1bXB0aW9uIG1vcmUgcGFsYXRhYmxlLg0NCg0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NDQpGZWF0dXJlICMxOTU0MTogUHJvcG9zYWw6IEdlbmVyYXRlIGZyYW1l IHVud2luZGluZyBpbmZvIGZvciBZSklUIGNvZGUNDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9y Zy9pc3N1ZXMvMTk1NDEjY2hhbmdlLTEwMjUxNg0NCg0NCiogQXV0aG9yOiBranRzYW5ha3RzaWRp cyAoS0ogVHNhbmFrdHNpZGlzKQ0NCiogU3RhdHVzOiBBc3NpZ25lZA0NCiogUHJpb3JpdHk6IE5v cm1hbA0NCiogQXNzaWduZWU6IHlqaXQNDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQ0KIyMgV2hhdCBpcyBiZWluZyBwcm9wc2VkPw0NCg0NCkN1cnJlbnRseSwgd2hl biBSdWJ5IGNyYXNoZXMgd2l0aCB5aml0IGdlbmVyYXRlZCBjb2RlIG9uIHRoZSBzdGFjaywgYHJi X3ByaW50X2JhY2t0cmFjZSgpYCBpcyB1bmFibGUgdG8gYWN0dWFsbHkgc2hvdyBhbnkgZnJhbWVz IHVuZGVybmVhdGggdGhlIHlqaXQgY29kZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzZW5kIFNJR1NF R1YgdG8gYSBSdWJ5IHByb2Nlc3MgcnVubmluZyB5aml0LCB0aGlzIGlzIHdoYXQgeW91IHNlZToN DQoNDQpgYGANDQovcnVieS9taW5pcnVieShyYl9wcmludF9iYWNrdHJhY2UrMHhjKSBbMHhhYWFh ZDAyNzY4ODRdIC9ydWJ5L3ZtX2R1bXAuYzo3ODUNDQovcnVieS9taW5pcnVieShyYl92bV9idWdy ZXBvcnQpIC9ydWJ5L3ZtX2R1bXAuYzoxMDkzDQ0KL3J1YnkvbWluaXJ1YnkocmJfYnVnX2Zvcl9m YXRhbF9zaWduYWwrMHhkMCkgWzB4YWFhYWQwMDc1NTgwXSAvcnVieS9lcnJvci5jOjgxMw0NCi9y dWJ5L21pbmlydWJ5KHNpZ3NlZ3YrMHg1YykgWzB4YWFhYWQwMWJlZGFjXSAvcnVieS9zaWduYWwu Yzo5MTkNDQpsaW51eC12ZHNvLnNvLjEoX19rZXJuZWxfcnRfc2lncmV0dXJuKzB4MCkgWzB4ZmZm ZjkxYTNlOGJjXQ0NCi9ydWJ5L21pbmlydWJ5KG1hcDwodXNpemUsIHlqaXQ6OmJhY2tlbmQ6Omly OjpJbnNuKSwgKHVzaXplLCB5aml0OjpiYWNrZW5kOjppcjo6SW5zbiksIHlqaXQ6OmJhY2tlbmQ6 OmlyOjp7aW1wbCMxN306Om5leHRfbWFwcGVkOjp7Y2xvc3VyZV9lbnYjMH0+KzB4OGMpIFsweGFh YWFkMDNiOGIwMF0gL3J1c3RjLzg5N2UzNzU1M2JiYThiNDI3NTFjNjc2NTg5Njc4ODlkMTFlY2Qx MjAvbGlicmFyeS9jb3JlL3NyYy9vcHRpb24ucnM6OTI5DQ0KL3J1YnkvbWluaXJ1YnkobmV4dF9t YXBwZWQrMHgzYykgWzB4YWFhYWQwMjkxZGMwXSBzcmMvYmFja2VuZC9pci5yczoxMjI1DQ0KL3J1 YnkvbWluaXJ1YnkoYXJtNjRfc3BsaXQrMHgxMTQpIFsweGFhYWFkMDI4Nzc0NF0gc3JjL2JhY2tl bmQvYXJtNjQvbW9kLnJzOjM1OQ0NCi9ydWJ5L21pbmlydWJ5KGNvbXBpbGVfd2l0aF9yZWdzKzB4 ODApIFsweGFhYWFkMDI4YmY4NF0gc3JjL2JhY2tlbmQvYXJtNjQvbW9kLnJzOjExMDYNDQovcnVi eS9taW5pcnVieShjb21waWxlKzB4YzQpIFsweGFhYWFkMDI5MWFlMF0gc3JjL2JhY2tlbmQvaXIu cnM6MTE1OA0NCi9ydWJ5L21pbmlydWJ5KGdlbl9zaW5nbGVfYmxvY2srMHhlNDQpIFsweGFhYWFk MDJiMWY4OF0gc3JjL2NvZGVnZW4ucnM6ODU0DQ0KL3J1YnkvbWluaXJ1YnkoZ2VuX2Jsb2NrX3Nl cmllc19ib2R5KzB4OWMpIFsweGFhYWFkMDNiMDI1MF0gc3JjL2NvcmUucnM6MTY5OA0NCi9ydWJ5 L21pbmlydWJ5KGdlbl9ibG9ja19zZXJpZXMrMHg1MCkgWzB4YWFhYWQwM2IwMTAwXSBzcmMvY29y ZS5yczoxNjc2DQ0KL3J1YnkvbWluaXJ1YnkoYnJhbmNoX3N0dWJfaGl0X2JvZHkrMHg4MGMpIFsw eGFhYWFkMDNiMWY2OF0gc3JjL2NvcmUucnM6MjAyMQ0NCi9ydWJ5L21pbmlydWJ5KHtjbG9zdXJl IzB9KzB4MjgpIFsweGFhYWFkMDJlYjg2Y10gc3JjL2NvcmUucnM6MTkyNA0NCi9ydWJ5L21pbmly dWJ5KGRvX2NhbGw8eWppdDo6Y29yZTo6YnJhbmNoX3N0dWJfaGl0Ojp7Y2xvc3VyZV9lbnYjMH0s ICpjb25zdCB1OD4rMHg5OCkgWzB4YWFhYWQwMzViYTNjXSAvcnVzdGMvODk3ZTM3NTUzYmJhOGI0 Mjc1MWM2NzY1ODk2Nzg4OWQxMWVjZDEyMC9saWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzOjQ5 Mg0NClsweGFhYWFkMDM1YzliNF0NDQpgYGANDQoNDQoobi5iLiAtIEkgY29tcGlsZWQgUnVieSB3 aXRoIGAtZmFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIOKAk3JkeW5hbWljIOKAk2dgIGluIGNm bGFncyB0byBtYWtlIHN1cmUgZ2NjIGdlbmVyYXRlcyBhcHByb3ByaWF0ZSB1bndpbmQgaW5mbyAm IGtlZXBzIHRoZSBzeW1ib2wgdGFibGVzKS4NDQoNDQpMaWtld2lzZSwgaWYgeW91IGF0dGFjaCBn ZGIgdG8gYSBSdWJ5IHByb2Nlc3Mgd2l0aCB5aml0IGVuYWJsZWQsIGdkYiBjYW4ndCBzaG93IHRo cmVhZCBiYWNrdHJhY2VzIHRocm91Z2ggeWppdC1nZW5lcmF0ZWQgY29kZSBlaXRoZXIuDQ0KDQ0K TXkgcHJvcG9zYWwgaXMgdGhhdCBZSklUIGdlbmVyYXRlIHN1ZmZpY2llbnQgdW53aW5kaW5nIGFu ZCBkZWJ1ZyBpbmZvcm1hdGlvbiBvbiBhbGwgcGxhdGZvcm1zIHRvIGFsbG93IGJvdGggYHJiX3By aW50X2JhY2t0cmFjZSgpYCBhbmQgdGhlIHBsYXRmb3JtJ3MgZGVidWdnZXIgKGdkYi9sbGRiL1dp bkRiZykgdG8gc2hvdzoNDQoNDQoqIEZ1bGwgc3RhY2sgdHJhY2VzIGFsbCB0aGUgd2F5IGJhY2sg dG8gYG1haW5gLiBUaGF0IGlzLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc2VlIGZyYW1lcyBf dW5kZXJuZWF0aF8gYFsweGFhYWFkMDM1YzliNF1gIGZyb20gdGhlIGJhY2t0cmFjZSBhYm92ZS4N DQoqIE5hbWVzIGZvciB0aGUgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIHlqaXQgYmxvY2tzIChlLmcu IGluc3RlYWQgb2YgYFsweGFhYWFkMDM1YzliNF1gLCB3ZSBzaG91bGQgc2VlIHNvbWV0aGluZyBs aWtlIGB5aml0JCRuYW1lX29mX3J1YnlfbWV0aG9kYCwgd2hlcmUgYG5hbWVfb2ZfcnVieV9tZXRo b2RgIGlzIHRoZSBgbGFiZWxgIGZvciB0aGUgaXNlcSB0aGlzIGlzIEpJVCdkIGNvZGUgZm9yKS4N DQoNDQojIyBNb3RpdmF0aW9uDQ0KDQ0KSSBoYXZlIGEgZmV3IG1vdGl2YXRpb25zIGZvciB3YW50 aW5nIHRoaXMuIEZpcnN0bHksIEkgZmVlbCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW5kZXBlbmRl bnRseSB1c2VmdWwuIFdoZW4gUnVieSBjcmFzaGVzLCB0aGUgbW9yZSBpbmZvcm1hdGlvbiB3ZSBj YW4gZ2V0LCB0aGUgbW9yZSBsaWtlbHkgd2UgYXJlIHRvIGZpbmQgdGhlIHJvb3QgY2F1c2UuIExp a2V3aXNlLCB0aGUgc2FtZSBwcmluY2lwbGUgYXBwbGllcyB0byBkZWJ1Z2dpbmcgd2l0aCBnZGIg LSB5b3UgY2FuIGdldCBhIGZ1bGxlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIHByb2Nlc3Mg aXMgZG9pbmcgaWYgeW91IHNlZSB0aGUgd2hvbGUgc3RhY2suDQ0KDQ0KSSBoYXZlIG9mdGVuIGZv dW5kIGF0dGFjaGluZyBnZGIgdG8gdGhlIFJ1YnkgaW50ZXJwcmV0ZXIgaGVscHMgaW4gdW5kZXJz dGFuZGluZyBwcm9ibGVtcyBpbiBSdWJ5IGNvZGUgb3IgQyBleHRlbnNpb25zIGFuZCBpcyBzb21l dGhpbmcgSSBkbyByZWxhdGl2ZWx5IGZyZXF1ZW50bHk7IHlqaXQgYnJlYWtpbmcgdGhhdCB3aWxs IGRlZmluaXRlbHkgYmUgaW5jb252ZW5pZW50IGZvciBtZSENDQoNDQojIyBJbXBsZW1lbnRhdGlv bg0NCg0NCkkgaGF2ZSBhIGRyYWZ0IGltcGxlbWVudGF0aW9uIGhlcmUgb24gaG93IEknZCBpbXBs ZW1lbnQgdGhpczogaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzc1NjcuIEl0J3Mg Y3VycmVudGx5IG1pc3NpbmcgdGVzdHMgJiBwbGF0Zm9ybSBzdXBwb3J0IChpdCBvbmx5IHdvcmtz IG9uIExpbnV4IGFhcmNoNjQpLiBBbHNvLCBpdCBpbXBsZW1lbnRzIHVud2luZCBpbmZvIGdlbmVy YXRpb24sIHNvIHVud2luZGluZyBjYW4gd29yayBfdGhyb3VnaF8geWppdCBjb2RlLCBidXQgaXQg ZG9lcyBub3QgY3VycmVudGx5IGVtaXQgc3ltYm9scyB0byBnaXZlIF9uYW1lc18gdG8gdGhvc2Ug eWppdCBmcmFtZXMuDQ0KDQ0KTXkgUFIgY29udGFpbnMgYSBkb2N1bWVudCB3aGljaCBleHBsYWlu cyBob3cgdGhlIExpbnV4IGludGVyZmFjZXMgZm9yIHJlZ2lzdGVyaW5nIHVud2luZCBpbmZvIGZv ciBKSVQnZCBjb2RlIHdvcmssIHNvIEkgd29uJ3QgZHVwbGljYXRlIHRoYXQgaW5mb3JtYXRpb24g aGVyZS4NDQoNDQpUaGUgYmlnZ2VzdCBpbXBsZW1lbnRhdGlvbiBxdWVzdGlvbiBJIGhhZCBpcyBh cm91bmQgdGhlIHVzZSBvZiBSdXN0IGNyYXRlcy4gQ3VycmVudGx5LCBJIHByb3RvdHlwZWQgbXkg aW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGdpbWxpICYgb2JqZWN0IGNyYXRlcywgZm9yIGdlbmVy YXRpbmcgRFdBUkYgaW5mbyBhbmQgRUxGIGJpbmFyaWVzLiBIb3dldmVyLCB0aGUgeWppdCBidWls ZCBkb2VzIHB1cnBvc2VmdWxseSBkb2VzIG5vdCB1c2UgY2FyZ28gJiBleHRlcm5hbCBjcmF0ZXMg Zm9yIHJlbGVhc2UgYnVpbGRzLiBUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IHdheXMgd2UgY291 bGQgZ28gaGVyZToNDQoNDQoqIERvbid0IHVzZSB0aGUgZ2ltbGkgJiBvYmplY3QgY3JhdGVzOyBp bnN0ZWFkLCByZS1pbXBsZW1lbnQgYWxsIGRlYnVnIGluZm8gJiBvYmplY3QgZmlsZSBnZW5lcmF0 aW9uIGNvZGUgaW4geWppdC4NDQoqIERvbid0IHVzZSB0aGUgY3JhdGVzOyBpbnN0ZWFkLCBsaW5r IGFnYWludCBDIGxpYnJhcmllcyB0byBwcm92aWRlIHRoaXMgZnVuY3Rpb25hbGl0eSAmIGNhbGwg dGhlbSBmcm9tIFJ1c3QgKHBlcmhhcHMgc29tZSBjb21iaW5hdGlvbiBvZiBsaWJlbGYsIGxpYmR3 LCBsaWJiZmQsIG9yIGxsdm0gbWlnaHQgZG8gd2hhdCB3ZSBuZWVkKQ0NCiogVXNlIGNhcmdvIGFm dGVyIGFsbCBmb3IgdGhlIHJlbGVhc2UgYnVpbGQgJiBkb3dubG9hZCB0aGUgY3JhdGVzIGF0IGJ1 aWxkLXRpbWUNDQoqIFVzZSBjYXJnbyBmb3IgdGhlIHJlbGVhc2UgYnVpbGQsIGJ1dCB2ZW5kb3Ig ZXZlcnl0aGluZywgc28gdGhlIGJ1aWxkIGRvZXNuJ3QgbmVlZCB0byBkb3dubG9hZCBhbnl0aGlu Zw0NCiogT25seSBtYWtlIHVud2luZCBpbmZvIGdlbmVyYXRpb24gYXZhaWxhYmxlIGluIGRldiBt b2RlIHdoZXJlIGNhcmdvIGlzIHVzZWQsIGFuZCBzbyBtYXJrIHRoZSBnaW1saS9vYmplY3QgZGVw ZW5kZW5jaWVzIGFzIG9wdGlvbmFsIGluIENhcmdvLnRvbWwuDQ0KDQ0KV2UnZCBuZWVkIHRvIGRl Y2lkZSBvbiBvbmUgb2YgdGhlc2UgYXBwcm9hY2hlcyBmb3IgdGhpcyBwcm9wb3NhbCB0byB3b3Jr LiBJIGRvbid0IHJlYWxseSBoYXZlIGEgc3Ryb25nIHNlbnNlIG9mIHRoZSBwcm9zL2NvbnMgb2Yg ZWFjaC4NDQoNDQooU2lkZSBub3RlIC0gbXkgUFIgYWN0dWFsbHkgZGVwZW5kcyBvbiBhIF9mb3Jr XyBvZiBnaW1saSAtIEkndmUgYmVlbiBkaXNjdXNzaW5nIGFkZGluZyB0aGUgbmVlZGVkIGludGVy ZmFjZXMgdXBzdHJlYW0gaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL2dpbWxpLXJzL2dpbWxpL2lz c3Vlcy82NDgpLg0NCg0NCiMjIEJlbmNobWFya3MNDQoNDQpJIHJhbiB0aGUgeWl0LWJlbmNoIHN1 aXRlIG9uIG15IGJyYW5jaCBhbmQgY29tcGFyZWQgaXQgdG8gUnVieSBtYXN0ZXI6DQ0KDQ0KKiBN eSBicmFuY2g6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0tKVHNhbmFrdHNpZGlzLzU3NDFhOWY2 NGU1Y2Q3NWNkZjVmZWRkODQ2MDkxYTRmDQ0KKiBSdWJ5IG1hc3RlcjogaHR0cHM6Ly9naXN0Lmdp dGh1Yi5jb20vS0pUc2FuYWt0c2lkaXMvNTkyZDNlYmNmOThmNjc0NWRmYTNlZmJkMzBhMjVhY2YN DQoNDQpUaGlzIGlzIGEgKHZlcnkgc2ltcGxlKSBjb21wYXJpc29uOg0NCg0NCmBgYA0NCi0tLS0t LS0tLS0tLS0tIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tDQ0KYmVu Y2ggICAgICAgICAgeWppdCAobXMpICAgIGJyYW5jaCAobXMpICBicmFuY2gveWppdCAoJSkNDQph Y3RpdmVyZWNvcmQgICA5Ny41ICAgICAgICAgOTguNSAgICAgICAgIDEwMS4wMyUNDQpoZXhhcGRm ICAgICAgICAyNDE1LjMgICAgICAgMjQ1OC4yICAgICAgIDEwMS43OCUNDQpsaXF1aWQtYyAgICAg ICA2MS45ICAgICAgICAgNjMuMSAgICAgICAgIDEwMS45NCUNDQpsaXF1aWQtcmVuZGVyICAxMzUu MyAgICAgICAgMTM1LjAgICAgICAgIDk5Ljc4JQ0NCm1haWwgICAgICAgICAgIDEwNC42ICAgICAg ICAxMDUuNSAgICAgICAgMTAwLjg2JQ0NCnBzeWNoLWxvYWQgICAgIDE4ODcuMSAgICAgICAxOTIy LjAgICAgICAgMTAxLjg1JQ0NCnJhaWxzYmVuY2ggICAgIDE1NDQuNCAgICAgICAxNTU2LjAgICAg ICAgMTAwLjc1JQ0NCnJ1YnktbHNwICAgICAgIDg4LjQgICAgICAgICA4OS41ICAgICAgICAgMTAx LjI0JQ0NCnNlcXVlbCAgICAgICAgIDE0Ny41ICAgICAgICAxNTEuMSAgICAgICAgMTAyLjQ0JQ0N CmJpbmFyeXRyZWVzICAgIDMwMyAgICAgICAgICAzMDUuNiAgICAgICAgMTAwLjg2JQ0NCmNodW5r eV9wbmcgICAgIDEwNzUuOCAgICAgICAxMDc5LjQgICAgICAgMTAwLjMzJQ0NCmVydWJpICAgICAg ICAgIDM5Mi45ICAgICAgICAzOTIuMyAgICAgICAgOTkuODUlDQ0KZXJ1YmlfcmFpbHMgICAgMTQu NyAgICAgICAgIDE0LjcgICAgICAgICAxMDAuMDAlDQ0KZXRhbm5pICAgICAgICAgNzkyLjMgICAg ICAgIDc5MS40ICAgICAgICA5OS44OSUNDQpmYW5ua3VjaHJlZHV4ICAzODE1LjkgICAgICAgMzgx My42ICAgICAgIDk5Ljk0JQ0NCmxlZSAgICAgICAgICAgIDEwMzAuMiAgICAgICAxMDM5LjIgICAg ICAgMTAwLjg3JQ0NCm5ib2R5ICAgICAgICAgIDQ5LjIgICAgICAgICA0OS4zICAgICAgICAgMTAw LjIwJQ0NCm9wdGNhcnJvdCAgICAgIDQxNDIgICAgICAgICA0MTQzLjMgICAgICAgMTAwLjAzJQ0N CnJ1YnktanNvbiAgICAgIDI4NjAuNyAgICAgICAyODc0LjAgICAgICAgMTAwLjQ2JQ0NCnJ1Ynlr b24gICAgICAgIDc5MDYuNiAgICAgICA3OTA0LjIgICAgICAgOTkuOTclDQ0KMzBrX2lmZWxzZSAg ICAgMzQ4LjcgICAgICAgIDM0NS40ICAgICAgICA5OS4wNSUNDQozMGtfbWV0aG9kcyAgICA4Mjgu NiAgICAgICAgODMxLjggICAgICAgIDEwMC4zOSUNDQpjZnVuY19pdHNlbGYgICAyOC44ICAgICAg ICAgMjguOSAgICAgICAgIDEwMC4zNSUNDQpmaWIgICAgICAgICAgICAzNC40ICAgICAgICAgMzQu NSAgICAgICAgIDEwMC4yOSUNDQpnZXRpdmFyICAgICAgICAxMTUuNSAgICAgICAgMTA5LjcgICAg ICAgIDk0Ljk4JQ0NCmtleXdvcmRfYXJncyAgIDM3LjcgICAgICAgICAzOC4wICAgICAgICAgMTAw LjgwJQ0NCnJlc3BvbmRfdG8gICAgIDI2ICAgICAgICAgICAyNi4xICAgICAgICAgMTAwLjM4JQ0N CnNldGl2YXIgICAgICAgIDMzLjggICAgICAgICAzMy41ICAgICAgICAgOTkuMTElDQ0Kc2V0aXZh cl9vYmplY3QgMjA4LjcgICAgICAgIDE5NC4zICAgICAgICA5My4xMCUNDQpzdHJfY29uY2F0ICAg ICA1Mi42ICAgICAgICAgNTIuMiAgICAgICAgIDk5LjI0JQ0NCnRocm93ICAgICAgICAgIDIzLjgg ICAgICAgICAyNC4xICAgICAgICAgMTAxLjI2JQ0NCi0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0t LSAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tDQ0KYGBgDQ0KDQ0KSXQgc2VlbXMgbGlrZSB0 aGUgcGVyZm9ybWFuY2UgaW1wYWN0IG9mIGdlbmVyYXRpbmcgYW5kIHJlZ2lzdGVyaW5nIHRoZSBk ZWJ1ZyBpbmZvIGlzIG1hcmdpbmFsLg0NCg0NCg0NCg0NCi0tIA0NCmh0dHBzOi8vYnVncy5ydWJ5 LWxhbmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5LWxhbmcub3Jn CiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5 LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFuZy5vcmcvbWFp bG1hbjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==