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: Merge #10 `Set version and release type with go ldflags` Date: Thu, 11 Jun 2026 13:01:29 GMT Message-ID: <178118288901.1.13172070838878355110.rpms-ollama-59cab7e960f7@fedoraproject.org> List-ID: X-Git-Repo: rpms/ollama X-Git-Branch: rawhide X-Git-Rev: 59cab7e960f7b72471847d049444788ed1e8dedb QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb2xsYW1hCkJyYW5j aCA6IHJhd2hpZGUKQ29tbWl0IDogNTljYWI3ZTk2MGY3YjcyNDcxODQ3ZDA0OTQ0NDc4OGVkMWU4 ZGVkYgpBdXRob3IgOiBUb20gUml4IDx0cml4QHJlZGhhdC5jb20+CkRhdGUgICA6IDIwMjYtMDYt MTFUMTM6MDE6MjYrMDA6MDAKU3RhdHMgIDogKzE4Ly0xMDAyIGluIDMgZmlsZShzKQpVUkwgICAg OiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29sbGFtYS9jLzU5Y2FiN2U5NjBm N2I3MjQ3MTg0N2QwNDk0NDQ3ODhlZDFlOGRlZGI/YnJhbmNoPXJhd2hpZGUKCkxvZzoKTWVyZ2Ug IzEwIGBTZXQgdmVyc2lvbiBhbmQgcmVsZWFzZSB0eXBlIHdpdGggZ28gbGRmbGFnc2AKCi0tLQpk aWZmIC0tZ2l0IGEvb2xsYW1hLnNwZWMgYi9vbGxhbWEuc3BlYwppbmRleCA3MmMzMWQyLi5mYTFj NDFjIDEwMDY0NAotLS0gYS9vbGxhbWEuc3BlYworKysgYi9vbGxhbWEuc3BlYwpAQCAtMTU3LDYg KzE1Nyw3IEBAIHNlZCAtaSAnL2Vuc3VyZVBpV2ViU2VhcmNoUGFja2FnZShiaW4pL2QnIGNtZC9s YXVuY2gvcGkuZ28KICMgUmVsZWFzZSB3aXRoCiAjIGNtYWtlIHNldHMgTERGTEFHUyBlbnYsIHRo aXMgY29uZnVzZXMgZ29idWlsZAogZXhwb3J0IExERkxBR1M9CitleHBvcnQgR09fTERGTEFHUz0i LVg9Z2l0aHViLmNvbS9vbGxhbWEvb2xsYW1hL3ZlcnNpb24uVmVyc2lvbj0le3ZlcnNpb259IC1Y PWdpdGh1Yi5jb20vb2xsYW1hL29sbGFtYS9zZXJ2ZXIubW9kZT1yZWxlYXNlIgogJWdvYnVpbGQg LW8gJXtnb2J1aWxkZGlyfS9iaW4vb2xsYW1hICV7Z29pcGF0aH0KIAogJWluc3RhbGwKCmRpZmYg LS1naXQgYS8wMDAxLW9sbGFtYS1jcnVzaC1pbnRlZ3JhdGlvbi5wYXRjaCBiLzAwMDEtb2xsYW1h LWNydXNoLWludGVncmF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1 ZmJjMGM3Li4wMDAwMDAwCi0tLSBhLzAwMDEtb2xsYW1hLWNydXNoLWludGVncmF0aW9uLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTAwMSArMCwwIEBACi1Gcm9tIDdmYjllNmUxY2Q5NjY2MTgz MmY4ZGU0MjczOTBmMDAzOTA4M2UwN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBU b20gUml4IDxUb20uUml4QGFtZC5jb20+Ci1EYXRlOiBNb24sIDIzIEZlYiAyMDI2IDE5OjEwOjEw IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG9sbGFtYSBjcnVzaCBpbnRlZ3JhdGlvbgotCi0tLS0K LSBjbWQvY29uZmlnL2NydXNoLmdvICAgICAgICB8IDI4NSArKysrKysrKysrKysrKysrCi0gY21k L2NvbmZpZy9jcnVzaF90ZXN0LmdvICAgfCA2NjggKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwotIGNtZC9jb25maWcvaW50ZWdyYXRpb25zLmdvIHwgICAyICsKLSAzIGZpbGVz IGNoYW5nZWQsIDk1NSBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGNtZC9jb25m aWcvY3J1c2guZ28KLSBjcmVhdGUgbW9kZSAxMDA2NDQgY21kL2NvbmZpZy9jcnVzaF90ZXN0Lmdv Ci0KLWRpZmYgLS1naXQgYS9jbWQvY29uZmlnL2NydXNoLmdvIGIvY21kL2NvbmZpZy9jcnVzaC5n bwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uZjU0NTkxZTE4MGQz Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9jbWQvY29uZmlnL2NydXNoLmdvCi1AQCAtMCwwICsxLDI4 NSBAQAotK3BhY2thZ2UgY29uZmlnCi0rCi0raW1wb3J0ICgKLSsJImVuY29kaW5nL2pzb24iCi0r CSJmbXQiCi0rCSJpby9pb3V0aWwiCi0rCSJsb2ciCi0rCSJtYXBzIgotKwkib3MiCi0rCSJvcy9l eGVjIgotKwkicGF0aC9maWxlcGF0aCIKLSsJInNsaWNlcyIKLSsJImdpdGh1Yi5jb20vb2xsYW1h L29sbGFtYS9lbnZjb25maWciCi0rKQotKwotKy8vIFByb3ZpZGVyQ29uZmlnIHJlcHJlc2VudHMg dGhlIGNvbmZpZ3VyYXRpb24gZm9yIGEgc3BlY2lmaWMgQUkgcHJvdmlkZXIKLSt0eXBlIFByb3Zp ZGVyQ29uZmlnIHN0cnVjdCB7Ci0rCUlEICAgICAgICAgICAgICAgICAgIHN0cmluZyAgICAgIGBq c29uOiJpZCJgCi0rCU5hbWUgICAgICAgICAgICAgICAgIHN0cmluZyAgICAgIGBqc29uOiJuYW1l ImAKLSsJQmFzZVVSTCAgICAgICAgICAgICAgc3RyaW5nICAgICAgYGpzb246ImJhc2VfdXJsImAK LSsJVHlwZSAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgYGpzb246InR5cGUiYAotKwlBUElL ZXkgICAgICAgICAgICAgICBzdHJpbmcgICAgICBganNvbjoiYXBpX2tleSJgCi0rCU9BdXRoICAg ICAgICAgICAgICAgICAgaW50ZXJmYWNle30gYGpzb246Im9hdXRoLG9taXRlbXB0eSJgCi0rCURp c2FibGUgICAgICAgICAgICAgIGJvb2wgICAgICAgIGBqc29uOiJkaXNhYmxlLG9taXRlbXB0eSJg Ci0rCVN5c3RlbVByb21wdFByZWZpeCAgIHN0cmluZyAgICAgIGBqc29uOiJzeXN0ZW1fcHJvbXB0 X3ByZWZpeCxvbWl0ZW1wdHkiYAotKwlFeHRyYUhlYWRlcnMgICAgICAgICBpbnRlcmZhY2V7fSBg anNvbjoiZXh0cmFfaGVhZGVycyxvbWl0ZW1wdHkiYAotKwlFeHRyYUJvZHkgICAgICAgICAgICBp bnRlcmZhY2V7fSBganNvbjoiZXh0cmFfYm9keSxvbWl0ZW1wdHkiYAotKwlQcm92aWRlck9wdGlv bnMgICAgICBpbnRlcmZhY2V7fSBganNvbjoicHJvdmlkZXJfb3B0aW9ucyxvbWl0ZW1wdHkiYAot KwlNb2RlbHMgICAgICAgICAgICAgICBbXU1vZGVsICAgICBganNvbjoibW9kZWxzLG9taXRlbXB0 eSJgCi0rfQotKwotKy8vIE1vZGVsIHJlcHJlc2VudHMgYW4gQUkgbW9kZWwgY29uZmlndXJhdGlv bgotK3R5cGUgTW9kZWwgc3RydWN0IHsKLSsJSUQgICAgICAgICAgICAgICAgICAgICAgc3RyaW5n ICAgICAgYGpzb246ImlkImAKLSsJTmFtZSAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAg YGpzb246Im5hbWUiYAotKwlDb3N0UGVyMU1JbiAgICAgICAgICAgICBmbG9hdDY0ICAgICBganNv bjoiY29zdF9wZXJfMW1faW4iYAotKwlDb3N0UGVyMU1PdXQgICAgICAgICAgICBmbG9hdDY0ICAg ICBganNvbjoiY29zdF9wZXJfMW1fb3V0ImAKLSsJQ29zdFBlcjFNSW5DYWNoZWQgICAgICAgZmxv YXQ2NCAgICAgYGpzb246ImNvc3RfcGVyXzFtX2luX2NhY2hlZCJgCi0rCUNvc3RQZXIxTU91dENh Y2hlZCAgICAgIGZsb2F0NjQgICAgIGBqc29uOiJjb3N0X3Blcl8xbV9vdXRfY2FjaGVkImAKLSsJ Q29udGV4dFdpbmRvdyAgICAgICAgICAgaW50ICAgICAgICAgYGpzb246ImNvbnRleHRfd2luZG93 ImAKLSsJRGVmYXVsdE1heFRva2VucyAgICAgICAgaW50ICAgICAgICAgYGpzb246ImRlZmF1bHRf bWF4X3Rva2VucyJgCi0rCUNhblJlYXNvbiAgICAgICAgICAgICAgIGJvb2wgICAgICAgIGBqc29u OiJjYW5fcmVhc29uImAKLSsJUmVhc29uaW5nTGV2ZWxzICAgICAgICAgW11zdHJpbmcgICAgYGpz b246InJlYXNvbmluZ19sZXZlbHMsb21pdGVtcHR5ImAKLSsJRGVmYXVsdFJlYXNvbmluZ0VmZm9y dCAgc3RyaW5nICAgICAgYGpzb246ImRlZmF1bHRfcmVhc29uaW5nX2VmZm9ydCxvbWl0ZW1wdHki YAotKwlTdXBwb3J0c0F0dGFjaG1lbnRzICAgICBib29sICAgICAgICBganNvbjoic3VwcG9ydHNf YXR0YWNobWVudHMiYAotKwlPcHRpb25zICAgICAgICAgICAgICAgICBNb2RlbE9wdGlvbnMgYGpz b246Im9wdGlvbnMiYAotK30KLSsKLSsvLyBNb2RlbE9wdGlvbnMgcmVwcmVzZW50cyBvcHRpb25z IGZvciBhIHNwZWNpZmljIG1vZGVsCi0rdHlwZSBNb2RlbE9wdGlvbnMgc3RydWN0IHsKLSsJVGVt cGVyYXR1cmUgICAgIGZsb2F0NjQgICAgICBganNvbjoidGVtcGVyYXR1cmUsb21pdGVtcHR5ImAK LSsJVG9wUCAgICAgICAgICAgIGZsb2F0NjQgICAgICBganNvbjoidG9wX3Asb21pdGVtcHR5ImAK LSsJVG9wSyAgICAgICAgICAgIGludCAgICAgICAgICBganNvbjoidG9wX2ssb21pdGVtcHR5ImAK LSsJRnJlcXVlbmN5UGVuYWx0eSBmbG9hdDY0ICAgICBganNvbjoiZnJlcXVlbmN5X3BlbmFsdHks b21pdGVtcHR5ImAKLSsJUHJlc2VuY2VQZW5hbHR5IGZsb2F0NjQgICAgIGBqc29uOiJwcmVzZW5j ZV9wZW5hbHR5LG9taXRlbXB0eSJgCi0rCVByb3ZpZGVyT3B0aW9ucyBpbnRlcmZhY2V7fSAgYGpz b246InByb3ZpZGVyX29wdGlvbnMsb21pdGVtcHR5ImAKLSt9Ci0rCi0rLy8gQ29uZmlnIHJlcHJl c2VudHMgdGhlIG1haW4gY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUKLSt0eXBlIENvbmZpZyBzdHJ1 Y3QgewotKwlTY2hlbWEgICAgIHN0cmluZyAgICAgICAgICAgICAgYGpzb246IiRzY2hlbWEiYAot KwlJRCAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgYGpzb246IiRpZCJgCi0rCVJlZiAgICAg ICAgc3RyaW5nICAgICAgICAgICAgICBganNvbjoiJHJlZiJgCi0rCURlZnMgICAgICAgaW50ZXJm YWNle30gICAgICAgICBganNvbjoiJGRlZnMsb21pdGVtcHR5ImAKLSsJTW9kZWxzICAgICBtYXBb c3RyaW5nXU1vZGVsICAgIGBqc29uOiJtb2RlbHMsb21pdGVtcHR5ImAKLSsJUHJvdmlkZXJzICBt YXBbc3RyaW5nXVByb3ZpZGVyQ29uZmlnIGBqc29uOiJwcm92aWRlcnMsb21pdGVtcHR5ImAKLSsJ TUNQICAgICAgICBpbnRlcmZhY2V7fSAgICAgICAgIGBqc29uOiJtY3Asb21pdGVtcHR5ImAKLSsJ TFNQICAgICAgICBpbnRlcmZhY2V7fSAgICAgICAgIGBqc29uOiJsc3Asb21pdGVtcHR5ImAKLSsJ T3B0aW9ucyAgICBpbnRlcmZhY2V7fSAgICAgICAgIGBqc29uOiJvcHRpb25zLG9taXRlbXB0eSJg Ci0rCVBlcm1pc3Npb25zIGludGVyZmFjZXt9ICAgICAgICBganNvbjoicGVybWlzc2lvbnMsb21p dGVtcHR5ImAKLSsJVG9vbHMgICAgICBpbnRlcmZhY2V7fSAgICAgICAgIGBqc29uOiJ0b29scyxv bWl0ZW1wdHkiYAotK30KLSsKLSsvLyBSZWFkQ29uZmlnIHJlYWRzIHRoZSBjb25maWd1cmF0aW9u IGZyb20gYSBKU09OIGZpbGUgaW50byBhIENvbmZpZyBzdHJ1Y3QKLStmdW5jIFJlYWRDb25maWco ZmlsZW5hbWUgc3RyaW5nKSAoKkNvbmZpZywgZXJyb3IpIHsKLSsJLy8gUmVhZCBmaWxlIGNvbnRl bnQKLSsJZGF0YSwgZXJyIDo9IGlvdXRpbC5SZWFkRmlsZShmaWxlbmFtZSkKLSsJaWYgZXJyICE9 IG5pbCB7Ci0rCQkvLyBJZiBmaWxlIGRvZXMgbm90IGV4aXN0LCByZXR1cm4gZW1wdHkgQ29uZmln IHN0cnVjdHVyZQotKwkJaWYgb3MuSXNOb3RFeGlzdChlcnIpIHsKLSsJCQlyZXR1cm4gJkNvbmZp Z3t9LCBuaWwKLSsJCX0KLSsJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoImZhaWxlZCB0byByZWFk IGNvbmZpZyBmaWxlOiAldyIsIGVycikKLSsJfQotKwotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJl dHVybiBuaWwsIGZtdC5FcnJvcmYoImZhaWxlZCB0byByZWFkIGNvbmZpZyBmaWxlOiAldyIsIGVy cikKLSsJfQotKwotKwkvLyBQYXJzZSBKU09OIGludG8gQ29uZmlnIHN0cnVjdAotKwl2YXIgcCBD b25maWcKLSsJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGRhdGEsICZwKTsgZXJyICE9IG5pbCB7 Ci0rCQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJmYWlsZWQgdG8gdW5tYXJzaGFsIGNvbmZpZzog JXciLCBlcnIpCi0rCX0KLSsKLSsJcmV0dXJuICZwLCBuaWwKLSt9Ci0rCi0rLy8gV3JpdGVDb25m aWcgd3JpdGVzIHRoZSBjb25maWd1cmF0aW9uIGZyb20gYSBDb25maWcgc3RydWN0IHRvIGEgSlNP TiBmaWxlCi0rZnVuYyBXcml0ZUNvbmZpZyhjb25maWcgKkNvbmZpZywgZmlsZW5hbWUgc3RyaW5n KSBlcnJvciB7Ci0rCS8vIE1hcnNoYWwgdGhlIGNvbmZpZyBzdHJ1Y3QgdG8gSlNPTgotKwlkYXRh LCBlcnIgOj0ganNvbi5NYXJzaGFsSW5kZW50KGNvbmZpZywgIiIsICIgICIpCi0rCWlmIGVyciAh PSBuaWwgewotKwkJcmV0dXJuIGZtdC5FcnJvcmYoImZhaWxlZCB0byBtYXJzaGFsIGNvbmZpZzog JXciLCBlcnIpCi0rCX0KLSsKLSsJLy8gV3JpdGUgdGhlIEpTT04gZGF0YSB0byBmaWxlCi0rCWVy ciA9IGlvdXRpbC5Xcml0ZUZpbGUoZmlsZW5hbWUsIGRhdGEsIDA2NDQpCi0rCWlmIGVyciAhPSBu aWwgewotKwkJcmV0dXJuIGZtdC5FcnJvcmYoImZhaWxlZCB0byB3cml0ZSBjb25maWcgZmlsZTog JXciLCBlcnIpCi0rCX0KLSsKLSsJcmV0dXJuIG5pbAotK30KLSsKLSsvLyBBZGRQcm92aWRlciBh ZGRzIGEgbmV3IHByb3ZpZGVyIHRvIHRoZSBjb25maWd1cmF0aW9uCi0rZnVuYyAoYyAqQ29uZmln KSBBZGRQcm92aWRlcihpZCBzdHJpbmcsIHByb3ZpZGVyIFByb3ZpZGVyQ29uZmlnKSB7Ci0rCWlm IGMuUHJvdmlkZXJzID09IG5pbCB7Ci0rCQljLlByb3ZpZGVycyA9IG1ha2UobWFwW3N0cmluZ11Q cm92aWRlckNvbmZpZykKLSsJfQotKwljLlByb3ZpZGVyc1tpZF0gPSBwcm92aWRlcgotK30KLSsK LSsvLyBHZXRQcm92aWRlciByZXRyaWV2ZXMgYSBwcm92aWRlciBieSBJRAotK2Z1bmMgKGMgKkNv bmZpZykgR2V0UHJvdmlkZXIoaWQgc3RyaW5nKSAoKlByb3ZpZGVyQ29uZmlnLCBib29sKSB7Ci0r CWlmIGMuUHJvdmlkZXJzID09IG5pbCB7Ci0rCQlyZXR1cm4gbmlsLCBmYWxzZQotKwl9Ci0rCXBy b3ZpZGVyLCBleGlzdHMgOj0gYy5Qcm92aWRlcnNbaWRdCi0rCXJldHVybiAmcHJvdmlkZXIsIGV4 aXN0cwotK30KLSsKLSsvLyBHZXRQcm92aWRlck9yRGVmYXVsdCByZXRyaWV2ZXMgYSBwcm92aWRl ciBieSBJRCBvciByZXR1cm5zIGEgZGVmYXVsdCBwcm92aWRlciBpZiBub3QgZm91bmQKLStmdW5j IChjICpDb25maWcpIEdldFByb3ZpZGVyT3JEZWZhdWx0KGlkIHN0cmluZywgZGVmYXVsdFByb3Zp ZGVyIFByb3ZpZGVyQ29uZmlnKSAoKlByb3ZpZGVyQ29uZmlnLCBib29sKSB7Ci0rCWlmIGMuUHJv dmlkZXJzID09IG5pbCB7Ci0rCQlyZXR1cm4gJmRlZmF1bHRQcm92aWRlciwgZmFsc2UKLSsJfQot Kwlwcm92aWRlciwgZXhpc3RzIDo9IGMuUHJvdmlkZXJzW2lkXQotKwlpZiAhZXhpc3RzIHsKLSsJ CXJldHVybiAmZGVmYXVsdFByb3ZpZGVyLCBmYWxzZQotKwl9Ci0rCXJldHVybiAmcHJvdmlkZXIs IHRydWUKLSt9Ci0rCi0rLy8gQWRkTW9kZWwgYWRkcyBhIG5ldyBtb2RlbCB0byBhIHNwZWNpZmlj IHByb3ZpZGVyCi0rZnVuYyAoYyAqQ29uZmlnKSBBZGRNb2RlbChwcm92aWRlcklEIHN0cmluZywg bW9kZWwgTW9kZWwpIGVycm9yIHsKLSsJcHJvdmlkZXIsIGV4aXN0cyA6PSBjLkdldFByb3ZpZGVy KHByb3ZpZGVySUQpCi0rCWlmICFleGlzdHMgewotKwkJcmV0dXJuIGZtdC5FcnJvcmYoInByb3Zp ZGVyICVzIG5vdCBmb3VuZCIsIHByb3ZpZGVySUQpCi0rCX0KLSsJCi0rCS8vIENoZWNrIGlmIG1v ZGVsIHdpdGggc2FtZSBJRCBhbHJlYWR5IGV4aXN0cwotKwlpZiBwcm92aWRlci5Nb2RlbHMgIT0g bmlsIHsKLSsJCWZvciBfLCBleGlzdGluZ01vZGVsIDo9IHJhbmdlIHByb3ZpZGVyLk1vZGVscyB7 Ci0rCQkJaWYgZXhpc3RpbmdNb2RlbC5JRCA9PSBtb2RlbC5JRCB7Ci0rCQkJCXJldHVybiBuaWwK LSsJCQl9Ci0rCQl9Ci0rCX0KLSsJCi0rCWlmIHByb3ZpZGVyLk1vZGVscyA9PSBuaWwgewotKwkJ cHJvdmlkZXIuTW9kZWxzID0gW11Nb2RlbHt9Ci0rCX0KLSsJcHJvdmlkZXIuTW9kZWxzID0gYXBw ZW5kKHByb3ZpZGVyLk1vZGVscywgbW9kZWwpCi0rCWMuUHJvdmlkZXJzW3Byb3ZpZGVySURdID0g KnByb3ZpZGVyCi0rCXJldHVybiBuaWwKLSt9Ci0rCi0rLy8gQ3J1c2ggaW1wbGVtZW50cyBSdW5u ZXIgYW5kIEVkaXRvciBmb3IgQ3J1c2ggaW50ZWdyYXRpb24KLSt0eXBlIENydXNoIHN0cnVjdHt9 Ci0rCi0rZnVuYyAobyAqQ3J1c2gpIFN0cmluZygpIHN0cmluZyB7IHJldHVybiAiQ3J1c2giIH0K LSsKLStmdW5jIChvICpDcnVzaCkgUnVuKG1vZGVsIHN0cmluZywgYXJncyBbXXN0cmluZykgZXJy b3IgewotKwlpZiBfLCBlcnIgOj0gZXhlYy5Mb29rUGF0aCgiY3J1c2giKTsgZXJyICE9IG5pbCB7 Ci0rCQlyZXR1cm4gZm10LkVycm9yZigiY3J1c2ggaXMgbm90IGluc3RhbGxlZCwgaW5zdGFsbCBm cm9tIGh0dHBzOi8vY2hhcm0ubGFuZCIpCi0rCX0KLSsKLSsJLy8gQ2FsbCBFZGl0KCkgdG8gZW5z dXJlIGNvbmZpZyBpcyB1cC10by1kYXRlIGJlZm9yZSBsYXVuY2gKLSsJbW9kZWxzIDo9IFtdc3Ry aW5ne21vZGVsfQotKwlpZiBjb25maWcsIGVyciA6PSBsb2FkSW50ZWdyYXRpb24oImNydXNoIik7 IGVyciA9PSBuaWwgJiYgbGVuKGNvbmZpZy5Nb2RlbHMpID4gMCB7Ci0rCQltb2RlbHMgPSBjb25m aWcuTW9kZWxzCi0rCX0KLSsJaWYgZXJyIDo9IG8uRWRpdChtb2RlbHMpOyBlcnIgIT0gbmlsIHsK LSsJCXJldHVybiBmbXQuRXJyb3JmKCJzZXR1cCBmYWlsZWQ6ICV3IiwgZXJyKQotKwl9Ci0rCi0r CWNtZCA6PSBleGVjLkNvbW1hbmQoImNydXNoIiwgYXJncy4uLikKLSsJY21kLlN0ZGluID0gb3Mu U3RkaW4KLSsJY21kLlN0ZG91dCA9IG9zLlN0ZG91dAotKwljbWQuU3RkZXJyID0gb3MuU3RkZXJy Ci0rCXJldHVybiBjbWQuUnVuKCkKLSt9Ci0rCi0rZnVuYyAobyAqQ3J1c2gpIFBhdGhzKCkgW11z dHJpbmcgewotKwlob21lLCBlcnIgOj0gb3MuVXNlckhvbWVEaXIoKQotKwlpZiBlcnIgIT0gbmls IHsKLSsJCXJldHVybiBuaWwKLSsJfQotKwotKwl2YXIgcGF0aHMgW11zdHJpbmcKLSsJcCA6PSBm aWxlcGF0aC5Kb2luKGhvbWUsICIuY29uZmlnIiwgImNydXNoIiwgImNydXNoLmpzb24iKQotKwlp ZiBfLCBlcnIgOj0gb3MuU3RhdChwKTsgZXJyID09IG5pbCB7Ci0rCQlwYXRocyA9IGFwcGVuZChw YXRocywgcCkKLSsJfQotKwlzcCA6PSBmaWxlcGF0aC5Kb2luKGhvbWUsICIubG9jYWwiLCAic3Rh dGUiLCAiY3J1c2giLCAibW9kZWwuanNvbiIpCi0rCWlmIF8sIGVyciA6PSBvcy5TdGF0KHNwKTsg ZXJyID09IG5pbCB7Ci0rCQlwYXRocyA9IGFwcGVuZChwYXRocywgc3ApCi0rCX0KLSsJcmV0dXJu IHBhdGhzCi0rfQotKwotK2Z1bmMgKG8gKkNydXNoKSBFZGl0KG1vZGVsTGlzdCBbXXN0cmluZykg ZXJyb3IgewotKwlpZiBsZW4obW9kZWxMaXN0KSA9PSAwIHsKLSsJCXJldHVybiBuaWwKLSsJfQot KwotKwlob21lLCBlcnIgOj0gb3MuVXNlckhvbWVEaXIoKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJ CXJldHVybiBlcnIKLSsJfQotKwotKwljb25maWdQYXRoIDo9IGZpbGVwYXRoLkpvaW4oaG9tZSwg Ii5jb25maWciLCAiY3J1c2giLCAiY3J1c2guanNvbiIpCi0rCWlmIGVyciA6PSBvcy5Na2RpckFs bChmaWxlcGF0aC5EaXIoY29uZmlnUGF0aCksIDBvNzU1KTsgZXJyICE9IG5pbCB7Ci0rCQlyZXR1 cm4gZXJyCi0rCX0KLSsKLSsJY29uZmlnLCBlcnIgOj0gUmVhZENvbmZpZyhjb25maWdQYXRoKQot KwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJldHVybiBlcnIKLSsJfQotKwotKwljb25maWcuU2NoZW1h ID0gImh0dHBzOi8vY2hhcm0ubGFuZC9jcnVzaC5qc29uIgotKwotKwlkZWZhdWx0UHJvdmlkZXIg Oj0gUHJvdmlkZXJDb25maWd7Ci0rCQlJRDogICAgICAib2xsYW1hIiwKLSsJCU5hbWU6ICAgICJP bGxhbWEgKGxvY2FsKSIsCi0rCQlCYXNlVVJMOiBlbnZjb25maWcuSG9zdCgpLlN0cmluZygpICsg Ii92MSIsCi0rCQlUeXBlOiAgICAib3BlbmFpLWNvbXBhdCIsCi0rCX0KLSsKLSsJY29uZmlnLkdl dFByb3ZpZGVyT3JEZWZhdWx0KCJvbGxhbWEiLCBkZWZhdWx0UHJvdmlkZXIpCi0rCi0rCWZvciBf LCBtb2RlbCA6PSByYW5nZSBtb2RlbExpc3QgewotKwkJZm10LlByaW50ZigibW9kZWw6ICVzXG4i LCBtb2RlbCkKLSsJCW5ld01vZGVsIDo9IE1vZGVsewotKwkJCUlEOm1vZGVsLAotKwkJfQotKwkJ ZXJyID0gY29uZmlnLkFkZE1vZGVsKCJvbGxhbWEiLCBuZXdNb2RlbCkKLSsJCWlmIGVyciAhPSBu aWwgewotKwkJCWxvZy5QcmludGYoIkVycm9yIGFkZGluZyBtb2RlbDogJXYiLCBlcnIpCi0rCQl9 IGVsc2UgewotKwkJCWZtdC5QcmludGxuKCJNb2RlbCBhZGRlZCBzdWNjZXNzZnVsbHkgdG8gcHJv dmlkZXIiKQotKwkJfQotKwl9Ci0rCi0rCi0rCi0rCWVyciA9IFdyaXRlQ29uZmlnKGNvbmZpZywg Y29uZmlnUGF0aCkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlsb2cuRmF0YWwoZXJyKQotKwl9Ci0r CXJldHVybiBlcnIKLSt9Ci0rCi0rZnVuYyAobyAqQ3J1c2gpIE1vZGVscygpIFtdc3RyaW5nIHsK LSsJaG9tZSwgZXJyIDo9IG9zLlVzZXJIb21lRGlyKCkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQly ZXR1cm4gbmlsCi0rCX0KLSsJY29uZmlnLCBlcnIgOj0gcmVhZEpTT05GaWxlKGZpbGVwYXRoLkpv aW4oaG9tZSwgIi5jb25maWciLCAiY3J1c2giLCAiY3J1c2guanNvbiIpKQotKwlpZiBlcnIgIT0g bmlsIHsKLSsJCXJldHVybiBuaWwKLSsJfQotKwlwcm92aWRlciwgXyA6PSBjb25maWdbInByb3Zp ZGVyIl0uKG1hcFtzdHJpbmddYW55KQotKwlvbGxhbWEsIF8gOj0gcHJvdmlkZXJbIm9sbGFtYSJd LihtYXBbc3RyaW5nXWFueSkKLSsJbW9kZWxzLCBfIDo9IG9sbGFtYVsibW9kZWxzIl0uKG1hcFtz dHJpbmddYW55KQotKwlpZiBsZW4obW9kZWxzKSA9PSAwIHsKLSsJCXJldHVybiBuaWwKLSsJfQot KwlrZXlzIDo9IHNsaWNlcy5Db2xsZWN0KG1hcHMuS2V5cyhtb2RlbHMpKQotKwlzbGljZXMuU29y dChrZXlzKQotKwlyZXR1cm4ga2V5cwotK30KLSsKLWRpZmYgLS1naXQgYS9jbWQvY29uZmlnL2Ny dXNoX3Rlc3QuZ28gYi9jbWQvY29uZmlnL2NydXNoX3Rlc3QuZ28KLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLmRmYTY3NDNhYmIzOQotLS0tIC9kZXYvbnVsbAotKysr IGIvY21kL2NvbmZpZy9jcnVzaF90ZXN0LmdvCi1AQCAtMCwwICsxLDY2OCBAQAotK3BhY2thZ2Ug Y29uZmlnCi0rCi0raW1wb3J0ICgKLSsJImVuY29kaW5nL2pzb24iCi0rCSJmbXQiCi0rCSJvcyIK LSsJInBhdGgvZmlsZXBhdGgiCi0rCSJ0ZXN0aW5nIgotKykKLSsKLStmdW5jIFRlc3RDcnVzaElu dGVncmF0aW9uKHQgKnRlc3RpbmcuVCkgewotKwlvIDo9ICZDcnVzaHt9Ci0rCi0rCXQuUnVuKCJT dHJpbmciLCBmdW5jKHQgKnRlc3RpbmcuVCkgewotKwkJaWYgZ290IDo9IG8uU3RyaW5nKCk7IGdv dCAhPSAiQ3J1c2giIHsKLSsJCQl0LkVycm9yZigiU3RyaW5nKCkgPSAlcSwgd2FudCAlcSIsIGdv dCwgIkNydXNoIikKLSsJCX0KLSsJfSkKLSsKLSsJdC5SdW4oImltcGxlbWVudHMgUnVubmVyIiwg ZnVuYyh0ICp0ZXN0aW5nLlQpIHsKLSsJCXZhciBfIFJ1bm5lciA9IG8KLSsJfSkKLSsKLSsJdC5S dW4oImltcGxlbWVudHMgRWRpdG9yIiwgZnVuYyh0ICp0ZXN0aW5nLlQpIHsKLSsJCXZhciBfIEVk aXRvciA9IG8KLSsJfSkKLSt9Ci0rCi0rZnVuYyBUZXN0Q3J1c2hFZGl0KHQgKnRlc3RpbmcuVCkg ewotKwlvIDo9ICZDcnVzaHt9Ci0rCXRtcERpciA6PSB0LlRlbXBEaXIoKQotKwlzZXRUZXN0SG9t ZSh0LCB0bXBEaXIpCi0rCi0rCWNvbmZpZ0RpciA6PSBmaWxlcGF0aC5Kb2luKHRtcERpciwgIi5j b25maWciLCAiY3J1c2giKQotKwljb25maWdQYXRoIDo9IGZpbGVwYXRoLkpvaW4oY29uZmlnRGly LCAiY3J1c2guanNvbiIpCi0rCXN0YXRlRGlyIDo9IGZpbGVwYXRoLkpvaW4odG1wRGlyLCAiLmxv Y2FsIiwgInN0YXRlIiwgImNydXNoIikKLSsJc3RhdGVQYXRoIDo9IGZpbGVwYXRoLkpvaW4oc3Rh dGVEaXIsICJtb2RlbC5qc29uIikKLSsKLSsJY2xlYW51cCA6PSBmdW5jKCkgewotKwkJb3MuUmVt b3ZlQWxsKGNvbmZpZ0RpcikKLSsJCW9zLlJlbW92ZUFsbChzdGF0ZURpcikKLSsJfQotKwotKwl0 LlJ1bigiZnJlc2ggaW5zdGFsbCIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQljbGVhbnVwKCkK LSsJCWlmIGVyciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pOyBlcnIgIT0gbmlsIHsK LSsJCQl0LkZhdGFsKGVycikKLSsJCX0KLSsJCWFzc2VydENydXNoTW9kZWxFeGlzdHModCwgY29u ZmlnUGF0aCwgImxsYW1hMy4yIikKLSsJCWFzc2VydENydXNoUmVjZW50TW9kZWwodCwgc3RhdGVQ YXRoLCAwLCAib2xsYW1hIiwgImxsYW1hMy4yIikKLSsJfSkKLSsKLSsJdC5SdW4oInByZXNlcnZl IG90aGVyIHByb3ZpZGVycyIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQljbGVhbnVwKCkKLSsJ CW9zLk1rZGlyQWxsKGNvbmZpZ0RpciwgMG83NTUpCi0rCQlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0 aCwgW11ieXRlKGB7InByb3ZpZGVyIjp7ImFudGhyb3BpYyI6eyJhcGlLZXkiOiJ4eHgifX19YCks IDBvNjQ0KQotKwkJaWYgZXJyIDo9IG8uRWRpdChbXXN0cmluZ3sibGxhbWEzLjIifSk7IGVyciAh PSBuaWwgewotKwkJCXQuRmF0YWwoZXJyKQotKwkJfQotKwkJZGF0YSwgXyA6PSBvcy5SZWFkRmls ZShjb25maWdQYXRoKQotKwkJdmFyIGNmZyBtYXBbc3RyaW5nXWFueQotKwkJanNvbi5Vbm1hcnNo YWwoZGF0YSwgJmNmZykKLSsJCXByb3ZpZGVyIDo9IGNmZ1sicHJvdmlkZXIiXS4obWFwW3N0cmlu Z11hbnkpCi0rCQlpZiBwcm92aWRlclsiYW50aHJvcGljIl0gPT0gbmlsIHsKLSsJCQl0LkVycm9y KCJhbnRocm9waWMgcHJvdmlkZXIgd2FzIHJlbW92ZWQiKQotKwkJfQotKwkJYXNzZXJ0Q3J1c2hN b2RlbEV4aXN0cyh0LCBjb25maWdQYXRoLCAibGxhbWEzLjIiKQotKwl9KQotKwotKwl0LlJ1bigi cHJlc2VydmUgb3RoZXIgbW9kZWxzIiwgZnVuYyh0ICp0ZXN0aW5nLlQpIHsKLSsJCWNsZWFudXAo KQotKwkJb3MuTWtkaXJBbGwoY29uZmlnRGlyLCAwbzc1NSkKLSsJCW9zLldyaXRlRmlsZShjb25m aWdQYXRoLCBbXWJ5dGUoYHsicHJvdmlkZXIiOnsib2xsYW1hIjp7Im1vZGVscyI6eyJtaXN0cmFs Ijp7Im5hbWUiOiJNaXN0cmFsIn19fX19YCksIDBvNjQ0KQotKwkJaWYgZXJyIDo9IG8uRWRpdChb XXN0cmluZ3sibGxhbWEzLjIifSk7IGVyciAhPSBuaWwgewotKwkJCXQuRmF0YWwoZXJyKQotKwkJ fQotKwkJYXNzZXJ0Q3J1c2hNb2RlbEV4aXN0cyh0LCBjb25maWdQYXRoLCAibWlzdHJhbCIpCi0r CQlhc3NlcnRDcnVzaE1vZGVsRXhpc3RzKHQsIGNvbmZpZ1BhdGgsICJsbGFtYTMuMiIpCi0rCX0p Ci0rCi0rCXQuUnVuKCJ1cGRhdGUgZXhpc3RpbmcgbW9kZWwiLCBmdW5jKHQgKnRlc3RpbmcuVCkg ewotKwkJY2xlYW51cCgpCi0rCQlvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pCi0rCQlvLkVk aXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pCi0rCQlhc3NlcnRDcnVzaE1vZGVsRXhpc3RzKHQsIGNv bmZpZ1BhdGgsICJsbGFtYTMuMiIpCi0rCX0pCi0rCi0rCXQuUnVuKCJwcmVzZXJ2ZSB0b3AtbGV2 ZWwga2V5cyIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQljbGVhbnVwKCkKLSsJCW9zLk1rZGly QWxsKGNvbmZpZ0RpciwgMG83NTUpCi0rCQlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0aCwgW11ieXRl KGB7InRoZW1lIjoiZGFyayIsImtleWJpbmRpbmdzIjp7fX1gKSwgMG82NDQpCi0rCQlpZiBlcnIg Oj0gby5FZGl0KFtdc3RyaW5neyJsbGFtYTMuMiJ9KTsgZXJyICE9IG5pbCB7Ci0rCQkJdC5GYXRh bChlcnIpCi0rCQl9Ci0rCQlkYXRhLCBfIDo9IG9zLlJlYWRGaWxlKGNvbmZpZ1BhdGgpCi0rCQl2 YXIgY2ZnIG1hcFtzdHJpbmddYW55Ci0rCQlqc29uLlVubWFyc2hhbChkYXRhLCAmY2ZnKQotKwkJ aWYgY2ZnWyJ0aGVtZSJdICE9ICJkYXJrIiB7Ci0rCQkJdC5FcnJvcigidGhlbWUgd2FzIHJlbW92 ZWQiKQotKwkJfQotKwkJaWYgY2ZnWyJrZXliaW5kaW5ncyJdID09IG5pbCB7Ci0rCQkJdC5FcnJv cigia2V5YmluZGluZ3Mgd2FzIHJlbW92ZWQiKQotKwkJfQotKwl9KQotKwotKwl0LlJ1bigibW9k ZWwgc3RhdGUgLSBpbnNlcnQgYXQgaW5kZXggMCIsIGZ1bmModCAqdGVzdGluZy5UKSB7Ci0rCQlj bGVhbnVwKCkKLSsJCW9zLk1rZGlyQWxsKHN0YXRlRGlyLCAwbzc1NSkKLSsJCW9zLldyaXRlRmls ZShzdGF0ZVBhdGgsIFtdYnl0ZShgeyJyZWNlbnQiOlt7InByb3ZpZGVySUQiOiJhbnRocm9waWMi LCJtb2RlbElEIjoiY2xhdWRlIn1dLCJmYXZvcml0ZSI6W10sInZhcmlhbnQiOnt9fWApLCAwbzY0 NCkKLSsJCWlmIGVyciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pOyBlcnIgIT0gbmls IHsKLSsJCQl0LkZhdGFsKGVycikKLSsJCX0KLSsJCWFzc2VydENydXNoUmVjZW50TW9kZWwodCwg c3RhdGVQYXRoLCAwLCAib2xsYW1hIiwgImxsYW1hMy4yIikKLSsJCWFzc2VydENydXNoUmVjZW50 TW9kZWwodCwgc3RhdGVQYXRoLCAxLCAiYW50aHJvcGljIiwgImNsYXVkZSIpCi0rCX0pCi0rCi0r CXQuUnVuKCJtb2RlbCBzdGF0ZSAtIHByZXNlcnZlIGZhdm9yaXRlcyBhbmQgdmFyaWFudHMiLCBm dW5jKHQgKnRlc3RpbmcuVCkgewotKwkJY2xlYW51cCgpCi0rCQlvcy5Na2RpckFsbChzdGF0ZURp ciwgMG83NTUpCi0rCQlvcy5Xcml0ZUZpbGUoc3RhdGVQYXRoLCBbXWJ5dGUoYHsicmVjZW50Ijpb XSwiZmF2b3JpdGUiOlt7InByb3ZpZGVySUQiOiJ4IiwibW9kZWxJRCI6InkifV0sInZhcmlhbnQi OnsiYSI6ImIifX1gKSwgMG82NDQpCi0rCQlpZiBlcnIgOj0gby5FZGl0KFtdc3RyaW5neyJsbGFt YTMuMiJ9KTsgZXJyICE9IG5pbCB7Ci0rCQkJdC5GYXRhbChlcnIpCi0rCQl9Ci0rCQlkYXRhLCBf IDo9IG9zLlJlYWRGaWxlKHN0YXRlUGF0aCkKLSsJCXZhciBzdGF0ZSBtYXBbc3RyaW5nXWFueQot KwkJanNvbi5Vbm1hcnNoYWwoZGF0YSwgJnN0YXRlKQotKwkJaWYgbGVuKHN0YXRlWyJmYXZvcml0 ZSJdLihbXWFueSkpICE9IDEgewotKwkJCXQuRXJyb3IoImZhdm9yaXRlIHdhcyBtb2RpZmllZCIp Ci0rCQl9Ci0rCQlpZiBzdGF0ZVsidmFyaWFudCJdLihtYXBbc3RyaW5nXWFueSlbImEiXSAhPSAi YiIgewotKwkJCXQuRXJyb3IoInZhcmlhbnQgd2FzIG1vZGlmaWVkIikKLSsJCX0KLSsJfSkKLSsK LSsJdC5SdW4oIm1vZGVsIHN0YXRlIC0gZGVkdXBsaWNhdGUgb24gcmUtYWRkIiwgZnVuYyh0ICp0 ZXN0aW5nLlQpIHsKLSsJCWNsZWFudXAoKQotKwkJb3MuTWtkaXJBbGwoc3RhdGVEaXIsIDBvNzU1 KQotKwkJb3MuV3JpdGVGaWxlKHN0YXRlUGF0aCwgW11ieXRlKGB7InJlY2VudCI6W3sicHJvdmlk ZXJJRCI6Im9sbGFtYSIsIm1vZGVsSUQiOiJsbGFtYTMuMiJ9LHsicHJvdmlkZXJJRCI6ImFudGhy b3BpYyIsIm1vZGVsSUQiOiJjbGF1ZGUifV0sImZhdm9yaXRlIjpbXSwidmFyaWFudCI6e319YCks IDBvNjQ0KQotKwkJaWYgZXJyIDo9IG8uRWRpdChbXXN0cmluZ3sibGxhbWEzLjIifSk7IGVyciAh PSBuaWwgewotKwkJCXQuRmF0YWwoZXJyKQotKwkJfQotKwkJZGF0YSwgXyA6PSBvcy5SZWFkRmls ZShzdGF0ZVBhdGgpCi0rCQl2YXIgc3RhdGUgbWFwW3N0cmluZ11hbnkKLSsJCWpzb24uVW5tYXJz aGFsKGRhdGEsICZzdGF0ZSkKLSsJCXJlY2VudCA6PSBzdGF0ZVsicmVjZW50Il0uKFtdYW55KQot KwkJaWYgbGVuKHJlY2VudCkgIT0gMiB7Ci0rCQkJdC5FcnJvcmYoImV4cGVjdGVkIDIgcmVjZW50 IGVudHJpZXMsIGdvdCAlZCIsIGxlbihyZWNlbnQpKQotKwkJfQotKwkJYXNzZXJ0Q3J1c2hSZWNl bnRNb2RlbCh0LCBzdGF0ZVBhdGgsIDAsICJvbGxhbWEiLCAibGxhbWEzLjIiKQotKwl9KQotKwot Kwl0LlJ1bigicmVtb3ZlIG1vZGVsIiwgZnVuYyh0ICp0ZXN0aW5nLlQpIHsKLSsJCWNsZWFudXAo KQotKwkJLy8gRmlyc3QgYWRkIHR3byBtb2RlbHMKLSsJCW8uRWRpdChbXXN0cmluZ3sibGxhbWEz LjIiLCAibWlzdHJhbCJ9KQotKwkJYXNzZXJ0Q3J1c2hNb2RlbEV4aXN0cyh0LCBjb25maWdQYXRo LCAibGxhbWEzLjIiKQotKwkJYXNzZXJ0Q3J1c2hNb2RlbEV4aXN0cyh0LCBjb25maWdQYXRoLCAi bWlzdHJhbCIpCi0rCi0rCQkvLyBUaGVuIHJlbW92ZSBvbmUgYnkgb25seSBzZWxlY3RpbmcgdGhl IG90aGVyCi0rCQlvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pCi0rCQlhc3NlcnRDcnVzaE1v ZGVsRXhpc3RzKHQsIGNvbmZpZ1BhdGgsICJsbGFtYTMuMiIpCi0rCQlhc3NlcnRDcnVzaE1vZGVs Tm90RXhpc3RzKHQsIGNvbmZpZ1BhdGgsICJtaXN0cmFsIikKLSsJfSkKLSsKLSsJdC5SdW4oInBy ZXNlcnZlIHVzZXIgY3VzdG9taXphdGlvbnMgb24gbWFuYWdlZCBtb2RlbHMiLCBmdW5jKHQgKnRl c3RpbmcuVCkgewotKwkJY2xlYW51cCgpCi0rCQlpZiBlcnIgOj0gby5FZGl0KFtdc3RyaW5neyJs bGFtYTMuMiJ9KTsgZXJyICE9IG5pbCB7Ci0rCQkJdC5GYXRhbChlcnIpCi0rCQl9Ci0rCi0rCQkv LyBBZGQgY3VzdG9tIGZpZWxkcyB0byB0aGUgbW9kZWwgZW50cnkgKHNpbXVsYXRpbmcgdXNlciBl ZGl0cykKLSsJCWRhdGEsIF8gOj0gb3MuUmVhZEZpbGUoY29uZmlnUGF0aCkKLSsJCXZhciBjZmcg bWFwW3N0cmluZ11hbnkKLSsJCWpzb24uVW5tYXJzaGFsKGRhdGEsICZjZmcpCi0rCQlwcm92aWRl ciA6PSBjZmdbInByb3ZpZGVyIl0uKG1hcFtzdHJpbmddYW55KQotKwkJb2xsYW1hIDo9IHByb3Zp ZGVyWyJvbGxhbWEiXS4obWFwW3N0cmluZ11hbnkpCi0rCQltb2RlbHMgOj0gb2xsYW1hWyJtb2Rl bHMiXS4obWFwW3N0cmluZ11hbnkpCi0rCQllbnRyeSA6PSBtb2RlbHNbImxsYW1hMy4yIl0uKG1h cFtzdHJpbmddYW55KQotKwkJZW50cnlbIl9teVByZWYiXSA9ICJjdXN0b20tdmFsdWUiCi0rCQll bnRyeVsiX215TnVtIl0gPSA0MgotKwkJY29uZmlnRGF0YSwgXyA6PSBqc29uLk1hcnNoYWxJbmRl bnQoY2ZnLCAiIiwgIiAgIikKLSsJCW9zLldyaXRlRmlsZShjb25maWdQYXRoLCBjb25maWdEYXRh LCAwbzY0NCkKLSsKLSsJCS8vIFJlLXJ1biBFZGl0IOKAlCBzaG91bGQgcHJlc2VydmUgY3VzdG9t IGZpZWxkcwotKwkJaWYgZXJyIDo9IG8uRWRpdChbXXN0cmluZ3sibGxhbWEzLjIifSk7IGVyciAh PSBuaWwgewotKwkJCXQuRmF0YWwoZXJyKQotKwkJfQotKwotKwkJZGF0YSwgXyA9IG9zLlJlYWRG aWxlKGNvbmZpZ1BhdGgpCi0rCQlqc29uLlVubWFyc2hhbChkYXRhLCAmY2ZnKQotKwkJcHJvdmlk ZXIgPSBjZmdbInByb3ZpZGVyIl0uKG1hcFtzdHJpbmddYW55KQotKwkJb2xsYW1hID0gcHJvdmlk ZXJbIm9sbGFtYSJdLihtYXBbc3RyaW5nXWFueSkKLSsJCW1vZGVscyA9IG9sbGFtYVsibW9kZWxz Il0uKG1hcFtzdHJpbmddYW55KQotKwkJZW50cnkgPSBtb2RlbHNbImxsYW1hMy4yIl0uKG1hcFtz dHJpbmddYW55KQotKwotKwkJaWYgZW50cnlbIl9teVByZWYiXSAhPSAiY3VzdG9tLXZhbHVlIiB7 Ci0rCQkJdC5FcnJvcmYoIl9teVByZWYgd2FzIGxvc3Q6IGdvdCAldiIsIGVudHJ5WyJfbXlQcmVm Il0pCi0rCQl9Ci0rCQlpZiBlbnRyeVsiX215TnVtIl0gIT0gZmxvYXQ2NCg0MikgewotKwkJCXQu RXJyb3JmKCJfbXlOdW0gd2FzIGxvc3Q6IGdvdCAldiIsIGVudHJ5WyJfbXlOdW0iXSkKLSsJCX0K LSsJCWlmIHYsIG9rIDo9IGVudHJ5WyJfbGF1bmNoIl0uKGJvb2wpOyAhb2sgfHwgIXYgewotKwkJ CXQuRXJyb3JmKCJfbGF1bmNoIG1hcmtlciBtaXNzaW5nIG9yIGZhbHNlOiBnb3QgJXYiLCBlbnRy eVsiX2xhdW5jaCJdKQotKwkJfQotKwl9KQotKwotKwl0LlJ1bigibWlncmF0ZSBsZWdhY3kgW09s bGFtYV0gc3VmZml4IGVudHJpZXMiLCBmdW5jKHQgKnRlc3RpbmcuVCkgewotKwkJY2xlYW51cCgp Ci0rCQkvLyBXcml0ZSBhIGNvbmZpZyB3aXRoIGEgbGVnYWN5IGVudHJ5IChoYXMgW09sbGFtYV0g c3VmZml4IGJ1dCBubyBfbGF1bmNoIG1hcmtlcikKLSsJCW9zLk1rZGlyQWxsKGNvbmZpZ0Rpciwg MG83NTUpCi0rCQlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0aCwgW11ieXRlKGB7InByb3ZpZGVyIjp7 Im9sbGFtYSI6eyJtb2RlbHMiOnsibGxhbWEzLjIiOnsibmFtZSI6ImxsYW1hMy4yIFtPbGxhbWFd In19fX19YCksIDBvNjQ0KQotKwotKwkJaWYgZXJyIDo9IG8uRWRpdChbXXN0cmluZ3sibGxhbWEz LjIifSk7IGVyciAhPSBuaWwgewotKwkJCXQuRmF0YWwoZXJyKQotKwkJfQotKwotKwkJZGF0YSwg XyA6PSBvcy5SZWFkRmlsZShjb25maWdQYXRoKQotKwkJdmFyIGNmZyBtYXBbc3RyaW5nXWFueQot KwkJanNvbi5Vbm1hcnNoYWwoZGF0YSwgJmNmZykKLSsJCXByb3ZpZGVyIDo9IGNmZ1sicHJvdmlk ZXIiXS4obWFwW3N0cmluZ11hbnkpCi0rCQlvbGxhbWEgOj0gcHJvdmlkZXJbIm9sbGFtYSJdLiht YXBbc3RyaW5nXWFueSkKLSsJCW1vZGVscyA6PSBvbGxhbWFbIm1vZGVscyJdLihtYXBbc3RyaW5n XWFueSkKLSsJCWVudHJ5IDo9IG1vZGVsc1sibGxhbWEzLjIiXS4obWFwW3N0cmluZ11hbnkpCi0r Ci0rCQkvLyBfbGF1bmNoIG1hcmtlciBzaG91bGQgYmUgYWRkZWQKLSsJCWlmIHYsIG9rIDo9IGVu dHJ5WyJfbGF1bmNoIl0uKGJvb2wpOyAhb2sgfHwgIXYgewotKwkJCXQuRXJyb3JmKCJfbGF1bmNo IG1hcmtlciBub3QgYWRkZWQgZHVyaW5nIG1pZ3JhdGlvbjogZ290ICV2IiwgZW50cnlbIl9sYXVu Y2giXSkKLSsJCX0KLSsJCS8vIFtPbGxhbWFdIHN1ZmZpeCBzaG91bGQgYmUgc3RyaXBwZWQKLSsJ CWlmIG5hbWUsIG9rIDo9IGVudHJ5WyJuYW1lIl0uKHN0cmluZyk7ICFvayB8fCBuYW1lICE9ICJs bGFtYTMuMiIgewotKwkJCXQuRXJyb3JmKCJuYW1lIHN1ZmZpeCBub3Qgc3RyaXBwZWQ6IGdvdCAl cSIsIGVudHJ5WyJuYW1lIl0pCi0rCQl9Ci0rCX0pCi0rCi0rCXQuUnVuKCJyZW1vdmUgbW9kZWwg cHJlc2VydmVzIG5vbi1vbGxhbWEgbW9kZWxzIiwgZnVuYyh0ICp0ZXN0aW5nLlQpIHsKLSsJCWNs ZWFudXAoKQotKwkJb3MuTWtkaXJBbGwoY29uZmlnRGlyLCAwbzc1NSkKLSsJCS8vIEFkZCBhIG5v bi1PbGxhbWEgbW9kZWwgbWFudWFsbHkKLSsJCW9zLldyaXRlRmlsZShjb25maWdQYXRoLCBbXWJ5 dGUoYHsicHJvdmlkZXIiOnsib2xsYW1hIjp7Im1vZGVscyI6eyJleHRlcm5hbCI6eyJuYW1lIjoi RXh0ZXJuYWwgTW9kZWwifX19fX1gKSwgMG82NDQpCi0rCi0rCQlvLkVkaXQoW11zdHJpbmd7Imxs YW1hMy4yIn0pCi0rCQlhc3NlcnRDcnVzaE1vZGVsRXhpc3RzKHQsIGNvbmZpZ1BhdGgsICJsbGFt YTMuMiIpCi0rCQlhc3NlcnRDcnVzaE1vZGVsRXhpc3RzKHQsIGNvbmZpZ1BhdGgsICJleHRlcm5h bCIpIC8vIFNob3VsZCBiZSBwcmVzZXJ2ZWQKLSsJfSkKLSt9Ci0rCi0rZnVuYyBhc3NlcnRDcnVz aE1vZGVsRXhpc3RzKHQgKnRlc3RpbmcuVCwgcGF0aCwgbW9kZWwgc3RyaW5nKSB7Ci0rCXQuSGVs cGVyKCkKLSsJZGF0YSwgZXJyIDo9IG9zLlJlYWRGaWxlKHBhdGgpCi0rCWlmIGVyciAhPSBuaWwg ewotKwkJdC5GYXRhbChlcnIpCi0rCX0KLSsJdmFyIGNmZyBtYXBbc3RyaW5nXWFueQotKwlpZiBl cnIgOj0ganNvbi5Vbm1hcnNoYWwoZGF0YSwgJmNmZyk7IGVyciAhPSBuaWwgewotKwkJdC5GYXRh bChlcnIpCi0rCX0KLSsJcHJvdmlkZXIsIG9rIDo9IGNmZ1sicHJvdmlkZXIiXS4obWFwW3N0cmlu Z11hbnkpCi0rCWlmICFvayB7Ci0rCQl0LkZhdGFsKCJwcm92aWRlciBub3QgZm91bmQiKQotKwl9 Ci0rCW9sbGFtYSwgb2sgOj0gcHJvdmlkZXJbIm9sbGFtYSJdLihtYXBbc3RyaW5nXWFueSkKLSsJ aWYgIW9rIHsKLSsJCXQuRmF0YWwoIm9sbGFtYSBwcm92aWRlciBub3QgZm91bmQiKQotKwl9Ci0r CW1vZGVscywgb2sgOj0gb2xsYW1hWyJtb2RlbHMiXS4obWFwW3N0cmluZ11hbnkpCi0rCWlmICFv ayB7Ci0rCQl0LkZhdGFsKCJtb2RlbHMgbm90IGZvdW5kIikKLSsJfQotKwlpZiBtb2RlbHNbbW9k ZWxdID09IG5pbCB7Ci0rCQl0LkVycm9yZigibW9kZWwgJXMgbm90IGZvdW5kIiwgbW9kZWwpCi0r CX0KLSt9Ci0rCi0rZnVuYyBhc3NlcnRDcnVzaE1vZGVsTm90RXhpc3RzKHQgKnRlc3RpbmcuVCwg cGF0aCwgbW9kZWwgc3RyaW5nKSB7Ci0rCXQuSGVscGVyKCkKLSsJZGF0YSwgZXJyIDo9IG9zLlJl YWRGaWxlKHBhdGgpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJdC5GYXRhbChlcnIpCi0rCX0KLSsJ dmFyIGNmZyBtYXBbc3RyaW5nXWFueQotKwlpZiBlcnIgOj0ganNvbi5Vbm1hcnNoYWwoZGF0YSwg JmNmZyk7IGVyciAhPSBuaWwgewotKwkJdC5GYXRhbChlcnIpCi0rCX0KLSsJcHJvdmlkZXIsIG9r IDo9IGNmZ1sicHJvdmlkZXIiXS4obWFwW3N0cmluZ11hbnkpCi0rCWlmICFvayB7Ci0rCQlyZXR1 cm4gLy8gTm8gcHJvdmlkZXIgbWVhbnMgbm8gbW9kZWwKLSsJfQotKwlvbGxhbWEsIG9rIDo9IHBy b3ZpZGVyWyJvbGxhbWEiXS4obWFwW3N0cmluZ11hbnkpCi0rCWlmICFvayB7Ci0rCQlyZXR1cm4g Ly8gTm8gb2xsYW1hIG1lYW5zIG5vIG1vZGVsCi0rCX0KLSsJbW9kZWxzLCBvayA6PSBvbGxhbWFb Im1vZGVscyJdLihtYXBbc3RyaW5nXWFueSkKLSsJaWYgIW9rIHsKLSsJCXJldHVybiAvLyBObyBt b2RlbHMgbWVhbnMgbm8gbW9kZWwKLSsJfQotKwlpZiBtb2RlbHNbbW9kZWxdICE9IG5pbCB7Ci0r CQl0LkVycm9yZigibW9kZWwgJXMgc2hvdWxkIG5vdCBleGlzdCBidXQgd2FzIGZvdW5kIiwgbW9k ZWwpCi0rCX0KLSt9Ci0rCi0rZnVuYyBhc3NlcnRDcnVzaFJlY2VudE1vZGVsKHQgKnRlc3Rpbmcu VCwgcGF0aCBzdHJpbmcsIGluZGV4IGludCwgcHJvdmlkZXJJRCwgbW9kZWxJRCBzdHJpbmcpIHsK LSsJdC5IZWxwZXIoKQotKwlkYXRhLCBlcnIgOj0gb3MuUmVhZEZpbGUocGF0aCkKLSsJaWYgZXJy ICE9IG5pbCB7Ci0rCQl0LkZhdGFsKGVycikKLSsJfQotKwl2YXIgc3RhdGUgbWFwW3N0cmluZ11h bnkKLSsJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGRhdGEsICZzdGF0ZSk7IGVyciAhPSBuaWwg ewotKwkJdC5GYXRhbChlcnIpCi0rCX0KLSsJcmVjZW50LCBvayA6PSBzdGF0ZVsicmVjZW50Il0u KFtdYW55KQotKwlpZiAhb2sgewotKwkJdC5GYXRhbCgicmVjZW50IG5vdCBmb3VuZCIpCi0rCX0K LSsJaWYgaW5kZXggPj0gbGVuKHJlY2VudCkgewotKwkJdC5GYXRhbGYoImluZGV4ICVkIG91dCBv ZiByYW5nZSAobGVuPSVkKSIsIGluZGV4LCBsZW4ocmVjZW50KSkKLSsJfQotKwllbnRyeSwgb2sg Oj0gcmVjZW50W2luZGV4XS4obWFwW3N0cmluZ11hbnkpCi0rCWlmICFvayB7Ci0rCQl0LkZhdGFs KCJlbnRyeSBpcyBub3QgYSBtYXAiKQotKwl9Ci0rCWlmIGVudHJ5WyJwcm92aWRlcklEIl0gIT0g cHJvdmlkZXJJRCB7Ci0rCQl0LkVycm9yZigiZXhwZWN0ZWQgcHJvdmlkZXJJRCAlcywgZ290ICVz IiwgcHJvdmlkZXJJRCwgZW50cnlbInByb3ZpZGVySUQiXSkKLSsJfQotKwlpZiBlbnRyeVsibW9k ZWxJRCJdICE9IG1vZGVsSUQgewotKwkJdC5FcnJvcmYoImV4cGVjdGVkIG1vZGVsSUQgJXMsIGdv dCAlcyIsIG1vZGVsSUQsIGVudHJ5WyJtb2RlbElEIl0pCi0rCX0KLSt9Ci0rCi0rLy8gRWRnZSBj YXNlIHRlc3RzIGZvciBjcnVzaC5nbwotKwotK2Z1bmMgVGVzdENydXNoRWRpdF9Db3JydXB0ZWRD b25maWdKU09OKHQgKnRlc3RpbmcuVCkgewotKwlvIDo9ICZDcnVzaHt9Ci0rCXRtcERpciA6PSB0 LlRlbXBEaXIoKQotKwlzZXRUZXN0SG9tZSh0LCB0bXBEaXIpCi0rCi0rCWNvbmZpZ0RpciA6PSBm aWxlcGF0aC5Kb2luKHRtcERpciwgIi5jb25maWciLCAiY3J1c2giKQotKwljb25maWdQYXRoIDo9 IGZpbGVwYXRoLkpvaW4oY29uZmlnRGlyLCAiY3J1c2guanNvbiIpCi0rCi0rCW9zLk1rZGlyQWxs KGNvbmZpZ0RpciwgMG83NTUpCi0rCW9zLldyaXRlRmlsZShjb25maWdQYXRoLCBbXWJ5dGUoYHtj b3JydXB0ZWQganNvbiBjb250ZW50YCksIDBvNjQ0KQotKwotKwkvLyBTaG91bGQgbm90IHBhbmlj IC0gY29ycnVwdGVkIEpTT04gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZW1wdHkKLSsJZXJyIDo9IG8u RWRpdChbXXN0cmluZ3sibGxhbWEzLjIifSkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQl0LkZhdGFs ZigiRWRpdCBmYWlsZWQgd2l0aCBjb3JydXB0ZWQgY29uZmlnOiAldiIsIGVycikKLSsJfQotKwot KwkvLyBWZXJpZnkgdmFsaWQgSlNPTiB3YXMgY3JlYXRlZAotKwlkYXRhLCBfIDo9IG9zLlJlYWRG aWxlKGNvbmZpZ1BhdGgpCi0rCXZhciBjZmcgbWFwW3N0cmluZ11hbnkKLSsJaWYgZXJyIDo9IGpz b24uVW5tYXJzaGFsKGRhdGEsICZjZmcpOyBlcnIgIT0gbmlsIHsKLSsJCXQuRXJyb3JmKCJyZXN1 bHRpbmcgY29uZmlnIGlzIG5vdCB2YWxpZCBKU09OOiAldiIsIGVycikKLSsJfQotK30KLSsKLStm dW5jIFRlc3RDcnVzaEVkaXRfQ29ycnVwdGVkU3RhdGVKU09OKHQgKnRlc3RpbmcuVCkgewotKwlv IDo9ICZDcnVzaHt9Ci0rCXRtcERpciA6PSB0LlRlbXBEaXIoKQotKwlzZXRUZXN0SG9tZSh0LCB0 bXBEaXIpCi0rCi0rCXN0YXRlRGlyIDo9IGZpbGVwYXRoLkpvaW4odG1wRGlyLCAiLmxvY2FsIiwg InN0YXRlIiwgImNydXNoIikKLSsJc3RhdGVQYXRoIDo9IGZpbGVwYXRoLkpvaW4oc3RhdGVEaXIs ICJtb2RlbC5qc29uIikKLSsKLSsJb3MuTWtkaXJBbGwoc3RhdGVEaXIsIDBvNzU1KQotKwlvcy5X cml0ZUZpbGUoc3RhdGVQYXRoLCBbXWJ5dGUoYHtjb3JydXB0ZWQgc3RhdGVgKSwgMG82NDQpCi0r Ci0rCWVyciA6PSBvLkVkaXQoW11zdHJpbmd7ImxsYW1hMy4yIn0pCi0rCWlmIGVyciAhPSBuaWwg ewotKwkJdC5GYXRhbGYoIkVkaXQgZmFpbGVkIHdpdGggY29ycnVwdGVkIHN0YXRlOiAldiIsIGVy cikKLSsJfQotKwotKwkvLyBWZXJpZnkgdmFsaWQgc3RhdGUgd2FzIGNyZWF0ZWQKLSsJZGF0YSwg XyA6PSBvcy5SZWFkRmlsZShzdGF0ZVBhdGgpCi0rCXZhciBzdGF0ZSBtYXBbc3RyaW5nXWFueQot KwlpZiBlcnIgOj0ganNvbi5Vbm1hcnNoYWwoZGF0YSwgJnN0YXRlKTsgZXJyICE9IG5pbCB7Ci0r CQl0LkVycm9yZigicmVzdWx0aW5nIHN0YXRlIGlzIG5vdCB2YWxpZCBKU09OOiAldiIsIGVycikK LSsJfQotK30KLSsKLStmdW5jIFRlc3RDcnVzaEVkaXRfV3JvbmdUeXBlUHJvdmlkZXIodCAqdGVz dGluZy5UKSB7Ci0rCW8gOj0gJkNydXNoe30KLSsJdG1wRGlyIDo9IHQuVGVtcERpcigpCi0rCXNl dFRlc3RIb21lKHQsIHRtcERpcikKLSsKLSsJY29uZmlnRGlyIDo9IGZpbGVwYXRoLkpvaW4odG1w RGlyLCAiLmNvbmZpZyIsICJjcnVzaCIpCi0rCWNvbmZpZ1BhdGggOj0gZmlsZXBhdGguSm9pbihj b25maWdEaXIsICJjcnVzaC5qc29uIikKLSsKLSsJb3MuTWtkaXJBbGwoY29uZmlnRGlyLCAwbzc1 NSkKLSsJb3MuV3JpdGVGaWxlKGNvbmZpZ1BhdGgsIFtdYnl0ZShgeyJwcm92aWRlciI6ICJub3Qg YSBtYXAifWApLCAwbzY0NCkKLSsKLSsJZXJyIDo9IG8uRWRpdChbXXN0cmluZ3sibGxhbWEzLjIi fSkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQl0LkZhdGFsZigiRWRpdCB3aXRoIHdyb25nIHR5cGUg cHJvdmlkZXIgZmFpbGVkOiAldiIsIGVycikKLSsJfQotKwotKwkvLyBWZXJpZnkgcHJvdmlkZXIg aXMgbm93IGNvcnJlY3QgdHlwZQotKwlkYXRhLCBfIDo9IG9zLlJlYWRGaWxlKGNvbmZpZ1BhdGgp Ci0rCXZhciBjZmcgbWFwW3N0cmluZ11hbnkKLSsJanNvbi5Vbm1hcnNoYWwoZGF0YSwgJmNmZykK LSsKLSsJcHJvdmlkZXIsIG9rIDo9IGNmZ1sicHJvdmlkZXIiXS4obWFwW3N0cmluZ11hbnkpCi0r CWlmICFvayB7Ci0rCQl0LkZhdGFsZigicHJvdmlkZXIgc2hvdWxkIGJlIG1hcCBhZnRlciBzZXR1 cCwgZ290ICVUIiwgY2ZnWyJwcm92aWRlciJdKQotKwl9Ci0rCWlmIHByb3ZpZGVyWyJvbGxhbWEi XSA9PSBuaWwgewotKwkJdC5FcnJvcigib2xsYW1hIHByb3ZpZGVyIHNob3VsZCBiZSBjcmVhdGVk IikKLSsJfQotK30KLSsKLStmdW5jIFRlc3RDcnVzaEVkaXRfV3JvbmdUeXBlUmVjZW50KHQgKnRl c3RpbmcuVCkgewotKwlvIDo9ICZDcnVzaHt9Ci0rCXRtcERpciA6PSB0LlRlbXBEaXIoKQotKwlz ZXRUZXN0SG9tZSh0LCB0bXBEaXIpCi0rCi0rCXN0YXRlRGlyIDo9IGZpbGVwYXRoLkpvaW4odG1w RGlyLCAiLmxvY2FsIiwgInN0YXRlIiwgImNydXNoIikKLSsJc3RhdGVQYXRoIDo9IGZpbGVwYXRo LkpvaW4oc3RhdGVEaXIsICJtb2RlbC5qc29uIikKLSsKLSsJb3MuTWtkaXJBbGwoc3RhdGVEaXIs IDBvNzU1KQotKwlvcy5Xcml0ZUZpbGUoc3RhdGVQYXRoLCBbXWJ5dGUoYHsicmVjZW50IjogIm5v dCBhbiBhcnJheSIsICJmYXZvcml0ZSI6IFtdLCAidmFyaWFudCI6IHt9fWApLCAwbzY0NCkKLSsK LSsJZXJyIDo9IG8uRWRpdChbXXN0cmluZ3sibGxhbWEzLjIifSkKLSsJaWYgZXJyICE9IG5pbCB7 Ci0rCQl0LkZhdGFsZigiRWRpdCB3aXRoIHdyb25nIHR5cGUgcmVjZW50IGZhaWxlZDogJXYiLCBl cnIpCi0rCX0KLSsKLSsJLy8gVGhlIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdGhpcyBncmFjZWZ1 bGx5Ci0rCWRhdGEsIF8gOj0gb3MuUmVhZEZpbGUoc3RhdGVQYXRoKQotKwl2YXIgc3RhdGUgbWFw W3N0cmluZ11hbnkKLSsJanNvbi5Vbm1hcnNoYWwoZGF0YSwgJnN0YXRlKQotKwotKwkvLyByZWNl bnQgc2hvdWxkIGJlIHByb3Blcmx5IHNldCBhZnRlciBzZXR1cAotKwlyZWNlbnQsIG9rIDo9IHN0 YXRlWyJyZWNlbnQiXS4oW11hbnkpCi0rCWlmICFvayB7Ci0rCQl0LkxvZ2YoIk5vdGU6IHJlY2Vu dCB0eXBlIGFmdGVyIHNldHVwIGlzICVUIChkb2N1bWVudGluZyBiZWhhdmlvcikiLCBzdGF0ZVsi cmVjZW50Il0pCi0rCX0gZWxzZSBpZiBsZW4ocmVjZW50KSA9PSAwIHsKLSsJCXQuTG9nZigiTm90 ZTogcmVjZW50IGlzIGVtcHR5IChkb2N1bWVudGluZyBiZWhhdmlvcikiKQotKwl9Ci0rfQotKwot K2Z1bmMgVGVzdENydXNoRWRpdF9FbXB0eU1vZGVscyh0ICp0ZXN0aW5nLlQpIHsKLSsJbyA6PSAm Q3J1c2h7fQotKwl0bXBEaXIgOj0gdC5UZW1wRGlyKCkKLSsJc2V0VGVzdEhvbWUodCwgdG1wRGly KQotKwotKwljb25maWdEaXIgOj0gZmlsZXBhdGguSm9pbih0bXBEaXIsICIuY29uZmlnIiwgImNy dXNoIikKLSsJY29uZmlnUGF0aCA6PSBmaWxlcGF0aC5Kb2luKGNvbmZpZ0RpciwgImNydXNoLmpz b24iKQotKwotKwlvcy5Na2RpckFsbChjb25maWdEaXIsIDBvNzU1KQotKwlvcmlnaW5hbENvbnRl bnQgOj0gYHsicHJvdmlkZXIiOnsib2xsYW1hIjp7Im1vZGVscyI6eyJleGlzdGluZyI6e319fX19 YAotKwlvcy5Xcml0ZUZpbGUoY29uZmlnUGF0aCwgW11ieXRlKG9yaWdpbmFsQ29udGVudCksIDBv NjQ0KQotKwotKwkvLyBFbXB0eSBtb2RlbHMgc2hvdWxkIGJlIG5vLW9wCi0rCWVyciA6PSBvLkVk aXQoW11zdHJpbmd7fSkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQl0LkZhdGFsZigiRWRpdCB3aXRo IGVtcHR5IG1vZGVscyBmYWlsZWQ6ICV2IiwgZXJyKQotKwl9Ci0rCi0rCS8vIE9yaWdpbmFsIGNv bnRlbnQgc2hvdWxkIGJlIHByZXNlcnZlZCAoZmlsZSBub3QgbW9kaWZpZWQpCi0rCWRhdGEsIF8g Oj0gb3MuUmVhZEZpbGUoY29uZmlnUGF0aCkKLSsJaWYgc3RyaW5nKGRhdGEpICE9IG9yaWdpbmFs Q29udGVudCB7Ci0rCQl0LkVycm9yZigiZW1wdHkgbW9kZWxzIHNob3VsZCBub3QgbW9kaWZ5IGZp bGUsIGJ1dCBjb250ZW50IGNoYW5nZWQiKQotKwl9Ci0rfQotKwotK2Z1bmMgVGVzdENydXNoRWRp dF9TcGVjaWFsQ2hhcnNJbk1vZGVsTmFtZSh0ICp0ZXN0aW5nLlQpIHsKLSsJbyA6PSAmQ3J1c2h7 fQotKwl0bXBEaXIgOj0gdC5UZW1wRGlyKCkKLSsJc2V0VGVzdEhvbWUodCwgdG1wRGlyKQotKwot KwkvLyBNb2RlbCBuYW1lIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzICh0aG91Z2ggdW51c3VhbCkK LSsJc3BlY2lhbE1vZGVsIDo9IGBtb2RlbC13aXRoLSJxdW90ZXMiYAotKwotKwllcnIgOj0gby5F ZGl0KFtdc3RyaW5ne3NwZWNpYWxNb2RlbH0pCi0rCWlmIGVyciAhPSBuaWwgewotKwkJdC5GYXRh bGYoIkVkaXQgd2l0aCBzcGVjaWFsIGNoYXJzIGZhaWxlZDogJXYiLCBlcnIpCi0rCX0KLSsKLSsJ Ly8gVmVyaWZ5IGl0IHdhcyBzdG9yZWQgY29ycmVjdGx5Ci0rCWNvbmZpZ0RpciA6PSBmaWxlcGF0 aC5Kb2luKHRtcERpciwgIi5jb25maWciLCAiY3J1c2giKQotKwljb25maWdQYXRoIDo9IGZpbGVw YXRoLkpvaW4oY29uZmlnRGlyLCAiY3J1c2guanNvbiIpCi0rCWRhdGEsIF8gOj0gb3MuUmVhZEZp bGUoY29uZmlnUGF0aCkKLSsKLSsJdmFyIGNmZyBtYXBbc3RyaW5nXWFueQotKwlpZiBlcnIgOj0g anNvbi5Vbm1hcnNoYWwoZGF0YSwgJmNmZyk7IGVyciAhPSBuaWwgewotKwkJdC5GYXRhbGYoInJl c3VsdGluZyBjb25maWcgaXMgaW52YWxpZCBKU09OOiAldiIsIGVycikKLSsJfQotKwotKwkvLyBN b2RlbCBzaG91bGQgYmUgYWNjZXNzaWJsZQotKwlwcm92aWRlciwgXyA6PSBjZmdbInByb3ZpZGVy Il0uKG1hcFtzdHJpbmddYW55KQotKwlvbGxhbWEsIF8gOj0gcHJvdmlkZXJbIm9sbGFtYSJdLiht YXBbc3RyaW5nXWFueSkKLSsJbW9kZWxzLCBfIDo9IG9sbGFtYVsibW9kZWxzIl0uKG1hcFtzdHJp bmddYW55KQotKwotKwlpZiBtb2RlbHNbc3BlY2lhbE1vZGVsXSA9PSBuaWwgewotKwkJdC5FcnJv cmYoIm1vZGVsIHdpdGggc3BlY2lhbCBjaGFycyBub3QgZm91bmQgaW4gY29uZmlnIikKLSsJfQot K30KLSsKLStmdW5jIHJlYWRDcnVzaE1vZGVsKHQgKnRlc3RpbmcuVCwgY29uZmlnUGF0aCwgbW9k ZWwgc3RyaW5nKSBtYXBbc3RyaW5nXWFueSB7Ci0rCXQuSGVscGVyKCkKLSsJZGF0YSwgZXJyIDo9 IG9zLlJlYWRGaWxlKGNvbmZpZ1BhdGgpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJdC5GYXRhbChl cnIpCi0rCX0KLSsJdmFyIGNmZyBtYXBbc3RyaW5nXWFueQotKwlqc29uLlVubWFyc2hhbChkYXRh LCAmY2ZnKQotKwlwcm92aWRlciA6PSBjZmdbInByb3ZpZGVyIl0uKG1hcFtzdHJpbmddYW55KQot KwlvbGxhbWEgOj0gcHJvdmlkZXJbIm9sbGFtYSJdLihtYXBbc3RyaW5nXWFueSkKLSsJbW9kZWxz IDo9IG9sbGFtYVsibW9kZWxzIl0uKG1hcFtzdHJpbmddYW55KQotKwllbnRyeSwgb2sgOj0gbW9k ZWxzW21vZGVsXS4obWFwW3N0cmluZ11hbnkpCi0rCWlmICFvayB7Ci0rCQl0LkZhdGFsZigibW9k ZWwgJXMgbm90IGZvdW5kIGluIGNvbmZpZyIsIG1vZGVsKQotKwl9Ci0rCXJldHVybiBlbnRyeQot K30KLSsKLStmdW5jIFRlc3RDcnVzaEVkaXRfTG9jYWxNb2RlbE5vTGltaXQodCAqdGVzdGluZy5U KSB7Ci0rCW8gOj0gJkNydXNoe30KLSsJdG1wRGlyIDo9IHQuVGVtcERpcigpCi0rCXNldFRlc3RI b21lKHQsIHRtcERpcikKLSsKLSsJY29uZmlnUGF0aCA6PSBmaWxlcGF0aC5Kb2luKHRtcERpciwg Ii5jb25maWciLCAiY3J1c2giLCAiY3J1c2guanNvbiIpCi0rCi0rCWlmIGVyciA6PSBvLkVkaXQo W11zdHJpbmd7ImxsYW1hMy4yIn0pOyBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWwoZXJyKQotKwl9 Ci0rCi0rCWVudHJ5IDo9IHJlYWRDcnVzaE1vZGVsKHQsIGNvbmZpZ1BhdGgsICJsbGFtYTMuMiIp Ci0rCWlmIGVudHJ5WyJsaW1pdCJdICE9IG5pbCB7Ci0rCQl0LkVycm9yZigibG9jYWwgbW9kZWwg c2hvdWxkIG5vdCBoYXZlIGxpbWl0IHNldCwgZ290ICV2IiwgZW50cnlbImxpbWl0Il0pCi0rCX0K LSt9Ci0rCi0rZnVuYyBUZXN0Q3J1c2hFZGl0X1ByZXNlcnZlc1VzZXJMaW1pdCh0ICp0ZXN0aW5n LlQpIHsKLSsJbyA6PSAmQ3J1c2h7fQotKwl0bXBEaXIgOj0gdC5UZW1wRGlyKCkKLSsJc2V0VGVz dEhvbWUodCwgdG1wRGlyKQotKwotKwljb25maWdEaXIgOj0gZmlsZXBhdGguSm9pbih0bXBEaXIs ICIuY29uZmlnIiwgImNydXNoIikKLSsJY29uZmlnUGF0aCA6PSBmaWxlcGF0aC5Kb2luKGNvbmZp Z0RpciwgImNydXNoLmpzb24iKQotKwotKwkvLyBTZXQgdXAgYSBtb2RlbCB3aXRoIGEgdXNlci1j b25maWd1cmVkIGxpbWl0Ci0rCW9zLk1rZGlyQWxsKGNvbmZpZ0RpciwgMG83NTUpCi0rCW9zLldy aXRlRmlsZShjb25maWdQYXRoLCBbXWJ5dGUoYHsKLSsJCSJwcm92aWRlciI6IHsKLSsJCQkib2xs YW1hIjogewotKwkJCQkibW9kZWxzIjogewotKwkJCQkJImxsYW1hMy4yIjogewotKwkJCQkJCSJu YW1lIjogImxsYW1hMy4yIiwKLSsJCQkJCQkiX2xhdW5jaCI6IHRydWUsCi0rCQkJCQkJImxpbWl0 IjogeyJjb250ZXh0IjogODE5MiwgIm91dHB1dCI6IDQwOTZ9Ci0rCQkJCQl9Ci0rCQkJCX0KLSsJ CQl9Ci0rCQl9Ci0rCX1gKSwgMG82NDQpCi0rCi0rCS8vIFJlLWVkaXQgc2hvdWxkIHByZXNlcnZl IHRoZSB1c2VyJ3MgbGltaXQgKG5vdCBkZWxldGUgaXQpCi0rCWlmIGVyciA6PSBvLkVkaXQoW11z dHJpbmd7ImxsYW1hMy4yIn0pOyBlcnIgIT0gbmlsIHsKLSsJCXQuRmF0YWwoZXJyKQotKwl9Ci0r Ci0rCWVudHJ5IDo9IHJlYWRDcnVzaE1vZGVsKHQsIGNvbmZpZ1BhdGgsICJsbGFtYTMuMiIpCi0r CWxpbWl0LCBvayA6PSBlbnRyeVsibGltaXQiXS4obWFwW3N0cmluZ11hbnkpCi0rCWlmICFvayB7 Ci0rCQl0LkZhdGFsKCJ1c2VyLWNvbmZpZ3VyZWQgbGltaXQgd2FzIHJlbW92ZWQiKQotKwl9Ci0r CWlmIGxpbWl0WyJjb250ZXh0Il0gIT0gZmxvYXQ2NCg4MTkyKSB7Ci0rCQl0LkVycm9yZigiY29u dGV4dCBsaW1pdCBjaGFuZ2VkOiBnb3QgJXYsIHdhbnQgODE5MiIsIGxpbWl0WyJjb250ZXh0Il0p Ci0rCX0KLSsJaWYgbGltaXRbIm91dHB1dCJdICE9IGZsb2F0NjQoNDA5NikgewotKwkJdC5FcnJv cmYoIm91dHB1dCBsaW1pdCBjaGFuZ2VkOiBnb3QgJXYsIHdhbnQgNDA5NiIsIGxpbWl0WyJvdXRw dXQiXSkKLSsJfQotK30KLSsKLStmdW5jIFRlc3RDcnVzaEVkaXRfQ2xvdWRNb2RlbExpbWl0U3Ry dWN0dXJlKHQgKnRlc3RpbmcuVCkgewotKwkvLyBWZXJpZnkgdGhhdCB3aGVuIGEgY2xvdWQgbW9k ZWwgZW50cnkgaGFzIGxpbWl0cyBzZXQgKGFzIEVkaXQgd291bGQgZG8pLAotKwkvLyB0aGUgc3Ry dWN0dXJlIG1hdGNoZXMgd2hhdCBjcnVzaCBleHBlY3RzIGFuZCByZS1lZGl0IHByZXNlcnZlcyB0 aGVtLgotKwlvIDo9ICZDcnVzaHt9Ci0rCXRtcERpciA6PSB0LlRlbXBEaXIoKQotKwlzZXRUZXN0 SG9tZSh0LCB0bXBEaXIpCi0rCi0rCWNvbmZpZ0RpciA6PSBmaWxlcGF0aC5Kb2luKHRtcERpciwg Ii5jb25maWciLCAiY3J1c2giKQotKwljb25maWdQYXRoIDo9IGZpbGVwYXRoLkpvaW4oY29uZmln RGlyLCAiY3J1c2guanNvbiIpCi0rCi0rCWV4cGVjdGVkIDo9IGNsb3VkTW9kZWxMaW1pdHNbImds bS00LjciXQotKwotKwkvLyBTaW11bGF0ZSBhIGNsb3VkIG1vZGVsIHRoYXQgYWxyZWFkeSBoYXMg dGhlIGxpbWl0IHNldCBieSBhIHByZXZpb3VzIEVkaXQKLSsJb3MuTWtkaXJBbGwoY29uZmlnRGly LCAwbzc1NSkKLSsJb3MuV3JpdGVGaWxlKGNvbmZpZ1BhdGgsIFtdYnl0ZShmbXQuU3ByaW50Zihg ewotKwkJInByb3ZpZGVyIjogewotKwkJCSJvbGxhbWEiOiB7Ci0rCQkJCSJtb2RlbHMiOiB7Ci0r CQkJCQkiZ2xtLTQuNzpjbG91ZCI6IHsKLSsJCQkJCQkibmFtZSI6ICJnbG0tNC43OmNsb3VkIiwK LSsJCQkJCQkiX2xhdW5jaCI6IHRydWUsCi0rCQkJCQkJImxpbWl0IjogeyJjb250ZXh0IjogJWQs ICJvdXRwdXQiOiAlZH0KLSsJCQkJCX0KLSsJCQkJfQotKwkJCX0KLSsJCX0KLSsJfWAsIGV4cGVj dGVkLkNvbnRleHQsIGV4cGVjdGVkLk91dHB1dCkpLCAwbzY0NCkKLSsKLSsJLy8gUmUtZWRpdCBz aG91bGQgcHJlc2VydmUgdGhlIGNsb3VkIG1vZGVsIGxpbWl0Ci0rCWlmIGVyciA6PSBvLkVkaXQo W11zdHJpbmd7ImdsbS00Ljc6Y2xvdWQifSk7IGVyciAhPSBuaWwgewotKwkJdC5GYXRhbChlcnIp Ci0rCX0KLSsKLSsJZW50cnkgOj0gcmVhZENydXNoTW9kZWwodCwgY29uZmlnUGF0aCwgImdsbS00 Ljc6Y2xvdWQiKQotKwlsaW1pdCwgb2sgOj0gZW50cnlbImxpbWl0Il0uKG1hcFtzdHJpbmddYW55 KQotKwlpZiAhb2sgewotKwkJdC5GYXRhbCgiY2xvdWQgbW9kZWwgbGltaXQgd2FzIHJlbW92ZWQg b24gcmUtZWRpdCIpCi0rCX0KLSsJaWYgbGltaXRbImNvbnRleHQiXSAhPSBmbG9hdDY0KGV4cGVj dGVkLkNvbnRleHQpIHsKLSsJCXQuRXJyb3JmKCJjb250ZXh0ID0gJXYsIHdhbnQgJWQiLCBsaW1p dFsiY29udGV4dCJdLCBleHBlY3RlZC5Db250ZXh0KQotKwl9Ci0rCWlmIGxpbWl0WyJvdXRwdXQi XSAhPSBmbG9hdDY0KGV4cGVjdGVkLk91dHB1dCkgewotKwkJdC5FcnJvcmYoIm91dHB1dCA9ICV2 LCB3YW50ICVkIiwgbGltaXRbIm91dHB1dCJdLCBleHBlY3RlZC5PdXRwdXQpCi0rCX0KLSt9Ci0r Ci0rZnVuYyBUZXN0TG9va3VwQ2xvdWRNb2RlbExpbWl0KHQgKnRlc3RpbmcuVCkgewotKwl0ZXN0 cyA6PSBbXXN0cnVjdCB7Ci0rCQluYW1lICAgICAgICBzdHJpbmcKLSsJCXdhbnRPSyAgICAgIGJv b2wKLSsJCXdhbnRDb250ZXh0IGludAotKwkJd2FudE91dHB1dCAgaW50Ci0rCX17Ci0rCQl7Imds bS00LjciLCB0cnVlLCAyMDJfNzUyLCAxMzFfMDcyfSwKLSsJCXsiZ2xtLTQuNzpjbG91ZCIsIHRy dWUsIDIwMl83NTIsIDEzMV8wNzJ9LAotKwkJeyJraW1pLWsyLjUiLCB0cnVlLCAyNjJfMTQ0LCAy NjJfMTQ0fSwKLSsJCXsia2ltaS1rMi41OmNsb3VkIiwgdHJ1ZSwgMjYyXzE0NCwgMjYyXzE0NH0s Ci0rCQl7ImRlZXBzZWVrLXYzLjIiLCB0cnVlLCAxNjNfODQwLCA2NV81MzZ9LAotKwkJeyJkZWVw c2Vlay12My4yOmNsb3VkIiwgdHJ1ZSwgMTYzXzg0MCwgNjVfNTM2fSwKLSsJCXsicXdlbjMtY29k ZXI6NDgwYiIsIHRydWUsIDI2Ml8xNDQsIDY1XzUzNn0sCi0rCQl7InF3ZW4zLWNvZGVyLW5leHQ6 Y2xvdWQiLCB0cnVlLCAyNjJfMTQ0LCAzMl83Njh9LAotKwkJeyJsbGFtYTMuMiIsIGZhbHNlLCAw LCAwfSwKLSsJCXsidW5rbm93bi1tb2RlbDpjbG91ZCIsIGZhbHNlLCAwLCAwfSwKLSsJfQotKwot Kwlmb3IgXywgdHQgOj0gcmFuZ2UgdGVzdHMgewotKwkJdC5SdW4odHQubmFtZSwgZnVuYyh0ICp0 ZXN0aW5nLlQpIHsKLSsJCQlsLCBvayA6PSBsb29rdXBDbG91ZE1vZGVsTGltaXQodHQubmFtZSkK LSsJCQlpZiBvayAhPSB0dC53YW50T0sgewotKwkJCQl0LkVycm9yZigibG9va3VwQ2xvdWRNb2Rl bExpbWl0KCVxKSBvayA9ICV2LCB3YW50ICV2IiwgdHQubmFtZSwgb2ssIHR0LndhbnRPSykKLSsJ CQl9Ci0rCQkJaWYgb2sgewotKwkJCQlpZiBsLkNvbnRleHQgIT0gdHQud2FudENvbnRleHQgewot KwkJCQkJdC5FcnJvcmYoImNvbnRleHQgPSAlZCwgd2FudCAlZCIsIGwuQ29udGV4dCwgdHQud2Fu dENvbnRleHQpCi0rCQkJCX0KLSsJCQkJaWYgbC5PdXRwdXQgIT0gdHQud2FudE91dHB1dCB7Ci0r CQkJCQl0LkVycm9yZigib3V0cHV0ID0gJWQsIHdhbnQgJWQiLCBsLk91dHB1dCwgdHQud2FudE91 dHB1dCkKLSsJCQkJfQotKwkJCX0KLSsJCX0pCi0rCX0KLSt9Ci0rCi0rZnVuYyBUZXN0Q3J1c2hN b2RlbHNfTm9Db25maWcodCAqdGVzdGluZy5UKSB7Ci0rCW8gOj0gJkNydXNoe30KLSsJdG1wRGly IDo9IHQuVGVtcERpcigpCi0rCXNldFRlc3RIb21lKHQsIHRtcERpcikKLSsKLSsJbW9kZWxzIDo9 IG8uTW9kZWxzKCkKLSsJaWYgbGVuKG1vZGVscykgPiAwIHsKLSsJCXQuRXJyb3JmKCJleHBlY3Rl ZCBuaWwvZW1wdHkgZm9yIG1pc3NpbmcgY29uZmlnLCBnb3QgJXYiLCBtb2RlbHMpCi0rCX0KLSt9 Ci1kaWZmIC0tZ2l0IGEvY21kL2NvbmZpZy9pbnRlZ3JhdGlvbnMuZ28gYi9jbWQvY29uZmlnL2lu dGVncmF0aW9ucy5nbwotaW5kZXggZTUyNGMxNGVlNmY3Li4yMmQyYTM5YjQyODAgMTAwNjQ0Ci0t LS0gYS9jbWQvY29uZmlnL2ludGVncmF0aW9ucy5nbwotKysrIGIvY21kL2NvbmZpZy9pbnRlZ3Jh dGlvbnMuZ28KLUBAIC02MCw2ICs2MCw3IEBAIHZhciBpbnRlZ3JhdGlvbnMgPSBtYXBbc3RyaW5n XVJ1bm5lcnsKLSAJIm9wZW5jb2RlIjogJk9wZW5Db2Rle30sCi0gCSJvcGVuY2xhdyI6ICZPcGVu Y2xhd3t9LAotIAkicGkiOiAgICAgICAmUGl7fSwKLSsJImNydXNoIjogICAgJkNydXNoe30sCi0g fQotIAotIC8vIHJlY29tbWVuZGVkTW9kZWxzIGFyZSBzaG93biB3aGVuIHRoZSB1c2VyIGhhcyBu byBtb2RlbHMgb3IgYXMgc3VnZ2VzdGlvbnMuCi1AQCAtODk2LDYgKzg5Nyw3IEBAIFN1cHBvcnRl ZCBpbnRlZ3JhdGlvbnM6Ci0gICBvcGVuY29kZSAgT3BlbkNvZGUKLSAgIG9wZW5jbGF3ICBPcGVu Q2xhdyAoYWxpYXNlczogY2xhd2Rib3QsIG1vbHRib3QpCi0gICBwaSAgICAgICAgUGkKLSsgIGNy dXNoICAgICBDcnVzaAotIAotIEV4YW1wbGVzOgotICAgb2xsYW1hIGxhdW5jaAotLS0gCi0yLjUz LjAKLQoKZGlmZiAtLWdpdCBhL29sbGFtYS5zZXJ2aWNlIGIvb2xsYW1hLnNlcnZpY2UKaW5kZXgg NWRkYzliMS4uNDY3ZjAxNCAxMDA2NDQKLS0tIGEvb2xsYW1hLnNlcnZpY2UKKysrIGIvb2xsYW1h LnNlcnZpY2UKQEAgLTMsNiArMywyMyBAQCBEZXNjcmlwdGlvbj1PbGxhbWEgU2VydmljZQogQWZ0 ZXI9bmV0d29yay1vbmxpbmUudGFyZ2V0CiAKIFtTZXJ2aWNlXQorIyBPTExBTUFfSE9TVDogQ29u dHJvbHMgdGhlIElQIGFkZHJlc3MgYW5kIHBvcnQgT2xsYW1hIGJpbmRzIHRvIGZvciBBUEkgcmVx dWVzdHMuCisjIEZvcm1hdDogPElQX0FERFJFU1M+OjxQT1JUPgorIworIyBFeGFtcGxlczoKKyMg ICBEZWZhdWx0IChsb2NhbGhvc3Qgb25seSwgcG9ydCAxMTQzNCk6IDEyNy4wLjAuMToxMTQzNAor IyAgIENoYW5nZSB0byBhIGN1c3RvbSBwb3J0OiAgICAgICAgICAgICAgIDEyNy4wLjAuMTo4MDgw CisjICAgQmluZCB0byBhbGwgSVB2NCBpbnRlcmZhY2VzIChkZWZhdWx0IHBvcnQpOiAwLjAuMC4w OjExNDM0CisjICAgQmluZCB0byBhbGwgSVB2NiBpbnRlcmZhY2VzIChkZWZhdWx0IHBvcnQpOiBb OjpdOjExNDM0CisjCisjIOKaoO+4jyBTZWN1cml0eTogQmluZGluZyB0byAwLjAuMC4wIG9yIFs6 Ol0gZXhwb3NlcyBPbGxhbWEgdG8geW91ciBuZXR3b3JrLgorIyAgIFVzZSBmaXJld2FsbCBydWxl cyAodWZ3L2lwdGFibGVzL25mdGFibGVzKSBvciBhIHJldmVyc2UgcHJveHkgKG5naW54L2NhZGR5 KQorIyAgIHRvIHJlc3RyaWN0IGFjY2VzcyBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy4KK0Vu dmlyb25tZW50PSJPTExBTUFfSE9TVD0xMjcuMC4wLjE6MTE0MzQiCisjRW52aXJvbm1lbnQ9Ik9M TEFNQV9IT1NUPTEyNy4wLjAuMTo8eW91ciBwb3J0PiIKKyNFbnZpcm9ubWVudD0iT0xMQU1BX0hP U1Q9MC4wLjAuMDoxMTQzNCIKKyNFbnZpcm9ubWVudD0iT0xMQU1BX0hPU1Q9Wzo6XToxMTQzNCIK KwogRXhlY1N0YXJ0PS91c3IvYmluL29sbGFtYSBzZXJ2ZQogVXNlcj1vbGxhbWEKIEdyb3VwPW9s bGFtYQoKZGlmZiAtLWdpdCBhL29sbGFtYS5zcGVjIGIvb2xsYW1hLnNwZWMKaW5kZXggOTMwYzRl NS4uZmExYzQxYyAxMDA2NDQKLS0tIGEvb2xsYW1hLnNwZWMKKysrIGIvb2xsYW1hLnNwZWMKQEAg LTQwLDcgKzQwLDYgQEAgU291cmNlMTE6ICAgICAgIG9sbGFtYS5zeXN1c2VycwogJWVuZGlmCiAK IFBhdGNoMTogICAgICAgICAwMDAxLW9sbGFtYS1oYW5kbGUtbG9hZC5wYXRjaAotIyBQYXRjaDI6 ICAgICAgICAgMDAwMS1vbGxhbWEtY3J1c2gtaW50ZWdyYXRpb24ucGF0Y2gKIAogQnVpbGRSZXF1 aXJlczogIGdvLXZlbmRvci10b29scwogQnVpbGRSZXF1aXJlczogIGZkdXBlcwo=