Name: series-workflowf6ptw Phase: Failed StartedAt: 2026-08-24 13:11:12 +0000 UTC FinishedAt: 2026-08-24 13:13:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6ptw[0] Phase: Succeeded StartedAt: 2026-08-24 13:11:12 +0000 UTC FinishedAt: 2026-08-24 13:13:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6ptw[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 13:11:12 +0000 UTC FinishedAt: 2026-08-24 13:13:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIHRoZSBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHJhaXRzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCB1cGRhdGVzIHRoZSBgUGFnZWAgYWJzdHJhY3Rpb24gYW5kIGl0cyB1c2VycyAobGlrZSBBbmRyb2lkIEJpbmRlcikgdG8gdXNlIHRoZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkzNzAyZmRjMzViNDI0MmVmZGNjNTMyNjNkOTkzMWYzZDVlYWQ3NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzoxMjozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnMgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcbmluZGV4IGU4MmE1NTIzODA0ZjQuLmM1NWJhMjlhYmVhNzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuQEAgLTMzLDcgJiM0MzszMyw3IEBAXG4gICAgIHN5bmM6OnthcmVmOjpBUmVmLCBNdXRleCwgU3BpbkxvY2t9LFxuICAgICB0YXNrOjpQaWQsXG4gICAgIHRyYW5zbXV0ZTo6RnJvbUJ5dGVzLFxuLSAgICB0eXBlczo6T3BhcXVlLFxuJiM0MzsgICAgdHlwZXM6OntPcGFxdWUsIE93bmVkfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLFxuIH07XG4gXG5AQCAtMTk4LDcgJiM0MzsxOTgsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbm5lciB7fVxuICNbcmVwcihDKV1cbiBzdHJ1Y3QgUGFnZUluZm8ge1xuICAgICBscnU6IGJpbmRpbmdzOjpsaXN0X2hlYWQsXG4tICAgIHBhZ2U6IE9wdGlvblx1MDAzY1BhZ2VcdTAwM2UsXG4mIzQzOyAgICBwYWdlOiBPcHRpb25cdTAwM2NPd25lZFx1MDAzY1BhZ2VcdTAwM2VcdTAwM2UsXG4gICAgIHJhbmdlOiAqY29uc3QgU2hyaW5rYWJsZVBhZ2VSYW5nZSxcbiB9XG4gXG5AQCAtMjA2LDcgJiM0MzsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHtcbiAgICAgLy8vICMgU2FmZXR5XG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0LlxuLSAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IFBhZ2UpIHtcbiYjNDM7ICAgIHVuc2FmZSBmbiBzZXRfcGFnZShtZTogKm11dCBQYWdlSW5mbywgcGFnZTogT3duZWRcdTAwM2NQYWdlXHUwMDNlKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoaXMgcG9pbnRlciBvZmZzZXQgaXMgaW4gYm91bmRzLlxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xuIFxuQEAgLTIyOSwxMyAmIzQzOzIyOSwxMyBAQCB1bnNhZmUgZm4gZ2V0X3BhZ2VcdTAwM2MmIzM5O2FcdTAwM2UobWU6ICpjb25zdCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjYmIzM5O2EgUGFnZVx1MDAzZSB7XG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXHUwMDI2cmF3IGNvbnN0ICgqbWUpLnBhZ2UgfTtcbiBcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgZm9yIHJlYWRpbmcuXG4tICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfcmVmKCkgfVxuJiM0MzsgICAgICAgIHVuc2FmZSB7ICgqcHRyKS5hc19kZXJlZigpIH1cbiAgICAgfVxuIFxuICAgICAvLy8gIyBTYWZldHlcbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICYjMzk7YS5cbi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NQYWdlXHUwMDNlIHtcbiYjNDM7ICAgIHVuc2FmZSBmbiB0YWtlX3BhZ2UobWU6ICptdXQgUGFnZUluZm8pIC1cdTAwM2UgT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXHUwMDI2cmF3IG11dCAoKm1lKS5wYWdlIH07XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzIGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXG5pbmRleCBjZDQyMDNmMjdhZWQwLi5jN2I5YjA2OWNmNzVkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbkBAIC0xNjksNyAmIzQzOzE2OSw3IEBAIHVuc2FmZSBmbiByZWFsbG9jKFxuIH1cbiBcbiBpbXBsIFZtYWxsb2Mge1xuLSAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BwYWdlOjpCb3Jyb3dlZFBhZ2VgXS5cbiYjNDM7ICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2UuXG4gICAgIC8vL1xuICAgICAvLy8gIyBFeGFtcGxlc1xuICAgICAvLy9cbkBAIC0yMDIsMjAgJiM0MzsyMDIsMTcgQEAgaW1wbCBWbWFsbG9jIHtcbiAgICAgLy8vXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiAgICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgYCYjMzk7YWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZVx1MDAzYyYjMzk7YVx1MDAzZShwdHI6IE5vbk51bGxcdTAwM2N1OFx1MDAzZSkgLVx1MDAzZSBwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2Uge1xuJiM0MzsgICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXHUwMDNjJiMzOTthXHUwMDNlKHB0cjogTm9uTnVsbFx1MDAzY3U4XHUwMDNlKSAtXHUwMDNlIFx1MDAyNiYjMzk7YSBwYWdlOjpQYWdlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTtcbiBcbi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXJcbi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcbi1cbiAgICAgICAgIC8vIFNBRkVUWTpcbi0gICAgICAgIC8vIC0gYHBhZ2VgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAsIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2Zcbi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cbi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZlxuLSAgICAgICAgLy8gICBgJiMzOTthYC5cbi0gICAgICAgIHVuc2FmZSB7IHBhZ2U6OkJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuJiM0MzsgICAgICAgIC8vIC0gYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkLCBub24tbnVsbCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuJiM0MzsgICAgICAgIC8vICAgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb25cbiYjNDM7ICAgICAgICAvLyAgIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLlxuJiM0MzsgICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCwgYW5kIGhlbmNlIHRoZSBgc3RydWN0IHBhZ2VgLCBpc1xuJiM0MzsgICAgICAgIC8vICAgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYCYjMzk7YWAuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnBhZ2UuY2FzdCgpIH1cbiAgICAgfVxuIH1cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5pbmRleCAwMmZkYTNlYTVjYWU2Li44ZGNjMTZlZDg5ODkzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5AQCAtOSw3ICYjNDM7OSw3IEBAXG4gICAgIHB0cjo6Tm9uTnVsbCwgLy9cbiB9O1xuIFxuLS8vLyBBbiBbYEl0ZXJhdG9yYF0gb2YgW2BwYWdlOjpCb3Jyb3dlZFBhZ2VgXSBpdGVtcyBvd25lZCBieSBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24uXG4mIzQzOy8vLyBBbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0ocGFnZTo6UGFnZSkgcmVmZXJlbmNlcyBvd25lZCBieSBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24uXG4gLy8vXG4gLy8vICMgR3VhcmFudGVlc1xuIC8vL1xuQEAgLTI4LDExICYjNDM7MjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXJcdTAwM2MmIzM5O2FcdTAwM2Uge1xuICAgICBzaXplOiB1c2l6ZSxcbiAgICAgLy8vIFRoZSBjdXJyZW50IHBhZ2UgaW5kZXggb2YgdGhlIFtgSXRlcmF0b3JgXS5cbiAgICAgaW5kZXg6IHVzaXplLFxuLSAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2VcdTAwM2UsXG4mIzQzOyAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NcdTAwMjYmIzM5O2EgcGFnZTo6UGFnZVx1MDAzZSxcbiB9XG4gXG4gaW1wbFx1MDAzYyYjMzk7YVx1MDAzZSBJdGVyYXRvciBmb3IgVm1hbGxvY1BhZ2VJdGVyXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0gICAgdHlwZSBJdGVtID0gcGFnZTo6Qm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlO1xuJiM0MzsgICAgdHlwZSBJdGVtID0gXHUwMDI2JiMzOTthIHBhZ2U6OlBhZ2U7XG4gXG4gICAgIGZuIG5leHQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgT3B0aW9uXHUwMDNjU2VsZjo6SXRlbVx1MDAzZSB7XG4gICAgICAgICBsZXQgb2Zmc2V0ID0gc2VsZi5pbmRleC5jaGVja2VkX211bChwYWdlOjpQQUdFX1NJWkUpPztcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuaW5kZXggMzVkMWUwMTU4NDhkZC4uZTZjNjM3YmJlMjAwOSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnNcbkBAIC0yMTEsNiAmIzQzOzIxMSwxNSBAQCBwdWIgZm4gbGVha1x1MDAzYyYjMzk7YVx1MDAzZShiOiBTZWxmKSAtXHUwMDNlIFx1MDAyNiYjMzk7YSBtdXQgVCB7XG4gICAgICAgICAvLyB3aGljaCBwb2ludHMgdG8gYW4gaW5pdGlhbGl6ZWQgaW5zdGFuY2Ugb2YgYFRgLlxuICAgICAgICAgdW5zYWZlIHsgXHUwMDI2bXV0ICpCb3g6OmludG9fcmF3KGIpIH1cbiAgICAgfVxuJiM0MztcbiYjNDM7ICAgIC8vLyBDb25zdW1lcyB0aGUgYEJveFx1MDAzY1QsIEFcdTAwM2VgIGFuZCByZXR1cm5zIGEgYE5vbk51bGxcdTAwM2NUXHUwMDNlYC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgcHViIGZuIGludG9fbm9uX251bGwoYjogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgQm94OjppbnRvX3Jhd2AgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChTZWxmOjppbnRvX3JhdyhiKSkgfVxuJiM0MzsgICAgfVxuIH1cbiBcbiBpbXBsXHUwMDNjVCwgQVx1MDAzZSBCb3hcdTAwM2NNYXliZVVuaW5pdFx1MDAzY1RcdTAwM2UsIEFcdTAwM2VcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbmluZGV4IGM0MjkyOGQ1YTIzOTMuLjg1NDUyNTI4OWM4YjQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuQEAgLTE5LDYgJiM0MzsxOSwxMCBAQFxuICAgICAgICAgdG9fcmVzdWx0LCAvL1xuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gICAgIHR5cGVzOjp7XG4gICAgICAgICBGb3JMdCxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxuQEAgLTM0NCw3ICYjNDM7MzQ4LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC0zNjMsNiAmIzQzOzM2NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG5pbmRleCBjZTNlMzBjODFjYjVlLi44ZGFkMTVhZTRjZmIwIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuQEAgLTksNyAmIzQzOzksMTEgQEBcbiAgICAgYmxvY2s6Om1xOjpPcGVyYXRpb25zLFxuICAgICBlcnJvcjo6UmVzdWx0LFxuICAgICBzeW5jOjp7XG4tICAgICAgICBhcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4mIzQzOyAgICAgICAgYXJlZjo6e1xuJiM0MzsgICAgICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgICAgIH0sXG4gICAgICAgICBhdG9taWM6OlJlbGF4ZWQsXG4gICAgICAgICBSZWZjb3VudCxcbiAgICAgfSxcbkBAIC0yMjksMTEgJiM0MzsyMzMsMTAgQEAgdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIFNlbmQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHt9XG4gLy8gbXV0YXRlIGBzZWxmYCBhcmUgaW50ZXJuYWxseSBzeW5jaHJvbml6ZWRgXG4gdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIFN5bmMgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHt9XG4gXG4tLy8gU0FGRVRZOiBBbGwgaW5zdGFuY2VzIG9mIGBSZXF1ZXN0XHUwMDNjVFx1MDAzZWAgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzXG4tLy8gaW1wbGVtZW50YXRpb24gb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudFxuLS8vIGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGEgbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50XG4tLy8gZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7XG4mIzQzOy8vIFNBRkVUWTogQWxsIGluc3RhbmNlcyBvZiBgUmVxdWVzdFx1MDAzY1RcdTAwM2VgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgUmVmQ291bnRlZGBcbiYjNDM7Ly8gZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50IGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGFcbiYjNDM7Ly8gbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpcyBleGVjdXRlZC5cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIFJlZkNvdW50ZWQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICBzZWxmLndyYXBwZXJfcmVmKCkucmVmY291bnQoKS5pbmMoKTtcbiAgICAgfVxuQEAgLTI1NSwzICYjNDM7MjU4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB9XG4gICAgIH1cbiB9XG4mIzQzO1xuJiM0MzsvLyBTQUZFVFk6IFdlIGN1cnJlbnRseSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY1JlcXVlc3RcdTAwM2VgXG4mIzQzOy8vIGZyb20gYSBgXHUwMDI2UmVxdWVzdGAgKGJ1dCB0aGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUpLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9jcmVkLnJzIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xuaW5kZXggZmZhMTU2YjlkZjM3Ny4uYjE3NzM2YTlhZGNkNSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2NyZWQucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2NyZWQucnNcbkBAIC04LDcgJiM0Mzs4LDE1IEBAXG4gLy8hXG4gLy8hIFJlZmVyZW5jZTogXHUwMDNjaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3Qvc2VjdXJpdHkvY3JlZGVudGlhbHMuaHRtbFx1MDAzZVxuIFxuLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0YXNrOjpLdWlkLCB0eXBlczo6T3BhcXVlfTtcbiYjNDM7dXNlIGNyYXRlOjp7XG4mIzQzOyAgICBiaW5kaW5ncyxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsXG4mIzQzOyAgICB0YXNrOjpLdWlkLFxuJiM0MzsgICAgdHlwZXM6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE9wYXF1ZSwgLy9cbiYjNDM7ICAgIH0sIC8vXG4mIzQzO307XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBjcmVkYC5cbiAvLy9cbkBAIC03Niw3ICYjNDM7ODQsNyBAQCBwdWIgZm4gZXVpZChcdTAwMjZzZWxmKSAtXHUwMDNlIEt1aWQge1xuIH1cbiBcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYENyZWRlbnRpYWxgIGlzIGFsd2F5cyByZWYtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC05MCwzICYjNDM7OTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFx1MDAzY0NyZWRlbnRpYWxcdTAwM2UpIHtcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwdXRfY3JlZChvYmouY2FzdCgpLmFzX3B0cigpKSB9O1xuICAgICB9XG4gfVxuJiM0MztcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0NyZWRlbnRpYWxcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2Q3JlZGVudGlhbGAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge31cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2UucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2UucnNcbmluZGV4IDFhMzhiM2JiZGZiN2QuLjlhZmVjZDNmYTMyMzcgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xuQEAgLTgsOCAmIzQzOzgsMTIgQEBcbiAgICAgYmluZGluZ3MsXG4gICAgIGZtdCxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcbiAgICAgICAgIE9wYXF1ZSwgLy9cbiAgICAgfSwgLy9cbkBAIC00NDgsNyAmIzQzOzQ1Miw3IEBAIHB1YiBmbiBuYW1lKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2Q1N0ciB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtNDYwLDYgJiM0Mzs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIC8vIFNBRkVUWTogQXMgYnkgdGhlIHR5cGUgaW52YXJpYW50IGBEZXZpY2VgIGNhbiBiZSBzZW50IHRvIGFueSB0aHJlYWQuXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgRGV2aWNlIHt9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG5pbmRleCA1YWVhZDgzNWZiYmMwLi5jZWU3ZTI1MDEzNjg5IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcbkBAIC0xNCw3ICYjNDM7MTQsMTAgQEBcbiAgICAgZm10LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSxcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuIH07XG4gXG5AQCAtMzYwLDcgJiM0MzszNjMsNyBAQCBmbiBmbXQoXHUwMDI2c2VsZiwgZjogXHUwMDI2bXV0IGZtdDo6Rm9ybWF0dGVyXHUwMDNjJiMzOTtfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEZ3Tm9kZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbiYjNDM7dW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yIEZ3Tm9kZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlXG4gICAgICAgICAvLyByZWZjb3VudCBpcyBub24temVyby5cbkBAIC0zNzQsNiAmIzQzOzM3NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0Z3Tm9kZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZGd05vZGVgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge31cbiYjNDM7XG4gZW51bSBOb2RlXHUwMDNjJiMzOTthXHUwMDNlIHtcbiAgICAgQm9ycm93ZWQoXHUwMDI2JiMzOTthIEZ3Tm9kZSksXG4gICAgIE93bmVkKEFSZWZcdTAwM2NGd05vZGVcdTAwM2UpLFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnMgYi9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzXG5pbmRleCA0NzdjZjc3MWZiMTBlLi42ZmMwMmQ1MDQzMzRlIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuQEAgLTE3LDcgJiM0MzsxNyw4IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiAgICAgfSxcbiAgICAgdHlwZXM6OntcbiAgICAgICAgIE5vdFRocmVhZFNhZmUsXG5AQCAtMzYyLDcgJiM0MzszNjMsNyBAQCBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4gXG4gLy8gU0FGRVRZOiBEUk0gZGV2aWNlIG9iamVjdHMgYXJlIGFsd2F5cyByZWZlcmVuY2UgY291bnRlZCBhbmQgdGhlIGdldC9wdXQgZnVuY3Rpb25zXG4gLy8gc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtMzc3LDYgJiM0MzszNzgsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkRldmljZWAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7fVxuJiM0MztcbiBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbmluZGV4IGM4YjY2ZDgxNjg3MTkuLjgwYWZmZTYzMzVhY2YgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbkBAIC0yMSw3ICYjNDM7MjEsNyBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuIH07XG5AQCAtMzQsNyAmIzQzOzM0LDcgQEBcbiAjW2NmZyhDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUildXG4gcHViIG1vZCBzaG1lbTtcbiBcbi0vLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgQWx3YXlzUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuJiM0MzsvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuIC8vL1xuIC8vLyBTaW5jZSBhbGwgR0VNIG9iamVjdHMgdXNlIHRoZSBzYW1lIHJlZmNvdW50aW5nIHNjaGVtZS5cbiAjW21hY3JvX2V4cG9ydF1cbkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQ6aWRlbnQgKSwmIzQzO1x1MDAzZSApPyBmb3IgJHR5cGU6dHlcbiAgICAgICAgICk/XG4gICAgICkgPVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEFsbCBHRU0gb2JqZWN0cyBhcmUgcmVmY291bnRlZC5cbi0gICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwmIzQzO1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4mIzQzOyAgICAgICAgdW5zYWZlIGltcGwgJCggXHUwMDNjJCggJHRwYXJhbV9pZCApLCYjNDM7XHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgJHR5cGVcbiAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiAgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksJiM0MzsgKT9cbkBAIC02Niw2ICYjNDM7NjYsMTQgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdF9wdXQob2JqKSB9O1xuICAgICAgICAgICAgIH1cbiAgICAgICAgIH1cbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzYyR0eXBlXHUwMDNlYCBmcm9tIGFcbiYjNDM7ICAgICAgICAvLyBgXHUwMDI2JHR5cGVgLlxuJiM0MzsgICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwmIzQzO1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4mIzQzOyAgICAgICAgd2hlcmVcbiYjNDM7ICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiYjNDM7ICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCYjNDM7ICk/XG4mIzQzOyAgICAgICAge31cbiAgICAgfTtcbiB9XG4gI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV1cbkBAIC0xMDksNyAmIzQzOzExNyw3IEBAIGZuIGNsb3NlKF9vYmo6IFx1MDAyNkRyaXZlckFsbG9jSW1wbFx1MDAzY1NlbGZcdTAwM2UsIF9maWxlOiBcdTAwMjZEcml2ZXJGaWxlXHUwMDNjU2VsZlx1MDAzZSkge31cbiB9XG4gXG4gLy8vIFRyYWl0IHRoYXQgcmVwcmVzZW50cyBhIEdFTSBvYmplY3Qgc3VidHlwZVxuLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCAmIzQzOyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICYjNDM7IEFsd2F5c1JlZkNvdW50ZWQge1xuJiM0MztwdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgJiM0Mzsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCAmIzQzOyBSZWZDb3VudGVkIHtcbiAgICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHJhdyBgZHJtX2dlbV9vYmplY3RgIHN0cnVjdHVyZSwgd2hpY2ggbXVzdCBiZSB2YWxpZCBhcyBsb25nIGFzXG4gICAgIC8vLyB0aGlzIG93bmluZyBvYmplY3QgaXMgdmFsaWQuXG4gICAgIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0O1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG5pbmRleCAyM2VlNjg5YmQyNDAwLi43MjBlNTc0MTgzNThkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuQEAgLTEyLDggJiM0MzsxMiwxNSBAQFxuICAgICBjcmVkOjpDcmVkZW50aWFsLFxuICAgICBlcnJvcjo6e2NvZGU6OiosIHRvX3Jlc3VsdCwgRXJyb3IsIFJlc3VsdH0sXG4gICAgIGZtdCxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLFxuJiM0MzsgICAgICAgIE9wYXF1ZSwgLy9cbiYjNDM7ICAgIH0sIC8vXG4gfTtcbiB1c2UgY29yZTo6cHRyO1xuIFxuQEAgLTE5Nyw3ICYjNDM7MjA0LDcgQEAgdW5zYWZlIGltcGwgU3luYyBmb3IgRmlsZSB7fVxuIFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgRmlsZWAgaXMgYWx3YXlzIHJlZi1jb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uXG4gLy8gbWFrZXMgYEFSZWZcdTAwM2NGaWxlXHUwMDNlYCBvd24gYSBub3JtYWwgcmVmY291bnQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRmlsZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjEyLDYgJiM0MzsyMTksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NGaWxlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NGaWxlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkZpbGVgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGaWxlIHt9XG4mIzQzO1xuIC8vLyBXcmFwcyB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgZmlsZWAuIE5vdCB0aHJlYWQgc2FmZS5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxuQEAgLTIzMyw3ICYjNDM7MjQ0LDcgQEAgcHViIHN0cnVjdCBMb2NhbEZpbGUge1xuIFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgTG9jYWxGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb25cbiAvLyBtYWtlcyBgQVJlZlx1MDAzY0xvY2FsRmlsZVx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50LlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0yNDksNiAmIzQzOzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0xvY2FsRmlsZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTG9jYWxGaWxlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkxvY2FsRmlsZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fVxuJiM0MztcbiBpbXBsIExvY2FsRmlsZSB7XG4gICAgIC8vLyBDb25zdHJ1Y3RzIGEgbmV3IGBzdHJ1Y3QgZmlsZWAgd3JhcHBlciBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLlxuICAgICAvLy9cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9pMmMucnMgYi9ydXN0L2tlcm5lbC9pMmMucnNcbmluZGV4IDYyNGI5NzFjYThiMGIuLmY5YWFjYjg5NGY1MDUgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9pMmMucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuQEAgLTE4LDcgJiM0MzsxOCw4IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiAgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy9cbiB9O1xuQEAgLTQyNCw3ICYjNDM7NDI1LDcgQEAgcHViIGZuIGdldChpbmRleDogaTMyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0FSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQWRhcHRlcmAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19nZXRfYWRhcHRlcihzZWxmLmluZGV4KCkpIH07XG5AQCAtNDM1LDYgJiM0Mzs0MzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6aTJjX3B1dF9hZGFwdGVyKG9iai5hc19yZWYoKS5hc19yYXcoKSkgfVxuICAgICB9XG4gfVxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjSTJjQWRhcHRlclx1MDAzZWAgZnJvbSBhblxuJiM0MzsvLyBgXHUwMDI2STJjQWRhcHRlcmAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge31cbiBcbiAvLy8gVGhlIGkyYyBib2FyZCBpbmZvIHJlcHJlc2VudGF0aW9uXG4gLy8vXG5AQCAtNTAwLDcgJiM0Mzs1MDQsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcdTAwM2NDdHhcdTAwM2UgZm9yIEkyY0NsaWVudFx1MDAzY0NcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNDbGllbnQpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJMmNDbGllbnRgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUxMSw2ICYjNDM7NTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9kZXZpY2UoXHUwMDI2cmF3IG11dCAoKm9iai5hc19yZWYoKS5hc19yYXcoKSkuZGV2KSB9XG4gICAgIH1cbiB9XG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NJMmNDbGllbnRcdTAwM2VgIGZyb20gYW5cbiYjNDM7Ly8gYFx1MDAyNkkyY0NsaWVudGAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fVxuIFxuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBJMmNDbGllbnRcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbGliLnJzIGIvcnVzdC9rZXJuZWwvbGliLnJzXG5pbmRleCA5NTEyYWY3MTU2ZGYyLi5lYjUyNTYyMDRhMTc0IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbGliLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9saWIucnNcbkBAIC0xMDEsNiAmIzQzOzEwMSw3IEBAXG4gcHViIG1vZCBvZjtcbiAjW2NmZyhDT05GSUdfUE1fT1BQKV1cbiBwdWIgbW9kIG9wcDtcbiYjNDM7cHViIG1vZCBvd25lZDtcbiBwdWIgbW9kIHBhZ2U7XG4gI1tjZmcoQ09ORklHX1BDSSldXG4gcHViIG1vZCBwY2k7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0ucnMgYi9ydXN0L2tlcm5lbC9tbS5yc1xuaW5kZXggNDc2NGQ3YjY4ZjJhNy4uODNlZDk0ZmNhMTRjYSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL21tLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9tbS5yc1xuQEAgLTEzLDggJiM0MzsxMywxNSBAQFxuIFxuIHVzZSBjcmF0ZTo6e1xuICAgICBiaW5kaW5ncyxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLFxuJiM0MzsgICAgICAgIE9wYXF1ZSwgLy9cbiYjNDM7ICAgIH0sIC8vXG4gfTtcbiB1c2UgY29yZTo6e29wczo6RGVyZWYsIHB0cjo6Tm9uTnVsbH07XG4gXG5AQCAtNTUsNyAmIzQzOzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbSB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW0ge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtNjksNiAmIzQzOzc2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1cdTAwM2VgIGZyb20gYSBgXHUwMDI2TW1gLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7fVxuJiM0MztcbiAvLy8gQSB3cmFwcGVyIGZvciB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgbW1fc3RydWN0YC5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIGlzIGxpa2UgW2BNbWBdLCBidXQgd2l0aCBub24temVybyBgbW1fdXNlcnNgLiBJdCBjYW4gb25seSBiZSB1c2VkIHdoZW4gYG1tX3VzZXJzYCBjYW5cbkBAIC05MSw3ICYjNDM7MTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXIge31cbiBcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cbkBAIC0xMDUsNiAmIzQzOzExNSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NNbVdpdGhVc2VyXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNk1tV2l0aFVzZXJgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHt9XG4mIzQzO1xuIC8vIE1ha2UgYWxsIGBNbWAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJgLlxuIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIge1xuICAgICB0eXBlIFRhcmdldCA9IE1tO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzIGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbmluZGV4IGI4ZDJmMDUxMjI1YzcuLjhmYmMzOTZlNDYwMjggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbkBAIC0xMCw3ICYjNDM7MTAsMTEgQEBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4gICAgIG1tOjpNbVdpdGhVc2VyLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLFxuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTM0LDcgJiM0MzszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cbkBAIC00OCw2ICYjNDM7NTIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1XaXRoVXNlckFzeW5jXHUwMDNlYFxuJiM0MzsvLyBmcm9tIGEgYFx1MDAyNk1tV2l0aFVzZXJBc3luY2AuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuJiM0MztcbiAvLyBNYWtlIGFsbCBgTW1XaXRoVXNlcmAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJBc3luY2AuXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29wcC5ycyBiL3J1c3Qva2VybmVsL29wcC5yc1xuaW5kZXggNjJlNDQ2NzYxMjVkMS4uYjhkYjZiZGVmZDA3NyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL29wcC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvb3BwLnJzXG5AQCAtMTYsOCAmIzQzOzE2LDE0IEBAXG4gICAgIGZmaTo6e2NfY2hhciwgY191bG9uZ30sXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN0cjo6Q1N0cmluZyxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuLSAgICB0eXBlczo6T3BhcXVlLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgT3BhcXVlLCAvL1xuJiM0MzsgICAgfSwgLy9cbiB9O1xuIFxuICNbY2ZnKENPTkZJR19DUFVfRlJFUSldXG5AQCAtMTA0MSw3ICYjNDM7MTA0Nyw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE9QUCB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE9QUCB7fVxuIFxuIC8vLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgW2BPUFBgXSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMTA1NSw2ICYjNDM7MTA2MSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY09QUFx1MDAzZWAgZnJvbSBhblxuJiM0MzsvLyBgXHUwMDI2T1BQYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHt9XG4mIzQzO1xuIGltcGwgT1BQIHtcbiAgICAgLy8vIENyZWF0ZXMgYW4gb3duZWQgcmVmZXJlbmNlIHRvIGEgW2BPUFBgXSBmcm9tIGEgdmFsaWQgcG9pbnRlci5cbiAgICAgLy8vXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3duZWQucnMgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmFjYjYxMWYwODRmZjNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL293bmVkLnJzXG5AQCAtMCwwICYjNDM7MSwzNzMgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzOy8vISBVbmlxdWUgb3duZWQgcG9pbnRlciB0eXBlcyBmb3Igb2JqZWN0cyB3aXRoIGN1c3RvbSBkcm9wIGxvZ2ljLlxuJiM0MzsvLyFcbiYjNDM7Ly8hIFRoZXNlIHBvaW50ZXIgdHlwZXMgYXJlIHVzZWZ1bCBmb3IgQy1hbGxvY2F0ZWQgb2JqZWN0cyB3aGljaCBieSBBUEktY29udHJhY3RcbiYjNDM7Ly8hIGFyZSBvd25lZCBieSBSdXN0LCBidXQgbmVlZCB0byBiZSBmcmVlZCB0aHJvdWdoIHRoZSBDIEFQSS5cbiYjNDM7XG4mIzQzO3VzZSBjb3JlOjp7XG4mIzQzOyAgICBtZW06Ok1hbnVhbGx5RHJvcCxcbiYjNDM7ICAgIG9wczo6e1xuJiM0MzsgICAgICAgIERlcmVmLFxuJiM0MzsgICAgICAgIERlcmVmTXV0LCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHBpbjo6UGluLFxuJiM0MzsgICAgcHRyOjpOb25OdWxsLCAvL1xuJiM0Mzt9O1xuJiM0Mzt1c2Uga2VybmVsOjp7XG4mIzQzOyAgICBzeW5jOjphcmVmOjpBUmVmLFxuJiM0MzsgICAgdHlwZXM6OlJlZkNvdW50ZWQsIC8vXG4mIzQzO307XG4mIzQzO1xuJiM0Mzt1c2Uga2VybmVsOjp0eXBlczo6Rm9yZWlnbk93bmFibGU7XG4mIzQzO1xuJiM0MzsvLy8gVHlwZXMgdGhhdCBzcGVjaWZ5IHRoZWlyIG93biB3YXkgb2YgcGVyZm9ybWluZyBhbGxvY2F0aW9uIGFuZCBkZXN0cnVjdGlvbi4gVHlwaWNhbGx5LCB0aGlzIHRyYWl0XG4mIzQzOy8vLyBpcyBpbXBsZW1lbnRlZCBvbiB0eXBlcyBmcm9tIHRoZSBDIHNpZGUuXG4mIzQzOy8vL1xuJiM0MzsvLy8gSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBbYE93bmVkXHUwMDNjU2VsZlx1MDAzZWBdIHBvaW50ZXIgdHlwZS5cbiYjNDM7Ly8vICAtIFRoaXMgaXMgdXNlZnVsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHRpZSB0aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0IHJlZmVyZW5jZSB0byBhbiBvd25lZFxuJiM0MzsvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLlxuJiM0MzsvLy8gIC0gW2BPd25hYmxlYF0gdHlwZXMgY2FuIGRlZmluZSBjdXN0b20gZHJvcCBsb2dpYyB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIG93bmVkIHJlZmVyZW5jZVxuJiM0MzsvLy8gICAgb2YgdHlwZSBbYE93bmVkXHUwMDNjX1x1MDAzZWBdIHBvaW50aW5nIHRvIHRoZSBvYmplY3QgaXMgZHJvcHBlZC5cbiYjNDM7Ly8vXG4mIzQzOy8vLyBOb3RlOiBUaGUgdW5kZXJseWluZyBvYmplY3QgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50aW5nLCBiZWNhdXNlIGl0XG4mIzQzOy8vLyByZXByZXNlbnRzIGEgdW5pcXVlLCBvd25lZCByZWZlcmVuY2UuIElmIHJlZmVyZW5jZSBjb3VudGluZyAob24gdGhlIFJ1c3Qgc2lkZSkgaXMgcmVxdWlyZWQsXG4mIzQzOy8vLyBbYFJlZkNvdW50ZWRgXSBzaG91bGQgYmUgaW1wbGVtZW50ZWQuIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaWYgY29udmVyc2lvblxuJiM0MzsvLy8gYmV0d2VlbiB1bmlxdWUgYW5kIHNoYXJlZCAocmVmZXJlbmNlIGNvdW50ZWQpIG93bmVyc2hpcCBpcyBuZWVkZWQuXG4mIzQzOy8vL1xuJiM0MzsvLy8gIyBFeGFtcGxlc1xuJiM0MzsvLy9cbiYjNDM7Ly8vIEEgbWluaW1hbCBleGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aCBbYE93bmVkYF0gbG9va3MgbGlrZVxuJiM0MzsvLy8gdGhpczpcbiYjNDM7Ly8vXG4mIzQzOy8vLyBgYGBcbiYjNDM7Ly8vICMgIyFbZXhwZWN0KGNsaXBweTo6ZGlzYWxsb3dlZF9uYW1lcyldXG4mIzQzOy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsO1xuJiM0MzsvLy8gIyB1c2UgY29yZTo6cHRyOjpOb25OdWxsO1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jaztcbiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XG4mIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGV9O1xuJiM0MzsvLy9cbiYjNDM7Ly8vIC8vIExldCYjMzk7cyBjb3VudCB0aGUgYWxsb2NhdGlvbnMgdG8gc2VlIGlmIGZyZWVpbmcgd29ya3MuXG4mIzQzOy8vLyBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrISB7XG4mIzQzOy8vLyAgICAgLy8gU0FGRVRZOiB3ZSBjYWxsIGBpbml0KClgIHJpZ2h0IGJlbG93LCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS5cbiYjNDM7Ly8vICAgICB1bnNhZmUodW5pbml0KSBzdGF0aWMgRk9PX0FMTE9DX0NPVU5UOiBNdXRleFx1MDAzY3VzaXplXHUwMDNlID0gMDtcbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuXG4mIzQzOy8vLyB1bnNhZmUgeyBGT09fQUxMT0NfQ09VTlQuaW5pdCgpIH07XG4mIzQzOy8vL1xuJiM0MzsvLy8gc3RydWN0IEZvbztcbiYjNDM7Ly8vXG4mIzQzOy8vLyBpbXBsIEZvbyB7XG4mIzQzOy8vLyAgICAgZm4gbmV3KCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuJiM0MzsvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xuJiM0MzsvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXG4mIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXG4mIzQzOy8vLyAgICAgICAgICAgICBGb28ge30sXG4mIzQzOy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCxcbiYjNDM7Ly8vICAgICAgICAgKT87XG4mIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjppbnRvX25vbl9udWxsKHJlc3VsdCk7XG4mIzQzOy8vLyAgICAgICAgIC8vIENvdW50IG5ldyBhbGxvY2F0aW9uXG4mIzQzOy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpICYjNDM7PSAxO1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6XG4mIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cbiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cbiYjNDM7Ly8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcbiYjNDM7Ly8vICAgICB9XG4mIzQzOy8vLyB9XG4mIzQzOy8vL1xuJiM0MzsvLy8gaW1wbCBPd25hYmxlIGZvciBGb28ge1xuJiM0MzsvLy8gICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4mIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFx1MDAzY1NlbGZcdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZS4gV2UgY2FuIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSwgYXNcbiYjNDM7Ly8vICAgICAgICAgLy8gYnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuJiM0MzsvLy8gICAgICAgICBkcm9wKHVuc2FmZSB7IEtCb3g6OmZyb21fcmF3KHRoaXMuYXNfcHRyKCkpIH0pO1xuJiM0MzsvLy8gICAgICAgICAvLyBDb3VudCByZWxlYXNlZCBhbGxvY2F0aW9uXG4mIzQzOy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpIC09IDE7XG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIHtcbiYjNDM7Ly8vICAgIGxldCBmb28gPSBGb286Om5ldygpPztcbiYjNDM7Ly8vICAgIGFzc2VydCEoKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgPT0gMSk7XG4mIzQzOy8vLyB9XG4mIzQzOy8vLyAvLyBgZm9vYCBpcyBvdXQgb2Ygc2NvcGUgbm93LCBzbyB3ZSBleHBlY3Qgbm8gbGl2ZSBhbGxvY2F0aW9ucy5cbiYjNDM7Ly8vIGFzc2VydCEoKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgPT0gMCk7XG4mIzQzOy8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4mIzQzOy8vLyBgYGBcbiYjNDM7cHViIHRyYWl0IE93bmFibGUge1xuJiM0MzsgICAgLy8vIFRlYXIgZG93biB0aGlzIGBPd25hYmxlYC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIEltcGxlbWVudGVycyBvZiBgT3duYWJsZWAgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNsZWFuIHVwIHRoZSB1c2Ugb2YgYFNlbGZgLiBUaGlzIGNhblxuJiM0MzsgICAgLy8vIGluY2x1ZGUgZnJlZWluZyB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyAjIFNhZmV0eVxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXkgaGF2ZSBleGNsdXNpdmUgb3duZXJzaGlwIG9mIHRoZSBgU2VsZmAgcG9pbnRlZCB0byBieSBgdGhpc2AsXG4mIzQzOyAgICAvLy8gYW5kIHRoYXQgdGhpcyBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGByZWxlYXNlYCBtZXRob2QuIGB0aGlzYCBtdXN0IG5vdCBiZSB1c2VkXG4mIzQzOyAgICAvLy8gYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCwgYXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0IG1heSBoYXZlIGJlZW4gZnJlZWQuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBgdGhpc2AgaXMgcGlubmVkIGFuZCBpbXBsZW1lbnRlcnMgb2YgdGhpcyBtZXRob2QgbXVzdCBvYnNlcnZlIHRoaXMgY29uc3RyYWludC5cbiYjNDM7ICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Ly8vIEEgbXV0YWJsZSByZWZlcmVuY2UgdG8gYW4gb3duZWQgYFRgLlxuJiM0MzsvLy9cbiYjNDM7Ly8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzXG4mIzQzOy8vLyBkcm9wcGVkLlxuJiM0MzsvLy9cbiYjNDM7Ly8vICMgSW52YXJpYW50c1xuJiM0MzsvLy9cbiYjNDM7Ly8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWRcdTAwM2NUXHUwMDNlYCBleGNsdXNpdmVseSBvd25zIHRoZSB1bmRlcmx5aW5nIGBUYC5cbiYjNDM7Ly8vIC0gVGhlIGBUYCB2YWx1ZSBpcyBwaW5uZWQuXG4mIzQzO3B1YiBzdHJ1Y3QgT3duZWRcdTAwM2NUOiBPd25hYmxlXHUwMDNlIHtcbiYjNDM7ICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYE93bmVkYF0uXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIG92ZXIgb3duZXJzaGlwIG9mIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vICMgU2FmZXR5XG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQ6XG4mIzQzOyAgICAvLy8gLSBgcHRyYCBwb2ludHMgdG8gYSB2YWxpZCBpbnN0YW5jZSBvZiBgVGAuXG4mIzQzOyAgICAvLy8gLSBVbnRpbCBgVDo6cmVsZWFzZWAgaXMgY2FsbGVkLCB0aGUgcmV0dXJuZWQgYE93bmVkXHUwMDNjVFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbiYjNDM7ICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLlxuJiM0MzsgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uXG4mIzQzOyAgICAgICAgU2VsZiB7IHB0ciB9XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgLy8vIENvbnN1bWVzIHRoZSBbYE93bmVkYF0sIHJldHVybmluZyBhIHJhdyBwb2ludGVyLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGVcbiYjNDM7ICAgIC8vLyB1bmRlcmx5aW5nIGBUYCBpcyB3aXRoIHRoZSBjYWxsZXIuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLlxuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cdTAwM2UgTm9uTnVsbFx1MDAzY1RcdTAwM2Uge1xuJiM0MzsgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHJcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkXHUwMDNjVFx1MDAzZWAuXG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHB1YiBmbiBhc19waW5fbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFBpblx1MDAzY1x1MDAyNm11dCBUXHUwMDNlIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCwgYW5kIHRoYXQgd2UgY2FuIHNhZmVseVxuJiM0MzsgICAgICAgIC8vIHJldHVybiBhIG11dGFibGUgcmVmZXJlbmNlIHRvIGl0LlxuJiM0MzsgICAgICAgIGxldCB1bnBpbm5lZCA9IHVuc2FmZSB7IHNlbGYucHRyLmFzX211dCgpIH07XG4mIzQzO1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgdHlwZSBpbnZhcmlhbnQgYFRgIGlzIHBpbm5lZC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQodW5waW5uZWQpIH1cbiYjNDM7ICAgIH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7Ly8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYW4gW2BPd25lZFx1MDAzY1RcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFNlbmRgXSxcbiYjNDM7Ly8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYE93bmVkXHUwMDNjVFx1MDAzZWBdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFRgLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGUgJiM0MzsgU2VuZFx1MDAzZSBTZW5kIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge31cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIFtgXHUwMDI2T3duZWRcdTAwM2NUXHUwMDNlYF0gdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgW2BTeW5jYF0sXG4mIzQzOy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BcdTAwMjZPd25lZFx1MDAzY1RcdTAwM2VgXSBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgdGhlIGBcdTAwMjZUYC5cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBPd25hYmxlICYjNDM7IFN5bmNcdTAwM2UgU3luYyBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBEZXJlZiBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgIHR5cGUgVGFyZ2V0ID0gVDtcbiYjNDM7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBzZWxmLnB0ci5hc19yZWYoKSB9XG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlICYjNDM7IFVucGluXHUwMDNlIERlcmVmTXV0IGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiBkZXJlZl9tdXQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcbiYjNDM7ICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9XG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIERyb3AgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgXHUwMDI2bXV0IHNlbGZgIHdlIGV4Y2x1c2l2ZWx5IG93biBgc2VsZmAgYW5kIHRoZSB1bmRlcmx5aW5nIGBUYC4gQXNcbiYjNDM7ICAgICAgICAvLyB3ZSBhcmUgZHJvcHBpbmcgYHNlbGZgLCB3ZSBjYW4gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBgVGAgdG8gdGhlIGByZWxlYXNlYCBtZXRob2QuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgVDo6cmVsZWFzZShzZWxmLnB0cikgfTtcbiYjNDM7ICAgIH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkZXJpdmUgdGhlIHBvaW50ZXIgdG8gYFRgIGZyb20gYSB2YWxpZCBgVGAsIHNvIHRoZSByZXR1cm5lZFxuJiM0MzsvLyBwb2ludGVyIHNhdGlzZnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBvZiBgVGAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBGb3JlaWduT3duYWJsZSBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgIGNvbnN0IEZPUkVJR05fQUxJR046IHVzaXplID0gY29yZTo6bWVtOjphbGlnbl9vZjo6XHUwMDNjVFx1MDAzZSgpO1xuJiM0MztcbiYjNDM7ICAgIHR5cGUgQm9ycm93ZWRcdTAwM2MmIzM5O2FcdTAwM2VcbiYjNDM7ICAgICAgICA9IFx1MDAyNiYjMzk7YSBUXG4mIzQzOyAgICB3aGVyZVxuJiM0MzsgICAgICAgIFNlbGY6ICYjMzk7YTtcbiYjNDM7ICAgIHR5cGUgQm9ycm93ZWRNdXRcdTAwM2MmIzM5O2FcdTAwM2VcbiYjNDM7ICAgICAgICA9IFBpblx1MDAzY1x1MDAyNiYjMzk7YSBtdXQgVFx1MDAzZVxuJiM0MzsgICAgd2hlcmVcbiYjNDM7ICAgICAgICBTZWxmOiAmIzM5O2E7XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLVx1MDAzZSAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQge1xuJiM0MzsgICAgICAgIE93bmVkOjppbnRvX3JhdyhzZWxmKS5hc19wdHIoKS5jYXN0KClcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHVuc2FmZSBmbiBmcm9tX2ZvcmVpZ24ocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZiB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIGNhbWUgZnJvbSBgaW50b19mb3JlaWduYCBhbmQgY2Fubm90IGJlIG51bGwuXG4mIzQzOyAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocHRyLmNhc3QoKSkgfTtcbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IGNvbnRyYWN0LCBgcHRyYCB3YXMgcmV0dXJuZWQgYnkgYGludG9fZm9yZWlnbmAsIHdoaWNoIGdhdmVcbiYjNDM7ICAgICAgICAvLyB1cCBleGNsdXNpdmUgb3duZXJzaGlwIG9mIGEgdmFsaWQsIHBpbm5lZCBgVGA7IHdlIHJldGFrZSB0aGF0IG93bmVyc2hpcCBoZXJlLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwdHIpIH1cbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHVuc2FmZSBmbiBib3Jyb3dcdTAwM2MmIzM5O2FcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZjo6Qm9ycm93ZWRcdTAwM2MmIzM5O2FcdTAwM2Uge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhXG4mIzQzOyAgICAgICAgLy8gcmVmZXJlbmNlIGZvciBgJiMzOTthYC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBcdTAwMjYqcHRyLmNhc3QoKSB9XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICB1bnNhZmUgZm4gYm9ycm93X211dFx1MDAzYyYjMzk7YVx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVx1MDAzZSBTZWxmOjpCb3Jyb3dlZE11dFx1MDAzYyYjMzk7YVx1MDAzZSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGFcbiYjNDM7ICAgICAgICAvLyB1bmlxdWUgcmVmZXJlbmNlIGZvciBgJiMzOTthYC5cbiYjNDM7ICAgICAgICBsZXQgaW5uZXIgPSB1bnNhZmUgeyBcdTAwMjZtdXQgKnB0ci5jYXN0KCkgfTtcbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBuZXZlciBtb3ZlIG91dCBvZiBpbm5lciwgYW5kIHdlIGRvIG5vdCBoYW5kIG91dCBtdXRhYmxlXG4mIzQzOyAgICAgICAgLy8gcmVmZXJlbmNlcyB3aGVuIGBUOiAhVW5waW5gLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IFBpbjo6bmV3X3VuY2hlY2tlZChpbm5lcikgfVxuJiM0MzsgICAgfVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvLy8gQSB0cmFpdCBmb3Igb2JqZWN0cyB0aGF0IGNhbiBiZSB3cmFwcGVkIGluIGVpdGhlciBvbmUgb2YgdGhlIHJlZmVyZW5jZSB0eXBlcyBbYE93bmVkYF0gYW5kXG4mIzQzOy8vLyBbYEFSZWZgXS5cbiYjNDM7Ly8vXG4mIzQzOy8vLyAjIEV4YW1wbGVzXG4mIzQzOy8vL1xuJiM0MzsvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlUmVmQ291bnRlZGBdLCBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGhcbiYjNDM7Ly8vIFtgQVJlZmBdIGFuZCBbYE93bmVkYF0gbG9va3MgbGlrZSB0aGlzOlxuJiM0MzsvLy9cbiYjNDM7Ly8vIGBgYFxuJiM0MzsvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV1cbiYjNDM7Ly8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7XG4mIzQzOy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4mIzQzOy8vLyAjIHVzZSBrZXJuZWw6OmFsbG9jOjp7ZmxhZ3MsIGtib3g6OktCb3gsIEFsbG9jRXJyb3J9O1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XG4mIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGUsIE93bmFibGVSZWZDb3VudGVkfTtcbiYjNDM7Ly8vXG4mIzQzOy8vLyAvLyBBbiBpbnRlcm5hbGx5IHJlZmNvdW50ZWQgc3RydWN0IGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzLlxuJiM0MzsvLy8gLy9cbiYjNDM7Ly8vIC8vICMgSW52YXJpYW50c1xuJiM0MzsvLy8gLy9cbiYjNDM7Ly8vIC8vIC0gYHJlZmNvdW50YCBpcyBhbHdheXMgbm9uLXplcm8gZm9yIGEgdmFsaWQgb2JqZWN0LlxuJiM0MzsvLy8gLy8gLSBgcmVmY291bnRgIGlzIFx1MDAzZTEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC5cbiYjNDM7Ly8vIC8vXG4mIzQzOy8vLyBzdHJ1Y3QgRm9vIHtcbiYjNDM7Ly8vICAgICByZWZjb3VudDogQ2VsbFx1MDAzY3VzaXplXHUwMDNlLFxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIGltcGwgRm9vIHtcbiYjNDM7Ly8vICAgICBmbiBuZXcoKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4mIzQzOy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXG4mIzQzOy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC5cbiYjNDM7Ly8vICAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBpbml0aWFsaXplIGByZWZjb3VudGAgdG8gMSwgc2F0aXNmeWluZyB0aGUgaW52YXJpYW50cy5cbiYjNDM7Ly8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcbiYjNDM7Ly8vICAgICAgICAgICAgIEZvbyB7XG4mIzQzOy8vLyAgICAgICAgICAgICAgICAgcmVmY291bnQ6IENlbGw6Om5ldygxKSxcbiYjNDM7Ly8vICAgICAgICAgICAgIH0sXG4mIzQzOy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCxcbiYjNDM7Ly8vICAgICAgICAgKT87XG4mIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjppbnRvX25vbl9udWxsKHJlc3VsdCk7XG4mIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTpcbiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UganVzdCBhbGxvY2F0ZWQgdGhlIGBTZWxmYCwgdGh1cyBpdCBpcyB2YWxpZCBhbmQgd2Ugb3duIGl0LlxuJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBjYW4gdHJhbnNmZXIgdGhpcyBvd25lcnNoaXAgdG8gdGhlIGBmcm9tX3Jhd2AgbWV0aG9kLlxuJiM0MzsvLy8gICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocmVzdWx0KSB9KVxuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyAvLyBTQUZFVFk6IFdlIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGVhY2ggdGltZSB0aGUgcmVzcGVjdGl2ZSBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIG9ubHkgZnJlZVxuJiM0MzsvLy8gLy8gdGhlIGBGb29gIHdoZW4gdGhlIHJlZmNvdW50IHJlYWNoZXMgemVyby5cbiYjNDM7Ly8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZvbyB7XG4mIzQzOy8vLyAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4mIzQzOy8vLyAgICAgICAgIHNlbGYucmVmY291bnQucmVwbGFjZShzZWxmLnJlZmNvdW50LmdldCgpICYjNDM7IDEpO1xuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOiBCeSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSByZWZjb3VudCBpcyBub24temVybyxcbiYjNDM7Ly8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLlxuJiM0MzsvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyBcdTAwMjZ0aGlzLmFzX3JlZigpLnJlZmNvdW50IH07XG4mIzQzOy8vLyAgICAgICAgIGxldCBuZXdfcmVmY291bnQgPSByZWZjb3VudC5nZXQoKSAtIDE7XG4mIzQzOy8vLyAgICAgICAgIGlmIG5ld19yZWZjb3VudCA9PSAwIHtcbiYjNDM7Ly8vICAgICAgICAgICAgIC8vIFRoZSBgRm9vYCB3aWxsIGJlIGRyb3BwZWQgd2hlbiBgS0JveGAgZ29lcyBvdXQgb2Ygc2NvcGUuXG4mIzQzOy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3hcdTAwM2NGb29cdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZSBhcyB0aGUgb2xkIHJlZmNvdW50IGlzIDEuIFdlIGNhbiBwYXNzXG4mIzQzOy8vLyAgICAgICAgICAgICAvLyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdIGFzIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbixcbiYjNDM7Ly8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLlxuJiM0MzsvLy8gICAgICAgICAgICAgdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfTtcbiYjNDM7Ly8vICAgICAgICAgfSBlbHNlIHtcbiYjNDM7Ly8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTtcbiYjNDM7Ly8vICAgICAgICAgfVxuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyBpbXBsIE93bmFibGVSZWZDb3VudGVkIGZvciBGb28ge1xuJiM0MzsvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2UsIEFSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbiYjNDM7Ly8vICAgICAgICAgaWYgdGhpcy5yZWZjb3VudC5nZXQoKSA9PSAxIHtcbiYjNDM7Ly8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIGBGb29gIGlzIHN0aWxsIGFsaXZlIGFuZCBoYXMgbm8gb3RoZXIgUnVzdCByZWZlcmVuY2VzIGFzIHRoZSByZWZjb3VudFxuJiM0MzsvLy8gICAgICAgICAgICAgLy8gaXMgMS5cbiYjNDM7Ly8vICAgICAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhBUmVmOjppbnRvX3Jhdyh0aGlzKSkgfSlcbiYjNDM7Ly8vICAgICAgICAgfSBlbHNlIHtcbiYjNDM7Ly8vICAgICAgICAgICAgIEVycih0aGlzKVxuJiM0MzsvLy8gICAgICAgICB9XG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy9cbiYjNDM7Ly8vICAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZFx1MDAzY1NlbGZcdTAwM2UpIC1cdTAwM2UgQVJlZlx1MDAzY1NlbGZcdTAwM2Uge1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IEFuIGBPd25lZFx1MDAzY0Zvb1x1MDAzZWAgaG9sZHMgdGhlIHVuaXF1ZSByZWZlcmVuY2UgKHJlZmNvdW50IDEpLCB3aGljaCB3ZSB0cmFuc2ZlciB0b1xuJiM0MzsvLy8gICAgICAgICAvLyB0aGUgbmV3IGBBUmVmYC5cbiYjNDM7Ly8vICAgICAgICAgdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcoT3duZWQ6OmludG9fcmF3KHRoaXMpKSB9XG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcbiYjNDM7Ly8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IFVzaW5nIGBkZWNfcmVmKClgIGZyb20gW2BSZWZDb3VudGVkYF0gdG8gcmVsZWFzZSBpcyBva2F5LCBhcyB0aGUgcmVmY291bnQgaXNcbiYjNDM7Ly8vICAgICAgICAgLy8gYWx3YXlzIDEgZm9yIGFuIFtgT3duZWRcdTAwM2NGb29cdTAwM2VgXS5cbiYjNDM7Ly8vICAgICAgICAgdW5zYWZlIHsgRm9vOjpkZWNfcmVmKHRoaXMpIH07XG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIGxldCBmb28gPSBGb286Om5ldygpPztcbiYjNDM7Ly8vIGxldCBmb28gPSBBUmVmOjpmcm9tKGZvbyk7XG4mIzQzOy8vLyB7XG4mIzQzOy8vLyAgICAgbGV0IGJhciA9IGZvby5jbG9uZSgpO1xuJiM0MzsvLy8gICAgIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGJhcikuaXNfZXJyKCkpO1xuJiM0MzsvLy8gfVxuJiM0MzsvLy8gYXNzZXJ0IShPd25lZDo6dHJ5X2Zyb20oZm9vKS5pc19vaygpKTtcbiYjNDM7Ly8vICMgT2s6Olx1MDAzYygpLCBFcnJvclx1MDAzZSgoKSlcbiYjNDM7Ly8vIGBgYFxuJiM0MztwdWIgdHJhaXQgT3duYWJsZVJlZkNvdW50ZWQ6IFJlZkNvdW50ZWQgJiM0MzsgT3duYWJsZSAmIzQzOyBTaXplZCB7XG4mIzQzOyAgICAvLy8gQ2hlY2tzIGlmIHRoZSBbYEFSZWZgXSBpcyB1bmlxdWUgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIFtgT3duZWRgXSBpZiB0aGF0IGlzIHRoZSBjYXNlLlxuJiM0MzsgICAgLy8vIE90aGVyd2lzZSBpdCByZXR1cm5zIGFnYWluIGFuIFtgQVJlZmBdIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0LlxuJiM0MzsgICAgZm4gdHJ5X2Zyb21fc2hhcmVkKHRoaXM6IEFSZWZcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQVJlZlx1MDAzY1NlbGZcdTAwM2VcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgLy8vIENvbnZlcnRzIHRoZSBbYE93bmVkYF0gaW50byBhbiBbYEFSZWZgXS5cbiYjNDM7ICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBBUmVmXHUwMDNjU2VsZlx1MDAzZTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW1wbFx1MDAzY1Q6IE93bmFibGVSZWZDb3VudGVkXHUwMDNlIFRyeUZyb21cdTAwM2NBUmVmXHUwMDNjVFx1MDAzZVx1MDAzZSBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgIHR5cGUgRXJyb3IgPSBBUmVmXHUwMDNjVFx1MDAzZTtcbiYjNDM7ICAgIC8vLyBUcmllcyB0byBjb252ZXJ0IHRoZSBbYEFSZWZgXSB0byBhbiBbYE93bmVkYF0gYnkgY2FsbGluZ1xuJiM0MzsgICAgLy8vIFtgdHJ5X2Zyb21fc2hhcmVkKClgXShPd25hYmxlUmVmQ291bnRlZDo6dHJ5X2Zyb21fc2hhcmVkKS4gSW4gY2FzZSB0aGUgW2BBUmVmYF0gaXMgbm90XG4mIzQzOyAgICAvLy8gdW5pcXVlLCBpdCByZXR1cm5zIGFnYWluIGFuIFtgQVJlZmBdIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0LlxuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiB0cnlfZnJvbShiOiBBUmVmXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1RcdTAwM2UsIFNlbGY6OkVycm9yXHUwMDNlIHtcbiYjNDM7ICAgICAgICBUOjp0cnlfZnJvbV9zaGFyZWQoYilcbiYjNDM7ICAgIH1cbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BhZ2UucnMgYi9ydXN0L2tlcm5lbC9wYWdlLnJzXG5pbmRleCAxYzA3OTZlYTIyOWYwLi4zMmRkMDMwYzgzMTU5IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xuQEAgLTEyLDE2ICYjNDM7MTIsMTYgQEBcbiAgICAgICAgIGNvZGU6OiosXG4gICAgICAgICBSZXN1bHQsIC8vXG4gICAgIH0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIE9wYXF1ZSxcbiYjNDM7ICAgICAgICBPd25hYmxlLFxuJiM0MzsgICAgICAgIE93bmVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLCAvL1xuIH07XG4tdXNlIGNvcmU6Ontcbi0gICAgbWFya2VyOjpQaGFudG9tRGF0YSxcbi0gICAgbWVtOjpNYW51YWxseURyb3AsXG4tICAgIG9wczo6RGVyZWYsXG4tICAgIHB0cjo6e1xuLSAgICAgICAgc2VsZixcbi0gICAgICAgIE5vbk51bGwsIC8vXG4tICAgIH0sIC8vXG4mIzQzO3VzZSBjb3JlOjpwdHI6OntcbiYjNDM7ICAgIHNlbGYsXG4mIzQzOyAgICBOb25OdWxsLCAvL1xuIH07XG4gXG4gLy8vIEEgYml0d2lzZSBzaGlmdCBmb3IgdGhlIHBhZ2Ugc2l6ZS5cbkBAIC02NSw5MyAmIzQzOzY1LDI5IEBAIHB1YiBjb25zdCBmbiBwYWdlX2FsaWduKGFkZHI6IHVzaXplKSAtXHUwMDNlIE9wdGlvblx1MDAzY3VzaXplXHUwMDNlIHtcbiAgICAgU29tZShzdW0gXHUwMDI2IFBBR0VfTUFTSylcbiB9XG4gXG4tLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS5cbi0vLy9cbi0vLy8gVGhpcyB0eXBlIHByb3ZpZGVzIGEgYm9ycm93ZWQgdmVyc2lvbiBvZiBhIFtgUGFnZWBdIHRoYXQgaXMgb3duZWQgYnkgc29tZSBvdGhlciBlbnRpdHksIGUuZy4gYVxuLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uXG4tLy8vXG4tLy8vICMgRXhhbXBsZVxuLS8vL1xuLS8vLyBgYGBcbi0vLy8gIyB1c2Uga2VybmVsOjp7YmluZGluZ3MsIHByZWx1ZGU6Oip9O1xuLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9O1xuLS8vLyAjIHVzZSBjb3JlOjp7bWVtOjpNYXliZVVuaW5pdCwgcHRyLCBwdHI6Ok5vbk51bGwgfTtcbi0vLy9cbi0vLy8gZm4gYm9ycm93X3BhZ2VcdTAwM2MmIzM5O2FcdTAwM2UodmJveDogXHUwMDI2JiMzOTthIG11dCBWQm94XHUwMDNjTWF5YmVVbmluaXRcdTAwM2NbdTg7IFBBR0VfU0laRV1cdTAwM2VcdTAwM2UpIC1cdTAwM2UgQm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0vLy8gICAgIGxldCBwdHIgPSBwdHI6OmZyb21fcmVmKFx1MDAyNioqdmJveCk7XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6XG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuXG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGBzZWxmYC5cbi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuLS8vLyB9XG4tLy8vXG4tLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6Olx1MDAzY1t1ODsgUEFHRV9TSVpFXVx1MDAzZTo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87XG4tLy8vIGxldCBwYWdlID0gYm9ycm93X3BhZ2UoXHUwMDI2bXV0IHZib3gpO1xuLS8vL1xuLS8vLyAvLyBTQUZFVFk6IFRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgcmVhZCBvciB3cml0ZSB0byB0aGlzIHBhZ2UuXG4tLy8vIHVuc2FmZSB7IHBhZ2UuZmlsbF96ZXJvX3JhdygwLCBQQUdFX1NJWkUpPyB9O1xuLS8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4tLy8vIGBgYFxuLS8vL1xuLS8vLyAjIEludmFyaWFudHNcbi0vLy9cbi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuXG4tLy8vXG4tLy8vIFtgVkJveGBdOiBrZXJuZWw6OmFsbG9jOjpWQm94XG4tLy8vIFtgVm1hbGxvY2BdOiBrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2Ncbi1wdWIgc3RydWN0IEJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZShNYW51YWxseURyb3BcdTAwM2NQYWdlXHUwMDNlLCBQaGFudG9tRGF0YVx1MDAzY1x1MDAyNiYjMzk7YSBQYWdlXHUwMDNlKTtcbi1cbi1pbXBsXHUwMDNjJiMzOTthXHUwMDNlIEJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZSB7XG4tICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BCb3Jyb3dlZFBhZ2VgXSBmcm9tIGEgcmF3IHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLlxuLSAgICAvLy9cbi0gICAgLy8vICMgU2FmZXR5XG4tICAgIC8vL1xuLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC5cbi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4tICAgICAgICBsZXQgcGFnZSA9IFBhZ2UgeyBwYWdlOiBwdHIgfTtcbi1cbi0gICAgICAgIC8vIElOVkFSSUFOVDogVGhlIHNhZmV0eSByZXF1aXJlbWVudHMgZ3VhcmFudGVlIHRoYXQgYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWVcbi0gICAgICAgIC8vIGAmIzM5O2FgLlxuLSAgICAgICAgU2VsZihNYW51YWxseURyb3A6Om5ldyhwYWdlKSwgUGhhbnRvbURhdGEpXG4tICAgIH1cbi19XG4tXG4taW1wbFx1MDAzYyYjMzk7YVx1MDAzZSBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0gICAgdHlwZSBUYXJnZXQgPSBQYWdlO1xuLVxuLSAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4tICAgICAgICBcdTAwMjZzZWxmLjBcbi0gICAgfVxuLX1cbi1cbi0vLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gaW1wbGVtZW50YXRpb24gb2Zcbi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbiYjNDM7Ly8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMsIHN1Y2ggYXNcbiYjNDM7Ly8vIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxuIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHtcbiAgICAgLy8vIFRoZSBbYEl0ZXJhdG9yYF0gdHlwZSwgZS5nLiBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbi0gICAgdHlwZSBJdGVyXHUwMDNjJiMzOTthXHUwMDNlOiBJdGVyYXRvclx1MDAzY0l0ZW0gPSBCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2VcdTAwM2VcbiYjNDM7ICAgIHR5cGUgSXRlclx1MDAzYyYjMzk7YVx1MDAzZTogSXRlcmF0b3JcdTAwM2NJdGVtID0gXHUwMDI2JiMzOTthIFBhZ2VcdTAwM2VcbiAgICAgd2hlcmVcbiAgICAgICAgIFNlbGY6ICYjMzk7YTtcbiBcbi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuJiM0MzsgICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuICAgICBmbiBwYWdlX2l0ZXIoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgU2VsZjo6SXRlclx1MDAzYyYjMzk7X1x1MDAzZTtcbiB9XG4gXG4tLy8vIEEgcG9pbnRlciB0byBhIHBhZ2UgdGhhdCBvd25zIHRoZSBwYWdlIGFsbG9jYXRpb24uXG4mIzQzOy8vLyBBIGBzdHJ1Y3QgcGFnZWAuXG4mIzQzOy8vL1xuJiM0MzsvLy8gQSBgUGFnZWAgaXMgYWNjZXNzZWQgdGhyb3VnaCBhIHNoYXJlZCByZWZlcmVuY2Ugb3IgdGhyb3VnaCBhbiBvd25pbmcgW2BPd25lZFx1MDAzY1BhZ2VcdTAwM2VgXTsgdGhlIGxhdHRlclxuJiM0MzsvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuXG4gLy8vXG4gLy8vICMgSW52YXJpYW50c1xuIC8vL1xuLS8vLyBUaGUgcG9pbnRlciBpcyB2YWxpZCwgYW5kIGhhcyBvd25lcnNoaXAgb3ZlciB0aGUgcGFnZS5cbiYjNDM7Ly8vIFRoZSBgUGFnZWAgaXMgYmFja2VkIGJ5IGEgdmFsaWQgYHN0cnVjdCBwYWdlYC5cbiYjNDM7I1tyZXByKHRyYW5zcGFyZW50KV1cbiBwdWIgc3RydWN0IFBhZ2Uge1xuLSAgICBwYWdlOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UsXG4mIzQzOyAgICBwYWdlOiBPcGFxdWVcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSxcbiB9XG4gXG4gLy8gU0FGRVRZOiBQYWdlcyBoYXZlIG5vIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHRoZW0gc3RheWluZyBvbiBhIGdpdmVuIHRocmVhZCwgc28gbW92aW5nIHRoZW0gYWNyb3NzXG5AQCAtMTg1LDE5ICYjNDM7MTIxLDIwIEBAIGltcGwgUGFnZSB7XG4gICAgIC8vLyAjIE9rOjpcdTAwM2MoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvclx1MDAzZSgoKSlcbiAgICAgLy8vIGBgYFxuICAgICAjW2lubGluZV1cbi0gICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGYsIEFsbG9jRXJyb3JcdTAwM2Uge1xuJiM0MzsgICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQWxsb2NFcnJvclx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYGdmcF9mbGFnc2AsIHRoaXMgY2FsbCBtYXkgc2xlZXAuIE90aGVyIHRoYW4gdGhhdCwgaXRcbiAgICAgICAgIC8vIGlzIGFsd2F5cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2QuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjphbGxvY19wYWdlcyhmbGFncy5hc19yYXcoKSwgMCkgfTtcbiAgICAgICAgIGxldCBwYWdlID0gTm9uTnVsbDo6bmV3KHBhZ2UpLm9rX29yKEFsbG9jRXJyb3IpPztcbi0gICAgICAgIC8vIElOVkFSSUFOVDogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxuLSAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYFBhZ2VgIG9iamVjdC5cbi0gICAgICAgIE9rKFNlbGYgeyBwYWdlIH0pXG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XG4mIzQzOyAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYE93bmVkXHUwMDNjUGFnZVx1MDAzZWAgb2JqZWN0LlxuJiM0MzsgICAgICAgIC8vIFNpbmNlIGBQYWdlYCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHBvaW50ZXIgZGlyZWN0bHkuXG4mIzQzOyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KVxuICAgICB9XG4gXG4gICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuXG4gICAgIHB1YiBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqbXV0IGJpbmRpbmdzOjpwYWdlIHtcbi0gICAgICAgIHNlbGYucGFnZS5hc19wdHIoKVxuJiM0MzsgICAgICAgIHNlbGYucGFnZS5nZXQoKVxuICAgICB9XG4gXG4gICAgIC8vLyBHZXQgdGhlIG5vZGUgaWQgY29udGFpbmluZyB0aGlzIHBhZ2UuXG5AQCAtMjA3LDYgJiM0MzsxNDQsMjAgQEAgcHViIGZuIG5pZChcdTAwMjZzZWxmKSAtXHUwMDNlIGkzMiB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGFnZV90b19uaWQoc2VsZi5hc19wdHIoKSkgfVxuICAgICB9XG4gXG4mIzQzOyAgICAvLy8gQ3JlYXRlIGEgYFx1MDAyNlBhZ2VgIGZyb20gYSByYXcgYHN0cnVjdCBwYWdlYCBwb2ludGVyLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gIyBTYWZldHlcbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIGBwdHJgIG11c3QgYmUgY29udmVydGlibGUgdG8gYSBzaGFyZWQgcmVmZXJlbmNlIHdpdGggYSBsaWZldGltZSBvZiBgJiMzOTthYC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgcHViIHVuc2FmZSBmbiBmcm9tX3Jhd1x1MDAzYyYjMzk7YVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGFnZSkgLVx1MDAzZSBcdTAwMjYmIzM5O2EgU2VsZiB7XG4mIzQzOyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgcmVmZXJzIHRvIGEgdmFsaWQgYHN0cnVjdCBwYWdlYCwgc29cbiYjNDM7ICAgICAgICAvLyB0aGUgcmV0dXJuZWQgcmVmZXJlbmNlIHVwaG9sZHMgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBQYWdlYC5cbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIG5vdCBudWxsIGFuZCBpcyBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZFxuJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZS5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBcdTAwMjYqcHRyLmNhc3QoKSB9XG4mIzQzOyAgICB9XG4mIzQzO1xuICAgICAvLy8gUnVucyBhIHBpZWNlIG9mIGNvZGUgd2l0aCB0aGlzIHBhZ2UgbWFwcGVkIHRvIGFuIGFkZHJlc3MuXG4gICAgIC8vL1xuICAgICAvLy8gVGhlIHBhZ2UgaXMgdW5tYXBwZWQgd2hlbiB0aGlzIGNhbGwgcmV0dXJucy5cbkBAIC0zNzMsMTAgJiM0MzszMjQsMTEgQEAgcHViIHVuc2FmZSBmbiBjb3B5X2Zyb21fdXNlcl9zbGljZV9yYXcoXG4gICAgIH1cbiB9XG4gXG4taW1wbCBEcm9wIGZvciBQYWdlIHtcbiYjNDM7aW1wbCBPd25hYmxlIGZvciBQYWdlIHtcbiAgICAgI1tpbmxpbmVdXG4tICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0gICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgd2UgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIHBhZ2UgYW5kIGNhbiBmcmVlIGl0LlxuLSAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyhzZWxmLnBhZ2UuYXNfcHRyKCksIDApIH07XG4mIzQzOyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZVxuJiM0MzsgICAgICAgIC8vIGl0LiBTaW5jZSBQYWdlIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcmF3IHBvaW50ZXIgZGlyZWN0bHkuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyh0aGlzLmFzX3B0cigpLmNhc3QoKSwgMCkgfTtcbiAgICAgfVxuIH1cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wY2kucnMgYi9ydXN0L2tlcm5lbC9wY2kucnNcbmluZGV4IDUwNzFjYWU2NTQzZmQuLmVhOWVmOTljZWNiMDcgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuQEAgLTE5LDYgJiM0MzsxOSwxMCBAQFxuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OkNTdHIsXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTQ4MSw3ICYjNDM7NDg1LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBpbXBsXHUwMDNjJiMzOTthXHUwMDNlIGNyYXRlOjpkbWE6OkRldmljZVx1MDAzYyYjMzk7YVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJiMzOTthXHUwMDNlXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGNpX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTtcbkBAIC00OTMsNiAmIzQzOzQ5NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5pbmRleCA5NzlhOTcxOGYxNTNkLi4wNjdmNjhiOTllOGM1IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5yc1xuQEAgLTcsNyAmIzQzOzcsMTQgQEBcbiAvLyEgQyBoZWFkZXI6IFtgaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oKSBhbmRcbiAvLyEgW2BpbmNsdWRlL2xpbnV4L3BpZC5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZC5oKVxuIFxuLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0eXBlczo6T3BhcXVlfTtcbiYjNDM7dXNlIGNyYXRlOjp7XG4mIzQzOyAgICBiaW5kaW5ncyxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgT3BhcXVlLCAvL1xuJiM0MzsgICAgfSwgLy9cbiYjNDM7fTtcbiB1c2UgY29yZTo6cHRyO1xuIFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgcGlkX25hbWVzcGFjZWAuIFRocmVhZCBzYWZlLlxuQEAgLTQxLDcgJiM0Mzs0OCw3IEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9wdHJcdTAwM2MmIzM5O2FcdTAwM2UocHRyOiAqY29uc3QgYmluZGluZ3M6OnBpZF9uYW1lc3BhY2UpIC1cdTAwM2UgXHUwMDI2JiMzOTthIFNlbGYge1xuIH1cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgUGlkTmFtZXNwYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC01NSw2ICYjNDM7NjIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NQaWROYW1lc3BhY2VcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY1BpZE5hbWVzcGFjZVx1MDAzZWAgZnJvbVxuJiM0MzsvLyBhIGBcdTAwMjZQaWROYW1lc3BhY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge31cbiYjNDM7XG4gLy8gU0FGRVRZOlxuIC8vIC0gYFBpZE5hbWVzcGFjZTo6ZGVjX3JlZmAgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuXG4gLy8gLSBJdCBpcyBva2F5IHRvIHNlbmQgb3duZXJzaGlwIG9mIGBQaWROYW1lc3BhY2VgIGFjcm9zcyB0aHJlYWQgYm91bmRhcmllcy5cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG5pbmRleCBkNDE1NTVhNGIzMWQyLi5hNGRkYWExY2MzYTQwIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG5AQCAtMjQsNiAmIzQzOzI0LDEwIEBAXG4gICAgIH0sXG4gICAgIG9mLFxuICAgICBwcmVsdWRlOjoqLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gICAgIFRoaXNNb2R1bGUsIC8vXG4gfTtcbkBAIC01MTksNyAmIzQzOzUyMyw3IEBAIHB1YiBmbiBvcHRpb25hbF9pcnFfYnlfbmFtZShcdTAwMjZzZWxmLCBuYW1lOiBcdTAwMjZDU3RyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0lycVJlcXVlc3RcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2Uge1xuIGltcGxcdTAwM2MmIzM5O2FcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXHUwMDNjJiMzOTthXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NkZXZpY2U6OkNvcmVcdTAwM2MmIzM5O2FcdTAwM2VcdTAwM2Uge31cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmVmKCkuYXNfcmF3KCkpIH07XG5AQCAtNTMxLDYgJiM0Mzs1MzUsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkRldmljZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuJiM0MztcbiBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wd20ucnMgYi9ydXN0L2tlcm5lbC9wd20ucnNcbmluZGV4IDZjOWQ2NjcwMDllZjcuLjJkMWNkNzRkZDk4ZTEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wd20ucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3B3bS5yc1xuQEAgLTEzLDcgJiM0MzsxMywxMSBAQFxuICAgICBkZXZyZXMsXG4gICAgIGVycm9yOjp7c2VsZiwgdG9fcmVzdWx0fSxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy9cbiB9O1xuIHVzZSBjb3JlOjp7XG5AQCAtNjI5LDcgJiM0Mzs2MzMsNyBAQCBwdWIgZm4gbmV3XHUwMDNjJiMzOTthXHUwMDNlKFxuIH1cbiBcbiAvLyBTQUZFVFk6IEltcGxlbWVudHMgcmVmY291bnRpbmcgZm9yIGBDaGlwYCB1c2luZyB0aGUgZW1iZWRkZWQgYHN0cnVjdCBkZXZpY2VgLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHtcbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IGBzZWxmLjAuZ2V0KClgIHBvaW50cyB0byBhIHZhbGlkIGBwd21fY2hpcGAgYmVjYXVzZSBgc2VsZmAgZXhpc3RzLlxuQEAgLTY0Nyw2ICYjNDM7NjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY0NoaXBcdTAwM2NUXHUwMDNlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NDaGlwXHUwMDNjVFx1MDAzZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZDaGlwXHUwMDNjVFx1MDAzZWAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO1xuIC8vIFNBRkVUWTogYENoaXBgIGlzIGEgd3JhcHBlciBhcm91bmQgYCptdXQgYmluZGluZ3M6OnB3bV9jaGlwYC4gVGhlIHVuZGVybHlpbmcgQ1xuIC8vIHN0cnVjdHVyZSYjMzk7cyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgbW9kZWxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzIGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXG5pbmRleCBiNzIxYjJlMDBiOTg2Li5lNmZmZTdjNjUwYzM5IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbkBAIC0xMSw3ICYjNDM7MTEsNyBAQFxuIC8vISB1bmRlcmx5aW5nIG9iamVjdCwgYnV0IHRoaXMgcmVmY291bnQgaXMgaW50ZXJuYWwgdG8gdGhlIG9iamVjdC4gSXQgZXNzZW50aWFsbHkgaXMgYSBSdXN0XG4gLy8hIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgZ2V0X2AgYW5kIGBwdXRfYCBwYXR0ZXJuIHVzZWQgaW4gQyBmb3IgcmVmZXJlbmNlIGNvdW50aW5nLlxuIC8vIVxuLS8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcdTAwM2NNeVR5cGVcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgQWx3YXlzUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XG4mIzQzOy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcdTAwM2NNeVR5cGVcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XG4gLy8hIGZvciBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3Qgb2YgdGhlIGBNeVR5cGVgIHR5cGUuXG4gLy8hXG4gLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmNcbkBAIC0yMywyNiAmIzQzOzIzLDM1IEBAXG4gICAgIG9wczo6RGVyZWYsXG4gICAgIHB0cjo6Tm9uTnVsbCwgLy9cbiB9O1xuJiM0Mzt1c2Uga2VybmVsOjp0eXBlczo6e1xuJiM0MzsgICAgT3duYWJsZVJlZkNvdW50ZWQsXG4mIzQzOyAgICBPd25lZCwgLy9cbiYjNDM7fTtcbiBcbi0vLy8gVHlwZXMgdGhhdCBhcmUgX2Fsd2F5c18gcmVmZXJlbmNlIGNvdW50ZWQuXG4mIzQzOy8vLyBUeXBlcyB0aGF0IGFyZSBpbnRlcm5hbGx5IHJlZmVyZW5jZSBjb3VudGVkLlxuIC8vL1xuIC8vLyBJdCBhbGxvd3Mgc3VjaCB0eXBlcyB0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSByZWYgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZnVuY3Rpb25zLlxuLS8vLyBBZGRpdGlvbmFsbHksIGl0IGFsbG93cyB1c2VycyB0byBjb252ZXJ0IGZyb20gYSBzaGFyZWQgcmVmZXJlbmNlIGBcdTAwMjZUYCB0byBhbiBvd25lZCByZWZlcmVuY2Vcbi0vLy8gW2BBUmVmXHUwMDNjVFx1MDAzZWBdLlxuIC8vL1xuIC8vLyBUaGlzIGlzIHVzdWFsbHkgaW1wbGVtZW50ZWQgYnkgd3JhcHBlcnMgdG8gZXhpc3Rpbmcgc3RydWN0dXJlcyBvbiB0aGUgQyBzaWRlIG9mIHRoZSBjb2RlLiBGb3JcbiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkXG4gLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuXG4gLy8vXG4mIzQzOy8vLyBOb3RlOiBJbXBsZW1lbnRpbmcgdGhpcyB0cmFpdCBhbGxvd3MgdHlwZXMgdG8gYmUgd3JhcHBlZCBpbiBhbiBbYEFSZWZcdTAwM2NTZWxmXHUwMDNlYF0uIEl0IHJlcXVpcmVzIGFuXG4mIzQzOy8vLyBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgYW5kIHByb3ZpZGVzIG9ubHkgc2hhcmVkIHJlZmVyZW5jZXMuIElmIHVuaXF1ZSByZWZlcmVuY2VzIGFyZSByZXF1aXJlZFxuJiM0MzsvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW5cbiYjNDM7Ly8vIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkuIEltcGxlbWVudGluZyB0aGUgdHJhaXRcbiYjNDM7Ly8vIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBhbGxvd3MgdG8gY29udmVydCBiZXR3ZWVuIHVuaXF1ZSBhbmRcbiYjNDM7Ly8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkgYW5kXG4mIzQzOy8vLyBbYEFSZWZcdTAwM2NTZWxmXHUwMDNlYF0pLlxuJiM0MzsvLy9cbiAvLy8gIyBTYWZldHlcbiAvLy9cbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmZXJlbmNlIGNvdW50IGtlZXAgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnlcbiAvLy8gYXQgbGVhc3QgdW50aWwgbWF0Y2hpbmcgZGVjcmVtZW50cyBhcmUgcGVyZm9ybWVkLlxuIC8vL1xuIC8vLyBJbXBsZW1lbnRlcnMgbXVzdCBhbHNvIGVuc3VyZSB0aGF0IGFsbCBpbnN0YW5jZXMgYXJlIHJlZmVyZW5jZS1jb3VudGVkLiAoT3RoZXJ3aXNlIHRoZXlcbi0vLy8gd29uJiMzOTt0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdFxuLS8vLyBhbGl2ZS4pXG4tcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcbiYjNDM7Ly8vIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGhvbm91ciB0aGUgcmVxdWlyZW1lbnQgdGhhdCBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSBrZWVwIHRoZSBvYmplY3QgYWxpdmUuKVxuJiM0MztwdWIgdW5zYWZlIHRyYWl0IFJlZkNvdW50ZWQge1xuICAgICAvLy8gSW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvYmplY3QuXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZik7XG4gXG5AQCAtNTUsMTEgJiM0Mzs2NCwyNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xuICAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIHdhcyBhIHByZXZpb3VzIG1hdGNoaW5nIGluY3JlbWVudCB0byB0aGUgcmVmZXJlbmNlIGNvdW50LFxuICAgICAvLy8gYW5kIHRoYXQgdGhlIG9iamVjdCBpcyBubyBsb25nZXIgdXNlZCBhZnRlciBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIGRlY3JlbWVudGVkIChhcyBpdCBtYXlcbiAgICAgLy8vIHJlc3VsdCBpbiB0aGUgb2JqZWN0IGJlaW5nIGZyZWVkKSwgdW5sZXNzIHRoZSBjYWxsZXIgb3ducyBhbm90aGVyIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnRcbi0gICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxsc1xuLSAgICAvLy8gW2BBbHdheXNSZWZDb3VudGVkOjpkZWNfcmVmYF0gb25jZSkuXG4mIzQzOyAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzIFtgUmVmQ291bnRlZDo6ZGVjX3JlZmBdIG9uY2UpLlxuICAgICB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKTtcbiB9XG4gXG4mIzQzOy8vLyBBbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgdHlwZS5cbiYjNDM7Ly8vXG4mIzQzOy8vLyBJdCBhbGxvd3MgZGVyaXZpbmcgYSBjb3VudGVkIHJlZmVyZW5jZSBbYEFSZWZcdTAwM2NUXHUwMDNlYF0gZnJvbSBhIGBcdTAwMjZUYC5cbiYjNDM7Ly8vXG4mIzQzOy8vLyBUaGlzIHByb3ZpZGVzIHNvbWUgY29udmVuaWVuY2UsIGJ1dCBpdCBhbGxvd3MgXCYjMzQ7ZXNjYXBpbmdcJiMzNDsgYm9ycm93IGNoZWNrcyBvbiBgXHUwMDI2VGAuIEFzIGl0XG4mIzQzOy8vLyBjb21wbGljYXRlcyBhdHRlbXB0cyB0byBlbnN1cmUgdGhhdCBhIHJlZmVyZW5jZSB0byBUIGlzIHVuaXF1ZSwgaXQgaXMgb3B0aW9uYWwgdG8gcHJvdmlkZSBmb3JcbiYjNDM7Ly8vIFtgUmVmQ291bnRlZGBdIHR5cGVzLiBTZWUgKlNhZmV0eSogYmVsb3cuXG4mIzQzOy8vL1xuJiM0MzsvLy8gIyBTYWZldHlcbiYjNDM7Ly8vXG4mIzQzOy8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBzYWZldHkgaW52YXJpYW50cyBhcmUgdmlvbGF0ZWQgYnkgdXBncmFkaW5nIGFuIGBcdTAwMjZUYCB0byBhblxuJiM0MzsvLy8gW2BBUmVmXHUwMDNjVFx1MDAzZWBdLiBJbiBwYXJ0aWN1bGFyIHRoYXQgaW1wbGllcyBbYEFsd2F5c1JlZkNvdW50ZWRgXSBhbmQgW2BjcmF0ZTo6dHlwZXM6Ok93bmFibGVgXVxuJiM0MzsvLy8gY2Fubm90IGJlIGltcGxlbWVudGVkIGZvciB0aGUgc2FtZSB0eXBlLCBhcyB0aGlzIHdvdWxkIGFsbG93IHZpb2xhdGluZyB0aGUgdW5pcXVlbmVzcyBndWFyYW50ZWVcbiYjNDM7Ly8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZFx1MDAzY1RcdTAwM2VgXSBieSBkZXJlZmVyZW5jaW5nIGl0IGludG8gYW4gYFx1MDAyNlRgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbVxuJiM0MzsvLy8gdGhhdC5cbiYjNDM7cHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkOiBSZWZDb3VudGVkIHt9XG4mIzQzO1xuIC8vLyBBbiBvd25lZCByZWZlcmVuY2UgdG8gYW4gYWx3YXlzLXJlZmVyZW5jZS1jb3VudGVkIG9iamVjdC5cbiAvLy9cbiAvLy8gVGhlIG9iamVjdCYjMzk7cyByZWZlcmVuY2UgY291bnQgaXMgYXV0b21hdGljYWxseSBkZWNyZW1lbnRlZCB3aGVuIGFuIGluc3RhbmNlIG9mIFtgQVJlZmBdIGlzXG5AQCAtNzAsNyAmIzQzOzk1LDcgQEAgcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcbiAvLy9cbiAvLy8gVGhlIHBvaW50ZXIgc3RvcmVkIGluIGBwdHJgIGlzIG5vbi1udWxsIGFuZCB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBbYEFSZWZgXSBpbnN0YW5jZS4gSW5cbiAvLy8gcGFydGljdWxhciwgdGhlIFtgQVJlZmBdIGluc3RhbmNlIG93bnMgYW4gaW5jcmVtZW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdCYjMzk7cyByZWZlcmVuY2UgY291bnQuXG4tcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4mIzQzO3B1YiBzdHJ1Y3QgQVJlZlx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2Uge1xuICAgICBwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlLFxuICAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlLFxuIH1cbkBAIC03OSwxOSAmIzQzOzEwNCwxOSBAQCBwdWIgc3RydWN0IEFSZWZcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIHtcbiAvLyBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGBcdTAwMjZUYCAod2hpY2ggaXMgc2FmZSBiZWNhdXNlIGBUYCBpcyBgU3luY2ApOyBhZGRpdGlvbmFsbHksIGl0IG5lZWRzXG4gLy8gYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYW4gYEFSZWZcdTAwM2NUXHUwMDNlYCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGFcbiAvLyBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8gYW5kIGBUYCBpcyBkcm9wcGVkLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBTeW5jICYjNDM7IFNlbmRcdTAwM2UgU2VuZCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZFx1MDAzZSBTZW5kIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIC8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGBcdTAwMjZBUmVmXHUwMDNjVFx1MDAzZWAgdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgYFN5bmNgXG4gLy8gYmVjYXVzZSBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGBcdTAwMjZUYCAod2hpY2ggaXMgc2FmZSBiZWNhdXNlIGBUYCBpcyBgU3luY2ApOyBhZGRpdGlvbmFsbHksXG4gLy8gaXQgbmVlZHMgYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYSBgXHUwMDI2QVJlZlx1MDAzY1RcdTAwM2VgIG1heSBjbG9uZSBpdCBhbmQgZ2V0IGFuXG4gLy8gYEFSZWZcdTAwM2NUXHUwMDNlYCBvbiB0aGF0IHRocmVhZCwgc28gdGhlIHRocmVhZCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGEgbXV0YWJsZSByZWZlcmVuY2UsIGZvclxuIC8vIGV4YW1wbGUsIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8gYW5kIGBUYCBpcyBkcm9wcGVkLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBTeW5jICYjNDM7IFNlbmRcdTAwM2UgU3luYyBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZFx1MDAzZSBTeW5jIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLlxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuJiM0MztpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBVbnBpbiBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbiBcbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BBUmVmYF0uXG4gICAgIC8vL1xuICAgICAvLy8gSXQgdGFrZXMgb3ZlciBhbiBpbmNyZW1lbnQgb2YgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QuXG5AQCAtMTIwLDE5ICYjNDM7MTQ1LDIxIEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbiAgICAgLy8vXG4gICAgIC8vLyBgYGBcbiAgICAgLy8vIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4tICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07XG4mIzQzOyAgICAvLy8gdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9O1xuICAgICAvLy9cbiAgICAgLy8vIHN0cnVjdCBFbXB0eSB7fVxuICAgICAvLy9cbi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLlxuLSAgICAvLy8gdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRW1wdHkge1xuJiM0MzsgICAgLy8vIC8vIFNBRkVUWTogVGhlIGBSZWZDb3VudGVkYCBpbXBsZW1lbnRhdGlvbiBmb3IgYEVtcHR5YCBkb2VzIG5vdCBjb3VudCByZWZlcmVuY2VzIGFuZCBuZXZlclxuJiM0MzsgICAgLy8vIC8vIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gVGh1cyB3ZSBjYW4gYWN0IGFzIG93bmluZyBhbiBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50IGZvclxuJiM0MzsgICAgLy8vIC8vIHRoZSBvYmplY3QgdGhhdCB3ZSBwYXNzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGBBUmVmYC5cbiYjNDM7ICAgIC8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBFbXB0eSB7XG4gICAgIC8vLyAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7fVxuICAgICAvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKF9vYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7fVxuICAgICAvLy8gfVxuICAgICAvLy9cbiAgICAgLy8vIGxldCBtdXQgZGF0YSA9IEVtcHR5IHt9O1xuICAgICAvLy8gbGV0IHB0ciA9IE5vbk51bGw6Olx1MDAzY0VtcHR5XHUwMDNlOjpuZXcoXHUwMDI2bXV0IGRhdGEpLnVud3JhcCgpO1xuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXG4mIzQzOyAgICAvLy8gLy8gU0FGRVRZOiBXZSBrZWVwIGBkYXRhYCBhcm91bmQgbG9uZ2VyIHRoYW4gdGhlIGBBUmVmYC5cbiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZlx1MDAzY0VtcHR5XHUwMDNlID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9O1xuICAgICAvLy8gbGV0IHJhd19wdHI6IE5vbk51bGxcdTAwM2NFbXB0eVx1MDAzZSA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTtcbiAgICAgLy8vXG5AQCAtMTQzLDcgJiM0MzsxNzAsNyBAQCBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cdTAwM2UgTm9uTnVsbFx1MDAzY1RcdTAwM2Uge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIENsb25lIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIENsb25lIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIGNsb25lKFx1MDAyNnNlbGYpIC1cdTAwM2UgU2VsZiB7XG4gICAgICAgICBzZWxmLmluY19yZWYoKTtcbiAgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBpbmNyZW1lbnRlZCB0aGUgcmVmY291bnQgYWJvdmUuXG5AQCAtMTUxLDcgJiM0MzsxNzgsNyBAQCBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIERlcmVmIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIERlcmVmIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4gICAgIHR5cGUgVGFyZ2V0ID0gVDtcbiBcbiAgICAgZm4gZGVyZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZTZWxmOjpUYXJnZXQge1xuQEAgLTE2OCw3ICYjNDM7MTk1LDE0IEBAIGZuIGZyb20oYjogXHUwMDI2VCkgLVx1MDAzZSBTZWxmIHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSBEcm9wIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFx1MDAzZSBGcm9tXHUwMDNjT3duZWRcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIGZuIGZyb20oYjogT3duZWRcdTAwM2NUXHUwMDNlKSAtXHUwMDNlIFNlbGYge1xuJiM0MzsgICAgICAgIFQ6OmludG9fc2hhcmVkKGIpXG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIERyb3AgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgZm4gZHJvcChcdTAwMjZtdXQgc2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBgQVJlZmAgb3ducyB0aGUgcmVmZXJlbmNlIHdlJiMzOTtyZSBhYm91dCB0b1xuICAgICAgICAgLy8gZGVjcmVtZW50LlxuQEAgLTE3OCwxOSAmIzQzOzIxMiwxOSBAQCBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjQVJlZlx1MDAzY1VcdTAwM2VcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuLSAgICBVOiBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgVDogUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuJiM0MzsgICAgVTogUmVmQ291bnRlZCxcbiB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBlcShcdTAwMjZzZWxmLCBvdGhlcjogXHUwMDI2QVJlZlx1MDAzY1VcdTAwM2UpIC1cdTAwM2UgYm9vbCB7XG4gICAgICAgICBUOjplcShcdTAwMjYqKnNlbGYsIFx1MDAyNioqb3RoZXIpXG4gICAgIH1cbiB9XG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgRXFcdTAwM2UgRXEgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkICYjNDM7IEVxXHUwMDNlIEVxIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIGltcGxcdTAwM2NULCBVXHUwMDNlIFBhcnRpYWxFcVx1MDAzY1x1MDAyNiYjMzk7XyBVXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIHdoZXJlXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxXHUwMDNjVVx1MDAzZSxcbiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxXHUwMDNjVVx1MDAzZSxcbiB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBlcShcdTAwMjZzZWxmLCBvdGhlcjogXHUwMDI2XHUwMDI2VSkgLVx1MDAzZSBib29sIHtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC90YXNrLnJzIGIvcnVzdC9rZXJuZWwvdGFzay5yc1xuaW5kZXggMzgyNzNmNGVlZGI1MS4uNjI1OTQzMGIwY2EzMSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3Rhc2sucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcbkBAIC0xMCw3ICYjNDM7MTAsMTIgQEBcbiAgICAgcGlkX25hbWVzcGFjZTo6UGlkTmFtZXNwYWNlLFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjpBUmVmLFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgTm90VGhyZWFkU2FmZSxcbiYjNDM7ICAgICAgICBPcGFxdWUsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gfTtcbiB1c2UgY29yZTo6e1xuICAgICBvcHM6OkRlcmVmLFxuQEAgLTM0Nyw3ICYjNDM7MzUyLDcgQEAgcHViIGZuIGdyb3VwX2xlYWRlcihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlRhc2sge1xuIH1cbiBcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYFRhc2tgIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgVGFzayB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0zNjEsNiAmIzQzOzM2NiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY1Rhc2tcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2VGFza2AuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge31cbiYjNDM7XG4gaW1wbCBQYXJ0aWFsRXEgZm9yIFRhc2sge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gZXEoXHUwMDI2c2VsZiwgb3RoZXI6IFx1MDAyNlNlbGYpIC1cdTAwM2UgYm9vbCB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdHlwZXMucnMgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xuaW5kZXggYWMzMTZmZDdiNTM4Zi4uNmFhNzYwOTUyY2I2MyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3R5cGVzLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xuQEAgLTE1LDYgJiM0MzsxNSwxOCBAQFxuIHB1YiBtb2QgZm9yX2x0O1xuIHB1YiB1c2UgZm9yX2x0OjpGb3JMdDtcbiBcbiYjNDM7cHViIHVzZSBjcmF0ZTo6e1xuJiM0MzsgICAgb3duZWQ6OntcbiYjNDM7ICAgICAgICBPd25hYmxlLFxuJiM0MzsgICAgICAgIE93bmFibGVSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE93bmVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LCAvL1xuJiM0Mzt9O1xuJiM0MztcbiAvLy8gVXNlZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgdG8gYW5kIGZyb20gZm9yZWlnbiAobm9uLVJ1c3QpIGxhbmd1YWdlcy5cbiAvLy9cbiAvLy8gT3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIGZyb20gUnVzdCB0byBhIGZvcmVpZ24gbGFuZ3VhZ2UgYnkgY2FsbGluZyBbYFNlbGY6OmludG9fZm9yZWlnbmBdIGFuZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuaW5kZXggN2FmZjBjODJkMGFmYy4uNTkzNTBjNmIwZGYyYSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3VzYi5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvdXNiLnJzXG5AQCAtMTgsNyAmIzQzOzE4LDEwIEBAXG4gICAgICAgICB0b19yZXN1bHQsIC8vXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4tICAgIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTM5Miw3ICYjNDM7Mzk1LDcgQEAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2RGV2aWNlIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEludGVyZmFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYEludGVyZmFjZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfaW50ZXJmYWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxuQEAgLTQwNiw2ICYjNDM7NDA5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0ludGVyZmFjZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZJbnRlcmZhY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge31cbiYjNDM7XG4gLy8gU0FGRVRZOiBBIGBJbnRlcmZhY2VgIGlzIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZCBhbmQgY2FuIGJlIHJlbGVhc2VkIGZyb20gYW55IHRocmVhZC5cbiB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbnRlcmZhY2Uge31cbiBcbkBAIC00NDMsNyAmIzQzOzQ1MCw3IEBAIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OnVzYl9kZXZpY2Uge1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYERldmljZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfZGV2aWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxuQEAgLTQ1Nyw2ICYjNDM7NDY0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZEZXZpY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbiYjNDM7XG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG5pbmRleCA3ZTI1M2I2ZjI5OWNlLi43NzY3M2I4ZWE0NWZiIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnNcbkBAIC0xOTIsNyAmIzQzOzE5Miw3IEBAXG4gICAgIHN5bmM6OntcbiAgICAgICAgIGFyZWY6OntcbiAgICAgICAgICAgICBBUmVmLFxuLSAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgICAgICB9LFxuICAgICAgICAgQXJjLFxuICAgICAgICAgTG9ja0NsYXNzS2V5LCAvL1xuQEAgLTk1NCw3ICYjNDM7OTU0LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd0RlbGF5ZWRXb3JrSXRlbVx1MDAzY0lEXHUwMDNlIGZvciBQaW5cdTAwM2NLQm94XHUwMDNjVFx1MDAzZVx1MDAzZVxuIC8vICAgICBpbXBsZW1lbnRhdGlvbiBvZiBgV29ya0l0ZW1Qb2ludGVyYCBmb3IgYEFSZWZcdTAwM2NUXHUwMDNlYC5cbiB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgV29ya0l0ZW1Qb2ludGVyXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsXG4gICAgIFQ6IFdvcmtJdGVtXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXHUwMDNlLFxuICAgICBUOiBIYXNXb3JrXHUwMDNjVCwgSURcdTAwM2UsXG4ge1xuQEAgLTk4Nyw3ICYjNDM7OTg3LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFdvcmtJdGVtUG9pbnRlclx1MDAzY0lEXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIC8vIHJlcXVpcmVtZW50cyBvZiBgV29ya0l0ZW1Qb2ludGVyYC5cbiB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3V29ya0l0ZW1cdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgVDogUmVmQ291bnRlZCxcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc1dvcmtcdTAwM2NULCBJRFx1MDAzZSxcbiB7XG5AQCAtMTAyMCw3ICYjNDM7MTAyMCw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBSYXdEZWxheWVkV29ya0l0ZW1cdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuICAgICBUOiBXb3JrSXRlbVx1MDAzY0lELCBQb2ludGVyID0gU2VsZlx1MDAzZSxcbiAgICAgVDogSGFzRGVsYXllZFdvcmtcdTAwM2NULCBJRFx1MDAzZSxcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsXG4ge1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzoxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIHRoZSBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHJhaXRzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCB1cGRhdGVzIHRoZSBgUGFnZWAgYWJzdHJhY3Rpb24gYW5kIGl0cyB1c2VycyAobGlrZSBBbmRyb2lkIEJpbmRlcikgdG8gdXNlIHRoZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkzNzAyZmRjMzViNDI0MmVmZGNjNTMyNjNkOTkzMWYzZDVlYWQ3NjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzoxMjozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycwppbmRleCBlODJhNTUyMzgwNGY0Li5jNTViYTI5YWJlYTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzCkBAIC0zMyw3ICYjNDM7MzMsNyBAQAogICAgIHN5bmM6OnthcmVmOjpBUmVmLCBNdXRleCwgU3BpbkxvY2t9LAogICAgIHRhc2s6OlBpZCwKICAgICB0cmFuc211dGU6OkZyb21CeXRlcywKLSAgICB0eXBlczo6T3BhcXVlLAomIzQzOyAgICB0eXBlczo6e09wYXF1ZSwgT3duZWR9LAogICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlciwKIH07CiAKQEAgLTE5OCw3ICYjNDM7MTk4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgSW5uZXIge30KICNbcmVwcihDKV0KIHN0cnVjdCBQYWdlSW5mbyB7CiAgICAgbHJ1OiBiaW5kaW5nczo6bGlzdF9oZWFkLAotICAgIHBhZ2U6IE9wdGlvbiZsdDtQYWdlJmd0OywKJiM0MzsgICAgcGFnZTogT3B0aW9uJmx0O093bmVkJmx0O1BhZ2UmZ3Q7Jmd0OywKICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsCiB9CiAKQEAgLTIwNiw3ICYjNDM7MjA2LDcgQEAgaW1wbCBQYWdlSW5mbyB7CiAgICAgLy8vICMgU2FmZXR5CiAgICAgLy8vCiAgICAgLy8vIFRoZSBjYWxsZXIgZW5zdXJlcyB0aGF0IHdyaXRpbmcgdG8gYG1lLnBhZ2VgIGlzIG9rLCBhbmQgdGhhdCB0aGUgcGFnZSBpcyBub3QgY3VycmVudGx5IHNldC4KLSAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IFBhZ2UpIHsKJiM0MzsgICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBPd25lZCZsdDtQYWdlJmd0OykgewogICAgICAgICAvLyBTQUZFVFk6IFRoaXMgcG9pbnRlciBvZmZzZXQgaXMgaW4gYm91bmRzLgogICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgJmFtcDtyYXcgbXV0ICgqbWUpLnBhZ2UgfTsKIApAQCAtMjI5LDEzICYjNDM7MjI5LDEzIEBAIHVuc2FmZSBmbiBnZXRfcGFnZSZsdDsmIzM5O2EmZ3Q7KG1lOiAqY29uc3QgUGFnZUluZm8pIC0mZ3Q7IE9wdGlvbiZsdDsmYW1wOyYjMzk7YSBQYWdlJmd0OyB7CiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyAmYW1wO3JhdyBjb25zdCAoKm1lKS5wYWdlIH07CiAKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBmb3IgcmVhZGluZy4KLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH0KJiM0MzsgICAgICAgIHVuc2FmZSB7ICgqcHRyKS5hc19kZXJlZigpIH0KICAgICB9CiAKICAgICAvLy8gIyBTYWZldHkKICAgICAvLy8KICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2sgZm9yIHRoZSBkdXJhdGlvbiBvZiAmIzM5O2EuCi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLSZndDsgT3B0aW9uJmx0O1BhZ2UmZ3Q7IHsKJiM0MzsgICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLSZndDsgT3B0aW9uJmx0O093bmVkJmx0O1BhZ2UmZ3Q7Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuCiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyAmYW1wO3JhdyBtdXQgKCptZSkucGFnZSB9OwogCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnMKaW5kZXggY2Q0MjAzZjI3YWVkMC4uYzdiOWIwNjljZjc1ZCAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycwpAQCAtMTY5LDcgJiM0MzsxNjksNyBAQCB1bnNhZmUgZm4gcmVhbGxvYygKIH0KIAogaW1wbCBWbWFsbG9jIHsKLSAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BwYWdlOjpCb3Jyb3dlZFBhZ2VgXS4KJiM0MzsgICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZS4KICAgICAvLy8KICAgICAvLy8gIyBFeGFtcGxlcwogICAgIC8vLwpAQCAtMjAyLDIwICYjNDM7MjAyLDE3IEBAIGltcGwgVm1hbGxvYyB7CiAgICAgLy8vCiAgICAgLy8vIC0gYHB0cmAgbXVzdCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLgogICAgIC8vLyAtIGBwdHJgIG11c3QgcmVtYWluIHZhbGlkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIGAmIzM5O2FgLgotICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZSZsdDsmIzM5O2EmZ3Q7KHB0cjogTm9uTnVsbCZsdDt1OCZndDspIC0mZ3Q7IHBhZ2U6OkJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7IHsKJiM0MzsgICAgcHViIHVuc2FmZSBmbiB0b19wYWdlJmx0OyYjMzk7YSZndDsocHRyOiBOb25OdWxsJmx0O3U4Jmd0OykgLSZndDsgJmFtcDsmIzM5O2EgcGFnZTo6UGFnZSB7CiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuCiAgICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OnZtYWxsb2NfdG9fcGFnZShwdHIuYXNfcHRyKCkuY2FzdCgpKSB9OwogCi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXIKLSAgICAgICAgLy8gdG8gYFZtYWxsb2NgIG1lbW9yeS4KLSAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07Ci0KICAgICAgICAgLy8gU0FGRVRZOgotICAgICAgICAvLyAtIGBwYWdlYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mCi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi4KLSAgICAgICAgLy8gLSBCeSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGBwdHJgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mCi0gICAgICAgIC8vICAgYCYjMzk7YWAuCi0gICAgICAgIHVuc2FmZSB7IHBhZ2U6OkJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfQomIzQzOyAgICAgICAgLy8gLSBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQsIG5vbi1udWxsIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkCiYjNDM7ICAgICAgICAvLyAgIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeSwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uCiYjNDM7ICAgICAgICAvLyAgIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLgomIzQzOyAgICAgICAgLy8gLSBCeSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGBwdHJgLCBhbmQgaGVuY2UgdGhlIGBzdHJ1Y3QgcGFnZWAsIGlzCiYjNDM7ICAgICAgICAvLyAgIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGAmIzM5O2FgLgomIzQzOyAgICAgICAgdW5zYWZlIHsgJmFtcDsqcGFnZS5jYXN0KCkgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwppbmRleCAwMmZkYTNlYTVjYWU2Li44ZGNjMTZlZDg5ODkzIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwpAQCAtOSw3ICYjNDM7OSw3IEBACiAgICAgcHRyOjpOb25OdWxsLCAvLwogfTsKIAotLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi4KJiM0MzsvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLgogLy8vCiAvLy8gIyBHdWFyYW50ZWVzCiAvLy8KQEAgLTI4LDExICYjNDM7MjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXImbHQ7JiMzOTthJmd0OyB7CiAgICAgc2l6ZTogdXNpemUsCiAgICAgLy8vIFRoZSBjdXJyZW50IHBhZ2UgaW5kZXggb2YgdGhlIFtgSXRlcmF0b3JgXS4KICAgICBpbmRleDogdXNpemUsCi0gICAgX3A6IFBoYW50b21EYXRhJmx0O3BhZ2U6OkJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7Jmd0OywKJiM0MzsgICAgX3A6IFBoYW50b21EYXRhJmx0OyZhbXA7JiMzOTthIHBhZ2U6OlBhZ2UmZ3Q7LAogfQogCiBpbXBsJmx0OyYjMzk7YSZndDsgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlciZsdDsmIzM5O2EmZ3Q7IHsKLSAgICB0eXBlIEl0ZW0gPSBwYWdlOjpCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OzsKJiM0MzsgICAgdHlwZSBJdGVtID0gJmFtcDsmIzM5O2EgcGFnZTo6UGFnZTsKIAogICAgIGZuIG5leHQoJmFtcDttdXQgc2VsZikgLSZndDsgT3B0aW9uJmx0O1NlbGY6Okl0ZW0mZ3Q7IHsKICAgICAgICAgbGV0IG9mZnNldCA9IHNlbGYuaW5kZXguY2hlY2tlZF9tdWwocGFnZTo6UEFHRV9TSVpFKT87CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5ycwppbmRleCAzNWQxZTAxNTg0OGRkLi5lNmM2MzdiYmUyMDA5IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnMKQEAgLTIxMSw2ICYjNDM7MjExLDE1IEBAIHB1YiBmbiBsZWFrJmx0OyYjMzk7YSZndDsoYjogU2VsZikgLSZndDsgJmFtcDsmIzM5O2EgbXV0IFQgewogICAgICAgICAvLyB3aGljaCBwb2ludHMgdG8gYW4gaW5pdGlhbGl6ZWQgaW5zdGFuY2Ugb2YgYFRgLgogICAgICAgICB1bnNhZmUgeyAmYW1wO211dCAqQm94OjppbnRvX3JhdyhiKSB9CiAgICAgfQomIzQzOwomIzQzOyAgICAvLy8gQ29uc3VtZXMgdGhlIGBCb3gmbHQ7VCwgQSZndDtgIGFuZCByZXR1cm5zIGEgYE5vbk51bGwmbHQ7VCZndDtgLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC4KJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHB1YiBmbiBpbnRvX25vbl9udWxsKGI6IFNlbGYpIC0mZ3Q7IE5vbk51bGwmbHQ7VCZndDsgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgQm94OjppbnRvX3Jhd2AgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIuCiYjNDM7ICAgICAgICB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKFNlbGY6OmludG9fcmF3KGIpKSB9CiYjNDM7ICAgIH0KIH0KIAogaW1wbCZsdDtULCBBJmd0OyBCb3gmbHQ7TWF5YmVVbmluaXQmbHQ7VCZndDssIEEmZ3Q7CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMKaW5kZXggYzQyOTI4ZDVhMjM5My4uODU0NTI1Mjg5YzhiNCAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycwpAQCAtMTksNiAmIzQzOzE5LDEwIEBACiAgICAgICAgIHRvX3Jlc3VsdCwgLy8KICAgICB9LAogICAgIHByZWx1ZGU6OiosCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjp7CiAgICAgICAgIEZvckx0LAogICAgICAgICBGb3JlaWduT3duYWJsZSwKQEAgLTM0NCw3ICYjNDM7MzQ4LDcgQEAgdW5zYWZlIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IGRldmljZTo6QXNCdXNEZXZpY2UmbHQ7Q3R4Jmd0OyBmb3IgRGV2aWNlJmx0O0N0eCZndDsKIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTsKQEAgLTM2Myw2ICYjNDM7MzY3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzCmluZGV4IGNlM2UzMGM4MWNiNWUuLjhkYWQxNWFlNGNmYjAgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5ycwpAQCAtOSw3ICYjNDM7OSwxMSBAQAogICAgIGJsb2NrOjptcTo6T3BlcmF0aW9ucywKICAgICBlcnJvcjo6UmVzdWx0LAogICAgIHN5bmM6OnsKLSAgICAgICAgYXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAomIzQzOyAgICAgICAgYXJlZjo6ewomIzQzOyAgICAgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICAgICAgfSwKICAgICAgICAgYXRvbWljOjpSZWxheGVkLAogICAgICAgICBSZWZjb3VudCwKICAgICB9LApAQCAtMjI5LDExICYjNDM7MjMzLDEwIEBAIHVuc2FmZSBpbXBsJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7IFNlbmQgZm9yIFJlcXVlc3QmbHQ7VCZndDsge30KIC8vIG11dGF0ZSBgc2VsZmAgYXJlIGludGVybmFsbHkgc3luY2hyb25pemVkYAogdW5zYWZlIGltcGwmbHQ7VDogT3BlcmF0aW9ucyZndDsgU3luYyBmb3IgUmVxdWVzdCZsdDtUJmd0OyB7fQogCi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3QmbHQ7VCZndDtgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpcwotLy8gaW1wbGVtZW50YXRpb24gb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudAotLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnQKLS8vIGRlY3JlbWVudCBpcyBleGVjdXRlZC4KLXVuc2FmZSBpbXBsJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3QmbHQ7VCZndDsgewomIzQzOy8vIFNBRkVUWTogQWxsIGluc3RhbmNlcyBvZiBgUmVxdWVzdCZsdDtUJmd0O2AgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGBSZWZDb3VudGVkYAomIzQzOy8vIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudCBrZWVwcyB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeSBhdCBsZWFzdCB1bnRpbCBhCiYjNDM7Ly8gbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpcyBleGVjdXRlZC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPcGVyYXRpb25zJmd0OyBSZWZDb3VudGVkIGZvciBSZXF1ZXN0Jmx0O1QmZ3Q7IHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICBzZWxmLndyYXBwZXJfcmVmKCkucmVmY291bnQoKS5pbmMoKTsKICAgICB9CkBAIC0yNTUsMyAmIzQzOzI1OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgICAgIH0KICAgICB9CiB9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7UmVxdWVzdCZndDtgCiYjNDM7Ly8gZnJvbSBhIGAmYW1wO1JlcXVlc3RgIChidXQgdGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlKS4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPcGVyYXRpb25zJmd0OyBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0Jmx0O1QmZ3Q7IHt9CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9jcmVkLnJzIGIvcnVzdC9rZXJuZWwvY3JlZC5ycwppbmRleCBmZmExNTZiOWRmMzc3Li5iMTc3MzZhOWFkY2Q1IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2NyZWQucnMKQEAgLTgsNyAmIzQzOzgsMTUgQEAKIC8vIQogLy8hIFJlZmVyZW5jZTogJmx0O2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L3NlY3VyaXR5L2NyZWRlbnRpYWxzLmh0bWwmZ3Q7CiAKLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0YXNrOjpLdWlkLCB0eXBlczo6T3BhcXVlfTsKJiM0Mzt1c2UgY3JhdGU6OnsKJiM0MzsgICAgYmluZGluZ3MsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsCiYjNDM7ICAgIHRhc2s6Okt1aWQsCiYjNDM7ICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwomIzQzO307CiAKIC8vLyBXcmFwcyB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgY3JlZGAuCiAvLy8KQEAgLTc2LDcgJiM0Mzs4NCw3IEBAIHB1YiBmbiBldWlkKCZhbXA7c2VsZikgLSZndDsgS3VpZCB7CiB9CiAKIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgQ3JlZGVudGlhbGAgaXMgYWx3YXlzIHJlZi1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLgpAQCAtOTAsMyAmIzQzOzk4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGwmbHQ7Q3JlZGVudGlhbCZndDspIHsKICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9jcmVkKG9iai5jYXN0KCkuYXNfcHRyKCkpIH07CiAgICAgfQogfQomIzQzOwomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7Q3JlZGVudGlhbCZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0NyZWRlbnRpYWxgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge30KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS5ycwppbmRleCAxYTM4YjNiYmRmYjdkLi45YWZlY2QzZmEzMjM3IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzCkBAIC04LDggJiM0Mzs4LDEyIEBACiAgICAgYmluZGluZ3MsCiAgICAgZm10LAogICAgIHByZWx1ZGU6OiosCi0gICAgc3luYzo6YXJlZjo6QVJlZiwKJiM0MzsgICAgc3luYzo6YXJlZjo6ewomIzQzOyAgICAgICAgQVJlZiwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLAogICAgICAgICBPcGFxdWUsIC8vCiAgICAgfSwgLy8KQEAgLTQ0OCw3ICYjNDM7NDUyLDcgQEAgcHViIGZuIG5hbWUoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO0NTdHIgewoga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTsKIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLgogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JhdygpKSB9OwpAQCAtNDYwLDYgJiM0Mzs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9CiYjNDM7CiAvLyBTQUZFVFk6IEFzIGJ5IHRoZSB0eXBlIGludmFyaWFudCBgRGV2aWNlYCBjYW4gYmUgc2VudCB0byBhbnkgdGhyZWFkLgogdW5zYWZlIGltcGwgU2VuZCBmb3IgRGV2aWNlIHt9CiAKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5ycwppbmRleCA1YWVhZDgzNWZiYmMwLi5jZWU3ZTI1MDEzNjg5IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzCkBAIC0xNCw3ICYjNDM7MTQsMTAgQEAKICAgICBmbXQsCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSwKLSAgICBzeW5jOjphcmVmOjpBUmVmLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6T3BhcXVlLAogfTsKIApAQCAtMzYwLDcgJiM0MzszNjMsNyBAQCBmbiBmbXQoJmFtcDtzZWxmLCBmOiAmYW1wO211dCBmbXQ6OkZvcm1hdHRlciZsdDsmIzM5O18mZ3Q7KSAtJmd0OyBmbXQ6OlJlc3VsdCB7CiB9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBGd05vZGVgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHsKJiM0Mzt1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUKICAgICAgICAgLy8gcmVmY291bnQgaXMgbm9uLXplcm8uCkBAIC0zNzQsNiAmIzQzOzM3NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RndOb2RlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RndOb2RlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge30KJiM0MzsKIGVudW0gTm9kZSZsdDsmIzM5O2EmZ3Q7IHsKICAgICBCb3Jyb3dlZCgmYW1wOyYjMzk7YSBGd05vZGUpLAogICAgIE93bmVkKEFSZWYmbHQ7RndOb2RlJmd0OyksCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycwppbmRleCA0NzdjZjc3MWZiMTBlLi42ZmMwMmQ1MDQzMzRlIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnMKQEAgLTE3LDcgJiM0MzsxNyw4IEBACiAgICAgcHJlbHVkZTo6KiwKICAgICBzeW5jOjphcmVmOjp7CiAgICAgICAgIEFSZWYsCi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vCiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KICAgICB9LAogICAgIHR5cGVzOjp7CiAgICAgICAgIE5vdFRocmVhZFNhZmUsCkBAIC0zNjIsNyAmIzQzOzM2Myw3IEBAIGZuIGRlcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtTZWxmOjpUYXJnZXQgewogCiAvLyBTQUZFVFk6IERSTSBkZXZpY2Ugb2JqZWN0cyBhcmUgYWx3YXlzIHJlZmVyZW5jZSBjb3VudGVkIGFuZCB0aGUgZ2V0L3B1dCBmdW5jdGlvbnMKIC8vIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy4KLXVuc2FmZSBpbXBsJmx0O1Q6IGRybTo6RHJpdmVyLCBDOiBEZXZpY2VDb250ZXh0Jmd0OyBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UmbHQ7VCwgQyZndDsgewomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IGRybTo6RHJpdmVyLCBDOiBEZXZpY2VDb250ZXh0Jmd0OyBSZWZDb3VudGVkIGZvciBEZXZpY2UmbHQ7VCwgQyZndDsgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07CkBAIC0zNzcsNiAmIzQzOzM3OCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHQmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSZsdDtULCBDJmd0OyB7fQomIzQzOwogaW1wbCZsdDtUOiBkcm06OkRyaXZlciwgQzogRGV2aWNlQ29udGV4dCZndDsgQXNSZWYmbHQ7ZGV2aWNlOjpEZXZpY2UmZ3Q7IGZvciBEZXZpY2UmbHQ7VCwgQyZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UgewogICAgICAgICAvLyBTQUZFVFk6IGBiaW5kaW5nczo6ZHJtX2RldmljZTo6ZGV2YCBpcyB2YWxpZCBhcyBsb25nIGFzIHRoZSBEUk0gZGV2aWNlIGl0c2VsZiBpcyB2YWxpZCwKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMKaW5kZXggYzhiNjZkODE2ODcxOS4uODBhZmZlNjMzNWFjZiAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMKQEAgLTIxLDcgJiM0MzsyMSw3IEBACiAgICAgcHJlbHVkZTo6KiwKICAgICBzeW5jOjphcmVmOjp7CiAgICAgICAgIEFSZWYsCi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwogICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwKIH07CkBAIC0zNCw3ICYjNDM7MzQsNyBAQAogI1tjZmcoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpXQogcHViIG1vZCBzaG1lbTsKIAotLy8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyBbYEFsd2F5c1JlZkNvdW50ZWRgXSBmb3IgYW55IEdFTSBvYmplY3QgdHlwZS4KJiM0MzsvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLgogLy8vCiAvLy8gU2luY2UgYWxsIEdFTSBvYmplY3RzIHVzZSB0aGUgc2FtZSByZWZjb3VudGluZyBzY2hlbWUuCiAjW21hY3JvX2V4cG9ydF0KQEAgLTQ3LDcgJiM0Mzs0Nyw3IEBAIGltcGwgJCggJmx0OyQoICR0cGFyYW1faWQ6aWRlbnQgKSwmIzQzOyZndDsgKT8gZm9yICR0eXBlOnR5CiAgICAgICAgICk/CiAgICAgKSA9Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogQWxsIEdFTSBvYmplY3RzIGFyZSByZWZjb3VudGVkLgotICAgICAgICB1bnNhZmUgaW1wbCAkKCAmbHQ7JCggJHRwYXJhbV9pZCApLCYjNDM7Jmd0OyApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlCiYjNDM7ICAgICAgICB1bnNhZmUgaW1wbCAkKCAmbHQ7JCggJHRwYXJhbV9pZCApLCYjNDM7Jmd0OyApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yICR0eXBlCiAgICAgICAgIHdoZXJlCiAgICAgICAgICAgICBTZWxmOiBJbnRvR0VNT2JqZWN0LAogICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCYjNDM7ICk/CkBAIC02Niw2ICYjNDM7NjYsMTQgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICAgICAgICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3RfcHV0KG9iaikgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQomIzQzOwomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDskdHlwZSZndDtgIGZyb20gYQomIzQzOyAgICAgICAgLy8gYCZhbXA7JHR5cGVgLgomIzQzOyAgICAgICAgdW5zYWZlIGltcGwgJCggJmx0OyQoICR0cGFyYW1faWQgKSwmIzQzOyZndDsgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciAkdHlwZQomIzQzOyAgICAgICAgd2hlcmUKJiM0MzsgICAgICAgICAgICBTZWxmOiBJbnRvR0VNT2JqZWN0LAomIzQzOyAgICAgICAgICAgICQoICQoICRiaW5kX3BhcmFtIDogJGJpbmRfdHJhaXQgKSwmIzQzOyApPwomIzQzOyAgICAgICAge30KICAgICB9OwogfQogI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV0KQEAgLTEwOSw3ICYjNDM7MTE3LDcgQEAgZm4gY2xvc2UoX29iajogJmFtcDtEcml2ZXJBbGxvY0ltcGwmbHQ7U2VsZiZndDssIF9maWxlOiAmYW1wO0RyaXZlckZpbGUmbHQ7U2VsZiZndDspIHt9CiB9CiAKIC8vLyBUcmFpdCB0aGF0IHJlcHJlc2VudHMgYSBHRU0gb2JqZWN0IHN1YnR5cGUKLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCAmIzQzOyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICYjNDM7IEFsd2F5c1JlZkNvdW50ZWQgewomIzQzO3B1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCAmIzQzOyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICYjNDM7IFJlZkNvdW50ZWQgewogICAgIC8vLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSByYXcgYGRybV9nZW1fb2JqZWN0YCBzdHJ1Y3R1cmUsIHdoaWNoIG11c3QgYmUgdmFsaWQgYXMgbG9uZyBhcwogICAgIC8vLyB0aGlzIG93bmluZyBvYmplY3QgaXMgdmFsaWQuCiAgICAgZm4gYXNfcmF3KCZhbXA7c2VsZikgLSZndDsgKm11dCBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3Q7CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5ycwppbmRleCAyM2VlNjg5YmQyNDAwLi43MjBlNTc0MTgzNThkIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMKQEAgLTEyLDggJiM0MzsxMiwxNSBAQAogICAgIGNyZWQ6OkNyZWRlbnRpYWwsCiAgICAgZXJyb3I6Ontjb2RlOjoqLCB0b19yZXN1bHQsIEVycm9yLCBSZXN1bHR9LAogICAgIGZtdCwKLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sCi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKJiM0MzsgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwogfTsKIHVzZSBjb3JlOjpwdHI7CiAKQEAgLTE5Nyw3ICYjNDM7MjA0LDcgQEAgdW5zYWZlIGltcGwgU3luYyBmb3IgRmlsZSB7fQogCiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvbgogLy8gbWFrZXMgYEFSZWYmbHQ7RmlsZSZndDtgIG93biBhIG5vcm1hbCByZWZjb3VudC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTIxMiw2ICYjNDM7MjE5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsJmx0O0ZpbGUmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtGaWxlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RmlsZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRmlsZSB7fQomIzQzOwogLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBmaWxlYC4gTm90IHRocmVhZCBzYWZlLgogLy8vCiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLgpAQCAtMjMzLDcgJiM0MzsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7CiAKIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgTG9jYWxGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb24KIC8vIG1ha2VzIGBBUmVmJmx0O0xvY2FsRmlsZSZndDtgIG93biBhIG5vcm1hbCByZWZjb3VudC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uCkBAIC0yNDksNiAmIzQzOzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtMb2NhbEZpbGUmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtMb2NhbEZpbGUmZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtMb2NhbEZpbGVgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fQomIzQzOwogaW1wbCBMb2NhbEZpbGUgewogICAgIC8vLyBDb25zdHJ1Y3RzIGEgbmV3IGBzdHJ1Y3QgZmlsZWAgd3JhcHBlciBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLgogICAgIC8vLwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvaTJjLnJzIGIvcnVzdC9rZXJuZWwvaTJjLnJzCmluZGV4IDYyNGI5NzFjYThiMGIuLmY5YWFjYjg5NGY1MDUgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2kyYy5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9pMmMucnMKQEAgLTE4LDcgJiM0MzsxOCw4IEBACiAgICAgcHJlbHVkZTo6KiwKICAgICBzeW5jOjphcmVmOjp7CiAgICAgICAgIEFSZWYsCi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vCiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KICAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsIC8vCiB9OwpAQCAtNDI0LDcgJiM0Mzs0MjUsNyBAQCBwdWIgZm4gZ2V0KGluZGV4OiBpMzIpIC0mZ3Q7IFJlc3VsdCZsdDtBUmVmJmx0O1NlbGYmZ3Q7Jmd0OyB7CiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTsKIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0FkYXB0ZXJgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uCiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfZ2V0X2FkYXB0ZXIoc2VsZi5pbmRleCgpKSB9OwpAQCAtNDM1LDYgJiM0Mzs0MzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH0KICAgICB9CiB9CiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtJMmNBZGFwdGVyJmd0O2AgZnJvbSBhbgomIzQzOy8vIGAmYW1wO0kyY0FkYXB0ZXJgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge30KIAogLy8vIFRoZSBpMmMgYm9hcmQgaW5mbyByZXByZXNlbnRhdGlvbgogLy8vCkBAIC01MDAsNyAmIzQzOzUwNCw3IEBAIHVuc2FmZSBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBkZXZpY2U6OkFzQnVzRGV2aWNlJmx0O0N0eCZndDsgZm9yIEkyY0NsaWVudCZsdDtDCiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNDbGllbnQpOwogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQ2xpZW50YCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJMmNDbGllbnQgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTsKQEAgLTUxMSw2ICYjNDM7NTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwdXRfZGV2aWNlKCZhbXA7cmF3IG11dCAoKm9iai5hc19yZWYoKS5hc19yYXcoKSkuZGV2KSB9CiAgICAgfQogfQomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7STJjQ2xpZW50Jmd0O2AgZnJvbSBhbgomIzQzOy8vIGAmYW1wO0kyY0NsaWVudGAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHt9CiAKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBJMmNDbGllbnQmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2xpYi5ycyBiL3J1c3Qva2VybmVsL2xpYi5ycwppbmRleCA5NTEyYWY3MTU2ZGYyLi5lYjUyNTYyMDRhMTc0IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9saWIucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbGliLnJzCkBAIC0xMDEsNiAmIzQzOzEwMSw3IEBACiBwdWIgbW9kIG9mOwogI1tjZmcoQ09ORklHX1BNX09QUCldCiBwdWIgbW9kIG9wcDsKJiM0MztwdWIgbW9kIG93bmVkOwogcHViIG1vZCBwYWdlOwogI1tjZmcoQ09ORklHX1BDSSldCiBwdWIgbW9kIHBjaTsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tLnJzIGIvcnVzdC9rZXJuZWwvbW0ucnMKaW5kZXggNDc2NGQ3YjY4ZjJhNy4uODNlZDk0ZmNhMTRjYSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvbW0ucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbW0ucnMKQEAgLTEzLDggJiM0MzsxMywxNSBAQAogCiB1c2UgY3JhdGU6OnsKICAgICBiaW5kaW5ncywKLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sCi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKJiM0MzsgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwogfTsKIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTsKIApAQCAtNTUsNyAmIzQzOzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge30KIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tIHt9CiAKIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW0gewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuCkBAIC02OSw2ICYjNDM7NzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O01tJmd0O2AgZnJvbSBhIGAmYW1wO01tYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7fQomIzQzOwogLy8vIEEgd3JhcHBlciBmb3IgdGhlIGtlcm5lbCYjMzk7cyBgc3RydWN0IG1tX3N0cnVjdGAuCiAvLy8KIC8vLyBUaGlzIHR5cGUgaXMgbGlrZSBbYE1tYF0sIGJ1dCB3aXRoIG5vbi16ZXJvIGBtbV91c2Vyc2AuIEl0IGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBgbW1fdXNlcnNgIGNhbgpAQCAtOTEsNyAmIzQzOzEwMSw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXIge30KIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXIge30KIAogLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuCkBAIC0xMDUsNiAmIzQzOzExNSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O01tV2l0aFVzZXImZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtNbVdpdGhVc2VyYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHt9CiYjNDM7CiAvLyBNYWtlIGFsbCBgTW1gIG1ldGhvZHMgYXZhaWxhYmxlIG9uIGBNbVdpdGhVc2VyYC4KIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIgewogICAgIHR5cGUgVGFyZ2V0ID0gTW07CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5ycyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzCmluZGV4IGI4ZDJmMDUxMjI1YzcuLjhmYmMzOTZlNDYwMjggMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzCkBAIC0xMCw3ICYjNDM7MTAsMTEgQEAKIHVzZSBjcmF0ZTo6ewogICAgIGJpbmRpbmdzLAogICAgIG1tOjpNbVdpdGhVc2VyLAotICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSwKJiM0MzsgICAgc3luYzo6YXJlZjo6ewomIzQzOyAgICAgICAgQVJlZiwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLAogfTsKIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTsKIApAQCAtMzQsNyAmIzQzOzM4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlckFzeW5jIHt9CiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyQXN5bmMge30KIAogLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLgpAQCAtNDgsNiAmIzQzOzUyLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7TW1XaXRoVXNlckFzeW5jJmd0O2AKJiM0MzsvLyBmcm9tIGEgYCZhbXA7TW1XaXRoVXNlckFzeW5jYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge30KJiM0MzsKIC8vIE1ha2UgYWxsIGBNbVdpdGhVc2VyYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlckFzeW5jYC4KIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXJBc3luYyB7CiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyOwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3BwLnJzIGIvcnVzdC9rZXJuZWwvb3BwLnJzCmluZGV4IDYyZTQ0Njc2MTI1ZDEuLmI4ZGI2YmRlZmQwNzcgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL29wcC5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vcHAucnMKQEAgLTE2LDggJiM0MzsxNiwxNCBAQAogICAgIGZmaTo6e2NfY2hhciwgY191bG9uZ30sCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OkNTdHJpbmcsCi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAotICAgIHR5cGVzOjpPcGFxdWUsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE9wYXF1ZSwgLy8KJiM0MzsgICAgfSwgLy8KIH07CiAKICNbY2ZnKENPTkZJR19DUFVfRlJFUSldCkBAIC0xMDQxLDcgJiM0MzsxMDQ3LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgT1BQIHt9CiB1bnNhZmUgaW1wbCBTeW5jIGZvciBPUFAge30KIAogLy8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBbYE9QUGBdIGlzIGFsd2F5cyByZWZjb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTEwNTUsNiAmIzQzOzEwNjEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O09QUCZndDtgIGZyb20gYW4KJiM0MzsvLyBgJmFtcDtPUFBgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE9QUCB7fQomIzQzOwogaW1wbCBPUFAgewogICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuCiAgICAgLy8vCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vd25lZC5ycyBiL3J1c3Qva2VybmVsL293bmVkLnJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFjYjYxMWYwODRmZjMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vd25lZC5ycwpAQCAtMCwwICYjNDM7MSwzNzMgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOwomIzQzOy8vISBVbmlxdWUgb3duZWQgcG9pbnRlciB0eXBlcyBmb3Igb2JqZWN0cyB3aXRoIGN1c3RvbSBkcm9wIGxvZ2ljLgomIzQzOy8vIQomIzQzOy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0CiYjNDM7Ly8hIGFyZSBvd25lZCBieSBSdXN0LCBidXQgbmVlZCB0byBiZSBmcmVlZCB0aHJvdWdoIHRoZSBDIEFQSS4KJiM0MzsKJiM0Mzt1c2UgY29yZTo6ewomIzQzOyAgICBtZW06Ok1hbnVhbGx5RHJvcCwKJiM0MzsgICAgb3BzOjp7CiYjNDM7ICAgICAgICBEZXJlZiwKJiM0MzsgICAgICAgIERlcmVmTXV0LCAvLwomIzQzOyAgICB9LAomIzQzOyAgICBwaW46OlBpbiwKJiM0MzsgICAgcHRyOjpOb25OdWxsLCAvLwomIzQzO307CiYjNDM7dXNlIGtlcm5lbDo6ewomIzQzOyAgICBzeW5jOjphcmVmOjpBUmVmLAomIzQzOyAgICB0eXBlczo6UmVmQ291bnRlZCwgLy8KJiM0Mzt9OwomIzQzOwomIzQzO3VzZSBrZXJuZWw6OnR5cGVzOjpGb3JlaWduT3duYWJsZTsKJiM0MzsKJiM0MzsvLy8gVHlwZXMgdGhhdCBzcGVjaWZ5IHRoZWlyIG93biB3YXkgb2YgcGVyZm9ybWluZyBhbGxvY2F0aW9uIGFuZCBkZXN0cnVjdGlvbi4gVHlwaWNhbGx5LCB0aGlzIHRyYWl0CiYjNDM7Ly8vIGlzIGltcGxlbWVudGVkIG9uIHR5cGVzIGZyb20gdGhlIEMgc2lkZS4KJiM0MzsvLy8KJiM0MzsvLy8gSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBbYE93bmVkJmx0O1NlbGYmZ3Q7YF0gcG9pbnRlciB0eXBlLgomIzQzOy8vLyAgLSBUaGlzIGlzIHVzZWZ1bCB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0byB0aWUgdGhlIGxpZmV0aW1lIG9mIGFuIG9iamVjdCByZWZlcmVuY2UgdG8gYW4gb3duZWQKJiM0MzsvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLgomIzQzOy8vLyAgLSBbYE93bmFibGVgXSB0eXBlcyBjYW4gZGVmaW5lIGN1c3RvbSBkcm9wIGxvZ2ljIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgb3duZWQgcmVmZXJlbmNlCiYjNDM7Ly8vICAgIG9mIHR5cGUgW2BPd25lZCZsdDtfJmd0O2BdIHBvaW50aW5nIHRvIHRoZSBvYmplY3QgaXMgZHJvcHBlZC4KJiM0MzsvLy8KJiM0MzsvLy8gTm90ZTogVGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudGluZywgYmVjYXVzZSBpdAomIzQzOy8vLyByZXByZXNlbnRzIGEgdW5pcXVlLCBvd25lZCByZWZlcmVuY2UuIElmIHJlZmVyZW5jZSBjb3VudGluZyAob24gdGhlIFJ1c3Qgc2lkZSkgaXMgcmVxdWlyZWQsCiYjNDM7Ly8vIFtgUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZC4gW2BPd25hYmxlUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpZiBjb252ZXJzaW9uCiYjNDM7Ly8vIGJldHdlZW4gdW5pcXVlIGFuZCBzaGFyZWQgKHJlZmVyZW5jZSBjb3VudGVkKSBvd25lcnNoaXAgaXMgbmVlZGVkLgomIzQzOy8vLwomIzQzOy8vLyAjIEV4YW1wbGVzCiYjNDM7Ly8vCiYjNDM7Ly8vIEEgbWluaW1hbCBleGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aCBbYE93bmVkYF0gbG9va3MgbGlrZQomIzQzOy8vLyB0aGlzOgomIzQzOy8vLwomIzQzOy8vLyBgYGAKJiM0MzsvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV0KJiM0MzsvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDsKJiM0MzsvLy8gIyB1c2UgY29yZTo6cHRyOjpOb25OdWxsOwomIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrOwomIzQzOy8vLyAjIHVzZSBrZXJuZWw6OmFsbG9jOjp7ZmxhZ3MsIGtib3g6OktCb3gsIEFsbG9jRXJyb3J9OwomIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGV9OwomIzQzOy8vLwomIzQzOy8vLyAvLyBMZXQmIzM5O3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLgomIzQzOy8vLyBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrISB7CiYjNDM7Ly8vICAgICAvLyBTQUZFVFk6IHdlIGNhbGwgYGluaXQoKWAgcmlnaHQgYmVsb3csIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLgomIzQzOy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXgmbHQ7dXNpemUmZ3Q7ID0gMDsKJiM0MzsvLy8gfQomIzQzOy8vLyAvLyBTQUZFVFk6IFdlIGNhbGwgYGluaXQoKWAgb25seSBvbmNlLCBoZXJlLgomIzQzOy8vLyB1bnNhZmUgeyBGT09fQUxMT0NfQ09VTlQuaW5pdCgpIH07CiYjNDM7Ly8vCiYjNDM7Ly8vIHN0cnVjdCBGb287CiYjNDM7Ly8vCiYjNDM7Ly8vIGltcGwgRm9vIHsKJiM0MzsvLy8gICAgIGZuIG5ldygpIC0mZ3Q7IFJlc3VsdCZsdDtPd25lZCZsdDtTZWxmJmd0OyZndDsgewomIzQzOy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzCiYjNDM7Ly8vICAgICAgICAgLy8gbm90IGFjdHVhbGx5IGEgQy1hbGxvY2F0ZWQgb2JqZWN0LgomIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoCiYjNDM7Ly8vICAgICAgICAgICAgIEZvbyB7fSwKJiM0MzsvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsCiYjNDM7Ly8vICAgICAgICAgKT87CiYjNDM7Ly8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTsKJiM0MzsvLy8gICAgICAgICAvLyBDb3VudCBuZXcgYWxsb2NhdGlvbgomIzQzOy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpICYjNDM7PSAxOwomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWToKJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuCiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC4KJiM0MzsvLy8gICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocmVzdWx0KSB9KQomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHsKJiM0MzsvLy8gICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3gmbHQ7U2VsZiZndDtgXSBpcyBzdGlsbCBhbGl2ZS4gV2UgY2FuIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSwgYXMKJiM0MzsvLy8gICAgICAgICAvLyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiYjNDM7Ly8vICAgICAgICAgZHJvcCh1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9KTsKJiM0MzsvLy8gICAgICAgICAvLyBDb3VudCByZWxlYXNlZCBhbGxvY2F0aW9uCiYjNDM7Ly8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgLT0gMTsKJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8gfQomIzQzOy8vLwomIzQzOy8vLyB7CiYjNDM7Ly8vICAgIGxldCBmb28gPSBGb286Om5ldygpPzsKJiM0MzsvLy8gICAgYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAxKTsKJiM0MzsvLy8gfQomIzQzOy8vLyAvLyBgZm9vYCBpcyBvdXQgb2Ygc2NvcGUgbm93LCBzbyB3ZSBleHBlY3Qgbm8gbGl2ZSBhbGxvY2F0aW9ucy4KJiM0MzsvLy8gYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAwKTsKJiM0MzsvLy8gIyBPazo6Jmx0OygpLCBFcnJvciZndDsoKCkpCiYjNDM7Ly8vIGBgYAomIzQzO3B1YiB0cmFpdCBPd25hYmxlIHsKJiM0MzsgICAgLy8vIFRlYXIgZG93biB0aGlzIGBPd25hYmxlYC4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBJbXBsZW1lbnRlcnMgb2YgYE93bmFibGVgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjbGVhbiB1cCB0aGUgdXNlIG9mIGBTZWxmYC4gVGhpcyBjYW4KJiM0MzsgICAgLy8vIGluY2x1ZGUgZnJlZWluZyB0aGUgdW5kZXJseWluZyBvYmplY3QuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gIyBTYWZldHkKJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhleSBoYXZlIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgdGhlIGBTZWxmYCBwb2ludGVkIHRvIGJ5IGB0aGlzYCwKJiM0MzsgICAgLy8vIGFuZCB0aGF0IHRoaXMgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLiBgdGhpc2AgbXVzdCBub3QgYmUgdXNlZAomIzQzOyAgICAvLy8gYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCwgYXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0IG1heSBoYXZlIGJlZW4gZnJlZWQuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gYHRoaXNgIGlzIHBpbm5lZCBhbmQgaW1wbGVtZW50ZXJzIG9mIHRoaXMgbWV0aG9kIG11c3Qgb2JzZXJ2ZSB0aGlzIGNvbnN0cmFpbnQuCiYjNDM7ICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspOwomIzQzO30KJiM0MzsKJiM0MzsvLy8gQSBtdXRhYmxlIHJlZmVyZW5jZSB0byBhbiBvd25lZCBgVGAuCiYjNDM7Ly8vCiYjNDM7Ly8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzCiYjNDM7Ly8vIGRyb3BwZWQuCiYjNDM7Ly8vCiYjNDM7Ly8vICMgSW52YXJpYW50cwomIzQzOy8vLwomIzQzOy8vLyAtIFVudGlsIGBUOjpyZWxlYXNlYCBpcyBjYWxsZWQsIHRoaXMgYE93bmVkJmx0O1QmZ3Q7YCBleGNsdXNpdmVseSBvd25zIHRoZSB1bmRlcmx5aW5nIGBUYC4KJiM0MzsvLy8gLSBUaGUgYFRgIHZhbHVlIGlzIHBpbm5lZC4KJiM0MztwdWIgc3RydWN0IE93bmVkJmx0O1Q6IE93bmFibGUmZ3Q7IHsKJiM0MzsgICAgcHRyOiBOb25OdWxsJmx0O1QmZ3Q7LAomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGUmZ3Q7IE93bmVkJmx0O1QmZ3Q7IHsKJiM0MzsgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BPd25lZGBdLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgb3ZlciBvd25lcnNoaXAgb2YgdGhlIHVuZGVybHlpbmcgb2JqZWN0LgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vICMgU2FmZXR5CiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0OgomIzQzOyAgICAvLy8gLSBgcHRyYCBwb2ludHMgdG8gYSB2YWxpZCBpbnN0YW5jZSBvZiBgVGAuCiYjNDM7ICAgIC8vLyAtIFVudGlsIGBUOjpyZWxlYXNlYCBpcyBjYWxsZWQsIHRoZSByZXR1cm5lZCBgT3duZWQmbHQ7VCZndDtgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGwmbHQ7VCZndDspIC0mZ3Q7IFNlbGYgewomIzQzOyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnQgd2Ugc2F0aXNmeSB0aGUgZmlyc3QgaW52YXJpYW50IG9mIGBTZWxmYC4KJiM0MzsgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uCiYjNDM7ICAgICAgICBTZWxmIHsgcHRyIH0KJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICAvLy8gQ29uc3VtZXMgdGhlIFtgT3duZWRgXSwgcmV0dXJuaW5nIGEgcmF3IHBvaW50ZXIuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGUKJiM0MzsgICAgLy8vIHVuZGVybHlpbmcgYFRgIGlzIHdpdGggdGhlIGNhbGxlci4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtJmd0OyBOb25OdWxsJmx0O1QmZ3Q7IHsKJiM0MzsgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHIKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkJmx0O1QmZ3Q7YC4KJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHB1YiBmbiBhc19waW5fbXV0KCZhbXA7bXV0IHNlbGYpIC0mZ3Q7IFBpbiZsdDsmYW1wO211dCBUJmd0OyB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCwgYW5kIHRoYXQgd2UgY2FuIHNhZmVseQomIzQzOyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuCiYjNDM7ICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9OwomIzQzOwomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSB0eXBlIGludmFyaWFudCBgVGAgaXMgcGlubmVkLgomIzQzOyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9CiYjNDM7ICAgIH0KJiM0Mzt9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYW4gW2BPd25lZCZsdDtUJmd0O2BdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU2VuZGBdLAomIzQzOy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BPd25lZCZsdDtUJmd0O2BdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFRgLgomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IE93bmFibGUgJiM0MzsgU2VuZCZndDsgU2VuZCBmb3IgT3duZWQmbHQ7VCZndDsge30KJiM0MzsKJiM0MzsvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBbYCZhbXA7T3duZWQmbHQ7VCZndDtgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFN5bmNgXSwKJiM0MzsvLyBiZWNhdXNlIG9mIHRoZSBvd25lcnNoaXAgaW52YXJpYW50LiBTZW5kaW5nIGFuIFtgJmFtcDtPd25lZCZsdDtUJmd0O2BdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYCZhbXA7VGAuCiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogT3duYWJsZSAmIzQzOyBTeW5jJmd0OyBTeW5jIGZvciBPd25lZCZsdDtUJmd0OyB7fQomIzQzOwomIzQzO2ltcGwmbHQ7VDogT3duYWJsZSZndDsgRGVyZWYgZm9yIE93bmVkJmx0O1QmZ3Q7IHsKJiM0MzsgICAgdHlwZSBUYXJnZXQgPSBUOwomIzQzOwomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgZm4gZGVyZWYoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO1NlbGY6OlRhcmdldCB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZC4KJiM0MzsgICAgICAgIHVuc2FmZSB7IHNlbGYucHRyLmFzX3JlZigpIH0KJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGUgJiM0MzsgVW5waW4mZ3Q7IERlcmVmTXV0IGZvciBPd25lZCZsdDtUJmd0OyB7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiBkZXJlZl9tdXQoJmFtcDttdXQgc2VsZikgLSZndDsgJmFtcDttdXQgU2VsZjo6VGFyZ2V0IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5CiYjNDM7ICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC4KJiM0MzsgICAgICAgIHVuc2FmZSB7IHNlbGYucHRyLmFzX211dCgpIH0KJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGUmZ3Q7IERyb3AgZm9yIE93bmVkJmx0O1QmZ3Q7IHsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIGZuIGRyb3AoJmFtcDttdXQgc2VsZikgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBleGlzdGVuY2Ugb2YgYCZhbXA7bXV0IHNlbGZgIHdlIGV4Y2x1c2l2ZWx5IG93biBgc2VsZmAgYW5kIHRoZSB1bmRlcmx5aW5nIGBUYC4gQXMKJiM0MzsgICAgICAgIC8vIHdlIGFyZSBkcm9wcGluZyBgc2VsZmAsIHdlIGNhbiB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIGBUYCB0byB0aGUgYHJlbGVhc2VgIG1ldGhvZC4KJiM0MzsgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07CiYjNDM7ICAgIH0KJiM0Mzt9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBXZSBkZXJpdmUgdGhlIHBvaW50ZXIgdG8gYFRgIGZyb20gYSB2YWxpZCBgVGAsIHNvIHRoZSByZXR1cm5lZAomIzQzOy8vIHBvaW50ZXIgc2F0aXNmeSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIGBUYC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPd25hYmxlJmd0OyBGb3JlaWduT3duYWJsZSBmb3IgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICBjb25zdCBGT1JFSUdOX0FMSUdOOiB1c2l6ZSA9IGNvcmU6Om1lbTo6YWxpZ25fb2Y6OiZsdDtUJmd0OygpOwomIzQzOwomIzQzOyAgICB0eXBlIEJvcnJvd2VkJmx0OyYjMzk7YSZndDsKJiM0MzsgICAgICAgID0gJmFtcDsmIzM5O2EgVAomIzQzOyAgICB3aGVyZQomIzQzOyAgICAgICAgU2VsZjogJiMzOTthOwomIzQzOyAgICB0eXBlIEJvcnJvd2VkTXV0Jmx0OyYjMzk7YSZndDsKJiM0MzsgICAgICAgID0gUGluJmx0OyZhbXA7JiMzOTthIG11dCBUJmd0OwomIzQzOyAgICB3aGVyZQomIzQzOyAgICAgICAgU2VsZjogJiMzOTthOwomIzQzOwomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgZm4gaW50b19mb3JlaWduKHNlbGYpIC0mZ3Q7ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCB7CiYjNDM7ICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpCiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHVuc2FmZSBmbiBmcm9tX2ZvcmVpZ24ocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC0mZ3Q7IFNlbGYgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIGNhbWUgZnJvbSBgaW50b19mb3JlaWduYCBhbmQgY2Fubm90IGJlIG51bGwuCiYjNDM7ICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwdHIuY2FzdCgpKSB9OwomIzQzOwomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IGNvbnRyYWN0LCBgcHRyYCB3YXMgcmV0dXJuZWQgYnkgYGludG9fZm9yZWlnbmAsIHdoaWNoIGdhdmUKJiM0MzsgICAgICAgIC8vIHVwIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgYSB2YWxpZCwgcGlubmVkIGBUYDsgd2UgcmV0YWtlIHRoYXQgb3duZXJzaGlwIGhlcmUuCiYjNDM7ICAgICAgICB1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocHRyKSB9CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHVuc2FmZSBmbiBib3Jyb3cmbHQ7JiMzOTthJmd0OyhwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLSZndDsgU2VsZjo6Qm9ycm93ZWQmbHQ7JiMzOTthJmd0OyB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYQomIzQzOyAgICAgICAgLy8gcmVmZXJlbmNlIGZvciBgJiMzOTthYC4KJiM0MzsgICAgICAgIHVuc2FmZSB7ICZhbXA7KnB0ci5jYXN0KCkgfQomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICB1bnNhZmUgZm4gYm9ycm93X211dCZsdDsmIzM5O2EmZ3Q7KHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtJmd0OyBTZWxmOjpCb3Jyb3dlZE11dCZsdDsmIzM5O2EmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhCiYjNDM7ICAgICAgICAvLyB1bmlxdWUgcmVmZXJlbmNlIGZvciBgJiMzOTthYC4KJiM0MzsgICAgICAgIGxldCBpbm5lciA9IHVuc2FmZSB7ICZhbXA7bXV0ICpwdHIuY2FzdCgpIH07CiYjNDM7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFdlIG5ldmVyIG1vdmUgb3V0IG9mIGlubmVyLCBhbmQgd2UgZG8gbm90IGhhbmQgb3V0IG11dGFibGUKJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZXMgd2hlbiBgVDogIVVucGluYC4KJiM0MzsgICAgICAgIHVuc2FmZSB7IFBpbjo6bmV3X3VuY2hlY2tlZChpbm5lcikgfQomIzQzOyAgICB9CiYjNDM7fQomIzQzOwomIzQzOy8vLyBBIHRyYWl0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHdyYXBwZWQgaW4gZWl0aGVyIG9uZSBvZiB0aGUgcmVmZXJlbmNlIHR5cGVzIFtgT3duZWRgXSBhbmQKJiM0MzsvLy8gW2BBUmVmYF0uCiYjNDM7Ly8vCiYjNDM7Ly8vICMgRXhhbXBsZXMKJiM0MzsvLy8KJiM0MzsvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlUmVmQ291bnRlZGBdLCBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGgKJiM0MzsvLy8gW2BBUmVmYF0gYW5kIFtgT3duZWRgXSBsb29rcyBsaWtlIHRoaXM6CiYjNDM7Ly8vCiYjNDM7Ly8vIGBgYAomIzQzOy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXQomIzQzOy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsOwomIzQzOy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9OwomIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGUsIE93bmFibGVSZWZDb3VudGVkfTsKJiM0MzsvLy8KJiM0MzsvLy8gLy8gQW4gaW50ZXJuYWxseSByZWZjb3VudGVkIHN0cnVjdCBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy4KJiM0MzsvLy8gLy8KJiM0MzsvLy8gLy8gIyBJbnZhcmlhbnRzCiYjNDM7Ly8vIC8vCiYjNDM7Ly8vIC8vIC0gYHJlZmNvdW50YCBpcyBhbHdheXMgbm9uLXplcm8gZm9yIGEgdmFsaWQgb2JqZWN0LgomIzQzOy8vLyAvLyAtIGByZWZjb3VudGAgaXMgJmd0OzEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC4KJiM0MzsvLy8gLy8KJiM0MzsvLy8gc3RydWN0IEZvbyB7CiYjNDM7Ly8vICAgICByZWZjb3VudDogQ2VsbCZsdDt1c2l6ZSZndDssCiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBGb28gewomIzQzOy8vLyAgICAgZm4gbmV3KCkgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1NlbGYmZ3Q7Jmd0OyB7CiYjNDM7Ly8vICAgICAgICAgLy8gV2UgYXJlIGp1c3QgdXNpbmcgYSBgS0JveGAgaGVyZSB0byBoYW5kbGUgdGhlIGFjdHVhbCBhbGxvY2F0aW9uLCBhcyBvdXIgYEZvb2AgaXMKJiM0MzsvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuCiYjNDM7Ly8vICAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBpbml0aWFsaXplIGByZWZjb3VudGAgdG8gMSwgc2F0aXNmeWluZyB0aGUgaW52YXJpYW50cy4KJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6bmV3KAomIzQzOy8vLyAgICAgICAgICAgICBGb28gewomIzQzOy8vLyAgICAgICAgICAgICAgICAgcmVmY291bnQ6IENlbGw6Om5ldygxKSwKJiM0MzsvLy8gICAgICAgICAgICAgfSwKJiM0MzsvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsCiYjNDM7Ly8vICAgICAgICAgKT87CiYjNDM7Ly8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6CiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UganVzdCBhbGxvY2F0ZWQgdGhlIGBTZWxmYCwgdGh1cyBpdCBpcyB2YWxpZCBhbmQgd2Ugb3duIGl0LgomIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuCiYjNDM7Ly8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSkKJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8gfQomIzQzOy8vLwomIzQzOy8vLyAvLyBTQUZFVFk6IFdlIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGVhY2ggdGltZSB0aGUgcmVzcGVjdGl2ZSBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIG9ubHkgZnJlZQomIzQzOy8vLyAvLyB0aGUgYEZvb2Agd2hlbiB0aGUgcmVmY291bnQgcmVhY2hlcyB6ZXJvLgomIzQzOy8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBGb28gewomIzQzOy8vLyAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKJiM0MzsvLy8gICAgICAgICBzZWxmLnJlZmNvdW50LnJlcGxhY2Uoc2VsZi5yZWZjb3VudC5nZXQoKSAmIzQzOyAxKTsKJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8KJiM0MzsvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IEJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLAomIzQzOy8vLyAgICAgICAgIC8vIGltcGx5aW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB2YWxpZC4KJiM0MzsvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyAmYW1wO3RoaXMuYXNfcmVmKCkucmVmY291bnQgfTsKJiM0MzsvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxOwomIzQzOy8vLyAgICAgICAgIGlmIG5ld19yZWZjb3VudCA9PSAwIHsKJiM0MzsvLy8gICAgICAgICAgICAgLy8gVGhlIGBGb29gIHdpbGwgYmUgZHJvcHBlZCB3aGVuIGBLQm94YCBnb2VzIG91dCBvZiBzY29wZS4KJiM0MzsvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94Jmx0O0ZvbyZndDtgXSBpcyBzdGlsbCBhbGl2ZSBhcyB0aGUgb2xkIHJlZmNvdW50IGlzIDEuIFdlIGNhbiBwYXNzCiYjNDM7Ly8vICAgICAgICAgICAgIC8vIG93bmVyc2hpcCB0byB0aGUgW2BLQm94YF0gYXMgYnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLAomIzQzOy8vLyAgICAgICAgICAgICAvLyB0aGUgYFNlbGZgIHdpbGwgbm8gbG9uZ2VyIGJlIHVzZWQgYnkgdGhlIGNhbGxlci4KJiM0MzsvLy8gICAgICAgICAgICAgdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfTsKJiM0MzsvLy8gICAgICAgICB9IGVsc2UgewomIzQzOy8vLyAgICAgICAgICAgICByZWZjb3VudC5yZXBsYWNlKG5ld19yZWZjb3VudCk7CiYjNDM7Ly8vICAgICAgICAgfQomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIGltcGwgT3duYWJsZVJlZkNvdW50ZWQgZm9yIEZvbyB7CiYjNDM7Ly8vICAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZiZsdDtTZWxmJmd0OykgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1NlbGYmZ3Q7LCBBUmVmJmx0O1NlbGYmZ3Q7Jmd0OyB7CiYjNDM7Ly8vICAgICAgICAgaWYgdGhpcy5yZWZjb3VudC5nZXQoKSA9PSAxIHsKJiM0MzsvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgYEZvb2AgaXMgc3RpbGwgYWxpdmUgYW5kIGhhcyBubyBvdGhlciBSdXN0IHJlZmVyZW5jZXMgYXMgdGhlIHJlZmNvdW50CiYjNDM7Ly8vICAgICAgICAgICAgIC8vIGlzIDEuCiYjNDM7Ly8vICAgICAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhBUmVmOjppbnRvX3Jhdyh0aGlzKSkgfSkKJiM0MzsvLy8gICAgICAgICB9IGVsc2UgewomIzQzOy8vLyAgICAgICAgICAgICBFcnIodGhpcykKJiM0MzsvLy8gICAgICAgICB9CiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vCiYjNDM7Ly8vICAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZCZsdDtTZWxmJmd0OykgLSZndDsgQVJlZiZsdDtTZWxmJmd0OyB7CiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOiBBbiBgT3duZWQmbHQ7Rm9vJmd0O2AgaG9sZHMgdGhlIHVuaXF1ZSByZWZlcmVuY2UgKHJlZmNvdW50IDEpLCB3aGljaCB3ZSB0cmFuc2ZlciB0bwomIzQzOy8vLyAgICAgICAgIC8vIHRoZSBuZXcgYEFSZWZgLgomIzQzOy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfQomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHsKJiM0MzsvLy8gICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IFVzaW5nIGBkZWNfcmVmKClgIGZyb20gW2BSZWZDb3VudGVkYF0gdG8gcmVsZWFzZSBpcyBva2F5LCBhcyB0aGUgcmVmY291bnQgaXMKJiM0MzsvLy8gICAgICAgICAvLyBhbHdheXMgMSBmb3IgYW4gW2BPd25lZCZsdDtGb28mZ3Q7YF0uCiYjNDM7Ly8vICAgICAgICAgdW5zYWZlIHsgRm9vOjpkZWNfcmVmKHRoaXMpIH07CiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gbGV0IGZvbyA9IEZvbzo6bmV3KCk/OwomIzQzOy8vLyBsZXQgZm9vID0gQVJlZjo6ZnJvbShmb28pOwomIzQzOy8vLyB7CiYjNDM7Ly8vICAgICBsZXQgYmFyID0gZm9vLmNsb25lKCk7CiYjNDM7Ly8vICAgICBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShiYXIpLmlzX2VycigpKTsKJiM0MzsvLy8gfQomIzQzOy8vLyBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShmb28pLmlzX29rKCkpOwomIzQzOy8vLyAjIE9rOjombHQ7KCksIEVycm9yJmd0OygoKSkKJiM0MzsvLy8gYGBgCiYjNDM7cHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICYjNDM7IE93bmFibGUgJiM0MzsgU2l6ZWQgewomIzQzOyAgICAvLy8gQ2hlY2tzIGlmIHRoZSBbYEFSZWZgXSBpcyB1bmlxdWUgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIFtgT3duZWRgXSBpZiB0aGF0IGlzIHRoZSBjYXNlLgomIzQzOyAgICAvLy8gT3RoZXJ3aXNlIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuCiYjNDM7ICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmJmx0O1NlbGYmZ3Q7KSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7U2VsZiZndDssIEFSZWYmbHQ7U2VsZiZndDsmZ3Q7OwomIzQzOwomIzQzOyAgICAvLy8gQ29udmVydHMgdGhlIFtgT3duZWRgXSBpbnRvIGFuIFtgQVJlZmBdLgomIzQzOyAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZCZsdDtTZWxmJmd0OykgLSZndDsgQVJlZiZsdDtTZWxmJmd0OzsKJiM0Mzt9CiYjNDM7CiYjNDM7aW1wbCZsdDtUOiBPd25hYmxlUmVmQ291bnRlZCZndDsgVHJ5RnJvbSZsdDtBUmVmJmx0O1QmZ3Q7Jmd0OyBmb3IgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICB0eXBlIEVycm9yID0gQVJlZiZsdDtUJmd0OzsKJiM0MzsgICAgLy8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIFtgQVJlZmBdIHRvIGFuIFtgT3duZWRgXSBieSBjYWxsaW5nCiYjNDM7ICAgIC8vLyBbYHRyeV9mcm9tX3NoYXJlZCgpYF0oT3duYWJsZVJlZkNvdW50ZWQ6OnRyeV9mcm9tX3NoYXJlZCkuIEluIGNhc2UgdGhlIFtgQVJlZmBdIGlzIG5vdAomIzQzOyAgICAvLy8gdW5pcXVlLCBpdCByZXR1cm5zIGFnYWluIGFuIFtgQVJlZmBdIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0LgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgZm4gdHJ5X2Zyb20oYjogQVJlZiZsdDtUJmd0OykgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1QmZ3Q7LCBTZWxmOjpFcnJvciZndDsgewomIzQzOyAgICAgICAgVDo6dHJ5X2Zyb21fc2hhcmVkKGIpCiYjNDM7ICAgIH0KJiM0Mzt9CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wYWdlLnJzIGIvcnVzdC9rZXJuZWwvcGFnZS5ycwppbmRleCAxYzA3OTZlYTIyOWYwLi4zMmRkMDMwYzgzMTU5IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9wYWdlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BhZ2UucnMKQEAgLTEyLDE2ICYjNDM7MTIsMTYgQEAKICAgICAgICAgY29kZTo6KiwKICAgICAgICAgUmVzdWx0LCAvLwogICAgIH0sCiYjNDM7ICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBPcGFxdWUsCiYjNDM7ICAgICAgICBPd25hYmxlLAomIzQzOyAgICAgICAgT3duZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLCAvLwogfTsKLXVzZSBjb3JlOjp7Ci0gICAgbWFya2VyOjpQaGFudG9tRGF0YSwKLSAgICBtZW06Ok1hbnVhbGx5RHJvcCwKLSAgICBvcHM6OkRlcmVmLAotICAgIHB0cjo6ewotICAgICAgICBzZWxmLAotICAgICAgICBOb25OdWxsLCAvLwotICAgIH0sIC8vCiYjNDM7dXNlIGNvcmU6OnB0cjo6ewomIzQzOyAgICBzZWxmLAomIzQzOyAgICBOb25OdWxsLCAvLwogfTsKIAogLy8vIEEgYml0d2lzZSBzaGlmdCBmb3IgdGhlIHBhZ2Ugc2l6ZS4KQEAgLTY1LDkzICYjNDM7NjUsMjkgQEAgcHViIGNvbnN0IGZuIHBhZ2VfYWxpZ24oYWRkcjogdXNpemUpIC0mZ3Q7IE9wdGlvbiZsdDt1c2l6ZSZndDsgewogICAgIFNvbWUoc3VtICZhbXA7IFBBR0VfTUFTSykKIH0KIAotLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS4KLS8vLwotLy8vIFRoaXMgdHlwZSBwcm92aWRlcyBhIGJvcnJvd2VkIHZlcnNpb24gb2YgYSBbYFBhZ2VgXSB0aGF0IGlzIG93bmVkIGJ5IHNvbWUgb3RoZXIgZW50aXR5LCBlLmcuIGEKLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uCi0vLy8KLS8vLyAjIEV4YW1wbGUKLS8vLwotLy8vIGBgYAotLy8vICMgdXNlIGtlcm5lbDo6e2JpbmRpbmdzLCBwcmVsdWRlOjoqfTsKLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9OwotLy8vICMgdXNlIGNvcmU6OnttZW06Ok1heWJlVW5pbml0LCBwdHIsIHB0cjo6Tm9uTnVsbCB9OwotLy8vCi0vLy8gZm4gYm9ycm93X3BhZ2UmbHQ7JiMzOTthJmd0Oyh2Ym94OiAmYW1wOyYjMzk7YSBtdXQgVkJveCZsdDtNYXliZVVuaW5pdCZsdDtbdTg7IFBBR0VfU0laRV0mZ3Q7Jmd0OykgLSZndDsgQm9ycm93ZWRQYWdlJmx0OyYjMzk7YSZndDsgewotLy8vICAgICBsZXQgcHRyID0gcHRyOjpmcm9tX3JlZigmYW1wOyoqdmJveCk7Ci0vLy8KLS8vLyAgICAgLy8gU0FGRVRZOiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS4KLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07Ci0vLy8KLS8vLyAgICAgLy8gU0FGRVRZOiBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWQKLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LgotLy8vICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTsKLS8vLwotLy8vICAgICAvLyBTQUZFVFk6Ci0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC4KLS8vLyAgICAgLy8gLSBgc2VsZi4wYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBgc2VsZmAuCi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfQotLy8vIH0KLS8vLwotLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6OiZsdDtbdTg7IFBBR0VfU0laRV0mZ3Q7OjpuZXdfdW5pbml0KEdGUF9LRVJORUwpPzsKLS8vLyBsZXQgcGFnZSA9IGJvcnJvd19wYWdlKCZhbXA7bXV0IHZib3gpOwotLy8vCi0vLy8gLy8gU0FGRVRZOiBUaGVyZSBpcyBubyBjb25jdXJyZW50IHJlYWQgb3Igd3JpdGUgdG8gdGhpcyBwYWdlLgotLy8vIHVuc2FmZSB7IHBhZ2UuZmlsbF96ZXJvX3JhdygwLCBQQUdFX1NJWkUpPyB9OwotLy8vICMgT2s6OiZsdDsoKSwgRXJyb3ImZ3Q7KCgpKQotLy8vIGBgYAotLy8vCi0vLy8gIyBJbnZhcmlhbnRzCi0vLy8KLS8vLyBUaGUgYm9ycm93ZWQgdW5kZXJseWluZyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBgJiMzOTthYC4KLS8vLwotLy8vIFtgVkJveGBdOiBrZXJuZWw6OmFsbG9jOjpWQm94Ci0vLy8gW2BWbWFsbG9jYF06IGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvYwotcHViIHN0cnVjdCBCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OyhNYW51YWxseURyb3AmbHQ7UGFnZSZndDssIFBoYW50b21EYXRhJmx0OyZhbXA7JiMzOTthIFBhZ2UmZ3Q7KTsKLQotaW1wbCZsdDsmIzM5O2EmZ3Q7IEJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7IHsKLSAgICAvLy8gQ29uc3RydWN0cyBhIFtgQm9ycm93ZWRQYWdlYF0gZnJvbSBhIHJhdyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC4KLSAgICAvLy8KLSAgICAvLy8gIyBTYWZldHkKLSAgICAvLy8KLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC4KLSAgICAvLy8gLSBgcHRyYCBtdXN0IHJlbWFpbiB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBgJiMzOTthYC4KLSAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbCZsdDtiaW5kaW5nczo6cGFnZSZndDspIC0mZ3Q7IFNlbGYgewotICAgICAgICBsZXQgcGFnZSA9IFBhZ2UgeyBwYWdlOiBwdHIgfTsKLQotICAgICAgICAvLyBJTlZBUklBTlQ6IFRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIGd1YXJhbnRlZSB0aGF0IGBwdHJgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lCi0gICAgICAgIC8vIGAmIzM5O2FgLgotICAgICAgICBTZWxmKE1hbnVhbGx5RHJvcDo6bmV3KHBhZ2UpLCBQaGFudG9tRGF0YSkKLSAgICB9Ci19Ci0KLWltcGwmbHQ7JiMzOTthJmd0OyBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlJmx0OyYjMzk7YSZndDsgewotICAgIHR5cGUgVGFyZ2V0ID0gUGFnZTsKLQotICAgIGZuIGRlcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtTZWxmOjpUYXJnZXQgewotICAgICAgICAmYW1wO3NlbGYuMAotICAgIH0KLX0KLQotLy8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIGltcGxlbWVudGF0aW9uIG9mCi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS4KJiM0MzsvLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcywgc3VjaCBhcwomIzQzOy8vLyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS4KIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHsKICAgICAvLy8gVGhlIFtgSXRlcmF0b3JgXSB0eXBlLCBlLmcuIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLgotICAgIHR5cGUgSXRlciZsdDsmIzM5O2EmZ3Q7OiBJdGVyYXRvciZsdDtJdGVtID0gQm9ycm93ZWRQYWdlJmx0OyYjMzk7YSZndDsmZ3Q7CiYjNDM7ICAgIHR5cGUgSXRlciZsdDsmIzM5O2EmZ3Q7OiBJdGVyYXRvciZsdDtJdGVtID0gJmFtcDsmIzM5O2EgUGFnZSZndDsKICAgICB3aGVyZQogICAgICAgICBTZWxmOiAmIzM5O2E7CiAKLSAgICAvLy8gUmV0dXJucyBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcyBvdmVyIGFsbCBwYWdlcyBvd25lZCBieSBgc2VsZmAuCiYjNDM7ICAgIC8vLyBSZXR1cm5zIGFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXSByZWZlcmVuY2VzIG92ZXIgYWxsIHBhZ2VzIG93bmVkIGJ5IGBzZWxmYC4KICAgICBmbiBwYWdlX2l0ZXIoJmFtcDttdXQgc2VsZikgLSZndDsgU2VsZjo6SXRlciZsdDsmIzM5O18mZ3Q7OwogfQogCi0vLy8gQSBwb2ludGVyIHRvIGEgcGFnZSB0aGF0IG93bnMgdGhlIHBhZ2UgYWxsb2NhdGlvbi4KJiM0MzsvLy8gQSBgc3RydWN0IHBhZ2VgLgomIzQzOy8vLwomIzQzOy8vLyBBIGBQYWdlYCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEgc2hhcmVkIHJlZmVyZW5jZSBvciB0aHJvdWdoIGFuIG93bmluZyBbYE93bmVkJmx0O1BhZ2UmZ3Q7YF07IHRoZSBsYXR0ZXIKJiM0MzsvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuCiAvLy8KIC8vLyAjIEludmFyaWFudHMKIC8vLwotLy8vIFRoZSBwb2ludGVyIGlzIHZhbGlkLCBhbmQgaGFzIG93bmVyc2hpcCBvdmVyIHRoZSBwYWdlLgomIzQzOy8vLyBUaGUgYFBhZ2VgIGlzIGJhY2tlZCBieSBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAuCiYjNDM7I1tyZXByKHRyYW5zcGFyZW50KV0KIHB1YiBzdHJ1Y3QgUGFnZSB7Ci0gICAgcGFnZTogTm9uTnVsbCZsdDtiaW5kaW5nczo6cGFnZSZndDssCiYjNDM7ICAgIHBhZ2U6IE9wYXF1ZSZsdDtiaW5kaW5nczo6cGFnZSZndDssCiB9CiAKIC8vIFNBRkVUWTogUGFnZXMgaGF2ZSBubyBsb2dpYyB0aGF0IHJlbGllcyBvbiB0aGVtIHN0YXlpbmcgb24gYSBnaXZlbiB0aHJlYWQsIHNvIG1vdmluZyB0aGVtIGFjcm9zcwpAQCAtMTg1LDE5ICYjNDM7MTIxLDIwIEBAIGltcGwgUGFnZSB7CiAgICAgLy8vICMgT2s6OiZsdDsoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvciZndDsoKCkpCiAgICAgLy8vIGBgYAogICAgICNbaW5saW5lXQotICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLSZndDsgUmVzdWx0Jmx0O1NlbGYsIEFsbG9jRXJyb3ImZ3Q7IHsKJiM0MzsgICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7U2VsZiZndDssIEFsbG9jRXJyb3ImZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBnZnBfZmxhZ3NgLCB0aGlzIGNhbGwgbWF5IHNsZWVwLiBPdGhlciB0aGFuIHRoYXQsIGl0CiAgICAgICAgIC8vIGlzIGFsd2F5cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2QuCiAgICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OmFsbG9jX3BhZ2VzKGZsYWdzLmFzX3JhdygpLCAwKSB9OwogICAgICAgICBsZXQgcGFnZSA9IE5vbk51bGw6Om5ldyhwYWdlKS5va19vcihBbGxvY0Vycm9yKT87Ci0gICAgICAgIC8vIElOVkFSSUFOVDogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseQotICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgUGFnZWAgb2JqZWN0LgotICAgICAgICBPayhTZWxmIHsgcGFnZSB9KQomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5CiYjNDM7ICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgT3duZWQmbHQ7UGFnZSZndDtgIG9iamVjdC4KJiM0MzsgICAgICAgIC8vIFNpbmNlIGBQYWdlYCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHBvaW50ZXIgZGlyZWN0bHkuCiYjNDM7ICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocGFnZS5jYXN0KCkpIH0pCiAgICAgfQogCiAgICAgLy8vIFJldHVybnMgYSByYXcgcG9pbnRlciB0byB0aGUgcGFnZS4KICAgICBwdWIgZm4gYXNfcHRyKCZhbXA7c2VsZikgLSZndDsgKm11dCBiaW5kaW5nczo6cGFnZSB7Ci0gICAgICAgIHNlbGYucGFnZS5hc19wdHIoKQomIzQzOyAgICAgICAgc2VsZi5wYWdlLmdldCgpCiAgICAgfQogCiAgICAgLy8vIEdldCB0aGUgbm9kZSBpZCBjb250YWluaW5nIHRoaXMgcGFnZS4KQEAgLTIwNyw2ICYjNDM7MTQ0LDIwIEBAIHB1YiBmbiBuaWQoJmFtcDtzZWxmKSAtJmd0OyBpMzIgewogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGFnZV90b19uaWQoc2VsZi5hc19wdHIoKSkgfQogICAgIH0KIAomIzQzOyAgICAvLy8gQ3JlYXRlIGEgYCZhbXA7UGFnZWAgZnJvbSBhIHJhdyBgc3RydWN0IHBhZ2VgIHBvaW50ZXIuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gIyBTYWZldHkKJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBgcHRyYCBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkIHJlZmVyZW5jZSB3aXRoIGEgbGlmZXRpbWUgb2YgYCYjMzk7YWAuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3Jmx0OyYjMzk7YSZndDsocHRyOiAqY29uc3QgYmluZGluZ3M6OnBhZ2UpIC0mZ3Q7ICZhbXA7JiMzOTthIFNlbGYgewomIzQzOyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgcmVmZXJzIHRvIGEgdmFsaWQgYHN0cnVjdCBwYWdlYCwgc28KJiM0MzsgICAgICAgIC8vIHRoZSByZXR1cm5lZCByZWZlcmVuY2UgdXBob2xkcyB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFBhZ2VgLgomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyBub3QgbnVsbCBhbmQgaXMgY29udmVydGlibGUgdG8gYSBzaGFyZWQKJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZS4KJiM0MzsgICAgICAgIHVuc2FmZSB7ICZhbXA7KnB0ci5jYXN0KCkgfQomIzQzOyAgICB9CiYjNDM7CiAgICAgLy8vIFJ1bnMgYSBwaWVjZSBvZiBjb2RlIHdpdGggdGhpcyBwYWdlIG1hcHBlZCB0byBhbiBhZGRyZXNzLgogICAgIC8vLwogICAgIC8vLyBUaGUgcGFnZSBpcyB1bm1hcHBlZCB3aGVuIHRoaXMgY2FsbCByZXR1cm5zLgpAQCAtMzczLDEwICYjNDM7MzI0LDExIEBAIHB1YiB1bnNhZmUgZm4gY29weV9mcm9tX3VzZXJfc2xpY2VfcmF3KAogICAgIH0KIH0KIAotaW1wbCBEcm9wIGZvciBQYWdlIHsKJiM0MztpbXBsIE93bmFibGUgZm9yIFBhZ2UgewogICAgICNbaW5saW5lXQotICAgIGZuIGRyb3AoJmFtcDttdXQgc2VsZikgewotICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZSBpdC4KLSAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyhzZWxmLnBhZ2UuYXNfcHRyKCksIDApIH07CiYjNDM7ICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZQomIzQzOyAgICAgICAgLy8gaXQuIFNpbmNlIFBhZ2UgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSByYXcgcG9pbnRlciBkaXJlY3RseS4KJiM0MzsgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXModGhpcy5hc19wdHIoKS5jYXN0KCksIDApIH07CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzCmluZGV4IDUwNzFjYWU2NTQzZmQuLmVhOWVmOTljZWNiMDcgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BjaS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wY2kucnMKQEAgLTE5LDYgJiM0MzsxOSwxMCBAQAogICAgIH0sCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OkNTdHIsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsCiAgICAgVGhpc01vZHVsZSwgLy8KIH07CkBAIC00ODEsNyAmIzQzOzQ4NSw3IEBAIHVuc2FmZSBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBkZXZpY2U6OkFzQnVzRGV2aWNlJmx0O0N0eCZndDsgZm9yIERldmljZSZsdDtDdHgmZ3Q7CiBpbXBsJmx0OyYjMzk7YSZndDsgY3JhdGU6OmRtYTo6RGV2aWNlJmx0OyYjMzk7YSZndDsgZm9yIERldmljZSZsdDtkZXZpY2U6OkNvcmUmbHQ7JiMzOTthJmd0OyZndDsge30KIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLgogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGNpX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTsKQEAgLTQ5Myw2ICYjNDM7NDk3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzCmluZGV4IDk3OWE5NzE4ZjE1M2QuLjA2N2Y2OGI5OWU4YzUgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycwpAQCAtNyw3ICYjNDM7NywxNCBAQAogLy8hIEMgaGVhZGVyOiBbYGluY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaCkgYW5kCiAvLyEgW2BpbmNsdWRlL2xpbnV4L3BpZC5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZC5oKQogCi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdHlwZXM6Ok9wYXF1ZX07CiYjNDM7dXNlIGNyYXRlOjp7CiYjNDM7ICAgIGJpbmRpbmdzLAomIzQzOyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE9wYXF1ZSwgLy8KJiM0MzsgICAgfSwgLy8KJiM0Mzt9OwogdXNlIGNvcmU6OnB0cjsKIAogLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBwaWRfbmFtZXNwYWNlYC4gVGhyZWFkIHNhZmUuCkBAIC00MSw3ICYjNDM7NDgsNyBAQCBwdWIgdW5zYWZlIGZuIGZyb21fcHRyJmx0OyYjMzk7YSZndDsocHRyOiAqY29uc3QgYmluZGluZ3M6OnBpZF9uYW1lc3BhY2UpIC0mZ3Q7ICZhbXA7JiMzOTthIFNlbGYgewogfQogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgUGlkTmFtZXNwYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2UgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTU1LDYgJiM0Mzs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtQaWROYW1lc3BhY2UmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtQaWROYW1lc3BhY2UmZ3Q7YCBmcm9tCiYjNDM7Ly8gYSBgJmFtcDtQaWROYW1lc3BhY2VgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fQomIzQzOwogLy8gU0FGRVRZOgogLy8gLSBgUGlkTmFtZXNwYWNlOjpkZWNfcmVmYCBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KIC8vIC0gSXQgaXMgb2theSB0byBzZW5kIG93bmVyc2hpcCBvZiBgUGlkTmFtZXNwYWNlYCBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzCmluZGV4IGQ0MTU1NWE0YjMxZDIuLmE0ZGRhYTFjYzNhNDAgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzCkBAIC0yNCw2ICYjNDM7MjQsMTAgQEAKICAgICB9LAogICAgIG9mLAogICAgIHByZWx1ZGU6OiosCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsCiAgICAgVGhpc01vZHVsZSwgLy8KIH07CkBAIC01MTksNyAmIzQzOzUyMyw3IEBAIHB1YiBmbiBvcHRpb25hbF9pcnFfYnlfbmFtZSgmYW1wO3NlbGYsIG5hbWU6ICZhbXA7Q1N0cikgLSZndDsgUmVzdWx0Jmx0O0lycVJlcXVlc3QmbHQ7JiMzOTtfJmd0OyZndDsgewogaW1wbCZsdDsmIzM5O2EmZ3Q7IGNyYXRlOjpkbWE6OkRldmljZSZsdDsmIzM5O2EmZ3Q7IGZvciBEZXZpY2UmbHQ7ZGV2aWNlOjpDb3JlJmx0OyYjMzk7YSZndDsmZ3Q7IHt9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTsKQEAgLTUzMSw2ICYjNDM7NTM1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3B3bS5ycyBiL3J1c3Qva2VybmVsL3B3bS5ycwppbmRleCA2YzlkNjY3MDA5ZWY3Li4yZDFjZDc0ZGQ5OGUxIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9wd20ucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcHdtLnJzCkBAIC0xMyw3ICYjNDM7MTMsMTEgQEAKICAgICBkZXZyZXMsCiAgICAgZXJyb3I6OntzZWxmLCB0b19yZXN1bHR9LAogICAgIHByZWx1ZGU6OiosCi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy8KIH07CiB1c2UgY29yZTo6ewpAQCAtNjI5LDcgJiM0Mzs2MzMsNyBAQCBwdWIgZm4gbmV3Jmx0OyYjMzk7YSZndDsoCiB9CiAKIC8vIFNBRkVUWTogSW1wbGVtZW50cyByZWZjb3VudGluZyBmb3IgYENoaXBgIHVzaW5nIHRoZSBlbWJlZGRlZCBgc3RydWN0IGRldmljZWAuCi11bnNhZmUgaW1wbCZsdDtUOiBQd21PcHMmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXAmbHQ7VCZndDsgewomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFB3bU9wcyZndDsgUmVmQ291bnRlZCBmb3IgQ2hpcCZsdDtUJmd0OyB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBgc2VsZi4wLmdldCgpYCBwb2ludHMgdG8gYSB2YWxpZCBgcHdtX2NoaXBgIGJlY2F1c2UgYHNlbGZgIGV4aXN0cy4KQEAgLTY0Nyw2ICYjNDM7NjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtDaGlwJmx0O1QmZ3Q7Jmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7Q2hpcCZsdDtUJmd0OyZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0NoaXAmbHQ7VCZndDtgLgomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFB3bU9wcyZndDsgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ2hpcCZsdDtUJmd0OyB7fQomIzQzOwogLy8gU0FGRVRZOiBgQ2hpcGAgaXMgYSB3cmFwcGVyIGFyb3VuZCBgKm11dCBiaW5kaW5nczo6cHdtX2NoaXBgLiBUaGUgdW5kZXJseWluZyBDCiAvLyBzdHJ1Y3R1cmUmIzM5O3Mgc3RhdGUgaXMgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSBrZXJuZWwmIzM5O3MgZGV2aWNlIG1vZGVsCiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMKaW5kZXggYjcyMWIyZTAwYjk4Ni4uZTZmZmU3YzY1MGMzOSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5ycwpAQCAtMTEsNyAmIzQzOzExLDcgQEAKIC8vISB1bmRlcmx5aW5nIG9iamVjdCwgYnV0IHRoaXMgcmVmY291bnQgaXMgaW50ZXJuYWwgdG8gdGhlIG9iamVjdC4gSXQgZXNzZW50aWFsbHkgaXMgYSBSdXN0CiAvLyEgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBnZXRfYCBhbmQgYHB1dF9gIHBhdHRlcm4gdXNlZCBpbiBDIGZvciByZWZlcmVuY2UgY291bnRpbmcuCiAvLyEKLS8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWYmbHQ7TXlUeXBlJmd0O2BdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BBbHdheXNSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXQKJiM0MzsvLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmJmx0O015VHlwZSZndDtgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0CiAvLyEgZm9yIGFjY2Vzc2luZyB0aGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IG9mIGFuIG9iamVjdCBvZiB0aGUgYE15VHlwZWAgdHlwZS4KIC8vIQogLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmMKQEAgLTIzLDI2ICYjNDM7MjMsMzUgQEAKICAgICBvcHM6OkRlcmVmLAogICAgIHB0cjo6Tm9uTnVsbCwgLy8KIH07CiYjNDM7dXNlIGtlcm5lbDo6dHlwZXM6OnsKJiM0MzsgICAgT3duYWJsZVJlZkNvdW50ZWQsCiYjNDM7ICAgIE93bmVkLCAvLwomIzQzO307CiAKLS8vLyBUeXBlcyB0aGF0IGFyZSBfYWx3YXlzXyByZWZlcmVuY2UgY291bnRlZC4KJiM0MzsvLy8gVHlwZXMgdGhhdCBhcmUgaW50ZXJuYWxseSByZWZlcmVuY2UgY291bnRlZC4KIC8vLwogLy8vIEl0IGFsbG93cyBzdWNoIHR5cGVzIHRvIGRlZmluZSB0aGVpciBvd24gY3VzdG9tIHJlZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBmdW5jdGlvbnMuCi0vLy8gQWRkaXRpb25hbGx5LCBpdCBhbGxvd3MgdXNlcnMgdG8gY29udmVydCBmcm9tIGEgc2hhcmVkIHJlZmVyZW5jZSBgJmFtcDtUYCB0byBhbiBvd25lZCByZWZlcmVuY2UKLS8vLyBbYEFSZWYmbHQ7VCZndDtgXS4KIC8vLwogLy8vIFRoaXMgaXMgdXN1YWxseSBpbXBsZW1lbnRlZCBieSB3cmFwcGVycyB0byBleGlzdGluZyBzdHJ1Y3R1cmVzIG9uIHRoZSBDIHNpZGUgb2YgdGhlIGNvZGUuIEZvcgogLy8vIFJ1c3QgY29kZSwgdGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIHVzZSBbYEFyY2BdKGNyYXRlOjpzeW5jOjpBcmMpIHRvIGNyZWF0ZSByZWZlcmVuY2UtY291bnRlZAogLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuCiAvLy8KJiM0MzsvLy8gTm90ZTogSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW4gW2BBUmVmJmx0O1NlbGYmZ3Q7YF0uIEl0IHJlcXVpcmVzIGFuCiYjNDM7Ly8vIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBhbmQgcHJvdmlkZXMgb25seSBzaGFyZWQgcmVmZXJlbmNlcy4gSWYgdW5pcXVlIHJlZmVyZW5jZXMgYXJlIHJlcXVpcmVkCiYjNDM7Ly8vIFtgT3duYWJsZWBdKGNyYXRlOjp0eXBlczo6T3duYWJsZSkgc2hvdWxkIGJlIGltcGxlbWVudGVkIHdoaWNoIGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuCiYjNDM7Ly8vIFtgT3duZWQmbHQ7U2VsZiZndDtgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdAomIzQzOy8vLyBbYE93bmFibGVSZWZDb3VudGVkYF0gYWxsb3dzIHRvIGNvbnZlcnQgYmV0d2VlbiB1bmlxdWUgYW5kCiYjNDM7Ly8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWQmbHQ7U2VsZiZndDtgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKSBhbmQKJiM0MzsvLy8gW2BBUmVmJmx0O1NlbGYmZ3Q7YF0pLgomIzQzOy8vLwogLy8vICMgU2FmZXR5CiAvLy8KIC8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBpbmNyZW1lbnRzIHRvIHRoZSByZWZlcmVuY2UgY291bnQga2VlcCB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeQogLy8vIGF0IGxlYXN0IHVudGlsIG1hdGNoaW5nIGRlY3JlbWVudHMgYXJlIHBlcmZvcm1lZC4KIC8vLwogLy8vIEltcGxlbWVudGVycyBtdXN0IGFsc28gZW5zdXJlIHRoYXQgYWxsIGluc3RhbmNlcyBhcmUgcmVmZXJlbmNlLWNvdW50ZWQuIChPdGhlcndpc2UgdGhleQotLy8vIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGhvbm91ciB0aGUgcmVxdWlyZW1lbnQgdGhhdCBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSBrZWVwIHRoZSBvYmplY3QKLS8vLyBhbGl2ZS4pCi1wdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQgewomIzQzOy8vLyB3b24mIzM5O3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0IGFsaXZlLikKJiM0MztwdWIgdW5zYWZlIHRyYWl0IFJlZkNvdW50ZWQgewogICAgIC8vLyBJbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIG9iamVjdC4KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZik7CiAKQEAgLTU1LDExICYjNDM7NjQsMjcgQEAgcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHsKICAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIHdhcyBhIHByZXZpb3VzIG1hdGNoaW5nIGluY3JlbWVudCB0byB0aGUgcmVmZXJlbmNlIGNvdW50LAogICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heQogICAgIC8vLyByZXN1bHQgaW4gdGhlIG9iamVjdCBiZWluZyBmcmVlZCksIHVubGVzcyB0aGUgY2FsbGVyIG93bnMgYW5vdGhlciBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50Ci0gICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscwotICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS4KJiM0MzsgICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscyBbYFJlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS4KICAgICB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspOwogfQogCiYjNDM7Ly8vIEFsd2F5cyByZWZlcmVuY2UtY291bnRlZCB0eXBlLgomIzQzOy8vLwomIzQzOy8vLyBJdCBhbGxvd3MgZGVyaXZpbmcgYSBjb3VudGVkIHJlZmVyZW5jZSBbYEFSZWYmbHQ7VCZndDtgXSBmcm9tIGEgYCZhbXA7VGAuCiYjNDM7Ly8vCiYjNDM7Ly8vIFRoaXMgcHJvdmlkZXMgc29tZSBjb252ZW5pZW5jZSwgYnV0IGl0IGFsbG93cyAmIzM0O2VzY2FwaW5nJiMzNDsgYm9ycm93IGNoZWNrcyBvbiBgJmFtcDtUYC4gQXMgaXQKJiM0MzsvLy8gY29tcGxpY2F0ZXMgYXR0ZW1wdHMgdG8gZW5zdXJlIHRoYXQgYSByZWZlcmVuY2UgdG8gVCBpcyB1bmlxdWUsIGl0IGlzIG9wdGlvbmFsIHRvIHByb3ZpZGUgZm9yCiYjNDM7Ly8vIFtgUmVmQ291bnRlZGBdIHR5cGVzLiBTZWUgKlNhZmV0eSogYmVsb3cuCiYjNDM7Ly8vCiYjNDM7Ly8vICMgU2FmZXR5CiYjNDM7Ly8vCiYjNDM7Ly8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IG5vIHNhZmV0eSBpbnZhcmlhbnRzIGFyZSB2aW9sYXRlZCBieSB1cGdyYWRpbmcgYW4gYCZhbXA7VGAgdG8gYW4KJiM0MzsvLy8gW2BBUmVmJmx0O1QmZ3Q7YF0uIEluIHBhcnRpY3VsYXIgdGhhdCBpbXBsaWVzIFtgQWx3YXlzUmVmQ291bnRlZGBdIGFuZCBbYGNyYXRlOjp0eXBlczo6T3duYWJsZWBdCiYjNDM7Ly8vIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBmb3IgdGhlIHNhbWUgdHlwZSwgYXMgdGhpcyB3b3VsZCBhbGxvdyB2aW9sYXRpbmcgdGhlIHVuaXF1ZW5lc3MgZ3VhcmFudGVlCiYjNDM7Ly8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZCZsdDtUJmd0O2BdIGJ5IGRlcmVmZXJlbmNpbmcgaXQgaW50byBhbiBgJmFtcDtUYCBhbmQgb2J0YWluaW5nIGFuIFtgQVJlZmBdIGZyb20KJiM0MzsvLy8gdGhhdC4KJiM0MztwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQ6IFJlZkNvdW50ZWQge30KJiM0MzsKIC8vLyBBbiBvd25lZCByZWZlcmVuY2UgdG8gYW4gYWx3YXlzLXJlZmVyZW5jZS1jb3VudGVkIG9iamVjdC4KIC8vLwogLy8vIFRoZSBvYmplY3QmIzM5O3MgcmVmZXJlbmNlIGNvdW50IGlzIGF1dG9tYXRpY2FsbHkgZGVjcmVtZW50ZWQgd2hlbiBhbiBpbnN0YW5jZSBvZiBbYEFSZWZgXSBpcwpAQCAtNzAsNyAmIzQzOzk1LDcgQEAgcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHsKIC8vLwogLy8vIFRoZSBwb2ludGVyIHN0b3JlZCBpbiBgcHRyYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgW2BBUmVmYF0gaW5zdGFuY2UuIEluCiAvLy8gcGFydGljdWxhciwgdGhlIFtgQVJlZmBdIGluc3RhbmNlIG93bnMgYW4gaW5jcmVtZW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdCYjMzk7cyByZWZlcmVuY2UgY291bnQuCi1wdWIgc3RydWN0IEFSZWYmbHQ7VDogQWx3YXlzUmVmQ291bnRlZCZndDsgewomIzQzO3B1YiBzdHJ1Y3QgQVJlZiZsdDtUOiBSZWZDb3VudGVkJmd0OyB7CiAgICAgcHRyOiBOb25OdWxsJmx0O1QmZ3Q7LAogICAgIF9wOiBQaGFudG9tRGF0YSZsdDtUJmd0OywKIH0KQEAgLTc5LDE5ICYjNDM7MTA0LDE5IEBAIHB1YiBzdHJ1Y3QgQVJlZiZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyB7CiAvLyBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGAmYW1wO1RgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSwgaXQgbmVlZHMKIC8vIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGFuIGBBUmVmJmx0O1QmZ3Q7YCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGEKIC8vIG11dGFibGUgcmVmZXJlbmNlLCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuCi11bnNhZmUgaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZCZndDsgU2VuZCBmb3IgQVJlZiZsdDtUJmd0OyB7fQomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFJlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kJmd0OyBTZW5kIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiAKIC8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGAmYW1wO0FSZWYmbHQ7VCZndDtgIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIGBTeW5jYAogLy8gYmVjYXVzZSBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGAmYW1wO1RgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSwKIC8vIGl0IG5lZWRzIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGEgYCZhbXA7QVJlZiZsdDtUJmd0O2AgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW4KIC8vIGBBUmVmJmx0O1QmZ3Q7YCBvbiB0aGF0IHRocmVhZCwgc28gdGhlIHRocmVhZCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGEgbXV0YWJsZSByZWZlcmVuY2UsIGZvcgogLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuCi11bnNhZmUgaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZCZndDsgU3luYyBmb3IgQVJlZiZsdDtUJmd0OyB7fQomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFJlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kJmd0OyBTeW5jIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiAKIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLgotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyBVbnBpbiBmb3IgQVJlZiZsdDtUJmd0OyB7fQomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCZndDsgVW5waW4gZm9yIEFSZWYmbHQ7VCZndDsge30KIAotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyBBUmVmJmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IFJlZkNvdW50ZWQmZ3Q7IEFSZWYmbHQ7VCZndDsgewogICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFtgQVJlZmBdLgogICAgIC8vLwogICAgIC8vLyBJdCB0YWtlcyBvdmVyIGFuIGluY3JlbWVudCBvZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4KQEAgLTEyMCwxOSAmIzQzOzE0NSwyMSBAQCBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbCZsdDtUJmd0OykgLSZndDsgU2VsZiB7CiAgICAgLy8vCiAgICAgLy8vIGBgYAogICAgIC8vLyB1c2UgY29yZTo6cHRyOjpOb25OdWxsOwotICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07CiYjNDM7ICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07CiAgICAgLy8vCiAgICAgLy8vIHN0cnVjdCBFbXB0eSB7fQogICAgIC8vLwotICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy4KLSAgICAvLy8gdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRW1wdHkgewomIzQzOyAgICAvLy8gLy8gU0FGRVRZOiBUaGUgYFJlZkNvdW50ZWRgIGltcGxlbWVudGF0aW9uIGZvciBgRW1wdHlgIGRvZXMgbm90IGNvdW50IHJlZmVyZW5jZXMgYW5kIG5ldmVyCiYjNDM7ICAgIC8vLyAvLyBmcmVlcyB0aGUgdW5kZXJseWluZyBvYmplY3QuIFRodXMgd2UgY2FuIGFjdCBhcyBvd25pbmcgYW4gaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudCBmb3IKJiM0MzsgICAgLy8vIC8vIHRoZSBvYmplY3QgdGhhdCB3ZSBwYXNzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGBBUmVmYC4KJiM0MzsgICAgLy8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEVtcHR5IHsKICAgICAvLy8gICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7fQogICAgIC8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYoX29iajogTm9uTnVsbCZsdDtTZWxmJmd0Oykge30KICAgICAvLy8gfQogICAgIC8vLwogICAgIC8vLyBsZXQgbXV0IGRhdGEgPSBFbXB0eSB7fTsKICAgICAvLy8gbGV0IHB0ciA9IE5vbk51bGw6OiZsdDtFbXB0eSZndDs6Om5ldygmYW1wO211dCBkYXRhKS51bndyYXAoKTsKLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uCiYjNDM7ICAgIC8vLyAvLyBTQUZFVFk6IFdlIGtlZXAgYGRhdGFgIGFyb3VuZCBsb25nZXIgdGhhbiB0aGUgYEFSZWZgLgogICAgIC8vLyBsZXQgZGF0YV9yZWY6IEFSZWYmbHQ7RW1wdHkmZ3Q7ID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9OwogICAgIC8vLyBsZXQgcmF3X3B0cjogTm9uTnVsbCZsdDtFbXB0eSZndDsgPSBBUmVmOjppbnRvX3JhdyhkYXRhX3JlZik7CiAgICAgLy8vCkBAIC0xNDMsNyAmIzQzOzE3MCw3IEBAIHB1YiBmbiBpbnRvX3JhdyhtZTogU2VsZikgLSZndDsgTm9uTnVsbCZsdDtUJmd0OyB7CiAgICAgfQogfQogCi1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IENsb25lIGZvciBBUmVmJmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IFJlZkNvdW50ZWQmZ3Q7IENsb25lIGZvciBBUmVmJmx0O1QmZ3Q7IHsKICAgICBmbiBjbG9uZSgmYW1wO3NlbGYpIC0mZ3Q7IFNlbGYgewogICAgICAgICBzZWxmLmluY19yZWYoKTsKICAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IGluY3JlbWVudGVkIHRoZSByZWZjb3VudCBhYm92ZS4KQEAgLTE1MSw3ICYjNDM7MTc4LDcgQEAgZm4gY2xvbmUoJmFtcDtzZWxmKSAtJmd0OyBTZWxmIHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQWx3YXlzUmVmQ291bnRlZCZndDsgRGVyZWYgZm9yIEFSZWYmbHQ7VCZndDsgewomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCZndDsgRGVyZWYgZm9yIEFSZWYmbHQ7VCZndDsgewogICAgIHR5cGUgVGFyZ2V0ID0gVDsKIAogICAgIGZuIGRlcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtTZWxmOjpUYXJnZXQgewpAQCAtMTY4LDcgJiM0MzsxOTUsMTQgQEAgZm4gZnJvbShiOiAmYW1wO1QpIC0mZ3Q7IFNlbGYgewogICAgIH0KIH0KIAotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyBEcm9wIGZvciBBUmVmJmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGVSZWZDb3VudGVkJmd0OyBGcm9tJmx0O093bmVkJmx0O1QmZ3Q7Jmd0OyBmb3IgQVJlZiZsdDtUJmd0OyB7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiBmcm9tKGI6IE93bmVkJmx0O1QmZ3Q7KSAtJmd0OyBTZWxmIHsKJiM0MzsgICAgICAgIFQ6OmludG9fc2hhcmVkKGIpCiYjNDM7ICAgIH0KJiM0Mzt9CiYjNDM7CiYjNDM7aW1wbCZsdDtUOiBSZWZDb3VudGVkJmd0OyBEcm9wIGZvciBBUmVmJmx0O1QmZ3Q7IHsKICAgICBmbiBkcm9wKCZhbXA7bXV0IHNlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBgQVJlZmAgb3ducyB0aGUgcmVmZXJlbmNlIHdlJiMzOTtyZSBhYm91dCB0bwogICAgICAgICAvLyBkZWNyZW1lbnQuCkBAIC0xNzgsMTkgJiM0MzsyMTIsMTkgQEAgZm4gZHJvcCgmYW1wO211dCBzZWxmKSB7CiAKIGltcGwmbHQ7VCwgVSZndDsgUGFydGlhbEVxJmx0O0FSZWYmbHQ7VSZndDsmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7CiB3aGVyZQotICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxJmx0O1UmZ3Q7LAotICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxJmx0O1UmZ3Q7LAomIzQzOyAgICBVOiBSZWZDb3VudGVkLAogewogICAgICNbaW5saW5lXQogICAgIGZuIGVxKCZhbXA7c2VsZiwgb3RoZXI6ICZhbXA7QVJlZiZsdDtVJmd0OykgLSZndDsgYm9vbCB7CiAgICAgICAgIFQ6OmVxKCZhbXA7KipzZWxmLCAmYW1wOyoqb3RoZXIpCiAgICAgfQogfQotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IEVxJmd0OyBFcSBmb3IgQVJlZiZsdDtUJmd0OyB7fQomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCAmIzQzOyBFcSZndDsgRXEgZm9yIEFSZWYmbHQ7VCZndDsge30KIAogaW1wbCZsdDtULCBVJmd0OyBQYXJ0aWFsRXEmbHQ7JmFtcDsmIzM5O18gVSZndDsgZm9yIEFSZWYmbHQ7VCZndDsKIHdoZXJlCi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXEmbHQ7VSZndDssCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxJmx0O1UmZ3Q7LAogewogICAgICNbaW5saW5lXQogICAgIGZuIGVxKCZhbXA7c2VsZiwgb3RoZXI6ICZhbXA7JmFtcDtVKSAtJmd0OyBib29sIHsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3Rhc2sucnMgYi9ydXN0L2tlcm5lbC90YXNrLnJzCmluZGV4IDM4MjczZjRlZWRiNTEuLjYyNTk0MzBiMGNhMzEgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3Rhc2sucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvdGFzay5ycwpAQCAtMTAsNyAmIzQzOzEwLDEyIEBACiAgICAgcGlkX25hbWVzcGFjZTo6UGlkTmFtZXNwYWNlLAogICAgIHByZWx1ZGU6OiosCiAgICAgc3luYzo6YXJlZjo6QVJlZiwKLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sCiYjNDM7ICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgTm90VGhyZWFkU2FmZSwKJiM0MzsgICAgICAgIE9wYXF1ZSwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiB9OwogdXNlIGNvcmU6OnsKICAgICBvcHM6OkRlcmVmLApAQCAtMzQ3LDcgJiM0MzszNTIsNyBAQCBwdWIgZm4gZ3JvdXBfbGVhZGVyKCZhbXA7c2VsZikgLSZndDsgJmFtcDtUYXNrIHsKIH0KIAogLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBUYXNrYCBpcyBhbHdheXMgcmVmY291bnRlZC4KLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBUYXNrIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uCkBAIC0zNjEsNiAmIzQzOzM2NiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7VGFzayZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO1Rhc2tgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge30KJiM0MzsKIGltcGwgUGFydGlhbEVxIGZvciBUYXNrIHsKICAgICAjW2lubGluZV0KICAgICBmbiBlcSgmYW1wO3NlbGYsIG90aGVyOiAmYW1wO1NlbGYpIC0mZ3Q7IGJvb2wgewpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdHlwZXMucnMgYi9ydXN0L2tlcm5lbC90eXBlcy5ycwppbmRleCBhYzMxNmZkN2I1MzhmLi42YWE3NjA5NTJjYjYzIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC90eXBlcy5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90eXBlcy5ycwpAQCAtMTUsNiAmIzQzOzE1LDE4IEBACiBwdWIgbW9kIGZvcl9sdDsKIHB1YiB1c2UgZm9yX2x0OjpGb3JMdDsKIAomIzQzO3B1YiB1c2UgY3JhdGU6OnsKJiM0MzsgICAgb3duZWQ6OnsKJiM0MzsgICAgICAgIE93bmFibGUsCiYjNDM7ICAgICAgICBPd25hYmxlUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE93bmVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwgLy8KJiM0Mzt9OwomIzQzOwogLy8vIFVzZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIGFuZCBmcm9tIGZvcmVpZ24gKG5vbi1SdXN0KSBsYW5ndWFnZXMuCiAvLy8KIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91c2IucnMgYi9ydXN0L2tlcm5lbC91c2IucnMKaW5kZXggN2FmZjBjODJkMGFmYy4uNTkzNTBjNmIwZGYyYSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvdXNiLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3VzYi5ycwpAQCAtMTgsNyAmIzQzOzE4LDEwIEBACiAgICAgICAgIHRvX3Jlc3VsdCwgLy8KICAgICB9LAogICAgIHByZWx1ZGU6OiosCi0gICAgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgc3luYzo6YXJlZjo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwKICAgICBUaGlzTW9kdWxlLCAvLwogfTsKQEAgLTM5Miw3ICYjNDM7Mzk1LDcgQEAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtEZXZpY2UgewogfQogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSW50ZXJmYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJbnRlcmZhY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYEludGVyZmFjZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgCiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9pbnRlcmZhY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsCkBAIC00MDYsNiAmIzQzOzQwOSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0ludGVyZmFjZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0ludGVyZmFjZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHt9CiYjNDM7CiAvLyBTQUZFVFk6IEEgYEludGVyZmFjZWAgaXMgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIGFuZCBjYW4gYmUgcmVsZWFzZWQgZnJvbSBhbnkgdGhyZWFkLgogdW5zYWZlIGltcGwgU2VuZCBmb3IgSW50ZXJmYWNlIHt9CiAKQEAgLTQ0Myw3ICYjNDM7NDUwLDcgQEAgZm4gYXNfcmF3KCZhbXA7c2VsZikgLSZndDsgKm11dCBiaW5kaW5nczo6dXNiX2RldmljZSB7CiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpOwogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYERldmljZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgCiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsCkBAIC00NTcsNiAmIzQzOzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9CiYjNDM7CiBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7Jmd0OyBmb3IgRGV2aWNlJmx0O0N0eCZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC93b3JrcXVldWUucnMgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnMKaW5kZXggN2UyNTNiNmYyOTljZS4uNzc2NzNiOGVhNDVmYiAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycwpAQCAtMTkyLDcgJiM0MzsxOTIsNyBAQAogICAgIHN5bmM6OnsKICAgICAgICAgYXJlZjo6ewogICAgICAgICAgICAgQVJlZiwKLSAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vCiYjNDM7ICAgICAgICAgICAgUmVmQ291bnRlZCwgLy8KICAgICAgICAgfSwKICAgICAgICAgQXJjLAogICAgICAgICBMb2NrQ2xhc3NLZXksIC8vCkBAIC05NTQsNyAmIzQzOzk1NCw3IEBAIHVuc2FmZSBpbXBsJmx0O1QsIGNvbnN0IElEOiB1NjQmZ3Q7IFJhd0RlbGF5ZWRXb3JrSXRlbSZsdDtJRCZndDsgZm9yIFBpbiZsdDtLQm94Jmx0O1QmZ3Q7Jmd0OwogLy8gICAgIGltcGxlbWVudGF0aW9uIG9mIGBXb3JrSXRlbVBvaW50ZXJgIGZvciBgQVJlZiZsdDtUJmd0O2AuCiB1bnNhZmUgaW1wbCZsdDtULCBjb25zdCBJRDogdTY0Jmd0OyBXb3JrSXRlbVBvaW50ZXImbHQ7SUQmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7CiB3aGVyZQotICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsCiAgICAgVDogV29ya0l0ZW0mbHQ7SUQsIFBvaW50ZXIgPSBTZWxmJmd0OywKICAgICBUOiBIYXNXb3JrJmx0O1QsIElEJmd0OywKIHsKQEAgLTk4Nyw3ICYjNDM7OTg3LDcgQEAgdW5zYWZlIGltcGwmbHQ7VCwgY29uc3QgSUQ6IHU2NCZndDsgV29ya0l0ZW1Qb2ludGVyJmx0O0lEJmd0OyBmb3IgQVJlZiZsdDtUJmd0OwogLy8gcmVxdWlyZW1lbnRzIG9mIGBXb3JrSXRlbVBvaW50ZXJgLgogdW5zYWZlIGltcGwmbHQ7VCwgY29uc3QgSUQ6IHU2NCZndDsgUmF3V29ya0l0ZW0mbHQ7SUQmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7CiB3aGVyZQotICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsCiAgICAgVDogV29ya0l0ZW0mbHQ7SUQsIFBvaW50ZXIgPSBTZWxmJmd0OywKICAgICBUOiBIYXNXb3JrJmx0O1QsIElEJmd0OywKIHsKQEAgLTEwMjAsNyAmIzQzOzEwMjAsNyBAQCB1bnNhZmUgaW1wbCZsdDtULCBjb25zdCBJRDogdTY0Jmd0OyBSYXdEZWxheWVkV29ya0l0ZW0mbHQ7SUQmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7CiB3aGVyZQogICAgIFQ6IFdvcmtJdGVtJmx0O0lELCBQb2ludGVyID0gU2VsZiZndDssCiAgICAgVDogSGFzRGVsYXllZFdvcmsmbHQ7VCwgSUQmZ3Q7LAotICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsCiB7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxMzcKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogMTIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IEEgRGVlcCBEaXZlIGludG8gUnVzdCBBYnN0cmFjdGlvbiBSZWZhY3RvcmluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lIGlmIGl0IHdhcnJhbnRzIGZ1enppbmcuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCByZXN0cnVjdHVyaW5nIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciB0aGUgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgaW50cm9kdWNpbmcgYE93bmVkJmx0O1QmZ3Q7YCBhbmQgYE93bmFibGVgIHRyYWl0cy4gV2UmIzM5O3JlIGFsc28gc2VlaW5nIGEgcmVmYWN0b3Jpbmcgb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCBjaGFuZ2VzIGluIGhvdyBgUGFnZWAgYW5kIGBQYWdlSW5mb2AgYXJlIGhhbmRsZWQsIG5vdyB1c2luZyBgT3duZWQmbHQ7UGFnZSZndDtgIGluIGFsbG9jYXRpb24uCgpNeSBwcmltYXJ5IGNvbmNlcm4gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYmVoYXZpb3IgdGhhdCBjb3VsZCBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLiBPbiBpbml0aWFsIHJldmlldywgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgbW9zdGx5IGRlYWxpbmcgd2l0aDoKCiogICBgQWx3YXlzUmVmQ291bnRlZGAgc3BsaXQgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYAoqICAgSW50cm9kdWN0aW9uIG9mIGBPd25lZCZsdDtUJmd0O2AgYXMgYSBwb2ludGVyIHR5cGUuCiogICBgUGFnZWAgYWxsb2NhdGlvbiBub3cgcmV0dXJuaW5nIGBPd25lZCZsdDtQYWdlJmd0O2AuCiogICBgUGFnZUluZm9gIGluIEFuZHJvaWQgQmluZGVyIHVzaW5nIGBPd25lZCZsdDtQYWdlJmd0O2AuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBjaGFuZ2VzIHRvdWNoIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBkcml2ZXJzLiBTY2FubmluZyBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYCwgSSBzZWUgY2hhbmdlcyByZWxhdGVkIHRvIGBzZXRfcGFnZWAuIEhvd2V2ZXIsIHRoaXMgYXBwZWFycyB0byBiZSBhbm90aGVyIFJ1c3QgYWJzdHJhY3Rpb24gc2hpZnQsIGRlYWxpbmcgd2l0aCBgT3B0aW9uJmx0O093bmVkJmx0O1BhZ2UmZ3Q7Jmd0O2AgaW5zdGVhZCBvZiBgT3B0aW9uJmx0O1BhZ2UmZ3Q7YC4gVGhlIGBPd25lZCZsdDtUJmd0O2AgZXNzZW50aWFsbHkgd3JhcHMgYE5vbk51bGwmbHQ7VCZndDtgLiAgYFBhZ2VgIHdhcyBwcmV2aW91c2x5IHJlcHJlc2VudGVkIGFzIGBOb25OdWxsJmx0O2JpbmRpbmdzOjpwYWdlJmd0O2AuIE5vdywgaXTigJlzIGBOb25OdWxsJmx0O1BhZ2UmZ3Q7YCwgd2hpY2ggZWZmZWN0aXZlbHkgYmVjb21lcyBgTm9uTnVsbCZsdDtPcGFxdWUmbHQ7YmluZGluZ3M6OnBhZ2UmZ3Q7Jmd0O2AuICBUaGlzIG1lYW5zIHRoZSBzaXplIGFuZCBsYXlvdXQgYXJlIGlkZW50aWNhbC4gQWxzbywgdGhlIGRyb3AgbG9naWMgZm9yIGBPd25lZCZsdDtQYWdlJmd0O2AgaXMgdGhlIHNhbWUgYXMgdGhlIHByaW9yIGRyb3AgbG9naWMgZm9yIHRoZSBvcmlnaW5hbCBgUGFnZWAuCgpMb29raW5nIGRlZXBlciwgYHJ1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc2AgaXMgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIGB0b19wYWdlYCByZXR1cm5lZCBhIGBCb3Jyb3dlZFBhZ2VgLCBub3cgaXQgaXMgcmV0dXJuaW5nIGAmYW1wO3BhZ2U6OlBhZ2VgLiBgQm9ycm93ZWRQYWdlYCB3YXMgYSB3cmFwcGVyIGFyb3VuZCBgTWFudWFsbHlEcm9wJmx0O1BhZ2UmZ3Q7YC4gSXQgYXBwZWFycyB0byBiZSBhbm90aGVyIFJ1c3QgdHlwZSBzeXN0ZW0gY2hhbmdlLgoKU28sIGFyZSB0aGVyZSBhbnkgKmZ1bmN0aW9uYWwqIGltcGxpY2F0aW9ucz8gTm8uIEl0IHNlZW1zIHRoaXMgaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgdHlwZXMgYW5kIHRyYWl0cy4gSW50cm9kdWNpbmcgYE93bmVkYCBhbmQgYE93bmFibGVgIGFuZCBzcGxpdHRpbmcgYEFsd2F5c1JlZkNvdW50ZWRgIGRvZXNuJiMzOTt0IHNlZW0gdG8gYWx0ZXIgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgYmVoYXZpb3IuIExldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbmV3IGZlYXR1cmVzIG9yIGxvZ2ljIGFzIGEgcmVzdWx0IG9mIHRoZXNlIGNoYW5nZXMuIEkmIzM5O20gc2VlaW5nIGEgbmV3IGZpbGUsIGBydXN0L2tlcm5lbC9vd25lZC5yc2AsIGJ1dCBpdCYjMzk7cyBqdXN0IGRlZmluaXRpb25zIGZvciB0aGUgbmV3IHR5cGVzIGFuZCB0cmFpdHMuCgpSZXZpZXdpbmcgdGhlIGNoYW5nZXMgaW4gYGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc2AsIGBydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNgLCBhbmQgYHJ1c3Qva2VybmVsL293bmVkLnJzYCBhZ2FpbiwgaXQgbG9va3MgcHVyZWx5IGxpa2UgYW4gQVBJIHJlZmFjdG9yaW5nLiBUaGUgY29tcGlsZWQgY29kZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgcmVtYWluIGV4YWN0bHkgdGhlIHNhbWUuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLgoKTGV0IG1lIG1ha2UgYWJzb2x1dGVseSBzdXJlLCBhbmQgZG91YmxlLWNoZWNrIGFsbCB0aGUgZmlsZXMgdG91Y2hlZCBpbiB0aGlzIHNlcmllcy4KCi0gICBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYDogU3dpdGNoZWQgZnJvbSBgT3B0aW9uJmx0O1BhZ2UmZ3Q7YCB0byBgT3B0aW9uJmx0O093bmVkJmx0O1BhZ2UmZ3Q7Jmd0O2AuCi0gICBgcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzYDogU3dpdGNoZWQgZnJvbSBgQm9ycm93ZWRQYWdlYCB0byBgJmFtcDtQYWdlYC4KLSAgIGBydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzYDogQWRkZWQgYGludG9fbm9uX251bGxgLgotICAgYHJ1c3Qva2VybmVsL2F1eGlsaWFyeS5yc2A6IENoYW5nZWQgYEFsd2F5c1JlZkNvdW50ZWRgIHRvIGBSZWZDb3VudGVkYCAmIzQzOyBgQWx3YXlzUmVmQ291bnRlZGAuCi0gICBgcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc2A6IFNhbWUuCi0gICBgcnVzdC9rZXJuZWwvY3JlZC5yc2A6IFNhbWUuCi0gICBgcnVzdC9rZXJuZWwvZGV2aWNlLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNgOiBTYW1lLgotICAgYHJ1c3Qva2VybmVsL2RybS9kZXZpY2UucnNgOiBTYW1lLgotICAgYHJ1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9mcy9maWxlLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9pMmMucnNgOiBTYW1lLgotICAgYHJ1c3Qva2VybmVsL21tLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc2A6IFNhbWUuCi0gICBgcnVzdC9rZXJuZWwvb3BwLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9vd25lZC5yc2A6IE5ldyBmaWxlIHdpdGggYE93bmFibGVgLCBgT3duZWRgLCBgT3duYWJsZVJlZkNvdW50ZWRgLgotICAgYHJ1c3Qva2VybmVsL3BhZ2UucnNgOiBgQm9ycm93ZWRQYWdlYCByZW1vdmVkLCBgUGFnZWAgbm93IHVzZXMgYE93bmFibGVgLCBgYWxsb2NfcGFnZWAgcmV0dXJucyBgT3duZWQmbHQ7UGFnZSZndDtgLgotICAgYHJ1c3Qva2VybmVsL3BjaS5yc2A6IFNhbWUgcmVmY291bnQgY2hhbmdlcy4KLSAgIAoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIEl0IGludHJvZHVjZXMgdGhlIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0cmFpdHMsIHNwbGl0cyBgQWx3YXlzUmVmQ291bnRlZGAgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYCwgYW5kIHVwZGF0ZXMgdGhlIGBQYWdlYCBhYnN0cmFjdGlvbiBhbmQgaXRzIHVzZXJzIChsaWtlIEFuZHJvaWQgQmluZGVyKSB0byB1c2UgdGhlIG5ldyB0eXBlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIEl0IGludHJvZHVjZXMgdGhlIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0cmFpdHMsIHNwbGl0cyBgQWx3YXlzUmVmQ291bnRlZGAgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYCwgYW5kIHVwZGF0ZXMgdGhlIGBQYWdlYCBhYnN0cmFjdGlvbiBhbmQgaXRzIHVzZXJzIChsaWtlIEFuZHJvaWQgQmluZGVyKSB0byB1c2UgdGhlIG5ldyB0eXBlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzoxMjozNy4xOTk3NzkxNjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM2NzI5OTg1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgaW4gdGhlIGtlcm5lbC4gSXQgaW50cm9kdWNlcyB0aGUgYE93bmVkYCBhbmQgYE93bmFibGVgIHRyYWl0cywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgdXBkYXRlcyB0aGUgYFBhZ2VgIGFic3RyYWN0aW9uIGFuZCBpdHMgdXNlcnMgKGxpa2UgQW5kcm9pZCBCaW5kZXIpIHRvIHVzZSB0aGUgbmV3IHR5cGVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjEyOjM3LjE5OTc4Mzg1NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NjYyOTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkzNzAyZmRjMzViNDI0MmVmZGNjNTMyNjNkOTkzMWYzZDVlYWQ3NjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTM6MTI6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzIGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzXFxuaW5kZXggZTgyYTU1MjM4MDRmNC4uYzU1YmEyOWFiZWE3MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcXG4rKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcXG5AQCAtMzMsNyArMzMsNyBAQFxcbiAgICAgc3luYzo6e2FyZWY6OkFSZWYsIE11dGV4LCBTcGluTG9ja30sXFxuICAgICB0YXNrOjpQaWQsXFxuICAgICB0cmFuc211dGU6OkZyb21CeXRlcyxcXG4tICAgIHR5cGVzOjpPcGFxdWUsXFxuKyAgICB0eXBlczo6e09wYXF1ZSwgT3duZWR9LFxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLFxcbiB9O1xcbiBcXG5AQCAtMTk4LDcgKzE5OCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIElubmVyIHt9XFxuICNbcmVwcihDKV1cXG4gc3RydWN0IFBhZ2VJbmZvIHtcXG4gICAgIGxydTogYmluZGluZ3M6Omxpc3RfaGVhZCxcXG4tICAgIHBhZ2U6IE9wdGlvblxcdTAwM2NQYWdlXFx1MDAzZSxcXG4rICAgIHBhZ2U6IE9wdGlvblxcdTAwM2NPd25lZFxcdTAwM2NQYWdlXFx1MDAzZVxcdTAwM2UsXFxuICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsXFxuIH1cXG4gXFxuQEAgLTIwNiw3ICsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHtcXG4gICAgIC8vLyAjIFNhZmV0eVxcbiAgICAgLy8vXFxuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0Llxcbi0gICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBQYWdlKSB7XFxuKyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkXFx1MDAzY1BhZ2VcXHUwMDNlKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xcbiBcXG5AQCAtMjI5LDEzICsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlXFx1MDAzYydhXFx1MDAzZShtZTogKmNvbnN0IFBhZ2VJbmZvKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjXFx1MDAyNidhIFBhZ2VcXHUwMDNlIHtcXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXFx1MDAyNnJhdyBjb25zdCAoKm1lKS5wYWdlIH07XFxuIFxcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgZm9yIHJlYWRpbmcuXFxuLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH1cXG4rICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfZGVyZWYoKSB9XFxuICAgICB9XFxuIFxcbiAgICAgLy8vICMgU2FmZXR5XFxuICAgICAvLy9cXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICdhLlxcbi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVxcdTAwM2UgT3B0aW9uXFx1MDAzY1BhZ2VcXHUwMDNlIHtcXG4rICAgIHVuc2FmZSBmbiB0YWtlX3BhZ2UobWU6ICptdXQgUGFnZUluZm8pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NPd25lZFxcdTAwM2NQYWdlXFx1MDAzZVxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuXFxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFxcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcXG4gXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xcbmluZGV4IGNkNDIwM2YyN2FlZDAuLmM3YjliMDY5Y2Y3NWQgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXFxuQEAgLTE2OSw3ICsxNjksNyBAQCB1bnNhZmUgZm4gcmVhbGxvYyhcXG4gfVxcbiBcXG4gaW1wbCBWbWFsbG9jIHtcXG4tICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdLlxcbisgICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZS5cXG4gICAgIC8vL1xcbiAgICAgLy8vICMgRXhhbXBsZXNcXG4gICAgIC8vL1xcbkBAIC0yMDIsMjAgKzIwMiwxNyBAQCBpbXBsIFZtYWxsb2Mge1xcbiAgICAgLy8vXFxuICAgICAvLy8gLSBgcHRyYCBtdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24uXFxuICAgICAvLy8gLSBgcHRyYCBtdXN0IHJlbWFpbiB2YWxpZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiBgJ2FgLlxcbi0gICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXFx1MDAzYydhXFx1MDAzZShwdHI6IE5vbk51bGxcXHUwMDNjdThcXHUwMDNlKSAtXFx1MDAzZSBwYWdlOjpCb3Jyb3dlZFBhZ2VcXHUwMDNjJ2FcXHUwMDNlIHtcXG4rICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZVxcdTAwM2MnYVxcdTAwM2UocHRyOiBOb25OdWxsXFx1MDAzY3U4XFx1MDAzZSkgLVxcdTAwM2UgXFx1MDAyNidhIHBhZ2U6OlBhZ2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXFxuICAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5hc19wdHIoKS5jYXN0KCkpIH07XFxuIFxcbi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXJcXG4tICAgICAgICAvLyB0byBgVm1hbGxvY2AgbWVtb3J5Llxcbi0gICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwYWdlKSB9O1xcbi1cXG4gICAgICAgICAvLyBTQUZFVFk6XFxuLSAgICAgICAgLy8gLSBgcGFnZWAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZlxcbi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cXG4tICAgICAgICAvLyAtIEJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb24gYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2ZcXG4tICAgICAgICAvLyAgIGAnYWAuXFxuLSAgICAgICAgdW5zYWZlIHsgcGFnZTo6Qm9ycm93ZWRQYWdlOjpmcm9tX3JhdyhwYWdlKSB9XFxuKyAgICAgICAgLy8gLSBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQsIG5vbi1udWxsIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkXFxuKyAgICAgICAgLy8gICBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnksIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvblxcbisgICAgICAgIC8vICAgYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYFZtYWxsb2NgIGFsbG9jYXRpb24uXFxuKyAgICAgICAgLy8gLSBCeSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGBwdHJgLCBhbmQgaGVuY2UgdGhlIGBzdHJ1Y3QgcGFnZWAsIGlzXFxuKyAgICAgICAgLy8gICB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBgJ2FgLlxcbisgICAgICAgIHVuc2FmZSB7IFxcdTAwMjYqcGFnZS5jYXN0KCkgfVxcbiAgICAgfVxcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXFxuaW5kZXggMDJmZGEzZWE1Y2FlNi4uOGRjYzE2ZWQ4OTg5MyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXFxuQEAgLTksNyArOSw3IEBAXFxuICAgICBwdHI6Ok5vbk51bGwsIC8vXFxuIH07XFxuIFxcbi0vLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgcGFnZTo6Qm9ycm93ZWRQYWdlYF0gaXRlbXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxcbisvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxcbiAvLy9cXG4gLy8vICMgR3VhcmFudGVlc1xcbiAvLy9cXG5AQCAtMjgsMTEgKzI4LDExIEBAIHB1YiBzdHJ1Y3QgVm1hbGxvY1BhZ2VJdGVyXFx1MDAzYydhXFx1MDAzZSB7XFxuICAgICBzaXplOiB1c2l6ZSxcXG4gICAgIC8vLyBUaGUgY3VycmVudCBwYWdlIGluZGV4IG9mIHRoZSBbYEl0ZXJhdG9yYF0uXFxuICAgICBpbmRleDogdXNpemUsXFxuLSAgICBfcDogUGhhbnRvbURhdGFcXHUwMDNjcGFnZTo6Qm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZVxcdTAwM2UsXFxuKyAgICBfcDogUGhhbnRvbURhdGFcXHUwMDNjXFx1MDAyNidhIHBhZ2U6OlBhZ2VcXHUwMDNlLFxcbiB9XFxuIFxcbiBpbXBsXFx1MDAzYydhXFx1MDAzZSBJdGVyYXRvciBmb3IgVm1hbGxvY1BhZ2VJdGVyXFx1MDAzYydhXFx1MDAzZSB7XFxuLSAgICB0eXBlIEl0ZW0gPSBwYWdlOjpCb3Jyb3dlZFBhZ2VcXHUwMDNjJ2FcXHUwMDNlO1xcbisgICAgdHlwZSBJdGVtID0gXFx1MDAyNidhIHBhZ2U6OlBhZ2U7XFxuIFxcbiAgICAgZm4gbmV4dChcXHUwMDI2bXV0IHNlbGYpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NTZWxmOjpJdGVtXFx1MDAzZSB7XFxuICAgICAgICAgbGV0IG9mZnNldCA9IHNlbGYuaW5kZXguY2hlY2tlZF9tdWwocGFnZTo6UEFHRV9TSVpFKT87XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXFxuaW5kZXggMzVkMWUwMTU4NDhkZC4uZTZjNjM3YmJlMjAwOSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xcbkBAIC0yMTEsNiArMjExLDE1IEBAIHB1YiBmbiBsZWFrXFx1MDAzYydhXFx1MDAzZShiOiBTZWxmKSAtXFx1MDAzZSBcXHUwMDI2J2EgbXV0IFQge1xcbiAgICAgICAgIC8vIHdoaWNoIHBvaW50cyB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiBgVGAuXFxuICAgICAgICAgdW5zYWZlIHsgXFx1MDAyNm11dCAqQm94OjppbnRvX3JhdyhiKSB9XFxuICAgICB9XFxuK1xcbisgICAgLy8vIENvbnN1bWVzIHRoZSBgQm94XFx1MDAzY1QsIEFcXHUwMDNlYCBhbmQgcmV0dXJucyBhIGBOb25OdWxsXFx1MDAzY1RcXHUwMDNlYC5cXG4rICAgIC8vL1xcbisgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC5cXG4rICAgICNbaW5saW5lXVxcbisgICAgcHViIGZuIGludG9fbm9uX251bGwoYjogU2VsZikgLVxcdTAwM2UgTm9uTnVsbFxcdTAwM2NUXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBgQm94OjppbnRvX3Jhd2AgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIuXFxuKyAgICAgICAgdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChTZWxmOjppbnRvX3JhdyhiKSkgfVxcbisgICAgfVxcbiB9XFxuIFxcbiBpbXBsXFx1MDAzY1QsIEFcXHUwMDNlIEJveFxcdTAwM2NNYXliZVVuaW5pdFxcdTAwM2NUXFx1MDAzZSwgQVxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzIGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXFxuaW5kZXggYzQyOTI4ZDVhMjM5My4uODU0NTI1Mjg5YzhiNCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcXG5AQCAtMTksNiArMTksMTAgQEBcXG4gICAgICAgICB0b19yZXN1bHQsIC8vXFxuICAgICB9LFxcbiAgICAgcHJlbHVkZTo6KixcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbiAgICAgdHlwZXM6OntcXG4gICAgICAgICBGb3JMdCxcXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcXG5AQCAtMzQ0LDcgKzM0OCw3IEBAIHVuc2FmZSBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2UgZm9yIERldmljZVxcdTAwM2NDdHhcXHUwMDNlXFxuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcXG5AQCAtMzYzLDYgKzM2NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NEZXZpY2VcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZEZXZpY2VgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cXG4rXFxuIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIEFzUmVmXFx1MDAzY2RldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICBmbiBhc19yZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xcbmluZGV4IGNlM2UzMGM4MWNiNWUuLjhkYWQxNWFlNGNmYjAgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnNcXG5AQCAtOSw3ICs5LDExIEBAXFxuICAgICBibG9jazo6bXE6Ok9wZXJhdGlvbnMsXFxuICAgICBlcnJvcjo6UmVzdWx0LFxcbiAgICAgc3luYzo6e1xcbi0gICAgICAgIGFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcXG4rICAgICAgICBhcmVmOjp7XFxuKyAgICAgICAgICAgIEFSZWYsXFxuKyAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgfSxcXG4gICAgICAgICBhdG9taWM6OlJlbGF4ZWQsXFxuICAgICAgICAgUmVmY291bnQsXFxuICAgICB9LFxcbkBAIC0yMjksMTEgKzIzMywxMCBAQCB1bnNhZmUgaW1wbFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZSBTZW5kIGZvciBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlIHt9XFxuIC8vIG11dGF0ZSBgc2VsZmAgYXJlIGludGVybmFsbHkgc3luY2hyb25pemVkYFxcbiB1bnNhZmUgaW1wbFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZSBTeW5jIGZvciBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcXHUwMDNjVFxcdTAwM2VgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpc1xcbi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBgQWx3YXlzUmVmQ291bnRlZGAgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50XFxuLS8vIGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGEgbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50XFxuLS8vIGRlY3JlbWVudCBpcyBleGVjdXRlZC5cXG4tdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7XFxuKy8vIFNBRkVUWTogQWxsIGluc3RhbmNlcyBvZiBgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZWAgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGBSZWZDb3VudGVkYFxcbisvLyBlbnN1cmUgdGhhdCBpbmNyZW1lbnRzIHRvIHRoZSByZWYgY291bnQga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYVxcbisvLyBtYXRjaGluZyByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZSBSZWZDb3VudGVkIGZvciBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICBzZWxmLndyYXBwZXJfcmVmKCkucmVmY291bnQoKS5pbmMoKTtcXG4gICAgIH1cXG5AQCAtMjU1LDMgKzI1OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgfVxcbiAgICAgfVxcbiB9XFxuK1xcbisvLyBTQUZFVFk6IFdlIGN1cnJlbnRseSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NSZXF1ZXN0XFx1MDAzZWBcXG4rLy8gZnJvbSBhIGBcXHUwMDI2UmVxdWVzdGAgKGJ1dCB0aGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUpLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlIHt9XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2NyZWQucnMgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXFxuaW5kZXggZmZhMTU2YjlkZjM3Ny4uYjE3NzM2YTlhZGNkNSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xcbkBAIC04LDcgKzgsMTUgQEBcXG4gLy8hXFxuIC8vISBSZWZlcmVuY2U6IFxcdTAwM2NodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9zZWN1cml0eS9jcmVkZW50aWFscy5odG1sXFx1MDAzZVxcbiBcXG4tdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHRhc2s6Okt1aWQsIHR5cGVzOjpPcGFxdWV9O1xcbit1c2UgY3JhdGU6OntcXG4rICAgIGJpbmRpbmdzLFxcbisgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCxcXG4rICAgIHRhc2s6Okt1aWQsXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgT3BhcXVlLCAvL1xcbisgICAgfSwgLy9cXG4rfTtcXG4gXFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBjcmVkYC5cXG4gLy8vXFxuQEAgLTc2LDcgKzg0LDcgQEAgcHViIGZuIGV1aWQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIEt1aWQge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYENyZWRlbnRpYWxgIGlzIGFsd2F5cyByZWYtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC05MCwzICs5OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXFx1MDAzY0NyZWRlbnRpYWxcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9jcmVkKG9iai5jYXN0KCkuYXNfcHRyKCkpIH07XFxuICAgICB9XFxuIH1cXG4rXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjQ3JlZGVudGlhbFxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkNyZWRlbnRpYWxgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHt9XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xcbmluZGV4IDFhMzhiM2JiZGZiN2QuLjlhZmVjZDNmYTMyMzcgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXFxuQEAgLTgsOCArOCwxMiBAQFxcbiAgICAgYmluZGluZ3MsXFxuICAgICBmbXQsXFxuICAgICBwcmVsdWRlOjoqLFxcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBUmVmLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbiAgICAgdHlwZXM6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxcbiAgICAgICAgIE9wYXF1ZSwgLy9cXG4gICAgIH0sIC8vXFxuQEAgLTQ0OCw3ICs0NTIsNyBAQCBwdWIgZm4gbmFtZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNkNTdHIge1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTQ2MCw2ICs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NEZXZpY2VcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZEZXZpY2VgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cXG4rXFxuIC8vIFNBRkVUWTogQXMgYnkgdGhlIHR5cGUgaW52YXJpYW50IGBEZXZpY2VgIGNhbiBiZSBzZW50IHRvIGFueSB0aHJlYWQuXFxuIHVuc2FmZSBpbXBsIFNlbmQgZm9yIERldmljZSB7fVxcbiBcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXFxuaW5kZXggNWFlYWQ4MzVmYmJjMC4uY2VlN2UyNTAxMzY4OSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcXG5AQCAtMTQsNyArMTQsMTAgQEBcXG4gICAgIGZtdCxcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSxcXG4tICAgIHN5bmM6OmFyZWY6OkFSZWYsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuIH07XFxuIFxcbkBAIC0zNjAsNyArMzYzLDcgQEAgZm4gZm10KFxcdTAwMjZzZWxmLCBmOiBcXHUwMDI2bXV0IGZtdDo6Rm9ybWF0dGVyXFx1MDAzYydfXFx1MDAzZSkgLVxcdTAwM2UgZm10OjpSZXN1bHQge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRndOb2RlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHtcXG4rdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yIEZ3Tm9kZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlXFxuICAgICAgICAgLy8gcmVmY291bnQgaXMgbm9uLXplcm8uXFxuQEAgLTM3NCw2ICszNzcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NGd05vZGVcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZGd05vZGVgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge31cXG4rXFxuIGVudW0gTm9kZVxcdTAwM2MnYVxcdTAwM2Uge1xcbiAgICAgQm9ycm93ZWQoXFx1MDAyNidhIEZ3Tm9kZSksXFxuICAgICBPd25lZChBUmVmXFx1MDAzY0Z3Tm9kZVxcdTAwM2UpLFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xcbmluZGV4IDQ3N2NmNzcxZmIxMGUuLjZmYzAyZDUwNDMzNGUgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcXG5AQCAtMTcsNyArMTcsOCBAQFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN5bmM6OmFyZWY6OntcXG4gICAgICAgICBBUmVmLFxcbi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbiAgICAgfSxcXG4gICAgIHR5cGVzOjp7XFxuICAgICAgICAgTm90VGhyZWFkU2FmZSxcXG5AQCAtMzYyLDcgKzM2Myw3IEBAIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4gXFxuIC8vIFNBRkVUWTogRFJNIGRldmljZSBvYmplY3RzIGFyZSBhbHdheXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIHRoZSBnZXQvcHV0IGZ1bmN0aW9uc1xcbiAvLyBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IGRybTo6RHJpdmVyLCBDOiBEZXZpY2VDb250ZXh0XFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2VcXHUwMDNjVCwgQ1xcdTAwM2Uge1xcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBkcm06OkRyaXZlciwgQzogRGV2aWNlQ29udGV4dFxcdTAwM2UgUmVmQ291bnRlZCBmb3IgRGV2aWNlXFx1MDAzY1QsIENcXHUwMDNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTM3Nyw2ICszNzgsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVxcdTAwM2NULCBDXFx1MDAzZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NUOiBkcm06OkRyaXZlciwgQzogRGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjVCwgQ1xcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5ycyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXFxuaW5kZXggYzhiNjZkODE2ODcxOS4uODBhZmZlNjMzNWFjZiAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXFxuQEAgLTIxLDcgKzIxLDcgQEBcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzeW5jOjphcmVmOjp7XFxuICAgICAgICAgQVJlZixcXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuICAgICB9LFxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcXG4gfTtcXG5AQCAtMzQsNyArMzQsNyBAQFxcbiAjW2NmZyhDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUildXFxuIHB1YiBtb2Qgc2htZW07XFxuIFxcbi0vLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgQWx3YXlzUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxcbisvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxcbiAvLy9cXG4gLy8vIFNpbmNlIGFsbCBHRU0gb2JqZWN0cyB1c2UgdGhlIHNhbWUgcmVmY291bnRpbmcgc2NoZW1lLlxcbiAjW21hY3JvX2V4cG9ydF1cXG5AQCAtNDcsNyArNDcsNyBAQCBpbXBsICQoIFxcdTAwM2MkKCAkdHBhcmFtX2lkOmlkZW50ICksK1xcdTAwM2UgKT8gZm9yICR0eXBlOnR5XFxuICAgICAgICAgKT9cXG4gICAgICkgPVxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogQWxsIEdFTSBvYmplY3RzIGFyZSByZWZjb3VudGVkLlxcbi0gICAgICAgIHVuc2FmZSBpbXBsICQoIFxcdTAwM2MkKCAkdHBhcmFtX2lkICksK1xcdTAwM2UgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciAkdHlwZVxcbisgICAgICAgIHVuc2FmZSBpbXBsICQoIFxcdTAwM2MkKCAkdHBhcmFtX2lkICksK1xcdTAwM2UgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpSZWZDb3VudGVkIGZvciAkdHlwZVxcbiAgICAgICAgIHdoZXJlXFxuICAgICAgICAgICAgIFNlbGY6IEludG9HRU1PYmplY3QsXFxuICAgICAgICAgICAgICQoICQoICRiaW5kX3BhcmFtIDogJGJpbmRfdHJhaXQgKSwrICk/XFxuQEAgLTY2LDYgKzY2LDE0IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3RfcHV0KG9iaikgfTtcXG4gICAgICAgICAgICAgfVxcbiAgICAgICAgIH1cXG4rXFxuKyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2MkdHlwZVxcdTAwM2VgIGZyb20gYVxcbisgICAgICAgIC8vIGBcXHUwMDI2JHR5cGVgLlxcbisgICAgICAgIHVuc2FmZSBpbXBsICQoIFxcdTAwM2MkKCAkdHBhcmFtX2lkICksK1xcdTAwM2UgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciAkdHlwZVxcbisgICAgICAgIHdoZXJlXFxuKyAgICAgICAgICAgIFNlbGY6IEludG9HRU1PYmplY3QsXFxuKyAgICAgICAgICAgICQoICQoICRiaW5kX3BhcmFtIDogJGJpbmRfdHJhaXQgKSwrICk/XFxuKyAgICAgICAge31cXG4gICAgIH07XFxuIH1cXG4gI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV1cXG5AQCAtMTA5LDcgKzExNyw3IEBAIGZuIGNsb3NlKF9vYmo6IFxcdTAwMjZEcml2ZXJBbGxvY0ltcGxcXHUwMDNjU2VsZlxcdTAwM2UsIF9maWxlOiBcXHUwMDI2RHJpdmVyRmlsZVxcdTAwM2NTZWxmXFx1MDAzZSkge31cXG4gfVxcbiBcXG4gLy8vIFRyYWl0IHRoYXQgcmVwcmVzZW50cyBhIEdFTSBvYmplY3Qgc3VidHlwZVxcbi1wdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgKyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICsgQWx3YXlzUmVmQ291bnRlZCB7XFxuK3B1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCArIHN1cGVyOjpwcml2YXRlOjpTZWFsZWQgKyBSZWZDb3VudGVkIHtcXG4gICAgIC8vLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSByYXcgYGRybV9nZW1fb2JqZWN0YCBzdHJ1Y3R1cmUsIHdoaWNoIG11c3QgYmUgdmFsaWQgYXMgbG9uZyBhc1xcbiAgICAgLy8vIHRoaXMgb3duaW5nIG9iamVjdCBpcyB2YWxpZC5cXG4gICAgIGZuIGFzX3JhdyhcXHUwMDI2c2VsZikgLVxcdTAwM2UgKm11dCBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3Q7XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXFxuaW5kZXggMjNlZTY4OWJkMjQwMC4uNzIwZTU3NDE4MzU4ZCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xcbkBAIC0xMiw4ICsxMiwxNSBAQFxcbiAgICAgY3JlZDo6Q3JlZGVudGlhbCxcXG4gICAgIGVycm9yOjp7Y29kZTo6KiwgdG9fcmVzdWx0LCBFcnJvciwgUmVzdWx0fSxcXG4gICAgIGZtdCxcXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBUmVmLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbisgICAgdHlwZXM6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIE5vdFRocmVhZFNhZmUsXFxuKyAgICAgICAgT3BhcXVlLCAvL1xcbisgICAgfSwgLy9cXG4gfTtcXG4gdXNlIGNvcmU6OnB0cjtcXG4gXFxuQEAgLTE5Nyw3ICsyMDQsNyBAQCB1bnNhZmUgaW1wbCBTeW5jIGZvciBGaWxlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxcbiAvLyBtYWtlcyBgQVJlZlxcdTAwM2NGaWxlXFx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50Llxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGaWxlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRmlsZSB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXFxuQEAgLTIxMiw2ICsyMTksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjRmlsZVxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NGaWxlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RmlsZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge31cXG4rXFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBmaWxlYC4gTm90IHRocmVhZCBzYWZlLlxcbiAvLy9cXG4gLy8vIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgZmlsZSB0aGF0IGlzIG5vdCBrbm93biB0byBiZSBzYWZlIHRvIHRyYW5zZmVyIGFjcm9zcyB0aHJlYWQgYm91bmRhcmllcy5cXG5AQCAtMjMzLDcgKzI0NCw3IEBAIHB1YiBzdHJ1Y3QgTG9jYWxGaWxlIHtcXG4gXFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgTG9jYWxGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb25cXG4gLy8gbWFrZXMgYEFSZWZcXHUwMDNjTG9jYWxGaWxlXFx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50Llxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC0yNDksNiArMjYwLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXFx1MDAzY0xvY2FsRmlsZVxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NMb2NhbEZpbGVcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZMb2NhbEZpbGVgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge31cXG4rXFxuIGltcGwgTG9jYWxGaWxlIHtcXG4gICAgIC8vLyBDb25zdHJ1Y3RzIGEgbmV3IGBzdHJ1Y3QgZmlsZWAgd3JhcHBlciBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLlxcbiAgICAgLy8vXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xcbmluZGV4IDYyNGI5NzFjYThiMGIuLmY5YWFjYjg5NGY1MDUgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvaTJjLnJzXFxuQEAgLTE4LDcgKzE4LDggQEBcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzeW5jOjphcmVmOjp7XFxuICAgICAgICAgQVJlZixcXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4gICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLCAvL1xcbiB9O1xcbkBAIC00MjQsNyArNDI1LDcgQEAgcHViIGZuIGdldChpbmRleDogaTMyKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjQVJlZlxcdTAwM2NTZWxmXFx1MDAzZVxcdTAwM2Uge1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTtcXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJMmNBZGFwdGVyYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfZ2V0X2FkYXB0ZXIoc2VsZi5pbmRleCgpKSB9O1xcbkBAIC00MzUsNiArNDM2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH1cXG4gICAgIH1cXG4gfVxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0kyY0FkYXB0ZXJcXHUwMDNlYCBmcm9tIGFuXFxuKy8vIGBcXHUwMDI2STJjQWRhcHRlcmAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge31cXG4gXFxuIC8vLyBUaGUgaTJjIGJvYXJkIGluZm8gcmVwcmVzZW50YXRpb25cXG4gLy8vXFxuQEAgLTUwMCw3ICs1MDQsNyBAQCB1bnNhZmUgaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgZGV2aWNlOjpBc0J1c0RldmljZVxcdTAwM2NDdHhcXHUwMDNlIGZvciBJMmNDbGllbnRcXHUwMDNjQ1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNDbGllbnQpO1xcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0NsaWVudGAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcXG5AQCAtNTExLDYgKzUxNSw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwdXRfZGV2aWNlKFxcdTAwMjZyYXcgbXV0ICgqb2JqLmFzX3JlZigpLmFzX3JhdygpKS5kZXYpIH1cXG4gICAgIH1cXG4gfVxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0kyY0NsaWVudFxcdTAwM2VgIGZyb20gYW5cXG4rLy8gYFxcdTAwMjZJMmNDbGllbnRgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNDbGllbnQge31cXG4gXFxuIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIEFzUmVmXFx1MDAzY2RldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXHUwMDNlIGZvciBJMmNDbGllbnRcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICBmbiBhc19yZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbGliLnJzIGIvcnVzdC9rZXJuZWwvbGliLnJzXFxuaW5kZXggOTUxMmFmNzE1NmRmMi4uZWI1MjU2MjA0YTE3NCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9saWIucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9saWIucnNcXG5AQCAtMTAxLDYgKzEwMSw3IEBAXFxuIHB1YiBtb2Qgb2Y7XFxuICNbY2ZnKENPTkZJR19QTV9PUFApXVxcbiBwdWIgbW9kIG9wcDtcXG4rcHViIG1vZCBvd25lZDtcXG4gcHViIG1vZCBwYWdlO1xcbiAjW2NmZyhDT05GSUdfUENJKV1cXG4gcHViIG1vZCBwY2k7XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tLnJzIGIvcnVzdC9rZXJuZWwvbW0ucnNcXG5pbmRleCA0NzY0ZDdiNjhmMmE3Li44M2VkOTRmY2ExNGNhIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL21tLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvbW0ucnNcXG5AQCAtMTMsOCArMTMsMTUgQEBcXG4gXFxuIHVzZSBjcmF0ZTo6e1xcbiAgICAgYmluZGluZ3MsXFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxcbisgICAgICAgIE9wYXF1ZSwgLy9cXG4rICAgIH0sIC8vXFxuIH07XFxuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcXG4gXFxuQEAgLTU1LDcgKzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge31cXG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge31cXG4gXFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cXG5AQCAtNjksNiArNzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NNbVxcdTAwM2VgIGZyb20gYSBgXFx1MDAyNk1tYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW0ge31cXG4rXFxuIC8vLyBBIHdyYXBwZXIgZm9yIHRoZSBrZXJuZWwncyBgc3RydWN0IG1tX3N0cnVjdGAuXFxuIC8vL1xcbiAvLy8gVGhpcyB0eXBlIGlzIGxpa2UgW2BNbWBdLCBidXQgd2l0aCBub24temVybyBgbW1fdXNlcnNgLiBJdCBjYW4gb25seSBiZSB1c2VkIHdoZW4gYG1tX3VzZXJzYCBjYW5cXG5AQCAtOTEsNyArMTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fVxcbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxcbkBAIC0xMDUsNiArMTE1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY01tV2l0aFVzZXJcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZNbVdpdGhVc2VyYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7fVxcbitcXG4gLy8gTWFrZSBhbGwgYE1tYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlcmAuXFxuIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIge1xcbiAgICAgdHlwZSBUYXJnZXQgPSBNbTtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnMgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xcbmluZGV4IGI4ZDJmMDUxMjI1YzcuLjhmYmMzOTZlNDYwMjggMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xcbkBAIC0xMCw3ICsxMCwxMSBAQFxcbiB1c2UgY3JhdGU6OntcXG4gICAgIGJpbmRpbmdzLFxcbiAgICAgbW06Ok1tV2l0aFVzZXIsXFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLFxcbiB9O1xcbiB1c2UgY29yZTo6e29wczo6RGVyZWYsIHB0cjo6Tm9uTnVsbH07XFxuIFxcbkBAIC0zNCw3ICszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxcbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyQXN5bmMge31cXG4gXFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxcbkBAIC00OCw2ICs1MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NNbVdpdGhVc2VyQXN5bmNcXHUwMDNlYFxcbisvLyBmcm9tIGEgYFxcdTAwMjZNbVdpdGhVc2VyQXN5bmNgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge31cXG4rXFxuIC8vIE1ha2UgYWxsIGBNbVdpdGhVc2VyYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlckFzeW5jYC5cXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlckFzeW5jIHtcXG4gICAgIHR5cGUgVGFyZ2V0ID0gTW1XaXRoVXNlcjtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3BwLnJzIGIvcnVzdC9rZXJuZWwvb3BwLnJzXFxuaW5kZXggNjJlNDQ2NzYxMjVkMS4uYjhkYjZiZGVmZDA3NyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9vcHAucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9vcHAucnNcXG5AQCAtMTYsOCArMTYsMTQgQEBcXG4gICAgIGZmaTo6e2NfY2hhciwgY191bG9uZ30sXFxuICAgICBwcmVsdWRlOjoqLFxcbiAgICAgc3RyOjpDU3RyaW5nLFxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBUmVmLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbisgICAgdHlwZXM6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIE9wYXF1ZSwgLy9cXG4rICAgIH0sIC8vXFxuIH07XFxuIFxcbiAjW2NmZyhDT05GSUdfQ1BVX0ZSRVEpXVxcbkBAIC0xMDQxLDcgKzEwNDcsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBPUFAge31cXG4gdW5zYWZlIGltcGwgU3luYyBmb3IgT1BQIHt9XFxuIFxcbiAvLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IFtgT1BQYF0gaXMgYWx3YXlzIHJlZmNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE9QUCB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE9QUCB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXFxuQEAgLTEwNTUsNiArMTA2MSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY09QUFxcdTAwM2VgIGZyb20gYW5cXG4rLy8gYFxcdTAwMjZPUFBgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge31cXG4rXFxuIGltcGwgT1BQIHtcXG4gICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuXFxuICAgICAvLy9cXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3duZWQucnMgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYWNiNjExZjA4NGZmM1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xcbkBAIC0wLDAgKzEsMzczIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK1xcbisvLyEgVW5pcXVlIG93bmVkIHBvaW50ZXIgdHlwZXMgZm9yIG9iamVjdHMgd2l0aCBjdXN0b20gZHJvcCBsb2dpYy5cXG4rLy8hXFxuKy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0XFxuKy8vISBhcmUgb3duZWQgYnkgUnVzdCwgYnV0IG5lZWQgdG8gYmUgZnJlZWQgdGhyb3VnaCB0aGUgQyBBUEkuXFxuK1xcbit1c2UgY29yZTo6e1xcbisgICAgbWVtOjpNYW51YWxseURyb3AsXFxuKyAgICBvcHM6OntcXG4rICAgICAgICBEZXJlZixcXG4rICAgICAgICBEZXJlZk11dCwgLy9cXG4rICAgIH0sXFxuKyAgICBwaW46OlBpbixcXG4rICAgIHB0cjo6Tm9uTnVsbCwgLy9cXG4rfTtcXG4rdXNlIGtlcm5lbDo6e1xcbisgICAgc3luYzo6YXJlZjo6QVJlZixcXG4rICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvL1xcbit9O1xcbitcXG4rdXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlO1xcbitcXG4rLy8vIFR5cGVzIHRoYXQgc3BlY2lmeSB0aGVpciBvd24gd2F5IG9mIHBlcmZvcm1pbmcgYWxsb2NhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFR5cGljYWxseSwgdGhpcyB0cmFpdFxcbisvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLlxcbisvLy9cXG4rLy8vIEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSByZWZlcmVuY2VkIHZpYSB0aGUgW2BPd25lZFxcdTAwM2NTZWxmXFx1MDAzZWBdIHBvaW50ZXIgdHlwZS5cXG4rLy8vICAtIFRoaXMgaXMgdXNlZnVsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHRpZSB0aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0IHJlZmVyZW5jZSB0byBhbiBvd25lZFxcbisvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLlxcbisvLy8gIC0gW2BPd25hYmxlYF0gdHlwZXMgY2FuIGRlZmluZSBjdXN0b20gZHJvcCBsb2dpYyB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIG93bmVkIHJlZmVyZW5jZVxcbisvLy8gICAgb2YgdHlwZSBbYE93bmVkXFx1MDAzY19cXHUwMDNlYF0gcG9pbnRpbmcgdG8gdGhlIG9iamVjdCBpcyBkcm9wcGVkLlxcbisvLy9cXG4rLy8vIE5vdGU6IFRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnRpbmcsIGJlY2F1c2UgaXRcXG4rLy8vIHJlcHJlc2VudHMgYSB1bmlxdWUsIG93bmVkIHJlZmVyZW5jZS4gSWYgcmVmZXJlbmNlIGNvdW50aW5nIChvbiB0aGUgUnVzdCBzaWRlKSBpcyByZXF1aXJlZCxcXG4rLy8vIFtgUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZC4gW2BPd25hYmxlUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpZiBjb252ZXJzaW9uXFxuKy8vLyBiZXR3ZWVuIHVuaXF1ZSBhbmQgc2hhcmVkIChyZWZlcmVuY2UgY291bnRlZCkgb3duZXJzaGlwIGlzIG5lZWRlZC5cXG4rLy8vXFxuKy8vLyAjIEV4YW1wbGVzXFxuKy8vL1xcbisvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoIFtgT3duZWRgXSBsb29rcyBsaWtlXFxuKy8vLyB0aGlzOlxcbisvLy9cXG4rLy8vIGBgYFxcbisvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV1cXG4rLy8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7XFxuKy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XFxuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrO1xcbisvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTtcXG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZX07XFxuKy8vL1xcbisvLy8gLy8gTGV0J3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLlxcbisvLy8ga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jayEge1xcbisvLy8gICAgIC8vIFNBRkVUWTogd2UgY2FsbCBgaW5pdCgpYCByaWdodCBiZWxvdywgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuXFxuKy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXhcXHUwMDNjdXNpemVcXHUwMDNlID0gMDtcXG4rLy8vIH1cXG4rLy8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuXFxuKy8vLyB1bnNhZmUgeyBGT09fQUxMT0NfQ09VTlQuaW5pdCgpIH07XFxuKy8vL1xcbisvLy8gc3RydWN0IEZvbztcXG4rLy8vXFxuKy8vLyBpbXBsIEZvbyB7XFxuKy8vLyAgICAgZm4gbmV3KCkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZSB7XFxuKy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXFxuKy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC5cXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcXG4rLy8vICAgICAgICAgICAgIEZvbyB7fSxcXG4rLy8vICAgICAgICAgICAgIGZsYWdzOjpHRlBfS0VSTkVMLFxcbisvLy8gICAgICAgICApPztcXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTtcXG4rLy8vICAgICAgICAgLy8gQ291bnQgbmV3IGFsbG9jYXRpb25cXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgKz0gMTtcXG4rLy8vICAgICAgICAgLy8gU0FGRVRZOlxcbisvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuXFxuKy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuXFxuKy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXFxuKy8vLyAgICAgfVxcbisvLy8gfVxcbisvLy9cXG4rLy8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcXG4rLy8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFxcdTAwM2NTZWxmXFx1MDAzZWBdIGlzIHN0aWxsIGFsaXZlLiBXZSBjYW4gcGFzcyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdLCBhc1xcbisvLy8gICAgICAgICAvLyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXFxuKy8vLyAgICAgICAgIGRyb3AodW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfSk7XFxuKy8vLyAgICAgICAgIC8vIENvdW50IHJlbGVhc2VkIGFsbG9jYXRpb25cXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgLT0gMTtcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8ge1xcbisvLy8gICAgbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xcbisvLy8gICAgYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAxKTtcXG4rLy8vIH1cXG4rLy8vIC8vIGBmb29gIGlzIG91dCBvZiBzY29wZSBub3csIHNvIHdlIGV4cGVjdCBubyBsaXZlIGFsbG9jYXRpb25zLlxcbisvLy8gYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAwKTtcXG4rLy8vICMgT2s6OlxcdTAwM2MoKSwgRXJyb3JcXHUwMDNlKCgpKVxcbisvLy8gYGBgXFxuK3B1YiB0cmFpdCBPd25hYmxlIHtcXG4rICAgIC8vLyBUZWFyIGRvd24gdGhpcyBgT3duYWJsZWAuXFxuKyAgICAvLy9cXG4rICAgIC8vLyBJbXBsZW1lbnRlcnMgb2YgYE93bmFibGVgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjbGVhbiB1cCB0aGUgdXNlIG9mIGBTZWxmYC4gVGhpcyBjYW5cXG4rICAgIC8vLyBpbmNsdWRlIGZyZWVpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxcbisgICAgLy8vXFxuKyAgICAvLy8gIyBTYWZldHlcXG4rICAgIC8vL1xcbisgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLFxcbisgICAgLy8vIGFuZCB0aGF0IHRoaXMgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLiBgdGhpc2AgbXVzdCBub3QgYmUgdXNlZFxcbisgICAgLy8vIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFzIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGZyZWVkLlxcbisgICAgLy8vXFxuKyAgICAvLy8gYHRoaXNgIGlzIHBpbm5lZCBhbmQgaW1wbGVtZW50ZXJzIG9mIHRoaXMgbWV0aG9kIG11c3Qgb2JzZXJ2ZSB0aGlzIGNvbnN0cmFpbnQuXFxuKyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKTtcXG4rfVxcbitcXG4rLy8vIEEgbXV0YWJsZSByZWZlcmVuY2UgdG8gYW4gb3duZWQgYFRgLlxcbisvLy9cXG4rLy8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzXFxuKy8vLyBkcm9wcGVkLlxcbisvLy9cXG4rLy8vICMgSW52YXJpYW50c1xcbisvLy9cXG4rLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWRcXHUwMDNjVFxcdTAwM2VgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLlxcbisvLy8gLSBUaGUgYFRgIHZhbHVlIGlzIHBpbm5lZC5cXG4rcHViIHN0cnVjdCBPd25lZFxcdTAwM2NUOiBPd25hYmxlXFx1MDAzZSB7XFxuKyAgICBwdHI6IE5vbk51bGxcXHUwMDNjVFxcdTAwM2UsXFxuK31cXG4rXFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVxcdTAwM2UgT3duZWRcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BPd25lZGBdLlxcbisgICAgLy8vXFxuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICAvLy9cXG4rICAgIC8vLyAjIFNhZmV0eVxcbisgICAgLy8vXFxuKyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0OlxcbisgICAgLy8vIC0gYHB0cmAgcG9pbnRzIHRvIGEgdmFsaWQgaW5zdGFuY2Ugb2YgYFRgLlxcbisgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZFxcdTAwM2NUXFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXFx1MDAzY1RcXHUwMDNlKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLlxcbisgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uXFxuKyAgICAgICAgU2VsZiB7IHB0ciB9XFxuKyAgICB9XFxuK1xcbisgICAgLy8vIENvbnN1bWVzIHRoZSBbYE93bmVkYF0sIHJldHVybmluZyBhIHJhdyBwb2ludGVyLlxcbisgICAgLy8vXFxuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGVcXG4rICAgIC8vLyB1bmRlcmx5aW5nIGBUYCBpcyB3aXRoIHRoZSBjYWxsZXIuXFxuKyAgICAvLy9cXG4rICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLlxcbisgICAgI1tpbmxpbmVdXFxuKyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cXHUwMDNlIE5vbk51bGxcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHJcXG4rICAgIH1cXG4rXFxuKyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkXFx1MDAzY1RcXHUwMDNlYC5cXG4rICAgICNbaW5saW5lXVxcbisgICAgcHViIGZuIGFzX3Bpbl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBQaW5cXHUwMDNjXFx1MDAyNm11dCBUXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcXG4rICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cXG4rICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuXFxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGFuIFtgT3duZWRcXHUwMDNjVFxcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFNlbmRgXSxcXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYE93bmVkXFx1MDAzY1RcXHUwMDNlYF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgVGAuXFxuK3Vuc2FmZSBpbXBsXFx1MDAzY1Q6IE93bmFibGUgKyBTZW5kXFx1MDAzZSBTZW5kIGZvciBPd25lZFxcdTAwM2NUXFx1MDAzZSB7fVxcbitcXG4rLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgW2BcXHUwMDI2T3duZWRcXHUwMDNjVFxcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFN5bmNgXSxcXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYFxcdTAwMjZPd25lZFxcdTAwM2NUXFx1MDAzZWBdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFxcdTAwMjZUYC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogT3duYWJsZSArIFN5bmNcXHUwMDNlIFN5bmMgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHt9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGVcXHUwMDNlIERlcmVmIGZvciBPd25lZFxcdTAwM2NUXFx1MDAzZSB7XFxuKyAgICB0eXBlIFRhcmdldCA9IFQ7XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBkZXJlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNlNlbGY6OlRhcmdldCB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQuXFxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGUgKyBVbnBpblxcdTAwM2UgRGVyZWZNdXQgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZGVyZWZfbXV0KFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgXFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xcbisgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5XFxuKyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXFxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGVcXHUwMDNlIERyb3AgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgXFx1MDAyNm11dCBzZWxmYCB3ZSBleGNsdXNpdmVseSBvd24gYHNlbGZgIGFuZCB0aGUgdW5kZXJseWluZyBgVGAuIEFzXFxuKyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLlxcbisgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vIFNBRkVUWTogV2UgZGVyaXZlIHRoZSBwb2ludGVyIHRvIGBUYCBmcm9tIGEgdmFsaWQgYFRgLCBzbyB0aGUgcmV0dXJuZWRcXG4rLy8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBPd25hYmxlXFx1MDAzZSBGb3JlaWduT3duYWJsZSBmb3IgT3duZWRcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgY29uc3QgRk9SRUlHTl9BTElHTjogdXNpemUgPSBjb3JlOjptZW06OmFsaWduX29mOjpcXHUwMDNjVFxcdTAwM2UoKTtcXG4rXFxuKyAgICB0eXBlIEJvcnJvd2VkXFx1MDAzYydhXFx1MDAzZVxcbisgICAgICAgID0gXFx1MDAyNidhIFRcXG4rICAgIHdoZXJlXFxuKyAgICAgICAgU2VsZjogJ2E7XFxuKyAgICB0eXBlIEJvcnJvd2VkTXV0XFx1MDAzYydhXFx1MDAzZVxcbisgICAgICAgID0gUGluXFx1MDAzY1xcdTAwMjYnYSBtdXQgVFxcdTAwM2VcXG4rICAgIHdoZXJlXFxuKyAgICAgICAgU2VsZjogJ2E7XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLVxcdTAwM2UgKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkIHtcXG4rICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpXFxuKyAgICB9XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICB1bnNhZmUgZm4gZnJvbV9mb3JlaWduKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgY2FtZSBmcm9tIGBpbnRvX2ZvcmVpZ25gIGFuZCBjYW5ub3QgYmUgbnVsbC5cXG4rICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwdHIuY2FzdCgpKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIHdhcyByZXR1cm5lZCBieSBgaW50b19mb3JlaWduYCwgd2hpY2ggZ2F2ZVxcbisgICAgICAgIC8vIHVwIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgYSB2YWxpZCwgcGlubmVkIGBUYDsgd2UgcmV0YWtlIHRoYXQgb3duZXJzaGlwIGhlcmUuXFxuKyAgICAgICAgdW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHB0cikgfVxcbisgICAgfVxcbitcXG4rICAgICNbaW5saW5lXVxcbisgICAgdW5zYWZlIGZuIGJvcnJvd1xcdTAwM2MnYVxcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cXHUwMDNlIFNlbGY6OkJvcnJvd2VkXFx1MDAzYydhXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGFcXG4rICAgICAgICAvLyByZWZlcmVuY2UgZm9yIGAnYWAuXFxuKyAgICAgICAgdW5zYWZlIHsgXFx1MDAyNipwdHIuY2FzdCgpIH1cXG4rICAgIH1cXG4rXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHVuc2FmZSBmbiBib3Jyb3dfbXV0XFx1MDAzYydhXFx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVxcdTAwM2UgU2VsZjo6Qm9ycm93ZWRNdXRcXHUwMDNjJ2FcXHUwMDNlIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYVxcbisgICAgICAgIC8vIHVuaXF1ZSByZWZlcmVuY2UgZm9yIGAnYWAuXFxuKyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgXFx1MDAyNm11dCAqcHRyLmNhc3QoKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIG5ldmVyIG1vdmUgb3V0IG9mIGlubmVyLCBhbmQgd2UgZG8gbm90IGhhbmQgb3V0IG11dGFibGVcXG4rICAgICAgICAvLyByZWZlcmVuY2VzIHdoZW4gYFQ6ICFVbnBpbmAuXFxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKGlubmVyKSB9XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vLyBBIHRyYWl0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHdyYXBwZWQgaW4gZWl0aGVyIG9uZSBvZiB0aGUgcmVmZXJlbmNlIHR5cGVzIFtgT3duZWRgXSBhbmRcXG4rLy8vIFtgQVJlZmBdLlxcbisvLy9cXG4rLy8vICMgRXhhbXBsZXNcXG4rLy8vXFxuKy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVSZWZDb3VudGVkYF0sIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aFxcbisvLy8gW2BBUmVmYF0gYW5kIFtgT3duZWRgXSBsb29rcyBsaWtlIHRoaXM6XFxuKy8vL1xcbisvLy8gYGBgXFxuKy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxcbisvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDtcXG4rLy8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcXG4rLy8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XFxuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBSZWZDb3VudGVkfTtcXG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZSwgT3duYWJsZVJlZkNvdW50ZWR9O1xcbisvLy9cXG4rLy8vIC8vIEFuIGludGVybmFsbHkgcmVmY291bnRlZCBzdHJ1Y3QgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuXFxuKy8vLyAvL1xcbisvLy8gLy8gIyBJbnZhcmlhbnRzXFxuKy8vLyAvL1xcbisvLy8gLy8gLSBgcmVmY291bnRgIGlzIGFsd2F5cyBub24temVybyBmb3IgYSB2YWxpZCBvYmplY3QuXFxuKy8vLyAvLyAtIGByZWZjb3VudGAgaXMgXFx1MDAzZTEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC5cXG4rLy8vIC8vXFxuKy8vLyBzdHJ1Y3QgRm9vIHtcXG4rLy8vICAgICByZWZjb3VudDogQ2VsbFxcdTAwM2N1c2l6ZVxcdTAwM2UsXFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gaW1wbCBGb28ge1xcbisvLy8gICAgIGZuIG5ldygpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NTZWxmXFx1MDAzZVxcdTAwM2Uge1xcbisvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xcbisvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXFxuKy8vLyAgICAgICAgIC8vIElOVkFSSUFOVDogV2UgaW5pdGlhbGl6ZSBgcmVmY291bnRgIHRvIDEsIHNhdGlzZnlpbmcgdGhlIGludmFyaWFudHMuXFxuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXFxuKy8vLyAgICAgICAgICAgICBGb28ge1xcbisvLy8gICAgICAgICAgICAgICAgIHJlZmNvdW50OiBDZWxsOjpuZXcoMSksXFxuKy8vLyAgICAgICAgICAgICB9LFxcbisvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXFxuKy8vLyAgICAgICAgICk/O1xcbisvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xcbisvLy8gICAgICAgICAvLyBTQUZFVFk6XFxuKy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cXG4rLy8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cXG4rLy8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gLy8gU0FGRVRZOiBXZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBlYWNoIHRpbWUgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBvbmx5IGZyZWVcXG4rLy8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uXFxuKy8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBGb28ge1xcbisvLy8gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4rLy8vICAgICAgICAgc2VsZi5yZWZjb3VudC5yZXBsYWNlKHNlbGYucmVmY291bnQuZ2V0KCkgKyAxKTtcXG4rLy8vICAgICB9XFxuKy8vL1xcbisvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKHRoaXM6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4rLy8vICAgICAgICAgLy8gU0FGRVRZOiBCeSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSByZWZjb3VudCBpcyBub24temVybyxcXG4rLy8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLlxcbisvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyBcXHUwMDI2dGhpcy5hc19yZWYoKS5yZWZjb3VudCB9O1xcbisvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxO1xcbisvLy8gICAgICAgICBpZiBuZXdfcmVmY291bnQgPT0gMCB7XFxuKy8vLyAgICAgICAgICAgICAvLyBUaGUgYEZvb2Agd2lsbCBiZSBkcm9wcGVkIHdoZW4gYEtCb3hgIGdvZXMgb3V0IG9mIHNjb3BlLlxcbisvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94XFx1MDAzY0Zvb1xcdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZSBhcyB0aGUgb2xkIHJlZmNvdW50IGlzIDEuIFdlIGNhbiBwYXNzXFxuKy8vLyAgICAgICAgICAgICAvLyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdIGFzIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbixcXG4rLy8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLlxcbisvLy8gICAgICAgICAgICAgdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfTtcXG4rLy8vICAgICAgICAgfSBlbHNlIHtcXG4rLy8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTtcXG4rLy8vICAgICAgICAgfVxcbisvLy8gICAgIH1cXG4rLy8vIH1cXG4rLy8vXFxuKy8vLyBpbXBsIE93bmFibGVSZWZDb3VudGVkIGZvciBGb28ge1xcbisvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXFx1MDAzY1NlbGZcXHUwMDNlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjT3duZWRcXHUwMDNjU2VsZlxcdTAwM2UsIEFSZWZcXHUwMDNjU2VsZlxcdTAwM2VcXHUwMDNlIHtcXG4rLy8vICAgICAgICAgaWYgdGhpcy5yZWZjb3VudC5nZXQoKSA9PSAxIHtcXG4rLy8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIGBGb29gIGlzIHN0aWxsIGFsaXZlIGFuZCBoYXMgbm8gb3RoZXIgUnVzdCByZWZlcmVuY2VzIGFzIHRoZSByZWZjb3VudFxcbisvLy8gICAgICAgICAgICAgLy8gaXMgMS5cXG4rLy8vICAgICAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhBUmVmOjppbnRvX3Jhdyh0aGlzKSkgfSlcXG4rLy8vICAgICAgICAgfSBlbHNlIHtcXG4rLy8vICAgICAgICAgICAgIEVycih0aGlzKVxcbisvLy8gICAgICAgICB9XFxuKy8vLyAgICAgfVxcbisvLy9cXG4rLy8vICAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZFxcdTAwM2NTZWxmXFx1MDAzZSkgLVxcdTAwM2UgQVJlZlxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogQW4gYE93bmVkXFx1MDAzY0Zvb1xcdTAwM2VgIGhvbGRzIHRoZSB1bmlxdWUgcmVmZXJlbmNlIChyZWZjb3VudCAxKSwgd2hpY2ggd2UgdHJhbnNmZXIgdG9cXG4rLy8vICAgICAgICAgLy8gdGhlIG5ldyBgQVJlZmAuXFxuKy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfVxcbisvLy8gICAgIH1cXG4rLy8vIH1cXG4rLy8vXFxuKy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XFxuKy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IFVzaW5nIGBkZWNfcmVmKClgIGZyb20gW2BSZWZDb3VudGVkYF0gdG8gcmVsZWFzZSBpcyBva2F5LCBhcyB0aGUgcmVmY291bnQgaXNcXG4rLy8vICAgICAgICAgLy8gYWx3YXlzIDEgZm9yIGFuIFtgT3duZWRcXHUwMDNjRm9vXFx1MDAzZWBdLlxcbisvLy8gICAgICAgICB1bnNhZmUgeyBGb286OmRlY19yZWYodGhpcykgfTtcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xcbisvLy8gbGV0IGZvbyA9IEFSZWY6OmZyb20oZm9vKTtcXG4rLy8vIHtcXG4rLy8vICAgICBsZXQgYmFyID0gZm9vLmNsb25lKCk7XFxuKy8vLyAgICAgYXNzZXJ0IShPd25lZDo6dHJ5X2Zyb20oYmFyKS5pc19lcnIoKSk7XFxuKy8vLyB9XFxuKy8vLyBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShmb28pLmlzX29rKCkpO1xcbisvLy8gIyBPazo6XFx1MDAzYygpLCBFcnJvclxcdTAwM2UoKCkpXFxuKy8vLyBgYGBcXG4rcHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICsgT3duYWJsZSArIFNpemVkIHtcXG4rICAgIC8vLyBDaGVja3MgaWYgdGhlIFtgQVJlZmBdIGlzIHVuaXF1ZSBhbmQgY29udmVydHMgaXQgdG8gYW4gW2BPd25lZGBdIGlmIHRoYXQgaXMgdGhlIGNhc2UuXFxuKyAgICAvLy8gT3RoZXJ3aXNlIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZlxcdTAwM2NTZWxmXFx1MDAzZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlLCBBUmVmXFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZTtcXG4rXFxuKyAgICAvLy8gQ29udmVydHMgdGhlIFtgT3duZWRgXSBpbnRvIGFuIFtgQVJlZmBdLlxcbisgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcXHUwMDNjU2VsZlxcdTAwM2UpIC1cXHUwMDNlIEFSZWZcXHUwMDNjU2VsZlxcdTAwM2U7XFxuK31cXG4rXFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVJlZkNvdW50ZWRcXHUwMDNlIFRyeUZyb21cXHUwMDNjQVJlZlxcdTAwM2NUXFx1MDAzZVxcdTAwM2UgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgIHR5cGUgRXJyb3IgPSBBUmVmXFx1MDAzY1RcXHUwMDNlO1xcbisgICAgLy8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIFtgQVJlZmBdIHRvIGFuIFtgT3duZWRgXSBieSBjYWxsaW5nXFxuKyAgICAvLy8gW2B0cnlfZnJvbV9zaGFyZWQoKWBdKE93bmFibGVSZWZDb3VudGVkOjp0cnlfZnJvbV9zaGFyZWQpLiBJbiBjYXNlIHRoZSBbYEFSZWZgXSBpcyBub3RcXG4rICAgIC8vLyB1bmlxdWUsIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIGZuIHRyeV9mcm9tKGI6IEFSZWZcXHUwMDNjVFxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NUXFx1MDAzZSwgU2VsZjo6RXJyb3JcXHUwMDNlIHtcXG4rICAgICAgICBUOjp0cnlfZnJvbV9zaGFyZWQoYilcXG4rICAgIH1cXG4rfVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wYWdlLnJzIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xcbmluZGV4IDFjMDc5NmVhMjI5ZjAuLjMyZGQwMzBjODMxNTkgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BhZ2UucnNcXG5AQCAtMTIsMTYgKzEyLDE2IEBAXFxuICAgICAgICAgY29kZTo6KixcXG4gICAgICAgICBSZXN1bHQsIC8vXFxuICAgICB9LFxcbisgICAgdHlwZXM6OntcXG4rICAgICAgICBPcGFxdWUsXFxuKyAgICAgICAgT3duYWJsZSxcXG4rICAgICAgICBPd25lZCwgLy9cXG4rICAgIH0sXFxuICAgICB1YWNjZXNzOjpVc2VyU2xpY2VSZWFkZXIsIC8vXFxuIH07XFxuLXVzZSBjb3JlOjp7XFxuLSAgICBtYXJrZXI6OlBoYW50b21EYXRhLFxcbi0gICAgbWVtOjpNYW51YWxseURyb3AsXFxuLSAgICBvcHM6OkRlcmVmLFxcbi0gICAgcHRyOjp7XFxuLSAgICAgICAgc2VsZixcXG4tICAgICAgICBOb25OdWxsLCAvL1xcbi0gICAgfSwgLy9cXG4rdXNlIGNvcmU6OnB0cjo6e1xcbisgICAgc2VsZixcXG4rICAgIE5vbk51bGwsIC8vXFxuIH07XFxuIFxcbiAvLy8gQSBiaXR3aXNlIHNoaWZ0IGZvciB0aGUgcGFnZSBzaXplLlxcbkBAIC02NSw5MyArNjUsMjkgQEAgcHViIGNvbnN0IGZuIHBhZ2VfYWxpZ24oYWRkcjogdXNpemUpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2N1c2l6ZVxcdTAwM2Uge1xcbiAgICAgU29tZShzdW0gXFx1MDAyNiBQQUdFX01BU0spXFxuIH1cXG4gXFxuLS8vLyBSZXByZXNlbnRhdGlvbiBvZiBhIG5vbi1vd25pbmcgcmVmZXJlbmNlIHRvIGEgW2BQYWdlYF0uXFxuLS8vL1xcbi0vLy8gVGhpcyB0eXBlIHByb3ZpZGVzIGEgYm9ycm93ZWQgdmVyc2lvbiBvZiBhIFtgUGFnZWBdIHRoYXQgaXMgb3duZWQgYnkgc29tZSBvdGhlciBlbnRpdHksIGUuZy4gYVxcbi0vLy8gW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiBzdWNoIGFzIFtgVkJveGBdLlxcbi0vLy9cXG4tLy8vICMgRXhhbXBsZVxcbi0vLy9cXG4tLy8vIGBgYFxcbi0vLy8gIyB1c2Uga2VybmVsOjp7YmluZGluZ3MsIHByZWx1ZGU6Oip9O1xcbi0vLy8gdXNlIGtlcm5lbDo6cGFnZTo6e0JvcnJvd2VkUGFnZSwgUGFnZSwgUEFHRV9TSVpFfTtcXG4tLy8vICMgdXNlIGNvcmU6OnttZW06Ok1heWJlVW5pbml0LCBwdHIsIHB0cjo6Tm9uTnVsbCB9O1xcbi0vLy9cXG4tLy8vIGZuIGJvcnJvd19wYWdlXFx1MDAzYydhXFx1MDAzZSh2Ym94OiBcXHUwMDI2J2EgbXV0IFZCb3hcXHUwMDNjTWF5YmVVbmluaXRcXHUwMDNjW3U4OyBQQUdFX1NJWkVdXFx1MDAzZVxcdTAwM2UpIC1cXHUwMDNlIEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2Uge1xcbi0vLy8gICAgIGxldCBwdHIgPSBwdHI6OmZyb21fcmVmKFxcdTAwMjYqKnZib3gpO1xcbi0vLy9cXG4tLy8vICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5Llxcbi0vLy8gICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OnZtYWxsb2NfdG9fcGFnZShwdHIuY2FzdCgpKSB9O1xcbi0vLy9cXG4tLy8vICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxcbi0vLy8gICAgIC8vIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS5cXG4tLy8vICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcXG4tLy8vXFxuLS8vLyAgICAgLy8gU0FGRVRZOlxcbi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC5cXG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGBzZWxmYC5cXG4tLy8vICAgICB1bnNhZmUgeyBCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH1cXG4tLy8vIH1cXG4tLy8vXFxuLS8vLyBsZXQgbXV0IHZib3ggPSBWQm94OjpcXHUwMDNjW3U4OyBQQUdFX1NJWkVdXFx1MDAzZTo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87XFxuLS8vLyBsZXQgcGFnZSA9IGJvcnJvd19wYWdlKFxcdTAwMjZtdXQgdmJveCk7XFxuLS8vL1xcbi0vLy8gLy8gU0FGRVRZOiBUaGVyZSBpcyBubyBjb25jdXJyZW50IHJlYWQgb3Igd3JpdGUgdG8gdGhpcyBwYWdlLlxcbi0vLy8gdW5zYWZlIHsgcGFnZS5maWxsX3plcm9fcmF3KDAsIFBBR0VfU0laRSk/IH07XFxuLS8vLyAjIE9rOjpcXHUwMDNjKCksIEVycm9yXFx1MDAzZSgoKSlcXG4tLy8vIGBgYFxcbi0vLy9cXG4tLy8vICMgSW52YXJpYW50c1xcbi0vLy9cXG4tLy8vIFRoZSBib3Jyb3dlZCB1bmRlcmx5aW5nIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIGAnYWAuXFxuLS8vL1xcbi0vLy8gW2BWQm94YF06IGtlcm5lbDo6YWxsb2M6OlZCb3hcXG4tLy8vIFtgVm1hbGxvY2BdOiBrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NcXG4tcHViIHN0cnVjdCBCb3Jyb3dlZFBhZ2VcXHUwMDNjJ2FcXHUwMDNlKE1hbnVhbGx5RHJvcFxcdTAwM2NQYWdlXFx1MDAzZSwgUGhhbnRvbURhdGFcXHUwMDNjXFx1MDAyNidhIFBhZ2VcXHUwMDNlKTtcXG4tXFxuLWltcGxcXHUwMDNjJ2FcXHUwMDNlIEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2Uge1xcbi0gICAgLy8vIENvbnN0cnVjdHMgYSBbYEJvcnJvd2VkUGFnZWBdIGZyb20gYSByYXcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuXFxuLSAgICAvLy9cXG4tICAgIC8vLyAjIFNhZmV0eVxcbi0gICAgLy8vXFxuLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC5cXG4tICAgIC8vLyAtIGBwdHJgIG11c3QgcmVtYWluIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIGAnYWAuXFxuLSAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbFxcdTAwM2NiaW5kaW5nczo6cGFnZVxcdTAwM2UpIC1cXHUwMDNlIFNlbGYge1xcbi0gICAgICAgIGxldCBwYWdlID0gUGFnZSB7IHBhZ2U6IHB0ciB9O1xcbi1cXG4tICAgICAgICAvLyBJTlZBUklBTlQ6IFRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIGd1YXJhbnRlZSB0aGF0IGBwdHJgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lXFxuLSAgICAgICAgLy8gYCdhYC5cXG4tICAgICAgICBTZWxmKE1hbnVhbGx5RHJvcDo6bmV3KHBhZ2UpLCBQaGFudG9tRGF0YSlcXG4tICAgIH1cXG4tfVxcbi1cXG4taW1wbFxcdTAwM2MnYVxcdTAwM2UgRGVyZWYgZm9yIEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2Uge1xcbi0gICAgdHlwZSBUYXJnZXQgPSBQYWdlO1xcbi1cXG4tICAgIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4tICAgICAgICBcXHUwMDI2c2VsZi4wXFxuLSAgICB9XFxuLX1cXG4tXFxuLS8vLyBUcmFpdCB0byBiZSBpbXBsZW1lbnRlZCBieSB0eXBlcyB3aGljaCBwcm92aWRlIGFuIFtgSXRlcmF0b3JgXSBpbXBsZW1lbnRhdGlvbiBvZlxcbi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cXG4rLy8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMsIHN1Y2ggYXNcXG4rLy8vIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxcbiBwdWIgdHJhaXQgQXNQYWdlSXRlciB7XFxuICAgICAvLy8gVGhlIFtgSXRlcmF0b3JgXSB0eXBlLCBlLmcuIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxcbi0gICAgdHlwZSBJdGVyXFx1MDAzYydhXFx1MDAzZTogSXRlcmF0b3JcXHUwMDNjSXRlbSA9IEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlXFxuKyAgICB0eXBlIEl0ZXJcXHUwMDNjJ2FcXHUwMDNlOiBJdGVyYXRvclxcdTAwM2NJdGVtID0gXFx1MDAyNidhIFBhZ2VcXHUwMDNlXFxuICAgICB3aGVyZVxcbiAgICAgICAgIFNlbGY6ICdhO1xcbiBcXG4tICAgIC8vLyBSZXR1cm5zIGFuIFtgSXRlcmF0b3JgXSBvZiBbYEJvcnJvd2VkUGFnZWBdIGl0ZW1zIG92ZXIgYWxsIHBhZ2VzIG93bmVkIGJ5IGBzZWxmYC5cXG4rICAgIC8vLyBSZXR1cm5zIGFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXSByZWZlcmVuY2VzIG92ZXIgYWxsIHBhZ2VzIG93bmVkIGJ5IGBzZWxmYC5cXG4gICAgIGZuIHBhZ2VfaXRlcihcXHUwMDI2bXV0IHNlbGYpIC1cXHUwMDNlIFNlbGY6Okl0ZXJcXHUwMDNjJ19cXHUwMDNlO1xcbiB9XFxuIFxcbi0vLy8gQSBwb2ludGVyIHRvIGEgcGFnZSB0aGF0IG93bnMgdGhlIHBhZ2UgYWxsb2NhdGlvbi5cXG4rLy8vIEEgYHN0cnVjdCBwYWdlYC5cXG4rLy8vXFxuKy8vLyBBIGBQYWdlYCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEgc2hhcmVkIHJlZmVyZW5jZSBvciB0aHJvdWdoIGFuIG93bmluZyBbYE93bmVkXFx1MDAzY1BhZ2VcXHUwMDNlYF07IHRoZSBsYXR0ZXJcXG4rLy8vIGZyZWVzIHRoZSBwYWdlIGFsbG9jYXRpb24gd2hlbiBpdCBpcyBkcm9wcGVkLlxcbiAvLy9cXG4gLy8vICMgSW52YXJpYW50c1xcbiAvLy9cXG4tLy8vIFRoZSBwb2ludGVyIGlzIHZhbGlkLCBhbmQgaGFzIG93bmVyc2hpcCBvdmVyIHRoZSBwYWdlLlxcbisvLy8gVGhlIGBQYWdlYCBpcyBiYWNrZWQgYnkgYSB2YWxpZCBgc3RydWN0IHBhZ2VgLlxcbisjW3JlcHIodHJhbnNwYXJlbnQpXVxcbiBwdWIgc3RydWN0IFBhZ2Uge1xcbi0gICAgcGFnZTogTm9uTnVsbFxcdTAwM2NiaW5kaW5nczo6cGFnZVxcdTAwM2UsXFxuKyAgICBwYWdlOiBPcGFxdWVcXHUwMDNjYmluZGluZ3M6OnBhZ2VcXHUwMDNlLFxcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IFBhZ2VzIGhhdmUgbm8gbG9naWMgdGhhdCByZWxpZXMgb24gdGhlbSBzdGF5aW5nIG9uIGEgZ2l2ZW4gdGhyZWFkLCBzbyBtb3ZpbmcgdGhlbSBhY3Jvc3NcXG5AQCAtMTg1LDE5ICsxMjEsMjAgQEAgaW1wbCBQYWdlIHtcXG4gICAgIC8vLyAjIE9rOjpcXHUwMDNjKCksIGtlcm5lbDo6YWxsb2M6OkFsbG9jRXJyb3JcXHUwMDNlKCgpKVxcbiAgICAgLy8vIGBgYFxcbiAgICAgI1tpbmxpbmVdXFxuLSAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmLCBBbGxvY0Vycm9yXFx1MDAzZSB7XFxuKyAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NTZWxmXFx1MDAzZSwgQWxsb2NFcnJvclxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgZ2ZwX2ZsYWdzYCwgdGhpcyBjYWxsIG1heSBzbGVlcC4gT3RoZXIgdGhhbiB0aGF0LCBpdFxcbiAgICAgICAgIC8vIGlzIGFsd2F5cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2QuXFxuICAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6YWxsb2NfcGFnZXMoZmxhZ3MuYXNfcmF3KCksIDApIH07XFxuICAgICAgICAgbGV0IHBhZ2UgPSBOb25OdWxsOjpuZXcocGFnZSkub2tfb3IoQWxsb2NFcnJvcik/O1xcbi0gICAgICAgIC8vIElOVkFSSUFOVDogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxcbi0gICAgICAgIC8vIGFsbG9jYXRlZCBwYWdlLiBXZSB0cmFuc2ZlciB0aGF0IG93bmVyc2hpcCB0byB0aGUgbmV3IGBQYWdlYCBvYmplY3QuXFxuLSAgICAgICAgT2soU2VsZiB7IHBhZ2UgfSlcXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIGp1c3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBhIHBhZ2UsIHNvIHdlIG5vdyBoYXZlIG93bmVyc2hpcCBvZiB0aGUgbmV3bHlcXG4rICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgT3duZWRcXHUwMDNjUGFnZVxcdTAwM2VgIG9iamVjdC5cXG4rICAgICAgICAvLyBTaW5jZSBgUGFnZWAgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSBwb2ludGVyIGRpcmVjdGx5LlxcbisgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwYWdlLmNhc3QoKSkgfSlcXG4gICAgIH1cXG4gXFxuICAgICAvLy8gUmV0dXJucyBhIHJhdyBwb2ludGVyIHRvIHRoZSBwYWdlLlxcbiAgICAgcHViIGZuIGFzX3B0cihcXHUwMDI2c2VsZikgLVxcdTAwM2UgKm11dCBiaW5kaW5nczo6cGFnZSB7XFxuLSAgICAgICAgc2VsZi5wYWdlLmFzX3B0cigpXFxuKyAgICAgICAgc2VsZi5wYWdlLmdldCgpXFxuICAgICB9XFxuIFxcbiAgICAgLy8vIEdldCB0aGUgbm9kZSBpZCBjb250YWluaW5nIHRoaXMgcGFnZS5cXG5AQCAtMjA3LDYgKzE0NCwyMCBAQCBwdWIgZm4gbmlkKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBpMzIge1xcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwYWdlX3RvX25pZChzZWxmLmFzX3B0cigpKSB9XFxuICAgICB9XFxuIFxcbisgICAgLy8vIENyZWF0ZSBhIGBcXHUwMDI2UGFnZWAgZnJvbSBhIHJhdyBgc3RydWN0IHBhZ2VgIHBvaW50ZXIuXFxuKyAgICAvLy9cXG4rICAgIC8vLyAjIFNhZmV0eVxcbisgICAgLy8vXFxuKyAgICAvLy8gYHB0cmAgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZCByZWZlcmVuY2Ugd2l0aCBhIGxpZmV0aW1lIG9mIGAnYWAuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXdcXHUwMDNjJ2FcXHUwMDNlKHB0cjogKmNvbnN0IGJpbmRpbmdzOjpwYWdlKSAtXFx1MDAzZSBcXHUwMDI2J2EgU2VsZiB7XFxuKyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgcmVmZXJzIHRvIGEgdmFsaWQgYHN0cnVjdCBwYWdlYCwgc29cXG4rICAgICAgICAvLyB0aGUgcmV0dXJuZWQgcmVmZXJlbmNlIHVwaG9sZHMgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBQYWdlYC5cXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIG5vdCBudWxsIGFuZCBpcyBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZFxcbisgICAgICAgIC8vIHJlZmVyZW5jZS5cXG4rICAgICAgICB1bnNhZmUgeyBcXHUwMDI2KnB0ci5jYXN0KCkgfVxcbisgICAgfVxcbitcXG4gICAgIC8vLyBSdW5zIGEgcGllY2Ugb2YgY29kZSB3aXRoIHRoaXMgcGFnZSBtYXBwZWQgdG8gYW4gYWRkcmVzcy5cXG4gICAgIC8vL1xcbiAgICAgLy8vIFRoZSBwYWdlIGlzIHVubWFwcGVkIHdoZW4gdGhpcyBjYWxsIHJldHVybnMuXFxuQEAgLTM3MywxMCArMzI0LDExIEBAIHB1YiB1bnNhZmUgZm4gY29weV9mcm9tX3VzZXJfc2xpY2VfcmF3KFxcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsIERyb3AgZm9yIFBhZ2Uge1xcbitpbXBsIE93bmFibGUgZm9yIFBhZ2Uge1xcbiAgICAgI1tpbmxpbmVdXFxuLSAgICBmbiBkcm9wKFxcdTAwMjZtdXQgc2VsZikge1xcbi0gICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgd2UgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIHBhZ2UgYW5kIGNhbiBmcmVlIGl0Llxcbi0gICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXMoc2VsZi5wYWdlLmFzX3B0cigpLCAwKSB9O1xcbisgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbisgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZVxcbisgICAgICAgIC8vIGl0LiBTaW5jZSBQYWdlIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcmF3IHBvaW50ZXIgZGlyZWN0bHkuXFxuKyAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyh0aGlzLmFzX3B0cigpLmNhc3QoKSwgMCkgfTtcXG4gICAgIH1cXG4gfVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wY2kucnMgYi9ydXN0L2tlcm5lbC9wY2kucnNcXG5pbmRleCA1MDcxY2FlNjU0M2ZkLi5lYTllZjk5Y2VjYjA3IDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3BjaS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BjaS5yc1xcbkBAIC0xOSw2ICsxOSwxMCBAQFxcbiAgICAgfSxcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzdHI6OkNTdHIsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuICAgICBUaGlzTW9kdWxlLCAvL1xcbiB9O1xcbkBAIC00ODEsNyArNDg1LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXG4gaW1wbFxcdTAwM2MnYVxcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXFx1MDAzYydhXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY2RldmljZTo6Q29yZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBjaV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTQ5Myw2ICs0OTcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XFxuK1xcbiBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBBc1JlZlxcdTAwM2NkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycyBiL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcXG5pbmRleCA5NzlhOTcxOGYxNTNkLi4wNjdmNjhiOTllOGM1IDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXFxuQEAgLTcsNyArNywxNCBAQFxcbiAvLyEgQyBoZWFkZXI6IFtgaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oKSBhbmRcXG4gLy8hIFtgaW5jbHVkZS9saW51eC9waWQuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWQuaClcXG4gXFxuLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0eXBlczo6T3BhcXVlfTtcXG4rdXNlIGNyYXRlOjp7XFxuKyAgICBiaW5kaW5ncyxcXG4rICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgT3BhcXVlLCAvL1xcbisgICAgfSwgLy9cXG4rfTtcXG4gdXNlIGNvcmU6OnB0cjtcXG4gXFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBwaWRfbmFtZXNwYWNlYC4gVGhyZWFkIHNhZmUuXFxuQEAgLTQxLDcgKzQ4LDcgQEAgcHViIHVuc2FmZSBmbiBmcm9tX3B0clxcdTAwM2MnYVxcdTAwM2UocHRyOiAqY29uc3QgYmluZGluZ3M6OnBpZF9uYW1lc3BhY2UpIC1cXHUwMDNlIFxcdTAwMjYnYSBTZWxmIHtcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYFBpZE5hbWVzcGFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cXG5AQCAtNTUsNiArNjIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjUGlkTmFtZXNwYWNlXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY1BpZE5hbWVzcGFjZVxcdTAwM2VgIGZyb21cXG4rLy8gYSBgXFx1MDAyNlBpZE5hbWVzcGFjZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fVxcbitcXG4gLy8gU0FGRVRZOlxcbiAvLyAtIGBQaWROYW1lc3BhY2U6OmRlY19yZWZgIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLlxcbiAvLyAtIEl0IGlzIG9rYXkgdG8gc2VuZCBvd25lcnNoaXAgb2YgYFBpZE5hbWVzcGFjZWAgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXFxuaW5kZXggZDQxNTU1YTRiMzFkMi4uYTRkZGFhMWNjM2E0MCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXFxuQEAgLTI0LDYgKzI0LDEwIEBAXFxuICAgICB9LFxcbiAgICAgb2YsXFxuICAgICBwcmVsdWRlOjoqLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiAgICAgVGhpc01vZHVsZSwgLy9cXG4gfTtcXG5AQCAtNTE5LDcgKzUyMyw3IEBAIHB1YiBmbiBvcHRpb25hbF9pcnFfYnlfbmFtZShcXHUwMDI2c2VsZiwgbmFtZTogXFx1MDAyNkNTdHIpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NJcnFSZXF1ZXN0XFx1MDAzYydfXFx1MDAzZVxcdTAwM2Uge1xcbiBpbXBsXFx1MDAzYydhXFx1MDAzZSBjcmF0ZTo6ZG1hOjpEZXZpY2VcXHUwMDNjJ2FcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjZGV2aWNlOjpDb3JlXFx1MDAzYydhXFx1MDAzZVxcdTAwM2Uge31cXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xcbkBAIC01MzEsNiArNTM1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkRldmljZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZVxcdTAwM2UgZm9yIERldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3B3bS5ycyBiL3J1c3Qva2VybmVsL3B3bS5yc1xcbmluZGV4IDZjOWQ2NjcwMDllZjcuLjJkMWNkNzRkZDk4ZTEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcHdtLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvcHdtLnJzXFxuQEAgLTEzLDcgKzEzLDExIEBAXFxuICAgICBkZXZyZXMsXFxuICAgICBlcnJvcjo6e3NlbGYsIHRvX3Jlc3VsdH0sXFxuICAgICBwcmVsdWRlOjoqLFxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFSZWYsXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXFxuIH07XFxuIHVzZSBjb3JlOjp7XFxuQEAgLTYyOSw3ICs2MzMsNyBAQCBwdWIgZm4gbmV3XFx1MDAzYydhXFx1MDAzZShcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbXBsZW1lbnRzIHJlZmNvdW50aW5nIGZvciBgQ2hpcGAgdXNpbmcgdGhlIGVtYmVkZGVkIGBzdHJ1Y3QgZGV2aWNlYC5cXG4tdW5zYWZlIGltcGxcXHUwMDNjVDogUHdtT3BzXFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBDaGlwXFx1MDAzY1RcXHUwMDNlIHtcXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogUHdtT3BzXFx1MDAzZSBSZWZDb3VudGVkIGZvciBDaGlwXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYHNlbGYuMC5nZXQoKWAgcG9pbnRzIHRvIGEgdmFsaWQgYHB3bV9jaGlwYCBiZWNhdXNlIGBzZWxmYCBleGlzdHMuXFxuQEAgLTY0Nyw2ICs2NTEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY0NoaXBcXHUwMDNjVFxcdTAwM2VcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjQ2hpcFxcdTAwM2NUXFx1MDAzZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkNoaXBcXHUwMDNjVFxcdTAwM2VgLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBQd21PcHNcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcXHUwMDNjVFxcdTAwM2Uge31cXG4rXFxuIC8vIFNBRkVUWTogYENoaXBgIGlzIGEgd3JhcHBlciBhcm91bmQgYCptdXQgYmluZGluZ3M6OnB3bV9jaGlwYC4gVGhlIHVuZGVybHlpbmcgQ1xcbiAvLyBzdHJ1Y3R1cmUncyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCdzIGRldmljZSBtb2RlbFxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5ycyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xcbmluZGV4IGI3MjFiMmUwMGI5ODYuLmU2ZmZlN2M2NTBjMzkgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXFxuQEAgLTExLDcgKzExLDcgQEBcXG4gLy8hIHVuZGVybHlpbmcgb2JqZWN0LCBidXQgdGhpcyByZWZjb3VudCBpcyBpbnRlcm5hbCB0byB0aGUgb2JqZWN0LiBJdCBlc3NlbnRpYWxseSBpcyBhIFJ1c3RcXG4gLy8hIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgZ2V0X2AgYW5kIGBwdXRfYCBwYXR0ZXJuIHVzZWQgaW4gQyBmb3IgcmVmZXJlbmNlIGNvdW50aW5nLlxcbiAvLyFcXG4tLy8hIFRvIG1ha2UgdXNlIG9mIFtgQVJlZlxcdTAwM2NNeVR5cGVcXHUwMDNlYF0sIGBNeVR5cGVgIG5lZWRzIHRvIGltcGxlbWVudCBbYEFsd2F5c1JlZkNvdW50ZWRgXS4gSXQgaXMgYSB0cmFpdFxcbisvLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmXFx1MDAzY015VHlwZVxcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XFxuIC8vISBmb3IgYWNjZXNzaW5nIHRoZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IG9mIHRoZSBgTXlUeXBlYCB0eXBlLlxcbiAvLyFcXG4gLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmNcXG5AQCAtMjMsMjYgKzIzLDM1IEBAXFxuICAgICBvcHM6OkRlcmVmLFxcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xcbiB9O1xcbit1c2Uga2VybmVsOjp0eXBlczo6e1xcbisgICAgT3duYWJsZVJlZkNvdW50ZWQsXFxuKyAgICBPd25lZCwgLy9cXG4rfTtcXG4gXFxuLS8vLyBUeXBlcyB0aGF0IGFyZSBfYWx3YXlzXyByZWZlcmVuY2UgY291bnRlZC5cXG4rLy8vIFR5cGVzIHRoYXQgYXJlIGludGVybmFsbHkgcmVmZXJlbmNlIGNvdW50ZWQuXFxuIC8vL1xcbiAvLy8gSXQgYWxsb3dzIHN1Y2ggdHlwZXMgdG8gZGVmaW5lIHRoZWlyIG93biBjdXN0b20gcmVmIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGZ1bmN0aW9ucy5cXG4tLy8vIEFkZGl0aW9uYWxseSwgaXQgYWxsb3dzIHVzZXJzIHRvIGNvbnZlcnQgZnJvbSBhIHNoYXJlZCByZWZlcmVuY2UgYFxcdTAwMjZUYCB0byBhbiBvd25lZCByZWZlcmVuY2VcXG4tLy8vIFtgQVJlZlxcdTAwM2NUXFx1MDAzZWBdLlxcbiAvLy9cXG4gLy8vIFRoaXMgaXMgdXN1YWxseSBpbXBsZW1lbnRlZCBieSB3cmFwcGVycyB0byBleGlzdGluZyBzdHJ1Y3R1cmVzIG9uIHRoZSBDIHNpZGUgb2YgdGhlIGNvZGUuIEZvclxcbiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkXFxuIC8vLyBpbnN0YW5jZXMgb2YgYSB0eXBlLlxcbiAvLy9cXG4rLy8vIE5vdGU6IEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuIFtgQVJlZlxcdTAwM2NTZWxmXFx1MDAzZWBdLiBJdCByZXF1aXJlcyBhblxcbisvLy8gaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGFuZCBwcm92aWRlcyBvbmx5IHNoYXJlZCByZWZlcmVuY2VzLiBJZiB1bmlxdWUgcmVmZXJlbmNlcyBhcmUgcmVxdWlyZWRcXG4rLy8vIFtgT3duYWJsZWBdKGNyYXRlOjp0eXBlczo6T3duYWJsZSkgc2hvdWxkIGJlIGltcGxlbWVudGVkIHdoaWNoIGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuXFxuKy8vLyBbYE93bmVkXFx1MDAzY1NlbGZcXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkuIEltcGxlbWVudGluZyB0aGUgdHJhaXRcXG4rLy8vIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBhbGxvd3MgdG8gY29udmVydCBiZXR3ZWVuIHVuaXF1ZSBhbmRcXG4rLy8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWRcXHUwMDNjU2VsZlxcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKSBhbmRcXG4rLy8vIFtgQVJlZlxcdTAwM2NTZWxmXFx1MDAzZWBdKS5cXG4rLy8vXFxuIC8vLyAjIFNhZmV0eVxcbiAvLy9cXG4gLy8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCBrZWVwIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5XFxuIC8vLyBhdCBsZWFzdCB1bnRpbCBtYXRjaGluZyBkZWNyZW1lbnRzIGFyZSBwZXJmb3JtZWQuXFxuIC8vL1xcbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBhbGwgaW5zdGFuY2VzIGFyZSByZWZlcmVuY2UtY291bnRlZC4gKE90aGVyd2lzZSB0aGV5XFxuLS8vLyB3b24ndCBiZSBhYmxlIHRvIGhvbm91ciB0aGUgcmVxdWlyZW1lbnQgdGhhdCBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSBrZWVwIHRoZSBvYmplY3RcXG4tLy8vIGFsaXZlLilcXG4tcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcXG4rLy8vIHdvbid0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdCBhbGl2ZS4pXFxuK3B1YiB1bnNhZmUgdHJhaXQgUmVmQ291bnRlZCB7XFxuICAgICAvLy8gSW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvYmplY3QuXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKTtcXG4gXFxuQEAgLTU1LDExICs2NCwyNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xcbiAgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGVyZSB3YXMgYSBwcmV2aW91cyBtYXRjaGluZyBpbmNyZW1lbnQgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCxcXG4gICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heVxcbiAgICAgLy8vIHJlc3VsdCBpbiB0aGUgb2JqZWN0IGJlaW5nIGZyZWVkKSwgdW5sZXNzIHRoZSBjYWxsZXIgb3ducyBhbm90aGVyIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnRcXG4tICAgIC8vLyAoZS5nLiwgaXQgY2FsbHMgW2BBbHdheXNSZWZDb3VudGVkOjppbmNfcmVmYF0gdHdpY2UsIHRoZW4gY2FsbHNcXG4tICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cXG4rICAgIC8vLyAoZS5nLiwgaXQgY2FsbHMgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0gdHdpY2UsIHRoZW4gY2FsbHMgW2BSZWZDb3VudGVkOjpkZWNfcmVmYF0gb25jZSkuXFxuICAgICB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpO1xcbiB9XFxuIFxcbisvLy8gQWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIHR5cGUuXFxuKy8vL1xcbisvLy8gSXQgYWxsb3dzIGRlcml2aW5nIGEgY291bnRlZCByZWZlcmVuY2UgW2BBUmVmXFx1MDAzY1RcXHUwMDNlYF0gZnJvbSBhIGBcXHUwMDI2VGAuXFxuKy8vL1xcbisvLy8gVGhpcyBwcm92aWRlcyBzb21lIGNvbnZlbmllbmNlLCBidXQgaXQgYWxsb3dzIFxcXCJlc2NhcGluZ1xcXCIgYm9ycm93IGNoZWNrcyBvbiBgXFx1MDAyNlRgLiBBcyBpdFxcbisvLy8gY29tcGxpY2F0ZXMgYXR0ZW1wdHMgdG8gZW5zdXJlIHRoYXQgYSByZWZlcmVuY2UgdG8gVCBpcyB1bmlxdWUsIGl0IGlzIG9wdGlvbmFsIHRvIHByb3ZpZGUgZm9yXFxuKy8vLyBbYFJlZkNvdW50ZWRgXSB0eXBlcy4gU2VlICpTYWZldHkqIGJlbG93LlxcbisvLy9cXG4rLy8vICMgU2FmZXR5XFxuKy8vL1xcbisvLy8gSW1wbGVtZW50ZXJzIG11c3QgZW5zdXJlIHRoYXQgbm8gc2FmZXR5IGludmFyaWFudHMgYXJlIHZpb2xhdGVkIGJ5IHVwZ3JhZGluZyBhbiBgXFx1MDAyNlRgIHRvIGFuXFxuKy8vLyBbYEFSZWZcXHUwMDNjVFxcdTAwM2VgXS4gSW4gcGFydGljdWxhciB0aGF0IGltcGxpZXMgW2BBbHdheXNSZWZDb3VudGVkYF0gYW5kIFtgY3JhdGU6OnR5cGVzOjpPd25hYmxlYF1cXG4rLy8vIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBmb3IgdGhlIHNhbWUgdHlwZSwgYXMgdGhpcyB3b3VsZCBhbGxvdyB2aW9sYXRpbmcgdGhlIHVuaXF1ZW5lc3MgZ3VhcmFudGVlXFxuKy8vLyBvZiBbYGNyYXRlOjp0eXBlczo6T3duZWRcXHUwMDNjVFxcdTAwM2VgXSBieSBkZXJlZmVyZW5jaW5nIGl0IGludG8gYW4gYFxcdTAwMjZUYCBhbmQgb2J0YWluaW5nIGFuIFtgQVJlZmBdIGZyb21cXG4rLy8vIHRoYXQuXFxuK3B1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZDogUmVmQ291bnRlZCB7fVxcbitcXG4gLy8vIEFuIG93bmVkIHJlZmVyZW5jZSB0byBhbiBhbHdheXMtcmVmZXJlbmNlLWNvdW50ZWQgb2JqZWN0LlxcbiAvLy9cXG4gLy8vIFRoZSBvYmplY3QncyByZWZlcmVuY2UgY291bnQgaXMgYXV0b21hdGljYWxseSBkZWNyZW1lbnRlZCB3aGVuIGFuIGluc3RhbmNlIG9mIFtgQVJlZmBdIGlzXFxuQEAgLTcwLDcgKzk1LDcgQEAgcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcXG4gLy8vXFxuIC8vLyBUaGUgcG9pbnRlciBzdG9yZWQgaW4gYHB0cmAgaXMgbm9uLW51bGwgYW5kIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIFtgQVJlZmBdIGluc3RhbmNlLiBJblxcbiAvLy8gcGFydGljdWxhciwgdGhlIFtgQVJlZmBdIGluc3RhbmNlIG93bnMgYW4gaW5jcmVtZW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdCdzIHJlZmVyZW5jZSBjb3VudC5cXG4tcHViIHN0cnVjdCBBUmVmXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIHtcXG4rcHViIHN0cnVjdCBBUmVmXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIHtcXG4gICAgIHB0cjogTm9uTnVsbFxcdTAwM2NUXFx1MDAzZSxcXG4gICAgIF9wOiBQaGFudG9tRGF0YVxcdTAwM2NUXFx1MDAzZSxcXG4gfVxcbkBAIC03OSwxOSArMTA0LDE5IEBAIHB1YiBzdHJ1Y3QgQVJlZlxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSB7XFxuIC8vIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFxcdTAwMjZUYCAod2hpY2ggaXMgc2FmZSBiZWNhdXNlIGBUYCBpcyBgU3luY2ApOyBhZGRpdGlvbmFsbHksIGl0IG5lZWRzXFxuIC8vIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGFuIGBBUmVmXFx1MDAzY1RcXHUwMDNlYCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGFcXG4gLy8gbXV0YWJsZSByZWZlcmVuY2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC5cXG4tdW5zYWZlIGltcGxcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXFx1MDAzZSBTZW5kIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuK3Vuc2FmZSBpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFxcdTAwM2UgU2VuZCBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7fVxcbiBcXG4gLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYFxcdTAwMjZBUmVmXFx1MDAzY1RcXHUwMDNlYCB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBgU3luY2BcXG4gLy8gYmVjYXVzZSBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGBcXHUwMDI2VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LFxcbiAvLyBpdCBuZWVkcyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhIGBcXHUwMDI2QVJlZlxcdTAwM2NUXFx1MDAzZWAgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW5cXG4gLy8gYEFSZWZcXHUwMDNjVFxcdTAwM2VgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yXFxuIC8vIGV4YW1wbGUsIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8gYW5kIGBUYCBpcyBkcm9wcGVkLlxcbi11bnNhZmUgaW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgU3luYyArIFNlbmRcXHUwMDNlIFN5bmMgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXFx1MDAzZSBTeW5jIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbiAvLyBFdmVuIGlmIGBUYCBpcyBwaW5uZWQsIHBvaW50ZXJzIHRvIGBUYCBjYW4gc3RpbGwgbW92ZS5cXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSBVbnBpbiBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7fVxcbitpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIFVucGluIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbitpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BBUmVmYF0uXFxuICAgICAvLy9cXG4gICAgIC8vLyBJdCB0YWtlcyBvdmVyIGFuIGluY3JlbWVudCBvZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cXG5AQCAtMTIwLDE5ICsxNDUsMjEgQEAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGxcXHUwMDNjVFxcdTAwM2UpIC1cXHUwMDNlIFNlbGYge1xcbiAgICAgLy8vXFxuICAgICAvLy8gYGBgXFxuICAgICAvLy8gdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcXG4tICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07XFxuKyAgICAvLy8gdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9O1xcbiAgICAgLy8vXFxuICAgICAvLy8gc3RydWN0IEVtcHR5IHt9XFxuICAgICAvLy9cXG4tICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy5cXG4tICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7XFxuKyAgICAvLy8gLy8gU0FGRVRZOiBUaGUgYFJlZkNvdW50ZWRgIGltcGxlbWVudGF0aW9uIGZvciBgRW1wdHlgIGRvZXMgbm90IGNvdW50IHJlZmVyZW5jZXMgYW5kIG5ldmVyXFxuKyAgICAvLy8gLy8gZnJlZXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0LiBUaHVzIHdlIGNhbiBhY3QgYXMgb3duaW5nIGFuIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnQgZm9yXFxuKyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLlxcbisgICAgLy8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEVtcHR5IHtcXG4gICAgIC8vLyAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge31cXG4gICAgIC8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYoX29iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge31cXG4gICAgIC8vLyB9XFxuICAgICAvLy9cXG4gICAgIC8vLyBsZXQgbXV0IGRhdGEgPSBFbXB0eSB7fTtcXG4gICAgIC8vLyBsZXQgcHRyID0gTm9uTnVsbDo6XFx1MDAzY0VtcHR5XFx1MDAzZTo6bmV3KFxcdTAwMjZtdXQgZGF0YSkudW53cmFwKCk7XFxuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXFxuKyAgICAvLy8gLy8gU0FGRVRZOiBXZSBrZWVwIGBkYXRhYCBhcm91bmQgbG9uZ2VyIHRoYW4gdGhlIGBBUmVmYC5cXG4gICAgIC8vLyBsZXQgZGF0YV9yZWY6IEFSZWZcXHUwMDNjRW1wdHlcXHUwMDNlID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9O1xcbiAgICAgLy8vIGxldCByYXdfcHRyOiBOb25OdWxsXFx1MDAzY0VtcHR5XFx1MDAzZSA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTtcXG4gICAgIC8vL1xcbkBAIC0xNDMsNyArMTcwLDcgQEAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtXFx1MDAzZSBOb25OdWxsXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSBDbG9uZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgZm4gY2xvbmUoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFNlbGYge1xcbiAgICAgICAgIHNlbGYuaW5jX3JlZigpO1xcbiAgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBpbmNyZW1lbnRlZCB0aGUgcmVmY291bnQgYWJvdmUuXFxuQEAgLTE1MSw3ICsxNzgsNyBAQCBmbiBjbG9uZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgU2VsZiB7XFxuICAgICB9XFxuIH1cXG4gXFxuLWltcGxcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFxcdTAwM2UgRGVyZWYgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbitpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIERlcmVmIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIHR5cGUgVGFyZ2V0ID0gVDtcXG4gXFxuICAgICBmbiBkZXJlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNlNlbGY6OlRhcmdldCB7XFxuQEAgLTE2OCw3ICsxOTUsMTQgQEAgZm4gZnJvbShiOiBcXHUwMDI2VCkgLVxcdTAwM2UgU2VsZiB7XFxuICAgICB9XFxuIH1cXG4gXFxuLWltcGxcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFxcdTAwM2UgRHJvcCBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVJlZkNvdW50ZWRcXHUwMDNlIEZyb21cXHUwMDNjT3duZWRcXHUwMDNjVFxcdTAwM2VcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZnJvbShiOiBPd25lZFxcdTAwM2NUXFx1MDAzZSkgLVxcdTAwM2UgU2VsZiB7XFxuKyAgICAgICAgVDo6aW50b19zaGFyZWQoYilcXG4rICAgIH1cXG4rfVxcbitcXG4raW1wbFxcdTAwM2NUOiBSZWZDb3VudGVkXFx1MDAzZSBEcm9wIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBgQVJlZmAgb3ducyB0aGUgcmVmZXJlbmNlIHdlJ3JlIGFib3V0IHRvXFxuICAgICAgICAgLy8gZGVjcmVtZW50LlxcbkBAIC0xNzgsMTkgKzIxMiwxOSBAQCBmbiBkcm9wKFxcdTAwMjZtdXQgc2VsZikge1xcbiBcXG4gaW1wbFxcdTAwM2NULCBVXFx1MDAzZSBQYXJ0aWFsRXFcXHUwMDNjQVJlZlxcdTAwM2NVXFx1MDAzZVxcdTAwM2UgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2VcXG4gd2hlcmVcXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQgKyBQYXJ0aWFsRXFcXHUwMDNjVVxcdTAwM2UsXFxuLSAgICBVOiBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgVDogUmVmQ291bnRlZCArIFBhcnRpYWxFcVxcdTAwM2NVXFx1MDAzZSxcXG4rICAgIFU6IFJlZkNvdW50ZWQsXFxuIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gZXEoXFx1MDAyNnNlbGYsIG90aGVyOiBcXHUwMDI2QVJlZlxcdTAwM2NVXFx1MDAzZSkgLVxcdTAwM2UgYm9vbCB7XFxuICAgICAgICAgVDo6ZXEoXFx1MDAyNioqc2VsZiwgXFx1MDAyNioqb3RoZXIpXFxuICAgICB9XFxuIH1cXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgRXFcXHUwMDNlIEVxIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZCArIEVxXFx1MDAzZSBFcSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7fVxcbiBcXG4gaW1wbFxcdTAwM2NULCBVXFx1MDAzZSBQYXJ0aWFsRXFcXHUwMDNjXFx1MDAyNidfIFVcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIHdoZXJlXFxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICsgUGFydGlhbEVxXFx1MDAzY1VcXHUwMDNlLFxcbisgICAgVDogUmVmQ291bnRlZCArIFBhcnRpYWxFcVxcdTAwM2NVXFx1MDAzZSxcXG4ge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBlcShcXHUwMDI2c2VsZiwgb3RoZXI6IFxcdTAwMjZcXHUwMDI2VSkgLVxcdTAwM2UgYm9vbCB7XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3Rhc2sucnMgYi9ydXN0L2tlcm5lbC90YXNrLnJzXFxuaW5kZXggMzgyNzNmNGVlZGI1MS4uNjI1OTQzMGIwY2EzMSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC90YXNrLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvdGFzay5yc1xcbkBAIC0xMCw3ICsxMCwxMiBAQFxcbiAgICAgcGlkX25hbWVzcGFjZTo6UGlkTmFtZXNwYWNlLFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN5bmM6OmFyZWY6OkFSZWYsXFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcXG4rICAgICAgICBPcGFxdWUsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuIH07XFxuIHVzZSBjb3JlOjp7XFxuICAgICBvcHM6OkRlcmVmLFxcbkBAIC0zNDcsNyArMzUyLDcgQEAgcHViIGZuIGdyb3VwX2xlYWRlcihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNlRhc2sge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYFRhc2tgIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFRhc2sge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC0zNjEsNiArMzY2LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjVGFza1xcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNlRhc2tgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHt9XFxuK1xcbiBpbXBsIFBhcnRpYWxFcSBmb3IgVGFzayB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGVxKFxcdTAwMjZzZWxmLCBvdGhlcjogXFx1MDAyNlNlbGYpIC1cXHUwMDNlIGJvb2wge1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC90eXBlcy5ycyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXFxuaW5kZXggYWMzMTZmZDdiNTM4Zi4uNmFhNzYwOTUyY2I2MyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC90eXBlcy5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXFxuQEAgLTE1LDYgKzE1LDE4IEBAXFxuIHB1YiBtb2QgZm9yX2x0O1xcbiBwdWIgdXNlIGZvcl9sdDo6Rm9yTHQ7XFxuIFxcbitwdWIgdXNlIGNyYXRlOjp7XFxuKyAgICBvd25lZDo6e1xcbisgICAgICAgIE93bmFibGUsXFxuKyAgICAgICAgT3duYWJsZVJlZkNvdW50ZWQsXFxuKyAgICAgICAgT3duZWQsIC8vXFxuKyAgICB9LFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sIC8vXFxuK307XFxuK1xcbiAvLy8gVXNlZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgdG8gYW5kIGZyb20gZm9yZWlnbiAobm9uLVJ1c3QpIGxhbmd1YWdlcy5cXG4gLy8vXFxuIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xcbmluZGV4IDdhZmYwYzgyZDBhZmMuLjU5MzUwYzZiMGRmMmEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvdXNiLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvdXNiLnJzXFxuQEAgLTE4LDcgKzE4LDEwIEBAXFxuICAgICAgICAgdG9fcmVzdWx0LCAvL1xcbiAgICAgfSxcXG4gICAgIHByZWx1ZGU6OiosXFxuLSAgICBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiAgICAgVGhpc01vZHVsZSwgLy9cXG4gfTtcXG5AQCAtMzkyLDcgKzM5NSw3IEBAIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNkRldmljZSB7XFxuIH1cXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJbnRlcmZhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgSW50ZXJmYWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfaW50ZXJmYWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxcbkBAIC00MDYsNiArNDA5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0ludGVyZmFjZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkludGVyZmFjZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7fVxcbitcXG4gLy8gU0FGRVRZOiBBIGBJbnRlcmZhY2VgIGlzIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZCBhbmQgY2FuIGJlIHJlbGVhc2VkIGZyb20gYW55IHRocmVhZC5cXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgSW50ZXJmYWNlIHt9XFxuIFxcbkBAIC00NDMsNyArNDUwLDcgQEAgZm4gYXNfcmF3KFxcdTAwMjZzZWxmKSAtXFx1MDAzZSAqbXV0IGJpbmRpbmdzOjp1c2JfZGV2aWNlIHtcXG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfZGV2aWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxcbkBAIC00NTcsNiArNDY0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkRldmljZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZVxcdTAwM2UgZm9yIERldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xcbmluZGV4IDdlMjUzYjZmMjk5Y2UuLjc3NjczYjhlYTQ1ZmIgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXFxuQEAgLTE5Miw3ICsxOTIsNyBAQFxcbiAgICAgc3luYzo6e1xcbiAgICAgICAgIGFyZWY6OntcXG4gICAgICAgICAgICAgQVJlZixcXG4tICAgICAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cXG4rICAgICAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4gICAgICAgICB9LFxcbiAgICAgICAgIEFyYyxcXG4gICAgICAgICBMb2NrQ2xhc3NLZXksIC8vXFxuQEAgLTk1NCw3ICs5NTQsNyBAQCB1bnNhZmUgaW1wbFxcdTAwM2NULCBjb25zdCBJRDogdTY0XFx1MDAzZSBSYXdEZWxheWVkV29ya0l0ZW1cXHUwMDNjSURcXHUwMDNlIGZvciBQaW5cXHUwMDNjS0JveFxcdTAwM2NUXFx1MDAzZVxcdTAwM2VcXG4gLy8gICAgIGltcGxlbWVudGF0aW9uIG9mIGBXb3JrSXRlbVBvaW50ZXJgIGZvciBgQVJlZlxcdTAwM2NUXFx1MDAzZWAuXFxuIHVuc2FmZSBpbXBsXFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcXHUwMDNlIFdvcmtJdGVtUG9pbnRlclxcdTAwM2NJRFxcdTAwM2UgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2VcXG4gd2hlcmVcXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICBUOiBSZWZDb3VudGVkLFxcbiAgICAgVDogV29ya0l0ZW1cXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXFx1MDAzZSxcXG4gICAgIFQ6IEhhc1dvcmtcXHUwMDNjVCwgSURcXHUwMDNlLFxcbiB7XFxuQEAgLTk4Nyw3ICs5ODcsNyBAQCB1bnNhZmUgaW1wbFxcdTAwM2NULCBjb25zdCBJRDogdTY0XFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcXHUwMDNjSURcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIC8vIHJlcXVpcmVtZW50cyBvZiBgV29ya0l0ZW1Qb2ludGVyYC5cXG4gdW5zYWZlIGltcGxcXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFxcdTAwM2UgUmF3V29ya0l0ZW1cXHUwMDNjSURcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIHdoZXJlXFxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgVDogUmVmQ291bnRlZCxcXG4gICAgIFQ6IFdvcmtJdGVtXFx1MDAzY0lELCBQb2ludGVyID0gU2VsZlxcdTAwM2UsXFxuICAgICBUOiBIYXNXb3JrXFx1MDAzY1QsIElEXFx1MDAzZSxcXG4ge1xcbkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB1bnNhZmUgaW1wbFxcdTAwM2NULCBjb25zdCBJRDogdTY0XFx1MDAzZSBSYXdEZWxheWVkV29ya0l0ZW1cXHUwMDNjSURcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIHdoZXJlXFxuICAgICBUOiBXb3JrSXRlbVxcdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcXHUwMDNlLFxcbiAgICAgVDogSGFzRGVsYXllZFdvcmtcXHUwMDNjVCwgSURcXHUwMDNlLFxcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgIFQ6IFJlZkNvdW50ZWQsXFxuIHtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6MTI6MzguNzY3NjMzNzc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTc3OTk0MzM2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgaW4gdGhlIGtlcm5lbC4gSXQgaW50cm9kdWNlcyB0aGUgYE93bmVkYCBhbmQgYE93bmFibGVgIHRyYWl0cywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgdXBkYXRlcyB0aGUgYFBhZ2VgIGFic3RyYWN0aW9uIGFuZCBpdHMgdXNlcnMgKGxpa2UgQW5kcm9pZCBCaW5kZXIpIHRvIHVzZSB0aGUgbmV3IHR5cGVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkzNzAyZmRjMzViNDI0MmVmZGNjNTMyNjNkOTkzMWYzZDVlYWQ3NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzoxMjozNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuaW5kZXggZTgyYTU1MjM4MDRmNC4uYzU1YmEyOWFiZWE3MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuKysrIGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzXG5AQCAtMzMsNyArMzMsNyBAQFxuICAgICBzeW5jOjp7YXJlZjo6QVJlZiwgTXV0ZXgsIFNwaW5Mb2NrfSxcbiAgICAgdGFzazo6UGlkLFxuICAgICB0cmFuc211dGU6OkZyb21CeXRlcyxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcbisgICAgdHlwZXM6OntPcGFxdWUsIE93bmVkfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLFxuIH07XG4gXG5AQCAtMTk4LDcgKzE5OCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIElubmVyIHt9XG4gI1tyZXByKEMpXVxuIHN0cnVjdCBQYWdlSW5mbyB7XG4gICAgIGxydTogYmluZGluZ3M6Omxpc3RfaGVhZCxcbi0gICAgcGFnZTogT3B0aW9uXHUwMDNjUGFnZVx1MDAzZSxcbisgICAgcGFnZTogT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlLFxuICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsXG4gfVxuIFxuQEAgLTIwNiw3ICsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHtcbiAgICAgLy8vICMgU2FmZXR5XG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0LlxuLSAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IFBhZ2UpIHtcbisgICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBPd25lZFx1MDAzY1BhZ2VcdTAwM2UpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXHUwMDI2cmF3IG11dCAoKm1lKS5wYWdlIH07XG4gXG5AQCAtMjI5LDEzICsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlXHUwMDNjJ2FcdTAwM2UobWU6ICpjb25zdCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjYnYSBQYWdlXHUwMDNlIHtcbiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBcdTAwMjZyYXcgY29uc3QgKCptZSkucGFnZSB9O1xuIFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBmb3IgcmVhZGluZy5cbi0gICAgICAgIHVuc2FmZSB7ICgqcHRyKS5hc19yZWYoKSB9XG4rICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfZGVyZWYoKSB9XG4gICAgIH1cbiBcbiAgICAgLy8vICMgU2FmZXR5XG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2sgZm9yIHRoZSBkdXJhdGlvbiBvZiAnYS5cbi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NQYWdlXHUwMDNlIHtcbisgICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NPd25lZFx1MDAzY1BhZ2VcdTAwM2VcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cbiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbmluZGV4IGNkNDIwM2YyN2FlZDAuLmM3YjliMDY5Y2Y3NWQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xuQEAgLTE2OSw3ICsxNjksNyBAQCB1bnNhZmUgZm4gcmVhbGxvYyhcbiB9XG4gXG4gaW1wbCBWbWFsbG9jIHtcbi0gICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgcGFnZTo6Qm9ycm93ZWRQYWdlYF0uXG4rICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2UuXG4gICAgIC8vL1xuICAgICAvLy8gIyBFeGFtcGxlc1xuICAgICAvLy9cbkBAIC0yMDIsMjAgKzIwMiwxNyBAQCBpbXBsIFZtYWxsb2Mge1xuICAgICAvLy9cbiAgICAgLy8vIC0gYHB0cmAgbXVzdCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxuICAgICAvLy8gLSBgcHRyYCBtdXN0IHJlbWFpbiB2YWxpZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiBgJ2FgLlxuLSAgICBwdWIgdW5zYWZlIGZuIHRvX3BhZ2VcdTAwM2MnYVx1MDAzZShwdHI6IE5vbk51bGxcdTAwM2N1OFx1MDAzZSkgLVx1MDAzZSBwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MnYVx1MDAzZSB7XG4rICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZVx1MDAzYydhXHUwMDNlKHB0cjogTm9uTnVsbFx1MDAzY3U4XHUwMDNlKSAtXHUwMDNlIFx1MDAyNidhIHBhZ2U6OlBhZ2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS5cbiAgICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OnZtYWxsb2NfdG9fcGFnZShwdHIuYXNfcHRyKCkuY2FzdCgpKSB9O1xuIFxuLSAgICAgICAgLy8gU0FGRVRZOiBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWQgcG9pbnRlclxuLSAgICAgICAgLy8gdG8gYFZtYWxsb2NgIG1lbW9yeS5cbi0gICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwYWdlKSB9O1xuLVxuICAgICAgICAgLy8gU0FGRVRZOlxuLSAgICAgICAgLy8gLSBgcGFnZWAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZlxuLSAgICAgICAgLy8gICB0aGlzIGZ1bmN0aW9uIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLlxuLSAgICAgICAgLy8gLSBCeSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGBwdHJgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mXG4tICAgICAgICAvLyAgIGAnYWAuXG4tICAgICAgICB1bnNhZmUgeyBwYWdlOjpCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH1cbisgICAgICAgIC8vIC0gYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkLCBub24tbnVsbCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuKyAgICAgICAgLy8gICBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnksIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvblxuKyAgICAgICAgLy8gICBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cbisgICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCwgYW5kIGhlbmNlIHRoZSBgc3RydWN0IHBhZ2VgLCBpc1xuKyAgICAgICAgLy8gICB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBgJ2FgLlxuKyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnBhZ2UuY2FzdCgpIH1cbiAgICAgfVxuIH1cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5pbmRleCAwMmZkYTNlYTVjYWU2Li44ZGNjMTZlZDg5ODkzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5AQCAtOSw3ICs5LDcgQEBcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4gXG4tLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbisvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxuIC8vL1xuIC8vLyAjIEd1YXJhbnRlZXNcbiAvLy9cbkBAIC0yOCwxMSArMjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXJcdTAwM2MnYVx1MDAzZSB7XG4gICAgIHNpemU6IHVzaXplLFxuICAgICAvLy8gVGhlIGN1cnJlbnQgcGFnZSBpbmRleCBvZiB0aGUgW2BJdGVyYXRvcmBdLlxuICAgICBpbmRleDogdXNpemUsXG4tICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY3BhZ2U6OkJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlXHUwMDNlLFxuKyAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NcdTAwMjYnYSBwYWdlOjpQYWdlXHUwMDNlLFxuIH1cbiBcbiBpbXBsXHUwMDNjJ2FcdTAwM2UgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlclx1MDAzYydhXHUwMDNlIHtcbi0gICAgdHlwZSBJdGVtID0gcGFnZTo6Qm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2U7XG4rICAgIHR5cGUgSXRlbSA9IFx1MDAyNidhIHBhZ2U6OlBhZ2U7XG4gXG4gICAgIGZuIG5leHQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgT3B0aW9uXHUwMDNjU2VsZjo6SXRlbVx1MDAzZSB7XG4gICAgICAgICBsZXQgb2Zmc2V0ID0gc2VsZi5pbmRleC5jaGVja2VkX211bChwYWdlOjpQQUdFX1NJWkUpPztcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuaW5kZXggMzVkMWUwMTU4NDhkZC4uZTZjNjM3YmJlMjAwOSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnNcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnNcbkBAIC0yMTEsNiArMjExLDE1IEBAIHB1YiBmbiBsZWFrXHUwMDNjJ2FcdTAwM2UoYjogU2VsZikgLVx1MDAzZSBcdTAwMjYnYSBtdXQgVCB7XG4gICAgICAgICAvLyB3aGljaCBwb2ludHMgdG8gYW4gaW5pdGlhbGl6ZWQgaW5zdGFuY2Ugb2YgYFRgLlxuICAgICAgICAgdW5zYWZlIHsgXHUwMDI2bXV0ICpCb3g6OmludG9fcmF3KGIpIH1cbiAgICAgfVxuK1xuKyAgICAvLy8gQ29uc3VtZXMgdGhlIGBCb3hcdTAwM2NULCBBXHUwMDNlYCBhbmQgcmV0dXJucyBhIGBOb25OdWxsXHUwMDNjVFx1MDAzZWAuXG4rICAgIC8vL1xuKyAgICAvLy8gTGlrZSBbYFNlbGY6OmludG9fcmF3YF0sIGJ1dCByZXR1cm5zIGEgYE5vbk51bGxgLlxuKyAgICAjW2lubGluZV1cbisgICAgcHViIGZuIGludG9fbm9uX251bGwoYjogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4rICAgICAgICAvLyBTQUZFVFk6IGBCb3g6OmludG9fcmF3YCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlci5cbisgICAgICAgIHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQoU2VsZjo6aW50b19yYXcoYikpIH1cbisgICAgfVxuIH1cbiBcbiBpbXBsXHUwMDNjVCwgQVx1MDAzZSBCb3hcdTAwM2NNYXliZVVuaW5pdFx1MDAzY1RcdTAwM2UsIEFcdTAwM2VcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbmluZGV4IGM0MjkyOGQ1YTIzOTMuLjg1NDUyNTI4OWM4YjQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbisrKyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuQEAgLTE5LDYgKzE5LDEwIEBAXG4gICAgICAgICB0b19yZXN1bHQsIC8vXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6e1xuICAgICAgICAgRm9yTHQsXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcbkBAIC0zNDQsNyArMzQ4LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTM2Myw2ICszNjcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZEZXZpY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuK1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG5pbmRleCBjZTNlMzBjODFjYjVlLi44ZGFkMTVhZTRjZmIwIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuQEAgLTksNyArOSwxMSBAQFxuICAgICBibG9jazo6bXE6Ok9wZXJhdGlvbnMsXG4gICAgIGVycm9yOjpSZXN1bHQsXG4gICAgIHN5bmM6Ontcbi0gICAgICAgIGFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbisgICAgICAgIGFyZWY6OntcbisgICAgICAgICAgICBBUmVmLFxuKyAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgICAgIH0sXG4gICAgICAgICBhdG9taWM6OlJlbGF4ZWQsXG4gICAgICAgICBSZWZjb3VudCxcbiAgICAgfSxcbkBAIC0yMjksMTEgKzIzMywxMCBAQCB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU2VuZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiAvLyBtdXRhdGUgYHNlbGZgIGFyZSBpbnRlcm5hbGx5IHN5bmNocm9uaXplZGBcbiB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU3luYyBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiBcbi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXNcbi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBgQWx3YXlzUmVmQ291bnRlZGAgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50XG4tLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnRcbi0vLyBkZWNyZW1lbnQgaXMgZXhlY3V0ZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHtcbisvLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYFJlZkNvdW50ZWRgXG4rLy8gZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50IGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGFcbisvLyBtYXRjaGluZyByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgc2VsZi53cmFwcGVyX3JlZigpLnJlZmNvdW50KCkuaW5jKCk7XG4gICAgIH1cbkBAIC0yNTUsMyArMjU4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB9XG4gICAgIH1cbiB9XG4rXG4rLy8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NSZXF1ZXN0XHUwMDNlYFxuKy8vIGZyb20gYSBgXHUwMDI2UmVxdWVzdGAgKGJ1dCB0aGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUpLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2NyZWQucnMgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5pbmRleCBmZmExNTZiOWRmMzc3Li5iMTc3MzZhOWFkY2Q1IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvY3JlZC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xuQEAgLTgsNyArOCwxNSBAQFxuIC8vIVxuIC8vISBSZWZlcmVuY2U6IFx1MDAzY2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L3NlY3VyaXR5L2NyZWRlbnRpYWxzLmh0bWxcdTAwM2VcbiBcbi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdGFzazo6S3VpZCwgdHlwZXM6Ok9wYXF1ZX07XG4rdXNlIGNyYXRlOjp7XG4rICAgIGJpbmRpbmdzLFxuKyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLFxuKyAgICB0YXNrOjpLdWlkLFxuKyAgICB0eXBlczo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbit9O1xuIFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBjcmVkYC5cbiAvLy9cbkBAIC03Niw3ICs4NCw3IEBAIHB1YiBmbiBldWlkKFx1MDAyNnNlbGYpIC1cdTAwM2UgS3VpZCB7XG4gfVxuIFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgQ3JlZGVudGlhbGAgaXMgYWx3YXlzIHJlZi1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtOTAsMyArOTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFx1MDAzY0NyZWRlbnRpYWxcdTAwM2UpIHtcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwdXRfY3JlZChvYmouY2FzdCgpLmFzX3B0cigpKSB9O1xuICAgICB9XG4gfVxuK1xuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NDcmVkZW50aWFsXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2Q3JlZGVudGlhbGAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xuaW5kZXggMWEzOGIzYmJkZmI3ZC4uOWFmZWNkM2ZhMzIzNyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RldmljZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXG5AQCAtOCw4ICs4LDEyIEBAXG4gICAgIGJpbmRpbmdzLFxuICAgICBmbXQsXG4gICAgIHByZWx1ZGU6OiosXG4tICAgIHN5bmM6OmFyZWY6OkFSZWYsXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFSZWYsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxuICAgICAgICAgT3BhcXVlLCAvL1xuICAgICB9LCAvL1xuQEAgLTQ0OCw3ICs0NTIsNyBAQCBwdWIgZm4gbmFtZShcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNkNTdHIge1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtNDYwLDYgKzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2RGV2aWNlYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbitcbiAvLyBTQUZFVFk6IEFzIGJ5IHRoZSB0eXBlIGludmFyaWFudCBgRGV2aWNlYCBjYW4gYmUgc2VudCB0byBhbnkgdGhyZWFkLlxuIHVuc2FmZSBpbXBsIFNlbmQgZm9yIERldmljZSB7fVxuIFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5yc1xuaW5kZXggNWFlYWQ4MzVmYmJjMC4uY2VlN2UyNTAxMzY4OSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG5AQCAtMTQsNyArMTQsMTAgQEBcbiAgICAgZm10LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSxcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gfTtcbiBcbkBAIC0zNjAsNyArMzYzLDcgQEAgZm4gZm10KFx1MDAyNnNlbGYsIGY6IFx1MDAyNm11dCBmbXQ6OkZvcm1hdHRlclx1MDAzYydfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEZ3Tm9kZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbit1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGVcbiAgICAgICAgIC8vIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuQEAgLTM3NCw2ICszNzcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0Z3Tm9kZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkZ3Tm9kZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHt9XG4rXG4gZW51bSBOb2RlXHUwMDNjJ2FcdTAwM2Uge1xuICAgICBCb3Jyb3dlZChcdTAwMjYnYSBGd05vZGUpLFxuICAgICBPd25lZChBUmVmXHUwMDNjRndOb2RlXHUwMDNlKSxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuaW5kZXggNDc3Y2Y3NzFmYjEwZS4uNmZjMDJkNTA0MzM0ZSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbisrKyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbkBAIC0xNyw3ICsxNyw4IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjp7XG4gICAgICAgICBOb3RUaHJlYWRTYWZlLFxuQEAgLTM2Miw3ICszNjMsNyBAQCBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4gXG4gLy8gU0FGRVRZOiBEUk0gZGV2aWNlIG9iamVjdHMgYXJlIGFsd2F5cyByZWZlcmVuY2UgY291bnRlZCBhbmQgdGhlIGdldC9wdXQgZnVuY3Rpb25zXG4gLy8gc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4rdW5zYWZlIGltcGxcdTAwM2NUOiBkcm06OkRyaXZlciwgQzogRGV2aWNlQ29udGV4dFx1MDAzZSBSZWZDb3VudGVkIGZvciBEZXZpY2VcdTAwM2NULCBDXHUwMDNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTtcbkBAIC0zNzcsNiArMzc4LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2RGV2aWNlYC5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyLCBDOiBEZXZpY2VDb250ZXh0XHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1QsIENcdTAwM2Uge31cbitcbiBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbmluZGV4IGM4YjY2ZDgxNjg3MTkuLjgwYWZmZTYzMzVhY2YgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbkBAIC0yMSw3ICsyMSw3IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiAgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiB9O1xuQEAgLTM0LDcgKzM0LDcgQEBcbiAjW2NmZyhDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUildXG4gcHViIG1vZCBzaG1lbTtcbiBcbi0vLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgQWx3YXlzUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuKy8vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgW2BSZWZDb3VudGVkYF0gZm9yIGFueSBHRU0gb2JqZWN0IHR5cGUuXG4gLy8vXG4gLy8vIFNpbmNlIGFsbCBHRU0gb2JqZWN0cyB1c2UgdGhlIHNhbWUgcmVmY291bnRpbmcgc2NoZW1lLlxuICNbbWFjcm9fZXhwb3J0XVxuQEAgLTQ3LDcgKzQ3LDcgQEAgaW1wbCAkKCBcdTAwM2MkKCAkdHBhcmFtX2lkOmlkZW50ICksK1x1MDAzZSApPyBmb3IgJHR5cGU6dHlcbiAgICAgICAgICk/XG4gICAgICkgPVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEFsbCBHRU0gb2JqZWN0cyBhcmUgcmVmY291bnRlZC5cbi0gICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgJHR5cGVcbisgICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgJHR5cGVcbiAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiAgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksKyApP1xuQEAgLTY2LDYgKzY2LDE0IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3RfcHV0KG9iaikgfTtcbiAgICAgICAgICAgICB9XG4gICAgICAgICB9XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjJHR5cGVcdTAwM2VgIGZyb20gYVxuKyAgICAgICAgLy8gYFx1MDAyNiR0eXBlYC5cbisgICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgJHR5cGVcbisgICAgICAgIHdoZXJlXG4rICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbisgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksKyApP1xuKyAgICAgICAge31cbiAgICAgfTtcbiB9XG4gI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV1cbkBAIC0xMDksNyArMTE3LDcgQEAgZm4gY2xvc2UoX29iajogXHUwMDI2RHJpdmVyQWxsb2NJbXBsXHUwMDNjU2VsZlx1MDAzZSwgX2ZpbGU6IFx1MDAyNkRyaXZlckZpbGVcdTAwM2NTZWxmXHUwMDNlKSB7fVxuIH1cbiBcbiAvLy8gVHJhaXQgdGhhdCByZXByZXNlbnRzIGEgR0VNIG9iamVjdCBzdWJ0eXBlXG4tcHViIHRyYWl0IEludG9HRU1PYmplY3Q6IFNpemVkICsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCArIEFsd2F5c1JlZkNvdW50ZWQge1xuK3B1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCArIHN1cGVyOjpwcml2YXRlOjpTZWFsZWQgKyBSZWZDb3VudGVkIHtcbiAgICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHJhdyBgZHJtX2dlbV9vYmplY3RgIHN0cnVjdHVyZSwgd2hpY2ggbXVzdCBiZSB2YWxpZCBhcyBsb25nIGFzXG4gICAgIC8vLyB0aGlzIG93bmluZyBvYmplY3QgaXMgdmFsaWQuXG4gICAgIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0O1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG5pbmRleCAyM2VlNjg5YmQyNDAwLi43MjBlNTc0MTgzNThkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuQEAgLTEyLDggKzEyLDE1IEBAXG4gICAgIGNyZWQ6OkNyZWRlbnRpYWwsXG4gICAgIGVycm9yOjp7Y29kZTo6KiwgdG9fcmVzdWx0LCBFcnJvciwgUmVzdWx0fSxcbiAgICAgZm10LFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbiB9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG5AQCAtMTk3LDcgKzIwNCw3IEBAIHVuc2FmZSBpbXBsIFN5bmMgZm9yIEZpbGUge31cbiBcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjRmlsZVx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50LlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjEyLDYgKzIxOSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0ZpbGVcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRmlsZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkZpbGVgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge31cbitcbiAvLy8gV3JhcHMgdGhlIGtlcm5lbCdzIGBzdHJ1Y3QgZmlsZWAuIE5vdCB0aHJlYWQgc2FmZS5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxuQEAgLTIzMyw3ICsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBMb2NhbEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjTG9jYWxGaWxlXHUwMDNlYCBvd24gYSBub3JtYWwgcmVmY291bnQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjQ5LDYgKzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0xvY2FsRmlsZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NMb2NhbEZpbGVcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZMb2NhbEZpbGVgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fVxuK1xuIGltcGwgTG9jYWxGaWxlIHtcbiAgICAgLy8vIENvbnN0cnVjdHMgYSBuZXcgYHN0cnVjdCBmaWxlYCB3cmFwcGVyIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuaW5kZXggNjI0Yjk3MWNhOGIwYi4uZjlhYWNiODk0ZjUwNSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2kyYy5yc1xuKysrIGIvcnVzdC9rZXJuZWwvaTJjLnJzXG5AQCAtMTgsNyArMTgsOCBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLCAvL1xuIH07XG5AQCAtNDI0LDcgKzQyNSw3IEBAIHB1YiBmbiBnZXQoaW5kZXg6IGkzMikgLVx1MDAzZSBSZXN1bHRcdTAwM2NBUmVmXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoSTJjQWRhcHRlcik7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0FkYXB0ZXJgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19nZXRfYWRhcHRlcihzZWxmLmluZGV4KCkpIH07XG5AQCAtNDM1LDYgKzQzNiw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfcHV0X2FkYXB0ZXIob2JqLmFzX3JlZigpLmFzX3JhdygpKSB9XG4gICAgIH1cbiB9XG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0kyY0FkYXB0ZXJcdTAwM2VgIGZyb20gYW5cbisvLyBgXHUwMDI2STJjQWRhcHRlcmAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7fVxuIFxuIC8vLyBUaGUgaTJjIGJvYXJkIGluZm8gcmVwcmVzZW50YXRpb25cbiAvLy9cbkBAIC01MDAsNyArNTA0LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBJMmNDbGllbnRcdTAwM2NDXG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoSTJjQ2xpZW50KTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQ2xpZW50YCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUxMSw2ICs1MTUsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cHV0X2RldmljZShcdTAwMjZyYXcgbXV0ICgqb2JqLmFzX3JlZigpLmFzX3JhdygpKS5kZXYpIH1cbiAgICAgfVxuIH1cbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjSTJjQ2xpZW50XHUwMDNlYCBmcm9tIGFuXG4rLy8gYFx1MDAyNkkyY0NsaWVudGAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHt9XG4gXG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIEkyY0NsaWVudFx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9saWIucnMgYi9ydXN0L2tlcm5lbC9saWIucnNcbmluZGV4IDk1MTJhZjcxNTZkZjIuLmViNTI1NjIwNGExNzQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9saWIucnNcbisrKyBiL3J1c3Qva2VybmVsL2xpYi5yc1xuQEAgLTEwMSw2ICsxMDEsNyBAQFxuIHB1YiBtb2Qgb2Y7XG4gI1tjZmcoQ09ORklHX1BNX09QUCldXG4gcHViIG1vZCBvcHA7XG4rcHViIG1vZCBvd25lZDtcbiBwdWIgbW9kIHBhZ2U7XG4gI1tjZmcoQ09ORklHX1BDSSldXG4gcHViIG1vZCBwY2k7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0ucnMgYi9ydXN0L2tlcm5lbC9tbS5yc1xuaW5kZXggNDc2NGQ3YjY4ZjJhNy4uODNlZDk0ZmNhMTRjYSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL21tLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9tbS5yc1xuQEAgLTEzLDggKzEzLDE1IEBAXG4gXG4gdXNlIGNyYXRlOjp7XG4gICAgIGJpbmRpbmdzLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbiB9O1xuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcbiBcbkBAIC01NSw3ICs2Miw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge31cbiBcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW0ge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtNjksNiArNzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY01tXHUwMDNlYCBmcm9tIGEgYFx1MDAyNk1tYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7fVxuK1xuIC8vLyBBIHdyYXBwZXIgZm9yIHRoZSBrZXJuZWwncyBgc3RydWN0IG1tX3N0cnVjdGAuXG4gLy8vXG4gLy8vIFRoaXMgdHlwZSBpcyBsaWtlIFtgTW1gXSwgYnV0IHdpdGggbm9uLXplcm8gYG1tX3VzZXJzYC4gSXQgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGBtbV91c2Vyc2AgY2FuXG5AQCAtOTEsNyArMTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXIge31cbiBcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxuQEAgLTEwNSw2ICsxMTUsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NNbVdpdGhVc2VyXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2TW1XaXRoVXNlcmAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7fVxuK1xuIC8vIE1ha2UgYWxsIGBNbWAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJgLlxuIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIge1xuICAgICB0eXBlIFRhcmdldCA9IE1tO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzIGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbmluZGV4IGI4ZDJmMDUxMjI1YzcuLjhmYmMzOTZlNDYwMjggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xuKysrIGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbkBAIC0xMCw3ICsxMCwxMSBAQFxuIHVzZSBjcmF0ZTo6e1xuICAgICBiaW5kaW5ncyxcbiAgICAgbW06Ok1tV2l0aFVzZXIsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLFxuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTM0LDcgKzM4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlckFzeW5jIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW1XaXRoVXNlckFzeW5jIHt9XG4gXG4gLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtNDgsNiArNTIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NNbVdpdGhVc2VyQXN5bmNcdTAwM2VgXG4rLy8gZnJvbSBhIGBcdTAwMjZNbVdpdGhVc2VyQXN5bmNgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuK1xuIC8vIE1ha2UgYWxsIGBNbVdpdGhVc2VyYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlckFzeW5jYC5cbiBpbXBsIERlcmVmIGZvciBNbVdpdGhVc2VyQXN5bmMge1xuICAgICB0eXBlIFRhcmdldCA9IE1tV2l0aFVzZXI7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3BwLnJzIGIvcnVzdC9rZXJuZWwvb3BwLnJzXG5pbmRleCA2MmU0NDY3NjEyNWQxLi5iOGRiNmJkZWZkMDc3IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvb3BwLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9vcHAucnNcbkBAIC0xNiw4ICsxNiwxNCBAQFxuICAgICBmZmk6OntjX2NoYXIsIGNfdWxvbmd9LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OkNTdHJpbmcsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgT3BhcXVlLCAvL1xuKyAgICB9LCAvL1xuIH07XG4gXG4gI1tjZmcoQ09ORklHX0NQVV9GUkVRKV1cbkBAIC0xMDQxLDcgKzEwNDcsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBPUFAge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBPUFAge31cbiBcbiAvLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IFtgT1BQYF0gaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMTA1NSw2ICsxMDYxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NPUFBcdTAwM2VgIGZyb20gYW5cbisvLyBgXHUwMDI2T1BQYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge31cbitcbiBpbXBsIE9QUCB7XG4gICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL293bmVkLnJzIGIvcnVzdC9rZXJuZWwvb3duZWQucnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hY2I2MTFmMDg0ZmYzXG4tLS0gL2Rldi9udWxsXG4rKysgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xuQEAgLTAsMCArMSwzNzMgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuK1xuKy8vISBVbmlxdWUgb3duZWQgcG9pbnRlciB0eXBlcyBmb3Igb2JqZWN0cyB3aXRoIGN1c3RvbSBkcm9wIGxvZ2ljLlxuKy8vIVxuKy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0XG4rLy8hIGFyZSBvd25lZCBieSBSdXN0LCBidXQgbmVlZCB0byBiZSBmcmVlZCB0aHJvdWdoIHRoZSBDIEFQSS5cbitcbit1c2UgY29yZTo6e1xuKyAgICBtZW06Ok1hbnVhbGx5RHJvcCxcbisgICAgb3BzOjp7XG4rICAgICAgICBEZXJlZixcbisgICAgICAgIERlcmVmTXV0LCAvL1xuKyAgICB9LFxuKyAgICBwaW46OlBpbixcbisgICAgcHRyOjpOb25OdWxsLCAvL1xuK307XG4rdXNlIGtlcm5lbDo6e1xuKyAgICBzeW5jOjphcmVmOjpBUmVmLFxuKyAgICB0eXBlczo6UmVmQ291bnRlZCwgLy9cbit9O1xuK1xuK3VzZSBrZXJuZWw6OnR5cGVzOjpGb3JlaWduT3duYWJsZTtcbitcbisvLy8gVHlwZXMgdGhhdCBzcGVjaWZ5IHRoZWlyIG93biB3YXkgb2YgcGVyZm9ybWluZyBhbGxvY2F0aW9uIGFuZCBkZXN0cnVjdGlvbi4gVHlwaWNhbGx5LCB0aGlzIHRyYWl0XG4rLy8vIGlzIGltcGxlbWVudGVkIG9uIHR5cGVzIGZyb20gdGhlIEMgc2lkZS5cbisvLy9cbisvLy8gSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBbYE93bmVkXHUwMDNjU2VsZlx1MDAzZWBdIHBvaW50ZXIgdHlwZS5cbisvLy8gIC0gVGhpcyBpcyB1c2VmdWwgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8gdGllIHRoZSBsaWZldGltZSBvZiBhbiBvYmplY3QgcmVmZXJlbmNlIHRvIGFuIG93bmVkXG4rLy8vICAgIG9iamVjdCwgcmF0aGVyIHRoYW4gcGFzcyBhcm91bmQgYSBiYXJlIHJlZmVyZW5jZS5cbisvLy8gIC0gW2BPd25hYmxlYF0gdHlwZXMgY2FuIGRlZmluZSBjdXN0b20gZHJvcCBsb2dpYyB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIG93bmVkIHJlZmVyZW5jZVxuKy8vLyAgICBvZiB0eXBlIFtgT3duZWRcdTAwM2NfXHUwMDNlYF0gcG9pbnRpbmcgdG8gdGhlIG9iamVjdCBpcyBkcm9wcGVkLlxuKy8vL1xuKy8vLyBOb3RlOiBUaGUgdW5kZXJseWluZyBvYmplY3QgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50aW5nLCBiZWNhdXNlIGl0XG4rLy8vIHJlcHJlc2VudHMgYSB1bmlxdWUsIG93bmVkIHJlZmVyZW5jZS4gSWYgcmVmZXJlbmNlIGNvdW50aW5nIChvbiB0aGUgUnVzdCBzaWRlKSBpcyByZXF1aXJlZCxcbisvLy8gW2BSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkLiBbYE93bmFibGVSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIGNvbnZlcnNpb25cbisvLy8gYmV0d2VlbiB1bmlxdWUgYW5kIHNoYXJlZCAocmVmZXJlbmNlIGNvdW50ZWQpIG93bmVyc2hpcCBpcyBuZWVkZWQuXG4rLy8vXG4rLy8vICMgRXhhbXBsZXNcbisvLy9cbisvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoIFtgT3duZWRgXSBsb29rcyBsaWtlXG4rLy8vIHRoaXM6XG4rLy8vXG4rLy8vIGBgYFxuKy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxuKy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsO1xuKy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4rLy8vICMgdXNlIGtlcm5lbDo6c3luYzo6Z2xvYmFsX2xvY2s7XG4rLy8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZX07XG4rLy8vXG4rLy8vIC8vIExldCdzIGNvdW50IHRoZSBhbGxvY2F0aW9ucyB0byBzZWUgaWYgZnJlZWluZyB3b3Jrcy5cbisvLy8ga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jayEge1xuKy8vLyAgICAgLy8gU0FGRVRZOiB3ZSBjYWxsIGBpbml0KClgIHJpZ2h0IGJlbG93LCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS5cbisvLy8gICAgIHVuc2FmZSh1bmluaXQpIHN0YXRpYyBGT09fQUxMT0NfQ09VTlQ6IE11dGV4XHUwMDNjdXNpemVcdTAwM2UgPSAwO1xuKy8vLyB9XG4rLy8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuXG4rLy8vIHVuc2FmZSB7IEZPT19BTExPQ19DT1VOVC5pbml0KCkgfTtcbisvLy9cbisvLy8gc3RydWN0IEZvbztcbisvLy9cbisvLy8gaW1wbCBGb28ge1xuKy8vLyAgICAgZm4gbmV3KCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuKy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXG4rLy8vICAgICAgICAgLy8gbm90IGFjdHVhbGx5IGEgQy1hbGxvY2F0ZWQgb2JqZWN0LlxuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXG4rLy8vICAgICAgICAgICAgIEZvbyB7fSxcbisvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXG4rLy8vICAgICAgICAgKT87XG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTtcbisvLy8gICAgICAgICAvLyBDb3VudCBuZXcgYWxsb2NhdGlvblxuKy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpICs9IDE7XG4rLy8vICAgICAgICAgLy8gU0FGRVRZOlxuKy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cbisvLy8gICAgICAgICAvLyAgLSBXZSBjYW4gdHJhbnNmZXIgdGhpcyBvd25lcnNoaXAgdG8gdGhlIGBmcm9tX3Jhd2AgbWV0aG9kLlxuKy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8gaW1wbCBPd25hYmxlIGZvciBGb28ge1xuKy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3hcdTAwM2NTZWxmXHUwMDNlYF0gaXMgc3RpbGwgYWxpdmUuIFdlIGNhbiBwYXNzIG93bmVyc2hpcCB0byB0aGUgW2BLQm94YF0sIGFzXG4rLy8vICAgICAgICAgLy8gYnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuKy8vLyAgICAgICAgIGRyb3AodW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfSk7XG4rLy8vICAgICAgICAgLy8gQ291bnQgcmVsZWFzZWQgYWxsb2NhdGlvblxuKy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpIC09IDE7XG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8ge1xuKy8vLyAgICBsZXQgZm9vID0gRm9vOjpuZXcoKT87XG4rLy8vICAgIGFzc2VydCEoKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgPT0gMSk7XG4rLy8vIH1cbisvLy8gLy8gYGZvb2AgaXMgb3V0IG9mIHNjb3BlIG5vdywgc28gd2UgZXhwZWN0IG5vIGxpdmUgYWxsb2NhdGlvbnMuXG4rLy8vIGFzc2VydCEoKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgPT0gMCk7XG4rLy8vICMgT2s6Olx1MDAzYygpLCBFcnJvclx1MDAzZSgoKSlcbisvLy8gYGBgXG4rcHViIHRyYWl0IE93bmFibGUge1xuKyAgICAvLy8gVGVhciBkb3duIHRoaXMgYE93bmFibGVgLlxuKyAgICAvLy9cbisgICAgLy8vIEltcGxlbWVudGVycyBvZiBgT3duYWJsZWAgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNsZWFuIHVwIHRoZSB1c2Ugb2YgYFNlbGZgLiBUaGlzIGNhblxuKyAgICAvLy8gaW5jbHVkZSBmcmVlaW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbisgICAgLy8vXG4rICAgIC8vLyAjIFNhZmV0eVxuKyAgICAvLy9cbisgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLFxuKyAgICAvLy8gYW5kIHRoYXQgdGhpcyBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGByZWxlYXNlYCBtZXRob2QuIGB0aGlzYCBtdXN0IG5vdCBiZSB1c2VkXG4rICAgIC8vLyBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLCBhcyB0aGUgdW5kZXJseWluZyBvYmplY3QgbWF5IGhhdmUgYmVlbiBmcmVlZC5cbisgICAgLy8vXG4rICAgIC8vLyBgdGhpc2AgaXMgcGlubmVkIGFuZCBpbXBsZW1lbnRlcnMgb2YgdGhpcyBtZXRob2QgbXVzdCBvYnNlcnZlIHRoaXMgY29uc3RyYWludC5cbisgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpO1xuK31cbitcbisvLy8gQSBtdXRhYmxlIHJlZmVyZW5jZSB0byBhbiBvd25lZCBgVGAuXG4rLy8vXG4rLy8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzXG4rLy8vIGRyb3BwZWQuXG4rLy8vXG4rLy8vICMgSW52YXJpYW50c1xuKy8vL1xuKy8vLyAtIFVudGlsIGBUOjpyZWxlYXNlYCBpcyBjYWxsZWQsIHRoaXMgYE93bmVkXHUwMDNjVFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXG4rLy8vIC0gVGhlIGBUYCB2YWx1ZSBpcyBwaW5uZWQuXG4rcHViIHN0cnVjdCBPd25lZFx1MDAzY1Q6IE93bmFibGVcdTAwM2Uge1xuKyAgICBwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlLFxuK31cbitcbitpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBPd25lZFx1MDAzY1RcdTAwM2Uge1xuKyAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYE93bmVkYF0uXG4rICAgIC8vL1xuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4rICAgIC8vL1xuKyAgICAvLy8gIyBTYWZldHlcbisgICAgLy8vXG4rICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQ6XG4rICAgIC8vLyAtIGBwdHJgIHBvaW50cyB0byBhIHZhbGlkIGluc3RhbmNlIG9mIGBUYC5cbisgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZFx1MDAzY1RcdTAwM2VgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLlxuKyAgICAjW2lubGluZV1cbisgICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlKSAtXHUwMDNlIFNlbGYge1xuKyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnQgd2Ugc2F0aXNmeSB0aGUgZmlyc3QgaW52YXJpYW50IG9mIGBTZWxmYC5cbisgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uXG4rICAgICAgICBTZWxmIHsgcHRyIH1cbisgICAgfVxuK1xuKyAgICAvLy8gQ29uc3VtZXMgdGhlIFtgT3duZWRgXSwgcmV0dXJuaW5nIGEgcmF3IHBvaW50ZXIuXG4rICAgIC8vL1xuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGVcbisgICAgLy8vIHVuZGVybHlpbmcgYFRgIGlzIHdpdGggdGhlIGNhbGxlci5cbisgICAgLy8vXG4rICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLlxuKyAgICAjW2lubGluZV1cbisgICAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtXHUwMDNlIE5vbk51bGxcdTAwM2NUXHUwMDNlIHtcbisgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHJcbisgICAgfVxuK1xuKyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkXHUwMDNjVFx1MDAzZWAuXG4rICAgICNbaW5saW5lXVxuKyAgICBwdWIgZm4gYXNfcGluX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBQaW5cdTAwM2NcdTAwMjZtdXQgVFx1MDAzZSB7XG4rICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCwgYW5kIHRoYXQgd2UgY2FuIHNhZmVseVxuKyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXG4rICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9O1xuK1xuKyAgICAgICAgLy8gU0FGRVRZOiBCeSB0eXBlIGludmFyaWFudCBgVGAgaXMgcGlubmVkLlxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9XG4rICAgIH1cbit9XG4rXG4rLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYW4gW2BPd25lZFx1MDAzY1RcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFNlbmRgXSxcbisvLyBiZWNhdXNlIG9mIHRoZSBvd25lcnNoaXAgaW52YXJpYW50LiBTZW5kaW5nIGFuIFtgT3duZWRcdTAwM2NUXHUwMDNlYF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgVGAuXG4rdW5zYWZlIGltcGxcdTAwM2NUOiBPd25hYmxlICsgU2VuZFx1MDAzZSBTZW5kIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge31cbitcbisvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBbYFx1MDAyNk93bmVkXHUwMDNjVFx1MDAzZWBdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU3luY2BdLFxuKy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BcdTAwMjZPd25lZFx1MDAzY1RcdTAwM2VgXSBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgdGhlIGBcdTAwMjZUYC5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGUgKyBTeW5jXHUwMDNlIFN5bmMgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7fVxuK1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIERlcmVmIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuKyAgICB0eXBlIFRhcmdldCA9IFQ7XG4rXG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4rICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZC5cbisgICAgICAgIHVuc2FmZSB7IHNlbGYucHRyLmFzX3JlZigpIH1cbisgICAgfVxuK31cbitcbitpbXBsXHUwMDNjVDogT3duYWJsZSArIFVucGluXHUwMDNlIERlcmVmTXV0IGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuKyAgICAjW2lubGluZV1cbisgICAgZm4gZGVyZWZfbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcbisgICAgICAgIC8vIHJldHVybiBhIG11dGFibGUgcmVmZXJlbmNlIHRvIGl0LlxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfVxuKyAgICB9XG4rfVxuK1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIERyb3AgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgXHUwMDI2bXV0IHNlbGZgIHdlIGV4Y2x1c2l2ZWx5IG93biBgc2VsZmAgYW5kIHRoZSB1bmRlcmx5aW5nIGBUYC4gQXNcbisgICAgICAgIC8vIHdlIGFyZSBkcm9wcGluZyBgc2VsZmAsIHdlIGNhbiB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIGBUYCB0byB0aGUgYHJlbGVhc2VgIG1ldGhvZC5cbisgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07XG4rICAgIH1cbit9XG4rXG4rLy8gU0FGRVRZOiBXZSBkZXJpdmUgdGhlIHBvaW50ZXIgdG8gYFRgIGZyb20gYSB2YWxpZCBgVGAsIHNvIHRoZSByZXR1cm5lZFxuKy8vIHBvaW50ZXIgc2F0aXNmeSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIGBUYC5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRm9yZWlnbk93bmFibGUgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgIGNvbnN0IEZPUkVJR05fQUxJR046IHVzaXplID0gY29yZTo6bWVtOjphbGlnbl9vZjo6XHUwMDNjVFx1MDAzZSgpO1xuK1xuKyAgICB0eXBlIEJvcnJvd2VkXHUwMDNjJ2FcdTAwM2VcbisgICAgICAgID0gXHUwMDI2J2EgVFxuKyAgICB3aGVyZVxuKyAgICAgICAgU2VsZjogJ2E7XG4rICAgIHR5cGUgQm9ycm93ZWRNdXRcdTAwM2MnYVx1MDAzZVxuKyAgICAgICAgPSBQaW5cdTAwM2NcdTAwMjYnYSBtdXQgVFx1MDAzZVxuKyAgICB3aGVyZVxuKyAgICAgICAgU2VsZjogJ2E7XG4rXG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLVx1MDAzZSAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQge1xuKyAgICAgICAgT3duZWQ6OmludG9fcmF3KHNlbGYpLmFzX3B0cigpLmNhc3QoKVxuKyAgICB9XG4rXG4rICAgICNbaW5saW5lXVxuKyAgICB1bnNhZmUgZm4gZnJvbV9mb3JlaWduKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXHUwMDNlIFNlbGYge1xuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIGNhbWUgZnJvbSBgaW50b19mb3JlaWduYCBhbmQgY2Fubm90IGJlIG51bGwuXG4rICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwdHIuY2FzdCgpKSB9O1xuK1xuKyAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IGNvbnRyYWN0LCBgcHRyYCB3YXMgcmV0dXJuZWQgYnkgYGludG9fZm9yZWlnbmAsIHdoaWNoIGdhdmVcbisgICAgICAgIC8vIHVwIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgYSB2YWxpZCwgcGlubmVkIGBUYDsgd2UgcmV0YWtlIHRoYXQgb3duZXJzaGlwIGhlcmUuXG4rICAgICAgICB1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocHRyKSB9XG4rICAgIH1cbitcbisgICAgI1tpbmxpbmVdXG4rICAgIHVuc2FmZSBmbiBib3Jyb3dcdTAwM2MnYVx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVx1MDAzZSBTZWxmOjpCb3Jyb3dlZFx1MDAzYydhXHUwMDNlIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhXG4rICAgICAgICAvLyByZWZlcmVuY2UgZm9yIGAnYWAuXG4rICAgICAgICB1bnNhZmUgeyBcdTAwMjYqcHRyLmNhc3QoKSB9XG4rICAgIH1cbitcbisgICAgI1tpbmxpbmVdXG4rICAgIHVuc2FmZSBmbiBib3Jyb3dfbXV0XHUwMDNjJ2FcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZjo6Qm9ycm93ZWRNdXRcdTAwM2MnYVx1MDAzZSB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYVxuKyAgICAgICAgLy8gdW5pcXVlIHJlZmVyZW5jZSBmb3IgYCdhYC5cbisgICAgICAgIGxldCBpbm5lciA9IHVuc2FmZSB7IFx1MDAyNm11dCAqcHRyLmNhc3QoKSB9O1xuK1xuKyAgICAgICAgLy8gU0FGRVRZOiBXZSBuZXZlciBtb3ZlIG91dCBvZiBpbm5lciwgYW5kIHdlIGRvIG5vdCBoYW5kIG91dCBtdXRhYmxlXG4rICAgICAgICAvLyByZWZlcmVuY2VzIHdoZW4gYFQ6ICFVbnBpbmAuXG4rICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQoaW5uZXIpIH1cbisgICAgfVxuK31cbitcbisvLy8gQSB0cmFpdCBmb3Igb2JqZWN0cyB0aGF0IGNhbiBiZSB3cmFwcGVkIGluIGVpdGhlciBvbmUgb2YgdGhlIHJlZmVyZW5jZSB0eXBlcyBbYE93bmVkYF0gYW5kXG4rLy8vIFtgQVJlZmBdLlxuKy8vL1xuKy8vLyAjIEV4YW1wbGVzXG4rLy8vXG4rLy8vIEEgbWluaW1hbCBleGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIFtgT3duYWJsZVJlZkNvdW50ZWRgXSwgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoXG4rLy8vIFtgQVJlZmBdIGFuZCBbYE93bmVkYF0gbG9va3MgbGlrZSB0aGlzOlxuKy8vL1xuKy8vLyBgYGBcbisvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV1cbisvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDtcbisvLy8gIyB1c2UgY29yZTo6cHRyOjpOb25OdWxsO1xuKy8vLyAjIHVzZSBrZXJuZWw6OmFsbG9jOjp7ZmxhZ3MsIGtib3g6OktCb3gsIEFsbG9jRXJyb3J9O1xuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBSZWZDb3VudGVkfTtcbisvLy8gIyB1c2Uga2VybmVsOjp0eXBlczo6e093bmVkLCBPd25hYmxlLCBPd25hYmxlUmVmQ291bnRlZH07XG4rLy8vXG4rLy8vIC8vIEFuIGludGVybmFsbHkgcmVmY291bnRlZCBzdHJ1Y3QgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuXG4rLy8vIC8vXG4rLy8vIC8vICMgSW52YXJpYW50c1xuKy8vLyAvL1xuKy8vLyAvLyAtIGByZWZjb3VudGAgaXMgYWx3YXlzIG5vbi16ZXJvIGZvciBhIHZhbGlkIG9iamVjdC5cbisvLy8gLy8gLSBgcmVmY291bnRgIGlzIFx1MDAzZTEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC5cbisvLy8gLy9cbisvLy8gc3RydWN0IEZvbyB7XG4rLy8vICAgICByZWZjb3VudDogQ2VsbFx1MDAzY3VzaXplXHUwMDNlLFxuKy8vLyB9XG4rLy8vXG4rLy8vIGltcGwgRm9vIHtcbisvLy8gICAgIGZuIG5ldygpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbisvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xuKy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC5cbisvLy8gICAgICAgICAvLyBJTlZBUklBTlQ6IFdlIGluaXRpYWxpemUgYHJlZmNvdW50YCB0byAxLCBzYXRpc2Z5aW5nIHRoZSBpbnZhcmlhbnRzLlxuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXG4rLy8vICAgICAgICAgICAgIEZvbyB7XG4rLy8vICAgICAgICAgICAgICAgICByZWZjb3VudDogQ2VsbDo6bmV3KDEpLFxuKy8vLyAgICAgICAgICAgICB9LFxuKy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCxcbisvLy8gICAgICAgICApPztcbisvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xuKy8vLyAgICAgICAgIC8vIFNBRkVUWTpcbisvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuXG4rLy8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cbisvLy8gICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocmVzdWx0KSB9KVxuKy8vLyAgICAgfVxuKy8vLyB9XG4rLy8vXG4rLy8vIC8vIFNBRkVUWTogV2UgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZWFjaCB0aW1lIHRoZSByZXNwZWN0aXZlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgb25seSBmcmVlXG4rLy8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uXG4rLy8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZvbyB7XG4rLy8vICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbisvLy8gICAgICAgICBzZWxmLnJlZmNvdW50LnJlcGxhY2Uoc2VsZi5yZWZjb3VudC5nZXQoKSArIDEpO1xuKy8vLyAgICAgfVxuKy8vL1xuKy8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IEJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLFxuKy8vLyAgICAgICAgIC8vIGltcGx5aW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB2YWxpZC5cbisvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyBcdTAwMjZ0aGlzLmFzX3JlZigpLnJlZmNvdW50IH07XG4rLy8vICAgICAgICAgbGV0IG5ld19yZWZjb3VudCA9IHJlZmNvdW50LmdldCgpIC0gMTtcbisvLy8gICAgICAgICBpZiBuZXdfcmVmY291bnQgPT0gMCB7XG4rLy8vICAgICAgICAgICAgIC8vIFRoZSBgRm9vYCB3aWxsIGJlIGRyb3BwZWQgd2hlbiBgS0JveGAgZ29lcyBvdXQgb2Ygc2NvcGUuXG4rLy8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFx1MDAzY0Zvb1x1MDAzZWBdIGlzIHN0aWxsIGFsaXZlIGFzIHRoZSBvbGQgcmVmY291bnQgaXMgMS4gV2UgY2FuIHBhc3NcbisvLy8gICAgICAgICAgICAgLy8gb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSBhcyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sXG4rLy8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLlxuKy8vLyAgICAgICAgICAgICB1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9O1xuKy8vLyAgICAgICAgIH0gZWxzZSB7XG4rLy8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTtcbisvLy8gICAgICAgICB9XG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8gaW1wbCBPd25hYmxlUmVmQ291bnRlZCBmb3IgRm9vIHtcbisvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2UsIEFSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbisvLy8gICAgICAgICBpZiB0aGlzLnJlZmNvdW50LmdldCgpID09IDEge1xuKy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBgRm9vYCBpcyBzdGlsbCBhbGl2ZSBhbmQgaGFzIG5vIG90aGVyIFJ1c3QgcmVmZXJlbmNlcyBhcyB0aGUgcmVmY291bnRcbisvLy8gICAgICAgICAgICAgLy8gaXMgMS5cbisvLy8gICAgICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KEFSZWY6OmludG9fcmF3KHRoaXMpKSB9KVxuKy8vLyAgICAgICAgIH0gZWxzZSB7XG4rLy8vICAgICAgICAgICAgIEVycih0aGlzKVxuKy8vLyAgICAgICAgIH1cbisvLy8gICAgIH1cbisvLy9cbisvLy8gICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBBUmVmXHUwMDNjU2VsZlx1MDAzZSB7XG4rLy8vICAgICAgICAgLy8gU0FGRVRZOiBBbiBgT3duZWRcdTAwM2NGb29cdTAwM2VgIGhvbGRzIHRoZSB1bmlxdWUgcmVmZXJlbmNlIChyZWZjb3VudCAxKSwgd2hpY2ggd2UgdHJhbnNmZXIgdG9cbisvLy8gICAgICAgICAvLyB0aGUgbmV3IGBBUmVmYC5cbisvLy8gICAgICAgICB1bnNhZmUgeyBBUmVmOjpmcm9tX3JhdyhPd25lZDo6aW50b19yYXcodGhpcykpIH1cbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XG4rLy8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogVXNpbmcgYGRlY19yZWYoKWAgZnJvbSBbYFJlZkNvdW50ZWRgXSB0byByZWxlYXNlIGlzIG9rYXksIGFzIHRoZSByZWZjb3VudCBpc1xuKy8vLyAgICAgICAgIC8vIGFsd2F5cyAxIGZvciBhbiBbYE93bmVkXHUwMDNjRm9vXHUwMDNlYF0uXG4rLy8vICAgICAgICAgdW5zYWZlIHsgRm9vOjpkZWNfcmVmKHRoaXMpIH07XG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8gbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xuKy8vLyBsZXQgZm9vID0gQVJlZjo6ZnJvbShmb28pO1xuKy8vLyB7XG4rLy8vICAgICBsZXQgYmFyID0gZm9vLmNsb25lKCk7XG4rLy8vICAgICBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShiYXIpLmlzX2VycigpKTtcbisvLy8gfVxuKy8vLyBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShmb28pLmlzX29rKCkpO1xuKy8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4rLy8vIGBgYFxuK3B1YiB0cmFpdCBPd25hYmxlUmVmQ291bnRlZDogUmVmQ291bnRlZCArIE93bmFibGUgKyBTaXplZCB7XG4rICAgIC8vLyBDaGVja3MgaWYgdGhlIFtgQVJlZmBdIGlzIHVuaXF1ZSBhbmQgY29udmVydHMgaXQgdG8gYW4gW2BPd25lZGBdIGlmIHRoYXQgaXMgdGhlIGNhc2UuXG4rICAgIC8vLyBPdGhlcndpc2UgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC5cbisgICAgZm4gdHJ5X2Zyb21fc2hhcmVkKHRoaXM6IEFSZWZcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQVJlZlx1MDAzY1NlbGZcdTAwM2VcdTAwM2U7XG4rXG4rICAgIC8vLyBDb252ZXJ0cyB0aGUgW2BPd25lZGBdIGludG8gYW4gW2BBUmVmYF0uXG4rICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBBUmVmXHUwMDNjU2VsZlx1MDAzZTtcbit9XG4rXG4raW1wbFx1MDAzY1Q6IE93bmFibGVSZWZDb3VudGVkXHUwMDNlIFRyeUZyb21cdTAwM2NBUmVmXHUwMDNjVFx1MDAzZVx1MDAzZSBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbisgICAgdHlwZSBFcnJvciA9IEFSZWZcdTAwM2NUXHUwMDNlO1xuKyAgICAvLy8gVHJpZXMgdG8gY29udmVydCB0aGUgW2BBUmVmYF0gdG8gYW4gW2BPd25lZGBdIGJ5IGNhbGxpbmdcbisgICAgLy8vIFtgdHJ5X2Zyb21fc2hhcmVkKClgXShPd25hYmxlUmVmQ291bnRlZDo6dHJ5X2Zyb21fc2hhcmVkKS4gSW4gY2FzZSB0aGUgW2BBUmVmYF0gaXMgbm90XG4rICAgIC8vLyB1bmlxdWUsIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXG4rICAgICNbaW5saW5lXVxuKyAgICBmbiB0cnlfZnJvbShiOiBBUmVmXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1RcdTAwM2UsIFNlbGY6OkVycm9yXHUwMDNlIHtcbisgICAgICAgIFQ6OnRyeV9mcm9tX3NoYXJlZChiKVxuKyAgICB9XG4rfVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BhZ2UucnMgYi9ydXN0L2tlcm5lbC9wYWdlLnJzXG5pbmRleCAxYzA3OTZlYTIyOWYwLi4zMmRkMDMwYzgzMTU5IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xuQEAgLTEyLDE2ICsxMiwxNiBAQFxuICAgICAgICAgY29kZTo6KixcbiAgICAgICAgIFJlc3VsdCwgLy9cbiAgICAgfSxcbisgICAgdHlwZXM6OntcbisgICAgICAgIE9wYXF1ZSxcbisgICAgICAgIE93bmFibGUsXG4rICAgICAgICBPd25lZCwgLy9cbisgICAgfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLCAvL1xuIH07XG4tdXNlIGNvcmU6Ontcbi0gICAgbWFya2VyOjpQaGFudG9tRGF0YSxcbi0gICAgbWVtOjpNYW51YWxseURyb3AsXG4tICAgIG9wczo6RGVyZWYsXG4tICAgIHB0cjo6e1xuLSAgICAgICAgc2VsZixcbi0gICAgICAgIE5vbk51bGwsIC8vXG4tICAgIH0sIC8vXG4rdXNlIGNvcmU6OnB0cjo6e1xuKyAgICBzZWxmLFxuKyAgICBOb25OdWxsLCAvL1xuIH07XG4gXG4gLy8vIEEgYml0d2lzZSBzaGlmdCBmb3IgdGhlIHBhZ2Ugc2l6ZS5cbkBAIC02NSw5MyArNjUsMjkgQEAgcHViIGNvbnN0IGZuIHBhZ2VfYWxpZ24oYWRkcjogdXNpemUpIC1cdTAwM2UgT3B0aW9uXHUwMDNjdXNpemVcdTAwM2Uge1xuICAgICBTb21lKHN1bSBcdTAwMjYgUEFHRV9NQVNLKVxuIH1cbiBcbi0vLy8gUmVwcmVzZW50YXRpb24gb2YgYSBub24tb3duaW5nIHJlZmVyZW5jZSB0byBhIFtgUGFnZWBdLlxuLS8vL1xuLS8vLyBUaGlzIHR5cGUgcHJvdmlkZXMgYSBib3Jyb3dlZCB2ZXJzaW9uIG9mIGEgW2BQYWdlYF0gdGhhdCBpcyBvd25lZCBieSBzb21lIG90aGVyIGVudGl0eSwgZS5nLiBhXG4tLy8vIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gc3VjaCBhcyBbYFZCb3hgXS5cbi0vLy9cbi0vLy8gIyBFeGFtcGxlXG4tLy8vXG4tLy8vIGBgYFxuLS8vLyAjIHVzZSBrZXJuZWw6OntiaW5kaW5ncywgcHJlbHVkZTo6Kn07XG4tLy8vIHVzZSBrZXJuZWw6OnBhZ2U6OntCb3Jyb3dlZFBhZ2UsIFBhZ2UsIFBBR0VfU0laRX07XG4tLy8vICMgdXNlIGNvcmU6OnttZW06Ok1heWJlVW5pbml0LCBwdHIsIHB0cjo6Tm9uTnVsbCB9O1xuLS8vL1xuLS8vLyBmbiBib3Jyb3dfcGFnZVx1MDAzYydhXHUwMDNlKHZib3g6IFx1MDAyNidhIG11dCBWQm94XHUwMDNjTWF5YmVVbmluaXRcdTAwM2NbdTg7IFBBR0VfU0laRV1cdTAwM2VcdTAwM2UpIC1cdTAwM2UgQm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2Uge1xuLS8vLyAgICAgbGV0IHB0ciA9IHB0cjo6ZnJvbV9yZWYoXHUwMDI2Kip2Ym94KTtcbi0vLy9cbi0vLy8gICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tLy8vICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmNhc3QoKSkgfTtcbi0vLy9cbi0vLy8gICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkXG4tLy8vICAgICAvLyBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tLy8vICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcbi0vLy9cbi0vLy8gICAgIC8vIFNBRkVUWTpcbi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC5cbi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYHNlbGZgLlxuLS8vLyAgICAgdW5zYWZlIHsgQm9ycm93ZWRQYWdlOjpmcm9tX3JhdyhwYWdlKSB9XG4tLy8vIH1cbi0vLy9cbi0vLy8gbGV0IG11dCB2Ym94ID0gVkJveDo6XHUwMDNjW3U4OyBQQUdFX1NJWkVdXHUwMDNlOjpuZXdfdW5pbml0KEdGUF9LRVJORUwpPztcbi0vLy8gbGV0IHBhZ2UgPSBib3Jyb3dfcGFnZShcdTAwMjZtdXQgdmJveCk7XG4tLy8vXG4tLy8vIC8vIFNBRkVUWTogVGhlcmUgaXMgbm8gY29uY3VycmVudCByZWFkIG9yIHdyaXRlIHRvIHRoaXMgcGFnZS5cbi0vLy8gdW5zYWZlIHsgcGFnZS5maWxsX3plcm9fcmF3KDAsIFBBR0VfU0laRSk/IH07XG4tLy8vICMgT2s6Olx1MDAzYygpLCBFcnJvclx1MDAzZSgoKSlcbi0vLy8gYGBgXG4tLy8vXG4tLy8vICMgSW52YXJpYW50c1xuLS8vL1xuLS8vLyBUaGUgYm9ycm93ZWQgdW5kZXJseWluZyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBgJ2FgLlxuLS8vL1xuLS8vLyBbYFZCb3hgXToga2VybmVsOjphbGxvYzo6VkJveFxuLS8vLyBbYFZtYWxsb2NgXToga2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jXG4tcHViIHN0cnVjdCBCb3Jyb3dlZFBhZ2VcdTAwM2MnYVx1MDAzZShNYW51YWxseURyb3BcdTAwM2NQYWdlXHUwMDNlLCBQaGFudG9tRGF0YVx1MDAzY1x1MDAyNidhIFBhZ2VcdTAwM2UpO1xuLVxuLWltcGxcdTAwM2MnYVx1MDAzZSBCb3Jyb3dlZFBhZ2VcdTAwM2MnYVx1MDAzZSB7XG4tICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BCb3Jyb3dlZFBhZ2VgXSBmcm9tIGEgcmF3IHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLlxuLSAgICAvLy9cbi0gICAgLy8vICMgU2FmZXR5XG4tICAgIC8vL1xuLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC5cbi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCdhYC5cbi0gICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGxcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbi0gICAgICAgIGxldCBwYWdlID0gUGFnZSB7IHBhZ2U6IHB0ciB9O1xuLVxuLSAgICAgICAgLy8gSU5WQVJJQU5UOiBUaGUgc2FmZXR5IHJlcXVpcmVtZW50cyBndWFyYW50ZWUgdGhhdCBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZVxuLSAgICAgICAgLy8gYCdhYC5cbi0gICAgICAgIFNlbGYoTWFudWFsbHlEcm9wOjpuZXcocGFnZSksIFBoYW50b21EYXRhKVxuLSAgICB9XG4tfVxuLVxuLWltcGxcdTAwM2MnYVx1MDAzZSBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2Uge1xuLSAgICB0eXBlIFRhcmdldCA9IFBhZ2U7XG4tXG4tICAgIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbi0gICAgICAgIFx1MDAyNnNlbGYuMFxuLSAgICB9XG4tfVxuLVxuLS8vLyBUcmFpdCB0byBiZSBpbXBsZW1lbnRlZCBieSB0eXBlcyB3aGljaCBwcm92aWRlIGFuIFtgSXRlcmF0b3JgXSBpbXBsZW1lbnRhdGlvbiBvZlxuLS8vLyBbYEJvcnJvd2VkUGFnZWBdIGl0ZW1zLCBzdWNoIGFzIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxuKy8vLyBUcmFpdCB0byBiZSBpbXBsZW1lbnRlZCBieSB0eXBlcyB3aGljaCBwcm92aWRlIGFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXSByZWZlcmVuY2VzLCBzdWNoIGFzXG4rLy8vIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxuIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHtcbiAgICAgLy8vIFRoZSBbYEl0ZXJhdG9yYF0gdHlwZSwgZS5nLiBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbi0gICAgdHlwZSBJdGVyXHUwMDNjJ2FcdTAwM2U6IEl0ZXJhdG9yXHUwMDNjSXRlbSA9IEJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlXHUwMDNlXG4rICAgIHR5cGUgSXRlclx1MDAzYydhXHUwMDNlOiBJdGVyYXRvclx1MDAzY0l0ZW0gPSBcdTAwMjYnYSBQYWdlXHUwMDNlXG4gICAgIHdoZXJlXG4gICAgICAgICBTZWxmOiAnYTtcbiBcbi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuKyAgICAvLy8gUmV0dXJucyBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcyBvdmVyIGFsbCBwYWdlcyBvd25lZCBieSBgc2VsZmAuXG4gICAgIGZuIHBhZ2VfaXRlcihcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBTZWxmOjpJdGVyXHUwMDNjJ19cdTAwM2U7XG4gfVxuIFxuLS8vLyBBIHBvaW50ZXIgdG8gYSBwYWdlIHRoYXQgb3ducyB0aGUgcGFnZSBhbGxvY2F0aW9uLlxuKy8vLyBBIGBzdHJ1Y3QgcGFnZWAuXG4rLy8vXG4rLy8vIEEgYFBhZ2VgIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBzaGFyZWQgcmVmZXJlbmNlIG9yIHRocm91Z2ggYW4gb3duaW5nIFtgT3duZWRcdTAwM2NQYWdlXHUwMDNlYF07IHRoZSBsYXR0ZXJcbisvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuXG4gLy8vXG4gLy8vICMgSW52YXJpYW50c1xuIC8vL1xuLS8vLyBUaGUgcG9pbnRlciBpcyB2YWxpZCwgYW5kIGhhcyBvd25lcnNoaXAgb3ZlciB0aGUgcGFnZS5cbisvLy8gVGhlIGBQYWdlYCBpcyBiYWNrZWQgYnkgYSB2YWxpZCBgc3RydWN0IHBhZ2VgLlxuKyNbcmVwcih0cmFuc3BhcmVudCldXG4gcHViIHN0cnVjdCBQYWdlIHtcbi0gICAgcGFnZTogTm9uTnVsbFx1MDAzY2JpbmRpbmdzOjpwYWdlXHUwMDNlLFxuKyAgICBwYWdlOiBPcGFxdWVcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSxcbiB9XG4gXG4gLy8gU0FGRVRZOiBQYWdlcyBoYXZlIG5vIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHRoZW0gc3RheWluZyBvbiBhIGdpdmVuIHRocmVhZCwgc28gbW92aW5nIHRoZW0gYWNyb3NzXG5AQCAtMTg1LDE5ICsxMjEsMjAgQEAgaW1wbCBQYWdlIHtcbiAgICAgLy8vICMgT2s6Olx1MDAzYygpLCBrZXJuZWw6OmFsbG9jOjpBbGxvY0Vycm9yXHUwMDNlKCgpKVxuICAgICAvLy8gYGBgXG4gICAgICNbaW5saW5lXVxuLSAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZiwgQWxsb2NFcnJvclx1MDAzZSB7XG4rICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2UsIEFsbG9jRXJyb3JcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBnZnBfZmxhZ3NgLCB0aGlzIGNhbGwgbWF5IHNsZWVwLiBPdGhlciB0aGFuIHRoYXQsIGl0XG4gICAgICAgICAvLyBpcyBhbHdheXMgc2FmZSB0byBjYWxsIHRoaXMgbWV0aG9kLlxuICAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6YWxsb2NfcGFnZXMoZmxhZ3MuYXNfcmF3KCksIDApIH07XG4gICAgICAgICBsZXQgcGFnZSA9IE5vbk51bGw6Om5ldyhwYWdlKS5va19vcihBbGxvY0Vycm9yKT87XG4tICAgICAgICAvLyBJTlZBUklBTlQ6IFdlIGp1c3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBhIHBhZ2UsIHNvIHdlIG5vdyBoYXZlIG93bmVyc2hpcCBvZiB0aGUgbmV3bHlcbi0gICAgICAgIC8vIGFsbG9jYXRlZCBwYWdlLiBXZSB0cmFuc2ZlciB0aGF0IG93bmVyc2hpcCB0byB0aGUgbmV3IGBQYWdlYCBvYmplY3QuXG4tICAgICAgICBPayhTZWxmIHsgcGFnZSB9KVxuKyAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XG4rICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgT3duZWRcdTAwM2NQYWdlXHUwMDNlYCBvYmplY3QuXG4rICAgICAgICAvLyBTaW5jZSBgUGFnZWAgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSBwb2ludGVyIGRpcmVjdGx5LlxuKyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KVxuICAgICB9XG4gXG4gICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuXG4gICAgIHB1YiBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqbXV0IGJpbmRpbmdzOjpwYWdlIHtcbi0gICAgICAgIHNlbGYucGFnZS5hc19wdHIoKVxuKyAgICAgICAgc2VsZi5wYWdlLmdldCgpXG4gICAgIH1cbiBcbiAgICAgLy8vIEdldCB0aGUgbm9kZSBpZCBjb250YWluaW5nIHRoaXMgcGFnZS5cbkBAIC0yMDcsNiArMTQ0LDIwIEBAIHB1YiBmbiBuaWQoXHUwMDI2c2VsZikgLVx1MDAzZSBpMzIge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBhZ2VfdG9fbmlkKHNlbGYuYXNfcHRyKCkpIH1cbiAgICAgfVxuIFxuKyAgICAvLy8gQ3JlYXRlIGEgYFx1MDAyNlBhZ2VgIGZyb20gYSByYXcgYHN0cnVjdCBwYWdlYCBwb2ludGVyLlxuKyAgICAvLy9cbisgICAgLy8vICMgU2FmZXR5XG4rICAgIC8vL1xuKyAgICAvLy8gYHB0cmAgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZCByZWZlcmVuY2Ugd2l0aCBhIGxpZmV0aW1lIG9mIGAnYWAuXG4rICAgICNbaW5saW5lXVxuKyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3XHUwMDNjJ2FcdTAwM2UocHRyOiAqY29uc3QgYmluZGluZ3M6OnBhZ2UpIC1cdTAwM2UgXHUwMDI2J2EgU2VsZiB7XG4rICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCByZWZlcnMgdG8gYSB2YWxpZCBgc3RydWN0IHBhZ2VgLCBzb1xuKyAgICAgICAgLy8gdGhlIHJldHVybmVkIHJlZmVyZW5jZSB1cGhvbGRzIHRoZSB0eXBlIGludmFyaWFudCBvZiBgUGFnZWAuXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIG5vdCBudWxsIGFuZCBpcyBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZFxuKyAgICAgICAgLy8gcmVmZXJlbmNlLlxuKyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnB0ci5jYXN0KCkgfVxuKyAgICB9XG4rXG4gICAgIC8vLyBSdW5zIGEgcGllY2Ugb2YgY29kZSB3aXRoIHRoaXMgcGFnZSBtYXBwZWQgdG8gYW4gYWRkcmVzcy5cbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgcGFnZSBpcyB1bm1hcHBlZCB3aGVuIHRoaXMgY2FsbCByZXR1cm5zLlxuQEAgLTM3MywxMCArMzI0LDExIEBAIHB1YiB1bnNhZmUgZm4gY29weV9mcm9tX3VzZXJfc2xpY2VfcmF3KFxuICAgICB9XG4gfVxuIFxuLWltcGwgRHJvcCBmb3IgUGFnZSB7XG4raW1wbCBPd25hYmxlIGZvciBQYWdlIHtcbiAgICAgI1tpbmxpbmVdXG4tICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0gICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgd2UgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIHBhZ2UgYW5kIGNhbiBmcmVlIGl0LlxuLSAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyhzZWxmLnBhZ2UuYXNfcHRyKCksIDApIH07XG4rICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWVcbisgICAgICAgIC8vIGl0LiBTaW5jZSBQYWdlIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcmF3IHBvaW50ZXIgZGlyZWN0bHkuXG4rICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6X19mcmVlX3BhZ2VzKHRoaXMuYXNfcHRyKCkuY2FzdCgpLCAwKSB9O1xuICAgICB9XG4gfVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BjaS5ycyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuaW5kZXggNTA3MWNhZTY1NDNmZC4uZWE5ZWY5OWNlY2IwNyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BjaS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvcGNpLnJzXG5AQCAtMTksNiArMTksMTAgQEBcbiAgICAgfSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgc3RyOjpDU3RyLFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTQ4MSw3ICs0ODUsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcdTAwM2NDdHhcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZVxuIGltcGxcdTAwM2MnYVx1MDAzZSBjcmF0ZTo6ZG1hOjpEZXZpY2VcdTAwM2MnYVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJ2FcdTAwM2VcdTAwM2Uge31cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBjaV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtNDkzLDYgKzQ5NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkRldmljZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4rXG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycyBiL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcbmluZGV4IDk3OWE5NzE4ZjE1M2QuLjA2N2Y2OGI5OWU4YzUgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5AQCAtNyw3ICs3LDE0IEBAXG4gLy8hIEMgaGVhZGVyOiBbYGluY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaCkgYW5kXG4gLy8hIFtgaW5jbHVkZS9saW51eC9waWQuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWQuaClcbiBcbi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdHlwZXM6Ok9wYXF1ZX07XG4rdXNlIGNyYXRlOjp7XG4rICAgIGJpbmRpbmdzLFxuKyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLFxuKyAgICB0eXBlczo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbit9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwncyBgc3RydWN0IHBpZF9uYW1lc3BhY2VgLiBUaHJlYWQgc2FmZS5cbkBAIC00MSw3ICs0OCw3IEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9wdHJcdTAwM2MnYVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLVx1MDAzZSBcdTAwMjYnYSBTZWxmIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYFBpZE5hbWVzcGFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC01NSw2ICs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1BpZE5hbWVzcGFjZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NQaWROYW1lc3BhY2VcdTAwM2VgIGZyb21cbisvLyBhIGBcdTAwMjZQaWROYW1lc3BhY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fVxuK1xuIC8vIFNBRkVUWTpcbiAvLyAtIGBQaWROYW1lc3BhY2U6OmRlY19yZWZgIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLlxuIC8vIC0gSXQgaXMgb2theSB0byBzZW5kIG93bmVyc2hpcCBvZiBgUGlkTmFtZXNwYWNlYCBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuaW5kZXggZDQxNTU1YTRiMzFkMi4uYTRkZGFhMWNjM2E0MCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuQEAgLTI0LDYgKzI0LDEwIEBAXG4gICAgIH0sXG4gICAgIG9mLFxuICAgICBwcmVsdWRlOjoqLFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTUxOSw3ICs1MjMsNyBAQCBwdWIgZm4gb3B0aW9uYWxfaXJxX2J5X25hbWUoXHUwMDI2c2VsZiwgbmFtZTogXHUwMDI2Q1N0cikgLVx1MDAzZSBSZXN1bHRcdTAwM2NJcnFSZXF1ZXN0XHUwMDNjJ19cdTAwM2VcdTAwM2Uge1xuIGltcGxcdTAwM2MnYVx1MDAzZSBjcmF0ZTo6ZG1hOjpEZXZpY2VcdTAwM2MnYVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJ2FcdTAwM2VcdTAwM2Uge31cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC01MzEsNiArNTM1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2RGV2aWNlYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbitcbiBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wd20ucnMgYi9ydXN0L2tlcm5lbC9wd20ucnNcbmluZGV4IDZjOWQ2NjcwMDllZjcuLjJkMWNkNzRkZDk4ZTEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wd20ucnNcbisrKyBiL3J1c3Qva2VybmVsL3B3bS5yc1xuQEAgLTEzLDcgKzEzLDExIEBAXG4gICAgIGRldnJlcyxcbiAgICAgZXJyb3I6OntzZWxmLCB0b19yZXN1bHR9LFxuICAgICBwcmVsdWRlOjoqLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFSZWYsXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy9cbiB9O1xuIHVzZSBjb3JlOjp7XG5AQCAtNjI5LDcgKzYzMyw3IEBAIHB1YiBmbiBuZXdcdTAwM2MnYVx1MDAzZShcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbXBsZW1lbnRzIHJlZmNvdW50aW5nIGZvciBgQ2hpcGAgdXNpbmcgdGhlIGVtYmVkZGVkIGBzdHJ1Y3QgZGV2aWNlYC5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IFB3bU9wc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBDaGlwXHUwMDNjVFx1MDAzZSB7XG4rdW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IGBzZWxmLjAuZ2V0KClgIHBvaW50cyB0byBhIHZhbGlkIGBwd21fY2hpcGAgYmVjYXVzZSBgc2VsZmAgZXhpc3RzLlxuQEAgLTY0Nyw2ICs2NTEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjQ2hpcFx1MDAzY1RcdTAwM2VcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjQ2hpcFx1MDAzY1RcdTAwM2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZDaGlwXHUwMDNjVFx1MDAzZWAuXG4rdW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge31cbitcbiAvLyBTQUZFVFk6IGBDaGlwYCBpcyBhIHdyYXBwZXIgYXJvdW5kIGAqbXV0IGJpbmRpbmdzOjpwd21fY2hpcGAuIFRoZSB1bmRlcmx5aW5nIENcbiAvLyBzdHJ1Y3R1cmUncyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCdzIGRldmljZSBtb2RlbFxuIC8vIGFuZCBQV00gY29yZSBsb2NraW5nIG1lY2hhbmlzbXMuIFRoZXJlZm9yZSwgaXQgaXMgc2FmZSB0byBtb3ZlIHRoZSBgQ2hpcGBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbmluZGV4IGI3MjFiMmUwMGI5ODYuLmU2ZmZlN2M2NTBjMzkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbisrKyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xuQEAgLTExLDcgKzExLDcgQEBcbiAvLyEgdW5kZXJseWluZyBvYmplY3QsIGJ1dCB0aGlzIHJlZmNvdW50IGlzIGludGVybmFsIHRvIHRoZSBvYmplY3QuIEl0IGVzc2VudGlhbGx5IGlzIGEgUnVzdFxuIC8vISBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGdldF9gIGFuZCBgcHV0X2AgcGF0dGVybiB1c2VkIGluIEMgZm9yIHJlZmVyZW5jZSBjb3VudGluZy5cbiAvLyFcbi0vLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmXHUwMDNjTXlUeXBlXHUwMDNlYF0sIGBNeVR5cGVgIG5lZWRzIHRvIGltcGxlbWVudCBbYEFsd2F5c1JlZkNvdW50ZWRgXS4gSXQgaXMgYSB0cmFpdFxuKy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcdTAwM2NNeVR5cGVcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XG4gLy8hIGZvciBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3Qgb2YgdGhlIGBNeVR5cGVgIHR5cGUuXG4gLy8hXG4gLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmNcbkBAIC0yMywyNiArMjMsMzUgQEBcbiAgICAgb3BzOjpEZXJlZixcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4rdXNlIGtlcm5lbDo6dHlwZXM6OntcbisgICAgT3duYWJsZVJlZkNvdW50ZWQsXG4rICAgIE93bmVkLCAvL1xuK307XG4gXG4tLy8vIFR5cGVzIHRoYXQgYXJlIF9hbHdheXNfIHJlZmVyZW5jZSBjb3VudGVkLlxuKy8vLyBUeXBlcyB0aGF0IGFyZSBpbnRlcm5hbGx5IHJlZmVyZW5jZSBjb3VudGVkLlxuIC8vL1xuIC8vLyBJdCBhbGxvd3Mgc3VjaCB0eXBlcyB0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSByZWYgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZnVuY3Rpb25zLlxuLS8vLyBBZGRpdGlvbmFsbHksIGl0IGFsbG93cyB1c2VycyB0byBjb252ZXJ0IGZyb20gYSBzaGFyZWQgcmVmZXJlbmNlIGBcdTAwMjZUYCB0byBhbiBvd25lZCByZWZlcmVuY2Vcbi0vLy8gW2BBUmVmXHUwMDNjVFx1MDAzZWBdLlxuIC8vL1xuIC8vLyBUaGlzIGlzIHVzdWFsbHkgaW1wbGVtZW50ZWQgYnkgd3JhcHBlcnMgdG8gZXhpc3Rpbmcgc3RydWN0dXJlcyBvbiB0aGUgQyBzaWRlIG9mIHRoZSBjb2RlLiBGb3JcbiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkXG4gLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuXG4gLy8vXG4rLy8vIE5vdGU6IEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXS4gSXQgcmVxdWlyZXMgYW5cbisvLy8gaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGFuZCBwcm92aWRlcyBvbmx5IHNoYXJlZCByZWZlcmVuY2VzLiBJZiB1bmlxdWUgcmVmZXJlbmNlcyBhcmUgcmVxdWlyZWRcbisvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW5cbisvLy8gW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdFxuKy8vLyBbYE93bmFibGVSZWZDb3VudGVkYF0gYWxsb3dzIHRvIGNvbnZlcnQgYmV0d2VlbiB1bmlxdWUgYW5kXG4rLy8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkgYW5kXG4rLy8vIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXSkuXG4rLy8vXG4gLy8vICMgU2FmZXR5XG4gLy8vXG4gLy8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCBrZWVwIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5XG4gLy8vIGF0IGxlYXN0IHVudGlsIG1hdGNoaW5nIGRlY3JlbWVudHMgYXJlIHBlcmZvcm1lZC5cbiAvLy9cbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBhbGwgaW5zdGFuY2VzIGFyZSByZWZlcmVuY2UtY291bnRlZC4gKE90aGVyd2lzZSB0aGV5XG4tLy8vIHdvbid0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdFxuLS8vLyBhbGl2ZS4pXG4tcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcbisvLy8gd29uJ3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0IGFsaXZlLilcbitwdWIgdW5zYWZlIHRyYWl0IFJlZkNvdW50ZWQge1xuICAgICAvLy8gSW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvYmplY3QuXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZik7XG4gXG5AQCAtNTUsMTEgKzY0LDI3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgd2FzIGEgcHJldmlvdXMgbWF0Y2hpbmcgaW5jcmVtZW50IHRvIHRoZSByZWZlcmVuY2UgY291bnQsXG4gICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heVxuICAgICAvLy8gcmVzdWx0IGluIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQpLCB1bmxlc3MgdGhlIGNhbGxlciBvd25zIGFub3RoZXIgaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudFxuLSAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzXG4tICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbisgICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscyBbYFJlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbiAgICAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSk7XG4gfVxuIFxuKy8vLyBBbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgdHlwZS5cbisvLy9cbisvLy8gSXQgYWxsb3dzIGRlcml2aW5nIGEgY291bnRlZCByZWZlcmVuY2UgW2BBUmVmXHUwMDNjVFx1MDAzZWBdIGZyb20gYSBgXHUwMDI2VGAuXG4rLy8vXG4rLy8vIFRoaXMgcHJvdmlkZXMgc29tZSBjb252ZW5pZW5jZSwgYnV0IGl0IGFsbG93cyBcImVzY2FwaW5nXCIgYm9ycm93IGNoZWNrcyBvbiBgXHUwMDI2VGAuIEFzIGl0XG4rLy8vIGNvbXBsaWNhdGVzIGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IGEgcmVmZXJlbmNlIHRvIFQgaXMgdW5pcXVlLCBpdCBpcyBvcHRpb25hbCB0byBwcm92aWRlIGZvclxuKy8vLyBbYFJlZkNvdW50ZWRgXSB0eXBlcy4gU2VlICpTYWZldHkqIGJlbG93LlxuKy8vL1xuKy8vLyAjIFNhZmV0eVxuKy8vL1xuKy8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBzYWZldHkgaW52YXJpYW50cyBhcmUgdmlvbGF0ZWQgYnkgdXBncmFkaW5nIGFuIGBcdTAwMjZUYCB0byBhblxuKy8vLyBbYEFSZWZcdTAwM2NUXHUwMDNlYF0uIEluIHBhcnRpY3VsYXIgdGhhdCBpbXBsaWVzIFtgQWx3YXlzUmVmQ291bnRlZGBdIGFuZCBbYGNyYXRlOjp0eXBlczo6T3duYWJsZWBdXG4rLy8vIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBmb3IgdGhlIHNhbWUgdHlwZSwgYXMgdGhpcyB3b3VsZCBhbGxvdyB2aW9sYXRpbmcgdGhlIHVuaXF1ZW5lc3MgZ3VhcmFudGVlXG4rLy8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZFx1MDAzY1RcdTAwM2VgXSBieSBkZXJlZmVyZW5jaW5nIGl0IGludG8gYW4gYFx1MDAyNlRgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbVxuKy8vLyB0aGF0LlxuK3B1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZDogUmVmQ291bnRlZCB7fVxuK1xuIC8vLyBBbiBvd25lZCByZWZlcmVuY2UgdG8gYW4gYWx3YXlzLXJlZmVyZW5jZS1jb3VudGVkIG9iamVjdC5cbiAvLy9cbiAvLy8gVGhlIG9iamVjdCdzIHJlZmVyZW5jZSBjb3VudCBpcyBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BBUmVmYF0gaXNcbkBAIC03MCw3ICs5NSw3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gLy8vXG4gLy8vIFRoZSBwb2ludGVyIHN0b3JlZCBpbiBgcHRyYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgW2BBUmVmYF0gaW5zdGFuY2UuIEluXG4gLy8vIHBhcnRpY3VsYXIsIHRoZSBbYEFSZWZgXSBpbnN0YW5jZSBvd25zIGFuIGluY3JlbWVudCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QncyByZWZlcmVuY2UgY291bnQuXG4tcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4rcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSB7XG4gICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4gICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY1RcdTAwM2UsXG4gfVxuQEAgLTc5LDE5ICsxMDQsMTkgQEAgcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4gLy8gaXQgZWZmZWN0aXZlbHkgbWVhbnMgc2hhcmluZyBgXHUwMDI2VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LCBpdCBuZWVkc1xuIC8vIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGFuIGBBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IHVsdGltYXRlbHkgYWNjZXNzIGBUYCB1c2luZyBhXG4gLy8gbXV0YWJsZSByZWZlcmVuY2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFx1MDAzZSBTZW5kIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXHUwMDNlIFNlbmQgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYFx1MDAyNkFSZWZcdTAwM2NUXHUwMDNlYCB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBgU3luY2BcbiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSxcbiAvLyBpdCBuZWVkcyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhIGBcdTAwMjZBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW5cbiAvLyBgQVJlZlx1MDAzY1RcdTAwM2VgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yXG4gLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgU3luYyArIFNlbmRcdTAwM2UgU3luYyBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFx1MDAzZSBTeW5jIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLlxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIEFSZWZcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBBUmVmXHUwMDNjVFx1MDAzZSB7XG4gICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFtgQVJlZmBdLlxuICAgICAvLy9cbiAgICAgLy8vIEl0IHRha2VzIG92ZXIgYW4gaW5jcmVtZW50IG9mIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuQEAgLTEyMCwxOSArMTQ1LDIxIEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbiAgICAgLy8vXG4gICAgIC8vLyBgYGBcbiAgICAgLy8vIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4tICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07XG4rICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XG4gICAgIC8vL1xuICAgICAvLy8gc3RydWN0IEVtcHR5IHt9XG4gICAgIC8vL1xuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXG4tICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7XG4rICAgIC8vLyAvLyBTQUZFVFk6IFRoZSBgUmVmQ291bnRlZGAgaW1wbGVtZW50YXRpb24gZm9yIGBFbXB0eWAgZG9lcyBub3QgY291bnQgcmVmZXJlbmNlcyBhbmQgbmV2ZXJcbisgICAgLy8vIC8vIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gVGh1cyB3ZSBjYW4gYWN0IGFzIG93bmluZyBhbiBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50IGZvclxuKyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLlxuKyAgICAvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRW1wdHkge1xuICAgICAvLy8gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge31cbiAgICAgLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZihfb2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge31cbiAgICAgLy8vIH1cbiAgICAgLy8vXG4gICAgIC8vLyBsZXQgbXV0IGRhdGEgPSBFbXB0eSB7fTtcbiAgICAgLy8vIGxldCBwdHIgPSBOb25OdWxsOjpcdTAwM2NFbXB0eVx1MDAzZTo6bmV3KFx1MDAyNm11dCBkYXRhKS51bndyYXAoKTtcbi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLlxuKyAgICAvLy8gLy8gU0FGRVRZOiBXZSBrZWVwIGBkYXRhYCBhcm91bmQgbG9uZ2VyIHRoYW4gdGhlIGBBUmVmYC5cbiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZlx1MDAzY0VtcHR5XHUwMDNlID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9O1xuICAgICAvLy8gbGV0IHJhd19wdHI6IE5vbk51bGxcdTAwM2NFbXB0eVx1MDAzZSA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTtcbiAgICAgLy8vXG5AQCAtMTQzLDcgKzE3MCw3IEBAIHB1YiBmbiBpbnRvX3JhdyhtZTogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBDbG9uZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICAgICAgc2VsZi5pbmNfcmVmKCk7XG4gICAgICAgICAvLyBTQUZFVFk6IFdlIGp1c3QgaW5jcmVtZW50ZWQgdGhlIHJlZmNvdW50IGFib3ZlLlxuQEAgLTE1MSw3ICsxNzgsNyBAQCBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIERlcmVmIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRGVyZWYgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBUO1xuIFxuICAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG5AQCAtMTY4LDcgKzE5NSwxNCBAQCBmbiBmcm9tKGI6IFx1MDAyNlQpIC1cdTAwM2UgU2VsZiB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFx1MDAzZSBGcm9tXHUwMDNjT3duZWRcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBmcm9tKGI6IE93bmVkXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbisgICAgICAgIFQ6OmludG9fc2hhcmVkKGIpXG4rICAgIH1cbit9XG4rXG4raW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UncmUgYWJvdXQgdG9cbiAgICAgICAgIC8vIGRlY3JlbWVudC5cbkBAIC0xNzgsMTkgKzIxMiwxOSBAQCBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjQVJlZlx1MDAzY1VcdTAwM2VcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCArIFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4tICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIFQ6IFJlZkNvdW50ZWQgKyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuKyAgICBVOiBSZWZDb3VudGVkLFxuIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZBUmVmXHUwMDNjVVx1MDAzZSkgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIFQ6OmVxKFx1MDAyNioqc2VsZiwgXHUwMDI2KipvdGhlcilcbiAgICAgfVxuIH1cbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCArIEVxXHUwMDNlIEVxIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkICsgRXFcdTAwM2UgRXEgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjXHUwMDI2J18gVVx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICsgUGFydGlhbEVxXHUwMDNjVVx1MDAzZSxcbisgICAgVDogUmVmQ291bnRlZCArIFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4ge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gZXEoXHUwMDI2c2VsZiwgb3RoZXI6IFx1MDAyNlx1MDAyNlUpIC1cdTAwM2UgYm9vbCB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdGFzay5ycyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcbmluZGV4IDM4MjczZjRlZWRiNTEuLjYyNTk0MzBiMGNhMzEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC90YXNrLnJzXG4rKysgYi9ydXN0L2tlcm5lbC90YXNrLnJzXG5AQCAtMTAsNyArMTAsMTIgQEBcbiAgICAgcGlkX25hbWVzcGFjZTo6UGlkTmFtZXNwYWNlLFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjpBUmVmLFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcbisgICAgICAgIE9wYXF1ZSxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gfTtcbiB1c2UgY29yZTo6e1xuICAgICBvcHM6OkRlcmVmLFxuQEAgLTM0Nyw3ICszNTIsNyBAQCBwdWIgZm4gZ3JvdXBfbGVhZGVyKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2VGFzayB7XG4gfVxuIFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgVGFza2AgaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFRhc2sge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMzYxLDYgKzM2NiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjVGFza1x1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNlRhc2tgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge31cbitcbiBpbXBsIFBhcnRpYWxFcSBmb3IgVGFzayB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBlcShcdTAwMjZzZWxmLCBvdGhlcjogXHUwMDI2U2VsZikgLVx1MDAzZSBib29sIHtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC90eXBlcy5ycyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXG5pbmRleCBhYzMxNmZkN2I1MzhmLi42YWE3NjA5NTJjYjYzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvdHlwZXMucnNcbisrKyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXG5AQCAtMTUsNiArMTUsMTggQEBcbiBwdWIgbW9kIGZvcl9sdDtcbiBwdWIgdXNlIGZvcl9sdDo6Rm9yTHQ7XG4gXG4rcHViIHVzZSBjcmF0ZTo6e1xuKyAgICBvd25lZDo6e1xuKyAgICAgICAgT3duYWJsZSxcbisgICAgICAgIE93bmFibGVSZWZDb3VudGVkLFxuKyAgICAgICAgT3duZWQsIC8vXG4rICAgIH0sXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LCAvL1xuK307XG4rXG4gLy8vIFVzZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIGFuZCBmcm9tIGZvcmVpZ24gKG5vbi1SdXN0KSBsYW5ndWFnZXMuXG4gLy8vXG4gLy8vIE93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCBmcm9tIFJ1c3QgdG8gYSBmb3JlaWduIGxhbmd1YWdlIGJ5IGNhbGxpbmcgW2BTZWxmOjppbnRvX2ZvcmVpZ25gXSBhbmRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91c2IucnMgYi9ydXN0L2tlcm5lbC91c2IucnNcbmluZGV4IDdhZmYwYzgyZDBhZmMuLjU5MzUwYzZiMGRmMmEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC91c2IucnNcbisrKyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuQEAgLTE4LDcgKzE4LDEwIEBAXG4gICAgICAgICB0b19yZXN1bHQsIC8vXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4tICAgIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtMzkyLDcgKzM5NSw3IEBAIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNkRldmljZSB7XG4gfVxuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJbnRlcmZhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYEludGVyZmFjZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfaW50ZXJmYWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxuQEAgLTQwNiw2ICs0MDksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NJbnRlcmZhY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZJbnRlcmZhY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7fVxuK1xuIC8vIFNBRkVUWTogQSBgSW50ZXJmYWNlYCBpcyBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgYW5kIGNhbiBiZSByZWxlYXNlZCBmcm9tIGFueSB0aHJlYWQuXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgSW50ZXJmYWNlIHt9XG4gXG5AQCAtNDQzLDcgKzQ1MCw3IEBAIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OnVzYl9kZXZpY2Uge1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXG5AQCAtNDU3LDYgKzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkRldmljZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4rXG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG5pbmRleCA3ZTI1M2I2ZjI5OWNlLi43NzY3M2I4ZWE0NWZiIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG4rKysgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnNcbkBAIC0xOTIsNyArMTkyLDcgQEBcbiAgICAgc3luYzo6e1xuICAgICAgICAgYXJlZjo6e1xuICAgICAgICAgICAgIEFSZWYsXG4tICAgICAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbisgICAgICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICAgICAgfSxcbiAgICAgICAgIEFyYyxcbiAgICAgICAgIExvY2tDbGFzc0tleSwgLy9cbkBAIC05NTQsNyArOTU0LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd0RlbGF5ZWRXb3JrSXRlbVx1MDAzY0lEXHUwMDNlIGZvciBQaW5cdTAwM2NLQm94XHUwMDNjVFx1MDAzZVx1MDAzZVxuIC8vICAgICBpbXBsZW1lbnRhdGlvbiBvZiBgV29ya0l0ZW1Qb2ludGVyYCBmb3IgYEFSZWZcdTAwM2NUXHUwMDNlYC5cbiB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgV29ya0l0ZW1Qb2ludGVyXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbisgICAgVDogUmVmQ291bnRlZCxcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc1dvcmtcdTAwM2NULCBJRFx1MDAzZSxcbiB7XG5AQCAtOTg3LDcgKzk4Nyw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiAvLyByZXF1aXJlbWVudHMgb2YgYFdvcmtJdGVtUG9pbnRlcmAuXG4gdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd1dvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbisgICAgVDogUmVmQ291bnRlZCxcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc1dvcmtcdTAwM2NULCBJRFx1MDAzZSxcbiB7XG5AQCAtMTAyMCw3ICsxMDIwLDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd0RlbGF5ZWRXb3JrSXRlbVx1MDAzY0lEXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIHdoZXJlXG4gICAgIFQ6IFdvcmtJdGVtXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXHUwMDNlLFxuICAgICBUOiBIYXNEZWxheWVkV29ya1x1MDAzY1QsIElEXHUwMDNlLFxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxuKyAgICBUOiBSZWZDb3VudGVkLFxuIHtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzoxMjozOC43Njc2MzYzMTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzc5OTQwNDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IEEgRGVlcCBEaXZlIGludG8gUnVzdCBBYnN0cmFjdGlvbiBSZWZhY3RvcmluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZSBpZiBpdCB3YXJyYW50cyBmdXp6aW5nLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCByZXN0cnVjdHVyaW5nIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciB0aGUgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgaW50cm9kdWNpbmcgYE93bmVkXHUwMDNjVFx1MDAzZWAgYW5kIGBPd25hYmxlYCB0cmFpdHMuIFdlJ3JlIGFsc28gc2VlaW5nIGEgcmVmYWN0b3Jpbmcgb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCBjaGFuZ2VzIGluIGhvdyBgUGFnZWAgYW5kIGBQYWdlSW5mb2AgYXJlIGhhbmRsZWQsIG5vdyB1c2luZyBgT3duZWRcdTAwM2NQYWdlXHUwMDNlYCBpbiBhbGxvY2F0aW9uLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYmVoYXZpb3IgdGhhdCBjb3VsZCBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLiBPbiBpbml0aWFsIHJldmlldywgaXQgc2VlbXMgbGlrZSB3ZSdyZSBtb3N0bHkgZGVhbGluZyB3aXRoOlxuXG4qICAgYEFsd2F5c1JlZkNvdW50ZWRgIHNwbGl0IGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGBcbiogICBJbnRyb2R1Y3Rpb24gb2YgYE93bmVkXHUwMDNjVFx1MDAzZWAgYXMgYSBwb2ludGVyIHR5cGUuXG4qICAgYFBhZ2VgIGFsbG9jYXRpb24gbm93IHJldHVybmluZyBgT3duZWRcdTAwM2NQYWdlXHUwMDNlYC5cbiogICBgUGFnZUluZm9gIGluIEFuZHJvaWQgQmluZGVyIHVzaW5nIGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBjaGFuZ2VzIHRvdWNoIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBkcml2ZXJzLiBTY2FubmluZyBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYCwgSSBzZWUgY2hhbmdlcyByZWxhdGVkIHRvIGBzZXRfcGFnZWAuIEhvd2V2ZXIsIHRoaXMgYXBwZWFycyB0byBiZSBhbm90aGVyIFJ1c3QgYWJzdHJhY3Rpb24gc2hpZnQsIGRlYWxpbmcgd2l0aCBgT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlYCBpbnN0ZWFkIG9mIGBPcHRpb25cdTAwM2NQYWdlXHUwMDNlYC4gVGhlIGBPd25lZFx1MDAzY1RcdTAwM2VgIGVzc2VudGlhbGx5IHdyYXBzIGBOb25OdWxsXHUwMDNjVFx1MDAzZWAuICBgUGFnZWAgd2FzIHByZXZpb3VzbHkgcmVwcmVzZW50ZWQgYXMgYE5vbk51bGxcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZWAuIE5vdywgaXTigJlzIGBOb25OdWxsXHUwMDNjUGFnZVx1MDAzZWAsIHdoaWNoIGVmZmVjdGl2ZWx5IGJlY29tZXMgYE5vbk51bGxcdTAwM2NPcGFxdWVcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZVx1MDAzZWAuICBUaGlzIG1lYW5zIHRoZSBzaXplIGFuZCBsYXlvdXQgYXJlIGlkZW50aWNhbC4gQWxzbywgdGhlIGRyb3AgbG9naWMgZm9yIGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmlvciBkcm9wIGxvZ2ljIGZvciB0aGUgb3JpZ2luYWwgYFBhZ2VgLlxuXG5Mb29raW5nIGRlZXBlciwgYHJ1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc2AgaXMgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIGB0b19wYWdlYCByZXR1cm5lZCBhIGBCb3Jyb3dlZFBhZ2VgLCBub3cgaXQgaXMgcmV0dXJuaW5nIGBcdTAwMjZwYWdlOjpQYWdlYC4gYEJvcnJvd2VkUGFnZWAgd2FzIGEgd3JhcHBlciBhcm91bmQgYE1hbnVhbGx5RHJvcFx1MDAzY1BhZ2VcdTAwM2VgLiBJdCBhcHBlYXJzIHRvIGJlIGFub3RoZXIgUnVzdCB0eXBlIHN5c3RlbSBjaGFuZ2UuXG5cblNvLCBhcmUgdGhlcmUgYW55ICpmdW5jdGlvbmFsKiBpbXBsaWNhdGlvbnM/IE5vLiBJdCBzZWVtcyB0aGlzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IHR5cGVzIGFuZCB0cmFpdHMuIEludHJvZHVjaW5nIGBPd25lZGAgYW5kIGBPd25hYmxlYCBhbmQgc3BsaXR0aW5nIGBBbHdheXNSZWZDb3VudGVkYCBkb2Vzbid0IHNlZW0gdG8gYWx0ZXIgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgYmVoYXZpb3IuIExldCdzIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG5ldyBmZWF0dXJlcyBvciBsb2dpYyBhcyBhIHJlc3VsdCBvZiB0aGVzZSBjaGFuZ2VzLiBJJ20gc2VlaW5nIGEgbmV3IGZpbGUsIGBydXN0L2tlcm5lbC9vd25lZC5yc2AsIGJ1dCBpdCdzIGp1c3QgZGVmaW5pdGlvbnMgZm9yIHRoZSBuZXcgdHlwZXMgYW5kIHRyYWl0cy5cblxuUmV2aWV3aW5nIHRoZSBjaGFuZ2VzIGluIGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNgLCBgcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzYCwgYW5kIGBydXN0L2tlcm5lbC9vd25lZC5yc2AgYWdhaW4sIGl0IGxvb2tzIHB1cmVseSBsaWtlIGFuIEFQSSByZWZhY3RvcmluZy4gVGhlIGNvbXBpbGVkIGNvZGUgd2lsbCBhbG1vc3QgY2VydGFpbmx5IHJlbWFpbiBleGFjdGx5IHRoZSBzYW1lLiBObyBmdW5jdGlvbmFsIGNoYW5nZS5cblxuTGV0IG1lIG1ha2UgYWJzb2x1dGVseSBzdXJlLCBhbmQgZG91YmxlLWNoZWNrIGFsbCB0aGUgZmlsZXMgdG91Y2hlZCBpbiB0aGlzIHNlcmllcy5cblxuLSAgIGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNgOiBTd2l0Y2hlZCBmcm9tIGBPcHRpb25cdTAwM2NQYWdlXHUwMDNlYCB0byBgT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlYC5cbi0gICBgcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzYDogU3dpdGNoZWQgZnJvbSBgQm9ycm93ZWRQYWdlYCB0byBgXHUwMDI2UGFnZWAuXG4tICAgYHJ1c3Qva2VybmVsL2FsbG9jL2tib3gucnNgOiBBZGRlZCBgaW50b19ub25fbnVsbGAuXG4tICAgYHJ1c3Qva2VybmVsL2F1eGlsaWFyeS5yc2A6IENoYW5nZWQgYEFsd2F5c1JlZkNvdW50ZWRgIHRvIGBSZWZDb3VudGVkYCArIGBBbHdheXNSZWZDb3VudGVkYC5cbi0gICBgcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc2A6IFNhbWUuXG4tICAgYHJ1c3Qva2VybmVsL2NyZWQucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9kZXZpY2UucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzYDogU2FtZS5cbi0gICBgcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9mcy9maWxlLnJzYDogU2FtZS5cbi0gICBgcnVzdC9rZXJuZWwvaTJjLnJzYDogU2FtZS5cbi0gICBgcnVzdC9rZXJuZWwvbW0ucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc2A6IFNhbWUuXG4tICAgYHJ1c3Qva2VybmVsL29wcC5yc2A6IFNhbWUuXG4tICAgYHJ1c3Qva2VybmVsL293bmVkLnJzYDogTmV3IGZpbGUgd2l0aCBgT3duYWJsZWAsIGBPd25lZGAsIGBPd25hYmxlUmVmQ291bnRlZGAuXG4tICAgYHJ1c3Qva2VybmVsL3BhZ2UucnNgOiBgQm9ycm93ZWRQYWdlYCByZW1vdmVkLCBgUGFnZWAgbm93IHVzZXMgYE93bmFibGVgLCBgYWxsb2NfcGFnZWAgcmV0dXJucyBgT3duZWRcdTAwM2NQYWdlXHUwMDNlYC5cbi0gICBgcnVzdC9rZXJuZWwvcGNpLnJzYDogU2FtZSByZWZjb3VudCBjaGFuZ2VzLlxuLSAgIFxuXG4iLCJJbnB1dFRva2VucyI6MjMxMzcsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjEyOjU2LjU2NzA0MzcyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIHRoZSBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHJhaXRzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCB1cGRhdGVzIHRoZSBgUGFnZWAgYWJzdHJhY3Rpb24gYW5kIGl0cyB1c2VycyAobGlrZSBBbmRyb2lkIEJpbmRlcikgdG8gdXNlIHRoZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIHRoZSBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHJhaXRzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCB1cGRhdGVzIHRoZSBgUGFnZWAgYWJzdHJhY3Rpb24gYW5kIGl0cyB1c2VycyAobGlrZSBBbmRyb2lkIEJpbmRlcikgdG8gdXNlIHRoZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6MTI6NTYuNTY3MDY5Mjg0WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6ptw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 13:11:12 +0000 UTC FinishedAt: 2026-08-24 13:12:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIHRoZSBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHJhaXRzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCB1cGRhdGVzIHRoZSBgUGFnZWAgYWJzdHJhY3Rpb24gYW5kIGl0cyB1c2VycyAobGlrZSBBbmRyb2lkIEJpbmRlcikgdG8gdXNlIHRoZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkzNzAyZmRjMzViNDI0MmVmZGNjNTMyNjNkOTkzMWYzZDVlYWQ3NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzoxMjozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnMgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcbmluZGV4IGU4MmE1NTIzODA0ZjQuLmM1NWJhMjlhYmVhNzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuQEAgLTMzLDcgJiM0MzszMyw3IEBAXG4gICAgIHN5bmM6OnthcmVmOjpBUmVmLCBNdXRleCwgU3BpbkxvY2t9LFxuICAgICB0YXNrOjpQaWQsXG4gICAgIHRyYW5zbXV0ZTo6RnJvbUJ5dGVzLFxuLSAgICB0eXBlczo6T3BhcXVlLFxuJiM0MzsgICAgdHlwZXM6OntPcGFxdWUsIE93bmVkfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLFxuIH07XG4gXG5AQCAtMTk4LDcgJiM0MzsxOTgsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbm5lciB7fVxuICNbcmVwcihDKV1cbiBzdHJ1Y3QgUGFnZUluZm8ge1xuICAgICBscnU6IGJpbmRpbmdzOjpsaXN0X2hlYWQsXG4tICAgIHBhZ2U6IE9wdGlvblx1MDAzY1BhZ2VcdTAwM2UsXG4mIzQzOyAgICBwYWdlOiBPcHRpb25cdTAwM2NPd25lZFx1MDAzY1BhZ2VcdTAwM2VcdTAwM2UsXG4gICAgIHJhbmdlOiAqY29uc3QgU2hyaW5rYWJsZVBhZ2VSYW5nZSxcbiB9XG4gXG5AQCAtMjA2LDcgJiM0MzsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHtcbiAgICAgLy8vICMgU2FmZXR5XG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0LlxuLSAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IFBhZ2UpIHtcbiYjNDM7ICAgIHVuc2FmZSBmbiBzZXRfcGFnZShtZTogKm11dCBQYWdlSW5mbywgcGFnZTogT3duZWRcdTAwM2NQYWdlXHUwMDNlKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoaXMgcG9pbnRlciBvZmZzZXQgaXMgaW4gYm91bmRzLlxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xuIFxuQEAgLTIyOSwxMyAmIzQzOzIyOSwxMyBAQCB1bnNhZmUgZm4gZ2V0X3BhZ2VcdTAwM2MmIzM5O2FcdTAwM2UobWU6ICpjb25zdCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjYmIzM5O2EgUGFnZVx1MDAzZSB7XG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXHUwMDI2cmF3IGNvbnN0ICgqbWUpLnBhZ2UgfTtcbiBcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgZm9yIHJlYWRpbmcuXG4tICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfcmVmKCkgfVxuJiM0MzsgICAgICAgIHVuc2FmZSB7ICgqcHRyKS5hc19kZXJlZigpIH1cbiAgICAgfVxuIFxuICAgICAvLy8gIyBTYWZldHlcbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICYjMzk7YS5cbi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NQYWdlXHUwMDNlIHtcbiYjNDM7ICAgIHVuc2FmZSBmbiB0YWtlX3BhZ2UobWU6ICptdXQgUGFnZUluZm8pIC1cdTAwM2UgT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXHUwMDI2cmF3IG11dCAoKm1lKS5wYWdlIH07XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzIGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXG5pbmRleCBjZDQyMDNmMjdhZWQwLi5jN2I5YjA2OWNmNzVkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbkBAIC0xNjksNyAmIzQzOzE2OSw3IEBAIHVuc2FmZSBmbiByZWFsbG9jKFxuIH1cbiBcbiBpbXBsIFZtYWxsb2Mge1xuLSAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BwYWdlOjpCb3Jyb3dlZFBhZ2VgXS5cbiYjNDM7ICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2UuXG4gICAgIC8vL1xuICAgICAvLy8gIyBFeGFtcGxlc1xuICAgICAvLy9cbkBAIC0yMDIsMjAgJiM0MzsyMDIsMTcgQEAgaW1wbCBWbWFsbG9jIHtcbiAgICAgLy8vXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiAgICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgYCYjMzk7YWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZVx1MDAzYyYjMzk7YVx1MDAzZShwdHI6IE5vbk51bGxcdTAwM2N1OFx1MDAzZSkgLVx1MDAzZSBwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2Uge1xuJiM0MzsgICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXHUwMDNjJiMzOTthXHUwMDNlKHB0cjogTm9uTnVsbFx1MDAzY3U4XHUwMDNlKSAtXHUwMDNlIFx1MDAyNiYjMzk7YSBwYWdlOjpQYWdlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTtcbiBcbi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXJcbi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcbi1cbiAgICAgICAgIC8vIFNBRkVUWTpcbi0gICAgICAgIC8vIC0gYHBhZ2VgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAsIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2Zcbi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cbi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZlxuLSAgICAgICAgLy8gICBgJiMzOTthYC5cbi0gICAgICAgIHVuc2FmZSB7IHBhZ2U6OkJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuJiM0MzsgICAgICAgIC8vIC0gYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkLCBub24tbnVsbCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuJiM0MzsgICAgICAgIC8vICAgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb25cbiYjNDM7ICAgICAgICAvLyAgIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLlxuJiM0MzsgICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCwgYW5kIGhlbmNlIHRoZSBgc3RydWN0IHBhZ2VgLCBpc1xuJiM0MzsgICAgICAgIC8vICAgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYCYjMzk7YWAuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnBhZ2UuY2FzdCgpIH1cbiAgICAgfVxuIH1cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5pbmRleCAwMmZkYTNlYTVjYWU2Li44ZGNjMTZlZDg5ODkzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5AQCAtOSw3ICYjNDM7OSw3IEBAXG4gICAgIHB0cjo6Tm9uTnVsbCwgLy9cbiB9O1xuIFxuLS8vLyBBbiBbYEl0ZXJhdG9yYF0gb2YgW2BwYWdlOjpCb3Jyb3dlZFBhZ2VgXSBpdGVtcyBvd25lZCBieSBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24uXG4mIzQzOy8vLyBBbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0ocGFnZTo6UGFnZSkgcmVmZXJlbmNlcyBvd25lZCBieSBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24uXG4gLy8vXG4gLy8vICMgR3VhcmFudGVlc1xuIC8vL1xuQEAgLTI4LDExICYjNDM7MjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXJcdTAwM2MmIzM5O2FcdTAwM2Uge1xuICAgICBzaXplOiB1c2l6ZSxcbiAgICAgLy8vIFRoZSBjdXJyZW50IHBhZ2UgaW5kZXggb2YgdGhlIFtgSXRlcmF0b3JgXS5cbiAgICAgaW5kZXg6IHVzaXplLFxuLSAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2VcdTAwM2UsXG4mIzQzOyAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NcdTAwMjYmIzM5O2EgcGFnZTo6UGFnZVx1MDAzZSxcbiB9XG4gXG4gaW1wbFx1MDAzYyYjMzk7YVx1MDAzZSBJdGVyYXRvciBmb3IgVm1hbGxvY1BhZ2VJdGVyXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0gICAgdHlwZSBJdGVtID0gcGFnZTo6Qm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlO1xuJiM0MzsgICAgdHlwZSBJdGVtID0gXHUwMDI2JiMzOTthIHBhZ2U6OlBhZ2U7XG4gXG4gICAgIGZuIG5leHQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgT3B0aW9uXHUwMDNjU2VsZjo6SXRlbVx1MDAzZSB7XG4gICAgICAgICBsZXQgb2Zmc2V0ID0gc2VsZi5pbmRleC5jaGVja2VkX211bChwYWdlOjpQQUdFX1NJWkUpPztcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuaW5kZXggMzVkMWUwMTU4NDhkZC4uZTZjNjM3YmJlMjAwOSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnNcbkBAIC0yMTEsNiAmIzQzOzIxMSwxNSBAQCBwdWIgZm4gbGVha1x1MDAzYyYjMzk7YVx1MDAzZShiOiBTZWxmKSAtXHUwMDNlIFx1MDAyNiYjMzk7YSBtdXQgVCB7XG4gICAgICAgICAvLyB3aGljaCBwb2ludHMgdG8gYW4gaW5pdGlhbGl6ZWQgaW5zdGFuY2Ugb2YgYFRgLlxuICAgICAgICAgdW5zYWZlIHsgXHUwMDI2bXV0ICpCb3g6OmludG9fcmF3KGIpIH1cbiAgICAgfVxuJiM0MztcbiYjNDM7ICAgIC8vLyBDb25zdW1lcyB0aGUgYEJveFx1MDAzY1QsIEFcdTAwM2VgIGFuZCByZXR1cm5zIGEgYE5vbk51bGxcdTAwM2NUXHUwMDNlYC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgcHViIGZuIGludG9fbm9uX251bGwoYjogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgQm94OjppbnRvX3Jhd2AgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChTZWxmOjppbnRvX3JhdyhiKSkgfVxuJiM0MzsgICAgfVxuIH1cbiBcbiBpbXBsXHUwMDNjVCwgQVx1MDAzZSBCb3hcdTAwM2NNYXliZVVuaW5pdFx1MDAzY1RcdTAwM2UsIEFcdTAwM2VcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbmluZGV4IGM0MjkyOGQ1YTIzOTMuLjg1NDUyNTI4OWM4YjQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuQEAgLTE5LDYgJiM0MzsxOSwxMCBAQFxuICAgICAgICAgdG9fcmVzdWx0LCAvL1xuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gICAgIHR5cGVzOjp7XG4gICAgICAgICBGb3JMdCxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxuQEAgLTM0NCw3ICYjNDM7MzQ4LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC0zNjMsNiAmIzQzOzM2NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG5pbmRleCBjZTNlMzBjODFjYjVlLi44ZGFkMTVhZTRjZmIwIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuQEAgLTksNyAmIzQzOzksMTEgQEBcbiAgICAgYmxvY2s6Om1xOjpPcGVyYXRpb25zLFxuICAgICBlcnJvcjo6UmVzdWx0LFxuICAgICBzeW5jOjp7XG4tICAgICAgICBhcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4mIzQzOyAgICAgICAgYXJlZjo6e1xuJiM0MzsgICAgICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgICAgIH0sXG4gICAgICAgICBhdG9taWM6OlJlbGF4ZWQsXG4gICAgICAgICBSZWZjb3VudCxcbiAgICAgfSxcbkBAIC0yMjksMTEgJiM0MzsyMzMsMTAgQEAgdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIFNlbmQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHt9XG4gLy8gbXV0YXRlIGBzZWxmYCBhcmUgaW50ZXJuYWxseSBzeW5jaHJvbml6ZWRgXG4gdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIFN5bmMgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHt9XG4gXG4tLy8gU0FGRVRZOiBBbGwgaW5zdGFuY2VzIG9mIGBSZXF1ZXN0XHUwMDNjVFx1MDAzZWAgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzXG4tLy8gaW1wbGVtZW50YXRpb24gb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudFxuLS8vIGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGEgbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50XG4tLy8gZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7XG4mIzQzOy8vIFNBRkVUWTogQWxsIGluc3RhbmNlcyBvZiBgUmVxdWVzdFx1MDAzY1RcdTAwM2VgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgUmVmQ291bnRlZGBcbiYjNDM7Ly8gZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50IGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGFcbiYjNDM7Ly8gbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpcyBleGVjdXRlZC5cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIFJlZkNvdW50ZWQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICBzZWxmLndyYXBwZXJfcmVmKCkucmVmY291bnQoKS5pbmMoKTtcbiAgICAgfVxuQEAgLTI1NSwzICYjNDM7MjU4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB9XG4gICAgIH1cbiB9XG4mIzQzO1xuJiM0MzsvLyBTQUZFVFk6IFdlIGN1cnJlbnRseSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY1JlcXVlc3RcdTAwM2VgXG4mIzQzOy8vIGZyb20gYSBgXHUwMDI2UmVxdWVzdGAgKGJ1dCB0aGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUpLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9jcmVkLnJzIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xuaW5kZXggZmZhMTU2YjlkZjM3Ny4uYjE3NzM2YTlhZGNkNSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2NyZWQucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2NyZWQucnNcbkBAIC04LDcgJiM0Mzs4LDE1IEBAXG4gLy8hXG4gLy8hIFJlZmVyZW5jZTogXHUwMDNjaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3Qvc2VjdXJpdHkvY3JlZGVudGlhbHMuaHRtbFx1MDAzZVxuIFxuLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0YXNrOjpLdWlkLCB0eXBlczo6T3BhcXVlfTtcbiYjNDM7dXNlIGNyYXRlOjp7XG4mIzQzOyAgICBiaW5kaW5ncyxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsXG4mIzQzOyAgICB0YXNrOjpLdWlkLFxuJiM0MzsgICAgdHlwZXM6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE9wYXF1ZSwgLy9cbiYjNDM7ICAgIH0sIC8vXG4mIzQzO307XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBjcmVkYC5cbiAvLy9cbkBAIC03Niw3ICYjNDM7ODQsNyBAQCBwdWIgZm4gZXVpZChcdTAwMjZzZWxmKSAtXHUwMDNlIEt1aWQge1xuIH1cbiBcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYENyZWRlbnRpYWxgIGlzIGFsd2F5cyByZWYtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC05MCwzICYjNDM7OTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFx1MDAzY0NyZWRlbnRpYWxcdTAwM2UpIHtcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwdXRfY3JlZChvYmouY2FzdCgpLmFzX3B0cigpKSB9O1xuICAgICB9XG4gfVxuJiM0MztcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0NyZWRlbnRpYWxcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2Q3JlZGVudGlhbGAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge31cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2UucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2UucnNcbmluZGV4IDFhMzhiM2JiZGZiN2QuLjlhZmVjZDNmYTMyMzcgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xuQEAgLTgsOCAmIzQzOzgsMTIgQEBcbiAgICAgYmluZGluZ3MsXG4gICAgIGZtdCxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcbiAgICAgICAgIE9wYXF1ZSwgLy9cbiAgICAgfSwgLy9cbkBAIC00NDgsNyAmIzQzOzQ1Miw3IEBAIHB1YiBmbiBuYW1lKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2Q1N0ciB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtNDYwLDYgJiM0Mzs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIC8vIFNBRkVUWTogQXMgYnkgdGhlIHR5cGUgaW52YXJpYW50IGBEZXZpY2VgIGNhbiBiZSBzZW50IHRvIGFueSB0aHJlYWQuXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgRGV2aWNlIHt9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG5pbmRleCA1YWVhZDgzNWZiYmMwLi5jZWU3ZTI1MDEzNjg5IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcbkBAIC0xNCw3ICYjNDM7MTQsMTAgQEBcbiAgICAgZm10LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSxcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuIH07XG4gXG5AQCAtMzYwLDcgJiM0MzszNjMsNyBAQCBmbiBmbXQoXHUwMDI2c2VsZiwgZjogXHUwMDI2bXV0IGZtdDo6Rm9ybWF0dGVyXHUwMDNjJiMzOTtfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEZ3Tm9kZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbiYjNDM7dW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yIEZ3Tm9kZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlXG4gICAgICAgICAvLyByZWZjb3VudCBpcyBub24temVyby5cbkBAIC0zNzQsNiAmIzQzOzM3NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0Z3Tm9kZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZGd05vZGVgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge31cbiYjNDM7XG4gZW51bSBOb2RlXHUwMDNjJiMzOTthXHUwMDNlIHtcbiAgICAgQm9ycm93ZWQoXHUwMDI2JiMzOTthIEZ3Tm9kZSksXG4gICAgIE93bmVkKEFSZWZcdTAwM2NGd05vZGVcdTAwM2UpLFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnMgYi9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzXG5pbmRleCA0NzdjZjc3MWZiMTBlLi42ZmMwMmQ1MDQzMzRlIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuQEAgLTE3LDcgJiM0MzsxNyw4IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiAgICAgfSxcbiAgICAgdHlwZXM6OntcbiAgICAgICAgIE5vdFRocmVhZFNhZmUsXG5AQCAtMzYyLDcgJiM0MzszNjMsNyBAQCBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4gXG4gLy8gU0FGRVRZOiBEUk0gZGV2aWNlIG9iamVjdHMgYXJlIGFsd2F5cyByZWZlcmVuY2UgY291bnRlZCBhbmQgdGhlIGdldC9wdXQgZnVuY3Rpb25zXG4gLy8gc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtMzc3LDYgJiM0MzszNzgsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkRldmljZWAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7fVxuJiM0MztcbiBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbmluZGV4IGM4YjY2ZDgxNjg3MTkuLjgwYWZmZTYzMzVhY2YgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbkBAIC0yMSw3ICYjNDM7MjEsNyBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuIH07XG5AQCAtMzQsNyAmIzQzOzM0LDcgQEBcbiAjW2NmZyhDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUildXG4gcHViIG1vZCBzaG1lbTtcbiBcbi0vLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgQWx3YXlzUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuJiM0MzsvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuIC8vL1xuIC8vLyBTaW5jZSBhbGwgR0VNIG9iamVjdHMgdXNlIHRoZSBzYW1lIHJlZmNvdW50aW5nIHNjaGVtZS5cbiAjW21hY3JvX2V4cG9ydF1cbkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQ6aWRlbnQgKSwmIzQzO1x1MDAzZSApPyBmb3IgJHR5cGU6dHlcbiAgICAgICAgICk/XG4gICAgICkgPVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEFsbCBHRU0gb2JqZWN0cyBhcmUgcmVmY291bnRlZC5cbi0gICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwmIzQzO1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4mIzQzOyAgICAgICAgdW5zYWZlIGltcGwgJCggXHUwMDNjJCggJHRwYXJhbV9pZCApLCYjNDM7XHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgJHR5cGVcbiAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiAgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksJiM0MzsgKT9cbkBAIC02Niw2ICYjNDM7NjYsMTQgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdF9wdXQob2JqKSB9O1xuICAgICAgICAgICAgIH1cbiAgICAgICAgIH1cbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzYyR0eXBlXHUwMDNlYCBmcm9tIGFcbiYjNDM7ICAgICAgICAvLyBgXHUwMDI2JHR5cGVgLlxuJiM0MzsgICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwmIzQzO1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4mIzQzOyAgICAgICAgd2hlcmVcbiYjNDM7ICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiYjNDM7ICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCYjNDM7ICk/XG4mIzQzOyAgICAgICAge31cbiAgICAgfTtcbiB9XG4gI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV1cbkBAIC0xMDksNyAmIzQzOzExNyw3IEBAIGZuIGNsb3NlKF9vYmo6IFx1MDAyNkRyaXZlckFsbG9jSW1wbFx1MDAzY1NlbGZcdTAwM2UsIF9maWxlOiBcdTAwMjZEcml2ZXJGaWxlXHUwMDNjU2VsZlx1MDAzZSkge31cbiB9XG4gXG4gLy8vIFRyYWl0IHRoYXQgcmVwcmVzZW50cyBhIEdFTSBvYmplY3Qgc3VidHlwZVxuLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCAmIzQzOyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICYjNDM7IEFsd2F5c1JlZkNvdW50ZWQge1xuJiM0MztwdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgJiM0Mzsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCAmIzQzOyBSZWZDb3VudGVkIHtcbiAgICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHJhdyBgZHJtX2dlbV9vYmplY3RgIHN0cnVjdHVyZSwgd2hpY2ggbXVzdCBiZSB2YWxpZCBhcyBsb25nIGFzXG4gICAgIC8vLyB0aGlzIG93bmluZyBvYmplY3QgaXMgdmFsaWQuXG4gICAgIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0O1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG5pbmRleCAyM2VlNjg5YmQyNDAwLi43MjBlNTc0MTgzNThkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuQEAgLTEyLDggJiM0MzsxMiwxNSBAQFxuICAgICBjcmVkOjpDcmVkZW50aWFsLFxuICAgICBlcnJvcjo6e2NvZGU6OiosIHRvX3Jlc3VsdCwgRXJyb3IsIFJlc3VsdH0sXG4gICAgIGZtdCxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLFxuJiM0MzsgICAgICAgIE9wYXF1ZSwgLy9cbiYjNDM7ICAgIH0sIC8vXG4gfTtcbiB1c2UgY29yZTo6cHRyO1xuIFxuQEAgLTE5Nyw3ICYjNDM7MjA0LDcgQEAgdW5zYWZlIGltcGwgU3luYyBmb3IgRmlsZSB7fVxuIFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgRmlsZWAgaXMgYWx3YXlzIHJlZi1jb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uXG4gLy8gbWFrZXMgYEFSZWZcdTAwM2NGaWxlXHUwMDNlYCBvd24gYSBub3JtYWwgcmVmY291bnQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRmlsZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjEyLDYgJiM0MzsyMTksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NGaWxlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NGaWxlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkZpbGVgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGaWxlIHt9XG4mIzQzO1xuIC8vLyBXcmFwcyB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgZmlsZWAuIE5vdCB0aHJlYWQgc2FmZS5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxuQEAgLTIzMyw3ICYjNDM7MjQ0LDcgQEAgcHViIHN0cnVjdCBMb2NhbEZpbGUge1xuIFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgTG9jYWxGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb25cbiAvLyBtYWtlcyBgQVJlZlx1MDAzY0xvY2FsRmlsZVx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50LlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0yNDksNiAmIzQzOzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0xvY2FsRmlsZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTG9jYWxGaWxlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkxvY2FsRmlsZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fVxuJiM0MztcbiBpbXBsIExvY2FsRmlsZSB7XG4gICAgIC8vLyBDb25zdHJ1Y3RzIGEgbmV3IGBzdHJ1Y3QgZmlsZWAgd3JhcHBlciBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLlxuICAgICAvLy9cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9pMmMucnMgYi9ydXN0L2tlcm5lbC9pMmMucnNcbmluZGV4IDYyNGI5NzFjYThiMGIuLmY5YWFjYjg5NGY1MDUgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9pMmMucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuQEAgLTE4LDcgJiM0MzsxOCw4IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiAgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy9cbiB9O1xuQEAgLTQyNCw3ICYjNDM7NDI1LDcgQEAgcHViIGZuIGdldChpbmRleDogaTMyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0FSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQWRhcHRlcmAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19nZXRfYWRhcHRlcihzZWxmLmluZGV4KCkpIH07XG5AQCAtNDM1LDYgJiM0Mzs0MzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6aTJjX3B1dF9hZGFwdGVyKG9iai5hc19yZWYoKS5hc19yYXcoKSkgfVxuICAgICB9XG4gfVxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjSTJjQWRhcHRlclx1MDAzZWAgZnJvbSBhblxuJiM0MzsvLyBgXHUwMDI2STJjQWRhcHRlcmAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge31cbiBcbiAvLy8gVGhlIGkyYyBib2FyZCBpbmZvIHJlcHJlc2VudGF0aW9uXG4gLy8vXG5AQCAtNTAwLDcgJiM0Mzs1MDQsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcdTAwM2NDdHhcdTAwM2UgZm9yIEkyY0NsaWVudFx1MDAzY0NcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNDbGllbnQpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJMmNDbGllbnRgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUxMSw2ICYjNDM7NTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9kZXZpY2UoXHUwMDI2cmF3IG11dCAoKm9iai5hc19yZWYoKS5hc19yYXcoKSkuZGV2KSB9XG4gICAgIH1cbiB9XG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NJMmNDbGllbnRcdTAwM2VgIGZyb20gYW5cbiYjNDM7Ly8gYFx1MDAyNkkyY0NsaWVudGAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fVxuIFxuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBJMmNDbGllbnRcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbGliLnJzIGIvcnVzdC9rZXJuZWwvbGliLnJzXG5pbmRleCA5NTEyYWY3MTU2ZGYyLi5lYjUyNTYyMDRhMTc0IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbGliLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9saWIucnNcbkBAIC0xMDEsNiAmIzQzOzEwMSw3IEBAXG4gcHViIG1vZCBvZjtcbiAjW2NmZyhDT05GSUdfUE1fT1BQKV1cbiBwdWIgbW9kIG9wcDtcbiYjNDM7cHViIG1vZCBvd25lZDtcbiBwdWIgbW9kIHBhZ2U7XG4gI1tjZmcoQ09ORklHX1BDSSldXG4gcHViIG1vZCBwY2k7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0ucnMgYi9ydXN0L2tlcm5lbC9tbS5yc1xuaW5kZXggNDc2NGQ3YjY4ZjJhNy4uODNlZDk0ZmNhMTRjYSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL21tLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9tbS5yc1xuQEAgLTEzLDggJiM0MzsxMywxNSBAQFxuIFxuIHVzZSBjcmF0ZTo6e1xuICAgICBiaW5kaW5ncyxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLFxuJiM0MzsgICAgICAgIE9wYXF1ZSwgLy9cbiYjNDM7ICAgIH0sIC8vXG4gfTtcbiB1c2UgY29yZTo6e29wczo6RGVyZWYsIHB0cjo6Tm9uTnVsbH07XG4gXG5AQCAtNTUsNyAmIzQzOzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbSB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW0ge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtNjksNiAmIzQzOzc2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1cdTAwM2VgIGZyb20gYSBgXHUwMDI2TW1gLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7fVxuJiM0MztcbiAvLy8gQSB3cmFwcGVyIGZvciB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgbW1fc3RydWN0YC5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIGlzIGxpa2UgW2BNbWBdLCBidXQgd2l0aCBub24temVybyBgbW1fdXNlcnNgLiBJdCBjYW4gb25seSBiZSB1c2VkIHdoZW4gYG1tX3VzZXJzYCBjYW5cbkBAIC05MSw3ICYjNDM7MTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXIge31cbiBcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cbkBAIC0xMDUsNiAmIzQzOzExNSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NNbVdpdGhVc2VyXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNk1tV2l0aFVzZXJgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHt9XG4mIzQzO1xuIC8vIE1ha2UgYWxsIGBNbWAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJgLlxuIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIge1xuICAgICB0eXBlIFRhcmdldCA9IE1tO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzIGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbmluZGV4IGI4ZDJmMDUxMjI1YzcuLjhmYmMzOTZlNDYwMjggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbkBAIC0xMCw3ICYjNDM7MTAsMTEgQEBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4gICAgIG1tOjpNbVdpdGhVc2VyLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLFxuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTM0LDcgJiM0MzszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cbkBAIC00OCw2ICYjNDM7NTIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1XaXRoVXNlckFzeW5jXHUwMDNlYFxuJiM0MzsvLyBmcm9tIGEgYFx1MDAyNk1tV2l0aFVzZXJBc3luY2AuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuJiM0MztcbiAvLyBNYWtlIGFsbCBgTW1XaXRoVXNlcmAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJBc3luY2AuXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29wcC5ycyBiL3J1c3Qva2VybmVsL29wcC5yc1xuaW5kZXggNjJlNDQ2NzYxMjVkMS4uYjhkYjZiZGVmZDA3NyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL29wcC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvb3BwLnJzXG5AQCAtMTYsOCAmIzQzOzE2LDE0IEBAXG4gICAgIGZmaTo6e2NfY2hhciwgY191bG9uZ30sXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN0cjo6Q1N0cmluZyxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuLSAgICB0eXBlczo6T3BhcXVlLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgT3BhcXVlLCAvL1xuJiM0MzsgICAgfSwgLy9cbiB9O1xuIFxuICNbY2ZnKENPTkZJR19DUFVfRlJFUSldXG5AQCAtMTA0MSw3ICYjNDM7MTA0Nyw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE9QUCB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE9QUCB7fVxuIFxuIC8vLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgW2BPUFBgXSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMTA1NSw2ICYjNDM7MTA2MSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY09QUFx1MDAzZWAgZnJvbSBhblxuJiM0MzsvLyBgXHUwMDI2T1BQYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHt9XG4mIzQzO1xuIGltcGwgT1BQIHtcbiAgICAgLy8vIENyZWF0ZXMgYW4gb3duZWQgcmVmZXJlbmNlIHRvIGEgW2BPUFBgXSBmcm9tIGEgdmFsaWQgcG9pbnRlci5cbiAgICAgLy8vXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3duZWQucnMgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmFjYjYxMWYwODRmZjNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL293bmVkLnJzXG5AQCAtMCwwICYjNDM7MSwzNzMgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7XG4mIzQzOy8vISBVbmlxdWUgb3duZWQgcG9pbnRlciB0eXBlcyBmb3Igb2JqZWN0cyB3aXRoIGN1c3RvbSBkcm9wIGxvZ2ljLlxuJiM0MzsvLyFcbiYjNDM7Ly8hIFRoZXNlIHBvaW50ZXIgdHlwZXMgYXJlIHVzZWZ1bCBmb3IgQy1hbGxvY2F0ZWQgb2JqZWN0cyB3aGljaCBieSBBUEktY29udHJhY3RcbiYjNDM7Ly8hIGFyZSBvd25lZCBieSBSdXN0LCBidXQgbmVlZCB0byBiZSBmcmVlZCB0aHJvdWdoIHRoZSBDIEFQSS5cbiYjNDM7XG4mIzQzO3VzZSBjb3JlOjp7XG4mIzQzOyAgICBtZW06Ok1hbnVhbGx5RHJvcCxcbiYjNDM7ICAgIG9wczo6e1xuJiM0MzsgICAgICAgIERlcmVmLFxuJiM0MzsgICAgICAgIERlcmVmTXV0LCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHBpbjo6UGluLFxuJiM0MzsgICAgcHRyOjpOb25OdWxsLCAvL1xuJiM0Mzt9O1xuJiM0Mzt1c2Uga2VybmVsOjp7XG4mIzQzOyAgICBzeW5jOjphcmVmOjpBUmVmLFxuJiM0MzsgICAgdHlwZXM6OlJlZkNvdW50ZWQsIC8vXG4mIzQzO307XG4mIzQzO1xuJiM0Mzt1c2Uga2VybmVsOjp0eXBlczo6Rm9yZWlnbk93bmFibGU7XG4mIzQzO1xuJiM0MzsvLy8gVHlwZXMgdGhhdCBzcGVjaWZ5IHRoZWlyIG93biB3YXkgb2YgcGVyZm9ybWluZyBhbGxvY2F0aW9uIGFuZCBkZXN0cnVjdGlvbi4gVHlwaWNhbGx5LCB0aGlzIHRyYWl0XG4mIzQzOy8vLyBpcyBpbXBsZW1lbnRlZCBvbiB0eXBlcyBmcm9tIHRoZSBDIHNpZGUuXG4mIzQzOy8vL1xuJiM0MzsvLy8gSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBbYE93bmVkXHUwMDNjU2VsZlx1MDAzZWBdIHBvaW50ZXIgdHlwZS5cbiYjNDM7Ly8vICAtIFRoaXMgaXMgdXNlZnVsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHRpZSB0aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0IHJlZmVyZW5jZSB0byBhbiBvd25lZFxuJiM0MzsvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLlxuJiM0MzsvLy8gIC0gW2BPd25hYmxlYF0gdHlwZXMgY2FuIGRlZmluZSBjdXN0b20gZHJvcCBsb2dpYyB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIG93bmVkIHJlZmVyZW5jZVxuJiM0MzsvLy8gICAgb2YgdHlwZSBbYE93bmVkXHUwMDNjX1x1MDAzZWBdIHBvaW50aW5nIHRvIHRoZSBvYmplY3QgaXMgZHJvcHBlZC5cbiYjNDM7Ly8vXG4mIzQzOy8vLyBOb3RlOiBUaGUgdW5kZXJseWluZyBvYmplY3QgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50aW5nLCBiZWNhdXNlIGl0XG4mIzQzOy8vLyByZXByZXNlbnRzIGEgdW5pcXVlLCBvd25lZCByZWZlcmVuY2UuIElmIHJlZmVyZW5jZSBjb3VudGluZyAob24gdGhlIFJ1c3Qgc2lkZSkgaXMgcmVxdWlyZWQsXG4mIzQzOy8vLyBbYFJlZkNvdW50ZWRgXSBzaG91bGQgYmUgaW1wbGVtZW50ZWQuIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaWYgY29udmVyc2lvblxuJiM0MzsvLy8gYmV0d2VlbiB1bmlxdWUgYW5kIHNoYXJlZCAocmVmZXJlbmNlIGNvdW50ZWQpIG93bmVyc2hpcCBpcyBuZWVkZWQuXG4mIzQzOy8vL1xuJiM0MzsvLy8gIyBFeGFtcGxlc1xuJiM0MzsvLy9cbiYjNDM7Ly8vIEEgbWluaW1hbCBleGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aCBbYE93bmVkYF0gbG9va3MgbGlrZVxuJiM0MzsvLy8gdGhpczpcbiYjNDM7Ly8vXG4mIzQzOy8vLyBgYGBcbiYjNDM7Ly8vICMgIyFbZXhwZWN0KGNsaXBweTo6ZGlzYWxsb3dlZF9uYW1lcyldXG4mIzQzOy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsO1xuJiM0MzsvLy8gIyB1c2UgY29yZTo6cHRyOjpOb25OdWxsO1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jaztcbiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XG4mIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGV9O1xuJiM0MzsvLy9cbiYjNDM7Ly8vIC8vIExldCYjMzk7cyBjb3VudCB0aGUgYWxsb2NhdGlvbnMgdG8gc2VlIGlmIGZyZWVpbmcgd29ya3MuXG4mIzQzOy8vLyBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrISB7XG4mIzQzOy8vLyAgICAgLy8gU0FGRVRZOiB3ZSBjYWxsIGBpbml0KClgIHJpZ2h0IGJlbG93LCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS5cbiYjNDM7Ly8vICAgICB1bnNhZmUodW5pbml0KSBzdGF0aWMgRk9PX0FMTE9DX0NPVU5UOiBNdXRleFx1MDAzY3VzaXplXHUwMDNlID0gMDtcbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuXG4mIzQzOy8vLyB1bnNhZmUgeyBGT09fQUxMT0NfQ09VTlQuaW5pdCgpIH07XG4mIzQzOy8vL1xuJiM0MzsvLy8gc3RydWN0IEZvbztcbiYjNDM7Ly8vXG4mIzQzOy8vLyBpbXBsIEZvbyB7XG4mIzQzOy8vLyAgICAgZm4gbmV3KCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuJiM0MzsvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xuJiM0MzsvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXG4mIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXG4mIzQzOy8vLyAgICAgICAgICAgICBGb28ge30sXG4mIzQzOy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCxcbiYjNDM7Ly8vICAgICAgICAgKT87XG4mIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjppbnRvX25vbl9udWxsKHJlc3VsdCk7XG4mIzQzOy8vLyAgICAgICAgIC8vIENvdW50IG5ldyBhbGxvY2F0aW9uXG4mIzQzOy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpICYjNDM7PSAxO1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6XG4mIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cbiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cbiYjNDM7Ly8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcbiYjNDM7Ly8vICAgICB9XG4mIzQzOy8vLyB9XG4mIzQzOy8vL1xuJiM0MzsvLy8gaW1wbCBPd25hYmxlIGZvciBGb28ge1xuJiM0MzsvLy8gICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4mIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFx1MDAzY1NlbGZcdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZS4gV2UgY2FuIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSwgYXNcbiYjNDM7Ly8vICAgICAgICAgLy8gYnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuJiM0MzsvLy8gICAgICAgICBkcm9wKHVuc2FmZSB7IEtCb3g6OmZyb21fcmF3KHRoaXMuYXNfcHRyKCkpIH0pO1xuJiM0MzsvLy8gICAgICAgICAvLyBDb3VudCByZWxlYXNlZCBhbGxvY2F0aW9uXG4mIzQzOy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpIC09IDE7XG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIHtcbiYjNDM7Ly8vICAgIGxldCBmb28gPSBGb286Om5ldygpPztcbiYjNDM7Ly8vICAgIGFzc2VydCEoKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgPT0gMSk7XG4mIzQzOy8vLyB9XG4mIzQzOy8vLyAvLyBgZm9vYCBpcyBvdXQgb2Ygc2NvcGUgbm93LCBzbyB3ZSBleHBlY3Qgbm8gbGl2ZSBhbGxvY2F0aW9ucy5cbiYjNDM7Ly8vIGFzc2VydCEoKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgPT0gMCk7XG4mIzQzOy8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4mIzQzOy8vLyBgYGBcbiYjNDM7cHViIHRyYWl0IE93bmFibGUge1xuJiM0MzsgICAgLy8vIFRlYXIgZG93biB0aGlzIGBPd25hYmxlYC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIEltcGxlbWVudGVycyBvZiBgT3duYWJsZWAgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNsZWFuIHVwIHRoZSB1c2Ugb2YgYFNlbGZgLiBUaGlzIGNhblxuJiM0MzsgICAgLy8vIGluY2x1ZGUgZnJlZWluZyB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyAjIFNhZmV0eVxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXkgaGF2ZSBleGNsdXNpdmUgb3duZXJzaGlwIG9mIHRoZSBgU2VsZmAgcG9pbnRlZCB0byBieSBgdGhpc2AsXG4mIzQzOyAgICAvLy8gYW5kIHRoYXQgdGhpcyBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGByZWxlYXNlYCBtZXRob2QuIGB0aGlzYCBtdXN0IG5vdCBiZSB1c2VkXG4mIzQzOyAgICAvLy8gYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCwgYXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0IG1heSBoYXZlIGJlZW4gZnJlZWQuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBgdGhpc2AgaXMgcGlubmVkIGFuZCBpbXBsZW1lbnRlcnMgb2YgdGhpcyBtZXRob2QgbXVzdCBvYnNlcnZlIHRoaXMgY29uc3RyYWludC5cbiYjNDM7ICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Ly8vIEEgbXV0YWJsZSByZWZlcmVuY2UgdG8gYW4gb3duZWQgYFRgLlxuJiM0MzsvLy9cbiYjNDM7Ly8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzXG4mIzQzOy8vLyBkcm9wcGVkLlxuJiM0MzsvLy9cbiYjNDM7Ly8vICMgSW52YXJpYW50c1xuJiM0MzsvLy9cbiYjNDM7Ly8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWRcdTAwM2NUXHUwMDNlYCBleGNsdXNpdmVseSBvd25zIHRoZSB1bmRlcmx5aW5nIGBUYC5cbiYjNDM7Ly8vIC0gVGhlIGBUYCB2YWx1ZSBpcyBwaW5uZWQuXG4mIzQzO3B1YiBzdHJ1Y3QgT3duZWRcdTAwM2NUOiBPd25hYmxlXHUwMDNlIHtcbiYjNDM7ICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYE93bmVkYF0uXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIG92ZXIgb3duZXJzaGlwIG9mIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vICMgU2FmZXR5XG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQ6XG4mIzQzOyAgICAvLy8gLSBgcHRyYCBwb2ludHMgdG8gYSB2YWxpZCBpbnN0YW5jZSBvZiBgVGAuXG4mIzQzOyAgICAvLy8gLSBVbnRpbCBgVDo6cmVsZWFzZWAgaXMgY2FsbGVkLCB0aGUgcmV0dXJuZWQgYE93bmVkXHUwMDNjVFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbiYjNDM7ICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLlxuJiM0MzsgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uXG4mIzQzOyAgICAgICAgU2VsZiB7IHB0ciB9XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgLy8vIENvbnN1bWVzIHRoZSBbYE93bmVkYF0sIHJldHVybmluZyBhIHJhdyBwb2ludGVyLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGVcbiYjNDM7ICAgIC8vLyB1bmRlcmx5aW5nIGBUYCBpcyB3aXRoIHRoZSBjYWxsZXIuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLlxuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cdTAwM2UgTm9uTnVsbFx1MDAzY1RcdTAwM2Uge1xuJiM0MzsgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHJcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkXHUwMDNjVFx1MDAzZWAuXG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHB1YiBmbiBhc19waW5fbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFBpblx1MDAzY1x1MDAyNm11dCBUXHUwMDNlIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCwgYW5kIHRoYXQgd2UgY2FuIHNhZmVseVxuJiM0MzsgICAgICAgIC8vIHJldHVybiBhIG11dGFibGUgcmVmZXJlbmNlIHRvIGl0LlxuJiM0MzsgICAgICAgIGxldCB1bnBpbm5lZCA9IHVuc2FmZSB7IHNlbGYucHRyLmFzX211dCgpIH07XG4mIzQzO1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgdHlwZSBpbnZhcmlhbnQgYFRgIGlzIHBpbm5lZC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQodW5waW5uZWQpIH1cbiYjNDM7ICAgIH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7Ly8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYW4gW2BPd25lZFx1MDAzY1RcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFNlbmRgXSxcbiYjNDM7Ly8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYE93bmVkXHUwMDNjVFx1MDAzZWBdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFRgLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGUgJiM0MzsgU2VuZFx1MDAzZSBTZW5kIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge31cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIFtgXHUwMDI2T3duZWRcdTAwM2NUXHUwMDNlYF0gdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgW2BTeW5jYF0sXG4mIzQzOy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BcdTAwMjZPd25lZFx1MDAzY1RcdTAwM2VgXSBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgdGhlIGBcdTAwMjZUYC5cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBPd25hYmxlICYjNDM7IFN5bmNcdTAwM2UgU3luYyBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBEZXJlZiBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgIHR5cGUgVGFyZ2V0ID0gVDtcbiYjNDM7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBzZWxmLnB0ci5hc19yZWYoKSB9XG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlICYjNDM7IFVucGluXHUwMDNlIERlcmVmTXV0IGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiBkZXJlZl9tdXQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcbiYjNDM7ICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9XG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIERyb3AgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgXHUwMDI2bXV0IHNlbGZgIHdlIGV4Y2x1c2l2ZWx5IG93biBgc2VsZmAgYW5kIHRoZSB1bmRlcmx5aW5nIGBUYC4gQXNcbiYjNDM7ICAgICAgICAvLyB3ZSBhcmUgZHJvcHBpbmcgYHNlbGZgLCB3ZSBjYW4gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBgVGAgdG8gdGhlIGByZWxlYXNlYCBtZXRob2QuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgVDo6cmVsZWFzZShzZWxmLnB0cikgfTtcbiYjNDM7ICAgIH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkZXJpdmUgdGhlIHBvaW50ZXIgdG8gYFRgIGZyb20gYSB2YWxpZCBgVGAsIHNvIHRoZSByZXR1cm5lZFxuJiM0MzsvLyBwb2ludGVyIHNhdGlzZnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBvZiBgVGAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBGb3JlaWduT3duYWJsZSBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgIGNvbnN0IEZPUkVJR05fQUxJR046IHVzaXplID0gY29yZTo6bWVtOjphbGlnbl9vZjo6XHUwMDNjVFx1MDAzZSgpO1xuJiM0MztcbiYjNDM7ICAgIHR5cGUgQm9ycm93ZWRcdTAwM2MmIzM5O2FcdTAwM2VcbiYjNDM7ICAgICAgICA9IFx1MDAyNiYjMzk7YSBUXG4mIzQzOyAgICB3aGVyZVxuJiM0MzsgICAgICAgIFNlbGY6ICYjMzk7YTtcbiYjNDM7ICAgIHR5cGUgQm9ycm93ZWRNdXRcdTAwM2MmIzM5O2FcdTAwM2VcbiYjNDM7ICAgICAgICA9IFBpblx1MDAzY1x1MDAyNiYjMzk7YSBtdXQgVFx1MDAzZVxuJiM0MzsgICAgd2hlcmVcbiYjNDM7ICAgICAgICBTZWxmOiAmIzM5O2E7XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLVx1MDAzZSAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQge1xuJiM0MzsgICAgICAgIE93bmVkOjppbnRvX3JhdyhzZWxmKS5hc19wdHIoKS5jYXN0KClcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHVuc2FmZSBmbiBmcm9tX2ZvcmVpZ24ocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZiB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIGNhbWUgZnJvbSBgaW50b19mb3JlaWduYCBhbmQgY2Fubm90IGJlIG51bGwuXG4mIzQzOyAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocHRyLmNhc3QoKSkgfTtcbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IGNvbnRyYWN0LCBgcHRyYCB3YXMgcmV0dXJuZWQgYnkgYGludG9fZm9yZWlnbmAsIHdoaWNoIGdhdmVcbiYjNDM7ICAgICAgICAvLyB1cCBleGNsdXNpdmUgb3duZXJzaGlwIG9mIGEgdmFsaWQsIHBpbm5lZCBgVGA7IHdlIHJldGFrZSB0aGF0IG93bmVyc2hpcCBoZXJlLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwdHIpIH1cbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHVuc2FmZSBmbiBib3Jyb3dcdTAwM2MmIzM5O2FcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZjo6Qm9ycm93ZWRcdTAwM2MmIzM5O2FcdTAwM2Uge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhXG4mIzQzOyAgICAgICAgLy8gcmVmZXJlbmNlIGZvciBgJiMzOTthYC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBcdTAwMjYqcHRyLmNhc3QoKSB9XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICB1bnNhZmUgZm4gYm9ycm93X211dFx1MDAzYyYjMzk7YVx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVx1MDAzZSBTZWxmOjpCb3Jyb3dlZE11dFx1MDAzYyYjMzk7YVx1MDAzZSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGFcbiYjNDM7ICAgICAgICAvLyB1bmlxdWUgcmVmZXJlbmNlIGZvciBgJiMzOTthYC5cbiYjNDM7ICAgICAgICBsZXQgaW5uZXIgPSB1bnNhZmUgeyBcdTAwMjZtdXQgKnB0ci5jYXN0KCkgfTtcbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBuZXZlciBtb3ZlIG91dCBvZiBpbm5lciwgYW5kIHdlIGRvIG5vdCBoYW5kIG91dCBtdXRhYmxlXG4mIzQzOyAgICAgICAgLy8gcmVmZXJlbmNlcyB3aGVuIGBUOiAhVW5waW5gLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IFBpbjo6bmV3X3VuY2hlY2tlZChpbm5lcikgfVxuJiM0MzsgICAgfVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvLy8gQSB0cmFpdCBmb3Igb2JqZWN0cyB0aGF0IGNhbiBiZSB3cmFwcGVkIGluIGVpdGhlciBvbmUgb2YgdGhlIHJlZmVyZW5jZSB0eXBlcyBbYE93bmVkYF0gYW5kXG4mIzQzOy8vLyBbYEFSZWZgXS5cbiYjNDM7Ly8vXG4mIzQzOy8vLyAjIEV4YW1wbGVzXG4mIzQzOy8vL1xuJiM0MzsvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlUmVmQ291bnRlZGBdLCBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGhcbiYjNDM7Ly8vIFtgQVJlZmBdIGFuZCBbYE93bmVkYF0gbG9va3MgbGlrZSB0aGlzOlxuJiM0MzsvLy9cbiYjNDM7Ly8vIGBgYFxuJiM0MzsvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV1cbiYjNDM7Ly8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7XG4mIzQzOy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4mIzQzOy8vLyAjIHVzZSBrZXJuZWw6OmFsbG9jOjp7ZmxhZ3MsIGtib3g6OktCb3gsIEFsbG9jRXJyb3J9O1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XG4mIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGUsIE93bmFibGVSZWZDb3VudGVkfTtcbiYjNDM7Ly8vXG4mIzQzOy8vLyAvLyBBbiBpbnRlcm5hbGx5IHJlZmNvdW50ZWQgc3RydWN0IGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzLlxuJiM0MzsvLy8gLy9cbiYjNDM7Ly8vIC8vICMgSW52YXJpYW50c1xuJiM0MzsvLy8gLy9cbiYjNDM7Ly8vIC8vIC0gYHJlZmNvdW50YCBpcyBhbHdheXMgbm9uLXplcm8gZm9yIGEgdmFsaWQgb2JqZWN0LlxuJiM0MzsvLy8gLy8gLSBgcmVmY291bnRgIGlzIFx1MDAzZTEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC5cbiYjNDM7Ly8vIC8vXG4mIzQzOy8vLyBzdHJ1Y3QgRm9vIHtcbiYjNDM7Ly8vICAgICByZWZjb3VudDogQ2VsbFx1MDAzY3VzaXplXHUwMDNlLFxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIGltcGwgRm9vIHtcbiYjNDM7Ly8vICAgICBmbiBuZXcoKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4mIzQzOy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXG4mIzQzOy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC5cbiYjNDM7Ly8vICAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBpbml0aWFsaXplIGByZWZjb3VudGAgdG8gMSwgc2F0aXNmeWluZyB0aGUgaW52YXJpYW50cy5cbiYjNDM7Ly8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcbiYjNDM7Ly8vICAgICAgICAgICAgIEZvbyB7XG4mIzQzOy8vLyAgICAgICAgICAgICAgICAgcmVmY291bnQ6IENlbGw6Om5ldygxKSxcbiYjNDM7Ly8vICAgICAgICAgICAgIH0sXG4mIzQzOy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCxcbiYjNDM7Ly8vICAgICAgICAgKT87XG4mIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjppbnRvX25vbl9udWxsKHJlc3VsdCk7XG4mIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTpcbiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UganVzdCBhbGxvY2F0ZWQgdGhlIGBTZWxmYCwgdGh1cyBpdCBpcyB2YWxpZCBhbmQgd2Ugb3duIGl0LlxuJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBjYW4gdHJhbnNmZXIgdGhpcyBvd25lcnNoaXAgdG8gdGhlIGBmcm9tX3Jhd2AgbWV0aG9kLlxuJiM0MzsvLy8gICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocmVzdWx0KSB9KVxuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyAvLyBTQUZFVFk6IFdlIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGVhY2ggdGltZSB0aGUgcmVzcGVjdGl2ZSBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIG9ubHkgZnJlZVxuJiM0MzsvLy8gLy8gdGhlIGBGb29gIHdoZW4gdGhlIHJlZmNvdW50IHJlYWNoZXMgemVyby5cbiYjNDM7Ly8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZvbyB7XG4mIzQzOy8vLyAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4mIzQzOy8vLyAgICAgICAgIHNlbGYucmVmY291bnQucmVwbGFjZShzZWxmLnJlZmNvdW50LmdldCgpICYjNDM7IDEpO1xuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOiBCeSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSByZWZjb3VudCBpcyBub24temVybyxcbiYjNDM7Ly8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLlxuJiM0MzsvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyBcdTAwMjZ0aGlzLmFzX3JlZigpLnJlZmNvdW50IH07XG4mIzQzOy8vLyAgICAgICAgIGxldCBuZXdfcmVmY291bnQgPSByZWZjb3VudC5nZXQoKSAtIDE7XG4mIzQzOy8vLyAgICAgICAgIGlmIG5ld19yZWZjb3VudCA9PSAwIHtcbiYjNDM7Ly8vICAgICAgICAgICAgIC8vIFRoZSBgRm9vYCB3aWxsIGJlIGRyb3BwZWQgd2hlbiBgS0JveGAgZ29lcyBvdXQgb2Ygc2NvcGUuXG4mIzQzOy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3hcdTAwM2NGb29cdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZSBhcyB0aGUgb2xkIHJlZmNvdW50IGlzIDEuIFdlIGNhbiBwYXNzXG4mIzQzOy8vLyAgICAgICAgICAgICAvLyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdIGFzIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbixcbiYjNDM7Ly8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLlxuJiM0MzsvLy8gICAgICAgICAgICAgdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfTtcbiYjNDM7Ly8vICAgICAgICAgfSBlbHNlIHtcbiYjNDM7Ly8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTtcbiYjNDM7Ly8vICAgICAgICAgfVxuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyBpbXBsIE93bmFibGVSZWZDb3VudGVkIGZvciBGb28ge1xuJiM0MzsvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2UsIEFSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbiYjNDM7Ly8vICAgICAgICAgaWYgdGhpcy5yZWZjb3VudC5nZXQoKSA9PSAxIHtcbiYjNDM7Ly8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIGBGb29gIGlzIHN0aWxsIGFsaXZlIGFuZCBoYXMgbm8gb3RoZXIgUnVzdCByZWZlcmVuY2VzIGFzIHRoZSByZWZjb3VudFxuJiM0MzsvLy8gICAgICAgICAgICAgLy8gaXMgMS5cbiYjNDM7Ly8vICAgICAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhBUmVmOjppbnRvX3Jhdyh0aGlzKSkgfSlcbiYjNDM7Ly8vICAgICAgICAgfSBlbHNlIHtcbiYjNDM7Ly8vICAgICAgICAgICAgIEVycih0aGlzKVxuJiM0MzsvLy8gICAgICAgICB9XG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy9cbiYjNDM7Ly8vICAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZFx1MDAzY1NlbGZcdTAwM2UpIC1cdTAwM2UgQVJlZlx1MDAzY1NlbGZcdTAwM2Uge1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IEFuIGBPd25lZFx1MDAzY0Zvb1x1MDAzZWAgaG9sZHMgdGhlIHVuaXF1ZSByZWZlcmVuY2UgKHJlZmNvdW50IDEpLCB3aGljaCB3ZSB0cmFuc2ZlciB0b1xuJiM0MzsvLy8gICAgICAgICAvLyB0aGUgbmV3IGBBUmVmYC5cbiYjNDM7Ly8vICAgICAgICAgdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcoT3duZWQ6OmludG9fcmF3KHRoaXMpKSB9XG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcbiYjNDM7Ly8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IFVzaW5nIGBkZWNfcmVmKClgIGZyb20gW2BSZWZDb3VudGVkYF0gdG8gcmVsZWFzZSBpcyBva2F5LCBhcyB0aGUgcmVmY291bnQgaXNcbiYjNDM7Ly8vICAgICAgICAgLy8gYWx3YXlzIDEgZm9yIGFuIFtgT3duZWRcdTAwM2NGb29cdTAwM2VgXS5cbiYjNDM7Ly8vICAgICAgICAgdW5zYWZlIHsgRm9vOjpkZWNfcmVmKHRoaXMpIH07XG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIGxldCBmb28gPSBGb286Om5ldygpPztcbiYjNDM7Ly8vIGxldCBmb28gPSBBUmVmOjpmcm9tKGZvbyk7XG4mIzQzOy8vLyB7XG4mIzQzOy8vLyAgICAgbGV0IGJhciA9IGZvby5jbG9uZSgpO1xuJiM0MzsvLy8gICAgIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGJhcikuaXNfZXJyKCkpO1xuJiM0MzsvLy8gfVxuJiM0MzsvLy8gYXNzZXJ0IShPd25lZDo6dHJ5X2Zyb20oZm9vKS5pc19vaygpKTtcbiYjNDM7Ly8vICMgT2s6Olx1MDAzYygpLCBFcnJvclx1MDAzZSgoKSlcbiYjNDM7Ly8vIGBgYFxuJiM0MztwdWIgdHJhaXQgT3duYWJsZVJlZkNvdW50ZWQ6IFJlZkNvdW50ZWQgJiM0MzsgT3duYWJsZSAmIzQzOyBTaXplZCB7XG4mIzQzOyAgICAvLy8gQ2hlY2tzIGlmIHRoZSBbYEFSZWZgXSBpcyB1bmlxdWUgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIFtgT3duZWRgXSBpZiB0aGF0IGlzIHRoZSBjYXNlLlxuJiM0MzsgICAgLy8vIE90aGVyd2lzZSBpdCByZXR1cm5zIGFnYWluIGFuIFtgQVJlZmBdIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0LlxuJiM0MzsgICAgZm4gdHJ5X2Zyb21fc2hhcmVkKHRoaXM6IEFSZWZcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQVJlZlx1MDAzY1NlbGZcdTAwM2VcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgLy8vIENvbnZlcnRzIHRoZSBbYE93bmVkYF0gaW50byBhbiBbYEFSZWZgXS5cbiYjNDM7ICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBBUmVmXHUwMDNjU2VsZlx1MDAzZTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW1wbFx1MDAzY1Q6IE93bmFibGVSZWZDb3VudGVkXHUwMDNlIFRyeUZyb21cdTAwM2NBUmVmXHUwMDNjVFx1MDAzZVx1MDAzZSBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgIHR5cGUgRXJyb3IgPSBBUmVmXHUwMDNjVFx1MDAzZTtcbiYjNDM7ICAgIC8vLyBUcmllcyB0byBjb252ZXJ0IHRoZSBbYEFSZWZgXSB0byBhbiBbYE93bmVkYF0gYnkgY2FsbGluZ1xuJiM0MzsgICAgLy8vIFtgdHJ5X2Zyb21fc2hhcmVkKClgXShPd25hYmxlUmVmQ291bnRlZDo6dHJ5X2Zyb21fc2hhcmVkKS4gSW4gY2FzZSB0aGUgW2BBUmVmYF0gaXMgbm90XG4mIzQzOyAgICAvLy8gdW5pcXVlLCBpdCByZXR1cm5zIGFnYWluIGFuIFtgQVJlZmBdIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0LlxuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiB0cnlfZnJvbShiOiBBUmVmXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1RcdTAwM2UsIFNlbGY6OkVycm9yXHUwMDNlIHtcbiYjNDM7ICAgICAgICBUOjp0cnlfZnJvbV9zaGFyZWQoYilcbiYjNDM7ICAgIH1cbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BhZ2UucnMgYi9ydXN0L2tlcm5lbC9wYWdlLnJzXG5pbmRleCAxYzA3OTZlYTIyOWYwLi4zMmRkMDMwYzgzMTU5IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xuQEAgLTEyLDE2ICYjNDM7MTIsMTYgQEBcbiAgICAgICAgIGNvZGU6OiosXG4gICAgICAgICBSZXN1bHQsIC8vXG4gICAgIH0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIE9wYXF1ZSxcbiYjNDM7ICAgICAgICBPd25hYmxlLFxuJiM0MzsgICAgICAgIE93bmVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLCAvL1xuIH07XG4tdXNlIGNvcmU6Ontcbi0gICAgbWFya2VyOjpQaGFudG9tRGF0YSxcbi0gICAgbWVtOjpNYW51YWxseURyb3AsXG4tICAgIG9wczo6RGVyZWYsXG4tICAgIHB0cjo6e1xuLSAgICAgICAgc2VsZixcbi0gICAgICAgIE5vbk51bGwsIC8vXG4tICAgIH0sIC8vXG4mIzQzO3VzZSBjb3JlOjpwdHI6OntcbiYjNDM7ICAgIHNlbGYsXG4mIzQzOyAgICBOb25OdWxsLCAvL1xuIH07XG4gXG4gLy8vIEEgYml0d2lzZSBzaGlmdCBmb3IgdGhlIHBhZ2Ugc2l6ZS5cbkBAIC02NSw5MyAmIzQzOzY1LDI5IEBAIHB1YiBjb25zdCBmbiBwYWdlX2FsaWduKGFkZHI6IHVzaXplKSAtXHUwMDNlIE9wdGlvblx1MDAzY3VzaXplXHUwMDNlIHtcbiAgICAgU29tZShzdW0gXHUwMDI2IFBBR0VfTUFTSylcbiB9XG4gXG4tLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS5cbi0vLy9cbi0vLy8gVGhpcyB0eXBlIHByb3ZpZGVzIGEgYm9ycm93ZWQgdmVyc2lvbiBvZiBhIFtgUGFnZWBdIHRoYXQgaXMgb3duZWQgYnkgc29tZSBvdGhlciBlbnRpdHksIGUuZy4gYVxuLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uXG4tLy8vXG4tLy8vICMgRXhhbXBsZVxuLS8vL1xuLS8vLyBgYGBcbi0vLy8gIyB1c2Uga2VybmVsOjp7YmluZGluZ3MsIHByZWx1ZGU6Oip9O1xuLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9O1xuLS8vLyAjIHVzZSBjb3JlOjp7bWVtOjpNYXliZVVuaW5pdCwgcHRyLCBwdHI6Ok5vbk51bGwgfTtcbi0vLy9cbi0vLy8gZm4gYm9ycm93X3BhZ2VcdTAwM2MmIzM5O2FcdTAwM2UodmJveDogXHUwMDI2JiMzOTthIG11dCBWQm94XHUwMDNjTWF5YmVVbmluaXRcdTAwM2NbdTg7IFBBR0VfU0laRV1cdTAwM2VcdTAwM2UpIC1cdTAwM2UgQm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0vLy8gICAgIGxldCBwdHIgPSBwdHI6OmZyb21fcmVmKFx1MDAyNioqdmJveCk7XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6XG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuXG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGBzZWxmYC5cbi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuLS8vLyB9XG4tLy8vXG4tLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6Olx1MDAzY1t1ODsgUEFHRV9TSVpFXVx1MDAzZTo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87XG4tLy8vIGxldCBwYWdlID0gYm9ycm93X3BhZ2UoXHUwMDI2bXV0IHZib3gpO1xuLS8vL1xuLS8vLyAvLyBTQUZFVFk6IFRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgcmVhZCBvciB3cml0ZSB0byB0aGlzIHBhZ2UuXG4tLy8vIHVuc2FmZSB7IHBhZ2UuZmlsbF96ZXJvX3JhdygwLCBQQUdFX1NJWkUpPyB9O1xuLS8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4tLy8vIGBgYFxuLS8vL1xuLS8vLyAjIEludmFyaWFudHNcbi0vLy9cbi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuXG4tLy8vXG4tLy8vIFtgVkJveGBdOiBrZXJuZWw6OmFsbG9jOjpWQm94XG4tLy8vIFtgVm1hbGxvY2BdOiBrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2Ncbi1wdWIgc3RydWN0IEJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZShNYW51YWxseURyb3BcdTAwM2NQYWdlXHUwMDNlLCBQaGFudG9tRGF0YVx1MDAzY1x1MDAyNiYjMzk7YSBQYWdlXHUwMDNlKTtcbi1cbi1pbXBsXHUwMDNjJiMzOTthXHUwMDNlIEJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZSB7XG4tICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BCb3Jyb3dlZFBhZ2VgXSBmcm9tIGEgcmF3IHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLlxuLSAgICAvLy9cbi0gICAgLy8vICMgU2FmZXR5XG4tICAgIC8vL1xuLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC5cbi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4tICAgICAgICBsZXQgcGFnZSA9IFBhZ2UgeyBwYWdlOiBwdHIgfTtcbi1cbi0gICAgICAgIC8vIElOVkFSSUFOVDogVGhlIHNhZmV0eSByZXF1aXJlbWVudHMgZ3VhcmFudGVlIHRoYXQgYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWVcbi0gICAgICAgIC8vIGAmIzM5O2FgLlxuLSAgICAgICAgU2VsZihNYW51YWxseURyb3A6Om5ldyhwYWdlKSwgUGhhbnRvbURhdGEpXG4tICAgIH1cbi19XG4tXG4taW1wbFx1MDAzYyYjMzk7YVx1MDAzZSBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0gICAgdHlwZSBUYXJnZXQgPSBQYWdlO1xuLVxuLSAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4tICAgICAgICBcdTAwMjZzZWxmLjBcbi0gICAgfVxuLX1cbi1cbi0vLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gaW1wbGVtZW50YXRpb24gb2Zcbi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbiYjNDM7Ly8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMsIHN1Y2ggYXNcbiYjNDM7Ly8vIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxuIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHtcbiAgICAgLy8vIFRoZSBbYEl0ZXJhdG9yYF0gdHlwZSwgZS5nLiBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbi0gICAgdHlwZSBJdGVyXHUwMDNjJiMzOTthXHUwMDNlOiBJdGVyYXRvclx1MDAzY0l0ZW0gPSBCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2VcdTAwM2VcbiYjNDM7ICAgIHR5cGUgSXRlclx1MDAzYyYjMzk7YVx1MDAzZTogSXRlcmF0b3JcdTAwM2NJdGVtID0gXHUwMDI2JiMzOTthIFBhZ2VcdTAwM2VcbiAgICAgd2hlcmVcbiAgICAgICAgIFNlbGY6ICYjMzk7YTtcbiBcbi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuJiM0MzsgICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuICAgICBmbiBwYWdlX2l0ZXIoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgU2VsZjo6SXRlclx1MDAzYyYjMzk7X1x1MDAzZTtcbiB9XG4gXG4tLy8vIEEgcG9pbnRlciB0byBhIHBhZ2UgdGhhdCBvd25zIHRoZSBwYWdlIGFsbG9jYXRpb24uXG4mIzQzOy8vLyBBIGBzdHJ1Y3QgcGFnZWAuXG4mIzQzOy8vL1xuJiM0MzsvLy8gQSBgUGFnZWAgaXMgYWNjZXNzZWQgdGhyb3VnaCBhIHNoYXJlZCByZWZlcmVuY2Ugb3IgdGhyb3VnaCBhbiBvd25pbmcgW2BPd25lZFx1MDAzY1BhZ2VcdTAwM2VgXTsgdGhlIGxhdHRlclxuJiM0MzsvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuXG4gLy8vXG4gLy8vICMgSW52YXJpYW50c1xuIC8vL1xuLS8vLyBUaGUgcG9pbnRlciBpcyB2YWxpZCwgYW5kIGhhcyBvd25lcnNoaXAgb3ZlciB0aGUgcGFnZS5cbiYjNDM7Ly8vIFRoZSBgUGFnZWAgaXMgYmFja2VkIGJ5IGEgdmFsaWQgYHN0cnVjdCBwYWdlYC5cbiYjNDM7I1tyZXByKHRyYW5zcGFyZW50KV1cbiBwdWIgc3RydWN0IFBhZ2Uge1xuLSAgICBwYWdlOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UsXG4mIzQzOyAgICBwYWdlOiBPcGFxdWVcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSxcbiB9XG4gXG4gLy8gU0FGRVRZOiBQYWdlcyBoYXZlIG5vIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHRoZW0gc3RheWluZyBvbiBhIGdpdmVuIHRocmVhZCwgc28gbW92aW5nIHRoZW0gYWNyb3NzXG5AQCAtMTg1LDE5ICYjNDM7MTIxLDIwIEBAIGltcGwgUGFnZSB7XG4gICAgIC8vLyAjIE9rOjpcdTAwM2MoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvclx1MDAzZSgoKSlcbiAgICAgLy8vIGBgYFxuICAgICAjW2lubGluZV1cbi0gICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGYsIEFsbG9jRXJyb3JcdTAwM2Uge1xuJiM0MzsgICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQWxsb2NFcnJvclx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYGdmcF9mbGFnc2AsIHRoaXMgY2FsbCBtYXkgc2xlZXAuIE90aGVyIHRoYW4gdGhhdCwgaXRcbiAgICAgICAgIC8vIGlzIGFsd2F5cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2QuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjphbGxvY19wYWdlcyhmbGFncy5hc19yYXcoKSwgMCkgfTtcbiAgICAgICAgIGxldCBwYWdlID0gTm9uTnVsbDo6bmV3KHBhZ2UpLm9rX29yKEFsbG9jRXJyb3IpPztcbi0gICAgICAgIC8vIElOVkFSSUFOVDogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxuLSAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYFBhZ2VgIG9iamVjdC5cbi0gICAgICAgIE9rKFNlbGYgeyBwYWdlIH0pXG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XG4mIzQzOyAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYE93bmVkXHUwMDNjUGFnZVx1MDAzZWAgb2JqZWN0LlxuJiM0MzsgICAgICAgIC8vIFNpbmNlIGBQYWdlYCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHBvaW50ZXIgZGlyZWN0bHkuXG4mIzQzOyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KVxuICAgICB9XG4gXG4gICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuXG4gICAgIHB1YiBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqbXV0IGJpbmRpbmdzOjpwYWdlIHtcbi0gICAgICAgIHNlbGYucGFnZS5hc19wdHIoKVxuJiM0MzsgICAgICAgIHNlbGYucGFnZS5nZXQoKVxuICAgICB9XG4gXG4gICAgIC8vLyBHZXQgdGhlIG5vZGUgaWQgY29udGFpbmluZyB0aGlzIHBhZ2UuXG5AQCAtMjA3LDYgJiM0MzsxNDQsMjAgQEAgcHViIGZuIG5pZChcdTAwMjZzZWxmKSAtXHUwMDNlIGkzMiB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGFnZV90b19uaWQoc2VsZi5hc19wdHIoKSkgfVxuICAgICB9XG4gXG4mIzQzOyAgICAvLy8gQ3JlYXRlIGEgYFx1MDAyNlBhZ2VgIGZyb20gYSByYXcgYHN0cnVjdCBwYWdlYCBwb2ludGVyLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gIyBTYWZldHlcbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIGBwdHJgIG11c3QgYmUgY29udmVydGlibGUgdG8gYSBzaGFyZWQgcmVmZXJlbmNlIHdpdGggYSBsaWZldGltZSBvZiBgJiMzOTthYC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgcHViIHVuc2FmZSBmbiBmcm9tX3Jhd1x1MDAzYyYjMzk7YVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGFnZSkgLVx1MDAzZSBcdTAwMjYmIzM5O2EgU2VsZiB7XG4mIzQzOyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgcmVmZXJzIHRvIGEgdmFsaWQgYHN0cnVjdCBwYWdlYCwgc29cbiYjNDM7ICAgICAgICAvLyB0aGUgcmV0dXJuZWQgcmVmZXJlbmNlIHVwaG9sZHMgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBQYWdlYC5cbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIG5vdCBudWxsIGFuZCBpcyBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZFxuJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZS5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBcdTAwMjYqcHRyLmNhc3QoKSB9XG4mIzQzOyAgICB9XG4mIzQzO1xuICAgICAvLy8gUnVucyBhIHBpZWNlIG9mIGNvZGUgd2l0aCB0aGlzIHBhZ2UgbWFwcGVkIHRvIGFuIGFkZHJlc3MuXG4gICAgIC8vL1xuICAgICAvLy8gVGhlIHBhZ2UgaXMgdW5tYXBwZWQgd2hlbiB0aGlzIGNhbGwgcmV0dXJucy5cbkBAIC0zNzMsMTAgJiM0MzszMjQsMTEgQEAgcHViIHVuc2FmZSBmbiBjb3B5X2Zyb21fdXNlcl9zbGljZV9yYXcoXG4gICAgIH1cbiB9XG4gXG4taW1wbCBEcm9wIGZvciBQYWdlIHtcbiYjNDM7aW1wbCBPd25hYmxlIGZvciBQYWdlIHtcbiAgICAgI1tpbmxpbmVdXG4tICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0gICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgd2UgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIHBhZ2UgYW5kIGNhbiBmcmVlIGl0LlxuLSAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyhzZWxmLnBhZ2UuYXNfcHRyKCksIDApIH07XG4mIzQzOyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZVxuJiM0MzsgICAgICAgIC8vIGl0LiBTaW5jZSBQYWdlIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcmF3IHBvaW50ZXIgZGlyZWN0bHkuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyh0aGlzLmFzX3B0cigpLmNhc3QoKSwgMCkgfTtcbiAgICAgfVxuIH1cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wY2kucnMgYi9ydXN0L2tlcm5lbC9wY2kucnNcbmluZGV4IDUwNzFjYWU2NTQzZmQuLmVhOWVmOTljZWNiMDcgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuQEAgLTE5LDYgJiM0MzsxOSwxMCBAQFxuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OkNTdHIsXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTQ4MSw3ICYjNDM7NDg1LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBpbXBsXHUwMDNjJiMzOTthXHUwMDNlIGNyYXRlOjpkbWE6OkRldmljZVx1MDAzYyYjMzk7YVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJiMzOTthXHUwMDNlXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGNpX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTtcbkBAIC00OTMsNiAmIzQzOzQ5NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5pbmRleCA5NzlhOTcxOGYxNTNkLi4wNjdmNjhiOTllOGM1IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5yc1xuQEAgLTcsNyAmIzQzOzcsMTQgQEBcbiAvLyEgQyBoZWFkZXI6IFtgaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oKSBhbmRcbiAvLyEgW2BpbmNsdWRlL2xpbnV4L3BpZC5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZC5oKVxuIFxuLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0eXBlczo6T3BhcXVlfTtcbiYjNDM7dXNlIGNyYXRlOjp7XG4mIzQzOyAgICBiaW5kaW5ncyxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgT3BhcXVlLCAvL1xuJiM0MzsgICAgfSwgLy9cbiYjNDM7fTtcbiB1c2UgY29yZTo6cHRyO1xuIFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgcGlkX25hbWVzcGFjZWAuIFRocmVhZCBzYWZlLlxuQEAgLTQxLDcgJiM0Mzs0OCw3IEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9wdHJcdTAwM2MmIzM5O2FcdTAwM2UocHRyOiAqY29uc3QgYmluZGluZ3M6OnBpZF9uYW1lc3BhY2UpIC1cdTAwM2UgXHUwMDI2JiMzOTthIFNlbGYge1xuIH1cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgUGlkTmFtZXNwYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC01NSw2ICYjNDM7NjIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NQaWROYW1lc3BhY2VcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY1BpZE5hbWVzcGFjZVx1MDAzZWAgZnJvbVxuJiM0MzsvLyBhIGBcdTAwMjZQaWROYW1lc3BhY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge31cbiYjNDM7XG4gLy8gU0FGRVRZOlxuIC8vIC0gYFBpZE5hbWVzcGFjZTo6ZGVjX3JlZmAgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuXG4gLy8gLSBJdCBpcyBva2F5IHRvIHNlbmQgb3duZXJzaGlwIG9mIGBQaWROYW1lc3BhY2VgIGFjcm9zcyB0aHJlYWQgYm91bmRhcmllcy5cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG5pbmRleCBkNDE1NTVhNGIzMWQyLi5hNGRkYWExY2MzYTQwIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG5AQCAtMjQsNiAmIzQzOzI0LDEwIEBAXG4gICAgIH0sXG4gICAgIG9mLFxuICAgICBwcmVsdWRlOjoqLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gICAgIFRoaXNNb2R1bGUsIC8vXG4gfTtcbkBAIC01MTksNyAmIzQzOzUyMyw3IEBAIHB1YiBmbiBvcHRpb25hbF9pcnFfYnlfbmFtZShcdTAwMjZzZWxmLCBuYW1lOiBcdTAwMjZDU3RyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0lycVJlcXVlc3RcdTAwM2MmIzM5O19cdTAwM2VcdTAwM2Uge1xuIGltcGxcdTAwM2MmIzM5O2FcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXHUwMDNjJiMzOTthXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NkZXZpY2U6OkNvcmVcdTAwM2MmIzM5O2FcdTAwM2VcdTAwM2Uge31cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmVmKCkuYXNfcmF3KCkpIH07XG5AQCAtNTMxLDYgJiM0Mzs1MzUsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkRldmljZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuJiM0MztcbiBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wd20ucnMgYi9ydXN0L2tlcm5lbC9wd20ucnNcbmluZGV4IDZjOWQ2NjcwMDllZjcuLjJkMWNkNzRkZDk4ZTEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wd20ucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3B3bS5yc1xuQEAgLTEzLDcgJiM0MzsxMywxMSBAQFxuICAgICBkZXZyZXMsXG4gICAgIGVycm9yOjp7c2VsZiwgdG9fcmVzdWx0fSxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy9cbiB9O1xuIHVzZSBjb3JlOjp7XG5AQCAtNjI5LDcgJiM0Mzs2MzMsNyBAQCBwdWIgZm4gbmV3XHUwMDNjJiMzOTthXHUwMDNlKFxuIH1cbiBcbiAvLyBTQUZFVFk6IEltcGxlbWVudHMgcmVmY291bnRpbmcgZm9yIGBDaGlwYCB1c2luZyB0aGUgZW1iZWRkZWQgYHN0cnVjdCBkZXZpY2VgLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHtcbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IGBzZWxmLjAuZ2V0KClgIHBvaW50cyB0byBhIHZhbGlkIGBwd21fY2hpcGAgYmVjYXVzZSBgc2VsZmAgZXhpc3RzLlxuQEAgLTY0Nyw2ICYjNDM7NjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY0NoaXBcdTAwM2NUXHUwMDNlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NDaGlwXHUwMDNjVFx1MDAzZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZDaGlwXHUwMDNjVFx1MDAzZWAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO1xuIC8vIFNBRkVUWTogYENoaXBgIGlzIGEgd3JhcHBlciBhcm91bmQgYCptdXQgYmluZGluZ3M6OnB3bV9jaGlwYC4gVGhlIHVuZGVybHlpbmcgQ1xuIC8vIHN0cnVjdHVyZSYjMzk7cyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgbW9kZWxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzIGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXG5pbmRleCBiNzIxYjJlMDBiOTg2Li5lNmZmZTdjNjUwYzM5IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbkBAIC0xMSw3ICYjNDM7MTEsNyBAQFxuIC8vISB1bmRlcmx5aW5nIG9iamVjdCwgYnV0IHRoaXMgcmVmY291bnQgaXMgaW50ZXJuYWwgdG8gdGhlIG9iamVjdC4gSXQgZXNzZW50aWFsbHkgaXMgYSBSdXN0XG4gLy8hIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgZ2V0X2AgYW5kIGBwdXRfYCBwYXR0ZXJuIHVzZWQgaW4gQyBmb3IgcmVmZXJlbmNlIGNvdW50aW5nLlxuIC8vIVxuLS8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcdTAwM2NNeVR5cGVcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgQWx3YXlzUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XG4mIzQzOy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcdTAwM2NNeVR5cGVcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XG4gLy8hIGZvciBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3Qgb2YgdGhlIGBNeVR5cGVgIHR5cGUuXG4gLy8hXG4gLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmNcbkBAIC0yMywyNiAmIzQzOzIzLDM1IEBAXG4gICAgIG9wczo6RGVyZWYsXG4gICAgIHB0cjo6Tm9uTnVsbCwgLy9cbiB9O1xuJiM0Mzt1c2Uga2VybmVsOjp0eXBlczo6e1xuJiM0MzsgICAgT3duYWJsZVJlZkNvdW50ZWQsXG4mIzQzOyAgICBPd25lZCwgLy9cbiYjNDM7fTtcbiBcbi0vLy8gVHlwZXMgdGhhdCBhcmUgX2Fsd2F5c18gcmVmZXJlbmNlIGNvdW50ZWQuXG4mIzQzOy8vLyBUeXBlcyB0aGF0IGFyZSBpbnRlcm5hbGx5IHJlZmVyZW5jZSBjb3VudGVkLlxuIC8vL1xuIC8vLyBJdCBhbGxvd3Mgc3VjaCB0eXBlcyB0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSByZWYgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZnVuY3Rpb25zLlxuLS8vLyBBZGRpdGlvbmFsbHksIGl0IGFsbG93cyB1c2VycyB0byBjb252ZXJ0IGZyb20gYSBzaGFyZWQgcmVmZXJlbmNlIGBcdTAwMjZUYCB0byBhbiBvd25lZCByZWZlcmVuY2Vcbi0vLy8gW2BBUmVmXHUwMDNjVFx1MDAzZWBdLlxuIC8vL1xuIC8vLyBUaGlzIGlzIHVzdWFsbHkgaW1wbGVtZW50ZWQgYnkgd3JhcHBlcnMgdG8gZXhpc3Rpbmcgc3RydWN0dXJlcyBvbiB0aGUgQyBzaWRlIG9mIHRoZSBjb2RlLiBGb3JcbiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkXG4gLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuXG4gLy8vXG4mIzQzOy8vLyBOb3RlOiBJbXBsZW1lbnRpbmcgdGhpcyB0cmFpdCBhbGxvd3MgdHlwZXMgdG8gYmUgd3JhcHBlZCBpbiBhbiBbYEFSZWZcdTAwM2NTZWxmXHUwMDNlYF0uIEl0IHJlcXVpcmVzIGFuXG4mIzQzOy8vLyBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgYW5kIHByb3ZpZGVzIG9ubHkgc2hhcmVkIHJlZmVyZW5jZXMuIElmIHVuaXF1ZSByZWZlcmVuY2VzIGFyZSByZXF1aXJlZFxuJiM0MzsvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW5cbiYjNDM7Ly8vIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkuIEltcGxlbWVudGluZyB0aGUgdHJhaXRcbiYjNDM7Ly8vIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBhbGxvd3MgdG8gY29udmVydCBiZXR3ZWVuIHVuaXF1ZSBhbmRcbiYjNDM7Ly8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkgYW5kXG4mIzQzOy8vLyBbYEFSZWZcdTAwM2NTZWxmXHUwMDNlYF0pLlxuJiM0MzsvLy9cbiAvLy8gIyBTYWZldHlcbiAvLy9cbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmZXJlbmNlIGNvdW50IGtlZXAgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnlcbiAvLy8gYXQgbGVhc3QgdW50aWwgbWF0Y2hpbmcgZGVjcmVtZW50cyBhcmUgcGVyZm9ybWVkLlxuIC8vL1xuIC8vLyBJbXBsZW1lbnRlcnMgbXVzdCBhbHNvIGVuc3VyZSB0aGF0IGFsbCBpbnN0YW5jZXMgYXJlIHJlZmVyZW5jZS1jb3VudGVkLiAoT3RoZXJ3aXNlIHRoZXlcbi0vLy8gd29uJiMzOTt0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdFxuLS8vLyBhbGl2ZS4pXG4tcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcbiYjNDM7Ly8vIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGhvbm91ciB0aGUgcmVxdWlyZW1lbnQgdGhhdCBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSBrZWVwIHRoZSBvYmplY3QgYWxpdmUuKVxuJiM0MztwdWIgdW5zYWZlIHRyYWl0IFJlZkNvdW50ZWQge1xuICAgICAvLy8gSW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvYmplY3QuXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZik7XG4gXG5AQCAtNTUsMTEgJiM0Mzs2NCwyNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xuICAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIHdhcyBhIHByZXZpb3VzIG1hdGNoaW5nIGluY3JlbWVudCB0byB0aGUgcmVmZXJlbmNlIGNvdW50LFxuICAgICAvLy8gYW5kIHRoYXQgdGhlIG9iamVjdCBpcyBubyBsb25nZXIgdXNlZCBhZnRlciBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIGRlY3JlbWVudGVkIChhcyBpdCBtYXlcbiAgICAgLy8vIHJlc3VsdCBpbiB0aGUgb2JqZWN0IGJlaW5nIGZyZWVkKSwgdW5sZXNzIHRoZSBjYWxsZXIgb3ducyBhbm90aGVyIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnRcbi0gICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxsc1xuLSAgICAvLy8gW2BBbHdheXNSZWZDb3VudGVkOjpkZWNfcmVmYF0gb25jZSkuXG4mIzQzOyAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzIFtgUmVmQ291bnRlZDo6ZGVjX3JlZmBdIG9uY2UpLlxuICAgICB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKTtcbiB9XG4gXG4mIzQzOy8vLyBBbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgdHlwZS5cbiYjNDM7Ly8vXG4mIzQzOy8vLyBJdCBhbGxvd3MgZGVyaXZpbmcgYSBjb3VudGVkIHJlZmVyZW5jZSBbYEFSZWZcdTAwM2NUXHUwMDNlYF0gZnJvbSBhIGBcdTAwMjZUYC5cbiYjNDM7Ly8vXG4mIzQzOy8vLyBUaGlzIHByb3ZpZGVzIHNvbWUgY29udmVuaWVuY2UsIGJ1dCBpdCBhbGxvd3MgXCYjMzQ7ZXNjYXBpbmdcJiMzNDsgYm9ycm93IGNoZWNrcyBvbiBgXHUwMDI2VGAuIEFzIGl0XG4mIzQzOy8vLyBjb21wbGljYXRlcyBhdHRlbXB0cyB0byBlbnN1cmUgdGhhdCBhIHJlZmVyZW5jZSB0byBUIGlzIHVuaXF1ZSwgaXQgaXMgb3B0aW9uYWwgdG8gcHJvdmlkZSBmb3JcbiYjNDM7Ly8vIFtgUmVmQ291bnRlZGBdIHR5cGVzLiBTZWUgKlNhZmV0eSogYmVsb3cuXG4mIzQzOy8vL1xuJiM0MzsvLy8gIyBTYWZldHlcbiYjNDM7Ly8vXG4mIzQzOy8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBzYWZldHkgaW52YXJpYW50cyBhcmUgdmlvbGF0ZWQgYnkgdXBncmFkaW5nIGFuIGBcdTAwMjZUYCB0byBhblxuJiM0MzsvLy8gW2BBUmVmXHUwMDNjVFx1MDAzZWBdLiBJbiBwYXJ0aWN1bGFyIHRoYXQgaW1wbGllcyBbYEFsd2F5c1JlZkNvdW50ZWRgXSBhbmQgW2BjcmF0ZTo6dHlwZXM6Ok93bmFibGVgXVxuJiM0MzsvLy8gY2Fubm90IGJlIGltcGxlbWVudGVkIGZvciB0aGUgc2FtZSB0eXBlLCBhcyB0aGlzIHdvdWxkIGFsbG93IHZpb2xhdGluZyB0aGUgdW5pcXVlbmVzcyBndWFyYW50ZWVcbiYjNDM7Ly8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZFx1MDAzY1RcdTAwM2VgXSBieSBkZXJlZmVyZW5jaW5nIGl0IGludG8gYW4gYFx1MDAyNlRgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbVxuJiM0MzsvLy8gdGhhdC5cbiYjNDM7cHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkOiBSZWZDb3VudGVkIHt9XG4mIzQzO1xuIC8vLyBBbiBvd25lZCByZWZlcmVuY2UgdG8gYW4gYWx3YXlzLXJlZmVyZW5jZS1jb3VudGVkIG9iamVjdC5cbiAvLy9cbiAvLy8gVGhlIG9iamVjdCYjMzk7cyByZWZlcmVuY2UgY291bnQgaXMgYXV0b21hdGljYWxseSBkZWNyZW1lbnRlZCB3aGVuIGFuIGluc3RhbmNlIG9mIFtgQVJlZmBdIGlzXG5AQCAtNzAsNyAmIzQzOzk1LDcgQEAgcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcbiAvLy9cbiAvLy8gVGhlIHBvaW50ZXIgc3RvcmVkIGluIGBwdHJgIGlzIG5vbi1udWxsIGFuZCB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBbYEFSZWZgXSBpbnN0YW5jZS4gSW5cbiAvLy8gcGFydGljdWxhciwgdGhlIFtgQVJlZmBdIGluc3RhbmNlIG93bnMgYW4gaW5jcmVtZW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdCYjMzk7cyByZWZlcmVuY2UgY291bnQuXG4tcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4mIzQzO3B1YiBzdHJ1Y3QgQVJlZlx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2Uge1xuICAgICBwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlLFxuICAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NUXHUwMDNlLFxuIH1cbkBAIC03OSwxOSAmIzQzOzEwNCwxOSBAQCBwdWIgc3RydWN0IEFSZWZcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIHtcbiAvLyBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGBcdTAwMjZUYCAod2hpY2ggaXMgc2FmZSBiZWNhdXNlIGBUYCBpcyBgU3luY2ApOyBhZGRpdGlvbmFsbHksIGl0IG5lZWRzXG4gLy8gYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYW4gYEFSZWZcdTAwM2NUXHUwMDNlYCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGFcbiAvLyBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8gYW5kIGBUYCBpcyBkcm9wcGVkLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBTeW5jICYjNDM7IFNlbmRcdTAwM2UgU2VuZCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZFx1MDAzZSBTZW5kIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIC8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGBcdTAwMjZBUmVmXHUwMDNjVFx1MDAzZWAgdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgYFN5bmNgXG4gLy8gYmVjYXVzZSBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGBcdTAwMjZUYCAod2hpY2ggaXMgc2FmZSBiZWNhdXNlIGBUYCBpcyBgU3luY2ApOyBhZGRpdGlvbmFsbHksXG4gLy8gaXQgbmVlZHMgYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYSBgXHUwMDI2QVJlZlx1MDAzY1RcdTAwM2VgIG1heSBjbG9uZSBpdCBhbmQgZ2V0IGFuXG4gLy8gYEFSZWZcdTAwM2NUXHUwMDNlYCBvbiB0aGF0IHRocmVhZCwgc28gdGhlIHRocmVhZCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGEgbXV0YWJsZSByZWZlcmVuY2UsIGZvclxuIC8vIGV4YW1wbGUsIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8gYW5kIGBUYCBpcyBkcm9wcGVkLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBTeW5jICYjNDM7IFNlbmRcdTAwM2UgU3luYyBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZFx1MDAzZSBTeW5jIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLlxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuJiM0MztpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBVbnBpbiBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbiBcbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BBUmVmYF0uXG4gICAgIC8vL1xuICAgICAvLy8gSXQgdGFrZXMgb3ZlciBhbiBpbmNyZW1lbnQgb2YgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QuXG5AQCAtMTIwLDE5ICYjNDM7MTQ1LDIxIEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbiAgICAgLy8vXG4gICAgIC8vLyBgYGBcbiAgICAgLy8vIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4tICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07XG4mIzQzOyAgICAvLy8gdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9O1xuICAgICAvLy9cbiAgICAgLy8vIHN0cnVjdCBFbXB0eSB7fVxuICAgICAvLy9cbi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLlxuLSAgICAvLy8gdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRW1wdHkge1xuJiM0MzsgICAgLy8vIC8vIFNBRkVUWTogVGhlIGBSZWZDb3VudGVkYCBpbXBsZW1lbnRhdGlvbiBmb3IgYEVtcHR5YCBkb2VzIG5vdCBjb3VudCByZWZlcmVuY2VzIGFuZCBuZXZlclxuJiM0MzsgICAgLy8vIC8vIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gVGh1cyB3ZSBjYW4gYWN0IGFzIG93bmluZyBhbiBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50IGZvclxuJiM0MzsgICAgLy8vIC8vIHRoZSBvYmplY3QgdGhhdCB3ZSBwYXNzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGBBUmVmYC5cbiYjNDM7ICAgIC8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBFbXB0eSB7XG4gICAgIC8vLyAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7fVxuICAgICAvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKF9vYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7fVxuICAgICAvLy8gfVxuICAgICAvLy9cbiAgICAgLy8vIGxldCBtdXQgZGF0YSA9IEVtcHR5IHt9O1xuICAgICAvLy8gbGV0IHB0ciA9IE5vbk51bGw6Olx1MDAzY0VtcHR5XHUwMDNlOjpuZXcoXHUwMDI2bXV0IGRhdGEpLnVud3JhcCgpO1xuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXG4mIzQzOyAgICAvLy8gLy8gU0FGRVRZOiBXZSBrZWVwIGBkYXRhYCBhcm91bmQgbG9uZ2VyIHRoYW4gdGhlIGBBUmVmYC5cbiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZlx1MDAzY0VtcHR5XHUwMDNlID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9O1xuICAgICAvLy8gbGV0IHJhd19wdHI6IE5vbk51bGxcdTAwM2NFbXB0eVx1MDAzZSA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTtcbiAgICAgLy8vXG5AQCAtMTQzLDcgJiM0MzsxNzAsNyBAQCBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cdTAwM2UgTm9uTnVsbFx1MDAzY1RcdTAwM2Uge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIENsb25lIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIENsb25lIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIGNsb25lKFx1MDAyNnNlbGYpIC1cdTAwM2UgU2VsZiB7XG4gICAgICAgICBzZWxmLmluY19yZWYoKTtcbiAgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBpbmNyZW1lbnRlZCB0aGUgcmVmY291bnQgYWJvdmUuXG5AQCAtMTUxLDcgJiM0MzsxNzgsNyBAQCBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIERlcmVmIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIERlcmVmIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4gICAgIHR5cGUgVGFyZ2V0ID0gVDtcbiBcbiAgICAgZm4gZGVyZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZTZWxmOjpUYXJnZXQge1xuQEAgLTE2OCw3ICYjNDM7MTk1LDE0IEBAIGZuIGZyb20oYjogXHUwMDI2VCkgLVx1MDAzZSBTZWxmIHtcbiAgICAgfVxuIH1cbiBcbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSBEcm9wIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFx1MDAzZSBGcm9tXHUwMDNjT3duZWRcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIGZuIGZyb20oYjogT3duZWRcdTAwM2NUXHUwMDNlKSAtXHUwMDNlIFNlbGYge1xuJiM0MzsgICAgICAgIFQ6OmludG9fc2hhcmVkKGIpXG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIERyb3AgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgZm4gZHJvcChcdTAwMjZtdXQgc2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBgQVJlZmAgb3ducyB0aGUgcmVmZXJlbmNlIHdlJiMzOTtyZSBhYm91dCB0b1xuICAgICAgICAgLy8gZGVjcmVtZW50LlxuQEAgLTE3OCwxOSAmIzQzOzIxMiwxOSBAQCBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjQVJlZlx1MDAzY1VcdTAwM2VcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuLSAgICBVOiBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgVDogUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuJiM0MzsgICAgVTogUmVmQ291bnRlZCxcbiB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBlcShcdTAwMjZzZWxmLCBvdGhlcjogXHUwMDI2QVJlZlx1MDAzY1VcdTAwM2UpIC1cdTAwM2UgYm9vbCB7XG4gICAgICAgICBUOjplcShcdTAwMjYqKnNlbGYsIFx1MDAyNioqb3RoZXIpXG4gICAgIH1cbiB9XG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgRXFcdTAwM2UgRXEgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkICYjNDM7IEVxXHUwMDNlIEVxIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIGltcGxcdTAwM2NULCBVXHUwMDNlIFBhcnRpYWxFcVx1MDAzY1x1MDAyNiYjMzk7XyBVXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIHdoZXJlXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxXHUwMDNjVVx1MDAzZSxcbiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxXHUwMDNjVVx1MDAzZSxcbiB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBlcShcdTAwMjZzZWxmLCBvdGhlcjogXHUwMDI2XHUwMDI2VSkgLVx1MDAzZSBib29sIHtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC90YXNrLnJzIGIvcnVzdC9rZXJuZWwvdGFzay5yc1xuaW5kZXggMzgyNzNmNGVlZGI1MS4uNjI1OTQzMGIwY2EzMSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3Rhc2sucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcbkBAIC0xMCw3ICYjNDM7MTAsMTIgQEBcbiAgICAgcGlkX25hbWVzcGFjZTo6UGlkTmFtZXNwYWNlLFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjpBUmVmLFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgTm90VGhyZWFkU2FmZSxcbiYjNDM7ICAgICAgICBPcGFxdWUsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gfTtcbiB1c2UgY29yZTo6e1xuICAgICBvcHM6OkRlcmVmLFxuQEAgLTM0Nyw3ICYjNDM7MzUyLDcgQEAgcHViIGZuIGdyb3VwX2xlYWRlcihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlRhc2sge1xuIH1cbiBcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYFRhc2tgIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgVGFzayB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0zNjEsNiAmIzQzOzM2NiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY1Rhc2tcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2VGFza2AuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge31cbiYjNDM7XG4gaW1wbCBQYXJ0aWFsRXEgZm9yIFRhc2sge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gZXEoXHUwMDI2c2VsZiwgb3RoZXI6IFx1MDAyNlNlbGYpIC1cdTAwM2UgYm9vbCB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdHlwZXMucnMgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xuaW5kZXggYWMzMTZmZDdiNTM4Zi4uNmFhNzYwOTUyY2I2MyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3R5cGVzLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xuQEAgLTE1LDYgJiM0MzsxNSwxOCBAQFxuIHB1YiBtb2QgZm9yX2x0O1xuIHB1YiB1c2UgZm9yX2x0OjpGb3JMdDtcbiBcbiYjNDM7cHViIHVzZSBjcmF0ZTo6e1xuJiM0MzsgICAgb3duZWQ6OntcbiYjNDM7ICAgICAgICBPd25hYmxlLFxuJiM0MzsgICAgICAgIE93bmFibGVSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE93bmVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LCAvL1xuJiM0Mzt9O1xuJiM0MztcbiAvLy8gVXNlZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgdG8gYW5kIGZyb20gZm9yZWlnbiAobm9uLVJ1c3QpIGxhbmd1YWdlcy5cbiAvLy9cbiAvLy8gT3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIGZyb20gUnVzdCB0byBhIGZvcmVpZ24gbGFuZ3VhZ2UgYnkgY2FsbGluZyBbYFNlbGY6OmludG9fZm9yZWlnbmBdIGFuZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuaW5kZXggN2FmZjBjODJkMGFmYy4uNTkzNTBjNmIwZGYyYSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3VzYi5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvdXNiLnJzXG5AQCAtMTgsNyAmIzQzOzE4LDEwIEBAXG4gICAgICAgICB0b19yZXN1bHQsIC8vXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4tICAgIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTM5Miw3ICYjNDM7Mzk1LDcgQEAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2RGV2aWNlIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEludGVyZmFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYEludGVyZmFjZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfaW50ZXJmYWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxuQEAgLTQwNiw2ICYjNDM7NDA5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0ludGVyZmFjZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZJbnRlcmZhY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge31cbiYjNDM7XG4gLy8gU0FGRVRZOiBBIGBJbnRlcmZhY2VgIGlzIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZCBhbmQgY2FuIGJlIHJlbGVhc2VkIGZyb20gYW55IHRocmVhZC5cbiB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbnRlcmZhY2Uge31cbiBcbkBAIC00NDMsNyAmIzQzOzQ1MCw3IEBAIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OnVzYl9kZXZpY2Uge1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYERldmljZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfZGV2aWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxuQEAgLTQ1Nyw2ICYjNDM7NDY0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZEZXZpY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbiYjNDM7XG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG5pbmRleCA3ZTI1M2I2ZjI5OWNlLi43NzY3M2I4ZWE0NWZiIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnNcbkBAIC0xOTIsNyAmIzQzOzE5Miw3IEBAXG4gICAgIHN5bmM6OntcbiAgICAgICAgIGFyZWY6OntcbiAgICAgICAgICAgICBBUmVmLFxuLSAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgICAgICB9LFxuICAgICAgICAgQXJjLFxuICAgICAgICAgTG9ja0NsYXNzS2V5LCAvL1xuQEAgLTk1NCw3ICYjNDM7OTU0LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd0RlbGF5ZWRXb3JrSXRlbVx1MDAzY0lEXHUwMDNlIGZvciBQaW5cdTAwM2NLQm94XHUwMDNjVFx1MDAzZVx1MDAzZVxuIC8vICAgICBpbXBsZW1lbnRhdGlvbiBvZiBgV29ya0l0ZW1Qb2ludGVyYCBmb3IgYEFSZWZcdTAwM2NUXHUwMDNlYC5cbiB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgV29ya0l0ZW1Qb2ludGVyXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsXG4gICAgIFQ6IFdvcmtJdGVtXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXHUwMDNlLFxuICAgICBUOiBIYXNXb3JrXHUwMDNjVCwgSURcdTAwM2UsXG4ge1xuQEAgLTk4Nyw3ICYjNDM7OTg3LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFdvcmtJdGVtUG9pbnRlclx1MDAzY0lEXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIC8vIHJlcXVpcmVtZW50cyBvZiBgV29ya0l0ZW1Qb2ludGVyYC5cbiB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3V29ya0l0ZW1cdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgVDogUmVmQ291bnRlZCxcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc1dvcmtcdTAwM2NULCBJRFx1MDAzZSxcbiB7XG5AQCAtMTAyMCw3ICYjNDM7MTAyMCw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBSYXdEZWxheWVkV29ya0l0ZW1cdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuICAgICBUOiBXb3JrSXRlbVx1MDAzY0lELCBQb2ludGVyID0gU2VsZlx1MDAzZSxcbiAgICAgVDogSGFzRGVsYXllZFdvcmtcdTAwM2NULCBJRFx1MDAzZSxcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsXG4ge1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxMzoxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIHRoZSBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHJhaXRzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCB1cGRhdGVzIHRoZSBgUGFnZWAgYWJzdHJhY3Rpb24gYW5kIGl0cyB1c2VycyAobGlrZSBBbmRyb2lkIEJpbmRlcikgdG8gdXNlIHRoZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkzNzAyZmRjMzViNDI0MmVmZGNjNTMyNjNkOTkzMWYzZDVlYWQ3NjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzoxMjozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycwppbmRleCBlODJhNTUyMzgwNGY0Li5jNTViYTI5YWJlYTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzCkBAIC0zMyw3ICYjNDM7MzMsNyBAQAogICAgIHN5bmM6OnthcmVmOjpBUmVmLCBNdXRleCwgU3BpbkxvY2t9LAogICAgIHRhc2s6OlBpZCwKICAgICB0cmFuc211dGU6OkZyb21CeXRlcywKLSAgICB0eXBlczo6T3BhcXVlLAomIzQzOyAgICB0eXBlczo6e09wYXF1ZSwgT3duZWR9LAogICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlciwKIH07CiAKQEAgLTE5OCw3ICYjNDM7MTk4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgSW5uZXIge30KICNbcmVwcihDKV0KIHN0cnVjdCBQYWdlSW5mbyB7CiAgICAgbHJ1OiBiaW5kaW5nczo6bGlzdF9oZWFkLAotICAgIHBhZ2U6IE9wdGlvbiZsdDtQYWdlJmd0OywKJiM0MzsgICAgcGFnZTogT3B0aW9uJmx0O093bmVkJmx0O1BhZ2UmZ3Q7Jmd0OywKICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsCiB9CiAKQEAgLTIwNiw3ICYjNDM7MjA2LDcgQEAgaW1wbCBQYWdlSW5mbyB7CiAgICAgLy8vICMgU2FmZXR5CiAgICAgLy8vCiAgICAgLy8vIFRoZSBjYWxsZXIgZW5zdXJlcyB0aGF0IHdyaXRpbmcgdG8gYG1lLnBhZ2VgIGlzIG9rLCBhbmQgdGhhdCB0aGUgcGFnZSBpcyBub3QgY3VycmVudGx5IHNldC4KLSAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IFBhZ2UpIHsKJiM0MzsgICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBPd25lZCZsdDtQYWdlJmd0OykgewogICAgICAgICAvLyBTQUZFVFk6IFRoaXMgcG9pbnRlciBvZmZzZXQgaXMgaW4gYm91bmRzLgogICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgJmFtcDtyYXcgbXV0ICgqbWUpLnBhZ2UgfTsKIApAQCAtMjI5LDEzICYjNDM7MjI5LDEzIEBAIHVuc2FmZSBmbiBnZXRfcGFnZSZsdDsmIzM5O2EmZ3Q7KG1lOiAqY29uc3QgUGFnZUluZm8pIC0mZ3Q7IE9wdGlvbiZsdDsmYW1wOyYjMzk7YSBQYWdlJmd0OyB7CiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyAmYW1wO3JhdyBjb25zdCAoKm1lKS5wYWdlIH07CiAKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBmb3IgcmVhZGluZy4KLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH0KJiM0MzsgICAgICAgIHVuc2FmZSB7ICgqcHRyKS5hc19kZXJlZigpIH0KICAgICB9CiAKICAgICAvLy8gIyBTYWZldHkKICAgICAvLy8KICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2sgZm9yIHRoZSBkdXJhdGlvbiBvZiAmIzM5O2EuCi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLSZndDsgT3B0aW9uJmx0O1BhZ2UmZ3Q7IHsKJiM0MzsgICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLSZndDsgT3B0aW9uJmx0O093bmVkJmx0O1BhZ2UmZ3Q7Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuCiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyAmYW1wO3JhdyBtdXQgKCptZSkucGFnZSB9OwogCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnMKaW5kZXggY2Q0MjAzZjI3YWVkMC4uYzdiOWIwNjljZjc1ZCAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycwpAQCAtMTY5LDcgJiM0MzsxNjksNyBAQCB1bnNhZmUgZm4gcmVhbGxvYygKIH0KIAogaW1wbCBWbWFsbG9jIHsKLSAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BwYWdlOjpCb3Jyb3dlZFBhZ2VgXS4KJiM0MzsgICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZS4KICAgICAvLy8KICAgICAvLy8gIyBFeGFtcGxlcwogICAgIC8vLwpAQCAtMjAyLDIwICYjNDM7MjAyLDE3IEBAIGltcGwgVm1hbGxvYyB7CiAgICAgLy8vCiAgICAgLy8vIC0gYHB0cmAgbXVzdCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLgogICAgIC8vLyAtIGBwdHJgIG11c3QgcmVtYWluIHZhbGlkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIGAmIzM5O2FgLgotICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZSZsdDsmIzM5O2EmZ3Q7KHB0cjogTm9uTnVsbCZsdDt1OCZndDspIC0mZ3Q7IHBhZ2U6OkJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7IHsKJiM0MzsgICAgcHViIHVuc2FmZSBmbiB0b19wYWdlJmx0OyYjMzk7YSZndDsocHRyOiBOb25OdWxsJmx0O3U4Jmd0OykgLSZndDsgJmFtcDsmIzM5O2EgcGFnZTo6UGFnZSB7CiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuCiAgICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OnZtYWxsb2NfdG9fcGFnZShwdHIuYXNfcHRyKCkuY2FzdCgpKSB9OwogCi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXIKLSAgICAgICAgLy8gdG8gYFZtYWxsb2NgIG1lbW9yeS4KLSAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07Ci0KICAgICAgICAgLy8gU0FGRVRZOgotICAgICAgICAvLyAtIGBwYWdlYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mCi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi4KLSAgICAgICAgLy8gLSBCeSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGBwdHJgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mCi0gICAgICAgIC8vICAgYCYjMzk7YWAuCi0gICAgICAgIHVuc2FmZSB7IHBhZ2U6OkJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfQomIzQzOyAgICAgICAgLy8gLSBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQsIG5vbi1udWxsIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkCiYjNDM7ICAgICAgICAvLyAgIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeSwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uCiYjNDM7ICAgICAgICAvLyAgIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLgomIzQzOyAgICAgICAgLy8gLSBCeSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGBwdHJgLCBhbmQgaGVuY2UgdGhlIGBzdHJ1Y3QgcGFnZWAsIGlzCiYjNDM7ICAgICAgICAvLyAgIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGAmIzM5O2FgLgomIzQzOyAgICAgICAgdW5zYWZlIHsgJmFtcDsqcGFnZS5jYXN0KCkgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwppbmRleCAwMmZkYTNlYTVjYWU2Li44ZGNjMTZlZDg5ODkzIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwpAQCAtOSw3ICYjNDM7OSw3IEBACiAgICAgcHRyOjpOb25OdWxsLCAvLwogfTsKIAotLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi4KJiM0MzsvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLgogLy8vCiAvLy8gIyBHdWFyYW50ZWVzCiAvLy8KQEAgLTI4LDExICYjNDM7MjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXImbHQ7JiMzOTthJmd0OyB7CiAgICAgc2l6ZTogdXNpemUsCiAgICAgLy8vIFRoZSBjdXJyZW50IHBhZ2UgaW5kZXggb2YgdGhlIFtgSXRlcmF0b3JgXS4KICAgICBpbmRleDogdXNpemUsCi0gICAgX3A6IFBoYW50b21EYXRhJmx0O3BhZ2U6OkJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7Jmd0OywKJiM0MzsgICAgX3A6IFBoYW50b21EYXRhJmx0OyZhbXA7JiMzOTthIHBhZ2U6OlBhZ2UmZ3Q7LAogfQogCiBpbXBsJmx0OyYjMzk7YSZndDsgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlciZsdDsmIzM5O2EmZ3Q7IHsKLSAgICB0eXBlIEl0ZW0gPSBwYWdlOjpCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OzsKJiM0MzsgICAgdHlwZSBJdGVtID0gJmFtcDsmIzM5O2EgcGFnZTo6UGFnZTsKIAogICAgIGZuIG5leHQoJmFtcDttdXQgc2VsZikgLSZndDsgT3B0aW9uJmx0O1NlbGY6Okl0ZW0mZ3Q7IHsKICAgICAgICAgbGV0IG9mZnNldCA9IHNlbGYuaW5kZXguY2hlY2tlZF9tdWwocGFnZTo6UEFHRV9TSVpFKT87CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5ycwppbmRleCAzNWQxZTAxNTg0OGRkLi5lNmM2MzdiYmUyMDA5IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnMKQEAgLTIxMSw2ICYjNDM7MjExLDE1IEBAIHB1YiBmbiBsZWFrJmx0OyYjMzk7YSZndDsoYjogU2VsZikgLSZndDsgJmFtcDsmIzM5O2EgbXV0IFQgewogICAgICAgICAvLyB3aGljaCBwb2ludHMgdG8gYW4gaW5pdGlhbGl6ZWQgaW5zdGFuY2Ugb2YgYFRgLgogICAgICAgICB1bnNhZmUgeyAmYW1wO211dCAqQm94OjppbnRvX3JhdyhiKSB9CiAgICAgfQomIzQzOwomIzQzOyAgICAvLy8gQ29uc3VtZXMgdGhlIGBCb3gmbHQ7VCwgQSZndDtgIGFuZCByZXR1cm5zIGEgYE5vbk51bGwmbHQ7VCZndDtgLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC4KJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHB1YiBmbiBpbnRvX25vbl9udWxsKGI6IFNlbGYpIC0mZ3Q7IE5vbk51bGwmbHQ7VCZndDsgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgQm94OjppbnRvX3Jhd2AgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIuCiYjNDM7ICAgICAgICB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKFNlbGY6OmludG9fcmF3KGIpKSB9CiYjNDM7ICAgIH0KIH0KIAogaW1wbCZsdDtULCBBJmd0OyBCb3gmbHQ7TWF5YmVVbmluaXQmbHQ7VCZndDssIEEmZ3Q7CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMKaW5kZXggYzQyOTI4ZDVhMjM5My4uODU0NTI1Mjg5YzhiNCAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycwpAQCAtMTksNiAmIzQzOzE5LDEwIEBACiAgICAgICAgIHRvX3Jlc3VsdCwgLy8KICAgICB9LAogICAgIHByZWx1ZGU6OiosCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjp7CiAgICAgICAgIEZvckx0LAogICAgICAgICBGb3JlaWduT3duYWJsZSwKQEAgLTM0NCw3ICYjNDM7MzQ4LDcgQEAgdW5zYWZlIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IGRldmljZTo6QXNCdXNEZXZpY2UmbHQ7Q3R4Jmd0OyBmb3IgRGV2aWNlJmx0O0N0eCZndDsKIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTsKQEAgLTM2Myw2ICYjNDM7MzY3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzCmluZGV4IGNlM2UzMGM4MWNiNWUuLjhkYWQxNWFlNGNmYjAgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5ycwpAQCAtOSw3ICYjNDM7OSwxMSBAQAogICAgIGJsb2NrOjptcTo6T3BlcmF0aW9ucywKICAgICBlcnJvcjo6UmVzdWx0LAogICAgIHN5bmM6OnsKLSAgICAgICAgYXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAomIzQzOyAgICAgICAgYXJlZjo6ewomIzQzOyAgICAgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICAgICAgfSwKICAgICAgICAgYXRvbWljOjpSZWxheGVkLAogICAgICAgICBSZWZjb3VudCwKICAgICB9LApAQCAtMjI5LDExICYjNDM7MjMzLDEwIEBAIHVuc2FmZSBpbXBsJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7IFNlbmQgZm9yIFJlcXVlc3QmbHQ7VCZndDsge30KIC8vIG11dGF0ZSBgc2VsZmAgYXJlIGludGVybmFsbHkgc3luY2hyb25pemVkYAogdW5zYWZlIGltcGwmbHQ7VDogT3BlcmF0aW9ucyZndDsgU3luYyBmb3IgUmVxdWVzdCZsdDtUJmd0OyB7fQogCi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3QmbHQ7VCZndDtgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpcwotLy8gaW1wbGVtZW50YXRpb24gb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudAotLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnQKLS8vIGRlY3JlbWVudCBpcyBleGVjdXRlZC4KLXVuc2FmZSBpbXBsJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3QmbHQ7VCZndDsgewomIzQzOy8vIFNBRkVUWTogQWxsIGluc3RhbmNlcyBvZiBgUmVxdWVzdCZsdDtUJmd0O2AgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGBSZWZDb3VudGVkYAomIzQzOy8vIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudCBrZWVwcyB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeSBhdCBsZWFzdCB1bnRpbCBhCiYjNDM7Ly8gbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpcyBleGVjdXRlZC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPcGVyYXRpb25zJmd0OyBSZWZDb3VudGVkIGZvciBSZXF1ZXN0Jmx0O1QmZ3Q7IHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICBzZWxmLndyYXBwZXJfcmVmKCkucmVmY291bnQoKS5pbmMoKTsKICAgICB9CkBAIC0yNTUsMyAmIzQzOzI1OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgICAgIH0KICAgICB9CiB9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7UmVxdWVzdCZndDtgCiYjNDM7Ly8gZnJvbSBhIGAmYW1wO1JlcXVlc3RgIChidXQgdGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlKS4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPcGVyYXRpb25zJmd0OyBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0Jmx0O1QmZ3Q7IHt9CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9jcmVkLnJzIGIvcnVzdC9rZXJuZWwvY3JlZC5ycwppbmRleCBmZmExNTZiOWRmMzc3Li5iMTc3MzZhOWFkY2Q1IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2NyZWQucnMKQEAgLTgsNyAmIzQzOzgsMTUgQEAKIC8vIQogLy8hIFJlZmVyZW5jZTogJmx0O2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L3NlY3VyaXR5L2NyZWRlbnRpYWxzLmh0bWwmZ3Q7CiAKLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0YXNrOjpLdWlkLCB0eXBlczo6T3BhcXVlfTsKJiM0Mzt1c2UgY3JhdGU6OnsKJiM0MzsgICAgYmluZGluZ3MsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsCiYjNDM7ICAgIHRhc2s6Okt1aWQsCiYjNDM7ICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwomIzQzO307CiAKIC8vLyBXcmFwcyB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgY3JlZGAuCiAvLy8KQEAgLTc2LDcgJiM0Mzs4NCw3IEBAIHB1YiBmbiBldWlkKCZhbXA7c2VsZikgLSZndDsgS3VpZCB7CiB9CiAKIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgQ3JlZGVudGlhbGAgaXMgYWx3YXlzIHJlZi1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLgpAQCAtOTAsMyAmIzQzOzk4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGwmbHQ7Q3JlZGVudGlhbCZndDspIHsKICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9jcmVkKG9iai5jYXN0KCkuYXNfcHRyKCkpIH07CiAgICAgfQogfQomIzQzOwomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7Q3JlZGVudGlhbCZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0NyZWRlbnRpYWxgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge30KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS5ycwppbmRleCAxYTM4YjNiYmRmYjdkLi45YWZlY2QzZmEzMjM3IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzCkBAIC04LDggJiM0Mzs4LDEyIEBACiAgICAgYmluZGluZ3MsCiAgICAgZm10LAogICAgIHByZWx1ZGU6OiosCi0gICAgc3luYzo6YXJlZjo6QVJlZiwKJiM0MzsgICAgc3luYzo6YXJlZjo6ewomIzQzOyAgICAgICAgQVJlZiwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLAogICAgICAgICBPcGFxdWUsIC8vCiAgICAgfSwgLy8KQEAgLTQ0OCw3ICYjNDM7NDUyLDcgQEAgcHViIGZuIG5hbWUoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO0NTdHIgewoga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTsKIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLgogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JhdygpKSB9OwpAQCAtNDYwLDYgJiM0Mzs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9CiYjNDM7CiAvLyBTQUZFVFk6IEFzIGJ5IHRoZSB0eXBlIGludmFyaWFudCBgRGV2aWNlYCBjYW4gYmUgc2VudCB0byBhbnkgdGhyZWFkLgogdW5zYWZlIGltcGwgU2VuZCBmb3IgRGV2aWNlIHt9CiAKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5ycwppbmRleCA1YWVhZDgzNWZiYmMwLi5jZWU3ZTI1MDEzNjg5IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzCkBAIC0xNCw3ICYjNDM7MTQsMTAgQEAKICAgICBmbXQsCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSwKLSAgICBzeW5jOjphcmVmOjpBUmVmLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6T3BhcXVlLAogfTsKIApAQCAtMzYwLDcgJiM0MzszNjMsNyBAQCBmbiBmbXQoJmFtcDtzZWxmLCBmOiAmYW1wO211dCBmbXQ6OkZvcm1hdHRlciZsdDsmIzM5O18mZ3Q7KSAtJmd0OyBmbXQ6OlJlc3VsdCB7CiB9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBGd05vZGVgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHsKJiM0Mzt1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUKICAgICAgICAgLy8gcmVmY291bnQgaXMgbm9uLXplcm8uCkBAIC0zNzQsNiAmIzQzOzM3NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RndOb2RlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RndOb2RlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge30KJiM0MzsKIGVudW0gTm9kZSZsdDsmIzM5O2EmZ3Q7IHsKICAgICBCb3Jyb3dlZCgmYW1wOyYjMzk7YSBGd05vZGUpLAogICAgIE93bmVkKEFSZWYmbHQ7RndOb2RlJmd0OyksCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycwppbmRleCA0NzdjZjc3MWZiMTBlLi42ZmMwMmQ1MDQzMzRlIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnMKQEAgLTE3LDcgJiM0MzsxNyw4IEBACiAgICAgcHJlbHVkZTo6KiwKICAgICBzeW5jOjphcmVmOjp7CiAgICAgICAgIEFSZWYsCi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vCiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KICAgICB9LAogICAgIHR5cGVzOjp7CiAgICAgICAgIE5vdFRocmVhZFNhZmUsCkBAIC0zNjIsNyAmIzQzOzM2Myw3IEBAIGZuIGRlcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtTZWxmOjpUYXJnZXQgewogCiAvLyBTQUZFVFk6IERSTSBkZXZpY2Ugb2JqZWN0cyBhcmUgYWx3YXlzIHJlZmVyZW5jZSBjb3VudGVkIGFuZCB0aGUgZ2V0L3B1dCBmdW5jdGlvbnMKIC8vIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy4KLXVuc2FmZSBpbXBsJmx0O1Q6IGRybTo6RHJpdmVyLCBDOiBEZXZpY2VDb250ZXh0Jmd0OyBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UmbHQ7VCwgQyZndDsgewomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IGRybTo6RHJpdmVyLCBDOiBEZXZpY2VDb250ZXh0Jmd0OyBSZWZDb3VudGVkIGZvciBEZXZpY2UmbHQ7VCwgQyZndDsgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07CkBAIC0zNzcsNiAmIzQzOzM3OCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHQmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSZsdDtULCBDJmd0OyB7fQomIzQzOwogaW1wbCZsdDtUOiBkcm06OkRyaXZlciwgQzogRGV2aWNlQ29udGV4dCZndDsgQXNSZWYmbHQ7ZGV2aWNlOjpEZXZpY2UmZ3Q7IGZvciBEZXZpY2UmbHQ7VCwgQyZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UgewogICAgICAgICAvLyBTQUZFVFk6IGBiaW5kaW5nczo6ZHJtX2RldmljZTo6ZGV2YCBpcyB2YWxpZCBhcyBsb25nIGFzIHRoZSBEUk0gZGV2aWNlIGl0c2VsZiBpcyB2YWxpZCwKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMKaW5kZXggYzhiNjZkODE2ODcxOS4uODBhZmZlNjMzNWFjZiAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMKQEAgLTIxLDcgJiM0MzsyMSw3IEBACiAgICAgcHJlbHVkZTo6KiwKICAgICBzeW5jOjphcmVmOjp7CiAgICAgICAgIEFSZWYsCi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwogICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwKIH07CkBAIC0zNCw3ICYjNDM7MzQsNyBAQAogI1tjZmcoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpXQogcHViIG1vZCBzaG1lbTsKIAotLy8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyBbYEFsd2F5c1JlZkNvdW50ZWRgXSBmb3IgYW55IEdFTSBvYmplY3QgdHlwZS4KJiM0MzsvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLgogLy8vCiAvLy8gU2luY2UgYWxsIEdFTSBvYmplY3RzIHVzZSB0aGUgc2FtZSByZWZjb3VudGluZyBzY2hlbWUuCiAjW21hY3JvX2V4cG9ydF0KQEAgLTQ3LDcgJiM0Mzs0Nyw3IEBAIGltcGwgJCggJmx0OyQoICR0cGFyYW1faWQ6aWRlbnQgKSwmIzQzOyZndDsgKT8gZm9yICR0eXBlOnR5CiAgICAgICAgICk/CiAgICAgKSA9Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogQWxsIEdFTSBvYmplY3RzIGFyZSByZWZjb3VudGVkLgotICAgICAgICB1bnNhZmUgaW1wbCAkKCAmbHQ7JCggJHRwYXJhbV9pZCApLCYjNDM7Jmd0OyApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlCiYjNDM7ICAgICAgICB1bnNhZmUgaW1wbCAkKCAmbHQ7JCggJHRwYXJhbV9pZCApLCYjNDM7Jmd0OyApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yICR0eXBlCiAgICAgICAgIHdoZXJlCiAgICAgICAgICAgICBTZWxmOiBJbnRvR0VNT2JqZWN0LAogICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCYjNDM7ICk/CkBAIC02Niw2ICYjNDM7NjYsMTQgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICAgICAgICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3RfcHV0KG9iaikgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQomIzQzOwomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDskdHlwZSZndDtgIGZyb20gYQomIzQzOyAgICAgICAgLy8gYCZhbXA7JHR5cGVgLgomIzQzOyAgICAgICAgdW5zYWZlIGltcGwgJCggJmx0OyQoICR0cGFyYW1faWQgKSwmIzQzOyZndDsgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciAkdHlwZQomIzQzOyAgICAgICAgd2hlcmUKJiM0MzsgICAgICAgICAgICBTZWxmOiBJbnRvR0VNT2JqZWN0LAomIzQzOyAgICAgICAgICAgICQoICQoICRiaW5kX3BhcmFtIDogJGJpbmRfdHJhaXQgKSwmIzQzOyApPwomIzQzOyAgICAgICAge30KICAgICB9OwogfQogI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV0KQEAgLTEwOSw3ICYjNDM7MTE3LDcgQEAgZm4gY2xvc2UoX29iajogJmFtcDtEcml2ZXJBbGxvY0ltcGwmbHQ7U2VsZiZndDssIF9maWxlOiAmYW1wO0RyaXZlckZpbGUmbHQ7U2VsZiZndDspIHt9CiB9CiAKIC8vLyBUcmFpdCB0aGF0IHJlcHJlc2VudHMgYSBHRU0gb2JqZWN0IHN1YnR5cGUKLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCAmIzQzOyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICYjNDM7IEFsd2F5c1JlZkNvdW50ZWQgewomIzQzO3B1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCAmIzQzOyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICYjNDM7IFJlZkNvdW50ZWQgewogICAgIC8vLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSByYXcgYGRybV9nZW1fb2JqZWN0YCBzdHJ1Y3R1cmUsIHdoaWNoIG11c3QgYmUgdmFsaWQgYXMgbG9uZyBhcwogICAgIC8vLyB0aGlzIG93bmluZyBvYmplY3QgaXMgdmFsaWQuCiAgICAgZm4gYXNfcmF3KCZhbXA7c2VsZikgLSZndDsgKm11dCBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3Q7CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5ycwppbmRleCAyM2VlNjg5YmQyNDAwLi43MjBlNTc0MTgzNThkIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMKQEAgLTEyLDggJiM0MzsxMiwxNSBAQAogICAgIGNyZWQ6OkNyZWRlbnRpYWwsCiAgICAgZXJyb3I6Ontjb2RlOjoqLCB0b19yZXN1bHQsIEVycm9yLCBSZXN1bHR9LAogICAgIGZtdCwKLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sCi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKJiM0MzsgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwogfTsKIHVzZSBjb3JlOjpwdHI7CiAKQEAgLTE5Nyw3ICYjNDM7MjA0LDcgQEAgdW5zYWZlIGltcGwgU3luYyBmb3IgRmlsZSB7fQogCiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvbgogLy8gbWFrZXMgYEFSZWYmbHQ7RmlsZSZndDtgIG93biBhIG5vcm1hbCByZWZjb3VudC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTIxMiw2ICYjNDM7MjE5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsJmx0O0ZpbGUmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtGaWxlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RmlsZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRmlsZSB7fQomIzQzOwogLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBmaWxlYC4gTm90IHRocmVhZCBzYWZlLgogLy8vCiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLgpAQCAtMjMzLDcgJiM0MzsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7CiAKIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgTG9jYWxGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb24KIC8vIG1ha2VzIGBBUmVmJmx0O0xvY2FsRmlsZSZndDtgIG93biBhIG5vcm1hbCByZWZjb3VudC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uCkBAIC0yNDksNiAmIzQzOzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtMb2NhbEZpbGUmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtMb2NhbEZpbGUmZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtMb2NhbEZpbGVgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fQomIzQzOwogaW1wbCBMb2NhbEZpbGUgewogICAgIC8vLyBDb25zdHJ1Y3RzIGEgbmV3IGBzdHJ1Y3QgZmlsZWAgd3JhcHBlciBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLgogICAgIC8vLwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvaTJjLnJzIGIvcnVzdC9rZXJuZWwvaTJjLnJzCmluZGV4IDYyNGI5NzFjYThiMGIuLmY5YWFjYjg5NGY1MDUgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2kyYy5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9pMmMucnMKQEAgLTE4LDcgJiM0MzsxOCw4IEBACiAgICAgcHJlbHVkZTo6KiwKICAgICBzeW5jOjphcmVmOjp7CiAgICAgICAgIEFSZWYsCi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vCiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KICAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsIC8vCiB9OwpAQCAtNDI0LDcgJiM0Mzs0MjUsNyBAQCBwdWIgZm4gZ2V0KGluZGV4OiBpMzIpIC0mZ3Q7IFJlc3VsdCZsdDtBUmVmJmx0O1NlbGYmZ3Q7Jmd0OyB7CiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTsKIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0FkYXB0ZXJgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uCiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfZ2V0X2FkYXB0ZXIoc2VsZi5pbmRleCgpKSB9OwpAQCAtNDM1LDYgJiM0Mzs0MzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH0KICAgICB9CiB9CiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtJMmNBZGFwdGVyJmd0O2AgZnJvbSBhbgomIzQzOy8vIGAmYW1wO0kyY0FkYXB0ZXJgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge30KIAogLy8vIFRoZSBpMmMgYm9hcmQgaW5mbyByZXByZXNlbnRhdGlvbgogLy8vCkBAIC01MDAsNyAmIzQzOzUwNCw3IEBAIHVuc2FmZSBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBkZXZpY2U6OkFzQnVzRGV2aWNlJmx0O0N0eCZndDsgZm9yIEkyY0NsaWVudCZsdDtDCiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNDbGllbnQpOwogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQ2xpZW50YCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJMmNDbGllbnQgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTsKQEAgLTUxMSw2ICYjNDM7NTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwdXRfZGV2aWNlKCZhbXA7cmF3IG11dCAoKm9iai5hc19yZWYoKS5hc19yYXcoKSkuZGV2KSB9CiAgICAgfQogfQomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7STJjQ2xpZW50Jmd0O2AgZnJvbSBhbgomIzQzOy8vIGAmYW1wO0kyY0NsaWVudGAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHt9CiAKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBJMmNDbGllbnQmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2xpYi5ycyBiL3J1c3Qva2VybmVsL2xpYi5ycwppbmRleCA5NTEyYWY3MTU2ZGYyLi5lYjUyNTYyMDRhMTc0IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9saWIucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbGliLnJzCkBAIC0xMDEsNiAmIzQzOzEwMSw3IEBACiBwdWIgbW9kIG9mOwogI1tjZmcoQ09ORklHX1BNX09QUCldCiBwdWIgbW9kIG9wcDsKJiM0MztwdWIgbW9kIG93bmVkOwogcHViIG1vZCBwYWdlOwogI1tjZmcoQ09ORklHX1BDSSldCiBwdWIgbW9kIHBjaTsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tLnJzIGIvcnVzdC9rZXJuZWwvbW0ucnMKaW5kZXggNDc2NGQ3YjY4ZjJhNy4uODNlZDk0ZmNhMTRjYSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvbW0ucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbW0ucnMKQEAgLTEzLDggJiM0MzsxMywxNSBAQAogCiB1c2UgY3JhdGU6OnsKICAgICBiaW5kaW5ncywKLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sCi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKJiM0MzsgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwogfTsKIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTsKIApAQCAtNTUsNyAmIzQzOzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge30KIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tIHt9CiAKIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW0gewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuCkBAIC02OSw2ICYjNDM7NzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O01tJmd0O2AgZnJvbSBhIGAmYW1wO01tYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7fQomIzQzOwogLy8vIEEgd3JhcHBlciBmb3IgdGhlIGtlcm5lbCYjMzk7cyBgc3RydWN0IG1tX3N0cnVjdGAuCiAvLy8KIC8vLyBUaGlzIHR5cGUgaXMgbGlrZSBbYE1tYF0sIGJ1dCB3aXRoIG5vbi16ZXJvIGBtbV91c2Vyc2AuIEl0IGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBgbW1fdXNlcnNgIGNhbgpAQCAtOTEsNyAmIzQzOzEwMSw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXIge30KIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXIge30KIAogLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuCkBAIC0xMDUsNiAmIzQzOzExNSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O01tV2l0aFVzZXImZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtNbVdpdGhVc2VyYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHt9CiYjNDM7CiAvLyBNYWtlIGFsbCBgTW1gIG1ldGhvZHMgYXZhaWxhYmxlIG9uIGBNbVdpdGhVc2VyYC4KIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIgewogICAgIHR5cGUgVGFyZ2V0ID0gTW07CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5ycyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzCmluZGV4IGI4ZDJmMDUxMjI1YzcuLjhmYmMzOTZlNDYwMjggMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzCkBAIC0xMCw3ICYjNDM7MTAsMTEgQEAKIHVzZSBjcmF0ZTo6ewogICAgIGJpbmRpbmdzLAogICAgIG1tOjpNbVdpdGhVc2VyLAotICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSwKJiM0MzsgICAgc3luYzo6YXJlZjo6ewomIzQzOyAgICAgICAgQVJlZiwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLAogfTsKIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTsKIApAQCAtMzQsNyAmIzQzOzM4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlckFzeW5jIHt9CiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyQXN5bmMge30KIAogLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLgpAQCAtNDgsNiAmIzQzOzUyLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7TW1XaXRoVXNlckFzeW5jJmd0O2AKJiM0MzsvLyBmcm9tIGEgYCZhbXA7TW1XaXRoVXNlckFzeW5jYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge30KJiM0MzsKIC8vIE1ha2UgYWxsIGBNbVdpdGhVc2VyYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlckFzeW5jYC4KIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXJBc3luYyB7CiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyOwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3BwLnJzIGIvcnVzdC9rZXJuZWwvb3BwLnJzCmluZGV4IDYyZTQ0Njc2MTI1ZDEuLmI4ZGI2YmRlZmQwNzcgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL29wcC5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vcHAucnMKQEAgLTE2LDggJiM0MzsxNiwxNCBAQAogICAgIGZmaTo6e2NfY2hhciwgY191bG9uZ30sCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OkNTdHJpbmcsCi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAotICAgIHR5cGVzOjpPcGFxdWUsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE9wYXF1ZSwgLy8KJiM0MzsgICAgfSwgLy8KIH07CiAKICNbY2ZnKENPTkZJR19DUFVfRlJFUSldCkBAIC0xMDQxLDcgJiM0MzsxMDQ3LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgT1BQIHt9CiB1bnNhZmUgaW1wbCBTeW5jIGZvciBPUFAge30KIAogLy8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBbYE9QUGBdIGlzIGFsd2F5cyByZWZjb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTEwNTUsNiAmIzQzOzEwNjEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O09QUCZndDtgIGZyb20gYW4KJiM0MzsvLyBgJmFtcDtPUFBgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE9QUCB7fQomIzQzOwogaW1wbCBPUFAgewogICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuCiAgICAgLy8vCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vd25lZC5ycyBiL3J1c3Qva2VybmVsL293bmVkLnJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFjYjYxMWYwODRmZjMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vd25lZC5ycwpAQCAtMCwwICYjNDM7MSwzNzMgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOwomIzQzOy8vISBVbmlxdWUgb3duZWQgcG9pbnRlciB0eXBlcyBmb3Igb2JqZWN0cyB3aXRoIGN1c3RvbSBkcm9wIGxvZ2ljLgomIzQzOy8vIQomIzQzOy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0CiYjNDM7Ly8hIGFyZSBvd25lZCBieSBSdXN0LCBidXQgbmVlZCB0byBiZSBmcmVlZCB0aHJvdWdoIHRoZSBDIEFQSS4KJiM0MzsKJiM0Mzt1c2UgY29yZTo6ewomIzQzOyAgICBtZW06Ok1hbnVhbGx5RHJvcCwKJiM0MzsgICAgb3BzOjp7CiYjNDM7ICAgICAgICBEZXJlZiwKJiM0MzsgICAgICAgIERlcmVmTXV0LCAvLwomIzQzOyAgICB9LAomIzQzOyAgICBwaW46OlBpbiwKJiM0MzsgICAgcHRyOjpOb25OdWxsLCAvLwomIzQzO307CiYjNDM7dXNlIGtlcm5lbDo6ewomIzQzOyAgICBzeW5jOjphcmVmOjpBUmVmLAomIzQzOyAgICB0eXBlczo6UmVmQ291bnRlZCwgLy8KJiM0Mzt9OwomIzQzOwomIzQzO3VzZSBrZXJuZWw6OnR5cGVzOjpGb3JlaWduT3duYWJsZTsKJiM0MzsKJiM0MzsvLy8gVHlwZXMgdGhhdCBzcGVjaWZ5IHRoZWlyIG93biB3YXkgb2YgcGVyZm9ybWluZyBhbGxvY2F0aW9uIGFuZCBkZXN0cnVjdGlvbi4gVHlwaWNhbGx5LCB0aGlzIHRyYWl0CiYjNDM7Ly8vIGlzIGltcGxlbWVudGVkIG9uIHR5cGVzIGZyb20gdGhlIEMgc2lkZS4KJiM0MzsvLy8KJiM0MzsvLy8gSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBbYE93bmVkJmx0O1NlbGYmZ3Q7YF0gcG9pbnRlciB0eXBlLgomIzQzOy8vLyAgLSBUaGlzIGlzIHVzZWZ1bCB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0byB0aWUgdGhlIGxpZmV0aW1lIG9mIGFuIG9iamVjdCByZWZlcmVuY2UgdG8gYW4gb3duZWQKJiM0MzsvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLgomIzQzOy8vLyAgLSBbYE93bmFibGVgXSB0eXBlcyBjYW4gZGVmaW5lIGN1c3RvbSBkcm9wIGxvZ2ljIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgb3duZWQgcmVmZXJlbmNlCiYjNDM7Ly8vICAgIG9mIHR5cGUgW2BPd25lZCZsdDtfJmd0O2BdIHBvaW50aW5nIHRvIHRoZSBvYmplY3QgaXMgZHJvcHBlZC4KJiM0MzsvLy8KJiM0MzsvLy8gTm90ZTogVGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudGluZywgYmVjYXVzZSBpdAomIzQzOy8vLyByZXByZXNlbnRzIGEgdW5pcXVlLCBvd25lZCByZWZlcmVuY2UuIElmIHJlZmVyZW5jZSBjb3VudGluZyAob24gdGhlIFJ1c3Qgc2lkZSkgaXMgcmVxdWlyZWQsCiYjNDM7Ly8vIFtgUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZC4gW2BPd25hYmxlUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpZiBjb252ZXJzaW9uCiYjNDM7Ly8vIGJldHdlZW4gdW5pcXVlIGFuZCBzaGFyZWQgKHJlZmVyZW5jZSBjb3VudGVkKSBvd25lcnNoaXAgaXMgbmVlZGVkLgomIzQzOy8vLwomIzQzOy8vLyAjIEV4YW1wbGVzCiYjNDM7Ly8vCiYjNDM7Ly8vIEEgbWluaW1hbCBleGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aCBbYE93bmVkYF0gbG9va3MgbGlrZQomIzQzOy8vLyB0aGlzOgomIzQzOy8vLwomIzQzOy8vLyBgYGAKJiM0MzsvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV0KJiM0MzsvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDsKJiM0MzsvLy8gIyB1c2UgY29yZTo6cHRyOjpOb25OdWxsOwomIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrOwomIzQzOy8vLyAjIHVzZSBrZXJuZWw6OmFsbG9jOjp7ZmxhZ3MsIGtib3g6OktCb3gsIEFsbG9jRXJyb3J9OwomIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGV9OwomIzQzOy8vLwomIzQzOy8vLyAvLyBMZXQmIzM5O3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLgomIzQzOy8vLyBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrISB7CiYjNDM7Ly8vICAgICAvLyBTQUZFVFk6IHdlIGNhbGwgYGluaXQoKWAgcmlnaHQgYmVsb3csIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLgomIzQzOy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXgmbHQ7dXNpemUmZ3Q7ID0gMDsKJiM0MzsvLy8gfQomIzQzOy8vLyAvLyBTQUZFVFk6IFdlIGNhbGwgYGluaXQoKWAgb25seSBvbmNlLCBoZXJlLgomIzQzOy8vLyB1bnNhZmUgeyBGT09fQUxMT0NfQ09VTlQuaW5pdCgpIH07CiYjNDM7Ly8vCiYjNDM7Ly8vIHN0cnVjdCBGb287CiYjNDM7Ly8vCiYjNDM7Ly8vIGltcGwgRm9vIHsKJiM0MzsvLy8gICAgIGZuIG5ldygpIC0mZ3Q7IFJlc3VsdCZsdDtPd25lZCZsdDtTZWxmJmd0OyZndDsgewomIzQzOy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzCiYjNDM7Ly8vICAgICAgICAgLy8gbm90IGFjdHVhbGx5IGEgQy1hbGxvY2F0ZWQgb2JqZWN0LgomIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoCiYjNDM7Ly8vICAgICAgICAgICAgIEZvbyB7fSwKJiM0MzsvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsCiYjNDM7Ly8vICAgICAgICAgKT87CiYjNDM7Ly8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTsKJiM0MzsvLy8gICAgICAgICAvLyBDb3VudCBuZXcgYWxsb2NhdGlvbgomIzQzOy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpICYjNDM7PSAxOwomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWToKJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuCiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC4KJiM0MzsvLy8gICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocmVzdWx0KSB9KQomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHsKJiM0MzsvLy8gICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3gmbHQ7U2VsZiZndDtgXSBpcyBzdGlsbCBhbGl2ZS4gV2UgY2FuIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSwgYXMKJiM0MzsvLy8gICAgICAgICAvLyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiYjNDM7Ly8vICAgICAgICAgZHJvcCh1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9KTsKJiM0MzsvLy8gICAgICAgICAvLyBDb3VudCByZWxlYXNlZCBhbGxvY2F0aW9uCiYjNDM7Ly8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgLT0gMTsKJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8gfQomIzQzOy8vLwomIzQzOy8vLyB7CiYjNDM7Ly8vICAgIGxldCBmb28gPSBGb286Om5ldygpPzsKJiM0MzsvLy8gICAgYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAxKTsKJiM0MzsvLy8gfQomIzQzOy8vLyAvLyBgZm9vYCBpcyBvdXQgb2Ygc2NvcGUgbm93LCBzbyB3ZSBleHBlY3Qgbm8gbGl2ZSBhbGxvY2F0aW9ucy4KJiM0MzsvLy8gYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAwKTsKJiM0MzsvLy8gIyBPazo6Jmx0OygpLCBFcnJvciZndDsoKCkpCiYjNDM7Ly8vIGBgYAomIzQzO3B1YiB0cmFpdCBPd25hYmxlIHsKJiM0MzsgICAgLy8vIFRlYXIgZG93biB0aGlzIGBPd25hYmxlYC4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBJbXBsZW1lbnRlcnMgb2YgYE93bmFibGVgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjbGVhbiB1cCB0aGUgdXNlIG9mIGBTZWxmYC4gVGhpcyBjYW4KJiM0MzsgICAgLy8vIGluY2x1ZGUgZnJlZWluZyB0aGUgdW5kZXJseWluZyBvYmplY3QuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gIyBTYWZldHkKJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhleSBoYXZlIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgdGhlIGBTZWxmYCBwb2ludGVkIHRvIGJ5IGB0aGlzYCwKJiM0MzsgICAgLy8vIGFuZCB0aGF0IHRoaXMgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLiBgdGhpc2AgbXVzdCBub3QgYmUgdXNlZAomIzQzOyAgICAvLy8gYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCwgYXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0IG1heSBoYXZlIGJlZW4gZnJlZWQuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gYHRoaXNgIGlzIHBpbm5lZCBhbmQgaW1wbGVtZW50ZXJzIG9mIHRoaXMgbWV0aG9kIG11c3Qgb2JzZXJ2ZSB0aGlzIGNvbnN0cmFpbnQuCiYjNDM7ICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspOwomIzQzO30KJiM0MzsKJiM0MzsvLy8gQSBtdXRhYmxlIHJlZmVyZW5jZSB0byBhbiBvd25lZCBgVGAuCiYjNDM7Ly8vCiYjNDM7Ly8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzCiYjNDM7Ly8vIGRyb3BwZWQuCiYjNDM7Ly8vCiYjNDM7Ly8vICMgSW52YXJpYW50cwomIzQzOy8vLwomIzQzOy8vLyAtIFVudGlsIGBUOjpyZWxlYXNlYCBpcyBjYWxsZWQsIHRoaXMgYE93bmVkJmx0O1QmZ3Q7YCBleGNsdXNpdmVseSBvd25zIHRoZSB1bmRlcmx5aW5nIGBUYC4KJiM0MzsvLy8gLSBUaGUgYFRgIHZhbHVlIGlzIHBpbm5lZC4KJiM0MztwdWIgc3RydWN0IE93bmVkJmx0O1Q6IE93bmFibGUmZ3Q7IHsKJiM0MzsgICAgcHRyOiBOb25OdWxsJmx0O1QmZ3Q7LAomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGUmZ3Q7IE93bmVkJmx0O1QmZ3Q7IHsKJiM0MzsgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BPd25lZGBdLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgb3ZlciBvd25lcnNoaXAgb2YgdGhlIHVuZGVybHlpbmcgb2JqZWN0LgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vICMgU2FmZXR5CiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0OgomIzQzOyAgICAvLy8gLSBgcHRyYCBwb2ludHMgdG8gYSB2YWxpZCBpbnN0YW5jZSBvZiBgVGAuCiYjNDM7ICAgIC8vLyAtIFVudGlsIGBUOjpyZWxlYXNlYCBpcyBjYWxsZWQsIHRoZSByZXR1cm5lZCBgT3duZWQmbHQ7VCZndDtgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGwmbHQ7VCZndDspIC0mZ3Q7IFNlbGYgewomIzQzOyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnQgd2Ugc2F0aXNmeSB0aGUgZmlyc3QgaW52YXJpYW50IG9mIGBTZWxmYC4KJiM0MzsgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uCiYjNDM7ICAgICAgICBTZWxmIHsgcHRyIH0KJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICAvLy8gQ29uc3VtZXMgdGhlIFtgT3duZWRgXSwgcmV0dXJuaW5nIGEgcmF3IHBvaW50ZXIuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGUKJiM0MzsgICAgLy8vIHVuZGVybHlpbmcgYFRgIGlzIHdpdGggdGhlIGNhbGxlci4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtJmd0OyBOb25OdWxsJmx0O1QmZ3Q7IHsKJiM0MzsgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHIKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkJmx0O1QmZ3Q7YC4KJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHB1YiBmbiBhc19waW5fbXV0KCZhbXA7bXV0IHNlbGYpIC0mZ3Q7IFBpbiZsdDsmYW1wO211dCBUJmd0OyB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCwgYW5kIHRoYXQgd2UgY2FuIHNhZmVseQomIzQzOyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuCiYjNDM7ICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9OwomIzQzOwomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSB0eXBlIGludmFyaWFudCBgVGAgaXMgcGlubmVkLgomIzQzOyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9CiYjNDM7ICAgIH0KJiM0Mzt9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYW4gW2BPd25lZCZsdDtUJmd0O2BdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU2VuZGBdLAomIzQzOy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BPd25lZCZsdDtUJmd0O2BdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFRgLgomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IE93bmFibGUgJiM0MzsgU2VuZCZndDsgU2VuZCBmb3IgT3duZWQmbHQ7VCZndDsge30KJiM0MzsKJiM0MzsvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBbYCZhbXA7T3duZWQmbHQ7VCZndDtgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFN5bmNgXSwKJiM0MzsvLyBiZWNhdXNlIG9mIHRoZSBvd25lcnNoaXAgaW52YXJpYW50LiBTZW5kaW5nIGFuIFtgJmFtcDtPd25lZCZsdDtUJmd0O2BdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYCZhbXA7VGAuCiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogT3duYWJsZSAmIzQzOyBTeW5jJmd0OyBTeW5jIGZvciBPd25lZCZsdDtUJmd0OyB7fQomIzQzOwomIzQzO2ltcGwmbHQ7VDogT3duYWJsZSZndDsgRGVyZWYgZm9yIE93bmVkJmx0O1QmZ3Q7IHsKJiM0MzsgICAgdHlwZSBUYXJnZXQgPSBUOwomIzQzOwomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgZm4gZGVyZWYoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO1NlbGY6OlRhcmdldCB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZC4KJiM0MzsgICAgICAgIHVuc2FmZSB7IHNlbGYucHRyLmFzX3JlZigpIH0KJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGUgJiM0MzsgVW5waW4mZ3Q7IERlcmVmTXV0IGZvciBPd25lZCZsdDtUJmd0OyB7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiBkZXJlZl9tdXQoJmFtcDttdXQgc2VsZikgLSZndDsgJmFtcDttdXQgU2VsZjo6VGFyZ2V0IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5CiYjNDM7ICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC4KJiM0MzsgICAgICAgIHVuc2FmZSB7IHNlbGYucHRyLmFzX211dCgpIH0KJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGUmZ3Q7IERyb3AgZm9yIE93bmVkJmx0O1QmZ3Q7IHsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIGZuIGRyb3AoJmFtcDttdXQgc2VsZikgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBleGlzdGVuY2Ugb2YgYCZhbXA7bXV0IHNlbGZgIHdlIGV4Y2x1c2l2ZWx5IG93biBgc2VsZmAgYW5kIHRoZSB1bmRlcmx5aW5nIGBUYC4gQXMKJiM0MzsgICAgICAgIC8vIHdlIGFyZSBkcm9wcGluZyBgc2VsZmAsIHdlIGNhbiB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIGBUYCB0byB0aGUgYHJlbGVhc2VgIG1ldGhvZC4KJiM0MzsgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07CiYjNDM7ICAgIH0KJiM0Mzt9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBXZSBkZXJpdmUgdGhlIHBvaW50ZXIgdG8gYFRgIGZyb20gYSB2YWxpZCBgVGAsIHNvIHRoZSByZXR1cm5lZAomIzQzOy8vIHBvaW50ZXIgc2F0aXNmeSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIGBUYC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPd25hYmxlJmd0OyBGb3JlaWduT3duYWJsZSBmb3IgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICBjb25zdCBGT1JFSUdOX0FMSUdOOiB1c2l6ZSA9IGNvcmU6Om1lbTo6YWxpZ25fb2Y6OiZsdDtUJmd0OygpOwomIzQzOwomIzQzOyAgICB0eXBlIEJvcnJvd2VkJmx0OyYjMzk7YSZndDsKJiM0MzsgICAgICAgID0gJmFtcDsmIzM5O2EgVAomIzQzOyAgICB3aGVyZQomIzQzOyAgICAgICAgU2VsZjogJiMzOTthOwomIzQzOyAgICB0eXBlIEJvcnJvd2VkTXV0Jmx0OyYjMzk7YSZndDsKJiM0MzsgICAgICAgID0gUGluJmx0OyZhbXA7JiMzOTthIG11dCBUJmd0OwomIzQzOyAgICB3aGVyZQomIzQzOyAgICAgICAgU2VsZjogJiMzOTthOwomIzQzOwomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgZm4gaW50b19mb3JlaWduKHNlbGYpIC0mZ3Q7ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCB7CiYjNDM7ICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpCiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHVuc2FmZSBmbiBmcm9tX2ZvcmVpZ24ocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC0mZ3Q7IFNlbGYgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIGNhbWUgZnJvbSBgaW50b19mb3JlaWduYCBhbmQgY2Fubm90IGJlIG51bGwuCiYjNDM7ICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwdHIuY2FzdCgpKSB9OwomIzQzOwomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IGNvbnRyYWN0LCBgcHRyYCB3YXMgcmV0dXJuZWQgYnkgYGludG9fZm9yZWlnbmAsIHdoaWNoIGdhdmUKJiM0MzsgICAgICAgIC8vIHVwIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgYSB2YWxpZCwgcGlubmVkIGBUYDsgd2UgcmV0YWtlIHRoYXQgb3duZXJzaGlwIGhlcmUuCiYjNDM7ICAgICAgICB1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocHRyKSB9CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHVuc2FmZSBmbiBib3Jyb3cmbHQ7JiMzOTthJmd0OyhwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLSZndDsgU2VsZjo6Qm9ycm93ZWQmbHQ7JiMzOTthJmd0OyB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYQomIzQzOyAgICAgICAgLy8gcmVmZXJlbmNlIGZvciBgJiMzOTthYC4KJiM0MzsgICAgICAgIHVuc2FmZSB7ICZhbXA7KnB0ci5jYXN0KCkgfQomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICB1bnNhZmUgZm4gYm9ycm93X211dCZsdDsmIzM5O2EmZ3Q7KHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtJmd0OyBTZWxmOjpCb3Jyb3dlZE11dCZsdDsmIzM5O2EmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhCiYjNDM7ICAgICAgICAvLyB1bmlxdWUgcmVmZXJlbmNlIGZvciBgJiMzOTthYC4KJiM0MzsgICAgICAgIGxldCBpbm5lciA9IHVuc2FmZSB7ICZhbXA7bXV0ICpwdHIuY2FzdCgpIH07CiYjNDM7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IFdlIG5ldmVyIG1vdmUgb3V0IG9mIGlubmVyLCBhbmQgd2UgZG8gbm90IGhhbmQgb3V0IG11dGFibGUKJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZXMgd2hlbiBgVDogIVVucGluYC4KJiM0MzsgICAgICAgIHVuc2FmZSB7IFBpbjo6bmV3X3VuY2hlY2tlZChpbm5lcikgfQomIzQzOyAgICB9CiYjNDM7fQomIzQzOwomIzQzOy8vLyBBIHRyYWl0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHdyYXBwZWQgaW4gZWl0aGVyIG9uZSBvZiB0aGUgcmVmZXJlbmNlIHR5cGVzIFtgT3duZWRgXSBhbmQKJiM0MzsvLy8gW2BBUmVmYF0uCiYjNDM7Ly8vCiYjNDM7Ly8vICMgRXhhbXBsZXMKJiM0MzsvLy8KJiM0MzsvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlUmVmQ291bnRlZGBdLCBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGgKJiM0MzsvLy8gW2BBUmVmYF0gYW5kIFtgT3duZWRgXSBsb29rcyBsaWtlIHRoaXM6CiYjNDM7Ly8vCiYjNDM7Ly8vIGBgYAomIzQzOy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXQomIzQzOy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsOwomIzQzOy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9OwomIzQzOy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGUsIE93bmFibGVSZWZDb3VudGVkfTsKJiM0MzsvLy8KJiM0MzsvLy8gLy8gQW4gaW50ZXJuYWxseSByZWZjb3VudGVkIHN0cnVjdCBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy4KJiM0MzsvLy8gLy8KJiM0MzsvLy8gLy8gIyBJbnZhcmlhbnRzCiYjNDM7Ly8vIC8vCiYjNDM7Ly8vIC8vIC0gYHJlZmNvdW50YCBpcyBhbHdheXMgbm9uLXplcm8gZm9yIGEgdmFsaWQgb2JqZWN0LgomIzQzOy8vLyAvLyAtIGByZWZjb3VudGAgaXMgJmd0OzEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC4KJiM0MzsvLy8gLy8KJiM0MzsvLy8gc3RydWN0IEZvbyB7CiYjNDM7Ly8vICAgICByZWZjb3VudDogQ2VsbCZsdDt1c2l6ZSZndDssCiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBGb28gewomIzQzOy8vLyAgICAgZm4gbmV3KCkgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1NlbGYmZ3Q7Jmd0OyB7CiYjNDM7Ly8vICAgICAgICAgLy8gV2UgYXJlIGp1c3QgdXNpbmcgYSBgS0JveGAgaGVyZSB0byBoYW5kbGUgdGhlIGFjdHVhbCBhbGxvY2F0aW9uLCBhcyBvdXIgYEZvb2AgaXMKJiM0MzsvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuCiYjNDM7Ly8vICAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBpbml0aWFsaXplIGByZWZjb3VudGAgdG8gMSwgc2F0aXNmeWluZyB0aGUgaW52YXJpYW50cy4KJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6bmV3KAomIzQzOy8vLyAgICAgICAgICAgICBGb28gewomIzQzOy8vLyAgICAgICAgICAgICAgICAgcmVmY291bnQ6IENlbGw6Om5ldygxKSwKJiM0MzsvLy8gICAgICAgICAgICAgfSwKJiM0MzsvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsCiYjNDM7Ly8vICAgICAgICAgKT87CiYjNDM7Ly8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6CiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UganVzdCBhbGxvY2F0ZWQgdGhlIGBTZWxmYCwgdGh1cyBpdCBpcyB2YWxpZCBhbmQgd2Ugb3duIGl0LgomIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuCiYjNDM7Ly8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSkKJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8gfQomIzQzOy8vLwomIzQzOy8vLyAvLyBTQUZFVFk6IFdlIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGVhY2ggdGltZSB0aGUgcmVzcGVjdGl2ZSBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIG9ubHkgZnJlZQomIzQzOy8vLyAvLyB0aGUgYEZvb2Agd2hlbiB0aGUgcmVmY291bnQgcmVhY2hlcyB6ZXJvLgomIzQzOy8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBGb28gewomIzQzOy8vLyAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKJiM0MzsvLy8gICAgICAgICBzZWxmLnJlZmNvdW50LnJlcGxhY2Uoc2VsZi5yZWZjb3VudC5nZXQoKSAmIzQzOyAxKTsKJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8KJiM0MzsvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IEJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLAomIzQzOy8vLyAgICAgICAgIC8vIGltcGx5aW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB2YWxpZC4KJiM0MzsvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyAmYW1wO3RoaXMuYXNfcmVmKCkucmVmY291bnQgfTsKJiM0MzsvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxOwomIzQzOy8vLyAgICAgICAgIGlmIG5ld19yZWZjb3VudCA9PSAwIHsKJiM0MzsvLy8gICAgICAgICAgICAgLy8gVGhlIGBGb29gIHdpbGwgYmUgZHJvcHBlZCB3aGVuIGBLQm94YCBnb2VzIG91dCBvZiBzY29wZS4KJiM0MzsvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94Jmx0O0ZvbyZndDtgXSBpcyBzdGlsbCBhbGl2ZSBhcyB0aGUgb2xkIHJlZmNvdW50IGlzIDEuIFdlIGNhbiBwYXNzCiYjNDM7Ly8vICAgICAgICAgICAgIC8vIG93bmVyc2hpcCB0byB0aGUgW2BLQm94YF0gYXMgYnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLAomIzQzOy8vLyAgICAgICAgICAgICAvLyB0aGUgYFNlbGZgIHdpbGwgbm8gbG9uZ2VyIGJlIHVzZWQgYnkgdGhlIGNhbGxlci4KJiM0MzsvLy8gICAgICAgICAgICAgdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfTsKJiM0MzsvLy8gICAgICAgICB9IGVsc2UgewomIzQzOy8vLyAgICAgICAgICAgICByZWZjb3VudC5yZXBsYWNlKG5ld19yZWZjb3VudCk7CiYjNDM7Ly8vICAgICAgICAgfQomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIGltcGwgT3duYWJsZVJlZkNvdW50ZWQgZm9yIEZvbyB7CiYjNDM7Ly8vICAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZiZsdDtTZWxmJmd0OykgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1NlbGYmZ3Q7LCBBUmVmJmx0O1NlbGYmZ3Q7Jmd0OyB7CiYjNDM7Ly8vICAgICAgICAgaWYgdGhpcy5yZWZjb3VudC5nZXQoKSA9PSAxIHsKJiM0MzsvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgYEZvb2AgaXMgc3RpbGwgYWxpdmUgYW5kIGhhcyBubyBvdGhlciBSdXN0IHJlZmVyZW5jZXMgYXMgdGhlIHJlZmNvdW50CiYjNDM7Ly8vICAgICAgICAgICAgIC8vIGlzIDEuCiYjNDM7Ly8vICAgICAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhBUmVmOjppbnRvX3Jhdyh0aGlzKSkgfSkKJiM0MzsvLy8gICAgICAgICB9IGVsc2UgewomIzQzOy8vLyAgICAgICAgICAgICBFcnIodGhpcykKJiM0MzsvLy8gICAgICAgICB9CiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vCiYjNDM7Ly8vICAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZCZsdDtTZWxmJmd0OykgLSZndDsgQVJlZiZsdDtTZWxmJmd0OyB7CiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOiBBbiBgT3duZWQmbHQ7Rm9vJmd0O2AgaG9sZHMgdGhlIHVuaXF1ZSByZWZlcmVuY2UgKHJlZmNvdW50IDEpLCB3aGljaCB3ZSB0cmFuc2ZlciB0bwomIzQzOy8vLyAgICAgICAgIC8vIHRoZSBuZXcgYEFSZWZgLgomIzQzOy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfQomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHsKJiM0MzsvLy8gICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IFVzaW5nIGBkZWNfcmVmKClgIGZyb20gW2BSZWZDb3VudGVkYF0gdG8gcmVsZWFzZSBpcyBva2F5LCBhcyB0aGUgcmVmY291bnQgaXMKJiM0MzsvLy8gICAgICAgICAvLyBhbHdheXMgMSBmb3IgYW4gW2BPd25lZCZsdDtGb28mZ3Q7YF0uCiYjNDM7Ly8vICAgICAgICAgdW5zYWZlIHsgRm9vOjpkZWNfcmVmKHRoaXMpIH07CiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gbGV0IGZvbyA9IEZvbzo6bmV3KCk/OwomIzQzOy8vLyBsZXQgZm9vID0gQVJlZjo6ZnJvbShmb28pOwomIzQzOy8vLyB7CiYjNDM7Ly8vICAgICBsZXQgYmFyID0gZm9vLmNsb25lKCk7CiYjNDM7Ly8vICAgICBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShiYXIpLmlzX2VycigpKTsKJiM0MzsvLy8gfQomIzQzOy8vLyBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShmb28pLmlzX29rKCkpOwomIzQzOy8vLyAjIE9rOjombHQ7KCksIEVycm9yJmd0OygoKSkKJiM0MzsvLy8gYGBgCiYjNDM7cHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICYjNDM7IE93bmFibGUgJiM0MzsgU2l6ZWQgewomIzQzOyAgICAvLy8gQ2hlY2tzIGlmIHRoZSBbYEFSZWZgXSBpcyB1bmlxdWUgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIFtgT3duZWRgXSBpZiB0aGF0IGlzIHRoZSBjYXNlLgomIzQzOyAgICAvLy8gT3RoZXJ3aXNlIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuCiYjNDM7ICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmJmx0O1NlbGYmZ3Q7KSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7U2VsZiZndDssIEFSZWYmbHQ7U2VsZiZndDsmZ3Q7OwomIzQzOwomIzQzOyAgICAvLy8gQ29udmVydHMgdGhlIFtgT3duZWRgXSBpbnRvIGFuIFtgQVJlZmBdLgomIzQzOyAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZCZsdDtTZWxmJmd0OykgLSZndDsgQVJlZiZsdDtTZWxmJmd0OzsKJiM0Mzt9CiYjNDM7CiYjNDM7aW1wbCZsdDtUOiBPd25hYmxlUmVmQ291bnRlZCZndDsgVHJ5RnJvbSZsdDtBUmVmJmx0O1QmZ3Q7Jmd0OyBmb3IgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICB0eXBlIEVycm9yID0gQVJlZiZsdDtUJmd0OzsKJiM0MzsgICAgLy8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIFtgQVJlZmBdIHRvIGFuIFtgT3duZWRgXSBieSBjYWxsaW5nCiYjNDM7ICAgIC8vLyBbYHRyeV9mcm9tX3NoYXJlZCgpYF0oT3duYWJsZVJlZkNvdW50ZWQ6OnRyeV9mcm9tX3NoYXJlZCkuIEluIGNhc2UgdGhlIFtgQVJlZmBdIGlzIG5vdAomIzQzOyAgICAvLy8gdW5pcXVlLCBpdCByZXR1cm5zIGFnYWluIGFuIFtgQVJlZmBdIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0LgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgZm4gdHJ5X2Zyb20oYjogQVJlZiZsdDtUJmd0OykgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1QmZ3Q7LCBTZWxmOjpFcnJvciZndDsgewomIzQzOyAgICAgICAgVDo6dHJ5X2Zyb21fc2hhcmVkKGIpCiYjNDM7ICAgIH0KJiM0Mzt9CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wYWdlLnJzIGIvcnVzdC9rZXJuZWwvcGFnZS5ycwppbmRleCAxYzA3OTZlYTIyOWYwLi4zMmRkMDMwYzgzMTU5IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9wYWdlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BhZ2UucnMKQEAgLTEyLDE2ICYjNDM7MTIsMTYgQEAKICAgICAgICAgY29kZTo6KiwKICAgICAgICAgUmVzdWx0LCAvLwogICAgIH0sCiYjNDM7ICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBPcGFxdWUsCiYjNDM7ICAgICAgICBPd25hYmxlLAomIzQzOyAgICAgICAgT3duZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLCAvLwogfTsKLXVzZSBjb3JlOjp7Ci0gICAgbWFya2VyOjpQaGFudG9tRGF0YSwKLSAgICBtZW06Ok1hbnVhbGx5RHJvcCwKLSAgICBvcHM6OkRlcmVmLAotICAgIHB0cjo6ewotICAgICAgICBzZWxmLAotICAgICAgICBOb25OdWxsLCAvLwotICAgIH0sIC8vCiYjNDM7dXNlIGNvcmU6OnB0cjo6ewomIzQzOyAgICBzZWxmLAomIzQzOyAgICBOb25OdWxsLCAvLwogfTsKIAogLy8vIEEgYml0d2lzZSBzaGlmdCBmb3IgdGhlIHBhZ2Ugc2l6ZS4KQEAgLTY1LDkzICYjNDM7NjUsMjkgQEAgcHViIGNvbnN0IGZuIHBhZ2VfYWxpZ24oYWRkcjogdXNpemUpIC0mZ3Q7IE9wdGlvbiZsdDt1c2l6ZSZndDsgewogICAgIFNvbWUoc3VtICZhbXA7IFBBR0VfTUFTSykKIH0KIAotLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS4KLS8vLwotLy8vIFRoaXMgdHlwZSBwcm92aWRlcyBhIGJvcnJvd2VkIHZlcnNpb24gb2YgYSBbYFBhZ2VgXSB0aGF0IGlzIG93bmVkIGJ5IHNvbWUgb3RoZXIgZW50aXR5LCBlLmcuIGEKLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uCi0vLy8KLS8vLyAjIEV4YW1wbGUKLS8vLwotLy8vIGBgYAotLy8vICMgdXNlIGtlcm5lbDo6e2JpbmRpbmdzLCBwcmVsdWRlOjoqfTsKLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9OwotLy8vICMgdXNlIGNvcmU6OnttZW06Ok1heWJlVW5pbml0LCBwdHIsIHB0cjo6Tm9uTnVsbCB9OwotLy8vCi0vLy8gZm4gYm9ycm93X3BhZ2UmbHQ7JiMzOTthJmd0Oyh2Ym94OiAmYW1wOyYjMzk7YSBtdXQgVkJveCZsdDtNYXliZVVuaW5pdCZsdDtbdTg7IFBBR0VfU0laRV0mZ3Q7Jmd0OykgLSZndDsgQm9ycm93ZWRQYWdlJmx0OyYjMzk7YSZndDsgewotLy8vICAgICBsZXQgcHRyID0gcHRyOjpmcm9tX3JlZigmYW1wOyoqdmJveCk7Ci0vLy8KLS8vLyAgICAgLy8gU0FGRVRZOiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS4KLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07Ci0vLy8KLS8vLyAgICAgLy8gU0FGRVRZOiBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWQKLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LgotLy8vICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTsKLS8vLwotLy8vICAgICAvLyBTQUZFVFk6Ci0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC4KLS8vLyAgICAgLy8gLSBgc2VsZi4wYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBgc2VsZmAuCi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfQotLy8vIH0KLS8vLwotLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6OiZsdDtbdTg7IFBBR0VfU0laRV0mZ3Q7OjpuZXdfdW5pbml0KEdGUF9LRVJORUwpPzsKLS8vLyBsZXQgcGFnZSA9IGJvcnJvd19wYWdlKCZhbXA7bXV0IHZib3gpOwotLy8vCi0vLy8gLy8gU0FGRVRZOiBUaGVyZSBpcyBubyBjb25jdXJyZW50IHJlYWQgb3Igd3JpdGUgdG8gdGhpcyBwYWdlLgotLy8vIHVuc2FmZSB7IHBhZ2UuZmlsbF96ZXJvX3JhdygwLCBQQUdFX1NJWkUpPyB9OwotLy8vICMgT2s6OiZsdDsoKSwgRXJyb3ImZ3Q7KCgpKQotLy8vIGBgYAotLy8vCi0vLy8gIyBJbnZhcmlhbnRzCi0vLy8KLS8vLyBUaGUgYm9ycm93ZWQgdW5kZXJseWluZyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBgJiMzOTthYC4KLS8vLwotLy8vIFtgVkJveGBdOiBrZXJuZWw6OmFsbG9jOjpWQm94Ci0vLy8gW2BWbWFsbG9jYF06IGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvYwotcHViIHN0cnVjdCBCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OyhNYW51YWxseURyb3AmbHQ7UGFnZSZndDssIFBoYW50b21EYXRhJmx0OyZhbXA7JiMzOTthIFBhZ2UmZ3Q7KTsKLQotaW1wbCZsdDsmIzM5O2EmZ3Q7IEJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7IHsKLSAgICAvLy8gQ29uc3RydWN0cyBhIFtgQm9ycm93ZWRQYWdlYF0gZnJvbSBhIHJhdyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC4KLSAgICAvLy8KLSAgICAvLy8gIyBTYWZldHkKLSAgICAvLy8KLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC4KLSAgICAvLy8gLSBgcHRyYCBtdXN0IHJlbWFpbiB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBgJiMzOTthYC4KLSAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbCZsdDtiaW5kaW5nczo6cGFnZSZndDspIC0mZ3Q7IFNlbGYgewotICAgICAgICBsZXQgcGFnZSA9IFBhZ2UgeyBwYWdlOiBwdHIgfTsKLQotICAgICAgICAvLyBJTlZBUklBTlQ6IFRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIGd1YXJhbnRlZSB0aGF0IGBwdHJgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lCi0gICAgICAgIC8vIGAmIzM5O2FgLgotICAgICAgICBTZWxmKE1hbnVhbGx5RHJvcDo6bmV3KHBhZ2UpLCBQaGFudG9tRGF0YSkKLSAgICB9Ci19Ci0KLWltcGwmbHQ7JiMzOTthJmd0OyBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlJmx0OyYjMzk7YSZndDsgewotICAgIHR5cGUgVGFyZ2V0ID0gUGFnZTsKLQotICAgIGZuIGRlcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtTZWxmOjpUYXJnZXQgewotICAgICAgICAmYW1wO3NlbGYuMAotICAgIH0KLX0KLQotLy8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIGltcGxlbWVudGF0aW9uIG9mCi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS4KJiM0MzsvLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcywgc3VjaCBhcwomIzQzOy8vLyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS4KIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHsKICAgICAvLy8gVGhlIFtgSXRlcmF0b3JgXSB0eXBlLCBlLmcuIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLgotICAgIHR5cGUgSXRlciZsdDsmIzM5O2EmZ3Q7OiBJdGVyYXRvciZsdDtJdGVtID0gQm9ycm93ZWRQYWdlJmx0OyYjMzk7YSZndDsmZ3Q7CiYjNDM7ICAgIHR5cGUgSXRlciZsdDsmIzM5O2EmZ3Q7OiBJdGVyYXRvciZsdDtJdGVtID0gJmFtcDsmIzM5O2EgUGFnZSZndDsKICAgICB3aGVyZQogICAgICAgICBTZWxmOiAmIzM5O2E7CiAKLSAgICAvLy8gUmV0dXJucyBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcyBvdmVyIGFsbCBwYWdlcyBvd25lZCBieSBgc2VsZmAuCiYjNDM7ICAgIC8vLyBSZXR1cm5zIGFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXSByZWZlcmVuY2VzIG92ZXIgYWxsIHBhZ2VzIG93bmVkIGJ5IGBzZWxmYC4KICAgICBmbiBwYWdlX2l0ZXIoJmFtcDttdXQgc2VsZikgLSZndDsgU2VsZjo6SXRlciZsdDsmIzM5O18mZ3Q7OwogfQogCi0vLy8gQSBwb2ludGVyIHRvIGEgcGFnZSB0aGF0IG93bnMgdGhlIHBhZ2UgYWxsb2NhdGlvbi4KJiM0MzsvLy8gQSBgc3RydWN0IHBhZ2VgLgomIzQzOy8vLwomIzQzOy8vLyBBIGBQYWdlYCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEgc2hhcmVkIHJlZmVyZW5jZSBvciB0aHJvdWdoIGFuIG93bmluZyBbYE93bmVkJmx0O1BhZ2UmZ3Q7YF07IHRoZSBsYXR0ZXIKJiM0MzsvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuCiAvLy8KIC8vLyAjIEludmFyaWFudHMKIC8vLwotLy8vIFRoZSBwb2ludGVyIGlzIHZhbGlkLCBhbmQgaGFzIG93bmVyc2hpcCBvdmVyIHRoZSBwYWdlLgomIzQzOy8vLyBUaGUgYFBhZ2VgIGlzIGJhY2tlZCBieSBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAuCiYjNDM7I1tyZXByKHRyYW5zcGFyZW50KV0KIHB1YiBzdHJ1Y3QgUGFnZSB7Ci0gICAgcGFnZTogTm9uTnVsbCZsdDtiaW5kaW5nczo6cGFnZSZndDssCiYjNDM7ICAgIHBhZ2U6IE9wYXF1ZSZsdDtiaW5kaW5nczo6cGFnZSZndDssCiB9CiAKIC8vIFNBRkVUWTogUGFnZXMgaGF2ZSBubyBsb2dpYyB0aGF0IHJlbGllcyBvbiB0aGVtIHN0YXlpbmcgb24gYSBnaXZlbiB0aHJlYWQsIHNvIG1vdmluZyB0aGVtIGFjcm9zcwpAQCAtMTg1LDE5ICYjNDM7MTIxLDIwIEBAIGltcGwgUGFnZSB7CiAgICAgLy8vICMgT2s6OiZsdDsoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvciZndDsoKCkpCiAgICAgLy8vIGBgYAogICAgICNbaW5saW5lXQotICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLSZndDsgUmVzdWx0Jmx0O1NlbGYsIEFsbG9jRXJyb3ImZ3Q7IHsKJiM0MzsgICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7U2VsZiZndDssIEFsbG9jRXJyb3ImZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBnZnBfZmxhZ3NgLCB0aGlzIGNhbGwgbWF5IHNsZWVwLiBPdGhlciB0aGFuIHRoYXQsIGl0CiAgICAgICAgIC8vIGlzIGFsd2F5cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2QuCiAgICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OmFsbG9jX3BhZ2VzKGZsYWdzLmFzX3JhdygpLCAwKSB9OwogICAgICAgICBsZXQgcGFnZSA9IE5vbk51bGw6Om5ldyhwYWdlKS5va19vcihBbGxvY0Vycm9yKT87Ci0gICAgICAgIC8vIElOVkFSSUFOVDogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseQotICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgUGFnZWAgb2JqZWN0LgotICAgICAgICBPayhTZWxmIHsgcGFnZSB9KQomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5CiYjNDM7ICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgT3duZWQmbHQ7UGFnZSZndDtgIG9iamVjdC4KJiM0MzsgICAgICAgIC8vIFNpbmNlIGBQYWdlYCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHBvaW50ZXIgZGlyZWN0bHkuCiYjNDM7ICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocGFnZS5jYXN0KCkpIH0pCiAgICAgfQogCiAgICAgLy8vIFJldHVybnMgYSByYXcgcG9pbnRlciB0byB0aGUgcGFnZS4KICAgICBwdWIgZm4gYXNfcHRyKCZhbXA7c2VsZikgLSZndDsgKm11dCBiaW5kaW5nczo6cGFnZSB7Ci0gICAgICAgIHNlbGYucGFnZS5hc19wdHIoKQomIzQzOyAgICAgICAgc2VsZi5wYWdlLmdldCgpCiAgICAgfQogCiAgICAgLy8vIEdldCB0aGUgbm9kZSBpZCBjb250YWluaW5nIHRoaXMgcGFnZS4KQEAgLTIwNyw2ICYjNDM7MTQ0LDIwIEBAIHB1YiBmbiBuaWQoJmFtcDtzZWxmKSAtJmd0OyBpMzIgewogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGFnZV90b19uaWQoc2VsZi5hc19wdHIoKSkgfQogICAgIH0KIAomIzQzOyAgICAvLy8gQ3JlYXRlIGEgYCZhbXA7UGFnZWAgZnJvbSBhIHJhdyBgc3RydWN0IHBhZ2VgIHBvaW50ZXIuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gIyBTYWZldHkKJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBgcHRyYCBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkIHJlZmVyZW5jZSB3aXRoIGEgbGlmZXRpbWUgb2YgYCYjMzk7YWAuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3Jmx0OyYjMzk7YSZndDsocHRyOiAqY29uc3QgYmluZGluZ3M6OnBhZ2UpIC0mZ3Q7ICZhbXA7JiMzOTthIFNlbGYgewomIzQzOyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgcmVmZXJzIHRvIGEgdmFsaWQgYHN0cnVjdCBwYWdlYCwgc28KJiM0MzsgICAgICAgIC8vIHRoZSByZXR1cm5lZCByZWZlcmVuY2UgdXBob2xkcyB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFBhZ2VgLgomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyBub3QgbnVsbCBhbmQgaXMgY29udmVydGlibGUgdG8gYSBzaGFyZWQKJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZS4KJiM0MzsgICAgICAgIHVuc2FmZSB7ICZhbXA7KnB0ci5jYXN0KCkgfQomIzQzOyAgICB9CiYjNDM7CiAgICAgLy8vIFJ1bnMgYSBwaWVjZSBvZiBjb2RlIHdpdGggdGhpcyBwYWdlIG1hcHBlZCB0byBhbiBhZGRyZXNzLgogICAgIC8vLwogICAgIC8vLyBUaGUgcGFnZSBpcyB1bm1hcHBlZCB3aGVuIHRoaXMgY2FsbCByZXR1cm5zLgpAQCAtMzczLDEwICYjNDM7MzI0LDExIEBAIHB1YiB1bnNhZmUgZm4gY29weV9mcm9tX3VzZXJfc2xpY2VfcmF3KAogICAgIH0KIH0KIAotaW1wbCBEcm9wIGZvciBQYWdlIHsKJiM0MztpbXBsIE93bmFibGUgZm9yIFBhZ2UgewogICAgICNbaW5saW5lXQotICAgIGZuIGRyb3AoJmFtcDttdXQgc2VsZikgewotICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZSBpdC4KLSAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyhzZWxmLnBhZ2UuYXNfcHRyKCksIDApIH07CiYjNDM7ICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZQomIzQzOyAgICAgICAgLy8gaXQuIFNpbmNlIFBhZ2UgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSByYXcgcG9pbnRlciBkaXJlY3RseS4KJiM0MzsgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXModGhpcy5hc19wdHIoKS5jYXN0KCksIDApIH07CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzCmluZGV4IDUwNzFjYWU2NTQzZmQuLmVhOWVmOTljZWNiMDcgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BjaS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wY2kucnMKQEAgLTE5LDYgJiM0MzsxOSwxMCBAQAogICAgIH0sCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OkNTdHIsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsCiAgICAgVGhpc01vZHVsZSwgLy8KIH07CkBAIC00ODEsNyAmIzQzOzQ4NSw3IEBAIHVuc2FmZSBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBkZXZpY2U6OkFzQnVzRGV2aWNlJmx0O0N0eCZndDsgZm9yIERldmljZSZsdDtDdHgmZ3Q7CiBpbXBsJmx0OyYjMzk7YSZndDsgY3JhdGU6OmRtYTo6RGV2aWNlJmx0OyYjMzk7YSZndDsgZm9yIERldmljZSZsdDtkZXZpY2U6OkNvcmUmbHQ7JiMzOTthJmd0OyZndDsge30KIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLgogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGNpX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTsKQEAgLTQ5Myw2ICYjNDM7NDk3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzCmluZGV4IDk3OWE5NzE4ZjE1M2QuLjA2N2Y2OGI5OWU4YzUgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycwpAQCAtNyw3ICYjNDM7NywxNCBAQAogLy8hIEMgaGVhZGVyOiBbYGluY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaCkgYW5kCiAvLyEgW2BpbmNsdWRlL2xpbnV4L3BpZC5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZC5oKQogCi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdHlwZXM6Ok9wYXF1ZX07CiYjNDM7dXNlIGNyYXRlOjp7CiYjNDM7ICAgIGJpbmRpbmdzLAomIzQzOyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE9wYXF1ZSwgLy8KJiM0MzsgICAgfSwgLy8KJiM0Mzt9OwogdXNlIGNvcmU6OnB0cjsKIAogLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBwaWRfbmFtZXNwYWNlYC4gVGhyZWFkIHNhZmUuCkBAIC00MSw3ICYjNDM7NDgsNyBAQCBwdWIgdW5zYWZlIGZuIGZyb21fcHRyJmx0OyYjMzk7YSZndDsocHRyOiAqY29uc3QgYmluZGluZ3M6OnBpZF9uYW1lc3BhY2UpIC0mZ3Q7ICZhbXA7JiMzOTthIFNlbGYgewogfQogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgUGlkTmFtZXNwYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2UgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTU1LDYgJiM0Mzs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtQaWROYW1lc3BhY2UmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtQaWROYW1lc3BhY2UmZ3Q7YCBmcm9tCiYjNDM7Ly8gYSBgJmFtcDtQaWROYW1lc3BhY2VgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fQomIzQzOwogLy8gU0FGRVRZOgogLy8gLSBgUGlkTmFtZXNwYWNlOjpkZWNfcmVmYCBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KIC8vIC0gSXQgaXMgb2theSB0byBzZW5kIG93bmVyc2hpcCBvZiBgUGlkTmFtZXNwYWNlYCBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzCmluZGV4IGQ0MTU1NWE0YjMxZDIuLmE0ZGRhYTFjYzNhNDAgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzCkBAIC0yNCw2ICYjNDM7MjQsMTAgQEAKICAgICB9LAogICAgIG9mLAogICAgIHByZWx1ZGU6OiosCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsCiAgICAgVGhpc01vZHVsZSwgLy8KIH07CkBAIC01MTksNyAmIzQzOzUyMyw3IEBAIHB1YiBmbiBvcHRpb25hbF9pcnFfYnlfbmFtZSgmYW1wO3NlbGYsIG5hbWU6ICZhbXA7Q1N0cikgLSZndDsgUmVzdWx0Jmx0O0lycVJlcXVlc3QmbHQ7JiMzOTtfJmd0OyZndDsgewogaW1wbCZsdDsmIzM5O2EmZ3Q7IGNyYXRlOjpkbWE6OkRldmljZSZsdDsmIzM5O2EmZ3Q7IGZvciBEZXZpY2UmbHQ7ZGV2aWNlOjpDb3JlJmx0OyYjMzk7YSZndDsmZ3Q7IHt9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTsKQEAgLTUzMSw2ICYjNDM7NTM1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3B3bS5ycyBiL3J1c3Qva2VybmVsL3B3bS5ycwppbmRleCA2YzlkNjY3MDA5ZWY3Li4yZDFjZDc0ZGQ5OGUxIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9wd20ucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcHdtLnJzCkBAIC0xMyw3ICYjNDM7MTMsMTEgQEAKICAgICBkZXZyZXMsCiAgICAgZXJyb3I6OntzZWxmLCB0b19yZXN1bHR9LAogICAgIHByZWx1ZGU6OiosCi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy8KIH07CiB1c2UgY29yZTo6ewpAQCAtNjI5LDcgJiM0Mzs2MzMsNyBAQCBwdWIgZm4gbmV3Jmx0OyYjMzk7YSZndDsoCiB9CiAKIC8vIFNBRkVUWTogSW1wbGVtZW50cyByZWZjb3VudGluZyBmb3IgYENoaXBgIHVzaW5nIHRoZSBlbWJlZGRlZCBgc3RydWN0IGRldmljZWAuCi11bnNhZmUgaW1wbCZsdDtUOiBQd21PcHMmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXAmbHQ7VCZndDsgewomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFB3bU9wcyZndDsgUmVmQ291bnRlZCBmb3IgQ2hpcCZsdDtUJmd0OyB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBgc2VsZi4wLmdldCgpYCBwb2ludHMgdG8gYSB2YWxpZCBgcHdtX2NoaXBgIGJlY2F1c2UgYHNlbGZgIGV4aXN0cy4KQEAgLTY0Nyw2ICYjNDM7NjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtDaGlwJmx0O1QmZ3Q7Jmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7Q2hpcCZsdDtUJmd0OyZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0NoaXAmbHQ7VCZndDtgLgomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFB3bU9wcyZndDsgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ2hpcCZsdDtUJmd0OyB7fQomIzQzOwogLy8gU0FGRVRZOiBgQ2hpcGAgaXMgYSB3cmFwcGVyIGFyb3VuZCBgKm11dCBiaW5kaW5nczo6cHdtX2NoaXBgLiBUaGUgdW5kZXJseWluZyBDCiAvLyBzdHJ1Y3R1cmUmIzM5O3Mgc3RhdGUgaXMgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSBrZXJuZWwmIzM5O3MgZGV2aWNlIG1vZGVsCiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMKaW5kZXggYjcyMWIyZTAwYjk4Ni4uZTZmZmU3YzY1MGMzOSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5ycwpAQCAtMTEsNyAmIzQzOzExLDcgQEAKIC8vISB1bmRlcmx5aW5nIG9iamVjdCwgYnV0IHRoaXMgcmVmY291bnQgaXMgaW50ZXJuYWwgdG8gdGhlIG9iamVjdC4gSXQgZXNzZW50aWFsbHkgaXMgYSBSdXN0CiAvLyEgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBnZXRfYCBhbmQgYHB1dF9gIHBhdHRlcm4gdXNlZCBpbiBDIGZvciByZWZlcmVuY2UgY291bnRpbmcuCiAvLyEKLS8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWYmbHQ7TXlUeXBlJmd0O2BdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BBbHdheXNSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXQKJiM0MzsvLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmJmx0O015VHlwZSZndDtgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0CiAvLyEgZm9yIGFjY2Vzc2luZyB0aGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IG9mIGFuIG9iamVjdCBvZiB0aGUgYE15VHlwZWAgdHlwZS4KIC8vIQogLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmMKQEAgLTIzLDI2ICYjNDM7MjMsMzUgQEAKICAgICBvcHM6OkRlcmVmLAogICAgIHB0cjo6Tm9uTnVsbCwgLy8KIH07CiYjNDM7dXNlIGtlcm5lbDo6dHlwZXM6OnsKJiM0MzsgICAgT3duYWJsZVJlZkNvdW50ZWQsCiYjNDM7ICAgIE93bmVkLCAvLwomIzQzO307CiAKLS8vLyBUeXBlcyB0aGF0IGFyZSBfYWx3YXlzXyByZWZlcmVuY2UgY291bnRlZC4KJiM0MzsvLy8gVHlwZXMgdGhhdCBhcmUgaW50ZXJuYWxseSByZWZlcmVuY2UgY291bnRlZC4KIC8vLwogLy8vIEl0IGFsbG93cyBzdWNoIHR5cGVzIHRvIGRlZmluZSB0aGVpciBvd24gY3VzdG9tIHJlZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBmdW5jdGlvbnMuCi0vLy8gQWRkaXRpb25hbGx5LCBpdCBhbGxvd3MgdXNlcnMgdG8gY29udmVydCBmcm9tIGEgc2hhcmVkIHJlZmVyZW5jZSBgJmFtcDtUYCB0byBhbiBvd25lZCByZWZlcmVuY2UKLS8vLyBbYEFSZWYmbHQ7VCZndDtgXS4KIC8vLwogLy8vIFRoaXMgaXMgdXN1YWxseSBpbXBsZW1lbnRlZCBieSB3cmFwcGVycyB0byBleGlzdGluZyBzdHJ1Y3R1cmVzIG9uIHRoZSBDIHNpZGUgb2YgdGhlIGNvZGUuIEZvcgogLy8vIFJ1c3QgY29kZSwgdGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIHVzZSBbYEFyY2BdKGNyYXRlOjpzeW5jOjpBcmMpIHRvIGNyZWF0ZSByZWZlcmVuY2UtY291bnRlZAogLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuCiAvLy8KJiM0MzsvLy8gTm90ZTogSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW4gW2BBUmVmJmx0O1NlbGYmZ3Q7YF0uIEl0IHJlcXVpcmVzIGFuCiYjNDM7Ly8vIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBhbmQgcHJvdmlkZXMgb25seSBzaGFyZWQgcmVmZXJlbmNlcy4gSWYgdW5pcXVlIHJlZmVyZW5jZXMgYXJlIHJlcXVpcmVkCiYjNDM7Ly8vIFtgT3duYWJsZWBdKGNyYXRlOjp0eXBlczo6T3duYWJsZSkgc2hvdWxkIGJlIGltcGxlbWVudGVkIHdoaWNoIGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuCiYjNDM7Ly8vIFtgT3duZWQmbHQ7U2VsZiZndDtgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdAomIzQzOy8vLyBbYE93bmFibGVSZWZDb3VudGVkYF0gYWxsb3dzIHRvIGNvbnZlcnQgYmV0d2VlbiB1bmlxdWUgYW5kCiYjNDM7Ly8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWQmbHQ7U2VsZiZndDtgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKSBhbmQKJiM0MzsvLy8gW2BBUmVmJmx0O1NlbGYmZ3Q7YF0pLgomIzQzOy8vLwogLy8vICMgU2FmZXR5CiAvLy8KIC8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBpbmNyZW1lbnRzIHRvIHRoZSByZWZlcmVuY2UgY291bnQga2VlcCB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeQogLy8vIGF0IGxlYXN0IHVudGlsIG1hdGNoaW5nIGRlY3JlbWVudHMgYXJlIHBlcmZvcm1lZC4KIC8vLwogLy8vIEltcGxlbWVudGVycyBtdXN0IGFsc28gZW5zdXJlIHRoYXQgYWxsIGluc3RhbmNlcyBhcmUgcmVmZXJlbmNlLWNvdW50ZWQuIChPdGhlcndpc2UgdGhleQotLy8vIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGhvbm91ciB0aGUgcmVxdWlyZW1lbnQgdGhhdCBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSBrZWVwIHRoZSBvYmplY3QKLS8vLyBhbGl2ZS4pCi1wdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQgewomIzQzOy8vLyB3b24mIzM5O3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0IGFsaXZlLikKJiM0MztwdWIgdW5zYWZlIHRyYWl0IFJlZkNvdW50ZWQgewogICAgIC8vLyBJbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIG9iamVjdC4KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZik7CiAKQEAgLTU1LDExICYjNDM7NjQsMjcgQEAgcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHsKICAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIHdhcyBhIHByZXZpb3VzIG1hdGNoaW5nIGluY3JlbWVudCB0byB0aGUgcmVmZXJlbmNlIGNvdW50LAogICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heQogICAgIC8vLyByZXN1bHQgaW4gdGhlIG9iamVjdCBiZWluZyBmcmVlZCksIHVubGVzcyB0aGUgY2FsbGVyIG93bnMgYW5vdGhlciBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50Ci0gICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscwotICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS4KJiM0MzsgICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscyBbYFJlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS4KICAgICB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspOwogfQogCiYjNDM7Ly8vIEFsd2F5cyByZWZlcmVuY2UtY291bnRlZCB0eXBlLgomIzQzOy8vLwomIzQzOy8vLyBJdCBhbGxvd3MgZGVyaXZpbmcgYSBjb3VudGVkIHJlZmVyZW5jZSBbYEFSZWYmbHQ7VCZndDtgXSBmcm9tIGEgYCZhbXA7VGAuCiYjNDM7Ly8vCiYjNDM7Ly8vIFRoaXMgcHJvdmlkZXMgc29tZSBjb252ZW5pZW5jZSwgYnV0IGl0IGFsbG93cyAmIzM0O2VzY2FwaW5nJiMzNDsgYm9ycm93IGNoZWNrcyBvbiBgJmFtcDtUYC4gQXMgaXQKJiM0MzsvLy8gY29tcGxpY2F0ZXMgYXR0ZW1wdHMgdG8gZW5zdXJlIHRoYXQgYSByZWZlcmVuY2UgdG8gVCBpcyB1bmlxdWUsIGl0IGlzIG9wdGlvbmFsIHRvIHByb3ZpZGUgZm9yCiYjNDM7Ly8vIFtgUmVmQ291bnRlZGBdIHR5cGVzLiBTZWUgKlNhZmV0eSogYmVsb3cuCiYjNDM7Ly8vCiYjNDM7Ly8vICMgU2FmZXR5CiYjNDM7Ly8vCiYjNDM7Ly8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IG5vIHNhZmV0eSBpbnZhcmlhbnRzIGFyZSB2aW9sYXRlZCBieSB1cGdyYWRpbmcgYW4gYCZhbXA7VGAgdG8gYW4KJiM0MzsvLy8gW2BBUmVmJmx0O1QmZ3Q7YF0uIEluIHBhcnRpY3VsYXIgdGhhdCBpbXBsaWVzIFtgQWx3YXlzUmVmQ291bnRlZGBdIGFuZCBbYGNyYXRlOjp0eXBlczo6T3duYWJsZWBdCiYjNDM7Ly8vIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBmb3IgdGhlIHNhbWUgdHlwZSwgYXMgdGhpcyB3b3VsZCBhbGxvdyB2aW9sYXRpbmcgdGhlIHVuaXF1ZW5lc3MgZ3VhcmFudGVlCiYjNDM7Ly8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZCZsdDtUJmd0O2BdIGJ5IGRlcmVmZXJlbmNpbmcgaXQgaW50byBhbiBgJmFtcDtUYCBhbmQgb2J0YWluaW5nIGFuIFtgQVJlZmBdIGZyb20KJiM0MzsvLy8gdGhhdC4KJiM0MztwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQ6IFJlZkNvdW50ZWQge30KJiM0MzsKIC8vLyBBbiBvd25lZCByZWZlcmVuY2UgdG8gYW4gYWx3YXlzLXJlZmVyZW5jZS1jb3VudGVkIG9iamVjdC4KIC8vLwogLy8vIFRoZSBvYmplY3QmIzM5O3MgcmVmZXJlbmNlIGNvdW50IGlzIGF1dG9tYXRpY2FsbHkgZGVjcmVtZW50ZWQgd2hlbiBhbiBpbnN0YW5jZSBvZiBbYEFSZWZgXSBpcwpAQCAtNzAsNyAmIzQzOzk1LDcgQEAgcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHsKIC8vLwogLy8vIFRoZSBwb2ludGVyIHN0b3JlZCBpbiBgcHRyYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgW2BBUmVmYF0gaW5zdGFuY2UuIEluCiAvLy8gcGFydGljdWxhciwgdGhlIFtgQVJlZmBdIGluc3RhbmNlIG93bnMgYW4gaW5jcmVtZW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdCYjMzk7cyByZWZlcmVuY2UgY291bnQuCi1wdWIgc3RydWN0IEFSZWYmbHQ7VDogQWx3YXlzUmVmQ291bnRlZCZndDsgewomIzQzO3B1YiBzdHJ1Y3QgQVJlZiZsdDtUOiBSZWZDb3VudGVkJmd0OyB7CiAgICAgcHRyOiBOb25OdWxsJmx0O1QmZ3Q7LAogICAgIF9wOiBQaGFudG9tRGF0YSZsdDtUJmd0OywKIH0KQEAgLTc5LDE5ICYjNDM7MTA0LDE5IEBAIHB1YiBzdHJ1Y3QgQVJlZiZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyB7CiAvLyBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGAmYW1wO1RgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSwgaXQgbmVlZHMKIC8vIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGFuIGBBUmVmJmx0O1QmZ3Q7YCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGEKIC8vIG11dGFibGUgcmVmZXJlbmNlLCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuCi11bnNhZmUgaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZCZndDsgU2VuZCBmb3IgQVJlZiZsdDtUJmd0OyB7fQomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFJlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kJmd0OyBTZW5kIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiAKIC8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGAmYW1wO0FSZWYmbHQ7VCZndDtgIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIGBTeW5jYAogLy8gYmVjYXVzZSBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGAmYW1wO1RgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSwKIC8vIGl0IG5lZWRzIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGEgYCZhbXA7QVJlZiZsdDtUJmd0O2AgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW4KIC8vIGBBUmVmJmx0O1QmZ3Q7YCBvbiB0aGF0IHRocmVhZCwgc28gdGhlIHRocmVhZCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGEgbXV0YWJsZSByZWZlcmVuY2UsIGZvcgogLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuCi11bnNhZmUgaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZCZndDsgU3luYyBmb3IgQVJlZiZsdDtUJmd0OyB7fQomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFJlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kJmd0OyBTeW5jIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiAKIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLgotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyBVbnBpbiBmb3IgQVJlZiZsdDtUJmd0OyB7fQomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCZndDsgVW5waW4gZm9yIEFSZWYmbHQ7VCZndDsge30KIAotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyBBUmVmJmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IFJlZkNvdW50ZWQmZ3Q7IEFSZWYmbHQ7VCZndDsgewogICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFtgQVJlZmBdLgogICAgIC8vLwogICAgIC8vLyBJdCB0YWtlcyBvdmVyIGFuIGluY3JlbWVudCBvZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4KQEAgLTEyMCwxOSAmIzQzOzE0NSwyMSBAQCBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbCZsdDtUJmd0OykgLSZndDsgU2VsZiB7CiAgICAgLy8vCiAgICAgLy8vIGBgYAogICAgIC8vLyB1c2UgY29yZTo6cHRyOjpOb25OdWxsOwotICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07CiYjNDM7ICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07CiAgICAgLy8vCiAgICAgLy8vIHN0cnVjdCBFbXB0eSB7fQogICAgIC8vLwotICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy4KLSAgICAvLy8gdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRW1wdHkgewomIzQzOyAgICAvLy8gLy8gU0FGRVRZOiBUaGUgYFJlZkNvdW50ZWRgIGltcGxlbWVudGF0aW9uIGZvciBgRW1wdHlgIGRvZXMgbm90IGNvdW50IHJlZmVyZW5jZXMgYW5kIG5ldmVyCiYjNDM7ICAgIC8vLyAvLyBmcmVlcyB0aGUgdW5kZXJseWluZyBvYmplY3QuIFRodXMgd2UgY2FuIGFjdCBhcyBvd25pbmcgYW4gaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudCBmb3IKJiM0MzsgICAgLy8vIC8vIHRoZSBvYmplY3QgdGhhdCB3ZSBwYXNzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGBBUmVmYC4KJiM0MzsgICAgLy8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEVtcHR5IHsKICAgICAvLy8gICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7fQogICAgIC8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYoX29iajogTm9uTnVsbCZsdDtTZWxmJmd0Oykge30KICAgICAvLy8gfQogICAgIC8vLwogICAgIC8vLyBsZXQgbXV0IGRhdGEgPSBFbXB0eSB7fTsKICAgICAvLy8gbGV0IHB0ciA9IE5vbk51bGw6OiZsdDtFbXB0eSZndDs6Om5ldygmYW1wO211dCBkYXRhKS51bndyYXAoKTsKLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uCiYjNDM7ICAgIC8vLyAvLyBTQUZFVFk6IFdlIGtlZXAgYGRhdGFgIGFyb3VuZCBsb25nZXIgdGhhbiB0aGUgYEFSZWZgLgogICAgIC8vLyBsZXQgZGF0YV9yZWY6IEFSZWYmbHQ7RW1wdHkmZ3Q7ID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9OwogICAgIC8vLyBsZXQgcmF3X3B0cjogTm9uTnVsbCZsdDtFbXB0eSZndDsgPSBBUmVmOjppbnRvX3JhdyhkYXRhX3JlZik7CiAgICAgLy8vCkBAIC0xNDMsNyAmIzQzOzE3MCw3IEBAIHB1YiBmbiBpbnRvX3JhdyhtZTogU2VsZikgLSZndDsgTm9uTnVsbCZsdDtUJmd0OyB7CiAgICAgfQogfQogCi1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IENsb25lIGZvciBBUmVmJmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IFJlZkNvdW50ZWQmZ3Q7IENsb25lIGZvciBBUmVmJmx0O1QmZ3Q7IHsKICAgICBmbiBjbG9uZSgmYW1wO3NlbGYpIC0mZ3Q7IFNlbGYgewogICAgICAgICBzZWxmLmluY19yZWYoKTsKICAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IGluY3JlbWVudGVkIHRoZSByZWZjb3VudCBhYm92ZS4KQEAgLTE1MSw3ICYjNDM7MTc4LDcgQEAgZm4gY2xvbmUoJmFtcDtzZWxmKSAtJmd0OyBTZWxmIHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQWx3YXlzUmVmQ291bnRlZCZndDsgRGVyZWYgZm9yIEFSZWYmbHQ7VCZndDsgewomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCZndDsgRGVyZWYgZm9yIEFSZWYmbHQ7VCZndDsgewogICAgIHR5cGUgVGFyZ2V0ID0gVDsKIAogICAgIGZuIGRlcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtTZWxmOjpUYXJnZXQgewpAQCAtMTY4LDcgJiM0MzsxOTUsMTQgQEAgZm4gZnJvbShiOiAmYW1wO1QpIC0mZ3Q7IFNlbGYgewogICAgIH0KIH0KIAotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyBEcm9wIGZvciBBUmVmJmx0O1QmZ3Q7IHsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGVSZWZDb3VudGVkJmd0OyBGcm9tJmx0O093bmVkJmx0O1QmZ3Q7Jmd0OyBmb3IgQVJlZiZsdDtUJmd0OyB7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiBmcm9tKGI6IE93bmVkJmx0O1QmZ3Q7KSAtJmd0OyBTZWxmIHsKJiM0MzsgICAgICAgIFQ6OmludG9fc2hhcmVkKGIpCiYjNDM7ICAgIH0KJiM0Mzt9CiYjNDM7CiYjNDM7aW1wbCZsdDtUOiBSZWZDb3VudGVkJmd0OyBEcm9wIGZvciBBUmVmJmx0O1QmZ3Q7IHsKICAgICBmbiBkcm9wKCZhbXA7bXV0IHNlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBgQVJlZmAgb3ducyB0aGUgcmVmZXJlbmNlIHdlJiMzOTtyZSBhYm91dCB0bwogICAgICAgICAvLyBkZWNyZW1lbnQuCkBAIC0xNzgsMTkgJiM0MzsyMTIsMTkgQEAgZm4gZHJvcCgmYW1wO211dCBzZWxmKSB7CiAKIGltcGwmbHQ7VCwgVSZndDsgUGFydGlhbEVxJmx0O0FSZWYmbHQ7VSZndDsmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7CiB3aGVyZQotICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxJmx0O1UmZ3Q7LAotICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxJmx0O1UmZ3Q7LAomIzQzOyAgICBVOiBSZWZDb3VudGVkLAogewogICAgICNbaW5saW5lXQogICAgIGZuIGVxKCZhbXA7c2VsZiwgb3RoZXI6ICZhbXA7QVJlZiZsdDtVJmd0OykgLSZndDsgYm9vbCB7CiAgICAgICAgIFQ6OmVxKCZhbXA7KipzZWxmLCAmYW1wOyoqb3RoZXIpCiAgICAgfQogfQotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IEVxJmd0OyBFcSBmb3IgQVJlZiZsdDtUJmd0OyB7fQomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCAmIzQzOyBFcSZndDsgRXEgZm9yIEFSZWYmbHQ7VCZndDsge30KIAogaW1wbCZsdDtULCBVJmd0OyBQYXJ0aWFsRXEmbHQ7JmFtcDsmIzM5O18gVSZndDsgZm9yIEFSZWYmbHQ7VCZndDsKIHdoZXJlCi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXEmbHQ7VSZndDssCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQgJiM0MzsgUGFydGlhbEVxJmx0O1UmZ3Q7LAogewogICAgICNbaW5saW5lXQogICAgIGZuIGVxKCZhbXA7c2VsZiwgb3RoZXI6ICZhbXA7JmFtcDtVKSAtJmd0OyBib29sIHsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3Rhc2sucnMgYi9ydXN0L2tlcm5lbC90YXNrLnJzCmluZGV4IDM4MjczZjRlZWRiNTEuLjYyNTk0MzBiMGNhMzEgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3Rhc2sucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvdGFzay5ycwpAQCAtMTAsNyAmIzQzOzEwLDEyIEBACiAgICAgcGlkX25hbWVzcGFjZTo6UGlkTmFtZXNwYWNlLAogICAgIHByZWx1ZGU6OiosCiAgICAgc3luYzo6YXJlZjo6QVJlZiwKLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sCiYjNDM7ICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgTm90VGhyZWFkU2FmZSwKJiM0MzsgICAgICAgIE9wYXF1ZSwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiB9OwogdXNlIGNvcmU6OnsKICAgICBvcHM6OkRlcmVmLApAQCAtMzQ3LDcgJiM0MzszNTIsNyBAQCBwdWIgZm4gZ3JvdXBfbGVhZGVyKCZhbXA7c2VsZikgLSZndDsgJmFtcDtUYXNrIHsKIH0KIAogLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBUYXNrYCBpcyBhbHdheXMgcmVmY291bnRlZC4KLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBUYXNrIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uCkBAIC0zNjEsNiAmIzQzOzM2NiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7VGFzayZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO1Rhc2tgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge30KJiM0MzsKIGltcGwgUGFydGlhbEVxIGZvciBUYXNrIHsKICAgICAjW2lubGluZV0KICAgICBmbiBlcSgmYW1wO3NlbGYsIG90aGVyOiAmYW1wO1NlbGYpIC0mZ3Q7IGJvb2wgewpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdHlwZXMucnMgYi9ydXN0L2tlcm5lbC90eXBlcy5ycwppbmRleCBhYzMxNmZkN2I1MzhmLi42YWE3NjA5NTJjYjYzIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC90eXBlcy5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90eXBlcy5ycwpAQCAtMTUsNiAmIzQzOzE1LDE4IEBACiBwdWIgbW9kIGZvcl9sdDsKIHB1YiB1c2UgZm9yX2x0OjpGb3JMdDsKIAomIzQzO3B1YiB1c2UgY3JhdGU6OnsKJiM0MzsgICAgb3duZWQ6OnsKJiM0MzsgICAgICAgIE93bmFibGUsCiYjNDM7ICAgICAgICBPd25hYmxlUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE93bmVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwgLy8KJiM0Mzt9OwomIzQzOwogLy8vIFVzZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIGFuZCBmcm9tIGZvcmVpZ24gKG5vbi1SdXN0KSBsYW5ndWFnZXMuCiAvLy8KIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91c2IucnMgYi9ydXN0L2tlcm5lbC91c2IucnMKaW5kZXggN2FmZjBjODJkMGFmYy4uNTkzNTBjNmIwZGYyYSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvdXNiLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3VzYi5ycwpAQCAtMTgsNyAmIzQzOzE4LDEwIEBACiAgICAgICAgIHRvX3Jlc3VsdCwgLy8KICAgICB9LAogICAgIHByZWx1ZGU6OiosCi0gICAgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgc3luYzo6YXJlZjo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwKICAgICBUaGlzTW9kdWxlLCAvLwogfTsKQEAgLTM5Miw3ICYjNDM7Mzk1LDcgQEAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtEZXZpY2UgewogfQogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSW50ZXJmYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJbnRlcmZhY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYEludGVyZmFjZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgCiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9pbnRlcmZhY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsCkBAIC00MDYsNiAmIzQzOzQwOSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0ludGVyZmFjZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0ludGVyZmFjZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHt9CiYjNDM7CiAvLyBTQUZFVFk6IEEgYEludGVyZmFjZWAgaXMgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIGFuZCBjYW4gYmUgcmVsZWFzZWQgZnJvbSBhbnkgdGhyZWFkLgogdW5zYWZlIGltcGwgU2VuZCBmb3IgSW50ZXJmYWNlIHt9CiAKQEAgLTQ0Myw3ICYjNDM7NDUwLDcgQEAgZm4gYXNfcmF3KCZhbXA7c2VsZikgLSZndDsgKm11dCBiaW5kaW5nczo6dXNiX2RldmljZSB7CiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpOwogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYERldmljZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgCiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsCkBAIC00NTcsNiAmIzQzOzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9CiYjNDM7CiBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7Jmd0OyBmb3IgRGV2aWNlJmx0O0N0eCZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC93b3JrcXVldWUucnMgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnMKaW5kZXggN2UyNTNiNmYyOTljZS4uNzc2NzNiOGVhNDVmYiAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycwpAQCAtMTkyLDcgJiM0MzsxOTIsNyBAQAogICAgIHN5bmM6OnsKICAgICAgICAgYXJlZjo6ewogICAgICAgICAgICAgQVJlZiwKLSAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vCiYjNDM7ICAgICAgICAgICAgUmVmQ291bnRlZCwgLy8KICAgICAgICAgfSwKICAgICAgICAgQXJjLAogICAgICAgICBMb2NrQ2xhc3NLZXksIC8vCkBAIC05NTQsNyAmIzQzOzk1NCw3IEBAIHVuc2FmZSBpbXBsJmx0O1QsIGNvbnN0IElEOiB1NjQmZ3Q7IFJhd0RlbGF5ZWRXb3JrSXRlbSZsdDtJRCZndDsgZm9yIFBpbiZsdDtLQm94Jmx0O1QmZ3Q7Jmd0OwogLy8gICAgIGltcGxlbWVudGF0aW9uIG9mIGBXb3JrSXRlbVBvaW50ZXJgIGZvciBgQVJlZiZsdDtUJmd0O2AuCiB1bnNhZmUgaW1wbCZsdDtULCBjb25zdCBJRDogdTY0Jmd0OyBXb3JrSXRlbVBvaW50ZXImbHQ7SUQmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7CiB3aGVyZQotICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsCiAgICAgVDogV29ya0l0ZW0mbHQ7SUQsIFBvaW50ZXIgPSBTZWxmJmd0OywKICAgICBUOiBIYXNXb3JrJmx0O1QsIElEJmd0OywKIHsKQEAgLTk4Nyw3ICYjNDM7OTg3LDcgQEAgdW5zYWZlIGltcGwmbHQ7VCwgY29uc3QgSUQ6IHU2NCZndDsgV29ya0l0ZW1Qb2ludGVyJmx0O0lEJmd0OyBmb3IgQVJlZiZsdDtUJmd0OwogLy8gcmVxdWlyZW1lbnRzIG9mIGBXb3JrSXRlbVBvaW50ZXJgLgogdW5zYWZlIGltcGwmbHQ7VCwgY29uc3QgSUQ6IHU2NCZndDsgUmF3V29ya0l0ZW0mbHQ7SUQmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7CiB3aGVyZQotICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsCiAgICAgVDogV29ya0l0ZW0mbHQ7SUQsIFBvaW50ZXIgPSBTZWxmJmd0OywKICAgICBUOiBIYXNXb3JrJmx0O1QsIElEJmd0OywKIHsKQEAgLTEwMjAsNyAmIzQzOzEwMjAsNyBAQCB1bnNhZmUgaW1wbCZsdDtULCBjb25zdCBJRDogdTY0Jmd0OyBSYXdEZWxheWVkV29ya0l0ZW0mbHQ7SUQmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7CiB3aGVyZQogICAgIFQ6IFdvcmtJdGVtJmx0O0lELCBQb2ludGVyID0gU2VsZiZndDssCiAgICAgVDogSGFzRGVsYXllZFdvcmsmbHQ7VCwgSUQmZ3Q7LAotICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsCiB7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxMzcKCQkJCQkJCW91dHB1dDogMTEzCgkJCQkJCQl0aG91Z2h0czogMTIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IEEgRGVlcCBEaXZlIGludG8gUnVzdCBBYnN0cmFjdGlvbiBSZWZhY3RvcmluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lIGlmIGl0IHdhcnJhbnRzIGZ1enppbmcuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCByZXN0cnVjdHVyaW5nIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciB0aGUgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgaW50cm9kdWNpbmcgYE93bmVkJmx0O1QmZ3Q7YCBhbmQgYE93bmFibGVgIHRyYWl0cy4gV2UmIzM5O3JlIGFsc28gc2VlaW5nIGEgcmVmYWN0b3Jpbmcgb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCBjaGFuZ2VzIGluIGhvdyBgUGFnZWAgYW5kIGBQYWdlSW5mb2AgYXJlIGhhbmRsZWQsIG5vdyB1c2luZyBgT3duZWQmbHQ7UGFnZSZndDtgIGluIGFsbG9jYXRpb24uCgpNeSBwcmltYXJ5IGNvbmNlcm4gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYmVoYXZpb3IgdGhhdCBjb3VsZCBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLiBPbiBpbml0aWFsIHJldmlldywgaXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgbW9zdGx5IGRlYWxpbmcgd2l0aDoKCiogICBgQWx3YXlzUmVmQ291bnRlZGAgc3BsaXQgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYAoqICAgSW50cm9kdWN0aW9uIG9mIGBPd25lZCZsdDtUJmd0O2AgYXMgYSBwb2ludGVyIHR5cGUuCiogICBgUGFnZWAgYWxsb2NhdGlvbiBub3cgcmV0dXJuaW5nIGBPd25lZCZsdDtQYWdlJmd0O2AuCiogICBgUGFnZUluZm9gIGluIEFuZHJvaWQgQmluZGVyIHVzaW5nIGBPd25lZCZsdDtQYWdlJmd0O2AuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBjaGFuZ2VzIHRvdWNoIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBkcml2ZXJzLiBTY2FubmluZyBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYCwgSSBzZWUgY2hhbmdlcyByZWxhdGVkIHRvIGBzZXRfcGFnZWAuIEhvd2V2ZXIsIHRoaXMgYXBwZWFycyB0byBiZSBhbm90aGVyIFJ1c3QgYWJzdHJhY3Rpb24gc2hpZnQsIGRlYWxpbmcgd2l0aCBgT3B0aW9uJmx0O093bmVkJmx0O1BhZ2UmZ3Q7Jmd0O2AgaW5zdGVhZCBvZiBgT3B0aW9uJmx0O1BhZ2UmZ3Q7YC4gVGhlIGBPd25lZCZsdDtUJmd0O2AgZXNzZW50aWFsbHkgd3JhcHMgYE5vbk51bGwmbHQ7VCZndDtgLiAgYFBhZ2VgIHdhcyBwcmV2aW91c2x5IHJlcHJlc2VudGVkIGFzIGBOb25OdWxsJmx0O2JpbmRpbmdzOjpwYWdlJmd0O2AuIE5vdywgaXTigJlzIGBOb25OdWxsJmx0O1BhZ2UmZ3Q7YCwgd2hpY2ggZWZmZWN0aXZlbHkgYmVjb21lcyBgTm9uTnVsbCZsdDtPcGFxdWUmbHQ7YmluZGluZ3M6OnBhZ2UmZ3Q7Jmd0O2AuICBUaGlzIG1lYW5zIHRoZSBzaXplIGFuZCBsYXlvdXQgYXJlIGlkZW50aWNhbC4gQWxzbywgdGhlIGRyb3AgbG9naWMgZm9yIGBPd25lZCZsdDtQYWdlJmd0O2AgaXMgdGhlIHNhbWUgYXMgdGhlIHByaW9yIGRyb3AgbG9naWMgZm9yIHRoZSBvcmlnaW5hbCBgUGFnZWAuCgpMb29raW5nIGRlZXBlciwgYHJ1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc2AgaXMgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIGB0b19wYWdlYCByZXR1cm5lZCBhIGBCb3Jyb3dlZFBhZ2VgLCBub3cgaXQgaXMgcmV0dXJuaW5nIGAmYW1wO3BhZ2U6OlBhZ2VgLiBgQm9ycm93ZWRQYWdlYCB3YXMgYSB3cmFwcGVyIGFyb3VuZCBgTWFudWFsbHlEcm9wJmx0O1BhZ2UmZ3Q7YC4gSXQgYXBwZWFycyB0byBiZSBhbm90aGVyIFJ1c3QgdHlwZSBzeXN0ZW0gY2hhbmdlLgoKU28sIGFyZSB0aGVyZSBhbnkgKmZ1bmN0aW9uYWwqIGltcGxpY2F0aW9ucz8gTm8uIEl0IHNlZW1zIHRoaXMgaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgdHlwZXMgYW5kIHRyYWl0cy4gSW50cm9kdWNpbmcgYE93bmVkYCBhbmQgYE93bmFibGVgIGFuZCBzcGxpdHRpbmcgYEFsd2F5c1JlZkNvdW50ZWRgIGRvZXNuJiMzOTt0IHNlZW0gdG8gYWx0ZXIgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgYmVoYXZpb3IuIExldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbmV3IGZlYXR1cmVzIG9yIGxvZ2ljIGFzIGEgcmVzdWx0IG9mIHRoZXNlIGNoYW5nZXMuIEkmIzM5O20gc2VlaW5nIGEgbmV3IGZpbGUsIGBydXN0L2tlcm5lbC9vd25lZC5yc2AsIGJ1dCBpdCYjMzk7cyBqdXN0IGRlZmluaXRpb25zIGZvciB0aGUgbmV3IHR5cGVzIGFuZCB0cmFpdHMuCgpSZXZpZXdpbmcgdGhlIGNoYW5nZXMgaW4gYGRyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc2AsIGBydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNgLCBhbmQgYHJ1c3Qva2VybmVsL293bmVkLnJzYCBhZ2FpbiwgaXQgbG9va3MgcHVyZWx5IGxpa2UgYW4gQVBJIHJlZmFjdG9yaW5nLiBUaGUgY29tcGlsZWQgY29kZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgcmVtYWluIGV4YWN0bHkgdGhlIHNhbWUuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLgoKTGV0IG1lIG1ha2UgYWJzb2x1dGVseSBzdXJlLCBhbmQgZG91YmxlLWNoZWNrIGFsbCB0aGUgZmlsZXMgdG91Y2hlZCBpbiB0aGlzIHNlcmllcy4KCi0gICBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYDogU3dpdGNoZWQgZnJvbSBgT3B0aW9uJmx0O1BhZ2UmZ3Q7YCB0byBgT3B0aW9uJmx0O093bmVkJmx0O1BhZ2UmZ3Q7Jmd0O2AuCi0gICBgcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzYDogU3dpdGNoZWQgZnJvbSBgQm9ycm93ZWRQYWdlYCB0byBgJmFtcDtQYWdlYC4KLSAgIGBydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzYDogQWRkZWQgYGludG9fbm9uX251bGxgLgotICAgYHJ1c3Qva2VybmVsL2F1eGlsaWFyeS5yc2A6IENoYW5nZWQgYEFsd2F5c1JlZkNvdW50ZWRgIHRvIGBSZWZDb3VudGVkYCAmIzQzOyBgQWx3YXlzUmVmQ291bnRlZGAuCi0gICBgcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc2A6IFNhbWUuCi0gICBgcnVzdC9rZXJuZWwvY3JlZC5yc2A6IFNhbWUuCi0gICBgcnVzdC9rZXJuZWwvZGV2aWNlLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNgOiBTYW1lLgotICAgYHJ1c3Qva2VybmVsL2RybS9kZXZpY2UucnNgOiBTYW1lLgotICAgYHJ1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9mcy9maWxlLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9pMmMucnNgOiBTYW1lLgotICAgYHJ1c3Qva2VybmVsL21tLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc2A6IFNhbWUuCi0gICBgcnVzdC9rZXJuZWwvb3BwLnJzYDogU2FtZS4KLSAgIGBydXN0L2tlcm5lbC9vd25lZC5yc2A6IE5ldyBmaWxlIHdpdGggYE93bmFibGVgLCBgT3duZWRgLCBgT3duYWJsZVJlZkNvdW50ZWRgLgotICAgYHJ1c3Qva2VybmVsL3BhZ2UucnNgOiBgQm9ycm93ZWRQYWdlYCByZW1vdmVkLCBgUGFnZWAgbm93IHVzZXMgYE93bmFibGVgLCBgYWxsb2NfcGFnZWAgcmV0dXJucyBgT3duZWQmbHQ7UGFnZSZndDtgLgotICAgYHJ1c3Qva2VybmVsL3BjaS5yc2A6IFNhbWUgcmVmY291bnQgY2hhbmdlcy4KLSAgIAoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIEl0IGludHJvZHVjZXMgdGhlIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0cmFpdHMsIHNwbGl0cyBgQWx3YXlzUmVmQ291bnRlZGAgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYCwgYW5kIHVwZGF0ZXMgdGhlIGBQYWdlYCBhYnN0cmFjdGlvbiBhbmQgaXRzIHVzZXJzIChsaWtlIEFuZHJvaWQgQmluZGVyKSB0byB1c2UgdGhlIG5ldyB0eXBlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIEl0IGludHJvZHVjZXMgdGhlIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0cmFpdHMsIHNwbGl0cyBgQWx3YXlzUmVmQ291bnRlZGAgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYCwgYW5kIHVwZGF0ZXMgdGhlIGBQYWdlYCBhYnN0cmFjdGlvbiBhbmQgaXRzIHVzZXJzIChsaWtlIEFuZHJvaWQgQmluZGVyKSB0byB1c2UgdGhlIG5ldyB0eXBlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDEzOjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzoxMjozNy4xOTk3NzkxNjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM2NzI5OTg1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgaW4gdGhlIGtlcm5lbC4gSXQgaW50cm9kdWNlcyB0aGUgYE93bmVkYCBhbmQgYE93bmFibGVgIHRyYWl0cywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgdXBkYXRlcyB0aGUgYFBhZ2VgIGFic3RyYWN0aW9uIGFuZCBpdHMgdXNlcnMgKGxpa2UgQW5kcm9pZCBCaW5kZXIpIHRvIHVzZSB0aGUgbmV3IHR5cGVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjEyOjM3LjE5OTc4Mzg1NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NjYyOTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkzNzAyZmRjMzViNDI0MmVmZGNjNTMyNjNkOTkzMWYzZDVlYWQ3NjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMjQgMTM6MTI6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzIGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzXFxuaW5kZXggZTgyYTU1MjM4MDRmNC4uYzU1YmEyOWFiZWE3MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcXG4rKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcXG5AQCAtMzMsNyArMzMsNyBAQFxcbiAgICAgc3luYzo6e2FyZWY6OkFSZWYsIE11dGV4LCBTcGluTG9ja30sXFxuICAgICB0YXNrOjpQaWQsXFxuICAgICB0cmFuc211dGU6OkZyb21CeXRlcyxcXG4tICAgIHR5cGVzOjpPcGFxdWUsXFxuKyAgICB0eXBlczo6e09wYXF1ZSwgT3duZWR9LFxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLFxcbiB9O1xcbiBcXG5AQCAtMTk4LDcgKzE5OCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIElubmVyIHt9XFxuICNbcmVwcihDKV1cXG4gc3RydWN0IFBhZ2VJbmZvIHtcXG4gICAgIGxydTogYmluZGluZ3M6Omxpc3RfaGVhZCxcXG4tICAgIHBhZ2U6IE9wdGlvblxcdTAwM2NQYWdlXFx1MDAzZSxcXG4rICAgIHBhZ2U6IE9wdGlvblxcdTAwM2NPd25lZFxcdTAwM2NQYWdlXFx1MDAzZVxcdTAwM2UsXFxuICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsXFxuIH1cXG4gXFxuQEAgLTIwNiw3ICsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHtcXG4gICAgIC8vLyAjIFNhZmV0eVxcbiAgICAgLy8vXFxuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0Llxcbi0gICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBQYWdlKSB7XFxuKyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkXFx1MDAzY1BhZ2VcXHUwMDNlKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xcbiBcXG5AQCAtMjI5LDEzICsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlXFx1MDAzYydhXFx1MDAzZShtZTogKmNvbnN0IFBhZ2VJbmZvKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjXFx1MDAyNidhIFBhZ2VcXHUwMDNlIHtcXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXFx1MDAyNnJhdyBjb25zdCAoKm1lKS5wYWdlIH07XFxuIFxcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgZm9yIHJlYWRpbmcuXFxuLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH1cXG4rICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfZGVyZWYoKSB9XFxuICAgICB9XFxuIFxcbiAgICAgLy8vICMgU2FmZXR5XFxuICAgICAvLy9cXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICdhLlxcbi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVxcdTAwM2UgT3B0aW9uXFx1MDAzY1BhZ2VcXHUwMDNlIHtcXG4rICAgIHVuc2FmZSBmbiB0YWtlX3BhZ2UobWU6ICptdXQgUGFnZUluZm8pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NPd25lZFxcdTAwM2NQYWdlXFx1MDAzZVxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuXFxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFxcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcXG4gXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xcbmluZGV4IGNkNDIwM2YyN2FlZDAuLmM3YjliMDY5Y2Y3NWQgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXFxuQEAgLTE2OSw3ICsxNjksNyBAQCB1bnNhZmUgZm4gcmVhbGxvYyhcXG4gfVxcbiBcXG4gaW1wbCBWbWFsbG9jIHtcXG4tICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdLlxcbisgICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZS5cXG4gICAgIC8vL1xcbiAgICAgLy8vICMgRXhhbXBsZXNcXG4gICAgIC8vL1xcbkBAIC0yMDIsMjAgKzIwMiwxNyBAQCBpbXBsIFZtYWxsb2Mge1xcbiAgICAgLy8vXFxuICAgICAvLy8gLSBgcHRyYCBtdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24uXFxuICAgICAvLy8gLSBgcHRyYCBtdXN0IHJlbWFpbiB2YWxpZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiBgJ2FgLlxcbi0gICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXFx1MDAzYydhXFx1MDAzZShwdHI6IE5vbk51bGxcXHUwMDNjdThcXHUwMDNlKSAtXFx1MDAzZSBwYWdlOjpCb3Jyb3dlZFBhZ2VcXHUwMDNjJ2FcXHUwMDNlIHtcXG4rICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZVxcdTAwM2MnYVxcdTAwM2UocHRyOiBOb25OdWxsXFx1MDAzY3U4XFx1MDAzZSkgLVxcdTAwM2UgXFx1MDAyNidhIHBhZ2U6OlBhZ2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXFxuICAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5hc19wdHIoKS5jYXN0KCkpIH07XFxuIFxcbi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXJcXG4tICAgICAgICAvLyB0byBgVm1hbGxvY2AgbWVtb3J5Llxcbi0gICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwYWdlKSB9O1xcbi1cXG4gICAgICAgICAvLyBTQUZFVFk6XFxuLSAgICAgICAgLy8gLSBgcGFnZWAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZlxcbi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cXG4tICAgICAgICAvLyAtIEJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb24gYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2ZcXG4tICAgICAgICAvLyAgIGAnYWAuXFxuLSAgICAgICAgdW5zYWZlIHsgcGFnZTo6Qm9ycm93ZWRQYWdlOjpmcm9tX3JhdyhwYWdlKSB9XFxuKyAgICAgICAgLy8gLSBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQsIG5vbi1udWxsIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkXFxuKyAgICAgICAgLy8gICBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnksIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvblxcbisgICAgICAgIC8vICAgYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYFZtYWxsb2NgIGFsbG9jYXRpb24uXFxuKyAgICAgICAgLy8gLSBCeSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGBwdHJgLCBhbmQgaGVuY2UgdGhlIGBzdHJ1Y3QgcGFnZWAsIGlzXFxuKyAgICAgICAgLy8gICB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBgJ2FgLlxcbisgICAgICAgIHVuc2FmZSB7IFxcdTAwMjYqcGFnZS5jYXN0KCkgfVxcbiAgICAgfVxcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXFxuaW5kZXggMDJmZGEzZWE1Y2FlNi4uOGRjYzE2ZWQ4OTg5MyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXFxuQEAgLTksNyArOSw3IEBAXFxuICAgICBwdHI6Ok5vbk51bGwsIC8vXFxuIH07XFxuIFxcbi0vLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgcGFnZTo6Qm9ycm93ZWRQYWdlYF0gaXRlbXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxcbisvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxcbiAvLy9cXG4gLy8vICMgR3VhcmFudGVlc1xcbiAvLy9cXG5AQCAtMjgsMTEgKzI4LDExIEBAIHB1YiBzdHJ1Y3QgVm1hbGxvY1BhZ2VJdGVyXFx1MDAzYydhXFx1MDAzZSB7XFxuICAgICBzaXplOiB1c2l6ZSxcXG4gICAgIC8vLyBUaGUgY3VycmVudCBwYWdlIGluZGV4IG9mIHRoZSBbYEl0ZXJhdG9yYF0uXFxuICAgICBpbmRleDogdXNpemUsXFxuLSAgICBfcDogUGhhbnRvbURhdGFcXHUwMDNjcGFnZTo6Qm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZVxcdTAwM2UsXFxuKyAgICBfcDogUGhhbnRvbURhdGFcXHUwMDNjXFx1MDAyNidhIHBhZ2U6OlBhZ2VcXHUwMDNlLFxcbiB9XFxuIFxcbiBpbXBsXFx1MDAzYydhXFx1MDAzZSBJdGVyYXRvciBmb3IgVm1hbGxvY1BhZ2VJdGVyXFx1MDAzYydhXFx1MDAzZSB7XFxuLSAgICB0eXBlIEl0ZW0gPSBwYWdlOjpCb3Jyb3dlZFBhZ2VcXHUwMDNjJ2FcXHUwMDNlO1xcbisgICAgdHlwZSBJdGVtID0gXFx1MDAyNidhIHBhZ2U6OlBhZ2U7XFxuIFxcbiAgICAgZm4gbmV4dChcXHUwMDI2bXV0IHNlbGYpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NTZWxmOjpJdGVtXFx1MDAzZSB7XFxuICAgICAgICAgbGV0IG9mZnNldCA9IHNlbGYuaW5kZXguY2hlY2tlZF9tdWwocGFnZTo6UEFHRV9TSVpFKT87XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXFxuaW5kZXggMzVkMWUwMTU4NDhkZC4uZTZjNjM3YmJlMjAwOSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xcbkBAIC0yMTEsNiArMjExLDE1IEBAIHB1YiBmbiBsZWFrXFx1MDAzYydhXFx1MDAzZShiOiBTZWxmKSAtXFx1MDAzZSBcXHUwMDI2J2EgbXV0IFQge1xcbiAgICAgICAgIC8vIHdoaWNoIHBvaW50cyB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiBgVGAuXFxuICAgICAgICAgdW5zYWZlIHsgXFx1MDAyNm11dCAqQm94OjppbnRvX3JhdyhiKSB9XFxuICAgICB9XFxuK1xcbisgICAgLy8vIENvbnN1bWVzIHRoZSBgQm94XFx1MDAzY1QsIEFcXHUwMDNlYCBhbmQgcmV0dXJucyBhIGBOb25OdWxsXFx1MDAzY1RcXHUwMDNlYC5cXG4rICAgIC8vL1xcbisgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC5cXG4rICAgICNbaW5saW5lXVxcbisgICAgcHViIGZuIGludG9fbm9uX251bGwoYjogU2VsZikgLVxcdTAwM2UgTm9uTnVsbFxcdTAwM2NUXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBgQm94OjppbnRvX3Jhd2AgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIuXFxuKyAgICAgICAgdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChTZWxmOjppbnRvX3JhdyhiKSkgfVxcbisgICAgfVxcbiB9XFxuIFxcbiBpbXBsXFx1MDAzY1QsIEFcXHUwMDNlIEJveFxcdTAwM2NNYXliZVVuaW5pdFxcdTAwM2NUXFx1MDAzZSwgQVxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzIGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXFxuaW5kZXggYzQyOTI4ZDVhMjM5My4uODU0NTI1Mjg5YzhiNCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcXG5AQCAtMTksNiArMTksMTAgQEBcXG4gICAgICAgICB0b19yZXN1bHQsIC8vXFxuICAgICB9LFxcbiAgICAgcHJlbHVkZTo6KixcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbiAgICAgdHlwZXM6OntcXG4gICAgICAgICBGb3JMdCxcXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcXG5AQCAtMzQ0LDcgKzM0OCw3IEBAIHVuc2FmZSBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2UgZm9yIERldmljZVxcdTAwM2NDdHhcXHUwMDNlXFxuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcXG5AQCAtMzYzLDYgKzM2NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NEZXZpY2VcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZEZXZpY2VgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cXG4rXFxuIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIEFzUmVmXFx1MDAzY2RldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICBmbiBhc19yZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xcbmluZGV4IGNlM2UzMGM4MWNiNWUuLjhkYWQxNWFlNGNmYjAgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnNcXG5AQCAtOSw3ICs5LDExIEBAXFxuICAgICBibG9jazo6bXE6Ok9wZXJhdGlvbnMsXFxuICAgICBlcnJvcjo6UmVzdWx0LFxcbiAgICAgc3luYzo6e1xcbi0gICAgICAgIGFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcXG4rICAgICAgICBhcmVmOjp7XFxuKyAgICAgICAgICAgIEFSZWYsXFxuKyAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgfSxcXG4gICAgICAgICBhdG9taWM6OlJlbGF4ZWQsXFxuICAgICAgICAgUmVmY291bnQsXFxuICAgICB9LFxcbkBAIC0yMjksMTEgKzIzMywxMCBAQCB1bnNhZmUgaW1wbFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZSBTZW5kIGZvciBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlIHt9XFxuIC8vIG11dGF0ZSBgc2VsZmAgYXJlIGludGVybmFsbHkgc3luY2hyb25pemVkYFxcbiB1bnNhZmUgaW1wbFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZSBTeW5jIGZvciBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcXHUwMDNjVFxcdTAwM2VgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpc1xcbi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBgQWx3YXlzUmVmQ291bnRlZGAgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50XFxuLS8vIGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGEgbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50XFxuLS8vIGRlY3JlbWVudCBpcyBleGVjdXRlZC5cXG4tdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7XFxuKy8vIFNBRkVUWTogQWxsIGluc3RhbmNlcyBvZiBgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZWAgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGBSZWZDb3VudGVkYFxcbisvLyBlbnN1cmUgdGhhdCBpbmNyZW1lbnRzIHRvIHRoZSByZWYgY291bnQga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYVxcbisvLyBtYXRjaGluZyByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZSBSZWZDb3VudGVkIGZvciBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICBzZWxmLndyYXBwZXJfcmVmKCkucmVmY291bnQoKS5pbmMoKTtcXG4gICAgIH1cXG5AQCAtMjU1LDMgKzI1OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgfVxcbiAgICAgfVxcbiB9XFxuK1xcbisvLyBTQUZFVFk6IFdlIGN1cnJlbnRseSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NSZXF1ZXN0XFx1MDAzZWBcXG4rLy8gZnJvbSBhIGBcXHUwMDI2UmVxdWVzdGAgKGJ1dCB0aGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUpLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlIHt9XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2NyZWQucnMgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXFxuaW5kZXggZmZhMTU2YjlkZjM3Ny4uYjE3NzM2YTlhZGNkNSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xcbkBAIC04LDcgKzgsMTUgQEBcXG4gLy8hXFxuIC8vISBSZWZlcmVuY2U6IFxcdTAwM2NodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9zZWN1cml0eS9jcmVkZW50aWFscy5odG1sXFx1MDAzZVxcbiBcXG4tdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHRhc2s6Okt1aWQsIHR5cGVzOjpPcGFxdWV9O1xcbit1c2UgY3JhdGU6OntcXG4rICAgIGJpbmRpbmdzLFxcbisgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCxcXG4rICAgIHRhc2s6Okt1aWQsXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgT3BhcXVlLCAvL1xcbisgICAgfSwgLy9cXG4rfTtcXG4gXFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBjcmVkYC5cXG4gLy8vXFxuQEAgLTc2LDcgKzg0LDcgQEAgcHViIGZuIGV1aWQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIEt1aWQge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYENyZWRlbnRpYWxgIGlzIGFsd2F5cyByZWYtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC05MCwzICs5OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXFx1MDAzY0NyZWRlbnRpYWxcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9jcmVkKG9iai5jYXN0KCkuYXNfcHRyKCkpIH07XFxuICAgICB9XFxuIH1cXG4rXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjQ3JlZGVudGlhbFxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkNyZWRlbnRpYWxgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHt9XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xcbmluZGV4IDFhMzhiM2JiZGZiN2QuLjlhZmVjZDNmYTMyMzcgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXFxuQEAgLTgsOCArOCwxMiBAQFxcbiAgICAgYmluZGluZ3MsXFxuICAgICBmbXQsXFxuICAgICBwcmVsdWRlOjoqLFxcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBUmVmLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbiAgICAgdHlwZXM6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxcbiAgICAgICAgIE9wYXF1ZSwgLy9cXG4gICAgIH0sIC8vXFxuQEAgLTQ0OCw3ICs0NTIsNyBAQCBwdWIgZm4gbmFtZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNkNTdHIge1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTQ2MCw2ICs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NEZXZpY2VcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZEZXZpY2VgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cXG4rXFxuIC8vIFNBRkVUWTogQXMgYnkgdGhlIHR5cGUgaW52YXJpYW50IGBEZXZpY2VgIGNhbiBiZSBzZW50IHRvIGFueSB0aHJlYWQuXFxuIHVuc2FmZSBpbXBsIFNlbmQgZm9yIERldmljZSB7fVxcbiBcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXFxuaW5kZXggNWFlYWQ4MzVmYmJjMC4uY2VlN2UyNTAxMzY4OSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcXG5AQCAtMTQsNyArMTQsMTAgQEBcXG4gICAgIGZtdCxcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSxcXG4tICAgIHN5bmM6OmFyZWY6OkFSZWYsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuIH07XFxuIFxcbkBAIC0zNjAsNyArMzYzLDcgQEAgZm4gZm10KFxcdTAwMjZzZWxmLCBmOiBcXHUwMDI2bXV0IGZtdDo6Rm9ybWF0dGVyXFx1MDAzYydfXFx1MDAzZSkgLVxcdTAwM2UgZm10OjpSZXN1bHQge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRndOb2RlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHtcXG4rdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yIEZ3Tm9kZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlXFxuICAgICAgICAgLy8gcmVmY291bnQgaXMgbm9uLXplcm8uXFxuQEAgLTM3NCw2ICszNzcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NGd05vZGVcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZGd05vZGVgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge31cXG4rXFxuIGVudW0gTm9kZVxcdTAwM2MnYVxcdTAwM2Uge1xcbiAgICAgQm9ycm93ZWQoXFx1MDAyNidhIEZ3Tm9kZSksXFxuICAgICBPd25lZChBUmVmXFx1MDAzY0Z3Tm9kZVxcdTAwM2UpLFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xcbmluZGV4IDQ3N2NmNzcxZmIxMGUuLjZmYzAyZDUwNDMzNGUgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcXG5AQCAtMTcsNyArMTcsOCBAQFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN5bmM6OmFyZWY6OntcXG4gICAgICAgICBBUmVmLFxcbi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbiAgICAgfSxcXG4gICAgIHR5cGVzOjp7XFxuICAgICAgICAgTm90VGhyZWFkU2FmZSxcXG5AQCAtMzYyLDcgKzM2Myw3IEBAIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4gXFxuIC8vIFNBRkVUWTogRFJNIGRldmljZSBvYmplY3RzIGFyZSBhbHdheXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIHRoZSBnZXQvcHV0IGZ1bmN0aW9uc1xcbiAvLyBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IGRybTo6RHJpdmVyLCBDOiBEZXZpY2VDb250ZXh0XFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2VcXHUwMDNjVCwgQ1xcdTAwM2Uge1xcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBkcm06OkRyaXZlciwgQzogRGV2aWNlQ29udGV4dFxcdTAwM2UgUmVmQ291bnRlZCBmb3IgRGV2aWNlXFx1MDAzY1QsIENcXHUwMDNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTM3Nyw2ICszNzgsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVxcdTAwM2NULCBDXFx1MDAzZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NUOiBkcm06OkRyaXZlciwgQzogRGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjVCwgQ1xcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5ycyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXFxuaW5kZXggYzhiNjZkODE2ODcxOS4uODBhZmZlNjMzNWFjZiAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXFxuQEAgLTIxLDcgKzIxLDcgQEBcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzeW5jOjphcmVmOjp7XFxuICAgICAgICAgQVJlZixcXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuICAgICB9LFxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcXG4gfTtcXG5AQCAtMzQsNyArMzQsNyBAQFxcbiAjW2NmZyhDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUildXFxuIHB1YiBtb2Qgc2htZW07XFxuIFxcbi0vLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgQWx3YXlzUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxcbisvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxcbiAvLy9cXG4gLy8vIFNpbmNlIGFsbCBHRU0gb2JqZWN0cyB1c2UgdGhlIHNhbWUgcmVmY291bnRpbmcgc2NoZW1lLlxcbiAjW21hY3JvX2V4cG9ydF1cXG5AQCAtNDcsNyArNDcsNyBAQCBpbXBsICQoIFxcdTAwM2MkKCAkdHBhcmFtX2lkOmlkZW50ICksK1xcdTAwM2UgKT8gZm9yICR0eXBlOnR5XFxuICAgICAgICAgKT9cXG4gICAgICkgPVxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogQWxsIEdFTSBvYmplY3RzIGFyZSByZWZjb3VudGVkLlxcbi0gICAgICAgIHVuc2FmZSBpbXBsICQoIFxcdTAwM2MkKCAkdHBhcmFtX2lkICksK1xcdTAwM2UgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciAkdHlwZVxcbisgICAgICAgIHVuc2FmZSBpbXBsICQoIFxcdTAwM2MkKCAkdHBhcmFtX2lkICksK1xcdTAwM2UgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpSZWZDb3VudGVkIGZvciAkdHlwZVxcbiAgICAgICAgIHdoZXJlXFxuICAgICAgICAgICAgIFNlbGY6IEludG9HRU1PYmplY3QsXFxuICAgICAgICAgICAgICQoICQoICRiaW5kX3BhcmFtIDogJGJpbmRfdHJhaXQgKSwrICk/XFxuQEAgLTY2LDYgKzY2LDE0IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3RfcHV0KG9iaikgfTtcXG4gICAgICAgICAgICAgfVxcbiAgICAgICAgIH1cXG4rXFxuKyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2MkdHlwZVxcdTAwM2VgIGZyb20gYVxcbisgICAgICAgIC8vIGBcXHUwMDI2JHR5cGVgLlxcbisgICAgICAgIHVuc2FmZSBpbXBsICQoIFxcdTAwM2MkKCAkdHBhcmFtX2lkICksK1xcdTAwM2UgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciAkdHlwZVxcbisgICAgICAgIHdoZXJlXFxuKyAgICAgICAgICAgIFNlbGY6IEludG9HRU1PYmplY3QsXFxuKyAgICAgICAgICAgICQoICQoICRiaW5kX3BhcmFtIDogJGJpbmRfdHJhaXQgKSwrICk/XFxuKyAgICAgICAge31cXG4gICAgIH07XFxuIH1cXG4gI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV1cXG5AQCAtMTA5LDcgKzExNyw3IEBAIGZuIGNsb3NlKF9vYmo6IFxcdTAwMjZEcml2ZXJBbGxvY0ltcGxcXHUwMDNjU2VsZlxcdTAwM2UsIF9maWxlOiBcXHUwMDI2RHJpdmVyRmlsZVxcdTAwM2NTZWxmXFx1MDAzZSkge31cXG4gfVxcbiBcXG4gLy8vIFRyYWl0IHRoYXQgcmVwcmVzZW50cyBhIEdFTSBvYmplY3Qgc3VidHlwZVxcbi1wdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgKyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICsgQWx3YXlzUmVmQ291bnRlZCB7XFxuK3B1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCArIHN1cGVyOjpwcml2YXRlOjpTZWFsZWQgKyBSZWZDb3VudGVkIHtcXG4gICAgIC8vLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSByYXcgYGRybV9nZW1fb2JqZWN0YCBzdHJ1Y3R1cmUsIHdoaWNoIG11c3QgYmUgdmFsaWQgYXMgbG9uZyBhc1xcbiAgICAgLy8vIHRoaXMgb3duaW5nIG9iamVjdCBpcyB2YWxpZC5cXG4gICAgIGZuIGFzX3JhdyhcXHUwMDI2c2VsZikgLVxcdTAwM2UgKm11dCBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3Q7XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXFxuaW5kZXggMjNlZTY4OWJkMjQwMC4uNzIwZTU3NDE4MzU4ZCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xcbkBAIC0xMiw4ICsxMiwxNSBAQFxcbiAgICAgY3JlZDo6Q3JlZGVudGlhbCxcXG4gICAgIGVycm9yOjp7Y29kZTo6KiwgdG9fcmVzdWx0LCBFcnJvciwgUmVzdWx0fSxcXG4gICAgIGZtdCxcXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBUmVmLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbisgICAgdHlwZXM6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIE5vdFRocmVhZFNhZmUsXFxuKyAgICAgICAgT3BhcXVlLCAvL1xcbisgICAgfSwgLy9cXG4gfTtcXG4gdXNlIGNvcmU6OnB0cjtcXG4gXFxuQEAgLTE5Nyw3ICsyMDQsNyBAQCB1bnNhZmUgaW1wbCBTeW5jIGZvciBGaWxlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxcbiAvLyBtYWtlcyBgQVJlZlxcdTAwM2NGaWxlXFx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50Llxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGaWxlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRmlsZSB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXFxuQEAgLTIxMiw2ICsyMTksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjRmlsZVxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NGaWxlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RmlsZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge31cXG4rXFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBmaWxlYC4gTm90IHRocmVhZCBzYWZlLlxcbiAvLy9cXG4gLy8vIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgZmlsZSB0aGF0IGlzIG5vdCBrbm93biB0byBiZSBzYWZlIHRvIHRyYW5zZmVyIGFjcm9zcyB0aHJlYWQgYm91bmRhcmllcy5cXG5AQCAtMjMzLDcgKzI0NCw3IEBAIHB1YiBzdHJ1Y3QgTG9jYWxGaWxlIHtcXG4gXFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgTG9jYWxGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb25cXG4gLy8gbWFrZXMgYEFSZWZcXHUwMDNjTG9jYWxGaWxlXFx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50Llxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC0yNDksNiArMjYwLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXFx1MDAzY0xvY2FsRmlsZVxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NMb2NhbEZpbGVcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZMb2NhbEZpbGVgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge31cXG4rXFxuIGltcGwgTG9jYWxGaWxlIHtcXG4gICAgIC8vLyBDb25zdHJ1Y3RzIGEgbmV3IGBzdHJ1Y3QgZmlsZWAgd3JhcHBlciBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLlxcbiAgICAgLy8vXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xcbmluZGV4IDYyNGI5NzFjYThiMGIuLmY5YWFjYjg5NGY1MDUgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvaTJjLnJzXFxuQEAgLTE4LDcgKzE4LDggQEBcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzeW5jOjphcmVmOjp7XFxuICAgICAgICAgQVJlZixcXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4gICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLCAvL1xcbiB9O1xcbkBAIC00MjQsNyArNDI1LDcgQEAgcHViIGZuIGdldChpbmRleDogaTMyKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjQVJlZlxcdTAwM2NTZWxmXFx1MDAzZVxcdTAwM2Uge1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTtcXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJMmNBZGFwdGVyYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfZ2V0X2FkYXB0ZXIoc2VsZi5pbmRleCgpKSB9O1xcbkBAIC00MzUsNiArNDM2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH1cXG4gICAgIH1cXG4gfVxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0kyY0FkYXB0ZXJcXHUwMDNlYCBmcm9tIGFuXFxuKy8vIGBcXHUwMDI2STJjQWRhcHRlcmAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge31cXG4gXFxuIC8vLyBUaGUgaTJjIGJvYXJkIGluZm8gcmVwcmVzZW50YXRpb25cXG4gLy8vXFxuQEAgLTUwMCw3ICs1MDQsNyBAQCB1bnNhZmUgaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgZGV2aWNlOjpBc0J1c0RldmljZVxcdTAwM2NDdHhcXHUwMDNlIGZvciBJMmNDbGllbnRcXHUwMDNjQ1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNDbGllbnQpO1xcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0NsaWVudGAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcXG5AQCAtNTExLDYgKzUxNSw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwdXRfZGV2aWNlKFxcdTAwMjZyYXcgbXV0ICgqb2JqLmFzX3JlZigpLmFzX3JhdygpKS5kZXYpIH1cXG4gICAgIH1cXG4gfVxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0kyY0NsaWVudFxcdTAwM2VgIGZyb20gYW5cXG4rLy8gYFxcdTAwMjZJMmNDbGllbnRgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNDbGllbnQge31cXG4gXFxuIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIEFzUmVmXFx1MDAzY2RldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXHUwMDNlIGZvciBJMmNDbGllbnRcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICBmbiBhc19yZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbGliLnJzIGIvcnVzdC9rZXJuZWwvbGliLnJzXFxuaW5kZXggOTUxMmFmNzE1NmRmMi4uZWI1MjU2MjA0YTE3NCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9saWIucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9saWIucnNcXG5AQCAtMTAxLDYgKzEwMSw3IEBAXFxuIHB1YiBtb2Qgb2Y7XFxuICNbY2ZnKENPTkZJR19QTV9PUFApXVxcbiBwdWIgbW9kIG9wcDtcXG4rcHViIG1vZCBvd25lZDtcXG4gcHViIG1vZCBwYWdlO1xcbiAjW2NmZyhDT05GSUdfUENJKV1cXG4gcHViIG1vZCBwY2k7XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tLnJzIGIvcnVzdC9rZXJuZWwvbW0ucnNcXG5pbmRleCA0NzY0ZDdiNjhmMmE3Li44M2VkOTRmY2ExNGNhIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL21tLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvbW0ucnNcXG5AQCAtMTMsOCArMTMsMTUgQEBcXG4gXFxuIHVzZSBjcmF0ZTo6e1xcbiAgICAgYmluZGluZ3MsXFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxcbisgICAgICAgIE9wYXF1ZSwgLy9cXG4rICAgIH0sIC8vXFxuIH07XFxuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcXG4gXFxuQEAgLTU1LDcgKzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge31cXG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge31cXG4gXFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cXG5AQCAtNjksNiArNzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NNbVxcdTAwM2VgIGZyb20gYSBgXFx1MDAyNk1tYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW0ge31cXG4rXFxuIC8vLyBBIHdyYXBwZXIgZm9yIHRoZSBrZXJuZWwncyBgc3RydWN0IG1tX3N0cnVjdGAuXFxuIC8vL1xcbiAvLy8gVGhpcyB0eXBlIGlzIGxpa2UgW2BNbWBdLCBidXQgd2l0aCBub24temVybyBgbW1fdXNlcnNgLiBJdCBjYW4gb25seSBiZSB1c2VkIHdoZW4gYG1tX3VzZXJzYCBjYW5cXG5AQCAtOTEsNyArMTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fVxcbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxcbkBAIC0xMDUsNiArMTE1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY01tV2l0aFVzZXJcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZNbVdpdGhVc2VyYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7fVxcbitcXG4gLy8gTWFrZSBhbGwgYE1tYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlcmAuXFxuIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIge1xcbiAgICAgdHlwZSBUYXJnZXQgPSBNbTtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnMgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xcbmluZGV4IGI4ZDJmMDUxMjI1YzcuLjhmYmMzOTZlNDYwMjggMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xcbkBAIC0xMCw3ICsxMCwxMSBAQFxcbiB1c2UgY3JhdGU6OntcXG4gICAgIGJpbmRpbmdzLFxcbiAgICAgbW06Ok1tV2l0aFVzZXIsXFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLFxcbiB9O1xcbiB1c2UgY29yZTo6e29wczo6RGVyZWYsIHB0cjo6Tm9uTnVsbH07XFxuIFxcbkBAIC0zNCw3ICszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxcbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyQXN5bmMge31cXG4gXFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxcbkBAIC00OCw2ICs1MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NNbVdpdGhVc2VyQXN5bmNcXHUwMDNlYFxcbisvLyBmcm9tIGEgYFxcdTAwMjZNbVdpdGhVc2VyQXN5bmNgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge31cXG4rXFxuIC8vIE1ha2UgYWxsIGBNbVdpdGhVc2VyYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlckFzeW5jYC5cXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlckFzeW5jIHtcXG4gICAgIHR5cGUgVGFyZ2V0ID0gTW1XaXRoVXNlcjtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3BwLnJzIGIvcnVzdC9rZXJuZWwvb3BwLnJzXFxuaW5kZXggNjJlNDQ2NzYxMjVkMS4uYjhkYjZiZGVmZDA3NyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9vcHAucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9vcHAucnNcXG5AQCAtMTYsOCArMTYsMTQgQEBcXG4gICAgIGZmaTo6e2NfY2hhciwgY191bG9uZ30sXFxuICAgICBwcmVsdWRlOjoqLFxcbiAgICAgc3RyOjpDU3RyaW5nLFxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBUmVmLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbisgICAgdHlwZXM6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIE9wYXF1ZSwgLy9cXG4rICAgIH0sIC8vXFxuIH07XFxuIFxcbiAjW2NmZyhDT05GSUdfQ1BVX0ZSRVEpXVxcbkBAIC0xMDQxLDcgKzEwNDcsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBPUFAge31cXG4gdW5zYWZlIGltcGwgU3luYyBmb3IgT1BQIHt9XFxuIFxcbiAvLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IFtgT1BQYF0gaXMgYWx3YXlzIHJlZmNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE9QUCB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE9QUCB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXFxuQEAgLTEwNTUsNiArMTA2MSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY09QUFxcdTAwM2VgIGZyb20gYW5cXG4rLy8gYFxcdTAwMjZPUFBgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge31cXG4rXFxuIGltcGwgT1BQIHtcXG4gICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuXFxuICAgICAvLy9cXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3duZWQucnMgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYWNiNjExZjA4NGZmM1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xcbkBAIC0wLDAgKzEsMzczIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK1xcbisvLyEgVW5pcXVlIG93bmVkIHBvaW50ZXIgdHlwZXMgZm9yIG9iamVjdHMgd2l0aCBjdXN0b20gZHJvcCBsb2dpYy5cXG4rLy8hXFxuKy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0XFxuKy8vISBhcmUgb3duZWQgYnkgUnVzdCwgYnV0IG5lZWQgdG8gYmUgZnJlZWQgdGhyb3VnaCB0aGUgQyBBUEkuXFxuK1xcbit1c2UgY29yZTo6e1xcbisgICAgbWVtOjpNYW51YWxseURyb3AsXFxuKyAgICBvcHM6OntcXG4rICAgICAgICBEZXJlZixcXG4rICAgICAgICBEZXJlZk11dCwgLy9cXG4rICAgIH0sXFxuKyAgICBwaW46OlBpbixcXG4rICAgIHB0cjo6Tm9uTnVsbCwgLy9cXG4rfTtcXG4rdXNlIGtlcm5lbDo6e1xcbisgICAgc3luYzo6YXJlZjo6QVJlZixcXG4rICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvL1xcbit9O1xcbitcXG4rdXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlO1xcbitcXG4rLy8vIFR5cGVzIHRoYXQgc3BlY2lmeSB0aGVpciBvd24gd2F5IG9mIHBlcmZvcm1pbmcgYWxsb2NhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFR5cGljYWxseSwgdGhpcyB0cmFpdFxcbisvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLlxcbisvLy9cXG4rLy8vIEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSByZWZlcmVuY2VkIHZpYSB0aGUgW2BPd25lZFxcdTAwM2NTZWxmXFx1MDAzZWBdIHBvaW50ZXIgdHlwZS5cXG4rLy8vICAtIFRoaXMgaXMgdXNlZnVsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHRpZSB0aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0IHJlZmVyZW5jZSB0byBhbiBvd25lZFxcbisvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLlxcbisvLy8gIC0gW2BPd25hYmxlYF0gdHlwZXMgY2FuIGRlZmluZSBjdXN0b20gZHJvcCBsb2dpYyB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIG93bmVkIHJlZmVyZW5jZVxcbisvLy8gICAgb2YgdHlwZSBbYE93bmVkXFx1MDAzY19cXHUwMDNlYF0gcG9pbnRpbmcgdG8gdGhlIG9iamVjdCBpcyBkcm9wcGVkLlxcbisvLy9cXG4rLy8vIE5vdGU6IFRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnRpbmcsIGJlY2F1c2UgaXRcXG4rLy8vIHJlcHJlc2VudHMgYSB1bmlxdWUsIG93bmVkIHJlZmVyZW5jZS4gSWYgcmVmZXJlbmNlIGNvdW50aW5nIChvbiB0aGUgUnVzdCBzaWRlKSBpcyByZXF1aXJlZCxcXG4rLy8vIFtgUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZC4gW2BPd25hYmxlUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpZiBjb252ZXJzaW9uXFxuKy8vLyBiZXR3ZWVuIHVuaXF1ZSBhbmQgc2hhcmVkIChyZWZlcmVuY2UgY291bnRlZCkgb3duZXJzaGlwIGlzIG5lZWRlZC5cXG4rLy8vXFxuKy8vLyAjIEV4YW1wbGVzXFxuKy8vL1xcbisvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoIFtgT3duZWRgXSBsb29rcyBsaWtlXFxuKy8vLyB0aGlzOlxcbisvLy9cXG4rLy8vIGBgYFxcbisvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV1cXG4rLy8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7XFxuKy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XFxuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrO1xcbisvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTtcXG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZX07XFxuKy8vL1xcbisvLy8gLy8gTGV0J3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLlxcbisvLy8ga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jayEge1xcbisvLy8gICAgIC8vIFNBRkVUWTogd2UgY2FsbCBgaW5pdCgpYCByaWdodCBiZWxvdywgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuXFxuKy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXhcXHUwMDNjdXNpemVcXHUwMDNlID0gMDtcXG4rLy8vIH1cXG4rLy8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuXFxuKy8vLyB1bnNhZmUgeyBGT09fQUxMT0NfQ09VTlQuaW5pdCgpIH07XFxuKy8vL1xcbisvLy8gc3RydWN0IEZvbztcXG4rLy8vXFxuKy8vLyBpbXBsIEZvbyB7XFxuKy8vLyAgICAgZm4gbmV3KCkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZSB7XFxuKy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXFxuKy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC5cXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcXG4rLy8vICAgICAgICAgICAgIEZvbyB7fSxcXG4rLy8vICAgICAgICAgICAgIGZsYWdzOjpHRlBfS0VSTkVMLFxcbisvLy8gICAgICAgICApPztcXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTtcXG4rLy8vICAgICAgICAgLy8gQ291bnQgbmV3IGFsbG9jYXRpb25cXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgKz0gMTtcXG4rLy8vICAgICAgICAgLy8gU0FGRVRZOlxcbisvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuXFxuKy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuXFxuKy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXFxuKy8vLyAgICAgfVxcbisvLy8gfVxcbisvLy9cXG4rLy8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcXG4rLy8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFxcdTAwM2NTZWxmXFx1MDAzZWBdIGlzIHN0aWxsIGFsaXZlLiBXZSBjYW4gcGFzcyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdLCBhc1xcbisvLy8gICAgICAgICAvLyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXFxuKy8vLyAgICAgICAgIGRyb3AodW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfSk7XFxuKy8vLyAgICAgICAgIC8vIENvdW50IHJlbGVhc2VkIGFsbG9jYXRpb25cXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgLT0gMTtcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8ge1xcbisvLy8gICAgbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xcbisvLy8gICAgYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAxKTtcXG4rLy8vIH1cXG4rLy8vIC8vIGBmb29gIGlzIG91dCBvZiBzY29wZSBub3csIHNvIHdlIGV4cGVjdCBubyBsaXZlIGFsbG9jYXRpb25zLlxcbisvLy8gYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAwKTtcXG4rLy8vICMgT2s6OlxcdTAwM2MoKSwgRXJyb3JcXHUwMDNlKCgpKVxcbisvLy8gYGBgXFxuK3B1YiB0cmFpdCBPd25hYmxlIHtcXG4rICAgIC8vLyBUZWFyIGRvd24gdGhpcyBgT3duYWJsZWAuXFxuKyAgICAvLy9cXG4rICAgIC8vLyBJbXBsZW1lbnRlcnMgb2YgYE93bmFibGVgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjbGVhbiB1cCB0aGUgdXNlIG9mIGBTZWxmYC4gVGhpcyBjYW5cXG4rICAgIC8vLyBpbmNsdWRlIGZyZWVpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxcbisgICAgLy8vXFxuKyAgICAvLy8gIyBTYWZldHlcXG4rICAgIC8vL1xcbisgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLFxcbisgICAgLy8vIGFuZCB0aGF0IHRoaXMgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLiBgdGhpc2AgbXVzdCBub3QgYmUgdXNlZFxcbisgICAgLy8vIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFzIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGZyZWVkLlxcbisgICAgLy8vXFxuKyAgICAvLy8gYHRoaXNgIGlzIHBpbm5lZCBhbmQgaW1wbGVtZW50ZXJzIG9mIHRoaXMgbWV0aG9kIG11c3Qgb2JzZXJ2ZSB0aGlzIGNvbnN0cmFpbnQuXFxuKyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKTtcXG4rfVxcbitcXG4rLy8vIEEgbXV0YWJsZSByZWZlcmVuY2UgdG8gYW4gb3duZWQgYFRgLlxcbisvLy9cXG4rLy8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzXFxuKy8vLyBkcm9wcGVkLlxcbisvLy9cXG4rLy8vICMgSW52YXJpYW50c1xcbisvLy9cXG4rLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWRcXHUwMDNjVFxcdTAwM2VgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLlxcbisvLy8gLSBUaGUgYFRgIHZhbHVlIGlzIHBpbm5lZC5cXG4rcHViIHN0cnVjdCBPd25lZFxcdTAwM2NUOiBPd25hYmxlXFx1MDAzZSB7XFxuKyAgICBwdHI6IE5vbk51bGxcXHUwMDNjVFxcdTAwM2UsXFxuK31cXG4rXFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVxcdTAwM2UgT3duZWRcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BPd25lZGBdLlxcbisgICAgLy8vXFxuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICAvLy9cXG4rICAgIC8vLyAjIFNhZmV0eVxcbisgICAgLy8vXFxuKyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0OlxcbisgICAgLy8vIC0gYHB0cmAgcG9pbnRzIHRvIGEgdmFsaWQgaW5zdGFuY2Ugb2YgYFRgLlxcbisgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZFxcdTAwM2NUXFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXFx1MDAzY1RcXHUwMDNlKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLlxcbisgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uXFxuKyAgICAgICAgU2VsZiB7IHB0ciB9XFxuKyAgICB9XFxuK1xcbisgICAgLy8vIENvbnN1bWVzIHRoZSBbYE93bmVkYF0sIHJldHVybmluZyBhIHJhdyBwb2ludGVyLlxcbisgICAgLy8vXFxuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGVcXG4rICAgIC8vLyB1bmRlcmx5aW5nIGBUYCBpcyB3aXRoIHRoZSBjYWxsZXIuXFxuKyAgICAvLy9cXG4rICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLlxcbisgICAgI1tpbmxpbmVdXFxuKyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cXHUwMDNlIE5vbk51bGxcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHJcXG4rICAgIH1cXG4rXFxuKyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkXFx1MDAzY1RcXHUwMDNlYC5cXG4rICAgICNbaW5saW5lXVxcbisgICAgcHViIGZuIGFzX3Bpbl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBQaW5cXHUwMDNjXFx1MDAyNm11dCBUXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcXG4rICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cXG4rICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuXFxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGFuIFtgT3duZWRcXHUwMDNjVFxcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFNlbmRgXSxcXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYE93bmVkXFx1MDAzY1RcXHUwMDNlYF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgVGAuXFxuK3Vuc2FmZSBpbXBsXFx1MDAzY1Q6IE93bmFibGUgKyBTZW5kXFx1MDAzZSBTZW5kIGZvciBPd25lZFxcdTAwM2NUXFx1MDAzZSB7fVxcbitcXG4rLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgW2BcXHUwMDI2T3duZWRcXHUwMDNjVFxcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFN5bmNgXSxcXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYFxcdTAwMjZPd25lZFxcdTAwM2NUXFx1MDAzZWBdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFxcdTAwMjZUYC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogT3duYWJsZSArIFN5bmNcXHUwMDNlIFN5bmMgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHt9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGVcXHUwMDNlIERlcmVmIGZvciBPd25lZFxcdTAwM2NUXFx1MDAzZSB7XFxuKyAgICB0eXBlIFRhcmdldCA9IFQ7XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBkZXJlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNlNlbGY6OlRhcmdldCB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQuXFxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGUgKyBVbnBpblxcdTAwM2UgRGVyZWZNdXQgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZGVyZWZfbXV0KFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgXFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xcbisgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5XFxuKyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXFxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGVcXHUwMDNlIERyb3AgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgXFx1MDAyNm11dCBzZWxmYCB3ZSBleGNsdXNpdmVseSBvd24gYHNlbGZgIGFuZCB0aGUgdW5kZXJseWluZyBgVGAuIEFzXFxuKyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLlxcbisgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vIFNBRkVUWTogV2UgZGVyaXZlIHRoZSBwb2ludGVyIHRvIGBUYCBmcm9tIGEgdmFsaWQgYFRgLCBzbyB0aGUgcmV0dXJuZWRcXG4rLy8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBPd25hYmxlXFx1MDAzZSBGb3JlaWduT3duYWJsZSBmb3IgT3duZWRcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgY29uc3QgRk9SRUlHTl9BTElHTjogdXNpemUgPSBjb3JlOjptZW06OmFsaWduX29mOjpcXHUwMDNjVFxcdTAwM2UoKTtcXG4rXFxuKyAgICB0eXBlIEJvcnJvd2VkXFx1MDAzYydhXFx1MDAzZVxcbisgICAgICAgID0gXFx1MDAyNidhIFRcXG4rICAgIHdoZXJlXFxuKyAgICAgICAgU2VsZjogJ2E7XFxuKyAgICB0eXBlIEJvcnJvd2VkTXV0XFx1MDAzYydhXFx1MDAzZVxcbisgICAgICAgID0gUGluXFx1MDAzY1xcdTAwMjYnYSBtdXQgVFxcdTAwM2VcXG4rICAgIHdoZXJlXFxuKyAgICAgICAgU2VsZjogJ2E7XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLVxcdTAwM2UgKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkIHtcXG4rICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpXFxuKyAgICB9XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICB1bnNhZmUgZm4gZnJvbV9mb3JlaWduKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgY2FtZSBmcm9tIGBpbnRvX2ZvcmVpZ25gIGFuZCBjYW5ub3QgYmUgbnVsbC5cXG4rICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwdHIuY2FzdCgpKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIHdhcyByZXR1cm5lZCBieSBgaW50b19mb3JlaWduYCwgd2hpY2ggZ2F2ZVxcbisgICAgICAgIC8vIHVwIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgYSB2YWxpZCwgcGlubmVkIGBUYDsgd2UgcmV0YWtlIHRoYXQgb3duZXJzaGlwIGhlcmUuXFxuKyAgICAgICAgdW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHB0cikgfVxcbisgICAgfVxcbitcXG4rICAgICNbaW5saW5lXVxcbisgICAgdW5zYWZlIGZuIGJvcnJvd1xcdTAwM2MnYVxcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cXHUwMDNlIFNlbGY6OkJvcnJvd2VkXFx1MDAzYydhXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGFcXG4rICAgICAgICAvLyByZWZlcmVuY2UgZm9yIGAnYWAuXFxuKyAgICAgICAgdW5zYWZlIHsgXFx1MDAyNipwdHIuY2FzdCgpIH1cXG4rICAgIH1cXG4rXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHVuc2FmZSBmbiBib3Jyb3dfbXV0XFx1MDAzYydhXFx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVxcdTAwM2UgU2VsZjo6Qm9ycm93ZWRNdXRcXHUwMDNjJ2FcXHUwMDNlIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYVxcbisgICAgICAgIC8vIHVuaXF1ZSByZWZlcmVuY2UgZm9yIGAnYWAuXFxuKyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgXFx1MDAyNm11dCAqcHRyLmNhc3QoKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIG5ldmVyIG1vdmUgb3V0IG9mIGlubmVyLCBhbmQgd2UgZG8gbm90IGhhbmQgb3V0IG11dGFibGVcXG4rICAgICAgICAvLyByZWZlcmVuY2VzIHdoZW4gYFQ6ICFVbnBpbmAuXFxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKGlubmVyKSB9XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vLyBBIHRyYWl0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHdyYXBwZWQgaW4gZWl0aGVyIG9uZSBvZiB0aGUgcmVmZXJlbmNlIHR5cGVzIFtgT3duZWRgXSBhbmRcXG4rLy8vIFtgQVJlZmBdLlxcbisvLy9cXG4rLy8vICMgRXhhbXBsZXNcXG4rLy8vXFxuKy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVSZWZDb3VudGVkYF0sIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aFxcbisvLy8gW2BBUmVmYF0gYW5kIFtgT3duZWRgXSBsb29rcyBsaWtlIHRoaXM6XFxuKy8vL1xcbisvLy8gYGBgXFxuKy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxcbisvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDtcXG4rLy8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcXG4rLy8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XFxuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBSZWZDb3VudGVkfTtcXG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZSwgT3duYWJsZVJlZkNvdW50ZWR9O1xcbisvLy9cXG4rLy8vIC8vIEFuIGludGVybmFsbHkgcmVmY291bnRlZCBzdHJ1Y3QgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuXFxuKy8vLyAvL1xcbisvLy8gLy8gIyBJbnZhcmlhbnRzXFxuKy8vLyAvL1xcbisvLy8gLy8gLSBgcmVmY291bnRgIGlzIGFsd2F5cyBub24temVybyBmb3IgYSB2YWxpZCBvYmplY3QuXFxuKy8vLyAvLyAtIGByZWZjb3VudGAgaXMgXFx1MDAzZTEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC5cXG4rLy8vIC8vXFxuKy8vLyBzdHJ1Y3QgRm9vIHtcXG4rLy8vICAgICByZWZjb3VudDogQ2VsbFxcdTAwM2N1c2l6ZVxcdTAwM2UsXFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gaW1wbCBGb28ge1xcbisvLy8gICAgIGZuIG5ldygpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NTZWxmXFx1MDAzZVxcdTAwM2Uge1xcbisvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xcbisvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXFxuKy8vLyAgICAgICAgIC8vIElOVkFSSUFOVDogV2UgaW5pdGlhbGl6ZSBgcmVmY291bnRgIHRvIDEsIHNhdGlzZnlpbmcgdGhlIGludmFyaWFudHMuXFxuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXFxuKy8vLyAgICAgICAgICAgICBGb28ge1xcbisvLy8gICAgICAgICAgICAgICAgIHJlZmNvdW50OiBDZWxsOjpuZXcoMSksXFxuKy8vLyAgICAgICAgICAgICB9LFxcbisvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXFxuKy8vLyAgICAgICAgICk/O1xcbisvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xcbisvLy8gICAgICAgICAvLyBTQUZFVFk6XFxuKy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cXG4rLy8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cXG4rLy8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gLy8gU0FGRVRZOiBXZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBlYWNoIHRpbWUgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBvbmx5IGZyZWVcXG4rLy8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uXFxuKy8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBGb28ge1xcbisvLy8gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4rLy8vICAgICAgICAgc2VsZi5yZWZjb3VudC5yZXBsYWNlKHNlbGYucmVmY291bnQuZ2V0KCkgKyAxKTtcXG4rLy8vICAgICB9XFxuKy8vL1xcbisvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKHRoaXM6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4rLy8vICAgICAgICAgLy8gU0FGRVRZOiBCeSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSByZWZjb3VudCBpcyBub24temVybyxcXG4rLy8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLlxcbisvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyBcXHUwMDI2dGhpcy5hc19yZWYoKS5yZWZjb3VudCB9O1xcbisvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxO1xcbisvLy8gICAgICAgICBpZiBuZXdfcmVmY291bnQgPT0gMCB7XFxuKy8vLyAgICAgICAgICAgICAvLyBUaGUgYEZvb2Agd2lsbCBiZSBkcm9wcGVkIHdoZW4gYEtCb3hgIGdvZXMgb3V0IG9mIHNjb3BlLlxcbisvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94XFx1MDAzY0Zvb1xcdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZSBhcyB0aGUgb2xkIHJlZmNvdW50IGlzIDEuIFdlIGNhbiBwYXNzXFxuKy8vLyAgICAgICAgICAgICAvLyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdIGFzIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbixcXG4rLy8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLlxcbisvLy8gICAgICAgICAgICAgdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfTtcXG4rLy8vICAgICAgICAgfSBlbHNlIHtcXG4rLy8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTtcXG4rLy8vICAgICAgICAgfVxcbisvLy8gICAgIH1cXG4rLy8vIH1cXG4rLy8vXFxuKy8vLyBpbXBsIE93bmFibGVSZWZDb3VudGVkIGZvciBGb28ge1xcbisvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXFx1MDAzY1NlbGZcXHUwMDNlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjT3duZWRcXHUwMDNjU2VsZlxcdTAwM2UsIEFSZWZcXHUwMDNjU2VsZlxcdTAwM2VcXHUwMDNlIHtcXG4rLy8vICAgICAgICAgaWYgdGhpcy5yZWZjb3VudC5nZXQoKSA9PSAxIHtcXG4rLy8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIGBGb29gIGlzIHN0aWxsIGFsaXZlIGFuZCBoYXMgbm8gb3RoZXIgUnVzdCByZWZlcmVuY2VzIGFzIHRoZSByZWZjb3VudFxcbisvLy8gICAgICAgICAgICAgLy8gaXMgMS5cXG4rLy8vICAgICAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhBUmVmOjppbnRvX3Jhdyh0aGlzKSkgfSlcXG4rLy8vICAgICAgICAgfSBlbHNlIHtcXG4rLy8vICAgICAgICAgICAgIEVycih0aGlzKVxcbisvLy8gICAgICAgICB9XFxuKy8vLyAgICAgfVxcbisvLy9cXG4rLy8vICAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZFxcdTAwM2NTZWxmXFx1MDAzZSkgLVxcdTAwM2UgQVJlZlxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogQW4gYE93bmVkXFx1MDAzY0Zvb1xcdTAwM2VgIGhvbGRzIHRoZSB1bmlxdWUgcmVmZXJlbmNlIChyZWZjb3VudCAxKSwgd2hpY2ggd2UgdHJhbnNmZXIgdG9cXG4rLy8vICAgICAgICAgLy8gdGhlIG5ldyBgQVJlZmAuXFxuKy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfVxcbisvLy8gICAgIH1cXG4rLy8vIH1cXG4rLy8vXFxuKy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XFxuKy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IFVzaW5nIGBkZWNfcmVmKClgIGZyb20gW2BSZWZDb3VudGVkYF0gdG8gcmVsZWFzZSBpcyBva2F5LCBhcyB0aGUgcmVmY291bnQgaXNcXG4rLy8vICAgICAgICAgLy8gYWx3YXlzIDEgZm9yIGFuIFtgT3duZWRcXHUwMDNjRm9vXFx1MDAzZWBdLlxcbisvLy8gICAgICAgICB1bnNhZmUgeyBGb286OmRlY19yZWYodGhpcykgfTtcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xcbisvLy8gbGV0IGZvbyA9IEFSZWY6OmZyb20oZm9vKTtcXG4rLy8vIHtcXG4rLy8vICAgICBsZXQgYmFyID0gZm9vLmNsb25lKCk7XFxuKy8vLyAgICAgYXNzZXJ0IShPd25lZDo6dHJ5X2Zyb20oYmFyKS5pc19lcnIoKSk7XFxuKy8vLyB9XFxuKy8vLyBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShmb28pLmlzX29rKCkpO1xcbisvLy8gIyBPazo6XFx1MDAzYygpLCBFcnJvclxcdTAwM2UoKCkpXFxuKy8vLyBgYGBcXG4rcHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICsgT3duYWJsZSArIFNpemVkIHtcXG4rICAgIC8vLyBDaGVja3MgaWYgdGhlIFtgQVJlZmBdIGlzIHVuaXF1ZSBhbmQgY29udmVydHMgaXQgdG8gYW4gW2BPd25lZGBdIGlmIHRoYXQgaXMgdGhlIGNhc2UuXFxuKyAgICAvLy8gT3RoZXJ3aXNlIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZlxcdTAwM2NTZWxmXFx1MDAzZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlLCBBUmVmXFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZTtcXG4rXFxuKyAgICAvLy8gQ29udmVydHMgdGhlIFtgT3duZWRgXSBpbnRvIGFuIFtgQVJlZmBdLlxcbisgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcXHUwMDNjU2VsZlxcdTAwM2UpIC1cXHUwMDNlIEFSZWZcXHUwMDNjU2VsZlxcdTAwM2U7XFxuK31cXG4rXFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVJlZkNvdW50ZWRcXHUwMDNlIFRyeUZyb21cXHUwMDNjQVJlZlxcdTAwM2NUXFx1MDAzZVxcdTAwM2UgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgIHR5cGUgRXJyb3IgPSBBUmVmXFx1MDAzY1RcXHUwMDNlO1xcbisgICAgLy8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIFtgQVJlZmBdIHRvIGFuIFtgT3duZWRgXSBieSBjYWxsaW5nXFxuKyAgICAvLy8gW2B0cnlfZnJvbV9zaGFyZWQoKWBdKE93bmFibGVSZWZDb3VudGVkOjp0cnlfZnJvbV9zaGFyZWQpLiBJbiBjYXNlIHRoZSBbYEFSZWZgXSBpcyBub3RcXG4rICAgIC8vLyB1bmlxdWUsIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIGZuIHRyeV9mcm9tKGI6IEFSZWZcXHUwMDNjVFxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NUXFx1MDAzZSwgU2VsZjo6RXJyb3JcXHUwMDNlIHtcXG4rICAgICAgICBUOjp0cnlfZnJvbV9zaGFyZWQoYilcXG4rICAgIH1cXG4rfVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wYWdlLnJzIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xcbmluZGV4IDFjMDc5NmVhMjI5ZjAuLjMyZGQwMzBjODMxNTkgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BhZ2UucnNcXG5AQCAtMTIsMTYgKzEyLDE2IEBAXFxuICAgICAgICAgY29kZTo6KixcXG4gICAgICAgICBSZXN1bHQsIC8vXFxuICAgICB9LFxcbisgICAgdHlwZXM6OntcXG4rICAgICAgICBPcGFxdWUsXFxuKyAgICAgICAgT3duYWJsZSxcXG4rICAgICAgICBPd25lZCwgLy9cXG4rICAgIH0sXFxuICAgICB1YWNjZXNzOjpVc2VyU2xpY2VSZWFkZXIsIC8vXFxuIH07XFxuLXVzZSBjb3JlOjp7XFxuLSAgICBtYXJrZXI6OlBoYW50b21EYXRhLFxcbi0gICAgbWVtOjpNYW51YWxseURyb3AsXFxuLSAgICBvcHM6OkRlcmVmLFxcbi0gICAgcHRyOjp7XFxuLSAgICAgICAgc2VsZixcXG4tICAgICAgICBOb25OdWxsLCAvL1xcbi0gICAgfSwgLy9cXG4rdXNlIGNvcmU6OnB0cjo6e1xcbisgICAgc2VsZixcXG4rICAgIE5vbk51bGwsIC8vXFxuIH07XFxuIFxcbiAvLy8gQSBiaXR3aXNlIHNoaWZ0IGZvciB0aGUgcGFnZSBzaXplLlxcbkBAIC02NSw5MyArNjUsMjkgQEAgcHViIGNvbnN0IGZuIHBhZ2VfYWxpZ24oYWRkcjogdXNpemUpIC1cXHUwMDNlIE9wdGlvblxcdTAwM2N1c2l6ZVxcdTAwM2Uge1xcbiAgICAgU29tZShzdW0gXFx1MDAyNiBQQUdFX01BU0spXFxuIH1cXG4gXFxuLS8vLyBSZXByZXNlbnRhdGlvbiBvZiBhIG5vbi1vd25pbmcgcmVmZXJlbmNlIHRvIGEgW2BQYWdlYF0uXFxuLS8vL1xcbi0vLy8gVGhpcyB0eXBlIHByb3ZpZGVzIGEgYm9ycm93ZWQgdmVyc2lvbiBvZiBhIFtgUGFnZWBdIHRoYXQgaXMgb3duZWQgYnkgc29tZSBvdGhlciBlbnRpdHksIGUuZy4gYVxcbi0vLy8gW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiBzdWNoIGFzIFtgVkJveGBdLlxcbi0vLy9cXG4tLy8vICMgRXhhbXBsZVxcbi0vLy9cXG4tLy8vIGBgYFxcbi0vLy8gIyB1c2Uga2VybmVsOjp7YmluZGluZ3MsIHByZWx1ZGU6Oip9O1xcbi0vLy8gdXNlIGtlcm5lbDo6cGFnZTo6e0JvcnJvd2VkUGFnZSwgUGFnZSwgUEFHRV9TSVpFfTtcXG4tLy8vICMgdXNlIGNvcmU6OnttZW06Ok1heWJlVW5pbml0LCBwdHIsIHB0cjo6Tm9uTnVsbCB9O1xcbi0vLy9cXG4tLy8vIGZuIGJvcnJvd19wYWdlXFx1MDAzYydhXFx1MDAzZSh2Ym94OiBcXHUwMDI2J2EgbXV0IFZCb3hcXHUwMDNjTWF5YmVVbmluaXRcXHUwMDNjW3U4OyBQQUdFX1NJWkVdXFx1MDAzZVxcdTAwM2UpIC1cXHUwMDNlIEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2Uge1xcbi0vLy8gICAgIGxldCBwdHIgPSBwdHI6OmZyb21fcmVmKFxcdTAwMjYqKnZib3gpO1xcbi0vLy9cXG4tLy8vICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5Llxcbi0vLy8gICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OnZtYWxsb2NfdG9fcGFnZShwdHIuY2FzdCgpKSB9O1xcbi0vLy9cXG4tLy8vICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxcbi0vLy8gICAgIC8vIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS5cXG4tLy8vICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcXG4tLy8vXFxuLS8vLyAgICAgLy8gU0FGRVRZOlxcbi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC5cXG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGBzZWxmYC5cXG4tLy8vICAgICB1bnNhZmUgeyBCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH1cXG4tLy8vIH1cXG4tLy8vXFxuLS8vLyBsZXQgbXV0IHZib3ggPSBWQm94OjpcXHUwMDNjW3U4OyBQQUdFX1NJWkVdXFx1MDAzZTo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87XFxuLS8vLyBsZXQgcGFnZSA9IGJvcnJvd19wYWdlKFxcdTAwMjZtdXQgdmJveCk7XFxuLS8vL1xcbi0vLy8gLy8gU0FGRVRZOiBUaGVyZSBpcyBubyBjb25jdXJyZW50IHJlYWQgb3Igd3JpdGUgdG8gdGhpcyBwYWdlLlxcbi0vLy8gdW5zYWZlIHsgcGFnZS5maWxsX3plcm9fcmF3KDAsIFBBR0VfU0laRSk/IH07XFxuLS8vLyAjIE9rOjpcXHUwMDNjKCksIEVycm9yXFx1MDAzZSgoKSlcXG4tLy8vIGBgYFxcbi0vLy9cXG4tLy8vICMgSW52YXJpYW50c1xcbi0vLy9cXG4tLy8vIFRoZSBib3Jyb3dlZCB1bmRlcmx5aW5nIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIGAnYWAuXFxuLS8vL1xcbi0vLy8gW2BWQm94YF06IGtlcm5lbDo6YWxsb2M6OlZCb3hcXG4tLy8vIFtgVm1hbGxvY2BdOiBrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NcXG4tcHViIHN0cnVjdCBCb3Jyb3dlZFBhZ2VcXHUwMDNjJ2FcXHUwMDNlKE1hbnVhbGx5RHJvcFxcdTAwM2NQYWdlXFx1MDAzZSwgUGhhbnRvbURhdGFcXHUwMDNjXFx1MDAyNidhIFBhZ2VcXHUwMDNlKTtcXG4tXFxuLWltcGxcXHUwMDNjJ2FcXHUwMDNlIEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2Uge1xcbi0gICAgLy8vIENvbnN0cnVjdHMgYSBbYEJvcnJvd2VkUGFnZWBdIGZyb20gYSByYXcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuXFxuLSAgICAvLy9cXG4tICAgIC8vLyAjIFNhZmV0eVxcbi0gICAgLy8vXFxuLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC5cXG4tICAgIC8vLyAtIGBwdHJgIG11c3QgcmVtYWluIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIGAnYWAuXFxuLSAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbFxcdTAwM2NiaW5kaW5nczo6cGFnZVxcdTAwM2UpIC1cXHUwMDNlIFNlbGYge1xcbi0gICAgICAgIGxldCBwYWdlID0gUGFnZSB7IHBhZ2U6IHB0ciB9O1xcbi1cXG4tICAgICAgICAvLyBJTlZBUklBTlQ6IFRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIGd1YXJhbnRlZSB0aGF0IGBwdHJgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lXFxuLSAgICAgICAgLy8gYCdhYC5cXG4tICAgICAgICBTZWxmKE1hbnVhbGx5RHJvcDo6bmV3KHBhZ2UpLCBQaGFudG9tRGF0YSlcXG4tICAgIH1cXG4tfVxcbi1cXG4taW1wbFxcdTAwM2MnYVxcdTAwM2UgRGVyZWYgZm9yIEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2Uge1xcbi0gICAgdHlwZSBUYXJnZXQgPSBQYWdlO1xcbi1cXG4tICAgIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4tICAgICAgICBcXHUwMDI2c2VsZi4wXFxuLSAgICB9XFxuLX1cXG4tXFxuLS8vLyBUcmFpdCB0byBiZSBpbXBsZW1lbnRlZCBieSB0eXBlcyB3aGljaCBwcm92aWRlIGFuIFtgSXRlcmF0b3JgXSBpbXBsZW1lbnRhdGlvbiBvZlxcbi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cXG4rLy8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMsIHN1Y2ggYXNcXG4rLy8vIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxcbiBwdWIgdHJhaXQgQXNQYWdlSXRlciB7XFxuICAgICAvLy8gVGhlIFtgSXRlcmF0b3JgXSB0eXBlLCBlLmcuIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxcbi0gICAgdHlwZSBJdGVyXFx1MDAzYydhXFx1MDAzZTogSXRlcmF0b3JcXHUwMDNjSXRlbSA9IEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlXFxuKyAgICB0eXBlIEl0ZXJcXHUwMDNjJ2FcXHUwMDNlOiBJdGVyYXRvclxcdTAwM2NJdGVtID0gXFx1MDAyNidhIFBhZ2VcXHUwMDNlXFxuICAgICB3aGVyZVxcbiAgICAgICAgIFNlbGY6ICdhO1xcbiBcXG4tICAgIC8vLyBSZXR1cm5zIGFuIFtgSXRlcmF0b3JgXSBvZiBbYEJvcnJvd2VkUGFnZWBdIGl0ZW1zIG92ZXIgYWxsIHBhZ2VzIG93bmVkIGJ5IGBzZWxmYC5cXG4rICAgIC8vLyBSZXR1cm5zIGFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXSByZWZlcmVuY2VzIG92ZXIgYWxsIHBhZ2VzIG93bmVkIGJ5IGBzZWxmYC5cXG4gICAgIGZuIHBhZ2VfaXRlcihcXHUwMDI2bXV0IHNlbGYpIC1cXHUwMDNlIFNlbGY6Okl0ZXJcXHUwMDNjJ19cXHUwMDNlO1xcbiB9XFxuIFxcbi0vLy8gQSBwb2ludGVyIHRvIGEgcGFnZSB0aGF0IG93bnMgdGhlIHBhZ2UgYWxsb2NhdGlvbi5cXG4rLy8vIEEgYHN0cnVjdCBwYWdlYC5cXG4rLy8vXFxuKy8vLyBBIGBQYWdlYCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEgc2hhcmVkIHJlZmVyZW5jZSBvciB0aHJvdWdoIGFuIG93bmluZyBbYE93bmVkXFx1MDAzY1BhZ2VcXHUwMDNlYF07IHRoZSBsYXR0ZXJcXG4rLy8vIGZyZWVzIHRoZSBwYWdlIGFsbG9jYXRpb24gd2hlbiBpdCBpcyBkcm9wcGVkLlxcbiAvLy9cXG4gLy8vICMgSW52YXJpYW50c1xcbiAvLy9cXG4tLy8vIFRoZSBwb2ludGVyIGlzIHZhbGlkLCBhbmQgaGFzIG93bmVyc2hpcCBvdmVyIHRoZSBwYWdlLlxcbisvLy8gVGhlIGBQYWdlYCBpcyBiYWNrZWQgYnkgYSB2YWxpZCBgc3RydWN0IHBhZ2VgLlxcbisjW3JlcHIodHJhbnNwYXJlbnQpXVxcbiBwdWIgc3RydWN0IFBhZ2Uge1xcbi0gICAgcGFnZTogTm9uTnVsbFxcdTAwM2NiaW5kaW5nczo6cGFnZVxcdTAwM2UsXFxuKyAgICBwYWdlOiBPcGFxdWVcXHUwMDNjYmluZGluZ3M6OnBhZ2VcXHUwMDNlLFxcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IFBhZ2VzIGhhdmUgbm8gbG9naWMgdGhhdCByZWxpZXMgb24gdGhlbSBzdGF5aW5nIG9uIGEgZ2l2ZW4gdGhyZWFkLCBzbyBtb3ZpbmcgdGhlbSBhY3Jvc3NcXG5AQCAtMTg1LDE5ICsxMjEsMjAgQEAgaW1wbCBQYWdlIHtcXG4gICAgIC8vLyAjIE9rOjpcXHUwMDNjKCksIGtlcm5lbDo6YWxsb2M6OkFsbG9jRXJyb3JcXHUwMDNlKCgpKVxcbiAgICAgLy8vIGBgYFxcbiAgICAgI1tpbmxpbmVdXFxuLSAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NTZWxmLCBBbGxvY0Vycm9yXFx1MDAzZSB7XFxuKyAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NTZWxmXFx1MDAzZSwgQWxsb2NFcnJvclxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgZ2ZwX2ZsYWdzYCwgdGhpcyBjYWxsIG1heSBzbGVlcC4gT3RoZXIgdGhhbiB0aGF0LCBpdFxcbiAgICAgICAgIC8vIGlzIGFsd2F5cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2QuXFxuICAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6YWxsb2NfcGFnZXMoZmxhZ3MuYXNfcmF3KCksIDApIH07XFxuICAgICAgICAgbGV0IHBhZ2UgPSBOb25OdWxsOjpuZXcocGFnZSkub2tfb3IoQWxsb2NFcnJvcik/O1xcbi0gICAgICAgIC8vIElOVkFSSUFOVDogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxcbi0gICAgICAgIC8vIGFsbG9jYXRlZCBwYWdlLiBXZSB0cmFuc2ZlciB0aGF0IG93bmVyc2hpcCB0byB0aGUgbmV3IGBQYWdlYCBvYmplY3QuXFxuLSAgICAgICAgT2soU2VsZiB7IHBhZ2UgfSlcXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIGp1c3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBhIHBhZ2UsIHNvIHdlIG5vdyBoYXZlIG93bmVyc2hpcCBvZiB0aGUgbmV3bHlcXG4rICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgT3duZWRcXHUwMDNjUGFnZVxcdTAwM2VgIG9iamVjdC5cXG4rICAgICAgICAvLyBTaW5jZSBgUGFnZWAgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSBwb2ludGVyIGRpcmVjdGx5LlxcbisgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwYWdlLmNhc3QoKSkgfSlcXG4gICAgIH1cXG4gXFxuICAgICAvLy8gUmV0dXJucyBhIHJhdyBwb2ludGVyIHRvIHRoZSBwYWdlLlxcbiAgICAgcHViIGZuIGFzX3B0cihcXHUwMDI2c2VsZikgLVxcdTAwM2UgKm11dCBiaW5kaW5nczo6cGFnZSB7XFxuLSAgICAgICAgc2VsZi5wYWdlLmFzX3B0cigpXFxuKyAgICAgICAgc2VsZi5wYWdlLmdldCgpXFxuICAgICB9XFxuIFxcbiAgICAgLy8vIEdldCB0aGUgbm9kZSBpZCBjb250YWluaW5nIHRoaXMgcGFnZS5cXG5AQCAtMjA3LDYgKzE0NCwyMCBAQCBwdWIgZm4gbmlkKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBpMzIge1xcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwYWdlX3RvX25pZChzZWxmLmFzX3B0cigpKSB9XFxuICAgICB9XFxuIFxcbisgICAgLy8vIENyZWF0ZSBhIGBcXHUwMDI2UGFnZWAgZnJvbSBhIHJhdyBgc3RydWN0IHBhZ2VgIHBvaW50ZXIuXFxuKyAgICAvLy9cXG4rICAgIC8vLyAjIFNhZmV0eVxcbisgICAgLy8vXFxuKyAgICAvLy8gYHB0cmAgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZCByZWZlcmVuY2Ugd2l0aCBhIGxpZmV0aW1lIG9mIGAnYWAuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXdcXHUwMDNjJ2FcXHUwMDNlKHB0cjogKmNvbnN0IGJpbmRpbmdzOjpwYWdlKSAtXFx1MDAzZSBcXHUwMDI2J2EgU2VsZiB7XFxuKyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgcmVmZXJzIHRvIGEgdmFsaWQgYHN0cnVjdCBwYWdlYCwgc29cXG4rICAgICAgICAvLyB0aGUgcmV0dXJuZWQgcmVmZXJlbmNlIHVwaG9sZHMgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBQYWdlYC5cXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIG5vdCBudWxsIGFuZCBpcyBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZFxcbisgICAgICAgIC8vIHJlZmVyZW5jZS5cXG4rICAgICAgICB1bnNhZmUgeyBcXHUwMDI2KnB0ci5jYXN0KCkgfVxcbisgICAgfVxcbitcXG4gICAgIC8vLyBSdW5zIGEgcGllY2Ugb2YgY29kZSB3aXRoIHRoaXMgcGFnZSBtYXBwZWQgdG8gYW4gYWRkcmVzcy5cXG4gICAgIC8vL1xcbiAgICAgLy8vIFRoZSBwYWdlIGlzIHVubWFwcGVkIHdoZW4gdGhpcyBjYWxsIHJldHVybnMuXFxuQEAgLTM3MywxMCArMzI0LDExIEBAIHB1YiB1bnNhZmUgZm4gY29weV9mcm9tX3VzZXJfc2xpY2VfcmF3KFxcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsIERyb3AgZm9yIFBhZ2Uge1xcbitpbXBsIE93bmFibGUgZm9yIFBhZ2Uge1xcbiAgICAgI1tpbmxpbmVdXFxuLSAgICBmbiBkcm9wKFxcdTAwMjZtdXQgc2VsZikge1xcbi0gICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgd2UgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIHBhZ2UgYW5kIGNhbiBmcmVlIGl0Llxcbi0gICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXMoc2VsZi5wYWdlLmFzX3B0cigpLCAwKSB9O1xcbisgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbisgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZVxcbisgICAgICAgIC8vIGl0LiBTaW5jZSBQYWdlIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcmF3IHBvaW50ZXIgZGlyZWN0bHkuXFxuKyAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyh0aGlzLmFzX3B0cigpLmNhc3QoKSwgMCkgfTtcXG4gICAgIH1cXG4gfVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wY2kucnMgYi9ydXN0L2tlcm5lbC9wY2kucnNcXG5pbmRleCA1MDcxY2FlNjU0M2ZkLi5lYTllZjk5Y2VjYjA3IDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3BjaS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BjaS5yc1xcbkBAIC0xOSw2ICsxOSwxMCBAQFxcbiAgICAgfSxcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzdHI6OkNTdHIsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuICAgICBUaGlzTW9kdWxlLCAvL1xcbiB9O1xcbkBAIC00ODEsNyArNDg1LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXG4gaW1wbFxcdTAwM2MnYVxcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXFx1MDAzYydhXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY2RldmljZTo6Q29yZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBjaV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTQ5Myw2ICs0OTcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XFxuK1xcbiBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBBc1JlZlxcdTAwM2NkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycyBiL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcXG5pbmRleCA5NzlhOTcxOGYxNTNkLi4wNjdmNjhiOTllOGM1IDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXFxuQEAgLTcsNyArNywxNCBAQFxcbiAvLyEgQyBoZWFkZXI6IFtgaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oKSBhbmRcXG4gLy8hIFtgaW5jbHVkZS9saW51eC9waWQuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWQuaClcXG4gXFxuLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0eXBlczo6T3BhcXVlfTtcXG4rdXNlIGNyYXRlOjp7XFxuKyAgICBiaW5kaW5ncyxcXG4rICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgT3BhcXVlLCAvL1xcbisgICAgfSwgLy9cXG4rfTtcXG4gdXNlIGNvcmU6OnB0cjtcXG4gXFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBwaWRfbmFtZXNwYWNlYC4gVGhyZWFkIHNhZmUuXFxuQEAgLTQxLDcgKzQ4LDcgQEAgcHViIHVuc2FmZSBmbiBmcm9tX3B0clxcdTAwM2MnYVxcdTAwM2UocHRyOiAqY29uc3QgYmluZGluZ3M6OnBpZF9uYW1lc3BhY2UpIC1cXHUwMDNlIFxcdTAwMjYnYSBTZWxmIHtcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYFBpZE5hbWVzcGFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cXG5AQCAtNTUsNiArNjIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjUGlkTmFtZXNwYWNlXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY1BpZE5hbWVzcGFjZVxcdTAwM2VgIGZyb21cXG4rLy8gYSBgXFx1MDAyNlBpZE5hbWVzcGFjZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fVxcbitcXG4gLy8gU0FGRVRZOlxcbiAvLyAtIGBQaWROYW1lc3BhY2U6OmRlY19yZWZgIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLlxcbiAvLyAtIEl0IGlzIG9rYXkgdG8gc2VuZCBvd25lcnNoaXAgb2YgYFBpZE5hbWVzcGFjZWAgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXFxuaW5kZXggZDQxNTU1YTRiMzFkMi4uYTRkZGFhMWNjM2E0MCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXFxuQEAgLTI0LDYgKzI0LDEwIEBAXFxuICAgICB9LFxcbiAgICAgb2YsXFxuICAgICBwcmVsdWRlOjoqLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiAgICAgVGhpc01vZHVsZSwgLy9cXG4gfTtcXG5AQCAtNTE5LDcgKzUyMyw3IEBAIHB1YiBmbiBvcHRpb25hbF9pcnFfYnlfbmFtZShcXHUwMDI2c2VsZiwgbmFtZTogXFx1MDAyNkNTdHIpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NJcnFSZXF1ZXN0XFx1MDAzYydfXFx1MDAzZVxcdTAwM2Uge1xcbiBpbXBsXFx1MDAzYydhXFx1MDAzZSBjcmF0ZTo6ZG1hOjpEZXZpY2VcXHUwMDNjJ2FcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjZGV2aWNlOjpDb3JlXFx1MDAzYydhXFx1MDAzZVxcdTAwM2Uge31cXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xcbkBAIC01MzEsNiArNTM1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkRldmljZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZVxcdTAwM2UgZm9yIERldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3B3bS5ycyBiL3J1c3Qva2VybmVsL3B3bS5yc1xcbmluZGV4IDZjOWQ2NjcwMDllZjcuLjJkMWNkNzRkZDk4ZTEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcHdtLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvcHdtLnJzXFxuQEAgLTEzLDcgKzEzLDExIEBAXFxuICAgICBkZXZyZXMsXFxuICAgICBlcnJvcjo6e3NlbGYsIHRvX3Jlc3VsdH0sXFxuICAgICBwcmVsdWRlOjoqLFxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFSZWYsXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXFxuIH07XFxuIHVzZSBjb3JlOjp7XFxuQEAgLTYyOSw3ICs2MzMsNyBAQCBwdWIgZm4gbmV3XFx1MDAzYydhXFx1MDAzZShcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbXBsZW1lbnRzIHJlZmNvdW50aW5nIGZvciBgQ2hpcGAgdXNpbmcgdGhlIGVtYmVkZGVkIGBzdHJ1Y3QgZGV2aWNlYC5cXG4tdW5zYWZlIGltcGxcXHUwMDNjVDogUHdtT3BzXFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBDaGlwXFx1MDAzY1RcXHUwMDNlIHtcXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogUHdtT3BzXFx1MDAzZSBSZWZDb3VudGVkIGZvciBDaGlwXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYHNlbGYuMC5nZXQoKWAgcG9pbnRzIHRvIGEgdmFsaWQgYHB3bV9jaGlwYCBiZWNhdXNlIGBzZWxmYCBleGlzdHMuXFxuQEAgLTY0Nyw2ICs2NTEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY0NoaXBcXHUwMDNjVFxcdTAwM2VcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjQ2hpcFxcdTAwM2NUXFx1MDAzZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkNoaXBcXHUwMDNjVFxcdTAwM2VgLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBQd21PcHNcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcXHUwMDNjVFxcdTAwM2Uge31cXG4rXFxuIC8vIFNBRkVUWTogYENoaXBgIGlzIGEgd3JhcHBlciBhcm91bmQgYCptdXQgYmluZGluZ3M6OnB3bV9jaGlwYC4gVGhlIHVuZGVybHlpbmcgQ1xcbiAvLyBzdHJ1Y3R1cmUncyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCdzIGRldmljZSBtb2RlbFxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5ycyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xcbmluZGV4IGI3MjFiMmUwMGI5ODYuLmU2ZmZlN2M2NTBjMzkgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXFxuQEAgLTExLDcgKzExLDcgQEBcXG4gLy8hIHVuZGVybHlpbmcgb2JqZWN0LCBidXQgdGhpcyByZWZjb3VudCBpcyBpbnRlcm5hbCB0byB0aGUgb2JqZWN0LiBJdCBlc3NlbnRpYWxseSBpcyBhIFJ1c3RcXG4gLy8hIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgZ2V0X2AgYW5kIGBwdXRfYCBwYXR0ZXJuIHVzZWQgaW4gQyBmb3IgcmVmZXJlbmNlIGNvdW50aW5nLlxcbiAvLyFcXG4tLy8hIFRvIG1ha2UgdXNlIG9mIFtgQVJlZlxcdTAwM2NNeVR5cGVcXHUwMDNlYF0sIGBNeVR5cGVgIG5lZWRzIHRvIGltcGxlbWVudCBbYEFsd2F5c1JlZkNvdW50ZWRgXS4gSXQgaXMgYSB0cmFpdFxcbisvLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmXFx1MDAzY015VHlwZVxcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XFxuIC8vISBmb3IgYWNjZXNzaW5nIHRoZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IG9mIHRoZSBgTXlUeXBlYCB0eXBlLlxcbiAvLyFcXG4gLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmNcXG5AQCAtMjMsMjYgKzIzLDM1IEBAXFxuICAgICBvcHM6OkRlcmVmLFxcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xcbiB9O1xcbit1c2Uga2VybmVsOjp0eXBlczo6e1xcbisgICAgT3duYWJsZVJlZkNvdW50ZWQsXFxuKyAgICBPd25lZCwgLy9cXG4rfTtcXG4gXFxuLS8vLyBUeXBlcyB0aGF0IGFyZSBfYWx3YXlzXyByZWZlcmVuY2UgY291bnRlZC5cXG4rLy8vIFR5cGVzIHRoYXQgYXJlIGludGVybmFsbHkgcmVmZXJlbmNlIGNvdW50ZWQuXFxuIC8vL1xcbiAvLy8gSXQgYWxsb3dzIHN1Y2ggdHlwZXMgdG8gZGVmaW5lIHRoZWlyIG93biBjdXN0b20gcmVmIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGZ1bmN0aW9ucy5cXG4tLy8vIEFkZGl0aW9uYWxseSwgaXQgYWxsb3dzIHVzZXJzIHRvIGNvbnZlcnQgZnJvbSBhIHNoYXJlZCByZWZlcmVuY2UgYFxcdTAwMjZUYCB0byBhbiBvd25lZCByZWZlcmVuY2VcXG4tLy8vIFtgQVJlZlxcdTAwM2NUXFx1MDAzZWBdLlxcbiAvLy9cXG4gLy8vIFRoaXMgaXMgdXN1YWxseSBpbXBsZW1lbnRlZCBieSB3cmFwcGVycyB0byBleGlzdGluZyBzdHJ1Y3R1cmVzIG9uIHRoZSBDIHNpZGUgb2YgdGhlIGNvZGUuIEZvclxcbiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkXFxuIC8vLyBpbnN0YW5jZXMgb2YgYSB0eXBlLlxcbiAvLy9cXG4rLy8vIE5vdGU6IEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuIFtgQVJlZlxcdTAwM2NTZWxmXFx1MDAzZWBdLiBJdCByZXF1aXJlcyBhblxcbisvLy8gaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGFuZCBwcm92aWRlcyBvbmx5IHNoYXJlZCByZWZlcmVuY2VzLiBJZiB1bmlxdWUgcmVmZXJlbmNlcyBhcmUgcmVxdWlyZWRcXG4rLy8vIFtgT3duYWJsZWBdKGNyYXRlOjp0eXBlczo6T3duYWJsZSkgc2hvdWxkIGJlIGltcGxlbWVudGVkIHdoaWNoIGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuXFxuKy8vLyBbYE93bmVkXFx1MDAzY1NlbGZcXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkuIEltcGxlbWVudGluZyB0aGUgdHJhaXRcXG4rLy8vIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBhbGxvd3MgdG8gY29udmVydCBiZXR3ZWVuIHVuaXF1ZSBhbmRcXG4rLy8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWRcXHUwMDNjU2VsZlxcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKSBhbmRcXG4rLy8vIFtgQVJlZlxcdTAwM2NTZWxmXFx1MDAzZWBdKS5cXG4rLy8vXFxuIC8vLyAjIFNhZmV0eVxcbiAvLy9cXG4gLy8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCBrZWVwIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5XFxuIC8vLyBhdCBsZWFzdCB1bnRpbCBtYXRjaGluZyBkZWNyZW1lbnRzIGFyZSBwZXJmb3JtZWQuXFxuIC8vL1xcbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBhbGwgaW5zdGFuY2VzIGFyZSByZWZlcmVuY2UtY291bnRlZC4gKE90aGVyd2lzZSB0aGV5XFxuLS8vLyB3b24ndCBiZSBhYmxlIHRvIGhvbm91ciB0aGUgcmVxdWlyZW1lbnQgdGhhdCBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSBrZWVwIHRoZSBvYmplY3RcXG4tLy8vIGFsaXZlLilcXG4tcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcXG4rLy8vIHdvbid0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdCBhbGl2ZS4pXFxuK3B1YiB1bnNhZmUgdHJhaXQgUmVmQ291bnRlZCB7XFxuICAgICAvLy8gSW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvYmplY3QuXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKTtcXG4gXFxuQEAgLTU1LDExICs2NCwyNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xcbiAgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGVyZSB3YXMgYSBwcmV2aW91cyBtYXRjaGluZyBpbmNyZW1lbnQgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCxcXG4gICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heVxcbiAgICAgLy8vIHJlc3VsdCBpbiB0aGUgb2JqZWN0IGJlaW5nIGZyZWVkKSwgdW5sZXNzIHRoZSBjYWxsZXIgb3ducyBhbm90aGVyIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnRcXG4tICAgIC8vLyAoZS5nLiwgaXQgY2FsbHMgW2BBbHdheXNSZWZDb3VudGVkOjppbmNfcmVmYF0gdHdpY2UsIHRoZW4gY2FsbHNcXG4tICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cXG4rICAgIC8vLyAoZS5nLiwgaXQgY2FsbHMgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0gdHdpY2UsIHRoZW4gY2FsbHMgW2BSZWZDb3VudGVkOjpkZWNfcmVmYF0gb25jZSkuXFxuICAgICB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpO1xcbiB9XFxuIFxcbisvLy8gQWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIHR5cGUuXFxuKy8vL1xcbisvLy8gSXQgYWxsb3dzIGRlcml2aW5nIGEgY291bnRlZCByZWZlcmVuY2UgW2BBUmVmXFx1MDAzY1RcXHUwMDNlYF0gZnJvbSBhIGBcXHUwMDI2VGAuXFxuKy8vL1xcbisvLy8gVGhpcyBwcm92aWRlcyBzb21lIGNvbnZlbmllbmNlLCBidXQgaXQgYWxsb3dzIFxcXCJlc2NhcGluZ1xcXCIgYm9ycm93IGNoZWNrcyBvbiBgXFx1MDAyNlRgLiBBcyBpdFxcbisvLy8gY29tcGxpY2F0ZXMgYXR0ZW1wdHMgdG8gZW5zdXJlIHRoYXQgYSByZWZlcmVuY2UgdG8gVCBpcyB1bmlxdWUsIGl0IGlzIG9wdGlvbmFsIHRvIHByb3ZpZGUgZm9yXFxuKy8vLyBbYFJlZkNvdW50ZWRgXSB0eXBlcy4gU2VlICpTYWZldHkqIGJlbG93LlxcbisvLy9cXG4rLy8vICMgU2FmZXR5XFxuKy8vL1xcbisvLy8gSW1wbGVtZW50ZXJzIG11c3QgZW5zdXJlIHRoYXQgbm8gc2FmZXR5IGludmFyaWFudHMgYXJlIHZpb2xhdGVkIGJ5IHVwZ3JhZGluZyBhbiBgXFx1MDAyNlRgIHRvIGFuXFxuKy8vLyBbYEFSZWZcXHUwMDNjVFxcdTAwM2VgXS4gSW4gcGFydGljdWxhciB0aGF0IGltcGxpZXMgW2BBbHdheXNSZWZDb3VudGVkYF0gYW5kIFtgY3JhdGU6OnR5cGVzOjpPd25hYmxlYF1cXG4rLy8vIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBmb3IgdGhlIHNhbWUgdHlwZSwgYXMgdGhpcyB3b3VsZCBhbGxvdyB2aW9sYXRpbmcgdGhlIHVuaXF1ZW5lc3MgZ3VhcmFudGVlXFxuKy8vLyBvZiBbYGNyYXRlOjp0eXBlczo6T3duZWRcXHUwMDNjVFxcdTAwM2VgXSBieSBkZXJlZmVyZW5jaW5nIGl0IGludG8gYW4gYFxcdTAwMjZUYCBhbmQgb2J0YWluaW5nIGFuIFtgQVJlZmBdIGZyb21cXG4rLy8vIHRoYXQuXFxuK3B1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZDogUmVmQ291bnRlZCB7fVxcbitcXG4gLy8vIEFuIG93bmVkIHJlZmVyZW5jZSB0byBhbiBhbHdheXMtcmVmZXJlbmNlLWNvdW50ZWQgb2JqZWN0LlxcbiAvLy9cXG4gLy8vIFRoZSBvYmplY3QncyByZWZlcmVuY2UgY291bnQgaXMgYXV0b21hdGljYWxseSBkZWNyZW1lbnRlZCB3aGVuIGFuIGluc3RhbmNlIG9mIFtgQVJlZmBdIGlzXFxuQEAgLTcwLDcgKzk1LDcgQEAgcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcXG4gLy8vXFxuIC8vLyBUaGUgcG9pbnRlciBzdG9yZWQgaW4gYHB0cmAgaXMgbm9uLW51bGwgYW5kIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIFtgQVJlZmBdIGluc3RhbmNlLiBJblxcbiAvLy8gcGFydGljdWxhciwgdGhlIFtgQVJlZmBdIGluc3RhbmNlIG93bnMgYW4gaW5jcmVtZW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdCdzIHJlZmVyZW5jZSBjb3VudC5cXG4tcHViIHN0cnVjdCBBUmVmXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIHtcXG4rcHViIHN0cnVjdCBBUmVmXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIHtcXG4gICAgIHB0cjogTm9uTnVsbFxcdTAwM2NUXFx1MDAzZSxcXG4gICAgIF9wOiBQaGFudG9tRGF0YVxcdTAwM2NUXFx1MDAzZSxcXG4gfVxcbkBAIC03OSwxOSArMTA0LDE5IEBAIHB1YiBzdHJ1Y3QgQVJlZlxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSB7XFxuIC8vIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFxcdTAwMjZUYCAod2hpY2ggaXMgc2FmZSBiZWNhdXNlIGBUYCBpcyBgU3luY2ApOyBhZGRpdGlvbmFsbHksIGl0IG5lZWRzXFxuIC8vIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGFuIGBBUmVmXFx1MDAzY1RcXHUwMDNlYCBtYXkgdWx0aW1hdGVseSBhY2Nlc3MgYFRgIHVzaW5nIGFcXG4gLy8gbXV0YWJsZSByZWZlcmVuY2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC5cXG4tdW5zYWZlIGltcGxcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXFx1MDAzZSBTZW5kIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuK3Vuc2FmZSBpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFxcdTAwM2UgU2VuZCBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7fVxcbiBcXG4gLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYFxcdTAwMjZBUmVmXFx1MDAzY1RcXHUwMDNlYCB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBgU3luY2BcXG4gLy8gYmVjYXVzZSBpdCBlZmZlY3RpdmVseSBtZWFucyBzaGFyaW5nIGBcXHUwMDI2VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LFxcbiAvLyBpdCBuZWVkcyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhIGBcXHUwMDI2QVJlZlxcdTAwM2NUXFx1MDAzZWAgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW5cXG4gLy8gYEFSZWZcXHUwMDNjVFxcdTAwM2VgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yXFxuIC8vIGV4YW1wbGUsIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8gYW5kIGBUYCBpcyBkcm9wcGVkLlxcbi11bnNhZmUgaW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgU3luYyArIFNlbmRcXHUwMDNlIFN5bmMgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXFx1MDAzZSBTeW5jIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbiAvLyBFdmVuIGlmIGBUYCBpcyBwaW5uZWQsIHBvaW50ZXJzIHRvIGBUYCBjYW4gc3RpbGwgbW92ZS5cXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSBVbnBpbiBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7fVxcbitpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIFVucGluIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbitpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BBUmVmYF0uXFxuICAgICAvLy9cXG4gICAgIC8vLyBJdCB0YWtlcyBvdmVyIGFuIGluY3JlbWVudCBvZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cXG5AQCAtMTIwLDE5ICsxNDUsMjEgQEAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGxcXHUwMDNjVFxcdTAwM2UpIC1cXHUwMDNlIFNlbGYge1xcbiAgICAgLy8vXFxuICAgICAvLy8gYGBgXFxuICAgICAvLy8gdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcXG4tICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07XFxuKyAgICAvLy8gdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9O1xcbiAgICAgLy8vXFxuICAgICAvLy8gc3RydWN0IEVtcHR5IHt9XFxuICAgICAvLy9cXG4tICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy5cXG4tICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7XFxuKyAgICAvLy8gLy8gU0FGRVRZOiBUaGUgYFJlZkNvdW50ZWRgIGltcGxlbWVudGF0aW9uIGZvciBgRW1wdHlgIGRvZXMgbm90IGNvdW50IHJlZmVyZW5jZXMgYW5kIG5ldmVyXFxuKyAgICAvLy8gLy8gZnJlZXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0LiBUaHVzIHdlIGNhbiBhY3QgYXMgb3duaW5nIGFuIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnQgZm9yXFxuKyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLlxcbisgICAgLy8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEVtcHR5IHtcXG4gICAgIC8vLyAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge31cXG4gICAgIC8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYoX29iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge31cXG4gICAgIC8vLyB9XFxuICAgICAvLy9cXG4gICAgIC8vLyBsZXQgbXV0IGRhdGEgPSBFbXB0eSB7fTtcXG4gICAgIC8vLyBsZXQgcHRyID0gTm9uTnVsbDo6XFx1MDAzY0VtcHR5XFx1MDAzZTo6bmV3KFxcdTAwMjZtdXQgZGF0YSkudW53cmFwKCk7XFxuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXFxuKyAgICAvLy8gLy8gU0FGRVRZOiBXZSBrZWVwIGBkYXRhYCBhcm91bmQgbG9uZ2VyIHRoYW4gdGhlIGBBUmVmYC5cXG4gICAgIC8vLyBsZXQgZGF0YV9yZWY6IEFSZWZcXHUwMDNjRW1wdHlcXHUwMDNlID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9O1xcbiAgICAgLy8vIGxldCByYXdfcHRyOiBOb25OdWxsXFx1MDAzY0VtcHR5XFx1MDAzZSA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTtcXG4gICAgIC8vL1xcbkBAIC0xNDMsNyArMTcwLDcgQEAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtXFx1MDAzZSBOb25OdWxsXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSBDbG9uZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgZm4gY2xvbmUoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFNlbGYge1xcbiAgICAgICAgIHNlbGYuaW5jX3JlZigpO1xcbiAgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBpbmNyZW1lbnRlZCB0aGUgcmVmY291bnQgYWJvdmUuXFxuQEAgLTE1MSw3ICsxNzgsNyBAQCBmbiBjbG9uZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgU2VsZiB7XFxuICAgICB9XFxuIH1cXG4gXFxuLWltcGxcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFxcdTAwM2UgRGVyZWYgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbitpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIERlcmVmIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIHR5cGUgVGFyZ2V0ID0gVDtcXG4gXFxuICAgICBmbiBkZXJlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNlNlbGY6OlRhcmdldCB7XFxuQEAgLTE2OCw3ICsxOTUsMTQgQEAgZm4gZnJvbShiOiBcXHUwMDI2VCkgLVxcdTAwM2UgU2VsZiB7XFxuICAgICB9XFxuIH1cXG4gXFxuLWltcGxcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFxcdTAwM2UgRHJvcCBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVJlZkNvdW50ZWRcXHUwMDNlIEZyb21cXHUwMDNjT3duZWRcXHUwMDNjVFxcdTAwM2VcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZnJvbShiOiBPd25lZFxcdTAwM2NUXFx1MDAzZSkgLVxcdTAwM2UgU2VsZiB7XFxuKyAgICAgICAgVDo6aW50b19zaGFyZWQoYilcXG4rICAgIH1cXG4rfVxcbitcXG4raW1wbFxcdTAwM2NUOiBSZWZDb3VudGVkXFx1MDAzZSBEcm9wIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBgQVJlZmAgb3ducyB0aGUgcmVmZXJlbmNlIHdlJ3JlIGFib3V0IHRvXFxuICAgICAgICAgLy8gZGVjcmVtZW50LlxcbkBAIC0xNzgsMTkgKzIxMiwxOSBAQCBmbiBkcm9wKFxcdTAwMjZtdXQgc2VsZikge1xcbiBcXG4gaW1wbFxcdTAwM2NULCBVXFx1MDAzZSBQYXJ0aWFsRXFcXHUwMDNjQVJlZlxcdTAwM2NVXFx1MDAzZVxcdTAwM2UgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2VcXG4gd2hlcmVcXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQgKyBQYXJ0aWFsRXFcXHUwMDNjVVxcdTAwM2UsXFxuLSAgICBVOiBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgVDogUmVmQ291bnRlZCArIFBhcnRpYWxFcVxcdTAwM2NVXFx1MDAzZSxcXG4rICAgIFU6IFJlZkNvdW50ZWQsXFxuIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gZXEoXFx1MDAyNnNlbGYsIG90aGVyOiBcXHUwMDI2QVJlZlxcdTAwM2NVXFx1MDAzZSkgLVxcdTAwM2UgYm9vbCB7XFxuICAgICAgICAgVDo6ZXEoXFx1MDAyNioqc2VsZiwgXFx1MDAyNioqb3RoZXIpXFxuICAgICB9XFxuIH1cXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgRXFcXHUwMDNlIEVxIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZCArIEVxXFx1MDAzZSBFcSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7fVxcbiBcXG4gaW1wbFxcdTAwM2NULCBVXFx1MDAzZSBQYXJ0aWFsRXFcXHUwMDNjXFx1MDAyNidfIFVcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIHdoZXJlXFxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICsgUGFydGlhbEVxXFx1MDAzY1VcXHUwMDNlLFxcbisgICAgVDogUmVmQ291bnRlZCArIFBhcnRpYWxFcVxcdTAwM2NVXFx1MDAzZSxcXG4ge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBlcShcXHUwMDI2c2VsZiwgb3RoZXI6IFxcdTAwMjZcXHUwMDI2VSkgLVxcdTAwM2UgYm9vbCB7XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3Rhc2sucnMgYi9ydXN0L2tlcm5lbC90YXNrLnJzXFxuaW5kZXggMzgyNzNmNGVlZGI1MS4uNjI1OTQzMGIwY2EzMSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC90YXNrLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvdGFzay5yc1xcbkBAIC0xMCw3ICsxMCwxMiBAQFxcbiAgICAgcGlkX25hbWVzcGFjZTo6UGlkTmFtZXNwYWNlLFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN5bmM6OmFyZWY6OkFSZWYsXFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcXG4rICAgICAgICBPcGFxdWUsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuIH07XFxuIHVzZSBjb3JlOjp7XFxuICAgICBvcHM6OkRlcmVmLFxcbkBAIC0zNDcsNyArMzUyLDcgQEAgcHViIGZuIGdyb3VwX2xlYWRlcihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNlRhc2sge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYFRhc2tgIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFRhc2sge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC0zNjEsNiArMzY2LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjVGFza1xcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNlRhc2tgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHt9XFxuK1xcbiBpbXBsIFBhcnRpYWxFcSBmb3IgVGFzayB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGVxKFxcdTAwMjZzZWxmLCBvdGhlcjogXFx1MDAyNlNlbGYpIC1cXHUwMDNlIGJvb2wge1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC90eXBlcy5ycyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXFxuaW5kZXggYWMzMTZmZDdiNTM4Zi4uNmFhNzYwOTUyY2I2MyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC90eXBlcy5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXFxuQEAgLTE1LDYgKzE1LDE4IEBAXFxuIHB1YiBtb2QgZm9yX2x0O1xcbiBwdWIgdXNlIGZvcl9sdDo6Rm9yTHQ7XFxuIFxcbitwdWIgdXNlIGNyYXRlOjp7XFxuKyAgICBvd25lZDo6e1xcbisgICAgICAgIE93bmFibGUsXFxuKyAgICAgICAgT3duYWJsZVJlZkNvdW50ZWQsXFxuKyAgICAgICAgT3duZWQsIC8vXFxuKyAgICB9LFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sIC8vXFxuK307XFxuK1xcbiAvLy8gVXNlZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgdG8gYW5kIGZyb20gZm9yZWlnbiAobm9uLVJ1c3QpIGxhbmd1YWdlcy5cXG4gLy8vXFxuIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xcbmluZGV4IDdhZmYwYzgyZDBhZmMuLjU5MzUwYzZiMGRmMmEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvdXNiLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvdXNiLnJzXFxuQEAgLTE4LDcgKzE4LDEwIEBAXFxuICAgICAgICAgdG9fcmVzdWx0LCAvL1xcbiAgICAgfSxcXG4gICAgIHByZWx1ZGU6OiosXFxuLSAgICBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiAgICAgVGhpc01vZHVsZSwgLy9cXG4gfTtcXG5AQCAtMzkyLDcgKzM5NSw3IEBAIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNkRldmljZSB7XFxuIH1cXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJbnRlcmZhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgSW50ZXJmYWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfaW50ZXJmYWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxcbkBAIC00MDYsNiArNDA5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0ludGVyZmFjZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkludGVyZmFjZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7fVxcbitcXG4gLy8gU0FGRVRZOiBBIGBJbnRlcmZhY2VgIGlzIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZCBhbmQgY2FuIGJlIHJlbGVhc2VkIGZyb20gYW55IHRocmVhZC5cXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgSW50ZXJmYWNlIHt9XFxuIFxcbkBAIC00NDMsNyArNDUwLDcgQEAgZm4gYXNfcmF3KFxcdTAwMjZzZWxmKSAtXFx1MDAzZSAqbXV0IGJpbmRpbmdzOjp1c2JfZGV2aWNlIHtcXG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfZGV2aWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxcbkBAIC00NTcsNiArNDY0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkRldmljZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZVxcdTAwM2UgZm9yIERldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xcbmluZGV4IDdlMjUzYjZmMjk5Y2UuLjc3NjczYjhlYTQ1ZmIgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXFxuQEAgLTE5Miw3ICsxOTIsNyBAQFxcbiAgICAgc3luYzo6e1xcbiAgICAgICAgIGFyZWY6OntcXG4gICAgICAgICAgICAgQVJlZixcXG4tICAgICAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cXG4rICAgICAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4gICAgICAgICB9LFxcbiAgICAgICAgIEFyYyxcXG4gICAgICAgICBMb2NrQ2xhc3NLZXksIC8vXFxuQEAgLTk1NCw3ICs5NTQsNyBAQCB1bnNhZmUgaW1wbFxcdTAwM2NULCBjb25zdCBJRDogdTY0XFx1MDAzZSBSYXdEZWxheWVkV29ya0l0ZW1cXHUwMDNjSURcXHUwMDNlIGZvciBQaW5cXHUwMDNjS0JveFxcdTAwM2NUXFx1MDAzZVxcdTAwM2VcXG4gLy8gICAgIGltcGxlbWVudGF0aW9uIG9mIGBXb3JrSXRlbVBvaW50ZXJgIGZvciBgQVJlZlxcdTAwM2NUXFx1MDAzZWAuXFxuIHVuc2FmZSBpbXBsXFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcXHUwMDNlIFdvcmtJdGVtUG9pbnRlclxcdTAwM2NJRFxcdTAwM2UgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2VcXG4gd2hlcmVcXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICBUOiBSZWZDb3VudGVkLFxcbiAgICAgVDogV29ya0l0ZW1cXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXFx1MDAzZSxcXG4gICAgIFQ6IEhhc1dvcmtcXHUwMDNjVCwgSURcXHUwMDNlLFxcbiB7XFxuQEAgLTk4Nyw3ICs5ODcsNyBAQCB1bnNhZmUgaW1wbFxcdTAwM2NULCBjb25zdCBJRDogdTY0XFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcXHUwMDNjSURcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIC8vIHJlcXVpcmVtZW50cyBvZiBgV29ya0l0ZW1Qb2ludGVyYC5cXG4gdW5zYWZlIGltcGxcXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFxcdTAwM2UgUmF3V29ya0l0ZW1cXHUwMDNjSURcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIHdoZXJlXFxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgVDogUmVmQ291bnRlZCxcXG4gICAgIFQ6IFdvcmtJdGVtXFx1MDAzY0lELCBQb2ludGVyID0gU2VsZlxcdTAwM2UsXFxuICAgICBUOiBIYXNXb3JrXFx1MDAzY1QsIElEXFx1MDAzZSxcXG4ge1xcbkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB1bnNhZmUgaW1wbFxcdTAwM2NULCBjb25zdCBJRDogdTY0XFx1MDAzZSBSYXdEZWxheWVkV29ya0l0ZW1cXHUwMDNjSURcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIHdoZXJlXFxuICAgICBUOiBXb3JrSXRlbVxcdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcXHUwMDNlLFxcbiAgICAgVDogSGFzRGVsYXllZFdvcmtcXHUwMDNjVCwgSURcXHUwMDNlLFxcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgIFQ6IFJlZkNvdW50ZWQsXFxuIHtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6MTI6MzguNzY3NjMzNzc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTc3OTk0MzM2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgaW4gdGhlIGtlcm5lbC4gSXQgaW50cm9kdWNlcyB0aGUgYE93bmVkYCBhbmQgYE93bmFibGVgIHRyYWl0cywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgdXBkYXRlcyB0aGUgYFBhZ2VgIGFic3RyYWN0aW9uIGFuZCBpdHMgdXNlcnMgKGxpa2UgQW5kcm9pZCBCaW5kZXIpIHRvIHVzZSB0aGUgbmV3IHR5cGVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkzNzAyZmRjMzViNDI0MmVmZGNjNTMyNjNkOTkzMWYzZDVlYWQ3NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxMzoxMjozNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuaW5kZXggZTgyYTU1MjM4MDRmNC4uYzU1YmEyOWFiZWE3MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuKysrIGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzXG5AQCAtMzMsNyArMzMsNyBAQFxuICAgICBzeW5jOjp7YXJlZjo6QVJlZiwgTXV0ZXgsIFNwaW5Mb2NrfSxcbiAgICAgdGFzazo6UGlkLFxuICAgICB0cmFuc211dGU6OkZyb21CeXRlcyxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcbisgICAgdHlwZXM6OntPcGFxdWUsIE93bmVkfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLFxuIH07XG4gXG5AQCAtMTk4LDcgKzE5OCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIElubmVyIHt9XG4gI1tyZXByKEMpXVxuIHN0cnVjdCBQYWdlSW5mbyB7XG4gICAgIGxydTogYmluZGluZ3M6Omxpc3RfaGVhZCxcbi0gICAgcGFnZTogT3B0aW9uXHUwMDNjUGFnZVx1MDAzZSxcbisgICAgcGFnZTogT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlLFxuICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsXG4gfVxuIFxuQEAgLTIwNiw3ICsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHtcbiAgICAgLy8vICMgU2FmZXR5XG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0LlxuLSAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IFBhZ2UpIHtcbisgICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBPd25lZFx1MDAzY1BhZ2VcdTAwM2UpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXHUwMDI2cmF3IG11dCAoKm1lKS5wYWdlIH07XG4gXG5AQCAtMjI5LDEzICsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlXHUwMDNjJ2FcdTAwM2UobWU6ICpjb25zdCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NcdTAwMjYnYSBQYWdlXHUwMDNlIHtcbiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBcdTAwMjZyYXcgY29uc3QgKCptZSkucGFnZSB9O1xuIFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBmb3IgcmVhZGluZy5cbi0gICAgICAgIHVuc2FmZSB7ICgqcHRyKS5hc19yZWYoKSB9XG4rICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfZGVyZWYoKSB9XG4gICAgIH1cbiBcbiAgICAgLy8vICMgU2FmZXR5XG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2sgZm9yIHRoZSBkdXJhdGlvbiBvZiAnYS5cbi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NQYWdlXHUwMDNlIHtcbisgICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVx1MDAzZSBPcHRpb25cdTAwM2NPd25lZFx1MDAzY1BhZ2VcdTAwM2VcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cbiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbmluZGV4IGNkNDIwM2YyN2FlZDAuLmM3YjliMDY5Y2Y3NWQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xuQEAgLTE2OSw3ICsxNjksNyBAQCB1bnNhZmUgZm4gcmVhbGxvYyhcbiB9XG4gXG4gaW1wbCBWbWFsbG9jIHtcbi0gICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgcGFnZTo6Qm9ycm93ZWRQYWdlYF0uXG4rICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2UuXG4gICAgIC8vL1xuICAgICAvLy8gIyBFeGFtcGxlc1xuICAgICAvLy9cbkBAIC0yMDIsMjAgKzIwMiwxNyBAQCBpbXBsIFZtYWxsb2Mge1xuICAgICAvLy9cbiAgICAgLy8vIC0gYHB0cmAgbXVzdCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxuICAgICAvLy8gLSBgcHRyYCBtdXN0IHJlbWFpbiB2YWxpZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiBgJ2FgLlxuLSAgICBwdWIgdW5zYWZlIGZuIHRvX3BhZ2VcdTAwM2MnYVx1MDAzZShwdHI6IE5vbk51bGxcdTAwM2N1OFx1MDAzZSkgLVx1MDAzZSBwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MnYVx1MDAzZSB7XG4rICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZVx1MDAzYydhXHUwMDNlKHB0cjogTm9uTnVsbFx1MDAzY3U4XHUwMDNlKSAtXHUwMDNlIFx1MDAyNidhIHBhZ2U6OlBhZ2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS5cbiAgICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OnZtYWxsb2NfdG9fcGFnZShwdHIuYXNfcHRyKCkuY2FzdCgpKSB9O1xuIFxuLSAgICAgICAgLy8gU0FGRVRZOiBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWQgcG9pbnRlclxuLSAgICAgICAgLy8gdG8gYFZtYWxsb2NgIG1lbW9yeS5cbi0gICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwYWdlKSB9O1xuLVxuICAgICAgICAgLy8gU0FGRVRZOlxuLSAgICAgICAgLy8gLSBgcGFnZWAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZlxuLSAgICAgICAgLy8gICB0aGlzIGZ1bmN0aW9uIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLlxuLSAgICAgICAgLy8gLSBCeSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGBwdHJgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mXG4tICAgICAgICAvLyAgIGAnYWAuXG4tICAgICAgICB1bnNhZmUgeyBwYWdlOjpCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH1cbisgICAgICAgIC8vIC0gYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkLCBub24tbnVsbCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuKyAgICAgICAgLy8gICBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnksIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvblxuKyAgICAgICAgLy8gICBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cbisgICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCwgYW5kIGhlbmNlIHRoZSBgc3RydWN0IHBhZ2VgLCBpc1xuKyAgICAgICAgLy8gICB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBgJ2FgLlxuKyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnBhZ2UuY2FzdCgpIH1cbiAgICAgfVxuIH1cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5pbmRleCAwMmZkYTNlYTVjYWU2Li44ZGNjMTZlZDg5ODkzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5AQCAtOSw3ICs5LDcgQEBcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4gXG4tLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbisvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxuIC8vL1xuIC8vLyAjIEd1YXJhbnRlZXNcbiAvLy9cbkBAIC0yOCwxMSArMjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXJcdTAwM2MnYVx1MDAzZSB7XG4gICAgIHNpemU6IHVzaXplLFxuICAgICAvLy8gVGhlIGN1cnJlbnQgcGFnZSBpbmRleCBvZiB0aGUgW2BJdGVyYXRvcmBdLlxuICAgICBpbmRleDogdXNpemUsXG4tICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY3BhZ2U6OkJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlXHUwMDNlLFxuKyAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NcdTAwMjYnYSBwYWdlOjpQYWdlXHUwMDNlLFxuIH1cbiBcbiBpbXBsXHUwMDNjJ2FcdTAwM2UgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlclx1MDAzYydhXHUwMDNlIHtcbi0gICAgdHlwZSBJdGVtID0gcGFnZTo6Qm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2U7XG4rICAgIHR5cGUgSXRlbSA9IFx1MDAyNidhIHBhZ2U6OlBhZ2U7XG4gXG4gICAgIGZuIG5leHQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgT3B0aW9uXHUwMDNjU2VsZjo6SXRlbVx1MDAzZSB7XG4gICAgICAgICBsZXQgb2Zmc2V0ID0gc2VsZi5pbmRleC5jaGVja2VkX211bChwYWdlOjpQQUdFX1NJWkUpPztcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuaW5kZXggMzVkMWUwMTU4NDhkZC4uZTZjNjM3YmJlMjAwOSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnNcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnNcbkBAIC0yMTEsNiArMjExLDE1IEBAIHB1YiBmbiBsZWFrXHUwMDNjJ2FcdTAwM2UoYjogU2VsZikgLVx1MDAzZSBcdTAwMjYnYSBtdXQgVCB7XG4gICAgICAgICAvLyB3aGljaCBwb2ludHMgdG8gYW4gaW5pdGlhbGl6ZWQgaW5zdGFuY2Ugb2YgYFRgLlxuICAgICAgICAgdW5zYWZlIHsgXHUwMDI2bXV0ICpCb3g6OmludG9fcmF3KGIpIH1cbiAgICAgfVxuK1xuKyAgICAvLy8gQ29uc3VtZXMgdGhlIGBCb3hcdTAwM2NULCBBXHUwMDNlYCBhbmQgcmV0dXJucyBhIGBOb25OdWxsXHUwMDNjVFx1MDAzZWAuXG4rICAgIC8vL1xuKyAgICAvLy8gTGlrZSBbYFNlbGY6OmludG9fcmF3YF0sIGJ1dCByZXR1cm5zIGEgYE5vbk51bGxgLlxuKyAgICAjW2lubGluZV1cbisgICAgcHViIGZuIGludG9fbm9uX251bGwoYjogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4rICAgICAgICAvLyBTQUZFVFk6IGBCb3g6OmludG9fcmF3YCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlci5cbisgICAgICAgIHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQoU2VsZjo6aW50b19yYXcoYikpIH1cbisgICAgfVxuIH1cbiBcbiBpbXBsXHUwMDNjVCwgQVx1MDAzZSBCb3hcdTAwM2NNYXliZVVuaW5pdFx1MDAzY1RcdTAwM2UsIEFcdTAwM2VcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbmluZGV4IGM0MjkyOGQ1YTIzOTMuLjg1NDUyNTI4OWM4YjQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbisrKyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuQEAgLTE5LDYgKzE5LDEwIEBAXG4gICAgICAgICB0b19yZXN1bHQsIC8vXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6e1xuICAgICAgICAgRm9yTHQsXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcbkBAIC0zNDQsNyArMzQ4LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTM2Myw2ICszNjcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZEZXZpY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuK1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG5pbmRleCBjZTNlMzBjODFjYjVlLi44ZGFkMTVhZTRjZmIwIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuQEAgLTksNyArOSwxMSBAQFxuICAgICBibG9jazo6bXE6Ok9wZXJhdGlvbnMsXG4gICAgIGVycm9yOjpSZXN1bHQsXG4gICAgIHN5bmM6Ontcbi0gICAgICAgIGFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbisgICAgICAgIGFyZWY6OntcbisgICAgICAgICAgICBBUmVmLFxuKyAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgICAgIH0sXG4gICAgICAgICBhdG9taWM6OlJlbGF4ZWQsXG4gICAgICAgICBSZWZjb3VudCxcbiAgICAgfSxcbkBAIC0yMjksMTEgKzIzMywxMCBAQCB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU2VuZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiAvLyBtdXRhdGUgYHNlbGZgIGFyZSBpbnRlcm5hbGx5IHN5bmNocm9uaXplZGBcbiB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU3luYyBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiBcbi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXNcbi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBgQWx3YXlzUmVmQ291bnRlZGAgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50XG4tLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnRcbi0vLyBkZWNyZW1lbnQgaXMgZXhlY3V0ZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHtcbisvLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYFJlZkNvdW50ZWRgXG4rLy8gZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50IGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGFcbisvLyBtYXRjaGluZyByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgc2VsZi53cmFwcGVyX3JlZigpLnJlZmNvdW50KCkuaW5jKCk7XG4gICAgIH1cbkBAIC0yNTUsMyArMjU4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB9XG4gICAgIH1cbiB9XG4rXG4rLy8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NSZXF1ZXN0XHUwMDNlYFxuKy8vIGZyb20gYSBgXHUwMDI2UmVxdWVzdGAgKGJ1dCB0aGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUpLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2NyZWQucnMgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5pbmRleCBmZmExNTZiOWRmMzc3Li5iMTc3MzZhOWFkY2Q1IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvY3JlZC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xuQEAgLTgsNyArOCwxNSBAQFxuIC8vIVxuIC8vISBSZWZlcmVuY2U6IFx1MDAzY2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L3NlY3VyaXR5L2NyZWRlbnRpYWxzLmh0bWxcdTAwM2VcbiBcbi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdGFzazo6S3VpZCwgdHlwZXM6Ok9wYXF1ZX07XG4rdXNlIGNyYXRlOjp7XG4rICAgIGJpbmRpbmdzLFxuKyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLFxuKyAgICB0YXNrOjpLdWlkLFxuKyAgICB0eXBlczo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbit9O1xuIFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBjcmVkYC5cbiAvLy9cbkBAIC03Niw3ICs4NCw3IEBAIHB1YiBmbiBldWlkKFx1MDAyNnNlbGYpIC1cdTAwM2UgS3VpZCB7XG4gfVxuIFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgQ3JlZGVudGlhbGAgaXMgYWx3YXlzIHJlZi1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtOTAsMyArOTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFx1MDAzY0NyZWRlbnRpYWxcdTAwM2UpIHtcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwdXRfY3JlZChvYmouY2FzdCgpLmFzX3B0cigpKSB9O1xuICAgICB9XG4gfVxuK1xuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NDcmVkZW50aWFsXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2Q3JlZGVudGlhbGAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xuaW5kZXggMWEzOGIzYmJkZmI3ZC4uOWFmZWNkM2ZhMzIzNyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RldmljZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXG5AQCAtOCw4ICs4LDEyIEBAXG4gICAgIGJpbmRpbmdzLFxuICAgICBmbXQsXG4gICAgIHByZWx1ZGU6OiosXG4tICAgIHN5bmM6OmFyZWY6OkFSZWYsXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFSZWYsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxuICAgICAgICAgT3BhcXVlLCAvL1xuICAgICB9LCAvL1xuQEAgLTQ0OCw3ICs0NTIsNyBAQCBwdWIgZm4gbmFtZShcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNkNTdHIge1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtNDYwLDYgKzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2RGV2aWNlYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbitcbiAvLyBTQUZFVFk6IEFzIGJ5IHRoZSB0eXBlIGludmFyaWFudCBgRGV2aWNlYCBjYW4gYmUgc2VudCB0byBhbnkgdGhyZWFkLlxuIHVuc2FmZSBpbXBsIFNlbmQgZm9yIERldmljZSB7fVxuIFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5yc1xuaW5kZXggNWFlYWQ4MzVmYmJjMC4uY2VlN2UyNTAxMzY4OSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG5AQCAtMTQsNyArMTQsMTAgQEBcbiAgICAgZm10LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSxcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gfTtcbiBcbkBAIC0zNjAsNyArMzYzLDcgQEAgZm4gZm10KFx1MDAyNnNlbGYsIGY6IFx1MDAyNm11dCBmbXQ6OkZvcm1hdHRlclx1MDAzYydfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEZ3Tm9kZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbit1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGVcbiAgICAgICAgIC8vIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuQEAgLTM3NCw2ICszNzcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0Z3Tm9kZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkZ3Tm9kZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHt9XG4rXG4gZW51bSBOb2RlXHUwMDNjJ2FcdTAwM2Uge1xuICAgICBCb3Jyb3dlZChcdTAwMjYnYSBGd05vZGUpLFxuICAgICBPd25lZChBUmVmXHUwMDNjRndOb2RlXHUwMDNlKSxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuaW5kZXggNDc3Y2Y3NzFmYjEwZS4uNmZjMDJkNTA0MzM0ZSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbisrKyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbkBAIC0xNyw3ICsxNyw4IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjp7XG4gICAgICAgICBOb3RUaHJlYWRTYWZlLFxuQEAgLTM2Miw3ICszNjMsNyBAQCBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4gXG4gLy8gU0FGRVRZOiBEUk0gZGV2aWNlIG9iamVjdHMgYXJlIGFsd2F5cyByZWZlcmVuY2UgY291bnRlZCBhbmQgdGhlIGdldC9wdXQgZnVuY3Rpb25zXG4gLy8gc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4rdW5zYWZlIGltcGxcdTAwM2NUOiBkcm06OkRyaXZlciwgQzogRGV2aWNlQ29udGV4dFx1MDAzZSBSZWZDb3VudGVkIGZvciBEZXZpY2VcdTAwM2NULCBDXHUwMDNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTtcbkBAIC0zNzcsNiArMzc4LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2RGV2aWNlYC5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyLCBDOiBEZXZpY2VDb250ZXh0XHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1QsIENcdTAwM2Uge31cbitcbiBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXIsIEM6IERldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjVCwgQ1x1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbmluZGV4IGM4YjY2ZDgxNjg3MTkuLjgwYWZmZTYzMzVhY2YgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbkBAIC0yMSw3ICsyMSw3IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiAgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiB9O1xuQEAgLTM0LDcgKzM0LDcgQEBcbiAjW2NmZyhDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUildXG4gcHViIG1vZCBzaG1lbTtcbiBcbi0vLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgQWx3YXlzUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuKy8vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgW2BSZWZDb3VudGVkYF0gZm9yIGFueSBHRU0gb2JqZWN0IHR5cGUuXG4gLy8vXG4gLy8vIFNpbmNlIGFsbCBHRU0gb2JqZWN0cyB1c2UgdGhlIHNhbWUgcmVmY291bnRpbmcgc2NoZW1lLlxuICNbbWFjcm9fZXhwb3J0XVxuQEAgLTQ3LDcgKzQ3LDcgQEAgaW1wbCAkKCBcdTAwM2MkKCAkdHBhcmFtX2lkOmlkZW50ICksK1x1MDAzZSApPyBmb3IgJHR5cGU6dHlcbiAgICAgICAgICk/XG4gICAgICkgPVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEFsbCBHRU0gb2JqZWN0cyBhcmUgcmVmY291bnRlZC5cbi0gICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgJHR5cGVcbisgICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgJHR5cGVcbiAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiAgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksKyApP1xuQEAgLTY2LDYgKzY2LDE0IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2dlbV9vYmplY3RfcHV0KG9iaikgfTtcbiAgICAgICAgICAgICB9XG4gICAgICAgICB9XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjJHR5cGVcdTAwM2VgIGZyb20gYVxuKyAgICAgICAgLy8gYFx1MDAyNiR0eXBlYC5cbisgICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgJHR5cGVcbisgICAgICAgIHdoZXJlXG4rICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbisgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksKyApP1xuKyAgICAgICAge31cbiAgICAgfTtcbiB9XG4gI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV1cbkBAIC0xMDksNyArMTE3LDcgQEAgZm4gY2xvc2UoX29iajogXHUwMDI2RHJpdmVyQWxsb2NJbXBsXHUwMDNjU2VsZlx1MDAzZSwgX2ZpbGU6IFx1MDAyNkRyaXZlckZpbGVcdTAwM2NTZWxmXHUwMDNlKSB7fVxuIH1cbiBcbiAvLy8gVHJhaXQgdGhhdCByZXByZXNlbnRzIGEgR0VNIG9iamVjdCBzdWJ0eXBlXG4tcHViIHRyYWl0IEludG9HRU1PYmplY3Q6IFNpemVkICsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCArIEFsd2F5c1JlZkNvdW50ZWQge1xuK3B1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCArIHN1cGVyOjpwcml2YXRlOjpTZWFsZWQgKyBSZWZDb3VudGVkIHtcbiAgICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHJhdyBgZHJtX2dlbV9vYmplY3RgIHN0cnVjdHVyZSwgd2hpY2ggbXVzdCBiZSB2YWxpZCBhcyBsb25nIGFzXG4gICAgIC8vLyB0aGlzIG93bmluZyBvYmplY3QgaXMgdmFsaWQuXG4gICAgIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0O1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG5pbmRleCAyM2VlNjg5YmQyNDAwLi43MjBlNTc0MTgzNThkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuQEAgLTEyLDggKzEyLDE1IEBAXG4gICAgIGNyZWQ6OkNyZWRlbnRpYWwsXG4gICAgIGVycm9yOjp7Y29kZTo6KiwgdG9fcmVzdWx0LCBFcnJvciwgUmVzdWx0fSxcbiAgICAgZm10LFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbiB9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG5AQCAtMTk3LDcgKzIwNCw3IEBAIHVuc2FmZSBpbXBsIFN5bmMgZm9yIEZpbGUge31cbiBcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjRmlsZVx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50LlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjEyLDYgKzIxOSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0ZpbGVcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRmlsZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkZpbGVgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge31cbitcbiAvLy8gV3JhcHMgdGhlIGtlcm5lbCdzIGBzdHJ1Y3QgZmlsZWAuIE5vdCB0aHJlYWQgc2FmZS5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxuQEAgLTIzMyw3ICsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBMb2NhbEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjTG9jYWxGaWxlXHUwMDNlYCBvd24gYSBub3JtYWwgcmVmY291bnQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjQ5LDYgKzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0xvY2FsRmlsZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NMb2NhbEZpbGVcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZMb2NhbEZpbGVgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fVxuK1xuIGltcGwgTG9jYWxGaWxlIHtcbiAgICAgLy8vIENvbnN0cnVjdHMgYSBuZXcgYHN0cnVjdCBmaWxlYCB3cmFwcGVyIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuaW5kZXggNjI0Yjk3MWNhOGIwYi4uZjlhYWNiODk0ZjUwNSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2kyYy5yc1xuKysrIGIvcnVzdC9rZXJuZWwvaTJjLnJzXG5AQCAtMTgsNyArMTgsOCBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLCAvL1xuIH07XG5AQCAtNDI0LDcgKzQyNSw3IEBAIHB1YiBmbiBnZXQoaW5kZXg6IGkzMikgLVx1MDAzZSBSZXN1bHRcdTAwM2NBUmVmXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoSTJjQWRhcHRlcik7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0FkYXB0ZXJgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19nZXRfYWRhcHRlcihzZWxmLmluZGV4KCkpIH07XG5AQCAtNDM1LDYgKzQzNiw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfcHV0X2FkYXB0ZXIob2JqLmFzX3JlZigpLmFzX3JhdygpKSB9XG4gICAgIH1cbiB9XG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0kyY0FkYXB0ZXJcdTAwM2VgIGZyb20gYW5cbisvLyBgXHUwMDI2STJjQWRhcHRlcmAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7fVxuIFxuIC8vLyBUaGUgaTJjIGJvYXJkIGluZm8gcmVwcmVzZW50YXRpb25cbiAvLy9cbkBAIC01MDAsNyArNTA0LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBJMmNDbGllbnRcdTAwM2NDXG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoSTJjQ2xpZW50KTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQ2xpZW50YCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUxMSw2ICs1MTUsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cHV0X2RldmljZShcdTAwMjZyYXcgbXV0ICgqb2JqLmFzX3JlZigpLmFzX3JhdygpKS5kZXYpIH1cbiAgICAgfVxuIH1cbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjSTJjQ2xpZW50XHUwMDNlYCBmcm9tIGFuXG4rLy8gYFx1MDAyNkkyY0NsaWVudGAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHt9XG4gXG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIEkyY0NsaWVudFx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9saWIucnMgYi9ydXN0L2tlcm5lbC9saWIucnNcbmluZGV4IDk1MTJhZjcxNTZkZjIuLmViNTI1NjIwNGExNzQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9saWIucnNcbisrKyBiL3J1c3Qva2VybmVsL2xpYi5yc1xuQEAgLTEwMSw2ICsxMDEsNyBAQFxuIHB1YiBtb2Qgb2Y7XG4gI1tjZmcoQ09ORklHX1BNX09QUCldXG4gcHViIG1vZCBvcHA7XG4rcHViIG1vZCBvd25lZDtcbiBwdWIgbW9kIHBhZ2U7XG4gI1tjZmcoQ09ORklHX1BDSSldXG4gcHViIG1vZCBwY2k7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0ucnMgYi9ydXN0L2tlcm5lbC9tbS5yc1xuaW5kZXggNDc2NGQ3YjY4ZjJhNy4uODNlZDk0ZmNhMTRjYSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL21tLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9tbS5yc1xuQEAgLTEzLDggKzEzLDE1IEBAXG4gXG4gdXNlIGNyYXRlOjp7XG4gICAgIGJpbmRpbmdzLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbiB9O1xuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcbiBcbkBAIC01NSw3ICs2Miw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge31cbiBcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW0ge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtNjksNiArNzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY01tXHUwMDNlYCBmcm9tIGEgYFx1MDAyNk1tYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7fVxuK1xuIC8vLyBBIHdyYXBwZXIgZm9yIHRoZSBrZXJuZWwncyBgc3RydWN0IG1tX3N0cnVjdGAuXG4gLy8vXG4gLy8vIFRoaXMgdHlwZSBpcyBsaWtlIFtgTW1gXSwgYnV0IHdpdGggbm9uLXplcm8gYG1tX3VzZXJzYC4gSXQgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGBtbV91c2Vyc2AgY2FuXG5AQCAtOTEsNyArMTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXIge31cbiBcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxuQEAgLTEwNSw2ICsxMTUsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NNbVdpdGhVc2VyXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2TW1XaXRoVXNlcmAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7fVxuK1xuIC8vIE1ha2UgYWxsIGBNbWAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJgLlxuIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIge1xuICAgICB0eXBlIFRhcmdldCA9IE1tO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzIGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbmluZGV4IGI4ZDJmMDUxMjI1YzcuLjhmYmMzOTZlNDYwMjggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xuKysrIGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbkBAIC0xMCw3ICsxMCwxMSBAQFxuIHVzZSBjcmF0ZTo6e1xuICAgICBiaW5kaW5ncyxcbiAgICAgbW06Ok1tV2l0aFVzZXIsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLFxuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTM0LDcgKzM4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlckFzeW5jIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW1XaXRoVXNlckFzeW5jIHt9XG4gXG4gLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtNDgsNiArNTIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NNbVdpdGhVc2VyQXN5bmNcdTAwM2VgXG4rLy8gZnJvbSBhIGBcdTAwMjZNbVdpdGhVc2VyQXN5bmNgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuK1xuIC8vIE1ha2UgYWxsIGBNbVdpdGhVc2VyYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlckFzeW5jYC5cbiBpbXBsIERlcmVmIGZvciBNbVdpdGhVc2VyQXN5bmMge1xuICAgICB0eXBlIFRhcmdldCA9IE1tV2l0aFVzZXI7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvb3BwLnJzIGIvcnVzdC9rZXJuZWwvb3BwLnJzXG5pbmRleCA2MmU0NDY3NjEyNWQxLi5iOGRiNmJkZWZkMDc3IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvb3BwLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9vcHAucnNcbkBAIC0xNiw4ICsxNiwxNCBAQFxuICAgICBmZmk6OntjX2NoYXIsIGNfdWxvbmd9LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OkNTdHJpbmcsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgT3BhcXVlLCAvL1xuKyAgICB9LCAvL1xuIH07XG4gXG4gI1tjZmcoQ09ORklHX0NQVV9GUkVRKV1cbkBAIC0xMDQxLDcgKzEwNDcsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBPUFAge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBPUFAge31cbiBcbiAvLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IFtgT1BQYF0gaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMTA1NSw2ICsxMDYxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NPUFBcdTAwM2VgIGZyb20gYW5cbisvLyBgXHUwMDI2T1BQYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge31cbitcbiBpbXBsIE9QUCB7XG4gICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL293bmVkLnJzIGIvcnVzdC9rZXJuZWwvb3duZWQucnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hY2I2MTFmMDg0ZmYzXG4tLS0gL2Rldi9udWxsXG4rKysgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xuQEAgLTAsMCArMSwzNzMgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuK1xuKy8vISBVbmlxdWUgb3duZWQgcG9pbnRlciB0eXBlcyBmb3Igb2JqZWN0cyB3aXRoIGN1c3RvbSBkcm9wIGxvZ2ljLlxuKy8vIVxuKy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0XG4rLy8hIGFyZSBvd25lZCBieSBSdXN0LCBidXQgbmVlZCB0byBiZSBmcmVlZCB0aHJvdWdoIHRoZSBDIEFQSS5cbitcbit1c2UgY29yZTo6e1xuKyAgICBtZW06Ok1hbnVhbGx5RHJvcCxcbisgICAgb3BzOjp7XG4rICAgICAgICBEZXJlZixcbisgICAgICAgIERlcmVmTXV0LCAvL1xuKyAgICB9LFxuKyAgICBwaW46OlBpbixcbisgICAgcHRyOjpOb25OdWxsLCAvL1xuK307XG4rdXNlIGtlcm5lbDo6e1xuKyAgICBzeW5jOjphcmVmOjpBUmVmLFxuKyAgICB0eXBlczo6UmVmQ291bnRlZCwgLy9cbit9O1xuK1xuK3VzZSBrZXJuZWw6OnR5cGVzOjpGb3JlaWduT3duYWJsZTtcbitcbisvLy8gVHlwZXMgdGhhdCBzcGVjaWZ5IHRoZWlyIG93biB3YXkgb2YgcGVyZm9ybWluZyBhbGxvY2F0aW9uIGFuZCBkZXN0cnVjdGlvbi4gVHlwaWNhbGx5LCB0aGlzIHRyYWl0XG4rLy8vIGlzIGltcGxlbWVudGVkIG9uIHR5cGVzIGZyb20gdGhlIEMgc2lkZS5cbisvLy9cbisvLy8gSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBbYE93bmVkXHUwMDNjU2VsZlx1MDAzZWBdIHBvaW50ZXIgdHlwZS5cbisvLy8gIC0gVGhpcyBpcyB1c2VmdWwgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8gdGllIHRoZSBsaWZldGltZSBvZiBhbiBvYmplY3QgcmVmZXJlbmNlIHRvIGFuIG93bmVkXG4rLy8vICAgIG9iamVjdCwgcmF0aGVyIHRoYW4gcGFzcyBhcm91bmQgYSBiYXJlIHJlZmVyZW5jZS5cbisvLy8gIC0gW2BPd25hYmxlYF0gdHlwZXMgY2FuIGRlZmluZSBjdXN0b20gZHJvcCBsb2dpYyB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIG93bmVkIHJlZmVyZW5jZVxuKy8vLyAgICBvZiB0eXBlIFtgT3duZWRcdTAwM2NfXHUwMDNlYF0gcG9pbnRpbmcgdG8gdGhlIG9iamVjdCBpcyBkcm9wcGVkLlxuKy8vL1xuKy8vLyBOb3RlOiBUaGUgdW5kZXJseWluZyBvYmplY3QgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50aW5nLCBiZWNhdXNlIGl0XG4rLy8vIHJlcHJlc2VudHMgYSB1bmlxdWUsIG93bmVkIHJlZmVyZW5jZS4gSWYgcmVmZXJlbmNlIGNvdW50aW5nIChvbiB0aGUgUnVzdCBzaWRlKSBpcyByZXF1aXJlZCxcbisvLy8gW2BSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkLiBbYE93bmFibGVSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIGNvbnZlcnNpb25cbisvLy8gYmV0d2VlbiB1bmlxdWUgYW5kIHNoYXJlZCAocmVmZXJlbmNlIGNvdW50ZWQpIG93bmVyc2hpcCBpcyBuZWVkZWQuXG4rLy8vXG4rLy8vICMgRXhhbXBsZXNcbisvLy9cbisvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoIFtgT3duZWRgXSBsb29rcyBsaWtlXG4rLy8vIHRoaXM6XG4rLy8vXG4rLy8vIGBgYFxuKy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxuKy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsO1xuKy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4rLy8vICMgdXNlIGtlcm5lbDo6c3luYzo6Z2xvYmFsX2xvY2s7XG4rLy8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZX07XG4rLy8vXG4rLy8vIC8vIExldCdzIGNvdW50IHRoZSBhbGxvY2F0aW9ucyB0byBzZWUgaWYgZnJlZWluZyB3b3Jrcy5cbisvLy8ga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jayEge1xuKy8vLyAgICAgLy8gU0FGRVRZOiB3ZSBjYWxsIGBpbml0KClgIHJpZ2h0IGJlbG93LCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS5cbisvLy8gICAgIHVuc2FmZSh1bmluaXQpIHN0YXRpYyBGT09fQUxMT0NfQ09VTlQ6IE11dGV4XHUwMDNjdXNpemVcdTAwM2UgPSAwO1xuKy8vLyB9XG4rLy8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuXG4rLy8vIHVuc2FmZSB7IEZPT19BTExPQ19DT1VOVC5pbml0KCkgfTtcbisvLy9cbisvLy8gc3RydWN0IEZvbztcbisvLy9cbisvLy8gaW1wbCBGb28ge1xuKy8vLyAgICAgZm4gbmV3KCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuKy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXG4rLy8vICAgICAgICAgLy8gbm90IGFjdHVhbGx5IGEgQy1hbGxvY2F0ZWQgb2JqZWN0LlxuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXG4rLy8vICAgICAgICAgICAgIEZvbyB7fSxcbisvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXG4rLy8vICAgICAgICAgKT87XG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTtcbisvLy8gICAgICAgICAvLyBDb3VudCBuZXcgYWxsb2NhdGlvblxuKy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpICs9IDE7XG4rLy8vICAgICAgICAgLy8gU0FGRVRZOlxuKy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cbisvLy8gICAgICAgICAvLyAgLSBXZSBjYW4gdHJhbnNmZXIgdGhpcyBvd25lcnNoaXAgdG8gdGhlIGBmcm9tX3Jhd2AgbWV0aG9kLlxuKy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8gaW1wbCBPd25hYmxlIGZvciBGb28ge1xuKy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3hcdTAwM2NTZWxmXHUwMDNlYF0gaXMgc3RpbGwgYWxpdmUuIFdlIGNhbiBwYXNzIG93bmVyc2hpcCB0byB0aGUgW2BLQm94YF0sIGFzXG4rLy8vICAgICAgICAgLy8gYnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLlxuKy8vLyAgICAgICAgIGRyb3AodW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfSk7XG4rLy8vICAgICAgICAgLy8gQ291bnQgcmVsZWFzZWQgYWxsb2NhdGlvblxuKy8vLyAgICAgICAgICpGT09fQUxMT0NfQ09VTlQubG9jaygpIC09IDE7XG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8ge1xuKy8vLyAgICBsZXQgZm9vID0gRm9vOjpuZXcoKT87XG4rLy8vICAgIGFzc2VydCEoKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgPT0gMSk7XG4rLy8vIH1cbisvLy8gLy8gYGZvb2AgaXMgb3V0IG9mIHNjb3BlIG5vdywgc28gd2UgZXhwZWN0IG5vIGxpdmUgYWxsb2NhdGlvbnMuXG4rLy8vIGFzc2VydCEoKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgPT0gMCk7XG4rLy8vICMgT2s6Olx1MDAzYygpLCBFcnJvclx1MDAzZSgoKSlcbisvLy8gYGBgXG4rcHViIHRyYWl0IE93bmFibGUge1xuKyAgICAvLy8gVGVhciBkb3duIHRoaXMgYE93bmFibGVgLlxuKyAgICAvLy9cbisgICAgLy8vIEltcGxlbWVudGVycyBvZiBgT3duYWJsZWAgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNsZWFuIHVwIHRoZSB1c2Ugb2YgYFNlbGZgLiBUaGlzIGNhblxuKyAgICAvLy8gaW5jbHVkZSBmcmVlaW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbisgICAgLy8vXG4rICAgIC8vLyAjIFNhZmV0eVxuKyAgICAvLy9cbisgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLFxuKyAgICAvLy8gYW5kIHRoYXQgdGhpcyBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGByZWxlYXNlYCBtZXRob2QuIGB0aGlzYCBtdXN0IG5vdCBiZSB1c2VkXG4rICAgIC8vLyBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLCBhcyB0aGUgdW5kZXJseWluZyBvYmplY3QgbWF5IGhhdmUgYmVlbiBmcmVlZC5cbisgICAgLy8vXG4rICAgIC8vLyBgdGhpc2AgaXMgcGlubmVkIGFuZCBpbXBsZW1lbnRlcnMgb2YgdGhpcyBtZXRob2QgbXVzdCBvYnNlcnZlIHRoaXMgY29uc3RyYWludC5cbisgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpO1xuK31cbitcbisvLy8gQSBtdXRhYmxlIHJlZmVyZW5jZSB0byBhbiBvd25lZCBgVGAuXG4rLy8vXG4rLy8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzXG4rLy8vIGRyb3BwZWQuXG4rLy8vXG4rLy8vICMgSW52YXJpYW50c1xuKy8vL1xuKy8vLyAtIFVudGlsIGBUOjpyZWxlYXNlYCBpcyBjYWxsZWQsIHRoaXMgYE93bmVkXHUwMDNjVFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXG4rLy8vIC0gVGhlIGBUYCB2YWx1ZSBpcyBwaW5uZWQuXG4rcHViIHN0cnVjdCBPd25lZFx1MDAzY1Q6IE93bmFibGVcdTAwM2Uge1xuKyAgICBwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlLFxuK31cbitcbitpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBPd25lZFx1MDAzY1RcdTAwM2Uge1xuKyAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYE93bmVkYF0uXG4rICAgIC8vL1xuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4rICAgIC8vL1xuKyAgICAvLy8gIyBTYWZldHlcbisgICAgLy8vXG4rICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQ6XG4rICAgIC8vLyAtIGBwdHJgIHBvaW50cyB0byBhIHZhbGlkIGluc3RhbmNlIG9mIGBUYC5cbisgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZFx1MDAzY1RcdTAwM2VgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLlxuKyAgICAjW2lubGluZV1cbisgICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlKSAtXHUwMDNlIFNlbGYge1xuKyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnQgd2Ugc2F0aXNmeSB0aGUgZmlyc3QgaW52YXJpYW50IG9mIGBTZWxmYC5cbisgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uXG4rICAgICAgICBTZWxmIHsgcHRyIH1cbisgICAgfVxuK1xuKyAgICAvLy8gQ29uc3VtZXMgdGhlIFtgT3duZWRgXSwgcmV0dXJuaW5nIGEgcmF3IHBvaW50ZXIuXG4rICAgIC8vL1xuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGVcbisgICAgLy8vIHVuZGVybHlpbmcgYFRgIGlzIHdpdGggdGhlIGNhbGxlci5cbisgICAgLy8vXG4rICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLlxuKyAgICAjW2lubGluZV1cbisgICAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtXHUwMDNlIE5vbk51bGxcdTAwM2NUXHUwMDNlIHtcbisgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHJcbisgICAgfVxuK1xuKyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkXHUwMDNjVFx1MDAzZWAuXG4rICAgICNbaW5saW5lXVxuKyAgICBwdWIgZm4gYXNfcGluX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBQaW5cdTAwM2NcdTAwMjZtdXQgVFx1MDAzZSB7XG4rICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCwgYW5kIHRoYXQgd2UgY2FuIHNhZmVseVxuKyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXG4rICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9O1xuK1xuKyAgICAgICAgLy8gU0FGRVRZOiBCeSB0eXBlIGludmFyaWFudCBgVGAgaXMgcGlubmVkLlxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9XG4rICAgIH1cbit9XG4rXG4rLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYW4gW2BPd25lZFx1MDAzY1RcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFNlbmRgXSxcbisvLyBiZWNhdXNlIG9mIHRoZSBvd25lcnNoaXAgaW52YXJpYW50LiBTZW5kaW5nIGFuIFtgT3duZWRcdTAwM2NUXHUwMDNlYF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgVGAuXG4rdW5zYWZlIGltcGxcdTAwM2NUOiBPd25hYmxlICsgU2VuZFx1MDAzZSBTZW5kIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge31cbitcbisvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBbYFx1MDAyNk93bmVkXHUwMDNjVFx1MDAzZWBdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU3luY2BdLFxuKy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BcdTAwMjZPd25lZFx1MDAzY1RcdTAwM2VgXSBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgdGhlIGBcdTAwMjZUYC5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGUgKyBTeW5jXHUwMDNlIFN5bmMgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7fVxuK1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIERlcmVmIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuKyAgICB0eXBlIFRhcmdldCA9IFQ7XG4rXG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4rICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZC5cbisgICAgICAgIHVuc2FmZSB7IHNlbGYucHRyLmFzX3JlZigpIH1cbisgICAgfVxuK31cbitcbitpbXBsXHUwMDNjVDogT3duYWJsZSArIFVucGluXHUwMDNlIERlcmVmTXV0IGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuKyAgICAjW2lubGluZV1cbisgICAgZm4gZGVyZWZfbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcbisgICAgICAgIC8vIHJldHVybiBhIG11dGFibGUgcmVmZXJlbmNlIHRvIGl0LlxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfVxuKyAgICB9XG4rfVxuK1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIERyb3AgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgXHUwMDI2bXV0IHNlbGZgIHdlIGV4Y2x1c2l2ZWx5IG93biBgc2VsZmAgYW5kIHRoZSB1bmRlcmx5aW5nIGBUYC4gQXNcbisgICAgICAgIC8vIHdlIGFyZSBkcm9wcGluZyBgc2VsZmAsIHdlIGNhbiB0cmFuc2ZlciBvd25lcnNoaXAgb2YgdGhlIGBUYCB0byB0aGUgYHJlbGVhc2VgIG1ldGhvZC5cbisgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07XG4rICAgIH1cbit9XG4rXG4rLy8gU0FGRVRZOiBXZSBkZXJpdmUgdGhlIHBvaW50ZXIgdG8gYFRgIGZyb20gYSB2YWxpZCBgVGAsIHNvIHRoZSByZXR1cm5lZFxuKy8vIHBvaW50ZXIgc2F0aXNmeSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIGBUYC5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRm9yZWlnbk93bmFibGUgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgIGNvbnN0IEZPUkVJR05fQUxJR046IHVzaXplID0gY29yZTo6bWVtOjphbGlnbl9vZjo6XHUwMDNjVFx1MDAzZSgpO1xuK1xuKyAgICB0eXBlIEJvcnJvd2VkXHUwMDNjJ2FcdTAwM2VcbisgICAgICAgID0gXHUwMDI2J2EgVFxuKyAgICB3aGVyZVxuKyAgICAgICAgU2VsZjogJ2E7XG4rICAgIHR5cGUgQm9ycm93ZWRNdXRcdTAwM2MnYVx1MDAzZVxuKyAgICAgICAgPSBQaW5cdTAwM2NcdTAwMjYnYSBtdXQgVFx1MDAzZVxuKyAgICB3aGVyZVxuKyAgICAgICAgU2VsZjogJ2E7XG4rXG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLVx1MDAzZSAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQge1xuKyAgICAgICAgT3duZWQ6OmludG9fcmF3KHNlbGYpLmFzX3B0cigpLmNhc3QoKVxuKyAgICB9XG4rXG4rICAgICNbaW5saW5lXVxuKyAgICB1bnNhZmUgZm4gZnJvbV9mb3JlaWduKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXHUwMDNlIFNlbGYge1xuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIGNhbWUgZnJvbSBgaW50b19mb3JlaWduYCBhbmQgY2Fubm90IGJlIG51bGwuXG4rICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwdHIuY2FzdCgpKSB9O1xuK1xuKyAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgZnVuY3Rpb24gc2FmZXR5IGNvbnRyYWN0LCBgcHRyYCB3YXMgcmV0dXJuZWQgYnkgYGludG9fZm9yZWlnbmAsIHdoaWNoIGdhdmVcbisgICAgICAgIC8vIHVwIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgYSB2YWxpZCwgcGlubmVkIGBUYDsgd2UgcmV0YWtlIHRoYXQgb3duZXJzaGlwIGhlcmUuXG4rICAgICAgICB1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocHRyKSB9XG4rICAgIH1cbitcbisgICAgI1tpbmxpbmVdXG4rICAgIHVuc2FmZSBmbiBib3Jyb3dcdTAwM2MnYVx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVx1MDAzZSBTZWxmOjpCb3Jyb3dlZFx1MDAzYydhXHUwMDNlIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhXG4rICAgICAgICAvLyByZWZlcmVuY2UgZm9yIGAnYWAuXG4rICAgICAgICB1bnNhZmUgeyBcdTAwMjYqcHRyLmNhc3QoKSB9XG4rICAgIH1cbitcbisgICAgI1tpbmxpbmVdXG4rICAgIHVuc2FmZSBmbiBib3Jyb3dfbXV0XHUwMDNjJ2FcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZjo6Qm9ycm93ZWRNdXRcdTAwM2MnYVx1MDAzZSB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYVxuKyAgICAgICAgLy8gdW5pcXVlIHJlZmVyZW5jZSBmb3IgYCdhYC5cbisgICAgICAgIGxldCBpbm5lciA9IHVuc2FmZSB7IFx1MDAyNm11dCAqcHRyLmNhc3QoKSB9O1xuK1xuKyAgICAgICAgLy8gU0FGRVRZOiBXZSBuZXZlciBtb3ZlIG91dCBvZiBpbm5lciwgYW5kIHdlIGRvIG5vdCBoYW5kIG91dCBtdXRhYmxlXG4rICAgICAgICAvLyByZWZlcmVuY2VzIHdoZW4gYFQ6ICFVbnBpbmAuXG4rICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQoaW5uZXIpIH1cbisgICAgfVxuK31cbitcbisvLy8gQSB0cmFpdCBmb3Igb2JqZWN0cyB0aGF0IGNhbiBiZSB3cmFwcGVkIGluIGVpdGhlciBvbmUgb2YgdGhlIHJlZmVyZW5jZSB0eXBlcyBbYE93bmVkYF0gYW5kXG4rLy8vIFtgQVJlZmBdLlxuKy8vL1xuKy8vLyAjIEV4YW1wbGVzXG4rLy8vXG4rLy8vIEEgbWluaW1hbCBleGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIFtgT3duYWJsZVJlZkNvdW50ZWRgXSwgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoXG4rLy8vIFtgQVJlZmBdIGFuZCBbYE93bmVkYF0gbG9va3MgbGlrZSB0aGlzOlxuKy8vL1xuKy8vLyBgYGBcbisvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV1cbisvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDtcbisvLy8gIyB1c2UgY29yZTo6cHRyOjpOb25OdWxsO1xuKy8vLyAjIHVzZSBrZXJuZWw6OmFsbG9jOjp7ZmxhZ3MsIGtib3g6OktCb3gsIEFsbG9jRXJyb3J9O1xuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBSZWZDb3VudGVkfTtcbisvLy8gIyB1c2Uga2VybmVsOjp0eXBlczo6e093bmVkLCBPd25hYmxlLCBPd25hYmxlUmVmQ291bnRlZH07XG4rLy8vXG4rLy8vIC8vIEFuIGludGVybmFsbHkgcmVmY291bnRlZCBzdHJ1Y3QgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuXG4rLy8vIC8vXG4rLy8vIC8vICMgSW52YXJpYW50c1xuKy8vLyAvL1xuKy8vLyAvLyAtIGByZWZjb3VudGAgaXMgYWx3YXlzIG5vbi16ZXJvIGZvciBhIHZhbGlkIG9iamVjdC5cbisvLy8gLy8gLSBgcmVmY291bnRgIGlzIFx1MDAzZTEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC5cbisvLy8gLy9cbisvLy8gc3RydWN0IEZvbyB7XG4rLy8vICAgICByZWZjb3VudDogQ2VsbFx1MDAzY3VzaXplXHUwMDNlLFxuKy8vLyB9XG4rLy8vXG4rLy8vIGltcGwgRm9vIHtcbisvLy8gICAgIGZuIG5ldygpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbisvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xuKy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC5cbisvLy8gICAgICAgICAvLyBJTlZBUklBTlQ6IFdlIGluaXRpYWxpemUgYHJlZmNvdW50YCB0byAxLCBzYXRpc2Z5aW5nIHRoZSBpbnZhcmlhbnRzLlxuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXG4rLy8vICAgICAgICAgICAgIEZvbyB7XG4rLy8vICAgICAgICAgICAgICAgICByZWZjb3VudDogQ2VsbDo6bmV3KDEpLFxuKy8vLyAgICAgICAgICAgICB9LFxuKy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCxcbisvLy8gICAgICAgICApPztcbisvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xuKy8vLyAgICAgICAgIC8vIFNBRkVUWTpcbisvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuXG4rLy8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cbisvLy8gICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocmVzdWx0KSB9KVxuKy8vLyAgICAgfVxuKy8vLyB9XG4rLy8vXG4rLy8vIC8vIFNBRkVUWTogV2UgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZWFjaCB0aW1lIHRoZSByZXNwZWN0aXZlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgb25seSBmcmVlXG4rLy8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uXG4rLy8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZvbyB7XG4rLy8vICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbisvLy8gICAgICAgICBzZWxmLnJlZmNvdW50LnJlcGxhY2Uoc2VsZi5yZWZjb3VudC5nZXQoKSArIDEpO1xuKy8vLyAgICAgfVxuKy8vL1xuKy8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IEJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLFxuKy8vLyAgICAgICAgIC8vIGltcGx5aW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB2YWxpZC5cbisvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyBcdTAwMjZ0aGlzLmFzX3JlZigpLnJlZmNvdW50IH07XG4rLy8vICAgICAgICAgbGV0IG5ld19yZWZjb3VudCA9IHJlZmNvdW50LmdldCgpIC0gMTtcbisvLy8gICAgICAgICBpZiBuZXdfcmVmY291bnQgPT0gMCB7XG4rLy8vICAgICAgICAgICAgIC8vIFRoZSBgRm9vYCB3aWxsIGJlIGRyb3BwZWQgd2hlbiBgS0JveGAgZ29lcyBvdXQgb2Ygc2NvcGUuXG4rLy8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFx1MDAzY0Zvb1x1MDAzZWBdIGlzIHN0aWxsIGFsaXZlIGFzIHRoZSBvbGQgcmVmY291bnQgaXMgMS4gV2UgY2FuIHBhc3NcbisvLy8gICAgICAgICAgICAgLy8gb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSBhcyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sXG4rLy8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLlxuKy8vLyAgICAgICAgICAgICB1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9O1xuKy8vLyAgICAgICAgIH0gZWxzZSB7XG4rLy8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTtcbisvLy8gICAgICAgICB9XG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8gaW1wbCBPd25hYmxlUmVmQ291bnRlZCBmb3IgRm9vIHtcbisvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2UsIEFSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbisvLy8gICAgICAgICBpZiB0aGlzLnJlZmNvdW50LmdldCgpID09IDEge1xuKy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBgRm9vYCBpcyBzdGlsbCBhbGl2ZSBhbmQgaGFzIG5vIG90aGVyIFJ1c3QgcmVmZXJlbmNlcyBhcyB0aGUgcmVmY291bnRcbisvLy8gICAgICAgICAgICAgLy8gaXMgMS5cbisvLy8gICAgICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KEFSZWY6OmludG9fcmF3KHRoaXMpKSB9KVxuKy8vLyAgICAgICAgIH0gZWxzZSB7XG4rLy8vICAgICAgICAgICAgIEVycih0aGlzKVxuKy8vLyAgICAgICAgIH1cbisvLy8gICAgIH1cbisvLy9cbisvLy8gICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBBUmVmXHUwMDNjU2VsZlx1MDAzZSB7XG4rLy8vICAgICAgICAgLy8gU0FGRVRZOiBBbiBgT3duZWRcdTAwM2NGb29cdTAwM2VgIGhvbGRzIHRoZSB1bmlxdWUgcmVmZXJlbmNlIChyZWZjb3VudCAxKSwgd2hpY2ggd2UgdHJhbnNmZXIgdG9cbisvLy8gICAgICAgICAvLyB0aGUgbmV3IGBBUmVmYC5cbisvLy8gICAgICAgICB1bnNhZmUgeyBBUmVmOjpmcm9tX3JhdyhPd25lZDo6aW50b19yYXcodGhpcykpIH1cbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XG4rLy8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogVXNpbmcgYGRlY19yZWYoKWAgZnJvbSBbYFJlZkNvdW50ZWRgXSB0byByZWxlYXNlIGlzIG9rYXksIGFzIHRoZSByZWZjb3VudCBpc1xuKy8vLyAgICAgICAgIC8vIGFsd2F5cyAxIGZvciBhbiBbYE93bmVkXHUwMDNjRm9vXHUwMDNlYF0uXG4rLy8vICAgICAgICAgdW5zYWZlIHsgRm9vOjpkZWNfcmVmKHRoaXMpIH07XG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8gbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xuKy8vLyBsZXQgZm9vID0gQVJlZjo6ZnJvbShmb28pO1xuKy8vLyB7XG4rLy8vICAgICBsZXQgYmFyID0gZm9vLmNsb25lKCk7XG4rLy8vICAgICBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShiYXIpLmlzX2VycigpKTtcbisvLy8gfVxuKy8vLyBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShmb28pLmlzX29rKCkpO1xuKy8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4rLy8vIGBgYFxuK3B1YiB0cmFpdCBPd25hYmxlUmVmQ291bnRlZDogUmVmQ291bnRlZCArIE93bmFibGUgKyBTaXplZCB7XG4rICAgIC8vLyBDaGVja3MgaWYgdGhlIFtgQVJlZmBdIGlzIHVuaXF1ZSBhbmQgY29udmVydHMgaXQgdG8gYW4gW2BPd25lZGBdIGlmIHRoYXQgaXMgdGhlIGNhc2UuXG4rICAgIC8vLyBPdGhlcndpc2UgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC5cbisgICAgZm4gdHJ5X2Zyb21fc2hhcmVkKHRoaXM6IEFSZWZcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQVJlZlx1MDAzY1NlbGZcdTAwM2VcdTAwM2U7XG4rXG4rICAgIC8vLyBDb252ZXJ0cyB0aGUgW2BPd25lZGBdIGludG8gYW4gW2BBUmVmYF0uXG4rICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBBUmVmXHUwMDNjU2VsZlx1MDAzZTtcbit9XG4rXG4raW1wbFx1MDAzY1Q6IE93bmFibGVSZWZDb3VudGVkXHUwMDNlIFRyeUZyb21cdTAwM2NBUmVmXHUwMDNjVFx1MDAzZVx1MDAzZSBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbisgICAgdHlwZSBFcnJvciA9IEFSZWZcdTAwM2NUXHUwMDNlO1xuKyAgICAvLy8gVHJpZXMgdG8gY29udmVydCB0aGUgW2BBUmVmYF0gdG8gYW4gW2BPd25lZGBdIGJ5IGNhbGxpbmdcbisgICAgLy8vIFtgdHJ5X2Zyb21fc2hhcmVkKClgXShPd25hYmxlUmVmQ291bnRlZDo6dHJ5X2Zyb21fc2hhcmVkKS4gSW4gY2FzZSB0aGUgW2BBUmVmYF0gaXMgbm90XG4rICAgIC8vLyB1bmlxdWUsIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXG4rICAgICNbaW5saW5lXVxuKyAgICBmbiB0cnlfZnJvbShiOiBBUmVmXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1RcdTAwM2UsIFNlbGY6OkVycm9yXHUwMDNlIHtcbisgICAgICAgIFQ6OnRyeV9mcm9tX3NoYXJlZChiKVxuKyAgICB9XG4rfVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BhZ2UucnMgYi9ydXN0L2tlcm5lbC9wYWdlLnJzXG5pbmRleCAxYzA3OTZlYTIyOWYwLi4zMmRkMDMwYzgzMTU5IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xuQEAgLTEyLDE2ICsxMiwxNiBAQFxuICAgICAgICAgY29kZTo6KixcbiAgICAgICAgIFJlc3VsdCwgLy9cbiAgICAgfSxcbisgICAgdHlwZXM6OntcbisgICAgICAgIE9wYXF1ZSxcbisgICAgICAgIE93bmFibGUsXG4rICAgICAgICBPd25lZCwgLy9cbisgICAgfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLCAvL1xuIH07XG4tdXNlIGNvcmU6Ontcbi0gICAgbWFya2VyOjpQaGFudG9tRGF0YSxcbi0gICAgbWVtOjpNYW51YWxseURyb3AsXG4tICAgIG9wczo6RGVyZWYsXG4tICAgIHB0cjo6e1xuLSAgICAgICAgc2VsZixcbi0gICAgICAgIE5vbk51bGwsIC8vXG4tICAgIH0sIC8vXG4rdXNlIGNvcmU6OnB0cjo6e1xuKyAgICBzZWxmLFxuKyAgICBOb25OdWxsLCAvL1xuIH07XG4gXG4gLy8vIEEgYml0d2lzZSBzaGlmdCBmb3IgdGhlIHBhZ2Ugc2l6ZS5cbkBAIC02NSw5MyArNjUsMjkgQEAgcHViIGNvbnN0IGZuIHBhZ2VfYWxpZ24oYWRkcjogdXNpemUpIC1cdTAwM2UgT3B0aW9uXHUwMDNjdXNpemVcdTAwM2Uge1xuICAgICBTb21lKHN1bSBcdTAwMjYgUEFHRV9NQVNLKVxuIH1cbiBcbi0vLy8gUmVwcmVzZW50YXRpb24gb2YgYSBub24tb3duaW5nIHJlZmVyZW5jZSB0byBhIFtgUGFnZWBdLlxuLS8vL1xuLS8vLyBUaGlzIHR5cGUgcHJvdmlkZXMgYSBib3Jyb3dlZCB2ZXJzaW9uIG9mIGEgW2BQYWdlYF0gdGhhdCBpcyBvd25lZCBieSBzb21lIG90aGVyIGVudGl0eSwgZS5nLiBhXG4tLy8vIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gc3VjaCBhcyBbYFZCb3hgXS5cbi0vLy9cbi0vLy8gIyBFeGFtcGxlXG4tLy8vXG4tLy8vIGBgYFxuLS8vLyAjIHVzZSBrZXJuZWw6OntiaW5kaW5ncywgcHJlbHVkZTo6Kn07XG4tLy8vIHVzZSBrZXJuZWw6OnBhZ2U6OntCb3Jyb3dlZFBhZ2UsIFBhZ2UsIFBBR0VfU0laRX07XG4tLy8vICMgdXNlIGNvcmU6OnttZW06Ok1heWJlVW5pbml0LCBwdHIsIHB0cjo6Tm9uTnVsbCB9O1xuLS8vL1xuLS8vLyBmbiBib3Jyb3dfcGFnZVx1MDAzYydhXHUwMDNlKHZib3g6IFx1MDAyNidhIG11dCBWQm94XHUwMDNjTWF5YmVVbmluaXRcdTAwM2NbdTg7IFBBR0VfU0laRV1cdTAwM2VcdTAwM2UpIC1cdTAwM2UgQm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2Uge1xuLS8vLyAgICAgbGV0IHB0ciA9IHB0cjo6ZnJvbV9yZWYoXHUwMDI2Kip2Ym94KTtcbi0vLy9cbi0vLy8gICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tLy8vICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmNhc3QoKSkgfTtcbi0vLy9cbi0vLy8gICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkXG4tLy8vICAgICAvLyBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tLy8vICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcbi0vLy9cbi0vLy8gICAgIC8vIFNBRkVUWTpcbi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC5cbi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYHNlbGZgLlxuLS8vLyAgICAgdW5zYWZlIHsgQm9ycm93ZWRQYWdlOjpmcm9tX3JhdyhwYWdlKSB9XG4tLy8vIH1cbi0vLy9cbi0vLy8gbGV0IG11dCB2Ym94ID0gVkJveDo6XHUwMDNjW3U4OyBQQUdFX1NJWkVdXHUwMDNlOjpuZXdfdW5pbml0KEdGUF9LRVJORUwpPztcbi0vLy8gbGV0IHBhZ2UgPSBib3Jyb3dfcGFnZShcdTAwMjZtdXQgdmJveCk7XG4tLy8vXG4tLy8vIC8vIFNBRkVUWTogVGhlcmUgaXMgbm8gY29uY3VycmVudCByZWFkIG9yIHdyaXRlIHRvIHRoaXMgcGFnZS5cbi0vLy8gdW5zYWZlIHsgcGFnZS5maWxsX3plcm9fcmF3KDAsIFBBR0VfU0laRSk/IH07XG4tLy8vICMgT2s6Olx1MDAzYygpLCBFcnJvclx1MDAzZSgoKSlcbi0vLy8gYGBgXG4tLy8vXG4tLy8vICMgSW52YXJpYW50c1xuLS8vL1xuLS8vLyBUaGUgYm9ycm93ZWQgdW5kZXJseWluZyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBgJ2FgLlxuLS8vL1xuLS8vLyBbYFZCb3hgXToga2VybmVsOjphbGxvYzo6VkJveFxuLS8vLyBbYFZtYWxsb2NgXToga2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jXG4tcHViIHN0cnVjdCBCb3Jyb3dlZFBhZ2VcdTAwM2MnYVx1MDAzZShNYW51YWxseURyb3BcdTAwM2NQYWdlXHUwMDNlLCBQaGFudG9tRGF0YVx1MDAzY1x1MDAyNidhIFBhZ2VcdTAwM2UpO1xuLVxuLWltcGxcdTAwM2MnYVx1MDAzZSBCb3Jyb3dlZFBhZ2VcdTAwM2MnYVx1MDAzZSB7XG4tICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BCb3Jyb3dlZFBhZ2VgXSBmcm9tIGEgcmF3IHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLlxuLSAgICAvLy9cbi0gICAgLy8vICMgU2FmZXR5XG4tICAgIC8vL1xuLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC5cbi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCdhYC5cbi0gICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGxcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbi0gICAgICAgIGxldCBwYWdlID0gUGFnZSB7IHBhZ2U6IHB0ciB9O1xuLVxuLSAgICAgICAgLy8gSU5WQVJJQU5UOiBUaGUgc2FmZXR5IHJlcXVpcmVtZW50cyBndWFyYW50ZWUgdGhhdCBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZVxuLSAgICAgICAgLy8gYCdhYC5cbi0gICAgICAgIFNlbGYoTWFudWFsbHlEcm9wOjpuZXcocGFnZSksIFBoYW50b21EYXRhKVxuLSAgICB9XG4tfVxuLVxuLWltcGxcdTAwM2MnYVx1MDAzZSBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2Uge1xuLSAgICB0eXBlIFRhcmdldCA9IFBhZ2U7XG4tXG4tICAgIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbi0gICAgICAgIFx1MDAyNnNlbGYuMFxuLSAgICB9XG4tfVxuLVxuLS8vLyBUcmFpdCB0byBiZSBpbXBsZW1lbnRlZCBieSB0eXBlcyB3aGljaCBwcm92aWRlIGFuIFtgSXRlcmF0b3JgXSBpbXBsZW1lbnRhdGlvbiBvZlxuLS8vLyBbYEJvcnJvd2VkUGFnZWBdIGl0ZW1zLCBzdWNoIGFzIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxuKy8vLyBUcmFpdCB0byBiZSBpbXBsZW1lbnRlZCBieSB0eXBlcyB3aGljaCBwcm92aWRlIGFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXSByZWZlcmVuY2VzLCBzdWNoIGFzXG4rLy8vIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxuIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHtcbiAgICAgLy8vIFRoZSBbYEl0ZXJhdG9yYF0gdHlwZSwgZS5nLiBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbi0gICAgdHlwZSBJdGVyXHUwMDNjJ2FcdTAwM2U6IEl0ZXJhdG9yXHUwMDNjSXRlbSA9IEJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlXHUwMDNlXG4rICAgIHR5cGUgSXRlclx1MDAzYydhXHUwMDNlOiBJdGVyYXRvclx1MDAzY0l0ZW0gPSBcdTAwMjYnYSBQYWdlXHUwMDNlXG4gICAgIHdoZXJlXG4gICAgICAgICBTZWxmOiAnYTtcbiBcbi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuKyAgICAvLy8gUmV0dXJucyBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcyBvdmVyIGFsbCBwYWdlcyBvd25lZCBieSBgc2VsZmAuXG4gICAgIGZuIHBhZ2VfaXRlcihcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBTZWxmOjpJdGVyXHUwMDNjJ19cdTAwM2U7XG4gfVxuIFxuLS8vLyBBIHBvaW50ZXIgdG8gYSBwYWdlIHRoYXQgb3ducyB0aGUgcGFnZSBhbGxvY2F0aW9uLlxuKy8vLyBBIGBzdHJ1Y3QgcGFnZWAuXG4rLy8vXG4rLy8vIEEgYFBhZ2VgIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBzaGFyZWQgcmVmZXJlbmNlIG9yIHRocm91Z2ggYW4gb3duaW5nIFtgT3duZWRcdTAwM2NQYWdlXHUwMDNlYF07IHRoZSBsYXR0ZXJcbisvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuXG4gLy8vXG4gLy8vICMgSW52YXJpYW50c1xuIC8vL1xuLS8vLyBUaGUgcG9pbnRlciBpcyB2YWxpZCwgYW5kIGhhcyBvd25lcnNoaXAgb3ZlciB0aGUgcGFnZS5cbisvLy8gVGhlIGBQYWdlYCBpcyBiYWNrZWQgYnkgYSB2YWxpZCBgc3RydWN0IHBhZ2VgLlxuKyNbcmVwcih0cmFuc3BhcmVudCldXG4gcHViIHN0cnVjdCBQYWdlIHtcbi0gICAgcGFnZTogTm9uTnVsbFx1MDAzY2JpbmRpbmdzOjpwYWdlXHUwMDNlLFxuKyAgICBwYWdlOiBPcGFxdWVcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSxcbiB9XG4gXG4gLy8gU0FGRVRZOiBQYWdlcyBoYXZlIG5vIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHRoZW0gc3RheWluZyBvbiBhIGdpdmVuIHRocmVhZCwgc28gbW92aW5nIHRoZW0gYWNyb3NzXG5AQCAtMTg1LDE5ICsxMjEsMjAgQEAgaW1wbCBQYWdlIHtcbiAgICAgLy8vICMgT2s6Olx1MDAzYygpLCBrZXJuZWw6OmFsbG9jOjpBbGxvY0Vycm9yXHUwMDNlKCgpKVxuICAgICAvLy8gYGBgXG4gICAgICNbaW5saW5lXVxuLSAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZiwgQWxsb2NFcnJvclx1MDAzZSB7XG4rICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2UsIEFsbG9jRXJyb3JcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBnZnBfZmxhZ3NgLCB0aGlzIGNhbGwgbWF5IHNsZWVwLiBPdGhlciB0aGFuIHRoYXQsIGl0XG4gICAgICAgICAvLyBpcyBhbHdheXMgc2FmZSB0byBjYWxsIHRoaXMgbWV0aG9kLlxuICAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6YWxsb2NfcGFnZXMoZmxhZ3MuYXNfcmF3KCksIDApIH07XG4gICAgICAgICBsZXQgcGFnZSA9IE5vbk51bGw6Om5ldyhwYWdlKS5va19vcihBbGxvY0Vycm9yKT87XG4tICAgICAgICAvLyBJTlZBUklBTlQ6IFdlIGp1c3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBhIHBhZ2UsIHNvIHdlIG5vdyBoYXZlIG93bmVyc2hpcCBvZiB0aGUgbmV3bHlcbi0gICAgICAgIC8vIGFsbG9jYXRlZCBwYWdlLiBXZSB0cmFuc2ZlciB0aGF0IG93bmVyc2hpcCB0byB0aGUgbmV3IGBQYWdlYCBvYmplY3QuXG4tICAgICAgICBPayhTZWxmIHsgcGFnZSB9KVxuKyAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XG4rICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgT3duZWRcdTAwM2NQYWdlXHUwMDNlYCBvYmplY3QuXG4rICAgICAgICAvLyBTaW5jZSBgUGFnZWAgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSBwb2ludGVyIGRpcmVjdGx5LlxuKyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KVxuICAgICB9XG4gXG4gICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuXG4gICAgIHB1YiBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqbXV0IGJpbmRpbmdzOjpwYWdlIHtcbi0gICAgICAgIHNlbGYucGFnZS5hc19wdHIoKVxuKyAgICAgICAgc2VsZi5wYWdlLmdldCgpXG4gICAgIH1cbiBcbiAgICAgLy8vIEdldCB0aGUgbm9kZSBpZCBjb250YWluaW5nIHRoaXMgcGFnZS5cbkBAIC0yMDcsNiArMTQ0LDIwIEBAIHB1YiBmbiBuaWQoXHUwMDI2c2VsZikgLVx1MDAzZSBpMzIge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBhZ2VfdG9fbmlkKHNlbGYuYXNfcHRyKCkpIH1cbiAgICAgfVxuIFxuKyAgICAvLy8gQ3JlYXRlIGEgYFx1MDAyNlBhZ2VgIGZyb20gYSByYXcgYHN0cnVjdCBwYWdlYCBwb2ludGVyLlxuKyAgICAvLy9cbisgICAgLy8vICMgU2FmZXR5XG4rICAgIC8vL1xuKyAgICAvLy8gYHB0cmAgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZCByZWZlcmVuY2Ugd2l0aCBhIGxpZmV0aW1lIG9mIGAnYWAuXG4rICAgICNbaW5saW5lXVxuKyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3XHUwMDNjJ2FcdTAwM2UocHRyOiAqY29uc3QgYmluZGluZ3M6OnBhZ2UpIC1cdTAwM2UgXHUwMDI2J2EgU2VsZiB7XG4rICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCByZWZlcnMgdG8gYSB2YWxpZCBgc3RydWN0IHBhZ2VgLCBzb1xuKyAgICAgICAgLy8gdGhlIHJldHVybmVkIHJlZmVyZW5jZSB1cGhvbGRzIHRoZSB0eXBlIGludmFyaWFudCBvZiBgUGFnZWAuXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIG5vdCBudWxsIGFuZCBpcyBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZFxuKyAgICAgICAgLy8gcmVmZXJlbmNlLlxuKyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnB0ci5jYXN0KCkgfVxuKyAgICB9XG4rXG4gICAgIC8vLyBSdW5zIGEgcGllY2Ugb2YgY29kZSB3aXRoIHRoaXMgcGFnZSBtYXBwZWQgdG8gYW4gYWRkcmVzcy5cbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgcGFnZSBpcyB1bm1hcHBlZCB3aGVuIHRoaXMgY2FsbCByZXR1cm5zLlxuQEAgLTM3MywxMCArMzI0LDExIEBAIHB1YiB1bnNhZmUgZm4gY29weV9mcm9tX3VzZXJfc2xpY2VfcmF3KFxuICAgICB9XG4gfVxuIFxuLWltcGwgRHJvcCBmb3IgUGFnZSB7XG4raW1wbCBPd25hYmxlIGZvciBQYWdlIHtcbiAgICAgI1tpbmxpbmVdXG4tICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbi0gICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgd2UgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIHBhZ2UgYW5kIGNhbiBmcmVlIGl0LlxuLSAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6Ol9fZnJlZV9wYWdlcyhzZWxmLnBhZ2UuYXNfcHRyKCksIDApIH07XG4rICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWVcbisgICAgICAgIC8vIGl0LiBTaW5jZSBQYWdlIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcmF3IHBvaW50ZXIgZGlyZWN0bHkuXG4rICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6X19mcmVlX3BhZ2VzKHRoaXMuYXNfcHRyKCkuY2FzdCgpLCAwKSB9O1xuICAgICB9XG4gfVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BjaS5ycyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuaW5kZXggNTA3MWNhZTY1NDNmZC4uZWE5ZWY5OWNlY2IwNyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BjaS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvcGNpLnJzXG5AQCAtMTksNiArMTksMTAgQEBcbiAgICAgfSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgc3RyOjpDU3RyLFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTQ4MSw3ICs0ODUsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcdTAwM2NDdHhcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZVxuIGltcGxcdTAwM2MnYVx1MDAzZSBjcmF0ZTo6ZG1hOjpEZXZpY2VcdTAwM2MnYVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJ2FcdTAwM2VcdTAwM2Uge31cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBjaV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtNDkzLDYgKzQ5NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkRldmljZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4rXG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycyBiL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcbmluZGV4IDk3OWE5NzE4ZjE1M2QuLjA2N2Y2OGI5OWU4YzUgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5AQCAtNyw3ICs3LDE0IEBAXG4gLy8hIEMgaGVhZGVyOiBbYGluY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaCkgYW5kXG4gLy8hIFtgaW5jbHVkZS9saW51eC9waWQuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWQuaClcbiBcbi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdHlwZXM6Ok9wYXF1ZX07XG4rdXNlIGNyYXRlOjp7XG4rICAgIGJpbmRpbmdzLFxuKyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLFxuKyAgICB0eXBlczo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbit9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwncyBgc3RydWN0IHBpZF9uYW1lc3BhY2VgLiBUaHJlYWQgc2FmZS5cbkBAIC00MSw3ICs0OCw3IEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9wdHJcdTAwM2MnYVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLVx1MDAzZSBcdTAwMjYnYSBTZWxmIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYFBpZE5hbWVzcGFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC01NSw2ICs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1BpZE5hbWVzcGFjZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NQaWROYW1lc3BhY2VcdTAwM2VgIGZyb21cbisvLyBhIGBcdTAwMjZQaWROYW1lc3BhY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fVxuK1xuIC8vIFNBRkVUWTpcbiAvLyAtIGBQaWROYW1lc3BhY2U6OmRlY19yZWZgIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLlxuIC8vIC0gSXQgaXMgb2theSB0byBzZW5kIG93bmVyc2hpcCBvZiBgUGlkTmFtZXNwYWNlYCBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuaW5kZXggZDQxNTU1YTRiMzFkMi4uYTRkZGFhMWNjM2E0MCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuQEAgLTI0LDYgKzI0LDEwIEBAXG4gICAgIH0sXG4gICAgIG9mLFxuICAgICBwcmVsdWRlOjoqLFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTUxOSw3ICs1MjMsNyBAQCBwdWIgZm4gb3B0aW9uYWxfaXJxX2J5X25hbWUoXHUwMDI2c2VsZiwgbmFtZTogXHUwMDI2Q1N0cikgLVx1MDAzZSBSZXN1bHRcdTAwM2NJcnFSZXF1ZXN0XHUwMDNjJ19cdTAwM2VcdTAwM2Uge1xuIGltcGxcdTAwM2MnYVx1MDAzZSBjcmF0ZTo6ZG1hOjpEZXZpY2VcdTAwM2MnYVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJ2FcdTAwM2VcdTAwM2Uge31cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC01MzEsNiArNTM1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2RGV2aWNlYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbitcbiBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wd20ucnMgYi9ydXN0L2tlcm5lbC9wd20ucnNcbmluZGV4IDZjOWQ2NjcwMDllZjcuLjJkMWNkNzRkZDk4ZTEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wd20ucnNcbisrKyBiL3J1c3Qva2VybmVsL3B3bS5yc1xuQEAgLTEzLDcgKzEzLDExIEBAXG4gICAgIGRldnJlcyxcbiAgICAgZXJyb3I6OntzZWxmLCB0b19yZXN1bHR9LFxuICAgICBwcmVsdWRlOjoqLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFSZWYsXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy9cbiB9O1xuIHVzZSBjb3JlOjp7XG5AQCAtNjI5LDcgKzYzMyw3IEBAIHB1YiBmbiBuZXdcdTAwM2MnYVx1MDAzZShcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbXBsZW1lbnRzIHJlZmNvdW50aW5nIGZvciBgQ2hpcGAgdXNpbmcgdGhlIGVtYmVkZGVkIGBzdHJ1Y3QgZGV2aWNlYC5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IFB3bU9wc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBDaGlwXHUwMDNjVFx1MDAzZSB7XG4rdW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IGBzZWxmLjAuZ2V0KClgIHBvaW50cyB0byBhIHZhbGlkIGBwd21fY2hpcGAgYmVjYXVzZSBgc2VsZmAgZXhpc3RzLlxuQEAgLTY0Nyw2ICs2NTEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjQ2hpcFx1MDAzY1RcdTAwM2VcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjQ2hpcFx1MDAzY1RcdTAwM2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZDaGlwXHUwMDNjVFx1MDAzZWAuXG4rdW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge31cbitcbiAvLyBTQUZFVFk6IGBDaGlwYCBpcyBhIHdyYXBwZXIgYXJvdW5kIGAqbXV0IGJpbmRpbmdzOjpwd21fY2hpcGAuIFRoZSB1bmRlcmx5aW5nIENcbiAvLyBzdHJ1Y3R1cmUncyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCdzIGRldmljZSBtb2RlbFxuIC8vIGFuZCBQV00gY29yZSBsb2NraW5nIG1lY2hhbmlzbXMuIFRoZXJlZm9yZSwgaXQgaXMgc2FmZSB0byBtb3ZlIHRoZSBgQ2hpcGBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbmluZGV4IGI3MjFiMmUwMGI5ODYuLmU2ZmZlN2M2NTBjMzkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbisrKyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xuQEAgLTExLDcgKzExLDcgQEBcbiAvLyEgdW5kZXJseWluZyBvYmplY3QsIGJ1dCB0aGlzIHJlZmNvdW50IGlzIGludGVybmFsIHRvIHRoZSBvYmplY3QuIEl0IGVzc2VudGlhbGx5IGlzIGEgUnVzdFxuIC8vISBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGdldF9gIGFuZCBgcHV0X2AgcGF0dGVybiB1c2VkIGluIEMgZm9yIHJlZmVyZW5jZSBjb3VudGluZy5cbiAvLyFcbi0vLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmXHUwMDNjTXlUeXBlXHUwMDNlYF0sIGBNeVR5cGVgIG5lZWRzIHRvIGltcGxlbWVudCBbYEFsd2F5c1JlZkNvdW50ZWRgXS4gSXQgaXMgYSB0cmFpdFxuKy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcdTAwM2NNeVR5cGVcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XG4gLy8hIGZvciBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3Qgb2YgdGhlIGBNeVR5cGVgIHR5cGUuXG4gLy8hXG4gLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmNcbkBAIC0yMywyNiArMjMsMzUgQEBcbiAgICAgb3BzOjpEZXJlZixcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4rdXNlIGtlcm5lbDo6dHlwZXM6OntcbisgICAgT3duYWJsZVJlZkNvdW50ZWQsXG4rICAgIE93bmVkLCAvL1xuK307XG4gXG4tLy8vIFR5cGVzIHRoYXQgYXJlIF9hbHdheXNfIHJlZmVyZW5jZSBjb3VudGVkLlxuKy8vLyBUeXBlcyB0aGF0IGFyZSBpbnRlcm5hbGx5IHJlZmVyZW5jZSBjb3VudGVkLlxuIC8vL1xuIC8vLyBJdCBhbGxvd3Mgc3VjaCB0eXBlcyB0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSByZWYgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZnVuY3Rpb25zLlxuLS8vLyBBZGRpdGlvbmFsbHksIGl0IGFsbG93cyB1c2VycyB0byBjb252ZXJ0IGZyb20gYSBzaGFyZWQgcmVmZXJlbmNlIGBcdTAwMjZUYCB0byBhbiBvd25lZCByZWZlcmVuY2Vcbi0vLy8gW2BBUmVmXHUwMDNjVFx1MDAzZWBdLlxuIC8vL1xuIC8vLyBUaGlzIGlzIHVzdWFsbHkgaW1wbGVtZW50ZWQgYnkgd3JhcHBlcnMgdG8gZXhpc3Rpbmcgc3RydWN0dXJlcyBvbiB0aGUgQyBzaWRlIG9mIHRoZSBjb2RlLiBGb3JcbiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkXG4gLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuXG4gLy8vXG4rLy8vIE5vdGU6IEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXS4gSXQgcmVxdWlyZXMgYW5cbisvLy8gaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGFuZCBwcm92aWRlcyBvbmx5IHNoYXJlZCByZWZlcmVuY2VzLiBJZiB1bmlxdWUgcmVmZXJlbmNlcyBhcmUgcmVxdWlyZWRcbisvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW5cbisvLy8gW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdFxuKy8vLyBbYE93bmFibGVSZWZDb3VudGVkYF0gYWxsb3dzIHRvIGNvbnZlcnQgYmV0d2VlbiB1bmlxdWUgYW5kXG4rLy8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkgYW5kXG4rLy8vIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXSkuXG4rLy8vXG4gLy8vICMgU2FmZXR5XG4gLy8vXG4gLy8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCBrZWVwIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5XG4gLy8vIGF0IGxlYXN0IHVudGlsIG1hdGNoaW5nIGRlY3JlbWVudHMgYXJlIHBlcmZvcm1lZC5cbiAvLy9cbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBhbGwgaW5zdGFuY2VzIGFyZSByZWZlcmVuY2UtY291bnRlZC4gKE90aGVyd2lzZSB0aGV5XG4tLy8vIHdvbid0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdFxuLS8vLyBhbGl2ZS4pXG4tcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcbisvLy8gd29uJ3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0IGFsaXZlLilcbitwdWIgdW5zYWZlIHRyYWl0IFJlZkNvdW50ZWQge1xuICAgICAvLy8gSW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvYmplY3QuXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZik7XG4gXG5AQCAtNTUsMTEgKzY0LDI3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgd2FzIGEgcHJldmlvdXMgbWF0Y2hpbmcgaW5jcmVtZW50IHRvIHRoZSByZWZlcmVuY2UgY291bnQsXG4gICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heVxuICAgICAvLy8gcmVzdWx0IGluIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQpLCB1bmxlc3MgdGhlIGNhbGxlciBvd25zIGFub3RoZXIgaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudFxuLSAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzXG4tICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbisgICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscyBbYFJlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbiAgICAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSk7XG4gfVxuIFxuKy8vLyBBbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgdHlwZS5cbisvLy9cbisvLy8gSXQgYWxsb3dzIGRlcml2aW5nIGEgY291bnRlZCByZWZlcmVuY2UgW2BBUmVmXHUwMDNjVFx1MDAzZWBdIGZyb20gYSBgXHUwMDI2VGAuXG4rLy8vXG4rLy8vIFRoaXMgcHJvdmlkZXMgc29tZSBjb252ZW5pZW5jZSwgYnV0IGl0IGFsbG93cyBcImVzY2FwaW5nXCIgYm9ycm93IGNoZWNrcyBvbiBgXHUwMDI2VGAuIEFzIGl0XG4rLy8vIGNvbXBsaWNhdGVzIGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IGEgcmVmZXJlbmNlIHRvIFQgaXMgdW5pcXVlLCBpdCBpcyBvcHRpb25hbCB0byBwcm92aWRlIGZvclxuKy8vLyBbYFJlZkNvdW50ZWRgXSB0eXBlcy4gU2VlICpTYWZldHkqIGJlbG93LlxuKy8vL1xuKy8vLyAjIFNhZmV0eVxuKy8vL1xuKy8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBzYWZldHkgaW52YXJpYW50cyBhcmUgdmlvbGF0ZWQgYnkgdXBncmFkaW5nIGFuIGBcdTAwMjZUYCB0byBhblxuKy8vLyBbYEFSZWZcdTAwM2NUXHUwMDNlYF0uIEluIHBhcnRpY3VsYXIgdGhhdCBpbXBsaWVzIFtgQWx3YXlzUmVmQ291bnRlZGBdIGFuZCBbYGNyYXRlOjp0eXBlczo6T3duYWJsZWBdXG4rLy8vIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBmb3IgdGhlIHNhbWUgdHlwZSwgYXMgdGhpcyB3b3VsZCBhbGxvdyB2aW9sYXRpbmcgdGhlIHVuaXF1ZW5lc3MgZ3VhcmFudGVlXG4rLy8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZFx1MDAzY1RcdTAwM2VgXSBieSBkZXJlZmVyZW5jaW5nIGl0IGludG8gYW4gYFx1MDAyNlRgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbVxuKy8vLyB0aGF0LlxuK3B1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZDogUmVmQ291bnRlZCB7fVxuK1xuIC8vLyBBbiBvd25lZCByZWZlcmVuY2UgdG8gYW4gYWx3YXlzLXJlZmVyZW5jZS1jb3VudGVkIG9iamVjdC5cbiAvLy9cbiAvLy8gVGhlIG9iamVjdCdzIHJlZmVyZW5jZSBjb3VudCBpcyBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BBUmVmYF0gaXNcbkBAIC03MCw3ICs5NSw3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gLy8vXG4gLy8vIFRoZSBwb2ludGVyIHN0b3JlZCBpbiBgcHRyYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgW2BBUmVmYF0gaW5zdGFuY2UuIEluXG4gLy8vIHBhcnRpY3VsYXIsIHRoZSBbYEFSZWZgXSBpbnN0YW5jZSBvd25zIGFuIGluY3JlbWVudCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QncyByZWZlcmVuY2UgY291bnQuXG4tcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4rcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSB7XG4gICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4gICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY1RcdTAwM2UsXG4gfVxuQEAgLTc5LDE5ICsxMDQsMTkgQEAgcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4gLy8gaXQgZWZmZWN0aXZlbHkgbWVhbnMgc2hhcmluZyBgXHUwMDI2VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LCBpdCBuZWVkc1xuIC8vIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGFuIGBBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IHVsdGltYXRlbHkgYWNjZXNzIGBUYCB1c2luZyBhXG4gLy8gbXV0YWJsZSByZWZlcmVuY2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFx1MDAzZSBTZW5kIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXHUwMDNlIFNlbmQgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYFx1MDAyNkFSZWZcdTAwM2NUXHUwMDNlYCB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBgU3luY2BcbiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSxcbiAvLyBpdCBuZWVkcyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhIGBcdTAwMjZBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW5cbiAvLyBgQVJlZlx1MDAzY1RcdTAwM2VgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yXG4gLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgU3luYyArIFNlbmRcdTAwM2UgU3luYyBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFx1MDAzZSBTeW5jIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLlxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIEFSZWZcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBBUmVmXHUwMDNjVFx1MDAzZSB7XG4gICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFtgQVJlZmBdLlxuICAgICAvLy9cbiAgICAgLy8vIEl0IHRha2VzIG92ZXIgYW4gaW5jcmVtZW50IG9mIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuQEAgLTEyMCwxOSArMTQ1LDIxIEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbiAgICAgLy8vXG4gICAgIC8vLyBgYGBcbiAgICAgLy8vIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4tICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07XG4rICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XG4gICAgIC8vL1xuICAgICAvLy8gc3RydWN0IEVtcHR5IHt9XG4gICAgIC8vL1xuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXG4tICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7XG4rICAgIC8vLyAvLyBTQUZFVFk6IFRoZSBgUmVmQ291bnRlZGAgaW1wbGVtZW50YXRpb24gZm9yIGBFbXB0eWAgZG9lcyBub3QgY291bnQgcmVmZXJlbmNlcyBhbmQgbmV2ZXJcbisgICAgLy8vIC8vIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gVGh1cyB3ZSBjYW4gYWN0IGFzIG93bmluZyBhbiBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50IGZvclxuKyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLlxuKyAgICAvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRW1wdHkge1xuICAgICAvLy8gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge31cbiAgICAgLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZihfb2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge31cbiAgICAgLy8vIH1cbiAgICAgLy8vXG4gICAgIC8vLyBsZXQgbXV0IGRhdGEgPSBFbXB0eSB7fTtcbiAgICAgLy8vIGxldCBwdHIgPSBOb25OdWxsOjpcdTAwM2NFbXB0eVx1MDAzZTo6bmV3KFx1MDAyNm11dCBkYXRhKS51bndyYXAoKTtcbi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLlxuKyAgICAvLy8gLy8gU0FGRVRZOiBXZSBrZWVwIGBkYXRhYCBhcm91bmQgbG9uZ2VyIHRoYW4gdGhlIGBBUmVmYC5cbiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZlx1MDAzY0VtcHR5XHUwMDNlID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9O1xuICAgICAvLy8gbGV0IHJhd19wdHI6IE5vbk51bGxcdTAwM2NFbXB0eVx1MDAzZSA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTtcbiAgICAgLy8vXG5AQCAtMTQzLDcgKzE3MCw3IEBAIHB1YiBmbiBpbnRvX3JhdyhtZTogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBDbG9uZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICAgICAgc2VsZi5pbmNfcmVmKCk7XG4gICAgICAgICAvLyBTQUZFVFk6IFdlIGp1c3QgaW5jcmVtZW50ZWQgdGhlIHJlZmNvdW50IGFib3ZlLlxuQEAgLTE1MSw3ICsxNzgsNyBAQCBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIERlcmVmIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRGVyZWYgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBUO1xuIFxuICAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG5AQCAtMTY4LDcgKzE5NSwxNCBAQCBmbiBmcm9tKGI6IFx1MDAyNlQpIC1cdTAwM2UgU2VsZiB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFx1MDAzZSBGcm9tXHUwMDNjT3duZWRcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBmcm9tKGI6IE93bmVkXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbisgICAgICAgIFQ6OmludG9fc2hhcmVkKGIpXG4rICAgIH1cbit9XG4rXG4raW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UncmUgYWJvdXQgdG9cbiAgICAgICAgIC8vIGRlY3JlbWVudC5cbkBAIC0xNzgsMTkgKzIxMiwxOSBAQCBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjQVJlZlx1MDAzY1VcdTAwM2VcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCArIFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4tICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIFQ6IFJlZkNvdW50ZWQgKyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuKyAgICBVOiBSZWZDb3VudGVkLFxuIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZBUmVmXHUwMDNjVVx1MDAzZSkgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIFQ6OmVxKFx1MDAyNioqc2VsZiwgXHUwMDI2KipvdGhlcilcbiAgICAgfVxuIH1cbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCArIEVxXHUwMDNlIEVxIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkICsgRXFcdTAwM2UgRXEgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjXHUwMDI2J18gVVx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICsgUGFydGlhbEVxXHUwMDNjVVx1MDAzZSxcbisgICAgVDogUmVmQ291bnRlZCArIFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4ge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gZXEoXHUwMDI2c2VsZiwgb3RoZXI6IFx1MDAyNlx1MDAyNlUpIC1cdTAwM2UgYm9vbCB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdGFzay5ycyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcbmluZGV4IDM4MjczZjRlZWRiNTEuLjYyNTk0MzBiMGNhMzEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC90YXNrLnJzXG4rKysgYi9ydXN0L2tlcm5lbC90YXNrLnJzXG5AQCAtMTAsNyArMTAsMTIgQEBcbiAgICAgcGlkX25hbWVzcGFjZTo6UGlkTmFtZXNwYWNlLFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjpBUmVmLFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcbisgICAgICAgIE9wYXF1ZSxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gfTtcbiB1c2UgY29yZTo6e1xuICAgICBvcHM6OkRlcmVmLFxuQEAgLTM0Nyw3ICszNTIsNyBAQCBwdWIgZm4gZ3JvdXBfbGVhZGVyKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2VGFzayB7XG4gfVxuIFxuIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgVGFza2AgaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFRhc2sge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMzYxLDYgKzM2NiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjVGFza1x1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNlRhc2tgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge31cbitcbiBpbXBsIFBhcnRpYWxFcSBmb3IgVGFzayB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBlcShcdTAwMjZzZWxmLCBvdGhlcjogXHUwMDI2U2VsZikgLVx1MDAzZSBib29sIHtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC90eXBlcy5ycyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXG5pbmRleCBhYzMxNmZkN2I1MzhmLi42YWE3NjA5NTJjYjYzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvdHlwZXMucnNcbisrKyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXG5AQCAtMTUsNiArMTUsMTggQEBcbiBwdWIgbW9kIGZvcl9sdDtcbiBwdWIgdXNlIGZvcl9sdDo6Rm9yTHQ7XG4gXG4rcHViIHVzZSBjcmF0ZTo6e1xuKyAgICBvd25lZDo6e1xuKyAgICAgICAgT3duYWJsZSxcbisgICAgICAgIE93bmFibGVSZWZDb3VudGVkLFxuKyAgICAgICAgT3duZWQsIC8vXG4rICAgIH0sXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LCAvL1xuK307XG4rXG4gLy8vIFVzZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIGFuZCBmcm9tIGZvcmVpZ24gKG5vbi1SdXN0KSBsYW5ndWFnZXMuXG4gLy8vXG4gLy8vIE93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCBmcm9tIFJ1c3QgdG8gYSBmb3JlaWduIGxhbmd1YWdlIGJ5IGNhbGxpbmcgW2BTZWxmOjppbnRvX2ZvcmVpZ25gXSBhbmRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91c2IucnMgYi9ydXN0L2tlcm5lbC91c2IucnNcbmluZGV4IDdhZmYwYzgyZDBhZmMuLjU5MzUwYzZiMGRmMmEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC91c2IucnNcbisrKyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuQEAgLTE4LDcgKzE4LDEwIEBAXG4gICAgICAgICB0b19yZXN1bHQsIC8vXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4tICAgIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtMzkyLDcgKzM5NSw3IEBAIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNkRldmljZSB7XG4gfVxuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJbnRlcmZhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYEludGVyZmFjZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfaW50ZXJmYWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxuQEAgLTQwNiw2ICs0MDksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NJbnRlcmZhY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZJbnRlcmZhY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7fVxuK1xuIC8vIFNBRkVUWTogQSBgSW50ZXJmYWNlYCBpcyBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgYW5kIGNhbiBiZSByZWxlYXNlZCBmcm9tIGFueSB0aHJlYWQuXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgSW50ZXJmYWNlIHt9XG4gXG5AQCAtNDQzLDcgKzQ1MCw3IEBAIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OnVzYl9kZXZpY2Uge1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXG5AQCAtNDU3LDYgKzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkRldmljZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4rXG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG5pbmRleCA3ZTI1M2I2ZjI5OWNlLi43NzY3M2I4ZWE0NWZiIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG4rKysgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnNcbkBAIC0xOTIsNyArMTkyLDcgQEBcbiAgICAgc3luYzo6e1xuICAgICAgICAgYXJlZjo6e1xuICAgICAgICAgICAgIEFSZWYsXG4tICAgICAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbisgICAgICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICAgICAgfSxcbiAgICAgICAgIEFyYyxcbiAgICAgICAgIExvY2tDbGFzc0tleSwgLy9cbkBAIC05NTQsNyArOTU0LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd0RlbGF5ZWRXb3JrSXRlbVx1MDAzY0lEXHUwMDNlIGZvciBQaW5cdTAwM2NLQm94XHUwMDNjVFx1MDAzZVx1MDAzZVxuIC8vICAgICBpbXBsZW1lbnRhdGlvbiBvZiBgV29ya0l0ZW1Qb2ludGVyYCBmb3IgYEFSZWZcdTAwM2NUXHUwMDNlYC5cbiB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgV29ya0l0ZW1Qb2ludGVyXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbisgICAgVDogUmVmQ291bnRlZCxcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc1dvcmtcdTAwM2NULCBJRFx1MDAzZSxcbiB7XG5AQCAtOTg3LDcgKzk4Nyw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiAvLyByZXF1aXJlbWVudHMgb2YgYFdvcmtJdGVtUG9pbnRlcmAuXG4gdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd1dvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbisgICAgVDogUmVmQ291bnRlZCxcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc1dvcmtcdTAwM2NULCBJRFx1MDAzZSxcbiB7XG5AQCAtMTAyMCw3ICsxMDIwLDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd0RlbGF5ZWRXb3JrSXRlbVx1MDAzY0lEXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIHdoZXJlXG4gICAgIFQ6IFdvcmtJdGVtXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXHUwMDNlLFxuICAgICBUOiBIYXNEZWxheWVkV29ya1x1MDAzY1QsIElEXHUwMDNlLFxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxuKyAgICBUOiBSZWZDb3VudGVkLFxuIHtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxMzoxMjozOC43Njc2MzYzMTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzc5OTQwNDExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9ZmFsc2U6IEEgRGVlcCBEaXZlIGludG8gUnVzdCBBYnN0cmFjdGlvbiBSZWZhY3RvcmluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZSBpZiBpdCB3YXJyYW50cyBmdXp6aW5nLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCdzIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCByZXN0cnVjdHVyaW5nIFJ1c3QgYWJzdHJhY3Rpb25zIGZvciB0aGUgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgaW50cm9kdWNpbmcgYE93bmVkXHUwMDNjVFx1MDAzZWAgYW5kIGBPd25hYmxlYCB0cmFpdHMuIFdlJ3JlIGFsc28gc2VlaW5nIGEgcmVmYWN0b3Jpbmcgb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCBjaGFuZ2VzIGluIGhvdyBgUGFnZWAgYW5kIGBQYWdlSW5mb2AgYXJlIGhhbmRsZWQsIG5vdyB1c2luZyBgT3duZWRcdTAwM2NQYWdlXHUwMDNlYCBpbiBhbGxvY2F0aW9uLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgYmVoYXZpb3IgdGhhdCBjb3VsZCBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLiBPbiBpbml0aWFsIHJldmlldywgaXQgc2VlbXMgbGlrZSB3ZSdyZSBtb3N0bHkgZGVhbGluZyB3aXRoOlxuXG4qICAgYEFsd2F5c1JlZkNvdW50ZWRgIHNwbGl0IGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGBcbiogICBJbnRyb2R1Y3Rpb24gb2YgYE93bmVkXHUwMDNjVFx1MDAzZWAgYXMgYSBwb2ludGVyIHR5cGUuXG4qICAgYFBhZ2VgIGFsbG9jYXRpb24gbm93IHJldHVybmluZyBgT3duZWRcdTAwM2NQYWdlXHUwMDNlYC5cbiogICBgUGFnZUluZm9gIGluIEFuZHJvaWQgQmluZGVyIHVzaW5nIGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSBjaGFuZ2VzIHRvdWNoIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBkcml2ZXJzLiBTY2FubmluZyBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYCwgSSBzZWUgY2hhbmdlcyByZWxhdGVkIHRvIGBzZXRfcGFnZWAuIEhvd2V2ZXIsIHRoaXMgYXBwZWFycyB0byBiZSBhbm90aGVyIFJ1c3QgYWJzdHJhY3Rpb24gc2hpZnQsIGRlYWxpbmcgd2l0aCBgT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlYCBpbnN0ZWFkIG9mIGBPcHRpb25cdTAwM2NQYWdlXHUwMDNlYC4gVGhlIGBPd25lZFx1MDAzY1RcdTAwM2VgIGVzc2VudGlhbGx5IHdyYXBzIGBOb25OdWxsXHUwMDNjVFx1MDAzZWAuICBgUGFnZWAgd2FzIHByZXZpb3VzbHkgcmVwcmVzZW50ZWQgYXMgYE5vbk51bGxcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZWAuIE5vdywgaXTigJlzIGBOb25OdWxsXHUwMDNjUGFnZVx1MDAzZWAsIHdoaWNoIGVmZmVjdGl2ZWx5IGJlY29tZXMgYE5vbk51bGxcdTAwM2NPcGFxdWVcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZVx1MDAzZWAuICBUaGlzIG1lYW5zIHRoZSBzaXplIGFuZCBsYXlvdXQgYXJlIGlkZW50aWNhbC4gQWxzbywgdGhlIGRyb3AgbG9naWMgZm9yIGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgIGlzIHRoZSBzYW1lIGFzIHRoZSBwcmlvciBkcm9wIGxvZ2ljIGZvciB0aGUgb3JpZ2luYWwgYFBhZ2VgLlxuXG5Mb29raW5nIGRlZXBlciwgYHJ1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc2AgaXMgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIGB0b19wYWdlYCByZXR1cm5lZCBhIGBCb3Jyb3dlZFBhZ2VgLCBub3cgaXQgaXMgcmV0dXJuaW5nIGBcdTAwMjZwYWdlOjpQYWdlYC4gYEJvcnJvd2VkUGFnZWAgd2FzIGEgd3JhcHBlciBhcm91bmQgYE1hbnVhbGx5RHJvcFx1MDAzY1BhZ2VcdTAwM2VgLiBJdCBhcHBlYXJzIHRvIGJlIGFub3RoZXIgUnVzdCB0eXBlIHN5c3RlbSBjaGFuZ2UuXG5cblNvLCBhcmUgdGhlcmUgYW55ICpmdW5jdGlvbmFsKiBpbXBsaWNhdGlvbnM/IE5vLiBJdCBzZWVtcyB0aGlzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IHR5cGVzIGFuZCB0cmFpdHMuIEludHJvZHVjaW5nIGBPd25lZGAgYW5kIGBPd25hYmxlYCBhbmQgc3BsaXR0aW5nIGBBbHdheXNSZWZDb3VudGVkYCBkb2Vzbid0IHNlZW0gdG8gYWx0ZXIgZXhlY3V0aW9uIGZsb3cgb3IgY29yZSBrZXJuZWwgYmVoYXZpb3IuIExldCdzIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG5ldyBmZWF0dXJlcyBvciBsb2dpYyBhcyBhIHJlc3VsdCBvZiB0aGVzZSBjaGFuZ2VzLiBJJ20gc2VlaW5nIGEgbmV3IGZpbGUsIGBydXN0L2tlcm5lbC9vd25lZC5yc2AsIGJ1dCBpdCdzIGp1c3QgZGVmaW5pdGlvbnMgZm9yIHRoZSBuZXcgdHlwZXMgYW5kIHRyYWl0cy5cblxuUmV2aWV3aW5nIHRoZSBjaGFuZ2VzIGluIGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNgLCBgcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzYCwgYW5kIGBydXN0L2tlcm5lbC9vd25lZC5yc2AgYWdhaW4sIGl0IGxvb2tzIHB1cmVseSBsaWtlIGFuIEFQSSByZWZhY3RvcmluZy4gVGhlIGNvbXBpbGVkIGNvZGUgd2lsbCBhbG1vc3QgY2VydGFpbmx5IHJlbWFpbiBleGFjdGx5IHRoZSBzYW1lLiBObyBmdW5jdGlvbmFsIGNoYW5nZS5cblxuTGV0IG1lIG1ha2UgYWJzb2x1dGVseSBzdXJlLCBhbmQgZG91YmxlLWNoZWNrIGFsbCB0aGUgZmlsZXMgdG91Y2hlZCBpbiB0aGlzIHNlcmllcy5cblxuLSAgIGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNgOiBTd2l0Y2hlZCBmcm9tIGBPcHRpb25cdTAwM2NQYWdlXHUwMDNlYCB0byBgT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlYC5cbi0gICBgcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzYDogU3dpdGNoZWQgZnJvbSBgQm9ycm93ZWRQYWdlYCB0byBgXHUwMDI2UGFnZWAuXG4tICAgYHJ1c3Qva2VybmVsL2FsbG9jL2tib3gucnNgOiBBZGRlZCBgaW50b19ub25fbnVsbGAuXG4tICAgYHJ1c3Qva2VybmVsL2F1eGlsaWFyeS5yc2A6IENoYW5nZWQgYEFsd2F5c1JlZkNvdW50ZWRgIHRvIGBSZWZDb3VudGVkYCArIGBBbHdheXNSZWZDb3VudGVkYC5cbi0gICBgcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc2A6IFNhbWUuXG4tICAgYHJ1c3Qva2VybmVsL2NyZWQucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9kZXZpY2UucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzYDogU2FtZS5cbi0gICBgcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9mcy9maWxlLnJzYDogU2FtZS5cbi0gICBgcnVzdC9rZXJuZWwvaTJjLnJzYDogU2FtZS5cbi0gICBgcnVzdC9rZXJuZWwvbW0ucnNgOiBTYW1lLlxuLSAgIGBydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc2A6IFNhbWUuXG4tICAgYHJ1c3Qva2VybmVsL29wcC5yc2A6IFNhbWUuXG4tICAgYHJ1c3Qva2VybmVsL293bmVkLnJzYDogTmV3IGZpbGUgd2l0aCBgT3duYWJsZWAsIGBPd25lZGAsIGBPd25hYmxlUmVmQ291bnRlZGAuXG4tICAgYHJ1c3Qva2VybmVsL3BhZ2UucnNgOiBgQm9ycm93ZWRQYWdlYCByZW1vdmVkLCBgUGFnZWAgbm93IHVzZXMgYE93bmFibGVgLCBgYWxsb2NfcGFnZWAgcmV0dXJucyBgT3duZWRcdTAwM2NQYWdlXHUwMDNlYC5cbi0gICBgcnVzdC9rZXJuZWwvcGNpLnJzYDogU2FtZSByZWZjb3VudCBjaGFuZ2VzLlxuLSAgIFxuXG4iLCJJbnB1dFRva2VucyI6MjMxMzcsIk91dHB1dFRva2VucyI6MTEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDEzOjEyOjU2LjU2NzA0MzcyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIHRoZSBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHJhaXRzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCB1cGRhdGVzIHRoZSBgUGFnZWAgYWJzdHJhY3Rpb24gYW5kIGl0cyB1c2VycyAobGlrZSBBbmRyb2lkIEJpbmRlcikgdG8gdXNlIHRoZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIHRoZSBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHJhaXRzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCB1cGRhdGVzIHRoZSBgUGFnZWAgYWJzdHJhY3Rpb24gYW5kIGl0cyB1c2VycyAobGlrZSBBbmRyb2lkIEJpbmRlcikgdG8gdXNlIHRoZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTM6MTI6NTYuNTY3MDY5Mjg0WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6ptw[1] Phase: Running StartedAt: 2026-08-24 13:13:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6ptw[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-24 13:13:08 +0000 UTC FinishedAt: 2026-08-24 13:13:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}