Bug#1143559: rust-dtui - build-depends unsatisfiable in sid due to chumsky update.
Christopher Obbard <[email protected]> Tue, 04 Aug 2026 16:18:43 +0100
| Newsgroups | gmane.linux.debian.devel.bugs.rc |
|---|---|
| Message-ID | <[email protected]> |
--=-AqHGswZCE8QwUbiwmAAr Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Control: tags -1 + patch Hi Peter, On Tue, 2026-08-04 at 08:47 +0100, Peter Green wrote: > Package: rust-dtui > Version: 3.0.0-3 > Severity: serious > Tags: ftbfs > x-debbugs-cc: [email protected] >=20 > rust-chumsky was recently updated to 0.13, leaving the build-depends > of rust-dtui unsatisfiable. >=20 > I've looked at updating but it looks non-trivial, the upstream changelog > says that 0.10 was a rewrite and bumping the dependency results in a wall > of errors. >=20 > I've also filed an upstream issue at https://github.com/Troels51/dtui/iss= ues/14 >=20 > Maybe we have to introduce a semver-suffix package here. Please find attached a patch which allows dtui to use the new 0.13 API. It builds locally with cargo and the upstream repo; but I didn't have time = to integrate into debcargo-config. Cheers! Chris --=-AqHGswZCE8QwUbiwmAAr Content-Disposition: attachment; filename="0001-bump-chumsky-to-0.13.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-bump-chumsky-to-0.13.patch"; charset="UTF-8" RnJvbSAwZTZhOWY0OWZmZjQyYWE2ZWE0M2U5ZTViNzI2NTg0YzVlNDhiZmQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGhlciBPYmJhcmQgPG9iYmFyZGNAZGViaWFuLm9y Zz4KRGF0ZTogVHVlLCA0IEF1ZyAyMDI2IDE1OjU5OjU0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g YnVtcCBjaHVtc2t5IHRvIDAuMTMKCkNsb3NlczogIzExNDM1NTkKU2lnbmVkLW9mZi1ieTogQ2hy aXN0b3BoZXIgT2JiYXJkIDxvYmJhcmRjQGRlYmlhbi5vcmc+Ci0tLQogQ2FyZ28udG9tbCAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmluL2R0dWkvY29tcG9uZW50cy9j YWxsX3ZpZXcucnMgfCAgMzUgKy0tCiBzcmMvYmluL2R0dWkvbWVzc2FnZXMucnMgICAgICAgICAg ICAgfCAgIDEgLQogc3JjL2Jpbi9kdHVpL3BhcnNlci5ycyAgICAgICAgICAgICAgIHwgMzEwICsr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxNTkgaW5zZXJ0aW9u cygrKSwgMTg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0NhcmdvLnRvbWwgYi9DYXJnby50 b21sCmluZGV4IGQxOTRlYjIuLjI1ZjRmMDIgMTAwNjQ0Ci0tLSBhL0NhcmdvLnRvbWwKKysrIGIv Q2FyZ28udG9tbApAQCAtMjgsNyArMjgsNyBAQCB0cmFjaW5nID0gIjAuMS40MSIKIHRyYWNpbmct c3Vic2NyaWJlciA9IHsgdmVyc2lvbiA9ICIwLjMuMjAiLCBmZWF0dXJlcyA9IFsiZW52LWZpbHRl ciIsICJqc29uIiwgImZtdCJdIH0KIHRyYWNpbmctam91cm5hbGQgPSAiMC4zLjEiCiB0dWktdGV4 dGFyZWEgPSAiMC43IgotY2h1bXNreSA9ICIwLjkuMyIKK2NodW1za3kgPSAiMC4xMyIKIHpidXMg PSB7dmVyc2lvbiA9ICI1LjExLjAiLCBmZWF0dXJlcyA9IFsidG9raW8iLCAic2VyZGVfYnl0ZXMi XX0KIHpidXNfbmFtZXMgPSAiNC4yLjAiCiB6YnVzX3htbCA9ICI1LjAuMiIKZGlmZiAtLWdpdCBh L3NyYy9iaW4vZHR1aS9jb21wb25lbnRzL2NhbGxfdmlldy5ycyBiL3NyYy9iaW4vZHR1aS9jb21w b25lbnRzL2NhbGxfdmlldy5ycwppbmRleCBjODMzMjEwLi5jNGJjZjMwIDEwMDY0NAotLS0gYS9z cmMvYmluL2R0dWkvY29tcG9uZW50cy9jYWxsX3ZpZXcucnMKKysrIGIvc3JjL2Jpbi9kdHVpL2Nv bXBvbmVudHMvY2FsbF92aWV3LnJzCkBAIC0yNCwxMCArMjQsMTkgQEAgdXNlIGNyYXRlOjp7CiAK IHB1YiBzdHJ1Y3QgTWV0aG9kQXJnVmlzdWFsIHsKICAgICBwdWIgdGV4dF9hcmVhOiB0dWlfdGV4 dGFyZWE6OlRleHRBcmVhPCdzdGF0aWM+LAotICAgIHB1YiBwYXJzZXI6Ci0gICAgICAgIEJveDxk eW4gUGFyc2VyPGNoYXIsIHpidXM6Onp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXJyb3IgPSBj aHVtc2t5OjplcnJvcjo6U2ltcGxlPGNoYXI+Pj4sCisgICAgLy8gY2h1bXNreSBwYXJzZXJzIGJv cnJvdyBmcm9tIHRoZSBpbnB1dCB0aGV5IHBhcnNlLCBzbyB3ZSBrZWVwIHRoZSBzaWduYXR1cmUg YXJvdW5kIGFuZAorICAgIC8vIGJ1aWxkIGEgcGFyc2VyIG9uIGRlbWFuZCBpbnN0ZWFkIG9mIHN0 b3Jpbmcgb25lLgorICAgIHB1YiBzaWduYXR1cmU6IHpidXM6Onp2YXJpYW50OjpTaWduYXR1cmUs CiAgICAgcHViIGlzX2lucHV0OiBib29sLCAvLyBJcyB0aGlzIEFyZyBhbiBpbnB1dCBvciBvdXRw dXQKIH0KKworaW1wbCBNZXRob2RBcmdWaXN1YWwgeworICAgIGZuIHBhcnNlKCZzZWxmKSAtPiBS ZXN1bHQ8emJ1czo6enZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBWZWM8Y2h1bXNreTo6ZXJyb3I6 OlJpY2g8J18sIGNoYXI+Pj4geworICAgICAgICBnZXRfcGFyc2VyKHNlbGYuc2lnbmF0dXJlLmNs b25lKCkpCisgICAgICAgICAgICAucGFyc2Uoc2VsZi50ZXh0X2FyZWEubGluZXMoKVswXS5hc19z dHIoKSkKKyAgICAgICAgICAgIC5pbnRvX3Jlc3VsdCgpCisgICAgfQorfQogLy8gRW5jYXBzdWxh dGVzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb25nb2luZyBjYWxsCiBzdHJ1Y3QgT25nb2lu Z0NhbGxJbmZvIHsKICAgICBpbnZvY2F0aW9uOiBJbnZvY2F0aW9uLApAQCAtNjMsMTcgKzcyLDE2 IEBAIGltcGwgT25nb2luZ0NhbGxJbmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu dGl0bGUoZm9ybWF0ISgibmFtZToge30gfCB7fSIsIGFyZy5uYW1lKCkudW53cmFwKCksIGlub3V0 KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGl0bGVfYm90dG9tKGZvcm1hdCEoInR5 cGU6IHt9IiwgYXJnLnR5KCkudG9fc3RyaW5nKCkpKSwKICAgICAgICAgICAgICAgICAgICAgKTsK LSAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnNlciA9IGdldF9wYXJzZXIoCisgICAgICAgICAg ICAgICAgICAgIGxldCBzaWduYXR1cmUgPQogICAgICAgICAgICAgICAgICAgICAgICAgemJ1czo6 enZhcmlhbnQ6OlNpZ25hdHVyZTo6ZnJvbV9zdHIoYXJnLnR5KCkudG9fc3RyaW5nKCkuYXNfc3Ry KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV4cGVjdCgiVGhlIHR5cGUgZGVzY3Jp cHRpb24gZm9yIHRoZSBtZXRob2Qgd2UgZ290IHdhcyBub3QgZ29vZCIpLAotICAgICAgICAgICAg ICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5leHBlY3QoIlRoZSB0eXBl IGRlc2NyaXB0aW9uIGZvciB0aGUgbWV0aG9kIHdlIGdvdCB3YXMgbm90IGdvb2QiKTsKICAgICAg ICAgICAgICAgICAgICAgbGV0IGlucHV0ID0gbWF0Y2ggYXJnLmRpcmVjdGlvbigpLnVud3JhcF9v cih6YnVzX3htbDo6QXJnRGlyZWN0aW9uOjpJbikgewogICAgICAgICAgICAgICAgICAgICAgICAg emJ1c194bWw6OkFyZ0RpcmVjdGlvbjo6SW4gPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAg ICAgIHpidXNfeG1sOjpBcmdEaXJlY3Rpb246Ok91dCA9PiBmYWxzZSwKICAgICAgICAgICAgICAg ICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgY2FsbF9pbmZvLm1ldGhvZF9hcmdfdmlzLnB1 c2goTWV0aG9kQXJnVmlzdWFsIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfYXJlYSwK LSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcjogQm94OjpuZXcocGFyc2VyKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlz X2lucHV0OiBpbnB1dCwKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAg fQpAQCAtOTAsMTMgKzk4LDEyIEBAIGltcGwgT25nb2luZ0NhbGxJbmZvIHsKICAgICAgICAgICAg ICAgICAgICAgICAgIC50aXRsZShmb3JtYXQhKCJuYW1lOiB7fSB8IHt9IiwgcHJvcGVydHkubmFt ZSgpLCAiaW5wdXQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgIC50aXRsZV9ib3R0b20oZm9y bWF0ISgidHlwZToge30iLCBwcm9wZXJ0eS50eSgpLnRvX3N0cmluZygpKSksCiAgICAgICAgICAg ICAgICAgKTsKLSAgICAgICAgICAgICAgICBsZXQgcGFyc2VyID0gQm94OjpuZXcoZ2V0X3BhcnNl cigKKyAgICAgICAgICAgICAgICBsZXQgc2lnbmF0dXJlID0KICAgICAgICAgICAgICAgICAgICAg emJ1czo6enZhcmlhbnQ6OlNpZ25hdHVyZTo6ZnJvbV9zdHIocHJvcGVydHkudHkoKS50b19zdHJp bmcoKS5hc19zdHIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC5leHBlY3QoIlRoZSB0eXBl IGRlc2NyaXB0aW9uIGZvciB0aGUgbWV0aG9kIHdlIGdvdCB3YXMgbm90IGdvb2QiKSwKLSAgICAg ICAgICAgICAgICApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC5leHBlY3QoIlRoZSB0eXBl IGRlc2NyaXB0aW9uIGZvciB0aGUgbWV0aG9kIHdlIGdvdCB3YXMgbm90IGdvb2QiKTsKICAgICAg ICAgICAgICAgICBjYWxsX2luZm8ubWV0aG9kX2FyZ192aXMucHVzaChNZXRob2RBcmdWaXN1YWwg ewogICAgICAgICAgICAgICAgICAgICB0ZXh0X2FyZWEsCi0gICAgICAgICAgICAgICAgICAgIHBh cnNlciwKKyAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLAogICAgICAgICAgICAgICAgICAg ICBpc19pbnB1dDogdHJ1ZSwKICAgICAgICAgICAgICAgICB9KTsKIApAQCAtMTYxLDkgKzE2OCw3 IEBAIGltcGwgQ2FsbFZpZXcgewogICAgICAgICBsZXQgc2VnbWVudHMgPSBzaW5nbGVfbGluZV9s YXlvdXQuc3BsaXQoYXJlYSk7CiAgICAgICAgIGZvciAoaSwgaW5wdXQpIGluIG9uZ29pbmcubWV0 aG9kX2FyZ192aXMuaXRlcl9tdXQoKS5lbnVtZXJhdGUoKSB7CiAgICAgICAgICAgICBsZXQgZW1w aGFzaXMgPSBpZiBpID09IG9uZ29pbmcuc2VsZWN0ZWQgJiYgYWN0aXZlIHsKLSAgICAgICAgICAg ICAgICBsZXQgbWV0aG9kX2FyZzogU3RyaW5nID0gaW5wdXQudGV4dF9hcmVhLmxpbmVzKClbMF0u Y2xvbmUoKTsKLSAgICAgICAgICAgICAgICBsZXQgcGFyc2VkID0gaW5wdXQucGFyc2VyLnBhcnNl KG1ldGhvZF9hcmcpOwotICAgICAgICAgICAgICAgIG1hdGNoIHBhcnNlZCB7CisgICAgICAgICAg ICAgICAgbWF0Y2ggaW5wdXQucGFyc2UoKSB7CiAgICAgICAgICAgICAgICAgICAgIE9rKF8pID0+ IFN0eWxlOjpkZWZhdWx0KCkuZmcoQ29sb3I6OkdyZWVuKSwKICAgICAgICAgICAgICAgICAgICAg RXJyKF8pID0+IFN0eWxlOjpkZWZhdWx0KCkuZmcoQ29sb3I6OlJlZCksCiAgICAgICAgICAgICAg ICAgfQpAQCAtMjMwLDExICsyMzUsMTEgQEAgaW1wbCBDb21wb25lbnQgZm9yIENhbGxWaWV3IHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWV0aG9kX2FyZ192aXMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAuaXRlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZp bHRlcih8aW5wdXR8IGlucHV0LmlzX2lucHV0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAg IC5tYXAofGlucHV0fCBpbnB1dC5wYXJzZXIucGFyc2UoaW5wdXQudGV4dF9hcmVhLmxpbmVzKClb MF0uY2xvbmUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAofGlucHV0fCBp bnB1dC5wYXJzZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnNlcy5jbG9uZSgp LmFsbCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8cmVzdWx0OiBSZXN1bHQ8CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpidXM6Onp2YXJpYW50OjpWYWx1ZTwnc3RhdGlj PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjPGNodW1za3k6OmVycm9yOjpT aW1wbGU8Y2hhcj4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWM8Y2h1bXNr eTo6ZXJyb3I6OlJpY2g8J18sIGNoYXI+PiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ fCBSZXN1bHQ6OmlzX29rKCZyZXN1bHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlczogVmVjPHpidXM6Onp2YXJpYW50 OjpPd25lZFZhbHVlPiA9IHBhcnNlcwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9kdHVpL21lc3NhZ2Vz LnJzIGIvc3JjL2Jpbi9kdHVpL21lc3NhZ2VzLnJzCmluZGV4IDY4NDMzMWMuLjg1YmYwZDAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vZHR1aS9tZXNzYWdlcy5ycworKysgYi9zcmMvYmluL2R0dWkvbWVz c2FnZXMucnMKQEAgLTEsNiArMSw1IEBACiB1c2Ugc3RkOjpjb2xsZWN0aW9uczo6SGFzaE1hcDsK IAotdXNlIGNodW1za3k6OmNoYWluOjpDaGFpbjsKIHVzZSB6YnVzOjp7CiAgICAgbmFtZXM6OntP d25lZEJ1c05hbWUsIE93bmVkSW50ZXJmYWNlTmFtZSwgT3duZWRNZW1iZXJOYW1lfSwKICAgICB6 dmFyaWFudDo6e093bmVkT2JqZWN0UGF0aCwgT3duZWRWYWx1ZX0sCmRpZmYgLS1naXQgYS9zcmMv YmluL2R0dWkvcGFyc2VyLnJzIGIvc3JjL2Jpbi9kdHVpL3BhcnNlci5ycwppbmRleCAyMDU5NzRm Li5iMDk4MTM5IDEwMDY0NAotLS0gYS9zcmMvYmluL2R0dWkvcGFyc2VyLnJzCisrKyBiL3NyYy9i aW4vZHR1aS9wYXJzZXIucnMKQEAgLTEsNyArMSwxMyBAQAordXNlIGNodW1za3k6OmlucHV0OjpJ bnB1dFJlZjsKIHVzZSBjaHVtc2t5OjpwcmVsdWRlOjoqOwogdXNlIHN0ZDo6e2NvbGxlY3Rpb25z OjpIYXNoTWFwLCBzdHI6OkZyb21TdHIsIHUzMn07CiB1c2UgemJ1czo6enZhcmlhbnQ6OntzZWxm LCBPYmplY3RQYXRoLCBTaWduYXR1cmUsIFN0cnVjdHVyZUJ1aWxkZXJ9OwogCisvLy8gVGhlIGV4 dHJhIHBhcnNlciBzdGF0ZSB1c2VkIGJ5IGV2ZXJ5IHBhcnNlciBpbiB0aGlzIG1vZHVsZS4KK3R5 cGUgRXh0cmE8J3NyYz4gPSBleHRyYTo6RXJyPFJpY2g8J3NyYywgY2hhcj4+OworLy8vIEEgYm94 ZWQgcGFyc2VyIG92ZXIgYSBzdHJpbmcgaW5wdXQsIHByb2R1Y2luZyBhIGRidXMgdmFsdWUuCit0 eXBlIFZhbHVlUGFyc2VyPCdzcmM+ID0gQm94ZWQ8J3NyYywgJ3NyYywgJidzcmMgc3RyLCB6dmFy aWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4dHJhPCdzcmM+PjsKKwogLy8vIENyZWF0ZSBhIHBhcnNl ciBmcm9tIGEgU2lnbmF0dXJlLgogLy8vIFRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgcGFyc2VzIGlz IGEgaHVtYW4gcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgZGJ1cyBmb3JtYXQuCiAvLy8gQXJyYXlz IGFyZSBkZWxpbWl0ZWQgYnkgW10sIHdpdGggdmFsdWVzIHNlcGVyYXRlZCBieSAiLCIKQEAgLTE0 LDEyICsyMCwxMCBAQCB1c2UgemJ1czo6enZhcmlhbnQ6OntzZWxmLCBPYmplY3RQYXRoLCBTaWdu YXR1cmUsIFN0cnVjdHVyZUJ1aWxkZXJ9OwogLy8vCiAvLy8gYGBgCiAvLy8gbGV0IHNpZ25hdHVy ZSA9IFNpZ25hdHVyZTo6ZnJvbV9zdHIoImFzIikudW53cmFwKCk7Ci0vLy8gbGV0IHJlc3VsdCA9 IGdldF9wYXJzZXIoc2lnbmF0dXJlKS5wYXJzZSgiW1wiZmlyc3RcIiwgXCJzZWNvbmRcIl0iKTsK Ky8vLyBsZXQgcmVzdWx0ID0gZ2V0X3BhcnNlcihzaWduYXR1cmUpLnBhcnNlKCJbXCJmaXJzdFwi LCBcInNlY29uZFwiXSIpLmludG9fcmVzdWx0KCk7CiAvLy8gYXNzZXJ0X2VxIShyZXN1bHQsIE9r KHp2YXJpYW50OjpWYWx1ZTo6QXJyYXkodmVjIVsiZmlyc3QiLCAic2Vjb25kIl0uaW50bygpKSkp OwogLy8vIGBgYAotcHViIGZuIGdldF9wYXJzZXIoCi0gICAgc2lnbmF0dXJlOiBTaWduYXR1cmUs Ci0pIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXJyb3Ig PSBTaW1wbGU8Y2hhcj4+IHsKK3B1YiBmbiBnZXRfcGFyc2VyPCdzcmM+KHNpZ25hdHVyZTogU2ln bmF0dXJlKSAtPiBWYWx1ZVBhcnNlcjwnc3JjPiB7CiAgICAgbWF0Y2ggc2lnbmF0dXJlIHsKICAg ICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6VW5pdCA9PiB0b2RvISgpLAogICAgICAgICB6dmFy aWFudDo6U2lnbmF0dXJlOjpVOCA9PiBwYXJzZXJfdTgoKS5ib3hlZCgpLApAQCAtMzQsNyArMzgs NyBAQCBwdWIgZm4gZ2V0X3BhcnNlcigKICAgICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6U3Ry ID0+IHBhcnNlcl9zdHJpbmcoKS5ib3hlZCgpLAogICAgICAgICB6dmFyaWFudDo6U2lnbmF0dXJl OjpTaWduYXR1cmUgPT4gcGFyc2VyX3NpZ25hdHVyZSgpLmJveGVkKCksCiAgICAgICAgIHp2YXJp YW50OjpTaWduYXR1cmU6Ok9iamVjdFBhdGggPT4gcGFyc2VyX29iamVjdF9wYXRoKCkuYm94ZWQo KSwKLSAgICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6VmFyaWFudCA9PiBwYXJzZXJfdmFyaWFu dCgpLmJveGVkKCksCisgICAgICAgIHp2YXJpYW50OjpTaWduYXR1cmU6OlZhcmlhbnQgPT4gcGFy c2VyX3ZhcmlhbnQoKSwKICAgICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6RmQgPT4gcGFyc2Vy X2ZkKCkuYm94ZWQoKSwKICAgICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6QXJyYXkoY2hpbGQp ID0+IHBhcnNlcl9hcnJheShjaGlsZC5zaWduYXR1cmUoKS5jbG9uZSgpKS5ib3hlZCgpLAogICAg ICAgICB6dmFyaWFudDo6U2lnbmF0dXJlOjpEaWN0IHsga2V5LCB2YWx1ZSB9ID0+IHsKQEAgLTQ0 LDMzICs0OCw0NSBAQCBwdWIgZm4gZ2V0X3BhcnNlcigKICAgICB9CiB9CiAKLWZuIHBhcnNlcl92 YXJpYW50PCdhPigpIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGlj PiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+IHsKLSAgICBwYXJzZXJfc2lnbmF0dXJlKCkKLSAgICAg ICAgLmJveGVkKCkKLSAgICAgICAgLnRoZW5faWdub3JlKGp1c3QoIi0+IikpCi0gICAgICAgIC50 aGVuX3dpdGgofHN8IG1hdGNoIHMgewotICAgICAgICAgICAgenZhcmlhbnQ6OlZhbHVlOjpTaWdu YXR1cmUoc2lnbmF0dXJlKSA9PiB7Ci0gICAgICAgICAgICAgICAgZ2V0X3BhcnNlcihzaWduYXR1 cmUpLm1hcCh8dmFyaWFudHwgenZhcmlhbnQ6OlZhbHVlOjpWYWx1ZShCb3g6Om5ldyh2YXJpYW50 KSkpCi0gICAgICAgICAgICB9CisvLy8gVGhlIGlubmVyIHBhcnNlciBvZiBhIHZhcmlhbnQgZGVw ZW5kcyBvbiB0aGUgc2lnbmF0dXJlIHRoYXQgcHJlY2VkZXMgaXQsIHNvIGl0IGNhbiBvbmx5IGJl CisvLy8gYnVpbHQgb25jZSB0aGF0IHNpZ25hdHVyZSBoYXMgYmVlbiBwYXJzZWQuIGBjdXN0b21g IGdpdmVzIHVzIGFjY2VzcyB0byB0aGUgaW5wdXQgc28gd2UgY2FuCisvLy8gcnVuIGEgcGFyc2Vy IHRoYXQgaXMgY29uc3RydWN0ZWQgb24gdGhlIGZseS4KK2ZuIHBhcnNlcl92YXJpYW50PCdzcmM+ KCkgLT4gVmFsdWVQYXJzZXI8J3NyYz4geworICAgIGN1c3RvbTo6PF8sICYnc3JjIHN0ciwgXywg RXh0cmE8J3NyYz4+KHxpbnB1dDogJm11dCBJbnB1dFJlZjwnc3JjLCAnXywgXywgXz58IHsKKyAg ICAgICAgbGV0IHNpZ25hdHVyZSA9IG1hdGNoIGlucHV0LnBhcnNlKHBhcnNlcl9zaWduYXR1cmUo KSk/IHsKKyAgICAgICAgICAgIHp2YXJpYW50OjpWYWx1ZTo6U2lnbmF0dXJlKHNpZ25hdHVyZSkg PT4gc2lnbmF0dXJlLAogICAgICAgICAgICAgXyA9PiB1bnJlYWNoYWJsZSEoKSwKLSAgICAgICAg fSkKKyAgICAgICAgfTsKKyAgICAgICAgaW5wdXQucGFyc2UoanVzdCgiLT4iKSk/OworICAgICAg ICBsZXQgdmFsdWUgPSBpbnB1dC5wYXJzZShnZXRfcGFyc2VyKHNpZ25hdHVyZSkpPzsKKyAgICAg ICAgT2soenZhcmlhbnQ6OlZhbHVlOjpWYWx1ZShCb3g6Om5ldyh2YWx1ZSkpKQorICAgIH0pCisg ICAgLmJveGVkKCkKIH0KIC8vCi1mbiBwYXJzZXJfc3RydWN0PCdhPigKK2ZuIHBhcnNlcl9zdHJ1 Y3Q8J3NyYz4oCiAgICAgc3RydWN0dXJlOiB6dmFyaWFudDo6c2lnbmF0dXJlOjpGaWVsZHMsCi0p IC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnYT4sIEVycm9yID0gU2ltcGxl PGNoYXI+PiB7CispIC0+IGltcGwgUGFyc2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZh bHVlPCdzdGF0aWM+LCBFeHRyYTwnc3JjPj4gKyBDbG9uZSB7CiAgICAgbGV0IG11dCBlbGVtZW50 X3BhcnNlcnMgPSBzdHJ1Y3R1cmUKICAgICAgICAgLml0ZXIoKQogICAgICAgICAubWFwKHxzaWdu YXR1cmU6ICZ6YnVzOjp6dmFyaWFudDo6U2lnbmF0dXJlfCBnZXRfcGFyc2VyKHNpZ25hdHVyZS5j bG9uZSgpKSk7Ci0gICAgbGV0IG11dCBmdWxsX3BhcnNlciA9IGp1c3QoJygnKS5tYXAofF98IFZl Yzo6PHp2YXJpYW50OjpWYWx1ZTwnXz4+OjpuZXcoKSkuYm94ZWQoKTsgLy8gVGhlIG1hcCBpcyB0 aGVyZSB0byBnZXQgdHlwZXMgdG8gbWF0Y2ggYXMgdGhlIGNoYWluIGluIHRoZSBsb29wIG5lZWRz IHRoZSBwYXJzZXIgdG8gb3V0cHV0IGEgVmVjCi0gICAgZnVsbF9wYXJzZXIgPSBmdWxsX3BhcnNl ci5jaGFpbihlbGVtZW50X3BhcnNlcnMubmV4dCgpLnVud3JhcCgpKS5ib3hlZCgpOyAvLyBUaGUg Zmlyc3QgZG9lc250IGdldCBhICcsJyB0aGUgcmVzdCBkbworICAgIC8vIFRoZSBmaXJzdCBlbGVt ZW50IGRvZXNuJ3QgZ2V0IGEgJywnIHRoZSByZXN0IGRvCisgICAgbGV0IG11dCBmdWxsX3BhcnNl ciA9IGVsZW1lbnRfcGFyc2VycworICAgICAgICAubmV4dCgpCisgICAgICAgIC51bndyYXAoKQor ICAgICAgICAubWFwKHx2YWx1ZXwgdmVjIVt2YWx1ZV0pCisgICAgICAgIC5ib3hlZCgpOwogICAg IGZvciBlbGVtZW50X3BhcnNlciBpbiBlbGVtZW50X3BhcnNlcnMgewogICAgICAgICBmdWxsX3Bh cnNlciA9IGZ1bGxfcGFyc2VyCiAgICAgICAgICAgICAudGhlbl9pZ25vcmUoanVzdCgiLCIpLnBh ZGRlZCgpKQotICAgICAgICAgICAgLmNoYWluKGVsZW1lbnRfcGFyc2VyKQorICAgICAgICAgICAg LnRoZW4oZWxlbWVudF9wYXJzZXIpCisgICAgICAgICAgICAubWFwKHwobXV0IGZpZWxkcywgZmll bGQpfCB7CisgICAgICAgICAgICAgICAgZmllbGRzLnB1c2goZmllbGQpOworICAgICAgICAgICAg ICAgIGZpZWxkcworICAgICAgICAgICAgfSkKICAgICAgICAgICAgIC5ib3hlZCgpOwogICAgIH0K LSAgICBmdWxsX3BhcnNlciA9IGZ1bGxfcGFyc2VyLnRoZW5faWdub3JlKGp1c3QoJyknKS5wYWRk ZWQoKSkuYm94ZWQoKTsKKyAgICBsZXQgZnVsbF9wYXJzZXIgPSBmdWxsX3BhcnNlci5kZWxpbWl0 ZWRfYnkoanVzdCgnKCcpLnBhZGRlZCgpLCBqdXN0KCcpJykucGFkZGVkKCkpOwogCiAgICAgZnVs bF9wYXJzZXIubWFwKHxmaWVsZHN8IHsKICAgICAgICAgbGV0IG11dCBidWlsZGVyID0gU3RydWN0 dXJlQnVpbGRlcjo6bmV3KCk7CkBAIC04MCwxMCArOTYsMTAgQEAgZm4gcGFyc2VyX3N0cnVjdDwn YT4oCiAgICAgICAgIHp2YXJpYW50OjpWYWx1ZTo6U3RydWN0dXJlKGJ1aWxkZXIuYnVpbGQoKS51 bndyYXAoKSkKICAgICB9KQogfQotZm4gcGFyc2VyX2RpY3Q8J2E+KAorZm4gcGFyc2VyX2RpY3Q8 J3NyYz4oCiAgICAga2V5X3R5cGU6IFNpZ25hdHVyZSwKICAgICB2YWx1ZV90eXBlOiBTaWduYXR1 cmUsCi0pIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnYT4sIEVycm9yID0g U2ltcGxlPGNoYXI+PiB7CispIC0+IGltcGwgUGFyc2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlh bnQ6OlZhbHVlPCdzdGF0aWM+LCBFeHRyYTwnc3JjPj4gKyBDbG9uZSB7CiAgICAgbGV0IGtleV9w YXJzZXIgPSBnZXRfcGFyc2VyKGtleV90eXBlLmNsb25lKCkpOwogICAgIGxldCB2YWx1ZV9wYXJz ZXIgPSBnZXRfcGFyc2VyKHZhbHVlX3R5cGUuY2xvbmUoKSk7CiAgICAgbGV0IG1lbWJlcl9wYXJz ZXIgPSBrZXlfcGFyc2VyCkBAIC05MSwxMiArMTA3LDkgQEAgZm4gcGFyc2VyX2RpY3Q8J2E+KAog ICAgICAgICAudGhlbih2YWx1ZV9wYXJzZXIpCiAgICAgICAgIC5ib3hlZCgpOwogICAgIG1lbWJl cl9wYXJzZXIKLSAgICAgICAgLmNsb25lKCkKLSAgICAgICAgLmNoYWluKGp1c3QoJywnKS5wYWRk ZWQoKS5pZ25vcmVfdGhlbihtZW1iZXJfcGFyc2VyKS5yZXBlYXRlZCgpKQotICAgICAgICAub3Jf bm90KCkKLSAgICAgICAgLmZsYXR0ZW4oKQorICAgICAgICAuc2VwYXJhdGVkX2J5KGp1c3QoJywn KS5wYWRkZWQoKSkKKyAgICAgICAgLmNvbGxlY3Q6OjxIYXNoTWFwPHp2YXJpYW50OjpWYWx1ZTwn c3RhdGljPiwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+Pj4oKQogICAgICAgICAuZGVsaW1pdGVk X2J5KGp1c3QoJ3snKS5wYWRkZWQoKSwganVzdCgnfScpLnBhZGRlZCgpKQotICAgICAgICAuY29s bGVjdDo6PEhhc2hNYXA8enZhcmlhbnQ6OlZhbHVlPCdfPiwgenZhcmlhbnQ6OlZhbHVlPCdfPj4+ KCkKICAgICAgICAgLm1hcCgKICAgICAgICAgICAgIG1vdmUgfG06IEhhc2hNYXA8enZhcmlhbnQ6 OlZhbHVlPCdfPiwgenZhcmlhbnQ6OlZhbHVlPCdfPj58IHsKICAgICAgICAgICAgICAgICBsZXQg bXV0IGRpY3QgPQpAQCAtMTA5LDIwICsxMjIsMTMgQEAgZm4gcGFyc2VyX2RpY3Q8J2E+KAogICAg ICAgICApCiB9CiAKLWZuIHBhcnNlcl9hcnJheTwnYT4oCitmbiBwYXJzZXJfYXJyYXk8J3NyYz4o CiAgICAgc2lnbmF0dXJlOiBTaWduYXR1cmUsCi0pIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJp YW50OjpWYWx1ZTwnYT4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7Ci0gICAgbGV0IGVsZW1lbnRf cGFyc2VyID0gZ2V0X3BhcnNlcihzaWduYXR1cmUuY2xvbmUoKSkuYm94ZWQoKTsKKykgLT4gaW1w bCBQYXJzZXI8J3NyYywgJidzcmMgc3RyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4dHJh PCdzcmM+PiArIENsb25lIHsKKyAgICBsZXQgZWxlbWVudF9wYXJzZXIgPSBnZXRfcGFyc2VyKHNp Z25hdHVyZS5jbG9uZSgpKTsKICAgICBlbGVtZW50X3BhcnNlcgotICAgICAgICAuY2xvbmUoKQot ICAgICAgICAuY2hhaW4oCi0gICAgICAgICAgICBqdXN0KCcsJykKLSAgICAgICAgICAgICAgICAu cGFkZGVkKCkKLSAgICAgICAgICAgICAgICAuaWdub3JlX3RoZW4oZWxlbWVudF9wYXJzZXIuY2xv bmUoKSkKLSAgICAgICAgICAgICAgICAucmVwZWF0ZWQoKSwKLSAgICAgICAgKQotICAgICAgICAu b3Jfbm90KCkKLSAgICAgICAgLmZsYXR0ZW4oKQorICAgICAgICAuc2VwYXJhdGVkX2J5KGp1c3Qo JywnKS5wYWRkZWQoKSkKKyAgICAgICAgLmNvbGxlY3Q6OjxWZWM8enZhcmlhbnQ6OlZhbHVlPCdz dGF0aWM+Pj4oKQogICAgICAgICAuZGVsaW1pdGVkX2J5KGp1c3QoJ1snKSwganVzdCgnXScpKQog ICAgICAgICAubWFwKG1vdmUgfHY6IFZlYzx6dmFyaWFudDo6VmFsdWU8J18+PnwgewogICAgICAg ICAgICAgbGV0IG11dCBhcnJheTogenZhcmlhbnQ6OkFycmF5PCdfPiA9IHp2YXJpYW50OjpBcnJh eTo6bmV3KCZzaWduYXR1cmUpOwpAQCAtMTM2LDIwMSArMTQyLDE2MSBAQCBmbiBwYXJzZXJfYXJy YXk8J2E+KAogfQogLy8gVE9ETzogQ2FuIHRoZXNlIGJlIG1hZGUgZ2VuZXJpYywgbm90IHN1cmUg aG93IGFzIHRoZXkgYXJlIGdlbmVyaWMgb3ZlciB0aGUgVmFsdWUgdHlwZSB3aGljaCBpcyBlbnVt cwogLy8gVE9ETzogVmFsaWRhdGlvbiBvbiBzaXplcyBvZiBudW1iZXJzCi1mbiBwYXJzZXJfdTgo KSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEVycm9yID0g U2ltcGxlPGNoYXI+PiB7CitmbiBwYXJzZXJfdTg8J3NyYz4oKSAtPiBpbXBsIFBhcnNlcjwnc3Jj LCAmJ3NyYyBzdHIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXh0cmE8J3NyYz4+ICsgQ2xv bmUgewogICAgIHRleHQ6OmRpZ2l0cygxMCkKKyAgICAgICAgLnRvX3NsaWNlKCkKICAgICAgICAg LmxhYmVsbGVkKCJ1OCIpCi0gICAgICAgIC5tYXAofHM6IFN0cmluZ3wgenZhcmlhbnQ6OlZhbHVl OjpVOChzLnBhcnNlKCkudW53cmFwKCkpKQorICAgICAgICAubWFwKHxzOiAmc3RyfCB6dmFyaWFu dDo6VmFsdWU6OlU4KHMucGFyc2UoKS51bndyYXAoKSkpCiAgICAgICAgIC5wYWRkZWQoKQogfQot Zm4gcGFyc2VyX3UxNigpIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3Rh dGljPiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+IHsKK2ZuIHBhcnNlcl91MTY8J3NyYz4oKSAtPiBp bXBsIFBhcnNlcjwnc3JjLCAmJ3NyYyBzdHIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXh0 cmE8J3NyYz4+ICsgQ2xvbmUKK3sKICAgICB0ZXh0OjpkaWdpdHMoMTApCisgICAgICAgIC50b19z bGljZSgpCiAgICAgICAgIC5sYWJlbGxlZCgidTE2IikKLSAgICAgICAgLm1hcCh8czogU3RyaW5n fCB6dmFyaWFudDo6VmFsdWU6OlUxNihzLnBhcnNlKCkudW53cmFwKCkpKQorICAgICAgICAubWFw KHxzOiAmc3RyfCB6dmFyaWFudDo6VmFsdWU6OlUxNihzLnBhcnNlKCkudW53cmFwKCkpKQogICAg ICAgICAucGFkZGVkKCkKIH0KLWZuIHBhcnNlcl9pMTYoKSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6 dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7CitmbiBwYXJz ZXJfaTE2PCdzcmM+KCkgLT4gaW1wbCBQYXJzZXI8J3NyYywgJidzcmMgc3RyLCB6dmFyaWFudDo6 VmFsdWU8J3N0YXRpYz4sIEV4dHJhPCdzcmM+PiArIENsb25lCit7CiAgICAganVzdCgnLScpCiAg ICAgICAgIC5vcl9ub3QoKQotICAgICAgICAuY2hhaW46OjxjaGFyLCBfLCBfPih0ZXh0OjpkaWdp dHMoMTApKQotICAgICAgICAuY29sbGVjdDo6PFN0cmluZz4oKQotICAgICAgICAubWFwKHxzOiBT dHJpbmd8IHp2YXJpYW50OjpWYWx1ZTo6STE2KHMucGFyc2UoKS51bndyYXAoKSkpCisgICAgICAg IC50aGVuKHRleHQ6OmRpZ2l0cygxMCkpCisgICAgICAgIC50b19zbGljZSgpCisgICAgICAgIC5t YXAofHM6ICZzdHJ8IHp2YXJpYW50OjpWYWx1ZTo6STE2KHMucGFyc2UoKS51bndyYXAoKSkpCiAg ICAgICAgIC5sYWJlbGxlZCgiaTE2IikKICAgICAgICAgLnBhZGRlZCgpCiB9Ci1mbiBwYXJzZXJf dTMyKCkgLT4gaW1wbCBQYXJzZXI8Y2hhciwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBFcnJv ciA9IFNpbXBsZTxjaGFyPj4geworZm4gcGFyc2VyX3UzMjwnc3JjPigpIC0+IGltcGwgUGFyc2Vy PCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBFeHRyYTwnc3JjPj4g KyBDbG9uZQorewogICAgIHRleHQ6OmRpZ2l0cygxMCkKKyAgICAgICAgLnRvX3NsaWNlKCkKICAg ICAgICAgLmxhYmVsbGVkKCJ1MzIiKQotICAgICAgICAubWFwKHxzOiBTdHJpbmd8IHp2YXJpYW50 OjpWYWx1ZTo6VTMyKHMucGFyc2UoKS51bndyYXAoKSkpCisgICAgICAgIC5tYXAofHM6ICZzdHJ8 IHp2YXJpYW50OjpWYWx1ZTo6VTMyKHMucGFyc2UoKS51bndyYXAoKSkpCiAgICAgICAgIC5wYWRk ZWQoKQogfQotZm4gcGFyc2VyX2kzMigpIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpW YWx1ZTwnc3RhdGljPiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+IHsKK2ZuIHBhcnNlcl9pMzI8J3Ny Yz4oKSAtPiBpbXBsIFBhcnNlcjwnc3JjLCAmJ3NyYyBzdHIsIHp2YXJpYW50OjpWYWx1ZTwnc3Rh dGljPiwgRXh0cmE8J3NyYz4+ICsgQ2xvbmUKK3sKICAgICBqdXN0KCctJykKICAgICAgICAgLm9y X25vdCgpCi0gICAgICAgIC5jaGFpbjo6PGNoYXIsIF8sIF8+KHRleHQ6OmRpZ2l0cygxMCkpCi0g ICAgICAgIC5jb2xsZWN0Ojo8U3RyaW5nPigpCi0gICAgICAgIC5tYXAofHM6IFN0cmluZ3wgenZh cmlhbnQ6OlZhbHVlOjpJMzIocy5wYXJzZSgpLnVud3JhcCgpKSkKKyAgICAgICAgLnRoZW4odGV4 dDo6ZGlnaXRzKDEwKSkKKyAgICAgICAgLnRvX3NsaWNlKCkKKyAgICAgICAgLm1hcCh8czogJnN0 cnwgenZhcmlhbnQ6OlZhbHVlOjpJMzIocy5wYXJzZSgpLnVud3JhcCgpKSkKICAgICAgICAgLnBh ZGRlZCgpCiB9Ci1mbiBwYXJzZXJfdTY0KCkgLT4gaW1wbCBQYXJzZXI8Y2hhciwgenZhcmlhbnQ6 OlZhbHVlPCdzdGF0aWM+LCBFcnJvciA9IFNpbXBsZTxjaGFyPj4geworZm4gcGFyc2VyX3U2NDwn c3JjPigpIC0+IGltcGwgUGFyc2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZhbHVlPCdz dGF0aWM+LCBFeHRyYTwnc3JjPj4gKyBDbG9uZQorewogICAgIHRleHQ6OmRpZ2l0cygxMCkKKyAg ICAgICAgLnRvX3NsaWNlKCkKICAgICAgICAgLmxhYmVsbGVkKCJ1NjQiKQotICAgICAgICAubWFw KHxzOiBTdHJpbmd8IHp2YXJpYW50OjpWYWx1ZTo6VTY0KHMucGFyc2UoKS51bndyYXAoKSkpCisg ICAgICAgIC5tYXAofHM6ICZzdHJ8IHp2YXJpYW50OjpWYWx1ZTo6VTY0KHMucGFyc2UoKS51bndy YXAoKSkpCiAgICAgICAgIC5wYWRkZWQoKQogfQotZm4gcGFyc2VyX2k2NCgpIC0+IGltcGwgUGFy c2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+ IHsKK2ZuIHBhcnNlcl9pNjQ8J3NyYz4oKSAtPiBpbXBsIFBhcnNlcjwnc3JjLCAmJ3NyYyBzdHIs IHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXh0cmE8J3NyYz4+ICsgQ2xvbmUKK3sKICAgICBq dXN0KCctJykKICAgICAgICAgLm9yX25vdCgpCi0gICAgICAgIC5jaGFpbjo6PGNoYXIsIF8sIF8+ KHRleHQ6OmRpZ2l0cygxMCkpCi0gICAgICAgIC5jb2xsZWN0Ojo8U3RyaW5nPigpCisgICAgICAg IC50aGVuKHRleHQ6OmRpZ2l0cygxMCkpCisgICAgICAgIC50b19zbGljZSgpCiAgICAgICAgIC5s YWJlbGxlZCgiaTY0IikKLSAgICAgICAgLm1hcCh8czogU3RyaW5nfCB6dmFyaWFudDo6VmFsdWU6 Okk2NChzLnBhcnNlKCkudW53cmFwKCkpKQorICAgICAgICAubWFwKHxzOiAmc3RyfCB6dmFyaWFu dDo6VmFsdWU6Okk2NChzLnBhcnNlKCkudW53cmFwKCkpKQogICAgICAgICAucGFkZGVkKCkKIH0K LWZuIHBhcnNlcl9mNjQoKSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0 YXRpYz4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7CitmbiBwYXJzZXJfZjY0PCdzcmM+KCkgLT4g aW1wbCBQYXJzZXI8J3NyYywgJidzcmMgc3RyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4 dHJhPCdzcmM+PiArIENsb25lCit7CiAgICAganVzdCgnLScpCiAgICAgICAgIC5vcl9ub3QoKQot ICAgICAgICAuY2hhaW46OjxjaGFyLCBfLCBfPih0ZXh0OjpkaWdpdHMoMTApKQotICAgICAgICAu Y2hhaW46OjxjaGFyLCBfLCBfPihqdXN0KCcuJykuY2hhaW4odGV4dDo6ZGlnaXRzKDEwKSkub3Jf bm90KCkuZmxhdHRlbigpKQotICAgICAgICAuY29sbGVjdDo6PFN0cmluZz4oKQorICAgICAgICAu dGhlbih0ZXh0OjpkaWdpdHMoMTApKQorICAgICAgICAudGhlbihqdXN0KCcuJykudGhlbih0ZXh0 OjpkaWdpdHMoMTApKS5vcl9ub3QoKSkKKyAgICAgICAgLnRvX3NsaWNlKCkKICAgICAgICAgLmxh YmVsbGVkKCJmNjQiKQotICAgICAgICAubWFwKHxzOiBTdHJpbmd8IHp2YXJpYW50OjpWYWx1ZTo6 RjY0KHMucGFyc2UoKS51bndyYXAoKSkpCisgICAgICAgIC5tYXAofHM6ICZzdHJ8IHp2YXJpYW50 OjpWYWx1ZTo6RjY0KHMucGFyc2UoKS51bndyYXAoKSkpCiAgICAgICAgIC5wYWRkZWQoKQogfQot Zm4gcGFyc2VyX2Jvb2woKSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0 YXRpYz4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7CitmbiBwYXJzZXJfYm9vbDwnc3JjPigpIC0+ IGltcGwgUGFyc2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBF eHRyYTwnc3JjPj4gKyBDbG9uZQorewogICAgIGp1c3QoInRydWUiKQogICAgICAgICAubWFwKHxf fCB6dmFyaWFudDo6VmFsdWU6OkJvb2wodHJ1ZSkpCiAgICAgICAgIC5vcihqdXN0KCJmYWxzZSIp Lm1hcCh8X3wgenZhcmlhbnQ6OlZhbHVlOjpCb29sKGZhbHNlKSkpCiAgICAgICAgIC5sYWJlbGxl ZCgiYm9vbCIpCiAgICAgICAgIC5wYWRkZWQoKQogfQotZm4gcGFyc2VyX3N0cmluZygpIC0+IGlt cGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXJyb3IgPSBTaW1wbGU8 Y2hhcj4+IHsKLSAgICBsZXQgZXNjYXBlID0ganVzdCgnXFwnKS5pZ25vcmVfdGhlbigKLSAgICAg ICAganVzdCgnXFwnKQotICAgICAgICAgICAgLm9yKGp1c3QoJy8nKSkKLSAgICAgICAgICAgIC5v cihqdXN0KCciJykpCi0gICAgICAgICAgICAub3IoanVzdCgnYicpLnRvKCdceDA4JykpCi0gICAg ICAgICAgICAub3IoanVzdCgnZicpLnRvKCdceDBDJykpCi0gICAgICAgICAgICAub3IoanVzdCgn bicpLnRvKCdcbicpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ3InKS50bygnXHInKSkKLSAgICAg ICAgICAgIC5vcihqdXN0KCd0JykudG8oJ1x0JykpCi0gICAgICAgICAgICAub3IoanVzdCgndScp Lmlnbm9yZV90aGVuKAotICAgICAgICAgICAgICAgIGZpbHRlcih8YzogJmNoYXJ8IGMuaXNfYXNj aWlfaGV4ZGlnaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgLnJlcGVhdGVkKCkKLSAgICAgICAg ICAgICAgICAgICAgLmV4YWN0bHkoNCkKLSAgICAgICAgICAgICAgICAgICAgLmNvbGxlY3Q6OjxT dHJpbmc+KCkKLSAgICAgICAgICAgICAgICAgICAgLnZhbGlkYXRlKHxkaWdpdHMsIHNwYW4sIGVt aXR8IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXI6OmZyb21fdTMyKHUzMjo6ZnJvbV9z dHJfcmFkaXgoJmRpZ2l0cywgMTYpLnVud3JhcCgpKS51bndyYXBfb3JfZWxzZSgKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8fCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVtaXQoU2ltcGxlOjpjdXN0b20oc3BhbiwgImludmFsaWQgdW5pY29kZSBjaGFyYWN0ZXIiKSk7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdXtGRkZEfScgLy8gdW5pY29kZSBy ZXBsYWNlbWVudCBjaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg ICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAg ICAgICkpLAotICAgICk7Ci0gICAgbGV0IHN0cmluZyA9IGp1c3QoJyInKQotICAgICAgICAuaWdu b3JlX3RoZW4oZmlsdGVyKHxjfCAqYyAhPSAnXFwnICYmICpjICE9ICciJykub3IoZXNjYXBlKS5y ZXBlYXRlZCgpKQorCisvLy8gVGhlIHF1b3RlZCBzdHJpbmcgbGl0ZXJhbCB0aGF0IGlzIHNoYXJl ZCBieSB0aGUgc3RyaW5nLCBzaWduYXR1cmUgYW5kIG9iamVjdCBwYXRoIHBhcnNlcnMuCitmbiBx dW90ZWRfc3RyaW5nPCdzcmM+KCkgLT4gaW1wbCBQYXJzZXI8J3NyYywgJidzcmMgc3RyLCBTdHJp bmcsIEV4dHJhPCdzcmM+PiArIENsb25lIHsKKyAgICBsZXQgZXNjYXBlID0ganVzdCgnXFwnKS5p Z25vcmVfdGhlbihjaG9pY2UoKAorICAgICAgICBqdXN0KCdcXCcpLAorICAgICAgICBqdXN0KCcv JyksCisgICAgICAgIGp1c3QoJyInKSwKKyAgICAgICAganVzdCgnYicpLnRvKCdceDA4JyksCisg ICAgICAgIGp1c3QoJ2YnKS50bygnXHgwQycpLAorICAgICAgICBqdXN0KCduJykudG8oJ1xuJyks CisgICAgICAgIGp1c3QoJ3InKS50bygnXHInKSwKKyAgICAgICAganVzdCgndCcpLnRvKCdcdCcp LAorICAgICAgICBqdXN0KCd1JykuaWdub3JlX3RoZW4oCisgICAgICAgICAgICBhbnkoKQorICAg ICAgICAgICAgICAgIC5maWx0ZXIofGM6ICZjaGFyfCBjLmlzX2FzY2lpX2hleGRpZ2l0KCkpCisg ICAgICAgICAgICAgICAgLnJlcGVhdGVkKCkKKyAgICAgICAgICAgICAgICAuZXhhY3RseSg0KQor ICAgICAgICAgICAgICAgIC50b19zbGljZSgpCisgICAgICAgICAgICAgICAgLnZhbGlkYXRlKHxk aWdpdHM6ICZzdHIsIGV4dHJhLCBlbWl0dGVyfCB7CisgICAgICAgICAgICAgICAgICAgIGNoYXI6 OmZyb21fdTMyKHUzMjo6ZnJvbV9zdHJfcmFkaXgoZGlnaXRzLCAxNikudW53cmFwKCkpLnVud3Jh cF9vcl9lbHNlKHx8IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZXIuZW1pdChSaWNo OjpjdXN0b20oZXh0cmEuc3BhbigpLCAiaW52YWxpZCB1bmljb2RlIGNoYXJhY3RlciIpKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICdcdXtGRkZEfScgLy8gdW5pY29kZSByZXBsYWNlbWVudCBj aGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICB9KSwKKyAg ICAgICAgKSwKKyAgICApKSk7CisgICAganVzdCgnIicpCisgICAgICAgIC5pZ25vcmVfdGhlbihu b25lX29mKCJcXFwiIikub3IoZXNjYXBlKS5yZXBlYXRlZCgpLmNvbGxlY3Q6OjxTdHJpbmc+KCkp CiAgICAgICAgIC50aGVuX2lnbm9yZShqdXN0KCciJykpCi0gICAgICAgIC5jb2xsZWN0Ojo8U3Ry aW5nPigpCit9CisKK2ZuIHBhcnNlcl9zdHJpbmc8J3NyYz4oKQorLT4gaW1wbCBQYXJzZXI8J3Ny YywgJidzcmMgc3RyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4dHJhPCdzcmM+PiArIENs b25lIHsKKyAgICBxdW90ZWRfc3RyaW5nKCkKICAgICAgICAgLm1hcCh8c3wgenZhcmlhbnQ6OlZh bHVlOjpTdHIocy5pbnRvKCkpKQotICAgICAgICAubGFiZWxsZWQoInN0cmluZyIpOwotICAgIHN0 cmluZwotICAgICAgICAucmVjb3Zlcl93aXRoKHNraXBfdGhlbl9yZXRyeV91bnRpbChbJ30nLCAn XSddKSkKKyAgICAgICAgLmxhYmVsbGVkKCJzdHJpbmciKQorICAgICAgICAucmVjb3Zlcl93aXRo KHNraXBfdGhlbl9yZXRyeV91bnRpbChhbnkoKS5pZ25vcmVkKCksIG9uZV9vZigifV0iKS5pZ25v cmVkKCkpKQogICAgICAgICAucGFkZGVkKCkKIH0KLWZuIHBhcnNlcl9zaWduYXR1cmUoKSAtPiBp bXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEVycm9yID0gU2ltcGxl PGNoYXI+PiB7Ci0gICAgbGV0IGVzY2FwZSA9IGp1c3QoJ1xcJykuaWdub3JlX3RoZW4oCi0gICAg ICAgIGp1c3QoJ1xcJykKLSAgICAgICAgICAgIC5vcihqdXN0KCcvJykpCi0gICAgICAgICAgICAu b3IoanVzdCgnIicpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ2InKS50bygnXHgwOCcpKQotICAg ICAgICAgICAgLm9yKGp1c3QoJ2YnKS50bygnXHgwQycpKQotICAgICAgICAgICAgLm9yKGp1c3Qo J24nKS50bygnXG4nKSkKLSAgICAgICAgICAgIC5vcihqdXN0KCdyJykudG8oJ1xyJykpCi0gICAg ICAgICAgICAub3IoanVzdCgndCcpLnRvKCdcdCcpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ3Un KS5pZ25vcmVfdGhlbigKLSAgICAgICAgICAgICAgICBmaWx0ZXIofGM6ICZjaGFyfCBjLmlzX2Fz Y2lpX2hleGRpZ2l0KCkpCi0gICAgICAgICAgICAgICAgICAgIC5yZXBlYXRlZCgpCi0gICAgICAg ICAgICAgICAgICAgIC5leGFjdGx5KDQpCi0gICAgICAgICAgICAgICAgICAgIC5jb2xsZWN0Ojo8 U3RyaW5nPigpCi0gICAgICAgICAgICAgICAgICAgIC52YWxpZGF0ZSh8ZGlnaXRzLCBzcGFuLCBl bWl0fCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyOjpmcm9tX3UzMih1MzI6OmZyb21f c3RyX3JhZGl4KCZkaWdpdHMsIDE2KS51bndyYXAoKSkudW53cmFwX29yX2Vsc2UoCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgfHwgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbWl0KFNpbXBsZTo6Y3VzdG9tKHNwYW4sICJpbnZhbGlkIHVuaWNvZGUgY2hhcmFjdGVyIikp OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHV7RkZGRH0nIC8vIHVuaWNvZGUg cmVwbGFjZW1lbnQgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAg ICAgICApKSwKLSAgICApOwotICAgIGxldCBzdHJpbmcgPSBqdXN0KCciJykKLSAgICAgICAgLmln bm9yZV90aGVuKGZpbHRlcih8Y3wgKmMgIT0gJ1xcJyAmJiAqYyAhPSAnIicpLm9yKGVzY2FwZSku cmVwZWF0ZWQoKSkKLSAgICAgICAgLnRoZW5faWdub3JlKGp1c3QoJyInKSkKLSAgICAgICAgLmNv bGxlY3Q6OjxTdHJpbmc+KCkKLSAgICAgICAgLnRyeV9tYXAofGRpZ2l0cywgc3BhbnwgeworZm4g cGFyc2VyX3NpZ25hdHVyZTwnc3JjPigpCistPiBpbXBsIFBhcnNlcjwnc3JjLCAmJ3NyYyBzdHIs IHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXh0cmE8J3NyYz4+ICsgQ2xvbmUgeworICAgIHF1 b3RlZF9zdHJpbmcoKQorICAgICAgICAudHJ5X21hcCh8ZGlnaXRzOiBTdHJpbmcsIHNwYW58IHsK ICAgICAgICAgICAgIGlmIGxldCBPayhzaWduYXR1cmUpID0gU2lnbmF0dXJlOjpmcm9tX3N0cihk aWdpdHMuYXNfc3RyKCkpIHsKICAgICAgICAgICAgICAgICBPayh6dmFyaWFudDo6VmFsdWU6OlNp Z25hdHVyZShzaWduYXR1cmUpKQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg ICBFcnIoU2ltcGxlOjpjdXN0b20oCisgICAgICAgICAgICAgICAgRXJyKFJpY2g6OmN1c3RvbSgK ICAgICAgICAgICAgICAgICAgICAgc3BhbiwKICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5v dCBwYXJzZSBzaWduYXR1cmUgZnJvbSBzdHJpbmcgdmFsdWUiLAogICAgICAgICAgICAgICAgICkp CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pCi0gICAgICAgIC5sYWJlbGxlZCgic2lnbmF0dXJl Iik7Ci0KLSAgICBzdHJpbmcKLSAgICAgICAgLnJlY292ZXJfd2l0aChza2lwX3RoZW5fcmV0cnlf dW50aWwoWyd9JywgJ10nXSkpCisgICAgICAgIC5sYWJlbGxlZCgic2lnbmF0dXJlIikKKyAgICAg ICAgLnJlY292ZXJfd2l0aChza2lwX3RoZW5fcmV0cnlfdW50aWwoYW55KCkuaWdub3JlZCgpLCBv bmVfb2YoIn1dIikuaWdub3JlZCgpKSkKICAgICAgICAgLnBhZGRlZCgpCiB9Ci1mbiBwYXJzZXJf b2JqZWN0X3BhdGgoKSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRp Yz4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7Ci0gICAgbGV0IGVzY2FwZSA9IGp1c3QoJ1xcJyku aWdub3JlX3RoZW4oCi0gICAgICAgIGp1c3QoJ1xcJykKLSAgICAgICAgICAgIC5vcihqdXN0KCcv JykpCi0gICAgICAgICAgICAub3IoanVzdCgnIicpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ2In KS50bygnXHgwOCcpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ2YnKS50bygnXHgwQycpKQotICAg ICAgICAgICAgLm9yKGp1c3QoJ24nKS50bygnXG4nKSkKLSAgICAgICAgICAgIC5vcihqdXN0KCdy JykudG8oJ1xyJykpCi0gICAgICAgICAgICAub3IoanVzdCgndCcpLnRvKCdcdCcpKQotICAgICAg ICAgICAgLm9yKGp1c3QoJ3UnKS5pZ25vcmVfdGhlbigKLSAgICAgICAgICAgICAgICBmaWx0ZXIo fGM6ICZjaGFyfCBjLmlzX2FzY2lpX2hleGRpZ2l0KCkpCi0gICAgICAgICAgICAgICAgICAgIC5y ZXBlYXRlZCgpCi0gICAgICAgICAgICAgICAgICAgIC5leGFjdGx5KDQpCi0gICAgICAgICAgICAg ICAgICAgIC5jb2xsZWN0Ojo8U3RyaW5nPigpCi0gICAgICAgICAgICAgICAgICAgIC52YWxpZGF0 ZSh8ZGlnaXRzLCBzcGFuLCBlbWl0fCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyOjpm cm9tX3UzMih1MzI6OmZyb21fc3RyX3JhZGl4KCZkaWdpdHMsIDE2KS51bndyYXAoKSkudW53cmFw X29yX2Vsc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgewotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbWl0KFNpbXBsZTo6Y3VzdG9tKHNwYW4sICJpbnZhbGlkIHVu aWNvZGUgY2hhcmFjdGVyIikpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHV7 RkZGRH0nIC8vIHVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAg ICAgICAgfSksCi0gICAgICAgICAgICApKSwKLSAgICApOwotICAgIGxldCBzdHJpbmcgPSBqdXN0 KCciJykKLSAgICAgICAgLmlnbm9yZV90aGVuKGZpbHRlcih8Y3wgKmMgIT0gJ1xcJyAmJiAqYyAh PSAnIicpLm9yKGVzY2FwZSkucmVwZWF0ZWQoKSkKLSAgICAgICAgLnRoZW5faWdub3JlKGp1c3Qo JyInKSkKLSAgICAgICAgLmNvbGxlY3Q6OjxTdHJpbmc+KCkKLSAgICAgICAgLnRyeV9tYXAofGRp Z2l0cywgc3BhbnwgeworZm4gcGFyc2VyX29iamVjdF9wYXRoPCdzcmM+KCkKKy0+IGltcGwgUGFy c2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBFeHRyYTwnc3Jj Pj4gKyBDbG9uZSB7CisgICAgcXVvdGVkX3N0cmluZygpCisgICAgICAgIC50cnlfbWFwKHxkaWdp dHM6IFN0cmluZywgc3BhbnwgewogICAgICAgICAgICAgaWYgbGV0IE9rKHBhdGgpID0gT2JqZWN0 UGF0aDo6dHJ5X2Zyb20oZGlnaXRzKSB7CiAgICAgICAgICAgICAgICAgT2soenZhcmlhbnQ6OlZh bHVlOjpPYmplY3RQYXRoKHBhdGgpKQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgICBFcnIoU2ltcGxlOjpjdXN0b20oCisgICAgICAgICAgICAgICAgRXJyKFJpY2g6OmN1c3Rv bSgKICAgICAgICAgICAgICAgICAgICAgc3BhbiwKICAgICAgICAgICAgICAgICAgICAgIkNvdWxk IG5vdCBwYXJzZSBvYmplY3QgcGF0aCBmcm9tIHN0cmluZyB2YWx1ZSIsCiAgICAgICAgICAgICAg ICAgKSkKICAgICAgICAgICAgIH0KICAgICAgICAgfSkKLSAgICAgICAgLmxhYmVsbGVkKCJvYmpl Y3RfcGF0aCIpOwotCi0gICAgc3RyaW5nCi0gICAgICAgIC5yZWNvdmVyX3dpdGgoc2tpcF90aGVu X3JldHJ5X3VudGlsKFsnfScsICddJ10pKQorICAgICAgICAubGFiZWxsZWQoIm9iamVjdF9wYXRo IikKKyAgICAgICAgLnJlY292ZXJfd2l0aChza2lwX3RoZW5fcmV0cnlfdW50aWwoYW55KCkuaWdu b3JlZCgpLCBvbmVfb2YoIn1dIikuaWdub3JlZCgpKSkKICAgICAgICAgLnBhZGRlZCgpCiB9CiAK LWZuIHBhcnNlcl9mZCgpIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3Rh dGljPiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+IHsKLSAgICBlbXB0eSgpLnRyeV9tYXAofCgpLCBz cGFufCBFcnIoU2ltcGxlOjpjdXN0b20oc3BhbiwgIkNhbm5vdCBwYXJzZSBmaWxlIGRlc2NyaXB0 b3JzIikpKQorZm4gcGFyc2VyX2ZkPCdzcmM+KCkgLT4gaW1wbCBQYXJzZXI8J3NyYywgJidzcmMg c3RyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4dHJhPCdzcmM+PiArIENsb25lIHsKKyAg ICBlbXB0eSgpLnRyeV9tYXAofCgpLCBzcGFufCBFcnIoUmljaDo6Y3VzdG9tKHNwYW4sICJDYW5u b3QgcGFyc2UgZmlsZSBkZXNjcmlwdG9ycyIpKSkKIH0KIAogI1tjZmcodGVzdCldCkBAIC0zMzks NyArMzA1LDcgQEAgZm4gdGVzdF9nZW5lcmljX3NpZ25hdHVyZShzcmM6ICYnc3RhdGljIHN0ciwg c2lnbmF0dXJlOiAmJ3N0YXRpYyBzdHIsIHZhbHVlOiB6dmEKIAogICAgIGxldCBzaWduYXR1cmUg PSBTaWduYXR1cmU6OmZyb21fc3RyKHNpZ25hdHVyZSkudW53cmFwKCk7CiAgICAgcHJpbnRsbiEo Int9Iiwgc2lnbmF0dXJlKTsKLSAgICBsZXQgcmVzdWx0ID0gZ2V0X3BhcnNlcihzaWduYXR1cmUp LnBhcnNlKHNyYy50cmltKCkpOworICAgIGxldCByZXN1bHQgPSBnZXRfcGFyc2VyKHNpZ25hdHVy ZSkucGFyc2Uoc3JjLnRyaW0oKSkuaW50b19yZXN1bHQoKTsKICAgICBkYmchKCZyZXN1bHQpOwog ICAgIGRiZyEoJnZhbHVlKTsKICAgICBhc3NlcnRfZXEhKHJlc3VsdCwgT2sodmFsdWUpKTsKQEAg LTM4Niw3ICszNTIsNyBAQCBmbiB0ZXN0X3NpZ25hdHVyZSgpIHsKICAgICApOwogICAgIHVzZSBz dGQ6OnN0cjo6RnJvbVN0cjsKICAgICBsZXQgc2lnbmF0dXJlID0gU2lnbmF0dXJlOjpmcm9tX3N0 cigiZyIpLnVud3JhcCgpOwotICAgIGxldCByZXN1bHQgPSBnZXRfcGFyc2VyKHNpZ25hdHVyZSku cGFyc2UoImsiKTsgLy8gayBpcyBub3QgYSB2YWxpZCBzaWduYXR1cmUKKyAgICBsZXQgcmVzdWx0 ID0gZ2V0X3BhcnNlcihzaWduYXR1cmUpLnBhcnNlKCJrIikuaW50b19yZXN1bHQoKTsgLy8gayBp cyBub3QgYSB2YWxpZCBzaWduYXR1cmUKICAgICBhc3NlcnQhKHJlc3VsdC5pc19lcnIoKSk7CiB9 CiAKQEAgLTQxMCwxMCArMzc2LDEwIEBAIGZuIHRlc3Rfb2JqZWN0X3BhdGgoKSB7CiAgICAgdXNl IHN0ZDo6c3RyOjpGcm9tU3RyOwogCiAgICAgbGV0IHNpZ25hdHVyZSA9IFNpZ25hdHVyZTo6ZnJv bV9zdHIoIm8iKS51bndyYXAoKTsKLSAgICBsZXQgcmVzdWx0ID0gZ2V0X3BhcnNlcihzaWduYXR1 cmUpLnBhcnNlKCJrIik7IC8vIGsgaXMgbm90IGEgdmFsaWQgb2JqZWN0IHBhdGgKKyAgICBsZXQg cmVzdWx0ID0gZ2V0X3BhcnNlcihzaWduYXR1cmUpLnBhcnNlKCJrIikuaW50b19yZXN1bHQoKTsg Ly8gayBpcyBub3QgYSB2YWxpZCBvYmplY3QgcGF0aAogICAgIGFzc2VydCEocmVzdWx0LmlzX2Vy cigpKTsKICAgICBsZXQgc2lnbmF0dXJlID0gU2lnbmF0dXJlOjpmcm9tX3N0cigibyIpLnVud3Jh cCgpOwotICAgIGxldCByZXN1bHQgPSBnZXRfcGFyc2VyKHNpZ25hdHVyZSkucGFyc2UoIi8vIik7 IC8vIC8vIGlzIG5vdCBhIHZhbGlkIG9iamVjdCBwYXRoCisgICAgbGV0IHJlc3VsdCA9IGdldF9w YXJzZXIoc2lnbmF0dXJlKS5wYXJzZSgiLy8iKS5pbnRvX3Jlc3VsdCgpOyAvLyAvLyBpcyBub3Qg YSB2YWxpZCBvYmplY3QgcGF0aAogICAgIGFzc2VydCEocmVzdWx0LmlzX2VycigpKTsKIH0KIAot LSAKMi41NS4wCgo= --=-AqHGswZCE8QwUbiwmAAr--