From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Diego Herrera To: git-commits@fedoraproject.org Subject: [rpms/onnx] test-1.21.0: Reorganize patches Date: Wed, 01 Jul 2026 15:50:53 GMT Message-ID: <178292105384.1.952699640524323405.rpms-onnx-351e8aaa0791@fedoraproject.org> List-ID: X-Git-Repo: rpms/onnx X-Git-Branch: test-1.21.0 X-Git-Rev: 351e8aaa07916fe2add96d84f24d7c9d1327770c QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb25ueApCcmFuY2gg OiB0ZXN0LTEuMjEuMApDb21taXQgOiAzNTFlOGFhYTA3OTE2ZmUyYWRkOTZkODRmMjRkN2M5ZDEz Mjc3NzBjCkF1dGhvciA6IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJlZGhhdC5jb20+CkRhdGUg ICA6IDIwMjYtMDctMDFUMDA6MzQ6MzItMDQ6MDAKU3RhdHMgIDogKzU5ODEvLTU4MTQgaW4gMTAg ZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29ubngv Yy8zNTFlOGFhYTA3OTE2ZmUyYWRkOTZkODRmMjRkN2M5ZDEzMjc3NzBjP2JyYW5jaD10ZXN0LTEu MjEuMAoKTG9nOgpSZW9yZ2FuaXplIHBhdGNoZXMKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMC1CdWls ZC1zaGFyZWQtbGlicmFyaWVzLWFuZC1maXgtaW5zdGFsbC1sb2NhdGlvbi5wYXRjaCBiLzAwMDAt QnVpbGQtc2hhcmVkLWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MjM3NTUuLjAwMDAwMDAKLS0tIGEvMDAwMC1C dWlsZC1zaGFyZWQtbGlicmFyaWVzLWFuZC1maXgtaW5zdGFsbC1sb2NhdGlvbi5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gYTQ4ZjQyYjFlM2RkOTcyY2YyYzVhZDli OTIyN2RhOWUyYjFjOWZhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZWphbmRy byBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwg MjQgRmViIDIwMjQgMTQ6NDg6NDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAwLzJdIEJ1aWxkIHNo YXJlZCBsaWJyYXJpZXMgYW5kIGZpeCBpbnN0YWxsIGxvY2F0aW9uCi0KLVRoaXMgcGF0Y2ggd2Fz IHVwZGF0ZWQgdG8gYmUgYWJsZSB0byBiZSB1c2VkIG9uIG1vZGVybiB2ZXJzaW9ucyBvZiB0aGUg bGlicmFyeS4KLQotQ28tYXV0aG9yZWQtYnk6IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJlZGhh dC5jb20+Ci0KLS0tLQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3Rz LnR4dAotaW5kZXggMDQ0OTk2ZTFiLi4zYTA4ZDMyODkgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3Rz LnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC00MTQsMTkgKzQxNCwyMSBAQCBpZihPTk5Y X1VTRV9MSVRFX1BST1RPKQotICAgICBzZXQoTElOS0VEX1BST1RPQlVGX1RBUkdFVCBwcm90b2J1 Zjo6bGlicHJvdG9idWYtbGl0ZSkKLSAgIGVuZGlmKCkKLSBlbmRpZigpCi0tYWRkX2xpYnJhcnko b25ueF9wcm90byAke09OTlhfUFJPVE9fU1JDU30pCi0rYWRkX2xpYnJhcnkob25ueF9wcm90byBT SEFSRUQgJHtPTk5YX1BST1RPX1NSQ1N9KQotIGFkZF9vbm54X2dsb2JhbF9kZWZpbmVzKG9ubnhf cHJvdG8pCi0tCi0tYWRkX2xpYnJhcnkob25ueCAke09OTlhfU1JDU30gJHtPTk5YX1BST1RPX1NS Q1N9KQotK3NldF90YXJnZXRfcHJvcGVydGllcyhvbm54X3Byb3RvIFBST1BFUlRJRVMgVkVSU0lP TiAke09OTlhfVkVSU0lPTn0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNPVkVSU0lPTiAke09OTlhfVkVSU0lPTn0pCi0rYWRkX2xpYnJhcnkob25ueCBTSEFS RUQgJHtPTk5YX1NSQ1N9ICR7T05OWF9QUk9UT19TUkNTfSkKLSBhZGRfZGVwZW5kZW5jaWVzKG9u bnggb25ueF9wcm90bykKLSBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtPTk5YX1NSQ1N9 IFBST1BFUlRJRVMgQ1hYX1ZJU0lCSUxJVFlfUFJFU0VUIGhpZGRlbikKLSBhZGRfb25ueF9nbG9i YWxfZGVmaW5lcyhvbm54KQotLQotK3NldF90YXJnZXRfcHJvcGVydGllcyhvbm54IFBST1BFUlRJ RVMgVkVSU0lPTiAke09OTlhfVkVSU0lPTn0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU09WRVJTSU9OICR7T05OWF9WRVJTSU9OfSkKLSBpZihPTk5YX0JVSUxEX1BZ VEhPTikKLSAgICMgZmluZCBzeXN0ZW0gbmFub2JpbmQKLSAgIGlmKE5PVCBERUZJTkVEIG5hbm9i aW5kX0RJUiBPUiAiJHtuYW5vYmluZF9ESVJ9IiBTVFJFUVVBTCAiIikKLSAgICAgZXhlY3V0ZV9w cm9jZXNzKAotLSAgICAgIENPTU1BTkQgJHtQeXRob25fRVhFQ1VUQUJMRX0gLW0gbmFub2JpbmQg LS1jbWFrZS1kaXIKLSsgICAgICBDT01NQU5EICR7UHl0aG9uX0VYRUNVVEFCTEV9IC1tIG5hbm9i aW5kIC0tY21ha2VfZGlyCi0gICAgICAgUkVTVUxUX1ZBUklBQkxFIE5BTk9CSU5EX0NNQUtFX1JF U1VMVAotICAgICAgIE9VVFBVVF9WQVJJQUJMRSBOQU5PQklORF9DTUFLRV9ESVIKLSAgICAgICBP VVRQVVRfU1RSSVBfVFJBSUxJTkdfV0hJVEVTUEFDRQotQEAgLTQ5MSw2ICs0OTMsMTYgQEAgaWYo T05OWF9JTlNUQUxMKQotICAgICAgICAgICBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5D TFVERURJUn0KLSAgICAgICAgICAgRklMRVNfTUFUQ0hJTkcKLSAgICAgICAgICAgUEFUVEVSTiAi Ki5oIikKLSsgIGluc3RhbGwoRElSRUNUT1JZICR7T05OWF9ST09UfS9vbm54Ci0rICAgICAgICAg IERFU1RJTkFUSU9OICIke1BZX1NJVEVBUkNIfSIKLSsgICAgICAgICAgRklMRVNfTUFUQ0hJTkcK LSsgICAgICAgICAgUEFUVEVSTiAiKi5weSIKLSsgICAgICAgICAgUEFUVEVSTiAidGVzdC8qIiBF WENMVURFICkKLSsgIGluc3RhbGwoRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElS fS9vbm54Ci0rICAgICAgICAgIERFU1RJTkFUSU9OICAiJHtQWV9TSVRFQVJDSH0iCi0rICAgICAg ICAgIEZJTEVTX01BVENISU5HCi0rICAgICAgICAgIFBBVFRFUk4gIioucHkiCi0rICAgICAgICAg IFBBVFRFUk4gInRlc3QvKiIgRVhDTFVERSApCi0gZW5kaWYoKQotIAotIGNvbmZpZ3VyZV9maWxl KAotQEAgLTU0NCw2ICs1NTYsOSBAQCBpZihPTk5YX0lOU1RBTEwpCi0gICBpbnN0YWxsKFRBUkdF VFMKLSAgICAgb25ueCBvbm54X3Byb3RvCi0gICAgIEVYUE9SVCBPTk5YVGFyZ2V0cyBERVNUSU5B VElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSkKLSsgIGluc3RhbGwoVEFSR0VUUwotKyAgICBv bm54X2NwcDJweV9leHBvcnQKLSsgICAgREVTVElOQVRJT04gIiR7UFlfU0lURUFSQ0h9L29ubngi KQotIAotICAgaW5zdGFsbChFWFBPUlQgT05OWFRhcmdldHMKLSAgICAgREVTVElOQVRJT04gIiR7 Q01BS0VfSU5TVEFMTF9MSUJESVJ9L2NtYWtlL09OTlgiCi0tLSAKLTIuNTQuMAotCgpkaWZmIC0t Z2l0IGEvMDAwMS1CdWlsZC1zaGFyZWQtbGlicmFyaWVzLnBhdGNoIGIvMDAwMS1CdWlsZC1zaGFy ZWQtbGlicmFyaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1 NWU5YTMKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAxLUJ1aWxkLXNoYXJlZC1saWJyYXJpZXMucGF0 Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBkYjY2ZjM2MTJmMTU5YmRhZjAxYjM3NDQ5MzQ4NGUx OTNlNzlkNDU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGllZ28gSGVycmVyYSA8 ZGhlcnJlcmFAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMSBKdWwgMjAyNiAwMDowMTo0NCAtMDQw MAorU3ViamVjdDogW1BBVENIIDEvN10gQnVpbGQgc2hhcmVkIGxpYnJhcmllcworCitUaGlzIHBh dGNoIGlzIHBhcnQgb2YgdGhlICJCdWlsZCBzaGFyZWQgbGlicmFyaWVzIGFuZCBmaXggaW5zdGFs bCBsb2NhdGlvbiIgcGF0Y2ggYnkgQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhLmFsdmFyZXph eWxsb25AZ21haWwuY29tPiAtIFNhdCwgMjQgRmViIDIwMjQgMTQ6NDg6NDUgKzAxMDAKKworZGlm ZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDA0NDk5NmUx Yi4uMmQ4ZWEzZGYwIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlz dHMudHh0CitAQCAtNDE0LDE0ICs0MTQsMTYgQEAgaWYoT05OWF9VU0VfTElURV9QUk9UTykKKyAg ICAgc2V0KExJTktFRF9QUk9UT0JVRl9UQVJHRVQgcHJvdG9idWY6OmxpYnByb3RvYnVmLWxpdGUp CisgICBlbmRpZigpCisgZW5kaWYoKQorLWFkZF9saWJyYXJ5KG9ubnhfcHJvdG8gJHtPTk5YX1BS T1RPX1NSQ1N9KQorK2FkZF9saWJyYXJ5KG9ubnhfcHJvdG8gU0hBUkVEICR7T05OWF9QUk9UT19T UkNTfSkKKyBhZGRfb25ueF9nbG9iYWxfZGVmaW5lcyhvbm54X3Byb3RvKQorLQorLWFkZF9saWJy YXJ5KG9ubnggJHtPTk5YX1NSQ1N9ICR7T05OWF9QUk9UT19TUkNTfSkKKytzZXRfdGFyZ2V0X3By b3BlcnRpZXMob25ueF9wcm90byBQUk9QRVJUSUVTIFZFUlNJT04gJHtPTk5YX1ZFUlNJT059Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1ZFUlNJT04gJHtP Tk5YX1ZFUlNJT059KQorK2FkZF9saWJyYXJ5KG9ubnggU0hBUkVEICR7T05OWF9TUkNTfSAke09O TlhfUFJPVE9fU1JDU30pCisgYWRkX2RlcGVuZGVuY2llcyhvbm54IG9ubnhfcHJvdG8pCisgc2V0 X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7T05OWF9TUkNTfSBQUk9QRVJUSUVTIENYWF9WSVNJ QklMSVRZX1BSRVNFVCBoaWRkZW4pCisgYWRkX29ubnhfZ2xvYmFsX2RlZmluZXMob25ueCkKKy0K KytzZXRfdGFyZ2V0X3Byb3BlcnRpZXMob25ueCBQUk9QRVJUSUVTIFZFUlNJT04gJHtPTk5YX1ZF UlNJT059CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVkVSU0lP TiAke09OTlhfVkVSU0lPTn0pCisgaWYoT05OWF9CVUlMRF9QWVRIT04pCisgICAjIGZpbmQgc3lz dGVtIG5hbm9iaW5kCisgICBpZihOT1QgREVGSU5FRCBuYW5vYmluZF9ESVIgT1IgIiR7bmFub2Jp bmRfRElSfSIgU1RSRVFVQUwgIiIpCistLSAKKzIuNTQuMAorCgpkaWZmIC0tZ2l0IGEvMDAwMi1G aXgtaW5zdGFsbC1sb2NhdGlvbi5wYXRjaCBiLzAwMDItRml4LWluc3RhbGwtbG9jYXRpb24ucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZjZmZmNAotLS0gL2Rldi9u dWxsCisrKyBiLzAwMDItRml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MSBA QAorRnJvbSBhYWU5NThiNDUwNWYwNjBkYzU4ZDE1ZTQxNTk5ZDVlZmYxYjllZWUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGllZ28gSGVycmVyYSA8ZGhlcnJlcmFAcmVkaGF0LmNv bT4KK0RhdGU6IFdlZCwgMSBKdWwgMjAyNiAwMDowMjozOSAtMDQwMAorU3ViamVjdDogW1BBVENI IDIvN10gRml4IGluc3RhbGwgbG9jYXRpb24KKworVGhpcyBwYXRjaCBpcyBwYXJ0IG9mIHRoZSAi QnVpbGQgc2hhcmVkIGxpYnJhcmllcyBhbmQgZml4IGluc3RhbGwgbG9jYXRpb24iIHBhdGNoIGJ5 IEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4gLSBT YXQsIDI0IEZlYiAyMDI0IDE0OjQ4OjQ1ICswMTAwCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3Rz LnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAyZDhlYTNkZjAuLjA5NDA3ODE2MCAxMDA2NDQK Ky0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTQ5Myw2ICs0 OTMsMTYgQEAgaWYoT05OWF9JTlNUQUxMKQorICAgICAgICAgICBERVNUSU5BVElPTiAke0NNQUtF X0lOU1RBTExfSU5DTFVERURJUn0KKyAgICAgICAgICAgRklMRVNfTUFUQ0hJTkcKKyAgICAgICAg ICAgUEFUVEVSTiAiKi5oIikKKysgIGluc3RhbGwoRElSRUNUT1JZICR7T05OWF9ST09UfS9vbm54 CisrICAgICAgICAgIERFU1RJTkFUSU9OICIke1BZX1NJVEVBUkNIfSIKKysgICAgICAgICAgRklM RVNfTUFUQ0hJTkcKKysgICAgICAgICAgUEFUVEVSTiAiKi5weSIKKysgICAgICAgICAgUEFUVEVS TiAidGVzdC8qIiBFWENMVURFICkKKysgIGluc3RhbGwoRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVO VF9CSU5BUllfRElSfS9vbm54CisrICAgICAgICAgIERFU1RJTkFUSU9OICAiJHtQWV9TSVRFQVJD SH0iCisrICAgICAgICAgIEZJTEVTX01BVENISU5HCisrICAgICAgICAgIFBBVFRFUk4gIioucHki CisrICAgICAgICAgIFBBVFRFUk4gInRlc3QvKiIgRVhDTFVERSApCisgZW5kaWYoKQorIAorIGNv bmZpZ3VyZV9maWxlKAorQEAgLTU0Niw2ICs1NTYsOSBAQCBpZihPTk5YX0lOU1RBTEwpCisgICBp bnN0YWxsKFRBUkdFVFMKKyAgICAgb25ueCBvbm54X3Byb3RvCisgICAgIEVYUE9SVCBPTk5YVGFy Z2V0cyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSkKKysgIGluc3RhbGwoVEFS R0VUUworKyAgICBvbm54X2NwcDJweV9leHBvcnQKKysgICAgREVTVElOQVRJT04gIiR7UFlfU0lU RUFSQ0h9L29ubngiKQorIAorICAgaW5zdGFsbChFWFBPUlQgT05OWFRhcmdldHMKKyAgICAgREVT VElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L2NtYWtlL09OTlgiCistLSAKKzIuNTQu MAorCgpkaWZmIC0tZ2l0IGEvMDAwMi1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5k ZW5jeS5wYXRjaCBiLzAwMDItUmVtb3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3ku cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMTFjYWIuLjAwMDAwMDAKLS0t IGEvMDAwMi1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDU3MzkgKzAsMCBAQAotRnJvbSAyMzFiOGU1MDkzYzI0Y2RjNjI0MmQy Yzg1NjVjMWFkYjUyNmVlYmE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGllZ28g SGVycmVyYSA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgMjkgTWF5IDIwMjYgMTg6 NDc6MjYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIFJlbW92ZSBweXRob24tcGFyYW1ldGVy aXplZCBkZXBlbmRlbmN5Ci0KLQotZGlmZiAtLWdpdCBhL29ubngvdGVzdC9iYXNpY190ZXN0LnB5 IGIvb25ueC90ZXN0L2Jhc2ljX3Rlc3QucHkKLWluZGV4IDk3MTNlNGQxZi4uNmQ2YzZjOTBlIDEw MDY0NAotLS0tIGEvb25ueC90ZXN0L2Jhc2ljX3Rlc3QucHkKLSsrKyBiL29ubngvdGVzdC9iYXNp Y190ZXN0LnB5Ci1AQCAtMTEsNyArMTEsNiBAQCBpbXBvcnQgdW5pdHRlc3QKLSAKLSBpbXBvcnQg Z29vZ2xlLnByb3RvYnVmLm1lc3NhZ2UKLSBpbXBvcnQgZ29vZ2xlLnByb3RvYnVmLnRleHRfZm9y bWF0Ci0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLSAKLSBpbXBvcnQgb25ueAotIGZyb20gb25ueCBp bXBvcnQgc2VyaWFsaXphdGlvbgotQEAgLTM0LDk3ICszMyw2IEBAIGRlZiBfc2ltcGxlX3RlbnNv cigpIC0+IG9ubnguVGVuc29yUHJvdG86Ci0gICAgICkKLSAKLSAKLS1AcGFyYW1ldGVyaXplZC5w YXJhbWV0ZXJpemVkX2NsYXNzKAotLSAgICBbCi0tICAgICAgICB7ImZvcm1hdCI6ICJwcm90b2J1 ZiJ9LAotLSAgICAgICAgeyJmb3JtYXQiOiAidGV4dHByb3RvIn0sCi0tICAgICAgICB7ImZvcm1h dCI6ICJqc29uIn0sCi0tICAgICAgICB7ImZvcm1hdCI6ICJvbm54dHh0In0sCi0tICAgIF0KLS0p Ci0tY2xhc3MgVGVzdElPKHVuaXR0ZXN0LlRlc3RDYXNlKToKLS0gICAgZm9ybWF0OiBzdHIKLS0K LS0gICAgZGVmIHRlc3RfbG9hZF9tb2RlbF93aGVuX2lucHV0X2lzX2J5dGVzKHNlbGYpIC0+IE5v bmU6Ci0tICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQotLSAgICAgICAgcHJvdG9fc3Ry aW5nID0gc2VyaWFsaXphdGlvbi5yZWdpc3RyeS5nZXQoc2VsZi5mb3JtYXQpLnNlcmlhbGl6ZV9w cm90byhwcm90bykKLS0gICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2RlbF9mcm9t X3N0cmluZyhwcm90b19zdHJpbmcsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9h bmRfbG9hZF9tb2RlbF93aGVuX2lucHV0X2hhc19yZWFkX2Z1bmN0aW9uKHNlbGYpIC0+IE5vbmU6 Ci0tICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQotLSAgICAgICAgIyBXaGVuIHRoZSBw cm90byBpcyBhIGJ5dGVzIHJlcHJlc2VudGF0aW9uIHByb3ZpZGVkIHRvIGBzYXZlX21vZGVsYCwK LS0gICAgICAgICMgaXQgc2hvdWxkIGFsd2F5cyBiZSBhIHNlcmlhbGl6ZWQgYmluYXJ5IHByb3Rv YnVmIHJlcHJlc2VudGF0aW9uLiBBa2EuIGZvcm1hdD0icHJvdG9idWYiCi0tICAgICAgICAjIFRo ZSBzYXZlZCBmaWxlIGZvcm1hdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGBmb3JtYXRgIGFyZ3VtZW50 LgotLSAgICAgICAgcHJvdG9fc3RyaW5nID0gc2VyaWFsaXphdGlvbi5yZWdpc3RyeS5nZXQoInBy b3RvYnVmIikuc2VyaWFsaXplX3Byb3RvKHByb3RvKQotLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8o KQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHByb3RvX3N0cmluZywgZiwgZm9ybWF0PXNlbGYu Zm9ybWF0KQotLSAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX21vZGVsKGlvLkJ5dGVz SU8oZi5nZXR2YWx1ZSgpKSwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQotLQotLSAgICBkZWYgdGVzdF9zYXZlX2FuZF9s b2FkX21vZGVsX3doZW5faW5wdXRfaXNfZmlsZV9uYW1lKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAg ICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQotLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3Jh cnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKLS0gICAgICAgICAgICBtb2RlbF9wYXRoID0gb3Mu cGF0aC5qb2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCi0tICAgICAgICAgICAgb25ueC5zYXZl X21vZGVsKHByb3RvLCBtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICAg ICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxm LmZvcm1hdCkKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJv dG8pCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfbW9kZWxfd2hlbl9pbnB1dF9pc19w YXRobGlrZShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkK LS0gICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6 Ci0tICAgICAgICAgICAgbW9kZWxfcGF0aCA9IHBhdGhsaWIuUGF0aCh0ZW1wX2RpciwgIm1vZGVs Lm9ubngiKQotLSAgICAgICAgICAgIG9ubnguc2F2ZV9tb2RlbChwcm90bywgbW9kZWxfcGF0aCwg Zm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9h ZF9tb2RlbChtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQotLQotLQotLUBwYXJhbWV0ZXJpemVk LnBhcmFtZXRlcml6ZWRfY2xhc3MoCi0tICAgIFsKLS0gICAgICAgIHsiZm9ybWF0IjogInByb3Rv YnVmIn0sCi0tICAgICAgICB7ImZvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwKLS0gICAgICAgIHsiZm9y bWF0IjogImpzb24ifSwKLS0gICAgICAgICMgVGhlIG9ubnh0eHQgZm9ybWF0IGRvZXMgbm90IHN1 cHBvcnQgc2F2aW5nL2xvYWRpbmcgdGVuc29ycyB5ZXQKLS0gICAgXQotLSkKLS1jbGFzcyBUZXN0 SU9UZW5zb3IodW5pdHRlc3QuVGVzdENhc2UpOgotLSAgICAiIiJUZXN0IGxvYWRpbmcgYW5kIHNh dmluZyBvZiBUZW5zb3JQcm90by4iIiIKLS0KLS0gICAgZm9ybWF0OiBzdHIKLS0KLS0gICAgZGVm IHRlc3RfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1dF9pc19ieXRlcyhzZWxmKSAtPiBOb25lOgotLSAg ICAgICAgcHJvdG8gPSBfc2ltcGxlX3RlbnNvcigpCi0tICAgICAgICBwcm90b19zdHJpbmcgPSBz ZXJpYWxpemF0aW9uLnJlZ2lzdHJ5LmdldChzZWxmLmZvcm1hdCkuc2VyaWFsaXplX3Byb3RvKHBy b3RvKQotLSAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX3RlbnNvcl9mcm9tX3N0cmlu Zyhwcm90b19zdHJpbmcsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9h ZF90ZW5zb3Jfd2hlbl9pbnB1dF9oYXNfcmVhZF9mdW5jdGlvbihzZWxmKSAtPiBOb25lOgotLSAg ICAgICAgIyBUZXN0IGlmIGlucHV0IGhhcyBhIHJlYWQgZnVuY3Rpb24KLS0gICAgICAgIHByb3Rv ID0gX3NpbXBsZV90ZW5zb3IoKQotLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotLSAgICAgICAg b25ueC5zYXZlX3RlbnNvcihwcm90bywgZiwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAg bG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX3RlbnNvcihpby5CeXRlc0lPKGYuZ2V0dmFsdWUoKSks IGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxv YWRlZF9wcm90bykKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5zb3Jfd2hlbl9p bnB1dF9pc19maWxlX25hbWUoc2VsZikgLT4gTm9uZToKLS0gICAgICAgICMgVGVzdCBpZiBpbnB1 dCBpcyBhIGZpbGUgbmFtZQotLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX3RlbnNvcigpCi0tICAg ICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgotLSAg ICAgICAgICAgIG1vZGVsX3BhdGggPSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2RlbC5vbm54 IikKLS0gICAgICAgICAgICBvbm54LnNhdmVfdGVuc29yKHByb3RvLCBtb2RlbF9wYXRoLCBmb3Jt YXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX3Rl bnNvcihtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQotLQotLSAgICBkZWYgdGVzdF9zYXZlX2Fu ZF9sb2FkX3RlbnNvcl93aGVuX2lucHV0X2lzX3BhdGhsaWtlKHNlbGYpIC0+IE5vbmU6Ci0tICAg ICAgICAjIFRlc3QgaWYgaW5wdXQgaXMgYSBmaWxlIG5hbWUKLS0gICAgICAgIHByb3RvID0gX3Np bXBsZV90ZW5zb3IoKQotLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3Rvcnko KSBhcyB0ZW1wX2RpcjoKLS0gICAgICAgICAgICBtb2RlbF9wYXRoID0gcGF0aGxpYi5QYXRoKHRl bXBfZGlyLCAibW9kZWwub25ueCIpCi0tICAgICAgICAgICAgb25ueC5zYXZlX3RlbnNvcihwcm90 bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIGxvYWRlZF9w cm90byA9IG9ubngubG9hZF90ZW5zb3IobW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQot LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKLS0KLS0K LSBjbGFzcyBUZXN0U2F2ZUFuZExvYWRGaWxlRXh0ZW5zaW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6 Ci0gICAgIGRlZiB0ZXN0X3NhdmVfbW9kZWxfcGlja3NfY29ycmVjdF9mb3JtYXRfZnJvbV9leHRl bnNpb24oc2VsZikgLT4gTm9uZToKLSAgICAgICAgIHByb3RvID0gX3NpbXBsZV9tb2RlbCgpCi1k aWZmIC0tZ2l0IGEvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5IGIvb25ueC90ZXN0L2hlbHBlcl90 ZXN0LnB5Ci1pbmRleCAyNzc5M2Y1NjEuLjkxZjc3MzlhYSAxMDA2NDQKLS0tLSBhL29ubngvdGVz dC9oZWxwZXJfdGVzdC5weQotKysrIGIvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5Ci1AQCAtMTIs NyArMTIsNiBAQCBmcm9tIHR5cGluZyBpbXBvcnQgQW55Ci0gaW1wb3J0IG1sX2R0eXBlcwotIGlt cG9ydCBudW1weSBhcyBucAotIGltcG9ydCBudW1weS50eXBpbmcgYXMgbnB0Ci0taW1wb3J0IHBh cmFtZXRlcml6ZWQKLSBpbXBvcnQgcHl0ZXN0Ci0gCi0gZnJvbSBvbm54IGltcG9ydCAoCi1AQCAt NjM2LDYzICs2MzUsNiBAQCBjbGFzcyBUZXN0SGVscGVyVGVuc29yRnVuY3Rpb25zKHVuaXR0ZXN0 LlRlc3RDYXNlKToKLSAgICAgICAgICAgICBleHBlY3RlZC52aWV3KG5wLnVpbnQ4KSwKLSAgICAg ICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAg ICAgICBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDQs IFRlbnNvclByb3RvLklOVDQpLAotLSAgICAgICAgICAgICgoNSwgNCwgNiksICg0LCA2LCA1KSwg KDMsIDMpLCAoMSwpLCAoMioqMTAsKSksCi0tICAgICAgICApCi0tICAgICkKLS0gICAgZGVmIHRl c3RfbWFrZV80Yml0X3RlbnNvcihzZWxmLCBkdHlwZSwgZGltcykgLT4gTm9uZToKLS0gICAgICAg IHR5cGVfcmFuZ2UgPSB7Ci0tICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDQ6ICgwLCAxNSks Ci0tICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNDogKC04LCA3KSwKLS0gICAgICAgIH0KLS0g ICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGludCgKLS0gICAgICAgICAgICB0eXBlX3Jhbmdl W2R0eXBlXVswXSwgaGlnaD10eXBlX3JhbmdlW2R0eXBlXVsxXSArIDEsIHNpemU9ZGltcwotLSAg ICAgICAgKQotLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNvcigieSIsIGR0eXBlLCBkYXRh LnNoYXBlLCBkYXRhKQotLQotLSAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiBp bnQzMl9kYXRhIGluIGJ5dGVzCi0tICAgICAgICBleHBlY3RlZF9kYXRhX3NpemUgPSBtYXRoLmNl aWwobnAucHJvZChkYXRhLnNoYXBlKSAvIDIuMCkKLS0gICAgICAgIGFjdHVhbF9kYXRhX3NpemUg PSBsZW4oYnl0ZXMoeS5pbnQzMl9kYXRhKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2Vx dWFsKGFjdHVhbF9kYXRhX3NpemUsIGV4cGVjdGVkX2RhdGFfc2l6ZSkKLS0KLS0gICAgICAgICMg Q2hlY2sgdGhlIGV4cGVjdGVkIGRhdGEgdmFsdWVzLgotLSAgICAgICAgeW5wID0gbnVtcHlfaGVs cGVyLnRvX2FycmF5KHkpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5bnAsIGRh dGEpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAg ICAgaXRlcnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgKCg1LCA0LCA2KSwgKDQsIDYsIDUp LCAoMywgMyksICgxLCksICgyKioxMCwpKSwKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBkZWYg dGVzdF80Yml0X3RlbnNvcl9zaXplKHNlbGYsIGRpbXMpIC0+IE5vbmU6Ci0tICAgICAgICAjIEEg YnVnIGNhdXNlZCBuZWdhdGl2ZSBpbnQ0IHZhbHVlcyB0byBpbmZsYXRlIHRlbnNvciBzaXplLgot LSAgICAgICAgIyBTbywgdGVzdCBuZWdhdGl2ZSB2YWx1ZXMgaGVyZS4KLS0gICAgICAgIG51bV9l bGVtcyA9IG5wLnByb2QoZGltcykKLS0gICAgICAgIGRhdGEgPSBucC5hcnJheShbLTRdICogbnVt X2VsZW1zLCBkdHlwZT1ucC5pbnQ4KS5yZXNoYXBlKGRpbXMpCi0tICAgICAgICB5ID0gaGVscGVy Lm1ha2VfdGVuc29yKCJ5IiwgVGVuc29yUHJvdG8uSU5UNCwgZGF0YS5zaGFwZSwgZGF0YSkKLS0K LS0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0YSBpbiBieXRl cwotLSAgICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplID0gbWF0aC5jZWlsKG51bV9lbGVtcyAvIDIu MCkKLS0gICAgICAgIGFjdHVhbF9kYXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQzMl9kYXRhKSkK LS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3NpemUsIGV4cGVj dGVkX2RhdGFfc2l6ZSkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBh bmQoCi0tICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAoVGVuc29yUHJv dG8uVUlOVDQsIFRlbnNvclByb3RvLklOVDQpLCAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAz KSwgKDEsKSkKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBkZWYgdGVzdF9tYWtlXzRiaXRfcmF3 X3RlbnNvcihzZWxmLCBkdHlwZSwgZGltcykgLT4gTm9uZToKLS0gICAgICAgIGRhdGEgPSBucC5y YW5kb20ucmFuZGludCgwLCBoaWdoPTE2LCBzaXplPWRpbXMsIGR0eXBlPW5wLnVpbnQ4KQotLSAg ICAgICAgcGFja2VkX2RhdGEgPSBfcGFja180Yml0KGRhdGEpCi0tCi0tICAgICAgICB5ID0gaGVs cGVyLm1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICJwYWNrZWRfaW50NCIsIGR0eXBlLCBkaW1z LCBwYWNrZWRfZGF0YS50b2J5dGVzKCksIHJhdz1UcnVlCi0tICAgICAgICApCi0tICAgICAgICB5 bnAgPSBudW1weV9oZWxwZXIudG9fYXJyYXkoeSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0 X2VxdWFsKHlucC52aWV3KG5wLnVpbnQ4KSwgZGF0YSkKLS0KLSAgICAgZGVmIHRlc3RfbWFrZV9m bG9hdDRlMm0xX3Jhd190ZW5zb3Ioc2VsZikgLT4gTm9uZToKLSAgICAgICAgIGRhdGEgPSBucC5h cnJheShbMCwgMC41LCAxLCAyNDAsIDEwLCAtMl0sIGR0eXBlPW1sX2R0eXBlcy5mbG9hdDRfZTJt MWZuKQotICAgICAgICAgZXhwZWN0ZWQgPSBkYXRhLnZpZXcobnAudWludDgpCi1AQCAtNzA3LDYz ICs2NDksNiBAQCBjbGFzcyBUZXN0SGVscGVyVGVuc29yRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RD YXNlKToKLSAgICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19hcnJheSh5KQotICAgICAgICAg bnAudGVzdGluZy5hc3NlcnRfZXF1YWwoeW5wLnZpZXcobnAudWludDgpLCBleHBlY3RlZCkKLSAK LS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBpdGVy dG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDIsIFRlbnNvclBy b3RvLklOVDIpLAotLSAgICAgICAgICAgICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAo MSwpLCAoMioqMTAsKSksCi0tICAgICAgICApCi0tICAgICkKLS0gICAgZGVmIHRlc3RfbWFrZV8y Yml0X3RlbnNvcihzZWxmLCBkdHlwZSwgZGltcykgLT4gTm9uZToKLS0gICAgICAgIHR5cGVfcmFu Z2UgPSB7Ci0tICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDI6ICgwLCAzKSwKLS0gICAgICAg ICAgICBUZW5zb3JQcm90by5JTlQyOiAoLTIsIDEpLAotLSAgICAgICAgfQotLSAgICAgICAgZGF0 YSA9IG5wLnJhbmRvbS5yYW5kaW50KAotLSAgICAgICAgICAgIHR5cGVfcmFuZ2VbZHR5cGVdWzBd LCBoaWdoPXR5cGVfcmFuZ2VbZHR5cGVdWzFdICsgMSwgc2l6ZT1kaW1zCi0tICAgICAgICApCi0t ICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKCJ5IiwgZHR5cGUsIGRhdGEuc2hhcGUsIGRh dGEpCi0tCi0tICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBzaXplIG9mIGludDMyX2RhdGEg aW4gYnl0ZXMKLS0gICAgICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA9IG1hdGguY2VpbChucC5wcm9k KGRhdGEuc2hhcGUpIC8gNC4wKQotLSAgICAgICAgYWN0dWFsX2RhdGFfc2l6ZSA9IGxlbihieXRl cyh5LmludDMyX2RhdGEpKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoYWN0dWFs X2RhdGFfc2l6ZSwgZXhwZWN0ZWRfZGF0YV9zaXplKQotLQotLSAgICAgICAgIyBDaGVjayB0aGUg ZXhwZWN0ZWQgZGF0YSB2YWx1ZXMuCi0tICAgICAgICB5bnAgPSBudW1weV9oZWxwZXIudG9fYXJy YXkoeSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKHlucCwgZGF0YSkKLS0KLS0g ICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBpdGVydG9v bHMucHJvZHVjdCgKLS0gICAgICAgICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwg KDEsKSwgKDIqKjEwLCkpLAotLSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0ZXN0XzJiaXRf dGVuc29yX3NpemUoc2VsZiwgZGltcykgLT4gTm9uZToKLS0gICAgICAgICMgQSBidWcgY2F1c2Vk IG5lZ2F0aXZlIGludDIgdmFsdWVzIHRvIGluZmxhdGUgdGVuc29yIHNpemUuCi0tICAgICAgICAj IFNvLCB0ZXN0IG5lZ2F0aXZlIHZhbHVlcyBoZXJlLgotLSAgICAgICAgbnVtX2VsZW1zID0gbnAu cHJvZChkaW1zKQotLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KFstMl0gKiBudW1fZWxlbXMsIGR0 eXBlPW5wLmludDgpLnJlc2hhcGUoZGltcykKLS0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5z b3IoInkiLCBUZW5zb3JQcm90by5JTlQyLCBkYXRhLnNoYXBlLCBkYXRhKQotLQotLSAgICAgICAg IyBDaGVjayB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVzCi0tICAgICAg ICBleHBlY3RlZF9kYXRhX3NpemUgPSBtYXRoLmNlaWwobnVtX2VsZW1zIC8gNC4wKQotLSAgICAg ICAgYWN0dWFsX2RhdGFfc2l6ZSA9IGxlbihieXRlcyh5LmludDMyX2RhdGEpKQotLSAgICAgICAg bnAudGVzdGluZy5hc3NlcnRfZXF1YWwoYWN0dWFsX2RhdGFfc2l6ZSwgZXhwZWN0ZWRfZGF0YV9z aXplKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAg ICAgIGl0ZXJ0b29scy5wcm9kdWN0KAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwg VGVuc29yUHJvdG8uSU5UMiksICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAoMSwpKQot LSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0ZXN0X21ha2VfMmJpdF9yYXdfdGVuc29yKHNl bGYsIGR0eXBlLCBkaW1zKSAtPiBOb25lOgotLSAgICAgICAgZGF0YSA9IG5wLnJhbmRvbS5yYW5k aW50KDAsIGhpZ2g9NCwgc2l6ZT1kaW1zLCBkdHlwZT1ucC51aW50OCkKLS0gICAgICAgIHBhY2tl ZF9kYXRhID0gX3BhY2tfMmJpdChkYXRhKQotLQotLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3Rl bnNvcigKLS0gICAgICAgICAgICAicGFja2VkX2ludDIiLCBkdHlwZSwgZGltcywgcGFja2VkX2Rh dGEudG9ieXRlcygpLCByYXc9VHJ1ZQotLSAgICAgICAgKQotLSAgICAgICAgeW5wID0gbnVtcHlf aGVscGVyLnRvX2FycmF5KHkpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5bnAu dmlldyhucC51aW50OCksIGRhdGEpCi0tCi0gICAgIGRlZiB0ZXN0X21ha2VfZmxvYXQ0ZTJtMV90 ZW5zb3Ioc2VsZikgLT4gTm9uZToKLSAgICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoCi0g ICAgICAgICAgICAgInplcm9fcG9pbnQiLAotQEAgLTExMDUsMjggKzk5MCw2IEBAIGNsYXNzIFRl c3RIZWxwZXJNYXBwaW5nRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAKLSAKLSBjbGFz cyBUZXN0QXR0clR5cGVUb1N0cih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0tICAgIEBwYXJhbWV0ZXJp emVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgIChBdHRy aWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLkZMT0FULCAiRkxPQVQiKSwKLS0gICAgICAgICAgICAo QXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5JTlQsICJJTlQiKSwKLS0gICAgICAgICAgICAo QXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5TVFJJTkcsICJTVFJJTkciKSwKLS0gICAgICAg ICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5URU5TT1IsICJURU5TT1IiKSwKLS0g ICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5HUkFQSCwgIkdSQVBIIiks Ci0tICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuU1BBUlNFX1RFTlNP UiwgIlNQQVJTRV9URU5TT1IiKSwKLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmli dXRlVHlwZS5UWVBFX1BST1RPLCAiVFlQRV9QUk9UTyIpLAotLSAgICAgICAgICAgIChBdHRyaWJ1 dGVQcm90by5BdHRyaWJ1dGVUeXBlLkZMT0FUUywgIkZMT0FUUyIpLAotLSAgICAgICAgICAgIChB dHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLklOVFMsICJJTlRTIiksCi0tICAgICAgICAgICAg KEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuU1RSSU5HUywgIlNUUklOR1MiKSwKLS0gICAg ICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5URU5TT1JTLCAiVEVOU09SUyIp LAotLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLkdSQVBIUywgIkdS QVBIUyIpLAotLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlNQQVJT RV9URU5TT1JTLCAiU1BBUlNFX1RFTlNPUlMiKSwKLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJv dG8uQXR0cmlidXRlVHlwZS5UWVBFX1BST1RPUywgIlRZUEVfUFJPVE9TIiksCi0tICAgICAgICBd Ci0tICAgICkKLS0gICAgZGVmIHRlc3RfYXR0cl90eXBlX3RvX3N0cihzZWxmLCBhdHRyX3R5cGUs IGV4cGVjdGVkX3N0cik6Ci0tICAgICAgICByZXN1bHQgPSBoZWxwZXIuX2F0dHJfdHlwZV90b19z dHIoYXR0cl90eXBlKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVk X3N0cikKLS0KLSAgICAgZGVmIHRlc3RfYXR0cl90eXBlX3RvX3N0cl91bmRlZmluZWQoc2VsZik6 Ci0gICAgICAgICByZXN1bHQgPSBoZWxwZXIuX2F0dHJfdHlwZV90b19zdHIoOTk5OSkKLSAgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAiVU5ERUZJTkVEIikKLWRpZmYgLS1naXQgYS9v bm54L3Rlc3Qvbm9kZV9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weSBiL29ubngvdGVzdC9ub2RlX3No YXBlX2luZmVyZW5jZV90ZXN0LnB5Ci1pbmRleCBlY2U3NzZlNDguLjYzMjUyYjkyMiAxMDA2NDQK LS0tLSBhL29ubngvdGVzdC9ub2RlX3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5Ci0rKysgYi9vbm54 L3Rlc3Qvbm9kZV9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weQotQEAgLTUsMzQgKzUsOSBAQCBmcm9t IF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRpb25zCi0gCi0gaW1wb3J0IHVuaXR0ZXN0Ci0gCi0t aW1wb3J0IHBhcmFtZXRlcml6ZWQKLS0KLSBpbXBvcnQgb25ueC5oZWxwZXIKLSBpbXBvcnQgb25u eC5zaGFwZV9pbmZlcmVuY2UKLSAKLSAKLS1jbGFzcyBOb2RlSW5mZXJlbmNlVGVzdCh1bml0dGVz dC5UZXN0Q2FzZSk6Ci0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAot LSAgICAgICAgWwotLSAgICAgICAgICAgICgiR3JlYXRlck9yRXF1YWwiLCksCi0tICAgICAgICAg ICAgKCJMZXNzT3JFcXVhbCIsKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9j b21wYXJpc29uX29wKHNlbGYsIG9wX3R5cGUpOgotLSAgICAgICAgbm9kZSA9IG9ubnguaGVscGVy Lm1ha2Vfbm9kZShvcF90eXBlLCBbIngiLCAieSJdLCBbInoiXSkKLS0gICAgICAgIHNjaGVtYSA9 IG9ubnguZGVmcy5nZXRfc2NoZW1hKG5vZGUub3BfdHlwZSwgMjMsICIiKQotLSAgICAgICAgeHR5 cGUgPSBvbm54LmhlbHBlci5tYWtlX3RlbnNvcl90eXBlX3Byb3RvKG9ubnguVGVuc29yUHJvdG8u SU5UMzIsIFsxLCAxMF0pCi0tICAgICAgICB5dHlwZSA9IG9ubnguaGVscGVyLm1ha2VfdGVuc29y X3R5cGVfcHJvdG8ob25ueC5UZW5zb3JQcm90by5JTlQzMiwgWzEwLCAxXSkKLS0gICAgICAgIHJl c3VsdCA9IG9ubnguc2hhcGVfaW5mZXJlbmNlLmluZmVyX25vZGVfb3V0cHV0cygKLS0gICAgICAg ICAgICBzY2hlbWEsIG5vZGUsIHsieCI6IHh0eXBlLCAieSI6IHl0eXBlfQotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJlc3VsdC5rZXlzKCkpLCBbInoiXSkKLS0g ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0WyJ6Il0udGVuc29yX3R5cGUuZWxlbV90eXBl LCBvbm54LlRlbnNvclByb3RvLkJPT0wpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotLSAg ICAgICAgICAgIFtkaW0uZGltX3ZhbHVlIGZvciBkaW0gaW4gcmVzdWx0WyJ6Il0udGVuc29yX3R5 cGUuc2hhcGUuZGltXSwKLS0gICAgICAgICAgICBbMTAsIDEwXSwKLS0gICAgICAgICkKLS0KLS0K LSBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICB1bml0dGVzdC5tYWluKCkKLWRpZmYg LS1naXQgYS9vbm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rlc3QucHkgYi9vbm54L3Rlc3QvbnVtcHlf aGVscGVyX3Rlc3QucHkKLWluZGV4IDU2ODAwMDU1MC4uMjI2NTAwOGQyIDEwMDY0NAotLS0tIGEv b25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3QvbnVtcHlfaGVs cGVyX3Rlc3QucHkKLUBAIC02LDcgKzYsNiBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90 YXRpb25zCi0gaW1wb3J0IHVuaXR0ZXN0Ci0gCi0gaW1wb3J0IG51bXB5IGFzIG5wCi0taW1wb3J0 IHBhcmFtZXRlcml6ZWQKLSAKLSBpbXBvcnQgb25ueAotIGltcG9ydCBvbm54LnJlZmVyZW5jZQot QEAgLTE0OCwzOCArMTQ3LDYgQEAgY2xhc3MgVGVzdE51bXB5SGVscGVyKHVuaXR0ZXN0LlRlc3RD YXNlKToKLSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAuU2VyaWFsaXplVG9TdHJpbmcoKSwg YWdhaW4uU2VyaWFsaXplVG9TdHJpbmcoKSkKLSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAu ZGF0YV90eXBlLCBoZWxwZXIubnBfZHR5cGVfdG9fdGVuc29yX2R0eXBlKGJhY2suZHR5cGUpKQot IAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsK LS0gICAgICAgICAgICAoIkZMT0FUIiwgb25ueC5UZW5zb3JQcm90by5GTE9BVCksCi0tICAgICAg ICAgICAgKCJVSU5UOCIsIG9ubnguVGVuc29yUHJvdG8uVUlOVDgpLAotLSAgICAgICAgICAgICgi SU5UOCIsIG9ubnguVGVuc29yUHJvdG8uSU5UOCksCi0tICAgICAgICAgICAgKCJVSU5UMTYiLCBv bm54LlRlbnNvclByb3RvLlVJTlQxNiksCi0tICAgICAgICAgICAgKCJJTlQxNiIsIG9ubnguVGVu c29yUHJvdG8uSU5UMTYpLAotLSAgICAgICAgICAgICgiSU5UMzIiLCBvbm54LlRlbnNvclByb3Rv LklOVDMyKSwKLS0gICAgICAgICAgICAoIklOVDY0Iiwgb25ueC5UZW5zb3JQcm90by5JTlQ2NCks Ci0tICAgICAgICAgICAgKCJCT09MIiwgb25ueC5UZW5zb3JQcm90by5CT09MKSwKLS0gICAgICAg ICAgICAoIkZMT0FUMTYiLCBvbm54LlRlbnNvclByb3RvLkZMT0FUMTYpLAotLSAgICAgICAgICAg ICgiRE9VQkxFIiwgb25ueC5UZW5zb3JQcm90by5ET1VCTEUpLAotLSAgICAgICAgICAgICgiVUlO VDMyIiwgb25ueC5UZW5zb3JQcm90by5VSU5UMzIpLAotLSAgICAgICAgICAgICgiVUlOVDY0Iiwg b25ueC5UZW5zb3JQcm90by5VSU5UNjQpLAotLSAgICAgICAgICAgICgiQ09NUExFWDY0Iiwgb25u eC5UZW5zb3JQcm90by5DT01QTEVYNjQpLAotLSAgICAgICAgICAgICgiQ09NUExFWDEyOCIsIG9u bnguVGVuc29yUHJvdG8uQ09NUExFWDEyOCksCi0tICAgICAgICAgICAgKCJCRkxPQVQxNiIsIG9u bnguVGVuc29yUHJvdG8uQkZMT0FUMTYpLAotLSAgICAgICAgICAgICgiRkxPQVQ4RTRNM0ZOIiwg b25ueC5UZW5zb3JQcm90by5GTE9BVDhFNE0zRk4pLAotLSAgICAgICAgICAgICgiRkxPQVQ4RTRN M0ZOVVoiLCBvbm54LlRlbnNvclByb3RvLkZMT0FUOEU0TTNGTlVaKSwKLS0gICAgICAgICAgICAo IkZMT0FUOEU1TTIiLCBvbm54LlRlbnNvclByb3RvLkZMT0FUOEU1TTIpLAotLSAgICAgICAgICAg ICgiRkxPQVQ4RTVNMkZOVVoiLCBvbm54LlRlbnNvclByb3RvLkZMT0FUOEU1TTJGTlVaKSwKLS0g ICAgICAgICAgICAoIkZMT0FUOEU4TTAiLCBvbm54LlRlbnNvclByb3RvLkZMT0FUOEU4TTApLAot LSAgICAgICAgICAgICgiVUlOVDQiLCBvbm54LlRlbnNvclByb3RvLlVJTlQ0KSwKLS0gICAgICAg ICAgICAoIklOVDQiLCBvbm54LlRlbnNvclByb3RvLklOVDQpLAotLSAgICAgICAgICAgICgiVUlO VDIiLCBvbm54LlRlbnNvclByb3RvLlVJTlQyKSwKLS0gICAgICAgICAgICAoIklOVDIiLCBvbm54 LlRlbnNvclByb3RvLklOVDIpLAotLSAgICAgICAgICAgICgiRkxPQVQ0RTJNMSIsIG9ubnguVGVu c29yUHJvdG8uRkxPQVQ0RTJNMSksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3Rf dG9fYXJyYXlfZnJvbV9hcnJheShzZWxmLCBfOiBzdHIsIGRhdGFfdHlwZTogb25ueC5UZW5zb3JQ cm90by5EYXRhVHlwZSk6Ci0tICAgICAgICBzZWxmLl90b19hcnJheV9mcm9tX2FycmF5KGRhdGFf dHlwZSkKLS0KLSAgICAgZGVmIHRlc3RfdG9fYXJyYXlfZnJvbV9hcnJheV9zdHJpbmcoc2VsZik6 Ci0gICAgICAgICBzZWxmLl90b19hcnJheV9mcm9tX2FycmF5KG9ubnguVGVuc29yUHJvdG8uU1RS SU5HLCBGYWxzZSkKLSAKLWRpZmYgLS1naXQgYS9vbm54L3Rlc3QvcGFyc2VyX3Rlc3QucHkgYi9v bm54L3Rlc3QvcGFyc2VyX3Rlc3QucHkKLWluZGV4IDE5ZWU0MDc5Mi4uOWUyMmYxOWFlIDEwMDY0 NAotLS0tIGEvb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3QvcGFyc2Vy X3Rlc3QucHkKLUBAIC01LDggKzUsNiBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRp b25zCi0gCi0gaW1wb3J0IHVuaXR0ZXN0Ci0gCi0tZnJvbSBwYXJhbWV0ZXJpemVkIGltcG9ydCBw YXJhbWV0ZXJpemVkCi0tCi0gaW1wb3J0IG9ubngKLSBmcm9tIG9ubnggaW1wb3J0IEdyYXBoUHJv dG8sIE9wZXJhdG9yU2V0SWRQcm90bywgVGVuc29yUHJvdG8sIGNoZWNrZXIKLSAKLUBAIC0xMjAs OTQgKzExOCw2IEBAIGNsYXNzIFRlc3RCYXNpY0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6 Ci0gICAgICAgICBtb2RlbCA9IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKGlucHV0KQotICAgICAg ICAgY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgImFncmFw aCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05dIG91dCkgeyBvdXQgPSBjdXN0b21fZG9tYWluLlNl bHUoeCkgfSIsCi0tICAgICAgICAgICAgICAgIHt9LAotLSAgICAgICAgICAgICksCi0tICAgICAg ICAgICAgKAotLSAgICAgICAgICAgICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxvYXRb Tl0gb3V0KSB7IG91dCA9IGN1c3RvbV9kb21haW4uU2VsdTxhbHBoYT0yLjA+KHgpIH0iLAotLSAg ICAgICAgICAgICAgICB7ImFscGhhIjogMi4wfSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAg ICAgICgKLS0gICAgICAgICAgICAgICAgImFncmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05d IG91dCkgeyBvdXQgPSBjdXN0b21fZG9tYWluLlNlbHU8Z2FtbWE9My4wPih4KSB9IiwKLS0gICAg ICAgICAgICAgICAgeyJnYW1tYSI6IDMuMH0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICAoCi0tICAgICAgICAgICAgICAgICJhZ3JhcGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtOXSBv dXQpIHsgb3V0ID0gY3VzdG9tX2RvbWFpbi5TZWx1PGFscGhhPTIuMCwgZ2FtbWE9My4wPih4KSB9 IiwKLS0gICAgICAgICAgICAgICAgeyJhbHBoYSI6IDIuMCwgImdhbW1hIjogMy4wfSwKLS0gICAg ICAgICAgICApLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2NvbXBvc2l0ZV9w YXJzZV9mdW5jdGlvbl93aXRoX2F0dHJpYnV0ZXMoCi0tICAgICAgICBzZWxmLCBncmFwaF90ZXh0 OiBzdHIsIGV4cGVjdGVkX2F0dHJpYnV0ZTogZGljdAotLSAgICApIC0+IE5vbmU6Ci0tICAgICAg ICBkZWZhdWx0X2FscGhhID0gMS42NzMyNjMxOTIxNzY4MTg4NDc2NTYyNQotLSAgICAgICAgZGVm YXVsdF9nYW1tYSA9IDEuMDUwNzAxMDIyMTQ4MTMyMzI0MjE4NzUKLS0KLS0gICAgICAgIGRlZiBl eHBlY3RfY3VzdG9tX25vZGVfYXR0cmlidXRlKG5vZGUsIGF0dHJpYnV0ZXMpOgotLSAgICAgICAg ICAgIGZvciBrZXkgaW4gYXR0cmlidXRlczoKLS0gICAgICAgICAgICAgICAgbWF0Y2hfYXR0ciA9 IFthdHRyIGZvciBhdHRyIGluIG5vZGUuYXR0cmlidXRlIGlmIGF0dHIubmFtZSA9PSBrZXldCi0t ICAgICAgICAgICAgICAgIGFzc2VydCBsZW4obWF0Y2hfYXR0cikgPT0gMQotLSAgICAgICAgICAg ICAgICBhc3NlcnQgbWF0Y2hfYXR0clswXS5mID09IGF0dHJpYnV0ZXNba2V5XQotLQotLSAgICAg ICAgZGVmIGV4cGVjdF9tb2RlbF9mdW5jdGlvbl9hdHRyaWJ1dGUobW9kZWwpOgotLSAgICAgICAg ICAgIGFzc2VydCBsZW4obW9kZWwuZnVuY3Rpb25zWzBdLmF0dHJpYnV0ZV9wcm90bykgPT0gMgot LSAgICAgICAgICAgIGF0dHJfcHJvdG9fYWxwaGEgPSBbCi0tICAgICAgICAgICAgICAgIGF0dHJf cHJvdG8KLS0gICAgICAgICAgICAgICAgZm9yIGF0dHJfcHJvdG8gaW4gbW9kZWwuZnVuY3Rpb25z WzBdLmF0dHJpYnV0ZV9wcm90bwotLSAgICAgICAgICAgICAgICBpZiBhdHRyX3Byb3RvLm5hbWUg PT0gImFscGhhIgotLSAgICAgICAgICAgIF0KLS0gICAgICAgICAgICBhc3NlcnQgbGVuKGF0dHJf cHJvdG9fYWxwaGEpID09IDEgYW5kIGF0dHJfcHJvdG9fYWxwaGFbMF0uZiA9PSBkZWZhdWx0X2Fs cGhhCi0tICAgICAgICAgICAgYXR0cl9wcm90b19nYW1tYSA9IFsKLS0gICAgICAgICAgICAgICAg YXR0cl9wcm90bwotLSAgICAgICAgICAgICAgICBmb3IgYXR0cl9wcm90byBpbiBtb2RlbC5mdW5j dGlvbnNbMF0uYXR0cmlidXRlX3Byb3RvCi0tICAgICAgICAgICAgICAgIGlmIGF0dHJfcHJvdG8u bmFtZSA9PSAiZ2FtbWEiCi0tICAgICAgICAgICAgXQotLSAgICAgICAgICAgIGFzc2VydCBsZW4o YXR0cl9wcm90b19nYW1tYSkgPT0gMSBhbmQgYXR0cl9wcm90b19nYW1tYVswXS5mID09IGRlZmF1 bHRfZ2FtbWEKLS0KLS0gICAgICAgIGZ1bmN0aW9uX3RleHQgPSBmIiIiCi0tICAgICAgICAgPAot LSAgICAgICAgIGRvbWFpbjogImN1c3RvbV9kb21haW4iLAotLSAgICAgICAgIG9wc2V0X2ltcG9y dDogWyAiIiA6IDE1XSwKLS0gICAgICAgICBkb2Nfc3RyaW5nOiAiVGVzdCBmdW5jdGlvbiBwcm90 byIKLS0gICAgICAgICA+Ci0tICAgICAgICAgICBTZWx1Ci0tICAgICAgICAgICA8YWxwaGE6IGZs b2F0PXtkZWZhdWx0X2FscGhhfSwgZ2FtbWE6IGZsb2F0PXtkZWZhdWx0X2dhbW1hfT4KLS0gICAg ICAgICAgIChYKSA9PiAoQykKLS0gICAgICAgICAgIHt7Ci0tICAgICAgICAgICAgICAgY29uc3Rh bnRfYWxwaGEgPSBDb25zdGFudDx2YWx1ZV9mbG9hdDogZmxvYXQ9QGFscGhhPigpCi0tICAgICAg ICAgICAgICAgY29uc3RhbnRfZ2FtbWEgPSBDb25zdGFudDx2YWx1ZV9mbG9hdDogZmxvYXQ9QGdh bW1hPigpCi0tICAgICAgICAgICAgICAgYWxwaGFfeCA9IENhc3RMaWtlKGNvbnN0YW50X2FscGhh LCBYKQotLSAgICAgICAgICAgICAgIGdhbW1hX3ggPSBDYXN0TGlrZShjb25zdGFudF9nYW1tYSwg WCkKLS0gICAgICAgICAgICAgICBleHBfeCA9IEV4cChYKQotLSAgICAgICAgICAgICAgIGFscGhh X3hfZXhwX3ggPSBNdWwoYWxwaGFfeCwgZXhwX3gpCi0tICAgICAgICAgICAgICAgYWxwaGFfeF9l eHBfeF8gPSBTdWIoYWxwaGFfeF9leHBfeCwgYWxwaGFfeCkKLS0gICAgICAgICAgICAgICBuZWcg PSBNdWwoZ2FtbWFfeCwgYWxwaGFfeF9leHBfeF8pCi0tICAgICAgICAgICAgICAgcG9zID0gTXVs KGdhbW1hX3gsIFgpCi0tICAgICAgICAgICAgICAgX3plcm8gPSBDb25zdGFudDx2YWx1ZV9mbG9h dD0wLjA+KCkKLS0gICAgICAgICAgICAgICB6ZXJvID0gQ2FzdExpa2UoX3plcm8sIFgpCi0tICAg ICAgICAgICAgICAgbGVzc19lcSA9IExlc3NPckVxdWFsKFgsIHplcm8pCi0tICAgICAgICAgICAg ICAgQyA9IFdoZXJlKGxlc3NfZXEsIG5lZywgcG9zKQotLSAgICAgICAgICAgfX0KLS0gICAgICAg ICIiIgotLQotLSAgICAgICAgZnVuY3Rpb25zID0gW29ubngucGFyc2VyLnBhcnNlX2Z1bmN0aW9u KGZ1bmN0aW9uX3RleHQpXQotLSAgICAgICAgZ3JhcGggPSBvbm54LnBhcnNlci5wYXJzZV9ncmFw aChncmFwaF90ZXh0KQotLSAgICAgICAgb3BzZXRfaW1wb3J0cyA9IFsKLS0gICAgICAgICAgICBP cGVyYXRvclNldElkUHJvdG8oZG9tYWluPSIiLCB2ZXJzaW9uPTE1KSwKLS0gICAgICAgICAgICBP cGVyYXRvclNldElkUHJvdG8oZG9tYWluPSJjdXN0b21fZG9tYWluIiwgdmVyc2lvbj0xKSwKLS0g ICAgICAgIF0KLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5oZWxwZXIubWFrZV9tb2RlbCgKLS0g ICAgICAgICAgICBncmFwaCwgZnVuY3Rpb25zPWZ1bmN0aW9ucywgb3BzZXRfaW1wb3J0cz1vcHNl dF9pbXBvcnRzCi0tICAgICAgICApCi0tICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKG1vZGVs KQotLQotLSAgICAgICAgZXhwZWN0X21vZGVsX2Z1bmN0aW9uX2F0dHJpYnV0ZShtb2RlbCkKLS0g ICAgICAgIGV4cGVjdF9jdXN0b21fbm9kZV9hdHRyaWJ1dGUobW9kZWwuZ3JhcGgubm9kZVswXSwg ZXhwZWN0ZWRfYXR0cmlidXRlKQotLQotICAgICBkZWYgdGVzdF9wYXJzZV9ub2RlKHNlbGYpOgot ICAgICAgICAgbm9kZSA9IG9ubngucGFyc2VyLnBhcnNlX25vZGUoCi0gICAgICAgICAgICAgIm91 dDEsIG91dDIgPSBTb21lRG9tYWluLlNvbWVPcCA8YXR0cjEgPSAxPiAoaW4xLCBpbjIpIgotQEAg LTI0MiwxMDEgKzE1Miw2IEBAIGNsYXNzIFRlc3RCYXNpY0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0 Q2FzZSk6Ci0gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qobm9kZS5pbnB1dCksIFsiIiwg InkiXSkKLSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChub2RlLm91dHB1dCksIFsiIiwg IngiXSkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAg ICAgICAgICgibm90X2FfZ29vZF9mbG9hdCIsIFRydWUpLAotLSAgICAgICAgICAgICgiaW5mMSIs IFRydWUpLAotLSAgICAgICAgICAgICgiLWluZjEiLCBUcnVlKSwKLS0gICAgICAgICAgICAoIm5h bjAiLCBUcnVlKSwKLS0gICAgICAgICAgICAoIi1uYW4wIiwgVHJ1ZSksCi0tICAgICAgICAgICAg KCJuYW5pbmYiLCBUcnVlKSwKLS0gICAgICAgICAgICAoImluZiIsIEZhbHNlKSwKLS0gICAgICAg ICAgICAoIi1pbmYiLCBGYWxzZSksCi0tICAgICAgICAgICAgKCJpbmZpbml0eSIsIEZhbHNlKSwK LS0gICAgICAgICAgICAoIi1pbmZpbml0eSIsIEZhbHNlKSwKLS0gICAgICAgICAgICAoIm5hbiIs IEZhbHNlKSwKLS0gICAgICAgICAgICAoIi1OYU4iLCBGYWxzZSksCi0tICAgICAgICBdCi0tICAg ICkKLS0gICAgZGVmIHRlc3RfcGFyc2VfdmFyaW91c19mbG9hdF92YWx1ZXMoc2VsZiwgdGVzdF9s aXRlcmFsLCBleHBlY3RfZXhjZXB0aW9uKToKLS0gICAgICAgIG1vZGVsX3RleHQgPSBmIiIiCi0t ICAgICAgICA8Ci0tICAgICAgICBpcl92ZXJzaW9uOiA4LAotLSAgICAgICAgb3BzZXRfaW1wb3J0 OiBbIiIgOiAxOCwgInRoaXMiIDogMV0sCi0tICAgICAgICBwcm9kdWNlcl9uYW1lOiAiRnVuY3Rp b25Qcm90b1Rlc3QiLAotLSAgICAgICAgcHJvZHVjZXJfdmVyc2lvbjogIjEuMCIKLS0gICAgICAg ID4KLS0gICAgICAgIF9mdW5jICgpID0+ICgpCi0tICAgICAgICB7ewotLSAgICAgICAgdG1wID0g Q29uc3RhbnQgPHZhbHVlX2Zsb2F0ID0ge3Rlc3RfbGl0ZXJhbH0+KCkKLS0gICAgICAgIH19Ci0t ICAgICAgICAiIiIKLS0gICAgICAgIGlmIGV4cGVjdF9leGNlcHRpb246Ci0tICAgICAgICAgICAg c2VsZi5hc3NlcnRSYWlzZXMoCi0tICAgICAgICAgICAgICAgIG9ubngucGFyc2VyLlBhcnNlRXJy b3IsIGxhbWJkYTogb25ueC5wYXJzZXIucGFyc2VfbW9kZWwobW9kZWxfdGV4dCkKLS0gICAgICAg ICAgICApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIG1vZGVsID0gb25ueC5wYXJzZXIu cGFyc2VfbW9kZWwobW9kZWxfdGV4dCkKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1v ZGVsLmlyX3ZlcnNpb24sIDgpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5w cm9kdWNlcl9uYW1lLCAiRnVuY3Rpb25Qcm90b1Rlc3QiKQotLSAgICAgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwobW9kZWwucHJvZHVjZXJfdmVyc2lvbiwgIjEuMCIpCi0tICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChsZW4obW9kZWwuZ3JhcGgubm9kZSksIDEpCi0tICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChsZW4obW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGUpLCAxKQotLSAg ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVb MF0ubmFtZSwgInZhbHVlX2Zsb2F0IikKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAot LSAgICAgICAgICAgICAgICBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50eXBlLCBv bm54LkF0dHJpYnV0ZVByb3RvLkZMT0FUCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoCi0tICAgICAgICAgICAgICAgIHN0cihtb2RlbC5ncmFwaC5ub2RlWzBd LmF0dHJpYnV0ZVswXS5mKSwgc3RyKGZsb2F0KHRlc3RfbGl0ZXJhbCkpCi0tICAgICAgICAgICAg KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAg ICAgKCJiZmxvYXQxNiIsIFRlbnNvclByb3RvLkJGTE9BVDE2KSwKLS0gICAgICAgICAgICAoImJv b2wiLCBUZW5zb3JQcm90by5CT09MKSwKLS0gICAgICAgICAgICAoImNvbXBsZXg2NCIsIFRlbnNv clByb3RvLkNPTVBMRVg2NCksCi0tICAgICAgICAgICAgKCJjb21wbGV4MTI4IiwgVGVuc29yUHJv dG8uQ09NUExFWDEyOCksCi0tICAgICAgICAgICAgKCJkb3VibGUiLCBUZW5zb3JQcm90by5ET1VC TEUpLAotLSAgICAgICAgICAgICgiZmxvYXQxNiIsIFRlbnNvclByb3RvLkZMT0FUMTYpLAotLSAg ICAgICAgICAgICgiZmxvYXQiLCBUZW5zb3JQcm90by5GTE9BVCksCi0tICAgICAgICAgICAgKCJm bG9hdDhlNG0zZm4iLCBUZW5zb3JQcm90by5GTE9BVDhFNE0zRk4pLAotLSAgICAgICAgICAgICgi ZmxvYXQ4ZTRtM2ZudXoiLCBUZW5zb3JQcm90by5GTE9BVDhFNE0zRk5VWiksCi0tICAgICAgICAg ICAgKCJmbG9hdDhlNW0yIiwgVGVuc29yUHJvdG8uRkxPQVQ4RTVNMiksCi0tICAgICAgICAgICAg KCJmbG9hdDhlNW0yZm51eiIsIFRlbnNvclByb3RvLkZMT0FUOEU1TTJGTlVaKSwKLS0gICAgICAg ICAgICAoImludDIiLCBUZW5zb3JQcm90by5JTlQyKSwKLS0gICAgICAgICAgICAoImludDQiLCBU ZW5zb3JQcm90by5JTlQ0KSwKLS0gICAgICAgICAgICAoImludDgiLCBUZW5zb3JQcm90by5JTlQ4 KSwKLS0gICAgICAgICAgICAoImludDE2IiwgVGVuc29yUHJvdG8uSU5UMTYpLAotLSAgICAgICAg ICAgICgiaW50MzIiLCBUZW5zb3JQcm90by5JTlQzMiksCi0tICAgICAgICAgICAgKCJpbnQ2NCIs IFRlbnNvclByb3RvLklOVDY0KSwKLS0gICAgICAgICAgICAoInN0cmluZyIsIFRlbnNvclByb3Rv LlNUUklORyksCi0tICAgICAgICAgICAgKCJ1aW50MiIsIFRlbnNvclByb3RvLlVJTlQyKSwKLS0g ICAgICAgICAgICAoInVpbnQ0IiwgVGVuc29yUHJvdG8uVUlOVDQpLAotLSAgICAgICAgICAgICgi dWludDgiLCBUZW5zb3JQcm90by5VSU5UOCksCi0tICAgICAgICAgICAgKCJ1aW50MTYiLCBUZW5z b3JQcm90by5VSU5UMTYpLAotLSAgICAgICAgICAgICgidWludDMyIiwgVGVuc29yUHJvdG8uVUlO VDMyKSwKLS0gICAgICAgICAgICAoInVpbnQ2NCIsIFRlbnNvclByb3RvLlVJTlQ2NCksCi0tICAg ICAgICAgICAgKCJmbG9hdDRlMm0xIiwgVGVuc29yUHJvdG8uRkxPQVQ0RTJNMSksCi0tICAgICAg ICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfcGFyc2VfZ3JhcGhfdHlwZXMoc2VsZiwgbmFtZSwg aXR5cGUpIC0+IE5vbmU6Ci0tICAgICAgICB3ID0gJ3siMCJ9JyBpZiBpdHlwZSA9PSBUZW5zb3JQ cm90by5TVFJJTkcgZWxzZSAiezB9IgotLSAgICAgICAgdGV4dF9ncmFwaCA9IGYiIiIKLS0gICAg ICAgICAgIDwKLS0gICAgICAgICAgICAgaXJfdmVyc2lvbjogMTAsCi0tICAgICAgICAgICAgIG9w c2V0X2ltcG9ydDogWyAiIiA6IDE5XQotLSAgICAgICAgICAgPgotLSAgICAgICAgICAgYWdyYXBo IChmbG9hdFtOXSBYKSA9PiAoe25hbWV9W05dIEMpCi0tICAgICAgICAgICA8Ci0tICAgICAgICAg ICAgIHtuYW1lfVsxXSB3ZWlnaHQgPSB7d30KLS0gICAgICAgICAgID4KLS0gICAgICAgICAgIHt7 Ci0tICAgICAgICAgICAgICBDID0gQ2FzdDx0bz17aXR5cGV9PihYKQotLSAgICAgICAgICAgfX0K LS0gICAgICAgICAgICIiIgotLSAgICAgICAgZ3JhcGggPSBvbm54LnBhcnNlci5wYXJzZV9tb2Rl bCh0ZXh0X2dyYXBoKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JhcGguZ3JhcGgu bm9kZSksIDEpCi0tCi0gCi0gaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICAgdW5pdHRl c3QubWFpbih2ZXJib3NpdHk9MikKLWRpZmYgLS1naXQgYS9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2 YWx1YXRvcl9tbF90ZXN0LnB5IGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVz dC5weQotaW5kZXggN2RhZDk2NzAzLi4xYzQyNzY0ODIgMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3Qv cmVmZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3QvcmVmZXJlbmNl X2V2YWx1YXRvcl9tbF90ZXN0LnB5Ci1AQCAtMTEsNyArMTEsNiBAQCBpbXBvcnQgdW5pdHRlc3QK LSAKLSBpbXBvcnQgbnVtcHkgYXMgbnAKLSBmcm9tIG51bXB5LnRlc3RpbmcgaW1wb3J0IGFzc2Vy dF9hbGxjbG9zZQotLWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVyaXplZAotIAot IGltcG9ydCBvbm54Ci0gZnJvbSBvbm54IGltcG9ydCBPTk5YX01MLCBUZW5zb3JQcm90bywgVHlw ZVByb3RvLCBWYWx1ZUluZm9Qcm90bwotQEAgLTg5MywxMTggKzg5Miw2IEBAIGNsYXNzIFRlc3RS ZWZlcmVuY2VFdmFsdWF0b3JBaU9ubnhNbCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBv bm54LmNoZWNrZXIuY2hlY2tfbW9kZWwobW9kZWwpCi0gICAgICAgICByZXR1cm4gbW9kZWwKLSAK LS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgdHVwbGUoCi0tICAgICAgICAg ICAgaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUoCi0tICAgICAgICAgICAgICAgICgKLS0g ICAgICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlv bkZ1bmN0aW9uLlNVTSBpZiBvcHNldDUgZWxzZSAiU1VNIiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjU3NjkyM10s IFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAgICAgICAgICAg ICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0tICAgICAg ICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAg ICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uQVZFUkFHRSBpZiBvcHNldDUgZWxzZSAiQVZF UkFHRSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFtbMC4yODg0NjJdLCBbMC4yODg0NjJdLCBbMC4yODg0NjJdXSwgZHR5 cGU9bnAuZmxvYXQzMgotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAg ICAgICAgICAgICAgb3BzZXQ1LAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlvbkZ1bmN0aW9u Lk1JTiBpZiBvcHNldDUgZWxzZSAiTUlOIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5h cnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjA3NjkyM10sIFswLjA3Njky M10sIFswLjA3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAgICAgICAgICAgICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0tICAgICAgICAgICAgICAg ICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgICAg IEFnZ3JlZ2F0aW9uRnVuY3Rpb24uTUFYIGlmIG9wc2V0NSBlbHNlICJNQVgiLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMC41XSwgWzAuNV0sIFswLjVdXSwgZHR5cGU9bnAu ZmxvYXQzMiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAotLSAgICAgICAgICAg ICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgICAgICBmb3Igb3Bz ZXQ1IGluIFtUcnVlLCBGYWxzZV0KLS0gICAgICAgICAgICApCi0tICAgICAgICApCi0tICAgICkK LS0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21w aWxlZCB3aXRoIGFpLm9ubngubWwiKQotLSAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jl c3Nvcl9hZ2dyZWdhdGlvbl9mdW5jdGlvbnMoCi0tICAgICAgICBzZWxmLCBhZ2dyZWdhdGVfZnVu Y3Rpb24sIGV4cGVjdGVkX3Jlc3VsdCwgb3BzZXQ1Ci0tICAgICk6Ci0tICAgICAgICB4ID0gbnAu YXJhbmdlKDkpLnJlc2hhcGUoKC0xLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpIC8gMTAgLSAwLjUK LS0gICAgICAgIG1vZGVsX2ZhY3RvcnkgPSAoCi0tICAgICAgICAgICAgc2VsZi5fZ2V0X3Rlc3Rf dHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QKLS0gICAgICAgICAgICBpZiBvcHNldDUKLS0gICAg ICAgICAgICBlbHNlIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yCi0tICAg ICAgICApCi0tICAgICAgICBtb2RlbF9wcm90byA9IG1vZGVsX2ZhY3RvcnkoCi0tICAgICAgICAg ICAgYWdncmVnYXRlX2Z1bmN0aW9uLAotLSAgICAgICAgKQotLSAgICAgICAgc2VzcyA9IFJlZmVy ZW5jZUV2YWx1YXRvcihtb2RlbF9wcm90bykKLS0gICAgICAgIChhY3R1YWwsKSA9IHNlc3MucnVu KE5vbmUsIHsiWCI6IHh9KQotLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGFjdHVhbCwgZXhwZWN0 ZWRfcmVzdWx0LCBhdG9sPTFlLTYpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0g ICAgICAgIHR1cGxlKAotLSAgICAgICAgICAgIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxl KAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAoCi0tICAgICAgICAg ICAgICAgICAgICAgICAgTW9kZS5MRVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9MRVEiLAotLSAg ICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbWzAuNTc2OTIzXSwgWzAuNTc2OTIzXSwgWzAuNTc2OTIzXV0sIGR0eXBlPW5wLmZsb2F0 MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgICAg IG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAo Ci0tICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5HVCBpZiBvcHNldDUgZWxzZSAiQlJBTkNI X0dUIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzAuNV0sIFswLjVdLCBb MC41XV0sIGR0eXBlPW5wLmZsb2F0MzIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0 NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgTW9kZS5MVCBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0xUIiwK LS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgW1swLjU3NjkyM10sIFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlwZT1ucC5m bG9hdDMyCi0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBvcHNldDUsCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAg ICAgKAotLSAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUuR1RFIGlmIG9wc2V0NSBlbHNlICJC UkFOQ0hfR1RFIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzAuNV0sIFsw LjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIpLAotLSAgICAgICAgICAgICAgICAgICAgICAg IG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAo Ci0tICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5FUSBpZiBvcHNldDUgZWxzZSAiQlJBTkNI X0VRIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzEuMF0sIFsxLjBdLCBb MS4wXV0sIGR0eXBlPW5wLmZsb2F0MzIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0 NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgTW9kZS5ORVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9ORVEi LAotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBbWzAuMDc2OTIzXSwgWzAuMDc2OTIzXSwgWzAuMDc2OTIzXV0sIGR0eXBlPW5w LmZsb2F0MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAg ICkKLS0gICAgICAgICAgICAgICAgZm9yIG9wc2V0NSBpbiBbVHJ1ZSwgRmFsc2VdCi0tICAgICAg ICAgICAgKQotLSAgICAgICAgKQotLSAgICApCi0tICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9O TlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKLS0gICAg ZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfcnVsZShzZWxmLCBydWxlLCBleHBlY3Rl ZCwgb3BzZXQ1KToKLS0gICAgICAgIHggPSBucC5hcmFuZ2UoOSkucmVzaGFwZSgoLTEsIDMpKS5h c3R5cGUobnAuZmxvYXQzMikgLyAxMCAtIDAuNQotLSAgICAgICAgbW9kZWxfZmFjdG9yeSA9ICgK LS0gICAgICAgICAgICBzZWxmLl9nZXRfdGVzdF90cmVlX2Vuc2VtYmxlX29wc2V0X2xhdGVzdAot LSAgICAgICAgICAgIGlmIG9wc2V0NQotLSAgICAgICAgICAgIGVsc2Ugc2VsZi5fZ2V0X3Rlc3Rf dHJlZV9lbnNlbWJsZV9yZWdyZXNzb3IKLS0gICAgICAgICkKLS0gICAgICAgIGFnZ3JlZ2F0ZV9m dW5jdGlvbiA9IEFnZ3JlZ2F0aW9uRnVuY3Rpb24uU1VNIGlmIG9wc2V0NSBlbHNlICJTVU0iCi0t Ci0tICAgICAgICBtb2RlbF9wcm90byA9IG1vZGVsX2ZhY3RvcnkoYWdncmVnYXRlX2Z1bmN0aW9u LCBydWxlKQotLSAgICAgICAgc2VzcyA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbF9wcm90bykK LS0gICAgICAgIChhY3R1YWwsKSA9IHNlc3MucnVuKE5vbmUsIHsiWCI6IHh9KQotLSAgICAgICAg YXNzZXJ0X2FsbGNsb3NlKGFjdHVhbCwgZXhwZWN0ZWQsIGF0b2w9MWUtNikKLS0KLSAgICAgQHVu aXR0ZXN0LnNraXBJZihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21waWxlZCB3aXRo IGFpLm9ubngubWwiKQotICAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3Nvcl8yX3Rh cmdldHNfb3BzZXQzKHNlbGYpOgotICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmVdKQotQEAgLTExMTgsMjMgKzEwMDUs NiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yQWlPbm54TWwodW5pdHRlc3QuVGVzdENh c2UpOgotICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGdvdFswXSwgZXhwZWN0ZWQsIGF0b2w9MWUt NikKLSAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm9wX3R5cGU9VHJlZUVuc2VtYmxlUmVncmVzc29y Iiwgc3RyKHNlc3MucnRfbm9kZXNfWzBdKSkKLSAKLS0gICAgQHVuaXR0ZXN0LnNraXBJZihub3Qg T05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21waWxlZCB3aXRoIGFpLm9ubngubWwiKQotLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbKGlucHV0X3R5cGUsKSBmb3IgaW5w dXRfdHlwZSBpbiBbVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkRPVUJMRV1dCi0tICAg ICkKLS0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9taXNzaW5nX29wc2V0NShzZWxmLCBpbnB1 dF90eXBlKToKLS0gICAgICAgIG1vZGVsID0gc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9v cHNldF9sYXRlc3QoCi0tICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5TVU0sIE1vZGUu TEVRLCBUcnVlLCBpbnB1dF90eXBlCi0tICAgICAgICApCi0tICAgICAgICBucF9kdHlwZSA9IG9u bnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShpbnB1dF90eXBlKQotLSAgICAgICAg eCA9IG5wLmFyYW5nZSg5KS5yZXNoYXBlKCgtMSwgMykpLmFzdHlwZShucF9kdHlwZSkgLyAxMCAt IDAuNQotLSAgICAgICAgeFsyLCAwXSA9IDUKLS0gICAgICAgIHhbMSwgOl0gPSBucC5uYW4KLS0g ICAgICAgIGV4cGVjdGVkID0gbnAuYXJyYXkoW1sxMDAwMDEuMF0sIFsxMDAxMDAuMF0sIFsxMDAx MDAuMF1dLCBkdHlwZT1ucF9kdHlwZSkKLS0gICAgICAgIHNlc3Npb24gPSBSZWZlcmVuY2VFdmFs dWF0b3IobW9kZWwpCi0tICAgICAgICAoYWN0dWFsLCkgPSBzZXNzaW9uLnJ1bihOb25lLCB7Ilgi OiB4fSkKLS0gICAgICAgIGFzc2VydF9hbGxjbG9zZShhY3R1YWwsIGV4cGVjdGVkLCBhdG9sPTFl LTYpCi0tCi0gICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBu b3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKLSAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJs ZV9yZWdyZXNzb3JfbWlzc2luZ19vcHNldDVfZmxvYXQxNihzZWxmKToKLSAgICAgICAgIG1vZGVs ID0gc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QoCi1kaWZmIC0tZ2l0 IGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfdGVzdC5weSBiL29ubngvdGVzdC9yZWZl cmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKLWluZGV4IDg1Y2M0Y2MwZS4uZDBhMjU1ZmM4IDEwMDY0 NAotLS0tIGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfdGVzdC5weQotKysrIGIvb25u eC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfdGVzdC5weQotQEAgLTI1LDcgKzI1LDYgQEAgZnJv bSB0eXBpbmcgaW1wb3J0IFRZUEVfQ0hFQ0tJTkcKLSAKLSBpbXBvcnQgbWxfZHR5cGVzCi0gaW1w b3J0IG51bXB5IGFzIG5wCi0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLSBpbXBvcnQgdmVyc2lvbl91 dGlscwotIGZyb20gbnVtcHkudGVzdGluZyBpbXBvcnQgYXNzZXJ0X2FsbGNsb3NlCi0gCi1AQCAt Mjk5OCwxNjMgKzI5OTcsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0 LlRlc3RDYXNlKToKLSAgICAgICAgICMgbW9kZWwKLSAgICAgICAgIHJldHVybiBtYWtlX21vZGVs KGdyYXBoLCBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIG9wc2V0KV0pCi0gCi0tICAg IEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgaXRlcnRvb2xz LnByb2R1Y3QoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAg ICAgICAgICAgICAiUmVkdWNlTWluIiwKLS0gICAgICAgICAgICAgICAgICAgIFsKLS0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg W1tucC5uYW4sIG5wLm5hbl0sIFsxNC40MjI3MDYsIDE4LjgwNTI3XV0sIGR0eXBlPW5wLmZsb2F0 MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgICAg IG5wLmFycmF5KFtbMiwgMTVdLCBbMTAsIDRdXSwgZHR5cGU9bnAuaW50NjQpLAotLSAgICAgICAg ICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgKAot LSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUwxIiwKLS0gICAgICAgICAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgW1syLjIzNjcwNTMsIDIuMzUxNjYxMl0sIFs0LjA3NjI5MiwgNC4yOTcwNjM0XV0s Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShb WzE4LCA2XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAgICAgICAgICAgICAg IF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAg ICAgICAgICAgICJSZWR1Y2VMMiIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAg ICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb MS44MDE1NSwgMS44MTY5OTQ4XSwgWzIuOTkyODA3NiwgMy4xMjA1ODgzXV0sCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzExLCAxOF0sIFsx MywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAg ICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAi UmVkdWNlTG9nU3VtIiwKLS0gICAgICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg ICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjk0OTc4 NDgsIDEuMTg3MjY0M10sIFsxLjY3NjQxNzUsIDEuNzA3NTldXSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAp LAotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbNiwgMThdLCBbMTMsIDZdXSwg ZHR5cGU9bnAuaW50NjQpLAotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUxv Z1N1bUV4cCIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAg ICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMS42MDA1OTczLCAx Ljc0NDU5MzVdLCBbMi41NjE2MjI5LCAyLjY1Mzk3OTVdXSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAot LSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMTMsIDZdLCBbMTMsIDZdXSwgZHR5 cGU9bnAuaW50NjQpLAotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZU1heCIs Ci0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJy YXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMS40MjE3MTA4LCAxLjUwNjk1MzZd LCBbMi40NTM4MjYsIDIuNTA0MTc4M11dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBk dHlwZT1ucC5mbG9hdDMyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxMywgMTFdLCBbMTMsIDExXV0sIGR0eXBlPW5wLmlu dDY0KSwKLS0gICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VNZWFuIiwKLS0gICAg ICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjM5MjQ3OTAzLCAwLjc4NDk3NjM2XSwgWzIu MDM4MTQ2LCAyLjE0ODUzMTddXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9 bnAuZmxvYXQzMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICAgICAgICAgIG5wLmFycmF5KFtbMTMsIDZdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAot LSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZVN1bVNxdWFyZSIsCi0tICAgICAg ICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFtbMy4yNDU1ODI4LCAzLjMwMTQ2OTZdLCBbOC45NTY4 OTYsIDkuNzM4MDcwNV1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5m bG9hdDMyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAg ICAgICAgbnAuYXJyYXkoW1sxMSwgMThdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAotLSAg ICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAg ICAgKAotLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZVByb2QiLAotLSAgICAgICAgICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBbW25wLm5hbiwgbnAubmFuXSwgWzE0LjQyMjcwNiwgMTguODA1Mjdd XSwgZHR5cGU9bnAuZmxvYXQzMgotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAg ICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1syLCAxNV0sIFsxMywgNl1dLCBkdHlwZT1ucC5p bnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICApLAotLSAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgWzE3LCAxOF0sCi0tICAgICAgICApCi0tICAgICkK LS0gICAgZGVmIHRlc3Rfb3BfcmVkdWNlKHNlbGYsIHJlZHVjZV9vcF9leHBlY3RlZCwgb3BzZXQ6 IGludCk6Ci0tICAgICAgICByZWR1Y2Vfb3AsIGV4cGVjdGVkID0gcmVkdWNlX29wX2V4cGVjdGVk Ci0tICAgICAgICBYID0gbnAuYXJhbmdlKDgpLnJlc2hhcGUoKC0xLCA0KSkuYXN0eXBlKG5wLmZs b2F0MzIpCi0tCi0tICAgICAgICByZXN1bHRzID0ge30KLS0KLS0gICAgICAgIG1vZGVsID0gc2Vs Zi5fY2Rpc3RfbW9kZWwob3BzZXQsIHJlZHVjZV9vcCkKLS0gICAgICAgIHNlc3MgPSBSZWZlcmVu Y2VFdmFsdWF0b3IobW9kZWwpCi0tICAgICAgICBnb3QgPSBzZXNzLnJ1bihOb25lLCB7ImlucHV0 IjogWH0pCi0tICAgICAgICByZXN1bHRzWyJyZWYiLCBvcHNldF0gPSBnb3QKLS0KLS0gICAgICAg IGNsID0gWwotLSAgICAgICAgICAgIG4KLS0gICAgICAgICAgICBmb3IgbiBpbiBzZXNzLnJ0X25v ZGVzX1swXS5ib2R5LnJ0X25vZGVzXwotLSAgICAgICAgICAgIGlmIG4uX19jbGFzc19fLl9fbmFt ZV9fLnN0YXJ0c3dpdGgocmVkdWNlX29wKQotLSAgICAgICAgXQotLSAgICAgICAgc2NoZW1hID0g Y2xbMF0uX3NjaGVtYQotLSAgICAgICAgbmV3X2NsID0gdHlwZShyZWR1Y2Vfb3AsIChjbFswXS5f X2NsYXNzX18sKSwgeyJvcF9zY2hlbWEiOiBzY2hlbWF9KQotLSAgICAgICAgc2VzcyA9IFJlZmVy ZW5jZUV2YWx1YXRvcihtb2RlbCwgbmV3X29wcz1bbmV3X2NsXSkKLS0gICAgICAgIGdvdCA9IHNl c3MucnVuKE5vbmUsIHsiaW5wdXQiOiBYfSkKLS0gICAgICAgIHJlc3VsdHNbInJlZl9jbCIsIG9w c2V0XSA9IGdvdAotLQotLSAgICAgICAgYmFzZWxpbmUgPSAiY29uc3RhbnQiCi0tICAgICAgICBm b3IgaywgdiBpbiByZXN1bHRzLml0ZW1zKCk6Ci0tICAgICAgICAgICAgZm9yIGEsIGIgaW4gemlw KHJldmVyc2VkKGV4cGVjdGVkKSwgcmV2ZXJzZWQodiksIHN0cmljdD1UcnVlKToKLS0gICAgICAg ICAgICAgICAgaWYgYS5zaGFwZSAhPSBiLnNoYXBlOgotLSAgICAgICAgICAgICAgICAgICAgcmFp c2UgQXNzZXJ0aW9uRXJyb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgZiJTaGFwZSBtaXNt YXRjaCBmb3Ige3JlZHVjZV9vcCFyfSwge2Jhc2VsaW5lfTp7YS5zaGFwZX0gIT0ge2t9OntiLnNo YXBlfS4iCi0tICAgICAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgICAgIGRpZmYgPSBu cC5hYnMoYSAtIGIpLm1heCgpCi0tICAgICAgICAgICAgICAgIGlmIGRpZmYgPiAxZS02OgotLSAg ICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCi0tICAgICAgICAgICAgICAg ICAgICAgICAgZiJEaXNjcmVwYW5jaWVzIChtYXg9e2RpZmZ9KSBmb3Ige3JlZHVjZV9vcCFyfSwg e2Jhc2VsaW5lfSAhPSB7a31cbnthfVxuIT1cbntifSIKLS0gICAgICAgICAgICAgICAgICAgICkK LS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBb Ci0tICAgICAgICAgICAgKDEzLCksCi0tICAgICAgICAgICAgKDE3LCksCi0tICAgICAgICAgICAg KDE4LCksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfbXZuKHNlbGYsIG9wc2V0 OiBpbnQsIHJlZl9vcHNldDogaW50ID0gMTMpOgotLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmUsIE5vbmVd KQotLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5G TE9BVCwgW05vbmUsIE5vbmUsIE5vbmUsIE5vbmVdKQotLSAgICAgICAgbm9kZXMgPSBbCi0tICAg ICAgICAgICAgbWFrZV9ub2RlKCJNZWFuVmFyaWFuY2VOb3JtYWxpemF0aW9uIiwgWyJYIl0sIFsi WSJdKSwKLS0gICAgICAgIF0KLS0gICAgICAgIGdyYXBoID0gbWFrZV9ncmFwaChub2RlcywgImci LCBbWF0sIFtZXSkKLS0gICAgICAgIHggPSBucC5yYW5kb20ucmFuZCgzLCAzLCAzLCAxKS5hc3R5 cGUobnAuZmxvYXQzMikKLS0KLS0gICAgICAgIG9ubnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBo LCBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIG9wc2V0KV0pCi0tICAgICAgICByZWYg PSBSZWZlcmVuY2VFdmFsdWF0b3Iob25ueF9tb2RlbCkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4o Tm9uZSwgeyJYIjogeH0pWzBdCi0tCi0tICAgICAgICByZWZfb25ueF9tb2RlbCA9IG1ha2VfbW9k ZWwoZ3JhcGgsIG9wc2V0X2ltcG9ydHM9W21ha2Vfb3BzZXRpZCgiIiwgcmVmX29wc2V0KV0pCi0t ICAgICAgICByZWZfZXhwZWN0ZWQgPSBSZWZlcmVuY2VFdmFsdWF0b3IocmVmX29ubnhfbW9kZWwp Ci0tICAgICAgICBleHBlY3RlZCA9IHJlZl9leHBlY3RlZC5ydW4oTm9uZSwgeyJYIjogeH0pWzBd Ci0tCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdC5zaGFwZSwgZXhwZWN0ZWQuc2hhcGUp Ci0tICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290LCBleHBlY3RlZCkKLS0KLSAgICAgZGVmIHRl c3RfY29uY2F0X2luX2FfZnVuY3Rpb24oc2VsZik6Ci0gICAgICAgICBkZWYgY3JlYXRlX21vZGVs KCk6Ci0gICAgICAgICAgICAgbm9kZXMgPSBbXQotQEAgLTM4MjksMjExICszNjcxLDYgQEAgY2xh c3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBn b3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotICAgICAgICAgYXNzZXJ0X2FsbGNsb3Nl KGdvdFswXSwgZXhwZWN0ZWQpCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQu ZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgNCAq IG5wLmFyYW5nZSgxMikucmVzaGFwZSgzLCA0KSwKLS0gICAgICAgICAgICAgICAgbnAuYXJhbmdl KDEsIDcpLnJlc2hhcGUoMywgMiksCi0tICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAyKSks Ci0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAg ICAgIFtbMCwgNCwgNCwgNl0sIFs1LCA3LCA2LCA3XSwgWzYsIDcsIDcsIDddXSwKLS0gICAgICAg ICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgNCAqIG5wLmFyYW5nZSgx MikucmVzaGFwZSgzLCA0KSwKLS0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcpLnJlc2hh cGUoMywgMiksCi0tICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDIpKSwKLS0gICAgICAgICAg ICAgICAgMSwKLS0gICAgICAgICAgICAgICAgMiwKLS0gICAgICAgICAgICAgICAgW1sxLCA1LCA1 LCA3XSwgWzYsIDgsIDcsIDhdLCBbNywgOCwgOCwgOF1dLAotLSAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMjQpLnJlc2hhcGUoMywgOCks Ci0tICAgICAgICAgICAgICAgIFtbMC4yNSwgMC41LCAxXSwgWzAuMjUsIDAuNSwgMV0sIFswLjI1 LCAwLjUsIDFdXSwKLS0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDMpKSwKLS0gICAgICAg ICAgICAgICAgMSwKLS0gICAgICAgICAgICAgICAgMywKLS0gICAgICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICAgICAgWzAsIDQsIDgsIDYsIDgsIDEwLCA2LCA3XSwKLS0gICAgICAgICAg ICAgICAgICAgIFszMiwgMzYsIDQwLCAyMiwgMjQsIDI2LCAxNCwgMTVdLAotLSAgICAgICAgICAg ICAgICAgICAgWzY0LCA2OCwgNzIsIDM4LCA0MCwgNDIsIDIyLCAyM10sCi0tICAgICAgICAgICAg ICAgIF0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAg IG5wLmFyYW5nZSg2KSwKLS0gICAgICAgICAgICAgICAgWzAuMjUsIDAuNV0sCi0tICAgICAgICAg ICAgICAgIFstMSwgLTJdLAotLSAgICAgICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAgICAz LAotLSAgICAgICAgICAgICAgICBbLTEsIDMsIDcsIDQsIDYsIDhdLAotLSAgICAgICAgICAgICks Ci0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5vbmVzKCg5LCAxMikpLAotLSAg ICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0KSksCi0tICAgICAgICAgICAgICAgIG5wLnplcm9z KCgzLCA0KSksCi0tICAgICAgICAgICAgICAgIDAsCi0tICAgICAgICAgICAgICAgIDMsCi0tICAg ICAgICAgICAgICAgIE5vbmUsICAjIEJsb2NrZWQgcXVhbnRpemF0aW9uIGlzIGRlZmluZWQgZm9y IDEtRCBibG9ja3Mgb25seQotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAg ICAgICAgICAgICBucC5vbmVzKCgzLCA0LCA1LCA2KSksCi0tICAgICAgICAgICAgICAgIG5wLm9u ZXMoKDMsIDQpKSwKLS0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDQpKSwKLS0gICAgICAg ICAgICAgICAgMiwKLS0gICAgICAgICAgICAgICAgMiwKLS0gICAgICAgICAgICAgICAgTm9uZSwg ICMgU2NhbGUgYW5kIFpQIG11c3QgaGF2ZSB0aGUgc2FtZSByYW5rIGFzIHRoZSBpbnB1dAotLSAg ICAgICAgICAgICksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfYmxvY2tlZF9x dWFudGl6ZV9saW5lYXIoCi0tICAgICAgICBzZWxmLCB4LCBzY2FsZSwgemVyb19wb2ludCwgYXhp cywgYmxvY2tfc2l6ZSwgZXhwZWN0ZWQKLS0gICAgKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKLS0gICAgICAgIFkg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uSU5UOCwgW05vbmVdKQot LQotLSAgICAgICAgc2NhbGVfZGF0YSA9IG5wLmFycmF5KHNjYWxlLCBkdHlwZT1ucC5mbG9hdDMy KQotLSAgICAgICAgenBfZGF0YSA9IG5wLmFycmF5KHplcm9fcG9pbnQsIGR0eXBlPW5wLmludDgp Ci0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAg ICAgICAgICAgICAgICAgICAgICAgICJRdWFudGl6ZUxpbmVhciIsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgWyJYIiwgInNjYWxlIiwgInplcm8iXSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICBbIlkiXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19zaXplLAotLSAgICAgICAgICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgImciLAotLSAgICAg ICAgICAgICAgICBbWF0sCi0tICAgICAgICAgICAgICAgIFtZXSwKLS0gICAgICAgICAgICAgICAg WwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAg ICAgICAgInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX2RhdGEuc2hhcGUsIHNjYWxl X2RhdGEKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcigiemVybyIsIFRlbnNvclByb3RvLklOVDgsIHNjYWxlX2RhdGEuc2hhcGUsIHpwX2Rh dGEpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICkKLS0g ICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0KLS0gICAgICAgIGRhdGEg PSBucC5hcnJheSh4LCBkdHlwZT1ucC5mbG9hdDMyKQotLQotLSAgICAgICAgaWYgZXhwZWN0ZWQg aXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgZXhwZWN0ZWQgPSBucC5hcnJheShleHBlY3RlZCwg ZHR5cGU9bnAuaW50OCkKLS0gICAgICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRh dGF9KQotLSAgICAgICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQotLSAg ICAgICAgZWxzZToKLS0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy b3IpOgotLSAgICAgICAgICAgICAgICByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLQotLSAg ICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAg ICAgICAgICAoCi0tICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxMikucmVzaGFwZSgzLCA0KSwK LS0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcpLnJlc2hhcGUoMywgMiksCi0tICAgICAg ICAgICAgICAgIG5wLnplcm9zKCgzLCAyKSksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAg ICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIFtbMCwgMSwgNCwgNl0sIFsxMiwgMTUsIDI0 LCAyOF0sIFs0MCwgNDUsIDYwLCA2Nl1dLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAg KAotLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCi0tICAgICAg ICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAotLSAgICAgICAgICAgICAg ICBucC5vbmVzKCgzLCAyKSksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAg IDIsCi0tICAgICAgICAgICAgICAgIFtbLTEsIDAsIDIsIDRdLCBbOSwgMTIsIDIwLCAyNF0sIFsz NSwgNDAsIDU0LCA2MF1dLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAg ICAgICAgICAgICBucC5kc3RhY2soW25wLmFyYW5nZSg0KS5yZXNoYXBlKDIsIDIpXSAqIDQpLAot LSAgICAgICAgICAgICAgICBucC5kc3RhY2soW25wLmFycmF5KFtbMSwgMV0sIFsyLCAzXV0pLCBu cC5hcnJheShbWzQsIDVdLCBbNiwgN11dKV0pLAotLSAgICAgICAgICAgICAgICBucC56ZXJvcygo MiwgMiwgMikpLAotLSAgICAgICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAgICAyLAotLSAg ICAgICAgICAgICAgICBbW1swLCAwLCAwLCAwXSwgWzEsIDEsIDUsIDVdXSwgW1s0LCA0LCAxMiwg MTJdLCBbOSwgOSwgMjEsIDIxXV1dLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAot LSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMjQpLnJlc2hhcGUoMywgOCksCi0tICAgICAgICAg ICAgICAgIFtbMiwgMSwgM10sIFsyLCAxLCAzXSwgWzIsIDEsIDNdXSwKLS0gICAgICAgICAgICAg ICAgbnAuemVyb3MoKDMsIDMpKSwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICAg ICAgMywKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgWzAsIDIsIDQs IDMsIDQsIDUsIDE4LCAyMV0sCi0tICAgICAgICAgICAgICAgICAgICBbMTYsIDE4LCAyMCwgMTEs IDEyLCAxMywgNDIsIDQ1XSwKLS0gICAgICAgICAgICAgICAgICAgIFszMiwgMzQsIDM2LCAxOSwg MjAsIDIxLCA2NiwgNjldLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoCi0tICAgICAgICAgICAg ICAgICAgICA2LAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBbMiwgM10s Ci0tICAgICAgICAgICAgICAgIFsxLCAyXSwKLS0gICAgICAgICAgICAgICAgMCwKLS0gICAgICAg ICAgICAgICAgMywKLS0gICAgICAgICAgICAgICAgWy0yLCAwLCAyLCAzLCA2LCA5XSwKLS0gICAg ICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAub25lcygoOSwg MTIpKSwKLS0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCkpLAotLSAgICAgICAgICAgICAg ICBucC56ZXJvcygoMywgNCkpLAotLSAgICAgICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAg ICAzLAotLSAgICAgICAgICAgICAgICBOb25lLCAgIyBCbG9ja2VkIHF1YW50aXphdGlvbiBpcyBk ZWZpbmVkIGZvciAxLUQgYmxvY2tzIG9ubHkKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAg ICgKLS0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCwgNSwgNikpLAotLSAgICAgICAgICAg ICAgICBucC5vbmVzKCgzLCA0KSksCi0tICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSks Ci0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAg ICAgIE5vbmUsICAjIFNjYWxlIGFuZCBaUCBtdXN0IGhhdmUgdGhlIHNhbWUgcmFuayBhcyB0aGUg aW5wdXQKLS0gICAgICAgICAgICApLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0 X2Jsb2NrZWRfZGVxdWFudGl6ZV9saW5lYXIoCi0tICAgICAgICBzZWxmLCB4LCBzY2FsZSwgemVy b19wb2ludCwgYXhpcywgYmxvY2tfc2l6ZSwgZXhwZWN0ZWQKLS0gICAgKToKLS0gICAgICAgIFgg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uSU5UOCwgW05vbmVdKQot LSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9B VCwgW05vbmVdKQotLQotLSAgICAgICAgc2NhbGVfZGF0YSA9IG5wLmFycmF5KHNjYWxlLCBkdHlw ZT1ucC5mbG9hdDMyKQotLSAgICAgICAgenBfZGF0YSA9IG5wLmFycmF5KHplcm9fcG9pbnQsIGR0 eXBlPW5wLmludDgpCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAg bWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFr ZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJEZXF1YW50aXplTGluZWFyIiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICBbIlgiLCAic2NhbGUiLCAiemVybyJdLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIFsiWSJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIGF4aXM9YXhp cywKLS0gICAgICAgICAgICAgICAgICAgICAgICBibG9ja19zaXplPWJsb2NrX3NpemUsCi0tICAg ICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAg ICAiZyIsCi0tICAgICAgICAgICAgICAgIFtYXSwKLS0gICAgICAgICAgICAgICAgW1ldLAotLSAg ICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKLS0gICAg ICAgICAgICAgICAgICAgICAgICAic2NhbGUiLCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfZGF0 YS5zaGFwZSwgc2NhbGVfZGF0YQotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yKCJ6ZXJvIiwgVGVuc29yUHJvdG8uSU5UOCwgc2NhbGVfZGF0 YS5zaGFwZSwgenBfZGF0YSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQot LSAgICAgICAgKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAg ICAgICAgZGF0YSA9IG5wLmFycmF5KHgsIGR0eXBlPW5wLmludDgpCi0tCi0tICAgICAgICBpZiBl eHBlY3RlZCBpcyBub3QgTm9uZToKLS0gICAgICAgICAgICBleHBlY3RlZCA9IG5wLmFycmF5KGV4 cGVjdGVkLCBkdHlwZT1ucC5mbG9hdDMyKQotLSAgICAgICAgICAgIGdvdCA9IHJlZi5ydW4oTm9u ZSwgeyJYIjogZGF0YX0pCi0tICAgICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGdvdFswXSwgZXhw ZWN0ZWQpCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz ZXMoVmFsdWVFcnJvcik6Ci0tICAgICAgICAgICAgICAgIHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0 YX0pCi0tCi0gICAgIGRlZiB0ZXN0X2xybihzZWxmKToKLSAgICAgICAgIGRlZiBfZXhwZWN0ZWQo eCwgYWxwaGEsIGJldGEsIGJpYXMsIHNpemUpOgotICAgICAgICAgICAgIHNxdWFyZV9zdW0gPSBu cC56ZXJvcygoNSwgNSwgNSwgNSkpLmFzdHlwZShucC5mbG9hdDMyKQotQEAgLTQyMTcsNTIgKzM4 NTQsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToK LSAgICAgICAgIGdvdCA9IF9jb252X2ltcGxlbWVudGF0aW9uX2ltMmNvbCgqKmZlZWRzLCAqKmt3 YXJncykKLSAgICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3QsIGV4cGVjdGVkKQotIAotLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAg ICAgICAoIlJlZHVjZVN1bSIsKSwKLS0gICAgICAgICAgICAoIlJlZHVjZUwxIiwpLAotLSAgICAg ICAgICAgICgiUmVkdWNlTDIiLCksCi0tICAgICAgICAgICAgKCJSZWR1Y2VNaW4iLCksCi0tICAg ICAgICAgICAgKCJSZWR1Y2VNYXgiLCksCi0tICAgICAgICAgICAgKCJSZWR1Y2VQcm9kIiwpLAot LSAgICAgICAgICAgICgiUmVkdWNlU3VtU3F1YXJlIiwpLAotLSAgICAgICAgXQotLSAgICApCi0t ICAgIGRlZiB0ZXN0X3JlZHVjZV9vcF9ub19heGlzKHNlbGYsIG9wKToKLS0gICAgICAgIFggPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCi0tICAg ICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBO b25lKQotLSAgICAgICAgZGF0YSA9IG5wLmFyYW5nZSg2KS5yZXNoYXBlKCgxLCAzLCAyKSkuYXN0 eXBlKG5wLmZsb2F0MzIpCi0tICAgICAgICBub2RlcyA9IFttYWtlX25vZGUob3AsIFsiWCJdLCBb IlkiXSwga2VlcGRpbXM9MCldCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFw aChub2RlcywgImciLCBbWF0sIFtZXSkpCi0tICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0 b3IobW9kZWwpCi0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLSAg ICAgICAgciA9IGdvdFswXQotLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIG5wLm5k YXJyYXkpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIuc2hhcGUsICgpKQotLQotLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZChbKDEsKSwgKDIsKSwgKDMsKSwgKDQs KSwgKDUsKSwgKDYsKV0pCi0tICAgIGRlZiB0ZXN0X3BhZChzZWxmLCBkaW0pOgotLSAgICAgICAg WCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkK LS0gICAgICAgIFAgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJQIiwgVGVuc29yUHJvdG8uSU5U NjQsIE5vbmUpCi0tICAgICAgICBWID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiViIsIFRlbnNv clByb3RvLkZMT0FULCBOb25lKQotLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKLS0gICAgICAgIHZhbHVlID0gbnAuYXJyYXko Wy01XSwgZHR5cGU9bnAuZmxvYXQzMikKLS0KLS0gICAgICAgIG5vZGUgPSBtYWtlX25vZGUoIlBh ZCIsIGlucHV0cz1bIlgiLCAiUCIsICJWIl0sIG91dHB1dHM9WyJZIl0sIG1vZGU9ImNvbnN0YW50 IikKLS0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbChtYWtlX2dyYXBoKFtub2RlXSwgImciLCBb WCwgUCwgVl0sIFtZXSkpCi0tICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwp Ci0tICAgICAgICB4ID0gbnAuYXJyYXkoWzFdLCBkdHlwZT1ucC5mbG9hdDMyKS5yZXNoYXBlKCgx LCkgKiBkaW0pCi0tCi0tICAgICAgICBwID0gbnAuYXJyYXkoWzEsIDFdICogZGltLCBkdHlwZT1u cC5pbnQ2NCkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogeCwgIlAiOiBwLCAi ViI6IHZhbHVlfSlbMF0KLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LnNoYXBlLCAoMywp ICogZGltKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3QuZHR5cGUsIG5wLmZsb2F0MzIp Ci0tCi0tICAgICAgICBwID0gbnAucmVwZWF0KFs3LCAzXSwgZGltKS5hc3R5cGUobnAuaW50NjQp Ci0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IHgsICJQIjogcCwgIlYiOiB2YWx1 ZX0pWzBdCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdC5zaGFwZSwgKDExLCkgKiBkaW0p Ci0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdC5kdHlwZSwgbnAuZmxvYXQzMikKLS0KLSAg ICAgZGVmIHRlc3RfY29uc3RhbnRfb2Zfc2hhcGUoc2VsZik6Ci0gICAgICAgICBYID0gbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQotICAgICAgICAg WSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkK LUBAIC01MzczLDEyNCArNDk2NCw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5p dHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMiwgLTEsIC0xKToKLSAg ICAgICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290W2ldLCBleHBlY3RlZFtpXSkKLSAKLS0gICAg QHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAg ICAgICAgKFsiYWJjIiwgImRlZiJdLCBbIi5jb20iLCAiLm5ldCJdLCBbImFiYy5jb20iLCAiZGVm Lm5ldCJdLCAoMiwpKSwKLS0gICAgICAgICAgICAoWyJjYXQiLCAiZG9nIiwgInNuYWtlIl0sIFsi cyJdLCBbImNhdHMiLCAiZG9ncyIsICJzbmFrZXMiXSwgKDMsKSksCi0tICAgICAgICAgICAgKCJj YXQiLCAicyIsICJjYXRzIiwgKCkpLAotLSAgICAgICAgICAgIChbImEiLCAiw58iLCAieSJdLCBb ImEiLCAiw58iLCAieSJdLCBbImFhIiwgIsOfw58iLCAieXkiXSwgKDMsKSksCi0tICAgICAgICBd Ci0tICAgICkKLS0gICAgZGVmIHRlc3Rfc3RyaW5nX2NvbmNhdChzZWxmLCBhLCBiLCBleHBlY3Rl ZCwgZXhwZWN0ZWRfc2hhcGUpOgotLSAgICAgICAgQSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IkEiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5vbmUpCi0tICAgICAgICBCID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiQiIsIFRlbnNvclByb3RvLlNUUklORywgTm9uZSkKLS0gICAgICAgIFkgPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25lKQotLSAg ICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgiU3RyaW5nQ29uY2F0IiwgaW5wdXRzPVsiQSIsICJCIl0s IG91dHB1dHM9WyJZIl0pCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChb bm9kZV0sICJnIiwgW0EsIEJdLCBbWV0pKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVh dG9yKG1vZGVsKQotLSAgICAgICAgcmVzdWx0LCAqXyA9IHJlZi5ydW4oTm9uZSwgeyJBIjogbnAu YXJyYXkoYSksICJCIjogbnAuYXJyYXkoYil9KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRf YXJyYXlfZXF1YWwocmVzdWx0LCBleHBlY3RlZCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVz dWx0LmR0eXBlLmtpbmQsIHsiTyIsICJVIn0pCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl c3VsdC5zaGFwZSwgZXhwZWN0ZWRfc2hhcGUpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFt ZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAgICAg ICAgICAgWyIxLDIsMyIsICI0LDUsNiJdLAotLSAgICAgICAgICAgICAgICAiLCIsCi0tICAgICAg ICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAgICAgIFtbIjEiLCAiMiIsICIzIl0sIFsiNCIs ICI1IiwgIjYiXV0sCi0tICAgICAgICAgICAgICAgIFszLCAzXSwKLS0gICAgICAgICAgICApLAot LSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgWyIxLCIsICI0LDYiLCAiIl0sCi0tICAg ICAgICAgICAgICAgICIsIiwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAg ICAgW1siMSIsICIiXSwgWyI0IiwgIjYiXSwgWyIiLCAiIl1dLAotLSAgICAgICAgICAgICAgICBb MiwgMiwgMV0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAg ICAgIFsiMSIsICI0LDYiLCAiNCw1LDYiXSwKLS0gICAgICAgICAgICAgICAgIiwiLAotLSAgICAg ICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAgICBbWyIxIiwgIiJdLCBbIjQiLCAiNiJdLCBb IjQiLCAiNSw2Il1dLAotLSAgICAgICAgICAgICAgICBbMSwgMiwgMl0sCi0tICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFtbIjEsIiwgIjQsNiIsICI0LDUs NiJdLCBbIjEsIiwgIjQsNiIsICI0LDUsNiJdXSwKLS0gICAgICAgICAgICAgICAgIiwiLAotLSAg ICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAg ICAgICBbWyIxIiwgIiIsICIiXSwgWyI0IiwgIjYiLCAiIl0sIFsiNCIsICI1IiwgIjYiXV0sCi0t ICAgICAgICAgICAgICAgICAgICBbWyIxIiwgIiIsICIiXSwgWyI0IiwgIjYiLCAiIl0sIFsiNCIs ICI1IiwgIjYiXV0sCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFtbMiwg MiwgM10sIFsyLCAyLCAzXV0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAg ICAgICAgICAgICAgIFsiaGVsbG8gd29ybGQgISIsICIgIGhlbGxvICAgd29ybGQgISIsICIgaGVs bG8gd29ybGQgICAhICJdLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAg ICBOb25lLAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBbImhlbGxv IiwgIndvcmxkIiwgIiEiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQi LCAiISJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCi0t ICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFszLCAzLCAzXSwKLS0gICAgICAg ICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgWyJoZWxsbyB3b3JsZCAh IiwgIiAgaGVsbG8gICB3b3JsZCAhIiwgIiBoZWxsbyB3b3JsZCAgICEgIl0sCi0tICAgICAgICAg ICAgICAgICIiLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKLS0gICAgICAgICAg ICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAotLSAgICAgICAgICAgICAgICAgICAg WyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgICAgIFszLCAzLCAzXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAg ICAgICAgICAgICAgWyJvLW4tbi0teC0iLCAiby1uLS0tLW54Il0sCi0tICAgICAgICAgICAgICAg ICItIiwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgW1sibyIsICJu IiwgIm4iLCAiIiwgIngiLCAiIl0sIFsibyIsICJuIiwgIiIsICIiLCAiIiwgIm54Il1dLAotLSAg ICAgICAgICAgICAgICBbNiwgNl0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0t ICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAiICIsCi0tICAgICAgICAgICAg ICAgIDIsCi0tICAgICAgICAgICAgICAgIG5wLmFycmF5KFtdKS5yZXNoYXBlKCgwLCAwKSksCi0t ICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICBdCi0tICAgICkK LS0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0KAotLSAgICAgICAgc2VsZiwKLS0gICAgICAgIHgs Ci0tICAgICAgICBkZWxpbWl0ZXIsCi0tICAgICAgICBtYXhzcGxpdCwKLS0gICAgICAgIGV4cGVj dGVkX3NwbGl0LAotLSAgICAgICAgZXhwZWN0ZWRfbnVtX3NwbGl0cywKLS0gICAgKToKLS0gICAg ICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAo Tm9uZSkpCi0tICAgICAgICBTcGxpdHMgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJTcGxpdHMi LCBUZW5zb3JQcm90by5TVFJJTkcsIChOb25lKSkKLS0gICAgICAgIE1heFNwbGl0cyA9IG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIk1heFNwbGl0cyIsIFRlbnNvclByb3RvLklOVDMyLCAoTm9uZSkp Ci0tICAgICAgICBub2RlID0gbWFrZV9ub2RlKAotLSAgICAgICAgICAgICJTdHJpbmdTcGxpdCIs Ci0tICAgICAgICAgICAgaW5wdXRzPVsiWCJdLAotLSAgICAgICAgICAgIG91dHB1dHM9WyJTcGxp dHMiLCAiTWF4U3BsaXRzIl0sCi0tICAgICAgICAgICAgZGVsaW1pdGVyPWRlbGltaXRlciwKLS0g ICAgICAgICAgICBtYXhzcGxpdD1tYXhzcGxpdCwKLS0gICAgICAgICkKLS0gICAgICAgIG1vZGVs ID0gbWFrZV9tb2RlbChtYWtlX2dyYXBoKFtub2RlXSwgImciLCBbWF0sIFtTcGxpdHMsIE1heFNw bGl0c10pKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAg ICAgeCA9IG5wLmFycmF5KHgsIGR0eXBlPW9iamVjdCkKLS0gICAgICAgIHJlc3VsdCwgbnVtX3Nw bGl0cywgKl8gPSByZWYucnVuKE5vbmUsIHsiWCI6IHh9KQotLSAgICAgICAgbnAudGVzdGluZy5h c3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0LCBucC5hcnJheShleHBlY3RlZF9zcGxpdCwgZHR5cGU9 b2JqZWN0KSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKAotLSAgICAg ICAgICAgIG51bV9zcGxpdHMsIG5wLmFycmF5KGV4cGVjdGVkX251bV9zcGxpdHMsIGR0eXBlPW5w LmludDY0KQotLSAgICAgICAgKQotLQotICAgICBkZWYgdGVzdF9xbGluZWFyY29udl9pbnQ4KHNl bGYpOgotICAgICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgKLSAgICAgICAgICAgICAiUUxpbmVhck1h dE11bCIsCi1AQCAtNTU2MSw0NCArNTAzNCw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0 b3IodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgICAgIG5wLmFycmF5KFtbNDEsIC0xMiwg LTldLCBbMSwgLTc1LCAyMF1dLCBkdHlwZT1ucC5pbnQ4KSwgZ290WzBdCi0gICAgICAgICApCi0g Ci0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwot LSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgWyJ3d3cuZ29vZ2xlLmNvbSIsICJ3d3cu ZmFjZWJvb2suY29tIiwgInd3dy5iYmMuY28udWsiXSwKLS0gICAgICAgICAgICAgICAgciJ3d3dc Lltcdy4tXStcLlxiY29tXGIiLAotLSAgICAgICAgICAgICAgICBbVHJ1ZSwgVHJ1ZSwgRmFsc2Vd LAotLSAgICAgICAgICAgICAgICAoMywpLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAg KAotLSAgICAgICAgICAgICAgICBbWyJPbm54IiwgInRlbnNvcmZsb3ciLCAiTnVtcHkiXSwgWyJQ eXRvcmNoIiwgIkN5dGhvbiIsICJudW1iYSJdXSwKLS0gICAgICAgICAgICAgICAgciJeW0EtWl1b YS16XSokIiwKLS0gICAgICAgICAgICAgICAgW1tUcnVlLCBGYWxzZSwgVHJ1ZV0sIFtUcnVlLCBU cnVlLCBGYWxzZV1dLAotLSAgICAgICAgICAgICAgICAoMiwgMyksCi0tICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAg ICJhY2NvdW50QGdtYWlsLmNvbSIsCi0tICAgICAgICAgICAgICAgICAgICAiYWNjb3VudEBob3Rt YWlsLmNvbSIsCi0tICAgICAgICAgICAgICAgICAgICAibm90IGVtYWlsIiwKLS0gICAgICAgICAg ICAgICAgICAgICJhY2NvdW50MkB5YWhvby5jb20iLAotLSAgICAgICAgICAgICAgICBdLAotLSAg ICAgICAgICAgICAgICByIihcV3xeKVtcdy5cLV17MCwyNX1AKHlhaG9vfGdtYWlsKVwuY29tKFxX fCQpIiwKLS0gICAgICAgICAgICAgICAgW1RydWUsIEZhbHNlLCBGYWxzZSwgVHJ1ZV0sCi0tICAg ICAgICAgICAgICAgICg0LCksCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgIF0KLS0gICAgKQot LSAgICBkZWYgdGVzdF9yZWdleF9mdWxsX21hdGNoKHNlbGYsIHgsIHBhdHRlcm4sIGV4cGVjdGVk LCBleHBlY3RlZF9zaGFwZSk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi WCIsIFRlbnNvclByb3RvLlNUUklORywgTm9uZSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uQk9PTCwgTm9uZSkKLS0gICAgICAgIG5vZGUgPSBt YWtlX25vZGUoIlJlZ2V4RnVsbE1hdGNoIiwgaW5wdXRzPVsiWCJdLCBvdXRwdXRzPVsiWSJdLCBw YXR0ZXJuPXBhdHRlcm4pCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChb bm9kZV0sICJnIiwgW1hdLCBbWV0pKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9y KG1vZGVsKQotLSAgICAgICAgcmVzdWx0LCAqXyA9IHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXJy YXkoeCl9KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0LCBl eHBlY3RlZCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmR0eXBlLmtpbmQsICJi IikKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnNoYXBlLCBleHBlY3RlZF9zaGFw ZSkKLS0KLSAgICAgZGVmIHRlc3RfcmVnZXhfaW52YWxpZF9wYXR0ZXJuKHNlbGYpOgotICAgICAg ICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5v bmUpCi0gICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3Rv LkJPT0wsIE5vbmUpCi1AQCAtNTYwOCwyMjAgKzUwNDMsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNl RXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS YWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgcmVmLnJ1bihOb25lLCB7IlgiOiBucC5h cnJheShbIngiXSl9KQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFu ZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFRlbnNvclBy b3RvLlVJTlQyLAotLSAgICAgICAgICAgICAgICBbLTEsIDAsIDEuNSwgMiwgMy4zLCAxMCwgMjAs IDQwXSwKLS0gICAgICAgICAgICAgICAgWzAsIDAsIDIsIDIsIDQsIDYsIDYsIDZdLAotLSAgICAg ICAgICAgICksCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQyLCBbLTEsIDAsIDEuNSwg MiwgMy4zLCAxMCwgNDBdLCBbMCwgMCwgMiwgMiwgNCwgNiwgNl0pLAotLSAgICAgICAgICAgIChU ZW5zb3JQcm90by5VSU5UMiwgWzBdLCBbMF0pLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAg ICAgICAgVGVuc29yUHJvdG8uSU5UMiwKLS0gICAgICAgICAgICAgICAgWy0yMCwgLTE0LjUsIDAs IDEuNSwgMiwgMy4zLCAxMCwgMjBdLAotLSAgICAgICAgICAgICAgICBbLTQsIC00LCAwLCAyLCAy LCAyLCAyLCAyXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAg ICAgICAgVGVuc29yUHJvdG8uSU5UMiwKLS0gICAgICAgICAgICAgICAgWy0yMCwgLTE0LjUsIDAs IDEuNSwgMiwgMy4zLCAxMF0sCi0tICAgICAgICAgICAgICAgIFstNCwgLTQsIDAsIDIsIDIsIDIs IDJdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLklOVDIsIFsw XSwgWzBdKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9xdWFudGl6ZV9saW5l YXJfaW50MihzZWxmLCBxdHlwZSwgZGF0YSwgZXhwZWN0ZWQpOgotLSAgICAgICAgWCA9IG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQotLSAgICAg ICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05v bmVdKQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK LS0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsic2NhbGUiXSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2NhbGUiLCBUZW5zb3JQcm90by5G TE9BVCwgWzFdLCBbMi4wXSksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAg ICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICAgICAg WyJ6ZXJvIl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInpl cm8iLCBxdHlwZSwgWzFdLCBbMF0pLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiUXVhbnRpemVMaW5lYXIiLCBbIlgiLCAic2NhbGUiLCAi emVybyJdLCBbIlQiXSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRlcXVhbnRp emVMaW5lYXIiLCBbIlQiLCAic2NhbGUiXSwgWyJZIl0sIGF4aXM9MCksCi0tICAgICAgICAgICAg ICAgIF0sCi0tICAgICAgICAgICAgICAgICJnIiwKLS0gICAgICAgICAgICAgICAgW1hdLAotLSAg ICAgICAgICAgICAgICBbWV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICAgICAg cmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgZ290ID0gcmVmLnJ1bihO b25lLCB7IlgiOiBucC5hc2FycmF5KGRhdGEpfSkKLS0gICAgICAgIGFzc2VydF9hbGxjbG9zZShn b3RbMF0sIGV4cGVjdGVkKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4 cGFuZCgKLS0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAotLSAgICAgICAgICAgIChUZW5zb3JQ cm90by5GTE9BVCwgVGVuc29yUHJvdG8uRkxPQVQxNiksCi0tICAgICAgICAgICAgKFRlbnNvclBy b3RvLlVJTlQyLCBUZW5zb3JQcm90by5JTlQyKSwKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBk ZWYgdGVzdF9jYXN0X2ludDJfb3V0cHV0KHNlbGYsIGNhc3RfZnJvbSwgY2FzdF90byk6Ci0tICAg ICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIGNhc3RfZnJvbSwgW05vbmVdKQot LSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBjYXN0X3RvLCBbTm9uZV0p Ci0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0 IiwgWyJYIl0sIFsiWSJdLCB0bz1jYXN0X3RvKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICAgICAgImciLAotLSAgICAgICAgICAgICAgICBbWF0sCi0tICAgICAgICAgICAgICAg IFtZXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICApCi0tICAgICAgICByZWYgPSBSZWZlcmVu Y2VFdmFsdWF0b3IobW9kZWwpCi0tICAgICAgICBkYXRhID0gbnAuYXJyYXkoCi0tICAgICAgICAg ICAgWzAsIDEsIDIuNCwgMi42LCA0LCAxMF0sCi0tICAgICAgICAgICAgZHR5cGU9b25ueC5oZWxw ZXIudGVuc29yX2R0eXBlX3RvX25wX2R0eXBlKGNhc3RfZnJvbSksCi0tICAgICAgICApCi0tICAg ICAgICBleHBlY3RlZCA9IGRhdGEuYXN0eXBlKG9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19u cF9kdHlwZShjYXN0X3RvKSkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0 YX0pCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdFswXS50b2xpc3QoKSwgZXhwZWN0ZWQu dG9saXN0KCkpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAot LSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJ TlQyLCBUZW5zb3JQcm90by5JTlQyKSwKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxPQVQs IFRlbnNvclByb3RvLkZMT0FUMTYpLAotLSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0ZXN0 X2Nhc3RfaW50Ml9pbnB1dCgKLS0gICAgICAgIHNlbGYsIGNhc3RfZnJvbTogVGVuc29yUHJvdG8u RGF0YVR5cGUsIGNhc3RfdG86IFRlbnNvclByb3RvLkRhdGFUeXBlCi0tICAgICk6Ci0tICAgICAg ICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIGNhc3RfZnJvbSwgW05vbmVdKQotLSAg ICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBjYXN0X3RvLCBbTm9uZV0pCi0t ICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0g ICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0Iiwg WyJYIl0sIFsiWSJdLCB0bz1UZW5zb3JQcm90by5GTE9BVCksCi0tICAgICAgICAgICAgICAgIF0s Ci0tICAgICAgICAgICAgICAgICJnIiwKLS0gICAgICAgICAgICAgICAgW1hdLAotLSAgICAgICAg ICAgICAgICBbWV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICAgICAgcmVmID0g UmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KHJhbmdl KDIpLCBkdHlwZT1ucC5mbG9hdDMyKQotLSAgICAgICAgZXhwZWN0ZWQgPSBkYXRhLmFzdHlwZShv bm54LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoY2FzdF9mcm9tKSkKLS0gICAgICAg IGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCi0tICAgICAgICBucC50ZXN0aW5nLmFz c2VydF9hcnJheV9lcXVhbChnb3RbMF0sIGV4cGVjdGVkKQotLQotLSAgICBAcGFyYW1ldGVyaXpl ZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAg ICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQ0LAotLSAgICAgICAgICAgICAgICBbLTEsIDAs IDEuNSwgMiwgMy4zLCAxMCwgMjAsIDQwXSwKLS0gICAgICAgICAgICAgICAgWzAsIDAsIDIsIDIs IDQsIDEwLCAyMCwgMzBdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKFRlbnNvclBy b3RvLlVJTlQ0LCBbLTEsIDAsIDEuNSwgMiwgMy4zLCAxMCwgNDBdLCBbMCwgMCwgMiwgMiwgNCwg MTAsIDMwXSksCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBbMF0sIFswXSksCi0t ICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ0LAotLSAgICAg ICAgICAgICAgICBbLTIwLCAtMTQuNSwgMCwgMS41LCAyLCAzLjMsIDEwLCAyMF0sCi0tICAgICAg ICAgICAgICAgIFstMTYsIC0xNCwgMCwgMiwgMiwgNCwgMTAsIDE0XSwKLS0gICAgICAgICAgICAp LAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNCwKLS0g ICAgICAgICAgICAgICAgWy0yMCwgLTE0LjUsIDAsIDEuNSwgMiwgMy4zLCAxMF0sCi0tICAgICAg ICAgICAgICAgIFstMTYsIC0xNCwgMCwgMiwgMiwgNCwgMTBdLAotLSAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgKFRlbnNvclByb3RvLklOVDQsIFswXSwgWzBdKSwKLS0gICAgICAgIF0KLS0g ICAgKQotLSAgICBkZWYgdGVzdF9xdWFudGl6ZV9saW5lYXJfaW50NChzZWxmLCBxdHlwZSwgZGF0 YSwgZXhwZWN0ZWQpOgotLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBU ZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQotLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQotLSAgICAgICAgbW9kZWwgPSBt YWtlX21vZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAg ICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAg ICAgICAgICAgICAgIFsic2NhbGUiXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1t YWtlX3RlbnNvcigic2NhbGUiLCBUZW5zb3JQcm90by5GTE9BVCwgWzFdLCBbMi4wXSksCi0tICAg ICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAg ICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgW10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgWyJ6ZXJvIl0sCi0tICAgICAgICAgICAg ICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInplcm8iLCBxdHlwZSwgWzFdLCBbMF0pLAot LSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi UXVhbnRpemVMaW5lYXIiLCBbIlgiLCAic2NhbGUiLCAiemVybyJdLCBbIlQiXSksCi0tICAgICAg ICAgICAgICAgICAgICBtYWtlX25vZGUoIkRlcXVhbnRpemVMaW5lYXIiLCBbIlQiLCAic2NhbGUi XSwgWyJZIl0sIGF4aXM9MCksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAg ICJnIiwKLS0gICAgICAgICAgICAgICAgW1hdLAotLSAgICAgICAgICAgICAgICBbWV0sCi0tICAg ICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9y KG1vZGVsKQotLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBucC5hc2FycmF5KGRh dGEpfSkKLS0gICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQotLQotLSAg ICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGl0ZXJ0b29s cy5wcm9kdWN0KAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5GTE9BVCwgVGVuc29yUHJvdG8u RkxPQVQxNiksCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90by5J TlQ0KSwKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBkZWYgdGVzdF9jYXN0X2ludDRfb3V0cHV0 KHNlbGYsIGNhc3RfZnJvbSwgY2FzdF90byk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWCIsIGNhc3RfZnJvbSwgW05vbmVdKQotLSAgICAgICAgWSA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlkiLCBjYXN0X3RvLCBbTm9uZV0pCi0tICAgICAgICBtb2RlbCA9IG1ha2Vf bW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWSJdLCB0bz1jYXN0 X3RvKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgImciLAotLSAgICAg ICAgICAgICAgICBbWF0sCi0tICAgICAgICAgICAgICAgIFtZXSwKLS0gICAgICAgICAgICApCi0t ICAgICAgICApCi0tICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCi0tICAg ICAgICBkYXRhID0gbnAuYXJyYXkoCi0tICAgICAgICAgICAgWzAsIDEsIDIuNCwgMi42LCA0LCAx MF0sCi0tICAgICAgICAgICAgZHR5cGU9b25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3RvX25wX2R0 eXBlKGNhc3RfZnJvbSksCi0tICAgICAgICApCi0tICAgICAgICBleHBlY3RlZCA9IGRhdGEuYXN0 eXBlKG9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShjYXN0X3RvKSkKLS0gICAg ICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCi0tICAgICAgICBzZWxmLmFzc2Vy dEVxdWFsKGdvdFswXS50b2xpc3QoKSwgZXhwZWN0ZWQudG9saXN0KCkpCi0tCi0tICAgIEBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgaXRlcnRvb2xzLnByb2R1 Y3QoCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90by5JTlQ0KSwK LS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FUMTYpLAot LSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2Nhc3RfaW50NF9pbnB1dCgKLS0gICAg ICAgIHNlbGYsIGNhc3RfZnJvbTogVGVuc29yUHJvdG8uRGF0YVR5cGUsIGNhc3RfdG86IFRlbnNv clByb3RvLkRhdGFUeXBlCi0tICAgICk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygiWCIsIGNhc3RfZnJvbSwgW05vbmVdKQotLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlkiLCBjYXN0X3RvLCBbTm9uZV0pCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9k ZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWSJdLCB0bz1UZW5zb3JQ cm90by5GTE9BVCksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICJnIiwK LS0gICAgICAgICAgICAgICAgW1hdLAotLSAgICAgICAgICAgICAgICBbWV0sCi0tICAgICAgICAg ICAgKQotLSAgICAgICAgKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVs KQotLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KHJhbmdlKDcpLCBkdHlwZT1ucC5mbG9hdDMyKQot LSAgICAgICAgZXhwZWN0ZWQgPSBkYXRhLmFzdHlwZShvbm54LmhlbHBlci50ZW5zb3JfZHR5cGVf dG9fbnBfZHR5cGUoY2FzdF9mcm9tKSkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJY IjogZGF0YX0pCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hcnJheV9lcXVhbChnb3RbMF0s IGV4cGVjdGVkKQotLQotICAgICBkZWYgdGVzdF9hX2Z1bmN0aW9uX2NhbGxpbmdfYV9mdW5jdGlv bl9vbmNlKHNlbGYpOgotICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBU ZW5zb3JQcm90by5GTE9BVCwgWyJOIl0pCi0gICAgICAgICBvdXRwdXQgPSBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgWyJOIl0pCi1AQCAtNjA1NCw5 NCArNTI3NSw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENh c2UpOgotICAgICAgICAgZm9yIHYgaW4gb2luZi5mdW5jdGlvbnNfLnZhbHVlcygpOgotICAgICAg ICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2LCBNeVJlZmVyZW5jZUV2YWx1YXRvcikKLSAK LS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0t ICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk4iLCAwLjIzKSwKLS0gICAgICAgICAgICAoIkZMT0FU OEU0TTNGTlVaIiwgMC4yMyksCi0tICAgICAgICAgICAgKCJGTE9BVDhFNU0yIiwgMC44NSksCi0t ICAgICAgICAgICAgKCJGTE9BVDhFNU0yRk5VWiIsIDAuODUpLAotLSAgICAgICAgICAgICgiRE9V QkxFIiwgMCksCi0tICAgICAgICAgICAgKCJGTE9BVCIsIDApLAotLSAgICAgICAgICAgICgiRkxP QVQxNiIsIDJlLTMpLAotLSAgICAgICAgICAgICgiQkZMT0FUMTYiLCAyZS0yKSwKLS0gICAgICAg IF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9hZGRfY3VzdG9tX2R0eXBlKHNlbGYsIHN0eXBlOiBz dHIsIGF0b2w6IGZsb2F0KToKLS0gICAgICAgIGl0eXBlID0gZ2V0YXR0cihUZW5zb3JQcm90bywg c3R5cGUpCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2Rl KCJDYXN0IiwgWyJYIl0sIFsiWGMiXSwgdG89aXR5cGUpLAotLSAgICAgICAgICAgICAgICAgICAg bWFrZV9ub2RlKCJDYXN0IiwgWyJZIl0sIFsiWWMiXSwgdG89aXR5cGUpLAotLSAgICAgICAgICAg ICAgICAgICAgbWFrZV9ub2RlKCJBZGQiLCBbIlhjIiwgIlljIl0sIFsiWmMiXSksCi0tICAgICAg ICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlpjIl0sIFsiWiJdLCB0bz1UZW5zb3JQ cm90by5GTE9BVCksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICJuZCIs Ci0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKLS0g ICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90 by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIloiLCBUZW5zb3JQcm90by5GTE9B VCwgW05vbmUsIE5vbmUsIE5vbmVdKV0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIDE4KV0sCi0tICAgICAgICAgICAgaXJfdmVy c2lvbj05LAotLSAgICAgICAgKQotLQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9y KG1vZGVsLCB2ZXJib3NlPTApCi0tCi0tICAgICAgICB4ID0gKG5wLmFyYW5nZSgxOCkgLyA2KS5y ZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCi0tICAgICAgICB5ID0gKG5wLmFy YW5nZSgxOCkgLyA5KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCi0tICAg ICAgICBmZWVkcyA9IGRpY3QoWD14LCBZPXkpCi0tICAgICAgICBleHBlY3RlZCA9IHggKyB5Ci0t ICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIGZlZWRzKVswXQotLSAgICAgICAgYXNzZXJ0X2Fs bGNsb3NlKGdvdCwgZXhwZWN0ZWQsIGF0b2w9YXRvbCkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu cGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKCJET1VCTEUi LCksCi0tICAgICAgICAgICAgKCJGTE9BVCIsKSwKLS0gICAgICAgICAgICAoIkZMT0FUMTYiLCks Ci0tICAgICAgICAgICAgKCJCRkxPQVQxNiIsKSwKLS0gICAgICAgICAgICAoIkZMT0FUOEU0TTNG TiIsKSwKLS0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTlVaIiwpLAotLSAgICAgICAgICAgICgi RkxPQVQ4RTVNMiIsKSwKLS0gICAgICAgICAgICAoIkZMT0FUOEU1TTJGTlVaIiwpLAotLSAgICAg ICAgICAgICgiSU5UNCIsKSwKLS0gICAgICAgICAgICAoIlVJTlQ0IiwpLAotLSAgICAgICAgICAg ICgiSU5UMiIsKSwKLS0gICAgICAgICAgICAoIlVJTlQyIiwpLAotLSAgICAgICAgXQotLSAgICAp Ci0tICAgIGRlZiB0ZXN0X2NtcF9jdXN0b21fZHR5cGUoc2VsZiwgc3R5cGUpOgotLSAgICAgICAg aXR5cGUgPSBnZXRhdHRyKFRlbnNvclByb3RvLCBzdHlwZSkKLS0gICAgICAgIG1vZGVsID0gbWFr ZV9tb2RlbCgKLS0gICAgICAgICAgICBtYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlgiXSwgWyJYYyJdLCB0bz1p dHlwZSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlkiXSwgWyJZ YyJdLCB0bz1pdHlwZSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkdyZWF0ZXJP ckVxdWFsIiwgWyJYYyIsICJZYyJdLCBbIlpjIl0pLAotLSAgICAgICAgICAgICAgICAgICAgbWFr ZV9ub2RlKCJDYXN0IiwgWyJaYyJdLCBbIloiXSwgdG89VGVuc29yUHJvdG8uQk9PTCksCi0tICAg ICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICJuZCIsCi0tICAgICAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5z b3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKLS0gICAgICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5v bmUsIE5vbmVdKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIloiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5v bmVdKV0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVttYWtl X29wc2V0aWQoIiIsIDE4KV0sCi0tICAgICAgICAgICAgaXJfdmVyc2lvbj05LAotLSAgICAgICAg KQotLQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLQotLSAgICAg ICAgeCA9IChucC5hcmFuZ2UoMTgpIC8gMTgpLnJlc2hhcGUoKDIsIDMsIDMpKS5hc3R5cGUobnAu ZmxvYXQzMikKLS0gICAgICAgIHkgPSAoKG5wLmFyYW5nZSgxOCkgLSA5KSAvIDE4KS5yZXNoYXBl KCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCi0tICAgICAgICBmZWVkcyA9IGRpY3QoWD14 LCBZPXkpCi0tICAgICAgICBleHBlY3RlZCA9IHggPj0geQotLSAgICAgICAgZ290ID0gcmVmLnJ1 bihOb25lLCBmZWVkcylbMF0KLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGdvdCwg ZXhwZWN0ZWQpCi0tCi0gICAgIGRlZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHNfNGQoc2VsZik6Ci0g ICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCi0gICAgICAgICAgICAgbWFrZV9ncmFwaCgKLWRp ZmYgLS1naXQgYS9vbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkgYi9vbm54L3Rlc3Qvc2NoZW1hX3Rl c3QucHkKLWluZGV4IGY4YjNmOGE2NS4uNzEwYjYwMmEzIDEwMDY0NAotLS0tIGEvb25ueC90ZXN0 L3NjaGVtYV90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkKLUBAIC03LDgg KzcsNiBAQCBpbXBvcnQgY29udGV4dGxpYgotIGltcG9ydCB1bml0dGVzdAotIGZyb20gdHlwaW5n IGltcG9ydCBUWVBFX0NIRUNLSU5HCi0gCi0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLS0KLSBpbXBv cnQgb25ueAotIGZyb20gb25ueCBpbXBvcnQgZGVmcwotIAotQEAgLTI0NywzNCArMjQ1LDYgQEAg Y2xhc3MgVGVzdEZvcm1hbFBhcmFtZXRlcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICAp Ci0gCi0gCi0tY2xhc3MgVGVzdFR5cGVDb25zdHJhaW50UGFyYW0odW5pdHRlc3QuVGVzdENhc2Up OgotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsK LS0gICAgICAgICAgICAoInNpbmdsZV90eXBlIiwgIlQiLCBbInRlbnNvcihmbG9hdCkiXSwgIlRl c3QgZGVzY3JpcHRpb24iKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICJkb3Vi bGVfdHlwZXMiLAotLSAgICAgICAgICAgICAgICAiVCIsCi0tICAgICAgICAgICAgICAgIFsidGVu c29yKGZsb2F0KSIsICJ0ZW5zb3IoaW50NjQpIl0sCi0tICAgICAgICAgICAgICAgICJUZXN0IGRl c2NyaXB0aW9uIiwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgidHVwbGUiLCAiVCIs ICgidGVuc29yKGZsb2F0KSIsICJ0ZW5zb3IoaW50NjQpIiksICJUZXN0IGRlc2NyaXB0aW9uIiks Ci0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfaW5pdCgKLS0gICAgICAgIHNlbGYs Ci0tICAgICAgICBfOiBzdHIsCi0tICAgICAgICB0eXBlX3BhcmFtX3N0cjogc3RyLAotLSAgICAg ICAgYWxsb3dlZF90eXBlczogU2VxdWVuY2Vbc3RyXSwKLS0gICAgICAgIGRlc2NyaXB0aW9uOiBz dHIsCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIHR5cGVfY29uc3RyYWludCA9IGRlZnMuT3BT Y2hlbWEuVHlwZUNvbnN0cmFpbnRQYXJhbSgKLS0gICAgICAgICAgICB0eXBlX3BhcmFtX3N0ciwg YWxsb3dlZF90eXBlcywgZGVzY3JpcHRpb24KLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LmRlc2NyaXB0aW9uLCBkZXNjcmlwdGlvbikKLS0gICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LmFsbG93ZWRfdHlwZV9zdHJzLCBs aXN0KGFsbG93ZWRfdHlwZXMpKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlX2NvbnN0 cmFpbnQudHlwZV9wYXJhbV9zdHIsIHR5cGVfcGFyYW1fc3RyKQotLQotLQotIGNsYXNzIFRlc3RB dHRyaWJ1dGUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgot ICAgICAgICAgbmFtZSA9ICJ0ZXN0X2F0dHIiCi1AQCAtMjk3LDE2OSArMjY3LDUgQEAgY2xhc3Mg VGVzdEF0dHJpYnV0ZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBzZWxmLmFzc2VydEVx dWFsKCJhdHRyMSBkZXNjcmlwdGlvbiIsIGF0dHJpYnV0ZS5kZXNjcmlwdGlvbikKLSAKLSAKLS1A cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAotLSAgICBbCi0tICAgICAgICAjIHJl Z2lzdGVyIHRvIGV4aXN0IGRvbWFpbgotLSAgICAgICAgewotLSAgICAgICAgICAgICJvcF90eXBl IjogIkN1c3RvbU9wIiwKLS0gICAgICAgICAgICAib3BfdmVyc2lvbiI6IDUsCi0tICAgICAgICAg ICAgIm9wX2RvbWFpbiI6ICIiLAotLSAgICAgICAgICAgICJ0cmFwX29wX3ZlcnNpb24iOiBbMSwg MiwgNiwgN10sCi0tICAgICAgICB9LAotLSAgICAgICAgIyByZWdpc3RlciB0byBuZXcgZG9tYWlu Ci0tICAgICAgICB7Ci0tICAgICAgICAgICAgIm9wX3R5cGUiOiAiQ3VzdG9tT3AiLAotLSAgICAg ICAgICAgICJvcF92ZXJzaW9uIjogNSwKLS0gICAgICAgICAgICAib3BfZG9tYWluIjogInRlc3Qi LAotLSAgICAgICAgICAgICJ0cmFwX29wX3ZlcnNpb24iOiBbMSwgMiwgNiwgN10sCi0tICAgICAg ICB9LAotLSAgICBdCi0tKQotLWNsYXNzIFRlc3RPcFNjaGVtYVJlZ2lzdGVyKHVuaXR0ZXN0LlRl c3RDYXNlKToKLS0gICAgb3BfdHlwZTogc3RyCi0tICAgIG9wX3ZlcnNpb246IGludAotLSAgICBv cF9kb21haW46IHN0cgotLSAgICAjIHJlZ2lzdGVyIHNvbWUgZmFrZSBzY2hlbWEgdG8gY2hlY2sg YmVoYXZpb3IKLS0gICAgdHJhcF9vcF92ZXJzaW9uOiBsaXN0W2ludF0KLS0KLS0gICAgZGVmIHNl dFVwKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICAjIEVuc3VyZSB0aGUgc2NoZW1hIGlzIHVucmVn aXN0ZXJlZAotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvbm54LmRlZnMuaGFzKHNlbGYub3Bf dHlwZSwgc2VsZi5vcF9kb21haW4pKQotLQotLSAgICBkZWYgdGVhckRvd24oc2VsZikgLT4gTm9u ZToKLS0gICAgICAgICMgQ2xlYW4gdXAgdGhlIHJlZ2lzdGVyZWQgc2NoZW1hCi0tICAgICAgICBm b3IgdmVyc2lvbiBpbiBbKnNlbGYudHJhcF9vcF92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb25dOgot LSAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5zdXBwcmVzcyhvbm54LmRlZnMuU2NoZW1hRXJy b3IpOgotLSAgICAgICAgICAgICAgICBvbm54LmRlZnMuZGVyZWdpc3Rlcl9zY2hlbWEoc2VsZi5v cF90eXBlLCB2ZXJzaW9uLCBzZWxmLm9wX2RvbWFpbikKLS0KLS0gICAgZGVmIHRlc3RfcmVnaXN0 ZXJfbXVsdGlfc2NoZW1hKHNlbGYpOgotLSAgICAgICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRy YXBfb3BfdmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uXToKLS0gICAgICAgICAgICBvcF9zY2hlbWEg PSBkZWZzLk9wU2NoZW1hKAotLSAgICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCi0tICAgICAg ICAgICAgICAgIHNlbGYub3BfZG9tYWluLAotLSAgICAgICAgICAgICAgICB2ZXJzaW9uLAotLSAg ICAgICAgICAgICkKLS0gICAgICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3Nj aGVtYSkKLS0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob25ueC5kZWZzLmhhcyhzZWxmLm9w X3R5cGUsIHZlcnNpb24sIHNlbGYub3BfZG9tYWluKSkKLS0gICAgICAgIGZvciB2ZXJzaW9uIGlu IFsqc2VsZi50cmFwX29wX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lvbl06Ci0tICAgICAgICAgICAg IyBBbHNvIG1ha2Ugc3VyZSB0aGUgYG9wX3NjaGVtYWAgaXMgYWNjZXNzaWJsZSBhZnRlciByZWdp c3RlcgotLSAgICAgICAgICAgIHJlZ2lzdGVyZWRfb3AgPSBvbm54LmRlZnMuZ2V0X3NjaGVtYSgK LS0gICAgICAgICAgICAgICAgb3Bfc2NoZW1hLm5hbWUsIHZlcnNpb24sIG9wX3NjaGVtYS5kb21h aW4KLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVt YSgKLS0gICAgICAgICAgICAgICAgc2VsZi5vcF90eXBlLAotLSAgICAgICAgICAgICAgICBzZWxm Lm9wX2RvbWFpbiwKLS0gICAgICAgICAgICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAgICApCi0t ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocmVnaXN0ZXJlZF9vcCksIHN0cihvcF9z Y2hlbWEpKQotLQotLSAgICBkZWYgdGVzdF91c2luZ190aGVfc3BlY2lmaWVkX3ZlcnNpb25faW5f b25ueF9jaGVjayhzZWxmKToKLS0gICAgICAgIGlucHV0ID0gZiIiIgotLSAgICAgICAgICAgIDwK LS0gICAgICAgICAgICAgICAgaXJfdmVyc2lvbjogNywKLS0gICAgICAgICAgICAgICAgb3BzZXRf aW1wb3J0OiBbCi0tICAgICAgICAgICAgICAgICAgICAie3NlbGYub3BfZG9tYWlufSIgOiB7c2Vs Zi5vcF92ZXJzaW9ufQotLSAgICAgICAgICAgICAgICBdCi0tICAgICAgICAgICAgPgotLSAgICAg ICAgICAgIGFncmFwaCAoZmxvYXRbTiwgMTI4XSBYLCBpbnQzMiBZKSA9PiAoZmxvYXRbTl0gWikK LS0gICAgICAgICAgICB7ewotLSAgICAgICAgICAgICAgICBaID0ge3NlbGYub3BfZG9tYWlufS57 c2VsZi5vcF90eXBlfTxhdHRyMT1bMSwyXT4oWCwgWSkKLS0gICAgICAgICAgICB9fQotLSAgICAg ICAgICAgIiIiCi0tICAgICAgICBtb2RlbCA9IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKGlucHV0 KQotLSAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKLS0gICAgICAgICAgICBzZWxm Lm9wX3R5cGUsCi0tICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCi0tICAgICAgICAgICAgc2Vs Zi5vcF92ZXJzaW9uLAotLSAgICAgICAgICAgIGlucHV0cz1bCi0tICAgICAgICAgICAgICAgIGRl ZnMuT3BTY2hlbWEuRm9ybWFsUGFyYW1ldGVyKCJpbnB1dDEiLCAiVCIpLAotLSAgICAgICAgICAg ICAgICBkZWZzLk9wU2NoZW1hLkZvcm1hbFBhcmFtZXRlcigiaW5wdXQyIiwgImludDMyIiksCi0t ICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBvdXRwdXRzPVsKLS0gICAgICAgICAgICAgICAg ZGVmcy5PcFNjaGVtYS5Gb3JtYWxQYXJhbWV0ZXIoIm91dHB1dDEiLCAiVCIpLAotLSAgICAgICAg ICAgIF0sCi0tICAgICAgICAgICAgdHlwZV9jb25zdHJhaW50cz1bKCJUIiwgWyJ0ZW5zb3IoZmxv YXQpIl0sICIiKV0sCi0tICAgICAgICAgICAgYXR0cmlidXRlcz1bCi0tICAgICAgICAgICAgICAg IGRlZnMuT3BTY2hlbWEuQXR0cmlidXRlKAotLSAgICAgICAgICAgICAgICAgICAgImF0dHIxIiwg ZGVmcy5PcFNjaGVtYS5BdHRyVHlwZS5JTlRTLCAiYXR0cjEgZGVzY3JpcHRpb24iCi0tICAgICAg ICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAgd2l0aCBz ZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKToKLS0gICAgICAg ICAgICBvbm54LmNoZWNrZXIuY2hlY2tfbW9kZWwobW9kZWwsIGNoZWNrX2N1c3RvbV9kb21haW49 VHJ1ZSkKLS0gICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQotLSAg ICAgICAgIyBUaGUgZmFrZSBzY2hlbWEgd2lsbCByYWlzZSBjaGVjayBleGNlcHRpb24gaWYgc2Vs ZWN0ZWQgaW4gY2hlY2tlcgotLSAgICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi50cmFwX29wX3Zl cnNpb246Ci0tICAgICAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYSgKLS0gICAgICAg ICAgICAgICAgZGVmcy5PcFNjaGVtYSgKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYub3BfdHlw ZSwKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAotLSAgICAgICAgICAgICAg ICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAgICAgICAgICAgIG91dHB1dHM9WwotLSAgICAgICAg ICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEuRm9ybWFsUGFyYW1ldGVyKCJvdXRwdXQxIiwg ImludDMyIiksCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICApCi0t ICAgICAgICAgICAgKQotLSAgICAgICAgb25ueC5jaGVja2VyLmNoZWNrX21vZGVsKG1vZGVsLCBj aGVja19jdXN0b21fZG9tYWluPVRydWUpCi0tCi0tICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3NjaGVt YV9yYWlzZXNfZXJyb3Jfd2hlbl9yZWdpc3RlcmluZ19hX3NjaGVtYV90d2ljZShzZWxmKToKLS0g ICAgICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCi0tICAgICAgICAgICAgc2VsZi5vcF90 eXBlLAotLSAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAotLSAgICAgICAgICAgIHNlbGYub3Bf dmVyc2lvbiwKLS0gICAgICAgICkKLS0gICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEo b3Bfc2NoZW1hKQotLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmRlZnMuU2No ZW1hRXJyb3IpOgotLSAgICAgICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2No ZW1hKQotLQotLSAgICBkZWYgdGVzdF9kZXJlZ2lzdGVyX3RoZV9zcGVjaWZpZWRfc2NoZW1hKHNl bGYpOgotLSAgICAgICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRyYXBfb3BfdmVyc2lvbiwgc2Vs Zi5vcF92ZXJzaW9uXToKLS0gICAgICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAot LSAgICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCi0tICAgICAgICAgICAgICAgIHNlbGYub3Bf ZG9tYWluLAotLSAgICAgICAgICAgICAgICB2ZXJzaW9uLAotLSAgICAgICAgICAgICkKLS0gICAg ICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0gICAgICAgICAg ICBzZWxmLmFzc2VydFRydWUob25ueC5kZWZzLmhhcyhvcF9zY2hlbWEubmFtZSwgdmVyc2lvbiwg b3Bfc2NoZW1hLmRvbWFpbikpCi0tICAgICAgICBvbm54LmRlZnMuZGVyZWdpc3Rlcl9zY2hlbWEo b3Bfc2NoZW1hLm5hbWUsIHNlbGYub3BfdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbikKLS0gICAg ICAgIGZvciB2ZXJzaW9uIGluIHNlbGYudHJhcF9vcF92ZXJzaW9uOgotLSAgICAgICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZShvbm54LmRlZnMuaGFzKG9wX3NjaGVtYS5uYW1lLCB2ZXJzaW9uLCBvcF9z Y2hlbWEuZG9tYWluKSkKLS0gICAgICAgICMgTWF5YmUgaGFzIGxlc3NlciBvcCB2ZXJzaW9uIGlu IHRyYXAgbGlzdAotLSAgICAgICAgaWYgb25ueC5kZWZzLmhhcyhvcF9zY2hlbWEubmFtZSwgc2Vs Zi5vcF92ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluKToKLS0gICAgICAgICAgICBzY2hlbWEgPSBv bm54LmRlZnMuZ2V0X3NjaGVtYSgKLS0gICAgICAgICAgICAgICAgb3Bfc2NoZW1hLm5hbWUsIHNl bGYub3BfdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbgotLSAgICAgICAgICAgICkKLS0gICAgICAg ICAgICBzZWxmLmFzc2VydExlc3Moc2NoZW1hLnNpbmNlX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lv bikKLS0KLS0gICAgZGVmIHRlc3RfZGVyZWdpc3Rlcl9zY2hlbWFfcmFpc2VzX2Vycm9yX3doZW5f b3BzY2hlbWFfZG9lc19ub3RfZXhpc3Qoc2VsZik6Ci0tICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0 UmFpc2VzKG9ubnguZGVmcy5TY2hlbWFFcnJvcik6Ci0tICAgICAgICAgICAgb25ueC5kZWZzLmRl cmVnaXN0ZXJfc2NoZW1hKHNlbGYub3BfdHlwZSwgc2VsZi5vcF92ZXJzaW9uLCBzZWxmLm9wX2Rv bWFpbikKLS0KLS0gICAgZGVmIHRlc3RfbGVnYWN5X3NjaGVtYV9hY2Nlc3NpYmxlX2FmdGVyX2Rl cmVnaXN0ZXIoc2VsZik6Ci0tICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAotLSAg ICAgICAgICAgIHNlbGYub3BfdHlwZSwKLS0gICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKLS0g ICAgICAgICAgICBzZWxmLm9wX3ZlcnNpb24sCi0tICAgICAgICApCi0tICAgICAgICBvbm54LmRl ZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0gICAgICAgIHNjaGVtYV9hID0gb25ueC5k ZWZzLmdldF9zY2hlbWEoCi0tICAgICAgICAgICAgb3Bfc2NoZW1hLm5hbWUsIG9wX3NjaGVtYS5z aW5jZV92ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluCi0tICAgICAgICApCi0tICAgICAgICBzY2hl bWFfYiA9IG9ubnguZGVmcy5nZXRfc2NoZW1hKG9wX3NjaGVtYS5uYW1lLCBvcF9zY2hlbWEuZG9t YWluKQotLQotLSAgICAgICAgZGVmIGZpbHRlcl9zY2hlbWEoc2NoZW1hcyk6Ci0tICAgICAgICAg ICAgcmV0dXJuIFtvcCBmb3Igb3AgaW4gc2NoZW1hcyBpZiBvcC5uYW1lID09IG9wX3NjaGVtYS5u YW1lXQotLQotLSAgICAgICAgc2NoZW1hX2MgPSBmaWx0ZXJfc2NoZW1hKG9ubnguZGVmcy5nZXRf YWxsX3NjaGVtYXMoKSkKLS0gICAgICAgIHNjaGVtYV9kID0gZmlsdGVyX3NjaGVtYShvbm54LmRl ZnMuZ2V0X2FsbF9zY2hlbWFzX3dpdGhfaGlzdG9yeSgpKQotLSAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChsZW4oc2NoZW1hX2MpLCAxKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2No ZW1hX2QpLCAxKQotLSAgICAgICAgIyBBdm9pZCBtZW1vcnkgcmVzaWR1ZSBhbmQgYWNjZXNzIHN0 b3JhZ2UgYXMgbXVjaCBhcyBwb3NzaWJsZQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIo c2NoZW1hX2EpLCBzdHIob3Bfc2NoZW1hKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry KHNjaGVtYV9iKSwgc3RyKG9wX3NjaGVtYSkpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0 cihzY2hlbWFfY1swXSksIHN0cihvcF9zY2hlbWEpKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh bChzdHIoc2NoZW1hX2RbMF0pLCBzdHIob3Bfc2NoZW1hKSkKLS0KLS0KLSBpZiBfX25hbWVfXyA9 PSAiX19tYWluX18iOgotICAgICB1bml0dGVzdC5tYWluKCkKLWRpZmYgLS1naXQgYS9vbm54L3Rl c3Qvc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkgYi9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNlX3Rl c3QucHkKLWluZGV4IGVlMjJjOGZmYi4uODQ5YWUwNDJhIDEwMDY0NAotLS0tIGEvb25ueC90ZXN0 L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNl X3Rlc3QucHkKLUBAIC0xMiw3ICsxMiw2IEBAIGZyb20gdHlwaW5nIGltcG9ydCBUWVBFX0NIRUNL SU5HLCBBbnkKLSBpbXBvcnQgbnVtcHkgYXMgbnAKLSBpbXBvcnQgcHl0ZXN0Ci0gZnJvbSBnb29n bGUucHJvdG9idWYgaW1wb3J0IHRleHRfZm9ybWF0Ci0tZnJvbSBwYXJhbWV0ZXJpemVkIGltcG9y dCBwYXJhbWV0ZXJpemVkCi0gCi0gaW1wb3J0IG9ubnguc2hhcGVfaW5mZXJlbmNlCi0gZnJvbSBv bm54IGltcG9ydCAoCi1AQCAtMjQ0LDg2ICsyNDMsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVu Y2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICBncmFwaCwgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMwLCA0LCA1KSldCi0g ICAgICAgICApCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJUcmFuc3Bvc2UiKSkKLS0gICAgZGVmIHRlc3RfdHJhbnNwb3NlKHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgWygiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNCkpXSwKLS0gICAgICAgICAgICBb bWFrZV9ub2RlKCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCi0t ICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIsIDQpKV0sCi0tICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiVHJhbnNwb3NlIikpCi0tICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9wcmVleGlzdGluZyhz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAotLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0s Ci0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJt PVsxLCAwLCAyXSldLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwg VGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMiwgNCkpXSwKLS0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKLS0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3Nj YWxhcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwK LS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0pXSwKLS0g ICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0KLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAotLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0g ICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IlRyYW5zcG9zZSIpKQotLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfcGFydGlhbChzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCi0tICAgICAg ICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAy XSldLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJv dG8uVU5ERUZJTkVELCAoMywgImEiLCAiYiIpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIsIDQpKV0s Ci0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCi0tICAgIGRlZiB0ZXN0X3RyYW5zcG9z ZV9wcmVleGlzdGluZ19pbmNvcnJlY3Rfc2hhcGUoc2VsZiwgKl8pIC0+IE5vbmU6Ci0tICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygiWCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgMywgNCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFuc3Bv c2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCi0tICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDUsIDUsIDUpKV0sCi0t ICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5j ZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQotLQotLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCi0tICAgIGRlZiB0 ZXN0X3RyYW5zcG9zZV9wcmVleGlzdGluZ19pbmNvcnJlY3RfdHlwZShzZWxmLCAqXykgLT4gTm9u ZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJY IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAgICAgICAgIFttYWtlX25v ZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKLS0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlNUUklORywgKDMs IDIsIDQpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNo YXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQotLQot LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikp Ci0tICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9pbmNvcnJlY3RfcmVwZWF0ZWRfcGVybShzZWxmLCAq XykgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAgICAgICAg IFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMV0pXSwK LS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz KG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3Jh cGgpCi0tCi0gICAgIGRlZiBfbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bigKLSAgICAg ICAgIHNlbGYsIHZlcnNpb24sIHNoYXBlMTogU2VxdWVuY2VbaW50XSwgc2hhcGUyOiBTZXF1ZW5j ZVtpbnRdCi0gICAgICkgLT4gTm9uZToKLUBAIC0zNDIsMjEgKzI2MSw2IEBAIGNsYXNzIFRlc3RT aGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK LSAgICAgICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIk1hdE11bCIpKQotLSAgICBkZWYgdGVzdF9tYXRtdWxfYWxsX2RpbXNfa25vd24oc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxs X2RpbXNfa25vd24odmVyc2lvbiwgKDIsKSwgKDIsKSkKLS0KLS0gICAgICAgIHNlbGYuX21ha2Vf bWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDQsIDIpLCAoMiwgNCkpCi0tICAg ICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg1LCAy KSwgKDIsIDQpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93 bih2ZXJzaW9uLCAoNSwgMiksICgyLCAxKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rl c3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDEsIDIpLCAoMiwgMykpCi0tICAgICAgICBzZWxm Ll9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgyLCksICgyLCAzKSkK LS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwg KDQsIDIpLCAoMiwpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19r bm93bih2ZXJzaW9uLCAoMSwgNCwgMiksICgzLCAyLCAzKSkKLS0gICAgICAgIHNlbGYuX21ha2Vf bWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDMsIDQsIDIpLCAoMywgMiwgMykp Ci0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24s ICg1LCAxLCA0LCAyKSwgKDEsIDMsIDIsIDMpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxf dGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNCwgMiksICgzLCAyLCAzKSkKLS0KLSAgICAg ZGVmIF9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24oCi0gICAgICAgICBzZWxmLCB2ZXJz aW9uLCBzaGFwZTE6IEFueSwgc2hhcGUyOiBBbnksIGV4cGVjdGVkX291dF9zaGFwZTogQW55Ci0g ICAgICkgLT4gTm9uZToKLUBAIC0zNjcsMTMxOCArMjcxLDM5IEBAIGNsYXNzIFRlc3RTaGFwZUlu ZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgKQotICAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVk X291dF9zaGFwZSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIk1hdE11bCIpKQotLSAgICBkZWYgdGVz dF9tYXRtdWxfYWxsb3dfdW5rbm93bihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAg ICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sIChOb25lLCks IChOb25lLCksICgpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtu b3duKHZlcnNpb24sICgzLCksIChOb25lLCksICgpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRt dWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICgyLCksICgyLCAiYSIpLCAoImEiLCkpCi0t ICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDQs IDIpLCAoMiwgImEiKSwgKDQsICJhIikpCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0 X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDQsIE5vbmUpLCAoMiwgImEiKSwgKDQsICJhIikpCi0t ICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDQs IE5vbmUpLCAoTm9uZSwgImEiKSwgKDQsICJhIikpCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11 bF90ZXN0X2FsbG93X3Vua25vd24oCi0tICAgICAgICAgICAgdmVyc2lvbiwgKDEsIDQsIDIpLCAo ImEiLCAyLCA1KSwgKCJhIiwgNCwgNSkKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX21ha2Vf bWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bigKLS0gICAgICAgICAgICB2ZXJzaW9uLCAoMSwgMywg NCwgMiksICgiYSIsIDIsIDUpLCAoMSwgMywgNCwgNSkKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoMywpLCBOb25lLCBO b25lKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNp b24sIE5vbmUsIE5vbmUsIE5vbmUpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJDYXN0IikpCi0tICAgIGRlZiB0ZXN0X2Nhc3Qoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAg IFttYWtlX25vZGUoIkNhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLlVJTlQ4KV0s Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiQ2FzdCIpKQotLSAgICBAdW5pdHRlc3Quc2tpcCgKLS0gICAgICAgICJJc3N1ZSAj NTk2MCIKLS0gICAgKSAgIyBGSVhNRSgjNTk2MCkgcHJvcGFnYXRlRWxlbVR5cGVGcm9tQXR0cmli dXRlVG9PdXRwdXQgZG9lcyBub3QgdmFsaWRhdGUgYWdhaW5zdCBvdXRwdXQgdHlwZSBjb25zdHJh aW50cwotLSAgICBkZWYgdGVzdF9jYXN0X3RvX2NvbXBsZXgoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZTogICMgbm9xYTogQVJHMDAyCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKLS0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90 by5DT01QTEVYMTI4KV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tCi0tICAgICAg ICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwg c2VsZi5faW5mZXJyZWQsIGdyYXBoKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiQ2FzdExpa2UiKSkKLS0gICAgZGVmIHRlc3RfY2FzdF9saWtlKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpLCAoInQi LCBUZW5zb3JQcm90by5GTE9BVDE2LCAoIk4iLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJDYXN0TGlrZSIsIFsieCIsICJ0Il0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5GTE9BVDE2LCAoMiwgNCwgMykpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJCaXRDYXN0IikpCi0t ICAgIGRlZiB0ZXN0X2JpdGNhc3Rfc2FtZV9zaXplKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 Ci0tICAgICAgICAjIFRlc3QgYml0Y2FzdCBiZXR3ZWVuIHR5cGVzIG9mIHNhbWUgc2l6ZSAoZmxv YXQzMiAtPiBpbnQzMikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAg ICAgIFttYWtlX25vZGUoIkJpdENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLklO VDMyKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMpKV0sCi0tICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQotLSAgICBkZWYgdGVzdF9iaXRjYXN0X3NjYWxhcihz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgIyBUZXN0IGJpdGNhc3Qgd2l0aCBz Y2FsYXIgaW5wdXQgKHNhbWUgc2l6ZSkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCi0tICAgICAg ICAgICAgW21ha2Vfbm9kZSgiQml0Q2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8u SU5UMzIpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoKSldLAotLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIkJpdENhc3QiKSkKLS0gICAgZGVmIHRlc3RfYml0Y2FzdF8xZChzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgIyBUZXN0IGJpdGNhc3Qgd2l0aCAxRCB0ZW5zb3Ig KGZsb2F0MzIgLT4gdWludDMyLCBzYW1lIHNpemUpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKV0s Ci0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiQml0Q2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVu c29yUHJvdG8uVUlOVDMyKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UMzIsICg4LCkp XSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJCaXRDYXN0IikpCi0tICAgIGRlZiB0ZXN0X2JpdGNhc3Rf ZG91YmxlX3RvX2ludDY0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICAjIFRl c3QgYml0Y2FzdCBiZXR3ZWVuIDY0LWJpdCB0eXBlcyAoZG91YmxlIC0+IGludDY0KQotLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5ET1VCTEUsICgzLCA1KSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkJpdENhc3Qi LCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLklOVDY0KV0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDMsIDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQot LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQot LSAgICBkZWYgdGVzdF9iaXRjYXN0X2ludDhfdG9fdWludDgoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgICMgVGVzdCBiaXRjYXN0IGJldHdlZW4gOC1iaXQgdHlwZXMgKGludDgg LT4gdWludDgpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLklOVDgsICg0LCA2KSldLAotLSAgICAgICAgICAgIFttYWtl X25vZGUoIkJpdENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLlVJTlQ4KV0sCi0t ICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDQsIDYpKV0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiQml0Q2FzdCIpKQotLSAgICBkZWYgdGVzdF9iaXRjYXN0X2Zsb2F0MTZfdG9faW50MTYoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgICMgVGVzdCBiaXRjYXN0IGJldHdlZW4g MTYtYml0IHR5cGVzIChmbG9hdDE2IC0+IGludDE2KQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVDE2LCAoMiwg MykpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJCaXRDYXN0IiwgWyJ4Il0sIFsieSJdLCB0 bz1UZW5zb3JQcm90by5JTlQxNildLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMTYsICgy LCAzKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQotLSAgICBkZWYgdGVzdF9jb2wy aW0oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5z b3JQcm90by5GTE9BVCwgKDEsIDUsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgICAgICgia2VybmVs X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAg ICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAg ICAgICAiQ29sMkltIiwgWyJpbnB1dCIsICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0s IFsib3V0cHV0Il0KLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcigib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg1LCA1 KSksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDIsKSwgKDEsIDUpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5G TE9BVCwgKDEsIDEsIDUsIDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMkltIikpCi0tICAg IGRlZiB0ZXN0X2NvbDJpbV9zdHJpZGVzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICAoImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA5LCA0KSksCi0tICAgICAg ICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAg ICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwK LS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9u b2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJbSIsCi0tICAgICAgICAgICAgICAgICAg ICBbImlucHV0IiwgIm91dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUiXSwKLS0gICAgICAgICAg ICAgICAgICAgIFsib3V0cHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPVsyLCAy XSwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cigib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg1LCA1KSksCi0tICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDIsKSwgKDMsIDMpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEs IDEsIDUsIDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMkltIikpCi0tICAgIGRlZiB0ZXN0 X2NvbDJpbV9wYWRzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoImlu cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1LCAxNSkpLAotLSAgICAgICAgICAgICAgICAo Im91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAgICAg ICAgKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAg ICAgICAgICAgICAgICAgICJDb2wySW0iLAotLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIs ICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAgICBb Im91dHB1dCJdLAotLSAgICAgICAgICAgICAgICAgICAgcGFkcz1bMCwgMSwgMCwgMV0sCi0tICAg ICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1 dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNSwgNSkpLAotLSAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCks ICgxLCA1KSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxLCA1LCA1 KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05O WF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQotLSAgICBkZWYgdGVzdF9jb2wyaW1f ZGlsYXRpb25zKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoImlucHV0 IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA0LCA1KSksCi0tICAgICAgICAgICAgICAgICgib3V0 cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgICAgICAo Imtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAg ICAgICAgICAgICAgIkNvbDJJbSIsCi0tICAgICAgICAgICAgICAgICAgICBbImlucHV0IiwgIm91 dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsib3V0 cHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICBkaWxhdGlvbnM9WzEsIDVdLAotLSAgICAgICAg ICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAg ICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDYpKSwKLS0gICAgICAgICAgICAgICAg bWFrZV90ZW5zb3IoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMiwg MikpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNiwgNikpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJDb2wySW0iKSkKLS0gICAgZGVmIHRlc3RfY29sMmltXzVkKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxLCAxMCwgMTIpKSwKLS0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSksCi0tICAgICAgICAgICAgICAgICgia2VybmVsX3No YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAg ICAiQ29sMkltIiwgWyJpbnB1dCIsICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0sIFsi b3V0cHV0Il0KLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcigib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgzLCA0LCA1 KSksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDMsKSwgKDEsIDEsIDUpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAg KQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAot LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDEsIDIsIDMsIDQsIDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0Iikp Ci0tICAgIGRlZiB0ZXN0X2NvbmNhdChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDIsIDQsIDMpKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg3LCA0LCAz KSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5Il0sIFsieiJd LCBheGlzPTApXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoOSwgNCwgMykpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKLS0gICAgZGVmIHRlc3RfY29uY2F0X21pc3Np bmdfc2hhcGUoc2VsZiwgKl8pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDIsIDQsIDMpKSwKLS0gICAgICAgICAgICAgICAgInkiLAotLSAgICAgICAgICAg ICAgICAoInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5vbmUpKSwKLS0gICAg ICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5Iiwg InoiXSwgWyJvdXQiXSwgYXhpcz0wKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0t ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VF cnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0IikpCi0tICAgIGRlZiB0ZXN0X2NvbmNhdF8zZF9h eGlzXzIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAy LCAyKSksICgieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMiwgMikpXSwKLS0gICAgICAgICAg ICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngiLCAieSJdLCBbInoiXSwgYXhpcz0yKV0sCi0tICAg ICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDIsIDQpKV0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiQ29uY2F0IikpCi0tICAgIGRlZiB0ZXN0X2NvbmNhdF9wYXJhbShzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJhIiwgMikpLCAoInkiLCBUZW5zb3JQcm90 by5GTE9BVCwgKCJhIiwgMykpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBb IngiLCAieSJdLCBbInoiXSwgYXhpcz0xKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAp Ci0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0t ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9B VCwgKCJhIiwgNSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKLS0gICAgZGVmIHRl c3RfY29uY2F0X3BhcmFtX3NpbmdsZV9pbnB1dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBU ZW5zb3JQcm90by5GTE9BVCwgKCJhIiwgMikpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJD b25jYXQiLCBbIngiXSwgWyJ6Il0sIGF4aXM9MCldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8u RkxPQVQsICgiYSIsIDIpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBk ZWYgdGVzdF9yZXNoYXBlX2R5bmFtaWNfc2hhcGVfa25vd25fcmFuayhzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE0LCAiUmFuayBpbmZl cmVuY2UgaXMgYWRkZWQgZnJvbSBWZXJzaW9uIDE0IikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0 LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAotLSAgICAgICAgICAg IFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAg ICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0g ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoTm9uZSwgTm9uZSkpXSwKLS0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0t ICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJSZXNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2hhcGVfZHluYW1pY19zaGFwZV9zeW1ib2xp YyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMp KSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCkpXSwKLS0gICAgICAgICAgICBb bWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAg ICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5VSU5UOCwgTm9uZSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkK LS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUi KSkKLS0gICAgZGVmIHRlc3RfcmVzaGFwZV9keW5hbWljX3Vua25vd25fc2hhcGUoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0g ICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgTm9uZSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJl c2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAg ICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFw aCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LlVJTlQ4LCBOb25lKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBkZWYg dGVzdF9yZXNoYXBlX3N0YXRpY19zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAo MiwpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJd LCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVtt YWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDMsIDgpKV0sCi0t ICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAg Z3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5VSU5UOCwgKDMsIDgpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAg ICBkZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19zaGFwZV9pbmZlcnJlZChzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMywpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIs IFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAg IGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMs KSwgKDAsIDMsIC0xKSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCAzLCA0KSldLAotLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlJlc2hhcGUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hhcGVfemVy byhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDEsIDEsIDEp KSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKV0sCi0tICAgICAgICAgICAgW21h a2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAg IFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDMsKSwgKDAsIDEsIDEpKV0sCi0tICAgICAgICApCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDEsIDEsIDEp KV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBkZWYgdGVzdF9yZXNoYXBl X3N0YXRpY19zaGFwZV9hbGxvd3plcm8oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAg ICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNCwgImFsbG93emVybyBpcyBhZGRlZCBmcm9tIFZl cnNpb24gMTQiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAg ICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgxLCAwLCAw KSksCi0tICAgICAgICAgICAgICAgICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSks Ci0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4 IiwgInNoYXBlIl0sIFsieSJdLCBhbGxvd3plcm89MSldLAotLSAgICAgICAgICAgIFtdLAotLSAg ICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDMsKSwgKDAsIDEsIDEpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDAsIDEsIDEpKV0sCi0tICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBkZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19z aGFwZV9jb25zdGFudChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5U OCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAg ICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0tICAgICAgICAgICAgICAg ICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwg KDMsIDgpKSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2Rl KCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKSwKLS0gICAgICAgICAgICBdLAotLSAg ICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSks Ci0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5VSU5UOCwgKDMsIDgpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAg ICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlVw c2FtcGxlIikpCi0tICAgIGRlZiB0ZXN0X3Vwc2FtcGxlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6Ci0tICAgICAgICBpZiB2ZXJzaW9uID09IDc6Ci0tICAgICAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIs ICgyLCA0LCAzLCA1KSldLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJVcHNhbXBsZSIs IFsieCJdLCBbInkiXSwgc2NhbGVzPVsxLjAsIDEuMSwgMS4zLCAxLjldKV0sCi0tICAgICAgICAg ICAgICAgIFtdLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwK LS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICkKLS0gICAgICAgIGVsc2U6Ci0tICAg ICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUp KSwKLS0gICAgICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0 LCkpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJV cHNhbXBsZSIsIFsieCIsICJzY2FsZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICAgICAgW10s Ci0tICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSwgKDEuMCwgMS4xLCAx LjMsIDEuOSkpCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQotLQotLSAgICAg ICAgICAgIGRlZiBjYWxsX2luZmVyZW5jZSgpOgotLSAgICAgICAgICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgy LCA0LCAzLCA5KSldLAotLSAgICAgICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICAgICAp Ci0tCi0tICAgICAgICAgICAgaWYgdmVyc2lvbiA9PSA5OgotLSAgICAgICAgICAgICAgICBjYWxs X2luZmVyZW5jZSgpCi0tICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgIyBVcHNh bXBsZSBpcyBkZXByZWNhdGVkIHNpbmNlIFZlcnNpb24gMTAuCi0tICAgICAgICAgICAgICAgIHdp dGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206 Ci0tICAgICAgICAgICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgpCi0tICAgICAgICAgICAgICAg IGV4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgotLSAgICAgICAgICAgICAgICBhc3NlcnQgIlVwc2Ft cGxlIGlzIGRlcHJlY2F0ZWQiIGluIHN0cihleGNlcHRpb24pCi0tCi0tICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJVcHNhbXBsZSIpKQotLSAgICBkZWYgdGVzdF91 cHNhbXBsZV9yYXdfZGF0YShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgaWYg dmVyc2lvbiA9PSA3OgotLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0g ICAgICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwgMywgNCwgNSkpXSwK LS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiXSwgWyJ5Il0sIHNj YWxlcz1bMi4wLCAxLjEsIDIuMywgMS45XSldLAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAg ICAgICAgICApCi0tICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAg ICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDMsIDksIDkpKV0sCi0tICAgICAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKLS0gICAgICAgICAgICApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAg ICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAg ICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKLS0gICAgICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiLCAi c2NhbGVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAg ICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKLS0gICAg ICAgICAgICAgICAgICAgICAgICAic2NhbGVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBU ZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAoNCwpLAotLSAgICAg ICAgICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJyYXkoWzEuMCwgMS4xLCAxLjMsIDEuOV0sIGR0 eXBlPSI8ZjQiKS50b2J5dGVzKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUs Ci0tICAgICAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgKSAgIyBGZWVkIHJhdyBieXRlcyAoZm9yY2UgbGl0dGxlIGVuZGlhbiBvcmRlcmluZyBsaWtl IG9ubnggc3RhbmRhcmQpIGZvciB0ZXN0IHB1cnBvc2UKLS0KLS0gICAgICAgICAgICBkZWYgY2Fs bF9pbmZlcmVuY2UoKToKLS0gICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwK LS0gICAgICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICAgICAgICAgKQotLQotLSAgICAgICAg ICAgIGlmIHZlcnNpb24gPT0gOToKLS0gICAgICAgICAgICAgICAgY2FsbF9pbmZlcmVuY2UoKQot LSAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgICMgVXBzYW1wbGUgaXMgZGVwcmVj YXRlZCBzaW5jZSBWZXJzaW9uIDEwLgotLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0 UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgotLSAgICAgICAgICAg ICAgICAgICAgY2FsbF9pbmZlcmVuY2UoKQotLSAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBj bS5leGNlcHRpb24KLS0gICAgICAgICAgICAgICAgYXNzZXJ0ICJVcHNhbXBsZSBpcyBkZXByZWNh dGVkIiBpbiBzdHIoZXhjZXB0aW9uKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCi0tICAgIGRlZiB0ZXN0X2V4cGFuZChzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDEpKSwgKCJzaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMywpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5k IiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAo MywpLCAoMiwgMSwgNikpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgMywgNikpXSwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJFeHBhbmQiKSkKLS0gICAgZGVmIHRlc3RfZXhwYW5kX3NjYWxhcl9pbnB1dChzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKCkpLCAoInNoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBh bmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAg ICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgyLCksICg0LCA4KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICg0LCA4KSldLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK LS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkV4cGFuZCIpKQotLSAgICBkZWYgdGVzdF9leHBhbmRfcmF3X2RhdGEoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCAxKSksICgic2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDIsKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIs IFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAg IGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAgICAg ICAgICAgICAgICAic2hhcGUiLAotLSAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5U NjQsCi0tICAgICAgICAgICAgICAgICAgICAoMiwpLAotLSAgICAgICAgICAgICAgICAgICAgdmFs cz1ucC5hcnJheShbMywgNF0sIGR0eXBlPSI8aTgiKS50b2J5dGVzKCksCi0tICAgICAgICAgICAg ICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICApICAjIEZlZWQgcmF3IGJ5dGVzIChmb3JjZSBsaXR0bGUgZW5kaWFuIG9yZGVyaW5n IGxpa2Ugb25ueCBzdGFuZGFyZCkgZm9yIHRlc3QgcHVycG9zZQotLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCA0KSldLAotLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIkV4cGFuZCIpKQotLSAgICBkZWYgdGVzdF9leHBhbmRfZHluYW1pY19zaGFw ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJv dG8uSU5UMzIsICgxLCAyLCBOb25lKSksCi0tICAgICAgICAgICAgICAgICgic2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDMsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoTm9uZSwgMiwg Tm9uZSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQiKSkKLS0gICAgZGVmIHRlc3RfZXhw YW5kX3N5bWJvbGljX3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAg ICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDIsIE5vbmUpKSwKLS0gICAgICAgICAgICAg ICAgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoInVua19fMCIsKSksCi0tICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hhcGUiXSwg WyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bXSwK LS0gICAgICAgICkKLS0gICAgICAgICMgaWYgZ2l2aW5nIGEgc3ltYm9saWMgc2hhcGUsIEV4cGFu ZCBzaG91bGQgbm90IGluZmVyIGFueSBzaGFwZSBvciByYW5rIGluZmVyZW5jZQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsIE5vbmUpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaXplX3NpemUo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGlmIHZlcnNpb24gPT0gMTA6Ci0t ICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMs IDUpKSwKLS0gICAgICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg0LCkpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2Rl KCJSZXNpemUiLCBbIngiLCAic2NhbGVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgICAgIFtd LAotLSAgICAgICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCksICgxLjAsIDEuMSwg MS4zLCAxLjkpKQotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkKLS0gICAgICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklO VDMyLCAoMiwgNCwgMywgOSkpXSwKLS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICkK LS0gICAgICAgIGVsaWYgdmVyc2lvbiA9PSAxMToKLS0gICAgICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAotLSAgICAgICAgICAgICAgICAg ICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCi0tICAgICAgICAgICAgICAgICAg ICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKLS0gICAgICAgICAgICAgICAg ICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSksCi0tICAgICAgICAgICAgICAg IF0sCi0tICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAi c2NhbGVzIiwgInNpemVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgICAgIFtdLAotLSAgICAg ICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSwgKDMsIDUsIDYsIDcpKQotLSAgICAg ICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNSwgNiwgNykp XSwKLS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICkKLS0gICAgICAgIGVsc2U6Ci0t ICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMs IDUpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4 LCkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAo NCwpKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgi UmVzaXplIiwgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAg ICAgICAgW10sCi0tICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpLCAoMywg NSwgNiwgNykpCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAg ICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U MzIsICgzLCA1LCA2LCA3KSldLAotLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAgKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUk1TTm9ybWFs aXphdGlvbiIpKQotLSAgICBkZWYgdGVzdF9ybXNfbm9ybWFsaXphdGlvbihzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAg ICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiTiIs ICJDIiwgIkgiLCAiVyIpKSwKLS0gICAgICAgICAgICAgICAgKCJzY2FsZSIsIFRlbnNvclByb3Rv LkZMT0FULCAoIkgiLCAiVyIpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtl X25vZGUoIlJNU05vcm1hbGl6YXRpb24iLCBbIlgiLCAic2NhbGUiXSwgWyJ5Il0sIGF4aXM9Mild LAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgiLCAiVyIpKV0s Ci0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXpl X2F4ZXNfMl8zKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJ Zih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZyb20gVmVyc2lvbiAxOCIpCi0tICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAo IngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAgICAgICAgICAg KCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAgICAgICgic2l6 ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLCBbInki XSwgYXhlcz0oMiwgMykpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFs aXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA3 KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAg ICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCA2LCA3KSldLAotLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAg ICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJl c2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVzXzNfMihzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE4LCAiYXhlcyBp cyBmcm9tIFZlcnNpb24gMTgiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIs ICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxP QVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXpl IiwgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwgWyJ5Il0sIGF4ZXM9KDMsIDIpKV0sCi0tICAg ICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXpl cyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNykpXSwKLS0gICAgICAgICkKLS0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwg NCwgNywgNikpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0 ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRlc3Rf cmVzaXplX3NpemVfbm90X2xhcmdlcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAg ICAgc2VsZi5za2lwSWYoCi0tICAgICAgICAgICAgdmVyc2lvbiA8IDE4LAotLSAgICAgICAgICAg ICJrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3kgaXMgZnJvbSBWZXJzaW9uIDE4IiwKLS0gICAgICAg ICkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNSkpLAotLSAgICAg ICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKLS0gICAgICAgICAg ICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAg ICAgICAgICAgICAgIlJlc2l6ZSIsCi0tICAgICAgICAgICAgICAgICAgICBbIngiLCAicm9pIiwg IiIsICJzaXplcyJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCi0tICAgICAgICAgICAg ICAgICAgICBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3k9Im5vdF9sYXJnZXIiLAotLSAgICAgICAg ICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAg ICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCksICg2LCA2KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICg0LCA2KSldLAotLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0g ICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVzXzJfM19ub3RfbGFyZ2Vy KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZigKLS0gICAg ICAgICAgICB2ZXJzaW9uIDwgMTgsCi0tICAgICAgICAgICAgImF4ZXMgJiBrZWVwX2FzcGVjdF9y YXRpb19wb2xpY3kgYXJlIGZyb20gVmVyc2lvbiAxOCIsCi0tICAgICAgICApCi0tICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAg ICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAgICAgICAg ICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAgICAgICgi c2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAg ICAgICJSZXNpemUiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAic2l6 ZXMiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAgICAg YXhlcz0oMiwgMyksCi0tICAgICAgICAgICAgICAgICAgICBrZWVwX2FzcGVjdF9yYXRpb19wb2xp Y3k9Im5vdF9sYXJnZXIiLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0g ICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNp emVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSldLAotLSAgICAgICAgKQotLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgy LCA0LCA0LCA2KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVz dF9yZXNpemVfc2l6ZV9ub3Rfc21hbGxlcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAg ICAgICAgc2VsZi5za2lwSWYoCi0tICAgICAgICAgICAgdmVyc2lvbiA8IDE4LAotLSAgICAgICAg ICAgICJrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3kgaXMgZnJvbSBWZXJzaW9uIDE4IiwKLS0gICAg ICAgICkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNSkpLAotLSAg ICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKLS0gICAgICAg ICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAg ICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAg ICAgICAgICAgICAgICAgIlJlc2l6ZSIsCi0tICAgICAgICAgICAgICAgICAgICBbIngiLCAicm9p IiwgIiIsICJzaXplcyJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCi0tICAgICAgICAg ICAgICAgICAgICBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3k9Im5vdF9zbWFsbGVyIiwKLS0gICAg ICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAg ICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0 LCAoMiwpLCAoNiwgNikpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoNiwgMTApKV0sCi0tICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplX2F4ZXNfMl8zX25vdF9z bWFsbGVyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZigK LS0gICAgICAgICAgICB2ZXJzaW9uIDwgMTgsCi0tICAgICAgICAgICAgImF4ZXMgJiBrZWVwX2Fz cGVjdF9yYXRpb19wb2xpY3kgYXJlIGZyb20gVmVyc2lvbiAxOCIsCi0tICAgICAgICApCi0tICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAg ICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAg ICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAg ICAgICAgICAgICJSZXNpemUiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIi LCAic2l6ZXMiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAg ICAgICAgYXhlcz0oMiwgMyksCi0tICAgICAgICAgICAgICAgICAgICBrZWVwX2FzcGVjdF9yYXRp b19wb2xpY3k9Im5vdF9zbWFsbGVyIiwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAg IF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVu c29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNikpXSwKLS0gICAgICAg ICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklO VDMyLCAoMiwgNCwgNiwgMTApKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAg IGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAg ICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDExLCAicm9pIGlucHV0IGlzIGZyb20gVmVyc2lvbiAx MSIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwot LSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwK LS0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCi0tICAg ICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAg ICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIs ICJzY2FsZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0 aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJzY2FsZXMiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDQsKSwgKDEuMCwgMS4xLCAxLjMsIDEuOSkpCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAg ICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAp Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUi KSkKLS0gICAgZGVmIHRlc3RfcmVzaXplX3NjYWxlX2F4ZXNfMl8zKHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZy b20gVmVyc2lvbiAxOCIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAg ICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIs IDQsIDMsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwg KDgsKSksCi0tICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgy LCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwg WyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5Il0sIGF4ZXM9KDIsIDMpKV0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzY2FsZXMiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDIsKSwgKDEuMywgMS45KSldLAotLSAgICAgICAgKQotLSAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAg ICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0 LCAzLCA5KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9y ZXNpemVfc2NhbGVfYXhlc18zXzIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAg IHNlbGYuc2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBWZXJzaW9uIDE4IikKLS0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAotLSAgICAg ICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKLS0gICAgICAgICAg ICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSksCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxl cyJdLCBbInkiXSwgYXhlcz0oMywgMikpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAg ICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAo MiwpLCAoMS45LCAxLjMpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZV9yYXdfZGF0 YShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lv biA8IDExLCAicm9pIGlucHV0IGlzIGZyb20gVmVyc2lvbiAxMSIpCi0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngi LCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDMsIDQsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJy b2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCi0tICAgICAgICAgICAgICAgICgic2NhbGVz IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5Il0pXSwK LS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgInNjYWxlcyIsCi0tICAg ICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAgICAg ICg0LCksCi0tICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KFsyLjAsIDEuMSwgMi4z LCAxLjldLCBkdHlwZT0iPGY0IikudG9ieXRlcygpLAotLSAgICAgICAgICAgICAgICAgICAgcmF3 PVRydWUsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIs ICgyLCAzLCA5LCA5KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYg dGVzdF9yZXNpemVfc2NhbGVfYW5kX3NpemVfYnV0X29uZV9pc19lbXB0eShzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDExLCAicm9pIGlu cHV0IGlzIGZyb20gVmVyc2lvbiAxMSIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5J TlQzMiwgKDEsIDMsIDQsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDgsKSksCi0tICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8u RkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5U NjQsICgwLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVz aXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAg ICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgInNjYWxlcyIsCi0tICAgICAgICAgICAg ICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAgICAgICg0LCksCi0t ICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KFsyLjAsIDEuMSwgMi4zLCAxLjldLCBk dHlwZT0iPGY0IikudG9ieXRlcygpLAotLSAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUsCi0t ICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAotLSAgICAg ICAgICAgICAgICAgICAgInNpemVzIiwKLS0gICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3Rv LklOVDY0LAotLSAgICAgICAgICAgICAgICAgICAgKDAsKSwKLS0gICAgICAgICAgICAgICAgICAg IHZhbHM9bnAuYXJyYXkoW10sIGR0eXBlPSI8aTgiKS50b2J5dGVzKCksCi0tICAgICAgICAgICAg ICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICBdLAot LSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAg IGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uSU5UMzIsICgyLCAzLCA5LCA5KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkK LS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIp KQotLSAgICBkZWYgdGVzdF9yZXNpemVfb3BzZXQxMV9zY2FsZXNfaXNfZW1wdHkoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gIT0gMTEsICJU aGlzIHRlc3Qgb25seSB3b3JrcyBmb3IgVmVyc2lvbiAxMSIpCi0tICAgICAgICAjICJzY2FsZXMi IGlucHV0IGluIFJlc2l6ZSBpbiBvcHNldDExIGlzIG5vdCBvcHRpb25hbC4gSXQgbXVzdCBiZSBh biBlbXB0eSB0ZW5zb3IKLS0gICAgICAgICMgaWYgc2l6ZXMgaXMgbmVlZGVkLiBTaGFwZSBpbmZl cmVuY2UgZm9yIFJlc2l6ZSBzaGFsbCBoYW5kbGUgdGhpcyBjYXNlLgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4 IiwgVGVuc29yUHJvdG8uSU5UMzIsICgxLCAzLCA0LCA1KSksCi0tICAgICAgICAgICAgICAgICgi cm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAotLSAgICAgICAgICAgICAgICAoInNjYWxl cyIsIFRlbnNvclByb3RvLkZMT0FULCAoMCwpKSwKLS0gICAgICAgICAgICAgICAgKCJzaXplcyIs IFRlbnNvclByb3RvLklOVDY0LCAoNCwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAg IFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIiwgInNpemVzIl0sIFsi eSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICJzaXplcyIs Ci0tICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKLS0gICAgICAgICAgICAg ICAgICAgICg0LCksCi0tICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KAotLSAgICAg ICAgICAgICAgICAgICAgICAgIFsyLCA2LCA4LCAxMF0sIGR0eXBlPSI8aTgiCi0tICAgICAgICAg ICAgICAgICAgICApLnRvYnl0ZXMoKSwgICMgZG91YmxlIGluIGFsbCBkaW1lbnNpb25zCi0tICAg ICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICBdLAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA2LCA4LCAxMCkpXSwKLS0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKCIiLCB2ZXJzaW9uKV0sCi0tICAgICAg ICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFw ZSIpKQotLSAgICBkZWYgdGVzdF9zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hh cGUiLCBbIngiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywp KV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKLS0gICAgZGVmIHRlc3Rfc2hhcGVfc3Rh cnRfMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVy c2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKLS0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJv dG8uRkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwg WyJ4Il0sIFsieSJdLCBzdGFydD0xKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0t ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3NoYXBl X2VuZF8xKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2 ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNpb24gMTUiKQotLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUi LCBbIngiXSwgWyJ5Il0sIGVuZD0xKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0t ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDEsKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3NoYXBl X25lZ2F0aXZlX3N0YXJ0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxm LnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNpb24gMTUi KQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9k ZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIHN0YXJ0PS0xKV0sCi0tICAgICAgICAgICAgW10sCi0t ICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAg Z3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDEsKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCi0tICAgIGRl ZiB0ZXN0X3NoYXBlX2NsaXAxKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBz ZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNpb24g MTUiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFso IngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgW21ha2Vf bm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIHN0YXJ0PS01KV0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDMsKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCi0tICAg IGRlZiB0ZXN0X3NoYXBlX2NsaXAyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAg ICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNp b24gMTUiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgW21h a2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIGVuZD0xMCldLAotLSAgICAgICAgICAgIFtd LAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAg ICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uSU5UNjQsICgzLCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaXplIikpCi0tICAg IGRlZiB0ZXN0X3NpemUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxP QVQsICgyLCA0LCAzKSldLCBbbWFrZV9ub2RlKCJTaXplIiwgWyJ4Il0sIFsieSJdKV0sIFtdCi0t ICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAg Z3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJHYXRoZXIiKSkKLS0gICAgZGVm IHRlc3RfZ2F0aGVyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoNCwgMykpLCAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAotLSAgICAgICAgICAg IFttYWtlX25vZGUoIkdhdGhlciIsIFsieCIsICJpIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAg W10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAg ICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDIsIDMpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyIikp Ci0tICAgIGRlZiB0ZXN0X2dhdGhlcl9heGlzMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDQsIDMsIDUpKSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgx LCAyKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlciIsIFsieCIsICJpIl0sIFsi eSJdLCBheGlzPTEpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgMSwgMiwg NSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJHYXRoZXIiKSkKLS0gICAgZGVmIHRlc3RfZ2F0aGVy X2ludG9fc2NhbGFyKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMywpKSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0sCi0tICAgICAgICAgICAgW21h a2Vfbm9kZSgiR2F0aGVyIiwgWyJ4IiwgImkiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwK LS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAg ICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLkZMT0FULCAoKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlckVsZW1lbnRzIikp Ci0tICAgIGRlZiB0ZXN0X2dhdGhlcl9lbGVtZW50cyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25l OgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDIpKSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCAyKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlckVsZW1lbnRzIiwgWyJ4Iiwg ImkiXSwgWyJ5Il0sIGF4aXM9MSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgy LCAyKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlckVsZW1lbnRzIikpCi0tICAgIGRlZiB0 ZXN0X2dhdGhlcl9lbGVtZW50c19heGlzMChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5GTE9BVCwgKDMsIDMpKSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSld LAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlckVsZW1lbnRzIiwgWyJ4IiwgImkiXSwg WyJ5Il0sIGF4aXM9MCldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSld LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXIiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcihz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgaWYgdmVyc2lvbiA+PSAxMToKLS0g ICAgICAgICAgICAjIFNjYXR0ZXIgaXMgZGVwcmVjYXRlZCBpbiBkb21haW5fdmVyc2lvbiBvZiAx MS4KLS0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxp ZGF0aW9uRXJyb3IpIGFzIGNtOgotLSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3NjYXR0ZXIo dmVyc2lvbikKLS0gICAgICAgICAgICBleGNlcHRpb24gPSBjbS5leGNlcHRpb24KLS0gICAgICAg ICAgICBhc3NlcnQgIlNjYXR0ZXIgaXMgZGVwcmVjYXRlZCIgaW4gc3RyKGV4Y2VwdGlvbikKLS0g ICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgc2VsZi5fdGVzdF9zY2F0dGVyKHZlcnNpb24pCi0t Ci0tICAgIGRlZiBfdGVzdF9zY2F0dGVyKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAg ICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKLS0gICAgICAgICAgICAgICAg KCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSksCi0tICAgICAgICAgICAgICAgICgidSIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgW21ha2Vfbm9kZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0pXSwKLS0gICAg ICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK LS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykpXSwKLS0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAg ICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJT Y2F0dGVyIikpCi0tICAgIGRlZiB0ZXN0X3NjYXR0ZXJfYXhpczEoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKLS0gICAgICAgIGlmIHZlcnNpb24gPj0gMTE6Ci0tICAgICAgICAgICAgIyBTY2F0 dGVyIGlzIGRlcHJlY2F0ZWQgaW4gZG9tYWluX3ZlcnNpb24gb2YgMTEuCi0tICAgICAgICAgICAg d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBj bToKLS0gICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9zY2F0dGVyX2F4aXMxKHZlcnNpb24pCi0t ICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCi0tICAgICAgICAgICAgYXNzZXJ0 ICJTY2F0dGVyIGlzIGRlcHJlY2F0ZWQiIGluIHN0cihleGNlcHRpb24pCi0tICAgICAgICBlbHNl OgotLSAgICAgICAgICAgIHNlbGYuX3Rlc3Rfc2NhdHRlcl9heGlzMSh2ZXJzaW9uKQotLQotLSAg ICBkZWYgX3Rlc3Rfc2NhdHRlcl9heGlzMShzZWxmLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSksCi0tICAgICAgICAgICAgICAg ICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpLAotLSAgICAgICAgICAgICAgICAoInUi LCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAg ICAgIFttYWtlX25vZGUoIlNjYXR0ZXIiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJdLCBheGlzPTEp XSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpXSwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJTY2F0dGVyRWxlbWVudHMiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcl9lbGVtZW50 cyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJv dG8uRkxPQVQsICgzLCAzKSksCi0tICAgICAgICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklO VDY0LCAoMiwgMykpLAotLSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwg KDIsIDMpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0 ZXJFbGVtZW50cyIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwK LS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAg ICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLkZMT0FULCAoMywgMykpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyRWxlbWVu dHMiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcl9lbGVtZW50c19heGlzMShzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAg ICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1 KSksCi0tICAgICAgICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpLAot LSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIpKSwKLS0gICAg ICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXJFbGVtZW50cyIsIFsi eCIsICJpIiwgInUiXSwgWyJ5Il0sIGF4aXM9MSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u RkxPQVQsICgxLCA1KSldLAotKyAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6 IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVkX291dF9zaGFwZSldLAotICAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKLSAgICAgICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlNjYXR0ZXJORCIpKQotLSAgICBkZWYgdGVzdF9zY2F0dGVybmQoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKLSsgICAgZGVmIF90ZXN0X3NjYXR0ZXIoc2VsZiwgdmVyc2lvbikgLT4g Tm9uZToKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLSAgICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgNSwgNikpLAot LSAgICAgICAgICAgICAgICAoImluZGljZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsIDMsIDIp KSwKLS0gICAgICAgICAgICAgICAgKCJ1cGRhdGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAz LCA2KSksCi0rICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykp LAotKyAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMpKSwKLSsg ICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSksCi0gICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyTkQiLCBbIngiLCAiaW5k aWNlcyIsICJ1cGRhdGVzIl0sIFsieSJdKV0sCi0rICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2Nh dHRlciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0pXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAg ICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSAgICAgICAgICAgICBncmFw aCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LkZMT0FULCAoNCwgNSwgNikpXSwKLSsgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykpXSwKLSAgICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0gICAg ICAgICApCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJT Y2F0dGVyTkQiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcm5kX25vc2hhcGUoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKLS0gICAgICAgICMgVGhlIHNoYXBlIG9mICd4X3Jlc2hhcGVkJyBjYW5u b3QgYmUgaW5mZXJyZWQsIHNpbmNlIGl0IGlzIHRoZSBvdXRwdXQgb2YgYSBkeW5hbWljIHJlc2hh cGUuCi0tICAgICAgICAjIFRodXMgdGhlIHNoYXBlIG9mICd5JyBpcyBhbHNvIE5vbmUuCi0rICAg IGRlZiBfdGVzdF9zY2F0dGVyX2F4aXMxKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6Ci0gICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgWwotLSAgICAgICAgICAg ICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKSwKLS0gICAgICAgICAgICAg ICAgKCJpbmRpY2VzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCAzLCAyKSksCi0tICAgICAgICAg ICAgICAgICgidXBkYXRlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMywgNikpLAotLSAgICAg ICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiTSIsKSksCi0tICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiUmVz aGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInhfcmVzaGFwZWQiXSksCi0tICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgiU2NhdHRlck5EIiwgWyJ4X3Jlc2hhcGVkIiwgImluZGljZXMiLCAidXBkYXRl cyJdLCBbInkiXSksCi0rICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAo MSwgNSkpLAotKyAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIp KSwKLSsgICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyKSksCi0g ICAgICAgICAgICAgXSwKLSsgICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyIiwgWyJ4Iiwg ImkiLCAidSJdLCBbInkiXSwgYXhpcz0xKV0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICAp Ci0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0gICAgICAgICAgICAgZ3JhcGgsCi0t ICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ4 X3Jlc2hhcGVkIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpLAotLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpLAotLSAg ICAgICAgICAgIF0sCi0rICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKV0sCi0gICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotICAgICAgICAgKQot IAotQEAgLTE3MDksOTUgKzMzNCw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hh cGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDI0KV0sCi0gICAgICAgICApCi0gCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTcXVlZXplIikpCi0tICAgIGRlZiB0 ZXN0X3NxdWVlemUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGlmIHZlcnNp b24gPT0gMTE6Ci0tICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAg ICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAzLCAxLCAxLCAyLCAxKSld LAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJTcXVlZXplIiwgIngiLCAieSIsIGF4ZXM9 WzAsIDIsIDMsIDVdKV0sCi0tICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICkKLS0g ICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLkZMT0FULCAoMywgMikpXSwKLS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICkK LS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDEsIDMsIDEsIDEsIDIsIDEpKSwKLS0gICAgICAgICAgICAgICAgICAgICgiYXhl cyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3F1ZWV6ZSIsIFsieCIsICJheGVzIl0sICJ5IildLAot LSAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAg ICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImF4ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDQsKSwgKDAsIDIsIDMsIDUpKQotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkK LS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdy YXBoLAotLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLkZMT0FULCAoMywgMikpXSwKLS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAg ICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmlu Z0NvbmNhdCIpKQotLSAgICBkZWYgdGVzdF9zdHJpbmdjb25jYXQoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAg ICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQp KSwKLS0gICAgICAgICAgICAgICAgKCJ5IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkp LAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nQ29uY2F0 IiwgWyJ4IiwgInkiXSwgInoiKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5TVFJJTkcsICgy LCAzLCA0KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ0NvbmNhdCIpKQotLSAgICBkZWYg dGVzdF9zdHJpbmdjb25jYXRfYnJvYWRjYXN0aW5nKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSksCi0tICAg ICAgICAgICAgICAgICgieSIsIFRlbnNvclByb3RvLlNUUklORywgKDEsIDMsIDEpKSwKLS0gICAg ICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIsIFsieCIs ICJ5Il0sICJ6IildLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkp XSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZWdleEZ1bGxNYXRjaCIpKQotLSAgICBkZWYgdGVzdF9y ZWdleF9mdWxsX21hdGNoKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNU UklORywgKDIsIDQsIDMsIDkpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVnZXhGdWxs TWF0Y2giLCBbIngiXSwgWyJ5Il0sIHBhdHRlcm49ciJeW0EtWl1bYS16XSokIildLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uQk9PTCwgKDIsIDQsIDMsIDkpKV0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiUmVnZXhGdWxsTWF0Y2giKSkKLS0gICAgZGVmIHRlc3RfcmVnZXhfZnVsbF9tYXRjaF9lbXB0 eV9zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgp KV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVnZXhGdWxsTWF0Y2giLCBbIngiXSwgWyJ5 Il0sIHBhdHRlcm49ciJeW0EtWl1bYS16XSokIildLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u Qk9PTCwgKCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0gICAgIGRlZiB0ZXN0 X3NxdWVlemVfbm9fYXhlc19vcHNldDExKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgWwotQEAgLTU2MzIsMjMgKzQxNjgsNiBA QCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAg ICAgICAgIHNlbGYuX21ha2VfbWF0bXVsaW50ZWdlcl90ZXN0KCg1LCAxLCA0LCAyKSwgKDEsIDMs IDIsIDMpKQotICAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxpbnRlZ2VyX3Rlc3QoKDQsIDIpLCAo MywgMiwgMykpCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFtvbm54 LlRlbnNvclByb3RvLkZMT0FULCBvbm54LlRlbnNvclByb3RvLkZMT0FUMTYsIG9ubnguVGVuc29y UHJvdG8uQkZMT0FUMTZdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfcXVhbnRpemVsaW5lYXIoc2Vs ZiwgZWxlbV90eXBlKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgZWxlbV90eXBlLCAoMzAs IDQsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJ5X3NjYWxlIiwgZWxlbV90eXBlLCAoKSksCi0t ICAgICAgICAgICAgICAgICgieV96ZXJvX3BvaW50IiwgVGVuc29yUHJvdG8uVUlOVDgsICgpKSwK LS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlF1YW50aXplTGluZWFy IiwgWyJ4IiwgInlfc2NhbGUiLCAieV96ZXJvX3BvaW50Il0sIFsieSJdKV0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAg ICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u VUlOVDgsICgzMCwgNCwgNSkpXQotLSAgICAgICAgKQotLQotICAgICBkZWYgdGVzdF9xdWFudGl6 ZWxpbmVhcl9kZWZhdWx0X3pwKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMzAs IDQsIDUpKSwgKCJ5X3NjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCi1AQCAtNTc1NCwy MyArNDI3Myw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VI ZWxwZXIpOgotICAgICAgICAgICAgIGdyYXBoLAotICAgICAgICAgKQotIAotLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbb25ueC5UZW5zb3JQcm90by5GTE9BVCwgb25ueC5U ZW5zb3JQcm90by5GTE9BVDE2LCBvbm54LlRlbnNvclByb3RvLkJGTE9BVDE2XQotLSAgICApCi0t ICAgIGRlZiB0ZXN0X2RlcXVhbnRpemVsaW5lYXIoc2VsZiwgZWxlbV90eXBlKSAtPiBOb25lOgot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgzMCwgNCwgNSkpLAotLSAgICAg ICAgICAgICAgICAoInhfc2NhbGUiLCBlbGVtX3R5cGUsICgpKSwKLS0gICAgICAgICAgICAgICAg KCJ4X3plcm9fcG9pbnQiLCBUZW5zb3JQcm90by5VSU5UOCwgKCkpLAotLSAgICAgICAgICAgIF0s Ci0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiRGVxdWFudGl6ZUxpbmVhciIsIFsieCIsICJ4X3Nj YWxlIiwgInhfemVyb19wb2ludCJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIGVsZW1fdHlwZSwgKDMwLCA0LCA1KSldCi0t ICAgICAgICApCi0tCi0gICAgIGRlZiB0ZXN0X2R5bmFtaWNxdWFudGl6ZWxpbmVhcihzZWxmKSAt PiBOb25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMwLCA0LCA1KSldLAotQEAgLTYwMDUsMzE5ICs0 NTA3LDYxIEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxw ZXIpOgotICAgICAgICAgICAgIFttYWtlX25vZGUoIlJvaUFsaWduIiwgWyJ4IiwgInJvaXMiLCAi YmF0Y2hfaW5kaWNlcyJdLCBbInkiXSldLAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQot LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLCBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTUsICJDIiwgMSwg MSkpXQotLSAgICAgICAgKQotLQotLSAgICBkZWYgdGVzdF9yb3RhcnllbWJlZGRpbmdfNGQoc2Vs ZikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICBbCi0tICAgICAgICAgICAgICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAi bnVtX2hlYWRzIiwgInNlcV9sZW4iLCAiaGVhZF9zaXplIikpLAotLSAgICAgICAgICAgICAgICAo ImNvc19jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6 ZV9kaXZfMiIpKSwKLS0gICAgICAgICAgICAgICAgKCJzaW5fY2FjaGUiLCBUZW5zb3JQcm90by5G TE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCi0tICAgICAgICAgICAg ICAgICgicG9zaXRpb25faWRzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiQiIsICJzZXFfbGVuIikp LAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiUm90YXJ5RW1iZWRkaW5nIiwKLS0gICAgICAg ICAgICAgICAgICAgIFsiWCIsICJjb3NfY2FjaGUiLCAic2luX2NhY2hlIiwgInBvc2l0aW9uX2lk cyJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJZIl0sCi0tICAgICAgICAgICAgICAgICkKLS0g ICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKLS0gICAgICAgICAgICAg ICAgICAgICJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJudW1faGVhZHMiLCAic2VxX2xl biIsICJoZWFkX3NpemUiKQotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0g ICAgICAgICkKLS0KLS0gICAgZGVmIHRlc3Rfcm90YXJ5ZW1iZWRkaW5nXzNkKHNlbGYpIC0+IE5v bmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwot LSAgICAgICAgICAgICAgICAoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgInNlcV9sZW4i LCAiaGlkZGVuX3NpemUiKSksCi0tICAgICAgICAgICAgICAgICgiY29zX2NhY2hlIiwgVGVuc29y UHJvdG8uRkxPQVQsICgibWF4X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAotLSAgICAg ICAgICAgICAgICAoInNpbl9jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVu IiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwKLS0gICAgICAgICAgICAgICAgKCJwb3NpdGlvbl9pZHMi LCBUZW5zb3JQcm90by5JTlQ2NCwgKCJCIiwgInNlcV9sZW4iKSksCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAg ICAgICAgICAgICJSb3RhcnlFbWJlZGRpbmciLAotLSAgICAgICAgICAgICAgICAgICAgWyJYIiwg ImNvc19jYWNoZSIsICJzaW5fY2FjaGUiLCAicG9zaXRpb25faWRzIl0sCi0tICAgICAgICAgICAg ICAgICAgICBbIlkiXSwKLS0gICAgICAgICAgICAgICAgICAgIG51bV9oZWFkcz00LAotLSAgICAg ICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAg ICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o Ci0tICAgICAgICAgICAgICAgICAgICAiWSIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAic2Vx X2xlbiIsICJoaWRkZW5fc2l6ZSIpCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBh bGxfdmVyc2lvbnNfZm9yKCJMYWJlbEVuY29kZXIiKSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBf b25fZW1wdHk9VHJ1ZQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2xhYmVsX2VuY29kZXJfc3RyaW5n X2ludDY0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZigK LS0gICAgICAgICAgICB2ZXJzaW9uIDwgMiwgImtleXNfKiBhdHRyaWJ1dGVzIHdlcmUgaW50cm9k dWNlZCBpbiBhaS5vbm54Lm1sIG9wc2V0IDIiCi0tICAgICAgICApCi0tICAgICAgICBzdHJpbmdf bGlzdCA9IFsiQSIsICJtIiwgInkiXQotLSAgICAgICAgZmxvYXRfbGlzdCA9IFs5NC4xNywgMzYu MDAsIC05OS4wXQotLSAgICAgICAgaW50NjRfbGlzdCA9IFsxMiwgMjgsIDg2XQotLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90 by5TVFJJTkcsICg2LCAxKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFr ZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAgICAgICAg ICAgICAgICAgICBbIngiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAg ICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAgICAgICAg a2V5c19zdHJpbmdzPXN0cmluZ19saXN0LAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX2lu dDY0cz1pbnQ2NF9saXN0LAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0g ICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoNiwgMSkpXSwKLS0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlO LCB2ZXJzaW9uKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAx MSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLS0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCAzKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAg ICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAgICAgICAgICAgICAgICAgICBb IngiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAgICAg ZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAgICAgICAga2V5c19pbnQ2NHM9 aW50NjRfbGlzdCwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19zdHJpbmdzPXN0cmluZ19s aXN0LAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBb XSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAg ICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLlNUUklORywgKDIsIDMpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b Ci0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiks Ci0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotLSAgICAg ICAgICAgIF0sCi0tICAgICAgICApCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpKV0sCi0tICAg ICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAg ICAgICAiTGFiZWxFbmNvZGVyIiwKLS0gICAgICAgICAgICAgICAgICAgIFsieCJdLAotLSAgICAg ICAgICAgICAgICAgICAgWyJ5Il0sCi0tICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9N TF9ET01BSU4sCi0tICAgICAgICAgICAgICAgICAgICBrZXlzX2Zsb2F0cz1mbG9hdF9saXN0LAot LSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX2ludDY0cz1pbnQ2NF9saXN0LAotLSAgICAgICAg ICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkK LS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0 LCAoMiwpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAgICAgICAgICAgICAg IG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCi0tICAgICAgICAgICAgICAg IG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICApCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAg WygieCIsIFRlbnNvclByb3RvLklOVDY0LCAoOCwpKV0sCi0tICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVy IiwKLS0gICAgICAgICAgICAgICAgICAgIFsieCJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5 Il0sCi0tICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAg ICAgICAgICAgICAgICBrZXlzX2ludDY0cz1pbnQ2NF9saXN0LAotLSAgICAgICAgICAgICAgICAg ICAgdmFsdWVzX2Zsb2F0cz1mbG9hdF9saXN0LAotLSAgICAgICAgICAgICAgICApCi0tICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKV0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5Y X01MX0RPTUFJTiwgdmVyc2lvbiksCi0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgMTEpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tCi0tICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3Rv LkZMT0FULCAoKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2Rl KAotLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAgICAgICAgICAgICAg ICAgICBbIngiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAg ICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAgICAgICAga2V5c19m bG9hdHM9ZmxvYXRfbGlzdCwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19zdHJpbmdzPXN0 cmluZ19saXN0LAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0g ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLlNUUklORywgKCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9u KSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCi0tICAg ICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMSwgMikpXSwK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAg ICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0t ICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1P Tk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfc3RyaW5ncz1zdHJpbmdf bGlzdCwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19mbG9hdHM9ZmxvYXRfbGlzdCwKLS0g ICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDEsIDIpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAgICAg ICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCi0tICAgICAg ICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotLSAgICAgICAgICAgIF0s Ci0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGFs bF92ZXJzaW9uc19mb3IoIkxhYmVsRW5jb2RlciIpIGlmIE9OTlhfTUwgZWxzZSBbXSwgc2tpcF9v bl9lbXB0eT1UcnVlCi0tICAgICkKLS0gICAgZGVmIHRlc3RfbGFiZWxfZW5jb2Rlcl90ZW5zb3Jf YXR0cmlidXRlcyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lw SWYoCi0tICAgICAgICAgICAgdmVyc2lvbiA8IDQsICJ0ZW5zb3IgYXR0cmlidXRlcyB3ZXJlIGlu dHJvZHVjZWQgaW4gYWkub25ueC5tbCBvcHNldCA0IgotLSAgICAgICAgKQotLSAgICAgICAga2V5 X3RlbnNvciA9IG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICJrZXlzX3RlbnNvciIsIFRlbnNv clByb3RvLlNUUklORywgWzRdLCBbImEiLCAiYiIsICJjYyIsICJkZGQiXQotLSAgICAgICAgKQot LSAgICAgICAgdmFsdWVzX3RlbnNvciA9IG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICJ2YWx1 ZXNfdGVuc29yIiwgVGVuc29yUHJvdG8uSU5UNjQsIFs0XSwgWzEsIDIsIDMsIDRdCi0rICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0rICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxNSwgIkMiLCAxLCAxKSldCi0g ICAgICAgICApCi0rCi0rICAgIGRlZiB0ZXN0X3JvdGFyeWVtYmVkZGluZ180ZChzZWxmKSAtPiBO b25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFso IngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIE5vbmUsIDMsIDEyKSldLAotKyAgICAgICAg ICAgIFsKLSsgICAgICAgICAgICAgICAgKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJu dW1faGVhZHMiLCAic2VxX2xlbiIsICJoZWFkX3NpemUiKSksCi0rICAgICAgICAgICAgICAgICgi Y29zX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibWF4X3NlcV9sZW4iLCAiaGVhZF9zaXpl X2Rpdl8yIikpLAotKyAgICAgICAgICAgICAgICAoInNpbl9jYWNoZSIsIFRlbnNvclByb3RvLkZM T0FULCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwKLSsgICAgICAgICAgICAg ICAgKCJwb3NpdGlvbl9pZHMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJCIiwgInNlcV9sZW4iKSks Ci0rICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAg ICAgICAgICAgWyJ4Il0sCi0tICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAg ICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtl eXNfdGVuc29yPWtleV90ZW5zb3IsCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfdGVuc29y PXZhbHVlc190ZW5zb3IsCi0tICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3RlbnNvcj1tYWtl X3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdF90ZW5zb3IiLCBUZW5z b3JQcm90by5JTlQ2NCwgWzFdLCBbMF0KLS0gICAgICAgICAgICAgICAgICAgICksCi0rICAgICAg ICAgICAgICAgICAgICAiUm90YXJ5RW1iZWRkaW5nIiwKLSsgICAgICAgICAgICAgICAgICAgIFsi WCIsICJjb3NfY2FjaGUiLCAic2luX2NhY2hlIiwgInBvc2l0aW9uX2lkcyJdLAotKyAgICAgICAg ICAgICAgICAgICAgWyJZIl0sCi0gICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICBdLAot ICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQotICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgiTSIsIE5vbmUsIDMsIDEyKSldLAotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQo T05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIDExKSwKLSsgICAgICAgICAgICBbCi0rICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oCi0rICAgICAgICAgICAgICAgICAgICAiWSIsIFRlbnNvclByb3Rv LkZMT0FULCAoIkIiLCAibnVtX2hlYWRzIiwgInNlcV9sZW4iLCAiaGVhZF9zaXplIikKLSsgICAg ICAgICAgICAgICAgKQotICAgICAgICAgICAgIF0sCi0gICAgICAgICApCi0gCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkxhYmVsRW5jb2Rl ciIpIGlmIE9OTlhfTUwgZWxzZSBbXSwgc2tpcF9vbl9lbXB0eT1UcnVlCi0tICAgICkKLS0gICAg ZGVmIHRlc3RfbGFiZWxfZW5jb2Rlcl90ZW5zb3JfYXR0cmlidXRlc19pbnZhbGlkX2NvbmZpZ3Vy YXRpb25zKAotLSAgICAgICAgc2VsZiwgXywgdmVyc2lvbgotLSAgICApIC0+IE5vbmU6Ci0tICAg ICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgNCwgInRlbnNvciBhdHRyaWJ1dGVzIGludHJvZHVj ZWQgaW4gYWkub25ueC5tbCBvcHNldCA0IikKLS0gICAgICAgIGtleV90ZW5zb3IgPSBtYWtlX3Rl bnNvcigKLS0gICAgICAgICAgICAia2V5c190ZW5zb3IiLCBUZW5zb3JQcm90by5TVFJJTkcsIFs0 XSwgWyJhIiwgImIiLCAiY2MiLCAiZGRkIl0KLS0gICAgICAgICkKLS0gICAgICAgIHZhbHVlc190 ZW5zb3IgPSBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAidmFsdWVzX3RlbnNvciIsIFRlbnNv clByb3RvLklOVDY0LCBbNF0sIFsxLCAyLCAzLCA0XQotLSAgICAgICAgKQotLQotLSAgICAgICAg b3BzZXRfaW1wb3J0cyA9IFsKLS0gICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01B SU4sIHZlcnNpb24pLAotLSAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEp LAotLSAgICAgICAgXQotLQotLSAgICAgICAgIyBkZWZhdWx0X3RlbnNvciBzaG91bGQgYmUgSU5U NjQsIHNhbWUgdHlwZSBhcyB2YWx1ZXNfdGVuc29yCi0rICAgIGRlZiB0ZXN0X3JvdGFyeWVtYmVk ZGluZ18zZChzZWxmKSAtPiBOb25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIE5vbmUsIDMs IDEyKSldLAotKyAgICAgICAgICAgIFsKLSsgICAgICAgICAgICAgICAgKCJYIiwgVGVuc29yUHJv dG8uRkxPQVQsICgiQiIsICJzZXFfbGVuIiwgImhpZGRlbl9zaXplIikpLAotKyAgICAgICAgICAg ICAgICAoImNvc19jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwgImhl YWRfc2l6ZV9kaXZfMiIpKSwKLSsgICAgICAgICAgICAgICAgKCJzaW5fY2FjaGUiLCBUZW5zb3JQ cm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCi0rICAgICAg ICAgICAgICAgICgicG9zaXRpb25faWRzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiQiIsICJzZXFf bGVuIikpLAotKyAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg ICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKLS0gICAg ICAgICAgICAgICAgICAgIFsieCJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCi0tICAg ICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAgICAgICAgICAg ICAgICBrZXlzX3RlbnNvcj1rZXlfdGVuc29yLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWVz X3RlbnNvcj12YWx1ZXNfdGVuc29yLAotLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90ZW5z b3I9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHRfdGVuc29y IiwgVGVuc29yUHJvdG8uSU5UMzIsIFsxXSwgWzBdCi0tICAgICAgICAgICAgICAgICAgICApLAot KyAgICAgICAgICAgICAgICAgICAgIlJvdGFyeUVtYmVkZGluZyIsCi0rICAgICAgICAgICAgICAg ICAgICBbIlgiLCAiY29zX2NhY2hlIiwgInNpbl9jYWNoZSIsICJwb3NpdGlvbl9pZHMiXSwKLSsg ICAgICAgICAgICAgICAgICAgIFsiWSJdLAotKyAgICAgICAgICAgICAgICAgICAgbnVtX2hlYWRz PTQsCi0gICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICBdLAotICAgICAgICAgICAgIFtd LAotICAgICAgICAgKQotLQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0tICAgICAgICAg ICAgb25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCi0tICAgICAgICAgICAgc2Vs Zi5faW5mZXJyZWQsCi0rICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0gICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1vcHNldF9pbXBvcnRzLAotLSAg ICAgICAgKQotLQotLSAgICAgICAgIyBkZWZhdWx0X3RlbnNvciBzaG91bGQgYmUgYSBzaW5nbGV0 b24gb2Ygc2hhcGUgKDEsKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIE5vbmUsIDMsIDEyKSld LAotICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAg ICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAgICAgICAgICAgICAgICAgICBbIngiXSwK LS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAgICAgZG9tYWlu PU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAgICAgICAga2V5c190ZW5zb3I9a2V5X3Rl bnNvciwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19zdHJpbmdzPVsiYSIsICJiIiwgImNj IiwgImRkZCJdLAotLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5z b3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHRfdGVuc29yIiwgVGVuc29yUHJv dG8uU1RSSU5HLCBbMSwgMl0sIFsiYSIsICJiIl0KLS0gICAgICAgICAgICAgICAgICAgICksCi0r ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCi0rICAgICAgICAgICAgICAg ICAgICAiWSIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAic2VxX2xlbiIsICJoaWRkZW5fc2l6 ZSIpCi0gICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtd LAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0tICAgICAgICAg ICAgb25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCi0tICAgICAgICAgICAgc2Vs Zi5faW5mZXJyZWQsCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1vcHNldF9pbXBvcnRzLAotICAgICAgICAgKQotIAotICAgICBkZWYgbWFrZV9zcGFyc2Uo Ci1AQCAtODc0NiwxMDUgKzY5OTAsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNo YXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZChncmFwaCwgW291dHB1dF90ZW5zb3JfdmFsX2luZm9dKQotIAotLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKLS0gICAgZGVm IHRlc3Rfc3RyaW5nX3NwbGl0X2Jhc2ljKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAg ICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKLS0gICAgICAgICAgICAi c3Vic3RyaW5ncyIsCi0tICAgICAgICAgICAgVGVuc29yUHJvdG8uU1RSSU5HLAotLSAgICAgICAg ICAgICgyLCBOb25lKSwKLS0gICAgICAgICkKLS0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKQotLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAg ICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwpKSwKLS0gICAgICAgICAgICBdLAotLSAg ICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIs ICJsZW5ndGgiXSldLAotLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAg ICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0g ICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IlN0cmluZ1NwbGl0IikpCi0tICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdF9zeW1ib2xpYyhzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgInN1YnN0cmluZ3MiLAotLSAgICAgICAgICAgIFRl bnNvclByb3RvLlNUUklORywKLS0gICAgICAgICAgICAoIkEiLCBOb25lKSwKLS0gICAgICAgICkK LS0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNv clByb3RvLklOVDY0LCAoIkEiLCkpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJ TkcsICgiQSIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJT dHJpbmdTcGxpdCIsIFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0pXSwKLS0gICAgICAg ICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbc3Vic3Ry aW5ncywgbGVuZ3RoXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxpdCIpKQotLSAgICBk ZWYgdGVzdF9zdHJpbmdfc3BsaXRfbmVzdGVkKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0t ICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKLS0gICAgICAgICAg ICAic3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDQsIDMsIE5vbmUpCi0tICAg ICAgICApCi0tICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDQsIDMpKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29y UHJvdG8uU1RSSU5HLCAoMiwgNCwgMykpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg W21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJd LCBtYXhzcGxpdD0yKV0sCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiU3RyaW5nU3BsaXQiKSkKLS0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X3plcm9fZGltZW5z aW9uYWxfaW5wdXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHN1YnN0cmlu Z3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzdWJzdHJpbmdzIiwgVGVuc29yUHJvdG8uU1RS SU5HLCAoTm9uZSwpKQotLSAgICAgICAgbGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi bGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKQotLQotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uU1RSSU5HLCAoKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJTdHJpbmdTcGxpdCIsIFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0sIG1h eHNwbGl0PTIpXSwKLS0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0gICAgICAg ICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAg ICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJT dHJpbmdTcGxpdCIpKQotLSAgICBkZWYgdGVzdF9zdHJpbmdfc3BsaXRfZW1wdHlfaW5wdXQoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKAotLSAgICAgICAgICAgICJzdWJzdHJpbmdzIiwgVGVuc29yUHJvdG8uU1RS SU5HLCAoIk0iLCAzLCAwLCBOb25lKQotLSAgICAgICAgKQotLSAgICAgICAgbGVuZ3RoID0gbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiTSIsIDMs IDApKQotLQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCAzLCAw KSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdTcGxp dCIsIFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0sIG1heHNwbGl0PTIpXSwKLS0gICAg ICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbc3Vi c3RyaW5ncywgbGVuZ3RoXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0gICAgIGRl ZiB0ZXN0X29wdGlvbmFsX3RlbnNvcl9nZXRfZWxlbWVudChzZWxmKSAtPiBOb25lOgotICAgICAg ICAgdGVuc29yX3R5cGVfcHJvdG8gPSBoZWxwZXIubWFrZV90ZW5zb3JfdHlwZV9wcm90bygKLSAg ICAgICAgICAgICBlbGVtX3R5cGU9VGVuc29yUHJvdG8uRE9VQkxFLCBzaGFwZT1bMiwgMSwgNF0K LUBAIC05NDUyLDQyNiArNzU5Nyw3NiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNo YXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLSAgICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAg ICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICkKLS0KLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK LS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLS0gICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkp LAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkhhbm5X aW5kb3ciLCBbInNoYXBlIl0sIFsieSJdLCBwZXJpb2RpYz0wKSwKLS0gICAgICAgICAgICBdLAot LSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkp LAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxMCwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQotLSAgICBk ZWYgdGVzdF9ibGFja21hbndpbmRvdyhzZWxmKToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAg ICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLS0gICAg ICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklO VDY0LCAoKSwgKDEwLCkpLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBt YWtlX25vZGUoIkJsYWNrbWFuV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSksCi0tICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLkZMT0FULCAoMTAsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0K LS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAg ICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAg ICAgICAgICAgIFsic2hhcGUiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVu c29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAotLSAgICAgICAgICAg ICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkJsYWNrbWFuV2luZG93IiwgWyJz aGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAg ICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAo MTAsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAg bmFtZSwKLS0gICAgICAgICAgICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAgICAgICAgdGVzdF9h c3BlY3QsCi0tICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlLAotLSAgICAgICAgICAgICAgICBh eGlzLAotLSAgICAgICAgICAgICAgICBvbmVzaWRlZCwKLS0gICAgICAgICAgICAgICAgaW52ZXJz ZSwKLS0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfc2hhcGUsCi0tICAgICAgICAgICAgKQotLSAg ICAgICAgICAgIGZvciAobmFtZSwgdmVyc2lvbiksICgKLS0gICAgICAgICAgICAgICAgdGVzdF9h c3BlY3QsCi0tICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlLAotLSAgICAgICAgICAgICAgICBh eGlzLAotLSAgICAgICAgICAgICAgICBvbmVzaWRlZCwKLS0gICAgICAgICAgICAgICAgaW52ZXJz ZSwKLS0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfc2hhcGUsCi0tICAgICAgICAgICAgKSBpbiBp dGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAgICAgYWxsX3ZlcnNpb25zX2ZvcigiREZU IiksCi0tICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfZGVm YXVsdF9heGlzIiwgKDIsIDUsIDEpLCBOb25lLCBOb25lLCBOb25lLCAoMiwgNSwgMikpLAotLSAg ICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzAiLCAoMywgNSwgMTAsIDEpLCAwLCAwLCAw LCAoMywgNSwgMTAsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18xIiwg KDMsIDUsIDEwLCAxKSwgMSwgMCwgMCwgKDMsIDUsIDEwLCAyKSksCi0tICAgICAgICAgICAgICAg ICAgICAoInJlYWxzX2F4aXNfMiIsICgzLCA1LCAxMCwgMSksIDIsIDAsIDAsICgzLCA1LCAxMCwg MikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzX25lZyIsICgzLCA1LCAxMCwg MSksIC0yLCAwLCAwLCAoMywgNSwgMTAsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVh bHNfYXhpc18wX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMCwgMSwgMCwgKDIsIDUsIDEwLCAy KSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMV9vbmVzaWRlZCIsICgzLCA1 LCAxMCwgMSksIDEsIDEsIDAsICgzLCAzLCAxMCwgMikpLAotLSAgICAgICAgICAgICAgICAgICAg KCJyZWFsc19heGlzXzJfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAyLCAxLCAwLCAoMywgNSwg NiwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzX25lZ19vbmVzaWRlZCIs ICgzLCA1LCAxMCwgMSksIC0yLCAxLCAwLCAoMywgNSwgNiwgMikpLAotLSAgICAgICAgICAgICAg ICAgICAgKCJjb21wbGV4X2RlZmF1bHRfYXhpcyIsICgyLCA1LCAyKSwgTm9uZSwgTm9uZSwgTm9u ZSwgKDIsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbF9pbnZlcnNlIiwgKDIs IDUsIDEpLCAxLCBOb25lLCAxLCAoMiwgNSwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJj b21wbGV4X2ludmVyc2UiLCAoMiwgNSwgMiksIDEsIE5vbmUsIDEsICgyLCA1LCAyKSksCi0tICAg ICAgICAgICAgICAgICAgICAoImlyZmZ0X2F4aXNfMCIsICgyLCA1LCAxMCwgMiksIDAsIDEsIDEs ICgyLCA1LCAxMCwgMSkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJpcmZmdF9heGlzXzEiLCAo MywgMywgMTAsIDIpLCAxLCAxLCAxLCAoMywgNCwgMTAsIDEpKSwKLS0gICAgICAgICAgICAgICAg ICAgICgiaXJmZnRfYXhpc18yIiwgKDMsIDUsIDYsIDIpLCAyLCAxLCAxLCAoMywgNSwgMTAsIDEp KSwKLS0gICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc19uZWciLCAoMywgNSwgNiwgMiks IC0yLCAxLCAxLCAoMywgNSwgMTAsIDEpKSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICApCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfZGZ0KAotLSAgICAgICAg c2VsZiwKLS0gICAgICAgIF86IHN0ciwKLS0gICAgICAgIHZlcnNpb246IGludCwKLS0gICAgICAg IF90ZXN0X2FzcGVjdDogc3RyLAotLSAgICAgICAgaW5wdXRfc2hhcGU6IHR1cGxlW2ludF0sCi0t ICAgICAgICBheGlzOiBpbnQgfCBOb25lLAotLSAgICAgICAgb25lc2lkZWQ6IGludCB8IE5vbmUs Ci0tICAgICAgICBpbnZlcnNlOiBpbnQgfCBOb25lLAotLSAgICAgICAgZXhwZWN0ZWRfc2hhcGU6 IHR1cGxlW2ludF0sCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgICMgQnVpbGQgdGhlIGF0dHJp YnV0ZXMgZm9yIGRpZmZlcmVudCBvcHNldCB2ZXJzaW9ucwotLSAgICAgICAgYXR0cmlidXRlcyA9 IHt9Ci0tICAgICAgICBpZiBvbmVzaWRlZCBpcyBub3QgTm9uZToKLS0gICAgICAgICAgICBhdHRy aWJ1dGVzWyJvbmVzaWRlZCJdID0gb25lc2lkZWQKLS0gICAgICAgIGlmIGludmVyc2UgaXMgbm90 IE5vbmU6Ci0tICAgICAgICAgICAgYXR0cmlidXRlc1siaW52ZXJzZSJdID0gaW52ZXJzZQotLQot LSAgICAgICAgaWYgdmVyc2lvbiA8IDIwOgotLSAgICAgICAgICAgIGlmIGF4aXMgaXMgbm90IE5v bmU6Ci0tICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbImF4aXMiXSA9IGF4aXMKLS0gICAgICAg ICAgICBub2RlcyA9IFttYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIl0sIFsib3V0cHV0Il0s ICoqYXR0cmlidXRlcyldCi0tICAgICAgICAgICAgdmFsdWVfaW5mb3MgPSBbXQotLSAgICAgICAg ZWxzZToKLS0gICAgICAgICAgICBhc3NlcnQgdmVyc2lvbiA+PSAyMAotLSAgICAgICAgICAgIGlm IGF4aXMgaXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgICAgIG5vZGVzID0gWwotLSAgICAgICAg ICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFu dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICAg ICAgWyJheGlzIl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3Io ImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksIChheGlzLCkpLAotLSAgICAgICAgICAgICAg ICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIs ICIiLCAiYXhpcyJdLCBbIm91dHB1dCJdLCAqKmF0dHJpYnV0ZXMpLAotLSAgICAgICAgICAgICAg ICBdCi0tICAgICAgICAgICAgICAgIHZhbHVlX2luZm9zID0gW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXQotLSAgICAgICAgICAgIGVsc2U6Ci0t ICAgICAgICAgICAgICAgIG5vZGVzID0gWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2Rl KCJERlQiLCBbImlucHV0IiwgIiIsICIiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwKLS0g ICAgICAgICAgICAgICAgXQotLSAgICAgICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFtdCi0tCi0t ICAgICAgICAjIENvbnN0cnVjdCB0aGUgZ3JhcGgKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAg ICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKLS0gICAg ICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAg ICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfc2hhcGUsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgbnAub25lcyhpbnB1dF9zaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigp LAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICAgICAgKm5vZGVzLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBpbnB1dF9zaGFwZSksCi0tICAgICAgICAg ICAgICAgICp2YWx1ZV9pbmZvcywKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVkX3NoYXBlKSwKLS0gICAg ICAgICAgICBdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAg ICAgbmFtZSwKLS0gICAgICAgICAgICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAgICAgICAgdGVz dF9hc3BlY3QsCi0tICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlLAotLSAgICAgICAgICAgICAg ICBheGlzLAotLSAgICAgICAgICAgICAgICBvbmVzaWRlZCwKLS0gICAgICAgICAgICAgICAgaW52 ZXJzZSwKLS0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfc2hhcGUsCi0tICAgICAgICAgICAgKQot LSAgICAgICAgICAgIGZvciAobmFtZSwgdmVyc2lvbiksICgKLS0gICAgICAgICAgICAgICAgdGVz dF9hc3BlY3QsCi0tICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlLAotLSAgICAgICAgICAgICAg ICBheGlzLAotLSAgICAgICAgICAgICAgICBvbmVzaWRlZCwKLS0gICAgICAgICAgICAgICAgaW52 ZXJzZSwKLS0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfc2hhcGUsCi0tICAgICAgICAgICAgKSBp biBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAgICAgYWxsX3ZlcnNpb25zX2Zvcigi REZUIiksCi0tICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNf ZGVmYXVsdF9heGlzIiwgKDIsIDUsIDEpLCBOb25lLCBOb25lLCBOb25lLCAoMiwgNDIsIDIpKSwK LS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18wIiwgKDMsIDUsIDEwLCAxKSwgMCwg MCwgMCwgKDQyLCA1LCAxMCwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlz XzEiLCAoMywgNSwgMTAsIDEpLCAxLCAwLCAwLCAoMywgNDIsIDEwLCAyKSksCi0tICAgICAgICAg ICAgICAgICAgICAoInJlYWxzX2F4aXNfMiIsICgzLCA1LCAxMCwgMSksIDIsIDAsIDAsICgzLCA1 LCA0MiwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzX25lZyIsICgzLCA1 LCAxMCwgMSksIC0yLCAwLCAwLCAoMywgNSwgNDIsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAg ICgicmVhbHNfYXhpc18wX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMCwgMSwgMCwgKDIyLCA1 LCAxMCwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzFfb25lc2lkZWQi LCAoMywgNSwgMTAsIDEpLCAxLCAxLCAwLCAoMywgMjIsIDEwLCAyKSksCi0tICAgICAgICAgICAg ICAgICAgICAoInJlYWxzX2F4aXNfMl9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDIsIDEsIDAs ICgzLCA1LCAyMiwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzX25lZ19v bmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIC0yLCAxLCAwLCAoMywgNSwgMjIsIDIpKSwKLS0gICAg ICAgICAgICAgICAgICAgICgiY29tcGxleF9kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMiksIE5vbmUs IE5vbmUsIE5vbmUsICgyLCA0MiwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsX2lu dmVyc2UiLCAoMiwgNSwgMSksIDEsIE5vbmUsIDEsICgyLCA0MiwgMikpLAotLSAgICAgICAgICAg ICAgICAgICAgKCJjb21wbGV4X2ludmVyc2UiLCAoMiwgNSwgMiksIDEsIE5vbmUsIDEsICgyLCA0 MiwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJpcmZmdF9heGlzXzAiLCAoMiwgNSwgMTAs IDIpLCAwLCAxLCAxLCAoNDIsIDUsIDEwLCAxKSksCi0tICAgICAgICAgICAgICAgICAgICAoImly ZmZ0X2F4aXNfMSIsICgzLCAzLCAxMCwgMiksIDEsIDEsIDEsICgzLCA0MiwgMTAsIDEpKSwKLS0g ICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc18yIiwgKDMsIDUsIDYsIDIpLCAyLCAxLCAx LCAoMywgNSwgNDIsIDEpKSwKLS0gICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc19uZWci LCAoMywgNSwgNiwgMiksIC0yLCAxLCAxLCAoMywgNSwgNDIsIDEpKSwKLS0gICAgICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICApCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3Rf ZGZ0X2RmdF9sZW5ndGgoCi0tICAgICAgICBzZWxmLAotLSAgICAgICAgXzogc3RyLAotLSAgICAg ICAgdmVyc2lvbjogaW50LAotLSAgICAgICAgX3Rlc3RfYXNwZWN0OiBzdHIsCi0tICAgICAgICBp bnB1dF9zaGFwZTogdHVwbGVbaW50XSwKLS0gICAgICAgIGF4aXM6IGludCB8IE5vbmUsCi0tICAg ICAgICBvbmVzaWRlZDogaW50IHwgTm9uZSwKLS0gICAgICAgIGludmVyc2U6IGludCB8IE5vbmUs Ci0tICAgICAgICBleHBlY3RlZF9zaGFwZTogdHVwbGVbaW50XSwKLS0gICAgKSAtPiBOb25lOgot LSAgICAgICAgIyBCdWlsZCB0aGUgYXR0cmlidXRlcyBmb3IgZGlmZmVyZW50IG9wc2V0IHZlcnNp b25zCi0tICAgICAgICBhdHRyaWJ1dGVzID0ge30KLS0gICAgICAgIGlmIG9uZXNpZGVkIGlzIG5v dCBOb25lOgotLSAgICAgICAgICAgIGF0dHJpYnV0ZXNbIm9uZXNpZGVkIl0gPSBvbmVzaWRlZAot LSAgICAgICAgaWYgaW52ZXJzZSBpcyBub3QgTm9uZToKLS0gICAgICAgICAgICBhdHRyaWJ1dGVz WyJpbnZlcnNlIl0gPSBpbnZlcnNlCi0tCi0tICAgICAgICBkZnRfbGVuZ3RoID0gNDIKLS0KLS0g ICAgICAgIGlmIHZlcnNpb24gPCAyMDoKLS0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25l OgotLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzWyJheGlzIl0gPSBheGlzCi0tICAgICAgICAg ICAgbm9kZXMgPSBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAg ICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAg ICAgICAgICAgIFsiZGZ0X2xlbmd0aCJdLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFr ZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImRmdF9sZW5ndGgiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKCksIChkZnRfbGVuZ3RoLCkKLS0gICAgICAgICAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJp bnB1dCIsICJkZnRfbGVuZ3RoIl0sIFsib3V0cHV0Il0sICoqYXR0cmlidXRlcyksCi0tICAgICAg ICAgICAgXQotLSAgICAgICAgICAgIHZhbHVlX2luZm9zID0gW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXQotLSAgICAgICAgZWxzZToK LS0gICAgICAgICAgICBhc3NlcnQgdmVyc2lvbiA+PSAyMAotLSAgICAgICAgICAgIGlmIGF4aXMg aXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgICAgIG5vZGVzID0gWwotLSAgICAgICAgICAgICAg ICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgWyJh eGlzIl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoImF4aXMi LCBUZW5zb3JQcm90by5JTlQ2NCwgKCksIChheGlzLCkpLAotLSAgICAgICAgICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAg ICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIFsiZGZ0X2xlbmd0aCJdLAotLSAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGZ0X2xl bmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKGRmdF9sZW5ndGgsKQotLSAgICAgICAgICAg ICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJERlQiLAotLSAgICAg ICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAiZGZ0X2xlbmd0aCIsICJheGlzIl0sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAqKmF0dHJpYnV0ZXMsCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICBdCi0tICAgICAgICAgICAgICAgIHZhbHVlX2luZm9zID0gWwotLSAgICAgICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0 LCAoKSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlz IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAgICAgICAgICAgICAgXQotLSAgICAgICAg ICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgIG5vZGVzID0gWwotLSAgICAgICAgICAgICAgICAg ICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgWyJkZnRf bGVuZ3RoIl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5U NjQsICgpLCAoZGZ0X2xlbmd0aCwpCi0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAg ICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgIkRGVCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgWyJp bnB1dCIsICJkZnRfbGVuZ3RoIiwgIiJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsib3V0 cHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgKiphdHRyaWJ1dGVzLAotLSAgICAgICAg ICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgXQotLSAgICAgICAgICAgICAgICB2YWx1 ZV9pbmZvcyA9IFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o ImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpCi0tICAgICAgICAgICAgICAgIF0K LSsgICAgICAgICAgICBncmFwaCwKLSsgICAgICAgICAgICBbCi0rICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLSsg ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZM T0FULCAoMTAsKSksCi0rICAgICAgICAgICAgXSwKLSsgICAgICAgICkKLSAKLS0gICAgICAgICMg Q29uc3RydWN0IHRoZSBncmFwaAotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot ICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgbWFrZV9u b2RlKAotICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLSAgICAgICAgICAgICAgICAg ICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAotLSAgICAgICAgICAgICAg ICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0 IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBu cC5vbmVzKGlucHV0X3NoYXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCi0tICAgICAg ICAgICAgICAgICAgICApLAotKyAgICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAotKyAgICAg ICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgpLCAoMTAsKSksCi0gICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICpu b2RlcywKLSsgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW5uV2luZG93IiwgWyJzaGFwZSJd LCBbInkiXSwgcGVyaW9kaWM9MCksCi0gICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbXSwK LSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSAgICAgICAgICAg ICBncmFwaCwKLSAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIGlucHV0X3NoYXBlKSwKLS0gICAg ICAgICAgICAgICAgKnZhbHVlX2luZm9zLAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfc2hhcGUpLAot KyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoKSksCi0rICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAotICAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAotICAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAg ICAgICBbCi0tICAgICAgICAgICAgKCJsYXN0IiwgMyksCi0tICAgICAgICAgICAgKCJsYXN0X25l Z2F0aXZlIiwgLTEpLAotLSAgICAgICAgICAgICgib3V0X29mX3JhbmdlIiwgNCksCi0tICAgICAg ICAgICAgKCJvdXRfb2ZfcmFuZ2VfbmVnYXRpdmUiLCAtNSksCi0tICAgICAgICBdCi0tICAgICkK LS0gICAgZGVmIHRlc3RfZGZ0X2ludmFsaWRfYXhpc19vcHNldDE3KHNlbGYsIF86IHN0ciwgYXhp czogaW50KSAtPiBOb25lOgotKyAgICBkZWYgdGVzdF9ibGFja21hbndpbmRvdyhzZWxmKToKLSAg ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLSAgICAgICAgICAgICBbXSwKLSAgICAg ICAgICAgICBbCi0gICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLSAgICAgICAgICAgICAgICAg ICAgICJDb25zdGFudCIsCi0gICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAg ICAgICAgIFsiaW5wdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29y KAotLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKDIsIDUs IDUsIDIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMoKDIsIDUsIDUsIDIpLCBk dHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCi0tICAgICAgICAgICAgICAgICAgICApLAotKyAg ICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAotKyAgICAgICAgICAgICAgICAgICAgdmFsdWU9 bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCi0gICAg ICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1 dCIsICIiXSwgWyJvdXRwdXQiXSwgb25lc2lkZWQ9MSwgYXhpcz1heGlzKSwKLSsgICAgICAgICAg ICAgICAgbWFrZV9ub2RlKCJIYW1taW5nV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSksCi0gICAg ICAgICAgICAgXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLS0gICAgICAgIHdpdGgg c2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IpOgot LSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA1LCA1LCAyKSksCi0t ICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsIDMsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgMTcpXSwKLS0gICAgICAgICAgICApCi0rICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0rICAgICAgICAgICAgZ3JhcGgsCi0rICAgICAgICAgICAgWwotKyAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCi0r ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5G TE9BVCwgKDEwLCkpLAotKyAgICAgICAgICAgIF0sCi0rICAgICAgICApCi0gCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoImxhc3QiLCAzKSwK LS0gICAgICAgICAgICAoImxhc3RfbmVnYXRpdmUiLCAtMSksCi0tICAgICAgICAgICAgKCJvdXRf b2ZfcmFuZ2UiLCA0KSwKLS0gICAgICAgICAgICAoIm91dF9vZl9yYW5nZV9uZWdhdGl2ZSIsIC01 KSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZnRfaW52YWxpZF9heGlzX29w c2V0MjAoc2VsZiwgXzogc3RyLCBheGlzOiBpbnQpIC0+IE5vbmU6Ci0gICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAgWwotICAg ICAgICAgICAgICAgICBtYWtlX25vZGUoCi0gICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQi LAotICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBbImlucHV0 Il0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKLS0gICAgICAgICAg ICAgICAgICAgICAgICAiaW5wdXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclBy b3RvLkZMT0FULAotLSAgICAgICAgICAgICAgICAgICAgICAgICgyLCA1LCA1LCAyKSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICBucC5vbmVzKCgyLCA1LCA1LCAyKSwgZHR5cGU9bnAuZmxvYXQz MikuZmxhdHRlbigpLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkNv bnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAg WyJheGlzIl0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigiYXhpcyIs IFRlbnNvclByb3RvLklOVDY0LCAoKSwgKGF4aXMsKSksCi0rICAgICAgICAgICAgICAgICAgICBb InNoYXBlIl0sCi0rICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKLSAgICAgICAgICAgICAgICAgKSwKLS0g ICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsi b3V0cHV0Il0pLAotKyAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkhhbW1pbmdXaW5kb3ciLCBb InNoYXBlIl0sIFsieSJdLCBwZXJpb2RpYz0wKSwKLSAgICAgICAgICAgICBdLAotICAgICAgICAg ICAgIFtdLAotICAgICAgICAgKQotLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54 LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvcik6Ci0tICAgICAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICAgICAg WwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDIsIDUsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotLSAg ICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCAzLCA1LCAyKSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IDIwKV0sCi0tICAgICAgICAgICAgKQotKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot KyAgICAgICAgICAgIGdyYXBoLAotKyAgICAgICAgICAgIFsKLSsgICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotKyAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxP QVQsICgxMCwpKSwKLSsgICAgICAgICAgICBdLAotKyAgICAgICAgKQotIAotICAgICBkZWYgdGVz dF9kZnRfcmZmdF9pbnZhbGlkX2NvbXBsZXhfaW5wdXRfb3BzZXQxNyhzZWxmKSAtPiBOb25lOgot ICAgICAgICAgIiIiVGVzdCB0aGF0IFJGRlQgKG9uZXNpZGVkPTEsIGludmVyc2U9MCkgcmVqZWN0 cyBjb21wbGV4IGlucHV0IiIiCi1AQCAtMTAwMTEsMTI4ICs3ODA2LDYgQEAgY2xhc3MgVGVzdFNo YXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDIwKV0sCi0g ICAgICAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBb Ci0tICAgICAgICAgICAgKCJyZWFsIiwgKDIsIDUsIDUsIDEpKSwKLS0gICAgICAgICAgICAoImNv bXBsZXgiLCAoMiwgNSwgNSwgMikpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0 X2RmdF9keW5hbWljX2F4aXNfb3BzZXQyMChzZWxmLCBfOiBzdHIsIHNoYXBlOiB0dXBsZVtpbnQs IC4uLl0pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAg ICAgICAgICAgWygiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldLAotLSAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkNv bnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAg WyJpbnB1dCJdLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBU ZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICBucC5vbmVzKHNoYXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0 dGVuKCksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICApLAotLSAg ICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJv dXRwdXQiXSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkK LS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0g ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlu cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA1LCA1LCAy KSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAotLSAgICAgICAgKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKCJyZWFsIiwgKDIs IDUsIDUsIDEpKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZnRfZHluYW1p Y19heGlzX29uZXNpZGVkX2RmdF9sZW5ndGhfb3BzZXQyMCgKLS0gICAgICAgIHNlbGYsIF86IHN0 ciwgc2hhcGU6IHR1cGxlW2ludCwgLi4uXQotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygiYXhpcyIsIFRlbnNvclByb3Rv LklOVDY0LCAoKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2Rl KAotLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAg IFtdLAotLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAotLSAgICAgICAgICAgICAgICAg ICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwK LS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICBzaGFwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKHNo YXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCi0tICAgICAgICAgICAgICAgICAgICAp LAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAg ICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0t ICAgICAgICAgICAgICAgICAgICBbImRmdF9sZW5ndGgiXSwKLS0gICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJkZnRfbGVuZ3Ro IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShb NDJdLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAg ICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAg ICAgICAiREZUIiwgWyJpbnB1dCIsICJkZnRfbGVuZ3RoIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwg b25lc2lkZWQ9MQotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0t ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBzaGFwZSksCi0t ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCkpLAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKAotLSAgICAgICAgICAgICAgICAgICAgIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAo Tm9uZSwgTm9uZSwgTm9uZSwgMikKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIDIwKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgK LS0gICAgICAgIFsKLS0gICAgICAgICAgICAoInJlYWwiLCAoMiwgNSwgNSwgMSkpLAotLSAgICAg ICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2RmdF9keW5hbWljX2F4aXNfb25lc2lkZWRfb3Bz ZXQyMCgKLS0gICAgICAgIHNlbGYsIF86IHN0ciwgc2hhcGU6IHR1cGxlW2ludCwgLi4uXQotLSAg ICApIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgWygiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldLAotLSAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0 YW50IiwKLS0gICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgWyJp bnB1dCJdLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAg ICAgICAgICAgICAgICAgICAgImlucHV0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5z b3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBucC5vbmVzKHNoYXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVu KCksCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAg ICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRw dXQiXSwgb25lc2lkZWQ9MSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBn cmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlKSwKLS0gICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKLS0gICAgICAgICAgICAgICAgICAgICJvdXRwdXQi LCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5vbmUsIDIpCi0tICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAotLSAgICAgICAgKQotLQotICAgICBk ZWYgdGVzdF9kZnRfb25lc2lkZWRfZGVmYXVsdF9heGlzX29wc2V0MTcoc2VsZikgLT4gTm9uZToK LSAgICAgICAgICMgT3BzZXQgMTcgc2V0cyBkZWZhdWx0IGF4aXMgdG8gYmUgMS4KLSAgICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLUBAIC0xMDU5MSw0MSArODI2NCw2IEBAIGNsYXNz IFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAg ICAgIF0sCi0gICAgICAgICApCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAg ICAgIFsKLS0gICAgICAgICAgICAoWzEsIDIsIDNdLCBbIjEiLCAiMiJdKSwKLS0gICAgICAgICAg ICAoWzEsIDIsIDNdLCBOb25lKSwKLS0gICAgICAgICAgICAoTm9uZSwgWyIxIiwgIjIiLCAiMyJd KSwKLS0gICAgICAgICAgICAoTm9uZSwgTm9uZSksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAg QHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBh aS5vbm54Lm1sIG9wZXJhdG9ycyIpCi0tICAgIGRlZiB0ZXN0X2NhdGVnb3J5X21hcHBlcl9mYWls c19pZl9pbnZhbGlkX2F0dHJpYnV0ZXMoCi0tICAgICAgICBzZWxmLCBjYXRzX2ludDY0cywgY2F0 c19zdHJpbmdzCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIGNhdCA9IG1ha2Vfbm9kZSgKLS0g ICAgICAgICAgICAiQ2F0ZWdvcnlNYXBwZXIiLAotLSAgICAgICAgICAgIFsieCJdLAotLSAgICAg ICAgICAgIFsieSJdLAotLSAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAg ICAgICAgICBjYXRzX2ludDY0cz1jYXRzX2ludDY0cywKLS0gICAgICAgICAgICBjYXRzX3N0cmlu Z3M9Y2F0c19zdHJpbmdzLAotLSAgICAgICAgKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMwLCA0LCA1 KSldLAotLSAgICAgICAgICAgIFtjYXRdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0tICAgICAgICAgICAgb25ueC5zaGFwZV9pbmZl cmVuY2UuSW5mZXJlbmNlRXJyb3IsCi0tICAgICAgICAgICAgc2VsZi5faW5mZXJyZWQsCi0tICAg ICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAgICAgICAg ICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgMSksCi0tICAgICAgICAgICAgICAg IG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICApCi0tCi0gICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVp cmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQotICAgICBkZWYgdGVzdF90cmVlX2Vu c2VtYmxlX3JlZ3Jlc3NvcihzZWxmKSAtPiBOb25lOgotICAgICAgICAgdHJlZSA9IG1ha2Vfbm9k ZSgKLUBAIC0xMDY0OSwxMzEgKzgyODcsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVz dFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICBdLAotICAgICAgICAgKQotIAot LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoW1RlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90 by5ET1VCTEUsIFRlbnNvclByb3RvLkZMT0FUMTZdKQotLSAgICBAdW5pdHRlc3Quc2tpcFVubGVz cyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3Jz IikKLS0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZShzZWxmLCBkdHlwZSkgLT4gTm9uZToKLS0g ICAgICAgIGludGVyaW9yX25vZGVzID0gNQotLSAgICAgICAgbGVhdmVzID0gOQotLSAgICAgICAg dHJlZSA9IG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAiVHJlZUVuc2VtYmxlIiwKLS0gICAgICAg ICAgICBbIngiXSwKLS0gICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICBkb21haW49T05O WF9NTF9ET01BSU4sCi0tICAgICAgICAgICAgbl90YXJnZXRzPTUsCi0tICAgICAgICAgICAgbm9k ZXNfZmVhdHVyZWlkcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBub2Rlc19z cGxpdHM9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiLAotLSAg ICAgICAgICAgICAgICBkdHlwZSwKLS0gICAgICAgICAgICAgICAgKGludGVyaW9yX25vZGVzLCks Ci0tICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoaW50ZXJpb3Jfbm9kZXMpKSwKLS0gICAgICAg ICAgICApLAotLSAgICAgICAgICAgIG5vZGVzX21vZGVzPW1ha2VfdGVuc29yKAotLSAgICAgICAg ICAgICAgICAibm9kZXNfbW9kZXMiLAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5U OCwKLS0gICAgICAgICAgICAgICAgKGludGVyaW9yX25vZGVzLCksCi0tICAgICAgICAgICAgICAg IFswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgbm9k ZXNfdHJ1ZW5vZGVpZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgbm9kZXNf ZmFsc2Vub2RlaWRzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVzX3Ry dWVsZWFmcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBub2Rlc19mYWxzZWxl YWZzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG1lbWJlcnNoaXBfdmFsdWVz PW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAibWVtYmVyc2hpcF92YWx1ZXMiLAotLSAg ICAgICAgICAgICAgICBkdHlwZSwKLS0gICAgICAgICAgICAgICAgKDcsKSwKLS0gICAgICAgICAg ICAgICAgWzAuMCwgMC4xLCAwLjIsIG5wLm5hbiwgMC40LCAwLjUsIDEuMF0sCi0tICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICBsZWFmX3RhcmdldGlkcz1bMF0gKiBsZWF2ZXMsCi0tICAgICAg ICAgICAgbGVhZl93ZWlnaHRzPW1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBkdHlwZSwgKGxl YXZlcywpLCBbMV0gKiBsZWF2ZXMpLAotLSAgICAgICAgICAgIHRyZWVfcm9vdHM9WzBdLAotLSAg ICAgICAgKQotLQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAg ICAgIFsoIngiLCBkdHlwZSwgKCJCYXRjaCBTaXplIiwgIkZlYXR1cmVzIikpXSwKLS0gICAgICAg ICAgICBbdHJlZV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBkdHlwZSwgKCJCYXRjaCBTaXplIiwgNSkpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNl dGlkKE9OTlhfTUxfRE9NQUlOLCA1KSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCAxMSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAg ICAgICAgICAgWzBdICogNiwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImxlYWZfd2Vp Z2h0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDksKSwgWzFdICogOSksCi0tICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yKCJub2Rlc19zcGxpdHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCks IFsxXSAqIDUpLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICBbMF0gKiA1LAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigibGVhZl93ZWlnaHRz IiwgVGVuc29yUHJvdG8uRkxPQVQsICg5LCksIFsxXSAqIDkpLAotLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcigibm9kZXNfc3BsaXRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoNSwpLCBbMV0g KiA1KSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAg WzBdICogNSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIFRl bnNvclByb3RvLkRPVUJMRSwgKDE4LCksIFsxXSAqIDE4KSwKLS0gICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3IoIm5vZGVzX3NwbGl0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDUsKSwgWzFdICog NSksCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsw XSAqIDUsCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBUZW5z b3JQcm90by5ET1VCTEUsICg5LCksIFsxXSAqIDkpLAotLSAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcigibm9kZXNfc3BsaXRzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg1LCksIFsxXSAqIDUpLAot LSAgICAgICAgICAgICksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgQHVuaXR0ZXN0LnNraXBV bmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJh dG9ycyIpCi0tICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfZmFpbHNfaWZfaW52YWxpZF9hdHRy aWJ1dGVzKAotLSAgICAgICAgc2VsZiwKLS0gICAgICAgIG5vZGVzX3RydWVub2RlaWRzLAotLSAg ICAgICAgbGVhZl93ZWlnaHRzLAotLSAgICAgICAgbm9kZXNfc3BsaXRzLAotLSAgICApIC0+IE5v bmU6Ci0tICAgICAgICBpbnRlcmlvcl9ub2RlcyA9IDUKLS0gICAgICAgIGxlYXZlcyA9IDkKLS0g ICAgICAgIHRyZWUgPSBtYWtlX25vZGUoCi0tICAgICAgICAgICAgIlRyZWVFbnNlbWJsZSIsCi0t ICAgICAgICAgICAgWyJ4Il0sCi0tICAgICAgICAgICAgWyJ5Il0sCi0tICAgICAgICAgICAgZG9t YWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgIG5fdGFyZ2V0cz01LAotLSAgICAgICAg ICAgIG5vZGVzX2ZlYXR1cmVpZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAg bm9kZXNfc3BsaXRzPW5vZGVzX3NwbGl0cywKLS0gICAgICAgICAgICBub2Rlc19tb2Rlcz1tYWtl X3RlbnNvcigKLS0gICAgICAgICAgICAgICAgIm5vZGVzX21vZGVzIiwKLS0gICAgICAgICAgICAg ICAgVGVuc29yUHJvdG8uVUlOVDgsCi0tICAgICAgICAgICAgICAgIChpbnRlcmlvcl9ub2Rlcywp LAotLSAgICAgICAgICAgICAgICBbMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICAp LAotLSAgICAgICAgICAgIG5vZGVzX3RydWVub2RlaWRzPW5vZGVzX3RydWVub2RlaWRzLAotLSAg ICAgICAgICAgIG5vZGVzX2ZhbHNlbm9kZWlkcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAg ICAgICAgICBub2Rlc190cnVlbGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAg ICAgbm9kZXNfZmFsc2VsZWFmcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBs ZWFmX3RhcmdldGlkcz1bMF0gKiBsZWF2ZXMsCi0tICAgICAgICAgICAgbGVhZl93ZWlnaHRzPWxl YWZfd2VpZ2h0cywKLS0gICAgICAgICAgICB0cmVlX3Jvb3RzPVswXSwKLS0gICAgICAgICkKLS0K LS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uRE9VQkxFLCAoIkJhdGNoIFNpemUiLCAiRmVhdHVyZXMiKSldLAotLSAgICAg ICAgICAgIFt0cmVlXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuYXNzZXJ0UmFpc2VzKAotLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVy ZW5jZUVycm9yLAotLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAotLSAgICAgICAgICAgIGdy YXBoLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtl X29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDUpLAotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQotICAg ICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0 IGFpLm9ubngubWwgb3BlcmF0b3JzIikKLSAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9jbGFz c2lmaWVyKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAotQEAgLTEw ODc4LDQwICs4MzkxLDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVy ZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgXSwKLSAgICAgICAgICkKLSAKLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgIChbMSwgMiwgM10sIFsi MSIsICIyIiwgIjMiXSksCi0tICAgICAgICAgICAgKE5vbmUsIE5vbmUpLAotLSAgICAgICAgXQot LSAgICApCi0tICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVp cmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQotLSAgICBkZWYgdGVzdF9vbmVfaG90 X2VuY29kZXJfZmFpbHNfaWZfaW52YWxpZF9hdHRyaWJ1dGVzKAotLSAgICAgICAgc2VsZiwgY2F0 c19pbnQ2NHMsIGNhdHNfc3RyaW5ncwotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygiaW5wdXQiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDIsICJOIiwgMykpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJPbmVIb3RFbmNvZGVyIiwKLS0gICAgICAg ICAgICAgICAgICAgIFsiaW5wdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsib3V0cHV0Il0s Ci0tICAgICAgICAgICAgICAgICAgICBjYXRzX2ludDY0cz1jYXRzX2ludDY0cywKLS0gICAgICAg ICAgICAgICAgICAgIGNhdHNfc3RyaW5ncz1jYXRzX3N0cmluZ3MsCi0tICAgICAgICAgICAgICAg ICAgICBkb21haW49ImFpLm9ubngubWwiLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNzZXJ0 UmFpc2VzKAotLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9y LAotLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAotLSAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQo T05OWF9NTF9ET01BSU4sIDEpLAotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQotICAgICBAdW5pdHRl c3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngu bWwgb3BlcmF0b3JzIikKLSAgICAgZGVmIHRlc3RfemlwX21hcChzZWxmKSAtPiBOb25lOgotICAg ICAgICAgcGFyYW1zID0gKAotQEAgLTExMDY2LDI4ICs4NTQ1LDYgQEAgY2xhc3MgVGVzdFNoYXBl SW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgb25ueC5j aGVja2VyLmNoZWNrX21vZGVsKG1vZGVsLCBmdWxsX2NoZWNrPVRydWUpCi0gICAgICAgICAgICAg b25ueC5zaGFwZV9pbmZlcmVuY2UuaW5mZXJfc2hhcGVzKG1vZGVsKQotIAotLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uc3RhbnRPZlNoYXBlIikpCi0tICAg IGRlZiB0ZXN0X2lzc3VlX2NvbnN0YW50b2ZzaGFwZV82MTM1KHNlbGYsIF8sIHZlcnNpb24pOgot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoInN0ZC5j b25zdGFudCIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwpKSwgIm91dHB1dCJdLAotLSAgICAgICAg ICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAg IkNvbnN0YW50T2ZTaGFwZSIsCi0tICAgICAgICAgICAgICAgICAgICBpbnB1dHM9WyJzdGQuY29u c3RhbnQiXSwKLS0gICAgICAgICAgICAgICAgICAgIG91dHB1dHM9WyJvdXRwdXQiXSwKLS0gICAg ICAgICAgICAgICAgICAgIG5hbWU9ImludmFsaWRfbm9kZSIsCi0tICAgICAgICAgICAgICAgICkK LS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxp emVyPVttYWtlX3RlbnNvcigic3RkLmNvbnN0YW50IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCks ICgtMTAsKSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0tICAg ICAgICAgICAgb25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCi0tICAgICAgICAg ICAgc2VsZi5faW5mZXJyZWQsCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotICAgICBkZWYgdGVzdF9wcm90b2J1Zl9kZWZhdWx0KHNlbGYpIC0+IE5v bmU6Ci0gICAgICAgICBtb2RlbF90ZXh0ID0gIiIiCi0gICAgICAgICAgICAgaXJfdmVyc2lvbjog OAotZGlmZiAtLWdpdCBhL29ubngvdGVzdC90ZXN0X2V4dGVybmFsX2RhdGEucHkgYi9vbm54L3Rl c3QvdGVzdF9leHRlcm5hbF9kYXRhLnB5Ci1pbmRleCBjMDg0NWY5NmEuLmViMDdmMDllOCAxMDA2 NDQKLS0tLSBhL29ubngvdGVzdC90ZXN0X2V4dGVybmFsX2RhdGEucHkKLSsrKyBiL29ubngvdGVz dC90ZXN0X2V4dGVybmFsX2RhdGEucHkKLUBAIC0xNCw3ICsxNCw2IEBAIGltcG9ydCB3YXJuaW5n cwotIGZyb20gdHlwaW5nIGltcG9ydCBUWVBFX0NIRUNLSU5HLCBBbnkKLSAKLSBpbXBvcnQgbnVt cHkgYXMgbnAKLS1pbXBvcnQgcGFyYW1ldGVyaXplZAotIAotIGltcG9ydCBvbm54Ci0gZnJvbSBv bm54IGltcG9ydCAoCi1AQCAtMTIzLDYxNiArMTIyLDYgQEAgY2xhc3MgVGVzdExvYWRFeHRlcm5h bERhdGFCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIGNoZWNrZXIuY2hlY2tfbW9k ZWwoc2VsZi5tb2RlbF9maWxlbmFtZSkKLSAKLSAKLS1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJp emVkX2NsYXNzKAotLSAgICBbCi0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInBy b3RvYnVmIn0sCi0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9 LAotLSAgICBdCi0tKQotLWNsYXNzIFRlc3RMb2FkRXh0ZXJuYWxEYXRhKFRlc3RMb2FkRXh0ZXJu YWxEYXRhQmFzZSk6Ci0tICAgIGRlZiB0ZXN0X2xvYWRfZXh0ZXJuYWxfZGF0YShzZWxmKSAtPiBO b25lOgotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFt ZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGluaXRpYWxpemVyX3RlbnNv ciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2Vy dF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVy X3ZhbHVlKQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVb MF0uYXR0cmlidXRlWzBdLnQKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRv X2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0gICAg ZGVmIHRlc3RfbG9hZF9leHRlcm5hbF9kYXRhX2Zvcl9tb2RlbChzZWxmKSAtPiBOb25lOgotLSAg ICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbF9m aWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZh bHNlCi0tICAgICAgICApCi0tICAgICAgICBsb2FkX2V4dGVybmFsX2RhdGFfZm9yX21vZGVsKG1v ZGVsLCBzZWxmLnRlbXBfZGlyKQotLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwu Z3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3Nl KHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0t Ci0tICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1 dGVbMF0udAotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0 cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQotLQotLSAgICBkZWYgdGVzdF9z YXZlX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIG1vZGVsID0gb25ueC5s b2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQp Ci0tCi0tICAgICAgICB0ZW1wX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAic2F2 ZV9jb3B5IikKLS0gICAgICAgIG9zLm1rZGlyKHRlbXBfZGlyKQotLSAgICAgICAgbmV3X21vZGVs X2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCi0tICAgICAg ICBvbm54LnNhdmVfbW9kZWwobW9kZWwsIG5ld19tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxp emF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIG5ld19tb2RlbCA9IG9ubngubG9hZF9tb2RlbChu ZXdfbW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBp bml0aWFsaXplcl90ZW5zb3IgPSBuZXdfbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAg ICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNv ciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAgICAgICBhdHRyaWJ1dGVfdGVuc29y ID0gbmV3X21vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKLS0gICAgICAgIG5wLnRl c3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0 dHJpYnV0ZV92YWx1ZSkKLS0KLS0KLS1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNz KAotLSAgICBbCi0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVmIn0s Ci0tICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAotLSAgICBd Ci0tKQotLWNsYXNzIFRlc3RMb2FkRXh0ZXJuYWxEYXRhU2luZ2xlRmlsZShUZXN0TG9hZEV4dGVy bmFsRGF0YUJhc2UpOgotLSAgICBkZWYgY3JlYXRlX2V4dGVybmFsX2RhdGFfdGVuc29ycygKLS0g ICAgICAgIHNlbGYsIHRlbnNvcnNfZGF0YTogbGlzdFt0dXBsZVtsaXN0W0FueV0sIEFueV1dCi0t ICAgICkgLT4gbGlzdFtUZW5zb3JQcm90b106Ci0tICAgICAgICB0ZW5zb3JfZmlsZW5hbWUgPSAi dGVuc29ycy5iaW4iCi0tICAgICAgICB0ZW5zb3JzID0gW10KLS0KLS0gICAgICAgIHdpdGggb3Bl bihvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgdGVuc29yX2ZpbGVuYW1lKSwgImFiIikgYXMg ZGF0YV9maWxlOgotLSAgICAgICAgICAgIGZvciB2YWx1ZSwgdGVuc29yX25hbWUgaW4gdGVuc29y c19kYXRhOgotLSAgICAgICAgICAgICAgICB0ZW5zb3IgPSBmcm9tX2FycmF5KG5wLmFycmF5KHZh bHVlKSkKLS0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gZGF0YV9maWxlLnRlbGwoKQotLSAgICAg ICAgICAgICAgICBpZiBvZmZzZXQgJSA0MDk2ICE9IDA6Ci0tICAgICAgICAgICAgICAgICAgICBk YXRhX2ZpbGUud3JpdGUoYiJcMCIgKiAoNDA5NiAtIG9mZnNldCAlIDQwOTYpKQotLSAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgNDA5NiAtIG9mZnNldCAlIDQwOTYKLS0KLS0g ICAgICAgICAgICAgICAgZGF0YV9maWxlLndyaXRlKHRlbnNvci5yYXdfZGF0YSkKLS0gICAgICAg ICAgICAgICAgc2V0X2V4dGVybmFsX2RhdGEoCi0tICAgICAgICAgICAgICAgICAgICB0ZW5zb3Is Ci0tICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj10ZW5zb3JfZmlsZW5hbWUsCi0tICAgICAg ICAgICAgICAgICAgICBvZmZzZXQ9b2Zmc2V0LAotLSAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro PWRhdGFfZmlsZS50ZWxsKCkgLSBvZmZzZXQsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAg ICAgICAgICAgdGVuc29yLm5hbWUgPSB0ZW5zb3JfbmFtZQotLSAgICAgICAgICAgICAgICB0ZW5z b3IuQ2xlYXJGaWVsZCgicmF3X2RhdGEiKQotLSAgICAgICAgICAgICAgICB0ZW5zb3IuZGF0YV9s b2NhdGlvbiA9IG9ubnguVGVuc29yUHJvdG8uRVhURVJOQUwKLS0gICAgICAgICAgICAgICAgdGVu c29ycy5hcHBlbmQodGVuc29yKQotLQotLSAgICAgICAgcmV0dXJuIHRlbnNvcnMKLS0KLS0gICAg ZGVmIHRlc3RfbG9hZF9leHRlcm5hbF9zaW5nbGVfZmlsZV9kYXRhKHNlbGYpIC0+IE5vbmU6Ci0t ICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxm LnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0g bW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2Fs bGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFs dWUpCi0tCi0tICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5h dHRyaWJ1dGVbMF0udAotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJy YXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQotLQotLSAgICBkZWYg dGVzdF9zYXZlX2V4dGVybmFsX3NpbmdsZV9maWxlX2RhdGEoc2VsZikgLT4gTm9uZToKLS0gICAg ICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICB0ZW1wX2RpciA9IG9zLnBhdGguam9pbihz ZWxmLnRlbXBfZGlyLCAic2F2ZV9jb3B5IikKLS0gICAgICAgIG9zLm1rZGlyKHRlbXBfZGlyKQot LSAgICAgICAgbmV3X21vZGVsX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAibW9k ZWwub25ueCIpCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwobW9kZWwsIG5ld19tb2RlbF9maWxl bmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIG5ld19tb2RlbCA9 IG9ubngubG9hZF9tb2RlbChuZXdfbW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9m b3JtYXQpCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBuZXdfbW9kZWwuZ3JhcGguaW5p dGlhbGl6ZXJbMF0KLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5 KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAgICAg ICBhdHRyaWJ1dGVfdGVuc29yID0gbmV3X21vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBd LnQKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0 ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu cGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAg ICAgICAgICAoVHJ1ZSwgRmFsc2UpLAotLSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0ZXN0 X3NhdmVfZXh0ZXJuYWxfaW52YWxpZF9zaW5nbGVfZmlsZV9kYXRhX2FuZF9jaGVjaygKLS0gICAg ICAgIHNlbGYsIHVzZV9hYnNvbHV0ZV9wYXRoOiBib29sCi0tICAgICkgLT4gTm9uZToKLS0gICAg ICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBtb2RlbF9kaXIgPSBvcy5wYXRoLmpvaW4o c2VsZi50ZW1wX2RpciwgInNhdmVfY29weSIpCi0tICAgICAgICBvcy5ta2Rpcihtb2RlbF9kaXIp Ci0tCi0tICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9kaXIgPSBvcy5wYXRoLmpvaW4o Ci0tICAgICAgICAgICAgc2VsZi50ZW1wX2RpciwgImludmFsaWRfZXh0ZXJuYWxfZGF0YSIKLS0g ICAgICAgICkKLS0gICAgICAgIG9zLm1rZGlyKHRyYXZlcnNhbF9leHRlcm5hbF9kYXRhX2RpcikK LS0KLS0gICAgICAgIGlmIHVzZV9hYnNvbHV0ZV9wYXRoOgotLSAgICAgICAgICAgIHRyYXZlcnNh bF9leHRlcm5hbF9kYXRhX2xvY2F0aW9uID0gb3MucGF0aC5qb2luKAotLSAgICAgICAgICAgICAg ICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9kaXIsICJ0ZW5zb3JzLmJpbiIKLS0gICAgICAgICAg ICApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHRyYXZlcnNhbF9leHRlcm5hbF9kYXRh X2xvY2F0aW9uID0gIi4uL2ludmFsaWRfZXh0ZXJuYWxfZGF0YS90ZW5zb3JzLmJpbiIKLS0KLS0g ICAgICAgIGV4dGVybmFsX2RhdGFfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJl eHRlcm5hbF9kYXRhIikKLS0gICAgICAgIG9zLm1rZGlyKGV4dGVybmFsX2RhdGFfZGlyKQotLSAg ICAgICAgbmV3X21vZGVsX2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG1vZGVsX2RpciwgIm1vZGVs Lm9ubngiKQotLQotLSAgICAgICAgZGVmIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9u b19jaGVjayhtb2RlbDogTW9kZWxQcm90bywgbG9jYXRpb246IHN0cik6Ci0tICAgICAgICAgICAg Zm9yIHRlbnNvciBpbiBtb2RlbC5ncmFwaC5pbml0aWFsaXplcjoKLS0gICAgICAgICAgICAgICAg aWYgdGVuc29yLkhhc0ZpZWxkKCJyYXdfZGF0YSIpOgotLSAgICAgICAgICAgICAgICAgICAgc2V0 X2V4dGVybmFsX2RhdGEodGVuc29yLCBsb2NhdGlvbikKLS0KLS0gICAgICAgIGNvbnZlcnRfbW9k ZWxfdG9fZXh0ZXJuYWxfZGF0YV9ub19jaGVjaygKLS0gICAgICAgICAgICBtb2RlbCwKLS0gICAg ICAgICAgICBsb2NhdGlvbj10cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9sb2NhdGlvbiwKLS0gICAg ICAgICkKLS0KLS0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZh bGlkYXRpb25FcnJvcik6Ci0tICAgICAgICAgICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBuZXdf bW9kZWxfZmlsZXBhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tCi0tQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKLS0gICAgWwotLSAgICAgICAgeyJzZXJpYWxp emF0aW9uX2Zvcm1hdCI6ICJwcm90b2J1ZiJ9LAotLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zv cm1hdCI6ICJ0ZXh0cHJvdG8ifSwKLS0gICAgXQotLSkKLS1jbGFzcyBUZXN0U2F2ZUFsbFRlbnNv cnNBc0V4dGVybmFsRGF0YSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0tICAgIHNlcmlhbGl6YXRpb25f Zm9ybWF0OiBzdHIgPSAicHJvdG9idWYiCi0tCi0tICAgIGRlZiBzZXRVcChzZWxmKSAtPiBOb25l OgotLSAgICAgICAgc2VsZi5fdGVtcF9kaXJfb2JqID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0 b3J5KCkKLS0gICAgICAgIHNlbGYudGVtcF9kaXI6IHN0ciA9IHNlbGYuX3RlbXBfZGlyX29iai5u YW1lCi0tICAgICAgICBzZWxmLmluaXRpYWxpemVyX3ZhbHVlID0gbnAuYXJhbmdlKDYpLnJlc2hh cGUoMywgMikuYXN0eXBlKG5wLmZsb2F0MzIpICsgNTEyCi0tICAgICAgICBzZWxmLmF0dHJpYnV0 ZV92YWx1ZSA9IG5wLmFyYW5nZSg2KS5yZXNoYXBlKDIsIDMpLmFzdHlwZShucC5mbG9hdDMyKSAr IDI1NgotLSAgICAgICAgc2VsZi5tb2RlbCA9IHNlbGYuY3JlYXRlX3Rlc3RfbW9kZWxfcHJvdG8o KQotLQotLSAgICBkZWYgZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoc2VsZik6Ci0tICAgICAgICBy ZXR1cm4gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsIHN0cih1dWlkLnV1aWQ0KCkpICsgIi5v bm54IikKLS0KLS0gICAgZGVmIGNyZWF0ZV9kYXRhX3RlbnNvcnMoCi0tICAgICAgICBzZWxmLCB0 ZW5zb3JzX2RhdGE6IGxpc3RbdHVwbGVbbGlzdFtBbnldLCBBbnldXQotLSAgICApIC0+IGxpc3Rb VGVuc29yUHJvdG9dOgotLSAgICAgICAgdGVuc29ycyA9IFtdCi0tICAgICAgICBmb3IgdmFsdWUs IHRlbnNvcl9uYW1lIGluIHRlbnNvcnNfZGF0YToKLS0gICAgICAgICAgICB0ZW5zb3IgPSBmcm9t X2FycmF5KG5wLmFycmF5KHZhbHVlKSkKLS0gICAgICAgICAgICB0ZW5zb3IubmFtZSA9IHRlbnNv cl9uYW1lCi0tICAgICAgICAgICAgdGVuc29ycy5hcHBlbmQodGVuc29yKQotLQotLSAgICAgICAg cmV0dXJuIHRlbnNvcnMKLS0KLS0gICAgZGVmIGNyZWF0ZV90ZXN0X21vZGVsX3Byb3RvKHNlbGYp IC0+IE1vZGVsUHJvdG86Ci0tICAgICAgICB0ZW5zb3JzID0gc2VsZi5jcmVhdGVfZGF0YV90ZW5z b3JzKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKHNlbGYuYXR0cmlidXRlX3Zh bHVlLCAiYXR0cmlidXRlX3ZhbHVlIiksCi0tICAgICAgICAgICAgICAgIChzZWxmLmluaXRpYWxp emVyX3ZhbHVlLCAiaW5wdXRfdmFsdWUiKSwKLS0gICAgICAgICAgICBdCi0tICAgICAgICApCi0t Ci0tICAgICAgICBjb25zdGFudF9ub2RlID0gb25ueC5oZWxwZXIubWFrZV9ub2RlKAotLSAgICAg ICAgICAgICJDb25zdGFudCIsIGlucHV0cz1bXSwgb3V0cHV0cz1bInZhbHVlcyJdLCB2YWx1ZT10 ZW5zb3JzWzBdCi0tICAgICAgICApCi0tCi0tICAgICAgICBpbnB1dHMgPSBbCi0tICAgICAgICAg ICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgICAgICJpbnB1 dF92YWx1ZSIsIG9ubnguVGVuc29yUHJvdG8uRkxPQVQsIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUu c2hhcGUKLS0gICAgICAgICAgICApCi0tICAgICAgICBdCi0tCi0tICAgICAgICBncmFwaCA9IGhl bHBlci5tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFtjb25zdGFudF9ub2RlXSwKLS0gICAgICAg ICAgICAidGVzdF9ncmFwaCIsCi0tICAgICAgICAgICAgaW5wdXRzPWlucHV0cywKLS0gICAgICAg ICAgICBvdXRwdXRzPVtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVt0ZW5zb3JzWzFdXSwK LS0gICAgICAgICkKLS0gICAgICAgIHJldHVybiBoZWxwZXIubWFrZV9tb2RlbChncmFwaCkKLS0K LS0gICAgQHVuaXR0ZXN0LnNraXBJZigKLS0gICAgICAgIHNlcmlhbGl6YXRpb25fZm9ybWF0ICE9 ICJwcm90b2J1ZiIsCi0tICAgICAgICAiY2hlY2tfbW9kZWwgc3VwcG9ydHMgcHJvdG9idWYgb25s eSB3aGVuIHByb3ZpZGVkIGFzIGEgcGF0aCIsCi0tICAgICkKLS0gICAgZGVmIHRlc3RfY2hlY2tf bW9kZWwoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwoc2VsZi5t b2RlbCkKLS0KLS0gICAgZGVmIHRlc3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX3dp dGhfc2l6ZV90aHJlc2hvbGQoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0 aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQotLQotLSAgICAgICAgY29udmVydF9t b2RlbF90b19leHRlcm5hbF9kYXRhKHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTEwMjQpCi0t ICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxm LnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9k ZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLSAgICAgICAg aW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAg IHNlbGYuYXNzZXJ0RmFsc2UoaW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0 aW9uIikpCi0tCi0tICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV93 aXRob3V0X3NpemVfdGhyZXNob2xkKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9maWxl X3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0gICAgICAgIGNvbnZlcnRf bW9kZWxfdG9fZXh0ZXJuYWxfZGF0YShzZWxmLm1vZGVsLCBzaXplX3RocmVzaG9sZD0wKQotLSAg ICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5z ZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVs KG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGlu aXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBz ZWxmLmFzc2VydFRydWUoaW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9u IikpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFs aXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQotLQotLSAgICBkZWYgdGVzdF9j b252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfZnJvbV9vbmVfZmlsZV93aXRoX2xvY2F0aW9u KHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1w X21vZGVsX2ZpbGVuYW1lKCkKLS0gICAgICAgIGV4dGVybmFsX2RhdGFfZmlsZSA9IHN0cih1dWlk LnV1aWQ0KCkpCi0tCi0tICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCi0t ICAgICAgICAgICAgc2VsZi5tb2RlbCwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAot LSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPVRydWUsCi0tICAgICAgICAgICAg bG9jYXRpb249ZXh0ZXJuYWxfZGF0YV9maWxlLAotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5z YXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9u X2Zvcm1hdCkKLS0KLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5w YXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgZXh0ZXJuYWxfZGF0YV9maWxlKSkpCi0tCi0tICAgICAg ICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXph dGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICAjIHRlc3QgY29udmVydCBtb2RlbCBmcm9tIGV4dGVy bmFsIGRhdGEKLS0gICAgICAgIGNvbnZlcnRfbW9kZWxfZnJvbV9leHRlcm5hbF9kYXRhKG1vZGVs KQotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFt ZSgpCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwobW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2Vs Zi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVs KG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGlu aXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBz ZWxmLmFzc2VydEZhbHNlKGxlbihpbml0aWFsaXplcl90ZW5zb3IuZXh0ZXJuYWxfZGF0YSkpCi0t ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluaXRpYWxpemVyX3RlbnNvci5kYXRhX2xvY2F0aW9u LCBUZW5zb3JQcm90by5ERUZBVUxUKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xv c2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkK LS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJp YnV0ZVswXS50Ci0tICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxlbihhdHRyaWJ1dGVfdGVuc29y LmV4dGVybmFsX2RhdGEpKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyaWJ1dGVfdGVu c29yLmRhdGFfbG9jYXRpb24sIFRlbnNvclByb3RvLkRFRkFVTFQpCi0tICAgICAgICBucC50ZXN0 aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRy aWJ1dGVfdmFsdWUpCi0tCi0tICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxf ZGF0YV9mcm9tX29uZV9maWxlX3dpdGhvdXRfbG9jYXRpb25fdXNlc19tb2RlbF9uYW1lKAotLSAg ICAgICAgc2VsZiwKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0g c2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCi0tCi0tICAgICAgICBjb252ZXJ0X21vZGVs X3RvX2V4dGVybmFsX2RhdGEoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbCwgc2l6ZV90aHJlc2hv bGQ9MCwgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9VHJ1ZQotLSAgICAgICAgKQotLSAgICAgICAg b25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxp emF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmls ZShtb2RlbF9maWxlX3BhdGgpKQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNm aWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCBtb2RlbF9maWxlX3BhdGgpKSkKLS0KLS0g ICAgZGVmIHRlc3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX29uZV9maWxlX3Blcl90 ZW5zb3Jfd2l0aG91dF9hdHRyaWJ1dGUoCi0tICAgICAgICBzZWxmLAotLSAgICApIC0+IE5vbmU6 Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1l KCkKLS0KLS0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKLS0gICAgICAg ICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAg ICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCi0tICAgICAgICAgICAgY29udmVy dF9hdHRyaWJ1dGU9RmFsc2UsCi0tICAgICAgICApCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwo c2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQot LQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0 aCkpCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2lu KHNlbGYudGVtcF9kaXIsICJpbnB1dF92YWx1ZSIpKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RmFs c2Uob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJhdHRyaWJ1dGVf dmFsdWUiKSkpCi0tCi0tICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0 YV9vbmVfZmlsZV9wZXJfdGVuc29yX3dpdGhfYXR0cmlidXRlKAotLSAgICAgICAgc2VsZiwKLS0g ICAgKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9t b2RlbF9maWxlbmFtZSgpCi0tCi0tICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2Rh dGEoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbCwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9s ZD0wLAotLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAotLSAgICAg ICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPVRydWUsCi0tICAgICAgICApCi0tICAgICAgICBvbm54 LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRp b25fZm9ybWF0KQotLQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1v ZGVsX2ZpbGVfcGF0aCkpCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUo b3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJpbnB1dF92YWx1ZSIpKSkKLS0gICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rpciwg ImF0dHJpYnV0ZV92YWx1ZSIpKSkKLS0KLS0gICAgZGVmIHRlc3RfY29udmVydF9tb2RlbF90b19l eHRlcm5hbF9kYXRhX2RvZXNfbm90X2NvbnZlcnRfYXR0cmlidXRlX3ZhbHVlcygKLS0gICAgICAg IHNlbGYsCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYu Z2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQotLQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19l eHRlcm5hbF9kYXRhKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAgICAgc2l6 ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKLS0g ICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKLS0gICAgICAgICkKLS0g ICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0 aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJpbnB1dF92YWx1ZSIpKSkKLS0g ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYu dGVtcF9kaXIsICJhdHRyaWJ1dGVfdmFsdWUiKSkpCi0tCi0tICAgICAgICBtb2RlbCA9IG9ubngu bG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0t ICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQot LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0 YV9sb2NhdGlvbiIpKQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBo Lm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKLS0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXR0cmli dXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLQotLSAgICBkZWYgdGVzdF9j b252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfY29udmVydHNfYXR0cmlidXRlX3ZhbHVlcyhz ZWxmKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9t b2RlbF9maWxlbmFtZSgpCi0tCi0tICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2Rh dGEoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbCwgc2l6ZV90aHJlc2hvbGQ9MCwgY29udmVydF9h dHRyaWJ1dGU9VHJ1ZQotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYu bW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0g ICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVs LmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9z ZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQot LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0 YV9sb2NhdGlvbiIpKQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBo Lm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNs b3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0g ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xv Y2F0aW9uIikpCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfbW9kZWxfZG9lc19ub3RfY29udmVydF90 b19leHRlcm5hbF9kYXRhX2FuZF9zYXZlc190aGVfbW9kZWwoCi0tICAgICAgICBzZWxmLAotLSAg ICApIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21v ZGVsX2ZpbGVuYW1lKCkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKLS0gICAgICAgICAgICBz ZWxmLm1vZGVsLAotLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBz ZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxf ZGF0YT1GYWxzZSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRo LmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRf bW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLSAgICAg ICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAg ICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xv Y2F0aW9uIikpCi0tCi0tICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9k ZVswXS5hdHRyaWJ1dGVbMF0udAotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVf dGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVf bW9kZWxfZG9lc19jb252ZXJ0X2FuZF9zYXZlc190aGVfbW9kZWwoc2VsZikgLT4gTm9uZToKLS0g ICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQot LSAgICAgICAgb25ueC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsCi0tICAg ICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLAotLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlv bl9mb3JtYXQsCi0tICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCi0tICAg ICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9VHJ1ZSwKLS0gICAgICAgICAgICBsb2Nh dGlvbj1Ob25lLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAgICAgICAg Y29udmVydF9hdHRyaWJ1dGU9RmFsc2UsCi0tICAgICAgICApCi0tCi0tICAgICAgICBtb2RlbCA9 IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQpCi0tCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFs aXplclswXQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNG aWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xv c2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkK LS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJp YnV0ZVswXS50Ci0tICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFz RmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNs b3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0K LS0gICAgZGVmIHRlc3Rfc2F2ZV9tb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWxfZGF0YShz ZWxmKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9t b2RlbF9maWxlbmFtZSgpCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAg c2VsZi5tb2RlbCwKLS0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsCi0tICAgICAgICAgICAg c2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKLS0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFs X2RhdGE9VHJ1ZSwKLS0gICAgICAgICAgICBsb2NhdGlvbj1Ob25lLAotLSAgICAgICAgICAgIHNp emVfdGhyZXNob2xkPTAsCi0tICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9RmFsc2UsCi0t ICAgICAgICApCi0tICAgICAgICAjIFNhdmUgd2l0aG91dCBsb2FkX2V4dGVybmFsX2RhdGEKLS0g ICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKAotLSAgICAgICAgICAgIG1vZGVsX2ZpbGVf cGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNl Ci0tICAgICAgICApCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAgbW9k ZWwsCi0tICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLAotLSAgICAgICAgICAgIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQsCi0tICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRy dWUsCi0tICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKLS0gICAgICAgICAgICBzaXplX3RocmVz aG9sZD0wLAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAotLSAgICAgICAg KQotLSAgICAgICAgIyBMb2FkIHRoZSBzYXZlZCBtb2RlbCBhZ2FpbjsgT25seSB3b3JrcyBpZiB0 aGUgc2F2ZWQgcGF0aCBpcyB1bmRlciB0aGUgc2FtZSBkaXJlY3RvcnkKLS0gICAgICAgIG1vZGVs ID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zv cm1hdCkKLS0KLS0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRp YWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5pdGlhbGl6ZXJfdGVuc29yLkhh c0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxj bG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVl KQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0 cmlidXRlWzBdLnQKLS0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5I YXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxs Y2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQot LQotLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX3dpdGhfZXhpc3RpbmdfcmF3X2RhdGFfc2hvdWxk X292ZXJyaWRlKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxm LmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0gICAgICAgIG9yaWdpbmFsX3Jhd19kYXRhID0g c2VsZi5tb2RlbC5ncmFwaC5pbml0aWFsaXplclswXS5yYXdfZGF0YQotLSAgICAgICAgb25ueC5z YXZlX21vZGVsKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAgICAgbW9kZWxf ZmlsZV9wYXRoLAotLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCi0tICAg ICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCi0tICAgICAgICAgICAgc2l6ZV90 aHJlc2hvbGQ9MCwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRo LmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRf bW9kZWwoCi0tICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKLS0gICAgICAgICkKLS0gICAgICAgIGlu aXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBp bml0aWFsaXplcl90ZW5zb3IucmF3X2RhdGEgPSBiImR1bW1weV9yYXdfZGF0YSIKLS0gICAgICAg ICMgSWYgcmF3X2RhdGEgYW5kIGV4dGVybmFsIHRlbnNvciBleGlzdCBhdCB0aGUgc2FtZSB0aW1l LCBvdmVycmlkZSBleGlzdGluZyByYXdfZGF0YQotLSAgICAgICAgbG9hZF9leHRlcm5hbF9kYXRh X2Zvcl90ZW5zb3IoaW5pdGlhbGl6ZXJfdGVuc29yLCBzZWxmLnRlbXBfZGlyKQotLSAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChpbml0aWFsaXplcl90ZW5zb3IucmF3X2RhdGEsIG9yaWdpbmFsX3Jh d19kYXRhKQotLQotLQotLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCi0tICAg IFsKLS0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwKLS0gICAg ICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAidGV4dHByb3RvIn0sCi0tICAgIF0KLS0pCi0t Y2xhc3MgVGVzdEV4dGVybmFsRGF0YVRvQXJyYXkodW5pdHRlc3QuVGVzdENhc2UpOgotLSAgICBz ZXJpYWxpemF0aW9uX2Zvcm1hdDogc3RyID0gInByb3RvYnVmIgotLQotLSAgICBkZWYgc2V0VXAo c2VsZikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRl bXBvcmFyeURpcmVjdG9yeSgpCi0tICAgICAgICBzZWxmLnRlbXBfZGlyOiBzdHIgPSBzZWxmLl90 ZW1wX2Rpcl9vYmoubmFtZQotLSAgICAgICAgc2VsZi5fbW9kZWxfZmlsZV9wYXRoOiBzdHIgPSBv cy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgIm1vZGVsLm9ubngiKQotLSAgICAgICAgc2VsZi5s YXJnZV9kYXRhID0gbnAucmFuZG9tLnJhbmQoMTAsIDYwLCAxMDApLmFzdHlwZShucC5mbG9hdDMy KQotLSAgICAgICAgc2VsZi5zbWFsbF9kYXRhID0gKDIwMCwgMzAwKQotLSAgICAgICAgc2VsZi5t b2RlbCA9IHNlbGYuY3JlYXRlX3Rlc3RfbW9kZWwoKQotLQotLSAgICBAcHJvcGVydHkKLS0gICAg ZGVmIG1vZGVsX2ZpbGVfcGF0aChzZWxmKToKLS0gICAgICAgIHJldHVybiBzZWxmLl9tb2RlbF9m aWxlX3BhdGgKLS0KLS0gICAgZGVmIHRlYXJEb3duKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBz ZWxmLl90ZW1wX2Rpcl9vYmouY2xlYW51cCgpCi0tCi0tICAgIGRlZiBjcmVhdGVfdGVzdF9tb2Rl bChzZWxmKSAtPiBNb2RlbFByb3RvOgotLSAgICAgICAgWCA9IGhlbHBlci5tYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNlbGYubGFyZ2VfZGF0YS5zaGFwZSkK LS0gICAgICAgIGlucHV0X2luaXQgPSBoZWxwZXIubWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAg bmFtZT0iWCIsCi0tICAgICAgICAgICAgZGF0YV90eXBlPVRlbnNvclByb3RvLkZMT0FULAotLSAg ICAgICAgICAgIGRpbXM9c2VsZi5sYXJnZV9kYXRhLnNoYXBlLAotLSAgICAgICAgICAgIHZhbHM9 b25ueC5udW1weV9oZWxwZXIudG9ieXRlc19saXR0bGVfZW5kaWFuKHNlbGYubGFyZ2VfZGF0YSks Ci0tICAgICAgICAgICAgcmF3PVRydWUsCi0tICAgICAgICApCi0tCi0tICAgICAgICBzaGFwZV9k YXRhID0gbnAuYXJyYXkoc2VsZi5zbWFsbF9kYXRhLCBucC5pbnQ2NCkKLS0gICAgICAgIHNoYXBl X2luaXQgPSBoZWxwZXIubWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgbmFtZT0iU2hhcGUiLAot LSAgICAgICAgICAgIGRhdGFfdHlwZT1UZW5zb3JQcm90by5JTlQ2NCwKLS0gICAgICAgICAgICBk aW1zPXNoYXBlX2RhdGEuc2hhcGUsCi0tICAgICAgICAgICAgdmFscz1vbm54Lm51bXB5X2hlbHBl ci50b2J5dGVzX2xpdHRsZV9lbmRpYW4oc2hhcGVfZGF0YSksCi0tICAgICAgICAgICAgcmF3PVRy dWUsCi0tICAgICAgICApCi0tICAgICAgICBDID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIkMiLCBUZW5zb3JQcm90by5JTlQ2NCwgc2VsZi5zbWFsbF9kYXRhKQotLQotLSAgICAgICAg cmVzaGFwZSA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAiUmVzaGFwZSIs Ci0tICAgICAgICAgICAgaW5wdXRzPVsiWCIsICJTaGFwZSJdLAotLSAgICAgICAgICAgIG91dHB1 dHM9WyJZIl0sCi0tICAgICAgICApCi0tICAgICAgICBjYXN0ID0gb25ueC5oZWxwZXIubWFrZV9u b2RlKAotLSAgICAgICAgICAgICJDYXN0IiwgaW5wdXRzPVsiWSJdLCBvdXRwdXRzPVsiQyJdLCB0 bz1UZW5zb3JQcm90by5JTlQ2NAotLSAgICAgICAgKQotLQotLSAgICAgICAgZ3JhcGhfZGVmID0g aGVscGVyLm1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgW3Jlc2hhcGUsIGNhc3RdLAotLSAgICAg ICAgICAgICJ0ZXN0LW1vZGVsIiwKLS0gICAgICAgICAgICBbWF0sCi0tICAgICAgICAgICAgW0Nd LAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVtpbnB1dF9pbml0LCBzaGFwZV9pbml0XSwKLS0g ICAgICAgICkKLS0gICAgICAgIHJldHVybiBoZWxwZXIubWFrZV9tb2RlbChncmFwaF9kZWYsIHBy b2R1Y2VyX25hbWU9Im9ubngtZXhhbXBsZSIpCi0tCi0tICAgIEB1bml0dGVzdC5za2lwSWYoCi0t ICAgICAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdCAhPSAicHJvdG9idWYiLAotLSAgICAgICAgImNo ZWNrX21vZGVsIHN1cHBvcnRzIHByb3RvYnVmIG9ubHkgd2hlbiBwcm92aWRlZCBhcyBhIHBhdGgi LAotLSAgICApCi0tICAgIGRlZiB0ZXN0X2NoZWNrX21vZGVsKHNlbGYpIC0+IE5vbmU6Ci0tICAg ICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWwpCi0tCi0tICAgIGRlZiB0ZXN0X3Jl c2hhcGVfaW5mZXJlbmNlX3dpdGhfZXh0ZXJuYWxfZGF0YV9mYWlsKHNlbGYpIC0+IE5vbmU6Ci0t ICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbCwKLS0gICAg ICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6 YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAot LSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAotLSAgICAgICAgICAg IHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAgICApCi0tICAgICAgICBtb2RlbF93aXRob3V0X2V4 dGVybmFsX2RhdGEgPSBvbm54LmxvYWQoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3Bh dGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQot LSAgICAgICAgKQotLSAgICAgICAgIyBTaGFwZSBpbmZlcmVuY2Ugb2YgUmVzaGFwZSB1c2VzIFBh cnNlRGF0YQotLSAgICAgICAgIyBQYXJzZURhdGEgY2Fubm90IGhhbmRsZSBleHRlcm5hbCBkYXRh IGFuZCBzaG91bGQgdGhyb3cgdGhlIGVycm9yIGFzIGZvbGxvd3M6Ci0tICAgICAgICAjIENhbm5v dCBwYXJzZSBkYXRhIGZyb20gZXh0ZXJuYWwgdGVuc29ycy4gUGxlYXNlIGxvYWQgZXh0ZXJuYWwg ZGF0YSBpbnRvIHJhdyBkYXRhIGZvciB0ZW5zb3I6IFNoYXBlCi0tICAgICAgICBzZWxmLmFzc2Vy dFJhaXNlcygKLS0gICAgICAgICAgICBzaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCi0t ICAgICAgICAgICAgc2hhcGVfaW5mZXJlbmNlLmluZmVyX3NoYXBlcywKLS0gICAgICAgICAgICBt b2RlbF93aXRob3V0X2V4dGVybmFsX2RhdGEsCi0tICAgICAgICAgICAgc3RyaWN0X21vZGU9VHJ1 ZSwKLS0gICAgICAgICkKLS0KLS0gICAgZGVmIHRlc3RfdG9fYXJyYXlfd2l0aF9leHRlcm5hbF9k YXRhKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAg ICAgc2VsZi5tb2RlbCwKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKLS0gICAg ICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNf ZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxl PUZhbHNlLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAgICApCi0tICAg ICAgICAjIHJhd19kYXRhIG9mIGV4dGVybmFsIHRlbnNvciBpcyBub3QgbG9hZGVkCi0tICAgICAg ICBtb2RlbCA9IG9ubngubG9hZCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwg c2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCi0tICAg ICAgICApCi0tICAgICAgICAjIFNwZWNpZnkgc2VsZi50ZW1wX2RpciB0byBsb2FkIGV4dGVybmFs IHRlbnNvcgotLSAgICAgICAgbG9hZGVkX2xhcmdlX2RhdGEgPSB0b19hcnJheShtb2RlbC5ncmFw aC5pbml0aWFsaXplclswXSwgc2VsZi50ZW1wX2RpcikKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNz ZXJ0X2FsbGNsb3NlKGxvYWRlZF9sYXJnZV9kYXRhLCBzZWxmLmxhcmdlX2RhdGEpCi0tCi0tICAg IGRlZiB0ZXN0X3NhdmVfbW9kZWxfd2l0aF9leHRlcm5hbF9kYXRhX211bHRpcGxlX3RpbWVzKHNl bGYpIC0+IE5vbmU6Ci0tICAgICAgICAjIFRlc3Qgb25ueC5zYXZlIHNob3VsZCByZXNwZWN0aXZl bHkgaGFuZGxlIHR5cGljYWwgdGVuc29yIGFuZCBleHRlcm5hbCB0ZW5zb3IgcHJvcGVybHkKLS0g ICAgICAgICMgMXN0IHNhdmU6IHNhdmUgdHdvIHRlbnNvcnMgd2hpY2ggaGF2ZSByYXdfZGF0YQot LSAgICAgICAgIyBPbmx5IHdfbGFyZ2Ugd2lsbCBiZSBzdG9yZWQgYXMgZXh0ZXJuYWwgdGVuc29y cyBzaW5jZSBpdCdzIGxhcmdlciB0aGFuIDEwMjQKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgK LS0gICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9w YXRoLAotLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCi0tICAgICAgICAg ICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCi0tICAgICAgICAgICAgYWxsX3RlbnNvcnNf dG9fb25lX2ZpbGU9RmFsc2UsCi0tICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKLS0gICAgICAg ICAgICBzaXplX3RocmVzaG9sZD0xMDI0LAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRl PVRydWUsCi0tICAgICAgICApCi0tICAgICAgICBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJu YWwgPSBvbm54LmxvYWQoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAgICAgICAg KQotLSAgICAgICAgbGFyZ2VfaW5wdXRfdGVuc29yID0gbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4 dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUobGFy Z2VfaW5wdXRfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tICAgICAgICBucC50 ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSgKLS0gICAgICAgICAgICB0b19hcnJheShsYXJnZV9pbnB1 dF90ZW5zb3IsIHNlbGYudGVtcF9kaXIpLCBzZWxmLmxhcmdlX2RhdGEKLS0gICAgICAgICkKLS0K LS0gICAgICAgIHNtYWxsX3NoYXBlX3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRl cm5hbC5ncmFwaC5pbml0aWFsaXplclsxXQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBz bWFsbF9zaGFwZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0gICAgICAgIG5w LnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KHNtYWxsX3NoYXBlX3RlbnNvciksIHNl bGYuc21hbGxfZGF0YSkKLS0KLS0gICAgICAgICMgMm5kIHNhdmU6IG9uZSB0ZW5zb3IgaGFzIHJh d19kYXRhIChzbWFsbCk7IG9uZSBleHRlcm5hbCB0ZW5zb3IgKGxhcmdlKQotLSAgICAgICAgIyBT YXZlIHRoZW0gYm90aCBhcyBleHRlcm5hbCB0ZW5zb3JzIHRoaXMgdGltZQotLSAgICAgICAgb25u eC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5h bCwKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxm LnNlcmlhbGl6YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0 YT1UcnVlLAotLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAotLSAg ICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwK LS0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVlLAotLSAgICAgICAgKQotLQotLSAg ICAgICAgbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsID0gb25ueC5sb2FkKAotLSAgICAg ICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LCBs b2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKLS0gICAgICAgICkKLS0gICAgICAgIGxhcmdlX2lucHV0 X3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbC5ncmFwaC5pbml0aWFsaXpl clswXQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxhcmdlX2lucHV0X3RlbnNvci5IYXNGaWVs ZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2Uo Ci0tICAgICAgICAgICAgdG9fYXJyYXkobGFyZ2VfaW5wdXRfdGVuc29yLCBzZWxmLnRlbXBfZGly KSwgc2VsZi5sYXJnZV9kYXRhCi0tICAgICAgICApCi0tCi0tICAgICAgICBzbWFsbF9zaGFwZV90 ZW5zb3IgPSBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJb MV0KLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzbWFsbF9zaGFwZV90ZW5zb3IuSGFzRmllbGQo ImRhdGFfbG9jYXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAot LSAgICAgICAgICAgIHRvX2FycmF5KHNtYWxsX3NoYXBlX3RlbnNvciwgc2VsZi50ZW1wX2Rpciks IHNlbGYuc21hbGxfZGF0YQotLSAgICAgICAgKQotLQotLQotIGNsYXNzIFRlc3ROb3RBbGxvd1Rv TG9hZEV4dGVybmFsRGF0YU91dHNpZGVNb2RlbERpcmVjdG9yeShUZXN0TG9hZEV4dGVybmFsRGF0 YUJhc2UpOgotICAgICAiIiJFc3NlbnRpYWwgdGVzdCB0byBjaGVjayB0aGF0IG9ubnggKHZhbGlk YXRlKSBDKysgY29kZSB3aWxsIG5vdCBhbGxvdyB0byBsb2FkIGV4dGVybmFsX2RhdGEgb3V0c2lk ZSB0aGUgbW9kZWwKLSAgICAgZGlyZWN0b3J5LgotQEAgLTc5NywxNyArMTg2LDYgQEAgY2xhc3Mg VGVzdE5vdEFsbG93VG9Mb2FkRXh0ZXJuYWxEYXRhT3V0c2lkZU1vZGVsRGlyZWN0b3J5T25XaW5k b3dzKAotICAgICAgICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFt ZSkKLSAKLSAKLS1jbGFzcyBUZXN0U2F2ZUFsbFRlbnNvcnNBc0V4dGVybmFsRGF0YVdpdGhQYXRo KFRlc3RTYXZlQWxsVGVuc29yc0FzRXh0ZXJuYWxEYXRhKToKLS0gICAgZGVmIGdldF90ZW1wX21v ZGVsX2ZpbGVuYW1lKHNlbGYpIC0+IHBhdGhsaWIuUGF0aDoKLS0gICAgICAgIHJldHVybiBwYXRo bGliLlBhdGgoc3VwZXIoKS5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpKQotLQotLQotLWNsYXNz IFRlc3RFeHRlcm5hbERhdGFUb0FycmF5V2l0aFBhdGgoVGVzdEV4dGVybmFsRGF0YVRvQXJyYXkp OgotLSAgICBAcHJvcGVydHkKLS0gICAgZGVmIG1vZGVsX2ZpbGVfcGF0aChzZWxmKSAtPiBwYXRo bGliLlBhdGg6Ci0tICAgICAgICByZXR1cm4gcGF0aGxpYi5QYXRoKHNlbGYuX21vZGVsX2ZpbGVf cGF0aCkKLS0KLS0KLSBjbGFzcyBUZXN0RnVuY3Rpb25zQW5kU3ViR3JhcGhzKHVuaXR0ZXN0LlRl c3RDYXNlKToKLSAgICAgZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBzZWxmLl90 ZW1wX2Rpcl9vYmogPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQotZGlmZiAtLWdpdCBh L29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlci9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkg Yi9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXIvYXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5 Ci1pbmRleCBhOTRhZWExYTkuLmY2MzlkNDRmOCAxMDA2NDQKLS0tLSBhL29ubngvdGVzdC92ZXJz aW9uX2NvbnZlcnRlci9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkKLSsrKyBiL29ubngvdGVz dC92ZXJzaW9uX2NvbnZlcnRlci9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkKLUBAIC03LDcg KzcsNiBAQCBpbXBvcnQgdW5pdHRlc3QKLSAKLSBpbXBvcnQgYXV0b21hdGljX2NvbnZlcnNpb25f dGVzdF9iYXNlCi0gaW1wb3J0IG51bXB5IGFzIG5wCi0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLSAK LSBpbXBvcnQgb25ueAotIGZyb20gb25ueCBpbXBvcnQgaGVscGVyCi1AQCAtMjIsMzUgKzIxLDYg QEAgY2xhc3MgVGVzdEF1dG9tYXRpY0Rvd25ncmFkZShhdXRvbWF0aWNfY29udmVyc2lvbl90ZXN0 X2Jhc2UuVGVzdEF1dG9tYXRpY0NvbnZlcnMKLSAgICAgZGVmIF90ZXN0X29wX2Rvd25ncmFkZShz ZWxmLCBvcDogc3RyLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgc2VsZi5fdGVzdF9vcF9j b252ZXJzaW9uKG9wLCAqYXJncywgKiprd2FyZ3MsIGlzX3VwZ3JhZGU9RmFsc2UpCi0gCi0tICAg IEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAg ICAgICAgICJSZWR1Y2VMMSIsCi0tICAgICAgICAgICAgIlJlZHVjZUwyIiwKLS0gICAgICAgICAg ICAiUmVkdWNlTG9nU3VtIiwKLS0gICAgICAgICAgICAiUmVkdWNlTG9nU3VtRXhwIiwKLS0gICAg ICAgICAgICAiUmVkdWNlTWVhbiIsCi0tICAgICAgICAgICAgIlJlZHVjZU1heCIsCi0tICAgICAg ICAgICAgIlJlZHVjZU1pbiIsCi0tICAgICAgICAgICAgIlJlZHVjZVByb2QiLAotLSAgICAgICAg ICAgICJSZWR1Y2VTdW0iLAotLSAgICAgICAgICAgICJSZWR1Y2VTdW1TcXVhcmUiLAotLSAgICAg ICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3JlZHVjZV9vcHMoc2VsZiwgb3ApIC0+IE5vbmU6 Ci0tICAgICAgICAjIFRPRE86IG5lZWQgdG8gYWRkIHRlc3QgY2FzZXMgZm9yIG1pc3NpbmcgYXhl cyBpbnB1dCB3aGljaCBkZXBlbmRzIG9uIHRoaXMgcHI6Ci0tICAgICAgICAjIGh0dHBzOi8vZ2l0 aHViLmNvbS9vbm54L29ubngvcHVsbC81NjEzCi0tICAgICAgICBheGVzID0gaGVscGVyLm1ha2Vf dGVuc29yKAotLSAgICAgICAgICAgICJiIiwgb25ueC5UZW5zb3JQcm90by5JTlQ2NCwgZGltcz1b M10sIHZhbHM9bnAuYXJyYXkoWzAsIDEsIDJdKQotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5f dGVzdF9vcF9kb3duZ3JhZGUoCi0tICAgICAgICAgICAgb3AsCi0tICAgICAgICAgICAgZnJvbV9v cHNldD0xMywKLS0gICAgICAgICAgICBpbnB1dF9zaGFwZXM9W1szLCA0LCA1XSwgWzNdXSwKLS0g ICAgICAgICAgICBvdXRwdXRfc2hhcGVzPVtbMSwgMSwgMV1dLAotLSAgICAgICAgICAgIGlucHV0 X3R5cGVzPVtvbm54LlRlbnNvclByb3RvLkZMT0FULCBvbm54LlRlbnNvclByb3RvLklOVDY0XSwK LS0gICAgICAgICAgICBpbml0aWFsaXplcj1bYXhlc10sCi0tICAgICAgICApCi0tCi0gICAgIGRl ZiB0ZXN0X2RmdDIwX25vX2F4aXMoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIHNlbGYuX3Rlc3Rf bW9kZWxfY29udmVyc2lvbigKLSAgICAgICAgICAgICB0b19vcHNldD0xOSwKLWRpZmYgLS1naXQg YS9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXJfdGVzdC5weSBiL29ubngvdGVzdC92ZXJzaW9u X2NvbnZlcnRlcl90ZXN0LnB5Ci1pbmRleCBhNzVlZGNkZTcuLmZkMDU3NTE4ZiAxMDA2NDQKLS0t LSBhL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3Qv dmVyc2lvbl9jb252ZXJ0ZXJfdGVzdC5weQotQEAgLTEwLDcgKzEwLDYgQEAgaW1wb3J0IHRlbXBm aWxlCi0gaW1wb3J0IHVuaXR0ZXN0Ci0gCi0gaW1wb3J0IG51bXB5IGFzIG5wCi0taW1wb3J0IHBh cmFtZXRlcml6ZWQKLSAKLSBpbXBvcnQgb25ueC52ZXJzaW9uX2NvbnZlcnRlcgotIGZyb20gb25u eCBpbXBvcnQgKAotQEAgLTIxMTUsMTY5ICsyMTE0LDYgQEAgY2xhc3MgVGVzdFZlcnNpb25Db252 ZXJ0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9tb2Rl bC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS5pID09IDIKLSAgICAgICAgIGFzc2VydCBjb252 ZXJ0ZWRfbW9kZWwub3BzZXRfaW1wb3J0WzBdLnZlcnNpb24gPT0gMTIKLSAKLS0gICAgQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAg KCJwZXJfdGVuc29yIiwgKDE2LCAzKSwgKDEsKSwgTm9uZSwgTm9uZSwgTm9uZSwgVGVuc29yUHJv dG8uSU5UOCwgVHJ1ZSksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAicGVyX2F4 aXNfbm9uZV9ibG9ja19zaGFwZSIsCi0tICAgICAgICAgICAgICAgICgxNiwgMyksCi0tICAgICAg ICAgICAgICAgICgxNiwpLAotLSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAgICBO b25lLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90 by5JTlQ4LAotLSAgICAgICAgICAgICAgICBUcnVlLAotLSAgICAgICAgICAgICksCi0tICAgICAg ICAgICAgKAotLSAgICAgICAgICAgICAgICAicGVyX2F4aXNfemVyb19ibG9ja19zaGFwZSIsCi0t ICAgICAgICAgICAgICAgICgxNiwgMyksCi0tICAgICAgICAgICAgICAgICgxNiwpLAotLSAgICAg ICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAgICBOb25l LAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ4LAotLSAgICAgICAgICAgICAgICBU cnVlLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAi cGVyX3RlbnNvcl9wb3NpdGl2ZV9ibG9ja19zaGFwZSIsCi0tICAgICAgICAgICAgICAgICgxNiwg MyksCi0tICAgICAgICAgICAgICAgICgxLCksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAg ICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAgICAgIFRl bnNvclByb3RvLklOVDgsCi0tICAgICAgICAgICAgICAgIEZhbHNlLAotLSAgICAgICAgICAgICks Ci0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAicGVyX2F4aXNfcG9zaXRpdmVfYmxv Y2tfc2hhcGUiLAotLSAgICAgICAgICAgICAgICAoMTYsIDMpLAotLSAgICAgICAgICAgICAgICAo MTYsKSwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICAgICAgMiwKLS0gICAgICAg ICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwKLS0gICAg ICAgICAgICAgICAgRmFsc2UsCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoImJsb2Nr ZWRfMmQiLCAoMTYsIDMpLCAoNCwgMyksIDAsIDQsIE5vbmUsIFRlbnNvclByb3RvLklOVDgsIEZh bHNlKSwKLS0gICAgICAgICAgICAoImJsb2NrZWRfM2QiLCAoNCwgMywgMzIpLCAoNCwgMywgOCks IDIsIDQsIE5vbmUsIFRlbnNvclByb3RvLklOVDgsIEZhbHNlKSwKLS0gICAgICAgICAgICAoCi0t ICAgICAgICAgICAgICAgICJwZXJfYXhpc19vdXRwdXRfZHR5cGUiLAotLSAgICAgICAgICAgICAg ICAoMTYsIDMpLAotLSAgICAgICAgICAgICAgICAoMTYsKSwKLS0gICAgICAgICAgICAgICAgMSwK LS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxP QVQ4RTRNM0ZOLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBGYWxz ZSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgInBl cl9heGlzX3Vuc3VwcG9ydGVkX3R5cGUiLAotLSAgICAgICAgICAgICAgICAoMTYsIDMpLAotLSAg ICAgICAgICAgICAgICAoMTYsKSwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICAg ICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgVGVuc29y UHJvdG8uVUlOVDE2LAotLSAgICAgICAgICAgICAgICBGYWxzZSwKLS0gICAgICAgICAgICApLAot LSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3F1YW50aXplXzIxXzIwKAotLSAgICAg ICAgc2VsZiwKLS0gICAgICAgIF86IHN0ciwKLS0gICAgICAgIHhfc2hhcGU6IHR1cGxlW2ludCwg Li4uXSwKLS0gICAgICAgIHNjYWxlX3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCi0tICAgICAgICBh eGlzOiBpbnQsCi0tICAgICAgICBibG9ja19zaXplOiBpbnQsCi0tICAgICAgICBvdXRwdXRfZHR5 cGU6IGludCB8IE5vbmUsCi0tICAgICAgICB6ZXJvX3BvaW50X2R0eXBlOiBpbnQgfCBOb25lLAot LSAgICAgICAgY29tcGF0aWJsZTogYm9vbCwKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgZGVm IHRlc3QoCi0tICAgICAgICAgICAgaW5wdXRfc2hhcGUsIHNjYWxlX3NoYXBlLCBheGlzLCBibG9j a19zaXplLCBvdXRwdXRfZHR5cGUsIHplcm9fcG9pbnRfZHR5cGUKLS0gICAgICAgICkgLT4gTm9u ZToKLS0gICAgICAgICAgICBub2RlcyA9IFsKLS0gICAgICAgICAgICAgICAgaGVscGVyLm1ha2Vf bm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJRdWFudGl6ZUxpbmVhciIsCi0tICAgICAgICAg ICAgICAgICAgICBbIlgiLCAiUyJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJZIl0sCi0tICAg ICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCi0tICAgICAgICAgICAgICAgICAgICBibG9ja19z aXplPWJsb2NrX3NpemUsCi0tICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZHR5cGU9b3V0cHV0 X2R0eXBlLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXQotLSAgICAgICAgICAg IGlucHV0cyA9IFsKLS0gICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgaW5wdXRfc2hhcGUpLAotLSAgICAgICAgICAgICAg ICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiUyIsIFRlbnNvclByb3RvLkZMT0FULCBz Y2FsZV9zaGFwZSksCi0tICAgICAgICAgICAgXQotLSAgICAgICAgICAgIGlmIHplcm9fcG9pbnRf ZHR5cGU6Ci0tICAgICAgICAgICAgICAgIGlucHV0cy5hcHBlbmQoCi0tICAgICAgICAgICAgICAg ICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWlAiLCB6ZXJvX3BvaW50X2R0eXBl LCBzY2FsZV9zaGFwZSkKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgICAgICBub2Rl c1swXS5pbnB1dC5hcHBlbmQoIlpQIikKLS0gICAgICAgICAgICBvdXRwdXRfdHlwZV8gPSBvdXRw dXRfZHR5cGUgb3IgemVyb19wb2ludF9kdHlwZQotLSAgICAgICAgICAgIGdyYXBoID0gaGVscGVy Lm1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIG5vZGVzLAotLSAgICAgICAgICAgICAgICAi dGVzdCIsCi0tICAgICAgICAgICAgICAgIGlucHV0cywKLS0gICAgICAgICAgICAgICAgW2hlbHBl ci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgb3V0cHV0X3R5cGVfLCBpbnB1dF9zaGFwZSld LAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBfID0gc2VsZi5fY29udmVydGVkKGdyYXBo LCBoZWxwZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAyMSksIDIwKQotLQotLSAgICAgICAgY29u dGV4dF9tYW5hZ2VyID0gKAotLSAgICAgICAgICAgIGNvbnRleHRsaWIubnVsbGNvbnRleHQoKSBp ZiBjb21wYXRpYmxlIGVsc2Ugc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKQotLSAgICAg ICAgKQotLSAgICAgICAgd2l0aCBjb250ZXh0X21hbmFnZXI6Ci0tICAgICAgICAgICAgdGVzdCh4 X3NoYXBlLCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tfc2l6ZSwgb3V0cHV0X2R0eXBlLCB6ZXJv X3BvaW50X2R0eXBlKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFu ZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoInBlcl90ZW5zb3IiLCAoMTYsIDMpLCAoMSwp LCBOb25lLCBOb25lLCBUcnVlKSwKLS0gICAgICAgICAgICAoInBlcl9heGlzX25vbmVfYmxvY2tf c2hhcGUiLCAoMTYsIDMpLCAoMTYsKSwgMSwgTm9uZSwgVHJ1ZSksCi0tICAgICAgICAgICAgKCJw ZXJfYXhpc196ZXJvX2Jsb2NrX3NoYXBlIiwgKDE2LCAzKSwgKDE2LCksIDEsIDAsIFRydWUpLAot LSAgICAgICAgICAgICgicGVyX3RlbnNvcl9wb3NpdGl2ZV9ibG9ja19zaGFwZSIsICgxNiwgMyks ICgxLCksIDEsIDIsIEZhbHNlKSwKLS0gICAgICAgICAgICAoInBlcl9heGlzX3Bvc2l0aXZlX2Js b2NrX3NoYXBlIiwgKDE2LCAzKSwgKDE2LCksIDEsIDIsIEZhbHNlKSwKLS0gICAgICAgICAgICAo ImJsb2NrZWRfMmQiLCAoMTYsIDMpLCAoNCwgMyksIDAsIDQsIEZhbHNlKSwKLS0gICAgICAgICAg ICAoImJsb2NrZWRfM2QiLCAoNCwgMywgMzIpLCAoNCwgMywgOCksIDIsIDQsIEZhbHNlKSwKLS0g ICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZXF1YW50aXplXzIxXzIwKAotLSAgICAg ICAgc2VsZiwKLS0gICAgICAgIF86IHN0ciwKLS0gICAgICAgIHlfc2hhcGU6IHR1cGxlW2ludCwg Li4uXSwKLS0gICAgICAgIHNjYWxlX3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCi0tICAgICAgICBh eGlzOiBpbnQsCi0tICAgICAgICBibG9ja19zaXplOiBpbnQsCi0tICAgICAgICBjb21wYXRpYmxl OiBib29sLAotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBkZWYgdGVzdChpbnB1dF9zaGFwZSwg c2NhbGVfc2hhcGUsIGF4aXMsIGJsb2NrX3NpemUpIC0+IE5vbmU6Ci0tICAgICAgICAgICAgbm9k ZXMgPSBbCi0tICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX25vZGUoCi0tICAgICAgICAgICAg ICAgICAgICAiRGVxdWFudGl6ZUxpbmVhciIsCi0tICAgICAgICAgICAgICAgICAgICBbIlgiLCAi UyIsICJaUCJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJZIl0sCi0tICAgICAgICAgICAgICAg ICAgICBheGlzPWF4aXMsCi0tICAgICAgICAgICAgICAgICAgICBibG9ja19zaXplPWJsb2NrX3Np emUsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdCi0tICAgICAgICAgICAgZ3Jh cGggPSBoZWxwZXIubWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgbm9kZXMsCi0tICAgICAg ICAgICAgICAgICJ0ZXN0IiwKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAg ICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5JTlQ4LCBp bnB1dF9zaGFwZSksCi0tICAgICAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiUyIsIFRlbnNvclByb3RvLkZMT0FULCBzY2FsZV9zaGFwZSksCi0tICAgICAgICAg ICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWlAiLCBUZW5zb3JQcm90 by5JTlQ4LCBzY2FsZV9zaGFwZSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg ICAgIFtoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FU LCBpbnB1dF9zaGFwZSldLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBfID0gc2VsZi5f Y29udmVydGVkKGdyYXBoLCBoZWxwZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAyMSksIDIwKQot LQotLSAgICAgICAgY29udGV4dF9tYW5hZ2VyID0gKAotLSAgICAgICAgICAgIGNvbnRleHRsaWIu bnVsbGNvbnRleHQoKSBpZiBjb21wYXRpYmxlIGVsc2Ugc2VsZi5hc3NlcnRSYWlzZXMoUnVudGlt ZUVycm9yKQotLSAgICAgICAgKQotLSAgICAgICAgd2l0aCBjb250ZXh0X21hbmFnZXI6Ci0tICAg ICAgICAgICAgdGVzdCh5X3NoYXBlLCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tfc2l6ZSkKLS0K LSAgICAgZGVmIHRlc3RfZXh0ZXJuYWxfZGF0YV92ZXJzaW9uX2NvbnZlcnNpb24oc2VsZikgLT4g Tm9uZToKLSAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVt cF9kaXI6Ci0gICAgICAgICAgICAgIyBDcmVhdGUgYSBtb2RlbCB3aXRoIGV4dGVybmFsIGRhdGEK LUBAIC0yNDEzLDc2ICsyMjQ5LDYgQEAgY2xhc3MgVGVzdFZlcnNpb25Db252ZXJ0ZXIodW5pdHRl c3QuVGVzdENhc2UpOgotICAgICAgICAgICAgIFtoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5m bygib3V0IiwgZHR5cGUsIGRhdGFfcyldLAotICAgICAgICAgKQotIAotLSAgICAjIFNjYXR0ZXIg MTYgLT4gMTU6IFR5cGVSZXN0cmljdGlvbiAoYmZsb2F0MTYpICsgUmVtb3ZlQXR0cmlidXRlIChy ZWR1Y3Rpb24pCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKFsoIlNj YXR0ZXJFbGVtZW50cyIsKSwgKCJTY2F0dGVyTkQiLCldKQotLSAgICBkZWYgdGVzdF9zY2F0dGVy XzE2XzE1X3N1Y2Nlc3Moc2VsZiwgb3BfbmFtZTogc3RyKSAtPiBOb25lOgotLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX3NjYXR0ZXJfZ3JhcGgob3BfbmFtZSwgVGVuc29yUHJvdG8uRkxPQVQs ICJub25lIikKLS0gICAgICAgIGNvbnZlcnRlZCA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVs cGVyLm1ha2Vfb3BlcmF0b3JzZXRpZCgiIiwgMTYpLCAxNSkKLS0gICAgICAgIGFzc2VydCBjb252 ZXJ0ZWQub3BzZXRfaW1wb3J0WzBdLnZlcnNpb24gPT0gMTUKLS0KLS0gICAgQHBhcmFtZXRlcml6 ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoWygiU2NhdHRlckVsZW1lbnRzIiwpLCAoIlNjYXR0ZXJO RCIsKV0pCi0tICAgIGRlZiB0ZXN0X3NjYXR0ZXJfMTZfMTVfYmZsb2F0MTZfZmFpbHMoc2VsZiwg b3BfbmFtZTogc3RyKSAtPiBOb25lOgotLSAgICAgICAgZGVmIHRlc3QoKSAtPiBOb25lOgotLSAg ICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9zY2F0dGVyX2dyYXBoKG9wX25hbWUsIFRlbnNv clByb3RvLkJGTE9BVDE2KQotLSAgICAgICAgICAgIHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVs cGVyLm1ha2Vfb3BlcmF0b3JzZXRpZCgiIiwgMTYpLCAxNSkKLS0KLS0gICAgICAgIHNlbGYuYXNz ZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgdGVzdCkKLS0KLS0gICAgIyBPcHNldCAxNiBhZGRlZCBy ZWR1Y3Rpb24gJ2FkZCcgYW5kICdtdWwnOyAxNiAtPiAxNSBvbmx5IGFsbG93cyAnbm9uZScKLS0g ICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAg ICAgICAgICAgKCJTY2F0dGVyRWxlbWVudHMiLCAiYWRkIiksCi0tICAgICAgICAgICAgKCJTY2F0 dGVyRWxlbWVudHMiLCAibXVsIiksCi0tICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAiYWRkIiks Ci0tICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAibXVsIiksCi0tICAgICAgICBdCi0tICAgICkK LS0gICAgZGVmIHRlc3Rfc2NhdHRlcl8xNl8xNV9yZWR1Y3Rpb25fYWRkX211bF9mYWlscygKLS0g ICAgICAgIHNlbGYsIG9wX25hbWU6IHN0ciwgcmVkdWN0aW9uOiBzdHIKLS0gICAgKSAtPiBOb25l OgotLSAgICAgICAgZGVmIHRlc3QoKSAtPiBOb25lOgotLSAgICAgICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9zY2F0dGVyX2dyYXBoKG9wX25hbWUsIFRlbnNvclByb3RvLkZMT0FULCByZWR1Y3Rp b24pCi0tICAgICAgICAgICAgc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxwZXIubWFrZV9vcGVy YXRvcnNldGlkKCIiLCAxNiksIDE1KQotLQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVu dGltZUVycm9yLCB0ZXN0KQotLQotLSAgICAjIFNjYXR0ZXIgMTggLT4gMTc6IHJlamVjdCByZWR1 Y3Rpb24gIm1heCIgLyAibWluIgotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4 cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIsICJtYXgi KSwKLS0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIsICJtaW4iKSwKLS0gICAgICAgICAg ICAoIlNjYXR0ZXJORCIsICJtYXgiKSwKLS0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsICJtaW4i KSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9zY2F0dGVyXzE4XzE3X3JlZHVj dGlvbl9tYXhfbWluX2ZhaWxzKAotLSAgICAgICAgc2VsZiwgb3BfbmFtZTogc3RyLCByZWR1Y3Rp b246IHN0cgotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBkZWYgdGVzdCgpIC0+IE5vbmU6Ci0t ICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX3NjYXR0ZXJfZ3JhcGgob3BfbmFtZSwgVGVu c29yUHJvdG8uRkxPQVQsIHJlZHVjdGlvbikKLS0gICAgICAgICAgICBzZWxmLl9jb252ZXJ0ZWQo Z3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0aWQoIiIsIDE4KSwgMTcpCi0tCi0tICAgICAg ICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHRlc3QpCi0tCi0tICAgIEBwYXJhbWV0 ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgi U2NhdHRlckVsZW1lbnRzIiwgTm9uZSksCi0tICAgICAgICAgICAgKCJTY2F0dGVyRWxlbWVudHMi LCAibm9uZSIpLAotLSAgICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwgImFkZCIpLAotLSAg ICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwgIm11bCIpLAotLSAgICAgICAgICAgICgiU2Nh dHRlck5EIiwgTm9uZSksCi0tICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAibm9uZSIpLAotLSAg ICAgICAgICAgICgiU2NhdHRlck5EIiwgImFkZCIpLAotLSAgICAgICAgICAgICgiU2NhdHRlck5E IiwgIm11bCIpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3NjYXR0ZXJfMThf MTdfYWxsb3dlZF9yZWR1Y3Rpb25zX3N1Y2Nlc3MoCi0tICAgICAgICBzZWxmLCBvcF9uYW1lOiBz dHIsIHJlZHVjdGlvbjogc3RyIHwgTm9uZQotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBncmFw aCA9IHNlbGYuX21ha2Vfc2NhdHRlcl9ncmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5GTE9BVCwg cmVkdWN0aW9uKQotLSAgICAgICAgY29udmVydGVkID0gc2VsZi5fY29udmVydGVkKGdyYXBoLCBo ZWxwZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAxOCksIDE3KQotLSAgICAgICAgY2hlY2tlci5j aGVja19tb2RlbChjb252ZXJ0ZWQpCi0tCi0gCi0gaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK LSAgICAgdW5pdHRlc3QubWFpbigpCi1kaWZmIC0tZ2l0IGEvcmVxdWlyZW1lbnRzLWRldi50eHQg Yi9yZXF1aXJlbWVudHMtZGV2LnR4dAotaW5kZXggZTM2ZWNkNmQ5Li43ZTRhMGNjZDQgMTAwNjQ0 Ci0tLS0gYS9yZXF1aXJlbWVudHMtZGV2LnR4dAotKysrIGIvcmVxdWlyZW1lbnRzLWRldi50eHQK LUBAIC0xLDYgKzEsNSBAQAotIGJ1aWxkCi0gbnVtcHkKLS1wYXJhbWV0ZXJpemVkCi0gcHJvdG9i dWYKLSBweXRlc3QKLSBweXRlc3QtY292Ci0tLSAKLTIuNTQuMAotCgpkaWZmIC0tZ2l0IGEvMDAw My1GaXgtbmFub2JpbmQtYXJndW1lbnRzLnBhdGNoIGIvMDAwMy1GaXgtbmFub2JpbmQtYXJndW1l bnRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMjVkOGEKLS0t IC9kZXYvbnVsbAorKysgYi8wMDAzLUZpeC1uYW5vYmluZC1hcmd1bWVudHMucGF0Y2gKQEAgLTAs MCArMSwyMiBAQAorRnJvbSBkMDgwYzAzNWY1ZTQ2YmM2NTkyNjRiYTFhNTBmMmY5YzcwNTNlYWU3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGllZ28gSGVycmVyYSA8ZGhlcnJlcmFA cmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMSBKdWwgMjAyNiAwMDowMzoxNCAtMDQwMAorU3ViamVj dDogW1BBVENIIDMvN10gRml4IG5hbm9iaW5kIGFyZ3VtZW50cworCisKK2RpZmYgLS1naXQgYS9D TWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAwOTQwNzgxNjAuLjNhMDhkMzI4 OSAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAg LTQyOCw3ICs0MjgsNyBAQCBpZihPTk5YX0JVSUxEX1BZVEhPTikKKyAgICMgZmluZCBzeXN0ZW0g bmFub2JpbmQKKyAgIGlmKE5PVCBERUZJTkVEIG5hbm9iaW5kX0RJUiBPUiAiJHtuYW5vYmluZF9E SVJ9IiBTVFJFUVVBTCAiIikKKyAgICAgZXhlY3V0ZV9wcm9jZXNzKAorLSAgICAgIENPTU1BTkQg JHtQeXRob25fRVhFQ1VUQUJMRX0gLW0gbmFub2JpbmQgLS1jbWFrZS1kaXIKKysgICAgICBDT01N QU5EICR7UHl0aG9uX0VYRUNVVEFCTEV9IC1tIG5hbm9iaW5kIC0tY21ha2VfZGlyCisgICAgICAg UkVTVUxUX1ZBUklBQkxFIE5BTk9CSU5EX0NNQUtFX1JFU1VMVAorICAgICAgIE9VVFBVVF9WQVJJ QUJMRSBOQU5PQklORF9DTUFLRV9ESVIKKyAgICAgICBPVVRQVVRfU1RSSVBfVFJBSUxJTkdfV0hJ VEVTUEFDRQorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDQtTGV0LXB5cHJvamVjdF93 aGVlbC11c2UtYmluYXJpZXMtZnJvbS1jbWFrZV9idWlsZC5wYXRjaCBiLzAwMDQtTGV0LXB5cHJv amVjdF93aGVlbC11c2UtYmluYXJpZXMtZnJvbS1jbWFrZV9idWlsZC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2QxNWM0Ci0tLSAvZGV2L251bGwKKysrIGIvMDAw NC1MZXQtcHlwcm9qZWN0X3doZWVsLXVzZS1iaW5hcmllcy1mcm9tLWNtYWtlX2J1aWxkLnBhdGNo CkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNzVlMTA4MmYyZDE3YzJjMmNjYjNjMzhiNDI5ZmEyNGE0 YjQ1YmJlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZWphbmRybyBBbHZhcmV6 IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjQgRmViIDIw MjQgMTQ6NTM6MTAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzddIExldCBweXByb2plY3Rfd2hl ZWwgdXNlIGJpbmFyaWVzIGZyb20gY21ha2VfYnVpbGQKKworCitkaWZmIC0tZ2l0IGEvc2V0dXAu cHkgYi9zZXR1cC5weQoraW5kZXggZGI3OGJmYTJiLi4yZGZkNjUwMjQgMTAwNjQ0CistLS0gYS9z ZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0yNyw3ICsyNyw3IEBAIGltcG9ydCBzZXR1cHRv b2xzLmNvbW1hbmQuYnVpbGRfcHkKKyBpbXBvcnQgc2V0dXB0b29scy5jb21tYW5kLmRldmVsb3AK KyAKKyBUT1BfRElSID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p KQorLUNNQUtFX0JVSUxEX0RJUiA9IG9zLnBhdGguam9pbihUT1BfRElSLCAiLnNldHVwdG9vbHMt Y21ha2UtYnVpbGQiKQorK0NNQUtFX0JVSUxEX0RJUiA9IG9zLnBhdGguam9pbihUT1BfRElSLCBv cy5lbnZpcm9uLmdldCgiVlBBVEhfQlVJTERESVIiLCAicmVkaGF0LWxpbnV4LWJ1aWxkIikpCisg CisgV0lORE9XUyA9IG9zLm5hbWUgPT0gIm50IgorIAorQEAgLTE3Myw2ICsxNzMsNyBAQCBjbGFz cyBDbWFrZUJ1aWxkKHNldHVwdG9vbHMuQ29tbWFuZCk6CisgICAgICAgICAgICAgc2VsZi5qb2Jz ID0gbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCisgCisgICAgIGRlZiBydW4oc2VsZik6Cisr ICAgICAgICByZXR1cm4KKyAgICAgICAgIGFzc2VydCBDTUFLRSwgIkNvdWxkIG5vdCBmaW5kIGNt YWtlIGluIFBBVEgiCisgCisgICAgICAgICBvcy5tYWtlZGlycyhDTUFLRV9CVUlMRF9ESVIsIGV4 aXN0X29rPVRydWUpCistLSAKKzIuNTQuMAorCgpkaWZmIC0tZ2l0IGEvMDAwNS1QeXRob24tYmlu YXJ5LXNob3VsZC1saW5rLXRvLXN5c3RlbS1vbm54LnBhdGNoIGIvMDAwNS1QeXRob24tYmluYXJ5 LXNob3VsZC1saW5rLXRvLXN5c3RlbS1vbm54LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjg2NTgyNjcKLS0tIC9kZXYvbnVsbAorKysgYi8wMDA1LVB5dGhvbi1iaW5h cnktc2hvdWxkLWxpbmstdG8tc3lzdGVtLW9ubngucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJv bSBkOGEzMzU2ZTNkYWY2ZDI1MTRmODRmZjBjZDZiMjQwZTgxMTM5MzFkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogRGllZ28gSGVycmVyYSA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4KK0Rh dGU6IFdlZCwgMSBKdWwgMjAyNiAwMDowNjoxOCAtMDQwMAorU3ViamVjdDogW1BBVENIIDUvN10g UHl0aG9uIGJpbmFyeSBzaG91bGQgbGluayB0byBzeXN0ZW0gb25ueAorCisKK2RpZmYgLS1naXQg YS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAzYTA4ZDMyODkuLjg5NWE2 MWQ4NCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAor QEAgLTQ2MCw4ICs0NjAsMTUgQEAgaWYoT05OWF9CVUlMRF9QWVRIT04pCisgICBuYW5vYmluZF9h ZGRfbW9kdWxlKAorICAgICBvbm54X2NwcDJweV9leHBvcnQKKyAgICAgTkJfU1RBVElDIE5CX0RP TUFJTiBvbm54IFNUQUJMRV9BQkkgRlJFRV9USFJFQURFRCBMVE8KKy0gICAgIiR7T05OWF9ST09U fS9vbm54L2NwcDJweV9leHBvcnQuY2MiICR7T05OWF9TUkNTfSAke09OTlhfUFJPVE9fU1JDU30p CisrICAgICIke09OTlhfUk9PVH0vb25ueC9jcHAycHlfZXhwb3J0LmNjIikKKyAgIGFkZF9kZXBl bmRlbmNpZXMob25ueF9jcHAycHlfZXhwb3J0IG9ubngpCisrICB0YXJnZXRfbGlua19saWJyYXJp ZXMoCisrICAgIG9ubnhfY3BwMnB5X2V4cG9ydAorKyAgICBQUklWQVRFCisrICAgIG9ubngKKysg ICAgb25ueF9wcm90bworKyAgICBwcm90b2J1ZgorKyAgKQorIGVuZGlmKCkKKyAKKyBhZGRfb25u eF9jb21waWxlX29wdGlvbnMob25ueF9wcm90bykKKy0tIAorMi41NC4wCisKCmRpZmYgLS1naXQg YS8wMDA2LVJlbW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNoIGIvMDAw Ni1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjFmYmFmCi0tLSAvZGV2L251bGwKKysrIGIvMDAw Ni1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaApAQCAtMCwwICsx LDU3MzkgQEAKK0Zyb20gOWNhOTE2NTBiM2ZiMjdiMDliYWU4ODU0NjRlYzliNmUyOTI5Mjg1NSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJl ZGhhdC5jb20+CitEYXRlOiBXZWQsIDEgSnVsIDIwMjYgMDA6MDY6NTcgLTA0MDAKK1N1YmplY3Q6 IFtQQVRDSCA2LzddIFJlbW92ZSBweXRob24gcGFyYW1ldGVyaXplZCBkZXBlbmRlbmN5CisKKwor ZGlmZiAtLWdpdCBhL29ubngvdGVzdC9iYXNpY190ZXN0LnB5IGIvb25ueC90ZXN0L2Jhc2ljX3Rl c3QucHkKK2luZGV4IDk3MTNlNGQxZi4uNmQ2YzZjOTBlIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0 L2Jhc2ljX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9iYXNpY190ZXN0LnB5CitAQCAtMTEsNyAr MTEsNiBAQCBpbXBvcnQgdW5pdHRlc3QKKyAKKyBpbXBvcnQgZ29vZ2xlLnByb3RvYnVmLm1lc3Nh Z2UKKyBpbXBvcnQgZ29vZ2xlLnByb3RvYnVmLnRleHRfZm9ybWF0CistaW1wb3J0IHBhcmFtZXRl cml6ZWQKKyAKKyBpbXBvcnQgb25ueAorIGZyb20gb25ueCBpbXBvcnQgc2VyaWFsaXphdGlvbgor QEAgLTM0LDk3ICszMyw2IEBAIGRlZiBfc2ltcGxlX3RlbnNvcigpIC0+IG9ubnguVGVuc29yUHJv dG86CisgICAgICkKKyAKKyAKKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAor LSAgICBbCistICAgICAgICB7ImZvcm1hdCI6ICJwcm90b2J1ZiJ9LAorLSAgICAgICAgeyJmb3Jt YXQiOiAidGV4dHByb3RvIn0sCistICAgICAgICB7ImZvcm1hdCI6ICJqc29uIn0sCistICAgICAg ICB7ImZvcm1hdCI6ICJvbm54dHh0In0sCistICAgIF0KKy0pCistY2xhc3MgVGVzdElPKHVuaXR0 ZXN0LlRlc3RDYXNlKToKKy0gICAgZm9ybWF0OiBzdHIKKy0KKy0gICAgZGVmIHRlc3RfbG9hZF9t b2RlbF93aGVuX2lucHV0X2lzX2J5dGVzKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBwcm90byA9 IF9zaW1wbGVfbW9kZWwoKQorLSAgICAgICAgcHJvdG9fc3RyaW5nID0gc2VyaWFsaXphdGlvbi5y ZWdpc3RyeS5nZXQoc2VsZi5mb3JtYXQpLnNlcmlhbGl6ZV9wcm90byhwcm90bykKKy0gICAgICAg IGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2RlbF9mcm9tX3N0cmluZyhwcm90b19zdHJpbmcs IGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxv YWRlZF9wcm90bykKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF9tb2RlbF93aGVuX2lu cHV0X2hhc19yZWFkX2Z1bmN0aW9uKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBwcm90byA9IF9z aW1wbGVfbW9kZWwoKQorLSAgICAgICAgIyBXaGVuIHRoZSBwcm90byBpcyBhIGJ5dGVzIHJlcHJl c2VudGF0aW9uIHByb3ZpZGVkIHRvIGBzYXZlX21vZGVsYCwKKy0gICAgICAgICMgaXQgc2hvdWxk IGFsd2F5cyBiZSBhIHNlcmlhbGl6ZWQgYmluYXJ5IHByb3RvYnVmIHJlcHJlc2VudGF0aW9uLiBB a2EuIGZvcm1hdD0icHJvdG9idWYiCistICAgICAgICAjIFRoZSBzYXZlZCBmaWxlIGZvcm1hdCBp cyBzcGVjaWZpZWQgYnkgdGhlIGBmb3JtYXRgIGFyZ3VtZW50LgorLSAgICAgICAgcHJvdG9fc3Ry aW5nID0gc2VyaWFsaXphdGlvbi5yZWdpc3RyeS5nZXQoInByb3RvYnVmIikuc2VyaWFsaXplX3By b3RvKHByb3RvKQorLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorLSAgICAgICAgb25ueC5zYXZl X21vZGVsKHByb3RvX3N0cmluZywgZiwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgbG9h ZGVkX3Byb3RvID0gb25ueC5sb2FkX21vZGVsKGlvLkJ5dGVzSU8oZi5nZXR2YWx1ZSgpKSwgZm9y bWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVk X3Byb3RvKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX2FuZF9sb2FkX21vZGVsX3doZW5faW5wdXRf aXNfZmlsZV9uYW1lKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9k ZWwoKQorLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1w X2RpcjoKKy0gICAgICAgICAgICBtb2RlbF9wYXRoID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAi bW9kZWwub25ueCIpCistICAgICAgICAgICAgb25ueC5zYXZlX21vZGVsKHByb3RvLCBtb2RlbF9w YXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICAgICAgbG9hZGVkX3Byb3RvID0gb25u eC5sb2FkX21vZGVsKG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCistCistICAgIGRlZiB0ZXN0 X3NhdmVfYW5kX2xvYWRfbW9kZWxfd2hlbl9pbnB1dF9pc19wYXRobGlrZShzZWxmKSAtPiBOb25l OgorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKKy0gICAgICAgIHdpdGggdGVtcGZp bGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6CistICAgICAgICAgICAgbW9kZWxf cGF0aCA9IHBhdGhsaWIuUGF0aCh0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQorLSAgICAgICAgICAg IG9ubnguc2F2ZV9tb2RlbChwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQor LSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9wYXRoLCBm b3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywg bG9hZGVkX3Byb3RvKQorLQorLQorLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3Mo CistICAgIFsKKy0gICAgICAgIHsiZm9ybWF0IjogInByb3RvYnVmIn0sCistICAgICAgICB7ImZv cm1hdCI6ICJ0ZXh0cHJvdG8ifSwKKy0gICAgICAgIHsiZm9ybWF0IjogImpzb24ifSwKKy0gICAg ICAgICMgVGhlIG9ubnh0eHQgZm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgc2F2aW5nL2xvYWRpbmcg dGVuc29ycyB5ZXQKKy0gICAgXQorLSkKKy1jbGFzcyBUZXN0SU9UZW5zb3IodW5pdHRlc3QuVGVz dENhc2UpOgorLSAgICAiIiJUZXN0IGxvYWRpbmcgYW5kIHNhdmluZyBvZiBUZW5zb3JQcm90by4i IiIKKy0KKy0gICAgZm9ybWF0OiBzdHIKKy0KKy0gICAgZGVmIHRlc3RfbG9hZF90ZW5zb3Jfd2hl bl9pbnB1dF9pc19ieXRlcyhzZWxmKSAtPiBOb25lOgorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxl X3RlbnNvcigpCistICAgICAgICBwcm90b19zdHJpbmcgPSBzZXJpYWxpemF0aW9uLnJlZ2lzdHJ5 LmdldChzZWxmLmZvcm1hdCkuc2VyaWFsaXplX3Byb3RvKHByb3RvKQorLSAgICAgICAgbG9hZGVk X3Byb3RvID0gb25ueC5sb2FkX3RlbnNvcl9mcm9tX3N0cmluZyhwcm90b19zdHJpbmcsIGZvcm1h dD1zZWxmLmZvcm1hdCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9w cm90bykKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1dF9o YXNfcmVhZF9mdW5jdGlvbihzZWxmKSAtPiBOb25lOgorLSAgICAgICAgIyBUZXN0IGlmIGlucHV0 IGhhcyBhIHJlYWQgZnVuY3Rpb24KKy0gICAgICAgIHByb3RvID0gX3NpbXBsZV90ZW5zb3IoKQor LSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorLSAgICAgICAgb25ueC5zYXZlX3RlbnNvcihwcm90 bywgZiwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5s b2FkX3RlbnNvcihpby5CeXRlc0lPKGYuZ2V0dmFsdWUoKSksIGZvcm1hdD1zZWxmLmZvcm1hdCkK Ky0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKKy0KKy0gICAg ZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1dF9pc19maWxlX25hbWUoc2Vs ZikgLT4gTm9uZToKKy0gICAgICAgICMgVGVzdCBpZiBpbnB1dCBpcyBhIGZpbGUgbmFtZQorLSAg ICAgICAgcHJvdG8gPSBfc2ltcGxlX3RlbnNvcigpCistICAgICAgICB3aXRoIHRlbXBmaWxlLlRl bXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgorLSAgICAgICAgICAgIG1vZGVsX3BhdGgg PSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0gICAgICAgICAgICBvbm54 LnNhdmVfdGVuc29yKHByb3RvLCBtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAg ICAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX3RlbnNvcihtb2RlbF9wYXRoLCBmb3Jt YXQ9c2VsZi5mb3JtYXQpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9h ZGVkX3Byb3RvKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX2FuZF9sb2FkX3RlbnNvcl93aGVuX2lu cHV0X2lzX3BhdGhsaWtlKHNlbGYpIC0+IE5vbmU6CistICAgICAgICAjIFRlc3QgaWYgaW5wdXQg aXMgYSBmaWxlIG5hbWUKKy0gICAgICAgIHByb3RvID0gX3NpbXBsZV90ZW5zb3IoKQorLSAgICAg ICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKKy0gICAg ICAgICAgICBtb2RlbF9wYXRoID0gcGF0aGxpYi5QYXRoKHRlbXBfZGlyLCAibW9kZWwub25ueCIp CistICAgICAgICAgICAgb25ueC5zYXZlX3RlbnNvcihwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0 PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5z b3IobW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKKy0KKy0KKyBjbGFzcyBUZXN0U2F2ZUFuZExv YWRGaWxlRXh0ZW5zaW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X3NhdmVf bW9kZWxfcGlja3NfY29ycmVjdF9mb3JtYXRfZnJvbV9leHRlbnNpb24oc2VsZikgLT4gTm9uZToK KyAgICAgICAgIHByb3RvID0gX3NpbXBsZV9tb2RlbCgpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0 L2hlbHBlcl90ZXN0LnB5IGIvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5CitpbmRleCAyNzc5M2Y1 NjEuLjkxZjc3MzlhYSAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weQorKysr IGIvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5CitAQCAtMTIsNyArMTIsNiBAQCBmcm9tIHR5cGlu ZyBpbXBvcnQgQW55CisgaW1wb3J0IG1sX2R0eXBlcworIGltcG9ydCBudW1weSBhcyBucAorIGlt cG9ydCBudW1weS50eXBpbmcgYXMgbnB0CistaW1wb3J0IHBhcmFtZXRlcml6ZWQKKyBpbXBvcnQg cHl0ZXN0CisgCisgZnJvbSBvbm54IGltcG9ydCAoCitAQCAtNjM2LDYzICs2MzUsNiBAQCBjbGFz cyBUZXN0SGVscGVyVGVuc29yRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAg ICAgICBleHBlY3RlZC52aWV3KG5wLnVpbnQ4KSwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVj dCgKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDQsIFRlbnNvclByb3RvLklOVDQpLAor LSAgICAgICAgICAgICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAoMSwpLCAoMioqMTAs KSksCistICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfbWFrZV80Yml0X3RlbnNvcihz ZWxmLCBkdHlwZSwgZGltcykgLT4gTm9uZToKKy0gICAgICAgIHR5cGVfcmFuZ2UgPSB7CistICAg ICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDQ6ICgwLCAxNSksCistICAgICAgICAgICAgVGVuc29y UHJvdG8uSU5UNDogKC04LCA3KSwKKy0gICAgICAgIH0KKy0gICAgICAgIGRhdGEgPSBucC5yYW5k b20ucmFuZGludCgKKy0gICAgICAgICAgICB0eXBlX3JhbmdlW2R0eXBlXVswXSwgaGlnaD10eXBl X3JhbmdlW2R0eXBlXVsxXSArIDEsIHNpemU9ZGltcworLSAgICAgICAgKQorLSAgICAgICAgeSA9 IGhlbHBlci5tYWtlX3RlbnNvcigieSIsIGR0eXBlLCBkYXRhLnNoYXBlLCBkYXRhKQorLQorLSAg ICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVzCist ICAgICAgICBleHBlY3RlZF9kYXRhX3NpemUgPSBtYXRoLmNlaWwobnAucHJvZChkYXRhLnNoYXBl KSAvIDIuMCkKKy0gICAgICAgIGFjdHVhbF9kYXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQzMl9k YXRhKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3NpemUs IGV4cGVjdGVkX2RhdGFfc2l6ZSkKKy0KKy0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIGRh dGEgdmFsdWVzLgorLSAgICAgICAgeW5wID0gbnVtcHlfaGVscGVyLnRvX2FycmF5KHkpCistICAg ICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5bnAsIGRhdGEpCistCistICAgIEBwYXJhbWV0 ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3Qo CistICAgICAgICAgICAgKCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCksICgyKiox MCwpKSwKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF80Yml0X3RlbnNvcl9zaXpl KHNlbGYsIGRpbXMpIC0+IE5vbmU6CistICAgICAgICAjIEEgYnVnIGNhdXNlZCBuZWdhdGl2ZSBp bnQ0IHZhbHVlcyB0byBpbmZsYXRlIHRlbnNvciBzaXplLgorLSAgICAgICAgIyBTbywgdGVzdCBu ZWdhdGl2ZSB2YWx1ZXMgaGVyZS4KKy0gICAgICAgIG51bV9lbGVtcyA9IG5wLnByb2QoZGltcykK Ky0gICAgICAgIGRhdGEgPSBucC5hcnJheShbLTRdICogbnVtX2VsZW1zLCBkdHlwZT1ucC5pbnQ4 KS5yZXNoYXBlKGRpbXMpCistICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKCJ5IiwgVGVu c29yUHJvdG8uSU5UNCwgZGF0YS5zaGFwZSwgZGF0YSkKKy0KKy0gICAgICAgICMgQ2hlY2sgdGhl IGV4cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0YSBpbiBieXRlcworLSAgICAgICAgZXhwZWN0ZWRf ZGF0YV9zaXplID0gbWF0aC5jZWlsKG51bV9lbGVtcyAvIDIuMCkKKy0gICAgICAgIGFjdHVhbF9k YXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQzMl9kYXRhKSkKKy0gICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3NpemUsIGV4cGVjdGVkX2RhdGFfc2l6ZSkKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9v bHMucHJvZHVjdCgKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDQsIFRlbnNvclByb3Rv LklOVDQpLCAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSkKKy0gICAgICAgICkK Ky0gICAgKQorLSAgICBkZWYgdGVzdF9tYWtlXzRiaXRfcmF3X3RlbnNvcihzZWxmLCBkdHlwZSwg ZGltcykgLT4gTm9uZToKKy0gICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGludCgwLCBoaWdo PTE2LCBzaXplPWRpbXMsIGR0eXBlPW5wLnVpbnQ4KQorLSAgICAgICAgcGFja2VkX2RhdGEgPSBf cGFja180Yml0KGRhdGEpCistCistICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKAorLSAg ICAgICAgICAgICJwYWNrZWRfaW50NCIsIGR0eXBlLCBkaW1zLCBwYWNrZWRfZGF0YS50b2J5dGVz KCksIHJhdz1UcnVlCistICAgICAgICApCistICAgICAgICB5bnAgPSBudW1weV9oZWxwZXIudG9f YXJyYXkoeSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKHlucC52aWV3KG5wLnVp bnQ4KSwgZGF0YSkKKy0KKyAgICAgZGVmIHRlc3RfbWFrZV9mbG9hdDRlMm0xX3Jhd190ZW5zb3Io c2VsZikgLT4gTm9uZToKKyAgICAgICAgIGRhdGEgPSBucC5hcnJheShbMCwgMC41LCAxLCAyNDAs IDEwLCAtMl0sIGR0eXBlPW1sX2R0eXBlcy5mbG9hdDRfZTJtMWZuKQorICAgICAgICAgZXhwZWN0 ZWQgPSBkYXRhLnZpZXcobnAudWludDgpCitAQCAtNzA3LDYzICs2NDksNiBAQCBjbGFzcyBUZXN0 SGVscGVyVGVuc29yRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHlucCA9 IG51bXB5X2hlbHBlci50b19hcnJheSh5KQorICAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1 YWwoeW5wLnZpZXcobnAudWludDgpLCBleHBlY3RlZCkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQu cGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0gICAg ICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDIsIFRlbnNvclByb3RvLklOVDIpLAorLSAgICAgICAg ICAgICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAoMSwpLCAoMioqMTAsKSksCistICAg ICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfbWFrZV8yYml0X3RlbnNvcihzZWxmLCBkdHlw ZSwgZGltcykgLT4gTm9uZToKKy0gICAgICAgIHR5cGVfcmFuZ2UgPSB7CistICAgICAgICAgICAg VGVuc29yUHJvdG8uVUlOVDI6ICgwLCAzKSwKKy0gICAgICAgICAgICBUZW5zb3JQcm90by5JTlQy OiAoLTIsIDEpLAorLSAgICAgICAgfQorLSAgICAgICAgZGF0YSA9IG5wLnJhbmRvbS5yYW5kaW50 KAorLSAgICAgICAgICAgIHR5cGVfcmFuZ2VbZHR5cGVdWzBdLCBoaWdoPXR5cGVfcmFuZ2VbZHR5 cGVdWzFdICsgMSwgc2l6ZT1kaW1zCistICAgICAgICApCistICAgICAgICB5ID0gaGVscGVyLm1h a2VfdGVuc29yKCJ5IiwgZHR5cGUsIGRhdGEuc2hhcGUsIGRhdGEpCistCistICAgICAgICAjIENo ZWNrIHRoZSBleHBlY3RlZCBzaXplIG9mIGludDMyX2RhdGEgaW4gYnl0ZXMKKy0gICAgICAgIGV4 cGVjdGVkX2RhdGFfc2l6ZSA9IG1hdGguY2VpbChucC5wcm9kKGRhdGEuc2hhcGUpIC8gNC4wKQor LSAgICAgICAgYWN0dWFsX2RhdGFfc2l6ZSA9IGxlbihieXRlcyh5LmludDMyX2RhdGEpKQorLSAg ICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoYWN0dWFsX2RhdGFfc2l6ZSwgZXhwZWN0ZWRf ZGF0YV9zaXplKQorLQorLSAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgZGF0YSB2YWx1ZXMu CistICAgICAgICB5bnAgPSBudW1weV9oZWxwZXIudG9fYXJyYXkoeSkKKy0gICAgICAgIG5wLnRl c3RpbmcuYXNzZXJ0X2VxdWFsKHlucCwgZGF0YSkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFy YW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0gICAgICAg ICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSwgKDIqKjEwLCkpLAorLSAg ICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0XzJiaXRfdGVuc29yX3NpemUoc2VsZiwgZGlt cykgLT4gTm9uZToKKy0gICAgICAgICMgQSBidWcgY2F1c2VkIG5lZ2F0aXZlIGludDIgdmFsdWVz IHRvIGluZmxhdGUgdGVuc29yIHNpemUuCistICAgICAgICAjIFNvLCB0ZXN0IG5lZ2F0aXZlIHZh bHVlcyBoZXJlLgorLSAgICAgICAgbnVtX2VsZW1zID0gbnAucHJvZChkaW1zKQorLSAgICAgICAg ZGF0YSA9IG5wLmFycmF5KFstMl0gKiBudW1fZWxlbXMsIGR0eXBlPW5wLmludDgpLnJlc2hhcGUo ZGltcykKKy0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoInkiLCBUZW5zb3JQcm90by5J TlQyLCBkYXRhLnNoYXBlLCBkYXRhKQorLQorLSAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQg c2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVzCistICAgICAgICBleHBlY3RlZF9kYXRhX3NpemUg PSBtYXRoLmNlaWwobnVtX2VsZW1zIC8gNC4wKQorLSAgICAgICAgYWN0dWFsX2RhdGFfc2l6ZSA9 IGxlbihieXRlcyh5LmludDMyX2RhdGEpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1 YWwoYWN0dWFsX2RhdGFfc2l6ZSwgZXhwZWN0ZWRfZGF0YV9zaXplKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0 KAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwgVGVuc29yUHJvdG8uSU5UMiksICgo NSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAoMSwpKQorLSAgICAgICAgKQorLSAgICApCist ICAgIGRlZiB0ZXN0X21ha2VfMmJpdF9yYXdfdGVuc29yKHNlbGYsIGR0eXBlLCBkaW1zKSAtPiBO b25lOgorLSAgICAgICAgZGF0YSA9IG5wLnJhbmRvbS5yYW5kaW50KDAsIGhpZ2g9NCwgc2l6ZT1k aW1zLCBkdHlwZT1ucC51aW50OCkKKy0gICAgICAgIHBhY2tlZF9kYXRhID0gX3BhY2tfMmJpdChk YXRhKQorLQorLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAi cGFja2VkX2ludDIiLCBkdHlwZSwgZGltcywgcGFja2VkX2RhdGEudG9ieXRlcygpLCByYXc9VHJ1 ZQorLSAgICAgICAgKQorLSAgICAgICAgeW5wID0gbnVtcHlfaGVscGVyLnRvX2FycmF5KHkpCist ICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5bnAudmlldyhucC51aW50OCksIGRhdGEp CistCisgICAgIGRlZiB0ZXN0X21ha2VfZmxvYXQ0ZTJtMV90ZW5zb3Ioc2VsZikgLT4gTm9uZToK KyAgICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoCisgICAgICAgICAgICAgInplcm9fcG9p bnQiLAorQEAgLTExMDUsMjggKzk5MCw2IEBAIGNsYXNzIFRlc3RIZWxwZXJNYXBwaW5nRnVuY3Rp b25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAKKyAKKyBjbGFzcyBUZXN0QXR0clR5cGVUb1N0cih1 bml0dGVzdC5UZXN0Q2FzZSk6CistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhw YW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVU eXBlLkZMT0FULCAiRkxPQVQiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmli dXRlVHlwZS5JTlQsICJJTlQiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmli dXRlVHlwZS5TVFJJTkcsICJTVFJJTkciKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8u QXR0cmlidXRlVHlwZS5URU5TT1IsICJURU5TT1IiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRl UHJvdG8uQXR0cmlidXRlVHlwZS5HUkFQSCwgIkdSQVBIIiksCistICAgICAgICAgICAgKEF0dHJp YnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuU1BBUlNFX1RFTlNPUiwgIlNQQVJTRV9URU5TT1IiKSwK Ky0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5UWVBFX1BST1RPLCAi VFlQRV9QUk9UTyIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBl LkZMT0FUUywgIkZMT0FUUyIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1 dGVUeXBlLklOVFMsICJJTlRTIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJp YnV0ZVR5cGUuU1RSSU5HUywgIlNUUklOR1MiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJv dG8uQXR0cmlidXRlVHlwZS5URU5TT1JTLCAiVEVOU09SUyIpLAorLSAgICAgICAgICAgIChBdHRy aWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLkdSQVBIUywgIkdSQVBIUyIpLAorLSAgICAgICAgICAg IChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlNQQVJTRV9URU5TT1JTLCAiU1BBUlNFX1RF TlNPUlMiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5UWVBF X1BST1RPUywgIlRZUEVfUFJPVE9TIiksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRl c3RfYXR0cl90eXBlX3RvX3N0cihzZWxmLCBhdHRyX3R5cGUsIGV4cGVjdGVkX3N0cik6CistICAg ICAgICByZXN1bHQgPSBoZWxwZXIuX2F0dHJfdHlwZV90b19zdHIoYXR0cl90eXBlKQorLSAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkX3N0cikKKy0KKyAgICAgZGVmIHRl c3RfYXR0cl90eXBlX3RvX3N0cl91bmRlZmluZWQoc2VsZik6CisgICAgICAgICByZXN1bHQgPSBo ZWxwZXIuX2F0dHJfdHlwZV90b19zdHIoOTk5OSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo cmVzdWx0LCAiVU5ERUZJTkVEIikKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3Qvbm9kZV9zaGFwZV9p bmZlcmVuY2VfdGVzdC5weSBiL29ubngvdGVzdC9ub2RlX3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5 CitpbmRleCBlY2U3NzZlNDguLjYzMjUyYjkyMiAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9ub2Rl X3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3Qvbm9kZV9zaGFwZV9pbmZl cmVuY2VfdGVzdC5weQorQEAgLTUsMzQgKzUsOSBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFu bm90YXRpb25zCisgCisgaW1wb3J0IHVuaXR0ZXN0CisgCistaW1wb3J0IHBhcmFtZXRlcml6ZWQK Ky0KKyBpbXBvcnQgb25ueC5oZWxwZXIKKyBpbXBvcnQgb25ueC5zaGFwZV9pbmZlcmVuY2UKKyAK KyAKKy1jbGFzcyBOb2RlSW5mZXJlbmNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CistICAgIEBw YXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAg ICAgICgiR3JlYXRlck9yRXF1YWwiLCksCistICAgICAgICAgICAgKCJMZXNzT3JFcXVhbCIsKSwK Ky0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9jb21wYXJpc29uX29wKHNlbGYsIG9w X3R5cGUpOgorLSAgICAgICAgbm9kZSA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZShvcF90eXBlLCBb IngiLCAieSJdLCBbInoiXSkKKy0gICAgICAgIHNjaGVtYSA9IG9ubnguZGVmcy5nZXRfc2NoZW1h KG5vZGUub3BfdHlwZSwgMjMsICIiKQorLSAgICAgICAgeHR5cGUgPSBvbm54LmhlbHBlci5tYWtl X3RlbnNvcl90eXBlX3Byb3RvKG9ubnguVGVuc29yUHJvdG8uSU5UMzIsIFsxLCAxMF0pCistICAg ICAgICB5dHlwZSA9IG9ubnguaGVscGVyLm1ha2VfdGVuc29yX3R5cGVfcHJvdG8ob25ueC5UZW5z b3JQcm90by5JTlQzMiwgWzEwLCAxXSkKKy0gICAgICAgIHJlc3VsdCA9IG9ubnguc2hhcGVfaW5m ZXJlbmNlLmluZmVyX25vZGVfb3V0cHV0cygKKy0gICAgICAgICAgICBzY2hlbWEsIG5vZGUsIHsi eCI6IHh0eXBlLCAieSI6IHl0eXBlfQorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChsaXN0KHJlc3VsdC5rZXlzKCkpLCBbInoiXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwocmVzdWx0WyJ6Il0udGVuc29yX3R5cGUuZWxlbV90eXBlLCBvbm54LlRlbnNvclByb3RvLkJP T0wpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorLSAgICAgICAgICAgIFtkaW0uZGltX3Zh bHVlIGZvciBkaW0gaW4gcmVzdWx0WyJ6Il0udGVuc29yX3R5cGUuc2hhcGUuZGltXSwKKy0gICAg ICAgICAgICBbMTAsIDEwXSwKKy0gICAgICAgICkKKy0KKy0KKyBpZiBfX25hbWVfXyA9PSAiX19t YWluX18iOgorICAgICB1bml0dGVzdC5tYWluKCkKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvbnVt cHlfaGVscGVyX3Rlc3QucHkgYi9vbm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rlc3QucHkKK2luZGV4 IDU2ODAwMDU1MC4uMjI2NTAwOGQyIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L251bXB5X2hlbHBl cl90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rlc3QucHkKK0BAIC02LDcg KzYsNiBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRpb25zCisgaW1wb3J0IHVuaXR0 ZXN0CisgCisgaW1wb3J0IG51bXB5IGFzIG5wCistaW1wb3J0IHBhcmFtZXRlcml6ZWQKKyAKKyBp bXBvcnQgb25ueAorIGltcG9ydCBvbm54LnJlZmVyZW5jZQorQEAgLTE0OCwzOCArMTQ3LDYgQEAg Y2xhc3MgVGVzdE51bXB5SGVscGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwodHAuU2VyaWFsaXplVG9TdHJpbmcoKSwgYWdhaW4uU2VyaWFsaXplVG9TdHJp bmcoKSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAuZGF0YV90eXBlLCBoZWxwZXIubnBf ZHR5cGVfdG9fdGVuc29yX2R0eXBlKGJhY2suZHR5cGUpKQorIAorLSAgICBAcGFyYW1ldGVyaXpl ZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoIkZMT0FU Iiwgb25ueC5UZW5zb3JQcm90by5GTE9BVCksCistICAgICAgICAgICAgKCJVSU5UOCIsIG9ubngu VGVuc29yUHJvdG8uVUlOVDgpLAorLSAgICAgICAgICAgICgiSU5UOCIsIG9ubnguVGVuc29yUHJv dG8uSU5UOCksCistICAgICAgICAgICAgKCJVSU5UMTYiLCBvbm54LlRlbnNvclByb3RvLlVJTlQx NiksCistICAgICAgICAgICAgKCJJTlQxNiIsIG9ubnguVGVuc29yUHJvdG8uSU5UMTYpLAorLSAg ICAgICAgICAgICgiSU5UMzIiLCBvbm54LlRlbnNvclByb3RvLklOVDMyKSwKKy0gICAgICAgICAg ICAoIklOVDY0Iiwgb25ueC5UZW5zb3JQcm90by5JTlQ2NCksCistICAgICAgICAgICAgKCJCT09M Iiwgb25ueC5UZW5zb3JQcm90by5CT09MKSwKKy0gICAgICAgICAgICAoIkZMT0FUMTYiLCBvbm54 LlRlbnNvclByb3RvLkZMT0FUMTYpLAorLSAgICAgICAgICAgICgiRE9VQkxFIiwgb25ueC5UZW5z b3JQcm90by5ET1VCTEUpLAorLSAgICAgICAgICAgICgiVUlOVDMyIiwgb25ueC5UZW5zb3JQcm90 by5VSU5UMzIpLAorLSAgICAgICAgICAgICgiVUlOVDY0Iiwgb25ueC5UZW5zb3JQcm90by5VSU5U NjQpLAorLSAgICAgICAgICAgICgiQ09NUExFWDY0Iiwgb25ueC5UZW5zb3JQcm90by5DT01QTEVY NjQpLAorLSAgICAgICAgICAgICgiQ09NUExFWDEyOCIsIG9ubnguVGVuc29yUHJvdG8uQ09NUExF WDEyOCksCistICAgICAgICAgICAgKCJCRkxPQVQxNiIsIG9ubnguVGVuc29yUHJvdG8uQkZMT0FU MTYpLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTRNM0ZOIiwgb25ueC5UZW5zb3JQcm90by5GTE9B VDhFNE0zRk4pLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTRNM0ZOVVoiLCBvbm54LlRlbnNvclBy b3RvLkZMT0FUOEU0TTNGTlVaKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU1TTIiLCBvbm54LlRl bnNvclByb3RvLkZMT0FUOEU1TTIpLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTVNMkZOVVoiLCBv bm54LlRlbnNvclByb3RvLkZMT0FUOEU1TTJGTlVaKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU4 TTAiLCBvbm54LlRlbnNvclByb3RvLkZMT0FUOEU4TTApLAorLSAgICAgICAgICAgICgiVUlOVDQi LCBvbm54LlRlbnNvclByb3RvLlVJTlQ0KSwKKy0gICAgICAgICAgICAoIklOVDQiLCBvbm54LlRl bnNvclByb3RvLklOVDQpLAorLSAgICAgICAgICAgICgiVUlOVDIiLCBvbm54LlRlbnNvclByb3Rv LlVJTlQyKSwKKy0gICAgICAgICAgICAoIklOVDIiLCBvbm54LlRlbnNvclByb3RvLklOVDIpLAor LSAgICAgICAgICAgICgiRkxPQVQ0RTJNMSIsIG9ubnguVGVuc29yUHJvdG8uRkxPQVQ0RTJNMSks CistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfdG9fYXJyYXlfZnJvbV9hcnJheShz ZWxmLCBfOiBzdHIsIGRhdGFfdHlwZTogb25ueC5UZW5zb3JQcm90by5EYXRhVHlwZSk6CistICAg ICAgICBzZWxmLl90b19hcnJheV9mcm9tX2FycmF5KGRhdGFfdHlwZSkKKy0KKyAgICAgZGVmIHRl c3RfdG9fYXJyYXlfZnJvbV9hcnJheV9zdHJpbmcoc2VsZik6CisgICAgICAgICBzZWxmLl90b19h cnJheV9mcm9tX2FycmF5KG9ubnguVGVuc29yUHJvdG8uU1RSSU5HLCBGYWxzZSkKKyAKK2RpZmYg LS1naXQgYS9vbm54L3Rlc3QvcGFyc2VyX3Rlc3QucHkgYi9vbm54L3Rlc3QvcGFyc2VyX3Rlc3Qu cHkKK2luZGV4IDE5ZWU0MDc5Mi4uOWUyMmYxOWFlIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3Bh cnNlcl90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvcGFyc2VyX3Rlc3QucHkKK0BAIC01LDggKzUs NiBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRpb25zCisgCisgaW1wb3J0IHVuaXR0 ZXN0CisgCistZnJvbSBwYXJhbWV0ZXJpemVkIGltcG9ydCBwYXJhbWV0ZXJpemVkCistCisgaW1w b3J0IG9ubngKKyBmcm9tIG9ubnggaW1wb3J0IEdyYXBoUHJvdG8sIE9wZXJhdG9yU2V0SWRQcm90 bywgVGVuc29yUHJvdG8sIGNoZWNrZXIKKyAKK0BAIC0xMjAsOTQgKzExOCw2IEBAIGNsYXNzIFRl c3RCYXNpY0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBtb2RlbCA9IG9u bngucGFyc2VyLnBhcnNlX21vZGVsKGlucHV0KQorICAgICAgICAgY2hlY2tlci5jaGVja19tb2Rl bChtb2RlbCkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAg ICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgImFncmFwaCAoZmxvYXRbTl0geCkgPT4gKGZs b2F0W05dIG91dCkgeyBvdXQgPSBjdXN0b21fZG9tYWluLlNlbHUoeCkgfSIsCistICAgICAgICAg ICAgICAgIHt9LAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAg ICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxvYXRbTl0gb3V0KSB7IG91dCA9IGN1c3Rv bV9kb21haW4uU2VsdTxhbHBoYT0yLjA+KHgpIH0iLAorLSAgICAgICAgICAgICAgICB7ImFscGhh IjogMi4wfSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAg ICAgImFncmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05dIG91dCkgeyBvdXQgPSBjdXN0b21f ZG9tYWluLlNlbHU8Z2FtbWE9My4wPih4KSB9IiwKKy0gICAgICAgICAgICAgICAgeyJnYW1tYSI6 IDMuMH0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAg ICJhZ3JhcGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtOXSBvdXQpIHsgb3V0ID0gY3VzdG9tX2Rv bWFpbi5TZWx1PGFscGhhPTIuMCwgZ2FtbWE9My4wPih4KSB9IiwKKy0gICAgICAgICAgICAgICAg eyJhbHBoYSI6IDIuMCwgImdhbW1hIjogMy4wfSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAg XQorLSAgICApCistICAgIGRlZiB0ZXN0X2NvbXBvc2l0ZV9wYXJzZV9mdW5jdGlvbl93aXRoX2F0 dHJpYnV0ZXMoCistICAgICAgICBzZWxmLCBncmFwaF90ZXh0OiBzdHIsIGV4cGVjdGVkX2F0dHJp YnV0ZTogZGljdAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBkZWZhdWx0X2FscGhhID0gMS42 NzMyNjMxOTIxNzY4MTg4NDc2NTYyNQorLSAgICAgICAgZGVmYXVsdF9nYW1tYSA9IDEuMDUwNzAx MDIyMTQ4MTMyMzI0MjE4NzUKKy0KKy0gICAgICAgIGRlZiBleHBlY3RfY3VzdG9tX25vZGVfYXR0 cmlidXRlKG5vZGUsIGF0dHJpYnV0ZXMpOgorLSAgICAgICAgICAgIGZvciBrZXkgaW4gYXR0cmli dXRlczoKKy0gICAgICAgICAgICAgICAgbWF0Y2hfYXR0ciA9IFthdHRyIGZvciBhdHRyIGluIG5v ZGUuYXR0cmlidXRlIGlmIGF0dHIubmFtZSA9PSBrZXldCistICAgICAgICAgICAgICAgIGFzc2Vy dCBsZW4obWF0Y2hfYXR0cikgPT0gMQorLSAgICAgICAgICAgICAgICBhc3NlcnQgbWF0Y2hfYXR0 clswXS5mID09IGF0dHJpYnV0ZXNba2V5XQorLQorLSAgICAgICAgZGVmIGV4cGVjdF9tb2RlbF9m dW5jdGlvbl9hdHRyaWJ1dGUobW9kZWwpOgorLSAgICAgICAgICAgIGFzc2VydCBsZW4obW9kZWwu ZnVuY3Rpb25zWzBdLmF0dHJpYnV0ZV9wcm90bykgPT0gMgorLSAgICAgICAgICAgIGF0dHJfcHJv dG9fYWxwaGEgPSBbCistICAgICAgICAgICAgICAgIGF0dHJfcHJvdG8KKy0gICAgICAgICAgICAg ICAgZm9yIGF0dHJfcHJvdG8gaW4gbW9kZWwuZnVuY3Rpb25zWzBdLmF0dHJpYnV0ZV9wcm90bwor LSAgICAgICAgICAgICAgICBpZiBhdHRyX3Byb3RvLm5hbWUgPT0gImFscGhhIgorLSAgICAgICAg ICAgIF0KKy0gICAgICAgICAgICBhc3NlcnQgbGVuKGF0dHJfcHJvdG9fYWxwaGEpID09IDEgYW5k IGF0dHJfcHJvdG9fYWxwaGFbMF0uZiA9PSBkZWZhdWx0X2FscGhhCistICAgICAgICAgICAgYXR0 cl9wcm90b19nYW1tYSA9IFsKKy0gICAgICAgICAgICAgICAgYXR0cl9wcm90bworLSAgICAgICAg ICAgICAgICBmb3IgYXR0cl9wcm90byBpbiBtb2RlbC5mdW5jdGlvbnNbMF0uYXR0cmlidXRlX3By b3RvCistICAgICAgICAgICAgICAgIGlmIGF0dHJfcHJvdG8ubmFtZSA9PSAiZ2FtbWEiCistICAg ICAgICAgICAgXQorLSAgICAgICAgICAgIGFzc2VydCBsZW4oYXR0cl9wcm90b19nYW1tYSkgPT0g MSBhbmQgYXR0cl9wcm90b19nYW1tYVswXS5mID09IGRlZmF1bHRfZ2FtbWEKKy0KKy0gICAgICAg IGZ1bmN0aW9uX3RleHQgPSBmIiIiCistICAgICAgICAgPAorLSAgICAgICAgIGRvbWFpbjogImN1 c3RvbV9kb21haW4iLAorLSAgICAgICAgIG9wc2V0X2ltcG9ydDogWyAiIiA6IDE1XSwKKy0gICAg ICAgICBkb2Nfc3RyaW5nOiAiVGVzdCBmdW5jdGlvbiBwcm90byIKKy0gICAgICAgICA+CistICAg ICAgICAgICBTZWx1CistICAgICAgICAgICA8YWxwaGE6IGZsb2F0PXtkZWZhdWx0X2FscGhhfSwg Z2FtbWE6IGZsb2F0PXtkZWZhdWx0X2dhbW1hfT4KKy0gICAgICAgICAgIChYKSA9PiAoQykKKy0g ICAgICAgICAgIHt7CistICAgICAgICAgICAgICAgY29uc3RhbnRfYWxwaGEgPSBDb25zdGFudDx2 YWx1ZV9mbG9hdDogZmxvYXQ9QGFscGhhPigpCistICAgICAgICAgICAgICAgY29uc3RhbnRfZ2Ft bWEgPSBDb25zdGFudDx2YWx1ZV9mbG9hdDogZmxvYXQ9QGdhbW1hPigpCistICAgICAgICAgICAg ICAgYWxwaGFfeCA9IENhc3RMaWtlKGNvbnN0YW50X2FscGhhLCBYKQorLSAgICAgICAgICAgICAg IGdhbW1hX3ggPSBDYXN0TGlrZShjb25zdGFudF9nYW1tYSwgWCkKKy0gICAgICAgICAgICAgICBl eHBfeCA9IEV4cChYKQorLSAgICAgICAgICAgICAgIGFscGhhX3hfZXhwX3ggPSBNdWwoYWxwaGFf eCwgZXhwX3gpCistICAgICAgICAgICAgICAgYWxwaGFfeF9leHBfeF8gPSBTdWIoYWxwaGFfeF9l eHBfeCwgYWxwaGFfeCkKKy0gICAgICAgICAgICAgICBuZWcgPSBNdWwoZ2FtbWFfeCwgYWxwaGFf eF9leHBfeF8pCistICAgICAgICAgICAgICAgcG9zID0gTXVsKGdhbW1hX3gsIFgpCistICAgICAg ICAgICAgICAgX3plcm8gPSBDb25zdGFudDx2YWx1ZV9mbG9hdD0wLjA+KCkKKy0gICAgICAgICAg ICAgICB6ZXJvID0gQ2FzdExpa2UoX3plcm8sIFgpCistICAgICAgICAgICAgICAgbGVzc19lcSA9 IExlc3NPckVxdWFsKFgsIHplcm8pCistICAgICAgICAgICAgICAgQyA9IFdoZXJlKGxlc3NfZXEs IG5lZywgcG9zKQorLSAgICAgICAgICAgfX0KKy0gICAgICAgICIiIgorLQorLSAgICAgICAgZnVu Y3Rpb25zID0gW29ubngucGFyc2VyLnBhcnNlX2Z1bmN0aW9uKGZ1bmN0aW9uX3RleHQpXQorLSAg ICAgICAgZ3JhcGggPSBvbm54LnBhcnNlci5wYXJzZV9ncmFwaChncmFwaF90ZXh0KQorLSAgICAg ICAgb3BzZXRfaW1wb3J0cyA9IFsKKy0gICAgICAgICAgICBPcGVyYXRvclNldElkUHJvdG8oZG9t YWluPSIiLCB2ZXJzaW9uPTE1KSwKKy0gICAgICAgICAgICBPcGVyYXRvclNldElkUHJvdG8oZG9t YWluPSJjdXN0b21fZG9tYWluIiwgdmVyc2lvbj0xKSwKKy0gICAgICAgIF0KKy0KKy0gICAgICAg IG1vZGVsID0gb25ueC5oZWxwZXIubWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBncmFwaCwgZnVu Y3Rpb25zPWZ1bmN0aW9ucywgb3BzZXRfaW1wb3J0cz1vcHNldF9pbXBvcnRzCistICAgICAgICAp CistICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKG1vZGVsKQorLQorLSAgICAgICAgZXhwZWN0 X21vZGVsX2Z1bmN0aW9uX2F0dHJpYnV0ZShtb2RlbCkKKy0gICAgICAgIGV4cGVjdF9jdXN0b21f bm9kZV9hdHRyaWJ1dGUobW9kZWwuZ3JhcGgubm9kZVswXSwgZXhwZWN0ZWRfYXR0cmlidXRlKQor LQorICAgICBkZWYgdGVzdF9wYXJzZV9ub2RlKHNlbGYpOgorICAgICAgICAgbm9kZSA9IG9ubngu cGFyc2VyLnBhcnNlX25vZGUoCisgICAgICAgICAgICAgIm91dDEsIG91dDIgPSBTb21lRG9tYWlu LlNvbWVPcCA8YXR0cjEgPSAxPiAoaW4xLCBpbjIpIgorQEAgLTI0MiwxMDEgKzE1Miw2IEBAIGNs YXNzIFRlc3RCYXNpY0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBzZWxm LmFzc2VydEVxdWFsKGxpc3Qobm9kZS5pbnB1dCksIFsiIiwgInkiXSkKKyAgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwobGlzdChub2RlLm91dHB1dCksIFsiIiwgIngiXSkKKyAKKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgibm90X2FfZ29vZF9m bG9hdCIsIFRydWUpLAorLSAgICAgICAgICAgICgiaW5mMSIsIFRydWUpLAorLSAgICAgICAgICAg ICgiLWluZjEiLCBUcnVlKSwKKy0gICAgICAgICAgICAoIm5hbjAiLCBUcnVlKSwKKy0gICAgICAg ICAgICAoIi1uYW4wIiwgVHJ1ZSksCistICAgICAgICAgICAgKCJuYW5pbmYiLCBUcnVlKSwKKy0g ICAgICAgICAgICAoImluZiIsIEZhbHNlKSwKKy0gICAgICAgICAgICAoIi1pbmYiLCBGYWxzZSks CistICAgICAgICAgICAgKCJpbmZpbml0eSIsIEZhbHNlKSwKKy0gICAgICAgICAgICAoIi1pbmZp bml0eSIsIEZhbHNlKSwKKy0gICAgICAgICAgICAoIm5hbiIsIEZhbHNlKSwKKy0gICAgICAgICAg ICAoIi1OYU4iLCBGYWxzZSksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfcGFy c2VfdmFyaW91c19mbG9hdF92YWx1ZXMoc2VsZiwgdGVzdF9saXRlcmFsLCBleHBlY3RfZXhjZXB0 aW9uKToKKy0gICAgICAgIG1vZGVsX3RleHQgPSBmIiIiCistICAgICAgICA8CistICAgICAgICBp cl92ZXJzaW9uOiA4LAorLSAgICAgICAgb3BzZXRfaW1wb3J0OiBbIiIgOiAxOCwgInRoaXMiIDog MV0sCistICAgICAgICBwcm9kdWNlcl9uYW1lOiAiRnVuY3Rpb25Qcm90b1Rlc3QiLAorLSAgICAg ICAgcHJvZHVjZXJfdmVyc2lvbjogIjEuMCIKKy0gICAgICAgID4KKy0gICAgICAgIF9mdW5jICgp ID0+ICgpCistICAgICAgICB7eworLSAgICAgICAgdG1wID0gQ29uc3RhbnQgPHZhbHVlX2Zsb2F0 ID0ge3Rlc3RfbGl0ZXJhbH0+KCkKKy0gICAgICAgIH19CistICAgICAgICAiIiIKKy0gICAgICAg IGlmIGV4cGVjdF9leGNlcHRpb246CistICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCist ICAgICAgICAgICAgICAgIG9ubngucGFyc2VyLlBhcnNlRXJyb3IsIGxhbWJkYTogb25ueC5wYXJz ZXIucGFyc2VfbW9kZWwobW9kZWxfdGV4dCkKKy0gICAgICAgICAgICApCistICAgICAgICBlbHNl OgorLSAgICAgICAgICAgIG1vZGVsID0gb25ueC5wYXJzZXIucGFyc2VfbW9kZWwobW9kZWxfdGV4 dCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsLmlyX3ZlcnNpb24sIDgpCist ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5wcm9kdWNlcl9uYW1lLCAiRnVuY3Rp b25Qcm90b1Rlc3QiKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWwucHJvZHVj ZXJfdmVyc2lvbiwgIjEuMCIpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9k ZWwuZ3JhcGgubm9kZSksIDEpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9k ZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGUpLCAxKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwobW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0ubmFtZSwgInZhbHVlX2Zsb2F0 IikKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorLSAgICAgICAgICAgICAgICBtb2Rl bC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50eXBlLCBvbm54LkF0dHJpYnV0ZVByb3RvLkZM T0FUCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCistICAg ICAgICAgICAgICAgIHN0cihtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS5mKSwgc3Ry KGZsb2F0KHRlc3RfbGl0ZXJhbCkpCistICAgICAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJiZmxvYXQxNiIsIFRlbnNv clByb3RvLkJGTE9BVDE2KSwKKy0gICAgICAgICAgICAoImJvb2wiLCBUZW5zb3JQcm90by5CT09M KSwKKy0gICAgICAgICAgICAoImNvbXBsZXg2NCIsIFRlbnNvclByb3RvLkNPTVBMRVg2NCksCist ICAgICAgICAgICAgKCJjb21wbGV4MTI4IiwgVGVuc29yUHJvdG8uQ09NUExFWDEyOCksCistICAg ICAgICAgICAgKCJkb3VibGUiLCBUZW5zb3JQcm90by5ET1VCTEUpLAorLSAgICAgICAgICAgICgi ZmxvYXQxNiIsIFRlbnNvclByb3RvLkZMT0FUMTYpLAorLSAgICAgICAgICAgICgiZmxvYXQiLCBU ZW5zb3JQcm90by5GTE9BVCksCistICAgICAgICAgICAgKCJmbG9hdDhlNG0zZm4iLCBUZW5zb3JQ cm90by5GTE9BVDhFNE0zRk4pLAorLSAgICAgICAgICAgICgiZmxvYXQ4ZTRtM2ZudXoiLCBUZW5z b3JQcm90by5GTE9BVDhFNE0zRk5VWiksCistICAgICAgICAgICAgKCJmbG9hdDhlNW0yIiwgVGVu c29yUHJvdG8uRkxPQVQ4RTVNMiksCistICAgICAgICAgICAgKCJmbG9hdDhlNW0yZm51eiIsIFRl bnNvclByb3RvLkZMT0FUOEU1TTJGTlVaKSwKKy0gICAgICAgICAgICAoImludDIiLCBUZW5zb3JQ cm90by5JTlQyKSwKKy0gICAgICAgICAgICAoImludDQiLCBUZW5zb3JQcm90by5JTlQ0KSwKKy0g ICAgICAgICAgICAoImludDgiLCBUZW5zb3JQcm90by5JTlQ4KSwKKy0gICAgICAgICAgICAoImlu dDE2IiwgVGVuc29yUHJvdG8uSU5UMTYpLAorLSAgICAgICAgICAgICgiaW50MzIiLCBUZW5zb3JQ cm90by5JTlQzMiksCistICAgICAgICAgICAgKCJpbnQ2NCIsIFRlbnNvclByb3RvLklOVDY0KSwK Ky0gICAgICAgICAgICAoInN0cmluZyIsIFRlbnNvclByb3RvLlNUUklORyksCistICAgICAgICAg ICAgKCJ1aW50MiIsIFRlbnNvclByb3RvLlVJTlQyKSwKKy0gICAgICAgICAgICAoInVpbnQ0Iiwg VGVuc29yUHJvdG8uVUlOVDQpLAorLSAgICAgICAgICAgICgidWludDgiLCBUZW5zb3JQcm90by5V SU5UOCksCistICAgICAgICAgICAgKCJ1aW50MTYiLCBUZW5zb3JQcm90by5VSU5UMTYpLAorLSAg ICAgICAgICAgICgidWludDMyIiwgVGVuc29yUHJvdG8uVUlOVDMyKSwKKy0gICAgICAgICAgICAo InVpbnQ2NCIsIFRlbnNvclByb3RvLlVJTlQ2NCksCistICAgICAgICAgICAgKCJmbG9hdDRlMm0x IiwgVGVuc29yUHJvdG8uRkxPQVQ0RTJNMSksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVm IHRlc3RfcGFyc2VfZ3JhcGhfdHlwZXMoc2VsZiwgbmFtZSwgaXR5cGUpIC0+IE5vbmU6CistICAg ICAgICB3ID0gJ3siMCJ9JyBpZiBpdHlwZSA9PSBUZW5zb3JQcm90by5TVFJJTkcgZWxzZSAiezB9 IgorLSAgICAgICAgdGV4dF9ncmFwaCA9IGYiIiIKKy0gICAgICAgICAgIDwKKy0gICAgICAgICAg ICAgaXJfdmVyc2lvbjogMTAsCistICAgICAgICAgICAgIG9wc2V0X2ltcG9ydDogWyAiIiA6IDE5 XQorLSAgICAgICAgICAgPgorLSAgICAgICAgICAgYWdyYXBoIChmbG9hdFtOXSBYKSA9PiAoe25h bWV9W05dIEMpCistICAgICAgICAgICA8CistICAgICAgICAgICAgIHtuYW1lfVsxXSB3ZWlnaHQg PSB7d30KKy0gICAgICAgICAgID4KKy0gICAgICAgICAgIHt7CistICAgICAgICAgICAgICBDID0g Q2FzdDx0bz17aXR5cGV9PihYKQorLSAgICAgICAgICAgfX0KKy0gICAgICAgICAgICIiIgorLSAg ICAgICAgZ3JhcGggPSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbCh0ZXh0X2dyYXBoKQorLSAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JhcGguZ3JhcGgubm9kZSksIDEpCistCisgCisgaWYg X19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikK K2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5IGIv b25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVzdC5weQoraW5kZXggN2RhZDk2NzAz Li4xYzQyNzY0ODIgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl9t bF90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5 CitAQCAtMTEsNyArMTEsNiBAQCBpbXBvcnQgdW5pdHRlc3QKKyAKKyBpbXBvcnQgbnVtcHkgYXMg bnAKKyBmcm9tIG51bXB5LnRlc3RpbmcgaW1wb3J0IGFzc2VydF9hbGxjbG9zZQorLWZyb20gcGFy YW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVyaXplZAorIAorIGltcG9ydCBvbm54CisgZnJvbSBv bm54IGltcG9ydCBPTk5YX01MLCBUZW5zb3JQcm90bywgVHlwZVByb3RvLCBWYWx1ZUluZm9Qcm90 bworQEAgLTg5MywxMTggKzg5Miw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3JBaU9u bnhNbCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBvbm54LmNoZWNrZXIuY2hlY2tfbW9k ZWwobW9kZWwpCisgICAgICAgICByZXR1cm4gbW9kZWwKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKAorLSAgICAgICAgdHVwbGUoCistICAgICAgICAgICAgaXRlcnRvb2xzLmNoYWluLmZy b21faXRlcmFibGUoCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICgK Ky0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlvbkZ1bmN0aW9uLlNVTSBpZiBvcHNl dDUgZWxzZSAiU1VNIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgW1swLjU3NjkyM10sIFswLjU3NjkyM10sIFswLjU3Njky M11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAgICAgICApLAorLSAg ICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIEFnZ3JlZ2F0aW9u RnVuY3Rpb24uQVZFUkFHRSBpZiBvcHNldDUgZWxzZSAiQVZFUkFHRSIsCistICAgICAgICAgICAg ICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC4y ODg0NjJdLCBbMC4yODg0NjJdLCBbMC4yODg0NjJdXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAgICAg ICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAor LSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAg ICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlvbkZ1bmN0aW9uLk1JTiBpZiBvcHNldDUgZWxzZSAi TUlOIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgW1swLjA3NjkyM10sIFswLjA3NjkyM10sIFswLjA3NjkyM11dLCBkdHlw ZT1ucC5mbG9hdDMyCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24u TUFYIGlmIG9wc2V0NSBlbHNlICJNQVgiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFy cmF5KFtbMC41XSwgWzAuNV0sIFswLjVdXSwgZHR5cGU9bnAuZmxvYXQzMiksCistICAgICAgICAg ICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAgICAgKQorLSAgICAgICAgICAgICAgICBmb3Igb3BzZXQ1IGluIFtUcnVlLCBGYWxzZV0K Ky0gICAgICAgICAgICApCistICAgICAgICApCistICAgICkKKy0gICAgQHVuaXR0ZXN0LnNraXBJ Zihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21waWxlZCB3aXRoIGFpLm9ubngubWwi KQorLSAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3Nvcl9hZ2dyZWdhdGlvbl9mdW5j dGlvbnMoCistICAgICAgICBzZWxmLCBhZ2dyZWdhdGVfZnVuY3Rpb24sIGV4cGVjdGVkX3Jlc3Vs dCwgb3BzZXQ1CistICAgICk6CistICAgICAgICB4ID0gbnAuYXJhbmdlKDkpLnJlc2hhcGUoKC0x LCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpIC8gMTAgLSAwLjUKKy0gICAgICAgIG1vZGVsX2ZhY3Rv cnkgPSAoCistICAgICAgICAgICAgc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9s YXRlc3QKKy0gICAgICAgICAgICBpZiBvcHNldDUKKy0gICAgICAgICAgICBlbHNlIHNlbGYuX2dl dF90ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yCistICAgICAgICApCistICAgICAgICBtb2Rl bF9wcm90byA9IG1vZGVsX2ZhY3RvcnkoCistICAgICAgICAgICAgYWdncmVnYXRlX2Z1bmN0aW9u LAorLSAgICAgICAgKQorLSAgICAgICAgc2VzcyA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbF9w cm90bykKKy0gICAgICAgIChhY3R1YWwsKSA9IHNlc3MucnVuKE5vbmUsIHsiWCI6IHh9KQorLSAg ICAgICAgYXNzZXJ0X2FsbGNsb3NlKGFjdHVhbCwgZXhwZWN0ZWRfcmVzdWx0LCBhdG9sPTFlLTYp CistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIHR1cGxlKAorLSAgICAg ICAgICAgIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAorLSAgICAgICAgICAgICAgICAo CistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5M RVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9MRVEiLAorLSAgICAgICAgICAgICAgICAgICAgICAg IG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzAuNTc2OTIzXSwgWzAu NTc2OTIzXSwgWzAuNTc2OTIzXV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAgICAgICAg ICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAg ICAgICAgTW9kZS5HVCBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0dUIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBucC5hcnJheShbWzAuNV0sIFswLjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0 MzIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAg TW9kZS5MVCBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0xUIiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjU3NjkyM10s IFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAgICAgICAg ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAg ICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAg ICAgICAgICAgIE1vZGUuR1RFIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfR1RFIiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheShbWzAuNV0sIFswLjVdLCBbMC41XV0sIGR0eXBlPW5w LmZsb2F0MzIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAg ICAgICAgTW9kZS5FUSBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0VRIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBucC5hcnJheShbWzEuMF0sIFsxLjBdLCBbMS4wXV0sIGR0eXBlPW5wLmZsb2F0 MzIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAg TW9kZS5ORVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9ORVEiLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzAuMDc2OTIz XSwgWzAuMDc2OTIzXSwgWzAuMDc2OTIzXV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAg ICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAg ICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICAgICAg Zm9yIG9wc2V0NSBpbiBbVHJ1ZSwgRmFsc2VdCistICAgICAgICAgICAgKQorLSAgICAgICAgKQor LSAgICApCistICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBu b3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKKy0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJs ZV9yZWdyZXNzb3JfcnVsZShzZWxmLCBydWxlLCBleHBlY3RlZCwgb3BzZXQ1KToKKy0gICAgICAg IHggPSBucC5hcmFuZ2UoOSkucmVzaGFwZSgoLTEsIDMpKS5hc3R5cGUobnAuZmxvYXQzMikgLyAx MCAtIDAuNQorLSAgICAgICAgbW9kZWxfZmFjdG9yeSA9ICgKKy0gICAgICAgICAgICBzZWxmLl9n ZXRfdGVzdF90cmVlX2Vuc2VtYmxlX29wc2V0X2xhdGVzdAorLSAgICAgICAgICAgIGlmIG9wc2V0 NQorLSAgICAgICAgICAgIGVsc2Ugc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNz b3IKKy0gICAgICAgICkKKy0gICAgICAgIGFnZ3JlZ2F0ZV9mdW5jdGlvbiA9IEFnZ3JlZ2F0aW9u RnVuY3Rpb24uU1VNIGlmIG9wc2V0NSBlbHNlICJTVU0iCistCistICAgICAgICBtb2RlbF9wcm90 byA9IG1vZGVsX2ZhY3RvcnkoYWdncmVnYXRlX2Z1bmN0aW9uLCBydWxlKQorLSAgICAgICAgc2Vz cyA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbF9wcm90bykKKy0gICAgICAgIChhY3R1YWwsKSA9 IHNlc3MucnVuKE5vbmUsIHsiWCI6IHh9KQorLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGFjdHVh bCwgZXhwZWN0ZWQsIGF0b2w9MWUtNikKKy0KKyAgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgT05O WF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21waWxlZCB3aXRoIGFpLm9ubngubWwiKQorICAgICBk ZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3Nvcl8yX3RhcmdldHNfb3BzZXQzKHNlbGYpOgor ICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9B VCwgW05vbmUsIE5vbmVdKQorQEAgLTExMTgsMjMgKzEwMDUsNiBAQCBjbGFzcyBUZXN0UmVmZXJl bmNlRXZhbHVhdG9yQWlPbm54TWwodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgYXNzZXJ0 X2FsbGNsb3NlKGdvdFswXSwgZXhwZWN0ZWQsIGF0b2w9MWUtNikKKyAgICAgICAgIHNlbGYuYXNz ZXJ0SW4oIm9wX3R5cGU9VHJlZUVuc2VtYmxlUmVncmVzc29yIiwgc3RyKHNlc3MucnRfbm9kZXNf WzBdKSkKKyAKKy0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54 IG5vdCBjb21waWxlZCB3aXRoIGFpLm9ubngubWwiKQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoCistICAgICAgICBbKGlucHV0X3R5cGUsKSBmb3IgaW5wdXRfdHlwZSBpbiBbVGVuc29yUHJv dG8uRkxPQVQsIFRlbnNvclByb3RvLkRPVUJMRV1dCistICAgICkKKy0gICAgZGVmIHRlc3RfdHJl ZV9lbnNlbWJsZV9taXNzaW5nX29wc2V0NShzZWxmLCBpbnB1dF90eXBlKToKKy0gICAgICAgIG1v ZGVsID0gc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QoCistICAgICAg ICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5TVU0sIE1vZGUuTEVRLCBUcnVlLCBpbnB1dF90eXBl CistICAgICAgICApCistICAgICAgICBucF9kdHlwZSA9IG9ubnguaGVscGVyLnRlbnNvcl9kdHlw ZV90b19ucF9kdHlwZShpbnB1dF90eXBlKQorLSAgICAgICAgeCA9IG5wLmFyYW5nZSg5KS5yZXNo YXBlKCgtMSwgMykpLmFzdHlwZShucF9kdHlwZSkgLyAxMCAtIDAuNQorLSAgICAgICAgeFsyLCAw XSA9IDUKKy0gICAgICAgIHhbMSwgOl0gPSBucC5uYW4KKy0gICAgICAgIGV4cGVjdGVkID0gbnAu YXJyYXkoW1sxMDAwMDEuMF0sIFsxMDAxMDAuMF0sIFsxMDAxMDAuMF1dLCBkdHlwZT1ucF9kdHlw ZSkKKy0gICAgICAgIHNlc3Npb24gPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAg ICAoYWN0dWFsLCkgPSBzZXNzaW9uLnJ1bihOb25lLCB7IlgiOiB4fSkKKy0gICAgICAgIGFzc2Vy dF9hbGxjbG9zZShhY3R1YWwsIGV4cGVjdGVkLCBhdG9sPTFlLTYpCistCisgICAgIEB1bml0dGVz dC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5v bm54Lm1sIikKKyAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfbWlzc2luZ19v cHNldDVfZmxvYXQxNihzZWxmKToKKyAgICAgICAgIG1vZGVsID0gc2VsZi5fZ2V0X3Rlc3RfdHJl ZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QoCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3JlZmVyZW5j ZV9ldmFsdWF0b3JfdGVzdC5weSBiL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3Qu cHkKK2luZGV4IDg1Y2M0Y2MwZS4uZDBhMjU1ZmM4IDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3Jl ZmVyZW5jZV9ldmFsdWF0b3JfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFs dWF0b3JfdGVzdC5weQorQEAgLTI1LDcgKzI1LDYgQEAgZnJvbSB0eXBpbmcgaW1wb3J0IFRZUEVf Q0hFQ0tJTkcKKyAKKyBpbXBvcnQgbWxfZHR5cGVzCisgaW1wb3J0IG51bXB5IGFzIG5wCistaW1w b3J0IHBhcmFtZXRlcml6ZWQKKyBpbXBvcnQgdmVyc2lvbl91dGlscworIGZyb20gbnVtcHkudGVz dGluZyBpbXBvcnQgYXNzZXJ0X2FsbGNsb3NlCisgCitAQCAtMjk5OCwxNjMgKzI5OTcsNiBAQCBj bGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAg ICMgbW9kZWwKKyAgICAgICAgIHJldHVybiBtYWtlX21vZGVsKGdyYXBoLCBvcHNldF9pbXBvcnRz PVttYWtlX29wc2V0aWQoIiIsIG9wc2V0KV0pCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFt ZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTWlu IiwKKy0gICAgICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5h cnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tucC5uYW4sIG5wLm5hbl0sIFsx NC40MjI3MDYsIDE4LjgwNTI3XV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAgICAgICAg ICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMiwgMTVdLCBb MTAsIDRdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAg ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAg IlJlZHVjZUwxIiwKKy0gICAgICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAg ICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1syLjIzNjcwNTMs IDIuMzUxNjYxMl0sIFs0LjA3NjI5MiwgNC4yOTcwNjM0XV0sCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAgICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzE4LCA2XSwgWzEzLCA2XV0sIGR0 eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAg ICksCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VMMiIs CistICAgICAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJy YXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMS44MDE1NSwgMS44MTY5OTQ4XSwg WzIuOTkyODA3NiwgMy4xMjA1ODgzXV0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0 eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBucC5hcnJheShbWzExLCAxOF0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2 NCksCistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAg ICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTG9nU3VtIiwKKy0gICAg ICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjk0OTc4NDgsIDEuMTg3MjY0M10sIFsxLjY3 NjQxNzUsIDEuNzA3NTldXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAu ZmxvYXQzMiwKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KFtbNiwgMThdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAg ICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAg ICAgKAorLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUxvZ1N1bUV4cCIsCistICAgICAgICAg ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFtbMS42MDA1OTczLCAxLjc0NDU5MzVdLCBbMi41NjE2MjI5 LCAyLjY1Mzk3OTVdXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxv YXQzMiwKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIG5wLmFycmF5KFtbMTMsIDZdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAg ICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAg KAorLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZU1heCIsCistICAgICAgICAgICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFtbMS40MjE3MTA4LCAxLjUwNjk1MzZdLCBbMi40NTM4MjYsIDIuNTA0MTc4 M11dLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJy YXkoW1sxMywgMTFdLCBbMTMsIDExXV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAg ICAgICAgICAgICAgICAgICJSZWR1Y2VNZWFuIiwKKy0gICAgICAgICAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgW1swLjM5MjQ3OTAzLCAwLjc4NDk3NjM2XSwgWzIuMDM4MTQ2LCAyLjE0ODUzMTddXSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtb MTMsIDZdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAg ICAgICAgICAgIlJlZHVjZVN1bVNxdWFyZSIsCistICAgICAgICAgICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFtbMy4yNDU1ODI4LCAzLjMwMTQ2OTZdLCBbOC45NTY4OTYsIDkuNzM4MDcwNV1dLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxMSwg MThdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAg ICAgICAgIlJlZHVjZVByb2QiLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW25w Lm5hbiwgbnAubmFuXSwgWzE0LjQyMjcwNiwgMTguODA1MjddXSwgZHR5cGU9bnAuZmxvYXQzMgor LSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAu YXJyYXkoW1syLCAxNV0sIFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAgICAgICAg ICAgICAgICBdLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgWzE3LCAxOF0sCistICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3Rfb3BfcmVk dWNlKHNlbGYsIHJlZHVjZV9vcF9leHBlY3RlZCwgb3BzZXQ6IGludCk6CistICAgICAgICByZWR1 Y2Vfb3AsIGV4cGVjdGVkID0gcmVkdWNlX29wX2V4cGVjdGVkCistICAgICAgICBYID0gbnAuYXJh bmdlKDgpLnJlc2hhcGUoKC0xLCA0KSkuYXN0eXBlKG5wLmZsb2F0MzIpCistCistICAgICAgICBy ZXN1bHRzID0ge30KKy0KKy0gICAgICAgIG1vZGVsID0gc2VsZi5fY2Rpc3RfbW9kZWwob3BzZXQs IHJlZHVjZV9vcCkKKy0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCist ICAgICAgICBnb3QgPSBzZXNzLnJ1bihOb25lLCB7ImlucHV0IjogWH0pCistICAgICAgICByZXN1 bHRzWyJyZWYiLCBvcHNldF0gPSBnb3QKKy0KKy0gICAgICAgIGNsID0gWworLSAgICAgICAgICAg IG4KKy0gICAgICAgICAgICBmb3IgbiBpbiBzZXNzLnJ0X25vZGVzX1swXS5ib2R5LnJ0X25vZGVz XworLSAgICAgICAgICAgIGlmIG4uX19jbGFzc19fLl9fbmFtZV9fLnN0YXJ0c3dpdGgocmVkdWNl X29wKQorLSAgICAgICAgXQorLSAgICAgICAgc2NoZW1hID0gY2xbMF0uX3NjaGVtYQorLSAgICAg ICAgbmV3X2NsID0gdHlwZShyZWR1Y2Vfb3AsIChjbFswXS5fX2NsYXNzX18sKSwgeyJvcF9zY2hl bWEiOiBzY2hlbWF9KQorLSAgICAgICAgc2VzcyA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCwg bmV3X29wcz1bbmV3X2NsXSkKKy0gICAgICAgIGdvdCA9IHNlc3MucnVuKE5vbmUsIHsiaW5wdXQi OiBYfSkKKy0gICAgICAgIHJlc3VsdHNbInJlZl9jbCIsIG9wc2V0XSA9IGdvdAorLQorLSAgICAg ICAgYmFzZWxpbmUgPSAiY29uc3RhbnQiCistICAgICAgICBmb3IgaywgdiBpbiByZXN1bHRzLml0 ZW1zKCk6CistICAgICAgICAgICAgZm9yIGEsIGIgaW4gemlwKHJldmVyc2VkKGV4cGVjdGVkKSwg cmV2ZXJzZWQodiksIHN0cmljdD1UcnVlKToKKy0gICAgICAgICAgICAgICAgaWYgYS5zaGFwZSAh PSBiLnNoYXBlOgorLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCist ICAgICAgICAgICAgICAgICAgICAgICAgZiJTaGFwZSBtaXNtYXRjaCBmb3Ige3JlZHVjZV9vcCFy fSwge2Jhc2VsaW5lfTp7YS5zaGFwZX0gIT0ge2t9OntiLnNoYXBlfS4iCistICAgICAgICAgICAg ICAgICAgICApCistICAgICAgICAgICAgICAgIGRpZmYgPSBucC5hYnMoYSAtIGIpLm1heCgpCist ICAgICAgICAgICAgICAgIGlmIGRpZmYgPiAxZS02OgorLSAgICAgICAgICAgICAgICAgICAgcmFp c2UgQXNzZXJ0aW9uRXJyb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgZiJEaXNjcmVwYW5j aWVzIChtYXg9e2RpZmZ9KSBmb3Ige3JlZHVjZV9vcCFyfSwge2Jhc2VsaW5lfSAhPSB7a31cbnth fVxuIT1cbntifSIKKy0gICAgICAgICAgICAgICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKDEzLCks CistICAgICAgICAgICAgKDE3LCksCistICAgICAgICAgICAgKDE4LCksCistICAgICAgICBdCist ICAgICkKKy0gICAgZGVmIHRlc3RfbXZuKHNlbGYsIG9wc2V0OiBpbnQsIHJlZl9vcHNldDogaW50 ID0gMTMpOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQ cm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmUsIE5vbmVdKQorLSAgICAgICAgWSA9IG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5v bmUsIE5vbmVdKQorLSAgICAgICAgbm9kZXMgPSBbCistICAgICAgICAgICAgbWFrZV9ub2RlKCJN ZWFuVmFyaWFuY2VOb3JtYWxpemF0aW9uIiwgWyJYIl0sIFsiWSJdKSwKKy0gICAgICAgIF0KKy0g ICAgICAgIGdyYXBoID0gbWFrZV9ncmFwaChub2RlcywgImciLCBbWF0sIFtZXSkKKy0gICAgICAg IHggPSBucC5yYW5kb20ucmFuZCgzLCAzLCAzLCAxKS5hc3R5cGUobnAuZmxvYXQzMikKKy0KKy0g ICAgICAgIG9ubnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBoLCBvcHNldF9pbXBvcnRzPVttYWtl X29wc2V0aWQoIiIsIG9wc2V0KV0pCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3Io b25ueF9tb2RlbCkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogeH0pWzBdCist CistICAgICAgICByZWZfb25ueF9tb2RlbCA9IG1ha2VfbW9kZWwoZ3JhcGgsIG9wc2V0X2ltcG9y dHM9W21ha2Vfb3BzZXRpZCgiIiwgcmVmX29wc2V0KV0pCistICAgICAgICByZWZfZXhwZWN0ZWQg PSBSZWZlcmVuY2VFdmFsdWF0b3IocmVmX29ubnhfbW9kZWwpCistICAgICAgICBleHBlY3RlZCA9 IHJlZl9leHBlY3RlZC5ydW4oTm9uZSwgeyJYIjogeH0pWzBdCistCistICAgICAgICBzZWxmLmFz c2VydEVxdWFsKGdvdC5zaGFwZSwgZXhwZWN0ZWQuc2hhcGUpCistICAgICAgICBhc3NlcnRfYWxs Y2xvc2UoZ290LCBleHBlY3RlZCkKKy0KKyAgICAgZGVmIHRlc3RfY29uY2F0X2luX2FfZnVuY3Rp b24oc2VsZik6CisgICAgICAgICBkZWYgY3JlYXRlX21vZGVsKCk6CisgICAgICAgICAgICAgbm9k ZXMgPSBbXQorQEAgLTM4MjksMjExICszNjcxLDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1 YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsi WCI6IGRhdGF9KQorICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGdvdFswXSwgZXhwZWN0ZWQpCisg CistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWwor LSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgNCAqIG5wLmFyYW5nZSgxMikucmVzaGFw ZSgzLCA0KSwKKy0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcpLnJlc2hhcGUoMywgMiks CistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAyKSksCistICAgICAgICAgICAgICAgIDEs CistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIFtbMCwgNCwgNCwgNl0sIFs1 LCA3LCA2LCA3XSwgWzYsIDcsIDcsIDddXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAg ICgKKy0gICAgICAgICAgICAgICAgNCAqIG5wLmFyYW5nZSgxMikucmVzaGFwZSgzLCA0KSwKKy0g ICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcpLnJlc2hhcGUoMywgMiksCistICAgICAgICAg ICAgICAgIG5wLm9uZXMoKDMsIDIpKSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAg ICAgICAgMiwKKy0gICAgICAgICAgICAgICAgW1sxLCA1LCA1LCA3XSwgWzYsIDgsIDcsIDhdLCBb NywgOCwgOCwgOF1dLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICBucC5hcmFuZ2UoMjQpLnJlc2hhcGUoMywgOCksCistICAgICAgICAgICAgICAgIFtb MC4yNSwgMC41LCAxXSwgWzAuMjUsIDAuNSwgMV0sIFswLjI1LCAwLjUsIDFdXSwKKy0gICAgICAg ICAgICAgICAgbnAuemVyb3MoKDMsIDMpKSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAg ICAgICAgICAgMywKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgWzAs IDQsIDgsIDYsIDgsIDEwLCA2LCA3XSwKKy0gICAgICAgICAgICAgICAgICAgIFszMiwgMzYsIDQw LCAyMiwgMjQsIDI2LCAxNCwgMTVdLAorLSAgICAgICAgICAgICAgICAgICAgWzY0LCA2OCwgNzIs IDM4LCA0MCwgNDIsIDIyLCAyM10sCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5wLmFyYW5nZSg2KSwKKy0gICAg ICAgICAgICAgICAgWzAuMjUsIDAuNV0sCistICAgICAgICAgICAgICAgIFstMSwgLTJdLAorLSAg ICAgICAgICAgICAgICAwLAorLSAgICAgICAgICAgICAgICAzLAorLSAgICAgICAgICAgICAgICBb LTEsIDMsIDcsIDQsIDYsIDhdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAg ICAgICAgICAgICAgICBucC5vbmVzKCg5LCAxMikpLAorLSAgICAgICAgICAgICAgICBucC5vbmVz KCgzLCA0KSksCistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSksCistICAgICAgICAg ICAgICAgIDAsCistICAgICAgICAgICAgICAgIDMsCistICAgICAgICAgICAgICAgIE5vbmUsICAj IEJsb2NrZWQgcXVhbnRpemF0aW9uIGlzIGRlZmluZWQgZm9yIDEtRCBibG9ja3Mgb25seQorLSAg ICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5vbmVzKCgz LCA0LCA1LCA2KSksCistICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQpKSwKKy0gICAgICAg ICAgICAgICAgbnAuemVyb3MoKDMsIDQpKSwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAg ICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgTm9uZSwgICMgU2NhbGUgYW5kIFpQIG11c3Qg aGF2ZSB0aGUgc2FtZSByYW5rIGFzIHRoZSBpbnB1dAorLSAgICAgICAgICAgICksCistICAgICAg ICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfYmxvY2tlZF9xdWFudGl6ZV9saW5lYXIoCistICAg ICAgICBzZWxmLCB4LCBzY2FsZSwgemVyb19wb2ludCwgYXhpcywgYmxvY2tfc2l6ZSwgZXhwZWN0 ZWQKKy0gICAgKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVu c29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJZIiwgVGVuc29yUHJvdG8uSU5UOCwgW05vbmVdKQorLQorLSAgICAgICAgc2NhbGVfZGF0 YSA9IG5wLmFycmF5KHNjYWxlLCBkdHlwZT1ucC5mbG9hdDMyKQorLSAgICAgICAgenBfZGF0YSA9 IG5wLmFycmF5KHplcm9fcG9pbnQsIGR0eXBlPW5wLmludDgpCistICAgICAgICBtb2RlbCA9IG1h a2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJRdWFudGl6ZUxpbmVhciIsCistICAgICAgICAgICAgICAgICAgICAgICAgWyJYIiwgInNjYWxl IiwgInplcm8iXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbIlkiXSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBheGlzPWF4aXMsCistICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tf c2l6ZT1ibG9ja19zaXplLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAorLSAgICAgICAgICAgICAgICBbWF0sCistICAg ICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgInNjYWxlIiwgVGVuc29y UHJvdG8uRkxPQVQsIHNjYWxlX2RhdGEuc2hhcGUsIHNjYWxlX2RhdGEKKy0gICAgICAgICAgICAg ICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigiemVybyIsIFRlbnNv clByb3RvLklOVDgsIHNjYWxlX2RhdGEuc2hhcGUsIHpwX2RhdGEpLAorLSAgICAgICAgICAgICAg ICBdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5j ZUV2YWx1YXRvcihtb2RlbCkKKy0KKy0gICAgICAgIGRhdGEgPSBucC5hcnJheSh4LCBkdHlwZT1u cC5mbG9hdDMyKQorLQorLSAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CistICAgICAg ICAgICAgZXhwZWN0ZWQgPSBucC5hcnJheShleHBlY3RlZCwgZHR5cGU9bnAuaW50OCkKKy0gICAg ICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAgICAgICAgIGFz c2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQorLSAgICAgICAgZWxzZToKKy0gICAgICAg ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorLSAgICAgICAgICAgICAg ICByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAg ICAgICAgIG5wLmFyYW5nZSgxMikucmVzaGFwZSgzLCA0KSwKKy0gICAgICAgICAgICAgICAgbnAu YXJhbmdlKDEsIDcpLnJlc2hhcGUoMywgMiksCistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgz LCAyKSksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIDIsCistICAgICAg ICAgICAgICAgIFtbMCwgMSwgNCwgNl0sIFsxMiwgMTUsIDI0LCAyOF0sIFs0MCwgNDUsIDYwLCA2 Nl1dLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBu cC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCistICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgx LCA3KS5yZXNoYXBlKDMsIDIpLAorLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCAyKSksCist ICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAg IFtbLTEsIDAsIDIsIDRdLCBbOSwgMTIsIDIwLCAyNF0sIFszNSwgNDAsIDU0LCA2MF1dLAorLSAg ICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5kc3RhY2so W25wLmFyYW5nZSg0KS5yZXNoYXBlKDIsIDIpXSAqIDQpLAorLSAgICAgICAgICAgICAgICBucC5k c3RhY2soW25wLmFycmF5KFtbMSwgMV0sIFsyLCAzXV0pLCBucC5hcnJheShbWzQsIDVdLCBbNiwg N11dKV0pLAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMiwgMiwgMikpLAorLSAgICAgICAg ICAgICAgICAyLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBbW1swLCAw LCAwLCAwXSwgWzEsIDEsIDUsIDVdXSwgW1s0LCA0LCAxMiwgMTJdLCBbOSwgOSwgMjEsIDIxXV1d LAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5h cmFuZ2UoMjQpLnJlc2hhcGUoMywgOCksCistICAgICAgICAgICAgICAgIFtbMiwgMSwgM10sIFsy LCAxLCAzXSwgWzIsIDEsIDNdXSwKKy0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDMpKSwK Ky0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgMywKKy0gICAgICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICAgICAgWzAsIDIsIDQsIDMsIDQsIDUsIDE4LCAyMV0sCist ICAgICAgICAgICAgICAgICAgICBbMTYsIDE4LCAyMCwgMTEsIDEyLCAxMywgNDIsIDQ1XSwKKy0g ICAgICAgICAgICAgICAgICAgIFszMiwgMzQsIDM2LCAxOSwgMjAsIDIxLCA2NiwgNjldLAorLSAg ICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAg ICAgICAgICAgICBucC5hcmFuZ2UoCistICAgICAgICAgICAgICAgICAgICA2LAorLSAgICAgICAg ICAgICAgICApLAorLSAgICAgICAgICAgICAgICBbMiwgM10sCistICAgICAgICAgICAgICAgIFsx LCAyXSwKKy0gICAgICAgICAgICAgICAgMCwKKy0gICAgICAgICAgICAgICAgMywKKy0gICAgICAg ICAgICAgICAgWy0yLCAwLCAyLCAzLCA2LCA5XSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAg ICAgICgKKy0gICAgICAgICAgICAgICAgbnAub25lcygoOSwgMTIpKSwKKy0gICAgICAgICAgICAg ICAgbnAub25lcygoMywgNCkpLAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgNCkpLAor LSAgICAgICAgICAgICAgICAwLAorLSAgICAgICAgICAgICAgICAzLAorLSAgICAgICAgICAgICAg ICBOb25lLCAgIyBCbG9ja2VkIHF1YW50aXphdGlvbiBpcyBkZWZpbmVkIGZvciAxLUQgYmxvY2tz IG9ubHkKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAg bnAub25lcygoMywgNCwgNSwgNikpLAorLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0KSks CistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSksCistICAgICAgICAgICAgICAgIDIs CistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIE5vbmUsICAjIFNjYWxlIGFu ZCBaUCBtdXN0IGhhdmUgdGhlIHNhbWUgcmFuayBhcyB0aGUgaW5wdXQKKy0gICAgICAgICAgICAp LAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2Jsb2NrZWRfZGVxdWFudGl6ZV9s aW5lYXIoCistICAgICAgICBzZWxmLCB4LCBzY2FsZSwgemVyb19wb2ludCwgYXhpcywgYmxvY2tf c2l6ZSwgZXhwZWN0ZWQKKy0gICAgKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJYIiwgVGVuc29yUHJvdG8uSU5UOCwgW05vbmVdKQorLSAgICAgICAgWSA9IG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQorLQorLSAgICAg ICAgc2NhbGVfZGF0YSA9IG5wLmFycmF5KHNjYWxlLCBkdHlwZT1ucC5mbG9hdDMyKQorLSAgICAg ICAgenBfZGF0YSA9IG5wLmFycmF5KHplcm9fcG9pbnQsIGR0eXBlPW5wLmludDgpCistICAgICAg ICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAg ICAgICAgICAgICAgICJEZXF1YW50aXplTGluZWFyIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBbIlgiLCAic2NhbGUiLCAiemVybyJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiWSJd LAorLSAgICAgICAgICAgICAgICAgICAgICAgIGF4aXM9YXhpcywKKy0gICAgICAgICAgICAgICAg ICAgICAgICBibG9ja19zaXplPWJsb2NrX3NpemUsCistICAgICAgICAgICAgICAgICAgICApLAor LSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAiZyIsCistICAgICAgICAgICAg ICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAi c2NhbGUiLCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfZGF0YS5zaGFwZSwgc2NhbGVfZGF0YQor LSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y KCJ6ZXJvIiwgVGVuc29yUHJvdG8uSU5UOCwgc2NhbGVfZGF0YS5zaGFwZSwgenBfZGF0YSksCist ICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgKQorLSAgICAgICAgKQorLSAgICAgICAg cmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgZGF0YSA9IG5wLmFycmF5 KHgsIGR0eXBlPW5wLmludDgpCistCistICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToK Ky0gICAgICAgICAgICBleHBlY3RlZCA9IG5wLmFycmF5KGV4cGVjdGVkLCBkdHlwZT1ucC5mbG9h dDMyKQorLSAgICAgICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCistICAg ICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGdvdFswXSwgZXhwZWN0ZWQpCistICAgICAgICBlbHNl OgorLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CistICAg ICAgICAgICAgICAgIHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCistCisgICAgIGRlZiB0ZXN0 X2xybihzZWxmKToKKyAgICAgICAgIGRlZiBfZXhwZWN0ZWQoeCwgYWxwaGEsIGJldGEsIGJpYXMs IHNpemUpOgorICAgICAgICAgICAgIHNxdWFyZV9zdW0gPSBucC56ZXJvcygoNSwgNSwgNSwgNSkp LmFzdHlwZShucC5mbG9hdDMyKQorQEAgLTQyMTcsNTIgKzM4NTQsNiBAQCBjbGFzcyBUZXN0UmVm ZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGdvdCA9IF9jb252 X2ltcGxlbWVudGF0aW9uX2ltMmNvbCgqKmZlZWRzLCAqKmt3YXJncykKKyAgICAgICAgIGFzc2Vy dF9hbGxjbG9zZShnb3QsIGV4cGVjdGVkKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoIlJlZHVjZVN1bSIsKSwK Ky0gICAgICAgICAgICAoIlJlZHVjZUwxIiwpLAorLSAgICAgICAgICAgICgiUmVkdWNlTDIiLCks CistICAgICAgICAgICAgKCJSZWR1Y2VNaW4iLCksCistICAgICAgICAgICAgKCJSZWR1Y2VNYXgi LCksCistICAgICAgICAgICAgKCJSZWR1Y2VQcm9kIiwpLAorLSAgICAgICAgICAgICgiUmVkdWNl U3VtU3F1YXJlIiwpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3JlZHVjZV9v cF9ub19heGlzKHNlbGYsIG9wKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCistICAgICAgICBZID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQorLSAgICAgICAgZGF0YSA9 IG5wLmFyYW5nZSg2KS5yZXNoYXBlKCgxLCAzLCAyKSkuYXN0eXBlKG5wLmZsb2F0MzIpCistICAg ICAgICBub2RlcyA9IFttYWtlX25vZGUob3AsIFsiWCJdLCBbIlkiXSwga2VlcGRpbXM9MCldCist ICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChub2RlcywgImciLCBbWF0sIFtZ XSkpCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICBn b3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAgICAgciA9IGdvdFswXQorLSAg ICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIG5wLm5kYXJyYXkpCistICAgICAgICBzZWxm LmFzc2VydEVxdWFsKHIuc2hhcGUsICgpKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkLmV4cGFuZChbKDEsKSwgKDIsKSwgKDMsKSwgKDQsKSwgKDUsKSwgKDYsKV0pCistICAg IGRlZiB0ZXN0X3BhZChzZWxmLCBkaW0pOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKKy0gICAgICAgIFAgPSBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJQIiwgVGVuc29yUHJvdG8uSU5UNjQsIE5vbmUpCistICAgICAgICBW ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiViIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQor LSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9B VCwgTm9uZSkKKy0gICAgICAgIHZhbHVlID0gbnAuYXJyYXkoWy01XSwgZHR5cGU9bnAuZmxvYXQz MikKKy0KKy0gICAgICAgIG5vZGUgPSBtYWtlX25vZGUoIlBhZCIsIGlucHV0cz1bIlgiLCAiUCIs ICJWIl0sIG91dHB1dHM9WyJZIl0sIG1vZGU9ImNvbnN0YW50IikKKy0gICAgICAgIG1vZGVsID0g bWFrZV9tb2RlbChtYWtlX2dyYXBoKFtub2RlXSwgImciLCBbWCwgUCwgVl0sIFtZXSkpCistICAg ICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICB4ID0gbnAuYXJy YXkoWzFdLCBkdHlwZT1ucC5mbG9hdDMyKS5yZXNoYXBlKCgxLCkgKiBkaW0pCistCistICAgICAg ICBwID0gbnAuYXJyYXkoWzEsIDFdICogZGltLCBkdHlwZT1ucC5pbnQ2NCkKKy0gICAgICAgIGdv dCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogeCwgIlAiOiBwLCAiViI6IHZhbHVlfSlbMF0KKy0gICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LnNoYXBlLCAoMywpICogZGltKQorLSAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChnb3QuZHR5cGUsIG5wLmZsb2F0MzIpCistCistICAgICAgICBwID0gbnAu cmVwZWF0KFs3LCAzXSwgZGltKS5hc3R5cGUobnAuaW50NjQpCistICAgICAgICBnb3QgPSByZWYu cnVuKE5vbmUsIHsiWCI6IHgsICJQIjogcCwgIlYiOiB2YWx1ZX0pWzBdCistICAgICAgICBzZWxm LmFzc2VydEVxdWFsKGdvdC5zaGFwZSwgKDExLCkgKiBkaW0pCistICAgICAgICBzZWxmLmFzc2Vy dEVxdWFsKGdvdC5kdHlwZSwgbnAuZmxvYXQzMikKKy0KKyAgICAgZGVmIHRlc3RfY29uc3RhbnRf b2Zfc2hhcGUoc2VsZik6CisgICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIs IFRlbnNvclByb3RvLkZMT0FULCBOb25lKQorICAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKK0BAIC01MzczLDEyNCArNDk2NCw2 IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAg ICAgICAgZm9yIGkgaW4gcmFuZ2UoMiwgLTEsIC0xKToKKyAgICAgICAgICAgICBhc3NlcnRfYWxs Y2xvc2UoZ290W2ldLCBleHBlY3RlZFtpXSkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1l dGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKFsiYWJjIiwgImRlZiJd LCBbIi5jb20iLCAiLm5ldCJdLCBbImFiYy5jb20iLCAiZGVmLm5ldCJdLCAoMiwpKSwKKy0gICAg ICAgICAgICAoWyJjYXQiLCAiZG9nIiwgInNuYWtlIl0sIFsicyJdLCBbImNhdHMiLCAiZG9ncyIs ICJzbmFrZXMiXSwgKDMsKSksCistICAgICAgICAgICAgKCJjYXQiLCAicyIsICJjYXRzIiwgKCkp LAorLSAgICAgICAgICAgIChbImEiLCAiw58iLCAieSJdLCBbImEiLCAiw58iLCAieSJdLCBbImFh IiwgIsOfw58iLCAieXkiXSwgKDMsKSksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRl c3Rfc3RyaW5nX2NvbmNhdChzZWxmLCBhLCBiLCBleHBlY3RlZCwgZXhwZWN0ZWRfc2hhcGUpOgor LSAgICAgICAgQSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIkEiLCBUZW5zb3JQcm90by5TVFJJ TkcsIE5vbmUpCistICAgICAgICBCID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiQiIsIFRlbnNv clByb3RvLlNUUklORywgTm9uZSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJZIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25lKQorLSAgICAgICAgbm9kZSA9IG1ha2Vfbm9k ZSgiU3RyaW5nQ29uY2F0IiwgaW5wdXRzPVsiQSIsICJCIl0sIG91dHB1dHM9WyJZIl0pCistICAg ICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW0EsIEJdLCBb WV0pKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAg cmVzdWx0LCAqXyA9IHJlZi5ydW4oTm9uZSwgeyJBIjogbnAuYXJyYXkoYSksICJCIjogbnAuYXJy YXkoYil9KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0LCBl eHBlY3RlZCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVzdWx0LmR0eXBlLmtpbmQsIHsiTyIs ICJVIn0pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zaGFwZSwgZXhwZWN0ZWRf c2hhcGUpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAg ICAgICAgWworLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWyIxLDIsMyIsICI0LDUs NiJdLAorLSAgICAgICAgICAgICAgICAiLCIsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAg ICAgICAgICAgICAgIFtbIjEiLCAiMiIsICIzIl0sIFsiNCIsICI1IiwgIjYiXV0sCistICAgICAg ICAgICAgICAgIFszLCAzXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAg ICAgICAgICAgICAgWyIxLCIsICI0LDYiLCAiIl0sCistICAgICAgICAgICAgICAgICIsIiwKKy0g ICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgW1siMSIsICIiXSwgWyI0Iiwg IjYiXSwgWyIiLCAiIl1dLAorLSAgICAgICAgICAgICAgICBbMiwgMiwgMV0sCistICAgICAgICAg ICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFsiMSIsICI0LDYiLCAiNCw1 LDYiXSwKKy0gICAgICAgICAgICAgICAgIiwiLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAg ICAgICAgICAgICBbWyIxIiwgIiJdLCBbIjQiLCAiNiJdLCBbIjQiLCAiNSw2Il1dLAorLSAgICAg ICAgICAgICAgICBbMSwgMiwgMl0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCist ICAgICAgICAgICAgICAgIFtbIjEsIiwgIjQsNiIsICI0LDUsNiJdLCBbIjEsIiwgIjQsNiIsICI0 LDUsNiJdXSwKKy0gICAgICAgICAgICAgICAgIiwiLAorLSAgICAgICAgICAgICAgICBOb25lLAor LSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBbWyIxIiwgIiIsICIiXSwg WyI0IiwgIjYiLCAiIl0sIFsiNCIsICI1IiwgIjYiXV0sCistICAgICAgICAgICAgICAgICAgICBb WyIxIiwgIiIsICIiXSwgWyI0IiwgIjYiLCAiIl0sIFsiNCIsICI1IiwgIjYiXV0sCistICAgICAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFtbMiwgMiwgM10sIFsyLCAyLCAzXV0sCist ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFsiaGVsbG8g d29ybGQgISIsICIgIGhlbGxvICAgd29ybGQgISIsICIgaGVsbG8gd29ybGQgICAhICJdLAorLSAg ICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKKy0g ICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAorLSAgICAgICAgICAg ICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCistICAgICAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgICAgIFszLCAzLCAzXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAg ICgKKy0gICAgICAgICAgICAgICAgWyJoZWxsbyB3b3JsZCAhIiwgIiAgaGVsbG8gICB3b3JsZCAh IiwgIiBoZWxsbyB3b3JsZCAgICEgIl0sCistICAgICAgICAgICAgICAgICIiLAorLSAgICAgICAg ICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBb ImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAi d29ybGQiLCAiISJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIh Il0sCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFszLCAzLCAzXSwKKy0g ICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWyJvLW4tbi0t eC0iLCAiby1uLS0tLW54Il0sCistICAgICAgICAgICAgICAgICItIiwKKy0gICAgICAgICAgICAg ICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgW1sibyIsICJuIiwgIm4iLCAiIiwgIngiLCAiIl0s IFsibyIsICJuIiwgIiIsICIiLCAiIiwgIm54Il1dLAorLSAgICAgICAgICAgICAgICBbNiwgNl0s CistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFtdLAor LSAgICAgICAgICAgICAgICAiICIsCistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAg ICAgIG5wLmFycmF5KFtdKS5yZXNoYXBlKCgwLCAwKSksCistICAgICAgICAgICAgICAgIFtdLAor LSAgICAgICAgICAgICksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3Rfc3RyaW5n X3NwbGl0KAorLSAgICAgICAgc2VsZiwKKy0gICAgICAgIHgsCistICAgICAgICBkZWxpbWl0ZXIs CistICAgICAgICBtYXhzcGxpdCwKKy0gICAgICAgIGV4cGVjdGVkX3NwbGl0LAorLSAgICAgICAg ZXhwZWN0ZWRfbnVtX3NwbGl0cywKKy0gICAgKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoTm9uZSkpCistICAgICAgICBTcGxp dHMgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJTcGxpdHMiLCBUZW5zb3JQcm90by5TVFJJTkcs IChOb25lKSkKKy0gICAgICAgIE1heFNwbGl0cyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIk1h eFNwbGl0cyIsIFRlbnNvclByb3RvLklOVDMyLCAoTm9uZSkpCistICAgICAgICBub2RlID0gbWFr ZV9ub2RlKAorLSAgICAgICAgICAgICJTdHJpbmdTcGxpdCIsCistICAgICAgICAgICAgaW5wdXRz PVsiWCJdLAorLSAgICAgICAgICAgIG91dHB1dHM9WyJTcGxpdHMiLCAiTWF4U3BsaXRzIl0sCist ICAgICAgICAgICAgZGVsaW1pdGVyPWRlbGltaXRlciwKKy0gICAgICAgICAgICBtYXhzcGxpdD1t YXhzcGxpdCwKKy0gICAgICAgICkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbChtYWtlX2dy YXBoKFtub2RlXSwgImciLCBbWF0sIFtTcGxpdHMsIE1heFNwbGl0c10pKQorLSAgICAgICAgcmVm ID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgeCA9IG5wLmFycmF5KHgsIGR0 eXBlPW9iamVjdCkKKy0gICAgICAgIHJlc3VsdCwgbnVtX3NwbGl0cywgKl8gPSByZWYucnVuKE5v bmUsIHsiWCI6IHh9KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwocmVz dWx0LCBucC5hcnJheShleHBlY3RlZF9zcGxpdCwgZHR5cGU9b2JqZWN0KSkKKy0gICAgICAgIG5w LnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKAorLSAgICAgICAgICAgIG51bV9zcGxpdHMsIG5w LmFycmF5KGV4cGVjdGVkX251bV9zcGxpdHMsIGR0eXBlPW5wLmludDY0KQorLSAgICAgICAgKQor LQorICAgICBkZWYgdGVzdF9xbGluZWFyY29udl9pbnQ4KHNlbGYpOgorICAgICAgICAgbm9kZSA9 IG1ha2Vfbm9kZSgKKyAgICAgICAgICAgICAiUUxpbmVhck1hdE11bCIsCitAQCAtNTU2MSw0NCAr NTAzNCw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2Up OgorICAgICAgICAgICAgIG5wLmFycmF5KFtbNDEsIC0xMiwgLTldLCBbMSwgLTc1LCAyMF1dLCBk dHlwZT1ucC5pbnQ4KSwgZ290WzBdCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVk LnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgKKy0gICAg ICAgICAgICAgICAgWyJ3d3cuZ29vZ2xlLmNvbSIsICJ3d3cuZmFjZWJvb2suY29tIiwgInd3dy5i YmMuY28udWsiXSwKKy0gICAgICAgICAgICAgICAgciJ3d3dcLltcdy4tXStcLlxiY29tXGIiLAor LSAgICAgICAgICAgICAgICBbVHJ1ZSwgVHJ1ZSwgRmFsc2VdLAorLSAgICAgICAgICAgICAgICAo MywpLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBb WyJPbm54IiwgInRlbnNvcmZsb3ciLCAiTnVtcHkiXSwgWyJQeXRvcmNoIiwgIkN5dGhvbiIsICJu dW1iYSJdXSwKKy0gICAgICAgICAgICAgICAgciJeW0EtWl1bYS16XSokIiwKKy0gICAgICAgICAg ICAgICAgW1tUcnVlLCBGYWxzZSwgVHJ1ZV0sIFtUcnVlLCBUcnVlLCBGYWxzZV1dLAorLSAgICAg ICAgICAgICAgICAoMiwgMyksCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAg ICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICJhY2NvdW50QGdtYWlsLmNvbSIs CistICAgICAgICAgICAgICAgICAgICAiYWNjb3VudEBob3RtYWlsLmNvbSIsCistICAgICAgICAg ICAgICAgICAgICAibm90IGVtYWlsIiwKKy0gICAgICAgICAgICAgICAgICAgICJhY2NvdW50MkB5 YWhvby5jb20iLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICByIihcV3xe KVtcdy5cLV17MCwyNX1AKHlhaG9vfGdtYWlsKVwuY29tKFxXfCQpIiwKKy0gICAgICAgICAgICAg ICAgW1RydWUsIEZhbHNlLCBGYWxzZSwgVHJ1ZV0sCistICAgICAgICAgICAgICAgICg0LCksCist ICAgICAgICAgICAgKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9yZWdleF9m dWxsX21hdGNoKHNlbGYsIHgsIHBhdHRlcm4sIGV4cGVjdGVkLCBleHBlY3RlZF9zaGFwZSk6Cist ICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLlNUUklO RywgTm9uZSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29y UHJvdG8uQk9PTCwgTm9uZSkKKy0gICAgICAgIG5vZGUgPSBtYWtlX25vZGUoIlJlZ2V4RnVsbE1h dGNoIiwgaW5wdXRzPVsiWCJdLCBvdXRwdXRzPVsiWSJdLCBwYXR0ZXJuPXBhdHRlcm4pCistICAg ICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW1hdLCBbWV0p KQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgcmVz dWx0LCAqXyA9IHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXJyYXkoeCl9KQorLSAgICAgICAgbnAu dGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0LCBleHBlY3RlZCkKKy0gICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwocmVzdWx0LmR0eXBlLmtpbmQsICJiIikKKy0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwocmVzdWx0LnNoYXBlLCBleHBlY3RlZF9zaGFwZSkKKy0KKyAgICAgZGVmIHRlc3Rf cmVnZXhfaW52YWxpZF9wYXR0ZXJuKHNlbGYpOgorICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5vbmUpCisgICAgICAgICBZID0gbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkJPT0wsIE5vbmUpCitAQCAtNTYw OCwyMjAgKzUwNDMsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRl c3RDYXNlKToKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Cisg ICAgICAgICAgICAgcmVmLnJ1bihOb25lLCB7IlgiOiBucC5hcnJheShbIngiXSl9KQorIAorLSAg ICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAg ICAgICAgICAoCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQyLAorLSAgICAgICAg ICAgICAgICBbLTEsIDAsIDEuNSwgMiwgMy4zLCAxMCwgMjAsIDQwXSwKKy0gICAgICAgICAgICAg ICAgWzAsIDAsIDIsIDIsIDQsIDYsIDYsIDZdLAorLSAgICAgICAgICAgICksCistICAgICAgICAg ICAgKFRlbnNvclByb3RvLlVJTlQyLCBbLTEsIDAsIDEuNSwgMiwgMy4zLCAxMCwgNDBdLCBbMCwg MCwgMiwgMiwgNCwgNiwgNl0pLAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwgWzBd LCBbMF0pLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5U MiwKKy0gICAgICAgICAgICAgICAgWy0yMCwgLTE0LjUsIDAsIDEuNSwgMiwgMy4zLCAxMCwgMjBd LAorLSAgICAgICAgICAgICAgICBbLTQsIC00LCAwLCAyLCAyLCAyLCAyLCAyXSwKKy0gICAgICAg ICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5U MiwKKy0gICAgICAgICAgICAgICAgWy0yMCwgLTE0LjUsIDAsIDEuNSwgMiwgMy4zLCAxMF0sCist ICAgICAgICAgICAgICAgIFstNCwgLTQsIDAsIDIsIDIsIDIsIDJdLAorLSAgICAgICAgICAgICks CistICAgICAgICAgICAgKFRlbnNvclByb3RvLklOVDIsIFswXSwgWzBdKSwKKy0gICAgICAgIF0K Ky0gICAgKQorLSAgICBkZWYgdGVzdF9xdWFudGl6ZV9saW5lYXJfaW50MihzZWxmLCBxdHlwZSwg ZGF0YSwgZXhwZWN0ZWQpOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgi LCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQorLSAgICAgICAgbW9kZWwg PSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAg ICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAg ICAgICAgICAgICAgICAgIFsic2NhbGUiXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1 ZT1tYWtlX3RlbnNvcigic2NhbGUiLCBUZW5zb3JQcm90by5GTE9BVCwgWzFdLCBbMi4wXSksCist ICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAor LSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAg ICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJ6ZXJvIl0sCistICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInplcm8iLCBxdHlwZSwgWzFdLCBbMF0p LAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9k ZSgiUXVhbnRpemVMaW5lYXIiLCBbIlgiLCAic2NhbGUiLCAiemVybyJdLCBbIlQiXSksCistICAg ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRlcXVhbnRpemVMaW5lYXIiLCBbIlQiLCAic2Nh bGUiXSwgWyJZIl0sIGF4aXM9MCksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAg ICAgICJnIiwKKy0gICAgICAgICAgICAgICAgW1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCist ICAgICAgICAgICAgKQorLSAgICAgICAgKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVh dG9yKG1vZGVsKQorLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBucC5hc2FycmF5 KGRhdGEpfSkKKy0gICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQorLQor LSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0 b29scy5wcm9kdWN0KAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5GTE9BVCwgVGVuc29yUHJv dG8uRkxPQVQxNiksCistICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQyLCBUZW5zb3JQcm90 by5JTlQyKSwKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9jYXN0X2ludDJfb3V0 cHV0KHNlbGYsIGNhc3RfZnJvbSwgY2FzdF90byk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiWCIsIGNhc3RfZnJvbSwgW05vbmVdKQorLSAgICAgICAgWSA9IG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oIlkiLCBjYXN0X3RvLCBbTm9uZV0pCistICAgICAgICBtb2RlbCA9IG1h a2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWSJdLCB0bz1j YXN0X3RvKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAorLSAg ICAgICAgICAgICAgICBbWF0sCistICAgICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAgICAp CistICAgICAgICApCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCist ICAgICAgICBkYXRhID0gbnAuYXJyYXkoCistICAgICAgICAgICAgWzAsIDEsIDIuNCwgMi42LCA0 LCAxMF0sCistICAgICAgICAgICAgZHR5cGU9b25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3RvX25w X2R0eXBlKGNhc3RfZnJvbSksCistICAgICAgICApCistICAgICAgICBleHBlY3RlZCA9IGRhdGEu YXN0eXBlKG9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShjYXN0X3RvKSkKKy0g ICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCistICAgICAgICBzZWxmLmFz c2VydEVxdWFsKGdvdFswXS50b2xpc3QoKSwgZXhwZWN0ZWQudG9saXN0KCkpCistCistICAgIEBw YXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnBy b2R1Y3QoCistICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQyLCBUZW5zb3JQcm90by5JTlQy KSwKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FUMTYp LAorLSAgICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0X2Nhc3RfaW50Ml9pbnB1dCgKKy0g ICAgICAgIHNlbGYsIGNhc3RfZnJvbTogVGVuc29yUHJvdG8uRGF0YVR5cGUsIGNhc3RfdG86IFRl bnNvclByb3RvLkRhdGFUeXBlCistICAgICk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWCIsIGNhc3RfZnJvbSwgW05vbmVdKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlkiLCBjYXN0X3RvLCBbTm9uZV0pCistICAgICAgICBtb2RlbCA9IG1ha2Vf bW9kZWwoCistICAgICAgICAgICAgbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWSJdLCB0bz1UZW5z b3JQcm90by5GTE9BVCksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJn IiwKKy0gICAgICAgICAgICAgICAgW1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCistICAgICAg ICAgICAgKQorLSAgICAgICAgKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1v ZGVsKQorLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KHJhbmdlKDIpLCBkdHlwZT1ucC5mbG9hdDMy KQorLSAgICAgICAgZXhwZWN0ZWQgPSBkYXRhLmFzdHlwZShvbm54LmhlbHBlci50ZW5zb3JfZHR5 cGVfdG9fbnBfZHR5cGUoY2FzdF9mcm9tKSkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwg eyJYIjogZGF0YX0pCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hcnJheV9lcXVhbChnb3Rb MF0sIGV4cGVjdGVkKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFu ZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFRlbnNvclBy b3RvLlVJTlQ0LAorLSAgICAgICAgICAgICAgICBbLTEsIDAsIDEuNSwgMiwgMy4zLCAxMCwgMjAs IDQwXSwKKy0gICAgICAgICAgICAgICAgWzAsIDAsIDIsIDIsIDQsIDEwLCAyMCwgMzBdLAorLSAg ICAgICAgICAgICksCistICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBbLTEsIDAsIDEu NSwgMiwgMy4zLCAxMCwgNDBdLCBbMCwgMCwgMiwgMiwgNCwgMTAsIDMwXSksCistICAgICAgICAg ICAgKFRlbnNvclByb3RvLlVJTlQ0LCBbMF0sIFswXSksCistICAgICAgICAgICAgKAorLSAgICAg ICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ0LAorLSAgICAgICAgICAgICAgICBbLTIwLCAtMTQu NSwgMCwgMS41LCAyLCAzLjMsIDEwLCAyMF0sCistICAgICAgICAgICAgICAgIFstMTYsIC0xNCwg MCwgMiwgMiwgNCwgMTAsIDE0XSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0g ICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNCwKKy0gICAgICAgICAgICAgICAgWy0yMCwg LTE0LjUsIDAsIDEuNSwgMiwgMy4zLCAxMF0sCistICAgICAgICAgICAgICAgIFstMTYsIC0xNCwg MCwgMiwgMiwgNCwgMTBdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKFRlbnNvclBy b3RvLklOVDQsIFswXSwgWzBdKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9x dWFudGl6ZV9saW5lYXJfaW50NChzZWxmLCBxdHlwZSwgZGF0YSwgZXhwZWN0ZWQpOgorLSAgICAg ICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05v bmVdKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90 by5GTE9BVCwgW05vbmVdKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAg ICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAg ICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsic2NhbGUi XSwKKy0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2NhbGUiLCBU ZW5zb3JQcm90by5GTE9BVCwgWzFdLCBbMi4wXSksCistICAgICAgICAgICAgICAgICAgICApLAor LSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAg ICAgICAgICAgICAgWyJ6ZXJvIl0sCistICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFr ZV90ZW5zb3IoInplcm8iLCBxdHlwZSwgWzFdLCBbMF0pLAorLSAgICAgICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiUXVhbnRpemVMaW5lYXIiLCBbIlgi LCAic2NhbGUiLCAiemVybyJdLCBbIlQiXSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoIkRlcXVhbnRpemVMaW5lYXIiLCBbIlQiLCAic2NhbGUiXSwgWyJZIl0sIGF4aXM9MCksCist ICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAgICAg ICAgW1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCistICAgICAgICAgICAgKQorLSAgICAgICAg KQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgZ290 ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBucC5hc2FycmF5KGRhdGEpfSkKKy0gICAgICAgIGFzc2Vy dF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAg ICAgIChUZW5zb3JQcm90by5GTE9BVCwgVGVuc29yUHJvdG8uRkxPQVQxNiksCistICAgICAgICAg ICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90by5JTlQ0KSwKKy0gICAgICAgICkKKy0g ICAgKQorLSAgICBkZWYgdGVzdF9jYXN0X2ludDRfb3V0cHV0KHNlbGYsIGNhc3RfZnJvbSwgY2Fz dF90byk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIGNhc3RfZnJv bSwgW05vbmVdKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBjYXN0 X3RvLCBbTm9uZV0pCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAg bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFr ZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWSJdLCB0bz1jYXN0X3RvKSwKKy0gICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAorLSAgICAgICAgICAgICAgICBbWF0sCistICAg ICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAgICApCistICAgICAgICApCistICAgICAgICBy ZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistICAgICAgICBkYXRhID0gbnAuYXJyYXko CistICAgICAgICAgICAgWzAsIDEsIDIuNCwgMi42LCA0LCAxMF0sCistICAgICAgICAgICAgZHR5 cGU9b25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3RvX25wX2R0eXBlKGNhc3RfZnJvbSksCistICAg ICAgICApCistICAgICAgICBleHBlY3RlZCA9IGRhdGEuYXN0eXBlKG9ubnguaGVscGVyLnRlbnNv cl9kdHlwZV90b19ucF9kdHlwZShjYXN0X3RvKSkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9u ZSwgeyJYIjogZGF0YX0pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdFswXS50b2xpc3Qo KSwgZXhwZWN0ZWQudG9saXN0KCkpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6 ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAgICAgKFRl bnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90by5JTlQ0KSwKKy0gICAgICAgICAgICAoVGVuc29y UHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FUMTYpLAorLSAgICAgICAgKQorLSAgICApCist ICAgIGRlZiB0ZXN0X2Nhc3RfaW50NF9pbnB1dCgKKy0gICAgICAgIHNlbGYsIGNhc3RfZnJvbTog VGVuc29yUHJvdG8uRGF0YVR5cGUsIGNhc3RfdG86IFRlbnNvclByb3RvLkRhdGFUeXBlCistICAg ICk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIGNhc3RfZnJvbSwg W05vbmVdKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBjYXN0X3Rv LCBbTm9uZV0pCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAgbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9u b2RlKCJDYXN0IiwgWyJYIl0sIFsiWSJdLCB0bz1UZW5zb3JQcm90by5GTE9BVCksCistICAgICAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAgICAgICAgW1hd LAorLSAgICAgICAgICAgICAgICBbWV0sCistICAgICAgICAgICAgKQorLSAgICAgICAgKQorLSAg ICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgZGF0YSA9IG5w LmFycmF5KHJhbmdlKDcpLCBkdHlwZT1ucC5mbG9hdDMyKQorLSAgICAgICAgZXhwZWN0ZWQgPSBk YXRhLmFzdHlwZShvbm54LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoY2FzdF9mcm9t KSkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCistICAgICAgICBu cC50ZXN0aW5nLmFzc2VydF9hcnJheV9lcXVhbChnb3RbMF0sIGV4cGVjdGVkKQorLQorICAgICBk ZWYgdGVzdF9hX2Z1bmN0aW9uX2NhbGxpbmdfYV9mdW5jdGlvbl9vbmNlKHNlbGYpOgorICAgICAg ICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgWyJO Il0pCisgICAgICAgICBvdXRwdXQgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBU ZW5zb3JQcm90by5GTE9BVCwgWyJOIl0pCitAQCAtNjA1NCw5NCArNTI3NSw2IEBAIGNsYXNzIFRl c3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZm9yIHYg aW4gb2luZi5mdW5jdGlvbnNfLnZhbHVlcygpOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJ bnN0YW5jZSh2LCBNeVJlZmVyZW5jZUV2YWx1YXRvcikKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQu cGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJGTE9BVDhF NE0zRk4iLCAwLjIzKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTlVaIiwgMC4yMyksCist ICAgICAgICAgICAgKCJGTE9BVDhFNU0yIiwgMC44NSksCistICAgICAgICAgICAgKCJGTE9BVDhF NU0yRk5VWiIsIDAuODUpLAorLSAgICAgICAgICAgICgiRE9VQkxFIiwgMCksCistICAgICAgICAg ICAgKCJGTE9BVCIsIDApLAorLSAgICAgICAgICAgICgiRkxPQVQxNiIsIDJlLTMpLAorLSAgICAg ICAgICAgICgiQkZMT0FUMTYiLCAyZS0yKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYg dGVzdF9hZGRfY3VzdG9tX2R0eXBlKHNlbGYsIHN0eXBlOiBzdHIsIGF0b2w6IGZsb2F0KToKKy0g ICAgICAgIGl0eXBlID0gZ2V0YXR0cihUZW5zb3JQcm90bywgc3R5cGUpCistICAgICAgICBtb2Rl bCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWGMi XSwgdG89aXR5cGUpLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJZ Il0sIFsiWWMiXSwgdG89aXR5cGUpLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJB ZGQiLCBbIlhjIiwgIlljIl0sIFsiWmMiXSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoIkNhc3QiLCBbIlpjIl0sIFsiWiJdLCB0bz1UZW5zb3JQcm90by5GTE9BVCksCistICAgICAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJuZCIsCistICAgICAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQ cm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKKy0gICAgICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUs IE5vbmVdKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oIloiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVd KV0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVttYWtlX29w c2V0aWQoIiIsIDE4KV0sCistICAgICAgICAgICAgaXJfdmVyc2lvbj05LAorLSAgICAgICAgKQor LQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsLCB2ZXJib3NlPTApCist CistICAgICAgICB4ID0gKG5wLmFyYW5nZSgxOCkgLyA2KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0 eXBlKG5wLmZsb2F0MzIpCistICAgICAgICB5ID0gKG5wLmFyYW5nZSgxOCkgLyA5KS5yZXNoYXBl KCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCistICAgICAgICBmZWVkcyA9IGRpY3QoWD14 LCBZPXkpCistICAgICAgICBleHBlY3RlZCA9IHggKyB5CistICAgICAgICBnb3QgPSByZWYucnVu KE5vbmUsIGZlZWRzKVswXQorLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGdvdCwgZXhwZWN0ZWQs IGF0b2w9YXRvbCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQo CistICAgICAgICBbCistICAgICAgICAgICAgKCJET1VCTEUiLCksCistICAgICAgICAgICAgKCJG TE9BVCIsKSwKKy0gICAgICAgICAgICAoIkZMT0FUMTYiLCksCistICAgICAgICAgICAgKCJCRkxP QVQxNiIsKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTiIsKSwKKy0gICAgICAgICAgICAo IkZMT0FUOEU0TTNGTlVaIiwpLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTVNMiIsKSwKKy0gICAg ICAgICAgICAoIkZMT0FUOEU1TTJGTlVaIiwpLAorLSAgICAgICAgICAgICgiSU5UNCIsKSwKKy0g ICAgICAgICAgICAoIlVJTlQ0IiwpLAorLSAgICAgICAgICAgICgiSU5UMiIsKSwKKy0gICAgICAg ICAgICAoIlVJTlQyIiwpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2NtcF9j dXN0b21fZHR5cGUoc2VsZiwgc3R5cGUpOgorLSAgICAgICAgaXR5cGUgPSBnZXRhdHRyKFRlbnNv clByb3RvLCBzdHlwZSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKKy0gICAgICAgICAg ICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBt YWtlX25vZGUoIkNhc3QiLCBbIlgiXSwgWyJYYyJdLCB0bz1pdHlwZSksCistICAgICAgICAgICAg ICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlkiXSwgWyJZYyJdLCB0bz1pdHlwZSksCistICAg ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkdyZWF0ZXJPckVxdWFsIiwgWyJYYyIsICJZYyJd LCBbIlpjIl0pLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJaYyJd LCBbIloiXSwgdG89VGVuc29yUHJvdG8uQk9PTCksCistICAgICAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgICAgICJuZCIsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUs IE5vbmUsIE5vbmVdKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKKy0gICAgICAg ICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIloi LCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKV0sCistICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIDE4KV0sCist ICAgICAgICAgICAgaXJfdmVyc2lvbj05LAorLSAgICAgICAgKQorLQorLSAgICAgICAgcmVmID0g UmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLQorLSAgICAgICAgeCA9IChucC5hcmFuZ2UoMTgp IC8gMTgpLnJlc2hhcGUoKDIsIDMsIDMpKS5hc3R5cGUobnAuZmxvYXQzMikKKy0gICAgICAgIHkg PSAoKG5wLmFyYW5nZSgxOCkgLSA5KSAvIDE4KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5w LmZsb2F0MzIpCistICAgICAgICBmZWVkcyA9IGRpY3QoWD14LCBZPXkpCistICAgICAgICBleHBl Y3RlZCA9IHggPj0geQorLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCBmZWVkcylbMF0KKy0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGdvdCwgZXhwZWN0ZWQpCistCisgICAgIGRl ZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHNfNGQoc2VsZik6CisgICAgICAgICBtb2RlbCA9IG1ha2Vf bW9kZWwoCisgICAgICAgICAgICAgbWFrZV9ncmFwaCgKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3Qv c2NoZW1hX3Rlc3QucHkgYi9vbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkKK2luZGV4IGY4YjNmOGE2 NS4uNzEwYjYwMmEzIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5CisrKysg Yi9vbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkKK0BAIC03LDggKzcsNiBAQCBpbXBvcnQgY29udGV4 dGxpYgorIGltcG9ydCB1bml0dGVzdAorIGZyb20gdHlwaW5nIGltcG9ydCBUWVBFX0NIRUNLSU5H CisgCistaW1wb3J0IHBhcmFtZXRlcml6ZWQKKy0KKyBpbXBvcnQgb25ueAorIGZyb20gb25ueCBp bXBvcnQgZGVmcworIAorQEAgLTI0NywzNCArMjQ1LDYgQEAgY2xhc3MgVGVzdEZvcm1hbFBhcmFt ZXRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICApCisgCisgCistY2xhc3MgVGVzdFR5 cGVDb25zdHJhaW50UGFyYW0odW5pdHRlc3QuVGVzdENhc2UpOgorLSAgICBAcGFyYW1ldGVyaXpl ZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoInNpbmds ZV90eXBlIiwgIlQiLCBbInRlbnNvcihmbG9hdCkiXSwgIlRlc3QgZGVzY3JpcHRpb24iKSwKKy0g ICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICJkb3VibGVfdHlwZXMiLAorLSAgICAgICAg ICAgICAgICAiVCIsCistICAgICAgICAgICAgICAgIFsidGVuc29yKGZsb2F0KSIsICJ0ZW5zb3Io aW50NjQpIl0sCistICAgICAgICAgICAgICAgICJUZXN0IGRlc2NyaXB0aW9uIiwKKy0gICAgICAg ICAgICApLAorLSAgICAgICAgICAgICgidHVwbGUiLCAiVCIsICgidGVuc29yKGZsb2F0KSIsICJ0 ZW5zb3IoaW50NjQpIiksICJUZXN0IGRlc2NyaXB0aW9uIiksCistICAgICAgICBdCistICAgICkK Ky0gICAgZGVmIHRlc3RfaW5pdCgKKy0gICAgICAgIHNlbGYsCistICAgICAgICBfOiBzdHIsCist ICAgICAgICB0eXBlX3BhcmFtX3N0cjogc3RyLAorLSAgICAgICAgYWxsb3dlZF90eXBlczogU2Vx dWVuY2Vbc3RyXSwKKy0gICAgICAgIGRlc2NyaXB0aW9uOiBzdHIsCistICAgICkgLT4gTm9uZToK Ky0gICAgICAgIHR5cGVfY29uc3RyYWludCA9IGRlZnMuT3BTY2hlbWEuVHlwZUNvbnN0cmFpbnRQ YXJhbSgKKy0gICAgICAgICAgICB0eXBlX3BhcmFtX3N0ciwgYWxsb3dlZF90eXBlcywgZGVzY3Jp cHRpb24KKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZV9jb25zdHJh aW50LmRlc2NyaXB0aW9uLCBkZXNjcmlwdGlvbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo dHlwZV9jb25zdHJhaW50LmFsbG93ZWRfdHlwZV9zdHJzLCBsaXN0KGFsbG93ZWRfdHlwZXMpKQor LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlX2NvbnN0cmFpbnQudHlwZV9wYXJhbV9zdHIs IHR5cGVfcGFyYW1fc3RyKQorLQorLQorIGNsYXNzIFRlc3RBdHRyaWJ1dGUodW5pdHRlc3QuVGVz dENhc2UpOgorICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAgbmFtZSA9ICJ0ZXN0 X2F0dHIiCitAQCAtMjk3LDE2OSArMjY3LDUgQEAgY2xhc3MgVGVzdEF0dHJpYnV0ZSh1bml0dGVz dC5UZXN0Q2FzZSk6CisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhdHRyMSBkZXNjcmlwdGlv biIsIGF0dHJpYnV0ZS5kZXNjcmlwdGlvbikKKyAKKyAKKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkX2NsYXNzKAorLSAgICBbCistICAgICAgICAjIHJlZ2lzdGVyIHRvIGV4aXN0IGRvbWFp bgorLSAgICAgICAgeworLSAgICAgICAgICAgICJvcF90eXBlIjogIkN1c3RvbU9wIiwKKy0gICAg ICAgICAgICAib3BfdmVyc2lvbiI6IDUsCistICAgICAgICAgICAgIm9wX2RvbWFpbiI6ICIiLAor LSAgICAgICAgICAgICJ0cmFwX29wX3ZlcnNpb24iOiBbMSwgMiwgNiwgN10sCistICAgICAgICB9 LAorLSAgICAgICAgIyByZWdpc3RlciB0byBuZXcgZG9tYWluCistICAgICAgICB7CistICAgICAg ICAgICAgIm9wX3R5cGUiOiAiQ3VzdG9tT3AiLAorLSAgICAgICAgICAgICJvcF92ZXJzaW9uIjog NSwKKy0gICAgICAgICAgICAib3BfZG9tYWluIjogInRlc3QiLAorLSAgICAgICAgICAgICJ0cmFw X29wX3ZlcnNpb24iOiBbMSwgMiwgNiwgN10sCistICAgICAgICB9LAorLSAgICBdCistKQorLWNs YXNzIFRlc3RPcFNjaGVtYVJlZ2lzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgb3BfdHlw ZTogc3RyCistICAgIG9wX3ZlcnNpb246IGludAorLSAgICBvcF9kb21haW46IHN0cgorLSAgICAj IHJlZ2lzdGVyIHNvbWUgZmFrZSBzY2hlbWEgdG8gY2hlY2sgYmVoYXZpb3IKKy0gICAgdHJhcF9v cF92ZXJzaW9uOiBsaXN0W2ludF0KKy0KKy0gICAgZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6Cist ICAgICAgICAjIEVuc3VyZSB0aGUgc2NoZW1hIGlzIHVucmVnaXN0ZXJlZAorLSAgICAgICAgc2Vs Zi5hc3NlcnRGYWxzZShvbm54LmRlZnMuaGFzKHNlbGYub3BfdHlwZSwgc2VsZi5vcF9kb21haW4p KQorLQorLSAgICBkZWYgdGVhckRvd24oc2VsZikgLT4gTm9uZToKKy0gICAgICAgICMgQ2xlYW4g dXAgdGhlIHJlZ2lzdGVyZWQgc2NoZW1hCistICAgICAgICBmb3IgdmVyc2lvbiBpbiBbKnNlbGYu dHJhcF9vcF92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb25dOgorLSAgICAgICAgICAgIHdpdGggY29u dGV4dGxpYi5zdXBwcmVzcyhvbm54LmRlZnMuU2NoZW1hRXJyb3IpOgorLSAgICAgICAgICAgICAg ICBvbm54LmRlZnMuZGVyZWdpc3Rlcl9zY2hlbWEoc2VsZi5vcF90eXBlLCB2ZXJzaW9uLCBzZWxm Lm9wX2RvbWFpbikKKy0KKy0gICAgZGVmIHRlc3RfcmVnaXN0ZXJfbXVsdGlfc2NoZW1hKHNlbGYp OgorLSAgICAgICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRyYXBfb3BfdmVyc2lvbiwgc2VsZi5v cF92ZXJzaW9uXToKKy0gICAgICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAorLSAg ICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCistICAgICAgICAgICAgICAgIHNlbGYub3BfZG9t YWluLAorLSAgICAgICAgICAgICAgICB2ZXJzaW9uLAorLSAgICAgICAgICAgICkKKy0gICAgICAg ICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKKy0gICAgICAgICAgICBz ZWxmLmFzc2VydFRydWUob25ueC5kZWZzLmhhcyhzZWxmLm9wX3R5cGUsIHZlcnNpb24sIHNlbGYu b3BfZG9tYWluKSkKKy0gICAgICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFwX29wX3ZlcnNp b24sIHNlbGYub3BfdmVyc2lvbl06CistICAgICAgICAgICAgIyBBbHNvIG1ha2Ugc3VyZSB0aGUg YG9wX3NjaGVtYWAgaXMgYWNjZXNzaWJsZSBhZnRlciByZWdpc3RlcgorLSAgICAgICAgICAgIHJl Z2lzdGVyZWRfb3AgPSBvbm54LmRlZnMuZ2V0X3NjaGVtYSgKKy0gICAgICAgICAgICAgICAgb3Bf c2NoZW1hLm5hbWUsIHZlcnNpb24sIG9wX3NjaGVtYS5kb21haW4KKy0gICAgICAgICAgICApCist ICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAgICAgICAg c2VsZi5vcF90eXBlLAorLSAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKKy0gICAgICAg ICAgICAgICAgdmVyc2lvbiwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbChzdHIocmVnaXN0ZXJlZF9vcCksIHN0cihvcF9zY2hlbWEpKQorLQorLSAgICBkZWYg dGVzdF91c2luZ190aGVfc3BlY2lmaWVkX3ZlcnNpb25faW5fb25ueF9jaGVjayhzZWxmKToKKy0g ICAgICAgIGlucHV0ID0gZiIiIgorLSAgICAgICAgICAgIDwKKy0gICAgICAgICAgICAgICAgaXJf dmVyc2lvbjogNywKKy0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0OiBbCistICAgICAgICAg ICAgICAgICAgICAie3NlbGYub3BfZG9tYWlufSIgOiB7c2VsZi5vcF92ZXJzaW9ufQorLSAgICAg ICAgICAgICAgICBdCistICAgICAgICAgICAgPgorLSAgICAgICAgICAgIGFncmFwaCAoZmxvYXRb TiwgMTI4XSBYLCBpbnQzMiBZKSA9PiAoZmxvYXRbTl0gWikKKy0gICAgICAgICAgICB7eworLSAg ICAgICAgICAgICAgICBaID0ge3NlbGYub3BfZG9tYWlufS57c2VsZi5vcF90eXBlfTxhdHRyMT1b MSwyXT4oWCwgWSkKKy0gICAgICAgICAgICB9fQorLSAgICAgICAgICAgIiIiCistICAgICAgICBt b2RlbCA9IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKGlucHV0KQorLSAgICAgICAgb3Bfc2NoZW1h ID0gZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAgICBzZWxmLm9wX3R5cGUsCistICAgICAgICAg ICAgc2VsZi5vcF9kb21haW4sCistICAgICAgICAgICAgc2VsZi5vcF92ZXJzaW9uLAorLSAgICAg ICAgICAgIGlucHV0cz1bCistICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEuRm9ybWFsUGFy YW1ldGVyKCJpbnB1dDEiLCAiVCIpLAorLSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1hLkZv cm1hbFBhcmFtZXRlcigiaW5wdXQyIiwgImludDMyIiksCistICAgICAgICAgICAgXSwKKy0gICAg ICAgICAgICBvdXRwdXRzPVsKKy0gICAgICAgICAgICAgICAgZGVmcy5PcFNjaGVtYS5Gb3JtYWxQ YXJhbWV0ZXIoIm91dHB1dDEiLCAiVCIpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg dHlwZV9jb25zdHJhaW50cz1bKCJUIiwgWyJ0ZW5zb3IoZmxvYXQpIl0sICIiKV0sCistICAgICAg ICAgICAgYXR0cmlidXRlcz1bCistICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEuQXR0cmli dXRlKAorLSAgICAgICAgICAgICAgICAgICAgImF0dHIxIiwgZGVmcy5PcFNjaGVtYS5BdHRyVHlw ZS5JTlRTLCAiYXR0cjEgZGVzY3JpcHRpb24iCistICAgICAgICAgICAgICAgICkKKy0gICAgICAg ICAgICBdLAorLSAgICAgICAgKQorLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54 LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKToKKy0gICAgICAgICAgICBvbm54LmNoZWNrZXIuY2hl Y2tfbW9kZWwobW9kZWwsIGNoZWNrX2N1c3RvbV9kb21haW49VHJ1ZSkKKy0gICAgICAgIG9ubngu ZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQorLSAgICAgICAgIyBUaGUgZmFrZSBzY2hl bWEgd2lsbCByYWlzZSBjaGVjayBleGNlcHRpb24gaWYgc2VsZWN0ZWQgaW4gY2hlY2tlcgorLSAg ICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi50cmFwX29wX3ZlcnNpb246CistICAgICAgICAgICAg b25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYSgKKy0gICAgICAgICAgICAgICAgZGVmcy5PcFNjaGVt YSgKKy0gICAgICAgICAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKKy0gICAgICAgICAgICAgICAg ICAgIHNlbGYub3BfZG9tYWluLAorLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwKKy0gICAg ICAgICAgICAgICAgICAgIG91dHB1dHM9WworLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMu T3BTY2hlbWEuRm9ybWFsUGFyYW1ldGVyKCJvdXRwdXQxIiwgImludDMyIiksCistICAgICAgICAg ICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgKQorLSAgICAg ICAgb25ueC5jaGVja2VyLmNoZWNrX21vZGVsKG1vZGVsLCBjaGVja19jdXN0b21fZG9tYWluPVRy dWUpCistCistICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3NjaGVtYV9yYWlzZXNfZXJyb3Jfd2hlbl9y ZWdpc3RlcmluZ19hX3NjaGVtYV90d2ljZShzZWxmKToKKy0gICAgICAgIG9wX3NjaGVtYSA9IGRl ZnMuT3BTY2hlbWEoCistICAgICAgICAgICAgc2VsZi5vcF90eXBlLAorLSAgICAgICAgICAgIHNl bGYub3BfZG9tYWluLAorLSAgICAgICAgICAgIHNlbGYub3BfdmVyc2lvbiwKKy0gICAgICAgICkK Ky0gICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQorLSAgICAgICAg d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmRlZnMuU2NoZW1hRXJyb3IpOgorLSAgICAgICAg ICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQorLQorLSAgICBkZWYgdGVz dF9kZXJlZ2lzdGVyX3RoZV9zcGVjaWZpZWRfc2NoZW1hKHNlbGYpOgorLSAgICAgICAgZm9yIHZl cnNpb24gaW4gWypzZWxmLnRyYXBfb3BfdmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uXToKKy0gICAg ICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAorLSAgICAgICAgICAgICAgICBzZWxm Lm9wX3R5cGUsCistICAgICAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAorLSAgICAgICAgICAg ICAgICB2ZXJzaW9uLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBvbm54LmRlZnMucmVn aXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob25u eC5kZWZzLmhhcyhvcF9zY2hlbWEubmFtZSwgdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbikpCist ICAgICAgICBvbm54LmRlZnMuZGVyZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hLm5hbWUsIHNlbGYu b3BfdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbikKKy0gICAgICAgIGZvciB2ZXJzaW9uIGluIHNl bGYudHJhcF9vcF92ZXJzaW9uOgorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvbm54LmRl ZnMuaGFzKG9wX3NjaGVtYS5uYW1lLCB2ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluKSkKKy0gICAg ICAgICMgTWF5YmUgaGFzIGxlc3NlciBvcCB2ZXJzaW9uIGluIHRyYXAgbGlzdAorLSAgICAgICAg aWYgb25ueC5kZWZzLmhhcyhvcF9zY2hlbWEubmFtZSwgc2VsZi5vcF92ZXJzaW9uLCBvcF9zY2hl bWEuZG9tYWluKToKKy0gICAgICAgICAgICBzY2hlbWEgPSBvbm54LmRlZnMuZ2V0X3NjaGVtYSgK Ky0gICAgICAgICAgICAgICAgb3Bfc2NoZW1hLm5hbWUsIHNlbGYub3BfdmVyc2lvbiwgb3Bfc2No ZW1hLmRvbWFpbgorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3Mo c2NoZW1hLnNpbmNlX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lvbikKKy0KKy0gICAgZGVmIHRlc3Rf ZGVyZWdpc3Rlcl9zY2hlbWFfcmFpc2VzX2Vycm9yX3doZW5fb3BzY2hlbWFfZG9lc19ub3RfZXhp c3Qoc2VsZik6CistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguZGVmcy5TY2hl bWFFcnJvcik6CistICAgICAgICAgICAgb25ueC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKHNlbGYu b3BfdHlwZSwgc2VsZi5vcF92ZXJzaW9uLCBzZWxmLm9wX2RvbWFpbikKKy0KKy0gICAgZGVmIHRl c3RfbGVnYWN5X3NjaGVtYV9hY2Nlc3NpYmxlX2FmdGVyX2RlcmVnaXN0ZXIoc2VsZik6CistICAg ICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAorLSAgICAgICAgICAgIHNlbGYub3BfdHlw ZSwKKy0gICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKKy0gICAgICAgICAgICBzZWxmLm9wX3Zl cnNpb24sCistICAgICAgICApCistICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9w X3NjaGVtYSkKKy0gICAgICAgIHNjaGVtYV9hID0gb25ueC5kZWZzLmdldF9zY2hlbWEoCistICAg ICAgICAgICAgb3Bfc2NoZW1hLm5hbWUsIG9wX3NjaGVtYS5zaW5jZV92ZXJzaW9uLCBvcF9zY2hl bWEuZG9tYWluCistICAgICAgICApCistICAgICAgICBzY2hlbWFfYiA9IG9ubnguZGVmcy5nZXRf c2NoZW1hKG9wX3NjaGVtYS5uYW1lLCBvcF9zY2hlbWEuZG9tYWluKQorLQorLSAgICAgICAgZGVm IGZpbHRlcl9zY2hlbWEoc2NoZW1hcyk6CistICAgICAgICAgICAgcmV0dXJuIFtvcCBmb3Igb3Ag aW4gc2NoZW1hcyBpZiBvcC5uYW1lID09IG9wX3NjaGVtYS5uYW1lXQorLQorLSAgICAgICAgc2No ZW1hX2MgPSBmaWx0ZXJfc2NoZW1hKG9ubnguZGVmcy5nZXRfYWxsX3NjaGVtYXMoKSkKKy0gICAg ICAgIHNjaGVtYV9kID0gZmlsdGVyX3NjaGVtYShvbm54LmRlZnMuZ2V0X2FsbF9zY2hlbWFzX3dp dGhfaGlzdG9yeSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2NoZW1hX2MpLCAx KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2NoZW1hX2QpLCAxKQorLSAgICAgICAg IyBBdm9pZCBtZW1vcnkgcmVzaWR1ZSBhbmQgYWNjZXNzIHN0b3JhZ2UgYXMgbXVjaCBhcyBwb3Nz aWJsZQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1hX2EpLCBzdHIob3Bfc2No ZW1hKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9iKSwgc3RyKG9wX3Nj aGVtYSkpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzY2hlbWFfY1swXSksIHN0cihv cF9zY2hlbWEpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1hX2RbMF0pLCBz dHIob3Bfc2NoZW1hKSkKKy0KKy0KKyBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgICB1 bml0dGVzdC5tYWluKCkKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNlX3Rl c3QucHkgYi9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkKK2luZGV4IGVlMjJjOGZm Yi4uODQ5YWUwNDJhIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0 LnB5CisrKysgYi9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkKK0BAIC0xMiw3ICsx Miw2IEBAIGZyb20gdHlwaW5nIGltcG9ydCBUWVBFX0NIRUNLSU5HLCBBbnkKKyBpbXBvcnQgbnVt cHkgYXMgbnAKKyBpbXBvcnQgcHl0ZXN0CisgZnJvbSBnb29nbGUucHJvdG9idWYgaW1wb3J0IHRl eHRfZm9ybWF0CistZnJvbSBwYXJhbWV0ZXJpemVkIGltcG9ydCBwYXJhbWV0ZXJpemVkCisgCisg aW1wb3J0IG9ubnguc2hhcGVfaW5mZXJlbmNlCisgZnJvbSBvbm54IGltcG9ydCAoCitAQCAtMjQ0 LDg2ICsyNDMsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNl SGVscGVyKToKKyAgICAgICAgICAgICBncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5GTE9BVCwgKDMwLCA0LCA1KSldCisgICAgICAgICApCisgCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAg ZGVmIHRlc3RfdHJhbnNwb3NlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygiWCIsIFRlbnNvclByb3Rv LkZMT0FULCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFuc3Bvc2Ui LCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCistICAgICAgICAgICAgW10sCistICAg ICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDMsIDIsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCist ICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9wcmVleGlzdGluZyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFso IlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vf bm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5v bmUpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIs IFRlbnNvclByb3RvLkZMT0FULCAoMywgMiwgNCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAg ICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFu c3Bvc2UiKSkKKy0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3NjYWxhcihzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAg ICAgICkKKy0KKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBn cmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclBy b3RvLkZMT0FULCAoKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQorLSAgICBk ZWYgdGVzdF90cmFuc3Bvc2VfcGFydGlhbChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJh bnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAorLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uVU5ERUZJTkVELCAoMywgImEi LCAiYiIpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAg ICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi VHJhbnNwb3NlIikpCistICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9wcmVleGlzdGluZ19pbmNvcnJl Y3Rfc2hhcGUoc2VsZiwgKl8pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgWygiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNCkp XSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBl cm09WzEsIDAsIDJdKV0sCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlki LCBUZW5zb3JQcm90by5GTE9BVCwgKDUsIDUsIDUpKV0sCistICAgICAgICApCistICAgICAgICBz ZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2Vs Zi5faW5mZXJyZWQsIGdyYXBoKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCistICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9wcmVleGlz dGluZ19pbmNvcnJlY3RfdHlwZShzZWxmLCAqXykgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQs ICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJd LCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlNUUklORywgKDMsIDIsIDQpKV0sCistICAgICAgICAp CistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVu Y2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCistICAgIGRlZiB0ZXN0X3RyYW5z cG9zZV9pbmNvcnJlY3RfcmVwZWF0ZWRfcGVybShzZWxmLCAqXykgLT4gTm9uZToKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJv dG8uRkxPQVQsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9z ZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMV0pXSwKKy0gICAgICAgICAgICBbXSwKKy0g ICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNl LkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgpCistCisgICAgIGRlZiBfbWFr ZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bigKKyAgICAgICAgIHNlbGYsIHZlcnNpb24sIHNo YXBlMTogU2VxdWVuY2VbaW50XSwgc2hhcGUyOiBTZXF1ZW5jZVtpbnRdCisgICAgICkgLT4gTm9u ZToKK0BAIC0zNDIsMjEgKzI2MSw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hh cGVJbmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKyAgICAgICAgICkKKyAKKy0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIk1hdE11bCIpKQorLSAgICBk ZWYgdGVzdF9tYXRtdWxfYWxsX2RpbXNfa25vd24oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwg KDIsKSwgKDIsKSkKKy0KKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNf a25vd24odmVyc2lvbiwgKDQsIDIpLCAoMiwgNCkpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11 bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg1LCAyKSwgKDIsIDQpKQorLSAgICAgICAg c2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMiksICgy LCAxKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVy c2lvbiwgKDEsIDIpLCAoMiwgMykpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2Fs bF9kaW1zX2tub3duKHZlcnNpb24sICgyLCksICgyLCAzKSkKKy0gICAgICAgIHNlbGYuX21ha2Vf bWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDQsIDIpLCAoMiwpKQorLSAgICAg ICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoMSwgNCwg MiksICgzLCAyLCAzKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNf a25vd24odmVyc2lvbiwgKDMsIDQsIDIpLCAoMywgMiwgMykpCistICAgICAgICBzZWxmLl9tYWtl X21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg1LCAxLCA0LCAyKSwgKDEsIDMs IDIsIDMpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2 ZXJzaW9uLCAoNCwgMiksICgzLCAyLCAzKSkKKy0KKyAgICAgZGVmIF9tYWtlX21hdG11bF90ZXN0 X2FsbG93X3Vua25vd24oCisgICAgICAgICBzZWxmLCB2ZXJzaW9uLCBzaGFwZTE6IEFueSwgc2hh cGUyOiBBbnksIGV4cGVjdGVkX291dF9zaGFwZTogQW55CisgICAgICkgLT4gTm9uZToKK0BAIC0z NjcsMTMxOCArMjcxLDM5IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZl cmVuY2VIZWxwZXIpOgorICAgICAgICAgKQorICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVkX291dF9zaGFwZSldLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIk1hdE11bCIpKQorLSAgICBkZWYgdGVzdF9tYXRtdWxfYWxsb3dfdW5rbm93 bihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxf dGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sIChOb25lLCksIChOb25lLCksICgpKQorLSAgICAg ICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICgzLCksIChO b25lLCksICgpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3du KHZlcnNpb24sICgyLCksICgyLCAiYSIpLCAoImEiLCkpCistICAgICAgICBzZWxmLl9tYWtlX21h dG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDQsIDIpLCAoMiwgImEiKSwgKDQsICJh IikpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lv biwgKDQsIE5vbmUpLCAoMiwgImEiKSwgKDQsICJhIikpCistICAgICAgICBzZWxmLl9tYWtlX21h dG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDQsIE5vbmUpLCAoTm9uZSwgImEiKSwg KDQsICJhIikpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24o CistICAgICAgICAgICAgdmVyc2lvbiwgKDEsIDQsIDIpLCAoImEiLCAyLCA1KSwgKCJhIiwgNCwg NSkKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5r bm93bigKKy0gICAgICAgICAgICB2ZXJzaW9uLCAoMSwgMywgNCwgMiksICgiYSIsIDIsIDUpLCAo MSwgMywgNCwgNSkKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3Rf YWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoMywpLCBOb25lLCBOb25lKQorLSAgICAgICAgc2VsZi5f bWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sIE5vbmUsIE5vbmUsIE5vbmUp CistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDYXN0Iikp CistICAgIGRlZiB0ZXN0X2Nhc3Qoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJv dG8uRkxPQVQsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNhc3QiLCBb IngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLlVJTlQ4KV0sCistICAgICAgICAgICAgW10sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5VSU5UOCwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQor LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ2FzdCIpKQorLSAg ICBAdW5pdHRlc3Quc2tpcCgKKy0gICAgICAgICJJc3N1ZSAjNTk2MCIKKy0gICAgKSAgIyBGSVhN RSgjNTk2MCkgcHJvcGFnYXRlRWxlbVR5cGVGcm9tQXR0cmlidXRlVG9PdXRwdXQgZG9lcyBub3Qg dmFsaWRhdGUgYWdhaW5zdCBvdXRwdXQgdHlwZSBjb25zdHJhaW50cworLSAgICBkZWYgdGVzdF9j YXN0X3RvX2NvbXBsZXgoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZTogICMgbm9xYTogQVJHMDAy CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5DT01QTEVYMTI4KV0sCistICAg ICAgICAgICAgW10sCistICAgICAgICApCistCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhv bm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBo KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ2FzdExp a2UiKSkKKy0gICAgZGVmIHRlc3RfY2FzdF9saWtlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpLCAoInQiLCBUZW5zb3JQcm90by5GTE9BVDE2 LCAoIk4iLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDYXN0TGlrZSIsIFsieCIsICJ0 Il0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVDE2LCAoMiwgNCwgMykp XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJCaXRDYXN0IikpCistICAgIGRlZiB0ZXN0X2JpdGNhc3Rf c2FtZV9zaXplKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICAjIFRlc3QgYml0 Y2FzdCBiZXR3ZWVuIHR5cGVzIG9mIHNhbWUgc2l6ZSAoZmxvYXQzMiAtPiBpbnQzMikKKy0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkJpdENh c3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLklOVDMyKV0sCistICAgICAgICAgICAg W10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAg KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQml0Q2Fz dCIpKQorLSAgICBkZWYgdGVzdF9iaXRjYXN0X3NjYWxhcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgorLSAgICAgICAgIyBUZXN0IGJpdGNhc3Qgd2l0aCBzY2FsYXIgaW5wdXQgKHNhbWUgc2l6 ZSkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4 IiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQml0 Q2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8uSU5UMzIpXSwKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDMyLCAoKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0K Ky0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkJpdENhc3QiKSkK Ky0gICAgZGVmIHRlc3RfYml0Y2FzdF8xZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAg ICAgICAgIyBUZXN0IGJpdGNhc3Qgd2l0aCAxRCB0ZW5zb3IgKGZsb2F0MzIgLT4gdWludDMyLCBz YW1lIHNpemUpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKV0sCistICAgICAgICAgICAgW21ha2Vf bm9kZSgiQml0Q2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8uVUlOVDMyKV0sCist ICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UMzIsICg4LCkpXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJCaXRDYXN0IikpCistICAgIGRlZiB0ZXN0X2JpdGNhc3RfZG91YmxlX3RvX2ludDY0KHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICAjIFRlc3QgYml0Y2FzdCBiZXR3ZWVuIDY0 LWJpdCB0eXBlcyAoZG91YmxlIC0+IGludDY0KQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5ET1VCTEUsICgzLCA1KSld LAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkJpdENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRl bnNvclByb3RvLklOVDY0KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsIDUp KV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQorLSAgICBkZWYgdGVzdF9iaXRjYXN0 X2ludDhfdG9fdWludDgoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgICMgVGVz dCBiaXRjYXN0IGJldHdlZW4gOC1iaXQgdHlwZXMgKGludDggLT4gdWludDgpCistICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3Rv LklOVDgsICg0LCA2KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkJpdENhc3QiLCBbIngi XSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLlVJTlQ4KV0sCistICAgICAgICAgICAgW10sCistICAg ICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5VSU5UOCwgKDQsIDYpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQorLSAgICBk ZWYgdGVzdF9iaXRjYXN0X2Zsb2F0MTZfdG9faW50MTYoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgICMgVGVzdCBiaXRjYXN0IGJldHdlZW4gMTYtYml0IHR5cGVzIChmbG9hdDE2 IC0+IGludDE2KQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVDE2LCAoMiwgMykpXSwKKy0gICAgICAgICAgICBb bWFrZV9ub2RlKCJCaXRDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5JTlQxNild LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMTYsICgyLCAzKSldLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIkNvbDJJbSIpKQorLSAgICBkZWYgdGVzdF9jb2wyaW0oc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUs IDUpKSwKKy0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDIsKSksCistICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29sMkltIiwgWyJpbnB1 dCIsICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0sIFsib3V0cHV0Il0KKy0gICAgICAg ICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3No YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg1LCA1KSksCistICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDEs IDUpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEsIDUsIDUpKV0s CistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMkltIikpCistICAgIGRlZiB0ZXN0X2NvbDJpbV9zdHJp ZGVzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxLCA5LCA0KSksCistICAgICAgICAgICAgICAgICgib3V0cHV0X3No YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgICAgICAoImtlcm5l bF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAg ICAgICAgIkNvbDJJbSIsCistICAgICAgICAgICAgICAgICAgICBbImlucHV0IiwgIm91dHB1dF9z aGFwZSIsICJrZXJuZWxfc2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsib3V0cHV0Il0s CistICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPVsyLCAyXSwKKy0gICAgICAgICAgICAgICAg KQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlh bGl6ZXI9WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3NoYXBlIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCksICg1LCA1KSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDMsIDMpKSwKKy0g ICAgICAgICAgICBdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEsIDUsIDUpKV0sCistICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiQ29sMkltIikpCistICAgIGRlZiB0ZXN0X2NvbDJpbV9wYWRzKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJvdG8uRkxP QVQsICgxLCA1LCAxNSkpLAorLSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICAgICAgKCJrZXJuZWxfc2hhcGUiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb2wy SW0iLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIsICJvdXRwdXRfc2hhcGUiLCAia2Vy bmVsX3NoYXBlIl0sCistICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAorLSAgICAgICAg ICAgICAgICAgICAgcGFkcz1bMCwgMSwgMCwgMV0sCistICAgICAgICAgICAgICAgICkKKy0gICAg ICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsK Ky0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMiwpLCAoNSwgNSkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigia2Vy bmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgxLCA1KSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0 cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxLCA1LCA1KSldLAorLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK Ky0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkNvbDJJbSIpKQorLSAgICBkZWYgdGVzdF9jb2wyaW1fZGlsYXRpb25zKHNlbGYsIF8sIHZl cnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgxLCA0LCA1KSksCistICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJv dG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJbSIs CistICAgICAgICAgICAgICAgICAgICBbImlucHV0IiwgIm91dHB1dF9zaGFwZSIsICJrZXJuZWxf c2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsib3V0cHV0Il0sCistICAgICAgICAgICAg ICAgICAgICBkaWxhdGlvbnM9WzEsIDVdLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDIsKSwgKDYsIDYpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImtlcm5lbF9z aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMiwgMikpLAorLSAgICAgICAgICAgIF0s CistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIs IFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNiwgNikpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJD b2wySW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltXzVkKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxMCwgMTIp KSwKKy0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDMsKSksCistICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgzLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29sMkltIiwgWyJpbnB1dCIs ICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0sIFsib3V0cHV0Il0KKy0gICAgICAgICAg ICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAg aW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3NoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgzLCA0LCA1KSksCistICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDEs IDEsIDUpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIsIDMsIDQs IDUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0IikpCistICAgIGRlZiB0ZXN0X2NvbmNh dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMp KSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg3LCA0LCAzKSldLAorLSAgICAgICAgICAgIFtt YWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5Il0sIFsieiJdLCBheGlzPTApXSwKKy0gICAgICAg ICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0g ICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eiIsIFRlbnNvclByb3RvLkZMT0FULCAoOSwgNCwgMykpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJD b25jYXQiKSkKKy0gICAgZGVmIHRlc3RfY29uY2F0X21pc3Npbmdfc2hhcGUoc2VsZiwgKl8pIC0+ IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKSwK Ky0gICAgICAgICAgICAgICAgInkiLAorLSAgICAgICAgICAgICAgICAoInoiLCBUZW5zb3JQcm90 by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5vbmUpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5IiwgInoiXSwgWyJvdXQiXSwgYXhpcz0w KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFJh aXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQs IGdyYXBoKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi Q29uY2F0IikpCistICAgIGRlZiB0ZXN0X2NvbmNhdF8zZF9heGlzXzIoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAyLCAyKSksICgieSIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgMiwgMikpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQi LCBbIngiLCAieSJdLCBbInoiXSwgYXhpcz0yKV0sCistICAgICAgICAgICAgW10sCistICAgICAg ICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgs CistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5G TE9BVCwgKDIsIDIsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0IikpCistICAgIGRl ZiB0ZXN0X2NvbmNhdF9wYXJhbShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKCJhIiwgMikpLCAoInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJhIiwgMykpXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngiLCAieSJdLCBbInoiXSwgYXhp cz0xKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJhIiwgNSkpXSwKKy0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKKy0gICAgZGVmIHRlc3RfY29uY2F0X3BhcmFtX3Npbmds ZV9pbnB1dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJh IiwgMikpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngiXSwgWyJ6Il0s IGF4aXM9MCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiYSIsIDIpKV0sCist ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX2R5bmFt aWNfc2hhcGVfa25vd25fcmFuayhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAg c2VsZi5za2lwSWYodmVyc2lvbiA8IDE0LCAiUmFuayBpbmZlcmVuY2UgaXMgYWRkZWQgZnJvbSBW ZXJzaW9uIDE0IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDIsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUi LCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4 LCAoTm9uZSwgTm9uZSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRl ZiB0ZXN0X3Jlc2hhcGVfZHluYW1pY19zaGFwZV9zeW1ib2xpYyhzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoIk0iLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwg WyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwg Tm9uZSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVz aGFwZV9keW5hbWljX3Vua25vd25fc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg Tm9uZSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUi XSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCBOb25lKV0sCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19z aGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQs IDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCistICAgICAgICAgICAg W21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAorLSAgICAgICAg ICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDMsIDgpKV0sCistICAgICAgICApCistICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDMsIDgpKV0s CistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX3N0 YXRpY19zaGFwZV9pbmZlcnJlZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90 by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKV0s CistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInki XSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3Rl bnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDAsIDMsIC0xKSldLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uVUlOVDgsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0g ICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hhcGVfemVybyhzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDEsIDEsIDEpKSwgKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoMywpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsi eCIsICJzaGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGlu aXRpYWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwg KDAsIDEsIDEpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo CistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDEsIDEsIDEpKV0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiUmVzaGFwZSIpKQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19zaGFwZV9hbGxvd3pl cm8oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNp b24gPCAxNCwgImFsbG93emVybyBpcyBhZGRlZCBmcm9tIFZlcnNpb24gMTQiKQorLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgxLCAwLCAwKSksCistICAgICAgICAgICAgICAg ICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSksCistICAgICAgICAgICAgXSwKKy0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdLCBh bGxvd3plcm89MSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVy PVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDAsIDEsIDEp KV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5VSU5UOCwgKDAsIDEsIDEpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAg KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFw ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19zaGFwZV9jb25zdGFudChzZWxmLCBf LCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor LSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKV0sCistICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAg ICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAg ICAgICAgICBbInNoYXBlIl0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNv cigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDMsIDgpKSwKKy0gICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNo YXBlIl0sIFsieSJdKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBo LAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDMsIDgpKSwKKy0g ICAgICAgICAgICBdLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlVwc2FtcGxlIikpCistICAgIGRlZiB0 ZXN0X3Vwc2FtcGxlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBpZiB2ZXJz aW9uID09IDc6CistICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSldLAorLSAg ICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJVcHNhbXBsZSIsIFsieCJdLCBbInkiXSwgc2NhbGVz PVsxLjAsIDEuMSwgMS4zLCAxLjldKV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAg ICAgICkKKy0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKKy0gICAgICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgICAgICkKKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAo IngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAg ICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAg ICBdLAorLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJVcHNhbXBsZSIsIFsieCIsICJzY2Fs ZXMiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgIGlu aXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJzY2FsZXMiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDQsKSwgKDEuMCwgMS4xLCAxLjMsIDEuOSkpCistICAgICAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgKQorLQorLSAgICAgICAgICAgIGRlZiBjYWxsX2luZmVy ZW5jZSgpOgorLSAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAg ICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAg ICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgICAgICAgICApCistCistICAgICAgICAgICAgaWYg dmVyc2lvbiA9PSA5OgorLSAgICAgICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgpCistICAgICAg ICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgIyBVcHNhbXBsZSBpcyBkZXByZWNhdGVkIHNp bmNlIFZlcnNpb24gMTAuCistICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo b25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206CistICAgICAgICAgICAgICAgICAg ICBjYWxsX2luZmVyZW5jZSgpCistICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGNtLmV4Y2Vw dGlvbgorLSAgICAgICAgICAgICAgICBhc3NlcnQgIlVwc2FtcGxlIGlzIGRlcHJlY2F0ZWQiIGlu IHN0cihleGNlcHRpb24pCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJVcHNhbXBsZSIpKQorLSAgICBkZWYgdGVzdF91cHNhbXBsZV9yYXdfZGF0YShzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgaWYgdmVyc2lvbiA9PSA3OgorLSAgICAg ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWygieCIs IFRlbnNvclByb3RvLklOVDMyLCAoMSwgMywgNCwgNSkpXSwKKy0gICAgICAgICAgICAgICAgW21h a2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiXSwgWyJ5Il0sIHNjYWxlcz1bMi4wLCAxLjEsIDIuMywg MS45XSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICApCistICAgICAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAg ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQz MiwgKDIsIDMsIDksIDkpKV0sCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCist ICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8u SU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRl bnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiLCAic2NhbGVzIl0sIFsieSJdKV0sCist ICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAg ICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAi c2NhbGVzIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAoNCwpLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHZh bHM9bnAuYXJyYXkoWzEuMCwgMS4xLCAxLjMsIDEuOV0sIGR0eXBlPSI8ZjQiKS50b2J5dGVzKCks CistICAgICAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUsCistICAgICAgICAgICAgICAgICAg ICApCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgKSAgIyBGZWVkIHJhdyBieXRl cyAoZm9yY2UgbGl0dGxlIGVuZGlhbiBvcmRlcmluZyBsaWtlIG9ubnggc3RhbmRhcmQpIGZvciB0 ZXN0IHB1cnBvc2UKKy0KKy0gICAgICAgICAgICBkZWYgY2FsbF9pbmZlcmVuY2UoKToKKy0gICAg ICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKKy0gICAgICAgICAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKKy0gICAgICAgICAgICAgICAgKQorLQorLSAgICAgICAgICAgIGlmIHZlcnNpb24gPT0gOToK Ky0gICAgICAgICAgICAgICAgY2FsbF9pbmZlcmVuY2UoKQorLSAgICAgICAgICAgIGVsc2U6Cist ICAgICAgICAgICAgICAgICMgVXBzYW1wbGUgaXMgZGVwcmVjYXRlZCBzaW5jZSBWZXJzaW9uIDEw LgorLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5W YWxpZGF0aW9uRXJyb3IpIGFzIGNtOgorLSAgICAgICAgICAgICAgICAgICAgY2FsbF9pbmZlcmVu Y2UoKQorLSAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBjbS5leGNlcHRpb24KKy0gICAgICAg ICAgICAgICAgYXNzZXJ0ICJVcHNhbXBsZSBpcyBkZXByZWNhdGVkIiBpbiBzdHIoZXhjZXB0aW9u KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiRXhwYW5k IikpCistICAgIGRlZiB0ZXN0X2V4cGFuZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5JTlQzMiwgKDMsIDEpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywp KV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsi eSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2Vf dGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMiwgMSwgNikpXSwKKy0g ICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBn cmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLklOVDMyLCAoMiwgMywgNikpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCist ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQiKSkKKy0g ICAgZGVmIHRlc3RfZXhwYW5kX3NjYWxhcl9pbnB1dChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25l OgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5JTlQzMiwgKCkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hhcGUiXSwg WyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFr ZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg0LCA4KSldLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uSU5UMzIsICg0LCA4KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkV4cGFuZCIpKQorLSAgICBk ZWYgdGVzdF9leHBhbmRfcmF3X2RhdGEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uSU5UMzIsICgzLCAxKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSld LAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFwZSJdLCBbInki XSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAg ICAgICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAic2hhcGUiLAor LSAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCistICAgICAgICAgICAgICAg ICAgICAoMiwpLAorLSAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShbMywgNF0sIGR0 eXBlPSI8aTgiKS50b2J5dGVzKCksCistICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKKy0g ICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICApICAjIEZlZWQgcmF3 IGJ5dGVzIChmb3JjZSBsaXR0bGUgZW5kaWFuIG9yZGVyaW5nIGxpa2Ugb25ueCBzdGFuZGFyZCkg Zm9yIHRlc3QgcHVycG9zZQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uSU5UMzIsICgzLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkV4cGFuZCIp KQorLSAgICBkZWYgdGVzdF9leHBhbmRfZHluYW1pY19zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgxLCAyLCBOb25l KSksCistICAgICAgICAgICAgICAgICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSks CistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngi LCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0 aWFsaXplcj1bXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK Ky0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoTm9uZSwgMiwgTm9uZSkpXSwKKy0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJFeHBhbmQiKSkKKy0gICAgZGVmIHRlc3RfZXhwYW5kX3N5bWJvbGljX3NoYXBlKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5J TlQzMiwgKDEsIDIsIE5vbmUpKSwKKy0gICAgICAgICAgICAgICAgKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoInVua19fMCIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb bWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bXSwKKy0gICAgICAgICkKKy0gICAgICAg ICMgaWYgZ2l2aW5nIGEgc3ltYm9saWMgc2hhcGUsIEV4cGFuZCBzaG91bGQgbm90IGluZmVyIGFu eSBzaGFwZSBvciByYW5rIGluZmVyZW5jZQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsIE5vbmUpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJS ZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NpemUoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKKy0gICAgICAgIGlmIHZlcnNpb24gPT0gMTA6CistICAgICAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAg ICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAg ICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAg ICAgICBdLAorLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAic2Nh bGVzIl0sIFsieSJdKV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICBp bml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigic2NhbGVzIiwg VGVuc29yUHJvdG8uRkxPQVQsICg0LCksICgxLjAsIDEuMSwgMS4zLCAxLjkpKQorLSAgICAgICAg ICAgICAgICBdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwK Ky0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgICAgICkKKy0gICAgICAgIGVsaWYgdmVyc2lv biA9PSAxMToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMy LCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDgsKSksCistICAgICAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclBy b3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDQsKSksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAg IFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIiwgInNpemVzIl0sIFsi eSJdKV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICBpbml0aWFsaXpl cj1bCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKDQsKSwgKDMsIDUsIDYsIDcpKQorLSAgICAgICAgICAgICAgICBdLAorLSAgICAg ICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNSwgNiwgNykpXSwKKy0gICAgICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAorLSAgICAgICAgICAgICkKKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAg ICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAg ICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAgICAg ICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpKSwKKy0gICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIs ICIiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAg ICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJz aXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpLCAoMywgNSwgNiwgNykpCistICAgICAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKKy0gICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCA1LCA2LCA3KSldLAor LSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUk1TTm9ybWFsaXphdGlvbiIpKQorLSAgICBkZWYg dGVzdF9ybXNfbm9ybWFsaXphdGlvbihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgiLCAiVyIpKSwKKy0g ICAgICAgICAgICAgICAgKCJzY2FsZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIkgiLCAiVyIpKSwK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJNU05vcm1hbGl6YXRp b24iLCBbIlgiLCAic2NhbGUiXSwgWyJ5Il0sIGF4aXM9MildLAorLSAgICAgICAgICAgIFtdLAor LSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAg IGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgiLCAiVyIpKV0sCistICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAg ICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi UmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplX2F4ZXNfMl8zKHNlbGYsIF8sIHZl cnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTgsICJheGVz IGlzIGZyb20gVmVyc2lvbiAxOCIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQz MiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5G TE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNp emUiLCBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLCBbInkiXSwgYXhlcz0oMiwgMykpXSwKKy0g ICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNp emVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA3KSldLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgy LCA0LCA2LCA3KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVz dF9yZXNpemVfc2l6ZV9heGVzXzNfMihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAg ICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE4LCAiYXhlcyBpcyBmcm9tIFZlcnNpb24gMTgiKQor LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAg ICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAg ICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAg IF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICIiLCAi c2l6ZXMiXSwgWyJ5Il0sIGF4ZXM9KDMsIDIpKV0sCistICAgICAgICAgICAgW10sCistICAgICAg ICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0 LCAoMiwpLCAoNiwgNykpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgNywgNikpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfbm90X2xhcmdl cihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCistICAg ICAgICAgICAgdmVyc2lvbiA8IDE4LAorLSAgICAgICAgICAgICJrZWVwX2FzcGVjdF9yYXRpb19w b2xpY3kgaXMgZnJvbSBWZXJzaW9uIDE4IiwKKy0gICAgICAgICkKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIs IFRlbnNvclByb3RvLklOVDMyLCAoMywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRl bnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNv clByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIlJlc2l6ZSIs CistICAgICAgICAgICAgICAgICAgICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLAorLSAgICAg ICAgICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBrZWVwX2FzcGVjdF9y YXRpb19wb2xpY3k9Im5vdF9sYXJnZXIiLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90 ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSldLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBo LAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u SU5UMzIsICg0LCA2KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYg dGVzdF9yZXNpemVfc2l6ZV9heGVzXzJfM19ub3RfbGFyZ2VyKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZigKKy0gICAgICAgICAgICB2ZXJzaW9uIDwgMTgs CistICAgICAgICAgICAgImF4ZXMgJiBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3kgYXJlIGZyb20g VmVyc2lvbiAxOCIsCistICAgICAgICApCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5J TlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJSZXNpemUiLAorLSAgICAg ICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwKKy0gICAgICAgICAgICAg ICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgYXhlcz0oMiwgMyksCistICAgICAg ICAgICAgICAgICAgICBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3k9Im5vdF9sYXJnZXIiLAorLSAg ICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAg ICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCksICg2LCA2KSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCA0LCA2KSldLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9ub3Rfc21h bGxlcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCist ICAgICAgICAgICAgdmVyc2lvbiA8IDE4LAorLSAgICAgICAgICAgICJrZWVwX2FzcGVjdF9yYXRp b19wb2xpY3kgaXMgZnJvbSBWZXJzaW9uIDE4IiwKKy0gICAgICAgICkKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIs IFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIlJlc2l6 ZSIsCistICAgICAgICAgICAgICAgICAgICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLAorLSAg ICAgICAgICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBrZWVwX2FzcGVj dF9yYXRpb19wb2xpY3k9Im5vdF9zbWFsbGVyIiwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21h a2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNikpXSwKKy0g ICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBn cmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLklOVDMyLCAoNiwgMTApKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAg IGRlZiB0ZXN0X3Jlc2l6ZV9zaXplX2F4ZXNfMl8zX25vdF9zbWFsbGVyKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZigKKy0gICAgICAgICAgICB2ZXJzaW9u IDwgMTgsCistICAgICAgICAgICAgImF4ZXMgJiBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3kgYXJl IGZyb20gVmVyc2lvbiAxOCIsCistICAgICAgICApCistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5z b3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJSZXNpemUiLAor LSAgICAgICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwKKy0gICAgICAg ICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgYXhlcz0oMiwgMyksCist ICAgICAgICAgICAgICAgICAgICBrZWVwX2FzcGVjdF9yYXRpb19wb2xpY3k9Im5vdF9zbWFsbGVy IiwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10s CistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclBy b3RvLklOVDY0LCAoMiwpLCAoNiwgNikpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgNiwgMTApKV0s CistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2Fs ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lv biA8IDExLCAicm9pIGlucHV0IGlzIGZyb20gVmVyc2lvbiAxMSIpCistICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngi LCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJy b2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCistICAgICAgICAgICAgICAgICgic2NhbGVz IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAg ICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5Il0pXSwK Ky0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSwgKDEu MCwgMS4xLCAxLjMsIDEuOSkpCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwg MywgOSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVz aXplX3NjYWxlX2F4ZXNfMl8zKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBz ZWxmLnNraXBJZih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZyb20gVmVyc2lvbiAxOCIpCistICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAg ICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCistICAgICAgICAgICAg ICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCkpLAorLSAgICAgICAgICAgIF0s CistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMi XSwgWyJ5Il0sIGF4ZXM9KDIsIDMpKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAg aW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIs KSwgKDEuMywgMS45KSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2NhbGVfYXhlc18zXzIo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24g PCAxOCwgImF4ZXMgaXMgZnJvbSBWZXJzaW9uIDE4IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNv clByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRl bnNvclByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyJdLCBbInkiXSwgYXhlcz0oMywg MikpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90 ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpLCAoMS45LCAxLjMpKV0sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQor LQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikp CistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZV9yYXdfZGF0YShzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDExLCAicm9pIGlucHV0IGlz IGZyb20gVmVyc2lvbiAxMSIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwg KDEsIDMsIDQsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9B VCwgKDgsKSksCistICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg0LCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXpl IiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0g ICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAor LSAgICAgICAgICAgICAgICAgICAgInNjYWxlcyIsCistICAgICAgICAgICAgICAgICAgICBUZW5z b3JQcm90by5GTE9BVCwKKy0gICAgICAgICAgICAgICAgICAgICg0LCksCistICAgICAgICAgICAg ICAgICAgICB2YWxzPW5wLmFycmF5KFsyLjAsIDEuMSwgMi4zLCAxLjldLCBkdHlwZT0iPGY0Iiku dG9ieXRlcygpLAorLSAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUsCistICAgICAgICAgICAg ICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCAzLCA5LCA5KSldLAorLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2NhbGVfYW5k X3NpemVfYnV0X29uZV9pc19lbXB0eShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAg ICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDExLCAicm9pIGlucHV0IGlzIGZyb20gVmVyc2lvbiAx MSIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDMsIDQsIDUpKSwK Ky0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCistICAg ICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAg ICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgwLCkpLAorLSAgICAgICAg ICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJz Y2FsZXMiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAg ICBpbml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAg ICAgICAgICAgICAgInNjYWxlcyIsCistICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5G TE9BVCwKKy0gICAgICAgICAgICAgICAgICAgICg0LCksCistICAgICAgICAgICAgICAgICAgICB2 YWxzPW5wLmFycmF5KFsyLjAsIDEuMSwgMi4zLCAxLjldLCBkdHlwZT0iPGY0IikudG9ieXRlcygp LAorLSAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUsCistICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgInNpemVz IiwKKy0gICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDY0LAorLSAgICAgICAgICAg ICAgICAgICAgKDAsKSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJyYXkoW10sIGR0 eXBlPSI8aTgiKS50b2J5dGVzKCksCistICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKKy0g ICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCAzLCA5 LCA5KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNp emVfb3BzZXQxMV9zY2FsZXNfaXNfZW1wdHkoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0g ICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gIT0gMTEsICJUaGlzIHRlc3Qgb25seSB3b3JrcyBm b3IgVmVyc2lvbiAxMSIpCistICAgICAgICAjICJzY2FsZXMiIGlucHV0IGluIFJlc2l6ZSBpbiBv cHNldDExIGlzIG5vdCBvcHRpb25hbC4gSXQgbXVzdCBiZSBhbiBlbXB0eSB0ZW5zb3IKKy0gICAg ICAgICMgaWYgc2l6ZXMgaXMgbmVlZGVkLiBTaGFwZSBpbmZlcmVuY2UgZm9yIFJlc2l6ZSBzaGFs bCBoYW5kbGUgdGhpcyBjYXNlLgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor LSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIs ICgxLCAzLCA0LCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxP QVQsICg4LCkpLAorLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FU LCAoMCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAo NCwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIs IFsieCIsICJyb2kiLCAic2NhbGVzIiwgInNpemVzIl0sIFsieSJdKV0sCistICAgICAgICAgICAg W10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcigKKy0gICAgICAgICAgICAgICAgICAgICJzaXplcyIsCistICAgICAgICAgICAgICAgICAg ICBUZW5zb3JQcm90by5JTlQ2NCwKKy0gICAgICAgICAgICAgICAgICAgICg0LCksCistICAgICAg ICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsy LCA2LCA4LCAxMF0sIGR0eXBlPSI8aTgiCistICAgICAgICAgICAgICAgICAgICApLnRvYnl0ZXMo KSwgICMgZG91YmxlIGluIGFsbCBkaW1lbnNpb25zCistICAgICAgICAgICAgICAgICAgICByYXc9 VHJ1ZSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQor LQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U MzIsICgyLCA2LCA4LCAxMCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKCIiLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0 ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9z aGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQs IDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0pXSwK Ky0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKV0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiU2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rfc2hhcGVfc3RhcnRfMShzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE1LCAic3RhcnQgYW5k IGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSld LAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0sIFsieSJdLCBzdGFydD0x KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlNoYXBlIikpCistICAgIGRlZiB0ZXN0X3NoYXBlX2VuZF8xKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBh bmQgZW5kIGFyZSBmcm9tIFZlcnNpb24gMTUiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMp KV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIGVuZD0x KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsKSldLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlNoYXBlIikpCistICAgIGRlZiB0ZXN0X3NoYXBlX25lZ2F0aXZlX3N0YXJ0KHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUs ICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNpb24gMTUiKQorLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwg KDIsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5 Il0sIHN0YXJ0PS0xKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCistICAgIGRlZiB0ZXN0X3NoYXBlX2NsaXAxKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwg MTUsICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNpb24gMTUiKQorLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9B VCwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwg WyJ5Il0sIHN0YXJ0PS01KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSld LAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCistICAgIGRlZiB0ZXN0X3NoYXBlX2NsaXAy KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9u IDwgMTUsICJzdGFydCBhbmQgZW5kIGFyZSBmcm9tIFZlcnNpb24gMTUiKQorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5G TE9BVCwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngi XSwgWyJ5Il0sIGVuZD0xMCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAg ICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkp XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaXplIikpCistICAgIGRlZiB0ZXN0X3NpemUoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLCBbbWFr ZV9ub2RlKCJTaXplIiwgWyJ4Il0sIFsieSJdKV0sIFtdCistICAgICAgICApCistICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJHYXRoZXIiKSkKKy0gICAgZGVmIHRlc3RfZ2F0aGVyKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgMykpLCAoImkiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDIsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlciIs IFsieCIsICJpIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIs IDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyIikpCistICAgIGRlZiB0ZXN0X2dhdGhl cl9heGlzMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQs IDMsIDUpKSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCAyKSldLAorLSAgICAgICAgICAg IFttYWtlX25vZGUoIkdhdGhlciIsIFsieCIsICJpIl0sIFsieSJdLCBheGlzPTEpXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK Ky0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgMSwgMiwgNSkpXSwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s CistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJHYXRoZXIiKSkKKy0gICAgZGVmIHRlc3RfZ2F0aGVyX2ludG9fc2NhbGFyKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMywpKSwgKCJpIiwgVGVuc29y UHJvdG8uSU5UNjQsICgpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiR2F0aGVyIiwgWyJ4 IiwgImkiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlckVsZW1lbnRzIikpCistICAgIGRlZiB0ZXN0X2dhdGhl cl9lbGVtZW50cyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwg KDIsIDIpKSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAyKSldLAorLSAgICAgICAgICAg IFttYWtlX25vZGUoIkdhdGhlckVsZW1lbnRzIiwgWyJ4IiwgImkiXSwgWyJ5Il0sIGF4aXM9MSld LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAyKSldLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIkdhdGhlckVsZW1lbnRzIikpCistICAgIGRlZiB0ZXN0X2dhdGhlcl9lbGVtZW50c19h eGlzMChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMp KSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSldLAorLSAgICAgICAgICAgIFttYWtl X25vZGUoIkdhdGhlckVsZW1lbnRzIiwgWyJ4IiwgImkiXSwgWyJ5Il0sIGF4aXM9MCldLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0g ICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IlNjYXR0ZXIiKSkKKy0gICAgZGVmIHRlc3Rfc2NhdHRlcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgorLSAgICAgICAgaWYgdmVyc2lvbiA+PSAxMToKKy0gICAgICAgICAgICAjIFNjYXR0ZXIg aXMgZGVwcmVjYXRlZCBpbiBkb21haW5fdmVyc2lvbiBvZiAxMS4KKy0gICAgICAgICAgICB3aXRo IHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgor LSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3NjYXR0ZXIodmVyc2lvbikKKy0gICAgICAgICAg ICBleGNlcHRpb24gPSBjbS5leGNlcHRpb24KKy0gICAgICAgICAgICBhc3NlcnQgIlNjYXR0ZXIg aXMgZGVwcmVjYXRlZCIgaW4gc3RyKGV4Y2VwdGlvbikKKy0gICAgICAgIGVsc2U6CistICAgICAg ICAgICAgc2VsZi5fdGVzdF9zY2F0dGVyKHZlcnNpb24pCistCistICAgIGRlZiBfdGVzdF9zY2F0 dGVyKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDMsIDMpKSwKKy0gICAgICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCAzKSksCistICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAo MiwgMykpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRl ciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwK Ky0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZM T0FULCAoMywgMykpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyIikpCistICAgIGRlZiB0 ZXN0X3NjYXR0ZXJfYXhpczEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGlm IHZlcnNpb24gPj0gMTE6CistICAgICAgICAgICAgIyBTY2F0dGVyIGlzIGRlcHJlY2F0ZWQgaW4g ZG9tYWluX3ZlcnNpb24gb2YgMTEuCistICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNl cyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBjbToKKy0gICAgICAgICAgICAgICAg c2VsZi5fdGVzdF9zY2F0dGVyX2F4aXMxKHZlcnNpb24pCistICAgICAgICAgICAgZXhjZXB0aW9u ID0gY20uZXhjZXB0aW9uCistICAgICAgICAgICAgYXNzZXJ0ICJTY2F0dGVyIGlzIGRlcHJlY2F0 ZWQiIGluIHN0cihleGNlcHRpb24pCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHNlbGYu X3Rlc3Rfc2NhdHRlcl9heGlzMSh2ZXJzaW9uKQorLQorLSAgICBkZWYgX3Rlc3Rfc2NhdHRlcl9h eGlzMShzZWxmLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxLCA1KSksCistICAgICAgICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklO VDY0LCAoMSwgMikpLAorLSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwg KDEsIDIpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0 ZXIiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJdLCBheGlzPTEpXSwKKy0gICAgICAgICAgICBbXSwK Ky0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLkZMT0FULCAoMSwgNSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCist ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyRWxlbWVu dHMiKSkKKy0gICAgZGVmIHRlc3Rfc2NhdHRlcl9lbGVtZW50cyhzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzKSksCist ICAgICAgICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpLAorLSAgICAg ICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMpKSwKKy0gICAgICAgICAg ICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXJFbGVtZW50cyIsIFsieCIsICJp IiwgInUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykp XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyRWxlbWVudHMiKSkKKy0gICAgZGVmIHRlc3Rf c2NhdHRlcl9lbGVtZW50c19heGlzMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSksCistICAgICAgICAgICAgICAg ICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpLAorLSAgICAgICAgICAgICAgICAoInUi LCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIFttYWtlX25vZGUoIlNjYXR0ZXJFbGVtZW50cyIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0s IGF4aXM9MSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSldLAorKyAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQs IGV4cGVjdGVkX291dF9zaGFwZSldLAorICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKyAgICAgICAgICkKKyAKKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXJORCIpKQor LSAgICBkZWYgdGVzdF9zY2F0dGVybmQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKysgICAg ZGVmIF90ZXN0X3NjYXR0ZXIoc2VsZiwgdmVyc2lvbikgLT4gTm9uZToKKyAgICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKyAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgNSwgNikpLAorLSAgICAgICAgICAgICAgICAoImlu ZGljZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsIDMsIDIpKSwKKy0gICAgICAgICAgICAgICAg KCJ1cGRhdGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzLCA2KSksCisrICAgICAgICAgICAg ICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykpLAorKyAgICAgICAgICAgICAgICAo ImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMpKSwKKysgICAgICAgICAgICAgICAgKCJ1Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSksCisgICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICBbbWFrZV9ub2RlKCJTY2F0dGVyTkQiLCBbIngiLCAiaW5kaWNlcyIsICJ1cGRhdGVzIl0sIFsi eSJdKV0sCisrICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUi XSwgWyJ5Il0pXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkKKyAgICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgNSwgNikpXSwK KysgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZM T0FULCAoMywgMykpXSwKKyAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCisgICAgICAgICApCisgCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyTkQiKSkKKy0gICAgZGVm IHRlc3Rfc2NhdHRlcm5kX25vc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAg ICAgICMgVGhlIHNoYXBlIG9mICd4X3Jlc2hhcGVkJyBjYW5ub3QgYmUgaW5mZXJyZWQsIHNpbmNl IGl0IGlzIHRoZSBvdXRwdXQgb2YgYSBkeW5hbWljIHJlc2hhcGUuCistICAgICAgICAjIFRodXMg dGhlIHNoYXBlIG9mICd5JyBpcyBhbHNvIE5vbmUuCisrICAgIGRlZiBfdGVzdF9zY2F0dGVyX2F4 aXMxKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6CisgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCisgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDQsIDUsIDYpKSwKKy0gICAgICAgICAgICAgICAgKCJpbmRpY2VzIiwgVGVuc29y UHJvdG8uSU5UNjQsICgzLCAzLCAyKSksCistICAgICAgICAgICAgICAgICgidXBkYXRlcyIsIFRl bnNvclByb3RvLkZMT0FULCAoMywgMywgNikpLAorLSAgICAgICAgICAgICAgICAoInNoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgiTSIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJd LCBbInhfcmVzaGFwZWQiXSksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiU2NhdHRlck5E IiwgWyJ4X3Jlc2hhcGVkIiwgImluZGljZXMiLCAidXBkYXRlcyJdLCBbInkiXSksCisrICAgICAg ICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpLAorKyAgICAgICAgICAg ICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIpKSwKKysgICAgICAgICAgICAgICAg KCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyKSksCisgICAgICAgICAgICAgXSwKKysgICAg ICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyIiwgWyJ4IiwgImkiLCAidSJdLCBbInkiXSwgYXhp cz0xKV0sCisgICAgICAgICAgICAgW10sCisgICAgICAgICApCisgICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCisgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ4X3Jlc2hhcGVkIiwgVGVuc29yUHJv dG8uRkxPQVQsIE5vbmUpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpLAorLSAgICAgICAgICAgIF0sCisrICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEs IDUpKV0sCisgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorICAgICAgICAgKQorIAorQEAgLTE3MDksOTUgKzMzNCw2 IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgor ICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIDI0KV0sCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJTcXVlZXplIikpCistICAgIGRlZiB0ZXN0X3NxdWVlemUoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGlmIHZlcnNpb24gPT0gMTE6CistICAgICAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxLCAzLCAxLCAxLCAyLCAxKSldLAorLSAgICAgICAgICAgICAgICBb bWFrZV9ub2RlKCJTcXVlZXplIiwgIngiLCAieSIsIGF4ZXM9WzAsIDIsIDMsIDVdKV0sCistICAg ICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCistICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMikpXSwK Ky0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgICAgICkKKy0gICAgICAgIGVsc2U6CistICAg ICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCist ICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDMsIDEsIDEs IDIsIDEpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiYXhlcyIsIFRlbnNvclByb3RvLklOVDY0 LCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW21ha2Vfbm9k ZSgiU3F1ZWV6ZSIsIFsieCIsICJheGVzIl0sICJ5IildLAorLSAgICAgICAgICAgICAgICBbXSwK Ky0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3IoImF4ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSwgKDAsIDIsIDMsIDUpKQor LSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMikp XSwKKy0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ0NvbmNhdCIpKQorLSAgICBkZWYg dGVzdF9zdHJpbmdjb25jYXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAg ICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKSwKKy0gICAgICAgICAgICAgICAg KCJ5IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpLAorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nQ29uY2F0IiwgWyJ4IiwgInkiXSwgInoiKV0s CistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSldLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIlN0cmluZ0NvbmNhdCIpKQorLSAgICBkZWYgdGVzdF9zdHJpbmdjb25jYXRfYnJv YWRjYXN0aW5nKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBU ZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSksCistICAgICAgICAgICAgICAgICgieSIsIFRl bnNvclByb3RvLlNUUklORywgKDEsIDMsIDEpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIFttYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIsIFsieCIsICJ5Il0sICJ6IildLAorLSAgICAg ICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAor LSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ6IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJSZWdleEZ1bGxNYXRjaCIpKQorLSAgICBkZWYgdGVzdF9yZWdleF9mdWxsX21hdGNoKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDQsIDMsIDkpKV0s CistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVnZXhGdWxsTWF0Y2giLCBbIngiXSwgWyJ5Il0s IHBhdHRlcm49ciJeW0EtWl1bYS16XSokIildLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAg KQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uQk9P TCwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVnZXhGdWxsTWF0Y2giKSkK Ky0gICAgZGVmIHRlc3RfcmVnZXhfZnVsbF9tYXRjaF9lbXB0eV9zaGFwZShzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgpKV0sCistICAgICAgICAgICAgW21h a2Vfbm9kZSgiUmVnZXhGdWxsTWF0Y2giLCBbIngiXSwgWyJ5Il0sIHBhdHRlcm49ciJeW0EtWl1b YS16XSokIildLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uQk9PTCwgKCkpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCisgICAgIGRlZiB0ZXN0X3NxdWVlemVfbm9fYXhlc19vcHNl dDExKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCisg ICAgICAgICAgICAgWworQEAgLTU2MzIsMjMgKzQxNjgsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZl cmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgIHNlbGYuX21ha2VfbWF0 bXVsaW50ZWdlcl90ZXN0KCg1LCAxLCA0LCAyKSwgKDEsIDMsIDIsIDMpKQorICAgICAgICAgc2Vs Zi5fbWFrZV9tYXRtdWxpbnRlZ2VyX3Rlc3QoKDQsIDIpLCAoMywgMiwgMykpCisgCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFtvbm54LlRlbnNvclByb3RvLkZMT0FULCBv bm54LlRlbnNvclByb3RvLkZMT0FUMTYsIG9ubnguVGVuc29yUHJvdG8uQkZMT0FUMTZdCistICAg ICkKKy0gICAgZGVmIHRlc3RfcXVhbnRpemVsaW5lYXIoc2VsZiwgZWxlbV90eXBlKSAtPiBOb25l OgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgKCJ4IiwgZWxlbV90eXBlLCAoMzAsIDQsIDUpKSwKKy0gICAgICAgICAg ICAgICAgKCJ5X3NjYWxlIiwgZWxlbV90eXBlLCAoKSksCistICAgICAgICAgICAgICAgICgieV96 ZXJvX3BvaW50IiwgVGVuc29yUHJvdG8uVUlOVDgsICgpKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIFttYWtlX25vZGUoIlF1YW50aXplTGluZWFyIiwgWyJ4IiwgInlfc2NhbGUiLCAi eV96ZXJvX3BvaW50Il0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgzMCwgNCwgNSkpXQor LSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9xdWFudGl6ZWxpbmVhcl9kZWZhdWx0X3pwKHNl bGYpIC0+IE5vbmU6CisgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCisgICAgICAg ICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMzAsIDQsIDUpKSwgKCJ5X3NjYWxlIiwg VGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCitAQCAtNTc1NCwyMyArNDI3Myw2IEBAIGNsYXNzIFRl c3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgICAg IGdyYXBoLAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAg ICAgICBbb25ueC5UZW5zb3JQcm90by5GTE9BVCwgb25ueC5UZW5zb3JQcm90by5GTE9BVDE2LCBv bm54LlRlbnNvclByb3RvLkJGTE9BVDE2XQorLSAgICApCistICAgIGRlZiB0ZXN0X2RlcXVhbnRp emVsaW5lYXIoc2VsZiwgZWxlbV90eXBlKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uVUlOVDgsICgzMCwgNCwgNSkpLAorLSAgICAgICAgICAgICAgICAoInhfc2NhbGUi LCBlbGVtX3R5cGUsICgpKSwKKy0gICAgICAgICAgICAgICAgKCJ4X3plcm9fcG9pbnQiLCBUZW5z b3JQcm90by5VSU5UOCwgKCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vf bm9kZSgiRGVxdWFudGl6ZUxpbmVhciIsIFsieCIsICJ4X3NjYWxlIiwgInhfemVyb19wb2ludCJd LCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIGVsZW1fdHlwZSwgKDMwLCA0LCA1KSldCistICAgICAgICApCistCisgICAgIGRl ZiB0ZXN0X2R5bmFtaWNxdWFudGl6ZWxpbmVhcihzZWxmKSAtPiBOb25lOgorICAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorICAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5G TE9BVCwgKDMwLCA0LCA1KSldLAorQEAgLTYwMDUsMzE5ICs0NTA3LDYxIEBAIGNsYXNzIFRlc3RT aGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgICAgIFtt YWtlX25vZGUoIlJvaUFsaWduIiwgWyJ4IiwgInJvaXMiLCAiYmF0Y2hfaW5kaWNlcyJdLCBbInki XSldLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTUsICJDIiwgMSwgMSkpXQorLSAgICAgICAgKQorLQor LSAgICBkZWYgdGVzdF9yb3RhcnllbWJlZGRpbmdfNGQoc2VsZikgLT4gTm9uZToKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAibnVtX2hlYWRzIiwgInNlcV9sZW4i LCAiaGVhZF9zaXplIikpLAorLSAgICAgICAgICAgICAgICAoImNvc19jYWNoZSIsIFRlbnNvclBy b3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwKKy0gICAgICAg ICAgICAgICAgKCJzaW5fY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIs ICJoZWFkX3NpemVfZGl2XzIiKSksCistICAgICAgICAgICAgICAgICgicG9zaXRpb25faWRzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgiQiIsICJzZXFfbGVuIikpLAorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAg ICAgICAgICAiUm90YXJ5RW1iZWRkaW5nIiwKKy0gICAgICAgICAgICAgICAgICAgIFsiWCIsICJj b3NfY2FjaGUiLCAic2luX2NhY2hlIiwgInBvc2l0aW9uX2lkcyJdLAorLSAgICAgICAgICAgICAg ICAgICAgWyJZIl0sCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAg ICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAor LSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0gICAgICAgICAgICAgICAgICAgICJZIiwgVGVuc29yUHJv dG8uRkxPQVQsICgiQiIsICJudW1faGVhZHMiLCAic2VxX2xlbiIsICJoZWFkX3NpemUiKQorLSAg ICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgZGVm IHRlc3Rfcm90YXJ5ZW1iZWRkaW5nXzNkKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIlgi LCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgInNlcV9sZW4iLCAiaGlkZGVuX3NpemUiKSksCist ICAgICAgICAgICAgICAgICgiY29zX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibWF4X3Nl cV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAorLSAgICAgICAgICAgICAgICAoInNpbl9jYWNo ZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIp KSwKKy0gICAgICAgICAgICAgICAgKCJwb3NpdGlvbl9pZHMiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCJCIiwgInNlcV9sZW4iKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJSb3RhcnlFbWJl ZGRpbmciLAorLSAgICAgICAgICAgICAgICAgICAgWyJYIiwgImNvc19jYWNoZSIsICJzaW5fY2Fj aGUiLCAicG9zaXRpb25faWRzIl0sCistICAgICAgICAgICAgICAgICAgICBbIlkiXSwKKy0gICAg ICAgICAgICAgICAgICAgIG51bV9oZWFkcz00LAorLSAgICAgICAgICAgICAgICApCistICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgICAgICAg ICAiWSIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAic2VxX2xlbiIsICJoaWRkZW5fc2l6ZSIp CistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJMYWJl bEVuY29kZXIiKSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBfb25fZW1wdHk9VHJ1ZQorLSAgICAp CistICAgIGRlZiB0ZXN0X2xhYmVsX2VuY29kZXJfc3RyaW5nX2ludDY0KHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZigKKy0gICAgICAgICAgICB2ZXJzaW9u IDwgMiwgImtleXNfKiBhdHRyaWJ1dGVzIHdlcmUgaW50cm9kdWNlZCBpbiBhaS5vbm54Lm1sIG9w c2V0IDIiCistICAgICAgICApCistICAgICAgICBzdHJpbmdfbGlzdCA9IFsiQSIsICJtIiwgInki XQorLSAgICAgICAgZmxvYXRfbGlzdCA9IFs5NC4xNywgMzYuMDAsIC05OS4wXQorLSAgICAgICAg aW50NjRfbGlzdCA9IFsxMiwgMjgsIDg2XQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICg2LCAxKSldLAor LSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAg ICAgICAgICAgIkxhYmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0g ICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9O TlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgICAgICAgICAga2V5c19zdHJpbmdzPXN0cmluZ19s aXN0LAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX2ludDY0cz1pbnQ2NF9saXN0LAorLSAg ICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAg ICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LklOVDY0LCAoNiwgMSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0gICAgICAg ICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKKy0gICAgICAg ICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICkKKy0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSldLAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxh YmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICAg ICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlO LAorLSAgICAgICAgICAgICAgICAgICAga2V5c19pbnQ2NHM9aW50NjRfbGlzdCwKKy0gICAgICAg ICAgICAgICAgICAgIHZhbHVlc19zdHJpbmdzPXN0cmluZ19saXN0LAorLSAgICAgICAgICAgICAg ICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlNUUklORywgKDIs IDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAgICAgICAgICAgIG1h a2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCistICAgICAgICAgICAgICAgIG1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAp CistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpKV0sCistICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwK Ky0gICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0s CistICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCistICAgICAgICAg ICAgICAgICAgICBrZXlzX2Zsb2F0cz1mbG9hdF9saXN0LAorLSAgICAgICAgICAgICAgICAgICAg dmFsdWVzX2ludDY0cz1pbnQ2NF9saXN0LAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01M X0RPTUFJTiwgdmVyc2lvbiksCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgMTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklO VDY0LCAoOCwpKV0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUo CistICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKKy0gICAgICAgICAgICAgICAg ICAgIFsieCJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAg ICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCistICAgICAgICAgICAgICAgICAgICBrZXlzX2lu dDY0cz1pbnQ2NF9saXN0LAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX2Zsb2F0cz1mbG9h dF9saXN0LAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLkZMT0FULCAoOCwpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b CistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiks CistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICApCistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAorLSAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAg ICAgIkxhYmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAg ICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxf RE9NQUlOLAorLSAgICAgICAgICAgICAgICAgICAga2V5c19mbG9hdHM9ZmxvYXRfbGlzdCwKKy0g ICAgICAgICAgICAgICAgICAgIHZhbHVlc19zdHJpbmdzPXN0cmluZ19saXN0LAorLSAgICAgICAg ICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlNUUklO RywgKCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAg bWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKKy0gICAgICAgICAgICAgICAg bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCistICAgICAgICAgICAgXSwKKy0gICAgICAg ICkKKy0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBb KCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMSwgMikpXSwKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29k ZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgICAgICAgICBb InkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAg ICAgICAgICAgICAgICAgIGtleXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKKy0gICAgICAgICAgICAg ICAgICAgIHZhbHVlc19mbG9hdHM9ZmxvYXRfbGlzdCwKKy0gICAgICAgICAgICAgICAgKQorLSAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDIpKV0sCist ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRp ZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCistICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkxhYmVs RW5jb2RlciIpIGlmIE9OTlhfTUwgZWxzZSBbXSwgc2tpcF9vbl9lbXB0eT1UcnVlCistICAgICkK Ky0gICAgZGVmIHRlc3RfbGFiZWxfZW5jb2Rlcl90ZW5zb3JfYXR0cmlidXRlcyhzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCistICAgICAgICAgICAgdmVy c2lvbiA8IDQsICJ0ZW5zb3IgYXR0cmlidXRlcyB3ZXJlIGludHJvZHVjZWQgaW4gYWkub25ueC5t bCBvcHNldCA0IgorLSAgICAgICAgKQorLSAgICAgICAga2V5X3RlbnNvciA9IG1ha2VfdGVuc29y KAorLSAgICAgICAgICAgICJrZXlzX3RlbnNvciIsIFRlbnNvclByb3RvLlNUUklORywgWzRdLCBb ImEiLCAiYiIsICJjYyIsICJkZGQiXQorLSAgICAgICAgKQorLSAgICAgICAgdmFsdWVzX3RlbnNv ciA9IG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICJ2YWx1ZXNfdGVuc29yIiwgVGVuc29yUHJv dG8uSU5UNjQsIFs0XSwgWzEsIDIsIDMsIDRdCisrICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCisrICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxNSwgIkMiLCAxLCAxKSldCisgICAgICAgICApCisrCisrICAgIGRl ZiB0ZXN0X3JvdGFyeWVtYmVkZGluZ180ZChzZWxmKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJ TkcsICgiTSIsIE5vbmUsIDMsIDEyKSldLAorKyAgICAgICAgICAgIFsKKysgICAgICAgICAgICAg ICAgKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJudW1faGVhZHMiLCAic2VxX2xlbiIs ICJoZWFkX3NpemUiKSksCisrICAgICAgICAgICAgICAgICgiY29zX2NhY2hlIiwgVGVuc29yUHJv dG8uRkxPQVQsICgibWF4X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAorKyAgICAgICAg ICAgICAgICAoInNpbl9jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwg ImhlYWRfc2l6ZV9kaXZfMiIpKSwKKysgICAgICAgICAgICAgICAgKCJwb3NpdGlvbl9pZHMiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKCJCIiwgInNlcV9sZW4iKSksCisrICAgICAgICAgICAgXSwKKyAg ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAg ICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5Y X01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfdGVuc29yPWtleV90ZW5zb3Is CistICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfdGVuc29yPXZhbHVlc190ZW5zb3IsCistICAg ICAgICAgICAgICAgICAgICBkZWZhdWx0X3RlbnNvcj1tYWtlX3RlbnNvcigKKy0gICAgICAgICAg ICAgICAgICAgICAgICAiZGVmYXVsdF90ZW5zb3IiLCBUZW5zb3JQcm90by5JTlQ2NCwgWzFdLCBb MF0KKy0gICAgICAgICAgICAgICAgICAgICksCisrICAgICAgICAgICAgICAgICAgICAiUm90YXJ5 RW1iZWRkaW5nIiwKKysgICAgICAgICAgICAgICAgICAgIFsiWCIsICJjb3NfY2FjaGUiLCAic2lu X2NhY2hlIiwgInBvc2l0aW9uX2lkcyJdLAorKyAgICAgICAgICAgICAgICAgICAgWyJZIl0sCisg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICBdLAorICAgICAgICAgICAgIFtdLAorICAg ICAgICAgKQorICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uSU5UNjQsICgiTSIsIE5vbmUsIDMsIDEyKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNp b24pLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKysg ICAgICAgICAgICBbCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCisr ICAgICAgICAgICAgICAgICAgICAiWSIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAibnVtX2hl YWRzIiwgInNlcV9sZW4iLCAiaGVhZF9zaXplIikKKysgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgIF0sCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0g ICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkxhYmVsRW5jb2RlciIpIGlmIE9OTlhfTUwgZWxzZSBb XSwgc2tpcF9vbl9lbXB0eT1UcnVlCistICAgICkKKy0gICAgZGVmIHRlc3RfbGFiZWxfZW5jb2Rl cl90ZW5zb3JfYXR0cmlidXRlc19pbnZhbGlkX2NvbmZpZ3VyYXRpb25zKAorLSAgICAgICAgc2Vs ZiwgXywgdmVyc2lvbgorLSAgICApIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJz aW9uIDwgNCwgInRlbnNvciBhdHRyaWJ1dGVzIGludHJvZHVjZWQgaW4gYWkub25ueC5tbCBvcHNl dCA0IikKKy0gICAgICAgIGtleV90ZW5zb3IgPSBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAi a2V5c190ZW5zb3IiLCBUZW5zb3JQcm90by5TVFJJTkcsIFs0XSwgWyJhIiwgImIiLCAiY2MiLCAi ZGRkIl0KKy0gICAgICAgICkKKy0gICAgICAgIHZhbHVlc190ZW5zb3IgPSBtYWtlX3RlbnNvcigK Ky0gICAgICAgICAgICAidmFsdWVzX3RlbnNvciIsIFRlbnNvclByb3RvLklOVDY0LCBbNF0sIFsx LCAyLCAzLCA0XQorLSAgICAgICAgKQorLQorLSAgICAgICAgb3BzZXRfaW1wb3J0cyA9IFsKKy0g ICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAg ICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgXQorLQorLSAg ICAgICAgIyBkZWZhdWx0X3RlbnNvciBzaG91bGQgYmUgSU5UNjQsIHNhbWUgdHlwZSBhcyB2YWx1 ZXNfdGVuc29yCisrICAgIGRlZiB0ZXN0X3JvdGFyeWVtYmVkZGluZ18zZChzZWxmKSAtPiBOb25l OgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIE5vbmUsIDMsIDEyKSldLAorKyAgICAgICAgICAg IFsKKysgICAgICAgICAgICAgICAgKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJzZXFf bGVuIiwgImhpZGRlbl9zaXplIikpLAorKyAgICAgICAgICAgICAgICAoImNvc19jYWNoZSIsIFRl bnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwKKysg ICAgICAgICAgICAgICAgKCJzaW5fY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2Vx X2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCisrICAgICAgICAgICAgICAgICgicG9zaXRpb25f aWRzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiQiIsICJzZXFfbGVuIikpLAorKyAgICAgICAgICAg IF0sCisgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAg ICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCJd LAorLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBkb21h aW49T05OWF9NTF9ET01BSU4sCistICAgICAgICAgICAgICAgICAgICBrZXlzX3RlbnNvcj1rZXlf dGVuc29yLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX3RlbnNvcj12YWx1ZXNfdGVuc29y LAorLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5zb3IoCistICAg ICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHRfdGVuc29yIiwgVGVuc29yUHJvdG8uSU5UMzIs IFsxXSwgWzBdCistICAgICAgICAgICAgICAgICAgICApLAorKyAgICAgICAgICAgICAgICAgICAg IlJvdGFyeUVtYmVkZGluZyIsCisrICAgICAgICAgICAgICAgICAgICBbIlgiLCAiY29zX2NhY2hl IiwgInNpbl9jYWNoZSIsICJwb3NpdGlvbl9pZHMiXSwKKysgICAgICAgICAgICAgICAgICAgIFsi WSJdLAorKyAgICAgICAgICAgICAgICAgICAgbnVtX2hlYWRzPTQsCisgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICBdLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorLQorLSAg ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCistICAgICAgICAgICAgb25ueC5zaGFwZV9pbmZlcmVu Y2UuSW5mZXJlbmNlRXJyb3IsCistICAgICAgICAgICAgc2VsZi5faW5mZXJyZWQsCisrICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1vcHNldF9pbXBvcnRzLAorLSAgICAgICAgKQorLQorLSAgICAgICAg IyBkZWZhdWx0X3RlbnNvciBzaG91bGQgYmUgYSBzaW5nbGV0b24gb2Ygc2hhcGUgKDEsKQorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5TVFJJTkcsICgiTSIsIE5vbmUsIDMsIDEyKSldLAorICAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5j b2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICAgICAgICAg IFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAorLSAg ICAgICAgICAgICAgICAgICAga2V5c190ZW5zb3I9a2V5X3RlbnNvciwKKy0gICAgICAgICAgICAg ICAgICAgIHZhbHVlc19zdHJpbmdzPVsiYSIsICJiIiwgImNjIiwgImRkZCJdLAorLSAgICAgICAg ICAgICAgICAgICAgZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAg ICAgICAgICAgImRlZmF1bHRfdGVuc29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbMSwgMl0sIFsi YSIsICJiIl0KKy0gICAgICAgICAgICAgICAgICAgICksCisrICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oCisrICAgICAgICAgICAgICAgICAgICAiWSIsIFRlbnNvclByb3Rv LkZMT0FULCAoIkIiLCAic2VxX2xlbiIsICJoaWRkZW5fc2l6ZSIpCisgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLQorLSAg ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCistICAgICAgICAgICAgb25ueC5zaGFwZV9pbmZlcmVu Y2UuSW5mZXJlbmNlRXJyb3IsCistICAgICAgICAgICAgc2VsZi5faW5mZXJyZWQsCistICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1vcHNldF9pbXBvcnRzLAor ICAgICAgICAgKQorIAorICAgICBkZWYgbWFrZV9zcGFyc2UoCitAQCAtODc0NiwxMDUgKzY5OTAs NiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToK KyAgICAgICAgICkKKyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW291dHB1 dF90ZW5zb3JfdmFsX2luZm9dKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKKy0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X2Jh c2ljKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzdWJzdHJpbmdzID0gbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0gICAgICAgICAgICAic3Vic3RyaW5ncyIsCistICAgICAg ICAgICAgVGVuc29yUHJvdG8uU1RSSU5HLAorLSAgICAgICAgICAgICgyLCBOb25lKSwKKy0gICAg ICAgICkKKy0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIs IFRlbnNvclByb3RvLklOVDY0LCAoMiwpKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8u U1RSSU5HLCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUo IlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSldLAorLSAgICAg ICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtzdWJz dHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCistICAg IGRlZiB0ZXN0X3N0cmluZ19zcGxpdF9zeW1ib2xpYyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25l OgorLSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAg ICAgICAgInN1YnN0cmluZ3MiLAorLSAgICAgICAgICAgIFRlbnNvclByb3RvLlNUUklORywKKy0g ICAgICAgICAgICAoIkEiLCBOb25lKSwKKy0gICAgICAgICkKKy0gICAgICAgIGxlbmd0aCA9IG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoIkEiLCkp CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiQSIsKSksCistICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdTcGxpdCIsIFsieCJdLCBb InN1YnN0cmluZ3MiLCAibGVuZ3RoIl0pXSwKKy0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVu Z3RoXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxpdCIpKQorLSAgICBkZWYgdGVzdF9zdHJpbmdfc3BsaXRf bmVzdGVkKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzdWJzdHJpbmdzID0g bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0gICAgICAgICAgICAic3Vic3RyaW5ncyIsIFRlbnNv clByb3RvLlNUUklORywgKDIsIDQsIDMsIE5vbmUpCistICAgICAgICApCistICAgICAgICBsZW5n dGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsIDQsIDMpKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgNCwg MykpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3Bs aXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdLCBtYXhzcGxpdD0yKV0sCistICAg ICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICApCistICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1 YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKKy0g ICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X3plcm9fZGltZW5zaW9uYWxfaW5wdXQoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJzdWJzdHJpbmdzIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoTm9uZSwpKQorLSAgICAg ICAgbGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVuc29yUHJvdG8u SU5UNjQsICgpKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoKSks CistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdTcGxpdCIs IFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0sIG1heHNwbGl0PTIpXSwKKy0gICAgICAg ICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbc3Vic3Ry aW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxpdCIpKQorLSAgICBk ZWYgdGVzdF9zdHJpbmdfc3BsaXRfZW1wdHlfaW5wdXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorLSAgICAg ICAgICAgICJzdWJzdHJpbmdzIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCAzLCAwLCBOb25l KQorLSAgICAgICAgKQorLSAgICAgICAgbGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi bGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiTSIsIDMsIDApKQorLQorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg KCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCAzLCAwKSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdTcGxpdCIsIFsieCJdLCBbInN1YnN0cmlu Z3MiLCAibGVuZ3RoIl0sIG1heHNwbGl0PTIpXSwKKy0gICAgICAgICAgICBbc3Vic3RyaW5ncywg bGVuZ3RoXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0g ICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCisgICAgIGRlZiB0ZXN0X29wdGlvbmFsX3RlbnNv cl9nZXRfZWxlbWVudChzZWxmKSAtPiBOb25lOgorICAgICAgICAgdGVuc29yX3R5cGVfcHJvdG8g PSBoZWxwZXIubWFrZV90ZW5zb3JfdHlwZV9wcm90bygKKyAgICAgICAgICAgICBlbGVtX3R5cGU9 VGVuc29yUHJvdG8uRE9VQkxFLCBzaGFwZT1bMiwgMSwgNF0KK0BAIC05NDUyLDQyNiArNzU5Nyw3 NiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToK KyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkKKyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgp KSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLkZMT0FULCAoMTAsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAg ICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAg ICAgIFsic2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJz aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAorLSAgICAgICAgICAgICAgICAp LAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkhhbm5XaW5kb3ciLCBbInNoYXBlIl0sIFsi eSJdLCBwZXJpb2RpYz0wKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKy0g ICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICBkZWYgdGVzdF9ibGFja21hbndpbmRv dyhzZWxmKToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAg ICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0g ICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVl PW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAorLSAg ICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkJsYWNrbWFuV2lu ZG93IiwgWyJzaGFwZSJdLCBbInkiXSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb XSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAg ICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAs KSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCist ICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwK Ky0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoKSwgKDEwLCkpLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoIkJsYWNrbWFuV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVyaW9k aWM9MCksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCistICAgICAgICAgICAg XSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAg WworLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgbmFtZSwKKy0gICAgICAgICAgICAg ICAgdmVyc2lvbiwKKy0gICAgICAgICAgICAgICAgdGVzdF9hc3BlY3QsCistICAgICAgICAgICAg ICAgIGlucHV0X3NoYXBlLAorLSAgICAgICAgICAgICAgICBheGlzLAorLSAgICAgICAgICAgICAg ICBvbmVzaWRlZCwKKy0gICAgICAgICAgICAgICAgaW52ZXJzZSwKKy0gICAgICAgICAgICAgICAg ZXhwZWN0ZWRfc2hhcGUsCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIGZvciAobmFtZSwg dmVyc2lvbiksICgKKy0gICAgICAgICAgICAgICAgdGVzdF9hc3BlY3QsCistICAgICAgICAgICAg ICAgIGlucHV0X3NoYXBlLAorLSAgICAgICAgICAgICAgICBheGlzLAorLSAgICAgICAgICAgICAg ICBvbmVzaWRlZCwKKy0gICAgICAgICAgICAgICAgaW52ZXJzZSwKKy0gICAgICAgICAgICAgICAg ZXhwZWN0ZWRfc2hhcGUsCistICAgICAgICAgICAgKSBpbiBpdGVydG9vbHMucHJvZHVjdCgKKy0g ICAgICAgICAgICAgICAgYWxsX3ZlcnNpb25zX2ZvcigiREZUIiksCistICAgICAgICAgICAgICAg ICgKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfZGVmYXVsdF9heGlzIiwgKDIsIDUsIDEp LCBOb25lLCBOb25lLCBOb25lLCAoMiwgNSwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJy ZWFsc19heGlzXzAiLCAoMywgNSwgMTAsIDEpLCAwLCAwLCAwLCAoMywgNSwgMTAsIDIpKSwKKy0g ICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18xIiwgKDMsIDUsIDEwLCAxKSwgMSwgMCwg MCwgKDMsIDUsIDEwLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMiIs ICgzLCA1LCAxMCwgMSksIDIsIDAsIDAsICgzLCA1LCAxMCwgMikpLAorLSAgICAgICAgICAgICAg ICAgICAgKCJyZWFsc19heGlzX25lZyIsICgzLCA1LCAxMCwgMSksIC0yLCAwLCAwLCAoMywgNSwg MTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18wX29uZXNpZGVkIiwg KDMsIDUsIDEwLCAxKSwgMCwgMSwgMCwgKDIsIDUsIDEwLCAyKSksCistICAgICAgICAgICAgICAg ICAgICAoInJlYWxzX2F4aXNfMV9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDEsIDEsIDAsICgz LCAzLCAxMCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzJfb25lc2lk ZWQiLCAoMywgNSwgMTAsIDEpLCAyLCAxLCAwLCAoMywgNSwgNiwgMikpLAorLSAgICAgICAgICAg ICAgICAgICAgKCJyZWFsc19heGlzX25lZ19vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIC0yLCAx LCAwLCAoMywgNSwgNiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJjb21wbGV4X2RlZmF1 bHRfYXhpcyIsICgyLCA1LCAyKSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDUsIDIpKSwKKy0gICAg ICAgICAgICAgICAgICAgICgicmVhbF9pbnZlcnNlIiwgKDIsIDUsIDEpLCAxLCBOb25lLCAxLCAo MiwgNSwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJjb21wbGV4X2ludmVyc2UiLCAoMiwg NSwgMiksIDEsIE5vbmUsIDEsICgyLCA1LCAyKSksCistICAgICAgICAgICAgICAgICAgICAoImly ZmZ0X2F4aXNfMCIsICgyLCA1LCAxMCwgMiksIDAsIDEsIDEsICgyLCA1LCAxMCwgMSkpLAorLSAg ICAgICAgICAgICAgICAgICAgKCJpcmZmdF9heGlzXzEiLCAoMywgMywgMTAsIDIpLCAxLCAxLCAx LCAoMywgNCwgMTAsIDEpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc18yIiwg KDMsIDUsIDYsIDIpLCAyLCAxLCAxLCAoMywgNSwgMTAsIDEpKSwKKy0gICAgICAgICAgICAgICAg ICAgICgiaXJmZnRfYXhpc19uZWciLCAoMywgNSwgNiwgMiksIC0yLCAxLCAxLCAoMywgNSwgMTAs IDEpKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICApCistICAgICAgICBdCist ICAgICkKKy0gICAgZGVmIHRlc3RfZGZ0KAorLSAgICAgICAgc2VsZiwKKy0gICAgICAgIF86IHN0 ciwKKy0gICAgICAgIHZlcnNpb246IGludCwKKy0gICAgICAgIF90ZXN0X2FzcGVjdDogc3RyLAor LSAgICAgICAgaW5wdXRfc2hhcGU6IHR1cGxlW2ludF0sCistICAgICAgICBheGlzOiBpbnQgfCBO b25lLAorLSAgICAgICAgb25lc2lkZWQ6IGludCB8IE5vbmUsCistICAgICAgICBpbnZlcnNlOiBp bnQgfCBOb25lLAorLSAgICAgICAgZXhwZWN0ZWRfc2hhcGU6IHR1cGxlW2ludF0sCistICAgICkg LT4gTm9uZToKKy0gICAgICAgICMgQnVpbGQgdGhlIGF0dHJpYnV0ZXMgZm9yIGRpZmZlcmVudCBv cHNldCB2ZXJzaW9ucworLSAgICAgICAgYXR0cmlidXRlcyA9IHt9CistICAgICAgICBpZiBvbmVz aWRlZCBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICBhdHRyaWJ1dGVzWyJvbmVzaWRlZCJdID0g b25lc2lkZWQKKy0gICAgICAgIGlmIGludmVyc2UgaXMgbm90IE5vbmU6CistICAgICAgICAgICAg YXR0cmlidXRlc1siaW52ZXJzZSJdID0gaW52ZXJzZQorLQorLSAgICAgICAgaWYgdmVyc2lvbiA8 IDIwOgorLSAgICAgICAgICAgIGlmIGF4aXMgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgICAg IGF0dHJpYnV0ZXNbImF4aXMiXSA9IGF4aXMKKy0gICAgICAgICAgICBub2RlcyA9IFttYWtlX25v ZGUoIkRGVCIsIFsiaW5wdXQiLCAiIl0sIFsib3V0cHV0Il0sICoqYXR0cmlidXRlcyldCistICAg ICAgICAgICAgdmFsdWVfaW5mb3MgPSBbXQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBh c3NlcnQgdmVyc2lvbiA+PSAyMAorLSAgICAgICAgICAgIGlmIGF4aXMgaXMgbm90IE5vbmU6Cist ICAgICAgICAgICAgICAgIG5vZGVzID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2Rl KAorLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAg ICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJheGlzIl0sCistICAgICAg ICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoImF4aXMiLCBUZW5zb3JQcm90by5J TlQ2NCwgKCksIChheGlzLCkpLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICIiLCAiYXhpcyJdLCBbIm91dHB1 dCJdLCAqKmF0dHJpYnV0ZXMpLAorLSAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgICAg IHZhbHVlX2luZm9zID0gW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oImF4aXMiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKCkpXQorLSAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIG5vZGVz ID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIs ICIiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwKKy0gICAgICAgICAgICAgICAgXQorLSAg ICAgICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFtdCistCistICAgICAgICAjIENvbnN0cnVjdCB0 aGUgZ3JhcGgKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAg ICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0g ICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVl PW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCistICAgICAg ICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgICAgICAg ICAgICAgaW5wdXRfc2hhcGUsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhpbnB1 dF9zaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAgICAgICAgICAgICAg ICAgKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKm5vZGVzLAorLSAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclBy b3RvLkZMT0FULCBpbnB1dF9zaGFwZSksCistICAgICAgICAgICAgICAgICp2YWx1ZV9pbmZvcywK Ky0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29y UHJvdG8uRkxPQVQsIGV4cGVjdGVkX3NoYXBlKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAg ICAgWworLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgbmFtZSwKKy0gICAgICAgICAg ICAgICAgdmVyc2lvbiwKKy0gICAgICAgICAgICAgICAgdGVzdF9hc3BlY3QsCistICAgICAgICAg ICAgICAgIGlucHV0X3NoYXBlLAorLSAgICAgICAgICAgICAgICBheGlzLAorLSAgICAgICAgICAg ICAgICBvbmVzaWRlZCwKKy0gICAgICAgICAgICAgICAgaW52ZXJzZSwKKy0gICAgICAgICAgICAg ICAgZXhwZWN0ZWRfc2hhcGUsCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIGZvciAobmFt ZSwgdmVyc2lvbiksICgKKy0gICAgICAgICAgICAgICAgdGVzdF9hc3BlY3QsCistICAgICAgICAg ICAgICAgIGlucHV0X3NoYXBlLAorLSAgICAgICAgICAgICAgICBheGlzLAorLSAgICAgICAgICAg ICAgICBvbmVzaWRlZCwKKy0gICAgICAgICAgICAgICAgaW52ZXJzZSwKKy0gICAgICAgICAgICAg ICAgZXhwZWN0ZWRfc2hhcGUsCistICAgICAgICAgICAgKSBpbiBpdGVydG9vbHMucHJvZHVjdCgK Ky0gICAgICAgICAgICAgICAgYWxsX3ZlcnNpb25zX2ZvcigiREZUIiksCistICAgICAgICAgICAg ICAgICgKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfZGVmYXVsdF9heGlzIiwgKDIsIDUs IDEpLCBOb25lLCBOb25lLCBOb25lLCAoMiwgNDIsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAg ICgicmVhbHNfYXhpc18wIiwgKDMsIDUsIDEwLCAxKSwgMCwgMCwgMCwgKDQyLCA1LCAxMCwgMikp LAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzEiLCAoMywgNSwgMTAsIDEpLCAx LCAwLCAwLCAoMywgNDIsIDEwLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4 aXNfMiIsICgzLCA1LCAxMCwgMSksIDIsIDAsIDAsICgzLCA1LCA0MiwgMikpLAorLSAgICAgICAg ICAgICAgICAgICAgKCJyZWFsc19heGlzX25lZyIsICgzLCA1LCAxMCwgMSksIC0yLCAwLCAwLCAo MywgNSwgNDIsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18wX29uZXNp ZGVkIiwgKDMsIDUsIDEwLCAxKSwgMCwgMSwgMCwgKDIyLCA1LCAxMCwgMikpLAorLSAgICAgICAg ICAgICAgICAgICAgKCJyZWFsc19heGlzXzFfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAxLCAx LCAwLCAoMywgMjIsIDEwLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNf Ml9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDIsIDEsIDAsICgzLCA1LCAyMiwgMikpLAorLSAg ICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzX25lZ19vbmVzaWRlZCIsICgzLCA1LCAxMCwg MSksIC0yLCAxLCAwLCAoMywgNSwgMjIsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiY29t cGxleF9kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMiksIE5vbmUsIE5vbmUsIE5vbmUsICgyLCA0Miwg MikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsX2ludmVyc2UiLCAoMiwgNSwgMSksIDEs IE5vbmUsIDEsICgyLCA0MiwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJjb21wbGV4X2lu dmVyc2UiLCAoMiwgNSwgMiksIDEsIE5vbmUsIDEsICgyLCA0MiwgMikpLAorLSAgICAgICAgICAg ICAgICAgICAgKCJpcmZmdF9heGlzXzAiLCAoMiwgNSwgMTAsIDIpLCAwLCAxLCAxLCAoNDIsIDUs IDEwLCAxKSksCistICAgICAgICAgICAgICAgICAgICAoImlyZmZ0X2F4aXNfMSIsICgzLCAzLCAx MCwgMiksIDEsIDEsIDEsICgzLCA0MiwgMTAsIDEpKSwKKy0gICAgICAgICAgICAgICAgICAgICgi aXJmZnRfYXhpc18yIiwgKDMsIDUsIDYsIDIpLCAyLCAxLCAxLCAoMywgNSwgNDIsIDEpKSwKKy0g ICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc19uZWciLCAoMywgNSwgNiwgMiksIC0yLCAx LCAxLCAoMywgNSwgNDIsIDEpKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAp CistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfZGZ0X2RmdF9sZW5ndGgoCistICAg ICAgICBzZWxmLAorLSAgICAgICAgXzogc3RyLAorLSAgICAgICAgdmVyc2lvbjogaW50LAorLSAg ICAgICAgX3Rlc3RfYXNwZWN0OiBzdHIsCistICAgICAgICBpbnB1dF9zaGFwZTogdHVwbGVbaW50 XSwKKy0gICAgICAgIGF4aXM6IGludCB8IE5vbmUsCistICAgICAgICBvbmVzaWRlZDogaW50IHwg Tm9uZSwKKy0gICAgICAgIGludmVyc2U6IGludCB8IE5vbmUsCistICAgICAgICBleHBlY3RlZF9z aGFwZTogdHVwbGVbaW50XSwKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgIyBCdWlsZCB0aGUg YXR0cmlidXRlcyBmb3IgZGlmZmVyZW50IG9wc2V0IHZlcnNpb25zCistICAgICAgICBhdHRyaWJ1 dGVzID0ge30KKy0gICAgICAgIGlmIG9uZXNpZGVkIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAg IGF0dHJpYnV0ZXNbIm9uZXNpZGVkIl0gPSBvbmVzaWRlZAorLSAgICAgICAgaWYgaW52ZXJzZSBp cyBub3QgTm9uZToKKy0gICAgICAgICAgICBhdHRyaWJ1dGVzWyJpbnZlcnNlIl0gPSBpbnZlcnNl CistCistICAgICAgICBkZnRfbGVuZ3RoID0gNDIKKy0KKy0gICAgICAgIGlmIHZlcnNpb24gPCAy MDoKKy0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBh dHRyaWJ1dGVzWyJheGlzIl0gPSBheGlzCistICAgICAgICAgICAgbm9kZXMgPSBbCistICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCist ICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiZGZ0X2xlbmd0 aCJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAg ICAgICAgICAgICAgICAgImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksIChkZnRf bGVuZ3RoLCkKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICJkZnRfbGVuZ3RoIl0s IFsib3V0cHV0Il0sICoqYXR0cmlidXRlcyksCistICAgICAgICAgICAgXQorLSAgICAgICAgICAg IHZhbHVlX2luZm9zID0gW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCkpXQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBhc3NlcnQg dmVyc2lvbiA+PSAyMAorLSAgICAgICAgICAgIGlmIGF4aXMgaXMgbm90IE5vbmU6CistICAgICAg ICAgICAgICAgIG5vZGVzID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICAg ICAgW10sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJheGlzIl0sCistICAgICAgICAgICAg ICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCksIChheGlzLCkpLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiZGZ0 X2xlbmd0aCJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklO VDY0LCAoKSwgKGRmdF9sZW5ndGgsKQorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJERlQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsi aW5wdXQiLCAiZGZ0X2xlbmd0aCIsICJheGlzIl0sCistICAgICAgICAgICAgICAgICAgICAgICAg WyJvdXRwdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAqKmF0dHJpYnV0ZXMsCistICAg ICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgICAg IHZhbHVlX2luZm9zID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCistICAgICAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgpKSwKKy0gICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIGVsc2U6CistICAgICAgICAg ICAgICAgIG5vZGVzID0gWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAg ICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICAgICAg W10sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJkZnRfbGVuZ3RoIl0sCistICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoZGZ0X2xlbmd0aCwp CistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAg IkRGVCIsCistICAgICAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIsICJkZnRfbGVuZ3RoIiwg IiJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsib3V0cHV0Il0sCistICAgICAgICAgICAg ICAgICAgICAgICAgKiphdHRyaWJ1dGVzLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAg ICAgICAgICAgICAgXQorLSAgICAgICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFsKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKCkpCistICAgICAgICAgICAgICAgIF0KKysgICAgICAgICAgICBncmFwaCwK KysgICAgICAgICAgICBbCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o InNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKysgICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCisrICAgICAg ICAgICAgXSwKKysgICAgICAgICkKKyAKKy0gICAgICAgICMgQ29uc3RydWN0IHRoZSBncmFwaAor ICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorICAgICAgICAgICAgIFtdLAorICAg ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorICAgICAgICAgICAgICAg ICAgICAgIkNvbnN0YW50IiwKKyAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAg ICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5z b3IoCistICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1 dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKGlucHV0X3NoYXBlLCBk dHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCistICAgICAgICAgICAgICAgICAgICApLAorKyAg ICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAorKyAgICAgICAgICAgICAgICAgICAgdmFsdWU9 bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCisgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICpub2RlcywKKysgICAgICAgICAgICAg ICAgbWFrZV9ub2RlKCJIYW5uV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCks CisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkKKyAgICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwKKyAgICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVu c29yUHJvdG8uRkxPQVQsIGlucHV0X3NoYXBlKSwKKy0gICAgICAgICAgICAgICAgKnZhbHVlX2lu Zm9zLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBU ZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfc2hhcGUpLAorKyAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCisrICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9B VCwgKDEwLCkpLAorICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorICAgICAgICAgKQor IAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAg KCJsYXN0IiwgMyksCistICAgICAgICAgICAgKCJsYXN0X25lZ2F0aXZlIiwgLTEpLAorLSAgICAg ICAgICAgICgib3V0X29mX3JhbmdlIiwgNCksCistICAgICAgICAgICAgKCJvdXRfb2ZfcmFuZ2Vf bmVnYXRpdmUiLCAtNSksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfZGZ0X2lu dmFsaWRfYXhpc19vcHNldDE3KHNlbGYsIF86IHN0ciwgYXhpczogaW50KSAtPiBOb25lOgorKyAg ICBkZWYgdGVzdF9ibGFja21hbndpbmRvdyhzZWxmKToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICBbCisgICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCisgICAg ICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0g ICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAg ICAgICAgICJpbnB1dCIsCistICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxP QVQsCistICAgICAgICAgICAgICAgICAgICAgICAgKDIsIDUsIDUsIDIpLAorLSAgICAgICAgICAg ICAgICAgICAgICAgIG5wLm9uZXMoKDIsIDUsIDUsIDIpLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0 dGVuKCksCistICAgICAgICAgICAgICAgICAgICApLAorKyAgICAgICAgICAgICAgICAgICAgWyJz aGFwZSJdLAorKyAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCisgICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICIiXSwgWyJvdXRwdXQiXSwg b25lc2lkZWQ9MSwgYXhpcz1heGlzKSwKKysgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW1t aW5nV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSksCisgICAgICAgICAgICAgXSwKKyAgICAgICAg ICAgICBbXSwKKyAgICAgICAgICkKKy0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25u eC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IpOgorLSAgICAgICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgyLCA1LCA1LCAyKSksCistICAgICAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMs IDUsIDIpKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTcpXSwKKy0gICAgICAgICAg ICApCisrICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisrICAgICAgICAgICAgZ3JhcGgs CisrICAgICAgICAgICAgWworKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCisrICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAorKyAgICAg ICAgICAgIF0sCisrICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0g ICAgICAgIFsKKy0gICAgICAgICAgICAoImxhc3QiLCAzKSwKKy0gICAgICAgICAgICAoImxhc3Rf bmVnYXRpdmUiLCAtMSksCistICAgICAgICAgICAgKCJvdXRfb2ZfcmFuZ2UiLCA0KSwKKy0gICAg ICAgICAgICAoIm91dF9vZl9yYW5nZV9uZWdhdGl2ZSIsIC01KSwKKy0gICAgICAgIF0KKy0gICAg KQorLSAgICBkZWYgdGVzdF9kZnRfaW52YWxpZF9heGlzX29wc2V0MjAoc2VsZiwgXzogc3RyLCBh eGlzOiBpbnQpIC0+IE5vbmU6CisgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCisg ICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCisgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorICAgICAgICAgICAgICAgICAg ICAgW10sCistICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCistICAgICAgICAgICAgICAg ICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQi LAorLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAg ICAgICAgICAgICAgICAgICgyLCA1LCA1LCAyKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBu cC5vbmVzKCgyLCA1LCA1LCAyKSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAg ICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAg ICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJheGlzIl0sCistICAgICAgICAg ICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0LCAo KSwgKGF4aXMsKSksCisrICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCisrICAgICAgICAg ICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCksICgxMCwpKSwKKyAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9u b2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0pLAorKyAgICAgICAg ICAgICAgICBtYWtlX25vZGUoIkhhbW1pbmdXaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdLCBwZXJp b2RpYz0wKSwKKyAgICAgICAgICAgICBdLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQor LSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZl cmVuY2VFcnJvcik6CistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIs IDUsIDUsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o ImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorLSAgICAgICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA1 LCAyKSksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDIwKV0sCistICAgICAgICAgICAg KQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorKyAgICAgICAgICAgIGdyYXBoLAor KyAgICAgICAgICAgIFsKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorKyAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKysgICAgICAg ICAgICBdLAorKyAgICAgICAgKQorIAorICAgICBkZWYgdGVzdF9kZnRfcmZmdF9pbnZhbGlkX2Nv bXBsZXhfaW5wdXRfb3BzZXQxNyhzZWxmKSAtPiBOb25lOgorICAgICAgICAgIiIiVGVzdCB0aGF0 IFJGRlQgKG9uZXNpZGVkPTEsIGludmVyc2U9MCkgcmVqZWN0cyBjb21wbGV4IGlucHV0IiIiCitA QCAtMTAwMTEsMTI4ICs3ODA2LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFw ZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDIwKV0sCisgICAgICAgICAgICAgKQorIAorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJyZWFs IiwgKDIsIDUsIDUsIDEpKSwKKy0gICAgICAgICAgICAoImNvbXBsZXgiLCAoMiwgNSwgNSwgMikp LAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2RmdF9keW5hbWljX2F4aXNfb3Bz ZXQyMChzZWxmLCBfOiBzdHIsIHNoYXBlOiB0dXBsZVtpbnQsIC4uLl0pIC0+IE5vbmU6CistICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygiYXhpcyIsIFRl bnNvclByb3RvLklOVDY0LCAoKSldLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAg ICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAgICAg ICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAg ImlucHV0IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0g ICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBu cC5vbmVzKHNoYXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCistICAgICAgICAgICAg ICAgICAgICApLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25v ZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxP QVQsIHNoYXBlKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0 cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA1LCA1LCAyKSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCAyMCldLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCist ICAgICAgICBbCistICAgICAgICAgICAgKCJyZWFsIiwgKDIsIDUsIDUsIDEpKSwKKy0gICAgICAg IF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnRfZHluYW1pY19heGlzX29uZXNpZGVkX2RmdF9s ZW5ndGhfb3BzZXQyMCgKKy0gICAgICAgIHNlbGYsIF86IHN0ciwgc2hhcGU6IHR1cGxlW2ludCwg Li4uXQorLSAgICApIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWygiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldLAorLSAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAg ICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAg ICAgICAgWyJpbnB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3Io CistICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0gICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKHNoYXBlLCBkdHlwZT1ucC5mbG9hdDMy KS5mbGF0dGVuKCksCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAp LAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29u c3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBb ImRmdF9sZW5ndGgiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAor LSAgICAgICAgICAgICAgICAgICAgICAgICJkZnRfbGVuZ3RoIiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAoKSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbNDJdLCBkdHlwZT1ucC5pbnQ2NCks CistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAg ICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiREZUIiwgWyJpbnB1dCIs ICJkZnRfbGVuZ3RoIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwgb25lc2lkZWQ9MQorLSAgICAgICAg ICAgICAgICApLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAp CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJp bnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBzaGFwZSksCistICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAor LSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAgICAgICAg ICAgICAgIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoTm9uZSwgTm9uZSwgTm9uZSwgMikK Ky0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDIwKV0sCistICAgICAg ICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAg ICAgICAoInJlYWwiLCAoMiwgNSwgNSwgMSkpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRl ZiB0ZXN0X2RmdF9keW5hbWljX2F4aXNfb25lc2lkZWRfb3BzZXQyMCgKKy0gICAgICAgIHNlbGYs IF86IHN0ciwgc2hhcGU6IHR1cGxlW2ludCwgLi4uXQorLSAgICApIC0+IE5vbmU6CistICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygiYXhpcyIsIFRlbnNv clByb3RvLklOVDY0LCAoKSldLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFr ZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAg ICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAgICAgICAg ICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgImlu cHV0IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0gICAg ICAgICAgICAgICAgICAgICAgICBzaGFwZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5v bmVzKHNoYXBlLCBkdHlwZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCistICAgICAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUo IkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwgb25lc2lkZWQ9MSksCist ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29y UHJvdG8uRkxPQVQsIHNoYXBlKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygKKy0gICAgICAgICAgICAgICAgICAgICJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwg KE5vbmUsIE5vbmUsIE5vbmUsIDIpCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCAyMCldLAorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9kZnRfb25lc2lkZWRf ZGVmYXVsdF9heGlzX29wc2V0MTcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgICMgT3BzZXQgMTcg c2V0cyBkZWZhdWx0IGF4aXMgdG8gYmUgMS4KKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKK0BAIC0xMDU5MSw0MSArODI2NCw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShU ZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgICAgIF0sCisgICAgICAgICApCisg CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAo WzEsIDIsIDNdLCBbIjEiLCAiMiJdKSwKKy0gICAgICAgICAgICAoWzEsIDIsIDNdLCBOb25lKSwK Ky0gICAgICAgICAgICAoTm9uZSwgWyIxIiwgIjIiLCAiMyJdKSwKKy0gICAgICAgICAgICAoTm9u ZSwgTm9uZSksCistICAgICAgICBdCistICAgICkKKy0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mo T05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIp CistICAgIGRlZiB0ZXN0X2NhdGVnb3J5X21hcHBlcl9mYWlsc19pZl9pbnZhbGlkX2F0dHJpYnV0 ZXMoCistICAgICAgICBzZWxmLCBjYXRzX2ludDY0cywgY2F0c19zdHJpbmdzCistICAgICkgLT4g Tm9uZToKKy0gICAgICAgIGNhdCA9IG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAiQ2F0ZWdvcnlN YXBwZXIiLAorLSAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAgIFsieSJdLAorLSAgICAg ICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICBjYXRzX2ludDY0cz1j YXRzX2ludDY0cywKKy0gICAgICAgICAgICBjYXRzX3N0cmluZ3M9Y2F0c19zdHJpbmdzLAorLSAg ICAgICAgKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMwLCA0LCA1KSldLAorLSAgICAgICAgICAgIFtj YXRdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRS YWlzZXMoCistICAgICAgICAgICAgb25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3Is CistICAgICAgICAgICAgc2VsZi5faW5mZXJyZWQsCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChP Tk5YX01MX0RPTUFJTiwgMSksCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgMTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCisgICAgIEB1bml0dGVz dC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5t bCBvcGVyYXRvcnMiKQorICAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3NvcihzZWxm KSAtPiBOb25lOgorICAgICAgICAgdHJlZSA9IG1ha2Vfbm9kZSgKK0BAIC0xMDY0OSwxMzEgKzgy ODcsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVy KToKKyAgICAgICAgICAgICBdLAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoW1RlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5ET1VCTEUsIFRlbnNvclByb3Rv LkZMT0FUMTZdKQorLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCBy ZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKKy0gICAgZGVmIHRlc3RfdHJl ZV9lbnNlbWJsZShzZWxmLCBkdHlwZSkgLT4gTm9uZToKKy0gICAgICAgIGludGVyaW9yX25vZGVz ID0gNQorLSAgICAgICAgbGVhdmVzID0gOQorLSAgICAgICAgdHJlZSA9IG1ha2Vfbm9kZSgKKy0g ICAgICAgICAgICAiVHJlZUVuc2VtYmxlIiwKKy0gICAgICAgICAgICBbIngiXSwKKy0gICAgICAg ICAgICBbInkiXSwKKy0gICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCistICAgICAg ICAgICAgbl90YXJnZXRzPTUsCistICAgICAgICAgICAgbm9kZXNfZmVhdHVyZWlkcz1bMF0gKiBp bnRlcmlvcl9ub2RlcywKKy0gICAgICAgICAgICBub2Rlc19zcGxpdHM9bWFrZV90ZW5zb3IoCist ICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiLAorLSAgICAgICAgICAgICAgICBkdHlwZSwK Ky0gICAgICAgICAgICAgICAgKGludGVyaW9yX25vZGVzLCksCistICAgICAgICAgICAgICAgIGxp c3QocmFuZ2UoaW50ZXJpb3Jfbm9kZXMpKSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAg IG5vZGVzX21vZGVzPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAibm9kZXNfbW9kZXMi LAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UOCwKKy0gICAgICAgICAgICAgICAg KGludGVyaW9yX25vZGVzLCksCistICAgICAgICAgICAgICAgIFswXSAqIGludGVyaW9yX25vZGVz LAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgbm9kZXNfdHJ1ZW5vZGVpZHM9WzBdICog aW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbm9kZXNfZmFsc2Vub2RlaWRzPVswXSAqIGlu dGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX3RydWVsZWFmcz1bMF0gKiBpbnRlcmlv cl9ub2RlcywKKy0gICAgICAgICAgICBub2Rlc19mYWxzZWxlYWZzPVswXSAqIGludGVyaW9yX25v ZGVzLAorLSAgICAgICAgICAgIG1lbWJlcnNoaXBfdmFsdWVzPW1ha2VfdGVuc29yKAorLSAgICAg ICAgICAgICAgICAibWVtYmVyc2hpcF92YWx1ZXMiLAorLSAgICAgICAgICAgICAgICBkdHlwZSwK Ky0gICAgICAgICAgICAgICAgKDcsKSwKKy0gICAgICAgICAgICAgICAgWzAuMCwgMC4xLCAwLjIs IG5wLm5hbiwgMC40LCAwLjUsIDEuMF0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBs ZWFmX3RhcmdldGlkcz1bMF0gKiBsZWF2ZXMsCistICAgICAgICAgICAgbGVhZl93ZWlnaHRzPW1h a2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBkdHlwZSwgKGxlYXZlcywpLCBbMV0gKiBsZWF2ZXMp LAorLSAgICAgICAgICAgIHRyZWVfcm9vdHM9WzBdLAorLSAgICAgICAgKQorLQorLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBkdHlwZSwgKCJC YXRjaCBTaXplIiwgIkZlYXR1cmVzIikpXSwKKy0gICAgICAgICAgICBbdHJlZV0sCistICAgICAg ICAgICAgW10sCistICAgICAgICApCistCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo CistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBkdHlwZSwgKCJCYXRjaCBTaXplIiwgNSkpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCA1 KSwKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCistICAg ICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAor LSAgICAgICAgWworLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWzBdICogNiwKKy0g ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIFRlbnNvclByb3RvLkRP VUJMRSwgKDksKSwgWzFdICogOSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJub2Rl c19zcGxpdHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCksIFsxXSAqIDUpLAorLSAgICAgICAg ICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbMF0gKiA1LAorLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcigibGVhZl93ZWlnaHRzIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg5LCksIFsxXSAqIDkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigibm9kZXNfc3Bs aXRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoNSwpLCBbMV0gKiA1KSwKKy0gICAgICAgICAgICAp LAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWzBdICogNSwKKy0gICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDE4 LCksIFsxXSAqIDE4KSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm5vZGVzX3NwbGl0 cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDUsKSwgWzFdICogNSksCistICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFswXSAqIDUsCistICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg5LCks IFsxXSAqIDkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigibm9kZXNfc3BsaXRzIiwg VGVuc29yUHJvdG8uRkxPQVQsICg1LCksIFsxXSAqIDUpLAorLSAgICAgICAgICAgICksCistICAg ICAgICBdCistICAgICkKKy0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhf TUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCistICAgIGRlZiB0ZXN0 X3RyZWVfZW5zZW1ibGVfZmFpbHNfaWZfaW52YWxpZF9hdHRyaWJ1dGVzKAorLSAgICAgICAgc2Vs ZiwKKy0gICAgICAgIG5vZGVzX3RydWVub2RlaWRzLAorLSAgICAgICAgbGVhZl93ZWlnaHRzLAor LSAgICAgICAgbm9kZXNfc3BsaXRzLAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBpbnRlcmlv cl9ub2RlcyA9IDUKKy0gICAgICAgIGxlYXZlcyA9IDkKKy0gICAgICAgIHRyZWUgPSBtYWtlX25v ZGUoCistICAgICAgICAgICAgIlRyZWVFbnNlbWJsZSIsCistICAgICAgICAgICAgWyJ4Il0sCist ICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAor LSAgICAgICAgICAgIG5fdGFyZ2V0cz01LAorLSAgICAgICAgICAgIG5vZGVzX2ZlYXR1cmVpZHM9 WzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbm9kZXNfc3BsaXRzPW5vZGVzX3Nw bGl0cywKKy0gICAgICAgICAgICBub2Rlc19tb2Rlcz1tYWtlX3RlbnNvcigKKy0gICAgICAgICAg ICAgICAgIm5vZGVzX21vZGVzIiwKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDgs CistICAgICAgICAgICAgICAgIChpbnRlcmlvcl9ub2RlcywpLAorLSAgICAgICAgICAgICAgICBb MF0gKiBpbnRlcmlvcl9ub2RlcywKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgIG5vZGVz X3RydWVub2RlaWRzPW5vZGVzX3RydWVub2RlaWRzLAorLSAgICAgICAgICAgIG5vZGVzX2ZhbHNl bm9kZWlkcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKKy0gICAgICAgICAgICBub2Rlc190cnVlbGVh ZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbm9kZXNfZmFsc2VsZWFmcz1b MF0gKiBpbnRlcmlvcl9ub2RlcywKKy0gICAgICAgICAgICBsZWFmX3RhcmdldGlkcz1bMF0gKiBs ZWF2ZXMsCistICAgICAgICAgICAgbGVhZl93ZWlnaHRzPWxlYWZfd2VpZ2h0cywKKy0gICAgICAg ICAgICB0cmVlX3Jvb3RzPVswXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRE9VQkxFLCAo IkJhdGNoIFNpemUiLCAiRmVhdHVyZXMiKSldLAorLSAgICAgICAgICAgIFt0cmVlXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAg ICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAorLSAgICAgICAg ICAgIHNlbGYuX2luZmVycmVkLAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01B SU4sIDUpLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorICAgICBAdW5pdHRlc3Quc2tpcFVubGVz cyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3Jz IikKKyAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9jbGFzc2lmaWVyKHNlbGYpIC0+IE5vbmU6 CisgICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAorQEAgLTEwODc4LDQwICs4MzkxLDYgQEAgY2xh c3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAg ICAgICAgXSwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAg ICAgICAgWworLSAgICAgICAgICAgIChbMSwgMiwgM10sIFsiMSIsICIyIiwgIjMiXSksCistICAg ICAgICAgICAgKE5vbmUsIE5vbmUpLAorLSAgICAgICAgXQorLSAgICApCistICAgIEB1bml0dGVz dC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5t bCBvcGVyYXRvcnMiKQorLSAgICBkZWYgdGVzdF9vbmVfaG90X2VuY29kZXJfZmFpbHNfaWZfaW52 YWxpZF9hdHRyaWJ1dGVzKAorLSAgICAgICAgc2VsZiwgY2F0c19pbnQ2NHMsIGNhdHNfc3RyaW5n cworLSAgICApIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgWygiaW5wdXQiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsICJOIiwgMykpXSwK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAg ICAgICAgICAgICJPbmVIb3RFbmNvZGVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQi XSwKKy0gICAgICAgICAgICAgICAgICAgIFsib3V0cHV0Il0sCistICAgICAgICAgICAgICAgICAg ICBjYXRzX2ludDY0cz1jYXRzX2ludDY0cywKKy0gICAgICAgICAgICAgICAgICAgIGNhdHNfc3Ry aW5ncz1jYXRzX3N0cmluZ3MsCistICAgICAgICAgICAgICAgICAgICBkb21haW49ImFpLm9ubngu bWwiLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb XSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAg IG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNlbGYu X2luZmVycmVkLAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDEpLAor LSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAg ICAgICBdLAorLSAgICAgICAgKQorLQorICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01M LCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKKyAgICAg ZGVmIHRlc3RfemlwX21hcChzZWxmKSAtPiBOb25lOgorICAgICAgICAgcGFyYW1zID0gKAorQEAg LTExMDY2LDI4ICs4NTQ1LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUlu ZmVyZW5jZUhlbHBlcik6CisgICAgICAgICAgICAgb25ueC5jaGVja2VyLmNoZWNrX21vZGVsKG1v ZGVsLCBmdWxsX2NoZWNrPVRydWUpCisgICAgICAgICAgICAgb25ueC5zaGFwZV9pbmZlcmVuY2Uu aW5mZXJfc2hhcGVzKG1vZGVsKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiQ29uc3RhbnRPZlNoYXBlIikpCistICAgIGRlZiB0ZXN0X2lzc3VlX2NvbnN0 YW50b2ZzaGFwZV82MTM1KHNlbGYsIF8sIHZlcnNpb24pOgorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoInN0ZC5jb25zdGFudCIsIFRlbnNvclByb3Rv LklOVDY0LCAoMSwpKSwgIm91dHB1dCJdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50T2ZTaGFwZSIsCist ICAgICAgICAgICAgICAgICAgICBpbnB1dHM9WyJzdGQuY29uc3RhbnQiXSwKKy0gICAgICAgICAg ICAgICAgICAgIG91dHB1dHM9WyJvdXRwdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIG5hbWU9 ImludmFsaWRfbm9kZSIsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic3Rk LmNvbnN0YW50IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCksICgtMTAsKSldLAorLSAgICAgICAg KQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCistICAgICAgICAgICAgb25ueC5zaGFwZV9p bmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCistICAgICAgICAgICAgc2VsZi5faW5mZXJyZWQsCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorICAgICBk ZWYgdGVzdF9wcm90b2J1Zl9kZWZhdWx0KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBtb2RlbF90 ZXh0ID0gIiIiCisgICAgICAgICAgICAgaXJfdmVyc2lvbjogOAorZGlmZiAtLWdpdCBhL29ubngv dGVzdC90ZXN0X2V4dGVybmFsX2RhdGEucHkgYi9vbm54L3Rlc3QvdGVzdF9leHRlcm5hbF9kYXRh LnB5CitpbmRleCBjMDg0NWY5NmEuLmViMDdmMDllOCAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC90 ZXN0X2V4dGVybmFsX2RhdGEucHkKKysrKyBiL29ubngvdGVzdC90ZXN0X2V4dGVybmFsX2RhdGEu cHkKK0BAIC0xNCw3ICsxNCw2IEBAIGltcG9ydCB3YXJuaW5ncworIGZyb20gdHlwaW5nIGltcG9y dCBUWVBFX0NIRUNLSU5HLCBBbnkKKyAKKyBpbXBvcnQgbnVtcHkgYXMgbnAKKy1pbXBvcnQgcGFy YW1ldGVyaXplZAorIAorIGltcG9ydCBvbm54CisgZnJvbSBvbm54IGltcG9ydCAoCitAQCAtMTIz LDYxNiArMTIyLDYgQEAgY2xhc3MgVGVzdExvYWRFeHRlcm5hbERhdGFCYXNlKHVuaXR0ZXN0LlRl c3RDYXNlKToKKyAgICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFt ZSkKKyAKKyAKKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAorLSAgICBbCist ICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVmIn0sCistICAgICAgICB7 InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAorLSAgICBdCistKQorLWNsYXNz IFRlc3RMb2FkRXh0ZXJuYWxEYXRhKFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFzZSk6CistICAgIGRl ZiB0ZXN0X2xvYWRfZXh0ZXJuYWxfZGF0YShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWwg PSBvbm54LmxvYWRfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9u X2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRp YWxpemVyWzBdCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShp bml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAg YXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5z b3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3RfbG9hZF9leHRlcm5h bF9kYXRhX2Zvcl9tb2RlbChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWwgPSBvbm54Lmxv YWRfbW9kZWwoCistICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxp emF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCistICAg ICAgICBsb2FkX2V4dGVybmFsX2RhdGFfZm9yX21vZGVsKG1vZGVsLCBzZWxmLnRlbXBfZGlyKQor LSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0K Ky0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVy X3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAgICBhdHRyaWJ1dGVf dGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgbnAu dGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYu YXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX2V4dGVybmFsX2RhdGEoc2Vs ZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxf ZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICB0ZW1wX2Rp ciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAic2F2ZV9jb3B5IikKKy0gICAgICAgIG9z Lm1rZGlyKHRlbXBfZGlyKQorLSAgICAgICAgbmV3X21vZGVsX2ZpbGVuYW1lID0gb3MucGF0aC5q b2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCistICAgICAgICBvbm54LnNhdmVfbW9kZWwobW9k ZWwsIG5ld19tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0g ICAgICAgIG5ld19tb2RlbCA9IG9ubngubG9hZF9tb2RlbChuZXdfbW9kZWxfZmlsZW5hbWUsIHNl bGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBu ZXdfbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0 X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJf dmFsdWUpCistCistICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbmV3X21vZGVsLmdyYXBoLm5v ZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3Nl KHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0KKy0K Ky1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAorLSAgICBbCistICAgICAgICB7 InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVmIn0sCistICAgICAgICB7InNlcmlhbGl6 YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAorLSAgICBdCistKQorLWNsYXNzIFRlc3RMb2Fk RXh0ZXJuYWxEYXRhU2luZ2xlRmlsZShUZXN0TG9hZEV4dGVybmFsRGF0YUJhc2UpOgorLSAgICBk ZWYgY3JlYXRlX2V4dGVybmFsX2RhdGFfdGVuc29ycygKKy0gICAgICAgIHNlbGYsIHRlbnNvcnNf ZGF0YTogbGlzdFt0dXBsZVtsaXN0W0FueV0sIEFueV1dCistICAgICkgLT4gbGlzdFtUZW5zb3JQ cm90b106CistICAgICAgICB0ZW5zb3JfZmlsZW5hbWUgPSAidGVuc29ycy5iaW4iCistICAgICAg ICB0ZW5zb3JzID0gW10KKy0KKy0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi50 ZW1wX2RpciwgdGVuc29yX2ZpbGVuYW1lKSwgImFiIikgYXMgZGF0YV9maWxlOgorLSAgICAgICAg ICAgIGZvciB2YWx1ZSwgdGVuc29yX25hbWUgaW4gdGVuc29yc19kYXRhOgorLSAgICAgICAgICAg ICAgICB0ZW5zb3IgPSBmcm9tX2FycmF5KG5wLmFycmF5KHZhbHVlKSkKKy0gICAgICAgICAgICAg ICAgb2Zmc2V0ID0gZGF0YV9maWxlLnRlbGwoKQorLSAgICAgICAgICAgICAgICBpZiBvZmZzZXQg JSA0MDk2ICE9IDA6CistICAgICAgICAgICAgICAgICAgICBkYXRhX2ZpbGUud3JpdGUoYiJcMCIg KiAoNDA5NiAtIG9mZnNldCAlIDQwOTYpKQorLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0g b2Zmc2V0ICsgNDA5NiAtIG9mZnNldCAlIDQwOTYKKy0KKy0gICAgICAgICAgICAgICAgZGF0YV9m aWxlLndyaXRlKHRlbnNvci5yYXdfZGF0YSkKKy0gICAgICAgICAgICAgICAgc2V0X2V4dGVybmFs X2RhdGEoCistICAgICAgICAgICAgICAgICAgICB0ZW5zb3IsCistICAgICAgICAgICAgICAgICAg ICBsb2NhdGlvbj10ZW5zb3JfZmlsZW5hbWUsCistICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9 b2Zmc2V0LAorLSAgICAgICAgICAgICAgICAgICAgbGVuZ3RoPWRhdGFfZmlsZS50ZWxsKCkgLSBv ZmZzZXQsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICAgICAgdGVuc29yLm5hbWUg PSB0ZW5zb3JfbmFtZQorLSAgICAgICAgICAgICAgICB0ZW5zb3IuQ2xlYXJGaWVsZCgicmF3X2Rh dGEiKQorLSAgICAgICAgICAgICAgICB0ZW5zb3IuZGF0YV9sb2NhdGlvbiA9IG9ubnguVGVuc29y UHJvdG8uRVhURVJOQUwKKy0gICAgICAgICAgICAgICAgdGVuc29ycy5hcHBlbmQodGVuc29yKQor LQorLSAgICAgICAgcmV0dXJuIHRlbnNvcnMKKy0KKy0gICAgZGVmIHRlc3RfbG9hZF9leHRlcm5h bF9zaW5nbGVfZmlsZV9kYXRhKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbCA9IG9ubngu bG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 KQorLQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6 ZXJbMF0KKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRp YWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAgICBhdHRy aWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciks IHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX2V4dGVybmFsX3Np bmdsZV9maWxlX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2Fk X21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCist CistICAgICAgICB0ZW1wX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAic2F2ZV9j b3B5IikKKy0gICAgICAgIG9zLm1rZGlyKHRlbXBfZGlyKQorLSAgICAgICAgbmV3X21vZGVsX2Zp bGVuYW1lID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCistICAgICAgICBv bm54LnNhdmVfbW9kZWwobW9kZWwsIG5ld19tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0 aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIG5ld19tb2RlbCA9IG9ubngubG9hZF9tb2RlbChuZXdf bW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0 aWFsaXplcl90ZW5zb3IgPSBuZXdfbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAg IG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNvciks IHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAgICBhdHRyaWJ1dGVfdGVuc29yID0g bmV3X21vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAgIG5wLnRlc3Rp bmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJp YnV0ZV92YWx1ZSkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQo CistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0gICAgICAgICAgICAoVHJ1ZSwgRmFsc2Up LAorLSAgICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0X3NhdmVfZXh0ZXJuYWxfaW52YWxp ZF9zaW5nbGVfZmlsZV9kYXRhX2FuZF9jaGVjaygKKy0gICAgICAgIHNlbGYsIHVzZV9hYnNvbHV0 ZV9wYXRoOiBib29sCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2Fk X21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCist CistICAgICAgICBtb2RlbF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgInNhdmVf Y29weSIpCistICAgICAgICBvcy5ta2Rpcihtb2RlbF9kaXIpCistCistICAgICAgICB0cmF2ZXJz YWxfZXh0ZXJuYWxfZGF0YV9kaXIgPSBvcy5wYXRoLmpvaW4oCistICAgICAgICAgICAgc2VsZi50 ZW1wX2RpciwgImludmFsaWRfZXh0ZXJuYWxfZGF0YSIKKy0gICAgICAgICkKKy0gICAgICAgIG9z Lm1rZGlyKHRyYXZlcnNhbF9leHRlcm5hbF9kYXRhX2RpcikKKy0KKy0gICAgICAgIGlmIHVzZV9h YnNvbHV0ZV9wYXRoOgorLSAgICAgICAgICAgIHRyYXZlcnNhbF9leHRlcm5hbF9kYXRhX2xvY2F0 aW9uID0gb3MucGF0aC5qb2luKAorLSAgICAgICAgICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxf ZGF0YV9kaXIsICJ0ZW5zb3JzLmJpbiIKKy0gICAgICAgICAgICApCistICAgICAgICBlbHNlOgor LSAgICAgICAgICAgIHRyYXZlcnNhbF9leHRlcm5hbF9kYXRhX2xvY2F0aW9uID0gIi4uL2ludmFs aWRfZXh0ZXJuYWxfZGF0YS90ZW5zb3JzLmJpbiIKKy0KKy0gICAgICAgIGV4dGVybmFsX2RhdGFf ZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJleHRlcm5hbF9kYXRhIikKKy0gICAg ICAgIG9zLm1rZGlyKGV4dGVybmFsX2RhdGFfZGlyKQorLSAgICAgICAgbmV3X21vZGVsX2ZpbGVw YXRoID0gb3MucGF0aC5qb2luKG1vZGVsX2RpciwgIm1vZGVsLm9ubngiKQorLQorLSAgICAgICAg ZGVmIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9ub19jaGVjayhtb2RlbDogTW9kZWxQ cm90bywgbG9jYXRpb246IHN0cik6CistICAgICAgICAgICAgZm9yIHRlbnNvciBpbiBtb2RlbC5n cmFwaC5pbml0aWFsaXplcjoKKy0gICAgICAgICAgICAgICAgaWYgdGVuc29yLkhhc0ZpZWxkKCJy YXdfZGF0YSIpOgorLSAgICAgICAgICAgICAgICAgICAgc2V0X2V4dGVybmFsX2RhdGEodGVuc29y LCBsb2NhdGlvbikKKy0KKy0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9u b19jaGVjaygKKy0gICAgICAgICAgICBtb2RlbCwKKy0gICAgICAgICAgICBsb2NhdGlvbj10cmF2 ZXJzYWxfZXh0ZXJuYWxfZGF0YV9sb2NhdGlvbiwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIHdp dGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcik6CistICAg ICAgICAgICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBuZXdfbW9kZWxfZmlsZXBhdGgsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistCistQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXpl ZF9jbGFzcygKKy0gICAgWworLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJwcm90 b2J1ZiJ9LAorLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwK Ky0gICAgXQorLSkKKy1jbGFzcyBUZXN0U2F2ZUFsbFRlbnNvcnNBc0V4dGVybmFsRGF0YSh1bml0 dGVzdC5UZXN0Q2FzZSk6CistICAgIHNlcmlhbGl6YXRpb25fZm9ybWF0OiBzdHIgPSAicHJvdG9i dWYiCistCistICAgIGRlZiBzZXRVcChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5fdGVt cF9kaXJfb2JqID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKKy0gICAgICAgIHNlbGYu dGVtcF9kaXI6IHN0ciA9IHNlbGYuX3RlbXBfZGlyX29iai5uYW1lCistICAgICAgICBzZWxmLmlu aXRpYWxpemVyX3ZhbHVlID0gbnAuYXJhbmdlKDYpLnJlc2hhcGUoMywgMikuYXN0eXBlKG5wLmZs b2F0MzIpICsgNTEyCistICAgICAgICBzZWxmLmF0dHJpYnV0ZV92YWx1ZSA9IG5wLmFyYW5nZSg2 KS5yZXNoYXBlKDIsIDMpLmFzdHlwZShucC5mbG9hdDMyKSArIDI1NgorLSAgICAgICAgc2VsZi5t b2RlbCA9IHNlbGYuY3JlYXRlX3Rlc3RfbW9kZWxfcHJvdG8oKQorLQorLSAgICBkZWYgZ2V0X3Rl bXBfbW9kZWxfZmlsZW5hbWUoc2VsZik6CistICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNl bGYudGVtcF9kaXIsIHN0cih1dWlkLnV1aWQ0KCkpICsgIi5vbm54IikKKy0KKy0gICAgZGVmIGNy ZWF0ZV9kYXRhX3RlbnNvcnMoCistICAgICAgICBzZWxmLCB0ZW5zb3JzX2RhdGE6IGxpc3RbdHVw bGVbbGlzdFtBbnldLCBBbnldXQorLSAgICApIC0+IGxpc3RbVGVuc29yUHJvdG9dOgorLSAgICAg ICAgdGVuc29ycyA9IFtdCistICAgICAgICBmb3IgdmFsdWUsIHRlbnNvcl9uYW1lIGluIHRlbnNv cnNfZGF0YToKKy0gICAgICAgICAgICB0ZW5zb3IgPSBmcm9tX2FycmF5KG5wLmFycmF5KHZhbHVl KSkKKy0gICAgICAgICAgICB0ZW5zb3IubmFtZSA9IHRlbnNvcl9uYW1lCistICAgICAgICAgICAg dGVuc29ycy5hcHBlbmQodGVuc29yKQorLQorLSAgICAgICAgcmV0dXJuIHRlbnNvcnMKKy0KKy0g ICAgZGVmIGNyZWF0ZV90ZXN0X21vZGVsX3Byb3RvKHNlbGYpIC0+IE1vZGVsUHJvdG86CistICAg ICAgICB0ZW5zb3JzID0gc2VsZi5jcmVhdGVfZGF0YV90ZW5zb3JzKAorLSAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgKHNlbGYuYXR0cmlidXRlX3ZhbHVlLCAiYXR0cmlidXRlX3ZhbHVl IiksCistICAgICAgICAgICAgICAgIChzZWxmLmluaXRpYWxpemVyX3ZhbHVlLCAiaW5wdXRfdmFs dWUiKSwKKy0gICAgICAgICAgICBdCistICAgICAgICApCistCistICAgICAgICBjb25zdGFudF9u b2RlID0gb25ueC5oZWxwZXIubWFrZV9ub2RlKAorLSAgICAgICAgICAgICJDb25zdGFudCIsIGlu cHV0cz1bXSwgb3V0cHV0cz1bInZhbHVlcyJdLCB2YWx1ZT10ZW5zb3JzWzBdCistICAgICAgICAp CistCistICAgICAgICBpbnB1dHMgPSBbCistICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29y X3ZhbHVlX2luZm8oCistICAgICAgICAgICAgICAgICJpbnB1dF92YWx1ZSIsIG9ubnguVGVuc29y UHJvdG8uRkxPQVQsIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUuc2hhcGUKKy0gICAgICAgICAgICAp CistICAgICAgICBdCistCistICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtlX2dyYXBoKAorLSAg ICAgICAgICAgIFtjb25zdGFudF9ub2RlXSwKKy0gICAgICAgICAgICAidGVzdF9ncmFwaCIsCist ICAgICAgICAgICAgaW5wdXRzPWlucHV0cywKKy0gICAgICAgICAgICBvdXRwdXRzPVtdLAorLSAg ICAgICAgICAgIGluaXRpYWxpemVyPVt0ZW5zb3JzWzFdXSwKKy0gICAgICAgICkKKy0gICAgICAg IHJldHVybiBoZWxwZXIubWFrZV9tb2RlbChncmFwaCkKKy0KKy0gICAgQHVuaXR0ZXN0LnNraXBJ ZigKKy0gICAgICAgIHNlcmlhbGl6YXRpb25fZm9ybWF0ICE9ICJwcm90b2J1ZiIsCistICAgICAg ICAiY2hlY2tfbW9kZWwgc3VwcG9ydHMgcHJvdG9idWYgb25seSB3aGVuIHByb3ZpZGVkIGFzIGEg cGF0aCIsCistICAgICkKKy0gICAgZGVmIHRlc3RfY2hlY2tfbW9kZWwoc2VsZikgLT4gTm9uZToK Ky0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwoc2VsZi5tb2RlbCkKKy0KKy0gICAgZGVmIHRl c3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX3dpdGhfc2l6ZV90aHJlc2hvbGQoc2Vs ZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9k ZWxfZmlsZW5hbWUoKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRh KHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTEwMjQpCistICAgICAgICBvbm54LnNhdmVfbW9k ZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 KQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBz ZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0g bW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5p dGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistCistICAgIGRlZiB0 ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV93aXRob3V0X3NpemVfdGhyZXNob2xk KHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1w X21vZGVsX2ZpbGVuYW1lKCkKKy0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0 YShzZWxmLm1vZGVsLCBzaXplX3RocmVzaG9sZD0wKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVs KHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkK Ky0KKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2Vs Zi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1v ZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5pdGlh bGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistICAgICAgICBucC50ZXN0 aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmlu aXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVy bmFsX2RhdGFfZnJvbV9vbmVfZmlsZV93aXRoX2xvY2F0aW9uKHNlbGYpIC0+IE5vbmU6CistICAg ICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0g ICAgICAgIGV4dGVybmFsX2RhdGFfZmlsZSA9IHN0cih1dWlkLnV1aWQ0KCkpCistCistICAgICAg ICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCistICAgICAgICAgICAgc2VsZi5tb2Rl bCwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGFsbF90ZW5z b3JzX3RvX29uZV9maWxlPVRydWUsCistICAgICAgICAgICAgbG9jYXRpb249ZXh0ZXJuYWxfZGF0 YV9maWxlLAorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWws IG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rp ciwgZXh0ZXJuYWxfZGF0YV9maWxlKSkpCistCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9t b2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAg ICAgICAjIHRlc3QgY29udmVydCBtb2RlbCBmcm9tIGV4dGVybmFsIGRhdGEKKy0gICAgICAgIGNv bnZlcnRfbW9kZWxfZnJvbV9leHRlcm5hbF9kYXRhKG1vZGVsKQorLSAgICAgICAgbW9kZWxfZmls ZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAgICBvbm54LnNh dmVfbW9kZWwobW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1h dCkKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2Vs Zi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1v ZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxlbihp bml0aWFsaXplcl90ZW5zb3IuZXh0ZXJuYWxfZGF0YSkpCistICAgICAgICBzZWxmLmFzc2VydEVx dWFsKGluaXRpYWxpemVyX3RlbnNvci5kYXRhX2xvY2F0aW9uLCBUZW5zb3JQcm90by5ERUZBVUxU KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6 ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0 ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBz ZWxmLmFzc2VydEZhbHNlKGxlbihhdHRyaWJ1dGVfdGVuc29yLmV4dGVybmFsX2RhdGEpKQorLSAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyaWJ1dGVfdGVuc29yLmRhdGFfbG9jYXRpb24sIFRl bnNvclByb3RvLkRFRkFVTFQpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0 b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAg IGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9mcm9tX29uZV9maWxlX3dp dGhvdXRfbG9jYXRpb25fdXNlc19tb2RlbF9uYW1lKAorLSAgICAgICAgc2VsZiwKKy0gICAgKSAt PiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9m aWxlbmFtZSgpCistCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCist ICAgICAgICAgICAgc2VsZi5tb2RlbCwgc2l6ZV90aHJlc2hvbGQ9MCwgYWxsX3RlbnNvcnNfdG9f b25lX2ZpbGU9VHJ1ZQorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYu bW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0g ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQor LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxm LnRlbXBfZGlyLCBtb2RlbF9maWxlX3BhdGgpKSkKKy0KKy0gICAgZGVmIHRlc3RfY29udmVydF9t b2RlbF90b19leHRlcm5hbF9kYXRhX29uZV9maWxlX3Blcl90ZW5zb3Jfd2l0aG91dF9hdHRyaWJ1 dGUoCistICAgICAgICBzZWxmLAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBtb2RlbF9maWxl X3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0KKy0gICAgICAgIGNvbnZl cnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAg ICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9f b25lX2ZpbGU9RmFsc2UsCistICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9RmFsc2UsCist ICAgICAgICApCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmls ZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0aCkpCistICAgICAgICBzZWxmLmFz c2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJpbnB1 dF92YWx1ZSIpKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUob3Mu cGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJhdHRyaWJ1dGVfdmFsdWUiKSkpCistCistICAgIGRl ZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9vbmVfZmlsZV9wZXJfdGVuc29y X3dpdGhfYXR0cmlidXRlKAorLSAgICAgICAgc2VsZiwKKy0gICAgKSAtPiBOb25lOgorLSAgICAg ICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistCist ICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCistICAgICAgICAgICAgc2Vs Zi5tb2RlbCwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGFs bF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmli dXRlPVRydWUsCistICAgICAgICApCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5tb2Rl bCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAg ICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG1vZGVsX2ZpbGVfcGF0aCkpCistICAg ICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVt cF9kaXIsICJpbnB1dF92YWx1ZSIpKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRo LmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgImF0dHJpYnV0ZV92YWx1ZSIpKSkK Ky0KKy0gICAgZGVmIHRlc3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhX2RvZXNfbm90 X2NvbnZlcnRfYXR0cmlidXRlX3ZhbHVlcygKKy0gICAgICAgIHNlbGYsCistICAgICkgLT4gTm9u ZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5h bWUoKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAg ICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAg ICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKKy0gICAgICAgICAgICBhbGxfdGVuc29y c190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2Rl bChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQp CistCistICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2lu KHNlbGYudGVtcF9kaXIsICJpbnB1dF92YWx1ZSIpKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RmFs c2Uob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJhdHRyaWJ1dGVf dmFsdWUiKSkpCistCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxl X3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90 ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRU cnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAg ICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBd LnQKKy0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgi ZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVy bmFsX2RhdGFfY29udmVydHNfYXR0cmlidXRlX3ZhbHVlcyhzZWxmKSAtPiBOb25lOgorLSAgICAg ICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistCist ICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCistICAgICAgICAgICAgc2Vs Zi5tb2RlbCwgc2l6ZV90aHJlc2hvbGQ9MCwgY29udmVydF9hdHRyaWJ1dGU9VHJ1ZQorLSAgICAg ICAgKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0 aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIG1vZGVsID0gb25ueC5s b2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0K Ky0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBd CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXpl cl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRU cnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAg ICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBd LnQKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0 ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistCistICAgIGRl ZiB0ZXN0X3NhdmVfbW9kZWxfZG9lc19ub3RfY29udmVydF90b19leHRlcm5hbF9kYXRhX2FuZF9z YXZlc190aGVfbW9kZWwoCistICAgICAgICBzZWxmLAorLSAgICApIC0+IE5vbmU6CistICAgICAg ICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0gICAg ICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAg ICAgIG1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1GYWxzZSwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3Bh dGgpKQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRo LCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29y ID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo aW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistCistICAgICAg ICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAor LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRh X2xvY2F0aW9uIikpCistCistICAgIGRlZiB0ZXN0X3NhdmVfbW9kZWxfZG9lc19jb252ZXJ0X2Fu ZF9zYXZlc190aGVfbW9kZWwoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0 aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLSAgICAgICAgb25ueC5zYXZlX21v ZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgbW9kZWxfZmlsZV9w YXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCistICAgICAgICAg ICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgYWxsX3RlbnNvcnNf dG9fb25lX2ZpbGU9VHJ1ZSwKKy0gICAgICAgICAgICBsb2NhdGlvbj1Ob25lLAorLSAgICAgICAg ICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9RmFs c2UsCistICAgICAgICApCistCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2Rl bF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBpbml0 aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2Vs Zi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIp KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6 ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0 ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBz ZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24i KSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0 ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9t b2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWxfZGF0YShzZWxmKSAtPiBOb25lOgorLSAgICAg ICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAg ICAgICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAgICAgc2VsZi5tb2RlbCwKKy0gICAgICAg ICAgICBtb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zv cm1hdCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKKy0gICAgICAg ICAgICBsb2NhdGlvbj1Ob25lLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAg ICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9RmFsc2UsCistICAgICAgICApCistICAgICAgICAj IFNhdmUgd2l0aG91dCBsb2FkX2V4dGVybmFsX2RhdGEKKy0gICAgICAgIG1vZGVsID0gb25ueC5s b2FkX21vZGVsKAorLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0 aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCistICAgICAg ICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAgICAgbW9kZWwsCistICAgICAgICAgICAgbW9k ZWxfZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCist ICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgbG9j YXRpb249Tm9uZSwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAg IGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAorLSAgICAgICAgKQorLSAgICAgICAgIyBMb2FkIHRo ZSBzYXZlZCBtb2RlbCBhZ2FpbjsgT25seSB3b3JrcyBpZiB0aGUgc2F2ZWQgcGF0aCBpcyB1bmRl ciB0aGUgc2FtZSBkaXJlY3RvcnkKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1v ZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIGlu aXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBz ZWxmLmFzc2VydFRydWUoaW5pdGlhbGl6ZXJfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9u IikpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFs aXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAgYXR0cmli dXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAg IHNlbGYuYXNzZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlv biIpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmli dXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBkZWYgdGVzdF9zYXZl X21vZGVsX3dpdGhfZXhpc3RpbmdfcmF3X2RhdGFfc2hvdWxkX292ZXJyaWRlKHNlbGYpIC0+IE5v bmU6CistICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVu YW1lKCkKKy0gICAgICAgIG9yaWdpbmFsX3Jhd19kYXRhID0gc2VsZi5tb2RlbC5ncmFwaC5pbml0 aWFsaXplclswXS5yYXdfZGF0YQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAgICAgICAg ICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLAorLSAgICAgICAg ICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCistICAgICAgICAgICAgc2F2ZV9hc19leHRl cm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3Bh dGgpKQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoCistICAgICAgICAgICAg bW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LCBsb2FkX2V4dGVybmFs X2RhdGE9RmFsc2UKKy0gICAgICAgICkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1v ZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IucmF3 X2RhdGEgPSBiImR1bW1weV9yYXdfZGF0YSIKKy0gICAgICAgICMgSWYgcmF3X2RhdGEgYW5kIGV4 dGVybmFsIHRlbnNvciBleGlzdCBhdCB0aGUgc2FtZSB0aW1lLCBvdmVycmlkZSBleGlzdGluZyBy YXdfZGF0YQorLSAgICAgICAgbG9hZF9leHRlcm5hbF9kYXRhX2Zvcl90ZW5zb3IoaW5pdGlhbGl6 ZXJfdGVuc29yLCBzZWxmLnRlbXBfZGlyKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbml0 aWFsaXplcl90ZW5zb3IucmF3X2RhdGEsIG9yaWdpbmFsX3Jhd19kYXRhKQorLQorLQorLUBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCistICAgIFsKKy0gICAgICAgIHsic2VyaWFs aXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwKKy0gICAgICAgIHsic2VyaWFsaXphdGlvbl9m b3JtYXQiOiAidGV4dHByb3RvIn0sCistICAgIF0KKy0pCistY2xhc3MgVGVzdEV4dGVybmFsRGF0 YVRvQXJyYXkodW5pdHRlc3QuVGVzdENhc2UpOgorLSAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdDog c3RyID0gInByb3RvYnVmIgorLQorLSAgICBkZWYgc2V0VXAoc2VsZikgLT4gTm9uZToKKy0gICAg ICAgIHNlbGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCist ICAgICAgICBzZWxmLnRlbXBfZGlyOiBzdHIgPSBzZWxmLl90ZW1wX2Rpcl9vYmoubmFtZQorLSAg ICAgICAgc2VsZi5fbW9kZWxfZmlsZV9wYXRoOiBzdHIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1w X2RpciwgIm1vZGVsLm9ubngiKQorLSAgICAgICAgc2VsZi5sYXJnZV9kYXRhID0gbnAucmFuZG9t LnJhbmQoMTAsIDYwLCAxMDApLmFzdHlwZShucC5mbG9hdDMyKQorLSAgICAgICAgc2VsZi5zbWFs bF9kYXRhID0gKDIwMCwgMzAwKQorLSAgICAgICAgc2VsZi5tb2RlbCA9IHNlbGYuY3JlYXRlX3Rl c3RfbW9kZWwoKQorLQorLSAgICBAcHJvcGVydHkKKy0gICAgZGVmIG1vZGVsX2ZpbGVfcGF0aChz ZWxmKToKKy0gICAgICAgIHJldHVybiBzZWxmLl9tb2RlbF9maWxlX3BhdGgKKy0KKy0gICAgZGVm IHRlYXJEb3duKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBzZWxmLl90ZW1wX2Rpcl9vYmouY2xl YW51cCgpCistCistICAgIGRlZiBjcmVhdGVfdGVzdF9tb2RlbChzZWxmKSAtPiBNb2RlbFByb3Rv OgorLSAgICAgICAgWCA9IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29y UHJvdG8uRkxPQVQsIHNlbGYubGFyZ2VfZGF0YS5zaGFwZSkKKy0gICAgICAgIGlucHV0X2luaXQg PSBoZWxwZXIubWFrZV90ZW5zb3IoCistICAgICAgICAgICAgbmFtZT0iWCIsCistICAgICAgICAg ICAgZGF0YV90eXBlPVRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAgICAgIGRpbXM9c2VsZi5s YXJnZV9kYXRhLnNoYXBlLAorLSAgICAgICAgICAgIHZhbHM9b25ueC5udW1weV9oZWxwZXIudG9i eXRlc19saXR0bGVfZW5kaWFuKHNlbGYubGFyZ2VfZGF0YSksCistICAgICAgICAgICAgcmF3PVRy dWUsCistICAgICAgICApCistCistICAgICAgICBzaGFwZV9kYXRhID0gbnAuYXJyYXkoc2VsZi5z bWFsbF9kYXRhLCBucC5pbnQ2NCkKKy0gICAgICAgIHNoYXBlX2luaXQgPSBoZWxwZXIubWFrZV90 ZW5zb3IoCistICAgICAgICAgICAgbmFtZT0iU2hhcGUiLAorLSAgICAgICAgICAgIGRhdGFfdHlw ZT1UZW5zb3JQcm90by5JTlQ2NCwKKy0gICAgICAgICAgICBkaW1zPXNoYXBlX2RhdGEuc2hhcGUs CistICAgICAgICAgICAgdmFscz1vbm54Lm51bXB5X2hlbHBlci50b2J5dGVzX2xpdHRsZV9lbmRp YW4oc2hhcGVfZGF0YSksCistICAgICAgICAgICAgcmF3PVRydWUsCistICAgICAgICApCistICAg ICAgICBDID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIkMiLCBUZW5zb3JQcm90by5J TlQ2NCwgc2VsZi5zbWFsbF9kYXRhKQorLQorLSAgICAgICAgcmVzaGFwZSA9IG9ubnguaGVscGVy Lm1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAiUmVzaGFwZSIsCistICAgICAgICAgICAgaW5wdXRz PVsiWCIsICJTaGFwZSJdLAorLSAgICAgICAgICAgIG91dHB1dHM9WyJZIl0sCistICAgICAgICAp CistICAgICAgICBjYXN0ID0gb25ueC5oZWxwZXIubWFrZV9ub2RlKAorLSAgICAgICAgICAgICJD YXN0IiwgaW5wdXRzPVsiWSJdLCBvdXRwdXRzPVsiQyJdLCB0bz1UZW5zb3JQcm90by5JTlQ2NAor LSAgICAgICAgKQorLQorLSAgICAgICAgZ3JhcGhfZGVmID0gaGVscGVyLm1ha2VfZ3JhcGgoCist ICAgICAgICAgICAgW3Jlc2hhcGUsIGNhc3RdLAorLSAgICAgICAgICAgICJ0ZXN0LW1vZGVsIiwK Ky0gICAgICAgICAgICBbWF0sCistICAgICAgICAgICAgW0NdLAorLSAgICAgICAgICAgIGluaXRp YWxpemVyPVtpbnB1dF9pbml0LCBzaGFwZV9pbml0XSwKKy0gICAgICAgICkKKy0gICAgICAgIHJl dHVybiBoZWxwZXIubWFrZV9tb2RlbChncmFwaF9kZWYsIHByb2R1Y2VyX25hbWU9Im9ubngtZXhh bXBsZSIpCistCistICAgIEB1bml0dGVzdC5za2lwSWYoCistICAgICAgICBzZXJpYWxpemF0aW9u X2Zvcm1hdCAhPSAicHJvdG9idWYiLAorLSAgICAgICAgImNoZWNrX21vZGVsIHN1cHBvcnRzIHBy b3RvYnVmIG9ubHkgd2hlbiBwcm92aWRlZCBhcyBhIHBhdGgiLAorLSAgICApCistICAgIGRlZiB0 ZXN0X2NoZWNrX21vZGVsKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBjaGVja2VyLmNoZWNrX21v ZGVsKHNlbGYubW9kZWwpCistCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfaW5mZXJlbmNlX3dpdGhf ZXh0ZXJuYWxfZGF0YV9mYWlsKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBvbm54LnNhdmVfbW9k ZWwoCistICAgICAgICAgICAgc2VsZi5tb2RlbCwKKy0gICAgICAgICAgICBzZWxmLm1vZGVsX2Zp bGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAorLSAgICAg ICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAgIGFsbF90ZW5z b3JzX3RvX29uZV9maWxlPUZhbHNlLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCist ICAgICAgICApCistICAgICAgICBtb2RlbF93aXRob3V0X2V4dGVybmFsX2RhdGEgPSBvbm54Lmxv YWQoCistICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlv bl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAgICAgICAgKQorLSAgICAgICAg IyBTaGFwZSBpbmZlcmVuY2Ugb2YgUmVzaGFwZSB1c2VzIFBhcnNlRGF0YQorLSAgICAgICAgIyBQ YXJzZURhdGEgY2Fubm90IGhhbmRsZSBleHRlcm5hbCBkYXRhIGFuZCBzaG91bGQgdGhyb3cgdGhl IGVycm9yIGFzIGZvbGxvd3M6CistICAgICAgICAjIENhbm5vdCBwYXJzZSBkYXRhIGZyb20gZXh0 ZXJuYWwgdGVuc29ycy4gUGxlYXNlIGxvYWQgZXh0ZXJuYWwgZGF0YSBpbnRvIHJhdyBkYXRhIGZv ciB0ZW5zb3I6IFNoYXBlCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKy0gICAgICAgICAg ICBzaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCistICAgICAgICAgICAgc2hhcGVfaW5m ZXJlbmNlLmluZmVyX3NoYXBlcywKKy0gICAgICAgICAgICBtb2RlbF93aXRob3V0X2V4dGVybmFs X2RhdGEsCistICAgICAgICAgICAgc3RyaWN0X21vZGU9VHJ1ZSwKKy0gICAgICAgICkKKy0KKy0g ICAgZGVmIHRlc3RfdG9fYXJyYXlfd2l0aF9leHRlcm5hbF9kYXRhKHNlbGYpIC0+IE5vbmU6Cist ICAgICAgICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAgICAgc2VsZi5tb2RlbCwKKy0gICAg ICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6 YXRpb25fZm9ybWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAor LSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAorLSAgICAgICAgICAg IHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICApCistICAgICAgICAjIHJhd19kYXRhIG9mIGV4 dGVybmFsIHRlbnNvciBpcyBub3QgbG9hZGVkCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZCgK Ky0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zv cm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCistICAgICAgICAjIFNw ZWNpZnkgc2VsZi50ZW1wX2RpciB0byBsb2FkIGV4dGVybmFsIHRlbnNvcgorLSAgICAgICAgbG9h ZGVkX2xhcmdlX2RhdGEgPSB0b19hcnJheShtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXSwgc2Vs Zi50ZW1wX2RpcikKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKGxvYWRlZF9s YXJnZV9kYXRhLCBzZWxmLmxhcmdlX2RhdGEpCistCistICAgIGRlZiB0ZXN0X3NhdmVfbW9kZWxf d2l0aF9leHRlcm5hbF9kYXRhX211bHRpcGxlX3RpbWVzKHNlbGYpIC0+IE5vbmU6CistICAgICAg ICAjIFRlc3Qgb25ueC5zYXZlIHNob3VsZCByZXNwZWN0aXZlbHkgaGFuZGxlIHR5cGljYWwgdGVu c29yIGFuZCBleHRlcm5hbCB0ZW5zb3IgcHJvcGVybHkKKy0gICAgICAgICMgMXN0IHNhdmU6IHNh dmUgdHdvIHRlbnNvcnMgd2hpY2ggaGF2ZSByYXdfZGF0YQorLSAgICAgICAgIyBPbmx5IHdfbGFy Z2Ugd2lsbCBiZSBzdG9yZWQgYXMgZXh0ZXJuYWwgdGVuc29ycyBzaW5jZSBpdCdzIGxhcmdlciB0 aGFuIDEwMjQKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1v ZGVsLAorLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNl bGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCistICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9k YXRhPVRydWUsCistICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCist ICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0x MDI0LAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPVRydWUsCistICAgICAgICApCist ICAgICAgICBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwgPSBvbm54LmxvYWQoCistICAg ICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQs IGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAgICAgICAgKQorLSAgICAgICAgbGFyZ2VfaW5w dXRfdGVuc29yID0gbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLmdyYXBoLmluaXRpYWxp emVyWzBdCistICAgICAgICBzZWxmLmFzc2VydFRydWUobGFyZ2VfaW5wdXRfdGVuc29yLkhhc0Zp ZWxkKCJkYXRhX2xvY2F0aW9uIikpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9z ZSgKKy0gICAgICAgICAgICB0b19hcnJheShsYXJnZV9pbnB1dF90ZW5zb3IsIHNlbGYudGVtcF9k aXIpLCBzZWxmLmxhcmdlX2RhdGEKKy0gICAgICAgICkKKy0KKy0gICAgICAgIHNtYWxsX3NoYXBl X3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbC5ncmFwaC5pbml0aWFsaXpl clsxXQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBzbWFsbF9zaGFwZV90ZW5zb3IuSGFz RmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNs b3NlKHRvX2FycmF5KHNtYWxsX3NoYXBlX3RlbnNvciksIHNlbGYuc21hbGxfZGF0YSkKKy0KKy0g ICAgICAgICMgMm5kIHNhdmU6IG9uZSB0ZW5zb3IgaGFzIHJhd19kYXRhIChzbWFsbCk7IG9uZSBl eHRlcm5hbCB0ZW5zb3IgKGxhcmdlKQorLSAgICAgICAgIyBTYXZlIHRoZW0gYm90aCBhcyBleHRl cm5hbCB0ZW5zb3JzIHRoaXMgdGltZQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAgICAg ICAgICAgIG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbCwKKy0gICAgICAgICAgICBzZWxm Lm1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAg IGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAorLSAgICAgICAgICAgIGxvY2F0aW9uPU5v bmUsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAgICBjb252ZXJ0 X2F0dHJpYnV0ZT1UcnVlLAorLSAgICAgICAgKQorLQorLSAgICAgICAgbW9kZWxfd2l0aG91dF9s b2FkaW5nX2V4dGVybmFsID0gb25ueC5sb2FkKAorLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmls ZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFs c2UKKy0gICAgICAgICkKKy0gICAgICAgIGxhcmdlX2lucHV0X3RlbnNvciA9IG1vZGVsX3dpdGhv dXRfbG9hZGluZ19leHRlcm5hbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5h c3NlcnRUcnVlKGxhcmdlX2lucHV0X3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQor LSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UoCistICAgICAgICAgICAgdG9fYXJy YXkobGFyZ2VfaW5wdXRfdGVuc29yLCBzZWxmLnRlbXBfZGlyKSwgc2VsZi5sYXJnZV9kYXRhCist ICAgICAgICApCistCistICAgICAgICBzbWFsbF9zaGFwZV90ZW5zb3IgPSBtb2RlbF93aXRob3V0 X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJbMV0KKy0gICAgICAgIHNlbGYuYXNz ZXJ0VHJ1ZShzbWFsbF9zaGFwZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAorLSAgICAgICAgICAgIHRvX2FycmF5 KHNtYWxsX3NoYXBlX3RlbnNvciwgc2VsZi50ZW1wX2RpciksIHNlbGYuc21hbGxfZGF0YQorLSAg ICAgICAgKQorLQorLQorIGNsYXNzIFRlc3ROb3RBbGxvd1RvTG9hZEV4dGVybmFsRGF0YU91dHNp ZGVNb2RlbERpcmVjdG9yeShUZXN0TG9hZEV4dGVybmFsRGF0YUJhc2UpOgorICAgICAiIiJFc3Nl bnRpYWwgdGVzdCB0byBjaGVjayB0aGF0IG9ubnggKHZhbGlkYXRlKSBDKysgY29kZSB3aWxsIG5v dCBhbGxvdyB0byBsb2FkIGV4dGVybmFsX2RhdGEgb3V0c2lkZSB0aGUgbW9kZWwKKyAgICAgZGly ZWN0b3J5LgorQEAgLTc5NywxNyArMTg2LDYgQEAgY2xhc3MgVGVzdE5vdEFsbG93VG9Mb2FkRXh0 ZXJuYWxEYXRhT3V0c2lkZU1vZGVsRGlyZWN0b3J5T25XaW5kb3dzKAorICAgICAgICAgICAgIGNo ZWNrZXIuY2hlY2tfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFtZSkKKyAKKyAKKy1jbGFzcyBUZXN0 U2F2ZUFsbFRlbnNvcnNBc0V4dGVybmFsRGF0YVdpdGhQYXRoKFRlc3RTYXZlQWxsVGVuc29yc0Fz RXh0ZXJuYWxEYXRhKToKKy0gICAgZGVmIGdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKHNlbGYpIC0+ IHBhdGhsaWIuUGF0aDoKKy0gICAgICAgIHJldHVybiBwYXRobGliLlBhdGgoc3VwZXIoKS5nZXRf dGVtcF9tb2RlbF9maWxlbmFtZSgpKQorLQorLQorLWNsYXNzIFRlc3RFeHRlcm5hbERhdGFUb0Fy cmF5V2l0aFBhdGgoVGVzdEV4dGVybmFsRGF0YVRvQXJyYXkpOgorLSAgICBAcHJvcGVydHkKKy0g ICAgZGVmIG1vZGVsX2ZpbGVfcGF0aChzZWxmKSAtPiBwYXRobGliLlBhdGg6CistICAgICAgICBy ZXR1cm4gcGF0aGxpYi5QYXRoKHNlbGYuX21vZGVsX2ZpbGVfcGF0aCkKKy0KKy0KKyBjbGFzcyBU ZXN0RnVuY3Rpb25zQW5kU3ViR3JhcGhzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHNl dFVwKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBzZWxmLl90ZW1wX2Rpcl9vYmogPSB0ZW1wZmls ZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQorZGlmZiAtLWdpdCBhL29ubngvdGVzdC92ZXJzaW9uX2Nv bnZlcnRlci9hdXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkgYi9vbm54L3Rlc3QvdmVyc2lvbl9j b252ZXJ0ZXIvYXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5CitpbmRleCBhOTRhZWExYTkuLmY2 MzlkNDRmOCAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlci9hdXRvbWF0 aWNfZG93bmdyYWRlX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlci9h dXRvbWF0aWNfZG93bmdyYWRlX3Rlc3QucHkKK0BAIC03LDcgKzcsNiBAQCBpbXBvcnQgdW5pdHRl c3QKKyAKKyBpbXBvcnQgYXV0b21hdGljX2NvbnZlcnNpb25fdGVzdF9iYXNlCisgaW1wb3J0IG51 bXB5IGFzIG5wCistaW1wb3J0IHBhcmFtZXRlcml6ZWQKKyAKKyBpbXBvcnQgb25ueAorIGZyb20g b25ueCBpbXBvcnQgaGVscGVyCitAQCAtMjIsMzUgKzIxLDYgQEAgY2xhc3MgVGVzdEF1dG9tYXRp Y0Rvd25ncmFkZShhdXRvbWF0aWNfY29udmVyc2lvbl90ZXN0X2Jhc2UuVGVzdEF1dG9tYXRpY0Nv bnZlcnMKKyAgICAgZGVmIF90ZXN0X29wX2Rvd25ncmFkZShzZWxmLCBvcDogc3RyLCAqYXJncywg Kiprd2FyZ3MpOgorICAgICAgICAgc2VsZi5fdGVzdF9vcF9jb252ZXJzaW9uKG9wLCAqYXJncywg Kiprd2FyZ3MsIGlzX3VwZ3JhZGU9RmFsc2UpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFt ZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICJSZWR1Y2VMMSIsCist ICAgICAgICAgICAgIlJlZHVjZUwyIiwKKy0gICAgICAgICAgICAiUmVkdWNlTG9nU3VtIiwKKy0g ICAgICAgICAgICAiUmVkdWNlTG9nU3VtRXhwIiwKKy0gICAgICAgICAgICAiUmVkdWNlTWVhbiIs CistICAgICAgICAgICAgIlJlZHVjZU1heCIsCistICAgICAgICAgICAgIlJlZHVjZU1pbiIsCist ICAgICAgICAgICAgIlJlZHVjZVByb2QiLAorLSAgICAgICAgICAgICJSZWR1Y2VTdW0iLAorLSAg ICAgICAgICAgICJSZWR1Y2VTdW1TcXVhcmUiLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRl ZiB0ZXN0X3JlZHVjZV9vcHMoc2VsZiwgb3ApIC0+IE5vbmU6CistICAgICAgICAjIFRPRE86IG5l ZWQgdG8gYWRkIHRlc3QgY2FzZXMgZm9yIG1pc3NpbmcgYXhlcyBpbnB1dCB3aGljaCBkZXBlbmRz IG9uIHRoaXMgcHI6CistICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9vbm54L29ubngvcHVs bC81NjEzCistICAgICAgICBheGVzID0gaGVscGVyLm1ha2VfdGVuc29yKAorLSAgICAgICAgICAg ICJiIiwgb25ueC5UZW5zb3JQcm90by5JTlQ2NCwgZGltcz1bM10sIHZhbHM9bnAuYXJyYXkoWzAs IDEsIDJdKQorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fdGVzdF9vcF9kb3duZ3JhZGUoCist ICAgICAgICAgICAgb3AsCistICAgICAgICAgICAgZnJvbV9vcHNldD0xMywKKy0gICAgICAgICAg ICBpbnB1dF9zaGFwZXM9W1szLCA0LCA1XSwgWzNdXSwKKy0gICAgICAgICAgICBvdXRwdXRfc2hh cGVzPVtbMSwgMSwgMV1dLAorLSAgICAgICAgICAgIGlucHV0X3R5cGVzPVtvbm54LlRlbnNvclBy b3RvLkZMT0FULCBvbm54LlRlbnNvclByb3RvLklOVDY0XSwKKy0gICAgICAgICAgICBpbml0aWFs aXplcj1bYXhlc10sCistICAgICAgICApCistCisgICAgIGRlZiB0ZXN0X2RmdDIwX25vX2F4aXMo c2VsZikgLT4gTm9uZToKKyAgICAgICAgIHNlbGYuX3Rlc3RfbW9kZWxfY29udmVyc2lvbigKKyAg ICAgICAgICAgICB0b19vcHNldD0xOSwKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvdmVyc2lvbl9j b252ZXJ0ZXJfdGVzdC5weSBiL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5Citp bmRleCBhNzVlZGNkZTcuLmZkMDU3NTE4ZiAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC92ZXJzaW9u X2NvbnZlcnRlcl90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXJfdGVz dC5weQorQEAgLTEwLDcgKzEwLDYgQEAgaW1wb3J0IHRlbXBmaWxlCisgaW1wb3J0IHVuaXR0ZXN0 CisgCisgaW1wb3J0IG51bXB5IGFzIG5wCistaW1wb3J0IHBhcmFtZXRlcml6ZWQKKyAKKyBpbXBv cnQgb25ueC52ZXJzaW9uX2NvbnZlcnRlcgorIGZyb20gb25ueCBpbXBvcnQgKAorQEAgLTIxMTUs MTY5ICsyMTE0LDYgQEAgY2xhc3MgVGVzdFZlcnNpb25Db252ZXJ0ZXIodW5pdHRlc3QuVGVzdENh c2UpOgorICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9tb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJp YnV0ZVswXS5pID09IDIKKyAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfbW9kZWwub3BzZXRfaW1w b3J0WzBdLnZlcnNpb24gPT0gMTIKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXpl ZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJwZXJfdGVuc29yIiwgKDE2LCAz KSwgKDEsKSwgTm9uZSwgTm9uZSwgTm9uZSwgVGVuc29yUHJvdG8uSU5UOCwgVHJ1ZSksCistICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAicGVyX2F4aXNfbm9uZV9ibG9ja19zaGFwZSIs CistICAgICAgICAgICAgICAgICgxNiwgMyksCistICAgICAgICAgICAgICAgICgxNiwpLAorLSAg ICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAg ICBOb25lLAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ4LAorLSAgICAgICAgICAg ICAgICBUcnVlLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAg ICAgICAicGVyX2F4aXNfemVyb19ibG9ja19zaGFwZSIsCistICAgICAgICAgICAgICAgICgxNiwg MyksCistICAgICAgICAgICAgICAgICgxNiwpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAg ICAgICAgICAgICAwLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBU ZW5zb3JQcm90by5JTlQ4LAorLSAgICAgICAgICAgICAgICBUcnVlLAorLSAgICAgICAgICAgICks CistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAicGVyX3RlbnNvcl9wb3NpdGl2ZV9i bG9ja19zaGFwZSIsCistICAgICAgICAgICAgICAgICgxNiwgMyksCistICAgICAgICAgICAgICAg ICgxLCksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIDIsCistICAgICAg ICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDgsCistICAg ICAgICAgICAgICAgIEZhbHNlLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAg ICAgICAgICAgICAgICAicGVyX2F4aXNfcG9zaXRpdmVfYmxvY2tfc2hhcGUiLAorLSAgICAgICAg ICAgICAgICAoMTYsIDMpLAorLSAgICAgICAgICAgICAgICAoMTYsKSwKKy0gICAgICAgICAgICAg ICAgMSwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAg ICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwKKy0gICAgICAgICAgICAgICAgRmFsc2UsCist ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoImJsb2NrZWRfMmQiLCAoMTYsIDMpLCAoNCwg MyksIDAsIDQsIE5vbmUsIFRlbnNvclByb3RvLklOVDgsIEZhbHNlKSwKKy0gICAgICAgICAgICAo ImJsb2NrZWRfM2QiLCAoNCwgMywgMzIpLCAoNCwgMywgOCksIDIsIDQsIE5vbmUsIFRlbnNvclBy b3RvLklOVDgsIEZhbHNlKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICJwZXJf YXhpc19vdXRwdXRfZHR5cGUiLAorLSAgICAgICAgICAgICAgICAoMTYsIDMpLAorLSAgICAgICAg ICAgICAgICAoMTYsKSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgTm9u ZSwKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQ4RTRNM0ZOLAorLSAgICAgICAg ICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBGYWxzZSwKKy0gICAgICAgICAgICApLAor LSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgInBlcl9heGlzX3Vuc3VwcG9ydGVkX3R5 cGUiLAorLSAgICAgICAgICAgICAgICAoMTYsIDMpLAorLSAgICAgICAgICAgICAgICAoMTYsKSwK Ky0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAg ICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDE2LAorLSAgICAg ICAgICAgICAgICBGYWxzZSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgXQorLSAgICApCist ICAgIGRlZiB0ZXN0X3F1YW50aXplXzIxXzIwKAorLSAgICAgICAgc2VsZiwKKy0gICAgICAgIF86 IHN0ciwKKy0gICAgICAgIHhfc2hhcGU6IHR1cGxlW2ludCwgLi4uXSwKKy0gICAgICAgIHNjYWxl X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCistICAgICAgICBheGlzOiBpbnQsCistICAgICAgICBi bG9ja19zaXplOiBpbnQsCistICAgICAgICBvdXRwdXRfZHR5cGU6IGludCB8IE5vbmUsCistICAg ICAgICB6ZXJvX3BvaW50X2R0eXBlOiBpbnQgfCBOb25lLAorLSAgICAgICAgY29tcGF0aWJsZTog Ym9vbCwKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZGVmIHRlc3QoCistICAgICAgICAgICAg aW5wdXRfc2hhcGUsIHNjYWxlX3NoYXBlLCBheGlzLCBibG9ja19zaXplLCBvdXRwdXRfZHR5cGUs IHplcm9fcG9pbnRfZHR5cGUKKy0gICAgICAgICkgLT4gTm9uZToKKy0gICAgICAgICAgICBub2Rl cyA9IFsKKy0gICAgICAgICAgICAgICAgaGVscGVyLm1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICJRdWFudGl6ZUxpbmVhciIsCistICAgICAgICAgICAgICAgICAgICBbIlgiLCAiUyJd LAorLSAgICAgICAgICAgICAgICAgICAgWyJZIl0sCistICAgICAgICAgICAgICAgICAgICBheGlz PWF4aXMsCistICAgICAgICAgICAgICAgICAgICBibG9ja19zaXplPWJsb2NrX3NpemUsCistICAg ICAgICAgICAgICAgICAgICBvdXRwdXRfZHR5cGU9b3V0cHV0X2R0eXBlLAorLSAgICAgICAgICAg ICAgICApCistICAgICAgICAgICAgXQorLSAgICAgICAgICAgIGlucHV0cyA9IFsKKy0gICAgICAg ICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5G TE9BVCwgaW5wdXRfc2hhcGUpLAorLSAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiUyIsIFRlbnNvclByb3RvLkZMT0FULCBzY2FsZV9zaGFwZSksCistICAgICAg ICAgICAgXQorLSAgICAgICAgICAgIGlmIHplcm9fcG9pbnRfZHR5cGU6CistICAgICAgICAgICAg ICAgIGlucHV0cy5hcHBlbmQoCistICAgICAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWlAiLCB6ZXJvX3BvaW50X2R0eXBlLCBzY2FsZV9zaGFwZSkKKy0gICAg ICAgICAgICAgICAgKQorLSAgICAgICAgICAgICAgICBub2Rlc1swXS5pbnB1dC5hcHBlbmQoIlpQ IikKKy0gICAgICAgICAgICBvdXRwdXRfdHlwZV8gPSBvdXRwdXRfZHR5cGUgb3IgemVyb19wb2lu dF9kdHlwZQorLSAgICAgICAgICAgIGdyYXBoID0gaGVscGVyLm1ha2VfZ3JhcGgoCistICAgICAg ICAgICAgICAgIG5vZGVzLAorLSAgICAgICAgICAgICAgICAidGVzdCIsCistICAgICAgICAgICAg ICAgIGlucHV0cywKKy0gICAgICAgICAgICAgICAgW2hlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJZIiwgb3V0cHV0X3R5cGVfLCBpbnB1dF9zaGFwZSldLAorLSAgICAgICAgICAgICkKKy0g ICAgICAgICAgICBfID0gc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxwZXIubWFrZV9vcGVyYXRv cnNldGlkKCIiLCAyMSksIDIwKQorLQorLSAgICAgICAgY29udGV4dF9tYW5hZ2VyID0gKAorLSAg ICAgICAgICAgIGNvbnRleHRsaWIubnVsbGNvbnRleHQoKSBpZiBjb21wYXRpYmxlIGVsc2Ugc2Vs Zi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKQorLSAgICAgICAgKQorLSAgICAgICAgd2l0aCBj b250ZXh0X21hbmFnZXI6CistICAgICAgICAgICAgdGVzdCh4X3NoYXBlLCBzY2FsZV9zaGFwZSwg YXhpcywgYmxvY2tfc2l6ZSwgb3V0cHV0X2R0eXBlLCB6ZXJvX3BvaW50X2R0eXBlKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAg ICAgICAgICAoInBlcl90ZW5zb3IiLCAoMTYsIDMpLCAoMSwpLCBOb25lLCBOb25lLCBUcnVlKSwK Ky0gICAgICAgICAgICAoInBlcl9heGlzX25vbmVfYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMTYs KSwgMSwgTm9uZSwgVHJ1ZSksCistICAgICAgICAgICAgKCJwZXJfYXhpc196ZXJvX2Jsb2NrX3No YXBlIiwgKDE2LCAzKSwgKDE2LCksIDEsIDAsIFRydWUpLAorLSAgICAgICAgICAgICgicGVyX3Rl bnNvcl9wb3NpdGl2ZV9ibG9ja19zaGFwZSIsICgxNiwgMyksICgxLCksIDEsIDIsIEZhbHNlKSwK Ky0gICAgICAgICAgICAoInBlcl9heGlzX3Bvc2l0aXZlX2Jsb2NrX3NoYXBlIiwgKDE2LCAzKSwg KDE2LCksIDEsIDIsIEZhbHNlKSwKKy0gICAgICAgICAgICAoImJsb2NrZWRfMmQiLCAoMTYsIDMp LCAoNCwgMyksIDAsIDQsIEZhbHNlKSwKKy0gICAgICAgICAgICAoImJsb2NrZWRfM2QiLCAoNCwg MywgMzIpLCAoNCwgMywgOCksIDIsIDQsIEZhbHNlKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAg ICBkZWYgdGVzdF9kZXF1YW50aXplXzIxXzIwKAorLSAgICAgICAgc2VsZiwKKy0gICAgICAgIF86 IHN0ciwKKy0gICAgICAgIHlfc2hhcGU6IHR1cGxlW2ludCwgLi4uXSwKKy0gICAgICAgIHNjYWxl X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCistICAgICAgICBheGlzOiBpbnQsCistICAgICAgICBi bG9ja19zaXplOiBpbnQsCistICAgICAgICBjb21wYXRpYmxlOiBib29sLAorLSAgICApIC0+IE5v bmU6CistICAgICAgICBkZWYgdGVzdChpbnB1dF9zaGFwZSwgc2NhbGVfc2hhcGUsIGF4aXMsIGJs b2NrX3NpemUpIC0+IE5vbmU6CistICAgICAgICAgICAgbm9kZXMgPSBbCistICAgICAgICAgICAg ICAgIGhlbHBlci5tYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiRGVxdWFudGl6ZUxp bmVhciIsCistICAgICAgICAgICAgICAgICAgICBbIlgiLCAiUyIsICJaUCJdLAorLSAgICAgICAg ICAgICAgICAgICAgWyJZIl0sCistICAgICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCistICAg ICAgICAgICAgICAgICAgICBibG9ja19zaXplPWJsb2NrX3NpemUsCistICAgICAgICAgICAgICAg ICkKKy0gICAgICAgICAgICBdCistICAgICAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9ncmFw aCgKKy0gICAgICAgICAgICAgICAgbm9kZXMsCistICAgICAgICAgICAgICAgICJ0ZXN0IiwKKy0g ICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5JTlQ4LCBpbnB1dF9zaGFwZSksCistICAgICAg ICAgICAgICAgICAgICBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiUyIsIFRlbnNvclBy b3RvLkZMT0FULCBzY2FsZV9zaGFwZSksCistICAgICAgICAgICAgICAgICAgICBoZWxwZXIubWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiWlAiLCBUZW5zb3JQcm90by5JTlQ4LCBzY2FsZV9zaGFwZSks CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFtoZWxwZXIubWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBpbnB1dF9zaGFwZSldLAorLSAg ICAgICAgICAgICkKKy0gICAgICAgICAgICBfID0gc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxw ZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAyMSksIDIwKQorLQorLSAgICAgICAgY29udGV4dF9t YW5hZ2VyID0gKAorLSAgICAgICAgICAgIGNvbnRleHRsaWIubnVsbGNvbnRleHQoKSBpZiBjb21w YXRpYmxlIGVsc2Ugc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKQorLSAgICAgICAgKQor LSAgICAgICAgd2l0aCBjb250ZXh0X21hbmFnZXI6CistICAgICAgICAgICAgdGVzdCh5X3NoYXBl LCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tfc2l6ZSkKKy0KKyAgICAgZGVmIHRlc3RfZXh0ZXJu YWxfZGF0YV92ZXJzaW9uX2NvbnZlcnNpb24oc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHdpdGgg dGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6CisgICAgICAgICAgICAg IyBDcmVhdGUgYSBtb2RlbCB3aXRoIGV4dGVybmFsIGRhdGEKK0BAIC0yNDEzLDc2ICsyMjQ5LDYg QEAgY2xhc3MgVGVzdFZlcnNpb25Db252ZXJ0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAg ICAgICAgIFtoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0IiwgZHR5cGUsIGRhdGFf cyldLAorICAgICAgICAgKQorIAorLSAgICAjIFNjYXR0ZXIgMTYgLT4gMTU6IFR5cGVSZXN0cmlj dGlvbiAoYmZsb2F0MTYpICsgUmVtb3ZlQXR0cmlidXRlIChyZWR1Y3Rpb24pCistICAgIEBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKFsoIlNjYXR0ZXJFbGVtZW50cyIsKSwgKCJT Y2F0dGVyTkQiLCldKQorLSAgICBkZWYgdGVzdF9zY2F0dGVyXzE2XzE1X3N1Y2Nlc3Moc2VsZiwg b3BfbmFtZTogc3RyKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX3NjYXR0 ZXJfZ3JhcGgob3BfbmFtZSwgVGVuc29yUHJvdG8uRkxPQVQsICJub25lIikKKy0gICAgICAgIGNv bnZlcnRlZCA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRp ZCgiIiwgMTYpLCAxNSkKKy0gICAgICAgIGFzc2VydCBjb252ZXJ0ZWQub3BzZXRfaW1wb3J0WzBd LnZlcnNpb24gPT0gMTUKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBh bmQoWygiU2NhdHRlckVsZW1lbnRzIiwpLCAoIlNjYXR0ZXJORCIsKV0pCistICAgIGRlZiB0ZXN0 X3NjYXR0ZXJfMTZfMTVfYmZsb2F0MTZfZmFpbHMoc2VsZiwgb3BfbmFtZTogc3RyKSAtPiBOb25l OgorLSAgICAgICAgZGVmIHRlc3QoKSAtPiBOb25lOgorLSAgICAgICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9zY2F0dGVyX2dyYXBoKG9wX25hbWUsIFRlbnNvclByb3RvLkJGTE9BVDE2KQorLSAg ICAgICAgICAgIHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRp ZCgiIiwgMTYpLCAxNSkKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJv ciwgdGVzdCkKKy0KKy0gICAgIyBPcHNldCAxNiBhZGRlZCByZWR1Y3Rpb24gJ2FkZCcgYW5kICdt dWwnOyAxNiAtPiAxNSBvbmx5IGFsbG93cyAnbm9uZScKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFy YW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJTY2F0dGVyRWxl bWVudHMiLCAiYWRkIiksCistICAgICAgICAgICAgKCJTY2F0dGVyRWxlbWVudHMiLCAibXVsIiks CistICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAiYWRkIiksCistICAgICAgICAgICAgKCJTY2F0 dGVyTkQiLCAibXVsIiksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3Rfc2NhdHRl cl8xNl8xNV9yZWR1Y3Rpb25fYWRkX211bF9mYWlscygKKy0gICAgICAgIHNlbGYsIG9wX25hbWU6 IHN0ciwgcmVkdWN0aW9uOiBzdHIKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZGVmIHRlc3Qo KSAtPiBOb25lOgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9zY2F0dGVyX2dyYXBo KG9wX25hbWUsIFRlbnNvclByb3RvLkZMT0FULCByZWR1Y3Rpb24pCistICAgICAgICAgICAgc2Vs Zi5fY29udmVydGVkKGdyYXBoLCBoZWxwZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAxNiksIDE1 KQorLQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB0ZXN0KQorLQor LSAgICAjIFNjYXR0ZXIgMTggLT4gMTc6IHJlamVjdCByZWR1Y3Rpb24gIm1heCIgLyAibWluIgor LSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0g ICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIsICJtYXgiKSwKKy0gICAgICAgICAgICAoIlNj YXR0ZXJFbGVtZW50cyIsICJtaW4iKSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsICJtYXgi KSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsICJtaW4iKSwKKy0gICAgICAgIF0KKy0gICAg KQorLSAgICBkZWYgdGVzdF9zY2F0dGVyXzE4XzE3X3JlZHVjdGlvbl9tYXhfbWluX2ZhaWxzKAor LSAgICAgICAgc2VsZiwgb3BfbmFtZTogc3RyLCByZWR1Y3Rpb246IHN0cgorLSAgICApIC0+IE5v bmU6CistICAgICAgICBkZWYgdGVzdCgpIC0+IE5vbmU6CistICAgICAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX3NjYXR0ZXJfZ3JhcGgob3BfbmFtZSwgVGVuc29yUHJvdG8uRkxPQVQsIHJlZHVj dGlvbikKKy0gICAgICAgICAgICBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29w ZXJhdG9yc2V0aWQoIiIsIDE4KSwgMTcpCistCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhS dW50aW1lRXJyb3IsIHRlc3QpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQu ZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwgTm9u ZSksCistICAgICAgICAgICAgKCJTY2F0dGVyRWxlbWVudHMiLCAibm9uZSIpLAorLSAgICAgICAg ICAgICgiU2NhdHRlckVsZW1lbnRzIiwgImFkZCIpLAorLSAgICAgICAgICAgICgiU2NhdHRlckVs ZW1lbnRzIiwgIm11bCIpLAorLSAgICAgICAgICAgICgiU2NhdHRlck5EIiwgTm9uZSksCistICAg ICAgICAgICAgKCJTY2F0dGVyTkQiLCAibm9uZSIpLAorLSAgICAgICAgICAgICgiU2NhdHRlck5E IiwgImFkZCIpLAorLSAgICAgICAgICAgICgiU2NhdHRlck5EIiwgIm11bCIpLAorLSAgICAgICAg XQorLSAgICApCistICAgIGRlZiB0ZXN0X3NjYXR0ZXJfMThfMTdfYWxsb3dlZF9yZWR1Y3Rpb25z X3N1Y2Nlc3MoCistICAgICAgICBzZWxmLCBvcF9uYW1lOiBzdHIsIHJlZHVjdGlvbjogc3RyIHwg Tm9uZQorLSAgICApIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vfc2NhdHRl cl9ncmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5GTE9BVCwgcmVkdWN0aW9uKQorLSAgICAgICAg Y29udmVydGVkID0gc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxwZXIubWFrZV9vcGVyYXRvcnNl dGlkKCIiLCAxOCksIDE3KQorLSAgICAgICAgY2hlY2tlci5jaGVja19tb2RlbChjb252ZXJ0ZWQp CistCisgCisgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICAgdW5pdHRlc3QubWFpbigp CitkaWZmIC0tZ2l0IGEvcmVxdWlyZW1lbnRzLWRldi50eHQgYi9yZXF1aXJlbWVudHMtZGV2LnR4 dAoraW5kZXggZTM2ZWNkNmQ5Li43ZTRhMGNjZDQgMTAwNjQ0CistLS0gYS9yZXF1aXJlbWVudHMt ZGV2LnR4dAorKysrIGIvcmVxdWlyZW1lbnRzLWRldi50eHQKK0BAIC0xLDYgKzEsNSBAQAorIGJ1 aWxkCisgbnVtcHkKKy1wYXJhbWV0ZXJpemVkCisgcHJvdG9idWYKKyBweXRlc3QKKyBweXRlc3Qt Y292CistLSAKKzIuNTQuMAorCgpkaWZmIC0tZ2l0IGEvMDAwNy1BZGQtZml4ZXMtZm9yLXVzZS13 aXRoLW9ubnhydW50aW1lLnBhdGNoIGIvMDAwNy1BZGQtZml4ZXMtZm9yLXVzZS13aXRoLW9ubnhy dW50aW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczODhiOTkK LS0tIC9kZXYvbnVsbAorKysgYi8wMDA3LUFkZC1maXhlcy1mb3ItdXNlLXdpdGgtb25ueHJ1bnRp bWUucGF0Y2gKQEAgLTAsMCArMSw3MiBAQAorRnJvbSA4OTcyZGI5MGMzNDgzNjcyODljZTc2NDAw MDYwN2ZhN2E4MjMzNmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGllZ28gSGVy cmVyYSA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMSBKdWwgMjAyNiAwMDoyMDox NyAtMDQwMAorU3ViamVjdDogW1BBVENIIDcvN10gQWRkIGZpeGVzIGZvciB1c2Ugd2l0aCBvbm54 cnVudGltZQorCisKK2RpZmYgLS1naXQgYS9vbm54L2RlZnMvc2NoZW1hLmNjIGIvb25ueC9kZWZz L3NjaGVtYS5jYworaW5kZXggMWVlYzM0ZWIyLi4yOTczOTUxYzMgMTAwNjQ0CistLS0gYS9vbm54 L2RlZnMvc2NoZW1hLmNjCisrKysgYi9vbm54L2RlZnMvc2NoZW1hLmNjCitAQCAtMjcsOCArMjcs MTkgQEAKKyAjaW5jbHVkZSAib25ueC9jb21tb24vYXNzZXJ0aW9ucy5oIgorICNlbmRpZgorICNp bmNsdWRlICJvbm54L2RlZnMvcGFyc2VyLmgiCisrI2luY2x1ZGUgIm9ubngvb25ueHJ1bnRpbWVf Zml4LmgiCisgCisgbmFtZXNwYWNlIE9OTlhfTkFNRVNQQUNFIHsKKysKKytib29sIE9OTlhSdW50 aW1lRml4Ojpfc3RhdGljX3JlZ2lzdHJhdGlvbl9kaXNhYmxlZCA9IGZhbHNlOworK2Jvb2wgT05O WFJ1bnRpbWVGaXg6OmlzU3RhdGljUmVnaXN0cmF0aW9uRGlzYWJsZWQoKSB7CisrICAgIHJldHVy biBfc3RhdGljX3JlZ2lzdHJhdGlvbl9kaXNhYmxlZDsKKyt9CisrCisrdm9pZCBPTk5YUnVudGlt ZUZpeDo6ZGlzYWJsZVN0YXRpY1JlZ2lzdHJhdGlvbigpIHsKKysgICAgX3N0YXRpY19yZWdpc3Ry YXRpb25fZGlzYWJsZWQgPSB0cnVlOworK30KKysKKyAvLyAtMSBtZWFucyBPTk5YIHNjaGVtYSBo YXNuJ3QgYmVlbiBsb2FkZWQgeWV0CisgLy8gMCBtZWFucyBhbGwgdmVyc2lvbnMgb2YgT05OWCBz Y2hlbWEgaGF2ZSBiZWVuIGxvYWRlZAorIC8vIE90aGVyIHBvc2l0aXZlIGludGVnZXIgbWVhbnMg dGhlIE9OTlggc2NoZW1hcyBmb3IgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIGhhdmUgYmVlbiBsb2Fk ZWQKK0BAIC0xNzc3LDYgKzE3ODgsOSBAQCBPcE5hbWVfRG9tYWluX1ZlcnNpb25fU2NoZW1hX01h cCYgT3BTY2hlbWFSZWdpc3RyeTo6bWFwKCkgeworICAgY2xhc3MgU2NoZW1hc1JlZ2lzdGVyZXIg eworICAgIHB1YmxpYzoKKyAgICAgU2NoZW1hc1JlZ2lzdGVyZXIoKSB7CisrICAgICAgLy8gQ2hl Y2sgaWYgc3RhdGljIHJlZ2lzdHJhdGlvbiBpcyBhY3R1YWxseSBkaXNhYmxlZAorKyAgICAgIGlm KE9OTlhSdW50aW1lRml4Ojppc1N0YXRpY1JlZ2lzdHJhdGlvbkRpc2FibGVkKCkpIHJldHVybjsK KysKKyAgICAgICAvLyBJbiBkZWJ1ZyBidWlsZHMsIHRoZSBudW1iZXIgb2Ygc2NoZW1hIHJlZ2lz dGVyZWQgaW4gdGhpcyBjb25zdHJ1Y3RvcgorICAgICAgIC8vIGlzIGNvbXBhcmVkIGFnYWluc3Qg dGhlIG51bWJlciBvZiBjYWxscyB0byBzY2hlbWEgcmVnaXN0cmF0aW9uIG1hY3Jvcy4KKyAjaWZu ZGVmIE5ERUJVRworQEAgLTE4NDUsNyArMTg1OSw3IEBAIGJvb2wgSXNPbm54U3RhdGljUmVnaXN0 cmF0aW9uRGlzYWJsZWQoKSB7CisgI2lmZGVmIF9fT05OWF9ESVNBQkxFX1NUQVRJQ19SRUdJU1RS QVRJT04KKyAgIHJldHVybiB0cnVlOworICNlbHNlCistICByZXR1cm4gZmFsc2U7CisrICByZXR1 cm4gT05OWFJ1bnRpbWVGaXg6OmlzU3RhdGljUmVnaXN0cmF0aW9uRGlzYWJsZWQoKTsKKyAjZW5k aWYKKyB9CisgCitkaWZmIC0tZ2l0IGEvb25ueC9vbm54cnVudGltZV9maXguaCBiL29ubngvb25u eHJ1bnRpbWVfZml4LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjI0 OTViOTMxMAorLS0tIC9kZXYvbnVsbAorKysrIGIvb25ueC9vbm54cnVudGltZV9maXguaAorQEAg LTAsMCArMSwxNCBAQAorKyNwcmFnbWEgb25jZQorKworK25hbWVzcGFjZSBPTk5YX05BTUVTUEFD RSB7CisrCisrY2xhc3MgT05OWFJ1bnRpbWVGaXggeworK3B1YmxpYzoKKysgIHN0YXRpYyBib29s IGlzU3RhdGljUmVnaXN0cmF0aW9uRGlzYWJsZWQoKTsKKysgIHN0YXRpYyB2b2lkIGRpc2FibGVT dGF0aWNSZWdpc3RyYXRpb24oKTsKKysKKytwcml2YXRlOgorKyAgc3RhdGljIGJvb2wgX3N0YXRp Y19yZWdpc3RyYXRpb25fZGlzYWJsZWQ7CisrfTsKKysKKyt9IC8vIG5hbWVzcGFjZSBPTk5YX05B TUVTUEFDRQorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhL29ubnguc3BlYyBiL29ubnguc3Bl YwppbmRleCAwOGI3M2VhLi40ZDExY2UzIDEwMDY0NAotLS0gYS9vbm54LnNwZWMKKysrIGIvb25u eC5zcGVjCkBAIC05LDkgKzksMTggQEAgTGljZW5zZTogICAgQXBhY2hlLTIuMAogVVJMOiAgICAg ICAgaHR0cHM6Ly9naXRodWIuY29tL29ubngvb25ueAogU291cmNlMDogICAgaHR0cHM6Ly9naXRo dWIuY29tL29ubngvb25ueC9hcmNoaXZlL3Yle3ZlcnNpb259LyV7bmFtZX0tJXt2ZXJzaW9ufS50 YXIuZ3oKICMgQnVpbGQgc2hhcmVkIGxpYnJhcmllcyBhbmQgZml4IGluc3RhbGwgbG9jYXRpb24g Ci1QYXRjaDogICAgIDAwMDAtQnVpbGQtc2hhcmVkLWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwt bG9jYXRpb24ucGF0Y2gKK1BhdGNoOiAgICAgMDAwMS1CdWlsZC1zaGFyZWQtbGlicmFyaWVzLnBh dGNoCitQYXRjaDogICAgIDAwMDItRml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKKyMgTGF0ZXN0 IG5hbm9iaW5kIHVzZXMgZGlmZmVyZW50IGFyZ3VtZW50IGZvcm1hdAorUGF0Y2g6ICAgICAwMDAz LUZpeC1uYW5vYmluZC1hcmd1bWVudHMucGF0Y2gKKyMgTGV0IHB5cHJvamVjdF93aGVlbCB1c2Ug YmluYXJpZXMgZnJvbSBjbWFrZV9idWlsZAorUGF0Y2g6ICAgICAwMDA0LUxldC1weXByb2plY3Rf d2hlZWwtdXNlLWJpbmFyaWVzLWZyb20tY21ha2VfYnVpbGQucGF0Y2gKKyMgRml4ZXMgcHJvdG9i dWYgY29uZmxpY3RzIHdoZW4gdXNpbmcgYm90aCBweXRob24tb25ueCBhbmQgcHl0aG9uLW9ubnhy dW50aW1lCitQYXRjaDogICAgIDAwMDUtUHl0aG9uLWJpbmFyeS1zaG91bGQtbGluay10by1zeXN0 ZW0tb25ueC5wYXRjaAogIyBSZW1vdmUgb2Jzb2xldGVkIHRlc3RpbmcgZGVwZW5kZW5jeQotUGF0 Y2g6ICAgICAwMDAyLVJlbW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNo CitQYXRjaDogICAgIDAwMDYtUmVtb3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3ku cGF0Y2gKKyMgQWRkIGZpeGVzIGZvciB1c2Ugd2l0aCBvbm54cnVudGltZQorUGF0Y2g6ICAgICAw MDA3LUFkZC1maXhlcy1mb3ItdXNlLXdpdGgtb25ueHJ1bnRpbWUucGF0Y2gKIAogJWlmICV7dW5k ZWZpbmVkIGZjNDB9ICYmICV7dW5kZWZpbmVkIGZjNDF9CiAjIGh0dHBzOi8vZmVkb3JhcHJvamVj dC5vcmcvd2lraS9DaGFuZ2VzL0VuY291cmFnZUk2ODZMZWFmUmVtb3ZhbApAQCAtNzMsNyArODIs NyBAQCBleHBvcnQgVlBBVEhfQlVJTERESVI9JXtfdnBhdGhfYnVpbGRkaXJ9CiAgICAgLURQWV9F WFRfU1VGRklYPSV7cHl0aG9uM19leHRfc3VmZml4fSBcCiAgICAgLURQWV9TSVRFQVJDSD0le3B5 dGhvbjNfc2l0ZWFyY2h9IFwKICAgICAtRENNQUtFX1NLSVBfUlBBVEg6Qk9PTD1PTiBcCi0gICAg LURPTk5YX0RJU0FCTEVfU1RBVElDX1JFR0lTVFJBVElPTj1PTgorICAgIC1ET05OWF9ESVNBQkxF X1NUQVRJQ19SRUdJU1RSQVRJT049T0ZGCiAKICMgQnVpbGQgCiAlY21ha2VfYnVpbGQK