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: Tom Rix To: git-commits@fedoraproject.org Subject: [rpms/ollama] rawhide: Add OLLAMA_HOST comments to ollama.service Date: Sun, 07 Jun 2026 15:14:08 GMT Message-ID: <178084524826.1.7135229797267872259.rpms-ollama-a9c382e66c50@fedoraproject.org> List-ID: X-Git-Repo: rpms/ollama X-Git-Branch: rawhide X-Git-Rev: a9c382e66c50748b9128f703d63161c06b14274c ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvb2xsYW1hCiAgICAgICAgICAgIEJyYW5jaCA6IHJhd2hpZGUKICAgICAgICAg ICAgQ29tbWl0IDogYTljMzgyZTY2YzUwNzQ4YjkxMjhmNzAzZDYzMTYxYzA2YjE0Mjc0YwogICAg ICAgICAgICBBdXRob3IgOiBUb20gUml4IDxUb20uUml4QGFtZC5jb20+CiAgICAgICAgICAgIERh dGUgICA6IDIwMjYtMDYtMDdUMDg6MTE6NDktMDc6MDAKICAgICAgICAgICAgU3RhdHMgIDogKzE3 Ly0xMDAyIGluIDMgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRv cmFwcm9qZWN0Lm9yZy9ycG1zL29sbGFtYS9jL2E5YzM4MmU2NmM1MDc0OGI5MTI4ZjcwM2Q2MzE2 MWMwNmIxNDI3NGM/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAg QWRkIE9MTEFNQV9IT1NUIGNvbW1lbnRzIHRvIG9sbGFtYS5zZXJ2aWNlCgpUaGVzZSB3aWxsIGFp ZCB0aGUgdXNlciB3aXRoIHNvbWUgY29tbW9uIHNldHVwIHVzZSBjYXNlcy4KClNpZ25lZC1vZmYt Ynk6IFRvbSBSaXggPFRvbS5SaXhAYW1kLmNvbT4KCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1vbGxh bWEtY3J1c2gtaW50ZWdyYXRpb24ucGF0Y2ggYi8wMDAxLW9sbGFtYS1jcnVzaC1pbnRlZ3JhdGlv bi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiYzBjNy4uMDAwMDAwMAot LS0gYS8wMDAxLW9sbGFtYS1jcnVzaC1pbnRlZ3JhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDEwMDEgKzAsMCBAQAotRnJvbSA3ZmI5ZTZlMWNkOTY2NjE4MzJmOGRlNDI3MzkwZjAwMzkw ODNlMDdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVG9tIFJpeCA8VG9tLlJpeEBh bWQuY29tPgotRGF0ZTogTW9uLCAyMyBGZWIgMjAyNiAxOToxMDoxMCAtMDgwMAotU3ViamVjdDog W1BBVENIXSBvbGxhbWEgY3J1c2ggaW50ZWdyYXRpb24KLQotLS0tCi0gY21kL2NvbmZpZy9jcnVz aC5nbyAgICAgICAgfCAyODUgKysrKysrKysrKysrKysrKwotIGNtZC9jb25maWcvY3J1c2hfdGVz dC5nbyAgIHwgNjY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBjbWQv Y29uZmlnL2ludGVncmF0aW9ucy5nbyB8ICAgMiArCi0gMyBmaWxlcyBjaGFuZ2VkLCA5NTUgaW5z ZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBjbWQvY29uZmlnL2NydXNoLmdvCi0gY3Jl YXRlIG1vZGUgMTAwNjQ0IGNtZC9jb25maWcvY3J1c2hfdGVzdC5nbwotCi1kaWZmIC0tZ2l0IGEv Y21kL2NvbmZpZy9jcnVzaC5nbyBiL2NtZC9jb25maWcvY3J1c2guZ28KLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLmY1NDU5MWUxODBkMwotLS0tIC9kZXYvbnVsbAot KysrIGIvY21kL2NvbmZpZy9jcnVzaC5nbwotQEAgLTAsMCArMSwyODUgQEAKLStwYWNrYWdlIGNv bmZpZwotKwotK2ltcG9ydCAoCi0rCSJlbmNvZGluZy9qc29uIgotKwkiZm10IgotKwkiaW8vaW91 dGlsIgotKwkibG9nIgotKwkibWFwcyIKLSsJIm9zIgotKwkib3MvZXhlYyIKLSsJInBhdGgvZmls ZXBhdGgiCi0rCSJzbGljZXMiCi0rCSJnaXRodWIuY29tL29sbGFtYS9vbGxhbWEvZW52Y29uZmln IgotKykKLSsKLSsvLyBQcm92aWRlckNvbmZpZyByZXByZXNlbnRzIHRoZSBjb25maWd1cmF0aW9u IGZvciBhIHNwZWNpZmljIEFJIHByb3ZpZGVyCi0rdHlwZSBQcm92aWRlckNvbmZpZyBzdHJ1Y3Qg ewotKwlJRCAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICBganNvbjoiaWQiYAotKwlOYW1l ICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICBganNvbjoibmFtZSJgCi0rCUJhc2VVUkwgICAg ICAgICAgICAgIHN0cmluZyAgICAgIGBqc29uOiJiYXNlX3VybCJgCi0rCVR5cGUgICAgICAgICAg ICAgICAgIHN0cmluZyAgICAgIGBqc29uOiJ0eXBlImAKLSsJQVBJS2V5ICAgICAgICAgICAgICAg c3RyaW5nICAgICAgYGpzb246ImFwaV9rZXkiYAotKwlPQXV0aCAgICAgICAgICAgICAgICAgIGlu dGVyZmFjZXt9IGBqc29uOiJvYXV0aCxvbWl0ZW1wdHkiYAotKwlEaXNhYmxlICAgICAgICAgICAg ICBib29sICAgICAgICBganNvbjoiZGlzYWJsZSxvbWl0ZW1wdHkiYAotKwlTeXN0ZW1Qcm9tcHRQ cmVmaXggICBzdHJpbmcgICAgICBganNvbjoic3lzdGVtX3Byb21wdF9wcmVmaXgsb21pdGVtcHR5 ImAKLSsJRXh0cmFIZWFkZXJzICAgICAgICAgaW50ZXJmYWNle30gYGpzb246ImV4dHJhX2hlYWRl cnMsb21pdGVtcHR5ImAKLSsJRXh0cmFCb2R5ICAgICAgICAgICAgaW50ZXJmYWNle30gYGpzb246 ImV4dHJhX2JvZHksb21pdGVtcHR5ImAKLSsJUHJvdmlkZXJPcHRpb25zICAgICAgaW50ZXJmYWNl e30gYGpzb246InByb3ZpZGVyX29wdGlvbnMsb21pdGVtcHR5ImAKLSsJTW9kZWxzICAgICAgICAg ICAgICAgW11Nb2RlbCAgICAgYGpzb246Im1vZGVscyxvbWl0ZW1wdHkiYAotK30KLSsKLSsvLyBN b2RlbCByZXByZXNlbnRzIGFuIEFJIG1vZGVsIGNvbmZpZ3VyYXRpb24KLSt0eXBlIE1vZGVsIHN0 cnVjdCB7Ci0rCUlEICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyAgICAgIGBqc29uOiJpZCJg Ci0rCU5hbWUgICAgICAgICAgICAgICAgICAgIHN0cmluZyAgICAgIGBqc29uOiJuYW1lImAKLSsJ Q29zdFBlcjFNSW4gICAgICAgICAgICAgZmxvYXQ2NCAgICAgYGpzb246ImNvc3RfcGVyXzFtX2lu ImAKLSsJQ29zdFBlcjFNT3V0ICAgICAgICAgICAgZmxvYXQ2NCAgICAgYGpzb246ImNvc3RfcGVy XzFtX291dCJgCi0rCUNvc3RQZXIxTUluQ2FjaGVkICAgICAgIGZsb2F0NjQgICAgIGBqc29uOiJj b3N0X3Blcl8xbV9pbl9jYWNoZWQiYAotKwlDb3N0UGVyMU1PdXRDYWNoZWQgICAgICBmbG9hdDY0 ICAgICBganNvbjoiY29zdF9wZXJfMW1fb3V0X2NhY2hlZCJgCi0rCUNvbnRleHRXaW5kb3cgICAg ICAgICAgIGludCAgICAgICAgIGBqc29uOiJjb250ZXh0X3dpbmRvdyJgCi0rCURlZmF1bHRNYXhU b2tlbnMgICAgICAgIGludCAgICAgICAgIGBqc29uOiJkZWZhdWx0X21heF90b2tlbnMiYAotKwlD YW5SZWFzb24gICAgICAgICAgICAgICBib29sICAgICAgICBganNvbjoiY2FuX3JlYXNvbiJgCi0r CVJlYXNvbmluZ0xldmVscyAgICAgICAgIFtdc3RyaW5nICAgIGBqc29uOiJyZWFzb25pbmdfbGV2 ZWxzLG9taXRlbXB0eSJgCi0rCURlZmF1bHRSZWFzb25pbmdFZmZvcnQgIHN0cmluZyAgICAgIGBq c29uOiJkZWZhdWx0X3JlYXNvbmluZ19lZmZvcnQsb21pdGVtcHR5ImAKLSsJU3VwcG9ydHNBdHRh Y2htZW50cyAgICAgYm9vbCAgICAgICAgYGpzb246InN1cHBvcnRzX2F0dGFjaG1lbnRzImAKLSsJ T3B0aW9ucyAgICAgICAgICAgICAgICAgTW9kZWxPcHRpb25zIGBqc29uOiJvcHRpb25zImAKLSt9 Ci0rCi0rLy8gTW9kZWxPcHRpb25zIHJlcHJlc2VudHMgb3B0aW9ucyBmb3IgYSBzcGVjaWZpYyBt b2RlbAotK3R5cGUgTW9kZWxPcHRpb25zIHN0cnVjdCB7Ci0rCVRlbXBlcmF0dXJlICAgICBmbG9h dDY0ICAgICAgYGpzb246InRlbXBlcmF0dXJlLG9taXRlbXB0eSJgCi0rCVRvcFAgICAgICAgICAg ICBmbG9hdDY0ICAgICAgYGpzb246InRvcF9wLG9taXRlbXB0eSJgCi0rCVRvcEsgICAgICAgICAg ICBpbnQgICAgICAgICAgYGpzb246InRvcF9rLG9taXRlbXB0eSJgCi0rCUZyZXF1ZW5jeVBlbmFs dHkgZmxvYXQ2NCAgICAgYGpzb246ImZyZXF1ZW5jeV9wZW5hbHR5LG9taXRlbXB0eSJgCi0rCVBy ZXNlbmNlUGVuYWx0eSBmbG9hdDY0ICAgICBganNvbjoicHJlc2VuY2VfcGVuYWx0eSxvbWl0ZW1w dHkiYAotKwlQcm92aWRlck9wdGlvbnMgaW50ZXJmYWNle30gIGBqc29uOiJwcm92aWRlcl9vcHRp b25zLG9taXRlbXB0eSJgCi0rfQotKwotKy8vIENvbmZpZyByZXByZXNlbnRzIHRoZSBtYWluIGNv bmZpZ3VyYXRpb24gc3RydWN0dXJlCi0rdHlwZSBDb25maWcgc3RydWN0IHsKLSsJU2NoZW1hICAg ICBzdHJpbmcgICAgICAgICAgICAgIGBqc29uOiIkc2NoZW1hImAKLSsJSUQgICAgICAgICBzdHJp bmcgICAgICAgICAgICAgIGBqc29uOiIkaWQiYAotKwlSZWYgICAgICAgIHN0cmluZyAgICAgICAg ICAgICAgYGpzb246IiRyZWYiYAotKwlEZWZzICAgICAgIGludGVyZmFjZXt9ICAgICAgICAgYGpz b246IiRkZWZzLG9taXRlbXB0eSJgCi0rCU1vZGVscyAgICAgbWFwW3N0cmluZ11Nb2RlbCAgICBg anNvbjoibW9kZWxzLG9taXRlbXB0eSJgCi0rCVByb3ZpZGVycyAgbWFwW3N0cmluZ11Qcm92aWRl ckNvbmZpZyBganNvbjoicHJvdmlkZXJzLG9taXRlbXB0eSJgCi0rCU1DUCAgICAgICAgaW50ZXJm YWNle30gICAgICAgICBganNvbjoibWNwLG9taXRlbXB0eSJgCi0rCUxTUCAgICAgICAgaW50ZXJm YWNle30gICAgICAgICBganNvbjoibHNwLG9taXRlbXB0eSJgCi0rCU9wdGlvbnMgICAgaW50ZXJm YWNle30gICAgICAgICBganNvbjoib3B0aW9ucyxvbWl0ZW1wdHkiYAotKwlQZXJtaXNzaW9ucyBp bnRlcmZhY2V7fSAgICAgICAgYGpzb246InBlcm1pc3Npb25zLG9taXRlbXB0eSJgCi0rCVRvb2xz ICAgICAgaW50ZXJmYWNle30gICAgICAgICBganNvbjoidG9vbHMsb21pdGVtcHR5ImAKLSt9Ci0r Ci0rLy8gUmVhZENvbmZpZyByZWFkcyB0aGUgY29uZmlndXJhdGlvbiBmcm9tIGEgSlNPTiBmaWxl IGludG8gYSBDb25maWcgc3RydWN0Ci0rZnVuYyBSZWFkQ29uZmlnKGZpbGVuYW1lIHN0cmluZykg KCpDb25maWcsIGVycm9yKSB7Ci0rCS8vIFJlYWQgZmlsZSBjb250ZW50Ci0rCWRhdGEsIGVyciA6 PSBpb3V0aWwuUmVhZEZpbGUoZmlsZW5hbWUpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJLy8gSWYg ZmlsZSBkb2VzIG5vdCBleGlzdCwgcmV0dXJuIGVtcHR5IENvbmZpZyBzdHJ1Y3R1cmUKLSsJCWlm IG9zLklzTm90RXhpc3QoZXJyKSB7Ci0rCQkJcmV0dXJuICZDb25maWd7fSwgbmlsCi0rCQl9Ci0r CQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJmYWlsZWQgdG8gcmVhZCBjb25maWcgZmlsZTogJXci LCBlcnIpCi0rCX0KLSsKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4gbmlsLCBmbXQuRXJy b3JmKCJmYWlsZWQgdG8gcmVhZCBjb25maWcgZmlsZTogJXciLCBlcnIpCi0rCX0KLSsKLSsJLy8g UGFyc2UgSlNPTiBpbnRvIENvbmZpZyBzdHJ1Y3QKLSsJdmFyIHAgQ29uZmlnCi0rCWlmIGVyciA6 PSBqc29uLlVubWFyc2hhbChkYXRhLCAmcCk7IGVyciAhPSBuaWwgewotKwkJcmV0dXJuIG5pbCwg Zm10LkVycm9yZigiZmFpbGVkIHRvIHVubWFyc2hhbCBjb25maWc6ICV3IiwgZXJyKQotKwl9Ci0r Ci0rCXJldHVybiAmcCwgbmlsCi0rfQotKwotKy8vIFdyaXRlQ29uZmlnIHdyaXRlcyB0aGUgY29u ZmlndXJhdGlvbiBmcm9tIGEgQ29uZmlnIHN0cnVjdCB0byBhIEpTT04gZmlsZQotK2Z1bmMgV3Jp dGVDb25maWcoY29uZmlnICpDb25maWcsIGZpbGVuYW1lIHN0cmluZykgZXJyb3IgewotKwkvLyBN YXJzaGFsIHRoZSBjb25maWcgc3RydWN0IHRvIEpTT04KLSsJZGF0YSwgZXJyIDo9IGpzb24uTWFy c2hhbEluZGVudChjb25maWcsICIiLCAiICAiKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJldHVy biBmbXQuRXJyb3JmKCJmYWlsZWQgdG8gbWFyc2hhbCBjb25maWc6ICV3IiwgZXJyKQotKwl9Ci0r Ci0rCS8vIFdyaXRlIHRoZSBKU09OIGRhdGEgdG8gZmlsZQotKwllcnIgPSBpb3V0aWwuV3JpdGVG aWxlKGZpbGVuYW1lLCBkYXRhLCAwNjQ0KQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJldHVybiBm bXQuRXJyb3JmKCJmYWlsZWQgdG8gd3JpdGUgY29uZmlnIGZpbGU6ICV3IiwgZXJyKQotKwl9Ci0r Ci0rCXJldHVybiBuaWwKLSt9Ci0rCi0rLy8gQWRkUHJvdmlkZXIgYWRkcyBhIG5ldyBwcm92aWRl ciB0byB0aGUgY29uZmlndXJhdGlvbgotK2Z1bmMgKGMgKkNvbmZpZykgQWRkUHJvdmlkZXIoaWQg c3RyaW5nLCBwcm92aWRlciBQcm92aWRlckNvbmZpZykgewotKwlpZiBjLlByb3ZpZGVycyA9PSBu aWwgewotKwkJYy5Qcm92aWRlcnMgPSBtYWtlKG1hcFtzdHJpbmddUHJvdmlkZXJDb25maWcpCi0r CX0KLSsJYy5Qcm92aWRlcnNbaWRdID0gcHJvdmlkZXIKLSt9Ci0rCi0rLy8gR2V0UHJvdmlkZXIg cmV0cmlldmVzIGEgcHJvdmlkZXIgYnkgSUQKLStmdW5jIChjICpDb25maWcpIEdldFByb3ZpZGVy KGlkIHN0cmluZykgKCpQcm92aWRlckNvbmZpZywgYm9vbCkgewotKwlpZiBjLlByb3ZpZGVycyA9 PSBuaWwgewotKwkJcmV0dXJuIG5pbCwgZmFsc2UKLSsJfQotKwlwcm92aWRlciwgZXhpc3RzIDo9 IGMuUHJvdmlkZXJzW2lkXQotKwlyZXR1cm4gJnByb3ZpZGVyLCBleGlzdHMKLSt9Ci0rCi0rLy8g R2V0UHJvdmlkZXJPckRlZmF1bHQgcmV0cmlldmVzIGEgcHJvdmlkZXIgYnkgSUQgb3IgcmV0dXJu cyBhIGRlZmF1bHQgcHJvdmlkZXIgaWYgbm90IGZvdW5kCi0rZnVuYyAoYyAqQ29uZmlnKSBHZXRQ cm92aWRlck9yRGVmYXVsdChpZCBzdHJpbmcsIGRlZmF1bHRQcm92aWRlciBQcm92aWRlckNvbmZp ZykgKCpQcm92aWRlckNvbmZpZywgYm9vbCkgewotKwlpZiBjLlByb3ZpZGVycyA9PSBuaWwgewot KwkJcmV0dXJuICZkZWZhdWx0UHJvdmlkZXIsIGZhbHNlCi0rCX0KLSsJcHJvdmlkZXIsIGV4aXN0 cyA6PSBjLlByb3ZpZGVyc1tpZF0KLSsJaWYgIWV4aXN0cyB7Ci0rCQlyZXR1cm4gJmRlZmF1bHRQ cm92aWRlciwgZmFsc2UKLSsJfQotKwlyZXR1cm4gJnByb3ZpZGVyLCB0cnVlCi0rfQotKwotKy8v IEFkZE1vZGVsIGFkZHMgYSBuZXcgbW9kZWwgdG8gYSBzcGVjaWZpYyBwcm92aWRlcgotK2Z1bmMg KGMgKkNvbmZpZykgQWRkTW9kZWwocHJvdmlkZXJJRCBzdHJpbmcsIG1vZGVsIE1vZGVsKSBlcnJv ciB7Ci0rCXByb3ZpZGVyLCBleGlzdHMgOj0gYy5HZXRQcm92aWRlcihwcm92aWRlcklEKQotKwlp ZiAhZXhpc3RzIHsKLSsJCXJldHVybiBmbXQuRXJyb3JmKCJwcm92aWRlciAlcyBub3QgZm91bmQi LCBwcm92aWRlcklEKQotKwl9Ci0rCQotKwkvLyBDaGVjayBpZiBtb2RlbCB3aXRoIHNhbWUgSUQg YWxyZWFkeSBleGlzdHMKLSsJaWYgcHJvdmlkZXIuTW9kZWxzICE9IG5pbCB7Ci0rCQlmb3IgXywg ZXhpc3RpbmdNb2RlbCA6PSByYW5nZSBwcm92aWRlci5Nb2RlbHMgewotKwkJCWlmIGV4aXN0aW5n TW9kZWwuSUQgPT0gbW9kZWwuSUQgewotKwkJCQlyZXR1cm4gbmlsCi0rCQkJfQotKwkJfQotKwl9 Ci0rCQotKwlpZiBwcm92aWRlci5Nb2RlbHMgPT0gbmlsIHsKLSsJCXByb3ZpZGVyLk1vZGVscyA9 IFtdTW9kZWx7fQotKwl9Ci0rCXByb3ZpZGVyLk1vZGVscyA9IGFwcGVuZChwcm92aWRlci5Nb2Rl bHMsIG1vZGVsKQotKwljLlByb3ZpZGVyc1twcm92aWRlcklEXSA9ICpwcm92aWRlcgotKwlyZXR1 cm4gbmlsCi0rfQotKwotKy8vIENydXNoIGltcGxlbWVudHMgUnVubmVyIGFuZCBFZGl0b3IgZm9y IENydXNoIGludGVncmF0aW9uCi0rdHlwZSBDcnVzaCBzdHJ1Y3R7fQotKwotK2Z1bmMgKG8gKkNy dXNoKSBTdHJpbmcoKSBzdHJpbmcgeyByZXR1cm4gIkNydXNoIiB9Ci0rCi0rZnVuYyAobyAqQ3J1 c2gpIFJ1bihtb2RlbCBzdHJpbmcsIGFyZ3MgW11zdHJpbmcpIGVycm9yIHsKLSsJaWYgXywgZXJy IDo9IGV4ZWMuTG9va1BhdGgoImNydXNoIik7IGVyciAhPSBuaWwgewotKwkJcmV0dXJuIGZtdC5F cnJvcmYoImNydXNoIGlzIG5vdCBpbnN0YWxsZWQsIGluc3RhbGwgZnJvbSBodHRwczovL2NoYXJt LmxhbmQiKQotKwl9Ci0rCi0rCS8vIENhbGwgRWRpdCgpIHRvIGVuc3VyZSBjb25maWcgaXMgdXAt dG8tZGF0ZSBiZWZvcmUgbGF1bmNoCi0rCW1vZGVscyA6PSBbXXN0cmluZ3ttb2RlbH0KLSsJaWYg Y29uZmlnLCBlcnIgOj0gbG9hZEludGVncmF0aW9uKCJjcnVzaCIpOyBlcnIgPT0gbmlsICYmIGxl bihjb25maWcuTW9kZWxzKSA+IDAgewotKwkJbW9kZWxzID0gY29uZmlnLk1vZGVscwotKwl9Ci0r CWlmIGVyciA6PSBvLkVkaXQobW9kZWxzKTsgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4gZm10LkVy cm9yZigic2V0dXAgZmFpbGVkOiAldyIsIGVycikKLSsJfQotKwotKwljbWQgOj0gZXhlYy5Db21t YW5kKCJjcnVzaCIsIGFyZ3MuLi4pCi0rCWNtZC5TdGRpbiA9IG9zLlN0ZGluCi0rCWNtZC5TdGRv dXQgPSBvcy5TdGRvdXQKLSsJY21kLlN0ZGVyciA9IG9zLlN0ZGVycgotKwlyZXR1cm4gY21kLlJ1 bigpCi0rfQotKwotK2Z1bmMgKG8gKkNydXNoKSBQYXRocygpIFtdc3RyaW5nIHsKLSsJaG9tZSwg ZXJyIDo9IG9zLlVzZXJIb21lRGlyKCkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4gbmls Ci0rCX0KLSsKLSsJdmFyIHBhdGhzIFtdc3RyaW5nCi0rCXAgOj0gZmlsZXBhdGguSm9pbihob21l LCAiLmNvbmZpZyIsICJjcnVzaCIsICJjcnVzaC5qc29uIikKLSsJaWYgXywgZXJyIDo9IG9zLlN0 YXQocCk7IGVyciA9PSBuaWwgewotKwkJcGF0aHMgPSBhcHBlbmQocGF0aHMsIHApCi0rCX0KLSsJ c3AgOj0gZmlsZXBhdGguSm9pbihob21lLCAiLmxvY2FsIiwgInN0YXRlIiwgImNydXNoIiwgIm1v ZGVsLmpzb24iKQotKwlpZiBfLCBlcnIgOj0gb3MuU3RhdChzcCk7IGVyciA9PSBuaWwgewotKwkJ cGF0aHMgPSBhcHBlbmQocGF0aHMsIHNwKQotKwl9Ci0rCXJldHVybiBwYXRocwotK30KLSsKLStm dW5jIChvICpDcnVzaCkgRWRpdChtb2RlbExpc3QgW11zdHJpbmcpIGVycm9yIHsKLSsJaWYgbGVu KG1vZGVsTGlzdCkgPT0gMCB7Ci0rCQlyZXR1cm4gbmlsCi0rCX0KLSsKLSsJaG9tZSwgZXJyIDo9 IG9zLlVzZXJIb21lRGlyKCkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4gZXJyCi0rCX0K LSsKLSsJY29uZmlnUGF0aCA6PSBmaWxlcGF0aC5Kb2luKGhvbWUsICIuY29uZmlnIiwgImNydXNo IiwgImNydXNoLmpzb24iKQotKwlpZiBlcnIgOj0gb3MuTWtkaXJBbGwoZmlsZXBhdGguRGlyKGNv bmZpZ1BhdGgpLCAwbzc1NSk7IGVyciAhPSBuaWwgewotKwkJcmV0dXJuIGVycgotKwl9Ci0rCi0r CWNvbmZpZywgZXJyIDo9IFJlYWRDb25maWcoY29uZmlnUGF0aCkKLSsJaWYgZXJyICE9IG5pbCB7 Ci0rCQlyZXR1cm4gZXJyCi0rCX0KLSsKLSsJY29uZmlnLlNjaGVtYSA9ICJodHRwczovL2NoYXJt LmxhbmQvY3J1c2guanNvbiIKLSsKLSsJZGVmYXVsdFByb3ZpZGVyIDo9IFByb3ZpZGVyQ29uZmln ewotKwkJSUQ6ICAgICAgIm9sbGFtYSIsCi0rCQlOYW1lOiAgICAiT2xsYW1hIChsb2NhbCkiLAot KwkJQmFzZVVSTDogZW52Y29uZmlnLkhvc3QoKS5TdHJpbmcoKSArICIvdjEiLAotKwkJVHlwZTog ICAgIm9wZW5haS1jb21wYXQiLAotKwl9Ci0rCi0rCWNvbmZpZy5HZXRQcm92aWRlck9yRGVmYXVs dCgib2xsYW1hIiwgZGVmYXVsdFByb3ZpZGVyKQotKwotKwlmb3IgXywgbW9kZWwgOj0gcmFuZ2Ug bW9kZWxMaXN0IHsKLSsJCWZtdC5QcmludGYoIm1vZGVsOiAlc1xuIiwgbW9kZWwpCi0rCQluZXdN b2RlbCA6PSBNb2RlbHsKLSsJCQlJRDptb2RlbCwKLSsJCX0KLSsJCWVyciA9IGNvbmZpZy5BZGRN b2RlbCgib2xsYW1hIiwgbmV3TW9kZWwpCi0rCQlpZiBlcnIgIT0gbmlsIHsKLSsJCQlsb2cuUHJp bnRmKCJFcnJvciBhZGRpbmcgbW9kZWw6ICV2IiwgZXJyKQotKwkJfSBlbHNlIHsKLSsJCQlmbXQu UHJpbnRsbigiTW9kZWwgYWRkZWQgc3VjY2Vzc2Z1bGx5IHRvIHByb3ZpZGVyIikKLSsJCX0KLSsJ fQotKwotKwotKwotKwllcnIgPSBXcml0ZUNvbmZpZyhjb25maWcsIGNvbmZpZ1BhdGgpCi0rCWlm IGVyciAhPSBuaWwgewotKwkJbG9nLkZhdGFsKGVycikKLSsJfQotKwlyZXR1cm4gZXJyCi0rfQot KwotK2Z1bmMgKG8gKkNydXNoKSBNb2RlbHMoKSBbXXN0cmluZyB7Ci0rCWhvbWUsIGVyciA6PSBv cy5Vc2VySG9tZURpcigpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJcmV0dXJuIG5pbAotKwl9Ci0r CWNvbmZpZywgZXJyIDo9IHJlYWRKU09ORmlsZShmaWxlcGF0aC5Kb2luKGhvbWUsICIuY29uZmln IiwgImNydXNoIiwgImNydXNoLmpzb24iKSkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4g bmlsCi0rCX0KLSsJcHJvdmlkZXIsIF8gOj0gY29uZmlnWyJwcm92aWRlciJdLihtYXBbc3RyaW5n XWFueSkKLSsJb2xsYW1hLCBfIDo9IHByb3ZpZGVyWyJvbGxhbWEiXS4obWFwW3N0cmluZ11hbnkp Ci0rCW1vZGVscywgXyA6PSBvbGxhbWFbIm1vZGVscyJdLihtYXBbc3RyaW5nXWFueSkKLSsJaWYg bGVuKG1vZGVscykgPT0gMCB7Ci0rCQlyZXR1cm4gbmlsCi0rCX0KLSsJa2V5cyA6PSBzbGljZXMu Q29sbGVjdChtYXBzLktleXMobW9kZWxzKSkKLSsJc2xpY2VzLlNvcnQoa2V5cykKLSsJcmV0dXJu IGtleXMKLSt9Ci0rCi1kaWZmIC0tZ2l0IGEvY21kL2NvbmZpZy9jcnVzaF90ZXN0LmdvIGIvY21k L2NvbmZpZy9jcnVzaF90ZXN0LmdvCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MDAwMDAwLi5kZmE2NzQzYWJiMzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2NtZC9jb25maWcvY3J1 c2hfdGVzdC5nbwotQEAgLTAsMCArMSw2NjggQEAKLStwYWNrYWdlIGNvbmZpZwotKwotK2ltcG9y dCAoCi0rCSJlbmNvZGluZy9qc29uIgotKwkiZm10IgotKwkib3MiCi0rCSJwYXRoL2ZpbGVwYXRo IgotKwkidGVzdGluZyIKLSspCi0rCi0rZnVuYyBUZXN0Q3J1c2hJbnRlZ3JhdGlvbih0ICp0ZXN0 aW5nLlQpIHsKLSsJbyA6PSAmQ3J1c2h7fQotKwotKwl0LlJ1bigiU3RyaW5nIiwgZnVuYyh0ICp0 ZXN0aW5nLlQpIHsKLSsJCWlmIGdvdCA6PSBvLlN0cmluZygpOyBnb3QgIT0gIkNydXNoIiB7Ci0r CQkJdC5FcnJvcmYoIlN0cmluZygpID0gJXEsIHdhbnQgJXEiLCBnb3QsICJDcnVzaCIpCi0rCQl9 Ci0rCX0pCi0rCi0rCXQuUnVuKCJpbXBsZW1lbnRzIFJ1bm5lciIsIGZ1bmModCAqdGVzdGluZy5U KSB7Ci0rCQl2YXIgXyBSdW5uZXIgPSBvCi0rCX0pCi0rCi0rCXQuUnVuKCJpbXBsZW1lbnRzIEVk aXRvciIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQl2YXIgXyBFZGl0b3IgPSBvCi0rCX0pCi0r fQotKwotK2Z1bmMgVGVzdENydXNoRWRpdCh0ICp0ZXN0aW5nLlQpIHsKLSsJbyA6PSAmQ3J1c2h7 fQotKwl0bXBEaXIgOj0gdC5UZW1wRGlyKCkKLSsJc2V0VGVzdEhvbWUodCwgdG1wRGlyKQotKwot Kwljb25maWdEaXIgOj0gZmlsZXBhdGguSm9pbih0bXBEaXIsICIuY29uZmlnIiwgImNydXNoIikK LSsJY29uZmlnUGF0aCA6PSBmaWxlcGF0aC5Kb2luKGNvbmZpZ0RpciwgImNydXNoLmpzb24iKQot KwlzdGF0ZURpciA6PSBmaWxlcGF0aC5Kb2luKHRtcERpciwgIi5sb2NhbCIsICJzdGF0ZSIsICJj cnVzaCIpCi0rCXN0YXRlUGF0aCA6PSBmaWxlcGF0aC5Kb2luKHN0YXRlRGlyLCAibW9kZWwuanNv biIpCi0rCi0rCWNsZWFudXAgOj0gZnVuYygpIHsKLSsJCW9zLlJlbW92ZUFsbChjb25maWdEaXIp Ci0rCQlvcy5SZW1vdmVBbGwoc3RhdGVEaXIpCi0rCX0KLSsKLSsJdC5SdW4oImZyZXNoIGluc3Rh bGwiLCBmdW5jKHQgKnRlc3RpbmcuVCkgewotKwkJY2xlYW51cCgpCi0rCQlpZiBlcnIgOj0gby5F ZGl0KFtdc3RyaW5neyJsbGFtYTMuMiJ9KTsgZXJyICE9IG5pbCB7Ci0rCQkJdC5GYXRhbChlcnIp Ci0rCQl9Ci0rCQlhc3NlcnRDcnVzaE1vZGVsRXhpc3RzKHQsIGNvbmZpZ1BhdGgsICJsbGFtYTMu MiIpCi0rCQlhc3NlcnRDcnVzaFJlY2VudE1vZGVsKHQsIHN0YXRlUGF0aCwgMCwgIm9sbGFtYSIs ICJsbGFtYTMuMiIpCi0rCX0pCi0rCi0rCXQuUnVuKCJwcmVzZXJ2ZSBvdGhlciBwcm92aWRlcnMi LCBmdW5jKHQgKnRlc3RpbmcuVCkgewotKwkJY2xlYW51cCgpCi0rCQlvcy5Na2RpckFsbChjb25m aWdEaXIsIDBvNzU1KQotKwkJb3MuV3JpdGVGaWxlKGNvbmZpZ1BhdGgsIFtdYnl0ZShgeyJwcm92 aWRlciI6eyJhbnRocm9waWMiOnsiYXBpS2V5IjoieHh4In19fWApLCAwbzY0NCkKLSsJCWlmIGVy ciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pOyBlcnIgIT0gbmlsIHsKLSsJCQl0LkZh dGFsKGVycikKLSsJCX0KLSsJCWRhdGEsIF8gOj0gb3MuUmVhZEZpbGUoY29uZmlnUGF0aCkKLSsJ CXZhciBjZmcgbWFwW3N0cmluZ11hbnkKLSsJCWpzb24uVW5tYXJzaGFsKGRhdGEsICZjZmcpCi0r CQlwcm92aWRlciA6PSBjZmdbInByb3ZpZGVyIl0uKG1hcFtzdHJpbmddYW55KQotKwkJaWYgcHJv dmlkZXJbImFudGhyb3BpYyJdID09IG5pbCB7Ci0rCQkJdC5FcnJvcigiYW50aHJvcGljIHByb3Zp ZGVyIHdhcyByZW1vdmVkIikKLSsJCX0KLSsJCWFzc2VydENydXNoTW9kZWxFeGlzdHModCwgY29u ZmlnUGF0aCwgImxsYW1hMy4yIikKLSsJfSkKLSsKLSsJdC5SdW4oInByZXNlcnZlIG90aGVyIG1v ZGVscyIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQljbGVhbnVwKCkKLSsJCW9zLk1rZGlyQWxs KGNvbmZpZ0RpciwgMG83NTUpCi0rCQlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0aCwgW11ieXRlKGB7 InByb3ZpZGVyIjp7Im9sbGFtYSI6eyJtb2RlbHMiOnsibWlzdHJhbCI6eyJuYW1lIjoiTWlzdHJh bCJ9fX19fWApLCAwbzY0NCkKLSsJCWlmIGVyciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4y In0pOyBlcnIgIT0gbmlsIHsKLSsJCQl0LkZhdGFsKGVycikKLSsJCX0KLSsJCWFzc2VydENydXNo TW9kZWxFeGlzdHModCwgY29uZmlnUGF0aCwgIm1pc3RyYWwiKQotKwkJYXNzZXJ0Q3J1c2hNb2Rl bEV4aXN0cyh0LCBjb25maWdQYXRoLCAibGxhbWEzLjIiKQotKwl9KQotKwotKwl0LlJ1bigidXBk YXRlIGV4aXN0aW5nIG1vZGVsIiwgZnVuYyh0ICp0ZXN0aW5nLlQpIHsKLSsJCWNsZWFudXAoKQot KwkJby5FZGl0KFtdc3RyaW5neyJsbGFtYTMuMiJ9KQotKwkJby5FZGl0KFtdc3RyaW5neyJsbGFt YTMuMiJ9KQotKwkJYXNzZXJ0Q3J1c2hNb2RlbEV4aXN0cyh0LCBjb25maWdQYXRoLCAibGxhbWEz LjIiKQotKwl9KQotKwotKwl0LlJ1bigicHJlc2VydmUgdG9wLWxldmVsIGtleXMiLCBmdW5jKHQg KnRlc3RpbmcuVCkgewotKwkJY2xlYW51cCgpCi0rCQlvcy5Na2RpckFsbChjb25maWdEaXIsIDBv NzU1KQotKwkJb3MuV3JpdGVGaWxlKGNvbmZpZ1BhdGgsIFtdYnl0ZShgeyJ0aGVtZSI6ImRhcmsi LCJrZXliaW5kaW5ncyI6e319YCksIDBvNjQ0KQotKwkJaWYgZXJyIDo9IG8uRWRpdChbXXN0cmlu Z3sibGxhbWEzLjIifSk7IGVyciAhPSBuaWwgewotKwkJCXQuRmF0YWwoZXJyKQotKwkJfQotKwkJ ZGF0YSwgXyA6PSBvcy5SZWFkRmlsZShjb25maWdQYXRoKQotKwkJdmFyIGNmZyBtYXBbc3RyaW5n XWFueQotKwkJanNvbi5Vbm1hcnNoYWwoZGF0YSwgJmNmZykKLSsJCWlmIGNmZ1sidGhlbWUiXSAh PSAiZGFyayIgewotKwkJCXQuRXJyb3IoInRoZW1lIHdhcyByZW1vdmVkIikKLSsJCX0KLSsJCWlm IGNmZ1sia2V5YmluZGluZ3MiXSA9PSBuaWwgewotKwkJCXQuRXJyb3IoImtleWJpbmRpbmdzIHdh cyByZW1vdmVkIikKLSsJCX0KLSsJfSkKLSsKLSsJdC5SdW4oIm1vZGVsIHN0YXRlIC0gaW5zZXJ0 IGF0IGluZGV4IDAiLCBmdW5jKHQgKnRlc3RpbmcuVCkgewotKwkJY2xlYW51cCgpCi0rCQlvcy5N a2RpckFsbChzdGF0ZURpciwgMG83NTUpCi0rCQlvcy5Xcml0ZUZpbGUoc3RhdGVQYXRoLCBbXWJ5 dGUoYHsicmVjZW50IjpbeyJwcm92aWRlcklEIjoiYW50aHJvcGljIiwibW9kZWxJRCI6ImNsYXVk ZSJ9XSwiZmF2b3JpdGUiOltdLCJ2YXJpYW50Ijp7fX1gKSwgMG82NDQpCi0rCQlpZiBlcnIgOj0g by5FZGl0KFtdc3RyaW5neyJsbGFtYTMuMiJ9KTsgZXJyICE9IG5pbCB7Ci0rCQkJdC5GYXRhbChl cnIpCi0rCQl9Ci0rCQlhc3NlcnRDcnVzaFJlY2VudE1vZGVsKHQsIHN0YXRlUGF0aCwgMCwgIm9s bGFtYSIsICJsbGFtYTMuMiIpCi0rCQlhc3NlcnRDcnVzaFJlY2VudE1vZGVsKHQsIHN0YXRlUGF0 aCwgMSwgImFudGhyb3BpYyIsICJjbGF1ZGUiKQotKwl9KQotKwotKwl0LlJ1bigibW9kZWwgc3Rh dGUgLSBwcmVzZXJ2ZSBmYXZvcml0ZXMgYW5kIHZhcmlhbnRzIiwgZnVuYyh0ICp0ZXN0aW5nLlQp IHsKLSsJCWNsZWFudXAoKQotKwkJb3MuTWtkaXJBbGwoc3RhdGVEaXIsIDBvNzU1KQotKwkJb3Mu V3JpdGVGaWxlKHN0YXRlUGF0aCwgW11ieXRlKGB7InJlY2VudCI6W10sImZhdm9yaXRlIjpbeyJw cm92aWRlcklEIjoieCIsIm1vZGVsSUQiOiJ5In1dLCJ2YXJpYW50Ijp7ImEiOiJiIn19YCksIDBv NjQ0KQotKwkJaWYgZXJyIDo9IG8uRWRpdChbXXN0cmluZ3sibGxhbWEzLjIifSk7IGVyciAhPSBu aWwgewotKwkJCXQuRmF0YWwoZXJyKQotKwkJfQotKwkJZGF0YSwgXyA6PSBvcy5SZWFkRmlsZShz dGF0ZVBhdGgpCi0rCQl2YXIgc3RhdGUgbWFwW3N0cmluZ11hbnkKLSsJCWpzb24uVW5tYXJzaGFs KGRhdGEsICZzdGF0ZSkKLSsJCWlmIGxlbihzdGF0ZVsiZmF2b3JpdGUiXS4oW11hbnkpKSAhPSAx IHsKLSsJCQl0LkVycm9yKCJmYXZvcml0ZSB3YXMgbW9kaWZpZWQiKQotKwkJfQotKwkJaWYgc3Rh dGVbInZhcmlhbnQiXS4obWFwW3N0cmluZ11hbnkpWyJhIl0gIT0gImIiIHsKLSsJCQl0LkVycm9y KCJ2YXJpYW50IHdhcyBtb2RpZmllZCIpCi0rCQl9Ci0rCX0pCi0rCi0rCXQuUnVuKCJtb2RlbCBz dGF0ZSAtIGRlZHVwbGljYXRlIG9uIHJlLWFkZCIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQlj bGVhbnVwKCkKLSsJCW9zLk1rZGlyQWxsKHN0YXRlRGlyLCAwbzc1NSkKLSsJCW9zLldyaXRlRmls ZShzdGF0ZVBhdGgsIFtdYnl0ZShgeyJyZWNlbnQiOlt7InByb3ZpZGVySUQiOiJvbGxhbWEiLCJt b2RlbElEIjoibGxhbWEzLjIifSx7InByb3ZpZGVySUQiOiJhbnRocm9waWMiLCJtb2RlbElEIjoi Y2xhdWRlIn1dLCJmYXZvcml0ZSI6W10sInZhcmlhbnQiOnt9fWApLCAwbzY0NCkKLSsJCWlmIGVy ciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pOyBlcnIgIT0gbmlsIHsKLSsJCQl0LkZh dGFsKGVycikKLSsJCX0KLSsJCWRhdGEsIF8gOj0gb3MuUmVhZEZpbGUoc3RhdGVQYXRoKQotKwkJ dmFyIHN0YXRlIG1hcFtzdHJpbmddYW55Ci0rCQlqc29uLlVubWFyc2hhbChkYXRhLCAmc3RhdGUp Ci0rCQlyZWNlbnQgOj0gc3RhdGVbInJlY2VudCJdLihbXWFueSkKLSsJCWlmIGxlbihyZWNlbnQp ICE9IDIgewotKwkJCXQuRXJyb3JmKCJleHBlY3RlZCAyIHJlY2VudCBlbnRyaWVzLCBnb3QgJWQi LCBsZW4ocmVjZW50KSkKLSsJCX0KLSsJCWFzc2VydENydXNoUmVjZW50TW9kZWwodCwgc3RhdGVQ YXRoLCAwLCAib2xsYW1hIiwgImxsYW1hMy4yIikKLSsJfSkKLSsKLSsJdC5SdW4oInJlbW92ZSBt b2RlbCIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQljbGVhbnVwKCkKLSsJCS8vIEZpcnN0IGFk ZCB0d28gbW9kZWxzCi0rCQlvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIiwgIm1pc3RyYWwifSkK LSsJCWFzc2VydENydXNoTW9kZWxFeGlzdHModCwgY29uZmlnUGF0aCwgImxsYW1hMy4yIikKLSsJ CWFzc2VydENydXNoTW9kZWxFeGlzdHModCwgY29uZmlnUGF0aCwgIm1pc3RyYWwiKQotKwotKwkJ Ly8gVGhlbiByZW1vdmUgb25lIGJ5IG9ubHkgc2VsZWN0aW5nIHRoZSBvdGhlcgotKwkJby5FZGl0 KFtdc3RyaW5neyJsbGFtYTMuMiJ9KQotKwkJYXNzZXJ0Q3J1c2hNb2RlbEV4aXN0cyh0LCBjb25m aWdQYXRoLCAibGxhbWEzLjIiKQotKwkJYXNzZXJ0Q3J1c2hNb2RlbE5vdEV4aXN0cyh0LCBjb25m aWdQYXRoLCAibWlzdHJhbCIpCi0rCX0pCi0rCi0rCXQuUnVuKCJwcmVzZXJ2ZSB1c2VyIGN1c3Rv bWl6YXRpb25zIG9uIG1hbmFnZWQgbW9kZWxzIiwgZnVuYyh0ICp0ZXN0aW5nLlQpIHsKLSsJCWNs ZWFudXAoKQotKwkJaWYgZXJyIDo9IG8uRWRpdChbXXN0cmluZ3sibGxhbWEzLjIifSk7IGVyciAh PSBuaWwgewotKwkJCXQuRmF0YWwoZXJyKQotKwkJfQotKwotKwkJLy8gQWRkIGN1c3RvbSBmaWVs ZHMgdG8gdGhlIG1vZGVsIGVudHJ5IChzaW11bGF0aW5nIHVzZXIgZWRpdHMpCi0rCQlkYXRhLCBf IDo9IG9zLlJlYWRGaWxlKGNvbmZpZ1BhdGgpCi0rCQl2YXIgY2ZnIG1hcFtzdHJpbmddYW55Ci0r CQlqc29uLlVubWFyc2hhbChkYXRhLCAmY2ZnKQotKwkJcHJvdmlkZXIgOj0gY2ZnWyJwcm92aWRl ciJdLihtYXBbc3RyaW5nXWFueSkKLSsJCW9sbGFtYSA6PSBwcm92aWRlclsib2xsYW1hIl0uKG1h cFtzdHJpbmddYW55KQotKwkJbW9kZWxzIDo9IG9sbGFtYVsibW9kZWxzIl0uKG1hcFtzdHJpbmdd YW55KQotKwkJZW50cnkgOj0gbW9kZWxzWyJsbGFtYTMuMiJdLihtYXBbc3RyaW5nXWFueSkKLSsJ CWVudHJ5WyJfbXlQcmVmIl0gPSAiY3VzdG9tLXZhbHVlIgotKwkJZW50cnlbIl9teU51bSJdID0g NDIKLSsJCWNvbmZpZ0RhdGEsIF8gOj0ganNvbi5NYXJzaGFsSW5kZW50KGNmZywgIiIsICIgICIp Ci0rCQlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0aCwgY29uZmlnRGF0YSwgMG82NDQpCi0rCi0rCQkv LyBSZS1ydW4gRWRpdCDigJQgc2hvdWxkIHByZXNlcnZlIGN1c3RvbSBmaWVsZHMKLSsJCWlmIGVy ciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pOyBlcnIgIT0gbmlsIHsKLSsJCQl0LkZh dGFsKGVycikKLSsJCX0KLSsKLSsJCWRhdGEsIF8gPSBvcy5SZWFkRmlsZShjb25maWdQYXRoKQot KwkJanNvbi5Vbm1hcnNoYWwoZGF0YSwgJmNmZykKLSsJCXByb3ZpZGVyID0gY2ZnWyJwcm92aWRl ciJdLihtYXBbc3RyaW5nXWFueSkKLSsJCW9sbGFtYSA9IHByb3ZpZGVyWyJvbGxhbWEiXS4obWFw W3N0cmluZ11hbnkpCi0rCQltb2RlbHMgPSBvbGxhbWFbIm1vZGVscyJdLihtYXBbc3RyaW5nXWFu eSkKLSsJCWVudHJ5ID0gbW9kZWxzWyJsbGFtYTMuMiJdLihtYXBbc3RyaW5nXWFueSkKLSsKLSsJ CWlmIGVudHJ5WyJfbXlQcmVmIl0gIT0gImN1c3RvbS12YWx1ZSIgewotKwkJCXQuRXJyb3JmKCJf bXlQcmVmIHdhcyBsb3N0OiBnb3QgJXYiLCBlbnRyeVsiX215UHJlZiJdKQotKwkJfQotKwkJaWYg ZW50cnlbIl9teU51bSJdICE9IGZsb2F0NjQoNDIpIHsKLSsJCQl0LkVycm9yZigiX215TnVtIHdh cyBsb3N0OiBnb3QgJXYiLCBlbnRyeVsiX215TnVtIl0pCi0rCQl9Ci0rCQlpZiB2LCBvayA6PSBl bnRyeVsiX2xhdW5jaCJdLihib29sKTsgIW9rIHx8ICF2IHsKLSsJCQl0LkVycm9yZigiX2xhdW5j aCBtYXJrZXIgbWlzc2luZyBvciBmYWxzZTogZ290ICV2IiwgZW50cnlbIl9sYXVuY2giXSkKLSsJ CX0KLSsJfSkKLSsKLSsJdC5SdW4oIm1pZ3JhdGUgbGVnYWN5IFtPbGxhbWFdIHN1ZmZpeCBlbnRy aWVzIiwgZnVuYyh0ICp0ZXN0aW5nLlQpIHsKLSsJCWNsZWFudXAoKQotKwkJLy8gV3JpdGUgYSBj b25maWcgd2l0aCBhIGxlZ2FjeSBlbnRyeSAoaGFzIFtPbGxhbWFdIHN1ZmZpeCBidXQgbm8gX2xh dW5jaCBtYXJrZXIpCi0rCQlvcy5Na2RpckFsbChjb25maWdEaXIsIDBvNzU1KQotKwkJb3MuV3Jp dGVGaWxlKGNvbmZpZ1BhdGgsIFtdYnl0ZShgeyJwcm92aWRlciI6eyJvbGxhbWEiOnsibW9kZWxz Ijp7ImxsYW1hMy4yIjp7Im5hbWUiOiJsbGFtYTMuMiBbT2xsYW1hXSJ9fX19fWApLCAwbzY0NCkK LSsKLSsJCWlmIGVyciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pOyBlcnIgIT0gbmls IHsKLSsJCQl0LkZhdGFsKGVycikKLSsJCX0KLSsKLSsJCWRhdGEsIF8gOj0gb3MuUmVhZEZpbGUo Y29uZmlnUGF0aCkKLSsJCXZhciBjZmcgbWFwW3N0cmluZ11hbnkKLSsJCWpzb24uVW5tYXJzaGFs KGRhdGEsICZjZmcpCi0rCQlwcm92aWRlciA6PSBjZmdbInByb3ZpZGVyIl0uKG1hcFtzdHJpbmdd YW55KQotKwkJb2xsYW1hIDo9IHByb3ZpZGVyWyJvbGxhbWEiXS4obWFwW3N0cmluZ11hbnkpCi0r CQltb2RlbHMgOj0gb2xsYW1hWyJtb2RlbHMiXS4obWFwW3N0cmluZ11hbnkpCi0rCQllbnRyeSA6 PSBtb2RlbHNbImxsYW1hMy4yIl0uKG1hcFtzdHJpbmddYW55KQotKwotKwkJLy8gX2xhdW5jaCBt YXJrZXIgc2hvdWxkIGJlIGFkZGVkCi0rCQlpZiB2LCBvayA6PSBlbnRyeVsiX2xhdW5jaCJdLihi b29sKTsgIW9rIHx8ICF2IHsKLSsJCQl0LkVycm9yZigiX2xhdW5jaCBtYXJrZXIgbm90IGFkZGVk IGR1cmluZyBtaWdyYXRpb246IGdvdCAldiIsIGVudHJ5WyJfbGF1bmNoIl0pCi0rCQl9Ci0rCQkv LyBbT2xsYW1hXSBzdWZmaXggc2hvdWxkIGJlIHN0cmlwcGVkCi0rCQlpZiBuYW1lLCBvayA6PSBl bnRyeVsibmFtZSJdLihzdHJpbmcpOyAhb2sgfHwgbmFtZSAhPSAibGxhbWEzLjIiIHsKLSsJCQl0 LkVycm9yZigibmFtZSBzdWZmaXggbm90IHN0cmlwcGVkOiBnb3QgJXEiLCBlbnRyeVsibmFtZSJd KQotKwkJfQotKwl9KQotKwotKwl0LlJ1bigicmVtb3ZlIG1vZGVsIHByZXNlcnZlcyBub24tb2xs YW1hIG1vZGVscyIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQljbGVhbnVwKCkKLSsJCW9zLk1r ZGlyQWxsKGNvbmZpZ0RpciwgMG83NTUpCi0rCQkvLyBBZGQgYSBub24tT2xsYW1hIG1vZGVsIG1h bnVhbGx5Ci0rCQlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0aCwgW11ieXRlKGB7InByb3ZpZGVyIjp7 Im9sbGFtYSI6eyJtb2RlbHMiOnsiZXh0ZXJuYWwiOnsibmFtZSI6IkV4dGVybmFsIE1vZGVsIn19 fX19YCksIDBvNjQ0KQotKwotKwkJby5FZGl0KFtdc3RyaW5neyJsbGFtYTMuMiJ9KQotKwkJYXNz ZXJ0Q3J1c2hNb2RlbEV4aXN0cyh0LCBjb25maWdQYXRoLCAibGxhbWEzLjIiKQotKwkJYXNzZXJ0 Q3J1c2hNb2RlbEV4aXN0cyh0LCBjb25maWdQYXRoLCAiZXh0ZXJuYWwiKSAvLyBTaG91bGQgYmUg cHJlc2VydmVkCi0rCX0pCi0rfQotKwotK2Z1bmMgYXNzZXJ0Q3J1c2hNb2RlbEV4aXN0cyh0ICp0 ZXN0aW5nLlQsIHBhdGgsIG1vZGVsIHN0cmluZykgewotKwl0LkhlbHBlcigpCi0rCWRhdGEsIGVy ciA6PSBvcy5SZWFkRmlsZShwYXRoKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWwoZXJy KQotKwl9Ci0rCXZhciBjZmcgbWFwW3N0cmluZ11hbnkKLSsJaWYgZXJyIDo9IGpzb24uVW5tYXJz aGFsKGRhdGEsICZjZmcpOyBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWwoZXJyKQotKwl9Ci0rCXBy b3ZpZGVyLCBvayA6PSBjZmdbInByb3ZpZGVyIl0uKG1hcFtzdHJpbmddYW55KQotKwlpZiAhb2sg ewotKwkJdC5GYXRhbCgicHJvdmlkZXIgbm90IGZvdW5kIikKLSsJfQotKwlvbGxhbWEsIG9rIDo9 IHByb3ZpZGVyWyJvbGxhbWEiXS4obWFwW3N0cmluZ11hbnkpCi0rCWlmICFvayB7Ci0rCQl0LkZh dGFsKCJvbGxhbWEgcHJvdmlkZXIgbm90IGZvdW5kIikKLSsJfQotKwltb2RlbHMsIG9rIDo9IG9s bGFtYVsibW9kZWxzIl0uKG1hcFtzdHJpbmddYW55KQotKwlpZiAhb2sgewotKwkJdC5GYXRhbCgi bW9kZWxzIG5vdCBmb3VuZCIpCi0rCX0KLSsJaWYgbW9kZWxzW21vZGVsXSA9PSBuaWwgewotKwkJ dC5FcnJvcmYoIm1vZGVsICVzIG5vdCBmb3VuZCIsIG1vZGVsKQotKwl9Ci0rfQotKwotK2Z1bmMg YXNzZXJ0Q3J1c2hNb2RlbE5vdEV4aXN0cyh0ICp0ZXN0aW5nLlQsIHBhdGgsIG1vZGVsIHN0cmlu ZykgewotKwl0LkhlbHBlcigpCi0rCWRhdGEsIGVyciA6PSBvcy5SZWFkRmlsZShwYXRoKQotKwlp ZiBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWwoZXJyKQotKwl9Ci0rCXZhciBjZmcgbWFwW3N0cmlu Z11hbnkKLSsJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGRhdGEsICZjZmcpOyBlcnIgIT0gbmls IHsKLSsJCXQuRmF0YWwoZXJyKQotKwl9Ci0rCXByb3ZpZGVyLCBvayA6PSBjZmdbInByb3ZpZGVy Il0uKG1hcFtzdHJpbmddYW55KQotKwlpZiAhb2sgewotKwkJcmV0dXJuIC8vIE5vIHByb3ZpZGVy IG1lYW5zIG5vIG1vZGVsCi0rCX0KLSsJb2xsYW1hLCBvayA6PSBwcm92aWRlclsib2xsYW1hIl0u KG1hcFtzdHJpbmddYW55KQotKwlpZiAhb2sgewotKwkJcmV0dXJuIC8vIE5vIG9sbGFtYSBtZWFu cyBubyBtb2RlbAotKwl9Ci0rCW1vZGVscywgb2sgOj0gb2xsYW1hWyJtb2RlbHMiXS4obWFwW3N0 cmluZ11hbnkpCi0rCWlmICFvayB7Ci0rCQlyZXR1cm4gLy8gTm8gbW9kZWxzIG1lYW5zIG5vIG1v ZGVsCi0rCX0KLSsJaWYgbW9kZWxzW21vZGVsXSAhPSBuaWwgewotKwkJdC5FcnJvcmYoIm1vZGVs ICVzIHNob3VsZCBub3QgZXhpc3QgYnV0IHdhcyBmb3VuZCIsIG1vZGVsKQotKwl9Ci0rfQotKwot K2Z1bmMgYXNzZXJ0Q3J1c2hSZWNlbnRNb2RlbCh0ICp0ZXN0aW5nLlQsIHBhdGggc3RyaW5nLCBp bmRleCBpbnQsIHByb3ZpZGVySUQsIG1vZGVsSUQgc3RyaW5nKSB7Ci0rCXQuSGVscGVyKCkKLSsJ ZGF0YSwgZXJyIDo9IG9zLlJlYWRGaWxlKHBhdGgpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJdC5G YXRhbChlcnIpCi0rCX0KLSsJdmFyIHN0YXRlIG1hcFtzdHJpbmddYW55Ci0rCWlmIGVyciA6PSBq c29uLlVubWFyc2hhbChkYXRhLCAmc3RhdGUpOyBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWwoZXJy KQotKwl9Ci0rCXJlY2VudCwgb2sgOj0gc3RhdGVbInJlY2VudCJdLihbXWFueSkKLSsJaWYgIW9r IHsKLSsJCXQuRmF0YWwoInJlY2VudCBub3QgZm91bmQiKQotKwl9Ci0rCWlmIGluZGV4ID49IGxl bihyZWNlbnQpIHsKLSsJCXQuRmF0YWxmKCJpbmRleCAlZCBvdXQgb2YgcmFuZ2UgKGxlbj0lZCki LCBpbmRleCwgbGVuKHJlY2VudCkpCi0rCX0KLSsJZW50cnksIG9rIDo9IHJlY2VudFtpbmRleF0u KG1hcFtzdHJpbmddYW55KQotKwlpZiAhb2sgewotKwkJdC5GYXRhbCgiZW50cnkgaXMgbm90IGEg bWFwIikKLSsJfQotKwlpZiBlbnRyeVsicHJvdmlkZXJJRCJdICE9IHByb3ZpZGVySUQgewotKwkJ dC5FcnJvcmYoImV4cGVjdGVkIHByb3ZpZGVySUQgJXMsIGdvdCAlcyIsIHByb3ZpZGVySUQsIGVu dHJ5WyJwcm92aWRlcklEIl0pCi0rCX0KLSsJaWYgZW50cnlbIm1vZGVsSUQiXSAhPSBtb2RlbElE IHsKLSsJCXQuRXJyb3JmKCJleHBlY3RlZCBtb2RlbElEICVzLCBnb3QgJXMiLCBtb2RlbElELCBl bnRyeVsibW9kZWxJRCJdKQotKwl9Ci0rfQotKwotKy8vIEVkZ2UgY2FzZSB0ZXN0cyBmb3IgY3J1 c2guZ28KLSsKLStmdW5jIFRlc3RDcnVzaEVkaXRfQ29ycnVwdGVkQ29uZmlnSlNPTih0ICp0ZXN0 aW5nLlQpIHsKLSsJbyA6PSAmQ3J1c2h7fQotKwl0bXBEaXIgOj0gdC5UZW1wRGlyKCkKLSsJc2V0 VGVzdEhvbWUodCwgdG1wRGlyKQotKwotKwljb25maWdEaXIgOj0gZmlsZXBhdGguSm9pbih0bXBE aXIsICIuY29uZmlnIiwgImNydXNoIikKLSsJY29uZmlnUGF0aCA6PSBmaWxlcGF0aC5Kb2luKGNv bmZpZ0RpciwgImNydXNoLmpzb24iKQotKwotKwlvcy5Na2RpckFsbChjb25maWdEaXIsIDBvNzU1 KQotKwlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0aCwgW11ieXRlKGB7Y29ycnVwdGVkIGpzb24gY29u dGVudGApLCAwbzY0NCkKLSsKLSsJLy8gU2hvdWxkIG5vdCBwYW5pYyAtIGNvcnJ1cHRlZCBKU09O IHNob3VsZCBiZSB0cmVhdGVkIGFzIGVtcHR5Ci0rCWVyciA6PSBvLkVkaXQoW11zdHJpbmd7Imxs YW1hMy4yIn0pCi0rCWlmIGVyciAhPSBuaWwgewotKwkJdC5GYXRhbGYoIkVkaXQgZmFpbGVkIHdp dGggY29ycnVwdGVkIGNvbmZpZzogJXYiLCBlcnIpCi0rCX0KLSsKLSsJLy8gVmVyaWZ5IHZhbGlk IEpTT04gd2FzIGNyZWF0ZWQKLSsJZGF0YSwgXyA6PSBvcy5SZWFkRmlsZShjb25maWdQYXRoKQot Kwl2YXIgY2ZnIG1hcFtzdHJpbmddYW55Ci0rCWlmIGVyciA6PSBqc29uLlVubWFyc2hhbChkYXRh LCAmY2ZnKTsgZXJyICE9IG5pbCB7Ci0rCQl0LkVycm9yZigicmVzdWx0aW5nIGNvbmZpZyBpcyBu b3QgdmFsaWQgSlNPTjogJXYiLCBlcnIpCi0rCX0KLSt9Ci0rCi0rZnVuYyBUZXN0Q3J1c2hFZGl0 X0NvcnJ1cHRlZFN0YXRlSlNPTih0ICp0ZXN0aW5nLlQpIHsKLSsJbyA6PSAmQ3J1c2h7fQotKwl0 bXBEaXIgOj0gdC5UZW1wRGlyKCkKLSsJc2V0VGVzdEhvbWUodCwgdG1wRGlyKQotKwotKwlzdGF0 ZURpciA6PSBmaWxlcGF0aC5Kb2luKHRtcERpciwgIi5sb2NhbCIsICJzdGF0ZSIsICJjcnVzaCIp Ci0rCXN0YXRlUGF0aCA6PSBmaWxlcGF0aC5Kb2luKHN0YXRlRGlyLCAibW9kZWwuanNvbiIpCi0r Ci0rCW9zLk1rZGlyQWxsKHN0YXRlRGlyLCAwbzc1NSkKLSsJb3MuV3JpdGVGaWxlKHN0YXRlUGF0 aCwgW11ieXRlKGB7Y29ycnVwdGVkIHN0YXRlYCksIDBvNjQ0KQotKwotKwllcnIgOj0gby5FZGl0 KFtdc3RyaW5neyJsbGFtYTMuMiJ9KQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWxmKCJF ZGl0IGZhaWxlZCB3aXRoIGNvcnJ1cHRlZCBzdGF0ZTogJXYiLCBlcnIpCi0rCX0KLSsKLSsJLy8g VmVyaWZ5IHZhbGlkIHN0YXRlIHdhcyBjcmVhdGVkCi0rCWRhdGEsIF8gOj0gb3MuUmVhZEZpbGUo c3RhdGVQYXRoKQotKwl2YXIgc3RhdGUgbWFwW3N0cmluZ11hbnkKLSsJaWYgZXJyIDo9IGpzb24u VW5tYXJzaGFsKGRhdGEsICZzdGF0ZSk7IGVyciAhPSBuaWwgewotKwkJdC5FcnJvcmYoInJlc3Vs dGluZyBzdGF0ZSBpcyBub3QgdmFsaWQgSlNPTjogJXYiLCBlcnIpCi0rCX0KLSt9Ci0rCi0rZnVu YyBUZXN0Q3J1c2hFZGl0X1dyb25nVHlwZVByb3ZpZGVyKHQgKnRlc3RpbmcuVCkgewotKwlvIDo9 ICZDcnVzaHt9Ci0rCXRtcERpciA6PSB0LlRlbXBEaXIoKQotKwlzZXRUZXN0SG9tZSh0LCB0bXBE aXIpCi0rCi0rCWNvbmZpZ0RpciA6PSBmaWxlcGF0aC5Kb2luKHRtcERpciwgIi5jb25maWciLCAi Y3J1c2giKQotKwljb25maWdQYXRoIDo9IGZpbGVwYXRoLkpvaW4oY29uZmlnRGlyLCAiY3J1c2gu anNvbiIpCi0rCi0rCW9zLk1rZGlyQWxsKGNvbmZpZ0RpciwgMG83NTUpCi0rCW9zLldyaXRlRmls ZShjb25maWdQYXRoLCBbXWJ5dGUoYHsicHJvdmlkZXIiOiAibm90IGEgbWFwIn1gKSwgMG82NDQp Ci0rCi0rCWVyciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pCi0rCWlmIGVyciAhPSBu aWwgewotKwkJdC5GYXRhbGYoIkVkaXQgd2l0aCB3cm9uZyB0eXBlIHByb3ZpZGVyIGZhaWxlZDog JXYiLCBlcnIpCi0rCX0KLSsKLSsJLy8gVmVyaWZ5IHByb3ZpZGVyIGlzIG5vdyBjb3JyZWN0IHR5 cGUKLSsJZGF0YSwgXyA6PSBvcy5SZWFkRmlsZShjb25maWdQYXRoKQotKwl2YXIgY2ZnIG1hcFtz dHJpbmddYW55Ci0rCWpzb24uVW5tYXJzaGFsKGRhdGEsICZjZmcpCi0rCi0rCXByb3ZpZGVyLCBv ayA6PSBjZmdbInByb3ZpZGVyIl0uKG1hcFtzdHJpbmddYW55KQotKwlpZiAhb2sgewotKwkJdC5G YXRhbGYoInByb3ZpZGVyIHNob3VsZCBiZSBtYXAgYWZ0ZXIgc2V0dXAsIGdvdCAlVCIsIGNmZ1si cHJvdmlkZXIiXSkKLSsJfQotKwlpZiBwcm92aWRlclsib2xsYW1hIl0gPT0gbmlsIHsKLSsJCXQu RXJyb3IoIm9sbGFtYSBwcm92aWRlciBzaG91bGQgYmUgY3JlYXRlZCIpCi0rCX0KLSt9Ci0rCi0r ZnVuYyBUZXN0Q3J1c2hFZGl0X1dyb25nVHlwZVJlY2VudCh0ICp0ZXN0aW5nLlQpIHsKLSsJbyA6 PSAmQ3J1c2h7fQotKwl0bXBEaXIgOj0gdC5UZW1wRGlyKCkKLSsJc2V0VGVzdEhvbWUodCwgdG1w RGlyKQotKwotKwlzdGF0ZURpciA6PSBmaWxlcGF0aC5Kb2luKHRtcERpciwgIi5sb2NhbCIsICJz dGF0ZSIsICJjcnVzaCIpCi0rCXN0YXRlUGF0aCA6PSBmaWxlcGF0aC5Kb2luKHN0YXRlRGlyLCAi bW9kZWwuanNvbiIpCi0rCi0rCW9zLk1rZGlyQWxsKHN0YXRlRGlyLCAwbzc1NSkKLSsJb3MuV3Jp dGVGaWxlKHN0YXRlUGF0aCwgW11ieXRlKGB7InJlY2VudCI6ICJub3QgYW4gYXJyYXkiLCAiZmF2 b3JpdGUiOiBbXSwgInZhcmlhbnQiOiB7fX1gKSwgMG82NDQpCi0rCi0rCWVyciA6PSBvLkVkaXQo W11zdHJpbmd7ImxsYW1hMy4yIn0pCi0rCWlmIGVyciAhPSBuaWwgewotKwkJdC5GYXRhbGYoIkVk aXQgd2l0aCB3cm9uZyB0eXBlIHJlY2VudCBmYWlsZWQ6ICV2IiwgZXJyKQotKwl9Ci0rCi0rCS8v IFRoZSBmdW5jdGlvbiBzaG91bGQgaGFuZGxlIHRoaXMgZ3JhY2VmdWxseQotKwlkYXRhLCBfIDo9 IG9zLlJlYWRGaWxlKHN0YXRlUGF0aCkKLSsJdmFyIHN0YXRlIG1hcFtzdHJpbmddYW55Ci0rCWpz b24uVW5tYXJzaGFsKGRhdGEsICZzdGF0ZSkKLSsKLSsJLy8gcmVjZW50IHNob3VsZCBiZSBwcm9w ZXJseSBzZXQgYWZ0ZXIgc2V0dXAKLSsJcmVjZW50LCBvayA6PSBzdGF0ZVsicmVjZW50Il0uKFtd YW55KQotKwlpZiAhb2sgewotKwkJdC5Mb2dmKCJOb3RlOiByZWNlbnQgdHlwZSBhZnRlciBzZXR1 cCBpcyAlVCAoZG9jdW1lbnRpbmcgYmVoYXZpb3IpIiwgc3RhdGVbInJlY2VudCJdKQotKwl9IGVs c2UgaWYgbGVuKHJlY2VudCkgPT0gMCB7Ci0rCQl0LkxvZ2YoIk5vdGU6IHJlY2VudCBpcyBlbXB0 eSAoZG9jdW1lbnRpbmcgYmVoYXZpb3IpIikKLSsJfQotK30KLSsKLStmdW5jIFRlc3RDcnVzaEVk aXRfRW1wdHlNb2RlbHModCAqdGVzdGluZy5UKSB7Ci0rCW8gOj0gJkNydXNoe30KLSsJdG1wRGly IDo9IHQuVGVtcERpcigpCi0rCXNldFRlc3RIb21lKHQsIHRtcERpcikKLSsKLSsJY29uZmlnRGly IDo9IGZpbGVwYXRoLkpvaW4odG1wRGlyLCAiLmNvbmZpZyIsICJjcnVzaCIpCi0rCWNvbmZpZ1Bh dGggOj0gZmlsZXBhdGguSm9pbihjb25maWdEaXIsICJjcnVzaC5qc29uIikKLSsKLSsJb3MuTWtk aXJBbGwoY29uZmlnRGlyLCAwbzc1NSkKLSsJb3JpZ2luYWxDb250ZW50IDo9IGB7InByb3ZpZGVy Ijp7Im9sbGFtYSI6eyJtb2RlbHMiOnsiZXhpc3RpbmciOnt9fX19fWAKLSsJb3MuV3JpdGVGaWxl KGNvbmZpZ1BhdGgsIFtdYnl0ZShvcmlnaW5hbENvbnRlbnQpLCAwbzY0NCkKLSsKLSsJLy8gRW1w dHkgbW9kZWxzIHNob3VsZCBiZSBuby1vcAotKwllcnIgOj0gby5FZGl0KFtdc3RyaW5ne30pCi0r CWlmIGVyciAhPSBuaWwgewotKwkJdC5GYXRhbGYoIkVkaXQgd2l0aCBlbXB0eSBtb2RlbHMgZmFp bGVkOiAldiIsIGVycikKLSsJfQotKwotKwkvLyBPcmlnaW5hbCBjb250ZW50IHNob3VsZCBiZSBw cmVzZXJ2ZWQgKGZpbGUgbm90IG1vZGlmaWVkKQotKwlkYXRhLCBfIDo9IG9zLlJlYWRGaWxlKGNv bmZpZ1BhdGgpCi0rCWlmIHN0cmluZyhkYXRhKSAhPSBvcmlnaW5hbENvbnRlbnQgewotKwkJdC5F cnJvcmYoImVtcHR5IG1vZGVscyBzaG91bGQgbm90IG1vZGlmeSBmaWxlLCBidXQgY29udGVudCBj aGFuZ2VkIikKLSsJfQotK30KLSsKLStmdW5jIFRlc3RDcnVzaEVkaXRfU3BlY2lhbENoYXJzSW5N b2RlbE5hbWUodCAqdGVzdGluZy5UKSB7Ci0rCW8gOj0gJkNydXNoe30KLSsJdG1wRGlyIDo9IHQu VGVtcERpcigpCi0rCXNldFRlc3RIb21lKHQsIHRtcERpcikKLSsKLSsJLy8gTW9kZWwgbmFtZSB3 aXRoIHNwZWNpYWwgY2hhcmFjdGVycyAodGhvdWdoIHVudXN1YWwpCi0rCXNwZWNpYWxNb2RlbCA6 PSBgbW9kZWwtd2l0aC0icXVvdGVzImAKLSsKLSsJZXJyIDo9IG8uRWRpdChbXXN0cmluZ3tzcGVj aWFsTW9kZWx9KQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWxmKCJFZGl0IHdpdGggc3Bl Y2lhbCBjaGFycyBmYWlsZWQ6ICV2IiwgZXJyKQotKwl9Ci0rCi0rCS8vIFZlcmlmeSBpdCB3YXMg c3RvcmVkIGNvcnJlY3RseQotKwljb25maWdEaXIgOj0gZmlsZXBhdGguSm9pbih0bXBEaXIsICIu Y29uZmlnIiwgImNydXNoIikKLSsJY29uZmlnUGF0aCA6PSBmaWxlcGF0aC5Kb2luKGNvbmZpZ0Rp ciwgImNydXNoLmpzb24iKQotKwlkYXRhLCBfIDo9IG9zLlJlYWRGaWxlKGNvbmZpZ1BhdGgpCi0r Ci0rCXZhciBjZmcgbWFwW3N0cmluZ11hbnkKLSsJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGRh dGEsICZjZmcpOyBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWxmKCJyZXN1bHRpbmcgY29uZmlnIGlz IGludmFsaWQgSlNPTjogJXYiLCBlcnIpCi0rCX0KLSsKLSsJLy8gTW9kZWwgc2hvdWxkIGJlIGFj Y2Vzc2libGUKLSsJcHJvdmlkZXIsIF8gOj0gY2ZnWyJwcm92aWRlciJdLihtYXBbc3RyaW5nXWFu eSkKLSsJb2xsYW1hLCBfIDo9IHByb3ZpZGVyWyJvbGxhbWEiXS4obWFwW3N0cmluZ11hbnkpCi0r CW1vZGVscywgXyA6PSBvbGxhbWFbIm1vZGVscyJdLihtYXBbc3RyaW5nXWFueSkKLSsKLSsJaWYg bW9kZWxzW3NwZWNpYWxNb2RlbF0gPT0gbmlsIHsKLSsJCXQuRXJyb3JmKCJtb2RlbCB3aXRoIHNw ZWNpYWwgY2hhcnMgbm90IGZvdW5kIGluIGNvbmZpZyIpCi0rCX0KLSt9Ci0rCi0rZnVuYyByZWFk Q3J1c2hNb2RlbCh0ICp0ZXN0aW5nLlQsIGNvbmZpZ1BhdGgsIG1vZGVsIHN0cmluZykgbWFwW3N0 cmluZ11hbnkgewotKwl0LkhlbHBlcigpCi0rCWRhdGEsIGVyciA6PSBvcy5SZWFkRmlsZShjb25m aWdQYXRoKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWwoZXJyKQotKwl9Ci0rCXZhciBj ZmcgbWFwW3N0cmluZ11hbnkKLSsJanNvbi5Vbm1hcnNoYWwoZGF0YSwgJmNmZykKLSsJcHJvdmlk ZXIgOj0gY2ZnWyJwcm92aWRlciJdLihtYXBbc3RyaW5nXWFueSkKLSsJb2xsYW1hIDo9IHByb3Zp ZGVyWyJvbGxhbWEiXS4obWFwW3N0cmluZ11hbnkpCi0rCW1vZGVscyA6PSBvbGxhbWFbIm1vZGVs cyJdLihtYXBbc3RyaW5nXWFueSkKLSsJZW50cnksIG9rIDo9IG1vZGVsc1ttb2RlbF0uKG1hcFtz dHJpbmddYW55KQotKwlpZiAhb2sgewotKwkJdC5GYXRhbGYoIm1vZGVsICVzIG5vdCBmb3VuZCBp biBjb25maWciLCBtb2RlbCkKLSsJfQotKwlyZXR1cm4gZW50cnkKLSt9Ci0rCi0rZnVuYyBUZXN0 Q3J1c2hFZGl0X0xvY2FsTW9kZWxOb0xpbWl0KHQgKnRlc3RpbmcuVCkgewotKwlvIDo9ICZDcnVz aHt9Ci0rCXRtcERpciA6PSB0LlRlbXBEaXIoKQotKwlzZXRUZXN0SG9tZSh0LCB0bXBEaXIpCi0r Ci0rCWNvbmZpZ1BhdGggOj0gZmlsZXBhdGguSm9pbih0bXBEaXIsICIuY29uZmlnIiwgImNydXNo IiwgImNydXNoLmpzb24iKQotKwotKwlpZiBlcnIgOj0gby5FZGl0KFtdc3RyaW5neyJsbGFtYTMu MiJ9KTsgZXJyICE9IG5pbCB7Ci0rCQl0LkZhdGFsKGVycikKLSsJfQotKwotKwllbnRyeSA6PSBy ZWFkQ3J1c2hNb2RlbCh0LCBjb25maWdQYXRoLCAibGxhbWEzLjIiKQotKwlpZiBlbnRyeVsibGlt aXQiXSAhPSBuaWwgewotKwkJdC5FcnJvcmYoImxvY2FsIG1vZGVsIHNob3VsZCBub3QgaGF2ZSBs aW1pdCBzZXQsIGdvdCAldiIsIGVudHJ5WyJsaW1pdCJdKQotKwl9Ci0rfQotKwotK2Z1bmMgVGVz dENydXNoRWRpdF9QcmVzZXJ2ZXNVc2VyTGltaXQodCAqdGVzdGluZy5UKSB7Ci0rCW8gOj0gJkNy dXNoe30KLSsJdG1wRGlyIDo9IHQuVGVtcERpcigpCi0rCXNldFRlc3RIb21lKHQsIHRtcERpcikK LSsKLSsJY29uZmlnRGlyIDo9IGZpbGVwYXRoLkpvaW4odG1wRGlyLCAiLmNvbmZpZyIsICJjcnVz aCIpCi0rCWNvbmZpZ1BhdGggOj0gZmlsZXBhdGguSm9pbihjb25maWdEaXIsICJjcnVzaC5qc29u IikKLSsKLSsJLy8gU2V0IHVwIGEgbW9kZWwgd2l0aCBhIHVzZXItY29uZmlndXJlZCBsaW1pdAot Kwlvcy5Na2RpckFsbChjb25maWdEaXIsIDBvNzU1KQotKwlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0 aCwgW11ieXRlKGB7Ci0rCQkicHJvdmlkZXIiOiB7Ci0rCQkJIm9sbGFtYSI6IHsKLSsJCQkJIm1v ZGVscyI6IHsKLSsJCQkJCSJsbGFtYTMuMiI6IHsKLSsJCQkJCQkibmFtZSI6ICJsbGFtYTMuMiIs Ci0rCQkJCQkJIl9sYXVuY2giOiB0cnVlLAotKwkJCQkJCSJsaW1pdCI6IHsiY29udGV4dCI6IDgx OTIsICJvdXRwdXQiOiA0MDk2fQotKwkJCQkJfQotKwkJCQl9Ci0rCQkJfQotKwkJfQotKwl9YCks IDBvNjQ0KQotKwotKwkvLyBSZS1lZGl0IHNob3VsZCBwcmVzZXJ2ZSB0aGUgdXNlcidzIGxpbWl0 IChub3QgZGVsZXRlIGl0KQotKwlpZiBlcnIgOj0gby5FZGl0KFtdc3RyaW5neyJsbGFtYTMuMiJ9 KTsgZXJyICE9IG5pbCB7Ci0rCQl0LkZhdGFsKGVycikKLSsJfQotKwotKwllbnRyeSA6PSByZWFk Q3J1c2hNb2RlbCh0LCBjb25maWdQYXRoLCAibGxhbWEzLjIiKQotKwlsaW1pdCwgb2sgOj0gZW50 cnlbImxpbWl0Il0uKG1hcFtzdHJpbmddYW55KQotKwlpZiAhb2sgewotKwkJdC5GYXRhbCgidXNl ci1jb25maWd1cmVkIGxpbWl0IHdhcyByZW1vdmVkIikKLSsJfQotKwlpZiBsaW1pdFsiY29udGV4 dCJdICE9IGZsb2F0NjQoODE5MikgewotKwkJdC5FcnJvcmYoImNvbnRleHQgbGltaXQgY2hhbmdl ZDogZ290ICV2LCB3YW50IDgxOTIiLCBsaW1pdFsiY29udGV4dCJdKQotKwl9Ci0rCWlmIGxpbWl0 WyJvdXRwdXQiXSAhPSBmbG9hdDY0KDQwOTYpIHsKLSsJCXQuRXJyb3JmKCJvdXRwdXQgbGltaXQg Y2hhbmdlZDogZ290ICV2LCB3YW50IDQwOTYiLCBsaW1pdFsib3V0cHV0Il0pCi0rCX0KLSt9Ci0r Ci0rZnVuYyBUZXN0Q3J1c2hFZGl0X0Nsb3VkTW9kZWxMaW1pdFN0cnVjdHVyZSh0ICp0ZXN0aW5n LlQpIHsKLSsJLy8gVmVyaWZ5IHRoYXQgd2hlbiBhIGNsb3VkIG1vZGVsIGVudHJ5IGhhcyBsaW1p dHMgc2V0IChhcyBFZGl0IHdvdWxkIGRvKSwKLSsJLy8gdGhlIHN0cnVjdHVyZSBtYXRjaGVzIHdo YXQgY3J1c2ggZXhwZWN0cyBhbmQgcmUtZWRpdCBwcmVzZXJ2ZXMgdGhlbS4KLSsJbyA6PSAmQ3J1 c2h7fQotKwl0bXBEaXIgOj0gdC5UZW1wRGlyKCkKLSsJc2V0VGVzdEhvbWUodCwgdG1wRGlyKQot KwotKwljb25maWdEaXIgOj0gZmlsZXBhdGguSm9pbih0bXBEaXIsICIuY29uZmlnIiwgImNydXNo IikKLSsJY29uZmlnUGF0aCA6PSBmaWxlcGF0aC5Kb2luKGNvbmZpZ0RpciwgImNydXNoLmpzb24i KQotKwotKwlleHBlY3RlZCA6PSBjbG91ZE1vZGVsTGltaXRzWyJnbG0tNC43Il0KLSsKLSsJLy8g U2ltdWxhdGUgYSBjbG91ZCBtb2RlbCB0aGF0IGFscmVhZHkgaGFzIHRoZSBsaW1pdCBzZXQgYnkg YSBwcmV2aW91cyBFZGl0Ci0rCW9zLk1rZGlyQWxsKGNvbmZpZ0RpciwgMG83NTUpCi0rCW9zLldy aXRlRmlsZShjb25maWdQYXRoLCBbXWJ5dGUoZm10LlNwcmludGYoYHsKLSsJCSJwcm92aWRlciI6 IHsKLSsJCQkib2xsYW1hIjogewotKwkJCQkibW9kZWxzIjogewotKwkJCQkJImdsbS00Ljc6Y2xv dWQiOiB7Ci0rCQkJCQkJIm5hbWUiOiAiZ2xtLTQuNzpjbG91ZCIsCi0rCQkJCQkJIl9sYXVuY2gi OiB0cnVlLAotKwkJCQkJCSJsaW1pdCI6IHsiY29udGV4dCI6ICVkLCAib3V0cHV0IjogJWR9Ci0r CQkJCQl9Ci0rCQkJCX0KLSsJCQl9Ci0rCQl9Ci0rCX1gLCBleHBlY3RlZC5Db250ZXh0LCBleHBl Y3RlZC5PdXRwdXQpKSwgMG82NDQpCi0rCi0rCS8vIFJlLWVkaXQgc2hvdWxkIHByZXNlcnZlIHRo ZSBjbG91ZCBtb2RlbCBsaW1pdAotKwlpZiBlcnIgOj0gby5FZGl0KFtdc3RyaW5neyJnbG0tNC43 OmNsb3VkIn0pOyBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWwoZXJyKQotKwl9Ci0rCi0rCWVudHJ5 IDo9IHJlYWRDcnVzaE1vZGVsKHQsIGNvbmZpZ1BhdGgsICJnbG0tNC43OmNsb3VkIikKLSsJbGlt aXQsIG9rIDo9IGVudHJ5WyJsaW1pdCJdLihtYXBbc3RyaW5nXWFueSkKLSsJaWYgIW9rIHsKLSsJ CXQuRmF0YWwoImNsb3VkIG1vZGVsIGxpbWl0IHdhcyByZW1vdmVkIG9uIHJlLWVkaXQiKQotKwl9 Ci0rCWlmIGxpbWl0WyJjb250ZXh0Il0gIT0gZmxvYXQ2NChleHBlY3RlZC5Db250ZXh0KSB7Ci0r CQl0LkVycm9yZigiY29udGV4dCA9ICV2LCB3YW50ICVkIiwgbGltaXRbImNvbnRleHQiXSwgZXhw ZWN0ZWQuQ29udGV4dCkKLSsJfQotKwlpZiBsaW1pdFsib3V0cHV0Il0gIT0gZmxvYXQ2NChleHBl Y3RlZC5PdXRwdXQpIHsKLSsJCXQuRXJyb3JmKCJvdXRwdXQgPSAldiwgd2FudCAlZCIsIGxpbWl0 WyJvdXRwdXQiXSwgZXhwZWN0ZWQuT3V0cHV0KQotKwl9Ci0rfQotKwotK2Z1bmMgVGVzdExvb2t1 cENsb3VkTW9kZWxMaW1pdCh0ICp0ZXN0aW5nLlQpIHsKLSsJdGVzdHMgOj0gW11zdHJ1Y3Qgewot KwkJbmFtZSAgICAgICAgc3RyaW5nCi0rCQl3YW50T0sgICAgICBib29sCi0rCQl3YW50Q29udGV4 dCBpbnQKLSsJCXdhbnRPdXRwdXQgIGludAotKwl9ewotKwkJeyJnbG0tNC43IiwgdHJ1ZSwgMjAy Xzc1MiwgMTMxXzA3Mn0sCi0rCQl7ImdsbS00Ljc6Y2xvdWQiLCB0cnVlLCAyMDJfNzUyLCAxMzFf MDcyfSwKLSsJCXsia2ltaS1rMi41IiwgdHJ1ZSwgMjYyXzE0NCwgMjYyXzE0NH0sCi0rCQl7Imtp bWktazIuNTpjbG91ZCIsIHRydWUsIDI2Ml8xNDQsIDI2Ml8xNDR9LAotKwkJeyJkZWVwc2Vlay12 My4yIiwgdHJ1ZSwgMTYzXzg0MCwgNjVfNTM2fSwKLSsJCXsiZGVlcHNlZWstdjMuMjpjbG91ZCIs IHRydWUsIDE2M184NDAsIDY1XzUzNn0sCi0rCQl7InF3ZW4zLWNvZGVyOjQ4MGIiLCB0cnVlLCAy NjJfMTQ0LCA2NV81MzZ9LAotKwkJeyJxd2VuMy1jb2Rlci1uZXh0OmNsb3VkIiwgdHJ1ZSwgMjYy XzE0NCwgMzJfNzY4fSwKLSsJCXsibGxhbWEzLjIiLCBmYWxzZSwgMCwgMH0sCi0rCQl7InVua25v d24tbW9kZWw6Y2xvdWQiLCBmYWxzZSwgMCwgMH0sCi0rCX0KLSsKLSsJZm9yIF8sIHR0IDo9IHJh bmdlIHRlc3RzIHsKLSsJCXQuUnVuKHR0Lm5hbWUsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQkJ bCwgb2sgOj0gbG9va3VwQ2xvdWRNb2RlbExpbWl0KHR0Lm5hbWUpCi0rCQkJaWYgb2sgIT0gdHQu d2FudE9LIHsKLSsJCQkJdC5FcnJvcmYoImxvb2t1cENsb3VkTW9kZWxMaW1pdCglcSkgb2sgPSAl diwgd2FudCAldiIsIHR0Lm5hbWUsIG9rLCB0dC53YW50T0spCi0rCQkJfQotKwkJCWlmIG9rIHsK LSsJCQkJaWYgbC5Db250ZXh0ICE9IHR0LndhbnRDb250ZXh0IHsKLSsJCQkJCXQuRXJyb3JmKCJj b250ZXh0ID0gJWQsIHdhbnQgJWQiLCBsLkNvbnRleHQsIHR0LndhbnRDb250ZXh0KQotKwkJCQl9 Ci0rCQkJCWlmIGwuT3V0cHV0ICE9IHR0LndhbnRPdXRwdXQgewotKwkJCQkJdC5FcnJvcmYoIm91 dHB1dCA9ICVkLCB3YW50ICVkIiwgbC5PdXRwdXQsIHR0LndhbnRPdXRwdXQpCi0rCQkJCX0KLSsJ CQl9Ci0rCQl9KQotKwl9Ci0rfQotKwotK2Z1bmMgVGVzdENydXNoTW9kZWxzX05vQ29uZmlnKHQg KnRlc3RpbmcuVCkgewotKwlvIDo9ICZDcnVzaHt9Ci0rCXRtcERpciA6PSB0LlRlbXBEaXIoKQot KwlzZXRUZXN0SG9tZSh0LCB0bXBEaXIpCi0rCi0rCW1vZGVscyA6PSBvLk1vZGVscygpCi0rCWlm IGxlbihtb2RlbHMpID4gMCB7Ci0rCQl0LkVycm9yZigiZXhwZWN0ZWQgbmlsL2VtcHR5IGZvciBt aXNzaW5nIGNvbmZpZywgZ290ICV2IiwgbW9kZWxzKQotKwl9Ci0rfQotZGlmZiAtLWdpdCBhL2Nt ZC9jb25maWcvaW50ZWdyYXRpb25zLmdvIGIvY21kL2NvbmZpZy9pbnRlZ3JhdGlvbnMuZ28KLWlu ZGV4IGU1MjRjMTRlZTZmNy4uMjJkMmEzOWI0MjgwIDEwMDY0NAotLS0tIGEvY21kL2NvbmZpZy9p bnRlZ3JhdGlvbnMuZ28KLSsrKyBiL2NtZC9jb25maWcvaW50ZWdyYXRpb25zLmdvCi1AQCAtNjAs NiArNjAsNyBAQCB2YXIgaW50ZWdyYXRpb25zID0gbWFwW3N0cmluZ11SdW5uZXJ7Ci0gCSJvcGVu Y29kZSI6ICZPcGVuQ29kZXt9LAotIAkib3BlbmNsYXciOiAmT3BlbmNsYXd7fSwKLSAJInBpIjog ICAgICAgJlBpe30sCi0rCSJjcnVzaCI6ICAgICZDcnVzaHt9LAotIH0KLSAKLSAvLyByZWNvbW1l bmRlZE1vZGVscyBhcmUgc2hvd24gd2hlbiB0aGUgdXNlciBoYXMgbm8gbW9kZWxzIG9yIGFzIHN1 Z2dlc3Rpb25zLgotQEAgLTg5Niw2ICs4OTcsNyBAQCBTdXBwb3J0ZWQgaW50ZWdyYXRpb25zOgot ICAgb3BlbmNvZGUgIE9wZW5Db2RlCi0gICBvcGVuY2xhdyAgT3BlbkNsYXcgKGFsaWFzZXM6IGNs YXdkYm90LCBtb2x0Ym90KQotICAgcGkgICAgICAgIFBpCi0rICBjcnVzaCAgICAgQ3J1c2gKLSAK LSBFeGFtcGxlczoKLSAgIG9sbGFtYSBsYXVuY2gKLS0tIAotMi41My4wCi0KCmRpZmYgLS1naXQg YS9vbGxhbWEuc2VydmljZSBiL29sbGFtYS5zZXJ2aWNlCmluZGV4IDVkZGM5YjEuLjQ2N2YwMTQg MTAwNjQ0Ci0tLSBhL29sbGFtYS5zZXJ2aWNlCisrKyBiL29sbGFtYS5zZXJ2aWNlCkBAIC0zLDYg KzMsMjMgQEAgRGVzY3JpcHRpb249T2xsYW1hIFNlcnZpY2UKIEFmdGVyPW5ldHdvcmstb25saW5l LnRhcmdldAogCiBbU2VydmljZV0KKyMgT0xMQU1BX0hPU1Q6IENvbnRyb2xzIHRoZSBJUCBhZGRy ZXNzIGFuZCBwb3J0IE9sbGFtYSBiaW5kcyB0byBmb3IgQVBJIHJlcXVlc3RzLgorIyBGb3JtYXQ6 IDxJUF9BRERSRVNTPjo8UE9SVD4KKyMKKyMgRXhhbXBsZXM6CisjICAgRGVmYXVsdCAobG9jYWxo b3N0IG9ubHksIHBvcnQgMTE0MzQpOiAxMjcuMC4wLjE6MTE0MzQKKyMgICBDaGFuZ2UgdG8gYSBj dXN0b20gcG9ydDogICAgICAgICAgICAgICAxMjcuMC4wLjE6ODA4MAorIyAgIEJpbmQgdG8gYWxs IElQdjQgaW50ZXJmYWNlcyAoZGVmYXVsdCBwb3J0KTogMC4wLjAuMDoxMTQzNAorIyAgIEJpbmQg dG8gYWxsIElQdjYgaW50ZXJmYWNlcyAoZGVmYXVsdCBwb3J0KTogWzo6XToxMTQzNAorIworIyDi mqDvuI8gU2VjdXJpdHk6IEJpbmRpbmcgdG8gMC4wLjAuMCBvciBbOjpdIGV4cG9zZXMgT2xsYW1h IHRvIHlvdXIgbmV0d29yay4KKyMgICBVc2UgZmlyZXdhbGwgcnVsZXMgKHVmdy9pcHRhYmxlcy9u ZnRhYmxlcykgb3IgYSByZXZlcnNlIHByb3h5IChuZ2lueC9jYWRkeSkKKyMgICB0byByZXN0cmlj dCBhY2Nlc3MgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuCitFbnZpcm9ubWVudD0iT0xMQU1B X0hPU1Q9MTI3LjAuMC4xOjExNDM0IgorI0Vudmlyb25tZW50PSJPTExBTUFfSE9TVD0xMjcuMC4w LjE6PHlvdXIgcG9ydD4iCisjRW52aXJvbm1lbnQ9Ik9MTEFNQV9IT1NUPTAuMC4wLjA6MTE0MzQi CisjRW52aXJvbm1lbnQ9Ik9MTEFNQV9IT1NUPVs6Ol06MTE0MzQiCisKIEV4ZWNTdGFydD0vdXNy L2Jpbi9vbGxhbWEgc2VydmUKIFVzZXI9b2xsYW1hCiBHcm91cD1vbGxhbWEKCmRpZmYgLS1naXQg YS9vbGxhbWEuc3BlYyBiL29sbGFtYS5zcGVjCmluZGV4IDc0OWFkZjguLjcyYzMxZDIgMTAwNjQ0 Ci0tLSBhL29sbGFtYS5zcGVjCisrKyBiL29sbGFtYS5zcGVjCkBAIC00MCw3ICs0MCw2IEBAIFNv dXJjZTExOiAgICAgICBvbGxhbWEuc3lzdXNlcnMKICVlbmRpZgogCiBQYXRjaDE6ICAgICAgICAg MDAwMS1vbGxhbWEtaGFuZGxlLWxvYWQucGF0Y2gKLSMgUGF0Y2gyOiAgICAgICAgIDAwMDEtb2xs YW1hLWNydXNoLWludGVncmF0aW9uLnBhdGNoCiAKIEJ1aWxkUmVxdWlyZXM6ICBnby12ZW5kb3It dG9vbHMKIEJ1aWxkUmVxdWlyZXM6ICBmZHVwZXMK