From: Tomoyuki Chikanaga Date: 2010-10-20T23:16:40+09:00 Subject: [ruby-dev:42435] [Ruby 1.9-Bug#3970][Open] test_io.rb, test_io_m17n.rb の pipe の書き込みによる block を回避 --mimepart_4cbef9bc44859_ef6c153bb2235ad Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #3970: test_io.rb, test_io_m17n.rb の pipe の書き込みによる block を回避 http://redmine.ruby-lang.org/issues/show/3970 起票者: Tomoyuki Chikanaga ステータス: Open, 優先度: Normal カテゴリ: test ruby -v: ruby 1.9.3dev (2010-10-01 trunk 29385) [x86_64-darwin10.4.0] [ruby-dev:41422] で報告したように、Linux(RHEL Kernel 2.4.21-47.ELsmp)で make test-all が test_io.rb や test_io_m17n.rb の pipe への書き込みで block してしまいます。 普通はバッファサイズまでは書き込めるはずですが、一般的に pipe に block せずに書き込める byte 数はわからないのではないかと思いますので、test_io.rb, test_io_m17n.rb で 同期的に pipe への write -> read としていたテストは、別に Thread を起動して read させながら write するようにしてみました。 もともと一部のテストケースはそのために pipe というメソッドを利用していたので それを全体で使うようにしています。 make test-all が止まっていた環境で止まらずに全て流れ、エラーが増えないことを確認しました。 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4cbef9bc44859_ef6c153bb2235ad Content-Type: application/octet-stream; name=test_io.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=test_io.patch SW5kZXg6IHRlc3QvcnVieS90ZXN0X2lvX20xN24ucmIKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gdGVzdC9ydWJ5L3Rlc3RfaW9fbTE3bi5yYgkocmV2 aXNpb24gMjk1MTkpCisrKyB0ZXN0L3J1YnkvdGVzdF9pb19tMTduLnJiCSh3 b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSwxOCBAQAogICAgIH0KICAgZW5k CiAKKyAgZGVmIHBpcGUoKmFyZ3MsIHdwLCBycCkKKyAgICByLCB3ID0gSU8u cGlwZSgqYXJncykKKyAgICBydCA9IFRocmVhZC5uZXcgeyBycC5jYWxsKHIp IH0KKyAgICB3dCA9IFRocmVhZC5uZXcgeyB3cC5jYWxsKHcpIH0KKyAgICBm bHVuaygidGltZW91dCIpIHVubGVzcyBydC5qb2luKDEwKSAmJiB3dC5qb2lu KDEwKQorICBlbnN1cmUKKyAgICByLmNsb3NlIHVubGVzcyAhciB8fCByLmNs b3NlZD8KKyAgICB3LmNsb3NlIHVubGVzcyAhdyB8fCByLmNsb3NlZD8KKyAg ICAocnQua2lsbDsgcnQuam9pbikgaWYgcnQKKyAgICAod3Qua2lsbDsgd3Qu am9pbikgaWYgd3QKKyAgZW5kCisKICAgZGVmIHdpdGhfcGlwZSgqYXJncykK ICAgICByLCB3ID0gSU8ucGlwZSgqYXJncykKICAgICBiZWdpbgpAQCAtMjIw LDU0ICsyMzIsNjggQEAKICAgZW5kCiAKICAgZGVmIHRlc3Rfc19waXBlX2lu dmFsaWQKLSAgICB3aXRoX3BpcGUoInV0Zi04IiwgImV1Yy1qcCIsIDppbnZh bGlkPT46cmVwbGFjZSkge3xyLCB3fAotICAgICAgdyA8PCAiXHg4MCIKLSAg ICAgIHcuY2xvc2UKLSAgICAgIGFzc2VydF9lcXVhbCgiPyIsIHIucmVhZCkK LSAgICB9CisgICAgcGlwZSgidXRmLTgiLCAiZXVjLWpwIiwgeyA6aW52YWxp ZD0+OnJlcGxhY2UgfSwKKyAgICAgICAgcHJvYyBkbyB8d3wKKyAgICAgICAg ICB3IDw8ICJceDgwIgorICAgICAgICAgIHcuY2xvc2UKKyAgICAgICAgZW5k LAorICAgICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgIGFzc2VydF9lcXVh bCgiPyIsIHIucmVhZCkKKyAgICAgICAgZW5kKQogICBlbmQKIAogICBkZWYg dGVzdF9zX3BpcGVfdW5kZWYKLSAgICB3aXRoX3BpcGUoInV0Zi04OmV1Yy1q cCIsIDp1bmRlZj0+OnJlcGxhY2UpIHt8ciwgd3wKLSAgICAgIHcgPDwgIlx1 ZmZmZCIKLSAgICAgIHcuY2xvc2UKLSAgICAgIGFzc2VydF9lcXVhbCgiPyIs IHIucmVhZCkKLSAgICB9CisgICAgcGlwZSgidXRmLTg6ZXVjLWpwIiwgeyA6 dW5kZWY9PjpyZXBsYWNlIH0sCisgICAgICAgICBwcm9jIGRvIHx3fAorICAg ICAgICAgICB3IDw8ICJcdWZmZmQiCisgICAgICAgICAgIHcuY2xvc2UKKyAg ICAgICAgIGVuZCwKKyAgICAgICAgIHByb2MgZG8gfHJ8CisgICAgICAgICAg IGFzc2VydF9lcXVhbCgiPyIsIHIucmVhZCkKKyAgICAgICAgIGVuZCkKICAg ZW5kCiAKICAgZGVmIHRlc3Rfc19waXBlX3VuZGVmX3JlcGxhY2Vfc3RyaW5n Ci0gICAgd2l0aF9waXBlKCJ1dGYtODpldWMtanAiLCA6dW5kZWY9PjpyZXBs YWNlLCA6cmVwbGFjZT0+IlgiKSB7fHIsIHd8Ci0gICAgICB3IDw8ICJcdWZm ZmQiCi0gICAgICB3LmNsb3NlCi0gICAgICBhc3NlcnRfZXF1YWwoIlgiLCBy LnJlYWQpCi0gICAgfQorICAgIHBpcGUoInV0Zi04OmV1Yy1qcCIsIHsgOnVu ZGVmPT46cmVwbGFjZSwgOnJlcGxhY2U9PiJYIiB9LAorICAgICAgICAgcHJv YyBkbyB8d3wKKyAgICAgICAgICAgdyA8PCAiXHVmZmZkIgorICAgICAgICAg ICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAgICAgICBwcm9jIGRvIHxy fAorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlgiLCByLnJlYWQpCisgICAg ICAgICBlbmQpCiAgIGVuZAogCiAgIGRlZiB0ZXN0X2R1cAotICAgIHdpdGhf cGlwZSgidXRmLTg6ZXVjLWpwIikge3xyLCB3fAotICAgICAgdyA8PCAiXHUz MDQyIgotICAgICAgdy5jbG9zZQotICAgICAgcjIgPSByLmR1cAotICAgICAg YmVnaW4KLSAgICAgICAgYXNzZXJ0X2VxdWFsKCJceEE0XHhBMiIuZm9yY2Vf ZW5jb2RpbmcoImV1Yy1qcCIpLCByMi5yZWFkKQotICAgICAgZW5zdXJlCi0g ICAgICAgIHIyLmNsb3NlCi0gICAgICBlbmQKLQotICAgIH0KKyAgICBwaXBl KCJ1dGYtODpldWMtanAiLAorICAgICAgICAgcHJvYyBkbyB8d3wKKyAgICAg ICAgICAgdyA8PCAiXHUzMDQyIgorICAgICAgICAgICB3LmNsb3NlCisgICAg ICAgICBlbmQsCisgICAgICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgICBy MiA9IHIuZHVwCisgICAgICAgICAgIGJlZ2luCisgICAgICAgICAgICAgYXNz ZXJ0X2VxdWFsKCJceEE0XHhBMiIuZm9yY2VfZW5jb2RpbmcoImV1Yy1qcCIp LCByMi5yZWFkKQorICAgICAgICAgICBlbnN1cmUKKyAgICAgICAgICAgICBy Mi5jbG9zZQorICAgICAgICAgICBlbmQKKyAgICAgICAgIGVuZCkKICAgZW5k CiAKICAgZGVmIHRlc3RfZHVwX3VuZGVmCi0gICAgd2l0aF9waXBlKCJ1dGYt ODpldWMtanAiLCA6dW5kZWY9PjpyZXBsYWNlKSB7fHIsIHd8Ci0gICAgICB3 IDw8ICJcdUZGRkQiCi0gICAgICB3LmNsb3NlCi0gICAgICByMiA9IHIuZHVw Ci0gICAgICBiZWdpbgotICAgICAgICBhc3NlcnRfZXF1YWwoIj8iLCByMi5y ZWFkKQotICAgICAgZW5zdXJlCi0gICAgICAgIHIyLmNsb3NlCi0gICAgICBl bmQKLSAgICB9CisgICAgcGlwZSgidXRmLTg6ZXVjLWpwIiwgeyA6dW5kZWY9 PjpyZXBsYWNlIH0sCisgICAgICAgICBwcm9jIGRvIHx3fAorICAgICAgICAg ICB3IDw8ICJcdUZGRkQiCisgICAgICAgICAgIHcuY2xvc2UKKyAgICAgICAg IGVuZCwKKyAgICAgICAgIHByb2MgZG8gfHJ8CisgICAgICAgICAgIHIyID0g ci5kdXAKKyAgICAgICAgICAgYmVnaW4KKyAgICAgICAgICAgICBhc3NlcnRf ZXF1YWwoIj8iLCByMi5yZWFkKQorICAgICAgICAgICBlbnN1cmUKKyAgICAg ICAgICAgICByMi5jbG9zZQorICAgICAgICAgICBlbmQKKyAgICAgICAgIGVu ZCkKICAgZW5kCiAKICAgZGVmIHRlc3Rfc3RkaW4KQEAgLTMzMSw0NyArMzU3 LDUzIEBACiAgIGVuZAogCiAgIGRlZiB0ZXN0X3BpcGVfdGVybWluYXRvcl9j b252ZXJzaW9uCi0gICAgd2l0aF9waXBlKCJldWMtanA6dXRmLTgiKSB7fHIs IHd8Ci0gICAgICB3LndyaXRlICJiZWZvcmUgXHhhMlx4YTIgYWZ0ZXIiCi0g ICAgICBycyA9ICJceEEyXHhBMiIuZW5jb2RlKCJ1dGYtOCIsICJldWMtanAi KQotICAgICAgdy5jbG9zZQotICAgICAgdGltZW91dCgxKSB7Ci0gICAgICAg IGFzc2VydF9lcXVhbCgiYmVmb3JlIFx4YTJceGEyIi5lbmNvZGUoInV0Zi04 IiwgImV1Yy1qcCIpLAotICAgICAgICAgICAgICAgICAgICAgci5nZXRzKHJz KSkKLSAgICAgIH0KLSAgICB9CisgICAgcnMgPSAiXHhBMlx4QTIiLmVuY29k ZSgidXRmLTgiLCAiZXVjLWpwIikKKyAgICBwaXBlKCJldWMtanA6dXRmLTgi LAorICAgICAgICAgcHJvYyBkbyB8d3wKKyAgICAgICAgICAgdy53cml0ZSAi YmVmb3JlIFx4YTJceGEyIGFmdGVyIgorICAgICAgICAgICB3LmNsb3NlCisg ICAgICAgICBlbmQsCisgICAgICAgICBwcm9jIGRvIHxyfAorICAgICAgICAg ICB0aW1lb3V0KDEpIHsKKyAgICAgICAgICAgICBhc3NlcnRfZXF1YWwoImJl Zm9yZSBceGEyXHhhMiIuZW5jb2RlKCJ1dGYtOCIsICJldWMtanAiKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgci5nZXRzKHJzKSkKKyAgICAgICAg ICAgfQorICAgICAgICAgZW5kKQogICBlbmQKIAogICBkZWYgdGVzdF9waXBl X2NvbnZlcnNpb24KLSAgICB3aXRoX3BpcGUoImV1Yy1qcDp1dGYtOCIpIHt8 ciwgd3wKLSAgICAgIHcud3JpdGUgIlx4YTFceGExIgotICAgICAgYXNzZXJ0 X2VxdWFsKCJceGExXHhhMSIuZW5jb2RlKCJ1dGYtOCIsICJldWMtanAiKSwg ci5nZXRjKQotICAgIH0KKyAgICBwaXBlKCJldWMtanA6dXRmLTgiLAorICAg ICAgICAgcHJvYyBkbyB8d3wKKyAgICAgICAgICAgdy53cml0ZSAiXHhhMVx4 YTEiCisgICAgICAgICBlbmQsCisgICAgICAgICBwcm9jIGRvIHxyfAorICAg ICAgICAgICBhc3NlcnRfZXF1YWwoIlx4YTFceGExIi5lbmNvZGUoInV0Zi04 IiwgImV1Yy1qcCIpLCByLmdldGMpCisgICAgICAgICBlbmQpCiAgIGVuZAog CiAgIGRlZiB0ZXN0X3BpcGVfY29udmVydF9wYXJ0aWFsX3JlYWQKLSAgICB3 aXRoX3BpcGUoImV1Yy1qcDp1dGYtOCIpIHt8ciwgd3wKLSAgICAgIGJlZ2lu Ci0gICAgICAgIHQgPSBUaHJlYWQubmV3IHsKLSAgICAgICAgICB3LndyaXRl ICJceGExIgotICAgICAgICAgIHNsZWVwIDAuMQotICAgICAgICAgIHcud3Jp dGUgIlx4YTEiCi0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0X2VxdWFsKCJc eGExXHhhMSIuZW5jb2RlKCJ1dGYtOCIsICJldWMtanAiKSwgci5nZXRjKQot ICAgICAgZW5zdXJlCi0gICAgICAgIHQuam9pbiBpZiB0Ci0gICAgICBlbmQK LSAgICB9CisgICAgcGlwZSgiZXVjLWpwOnV0Zi04IiwKKyAgICAgICAgIHBy b2MgZG8gfHd8CisgICAgICAgICAgIHcud3JpdGUgIlx4YTEiCisgICAgICAg ICAgIHNsZWVwIDAuMQorICAgICAgICAgICB3LndyaXRlICJceGExIgorICAg ICAgICAgZW5kLAorICAgICAgICAgcHJvYyBkbyB8cnwKKyAgICAgICAgICAg YXNzZXJ0X2VxdWFsKCJceGExXHhhMSIuZW5jb2RlKCJ1dGYtOCIsICJldWMt anAiKSwgci5nZXRjKQorICAgICAgICAgZW5kKQogICBlbmQKIAogICBkZWYg dGVzdF9nZXRjX2ludmFsaWQKLSAgICB3aXRoX3BpcGUoImV1Yy1qcDp1dGYt OCIpIHt8ciwgd3wKLSAgICAgIHcgPDwgIlx4YTF4eXoiCi0gICAgICB3LmNs b3NlCi0gICAgICBlcnIgPSBhc3NlcnRfcmFpc2UoRW5jb2Rpbmc6OkludmFs aWRCeXRlU2VxdWVuY2VFcnJvcikgeyByLmdldGMgfQotICAgICAgYXNzZXJ0 X2VxdWFsKCJceEExIi5mb3JjZV9lbmNvZGluZygiYXNjaWktOGJpdCIpLCBl cnIuZXJyb3JfYnl0ZXMpCi0gICAgICBhc3NlcnRfZXF1YWwoInh5eiIsIHIu cmVhZCgxMCkpCi0gICAgfQorICAgIHBpcGUoImV1Yy1qcDp1dGYtOCIsCisg ICAgICAgICBwcm9jIGRvIHx3fAorICAgICAgICAgICB3IDw8ICJceGExeHl6 IgorICAgICAgICAgICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAgICAg ICBwcm9jIGRvIHxyfAorICAgICAgICAgICBlcnIgPSBhc3NlcnRfcmFpc2Uo RW5jb2Rpbmc6OkludmFsaWRCeXRlU2VxdWVuY2VFcnJvcikgeyByLmdldGMg fQorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlx4QTEiLmZvcmNlX2VuY29k aW5nKCJhc2NpaS04Yml0IiksIGVyci5lcnJvcl9ieXRlcykKKyAgICAgICAg ICAgYXNzZXJ0X2VxdWFsKCJ4eXoiLCByLnJlYWQoMTApKQorICAgICAgICAg ZW5kKQogICBlbmQKIAogICBkZWYgdGVzdF9nZXRjX3N0YXRlZnVsX2NvbnZl cnNpb24KQEAgLTU5NywzNyArNjI5LDQ3IEBACiAgICAgdXRmOCA9ICJcdTY2 NjYiCiAgICAgZXVjanAgPSAiXHhiM1x4YTIiLmZvcmNlX2VuY29kaW5nKCJF VUMtSlAiKQogCi0gICAgd2l0aF9waXBlIHt8cix3fAorICAgIHBpcGUocHJv YyBkbyB8d3wKKyAgICAgIHcgPDwgdXRmOAorICAgICAgdy5jbG9zZQorICAg IGVuZCwgcHJvYyBkbyB8cnwKICAgICAgIGFzc2VydF9lcXVhbChFbmNvZGlu Zy5kZWZhdWx0X2V4dGVybmFsLCByLmV4dGVybmFsX2VuY29kaW5nKQogICAg ICAgYXNzZXJ0X2VxdWFsKG5pbCwgci5pbnRlcm5hbF9lbmNvZGluZykKLSAg ICAgIHcgPDwgdXRmOAotICAgICAgdy5jbG9zZQogICAgICAgcyA9IHIucmVh ZAogICAgICAgYXNzZXJ0X2VxdWFsKEVuY29kaW5nLmRlZmF1bHRfZXh0ZXJu YWwsIHMuZW5jb2RpbmcpCiAgICAgICBhc3NlcnRfc3RyX2VxdWFsKHV0Zjgu ZHVwLmZvcmNlX2VuY29kaW5nKEVuY29kaW5nLmRlZmF1bHRfZXh0ZXJuYWwp LCBzKQotICAgIH0KKyAgICBlbmQpCiAKLSAgICB3aXRoX3BpcGUoIkVVQy1K UCIpIHt8cix3fAotICAgICAgYXNzZXJ0X2VxdWFsKEVuY29kaW5nOjpFVUNf SlAsIHIuZXh0ZXJuYWxfZW5jb2RpbmcpCi0gICAgICBhc3NlcnRfZXF1YWwo bmlsLCByLmludGVybmFsX2VuY29kaW5nKQotICAgICAgdyA8PCBldWNqcAot ICAgICAgdy5jbG9zZQotICAgICAgYXNzZXJ0X2VxdWFsKGV1Y2pwLCByLnJl YWQpCi0gICAgfQorICAgIHBpcGUoIkVVQy1KUCIsCisgICAgICAgICBwcm9j IGRvIHx3fAorICAgICAgICAgICB3IDw8IGV1Y2pwCisgICAgICAgICAgIHcu Y2xvc2UKKyAgICAgICAgIGVuZCwKKyAgICAgICAgIHByb2MgZG8gfHJ8Cisg ICAgICAgICAgIGFzc2VydF9lcXVhbChFbmNvZGluZzo6RVVDX0pQLCByLmV4 dGVybmFsX2VuY29kaW5nKQorICAgICAgICAgICBhc3NlcnRfZXF1YWwobmls LCByLmludGVybmFsX2VuY29kaW5nKQorICAgICAgICAgICBhc3NlcnRfZXF1 YWwoZXVjanAsIHIucmVhZCkKKyAgICAgICAgIGVuZCkKIAotICAgIHdpdGhf cGlwZSgiVVRGLTgiKSB7fHIsd3wKLSAgICAgIHcgPDwgImEiICogMTAyMyAr ICJcdTMwNDIiICsgImEiICogMTAyMgotICAgICAgdy5jbG9zZQotICAgICAg YXNzZXJ0X2VxdWFsKHRydWUsIHIucmVhZC52YWxpZF9lbmNvZGluZz8pCi0g ICAgfQorICAgIHBpcGUoIlVURi04IiwKKyAgICAgICAgIHByb2MgZG8gfHd8 CisgICAgICAgICAgIHcgPDwgImEiICogMTAyMyArICJcdTMwNDIiICsgImEi ICogMTAyMgorICAgICAgICAgICB3LmNsb3NlCisgICAgICAgICBlbmQsCisg ICAgICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgICBhc3NlcnRfZXF1YWwo dHJ1ZSwgci5yZWFkLnZhbGlkX2VuY29kaW5nPykKKyAgICAgICAgIGVuZCkK IAotICAgIHdpdGhfcGlwZSgiVVRGLTg6RVVDLUpQIikge3xyLHd8Ci0gICAg ICBhc3NlcnRfZXF1YWwoRW5jb2Rpbmc6OlVURl84LCByLmV4dGVybmFsX2Vu Y29kaW5nKQotICAgICAgYXNzZXJ0X2VxdWFsKEVuY29kaW5nOjpFVUNfSlAs IHIuaW50ZXJuYWxfZW5jb2RpbmcpCi0gICAgICB3IDw8IHV0ZjgKLSAgICAg IHcuY2xvc2UKLSAgICAgIGFzc2VydF9lcXVhbChldWNqcCwgci5yZWFkKQot ICAgIH0KKyAgICBwaXBlKCJVVEYtODpFVUMtSlAiLAorICAgICAgICAgcHJv YyBkbyB8d3wKKyAgICAgICAgICAgdyA8PCB1dGY4CisgICAgICAgICAgIHcu Y2xvc2UKKyAgICAgICAgIGVuZCwKKyAgICAgICAgIHByb2MgZG8gfHJ8Cisg ICAgICAgICAgIGFzc2VydF9lcXVhbChFbmNvZGluZzo6VVRGXzgsIHIuZXh0 ZXJuYWxfZW5jb2RpbmcpCisgICAgICAgICAgIGFzc2VydF9lcXVhbChFbmNv ZGluZzo6RVVDX0pQLCByLmludGVybmFsX2VuY29kaW5nKQorICAgICAgICAg ICBhc3NlcnRfZXF1YWwoZXVjanAsIHIucmVhZCkKKyAgICAgICAgIGVuZCkK IAogICAgIGUgPSBhc3NlcnRfcmFpc2UoQXJndW1lbnRFcnJvcikge3dpdGhf cGlwZSgiVVRGLTgiLCAiVVRGLTgiLmVuY29kZSgiVVRGLTMyQkUiKSkge319 CiAgICAgYXNzZXJ0X21hdGNoKC9pbnZhbGlkIG5hbWUgZW5jb2RpbmcvLCBl Lm1lc3NhZ2UpCkBAIC02MzUsMTQ3ICs2NzcsMTc0IEBACiAgICAgYXNzZXJ0 X21hdGNoKC9pbnZhbGlkIG5hbWUgZW5jb2RpbmcvLCBlLm1lc3NhZ2UpCiAK ICAgICBFTkNTLmVhY2gge3xlbmN8Ci0gICAgICB3aXRoX3BpcGUoZW5jKSB7 fHIsIHd8Ci0gICAgICAgIHcgPDwgIlx4YzJceGExIgotICAgICAgICB3LmNs b3NlCi0gICAgICAgIHMgPSByLmdldGMKLSAgICAgICAgYXNzZXJ0X2VxdWFs KGVuYywgcy5lbmNvZGluZykKLSAgICAgIH0KKyAgICAgIHBpcGUoZW5jLAor ICAgICAgICAgICBwcm9jIGRvIHx3fAorICAgICAgICAgICAgIHcgPDwgIlx4 YzJceGExIgorICAgICAgICAgICAgIHcuY2xvc2UKKyAgICAgICAgICAgZW5k LAorICAgICAgICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgICAgIHMgPSBy LmdldGMKKyAgICAgICAgICAgICBhc3NlcnRfZXF1YWwoZW5jLCBzLmVuY29k aW5nKQorICAgICAgICAgICBlbmQpCiAgICAgfQogCiAgICAgRU5DUy5lYWNo IHt8ZW5jfAogICAgICAgbmV4dCBpZiBlbmMgPT0gRW5jb2Rpbmc6OkFTQ0lJ XzhCSVQKICAgICAgIG5leHQgaWYgZW5jID09IEVuY29kaW5nOjpVVEZfOAot ICAgICAgd2l0aF9waXBlKCIje2VuY306VVRGLTgiKSB7fHIsIHd8Ci0gICAg ICAgIHcgPDwgIlx4YzJceGExIgotICAgICAgICB3LmNsb3NlCi0gICAgICAg IHMgPSByLnJlYWQKLSAgICAgICAgYXNzZXJ0X2VxdWFsKEVuY29kaW5nOjpV VEZfOCwgcy5lbmNvZGluZykKLSAgICAgICAgYXNzZXJ0X2VxdWFsKHMuZW5j b2RlKCJVVEYtOCIpLCBzKQotICAgICAgfQorICAgICAgcGlwZSgiI3tlbmN9 OlVURi04IiwKKyAgICAgICAgICAgcHJvYyBkbyB8d3wKKyAgICAgICAgICAg ICB3IDw8ICJceGMyXHhhMSIKKyAgICAgICAgICAgICB3LmNsb3NlCisgICAg ICAgICAgIGVuZCwKKyAgICAgICAgICAgcHJvYyBkbyB8cnwKKyAgICAgICAg ICAgICBzID0gci5yZWFkCisgICAgICAgICAgICAgYXNzZXJ0X2VxdWFsKEVu Y29kaW5nOjpVVEZfOCwgcy5lbmNvZGluZykKKyAgICAgICAgICAgICBhc3Nl cnRfZXF1YWwocy5lbmNvZGUoIlVURi04IiksIHMpCisgICAgICAgICAgIGVu ZCkKICAgICB9CiAKICAgZW5kCiAKICAgZGVmIHRlc3RfbWFyc2hhbAotICAg IHdpdGhfcGlwZSgiRVVDLUpQIikge3xyLCB3fAotICAgICAgZGF0YSA9IDU2 MjI1Ci0gICAgICBNYXJzaGFsLmR1bXAoZGF0YSwgdykKLSAgICAgIHcuY2xv c2UKLSAgICAgIHJlc3VsdCA9IG5pbAotICAgICAgYXNzZXJ0X25vdGhpbmdf cmFpc2VkKCJbcnVieS1kZXY6MzMyNjRdIikgeyByZXN1bHQgPSBNYXJzaGFs LmxvYWQocikgfQotICAgICAgYXNzZXJ0X2VxdWFsKGRhdGEsIHJlc3VsdCkK LSAgICB9CisgICAgZGF0YSA9IDU2MjI1CisgICAgcGlwZSgiRVVDLUpQIiwK KyAgICAgICAgIHByb2MgZG8gfHd8CisgICAgICAgICAgIE1hcnNoYWwuZHVt cChkYXRhLCB3KQorICAgICAgICAgICB3LmNsb3NlCisgICAgICAgICBlbmQs CisgICAgICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgICByZXN1bHQgPSBu aWwKKyAgICAgICAgICAgYXNzZXJ0X25vdGhpbmdfcmFpc2VkKCJbcnVieS1k ZXY6MzMyNjRdIikgeyByZXN1bHQgPSBNYXJzaGFsLmxvYWQocikgfQorICAg ICAgICAgICBhc3NlcnRfZXF1YWwoZGF0YSwgcmVzdWx0KQorICAgICAgICAg ZW5kKQogICBlbmQKIAogICBkZWYgdGVzdF9nZXRzX25pbAotICAgIHdpdGhf cGlwZSgiVVRGLTg6RVVDLUpQIikge3xyLCB3fAotICAgICAgdyA8PCAiXHV7 MzA0Mn0iCi0gICAgICB3LmNsb3NlCi0gICAgICByZXN1bHQgPSByLmdldHMo bmlsKQotICAgICAgYXNzZXJ0X2VxdWFsKCJcdXszMDQyfSIuZW5jb2RlKCJl dWMtanAiKSwgcmVzdWx0KQotICAgIH0KKyAgICBwaXBlKCJVVEYtODpFVUMt SlAiLAorICAgICAgICAgcHJvYyBkbyB8d3wKKyAgICAgICAgICAgdyA8PCAi XHV7MzA0Mn0iCisgICAgICAgICAgIHcuY2xvc2UKKyAgICAgICAgIGVuZCwK KyAgICAgICAgIHByb2MgZG8gfHJ8CisgICAgICAgICAgIHJlc3VsdCA9IHIu Z2V0cyhuaWwpCisgICAgICAgICAgIGFzc2VydF9lcXVhbCgiXHV7MzA0Mn0i LmVuY29kZSgiZXVjLWpwIiksIHJlc3VsdCkKKyAgICAgICAgIGVuZCkKICAg ZW5kCiAKICAgZGVmIHRlc3RfZ2V0c19saW1pdAotICAgIHdpdGhfcGlwZSgi ZXVjLWpwIikge3xyLCB3fCB3IDw8ICJceGE0XHhhMlx4YTRceGE0XHhhNFx4 YTZcblx4YTRceGE4XHhhNFx4YWEiOyB3LmNsb3NlCi0gICAgICBhc3NlcnRf ZXF1YWwoIlx4YTRceGEyIi5mb3JjZV9lbmNvZGluZygiZXVjLWpwIiksIHIu Z2V0cygxKSkKLSAgICB9Ci0gICAgd2l0aF9waXBlKCJldWMtanAiKSB7fHIs IHd8IHcgPDwgIlx4YTRceGEyXHhhNFx4YTRceGE0XHhhNlxuXHhhNFx4YThc eGE0XHhhYSI7IHcuY2xvc2UKLSAgICAgIGFzc2VydF9lcXVhbCgiXHhhNFx4 YTIiLmZvcmNlX2VuY29kaW5nKCJldWMtanAiKSwgci5nZXRzKDIpKQotICAg IH0KLSAgICB3aXRoX3BpcGUoImV1Yy1qcCIpIHt8ciwgd3wgdyA8PCAiXHhh NFx4YTJceGE0XHhhNFx4YTRceGE2XG5ceGE0XHhhOFx4YTRceGFhIjsgdy5j bG9zZQotICAgICAgYXNzZXJ0X2VxdWFsKCJceGE0XHhhMlx4YTRceGE0Ii5m b3JjZV9lbmNvZGluZygiZXVjLWpwIiksIHIuZ2V0cygzKSkKLSAgICB9Ci0g ICAgd2l0aF9waXBlKCJldWMtanAiKSB7fHIsIHd8IHcgPDwgIlx4YTRceGEy XHhhNFx4YTRceGE0XHhhNlxuXHhhNFx4YThceGE0XHhhYSI7IHcuY2xvc2UK LSAgICAgIGFzc2VydF9lcXVhbCgiXHhhNFx4YTJceGE0XHhhNCIuZm9yY2Vf ZW5jb2RpbmcoImV1Yy1qcCIpLCByLmdldHMoNCkpCi0gICAgfQotICAgIHdp dGhfcGlwZSgiZXVjLWpwIikge3xyLCB3fCB3IDw8ICJceGE0XHhhMlx4YTRc eGE0XHhhNFx4YTZcblx4YTRceGE4XHhhNFx4YWEiOyB3LmNsb3NlCi0gICAg ICBhc3NlcnRfZXF1YWwoIlx4YTRceGEyXHhhNFx4YTRceGE0XHhhNiIuZm9y Y2VfZW5jb2RpbmcoImV1Yy1qcCIpLCByLmdldHMoNSkpCi0gICAgfQotICAg IHdpdGhfcGlwZSgiZXVjLWpwIikge3xyLCB3fCB3IDw8ICJceGE0XHhhMlx4 YTRceGE0XHhhNFx4YTZcblx4YTRceGE4XHhhNFx4YWEiOyB3LmNsb3NlCi0g ICAgICBhc3NlcnRfZXF1YWwoIlx4YTRceGEyXHhhNFx4YTRceGE0XHhhNiIu Zm9yY2VfZW5jb2RpbmcoImV1Yy1qcCIpLCByLmdldHMoNikpCi0gICAgfQot ICAgIHdpdGhfcGlwZSgiZXVjLWpwIikge3xyLCB3fCB3IDw8ICJceGE0XHhh Mlx4YTRceGE0XHhhNFx4YTZcblx4YTRceGE4XHhhNFx4YWEiOyB3LmNsb3Nl Ci0gICAgICBhc3NlcnRfZXF1YWwoIlx4YTRceGEyXHhhNFx4YTRceGE0XHhh NlxuIi5mb3JjZV9lbmNvZGluZygiZXVjLWpwIiksIHIuZ2V0cyg3KSkKLSAg ICB9Ci0gICAgd2l0aF9waXBlKCJldWMtanAiKSB7fHIsIHd8IHcgPDwgIlx4 YTRceGEyXHhhNFx4YTRceGE0XHhhNlxuXHhhNFx4YThceGE0XHhhYSI7IHcu Y2xvc2UKLSAgICAgIGFzc2VydF9lcXVhbCgiXHhhNFx4YTJceGE0XHhhNFx4 YTRceGE2XG4iLmZvcmNlX2VuY29kaW5nKCJldWMtanAiKSwgci5nZXRzKDgp KQotICAgIH0KLSAgICB3aXRoX3BpcGUoImV1Yy1qcCIpIHt8ciwgd3wgdyA8 PCAiXHhhNFx4YTJceGE0XHhhNFx4YTRceGE2XG5ceGE0XHhhOFx4YTRceGFh Ijsgdy5jbG9zZQotICAgICAgYXNzZXJ0X2VxdWFsKCJceGE0XHhhMlx4YTRc eGE0XHhhNFx4YTZcbiIuZm9yY2VfZW5jb2RpbmcoImV1Yy1qcCIpLCByLmdl dHMoOSkpCi0gICAgfQorICAgIHBpcGUoImV1Yy1qcCIsCisgICAgICAgICBw cm9jIHt8d3wgdyA8PCAiXHhhNFx4YTJceGE0XHhhNFx4YTRceGE2XG5ceGE0 XHhhOFx4YTRceGFhIjsgdy5jbG9zZSB9LAorICAgICAgICAgcHJvYyB7fHJ8 IGFzc2VydF9lcXVhbCgiXHhhNFx4YTIiLmZvcmNlX2VuY29kaW5nKCJldWMt anAiKSwgci5nZXRzKDEpKSB9KQorICAgIHBpcGUoImV1Yy1qcCIsCisgICAg ICAgICBwcm9jIHt8d3wgdyA8PCAiXHhhNFx4YTJceGE0XHhhNFx4YTRceGE2 XG5ceGE0XHhhOFx4YTRceGFhIjsgdy5jbG9zZSB9LAorICAgICAgICAgcHJv YyB7fHJ8IGFzc2VydF9lcXVhbCgiXHhhNFx4YTIiLmZvcmNlX2VuY29kaW5n KCJldWMtanAiKSwgci5nZXRzKDIpKSB9KQorICAgIHBpcGUoImV1Yy1qcCIs CisgICAgICAgICBwcm9jIHt8d3wgdyA8PCAiXHhhNFx4YTJceGE0XHhhNFx4 YTRceGE2XG5ceGE0XHhhOFx4YTRceGFhIjsgdy5jbG9zZSB9LAorICAgICAg ICAgcHJvYyB7fHJ8IGFzc2VydF9lcXVhbCgiXHhhNFx4YTJceGE0XHhhNCIu Zm9yY2VfZW5jb2RpbmcoImV1Yy1qcCIpLCByLmdldHMoMykpIH0pCisgICAg cGlwZSgiZXVjLWpwIiwKKyAgICAgICAgIHByb2Mge3x3fCB3IDw8ICJceGE0 XHhhMlx4YTRceGE0XHhhNFx4YTZcblx4YTRceGE4XHhhNFx4YWEiOyB3LmNs b3NlIH0sCisgICAgICAgICBwcm9jIHt8cnwgYXNzZXJ0X2VxdWFsKCJceGE0 XHhhMlx4YTRceGE0Ii5mb3JjZV9lbmNvZGluZygiZXVjLWpwIiksIHIuZ2V0 cyg0KSkgfSkKKyAgICBwaXBlKCJldWMtanAiLAorICAgICAgICAgcHJvYyB7 fHd8IHcgPDwgIlx4YTRceGEyXHhhNFx4YTRceGE0XHhhNlxuXHhhNFx4YThc eGE0XHhhYSI7IHcuY2xvc2UgfSwKKyAgICAgICAgIHByb2Mge3xyfCBhc3Nl cnRfZXF1YWwoIlx4YTRceGEyXHhhNFx4YTRceGE0XHhhNiIuZm9yY2VfZW5j b2RpbmcoImV1Yy1qcCIpLCByLmdldHMoNSkpIH0pCisgICAgcGlwZSgiZXVj LWpwIiwKKyAgICAgICAgIHByb2Mge3x3fCB3IDw8ICJceGE0XHhhMlx4YTRc eGE0XHhhNFx4YTZcblx4YTRceGE4XHhhNFx4YWEiOyB3LmNsb3NlIH0sCisg ICAgICAgICBwcm9jIHt8cnwgYXNzZXJ0X2VxdWFsKCJceGE0XHhhMlx4YTRc eGE0XHhhNFx4YTYiLmZvcmNlX2VuY29kaW5nKCJldWMtanAiKSwgci5nZXRz KDYpKSB9KQorICAgIHBpcGUoImV1Yy1qcCIsCisgICAgICAgICBwcm9jIHt8 d3wgdyA8PCAiXHhhNFx4YTJceGE0XHhhNFx4YTRceGE2XG5ceGE0XHhhOFx4 YTRceGFhIjsgdy5jbG9zZSB9LAorICAgICAgICAgcHJvYyB7fHJ8IGFzc2Vy dF9lcXVhbCgiXHhhNFx4YTJceGE0XHhhNFx4YTRceGE2XG4iLmZvcmNlX2Vu Y29kaW5nKCJldWMtanAiKSwgci5nZXRzKDcpKSB9KQorICAgIHBpcGUoImV1 Yy1qcCIsCisgICAgICAgICBwcm9jIHt8d3wgdyA8PCAiXHhhNFx4YTJceGE0 XHhhNFx4YTRceGE2XG5ceGE0XHhhOFx4YTRceGFhIjsgdy5jbG9zZSB9LAor ICAgICAgICAgcHJvYyB7fHJ8IGFzc2VydF9lcXVhbCgiXHhhNFx4YTJceGE0 XHhhNFx4YTRceGE2XG4iLmZvcmNlX2VuY29kaW5nKCJldWMtanAiKSwgci5n ZXRzKDgpKSB9KQorICAgIHBpcGUoImV1Yy1qcCIsCisgICAgICAgICBwcm9j IHt8d3wgdyA8PCAiXHhhNFx4YTJceGE0XHhhNFx4YTRceGE2XG5ceGE0XHhh OFx4YTRceGFhIjsgdy5jbG9zZSB9LAorICAgICAgICAgcHJvYyB7fHJ8IGFz c2VydF9lcXVhbCgiXHhhNFx4YTJceGE0XHhhNFx4YTRceGE2XG4iLmZvcmNl X2VuY29kaW5nKCJldWMtanAiKSwgci5nZXRzKDkpKSB9KQogICBlbmQKIAog ICBkZWYgdGVzdF9nZXRzX2ludmFsaWQKLSAgICB3aXRoX3BpcGUoInV0Zi04 OmV1Yy1qcCIpIHt8ciwgd3wKLSAgICAgIGJlZm9yZSA9ICJcdXszMDQyfVx1 ezMwNDR9IgotICAgICAgaW52YWxpZCA9ICJceDgwIi5mb3JjZV9lbmNvZGlu ZygidXRmLTgiKQotICAgICAgYWZ0ZXIgPSAiXHV7MzA0Nn1cdXszMDQ4fSIK LSAgICAgIHcgPDwgYmVmb3JlICsgaW52YWxpZCArIGFmdGVyCi0gICAgICB3 LmNsb3NlCi0gICAgICBlcnIgPSBhc3NlcnRfcmFpc2UoRW5jb2Rpbmc6Oklu dmFsaWRCeXRlU2VxdWVuY2VFcnJvcikgeyByLmdldHMgfQotICAgICAgYXNz ZXJ0X2VxdWFsKGludmFsaWQuZm9yY2VfZW5jb2RpbmcoImFzY2lpLThiaXQi KSwgZXJyLmVycm9yX2J5dGVzKQotICAgICAgYXNzZXJ0X2VxdWFsKGFmdGVy LmVuY29kZSgiZXVjLWpwIiksIHIuZ2V0cykKLSAgICB9CisgICAgYmVmb3Jl ID0gIlx1ezMwNDJ9XHV7MzA0NH0iCisgICAgaW52YWxpZCA9ICJceDgwIi5m b3JjZV9lbmNvZGluZygidXRmLTgiKQorICAgIGFmdGVyID0gIlx1ezMwNDZ9 XHV7MzA0OH0iCisgICAgcGlwZSgidXRmLTg6ZXVjLWpwIiwKKyAgICAgICAg IHByb2MgZG8gfHd8CisgICAgICAgICAgIHcgPDwgYmVmb3JlICsgaW52YWxp ZCArIGFmdGVyCisgICAgICAgICAgIHcuY2xvc2UKKyAgICAgICAgIGVuZCwK KyAgICAgICAgIHByb2MgZG8gfHJ8CisgICAgICAgICAgIGVyciA9IGFzc2Vy dF9yYWlzZShFbmNvZGluZzo6SW52YWxpZEJ5dGVTZXF1ZW5jZUVycm9yKSB7 IHIuZ2V0cyB9CisgICAgICAgICAgIGFzc2VydF9lcXVhbChpbnZhbGlkLmZv cmNlX2VuY29kaW5nKCJhc2NpaS04Yml0IiksIGVyci5lcnJvcl9ieXRlcykK KyAgICAgICAgICAgYXNzZXJ0X2VxdWFsKGFmdGVyLmVuY29kZSgiZXVjLWpw IiksIHIuZ2V0cykKKyAgICAgICAgIGVuZCkKICAgZW5kCiAKICAgZGVmIHRl c3RfZ2V0Y19pbnZhbGlkMgotICAgIHdpdGhfcGlwZSgidXRmLTg6ZXVjLWpw Iikge3xyLCB3fAotICAgICAgYmVmb3JlMSA9ICJcdXszMDQyfSIKLSAgICAg IGJlZm9yZTIgPSAiXHV7MzA0NH0iCi0gICAgICBpbnZhbGlkID0gIlx4ODAi LmZvcmNlX2VuY29kaW5nKCJ1dGYtOCIpCi0gICAgICBhZnRlcjEgPSAiXHV7 MzA0Nn0iCi0gICAgICBhZnRlcjIgPSAiXHV7MzA0OH0iCi0gICAgICB3IDw8 IGJlZm9yZTEgKyBiZWZvcmUyICsgaW52YWxpZCArIGFmdGVyMSArIGFmdGVy MgotICAgICAgdy5jbG9zZQotICAgICAgYXNzZXJ0X2VxdWFsKGJlZm9yZTEu ZW5jb2RlKCJldWMtanAiKSwgci5nZXRjKQotICAgICAgYXNzZXJ0X2VxdWFs KGJlZm9yZTIuZW5jb2RlKCJldWMtanAiKSwgci5nZXRjKQotICAgICAgZXJy ID0gYXNzZXJ0X3JhaXNlKEVuY29kaW5nOjpJbnZhbGlkQnl0ZVNlcXVlbmNl RXJyb3IpIHsgci5nZXRjIH0KLSAgICAgIGFzc2VydF9lcXVhbChpbnZhbGlk LmZvcmNlX2VuY29kaW5nKCJhc2NpaS04Yml0IiksIGVyci5lcnJvcl9ieXRl cykKLSAgICAgIGFzc2VydF9lcXVhbChhZnRlcjEuZW5jb2RlKCJldWMtanAi KSwgci5nZXRjKQotICAgICAgYXNzZXJ0X2VxdWFsKGFmdGVyMi5lbmNvZGUo ImV1Yy1qcCIpLCByLmdldGMpCi0gICAgfQorICAgIGJlZm9yZTEgPSAiXHV7 MzA0Mn0iCisgICAgYmVmb3JlMiA9ICJcdXszMDQ0fSIKKyAgICBpbnZhbGlk ID0gIlx4ODAiLmZvcmNlX2VuY29kaW5nKCJ1dGYtOCIpCisgICAgYWZ0ZXIx ID0gIlx1ezMwNDZ9IgorICAgIGFmdGVyMiA9ICJcdXszMDQ4fSIKKyAgICBw aXBlKCJ1dGYtODpldWMtanAiLAorICAgICAgICAgcHJvYyBkbyB8d3wKKyAg ICAgICAgICAgdyA8PCBiZWZvcmUxICsgYmVmb3JlMiArIGludmFsaWQgKyBh ZnRlcjEgKyBhZnRlcjIKKyAgICAgICAgICAgdy5jbG9zZQorICAgICAgICAg ZW5kLAorICAgICAgICAgcHJvYyBkbyB8cnwKKyAgICAgICAgICAgYXNzZXJ0 X2VxdWFsKGJlZm9yZTEuZW5jb2RlKCJldWMtanAiKSwgci5nZXRjKQorICAg ICAgICAgICBhc3NlcnRfZXF1YWwoYmVmb3JlMi5lbmNvZGUoImV1Yy1qcCIp LCByLmdldGMpCisgICAgICAgICAgIGVyciA9IGFzc2VydF9yYWlzZShFbmNv ZGluZzo6SW52YWxpZEJ5dGVTZXF1ZW5jZUVycm9yKSB7IHIuZ2V0YyB9Cisg ICAgICAgICAgIGFzc2VydF9lcXVhbChpbnZhbGlkLmZvcmNlX2VuY29kaW5n KCJhc2NpaS04Yml0IiksIGVyci5lcnJvcl9ieXRlcykKKyAgICAgICAgICAg YXNzZXJ0X2VxdWFsKGFmdGVyMS5lbmNvZGUoImV1Yy1qcCIpLCByLmdldGMp CisgICAgICAgICAgIGFzc2VydF9lcXVhbChhZnRlcjIuZW5jb2RlKCJldWMt anAiKSwgci5nZXRjKQorICAgICAgICAgZW5kKQogICBlbmQKIAogICBkZWYg dGVzdF9nZXRjX2ludmFsaWQzCi0gICAgd2l0aF9waXBlKCJ1dGYtMTZsZTpl dWMtanAiLCBiaW5tb2RlOiB0cnVlKSB7fHIsIHd8Ci0gICAgICBiZWZvcmUx ID0gIlx4NDJceDMwIi5mb3JjZV9lbmNvZGluZygidXRmLTE2bGUiKQotICAg ICAgYmVmb3JlMiA9ICJceDQ0XHgzMCIuZm9yY2VfZW5jb2RpbmcoInV0Zi0x NmxlIikKLSAgICAgIGludmFsaWQgPSAiXHgwMFx4ZDgiLmZvcmNlX2VuY29k aW5nKCJ1dGYtMTZsZSIpCi0gICAgICBhZnRlcjEgPSAiXHg0Nlx4MzAiLmZv cmNlX2VuY29kaW5nKCJ1dGYtMTZsZSIpCi0gICAgICBhZnRlcjIgPSAiXHg0 OFx4MzAiLmZvcmNlX2VuY29kaW5nKCJ1dGYtMTZsZSIpCi0gICAgICB3IDw8 IGJlZm9yZTEgKyBiZWZvcmUyICsgaW52YWxpZCArIGFmdGVyMSArIGFmdGVy MgotICAgICAgdy5jbG9zZQotICAgICAgYXNzZXJ0X2VxdWFsKGJlZm9yZTEu ZW5jb2RlKCJldWMtanAiKSwgci5nZXRjKQotICAgICAgYXNzZXJ0X2VxdWFs KGJlZm9yZTIuZW5jb2RlKCJldWMtanAiKSwgci5nZXRjKQotICAgICAgZXJy ID0gYXNzZXJ0X3JhaXNlKEVuY29kaW5nOjpJbnZhbGlkQnl0ZVNlcXVlbmNl RXJyb3IpIHsgci5nZXRjIH0KLSAgICAgIGFzc2VydF9lcXVhbChpbnZhbGlk LmZvcmNlX2VuY29kaW5nKCJhc2NpaS04Yml0IiksIGVyci5lcnJvcl9ieXRl cykKLSAgICAgIGFzc2VydF9lcXVhbChhZnRlcjEuZW5jb2RlKCJldWMtanAi KSwgci5nZXRjKQotICAgICAgYXNzZXJ0X2VxdWFsKGFmdGVyMi5lbmNvZGUo ImV1Yy1qcCIpLCByLmdldGMpCi0gICAgfQorICAgIGJlZm9yZTEgPSAiXHg0 Mlx4MzAiLmZvcmNlX2VuY29kaW5nKCJ1dGYtMTZsZSIpCisgICAgYmVmb3Jl MiA9ICJceDQ0XHgzMCIuZm9yY2VfZW5jb2RpbmcoInV0Zi0xNmxlIikKKyAg ICBpbnZhbGlkID0gIlx4MDBceGQ4Ii5mb3JjZV9lbmNvZGluZygidXRmLTE2 bGUiKQorICAgIGFmdGVyMSA9ICJceDQ2XHgzMCIuZm9yY2VfZW5jb2Rpbmco InV0Zi0xNmxlIikKKyAgICBhZnRlcjIgPSAiXHg0OFx4MzAiLmZvcmNlX2Vu Y29kaW5nKCJ1dGYtMTZsZSIpCisgICAgcGlwZSgidXRmLTE2bGU6ZXVjLWpw IiwgeyA6YmlubW9kZSA9PiB0cnVlIH0sCisgICAgICAgICBwcm9jIGRvIHx3 fAorICAgICAgICAgICB3IDw8IGJlZm9yZTEgKyBiZWZvcmUyICsgaW52YWxp ZCArIGFmdGVyMSArIGFmdGVyMgorICAgICAgICAgICB3LmNsb3NlCisgICAg ICAgICBlbmQsCisgICAgICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgICBh c3NlcnRfZXF1YWwoYmVmb3JlMS5lbmNvZGUoImV1Yy1qcCIpLCByLmdldGMp CisgICAgICAgICAgIGFzc2VydF9lcXVhbChiZWZvcmUyLmVuY29kZSgiZXVj LWpwIiksIHIuZ2V0YykKKyAgICAgICAgICAgZXJyID0gYXNzZXJ0X3JhaXNl KEVuY29kaW5nOjpJbnZhbGlkQnl0ZVNlcXVlbmNlRXJyb3IpIHsgci5nZXRj IH0KKyAgICAgICAgICAgYXNzZXJ0X2VxdWFsKGludmFsaWQuZm9yY2VfZW5j b2RpbmcoImFzY2lpLThiaXQiKSwgZXJyLmVycm9yX2J5dGVzKQorICAgICAg ICAgICBhc3NlcnRfZXF1YWwoYWZ0ZXIxLmVuY29kZSgiZXVjLWpwIiksIHIu Z2V0YykKKyAgICAgICAgICAgYXNzZXJ0X2VxdWFsKGFmdGVyMi5lbmNvZGUo ImV1Yy1qcCIpLCByLmdldGMpCisgICAgICAgICBlbmQpCiAgIGVuZAogCiAg IGRlZiB0ZXN0X3JlYWRfYWxsCi0gICAgd2l0aF9waXBlKCJ1dGYtODpldWMt anAiKSB7fHIsIHd8Ci0gICAgICBzdHIgPSAiXHUzMDQyXHUzMDQ0IgotICAg ICAgdyA8PCBzdHIKLSAgICAgIHcuY2xvc2UKLSAgICAgIGFzc2VydF9lcXVh bChzdHIuZW5jb2RlKCJldWMtanAiKSwgci5yZWFkKQotICAgIH0KKyAgICBz dHIgPSAiXHUzMDQyXHUzMDQ0IgorICAgIHBpcGUoInV0Zi04OmV1Yy1qcCIs CisgICAgICAgICBwcm9jIGRvIHx3fAorICAgICAgICAgICB3IDw8IHN0cgor ICAgICAgICAgICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAgICAgICBw cm9jIGRvIHxyfAorICAgICAgICAgICBhc3NlcnRfZXF1YWwoc3RyLmVuY29k ZSgiZXVjLWpwIiksIHIucmVhZCkKKyAgICAgICAgIGVuZCkKICAgZW5kCiAK ICAgZGVmIHRlc3RfcmVhZF9hbGxfaW52YWxpZAotICAgIHdpdGhfcGlwZSgi dXRmLTg6ZXVjLWpwIikge3xyLCB3fAotICAgICAgYmVmb3JlID0gIlx1ezMw NDJ9XHV7MzA0NH0iCi0gICAgICBpbnZhbGlkID0gIlx4ODAiLmZvcmNlX2Vu Y29kaW5nKCJ1dGYtOCIpCi0gICAgICBhZnRlciA9ICJcdXszMDQ2fVx1ezMw NDh9IgotICAgICAgdyA8PCBiZWZvcmUgKyBpbnZhbGlkICsgYWZ0ZXIKLSAg ICAgIHcuY2xvc2UKLSAgICAgIGVyciA9IGFzc2VydF9yYWlzZShFbmNvZGlu Zzo6SW52YWxpZEJ5dGVTZXF1ZW5jZUVycm9yKSB7IHIucmVhZCB9Ci0gICAg ICBhc3NlcnRfZXF1YWwoaW52YWxpZC5mb3JjZV9lbmNvZGluZygiYXNjaWkt OGJpdCIpLCBlcnIuZXJyb3JfYnl0ZXMpCi0gICAgICBhc3NlcnRfZXF1YWwo YWZ0ZXIuZW5jb2RlKCJldWMtanAiKSwgci5yZWFkKQotICAgIH0KKyAgICBi ZWZvcmUgPSAiXHV7MzA0Mn1cdXszMDQ0fSIKKyAgICBpbnZhbGlkID0gIlx4 ODAiLmZvcmNlX2VuY29kaW5nKCJ1dGYtOCIpCisgICAgYWZ0ZXIgPSAiXHV7 MzA0Nn1cdXszMDQ4fSIKKyAgICBwaXBlKCJ1dGYtODpldWMtanAiLAorICAg ICAgcHJvYyBkbyB8d3wKKyAgICAgICAgdyA8PCBiZWZvcmUgKyBpbnZhbGlk ICsgYWZ0ZXIKKyAgICAgICAgdy5jbG9zZQorICAgICAgZW5kLAorICAgICAg cHJvYyBkbyB8cnwKKyAgICAgICAgZXJyID0gYXNzZXJ0X3JhaXNlKEVuY29k aW5nOjpJbnZhbGlkQnl0ZVNlcXVlbmNlRXJyb3IpIHsgci5yZWFkIH0KKyAg ICAgICAgYXNzZXJ0X2VxdWFsKGludmFsaWQuZm9yY2VfZW5jb2RpbmcoImFz Y2lpLThiaXQiKSwgZXJyLmVycm9yX2J5dGVzKQorICAgICAgICBhc3NlcnRf ZXF1YWwoYWZ0ZXIuZW5jb2RlKCJldWMtanAiKSwgci5yZWFkKQorICAgICAg ZW5kKQogICBlbmQKIAogICBkZWYgdGVzdF9maWxlX2ZvcmVhY2gKQEAgLTc4 OCw4NCArODU3LDEwNCBAQAogICBlbmQKIAogICBkZWYgdGVzdF9zZXRfZW5j b2RpbmcKLSAgICB3aXRoX3BpcGUoInV0Zi04OmV1Yy1qcCIpIHt8ciwgd3wK LSAgICAgIHMgPSAiXHUzMDQyIi5mb3JjZV9lbmNvZGluZygiYXNjaWktOGJp dCIpCi0gICAgICBzIDw8ICJceDgyXHhhMCIuZm9yY2VfZW5jb2RpbmcoImFz Y2lpLThiaXQiKQotICAgICAgdyA8PCBzCi0gICAgICB3LmNsb3NlCi0gICAg ICBhc3NlcnRfZXF1YWwoIlx4YTRceGEyIi5mb3JjZV9lbmNvZGluZygiZXVj LWpwIiksIHIuZ2V0YykKLSAgICAgIHIuc2V0X2VuY29kaW5nKCJzaGlmdF9q aXM6ZXVjLWpwIikKLSAgICAgIGFzc2VydF9lcXVhbCgiXHhhNFx4YTIiLmZv cmNlX2VuY29kaW5nKCJldWMtanAiKSwgci5nZXRjKQotICAgIH0KKyAgICBw aXBlKCJ1dGYtODpldWMtanAiLAorICAgICAgICAgcHJvYyBkbyB8d3wKKyAg ICAgICAgICAgcyA9ICJcdTMwNDIiLmZvcmNlX2VuY29kaW5nKCJhc2NpaS04 Yml0IikKKyAgICAgICAgICAgcyA8PCAiXHg4Mlx4YTAiLmZvcmNlX2VuY29k aW5nKCJhc2NpaS04Yml0IikKKyAgICAgICAgICAgdyA8PCBzCisgICAgICAg ICAgIHcuY2xvc2UKKyAgICAgICAgIGVuZCwKKyAgICAgICAgIHByb2MgZG8g fHJ8CisgICAgICAgICAgIGFzc2VydF9lcXVhbCgiXHhhNFx4YTIiLmZvcmNl X2VuY29kaW5nKCJldWMtanAiKSwgci5nZXRjKQorICAgICAgICAgICByLnNl dF9lbmNvZGluZygic2hpZnRfamlzOmV1Yy1qcCIpCisgICAgICAgICAgIGFz c2VydF9lcXVhbCgiXHhhNFx4YTIiLmZvcmNlX2VuY29kaW5nKCJldWMtanAi KSwgci5nZXRjKQorICAgICAgICAgZW5kKQogICBlbmQKIAogICBkZWYgdGVz dF9zZXRfZW5jb2RpbmcyCi0gICAgd2l0aF9waXBlKCJ1dGYtODpldWMtanAi KSB7fHIsIHd8Ci0gICAgICBzID0gIlx1MzA0MiIuZm9yY2VfZW5jb2Rpbmco ImFzY2lpLThiaXQiKQotICAgICAgcyA8PCAiXHg4Mlx4YTAiLmZvcmNlX2Vu Y29kaW5nKCJhc2NpaS04Yml0IikKLSAgICAgIHcgPDwgcwotICAgICAgdy5j bG9zZQotICAgICAgYXNzZXJ0X2VxdWFsKCJceGE0XHhhMiIuZm9yY2VfZW5j b2RpbmcoImV1Yy1qcCIpLCByLmdldGMpCi0gICAgICByLnNldF9lbmNvZGlu Zygic2hpZnRfamlzIiwgImV1Yy1qcCIpCi0gICAgICBhc3NlcnRfZXF1YWwo Ilx4YTRceGEyIi5mb3JjZV9lbmNvZGluZygiZXVjLWpwIiksIHIuZ2V0YykK LSAgICB9CisgICAgcGlwZSgidXRmLTg6ZXVjLWpwIiwKKyAgICAgICAgIHBy b2MgZG8gfHd8CisgICAgICAgICAgIHMgPSAiXHUzMDQyIi5mb3JjZV9lbmNv ZGluZygiYXNjaWktOGJpdCIpCisgICAgICAgICAgIHMgPDwgIlx4ODJceGEw Ii5mb3JjZV9lbmNvZGluZygiYXNjaWktOGJpdCIpCisgICAgICAgICAgIHcg PDwgcworICAgICAgICAgICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAg ICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlx4 YTRceGEyIi5mb3JjZV9lbmNvZGluZygiZXVjLWpwIiksIHIuZ2V0YykKKyAg ICAgICAgICAgci5zZXRfZW5jb2RpbmcoInNoaWZ0X2ppcyIsICJldWMtanAi KQorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlx4YTRceGEyIi5mb3JjZV9l bmNvZGluZygiZXVjLWpwIiksIHIuZ2V0YykKKyAgICAgICAgIGVuZCkKICAg ZW5kCiAKICAgZGVmIHRlc3Rfc2V0X2VuY29kaW5nX25pbAotICAgIHdpdGhf cGlwZSgidXRmLTg6ZXVjLWpwIikge3xyLCB3fAotICAgICAgcyA9ICJcdTMw NDIiLmZvcmNlX2VuY29kaW5nKCJhc2NpaS04Yml0IikKLSAgICAgIHMgPDwg Ilx4ODJceGEwIi5mb3JjZV9lbmNvZGluZygiYXNjaWktOGJpdCIpCi0gICAg ICB3IDw8IHMKLSAgICAgIHcuY2xvc2UKLSAgICAgIGFzc2VydF9lcXVhbCgi XHhhNFx4YTIiLmZvcmNlX2VuY29kaW5nKCJldWMtanAiKSwgci5nZXRjKQot ICAgICAgci5zZXRfZW5jb2RpbmcobmlsKQotICAgICAgYXNzZXJ0X2VxdWFs KCJceDgyXHhhMCIuZm9yY2VfZW5jb2RpbmcoRW5jb2RpbmcuZGVmYXVsdF9l eHRlcm5hbCksIHIucmVhZCkKLSAgICB9CisgICAgcGlwZSgidXRmLTg6ZXVj LWpwIiwKKyAgICAgICAgIHByb2MgZG8gfHd8CisgICAgICAgICAgIHMgPSAi XHUzMDQyIi5mb3JjZV9lbmNvZGluZygiYXNjaWktOGJpdCIpCisgICAgICAg ICAgIHMgPDwgIlx4ODJceGEwIi5mb3JjZV9lbmNvZGluZygiYXNjaWktOGJp dCIpCisgICAgICAgICAgIHcgPDwgcworICAgICAgICAgICB3LmNsb3NlCisg ICAgICAgICBlbmQsCisgICAgICAgICBwcm9jIGRvIHxyfAorICAgICAgICAg ICBhc3NlcnRfZXF1YWwoIlx4YTRceGEyIi5mb3JjZV9lbmNvZGluZygiZXVj LWpwIiksIHIuZ2V0YykKKyAgICAgICAgICAgci5zZXRfZW5jb2Rpbmcobmls KQorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlx4ODJceGEwIi5mb3JjZV9l bmNvZGluZyhFbmNvZGluZy5kZWZhdWx0X2V4dGVybmFsKSwgci5yZWFkKQor ICAgICAgICAgZW5kKQogICBlbmQKIAogICBkZWYgdGVzdF9zZXRfZW5jb2Rp bmdfZW5jCi0gICAgd2l0aF9waXBlKCJ1dGYtODpldWMtanAiKSB7fHIsIHd8 Ci0gICAgICBzID0gIlx1MzA0MiIuZm9yY2VfZW5jb2RpbmcoImFzY2lpLThi aXQiKQotICAgICAgcyA8PCAiXHg4Mlx4YTAiLmZvcmNlX2VuY29kaW5nKCJh c2NpaS04Yml0IikKLSAgICAgIHcgPDwgcwotICAgICAgdy5jbG9zZQotICAg ICAgYXNzZXJ0X2VxdWFsKCJceGE0XHhhMiIuZm9yY2VfZW5jb2RpbmcoImV1 Yy1qcCIpLCByLmdldGMpCi0gICAgICByLnNldF9lbmNvZGluZyhFbmNvZGlu Zzo6U2hpZnRfSklTKQotICAgICAgYXNzZXJ0X2VxdWFsKCJceDgyXHhhMCIu Zm9yY2VfZW5jb2RpbmcoRW5jb2Rpbmc6OlNoaWZ0X0pJUyksIHIuZ2V0YykK LSAgICB9CisgICAgcGlwZSgidXRmLTg6ZXVjLWpwIiwKKyAgICAgICAgIHBy b2MgZG8gfHd8CisgICAgICAgICAgIHMgPSAiXHUzMDQyIi5mb3JjZV9lbmNv ZGluZygiYXNjaWktOGJpdCIpCisgICAgICAgICAgIHMgPDwgIlx4ODJceGEw Ii5mb3JjZV9lbmNvZGluZygiYXNjaWktOGJpdCIpCisgICAgICAgICAgIHcg PDwgcworICAgICAgICAgICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAg ICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlx4 YTRceGEyIi5mb3JjZV9lbmNvZGluZygiZXVjLWpwIiksIHIuZ2V0YykKKyAg ICAgICAgICAgci5zZXRfZW5jb2RpbmcoRW5jb2Rpbmc6OlNoaWZ0X0pJUykK KyAgICAgICAgICAgYXNzZXJ0X2VxdWFsKCJceDgyXHhhMCIuZm9yY2VfZW5j b2RpbmcoRW5jb2Rpbmc6OlNoaWZ0X0pJUyksIHIuZ2V0YykKKyAgICAgICAg IGVuZCkKICAgZW5kCiAKICAgZGVmIHRlc3Rfc2V0X2VuY29kaW5nX2ludmFs aWQKLSAgICB3aXRoX3BpcGUge3xyLCB3fAotICAgICAgdyA8PCAiXHg4MCIK LSAgICAgIHcuY2xvc2UKLSAgICAgIHIuc2V0X2VuY29kaW5nKCJ1dGYtODpl dWMtanAiLCA6aW52YWxpZD0+OnJlcGxhY2UpCi0gICAgICBhc3NlcnRfZXF1 YWwoIj8iLCByLnJlYWQpCi0gICAgfQorICAgIHBpcGUocHJvYyBkbyB8d3wK KyAgICAgICAgICAgdyA8PCAiXHg4MCIKKyAgICAgICAgICAgdy5jbG9zZQor ICAgICAgICAgZW5kLAorICAgICAgICAgcHJvYyBkbyB8cnwKKyAgICAgICAg ICAgci5zZXRfZW5jb2RpbmcoInV0Zi04OmV1Yy1qcCIsIDppbnZhbGlkPT46 cmVwbGFjZSkKKyAgICAgICAgICAgYXNzZXJ0X2VxdWFsKCI/Iiwgci5yZWFk KQorICAgICAgICAgZW5kKQogICBlbmQKIAogICBkZWYgdGVzdF9zZXRfZW5j b2RpbmdfdW5kZWYKLSAgICB3aXRoX3BpcGUge3xyLCB3fAotICAgICAgdyA8 PCAiXHVmZmZkIgotICAgICAgdy5jbG9zZQotICAgICAgci5zZXRfZW5jb2Rp bmcoInV0Zi04IiwgImV1Yy1qcCIsIDp1bmRlZj0+OnJlcGxhY2UpCi0gICAg ICBhc3NlcnRfZXF1YWwoIj8iLCByLnJlYWQpCi0gICAgfQorICAgIHBpcGUo cHJvYyBkbyB8d3wKKyAgICAgICAgICAgdyA8PCAiXHVmZmZkIgorICAgICAg ICAgICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAgICAgICBwcm9jIGRv IHxyfAorICAgICAgICAgICByLnNldF9lbmNvZGluZygidXRmLTgiLCAiZXVj LWpwIiwgOnVuZGVmPT46cmVwbGFjZSkKKyAgICAgICAgICAgYXNzZXJ0X2Vx dWFsKCI/Iiwgci5yZWFkKQorICAgICAgICAgZW5kKQogICBlbmQKIAogICBk ZWYgdGVzdF9zZXRfZW5jb2RpbmdfdW5kZWZfcmVwbGFjZQotICAgIHdpdGhf cGlwZSB7fHIsIHd8Ci0gICAgICB3IDw8ICJcdWZmZmQiCi0gICAgICB3LmNs b3NlCi0gICAgICByLnNldF9lbmNvZGluZygidXRmLTgiLCAiZXVjLWpwIiwg OnVuZGVmPT46cmVwbGFjZSwgOnJlcGxhY2U9PiJaWloiKQotICAgICAgYXNz ZXJ0X2VxdWFsKCJaWloiLCByLnJlYWQpCi0gICAgfQotICAgIHdpdGhfcGlw ZSB7fHIsIHd8Ci0gICAgICB3IDw8ICJcdWZmZmQiCi0gICAgICB3LmNsb3Nl Ci0gICAgICByLnNldF9lbmNvZGluZygidXRmLTg6ZXVjLWpwIiwgOnVuZGVm PT46cmVwbGFjZSwgOnJlcGxhY2U9PiJaWloiKQotICAgICAgYXNzZXJ0X2Vx dWFsKCJaWloiLCByLnJlYWQpCi0gICAgfQorICAgIHBpcGUocHJvYyBkbyB8 d3wKKyAgICAgICAgICAgdyA8PCAiXHVmZmZkIgorICAgICAgICAgICB3LmNs b3NlCisgICAgICAgICBlbmQsCisgICAgICAgICBwcm9jIGRvIHxyfAorICAg ICAgICAgICByLnNldF9lbmNvZGluZygidXRmLTgiLCAiZXVjLWpwIiwgOnVu ZGVmPT46cmVwbGFjZSwgOnJlcGxhY2U9PiJaWloiKQorICAgICAgICAgICBh c3NlcnRfZXF1YWwoIlpaWiIsIHIucmVhZCkKKyAgICAgICAgIGVuZCkKKyAg ICBwaXBlKHByb2MgZG8gfHd8CisgICAgICAgICAgIHcgPDwgIlx1ZmZmZCIK KyAgICAgICAgICAgdy5jbG9zZQorICAgICAgICAgZW5kLAorICAgICAgICAg cHJvYyBkbyB8cnwKKyAgICAgICAgICAgci5zZXRfZW5jb2RpbmcoInV0Zi04 OmV1Yy1qcCIsIDp1bmRlZj0+OnJlcGxhY2UsIDpyZXBsYWNlPT4iWlpaIikK KyAgICAgICAgICAgYXNzZXJ0X2VxdWFsKCJaWloiLCByLnJlYWQpCisgICAg ICAgICBlbmQpCiAgIGVuZAogCiAgIGRlZiB0ZXN0X3NldF9lbmNvZGluZ19i aW5tb2RlCkBAIC04OTksNTYgKzk4OCw2NyBAQAogICBlbmQKIAogICBkZWYg dGVzdF93cml0ZV9jb252ZXJzaW9uX2ZpeGVuYwotICAgIHdpdGhfcGlwZSB7 fHIsIHd8Ci0gICAgICB3LnNldF9lbmNvZGluZygiaXNvLTIwMjItanA6dXRm LTgiKQotICAgICAgdCA9IFRocmVhZC5uZXcgeyByLnJlYWQuZm9yY2VfZW5j b2RpbmcoImFzY2lpLThiaXQiKSB9Ci0gICAgICB3IDw8ICJcdTMwNDIiCi0g ICAgICB3IDw8ICJcdTMwNDQiCi0gICAgICB3LmNsb3NlCi0gICAgICBhc3Nl cnRfZXF1YWwoIlxlJEIkXCIkJFxlKEIiLmZvcmNlX2VuY29kaW5nKCJhc2Np aS04Yml0IiksIHQudmFsdWUpCi0gICAgfQorICAgIHBpcGUocHJvYyBkbyB8 d3wKKyAgICAgICAgICAgdy5zZXRfZW5jb2RpbmcoImlzby0yMDIyLWpwOnV0 Zi04IikKKyAgICAgICAgICAgICB3IDw8ICJcdTMwNDIiCisgICAgICAgICAg ICAgdyA8PCAiXHUzMDQ0IgorICAgICAgICAgICAgIHcuY2xvc2UKKyAgICAg ICAgIGVuZCwKKyAgICAgICAgIHByb2MgZG8gfHJ8CisgICAgICAgICAgIGFz c2VydF9lcXVhbCgiXGUkQiRcIiQkXGUoQiIuZm9yY2VfZW5jb2RpbmcoImFz Y2lpLThiaXQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHIucmVhZC5m b3JjZV9lbmNvZGluZygiYXNjaWktOGJpdCIpKQorICAgICAgICAgZW5kKQog ICBlbmQKIAogICBkZWYgdGVzdF93cml0ZV9jb252ZXJzaW9uX2FueWVuY19z dGF0ZWZ1bAotICAgIHdpdGhfcGlwZSB7fHIsIHd8Ci0gICAgICB3LnNldF9l bmNvZGluZygiaXNvLTIwMjItanAiKQotICAgICAgdCA9IFRocmVhZC5uZXcg eyByLnJlYWQuZm9yY2VfZW5jb2RpbmcoImFzY2lpLThiaXQiKSB9Ci0gICAg ICB3IDw8ICJcdTMwNDIiCi0gICAgICB3IDw8ICJceDgyXHhhMiIuZm9yY2Vf ZW5jb2RpbmcoInNqaXMiKQotICAgICAgdy5jbG9zZQotICAgICAgYXNzZXJ0 X2VxdWFsKCJcZSRCJFwiJCRcZShCIi5mb3JjZV9lbmNvZGluZygiYXNjaWkt OGJpdCIpLCB0LnZhbHVlKQotICAgIH0KKyAgICBwaXBlKHByb2MgZG8gfHd8 CisgICAgICAgICAgIHcuc2V0X2VuY29kaW5nKCJpc28tMjAyMi1qcCIpCisg ICAgICAgICAgIHcgPDwgIlx1MzA0MiIKKyAgICAgICAgICAgdyA8PCAiXHg4 Mlx4YTIiLmZvcmNlX2VuY29kaW5nKCJzamlzIikKKyAgICAgICAgICAgdy5j bG9zZQorICAgICAgICAgZW5kLAorICAgICAgICAgcHJvYyBkbyB8cnwKKyAg ICAgICAgICAgYXNzZXJ0X2VxdWFsKCJcZSRCJFwiJCRcZShCIi5mb3JjZV9l bmNvZGluZygiYXNjaWktOGJpdCIpLAorICAgICAgICAgICAgICAgICAgICAg ICAgci5yZWFkLmZvcmNlX2VuY29kaW5nKCJhc2NpaS04Yml0IikpCisgICAg ICAgICBlbmQpCiAgIGVuZAogCiAgIGRlZiB0ZXN0X3dyaXRlX2NvbnZlcnNp b25fYW55ZW5jX3N0YXRlbGVzcwotICAgIHdpdGhfcGlwZSB7fHIsIHd8Ci0g ICAgICB3LnNldF9lbmNvZGluZygiZXVjLWpwIikKLSAgICAgIHQgPSBUaHJl YWQubmV3IHsgci5yZWFkLmZvcmNlX2VuY29kaW5nKCJhc2NpaS04Yml0Iikg fQotICAgICAgdyA8PCAiXHUzMDQyIgotICAgICAgdyA8PCAiXHg4Mlx4YTIi LmZvcmNlX2VuY29kaW5nKCJzamlzIikKLSAgICAgIHcuY2xvc2UKLSAgICAg IGFzc2VydF9lcXVhbCgiXHhhNFx4YTJceGE0XHhhNCIuZm9yY2VfZW5jb2Rp bmcoImFzY2lpLThiaXQiKSwgdC52YWx1ZSkKLSAgICB9CisgICAgcGlwZShw cm9jIGRvIHx3fAorICAgICAgICAgICB3LnNldF9lbmNvZGluZygiZXVjLWpw IikKKyAgICAgICAgICAgdyA8PCAiXHUzMDQyIgorICAgICAgICAgICB3IDw8 ICJceDgyXHhhMiIuZm9yY2VfZW5jb2RpbmcoInNqaXMiKQorICAgICAgICAg ICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAgICAgICBwcm9jIGRvIHxy fAorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlx4YTRceGEyXHhhNFx4YTQi LmZvcmNlX2VuY29kaW5nKCJhc2NpaS04Yml0IiksCisgICAgICAgICAgICAg ICAgICAgICAgICByLnJlYWQuZm9yY2VfZW5jb2RpbmcoImFzY2lpLThiaXQi KSkKKyAgICAgICAgIGVuZCkKICAgZW5kCiAKICAgZGVmIHRlc3Rfd3JpdGVf Y29udmVyc2lvbl9hbnllbmNfc3RhdGVmdWxfbm9zeW5jCi0gICAgd2l0aF9w aXBlIHt8ciwgd3wKLSAgICAgIHcuc3luYyA9IGZhbHNlCi0gICAgICB3LnNl dF9lbmNvZGluZygiaXNvLTIwMjItanAiKQotICAgICAgdCA9IFRocmVhZC5u ZXcgeyByLnJlYWQuZm9yY2VfZW5jb2RpbmcoImFzY2lpLThiaXQiKSB9Ci0g ICAgICB3IDw8ICJcdTMwNDIiCi0gICAgICB3IDw8ICJceDgyXHhhMiIuZm9y Y2VfZW5jb2RpbmcoInNqaXMiKQotICAgICAgdy5jbG9zZQotICAgICAgYXNz ZXJ0X2VxdWFsKCJcZSRCJFwiJCRcZShCIi5mb3JjZV9lbmNvZGluZygiYXNj aWktOGJpdCIpLCB0LnZhbHVlKQotICAgIH0KKyAgICBwaXBlKHByb2MgZG8g fHd8CisgICAgICAgICAgIHcuc3luYyA9IGZhbHNlCisgICAgICAgICAgIHcu c2V0X2VuY29kaW5nKCJpc28tMjAyMi1qcCIpCisgICAgICAgICAgIHcgPDwg Ilx1MzA0MiIKKyAgICAgICAgICAgdyA8PCAiXHg4Mlx4YTIiLmZvcmNlX2Vu Y29kaW5nKCJzamlzIikKKyAgICAgICAgICAgdy5jbG9zZQorICAgICAgICAg ZW5kLAorICAgICAgICAgcHJvYyBkbyB8cnwKKyAgICAgICAgICAgYXNzZXJ0 X2VxdWFsKCJcZSRCJFwiJCRcZShCIi5mb3JjZV9lbmNvZGluZygiYXNjaWkt OGJpdCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgci5yZWFkLmZvcmNl X2VuY29kaW5nKCJhc2NpaS04Yml0IikpCisgICAgICAgICBlbmQpCiAgIGVu ZAogCiAgIGRlZiB0ZXN0X3JlYWRfc3RhdGVmdWwKLSAgICB3aXRoX3BpcGUo ImV1Yy1qcDppc28tMjAyMi1qcCIpIHt8ciwgd3wKLSAgICAgIHcgPDwgIlx4 QTRceEEyIgotICAgICAgdy5jbG9zZQotICAgICAgYXNzZXJ0X2VxdWFsKCJc ZSRCJFwiXGUoQiIuZm9yY2VfZW5jb2RpbmcoImlzby0yMDIyLWpwIiksIHIu cmVhZCkKLSAgICB9CisgICAgcGlwZSgiZXVjLWpwOmlzby0yMDIyLWpwIiwK KyAgICAgICAgIHByb2MgZG8gfHd8CisgICAgICAgICAgIHcgPDwgIlx4QTRc eEEyIgorICAgICAgICAgICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAg ICAgICBwcm9jIGRvIHxyfAorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlxl JEIkXCJcZShCIi5mb3JjZV9lbmNvZGluZygiaXNvLTIwMjItanAiKSwgci5y ZWFkKQorICAgICAgICAgZW5kKQogICBlbmQKIAogICBkZWYgdGVzdF9zdGRp bl9leHRlcm5hbF9lbmNvZGluZ193aXRoX3Jlb3BlbgpAQCAtMTgxNCwzMCAr MTkxNCwzOSBAQAogICBlbmQKIAogICBkZWYgdGVzdF9jYnVmX3NlbGVjdAot ICAgIHdpdGhfcGlwZSgiVVMtQVNDSUk6VVRGLTgiLCA6dW5pdmVyc2FsX25l d2xpbmUgPT4gdHJ1ZSkgZG8gfHIsIHd8Ci0gICAgICB3IDw8ICJcclxuIgot ICAgICAgci51bmdldGMoci5nZXRjKQotICAgICAgYXNzZXJ0X2VxdWFsKFtb cl0sW10sW11dLCBJTy5zZWxlY3QoW3JdLCBuaWwsIG5pbCwgMSkpCi0gICAg ZW5kCisgICAgcGlwZSgiVVMtQVNDSUk6VVRGLTgiLCB7IDp1bml2ZXJzYWxf bmV3bGluZSA9PiB0cnVlIH0sCisgICAgICAgICBwcm9jIGRvIHx3fAorICAg ICAgICAgICB3IDw8ICJcclxuIgorICAgICAgICAgZW5kLAorICAgICAgICAg cHJvYyBkbyB8cnwKKyAgICAgICAgICAgci51bmdldGMoci5nZXRjKQorICAg ICAgICAgICBhc3NlcnRfZXF1YWwoW1tyXSxbXSxbXV0sIElPLnNlbGVjdChb cl0sIG5pbCwgbmlsLCAxKSkKKyAgICAgICAgIGVuZCkKICAgZW5kCiAKICAg ZGVmIHRlc3RfdGV4dG1vZGVfcGFyYWdyYXBobW9kZQotICAgIHdpdGhfcGlw ZSgiVVMtQVNDSUk6VVRGLTgiLCA6dW5pdmVyc2FsX25ld2xpbmUgPT4gdHJ1 ZSkgZG8gfHIsIHd8Ci0gICAgICB3IDw8ICJhXG5cblxuYyIuZ3N1YigvXG4v LCAiXHJcbiIpCi0gICAgICB3LmNsb3NlCi0gICAgICBhc3NlcnRfZXF1YWwo ImFcblxuIiwgci5nZXRzKCIiKSkKLSAgICAgIGFzc2VydF9lcXVhbCgiYyIs IHIuZ2V0cygiIiksICJbcnVieS1jb3JlOjIzNzIzXSAoMTgpIikKLSAgICBl bmQKKyAgICBwaXBlKCJVUy1BU0NJSTpVVEYtOCIsIHsgOnVuaXZlcnNhbF9u ZXdsaW5lID0+IHRydWUgfSwKKyAgICAgICAgIHByb2MgZG8gfHd8CisgICAg ICAgICAgIHcgPDwgImFcblxuXG5jIi5nc3ViKC9cbi8sICJcclxuIikKKyAg ICAgICAgICAgdy5jbG9zZQorICAgICAgICAgZW5kLAorICAgICAgICAgcHJv YyBkbyB8cnwKKyAgICAgICAgICAgYXNzZXJ0X2VxdWFsKCJhXG5cbiIsIHIu Z2V0cygiIikpCisgICAgICAgICAgIGFzc2VydF9lcXVhbCgiYyIsIHIuZ2V0 cygiIiksICJbcnVieS1jb3JlOjIzNzIzXSAoMTgpIikKKyAgICAgICAgIGVu ZCkKICAgZW5kCiAKICAgZGVmIHRlc3RfdGV4dG1vZGVfcGFyYWdyYXBoX2Jp bmFyeXJlYWQKLSAgICB3aXRoX3BpcGUoIlVTLUFTQ0lJOlVURi04IiwgOnVu aXZlcnNhbF9uZXdsaW5lID0+IHRydWUpIGRvIHxyLCB3fAotICAgICAgdyA8 PCAiYVxuXG5cbmNkZWZnaCIuZ3N1YigvXG4vLCAiXHJcbiIpCi0gICAgICB3 LmNsb3NlCi0gICAgICBhc3NlcnRfZXF1YWwoImFcblxuIiwgci5nZXRzKCIi KSkKLSAgICAgIGFzc2VydF9lcXVhbCgiYyIsIHIuZ2V0YykKLSAgICAgIGFz c2VydF9lcXVhbCgiZGVmZ2giLCByLnJlYWRwYXJ0aWFsKDEwKSkKLSAgICBl bmQKKyAgICBwaXBlKCJVUy1BU0NJSTpVVEYtOCIsIHsgOnVuaXZlcnNhbF9u ZXdsaW5lID0+IHRydWUgfSwKKyAgICAgICAgIHByb2MgZG8gfHd8CisgICAg ICAgICAgIHcgPDwgImFcblxuXG5jZGVmZ2giLmdzdWIoL1xuLywgIlxyXG4i KQorICAgICAgICAgICB3LmNsb3NlCisgICAgICAgICBlbmQsCisgICAgICAg ICBwcm9jIGRvIHxyfAorICAgICAgICAgICBhc3NlcnRfZXF1YWwoImFcblxu Iiwgci5nZXRzKCIiKSkKKyAgICAgICAgICAgYXNzZXJ0X2VxdWFsKCJjIiwg ci5nZXRjKQorICAgICAgICAgICBhc3NlcnRfZXF1YWwoImRlZmdoIiwgci5y ZWFkcGFydGlhbCgxMCkpCisgICAgICAgICBlbmQpCiAgIGVuZAogCiAgIGRl ZiB0ZXN0X3RleHRtb2RlX3BhcmFncmFwaF9ub25hc2NpaWNvbXBhdApAQCAt MTg0Nyw5ICsxOTU2LDEwIEBACiAgICAgIEVuY29kaW5nOjpVVEZfMTZCRSwg RW5jb2Rpbmc6OlVURl8xNkxFLAogICAgICBFbmNvZGluZzo6VVRGXzhdLmVh Y2ggZG8gfGV8CiAgICAgICByLnNldF9lbmNvZGluZyhFbmNvZGluZzo6VVNf QVNDSUksIGUpCi0gICAgICB3LnByaW50KGJ1ZzM1MzRbMF0sICJcblxuXG5c biIsIGJ1ZzM1MzRbMV0sICJcbiIpCisgICAgICB3dGhyID0gVGhyZWFkLm5l d3sgdy5wcmludChidWczNTM0WzBdLCAiXG5cblxuXG4iLCBidWczNTM0WzFd LCAiXG4iKSB9CiAgICAgICBhc3NlcnRfZXF1YWwoKGJ1ZzM1MzRbMF0rIlxu XG4iKS5lbmNvZGUoZSksIHIuZ2V0cygiIiksIGJ1ZzM1MzRbMF0pCiAgICAg ICBhc3NlcnRfZXF1YWwoKGJ1ZzM1MzRbMV0rIlxuIikuZW5jb2RlKGUpLCBy LmdldHMoKSwgYnVnMzUzNFsxXSkKKyAgICAgIHd0aHIuam9pbgogICAgIGVu ZAogICBlbmQKIApAQCAtMTg2MiwyOCArMTk3MiwzMyBAQAogICAgICBFbmNv ZGluZzo6VVRGXzE2QkUsIEVuY29kaW5nOjpVVEZfMTZMRSwKICAgICAgRW5j b2Rpbmc6OlVURl84XS5lYWNoIGRvIHxlfAogICAgICAgci5zZXRfZW5jb2Rp bmcoRW5jb2Rpbmc6OlVTX0FTQ0lJLCBlKQotICAgICAgdy5wcmludChidWcz NTM0WzBdLCAiXG5cblxuXG4iLCBidWczNTM0WzFdLCAiXG4iKQorICAgICAg d3RociA9IFRocmVhZC5uZXd7IHcucHJpbnQoYnVnMzUzNFswXSwgIlxuXG5c blxuIiwgYnVnMzUzNFsxXSwgIlxuIikgfQogICAgICAgYXNzZXJ0X2VxdWFs KChidWczNTM0WzBdKyJcblxuIikuZW5jb2RlKGUpLCByLmdldHMoIiIpLCBi dWczNTM0WzBdKQogICAgICAgYXNzZXJ0X2VxdWFsKChidWczNTM0WzFdKyJc biIpLmVuY29kZShlKSwgci5nZXRzKCksIGJ1ZzM1MzRbMV0pCisgICAgICB3 dGhyLmpvaW4KICAgICBlbmQKICAgZW5kCiAKICAgZGVmIHRlc3RfcHV0c193 aWRlY2hhcgogICAgIGJ1ZyA9ICdbcnVieS1kZXY6NDIyMTJdJwotICAgIHIs IHcgPSBJTy5waXBlKEVuY29kaW5nOjpBU0NJSV84QklUKQotICAgIHIuYmlu bW9kZQotICAgIHcuYmlubW9kZQotICAgIHcucHV0cygweDAxMGEuY2hyKEVu Y29kaW5nOjpVVEZfMzJCRSkpCi0gICAgdy5wdXRzKDB4MDEwYS5jaHIoRW5j b2Rpbmc6OlVURl8xNkJFKSkKLSAgICB3LnB1dHMoMHgwYTAxMDAwMC5jaHIo RW5jb2Rpbmc6OlVURl8zMkxFKSkKLSAgICB3LnB1dHMoMHgwYTAxLmNocihF bmNvZGluZzo6VVRGXzE2TEUpKQotICAgIHcuY2xvc2UKLSAgICBhc3NlcnRf ZXF1YWwoIlx4MDBceDAwXHgwMVx4MGFcbiIsIHIucmVhZCg1KSwgYnVnKQot ICAgIGFzc2VydF9lcXVhbCgiXHgwMVx4MGFcbiIsIHIucmVhZCgzKSwgYnVn KQotICAgIGFzc2VydF9lcXVhbCgiXHgwMFx4MDBceDAxXHgwYVxuIiwgci5y ZWFkKDUpLCBidWcpCi0gICAgYXNzZXJ0X2VxdWFsKCJceDAxXHgwYVxuIiwg ci5yZWFkKDMpLCBidWcpCi0gICAgYXNzZXJ0X2VxdWFsKCIiLCByLnJlYWQs IGJ1ZykKLSAgICByLmNsb3NlCisgICAgcGlwZShFbmNvZGluZzo6QVNDSUlf OEJJVCwKKyAgICAgICAgIHByb2MgZG8gfHd8CisgICAgICAgICAgIHcuYmlu bW9kZQorICAgICAgICAgICB3LnB1dHMoMHgwMTBhLmNocihFbmNvZGluZzo6 VVRGXzMyQkUpKQorICAgICAgICAgICB3LnB1dHMoMHgwMTBhLmNocihFbmNv ZGluZzo6VVRGXzE2QkUpKQorICAgICAgICAgICB3LnB1dHMoMHgwYTAxMDAw MC5jaHIoRW5jb2Rpbmc6OlVURl8zMkxFKSkKKyAgICAgICAgICAgdy5wdXRz KDB4MGEwMS5jaHIoRW5jb2Rpbmc6OlVURl8xNkxFKSkKKyAgICAgICAgICAg dy5jbG9zZQorICAgICAgICAgZW5kLAorICAgICAgICAgcHJvYyBkbyB8cnwK KyAgICAgICAgICAgci5iaW5tb2RlCisgICAgICAgICAgIGFzc2VydF9lcXVh bCgiXHgwMFx4MDBceDAxXHgwYVxuIiwgci5yZWFkKDUpLCBidWcpCisgICAg ICAgICAgIGFzc2VydF9lcXVhbCgiXHgwMVx4MGFcbiIsIHIucmVhZCgzKSwg YnVnKQorICAgICAgICAgICBhc3NlcnRfZXF1YWwoIlx4MDBceDAwXHgwMVx4 MGFcbiIsIHIucmVhZCg1KSwgYnVnKQorICAgICAgICAgICBhc3NlcnRfZXF1 YWwoIlx4MDFceDBhXG4iLCByLnJlYWQoMyksIGJ1ZykKKyAgICAgICAgICAg YXNzZXJ0X2VxdWFsKCIiLCByLnJlYWQsIGJ1ZykKKyAgICAgICAgICAgci5j bG9zZQorICAgICAgICAgZW5kKQogICBlbmQKIGVuZAogCkluZGV4OiB0ZXN0 L3J1YnkvdGVzdF9pby5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0 ZXN0L3J1YnkvdGVzdF9pby5yYgkocmV2aXNpb24gMjk1MTkpCisrKyB0ZXN0 L3J1YnkvdGVzdF9pby5yYgkod29ya2luZyBjb3B5KQpAQCAtMjIsMTQgKzIy LDU5IEBACiAgICAgSU8ubWV0aG9kX2RlZmluZWQ/KCJub25ibG9jaz0iKQog ICBlbmQKIAorICBkZWYgcGlwZSh3cCwgcnApCisgICAgciwgdyA9IElPLnBp cGUKKyAgICBydCA9IFRocmVhZC5uZXcgeyBycC5jYWxsKHIpIH0KKyAgICB3 dCA9IFRocmVhZC5uZXcgeyB3cC5jYWxsKHcpIH0KKyAgICBmbHVuaygidGlt ZW91dCIpIHVubGVzcyBydC5qb2luKDEwKSAmJiB3dC5qb2luKDEwKQorICBl bnN1cmUKKyAgICByLmNsb3NlIHVubGVzcyAhciB8fCByLmNsb3NlZD8KKyAg ICB3LmNsb3NlIHVubGVzcyAhdyB8fCB3LmNsb3NlZD8KKyAgICAocnQua2ls bDsgcnQuam9pbikgaWYgcnQKKyAgICAod3Qua2lsbDsgd3Quam9pbikgaWYg d3QKKyAgZW5kCisKKyAgZGVmIHdpdGhfcGlwZQorICAgIHIsIHcgPSBJTy5w aXBlCisgICAgYmVnaW4KKyAgICAgIHlpZWxkIHIsIHcKKyAgICBlbnN1cmUK KyAgICAgIHIuY2xvc2UgdW5sZXNzIHIuY2xvc2VkPworICAgICAgdy5jbG9z ZSB1bmxlc3Mgdy5jbG9zZWQ/CisgICAgZW5kCisgIGVuZAorCisgIGRlZiB3 aXRoX3JlYWRfcGlwZShjb250ZW50KQorICAgIHBpcGUocHJvYyBkbyB8d3wK KyAgICAgIHcgPDwgY29udGVudAorICAgICAgdy5jbG9zZQorICAgIGVuZCwg cHJvYyBkbyB8cnwKKyAgICAgIHlpZWxkIHIKKyAgICBlbmQpCisgIGVuZAor CisgIGRlZiBta2NkdG1wZGlyCisgICAgRGlyLm1rdG1wZGlyIHt8ZHwKKyAg ICAgIERpci5jaGRpcihkKSB7CisgICAgICAgIHlpZWxkCisgICAgICB9Cisg ICAgfQorICBlbmQKKwogICBkZWYgdGVzdF9waXBlCiAgICAgciwgdyA9IElP LnBpcGUKICAgICBhc3NlcnRfaW5zdGFuY2Vfb2YoSU8sIHIpCiAgICAgYXNz ZXJ0X2luc3RhbmNlX29mKElPLCB3KQotICAgIHcucHJpbnQgImFiYyIKLSAg ICB3LmNsb3NlCi0gICAgYXNzZXJ0X2VxdWFsKCJhYmMiLCByLnJlYWQpCi0g ICAgci5jbG9zZQorICAgIFsKKyAgICAgIFRocmVhZC5zdGFydHsKKyAgICAg ICAgdy5wcmludCAiYWJjIgorICAgICAgICB3LmNsb3NlCisgICAgICB9LAor ICAgICAgVGhyZWFkLnN0YXJ0eworICAgICAgICBhc3NlcnRfZXF1YWwoImFi YyIsIHIucmVhZCkKKyAgICAgICAgci5jbG9zZQorICAgICAgfQorICAgIF0u ZWFjaHt8dGhyfCB0aHIuam9pbn0KICAgZW5kCiAKICAgZGVmIHRlc3RfcGlw ZV9ibG9jawpAQCAtMzgsOSArODMsMTUgQEAKICAgICAgIHggPSBbcix3XQog ICAgICAgYXNzZXJ0X2luc3RhbmNlX29mKElPLCByKQogICAgICAgYXNzZXJ0 X2luc3RhbmNlX29mKElPLCB3KQotICAgICAgdy5wcmludCAiYWJjIgotICAg ICAgdy5jbG9zZQotICAgICAgYXNzZXJ0X2VxdWFsKCJhYmMiLCByLnJlYWQp CisgICAgICBbCisgICAgICAgIFRocmVhZC5zdGFydCBkbworICAgICAgICAg IHcucHJpbnQgImFiYyIKKyAgICAgICAgICB3LmNsb3NlCisgICAgICAgIGVu ZCwKKyAgICAgICAgVGhyZWFkLnN0YXJ0IGRvCisgICAgICAgICAgYXNzZXJ0 X2VxdWFsKCJhYmMiLCByLnJlYWQpCisgICAgICAgIGVuZAorICAgICAgXS5l YWNoe3x0aHJ8IHRoci5qb2lufQogICAgICAgYXNzZXJ0KCFyLmNsb3NlZD8p CiAgICAgICBhc3NlcnQody5jbG9zZWQ/KQogICAgICAgOmZvb29vCkBAIC02 NSw1OCArMTE2LDY2IEBACiAKICAgZGVmIHRlc3RfZ2V0c19ycwogICAgICMg ZGVmYXVsdF9ycwotICAgIHIsIHcgPSBJTy5waXBlCi0gICAgdy5wcmludCAi YWFhXG5iYmJcbiIKLSAgICB3LmNsb3NlCi0gICAgYXNzZXJ0X2VxdWFsICJh YWFcbiIsIHIuZ2V0cwotICAgIGFzc2VydF9lcXVhbCAiYmJiXG4iLCByLmdl dHMKLSAgICBhc3NlcnRfbmlsIHIuZ2V0cwotICAgIHIuY2xvc2UKKyAgICBw aXBlKHByb2MgZG8gfHd8CisgICAgICB3LnByaW50ICJhYWFcbmJiYlxuIgor ICAgICAgdy5jbG9zZQorICAgIGVuZCwgcHJvYyBkbyB8cnwKKyAgICAgIGFz c2VydF9lcXVhbCAiYWFhXG4iLCByLmdldHMKKyAgICAgIGFzc2VydF9lcXVh bCAiYmJiXG4iLCByLmdldHMKKyAgICAgIGFzc2VydF9uaWwgci5nZXRzCisg ICAgICByLmNsb3NlCisgICAgZW5kKQogCiAgICAgIyBuaWwKLSAgICByLCB3 ID0gSU8ucGlwZQotICAgIHcucHJpbnQgImFcblxuYlxuXG4iCi0gICAgdy5j bG9zZQotICAgIGFzc2VydF9lcXVhbCAiYVxuXG5iXG5cbiIsIHIuZ2V0cyhu aWwpCi0gICAgYXNzZXJ0X25pbCByLmdldHMoIiIpCi0gICAgci5jbG9zZQor ICAgIHBpcGUocHJvYyBkbyB8d3wKKyAgICAgIHcucHJpbnQgImFcblxuYlxu XG4iCisgICAgICB3LmNsb3NlCisgICAgZW5kLCBwcm9jIGRvIHxyfAorICAg ICAgYXNzZXJ0X2VxdWFsICJhXG5cbmJcblxuIiwgci5nZXRzKG5pbCkKKyAg ICAgIGFzc2VydF9uaWwgci5nZXRzKCIiKQorICAgICAgci5jbG9zZQorICAg IGVuZCkKIAogICAgICMgIlwzNzciCi0gICAgciwgdyA9IElPLnBpcGUoJ2Fz Y2lpLThiaXQnKQotICAgIHcucHJpbnQgIlwzNzd4eXoiCi0gICAgdy5jbG9z ZQotICAgIHIuYmlubW9kZQotICAgIGFzc2VydF9lcXVhbCgiXDM3NyIsIHIu Z2V0cygiXDM3NyIpLCAiW3J1YnktZGV2OjI0NDYwXSIpCi0gICAgci5jbG9z ZQorICAgIHBpcGUocHJvYyBkbyB8d3wKKyAgICAgIHcucHJpbnQgIlwzNzd4 eXoiCisgICAgICB3LmNsb3NlCisgICAgZW5kLCBwcm9jIGRvIHxyfAorICAg ICAgci5iaW5tb2RlCisgICAgICBhc3NlcnRfZXF1YWwoIlwzNzciLCByLmdl dHMoIlwzNzciKSwgIltydWJ5LWRldjoyNDQ2MF0iKQorICAgICAgci5jbG9z ZQorICAgIGVuZCkKIAogICAgICMgIiIKLSAgICByLCB3ID0gSU8ucGlwZQot ICAgIHcucHJpbnQgImFcblxuYlxuXG4iCi0gICAgdy5jbG9zZQotICAgIGFz c2VydF9lcXVhbCAiYVxuXG4iLCByLmdldHMoIiIpLCAiW3J1YnktY29yZTow Mzc3MV0iCi0gICAgYXNzZXJ0X2VxdWFsICJiXG5cbiIsIHIuZ2V0cygiIikK LSAgICBhc3NlcnRfbmlsIHIuZ2V0cygiIikKLSAgICByLmNsb3NlCisgICAg cGlwZShwcm9jIGRvIHx3fAorICAgICAgdy5wcmludCAiYVxuXG5iXG5cbiIK KyAgICAgIHcuY2xvc2UKKyAgICBlbmQsIHByb2MgZG8gfHJ8CisgICAgICBh c3NlcnRfZXF1YWwgImFcblxuIiwgci5nZXRzKCIiKSwgIltydWJ5LWNvcmU6 MDM3NzFdIgorICAgICAgYXNzZXJ0X2VxdWFsICJiXG5cbiIsIHIuZ2V0cygi IikKKyAgICAgIGFzc2VydF9uaWwgci5nZXRzKCIiKQorICAgICAgci5jbG9z ZQorICAgIGVuZCkKICAgZW5kCiAKICAgZGVmIHRlc3RfZ2V0c19saW1pdF9l eHRyYV9hcmcKLSAgICB3aXRoX3BpcGUge3xyLCB3fAotICAgICAgciwgdyA9 IElPLnBpcGUKKyAgICBwaXBlKHByb2MgZG8gfHd8CiAgICAgICB3IDw8ICIw MTIzNDU2Nzg5XG4wMTIzNDU2Nzg5IgogICAgICAgdy5jbG9zZQorICAgIGVu ZCwgcHJvYyBkbyB8cnwKICAgICAgIGFzc2VydF9lcXVhbCgiMDEyMzQ1Njc4 OVxuMCIsIHIuZ2V0cyhuaWwsIDEyKSkKICAgICAgIGFzc2VydF9yYWlzZShU eXBlRXJyb3IpIHsgci5nZXRzKDMsbmlsKSB9Ci0gICAgfQorICAgIGVuZCkK ICAgZW5kCiAKICAgIyBUaGlzIHRlc3QgY2F1c2UgU0VHVi4KICAgZGVmIHRl c3RfdW5nZXRjCi0gICAgciwgdyA9IElPLnBpcGUKLSAgICB3LmNsb3NlCi0g ICAgcyA9ICJhIiAqIDEwMDAKLSAgICBhc3NlcnRfcmFpc2UoSU9FcnJvciwg IltydWJ5LWRldjozMTY1MF0iKSB7IDIwMC50aW1lcyB7IHIudW5nZXRjIHMg fSB9Ci0gIGVuc3VyZQotICAgIHIuY2xvc2UKKyAgICBwaXBlKHByb2MgZG8g fHd8CisgICAgICB3LmNsb3NlCisgICAgZW5kLCBwcm9jIGRvIHxyfAorICAg ICAgcyA9ICJhIiAqIDEwMDAKKyAgICAgIGFzc2VydF9yYWlzZShJT0Vycm9y LCAiW3J1YnktZGV2OjMxNjUwXSIpIHsgMjAwLnRpbWVzIHsgci51bmdldGMg cyB9IH0KKyAgICBlbmQpCiAgIGVuZAogCiAgIGRlZiB0ZXN0X3VuZ2V0Ynl0 ZQpAQCAtMTQyLDEzICsyMDEsMTMgQEAKICAgZW5kCiAKICAgZGVmIHRlc3Rf ZWFjaF9ieXRlCi0gICAgciwgdyA9IElPLnBpcGUKLSAgICB3IDw8ICJhYmMg ZGVmIgotICAgIHcuY2xvc2UKLSAgICByLmVhY2hfYnl0ZSB7fGJ5dGV8IGJy ZWFrIGlmIGJ5dGUgPT0gMzIgfQotICAgIGFzc2VydF9lcXVhbCgiZGVmIiwg ci5yZWFkLCAiW3J1YnktZGV2OjMxNjU5XSIpCi0gIGVuc3VyZQotICAgIHIu Y2xvc2UKKyAgICBwaXBlKHByb2MgZG8gfHd8CisgICAgICB3IDw8ICJhYmMg ZGVmIgorICAgICAgdy5jbG9zZQorICAgIGVuZCwgcHJvYyBkbyB8cnwKKyAg ICAgIHIuZWFjaF9ieXRlIHt8Ynl0ZXwgYnJlYWsgaWYgYnl0ZSA9PSAzMiB9 CisgICAgICBhc3NlcnRfZXF1YWwoImRlZiIsIHIucmVhZCwgIltydWJ5LWRl djozMTY1OV0iKQorICAgIGVuZCkKICAgZW5kCiAKICAgZGVmIHRlc3RfZWFj aF9jb2RlcG9pbnQKQEAgLTE3MCwzNSArMjI5LDYgQEAKICAgICBlbmQKICAg ZW5kCiAKLSAgZGVmIHdpdGhfcGlwZQotICAgIHIsIHcgPSBJTy5waXBlCi0g ICAgYmVnaW4KLSAgICAgIHlpZWxkIHIsIHcKLSAgICBlbnN1cmUKLSAgICAg IHIuY2xvc2UgdW5sZXNzIHIuY2xvc2VkPwotICAgICAgdy5jbG9zZSB1bmxl c3Mgdy5jbG9zZWQ/Ci0gICAgZW5kCi0gIGVuZAotCi0gIGRlZiB3aXRoX3Jl YWRfcGlwZShjb250ZW50KQotICAgIHIsIHcgPSBJTy5waXBlCi0gICAgdyA8 PCBjb250ZW50Ci0gICAgdy5jbG9zZQotICAgIGJlZ2luCi0gICAgICB5aWVs ZCByCi0gICAgZW5zdXJlCi0gICAgICByLmNsb3NlCi0gICAgZW5kCi0gIGVu ZAotCi0gIGRlZiBta2NkdG1wZGlyCi0gICAgRGlyLm1rdG1wZGlyIHt8ZHwK LSAgICAgIERpci5jaGRpcihkKSB7Ci0gICAgICAgIHlpZWxkCi0gICAgICB9 Ci0gICAgfQotICBlbmQKLQogICBkZWYgdGVzdF9jb3B5X3N0cmVhbQogICAg IG1rY2R0bXBkaXIgewogCkBAIC0yMzUsMTIgKzI2NSwxMyBAQAogICAgICAg ICBJTy5jb3B5X3N0cmVhbSgic3JjIiwgIm5vZGlyL2JhciIpCiAgICAgICB9 CiAKLSAgICAgIHdpdGhfcGlwZSB7fHIsIHd8CisgICAgICBwaXBlKHByb2Mg ZG8gfHd8CiAgICAgICAgIHJldCA9IElPLmNvcHlfc3RyZWFtKCJzcmMiLCB3 KQogICAgICAgICBhc3NlcnRfZXF1YWwoY29udGVudC5ieXRlc2l6ZSwgcmV0 KQogICAgICAgICB3LmNsb3NlCisgICAgICBlbmQsIHByb2MgZG8gfHJ8CiAg ICAgICAgIGFzc2VydF9lcXVhbChjb250ZW50LCByLnJlYWQpCi0gICAgICB9 CisgICAgICBlbmQpCiAKICAgICAgIHdpdGhfcGlwZSB7fHIsIHd8CiAgICAg ICAgIHcuY2xvc2UKQEAgLTI1Niw3NyArMjg3LDg1IEBACiAKICAgICAgIHdp dGhfcmVhZF9waXBlKCJhYmMiKSB7fHIxfAogICAgICAgICBhc3NlcnRfZXF1 YWwoImEiLCByMS5nZXRjKQotICAgICAgICB3aXRoX3BpcGUge3xyMiwgdzJ8 CisgICAgICAgIHBpcGUocHJvYyBkbyB8dzJ8CiAgICAgICAgICAgdzIuc3lu YyA9IGZhbHNlCiAgICAgICAgICAgdzIgPDwgImRlZiIKICAgICAgICAgICBy ZXQgPSBJTy5jb3B5X3N0cmVhbShyMSwgdzIpCiAgICAgICAgICAgYXNzZXJ0 X2VxdWFsKDIsIHJldCkKICAgICAgICAgICB3Mi5jbG9zZQorICAgICAgICBl bmQsIHByb2MgZG8gfHIyfAogICAgICAgICAgIGFzc2VydF9lcXVhbCgiZGVm YmMiLCByMi5yZWFkKQotICAgICAgICB9CisgICAgICAgIGVuZCkKICAgICAg IH0KIAogICAgICAgd2l0aF9yZWFkX3BpcGUoImFiYyIpIHt8cjF8CiAgICAg ICAgIGFzc2VydF9lcXVhbCgiYSIsIHIxLmdldGMpCi0gICAgICAgIHdpdGhf cGlwZSB7fHIyLCB3MnwKKyAgICAgICAgcGlwZShwcm9jIGRvIHx3MnwKICAg ICAgICAgICB3Mi5zeW5jID0gZmFsc2UKICAgICAgICAgICB3MiA8PCAiZGVm IgogICAgICAgICAgIHJldCA9IElPLmNvcHlfc3RyZWFtKHIxLCB3MiwgMSkK ICAgICAgICAgICBhc3NlcnRfZXF1YWwoMSwgcmV0KQogICAgICAgICAgIHcy LmNsb3NlCisgICAgICAgIGVuZCwgcHJvYyBkbyB8cjJ8CiAgICAgICAgICAg YXNzZXJ0X2VxdWFsKCJkZWZiIiwgcjIucmVhZCkKLSAgICAgICAgfQorICAg ICAgICBlbmQpCiAgICAgICB9CiAKICAgICAgIHdpdGhfcmVhZF9waXBlKCJh YmMiKSB7fHIxfAogICAgICAgICBhc3NlcnRfZXF1YWwoImEiLCByMS5nZXRj KQotICAgICAgICB3aXRoX3BpcGUge3xyMiwgdzJ8CisgICAgICAgIHBpcGUo cHJvYyBkbyB8dzJ8CiAgICAgICAgICAgcmV0ID0gSU8uY29weV9zdHJlYW0o cjEsIHcyKQogICAgICAgICAgIGFzc2VydF9lcXVhbCgyLCByZXQpCiAgICAg ICAgICAgdzIuY2xvc2UKKyAgICAgICAgZW5kLCBwcm9jIGRvIHxyMnwKICAg ICAgICAgICBhc3NlcnRfZXF1YWwoImJjIiwgcjIucmVhZCkKLSAgICAgICAg fQorICAgICAgICBlbmQpCiAgICAgICB9CiAKICAgICAgIHdpdGhfcmVhZF9w aXBlKCJhYmMiKSB7fHIxfAogICAgICAgICBhc3NlcnRfZXF1YWwoImEiLCBy MS5nZXRjKQotICAgICAgICB3aXRoX3BpcGUge3xyMiwgdzJ8CisgICAgICAg IHBpcGUocHJvYyBkbyB8dzJ8CiAgICAgICAgICAgcmV0ID0gSU8uY29weV9z dHJlYW0ocjEsIHcyLCAxKQogICAgICAgICAgIGFzc2VydF9lcXVhbCgxLCBy ZXQpCiAgICAgICAgICAgdzIuY2xvc2UKKyAgICAgICAgZW5kLCBwcm9jIGRv IHxyMnwKICAgICAgICAgICBhc3NlcnRfZXF1YWwoImIiLCByMi5yZWFkKQot ICAgICAgICB9CisgICAgICAgIGVuZCkKICAgICAgIH0KIAogICAgICAgd2l0 aF9yZWFkX3BpcGUoImFiYyIpIHt8cjF8CiAgICAgICAgIGFzc2VydF9lcXVh bCgiYSIsIHIxLmdldGMpCi0gICAgICAgIHdpdGhfcGlwZSB7fHIyLCB3MnwK KyAgICAgICAgcGlwZShwcm9jIGRvIHx3MnwKICAgICAgICAgICByZXQgPSBJ Ty5jb3B5X3N0cmVhbShyMSwgdzIsIDApCiAgICAgICAgICAgYXNzZXJ0X2Vx dWFsKDAsIHJldCkKICAgICAgICAgICB3Mi5jbG9zZQorICAgICAgICBlbmQs IHByb2MgZG8gfHIyfAogICAgICAgICAgIGFzc2VydF9lcXVhbCgiIiwgcjIu cmVhZCkKLSAgICAgICAgfQorICAgICAgICBlbmQpCiAgICAgICB9CiAKLSAg ICAgIHdpdGhfcGlwZSB7fHIxLCB3MXwKKyAgICAgIHBpcGUocHJvYyBkbyB8 dzF8CiAgICAgICAgIHcxIDw8ICJhYmMiCisgICAgICAgIHcxIDw8ICJkZWYi CisgICAgICAgIHcxLmNsb3NlCisgICAgICBlbmQsIHByb2MgZG8gfHIxfAog ICAgICAgICBhc3NlcnRfZXF1YWwoImEiLCByMS5nZXRjKQotICAgICAgICB3 aXRoX3BpcGUge3xyMiwgdzJ8Ci0gICAgICAgICAgdzEgPDwgImRlZiIKLSAg ICAgICAgICB3MS5jbG9zZQorICAgICAgICBwaXBlKHByb2MgZG8gfHcyfAog ICAgICAgICAgIHJldCA9IElPLmNvcHlfc3RyZWFtKHIxLCB3MikKICAgICAg ICAgICBhc3NlcnRfZXF1YWwoNSwgcmV0KQogICAgICAgICAgIHcyLmNsb3Nl CisgICAgICAgIGVuZCwgcHJvYyBkbyB8cjJ8CiAgICAgICAgICAgYXNzZXJ0 X2VxdWFsKCJiY2RlZiIsIHIyLnJlYWQpCi0gICAgICAgIH0KLSAgICAgIH0K KyAgICAgICAgZW5kKQorICAgICAgZW5kKQogCi0gICAgICB3aXRoX3BpcGUg e3xyLCB3fAorICAgICAgcGlwZShwcm9jIGRvIHx3fAogICAgICAgICByZXQg PSBJTy5jb3B5X3N0cmVhbSgic3JjIiwgdywgMSwgMSkKICAgICAgICAgYXNz ZXJ0X2VxdWFsKDEsIHJldCkKICAgICAgICAgdy5jbG9zZQorICAgICAgZW5k LCBwcm9jIGRvIHxyfAogICAgICAgICBhc3NlcnRfZXF1YWwoY29udGVudFsx LDFdLCByLnJlYWQpCi0gICAgICB9CisgICAgICBlbmQpCiAKICAgICAgIGlm IGhhdmVfbm9uYmxvY2s/CiAgICAgICAgIHdpdGhfcmVhZF9waXBlKCJhYmMi KSB7fHIxfApAQCAtNDMzLDE1ICs0NzIsMTYgQEAKICAgZGVmIHRlc3RfY29w eV9zdHJlYW1fcmJ1ZgogICAgIG1rY2R0bXBkaXIgewogICAgICAgYmVnaW4K LSAgICAgICAgd2l0aF9waXBlIHt8ciwgd3wKKyAgICAgICAgcGlwZShwcm9j IGRvIHx3fAogICAgICAgICAgIEZpbGUub3BlbigiZm9vIiwgInciKSB7fGZ8 IGYgPDwgImFiY2QiIH0KICAgICAgICAgICBGaWxlLm9wZW4oImZvbyIpIHt8 ZnwKICAgICAgICAgICAgIGYucmVhZCgxKQogICAgICAgICAgICAgYXNzZXJ0 X2VxdWFsKDMsIElPLmNvcHlfc3RyZWFtKGYsIHcsIDEwLCAxKSkKICAgICAg ICAgICB9CiAgICAgICAgICAgdy5jbG9zZQorICAgICAgICBlbmQsIHByb2Mg ZG8gfHJ8CiAgICAgICAgICAgYXNzZXJ0X2VxdWFsKCJiY2QiLCByLnJlYWQp Ci0gICAgICAgIH0KKyAgICAgICAgZW5kKQogICAgICAgcmVzY3VlIE5vdElt cGxlbWVudGVkRXJyb3IKICAgICAgICAgc2tpcCAicHJlYWQoMikgaXMgbm90 IGltcGxlbXRlbnRlZC4iCiAgICAgICBlbmQKQEAgLTY5NSwxOSArNzM1LDIw IEBACiAgIGVuZAogCiAgIGRlZiB0ZXN0X2NvcHlfc3RyZWFtX3N0cmlvX3Ji dWYKLSAgICB3aXRoX3BpcGUge3xyLCB3fAorICAgIHBpcGUocHJvYyBkbyB8 d3wKICAgICAgIHcgPDwgImFiY2QiCiAgICAgICB3LmNsb3NlCisgICAgZW5k LCBwcm9jIGRvIHxyfAogICAgICAgYXNzZXJ0X2VxdWFsKCJhIiwgci5yZWFk KDEpKQogICAgICAgc2lvID0gU3RyaW5nSU8ubmV3CiAgICAgICBJTy5jb3B5 X3N0cmVhbShyLCBzaW8pCiAgICAgICBhc3NlcnRfZXF1YWwoImJjZCIsIHNp by5zdHJpbmcpCi0gICAgfQorICAgIGVuZCkKICAgZW5kCiAKICAgZGVmIHRl c3RfY29weV9zdHJlYW1fc3JjX3didWYKICAgICBta2NkdG1wZGlyIHsKLSAg ICAgIHdpdGhfcGlwZSB7fHIsIHd8CisgICAgICBwaXBlKHByb2MgZG8gfHd8 CiAgICAgICAgIEZpbGUub3BlbigiZm9lIiwgIncrIikge3xmfAogICAgICAg ICAgIGYud3JpdGUgImFiY2RcbiIKICAgICAgICAgICBmLnJld2luZApAQCAt NzE2LDE3ICs3NTcsMTkgQEAKICAgICAgICAgfQogICAgICAgICBhc3NlcnRf ZXF1YWwoInh5Y2RcbiIsIEZpbGUucmVhZCgiZm9lIikpCiAgICAgICAgIHcu Y2xvc2UKKyAgICAgIGVuZCwgcHJvYyBkbyB8cnwKICAgICAgICAgYXNzZXJ0 X2VxdWFsKCJjZFxuIiwgci5yZWFkKQogICAgICAgICByLmNsb3NlCi0gICAg ICB9CisgICAgICBlbmQpCiAgICAgfQogICBlbmQKIAogICBkZWYgdGVzdF9j b3B5X3N0cmVhbV9kc3RfcmJ1ZgogICAgIG1rY2R0bXBkaXIgewotICAgICAg d2l0aF9waXBlIHt8ciwgd3wKKyAgICAgIHBpcGUocHJvYyBkbyB8d3wKICAg ICAgICAgdyA8PCAieHl6IgogICAgICAgICB3LmNsb3NlCisgICAgICBlbmQs IHByb2MgZG8gfHJ8CiAgICAgICAgIEZpbGUub3BlbigiZm9tIiwgIncrYiIp IHt8ZnwKICAgICAgICAgICBmLndyaXRlICJhYmNkXG4iCiAgICAgICAgICAg Zi5yZXdpbmQKQEAgLTczNSw3ICs3NzgsNyBAQAogICAgICAgICAgIElPLmNv cHlfc3RyZWFtKHIsIGYpCiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0X2Vx dWFsKCJhYnh5eiIsIEZpbGUucmVhZCgiZm9tIikpCi0gICAgICB9CisgICAg ICBlbmQpCiAgICAgfQogICBlbmQKIApAQCAtNzUwLDE4ICs3OTMsNiBAQAog ICAgIGVuZAogICBlbmQKIAotICBkZWYgcGlwZSh3cCwgcnApCi0gICAgciwg dyA9IElPLnBpcGUKLSAgICBydCA9IFRocmVhZC5uZXcgeyBycC5jYWxsKHIp IH0KLSAgICB3dCA9IFRocmVhZC5uZXcgeyB3cC5jYWxsKHcpIH0KLSAgICBm bHVuaygidGltZW91dCIpIHVubGVzcyBydC5qb2luKDEwKSAmJiB3dC5qb2lu KDEwKQotICBlbnN1cmUKLSAgICByLmNsb3NlIHVubGVzcyAhciB8fCByLmNs b3NlZD8KLSAgICB3LmNsb3NlIHVubGVzcyAhdyB8fCB3LmNsb3NlZD8KLSAg ICAocnQua2lsbDsgcnQuam9pbikgaWYgcnQKLSAgICAod3Qua2lsbDsgd3Qu am9pbikgaWYgd3QKLSAgZW5kCi0KICAgZGVmIHJ1YnkoKmFyZ3MpCiAgICAg YXJncyA9IFsnLWUnLCAnJD4ud3JpdGUoJDwucmVhZCknXSBpZiBhcmdzLmVt cHR5PwogICAgIHJ1YnkgPSBFbnZVdGlsLnJ1YnliaW4K --mimepart_4cbef9bc44859_ef6c153bb2235ad--