[#119637] Behavior of raising from rescue blocks when multiple rescue blocks exist — Rodrigo Rosenfeld Rosas via ruby-core <ruby-core@...>
Hello, I couldn't find any documentation about the subject, so I thought
3 messages
2024/10/29
[ruby-core:119412] [Ruby master Feature#17326] Add Kernel#must! to the standard library
From:
retro via ruby-core <ruby-core@...>
Date:
2024-10-02 23:20:57 UTC
List:
ruby-core #119412
SXNzdWUgIzE3MzI2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgcmV0cm8gKEpvc2VmIMWgaW3DoW5layku DQoNCg0KTG9va3MgbGlrZSBQUiB3YXMgb3BlbmVkIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5 L3J1YnkvcHVsbC8xMTc3Mi4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KRmVhdHVyZSAjMTczMjY6IEFkZCBLZXJuZWwjbXVzdCEgdG8gdGhlIHN0YW5kYXJkIGxp YnJhcnkNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNzMyNiNjaGFuZ2UtMTEw MDI2DQoNCiogQXV0aG9yOiBqZXogKEpha2UgWmltbWVybWFuKQ0KKiBTdGF0dXM6IE9wZW4NCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQWJzdHJhY3QNCg0KV2Ug c2hvdWxkIGFkZCBhIG1ldGhvZCBgS2VybmVsI211c3QhYCAobmFtZSBUQkQpIHdoaWNoIHJhaXNl cyBpZiBgc2VsZmAgaXMgYG5pbGAgYW5kIHJldHVybnMgYHNlbGZgIG90aGVyd2lzZS4NCg0KDQoj IEJhY2tncm91bmQNCg0KUnVieSAzIGludHJvZHVjZXMgdHlwZSBhbm5vdGF0aW9ucyBmb3IgdGhl IHN0YW5kYXJkIGxpYnJhcnkuDQpUeXBlIGNoZWNrZXJzIGNvbnN1bWUgdGhlc2UgYW5ub3RhdGlv bnMsIGFuZCByZXBvcnQgZXJyb3JzIGZvciB0eXBlIG1pc21hdGNoZXMuDQpPbmUgb2YgdGhlIG1v c3QgY29tbW9uIGFuZCBtb3N0IHZhbHVhYmxlIHR5cGUgZXJyb3JzIGlzIHdoZXRoZXIgYG5pbGAg aXMgYWxsb3dlZCBhcyBhbiBhcmd1bWVudCBvciByZXR1cm4gdmFsdWUuDQpTb3JiZXQncyB0eXBl IHN5c3RlbSB0cmFja3MgdGhpcywgYW5kIFJCUyBmaWxlcyBoYXZlIHN5bnRheCBmb3IgYW5ub3Rh dGluZyB3aGV0aGVyIGBuaWxgIGlzIGFsbG93ZWQgb3Igbm90Lg0KDQpTaW5jZSBTb3JiZXQgY2hl Y2tzIHByb3BlciB1c2FnZSBvZiBgbmlsYCwgaXQgcmVxdWlyZXMgY29kZSB0aGF0IGxvb2tzIGxp a2UgdGhpczoNCg0KYGBgcnVieQ0KaWYgdGhpbmcubmlsPw0KICByYWlzZSAiVGhlIHRoaW5nIHdh cyBuaWwiDQplbmQNCg0KdGhpbmcuZG9fc29tZXRoaW5nDQpgYGANCg0KVGhpcyBpcyBnb29kIGJl Y2F1c2UgaXQgZm9yY2VzIHRoZSBwcm9ncmFtbWVyIHRvIGFja25vd2xlZGdlIHRoYXQgdGhlIHRo aW5nIG1pZ2h0IGJlIGBuaWxgLCBhbmQgZGVjbGFyZQ0KdGhhdCB0aGV5J2QgcmF0aGVyIHJhaXNl IGFuIGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UgdGhhbiBoYW5kbGUgdGhlIGBuaWxgIChvZiBjb3Vy c2UsIHRoZXJlIGFyZSBtYW55IG90aGVyDQp0aW1lcyB3aGVyZSBgbmlsYCBpcyBib3RoIHBvc3Np YmxlIGFuZCB2YWxpZCwgd2hpY2ggaXMgd2h5IFNvcmJldCBmb3JjZXMgYXQgbGVhc3QgY29uc2lk ZXJpbmcgaW4gYWxsIGNhc2VzKS4NCg0KSXQgaXMgYW5ub3lpbmcgYW5kIHJlcGV0aXRpdmUgdG8g aGF2ZSB0byB3cml0ZSB0aGVzZSBgaWYgLm5pbD9gIGNoZWNrcyBldmVyeXdoZXJlIHRvIGlnbm9y ZSB0aGUgdHlwZSBlcnJvciwNCnNvIFNvcmJldCBwcm92aWRlcyBpdCBhcyBhIGxpYnJhcnkgZnVu Y3Rpb24sIGNhbGxlZCBgVC5tdXN0YDoNCg0KYGBgcnVieQ0KVC5tdXN0KHRoaW5nKS5kb19zb21l dGhpbmcNCmBgYA0KDQpTb3JiZXQga25vd3MgdGhhdCB0aGUgY2FsbCB0byBgVC5tdXN0YCByYWlz ZXMgaWYgYHRoaW5nYCBpcyBgbmlsYC4NClRvIG1ha2UgdGhpcyB2ZXJ5IGNvbmNyZXRlLCBoZXJl J3MgYSBTb3JiZXQgcGxheWdyb3VuZCB3aGVyZSB5b3UgY2FuIHNlZSB0aGlzIGluIGFjdGlvbjoN Cg0KW+KGkiBWaWV3IG9uIHNvcmJldC5ydW5dKGh0dHBzOi8vc29yYmV0LnJ1bi8jJTIzJTIwdHlw ZWQlM0ElMjB0cnVlJTBBZXh0ZW5kJTIwVCUzQSUzQVNpZyUwQSUwQWNsYXNzJTIwVGhpbmclMEEl MjAlMjBkZWYlMjBkb19zb21ldGhpbmclM0IlMjBlbmQlMEFlbmQlMEElMEFzaWclMjAlN0JwYXJh bXModGhpbmclM0ElMjBULm5pbGFibGUoVGhpbmcpKS52b2lkJTdEJTBBZGVmJTIwZXhhbXBsZTEo dGhpbmcpJTBBJTIwJTIwJTIzJTIwZXJyb3IlMkMlMjBtaWdodCUyMGJlJTIwbmlsJTNBJTBBJTIw JTIwdGhpbmcuZG9fc29tZXRoaW5nJTBBZW5kJTBBJTBBc2lnJTIwJTdCcGFyYW1zKHRoaW5nJTNB JTIwVC5uaWxhYmxlKFRoaW5nKSkudm9pZCU3RCUwQWRlZiUyMGV4YW1wbGUyKHRoaW5nKSUwQSUy MCUyMGlmJTIwdGhpbmcubmlsJTNGJTBBJTIwJTIwJTIwJTIwcmFpc2UlMjAlMjJUaGUlMjB0aGlu ZyUyMHdhcyUyMG5pbCUyMiUwQSUyMCUyMGVuZCUwQSUwQSUyMCUyMCUyMyUyMG5vJTIwZXJyb3Il MkMlMjBiZWNhdXNlJTIwaXQncyUyMGFmdGVyJTIwdGhlJTIwJTYwaWYlMjAubmlsJTNGJTYwJTIw Y2hlY2slM0ElMEElMjAlMjB0aGluZy5kb19zb21ldGhpbmclMEFlbmQlMEElMEFzaWclMjAlN0Jw YXJhbXModGhpbmclM0ElMjBULm5pbGFibGUoVGhpbmcpKS52b2lkJTdEJTBBZGVmJTIwZXhhbXBs ZTModGhpbmcpJTBBJTIwJTIwJTIzJTIwbm8lMjBlcnJvciUyQyUyMGJlY2F1c2UlMjBpdCdzJTIw YWZ0ZXIlMjB0aGUlMjAlNjBpZiUyMC5uaWwlM0YlNjAlMjBjaGVjayUzQSUwQSUyMCUyMFQubXVz dCh0aGluZykuZG9fc29tZXRoaW5nJTBBZW5kKQ0KDQpZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBg VC5tdXN0YCBpbiB0aGUgW1NvcmJldCBkb2N1bWVudGF0aW9uXShodHRwczovL3NvcmJldC5vcmcv ZG9jcy90eXBlLWFzc2VydGlvbnMjdG11c3QpLg0KDQoNCiMgUHJvYmxlbQ0KDQpXaGlsZSBgVC5t dXN0YCB3b3JrcywgaXQgaXMgbm90IGlkZWFsIGZvciBhIGNvdXBsZSByZWFzb25zOg0KDQoxLiAg SXQgbGVhZHMgdG8gYSB3ZWlyZCBvdXR3YXJkIHNwaXJhbCBvZiBmbG93IGNvbnRyb2wsIHdoaWNo IGRpc3J1cHRzIG1ldGhvZCBjaGFpbnM6DQoNCiAgICBgYGBydWJ5DQogICAgIyDilIzilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCiAgICAjIOKU giAgICAgIOKUjOKUgOKUgOKUgOKUgOKUkCAgICAg4pSCDQogICAgIyDilrwgICAgICDilrwgICAg 4pSCICAgICDilIINCiAgICBULm11c3QoVC5tdXN0KHRhc2spLm1haWxpbmdfcGFyYW1zKS5mZXRj aCgndGVtcGxhdGVfY29udGV4dCcpDQogICAgIyDilIIgICAgICDilIIgICAgICAgICAg4payICAg ICAgICAgICAgICAg4payDQogICAgIyDilIIgICAgICDilJTilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilJggICAgICAgICAgICAgICDilIINCiAgICAjIOKUlOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmA0KICAgIGBgYA0KDQogICAgY29tcGFyZSB0aGF0 IGNvbnRyb2wgZmxvdyB3aXRoIHRoaXM6DQoNCiAgICBgYGBydWJ5DQogICAgIyDilIzilIDilIDi lIDilIDilJDilIzilIDilIDilIDilIDilJDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilJDilIzilIDilIDilIDilIDilJANCiAgICAjIOKUgiAgICDilrzilIIgICAg 4pa84pSCICAgICAgICAgICAgIOKWvOKUgiAgICDilrwNCiAgICAgIHRhc2subXVzdCEubWFpbGlu Z19wYXJhbXMubXVzdCEuZmV0Y2goJ3RlbXBsYXRlX2NvbnRleHQnKQ0KICAgIGBgYA0KDQoyLiAg SXQgaXMgbm90IGEgbWV0aG9kLCBzbyB5b3UgY2FuJ3QgYG1hcGAgaXQgb3ZlciBhIGxpc3QgdXNp bmcgYFN5bWJvbCN0b19wcm9jYC4gSW5zdGVhZCwgeW91IGhhdmUgdG8gZXhwYW5kIHRoZSBibG9j azoNCg0KICAgIGBgYHJ1YnkNCiAgICBhcnJheV9vZl9pbnRlZ2VycyA9IGFycmF5X29mX25pbGFi bGVfaW50ZWdlcnMubWFwIHt8eHwgVC5tdXN0KHgpIH0NCiAgICBgYGANCg0KICAgIENvbXBhcmUg dGhhdCB3aXRoIHRoaXM6DQoNCiAgICBgYGBydWJ5DQogICAgYXJyYXlfb2ZfaW50ZWdlcnMgPSBh cnJheV9vZl9uaWxhYmxlX2ludGVnZXJzLm1hcCgmOm11c3QhKQ0KICAgIGBgYA0KDQozLiAgSXQg aXMgaW4gYSBTb3JiZXQtc3BlY2lmaWMgZ2VtLiBXZSBkbyBub3QgaW50ZW5kIGZvciBTb3JiZXQg dG8gYmUgdGhlIG9ubHkgdHlwZSBjaGVja2VyLg0KICAgIEl0IHdvdWxkIGJlIG5pY2UgdG8gaGF2 ZSBzdWNoIGEgbWV0aG9kIGluIHRoZSBSdWJ5IHN0YW5kYXJkIGxpYnJhcnkgc28gdGhhdCBpdCBj YW4gYmUgc2hhcmVkIGJ5IGFsbCB0eXBlIGNoZWNrZXJzLg0KDQo0LiAgVGhpcyBtZXRob2QgY2Fu IG1ha2UgUnVieSBjb2RlYmFzZXMgdGhhdCAqKmRvbid0KiogdXNlIHR5cGUgY2hlY2tlcnMgbW9y ZSByb2J1c3QhDQogICAgYEtlcm5lbCNtdXN0IWAgY291bGQgYmUgYW4gZWFzeSB3YXkgdG8gYXNz ZXJ0IGludmFyaWFudHMgZWFybHkuDQogICAgRmFpbGluZyBlYXJseSBtYWtlcyBpdCBtb3JlIGxp a2VseSB0aGF0IGEgdGVzdCB3aWxsIGZhaWwsIHJhdGhlciB0aGFuIGdldHRpbmcgYFR5cGVFcnJv cmAncyBhbmQgYE5vTWV0aG9kRXJyb3JgJ3MgaW4gcHJvZHVjdGlvbi4NCiAgICBUaGlzIG1ha2Vz IGFsbCBSdWJ5IGNvZGUgYmV0dGVyLCBub3QganVzdCB0aGUgUnVieSBjb2RlIHVzaW5nIHR5cGVz Lg0KDQoNCiMgUHJvcG9zYWwNCg0KV2Ugc2hvdWxkIGV4dGVuZCB0aGUgUnVieSBzdGFuZGFyZCBs aWJyYXJ5IHdpdGggc29tZXRoaW5nIGxpa2UgdGhpczo6DQoNCmBgYHJ1YnkNCm1vZHVsZSBLZXJu ZWwNCiAgZGVmIG11c3QhOyBzZWxmOyBlbmQNCmVuZA0KDQpjbGFzcyBOaWxDbGFzcw0KICBkZWYg bXVzdCENCiAgICByYWlzZSBUeXBlRXJyb3IubmV3KCJuaWwubXVzdCEiKQ0KICBlbmQNCmVuZA0K YGBgDQoNClRoZXNlIG1ldGhvZHMgd291bGQgZ2V0IHR5cGUgYW5ub3RhdGlvbnMgdGhhdCBsb29r IGxpa2UgdGhpczoNCih1c2luZyBTb3JiZXQncyBSQkkgc3ludGF4LCBiZWNhdXNlIEkgZG9uJ3Qg a25vdyBSQlMgd2VsbCB5ZXQpDQoNCmBgYHJ1YnkNCm1vZHVsZSBLZXJuZWwNCiAgc2lnIHtyZXR1 cm5zKFQuc2VsZl90eXBlKX0NCiAgZGVmIG11c3QhOyBlbmQNCmVuZA0KDQpjbGFzcyBOaWxDbGFz cw0KICBzaWcge3JldHVybnMoVC5ub3JldHVybil9DQogIGRlZiBtdXN0ITsgZW5kDQplbmQNCmBg YA0KDQpXaGF0IHRoZXNlIGFubm90YXRpb25zIHNheToNCg0KLSBJbiBgS2VybmVsI211c3QhYCwg dGhlIHJldHVybiB2YWx1ZSBpcyBgVC5zZWxmX3R5cGVgLCBvciAid2hhdGV2ZXIgdGhlIHR5cGUg b2YgdGhlIHJlY2VpdmVyIHdhcy4iDQogIFRoYXQgbWVhbnMgdGhhdCBgMC5tdXN0IWAgd2lsbCBo YXZlIHR5cGUgYEludGVnZXJgLCBgIiIubXVzdCFgIHdpbGwgaGF2ZSB0eXBlIGBTdHJpbmdgLCBl dGMuDQoNCi0gSW4gYE5pbENsYXNzI211c3QhYCwgdGhlcmUgaXMgYW4gb3ZlcnJpZGUgb2YgYEtl cm5lbCNtdXN0IWAgd2l0aCByZXR1cm4gdHlwZSBgVC5ub3JldHVybmAuDQogIFRoaXMgaXMgYSBm YW5jeSB0eXBlIHRoYXQgc2F5cyAidGhpcyBjb2RlIGVpdGhlciBpbmZpbml0ZWx5IGxvb3BzIG9y IHJhaXNlcyBhbiBleGNlcHRpb24uIg0KICBUaGlzIGlzIHRoZSBuYW1lIGZvciBTb3JiZXQncyBb Ym90dG9tIHR5cGVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JvdHRvbV90eXBlKSwg aWYgeW91DQogIGFyZSBmYW1pbGlhciB3aXRoIHRoYXQgdGVybWlub2xvZ3kuDQoNCkhlcmUgaXMg YSBTb3JiZXQgZXhhbXBsZSB3aGVyZSB5b3UgY2FuIHNlZSBob3cgdGhlc2UgYW5ub3RhdGlvbnMg YmVoYXZlOg0KDQpb4oaSIFZpZXcgb24gc29yYmV0LnJ1bl0oaHR0cHM6Ly9zb3JiZXQucnVuLyMl MjMlMjB0eXBlZCUzQSUyMHRydWUlMEElMEFtb2R1bGUlMjBLZXJuZWwlMEElMjAlMjBUJTNBJTNB U2lnJTNBJTNBV2l0aG91dFJ1bnRpbWUuc2lnJTIwJTdCcmV0dXJucyhULnNlbGZfdHlwZSklN0Ql MEElMjAlMjBkZWYlMjBtdXN0ISUzQiUyMHNlbGYlM0IlMjBlbmQlMEFlbmQlMEElMEFjbGFzcyUy ME5pbENsYXNzJTBBJTIwJTIwVCUzQSUzQVNpZyUzQSUzQVdpdGhvdXRSdW50aW1lLnNpZyUyMCU3 QnJldHVybnMoVC5ub3JldHVybiklN0QlMEElMjAlMjBkZWYlMjBtdXN0ISUwQSUyMCUyMCUyMCUy MHJhaXNlJTIwVHlwZUVycm9yLm5ldyglMjJuaWwubXVzdCElMjIpJTBBJTIwJTIwZW5kJTBBZW5k JTBBJTBBeHMlMjAlM0QlMjBUJTNBJTNBQXJyYXklNUJJbnRlZ2VyJTVELm5ldyglNUIwJTVEKSUw QVQucmV2ZWFsX3R5cGUoeHMuZmlyc3QpJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwVC5uaWxh YmxlKEludGVnZXIpJTBBVC5yZXZlYWxfdHlwZSh4cy5maXJzdC5tdXN0ISklMjAlMjMlMjBJbnRl Z2VyJTBBJTBBeXMlMjAlM0QlMjBUJTNBJTNBQXJyYXklNUJULm5pbGFibGUoSW50ZWdlciklNUQu bmV3KCU1QjAlMkMlMjBuaWwlMkMlMjAxJTJDJTIwbmlsJTJDJTIwMiU1RCklMEFULnJldmVhbF90 eXBlKHlzKSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFQl M0ElM0FBcnJheSU1QlQubmlsYWJsZShJbnRlZ2VyKSU1RCUwQVQucmV2ZWFsX3R5cGUoeXMubWFw KCUyNiUzQW11c3QhKSklMjAlMjMlMjBUJTNBJTNBQXJyYXklNUJJbnRlZ2VyJTVEKQ0KDQojIEFs dGVybmF0aXZlcyBjb25zaWRlcmVkDQoNClRoZXJlIHdhcyBzb21lIGRpc2N1c3Npb24gb2YgdGhp cyBmZWF0dXJlIGF0IHRoZSBGZWIgMjAyMCBSdWJ5IFR5cGVzIGRpc2N1c3Npb246DQoNClN1bW1h cml6aW5nOg0KDQotIFNvcmJldCB0ZWFtIGZyZXF1ZW50bHkgcmVjb21tZW5kcyBwZW9wbGUgdG8g dXNlIGB4cy5mZXRjaCgwKWAgaW5zdGVhZCBvZiBgVC5tdXN0KHhzWzBdKWANCiAgb24gYEFycmF5 YCdzIGFuZCBgSGFzaGAncyBiZWNhdXNlIGl0IGNoYWlucyBhbmQgcmVhZHMgYmV0dGVyLg0KICBg LmZldGNoYCBub3QgYXZhaWxhYmxlIG9uIG90aGVyIGNsYXNzZXMuDQoNCi0gSXQncyBpbnRlbnRp b25hbCB0aGF0IGBULm11c3RgIHJlcXVpcmVzIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBpdCBkb2Vz Lg0KICBNYWtpbmcgaXQgc2xpZ2h0bHkgYW5ub3lpbmcgdG8gdHlwZSBlbmNvdXJhZ2VzIGRldmVs b3BlcnMgdG8gcmVmYWN0b3IgdGhlaXIgY29kZSBzbyB0aGF0IGBuaWxgIG5ldmVyIG9jY3Vycy4N Cg0KLSBUaGVyZSB3YXMgYSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgbmV3IHN5bnRheCBsaWtlIGB0 aGluZy4hIWAuIFRoaXMgaXMgY3VycmVudGx5IGEgc3ludGF4IGVycm9yLg0KDQogICoqUmVidXR0 YWwqKjogVGhlcmUgaXMgYnVyZGVuIHRvIGludHJvZHVjaW5nIG5ldyBzeW50YXguIFRvb2xzIGxp a2UgUnVib2NvcCwgU29yYmV0LCBhbmQgc3ludGF4IGhpZ2hsaWdodGluZw0KICBwbHVnaW5zIGhh dmUgdG8gYmUgdXBkYXRlZC4gQWxzbzogaXQgaXMgaGFyZCB0byBzZWFyY2ggZm9yIG9uIEdvb2ds ZSAoYXMgYSBuZXcgUnVieSBkZXZlbG9wZXIpLiBBbHNvOiBpdA0KICBpcyB2ZXJ5IHNob3J04oCU aGF2aW5nIHNvbWV0aGluZyBzbGlnaHRseSBzaG9ydGVyIG1ha2VzIHBlb3BsZSB0aGluayBhYm91 dCB3aGV0aGVyIHRoZXkgd2FudCB0byB0eXBlIGl0IG91dA0KICBpbnN0ZWFkIG9mIGNoYW5naW5n IHRoZSBjb2RlIHNvIHRoYXQgYG5pbGAgY2FuJ3Qgb2NjdXIuDQoNCkFub3RoZXIgYWx0ZXJuYXRp dmUgd291bGQgYmUgdG8gZGlzbWlzcyB0aGlzIGFzICJub3QgdXNlZnVsIC8gY29tbW9uIGVub3Vn aCIuIEkgZG9uJ3QgdGhpbmsgdGhhdCdzIHRydWUuDQpIZXJlIGFyZSBzb21lIHN0YXRpc3RpY3Mg ZnJvbSBTdHJpcGUncyBSdWJ5IG1vbm9saXRoICh+MTAgbWlsbGlvbiBsaW5lcyBvZiBjb2RlKToN Cg0KfCBtZXRob29kIHwgcGVyY2VudGFnZSBvZiBmaWxlcyBtZW50aW9uaW5nIG1ldGhvZCB8IG51 bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBtZXRob2QgfA0KfCAtLS0gfCAtLS0gfCAtLS0gfA0KfCBg Lm5pbD9gIHwgMTYuNjklIHwgMzEzNDAgfA0KfCBgVC5tdXN0YCB8IDIzLjg5JSB8IDc0NzQyIHwN Cg0KRnJvbSB0aGlzLCB3ZSBzZWUgdGhhdA0KDQotIGBULm11c3RgIGlzIGluIDEuNDN4IG1vcmUg ZmlsZXMgdGhhbiBgLm5pbD9gDQotIGBULm11c3RgIG9jY3VycyAyLjM4eCBtb3JlIG9mdGVuIHRo YW4gYC5uaWw/YA0KDQoNCiMgTmFtaW5nDQoNCkkgcHJlZmVyIGBtdXN0IWAgYmVjYXVzZSBpdCBp cyB3aGF0IHRoZSBtZXRob2QgaW4gU29yYmV0IGlzIGFscmVhZHkgY2FsbGVkLg0KDQpJIGFtIG9w ZW4gdG8gbmFtaW5nIHN1Z2dlc3Rpb25zLiBQbGVhc2UgcHJvdmlkZSByZWFzb25pbmcuDQoNCg0K IyBEaXNjdXNzaW9uDQoNCkluIHRoZSBhYm92ZSBleGFtcGxlLCBJIHVzZWQgYFQubXVzdGAgdHdp Y2UuIEFuIGFsdGVybmF0aXZlIHdheSB0byBoYXZlIHdyaXR0ZW4gdGhhdCB3b3VsZCBoYXZlIGJl ZW4gdXNpbmcgc2F2ZSBuYXZpZ2F0aW9uOg0KDQpgYGBydWJ5DQpULm11c3QodGFzayYubWFpbGlu Z19wYXJhbXMpLmZldGNoKCd0ZW1wbGF0ZV9jb250ZXh0JykNCmBgYA0KDQpUaGlzIHdvcmtzIGFz IHdlbGwuIFRoZSBwcm9wb3NlZCBgLm11c3QhYCBtZXRob2Qgd29ya3MganVzdCBhcyB3ZWxsIHdo ZW4gY2hhaW5pbmcgbWV0aG9kcyB3aXRoIHNhZmUgbmF2aWdhdGlvbjoNCg0KYGBgcnVieQ0KdGFz ayYubWFpbGluZ19wYXJhbXMubXVzdCEuZmV0Y2goJ3RlbXBsYXRlX2NvbnRleHQnKQ0KYGBgDQoN Ckhvd2V2ZXIsIHRoZXJlIGlzIHN0aWxsIG1lcml0IGluIHVzaW5nIGBULm11c3RgIChvciBgLm11 c3QhYCkgdHdpY2XigJRpdCBjYWxscyBvdXQgdGhhdCB0aGUgcHJvZ3JhbW1lcg0KaW50ZW5kZWQg bmVpdGhlciBsb2NhdGlvbiB0byBiZSBgbmlsYC4gSW4gZmFjdCwgaWYgdGhpcyBtZXRob2QgaGFk IGJlZW4gY2hhaW5lZCBhY3Jvc3MgbXVsdGlwbGUgbGluZXMsDQp0aGUgYmFja3RyYWNlIHdvdWxk IGluY2x1ZGUgbGluZSBudW1iZXJzIHNheWluZyBzcGVjaWZpY2FsbHkgKip3aGljaCoqIGAubXVz dCFgIGZhaWxlZDoNCg0KDQpgYGBydWJ5DQp0YXNrLm11c3QhDQogIC5tYWlsaW5nX3BhcmFtcy5t dXN0IQ0KICAuZmV0Y2goJ3RlbXBsYXRlX2NvbnRleHQnKQ0KYGBgDQoNCg0KDQoNCi0tIA0KaHR0 cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1haWxpbmcgbGlzdCAtLSBydWJ5LWNvcmVAbWwu cnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBydWJ5LWNvcmUt bGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1jb3JlIGluZm8gLS0gaHR0cHM6Ly9tbC5ydWJ5 LWxhbmcub3JnL21haWxtYW4zL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3JnLw==