Name: series-workflowmhbvr Phase: Failed StartedAt: 2026-07-01 20:11:28 +0000 UTC FinishedAt: 2026-07-01 20:34:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmhbvr[0] Phase: Succeeded StartedAt: 2026-07-01 20:11:28 +0000 UTC FinishedAt: 2026-07-01 20:34:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmhbvr[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 20:11:28 +0000 UTC FinishedAt: 2026-07-01 20:34:01 +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+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBsb2NrZGVwIGFubm90YXRpb25zIChsb2NrZGVwX2lzX2hlbGQpIHRvIGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1IGxvb3BzIHRvIGZpeCBSQ1UgbG9ja2RlcCBzcGxhdHMuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgbWx4NSBoYXJkd2FyZSBkcml2ZXIgaXMgZ2VuZXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdmMTlkMjAzOTkzNDA0OGZkMmZlNWIwZThhYzJkZDYyOWYzNTAwNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDIwOjMzOjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuY1xuaW5kZXggNTI4YjA0ZDRkZTQxNmIuLjMwMjhlMzI3ZTM2ZGEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNcbkBAIC00MDUsMTEgJiM0Mzs0MDUsMTMgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfaW5pdF9zYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eCxcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBtbHg1ZV9tYWNzZWNfcnhfc2MgKlxuLW1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHNjaV90IHNjaSlcbiYjNDM7bWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzY2lfdCBzY2kpXG4ge1xuIFx0c3RydWN0IG1seDVlX21hY3NlY19yeF9zYyAqaXRlcjtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIHJ4X3NjX2xpc3RfZWxlbWVudCkge1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIHJ4X3NjX2xpc3RfZWxlbWVudCxcbiYjNDM7XHRcdFx0XHRsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFjc2VjLVx1MDAzZWxvY2spKSB7XG4gXHRcdGlmIChpdGVyLVx1MDAzZXNjaSA9PSBzY2kpXG4gXHRcdFx0cmV0dXJuIGl0ZXI7XG4gXHR9XG5AQCAtNDczLDE0ICYjNDM7NDc1LDE1IEBAIHN0YXRpYyBib29sIG1seDVlX21hY3NlY19zZWN5X2ZlYXR1cmVzX3ZhbGlkYXRlKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxuIH1cbiBcbiBzdGF0aWMgc3RydWN0IG1seDVlX21hY3NlY19kZXZpY2UgKlxuLW1seDVlX21hY3NlY19nZXRfbWFjc2VjX2RldmljZV9jb250ZXh0KGNvbnN0IHN0cnVjdCBtbHg1ZV9tYWNzZWMgKm1hY3NlYyxcbiYjNDM7bWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHQoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxuIHtcbiBcdHN0cnVjdCBtbHg1ZV9tYWNzZWNfZGV2aWNlICppdGVyO1xuIFx0Y29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdDtcbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWMtXHUwMDNlbWFjc2VjX2RldmljZV9saXN0X2hlYWQ7XG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShpdGVyLCBsaXN0LCBtYWNzZWNfZGV2aWNlX2xpc3RfZWxlbWVudCkge1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIG1hY3NlY19kZXZpY2VfbGlzdF9lbGVtZW50LFxuJiM0MztcdFx0XHRcdGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYWNzZWMtXHUwMDNlbG9jaykpIHtcbiBcdFx0aWYgKGl0ZXItXHUwMDNlbmV0ZGV2ID09IGN0eC1cdTAwM2VzZWN5LVx1MDAzZW5ldGRldilcbiBcdFx0XHRyZXR1cm4gaXRlcjtcbiBcdH1cbkBAIC02OTIsNyAmIzQzOzY5NSw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2FkZF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxuIFx0fVxuIFxuIFx0cnhfc2NfbGlzdCA9IFx1MDAyNm1hY3NlY19kZXZpY2UtXHUwMDNlbWFjc2VjX3J4X3NjX2xpc3RfaGVhZDtcbi1cdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qocnhfc2NfbGlzdCwgY3R4X3J4X3NjLVx1MDAzZXNjaSk7XG4mIzQzO1x0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuIFx0aWYgKHJ4X3NjKSB7XG4gXHRcdG5ldGRldl9lcnIoY3R4LVx1MDAzZW5ldGRldiwgXCYjMzQ7TUFDc2VjIG9mZmxvYWQ6IHJ4X3NjIChzY2kgJWxsZCkgYWxyZWFkeSBleGlzdHNcXG5cJiMzNDssXG4gXHRcdFx0ICAgY3R4X3J4X3NjLVx1MDAzZXNjaSk7XG5AQCAtNzc1LDcgJiM0Mzs3NzgsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuJiM0MztcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHhfcnhfc2MtXHUwMDNlc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG5AQCAtODUzLDcgJiM0Mzs4NTYsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19kZWxfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eC1cdTAwM2VyeF9zYy1cdTAwM2VzY2kpO1xuJiM0MztcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHgtXHUwMDNlcnhfc2MtXHUwMDNlc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0bmV0ZGV2X2VycihjdHgtXHUwMDNlbmV0ZGV2LFxuIFx0XHRcdCAgIFwmIzM0O01BQ3NlYyBvZmZsb2FkIHJ4X3NjIHNjaSAlbGxkIGRvZXNuJiMzOTt0IGV4aXN0XFxuXCYjMzQ7LFxuQEAgLTg5NCw3ICYjNDM7ODk3LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfYWRkX3J4c2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG4gXHR9XG4gXG4gXHRsaXN0ID0gXHUwMDI2bWFjc2VjX2RldmljZS1cdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xuLVx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpO1xuJiM0MztcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBzY2kpO1xuIFx0aWYgKCFyeF9zYykge1xuIFx0XHRuZXRkZXZfZXJyKGN0eC1cdTAwM2VuZXRkZXYsXG4gXHRcdFx0ICAgXCYjMzQ7TUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24mIzM5O3QgZXhpc3RcXG5cJiMzNDssXG5AQCAtOTc4LDcgJiM0Mzs5ODEsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIHNjaSk7XG4mIzQzO1x0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIHNjaSk7XG4gXHRpZiAoIXJ4X3NjKSB7XG4gXHRcdG5ldGRldl9lcnIoY3R4LVx1MDAzZW5ldGRldixcbiBcdFx0XHQgICBcJiMzNDtNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2VzbiYjMzk7dCBleGlzdFxcblwmIzM0OyxcbkBAIC0xMDM1LDcgJiM0MzsxMDM4LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfZGVsX3J4c2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG4gXHR9XG4gXG4gXHRsaXN0ID0gXHUwMDI2bWFjc2VjX2RldmljZS1cdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xuLVx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpO1xuJiM0MztcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBzY2kpO1xuIFx0aWYgKCFyeF9zYykge1xuIFx0XHRuZXRkZXZfZXJyKGN0eC1cdTAwM2VuZXRkZXYsXG4gXHRcdFx0ICAgXCYjMzQ7TUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24mIzM5O3QgZXhpc3RcXG5cJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ZjE5ZDIwMzk5MzQwNDhmZDJmZTViMGU4YWMyZGQ2MjlmMzUwMDYzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAyMDozMzoyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuYwppbmRleCA1MjhiMDRkNGRlNDE2Yi4uMzAyOGUzMjdlMzZkYTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmMKQEAgLTQwNSwxMSAmIzQzOzQwNSwxMyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19pbml0X3NhKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4LAogfQogCiBzdGF0aWMgc3RydWN0IG1seDVlX21hY3NlY19yeF9zYyAqCi1tbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzY2lfdCBzY2kpCiYjNDM7bWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLAomIzQzOwkJCQkgICAgY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc2NpX3Qgc2NpKQogewogCXN0cnVjdCBtbHg1ZV9tYWNzZWNfcnhfc2MgKml0ZXI7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShpdGVyLCBsaXN0LCByeF9zY19saXN0X2VsZW1lbnQpIHsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgcnhfc2NfbGlzdF9lbGVtZW50LAomIzQzOwkJCQlsb2NrZGVwX2lzX2hlbGQoJmFtcDttYWNzZWMtJmd0O2xvY2spKSB7CiAJCWlmIChpdGVyLSZndDtzY2kgPT0gc2NpKQogCQkJcmV0dXJuIGl0ZXI7CiAJfQpAQCAtNDczLDE0ICYjNDM7NDc1LDE1IEBAIHN0YXRpYyBib29sIG1seDVlX21hY3NlY19zZWN5X2ZlYXR1cmVzX3ZhbGlkYXRlKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KQogfQogCiBzdGF0aWMgc3RydWN0IG1seDVlX21hY3NlY19kZXZpY2UgKgotbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHQoY29uc3Qgc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLAomIzQzO21seDVlX21hY3NlY19nZXRfbWFjc2VjX2RldmljZV9jb250ZXh0KHN0cnVjdCBtbHg1ZV9tYWNzZWMgKm1hY3NlYywKIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpCiB7CiAJc3RydWN0IG1seDVlX21hY3NlY19kZXZpY2UgKml0ZXI7CiAJY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKIAogCWxpc3QgPSAmYW1wO21hY3NlYy0mZ3Q7bWFjc2VjX2RldmljZV9saXN0X2hlYWQ7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgbWFjc2VjX2RldmljZV9saXN0X2VsZW1lbnQpIHsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgbWFjc2VjX2RldmljZV9saXN0X2VsZW1lbnQsCiYjNDM7CQkJCWxvY2tkZXBfaXNfaGVsZCgmYW1wO21hY3NlYy0mZ3Q7bG9jaykpIHsKIAkJaWYgKGl0ZXItJmd0O25ldGRldiA9PSBjdHgtJmd0O3NlY3ktJmd0O25ldGRldikKIAkJCXJldHVybiBpdGVyOwogCX0KQEAgLTY5Miw3ICYjNDM7Njk1LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfYWRkX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpCiAJfQogCiAJcnhfc2NfbGlzdCA9ICZhbXA7bWFjc2VjX2RldmljZS0mZ3Q7bWFjc2VjX3J4X3NjX2xpc3RfaGVhZDsKLQlyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy0mZ3Q7c2NpKTsKJiM0MzsJcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy0mZ3Q7c2NpKTsKIAlpZiAocnhfc2MpIHsKIAkJbmV0ZGV2X2VycihjdHgtJmd0O25ldGRldiwgJiMzNDtNQUNzZWMgb2ZmbG9hZDogcnhfc2MgKHNjaSAlbGxkKSBhbHJlYWR5IGV4aXN0c1xuJiMzNDssCiAJCQkgICBjdHhfcnhfc2MtJmd0O3NjaSk7CkBAIC03NzUsNyAmIzQzOzc3OCw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX3VwZF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KQogCX0KIAogCWxpc3QgPSAmYW1wO21hY3NlY19kZXZpY2UtJmd0O21hY3NlY19yeF9zY19saXN0X2hlYWQ7Ci0Jcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBjdHhfcnhfc2MtJmd0O3NjaSk7CiYjNDM7CXJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHhfcnhfc2MtJmd0O3NjaSk7CiAJaWYgKCFyeF9zYykgewogCQllcnIgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKQEAgLTg1Myw3ICYjNDM7ODU2LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfZGVsX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpCiAJfQogCiAJbGlzdCA9ICZhbXA7bWFjc2VjX2RldmljZS0mZ3Q7bWFjc2VjX3J4X3NjX2xpc3RfaGVhZDsKLQlyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eC0mZ3Q7cnhfc2MtJmd0O3NjaSk7CiYjNDM7CXJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHgtJmd0O3J4X3NjLSZndDtzY2kpOwogCWlmICghcnhfc2MpIHsKIAkJbmV0ZGV2X2VycihjdHgtJmd0O25ldGRldiwKIAkJCSAgICYjMzQ7TUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24mIzM5O3QgZXhpc3RcbiYjMzQ7LApAQCAtODk0LDcgJiM0Mzs4OTcsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19hZGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eCkKIAl9CiAKIAlsaXN0ID0gJmFtcDttYWNzZWNfZGV2aWNlLSZndDttYWNzZWNfcnhfc2NfbGlzdF9oZWFkOwotCXJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobGlzdCwgc2NpKTsKJiM0MzsJcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIHNjaSk7CiAJaWYgKCFyeF9zYykgewogCQluZXRkZXZfZXJyKGN0eC0mZ3Q7bmV0ZGV2LAogCQkJICAgJiMzNDtNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2VzbiYjMzk7dCBleGlzdFxuJiMzNDssCkBAIC05NzgsNyAmIzQzOzk4MSw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX3VwZF9yeHNhKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KQogCX0KIAogCWxpc3QgPSAmYW1wO21hY3NlY19kZXZpY2UtJmd0O21hY3NlY19yeF9zY19saXN0X2hlYWQ7Ci0Jcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpOwomIzQzOwlyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTsKIAlpZiAoIXJ4X3NjKSB7CiAJCW5ldGRldl9lcnIoY3R4LSZndDtuZXRkZXYsCiAJCQkgICAmIzM0O01BQ3NlYyBvZmZsb2FkIHJ4X3NjIHNjaSAlbGxkIGRvZXNuJiMzOTt0IGV4aXN0XG4mIzM0OywKQEAgLTEwMzUsNyAmIzQzOzEwMzgsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19kZWxfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eCkKIAl9CiAKIAlsaXN0ID0gJmFtcDttYWNzZWNfZGV2aWNlLSZndDttYWNzZWNfcnhfc2NfbGlzdF9oZWFkOwotCXJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobGlzdCwgc2NpKTsKJiM0MzsJcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIHNjaSk7CiAJaWYgKCFyeF9zYykgewogCQluZXRkZXZfZXJyKGN0eC0mZ3Q7bmV0ZGV2LAogCQkJICAgJiMzNDtNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2VzbiYjMzk7dCBleGlzdFxuJiMzNDssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MDgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4NjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNgLiBJdCYjMzk7cyBhIHNpbXBsZSBhZGRpdGlvbiwgc2xhcHBpbmcgYGxvY2tkZXBfaXNfaGVsZGAgaW50byBhIGNvdXBsZSBvZiBwbGFjZXMgd2l0aGluIHRoZSBgbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3RgIGFuZCBgbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHRgIGZ1bmN0aW9ucy4gVGhlIGludGVudGlvbiBpcyBjbGVhcjogc3F1YXNoaW5nIHNvbWUgbG9ja2RlcCB3YXJuaW5ncyByZWxhdGVkIHRvIFJDVSB1c2FnZS4gQnV0LCBpcyB0aGlzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nPwoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjb2RlIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIHBhdGNoIGRlYWxzIHdpdGggTUFDc2VjIG9mZmxvYWQsIHBhcnQgb2YgdGhlIE1lbGxhbm94IENvbm5lY3RYLTUmIzQzOyBkcml2ZXIgKG1seDUpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBtbHg1IGlzIGEgaGFyZHdhcmUgZHJpdmVyOyBpdCByZXF1aXJlcyBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlLCByaWdodD8gU3RhbmRhcmQgUUVNVS9HQ0Ugc2V0dXBzIGRvbiYjMzk7dCBuYXRpdmVseSBlbXVsYXRlIHRoaXMuIEkgbWVhbiwgdGhleSBoYXZlIGUxMDAwLCB2aXJ0aW8sIGFuZCBzb21lIG90aGVycywgYnV0IG5vdCBtbHg1LCB3aGljaCBpcyBtb3JlIGNvbXBsZXguIFNvLCBhbSBJIGRlYWxpbmcgd2l0aCBhIGRlYWQgZW5kIGZyb20gdGhlIGdldC1nbz8KClRoZW4sIHRoZSBzeXprYWxsZXIgcXVlc3Rpb24gcG9wcyB1cC4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgc29tZSBsZXZlbCBvZiBQQ0kgZnV6emluZz8gWWVzLCBpdCBkb2VzLCBidXQgdGhpcyBtbHg1IGRyaXZlciBpcyBhIGhlYXZ5d2VpZ2h0LiBUaGUgUENJIGZ1enppbmcgaW4gc3l6a2FsbGVyIGlzIHVzdWFsbHkgc2hhbGxvdyBhbmQgdW5saWtlbHkgdG8gZ2V0IGRlZXAgaW50byB0aGUgd2VlZHMgd2l0aCBzb21ldGhpbmcgdGhpcyBjb21wbGV4IHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIGVmZm9ydCB0byB0YXJnZXQgaXQuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlJiMzOTtzIGFueSBzcGVjaWZpYyBtbHg1IGNvbmZpZyBpbiBzeXprYWxsZXIgdG8gc3VnZ2VzdCB0aGF0IGl0JiMzOTtzIHdvcnRoIHRoZSBlZmZvcnQuCgpUaGVuLCB0aGVyZSYjMzk7cyB0aGUgdGV4dCBwcm9tcHQuIFRoZSBwcm9tcHQgc2F5cyB0aGF0IGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMsIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nLiBPa2F5LCBzbyBtbHg1IGlzbiYjMzk7dCBuYXRpdmVseSBlbXVsYXRlZC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB2RFBBIG9yIFZGSU8sIGJ1dCB0aGF0IHN0aWxsIHJlcXVpcmVzIHNvbWUgbGV2ZWwgb2YgaGFyZHdhcmUgcGFzc3Rocm91Z2gsIHJpZ2h0PyBFdmVuIHdpdGggc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nLCBpdCYjMzk7cyBhIGxvbmcgc2hvdC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSB0cnVseSBnZXQgdG8gdGhlIGBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdGA/CgpJIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBwYXRjaC4gSXQmIzM5O3MganVzdCBhZGRpbmcgdGhhdCBgbG9ja2RlcF9pc19oZWxkYCBjaGVjay4gVGhpcyBpc24mIzM5O3QgYWJvdXQgYWx0ZXJpbmcgdGhlIGZ1bmN0aW9uYWwgY29kZSBwYXRoOyBpdCYjMzk7cyBqdXN0IGFib3V0IHN1cHByZXNzaW5nIGEgbG9ja2RlcCB3YXJuaW5nLiBNeSB0aGlua2luZyBnb2VzIHRvIHRoZSBwcm9tcHQgYWdhaW46ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiAtIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMuLi4gLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDsgU28sIGFkZGluZyBhIGBsb2NrZGVwX2lzX2hlbGRgIOKAkyBpcyB0aGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2U/CgpUaGUgYGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBtYWNybyBpcyB3aGF0JiMzOTtzIGJlaW5nIG1vZGlmaWVkLiBUaGUgYGNvbmRgIHBhcmFtZXRlciBvZiB0aGF0IG1hY3JvIGlzIG9ubHkgY2hlY2tlZCB3aGVuIGBDT05GSUdfUFJPVkVfUkNVYCBpcyBlbmFibGVkLiBJdCBpcyBtZXJlbHkgYSBsb2NrZGVwIGNoZWNrLCBzbyBpZiB0cnVlIHRoZSBsb2NrZGVwIHdhcm5pbmcgaXMgYXZvaWRlZC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGdlbmVyYXRlZCBjb2RlIG9mIHRoZSBsb29wIGl0c2VsZiwgb25seSBhZGRzIHRoZSBsb2NrZGVwIGNoZWNrLCBhbmQgdGh1cyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KCkdpdmVuIGFsbCBvZiB0aGF0LCB0aGlzIGlzIHJlYWxseSBtb3JlIGxpa2UgYSBwdXJlbHkgaW5mb3JtYXRpb25hbCBjaGFuZ2UsIG5vdCBvbmUgdGhhdCBkaXJlY3RseSBpbXBhY3RzIGhvdyB0aGUgY29kZSBleGVjdXRlcyAob3RoZXIgdGhhbiwgaG9wZWZ1bGx5LCBwcmV2ZW50aW5nIGxvY2tkZXAgd2FybmluZ3MpLiBJdCYjMzk7cyBhIGxvY2tkZXAgYW5ub3RhdGlvbi4gVGh1cywgaXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBub3Qgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZpbmUgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaD0zNDY9c3RhdGljIGlubGluZSB2b2lkIGxpc3Rfc3BsaWNlX3RhaWxfaW5pdF9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCxcbi0tXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaC00NDUtICovXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaDo0NDY6I2RlZmluZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwb3MsIGhlYWQsIG1lbWJlciwgY29uZC4uLilcdFx0XFxcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oLTQ0Ny1cdGZvciAoX19saXN0X2NoZWNrX3JjdShkdW1teSwgIyMgY29uZCwgMCksXHRcdFx0XFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTc4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYF9fbGlzdF9jaGVja19yY3VgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGEgZ3JpcCBvbiB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgX19saXN0X2NoZWNrX3JjdWAgaXMgYWN0dWFsbHkgZG9pbmcuIEkmIzM5O20gZ29pbmcgdG8gbG9vayB1cCB0aGUgZGVmaW5pdGlvbiBkaXJlY3RseSwgZGlnIGludG8gdGhlIGNvZGUsIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBzb2xpZCBkZWZpbml0aW9uIOKAkyB0aGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIGhlcmUsIGFmdGVyIGFsbC4gVGhpcyBmdW5jdGlvbiBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIHNvbWV0aGluZyByZWxhdGVkIHRvIGNoZWNraW5nIGEgbGlzdCBzdHJ1Y3R1cmUsIGFuZCB0aGUgJiMzNDtSQ1UmIzM0OyBwYXJ0ICpzY3JlYW1zKiB0aGF0IHdlIGFyZSBpbiB0aGUgcmVhbG0gb2YgUmVhZC1Db3B5LVVwZGF0ZSBzeW5jaHJvbml6YXRpb24uIFRoaXMgaXMgZ29pbmcgdG8gcmVxdWlyZSBhIGNhcmVmdWwgZXhhbWluYXRpb24gb2YgY29uY3VycmVudCBhY2Nlc3MgcGF0dGVybnMsIG1lbW9yeSBvcmRlcmluZywgYW5kIHRoZSBndWFyYW50ZWVzIHByb3ZpZGVkIGJ5IFJDVS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0LiBJcyBpdCB2ZXJpZnlpbmcgbGlzdCBpbnRlZ3JpdHk/IElzIGl0IHJlbGF0ZWQgdG8gZGVidWdnaW5nPyBJcyBpdCBmb3IgZXJyb3IgZGV0ZWN0aW9uIGR1cmluZyBSQ1Ugb3BlcmF0aW9ucz8gVW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtIHdpbGwgZGljdGF0ZSB0aGUgZGVwdGggb2YgbXkgaW52ZXN0aWdhdGlvbi4gU28sIGRlZmluaXRpb24gZmlyc3QsIHRoZW4gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIF9fbGlzdF9jaGVja19yY3UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaD0yMj1zdGF0aWMgaW5saW5lIHZvaWQgSU5JVF9MSVNUX0hFQURfUkNVKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXG4tLVxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtNzEtI2lmZGVmIENPTkZJR19QUk9WRV9SQ1VfTElTVFxuaW5jbHVkZS9saW51eC9yY3VsaXN0Lmg6NzI6I2RlZmluZSBfX2xpc3RfY2hlY2tfcmN1KGR1bW15LCBjb25kLCBleHRyYS4uLilcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaC03My1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtODQtI2Vsc2VcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oOjg1OiNkZWZpbmUgX19saXN0X2NoZWNrX3JjdShkdW1teSwgY29uZCwgZXh0cmEuLi4pXHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtODYtXHQoeyBjaGVja19hcmdfY291bnRfb25lKGV4dHJhKTsgfSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjU5CgkJCQkJCQlvdXRwdXQ6IDk4CgkJCQkJCQl0aG91Z2h0czogMzc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyBhZnRlciBleGFtaW5pbmcgdGhpcyBwYXRjaCBjbG9zZWx5LCBteSBjb25jbHVzaW9uIGlzIHRoYXQgaXQmIzM5O3MgcHVyZWx5IGEgbG9ja2RlcCBhbm5vdGF0aW9uIGZpeCwgYW5kIHRoZXJlZm9yZSwgbm90IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgY29yZSBjaGFuZ2Ugd2l0aGluIGBfX2xpc3RfY2hlY2tfcmN1YCBpcyBzb2xlbHkgYWJvdXQgbG9ja2RlcCBjaGVja3MuIEl0IGRvZXNuJiMzOTt0IG1vZGlmeSB0aGUgbG9vcCYjMzk7cyBleGVjdXRpb24gcGF0aCBpbiBhbnkgd2F5LiBUaGlzIGlzIGNyaXRpY2FsLCBtZWFuaW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcywgYXQgYWxsLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIHBhdGNoIGlzIHJlYWxseSBqdXN0IGFkZGluZyBgbG9ja2RlcF9pc19oZWxkYCBhbm5vdGF0aW9ucyB0byBgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIGxvb3BzLiBXaGlsZSB0aGlzIGlzIGltcG9ydGFudCBmb3IgcmVzb2x2aW5nIGxvY2tkZXAgd2FybmluZ3MsIGl0IGRvZXNuJiMzOTt0IGNoYW5nZSBob3cgdGhlIGRyaXZlciAqYWN0dWFsbHkqIHdvcmtzLCBpdHMgZXhlY3V0aW9uIGZsb3cuIEFuZCBvbiB0b3Agb2YgdGhhdCwgYW5kIHRoaXMgaXMgaW1wb3J0YW50LCB0aGUgbWx4NSBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgd2hpY2ggaXNuJiMzOTt0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBzZXR1cC4gVGhpcyBmdXJ0aGVyIHJlZHVjZXMgdGhlIGxpa2VsaWhvb2Qgb2YgdGhlIGNoYW5nZSBsZWFkaW5nIHRvIHNvbWV0aGluZyBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4KCkkgYWxzbyBkb3VibGUtY2hlY2tlZCBmb3IgYW55ICpvdGhlciogY2hhbmdlcyBsdXJraW5nIGluIHRoZSBwYXRjaC4gSSBzYXcgdGhhdCBgbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3RgIGFuZCBgbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHRgIHdlcmUgbW9kaWZpZWQsIGFuZCB0aGUgYGNvbnN0YCBxdWFsaWZpZXIgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYG1hY3NlY2AgcG9pbnRlciBpbiB0aG9zZSBmdW5jdGlvbnMuIEhvd2V2ZXIsIHRoaXMgaXMgYmVjYXVzZSBgbG9ja2RlcF9pc19oZWxkYCBtaWdodCBuZWVkIGEgbm9uLWNvbnN0IHBvaW50ZXIsIG9yIHRoZSBjaGFuZ2UgaXMgc2ltcGx5IHRvIHBhc3MgaXQgdG8gdGhlIGxvY2tkZXAgbWFjcm8uIEFnYWluLCBpdCBpcyAqbm90KiBhIGZ1bmN0aW9uYWwgY2hhbmdlLgoKVGhlcmVmb3JlLCBjb25zaWRlcmluZyB0aGUgY29tcGxldGUgbGFjayBvZiBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgcmVsaWFuY2Ugb24gc3BlY2lmaWMgaGFyZHdhcmUsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgbG9ja2RlcCBhbm5vdGF0aW9ucyAobG9ja2RlcF9pc19oZWxkKSB0byBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSBsb29wcyB0byBmaXggUkNVIGxvY2tkZXAgc3BsYXRzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIG1seDUgaGFyZHdhcmUgZHJpdmVyIGlzIGdlbmVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzoyNy40Mjg4MzcxNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzU0OTI1NTA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzoyNy40Mjg4NDU0MzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzE1MjMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdmMTlkMjAzOTkzNDA0OGZkMmZlNWIwZThhYzJkZDYyOWYzNTAwNjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAyMDozMzoyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNcXG5pbmRleCA1MjhiMDRkNGRlNDE2Yi4uMzAyOGUzMjdlMzZkYTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jXFxuQEAgLTQwNSwxMSArNDA1LDEzIEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2luaXRfc2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgsXFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgbWx4NWVfbWFjc2VjX3J4X3NjICpcXG4tbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QoY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc2NpX3Qgc2NpKVxcbittbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChzdHJ1Y3QgbWx4NWVfbWFjc2VjICptYWNzZWMsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzY2lfdCBzY2kpXFxuIHtcXG4gXFx0c3RydWN0IG1seDVlX21hY3NlY19yeF9zYyAqaXRlcjtcXG4gXFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIHJ4X3NjX2xpc3RfZWxlbWVudCkge1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShpdGVyLCBsaXN0LCByeF9zY19saXN0X2VsZW1lbnQsXFxuK1xcdFxcdFxcdFxcdGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2bWFjc2VjLVxcdTAwM2Vsb2NrKSkge1xcbiBcXHRcXHRpZiAoaXRlci1cXHUwMDNlc2NpID09IHNjaSlcXG4gXFx0XFx0XFx0cmV0dXJuIGl0ZXI7XFxuIFxcdH1cXG5AQCAtNDczLDE0ICs0NzUsMTUgQEAgc3RhdGljIGJvb2wgbWx4NWVfbWFjc2VjX3NlY3lfZmVhdHVyZXNfdmFsaWRhdGUoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgbWx4NWVfbWFjc2VjX2RldmljZSAqXFxuLW1seDVlX21hY3NlY19nZXRfbWFjc2VjX2RldmljZV9jb250ZXh0KGNvbnN0IHN0cnVjdCBtbHg1ZV9tYWNzZWMgKm1hY3NlYyxcXG4rbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHQoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXFxuIHtcXG4gXFx0c3RydWN0IG1seDVlX21hY3NlY19kZXZpY2UgKml0ZXI7XFxuIFxcdGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7XFxuIFxcbiBcXHRsaXN0ID0gXFx1MDAyNm1hY3NlYy1cXHUwMDNlbWFjc2VjX2RldmljZV9saXN0X2hlYWQ7XFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIG1hY3NlY19kZXZpY2VfbGlzdF9lbGVtZW50KSB7XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIG1hY3NlY19kZXZpY2VfbGlzdF9lbGVtZW50LFxcbitcXHRcXHRcXHRcXHRsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNm1hY3NlYy1cXHUwMDNlbG9jaykpIHtcXG4gXFx0XFx0aWYgKGl0ZXItXFx1MDAzZW5ldGRldiA9PSBjdHgtXFx1MDAzZXNlY3ktXFx1MDAzZW5ldGRldilcXG4gXFx0XFx0XFx0cmV0dXJuIGl0ZXI7XFxuIFxcdH1cXG5AQCAtNjkyLDcgKzY5NSw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2FkZF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxcbiBcXHR9XFxuIFxcbiBcXHRyeF9zY19saXN0ID0gXFx1MDAyNm1hY3NlY19kZXZpY2UtXFx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XFxuLVxcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qocnhfc2NfbGlzdCwgY3R4X3J4X3NjLVxcdTAwM2VzY2kpO1xcbitcXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgcnhfc2NfbGlzdCwgY3R4X3J4X3NjLVxcdTAwM2VzY2kpO1xcbiBcXHRpZiAocnhfc2MpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihjdHgtXFx1MDAzZW5ldGRldiwgXFxcIk1BQ3NlYyBvZmZsb2FkOiByeF9zYyAoc2NpICVsbGQpIGFscmVhZHkgZXhpc3RzXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICBjdHhfcnhfc2MtXFx1MDAzZXNjaSk7XFxuQEAgLTc3NSw3ICs3NzgsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcXG4gXFx0fVxcbiBcXG4gXFx0bGlzdCA9IFxcdTAwMjZtYWNzZWNfZGV2aWNlLVxcdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xcbi1cXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eF9yeF9zYy1cXHUwMDNlc2NpKTtcXG4rXFx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIGN0eF9yeF9zYy1cXHUwMDNlc2NpKTtcXG4gXFx0aWYgKCFyeF9zYykge1xcbiBcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtODUzLDcgKzg1Niw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2RlbF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxcbiBcXHR9XFxuIFxcbiBcXHRsaXN0ID0gXFx1MDAyNm1hY3NlY19kZXZpY2UtXFx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XFxuLVxcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobGlzdCwgY3R4LVxcdTAwM2VyeF9zYy1cXHUwMDNlc2NpKTtcXG4rXFx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIGN0eC1cXHUwMDNlcnhfc2MtXFx1MDAzZXNjaSk7XFxuIFxcdGlmICghcnhfc2MpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihjdHgtXFx1MDAzZW5ldGRldixcXG4gXFx0XFx0XFx0ICAgXFxcIk1BQ3NlYyBvZmZsb2FkIHJ4X3NjIHNjaSAlbGxkIGRvZXNuJ3QgZXhpc3RcXFxcblxcXCIsXFxuQEAgLTg5NCw3ICs4OTcsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19hZGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcXG4gXFx0fVxcbiBcXG4gXFx0bGlzdCA9IFxcdTAwMjZtYWNzZWNfZGV2aWNlLVxcdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xcbi1cXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIHNjaSk7XFxuK1xcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBzY2kpO1xcbiBcXHRpZiAoIXJ4X3NjKSB7XFxuIFxcdFxcdG5ldGRldl9lcnIoY3R4LVxcdTAwM2VuZXRkZXYsXFxuIFxcdFxcdFxcdCAgIFxcXCJNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2Vzbid0IGV4aXN0XFxcXG5cXFwiLFxcbkBAIC05NzgsNyArOTgxLDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfdXBkX3J4c2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXFxuIFxcdH1cXG4gXFxuIFxcdGxpc3QgPSBcXHUwMDI2bWFjc2VjX2RldmljZS1cXHUwMDNlbWFjc2VjX3J4X3NjX2xpc3RfaGVhZDtcXG4tXFx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpO1xcbitcXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTtcXG4gXFx0aWYgKCFyeF9zYykge1xcbiBcXHRcXHRuZXRkZXZfZXJyKGN0eC1cXHUwMDNlbmV0ZGV2LFxcbiBcXHRcXHRcXHQgICBcXFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcXFxuXFxcIixcXG5AQCAtMTAzNSw3ICsxMDM4LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfZGVsX3J4c2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXFxuIFxcdH1cXG4gXFxuIFxcdGxpc3QgPSBcXHUwMDI2bWFjc2VjX2RldmljZS1cXHUwMDNlbWFjc2VjX3J4X3NjX2xpc3RfaGVhZDtcXG4tXFx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpO1xcbitcXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTtcXG4gXFx0aWYgKCFyeF9zYykge1xcbiBcXHRcXHRuZXRkZXZfZXJyKGN0eC1cXHUwMDNlbmV0ZGV2LFxcbiBcXHRcXHRcXHQgICBcXFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcXFxuXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6MzM6MjcuNzg2Nzc4Mjk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzE5MTI5NzU0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdmMTlkMjAzOTkzNDA0OGZkMmZlNWIwZThhYzJkZDYyOWYzNTAwNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDIwOjMzOjI2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jXG5pbmRleCA1MjhiMDRkNGRlNDE2Yi4uMzAyOGUzMjdlMzZkYTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuY1xuQEAgLTQwNSwxMSArNDA1LDEzIEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2luaXRfc2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgsXG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbWx4NWVfbWFjc2VjX3J4X3NjICpcbi1tbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzY2lfdCBzY2kpXG4rbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHNjaV90IHNjaSlcbiB7XG4gXHRzdHJ1Y3QgbWx4NWVfbWFjc2VjX3J4X3NjICppdGVyO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgcnhfc2NfbGlzdF9lbGVtZW50KSB7XG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShpdGVyLCBsaXN0LCByeF9zY19saXN0X2VsZW1lbnQsXG4rXHRcdFx0XHRsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFjc2VjLVx1MDAzZWxvY2spKSB7XG4gXHRcdGlmIChpdGVyLVx1MDAzZXNjaSA9PSBzY2kpXG4gXHRcdFx0cmV0dXJuIGl0ZXI7XG4gXHR9XG5AQCAtNDczLDE0ICs0NzUsMTUgQEAgc3RhdGljIGJvb2wgbWx4NWVfbWFjc2VjX3NlY3lfZmVhdHVyZXNfdmFsaWRhdGUoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbWx4NWVfbWFjc2VjX2RldmljZSAqXG4tbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHQoY29uc3Qgc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxuK21seDVlX21hY3NlY19nZXRfbWFjc2VjX2RldmljZV9jb250ZXh0KHN0cnVjdCBtbHg1ZV9tYWNzZWMgKm1hY3NlYyxcbiBcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiB7XG4gXHRzdHJ1Y3QgbWx4NWVfbWFjc2VjX2RldmljZSAqaXRlcjtcbiBcdGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7XG4gXG4gXHRsaXN0ID0gXHUwMDI2bWFjc2VjLVx1MDAzZW1hY3NlY19kZXZpY2VfbGlzdF9oZWFkO1xuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgbWFjc2VjX2RldmljZV9saXN0X2VsZW1lbnQpIHtcbitcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIG1hY3NlY19kZXZpY2VfbGlzdF9lbGVtZW50LFxuK1x0XHRcdFx0bG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hY3NlYy1cdTAwM2Vsb2NrKSkge1xuIFx0XHRpZiAoaXRlci1cdTAwM2VuZXRkZXYgPT0gY3R4LVx1MDAzZXNlY3ktXHUwMDNlbmV0ZGV2KVxuIFx0XHRcdHJldHVybiBpdGVyO1xuIFx0fVxuQEAgLTY5Miw3ICs2OTUsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19hZGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdHJ4X3NjX2xpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuK1x0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuIFx0aWYgKHJ4X3NjKSB7XG4gXHRcdG5ldGRldl9lcnIoY3R4LVx1MDAzZW5ldGRldiwgXCJNQUNzZWMgb2ZmbG9hZDogcnhfc2MgKHNjaSAlbGxkKSBhbHJlYWR5IGV4aXN0c1xcblwiLFxuIFx0XHRcdCAgIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuQEAgLTc3NSw3ICs3NzgsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuK1x0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuIFx0aWYgKCFyeF9zYykge1xuIFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIG91dDtcbkBAIC04NTMsNyArODU2LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfZGVsX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG4gXHR9XG4gXG4gXHRsaXN0ID0gXHUwMDI2bWFjc2VjX2RldmljZS1cdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xuLVx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBjdHgtXHUwMDNlcnhfc2MtXHUwMDNlc2NpKTtcbitcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHgtXHUwMDNlcnhfc2MtXHUwMDNlc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0bmV0ZGV2X2VycihjdHgtXHUwMDNlbmV0ZGV2LFxuIFx0XHRcdCAgIFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcblwiLFxuQEAgLTg5NCw3ICs4OTcsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19hZGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIHNjaSk7XG4rXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0bmV0ZGV2X2VycihjdHgtXHUwMDNlbmV0ZGV2LFxuIFx0XHRcdCAgIFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcblwiLFxuQEAgLTk3OCw3ICs5ODEsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIHNjaSk7XG4rXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0bmV0ZGV2X2VycihjdHgtXHUwMDNlbmV0ZGV2LFxuIFx0XHRcdCAgIFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcblwiLFxuQEAgLTEwMzUsNyArMTAzOCw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2RlbF9yeHNhKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxuIFx0fVxuIFxuIFx0bGlzdCA9IFx1MDAyNm1hY3NlY19kZXZpY2UtXHUwMDNlbWFjc2VjX3J4X3NjX2xpc3RfaGVhZDtcbi1cdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobGlzdCwgc2NpKTtcbitcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBzY2kpO1xuIFx0aWYgKCFyeF9zYykge1xuIFx0XHRuZXRkZXZfZXJyKGN0eC1cdTAwM2VuZXRkZXYsXG4gXHRcdFx0ICAgXCJNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2Vzbid0IGV4aXN0XFxuXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzoyNy43ODY3ODA4NDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTk0MzM4NTk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNgLiBJdCdzIGEgc2ltcGxlIGFkZGl0aW9uLCBzbGFwcGluZyBgbG9ja2RlcF9pc19oZWxkYCBpbnRvIGEgY291cGxlIG9mIHBsYWNlcyB3aXRoaW4gdGhlIGBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdGAgYW5kIGBtbHg1ZV9tYWNzZWNfZ2V0X21hY3NlY19kZXZpY2VfY29udGV4dGAgZnVuY3Rpb25zLiBUaGUgaW50ZW50aW9uIGlzIGNsZWFyOiBzcXVhc2hpbmcgc29tZSBsb2NrZGVwIHdhcm5pbmdzIHJlbGF0ZWQgdG8gUkNVIHVzYWdlLiBCdXQsIGlzIHRoaXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmc/XG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBwYXRjaCBkZWFscyB3aXRoIE1BQ3NlYyBvZmZsb2FkLCBwYXJ0IG9mIHRoZSBNZWxsYW5veCBDb25uZWN0WC01KyBkcml2ZXIgKG1seDUpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBtbHg1IGlzIGEgaGFyZHdhcmUgZHJpdmVyOyBpdCByZXF1aXJlcyBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlLCByaWdodD8gU3RhbmRhcmQgUUVNVS9HQ0Ugc2V0dXBzIGRvbid0IG5hdGl2ZWx5IGVtdWxhdGUgdGhpcy4gSSBtZWFuLCB0aGV5IGhhdmUgZTEwMDAsIHZpcnRpbywgYW5kIHNvbWUgb3RoZXJzLCBidXQgbm90IG1seDUsIHdoaWNoIGlzIG1vcmUgY29tcGxleC4gU28sIGFtIEkgZGVhbGluZyB3aXRoIGEgZGVhZCBlbmQgZnJvbSB0aGUgZ2V0LWdvP1xuXG5UaGVuLCB0aGUgc3l6a2FsbGVyIHF1ZXN0aW9uIHBvcHMgdXAuIERvZXMgc3l6a2FsbGVyIG9mZmVyIHNvbWUgbGV2ZWwgb2YgUENJIGZ1enppbmc/IFllcywgaXQgZG9lcywgYnV0IHRoaXMgbWx4NSBkcml2ZXIgaXMgYSBoZWF2eXdlaWdodC4gVGhlIFBDSSBmdXp6aW5nIGluIHN5emthbGxlciBpcyB1c3VhbGx5IHNoYWxsb3cgYW5kIHVubGlrZWx5IHRvIGdldCBkZWVwIGludG8gdGhlIHdlZWRzIHdpdGggc29tZXRoaW5nIHRoaXMgY29tcGxleCB1bmxlc3MgdGhlcmUncyBhIHNwZWNpZmljIGVmZm9ydCB0byB0YXJnZXQgaXQuIEknbSB3b25kZXJpbmcgaWYgdGhlcmUncyBhbnkgc3BlY2lmaWMgbWx4NSBjb25maWcgaW4gc3l6a2FsbGVyIHRvIHN1Z2dlc3QgdGhhdCBpdCdzIHdvcnRoIHRoZSBlZmZvcnQuXG5cblRoZW4sIHRoZXJlJ3MgdGhlIHRleHQgcHJvbXB0LiBUaGUgcHJvbXB0IHNheXMgdGhhdCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLiBPa2F5LCBzbyBtbHg1IGlzbid0IG5hdGl2ZWx5IGVtdWxhdGVkLiBJJ20gdGhpbmtpbmcgYWJvdXQgdkRQQSBvciBWRklPLCBidXQgdGhhdCBzdGlsbCByZXF1aXJlcyBzb21lIGxldmVsIG9mIGhhcmR3YXJlIHBhc3N0aHJvdWdoLCByaWdodD8gRXZlbiB3aXRoIHN5emthbGxlcidzIFBDSSBmdXp6aW5nLCBpdCdzIGEgbG9uZyBzaG90LiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIHRydWx5IGdldCB0byB0aGUgYG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0YD9cblxuSSB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgcGF0Y2guIEl0J3MganVzdCBhZGRpbmcgdGhhdCBgbG9ja2RlcF9pc19oZWxkYCBjaGVjay4gVGhpcyBpc24ndCBhYm91dCBhbHRlcmluZyB0aGUgZnVuY3Rpb25hbCBjb2RlIHBhdGg7IGl0J3MganVzdCBhYm91dCBzdXBwcmVzc2luZyBhIGxvY2tkZXAgd2FybmluZy4gTXkgdGhpbmtpbmcgZ29lcyB0byB0aGUgcHJvbXB0IGFnYWluOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLi4uIC0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiIFNvLCBhZGRpbmcgYSBgbG9ja2RlcF9pc19oZWxkYCDigJMgaXMgdGhhdCBhIGZ1bmN0aW9uYWwgY2hhbmdlP1xuXG5UaGUgYGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBtYWNybyBpcyB3aGF0J3MgYmVpbmcgbW9kaWZpZWQuIFRoZSBgY29uZGAgcGFyYW1ldGVyIG9mIHRoYXQgbWFjcm8gaXMgb25seSBjaGVja2VkIHdoZW4gYENPTkZJR19QUk9WRV9SQ1VgIGlzIGVuYWJsZWQuIEl0IGlzIG1lcmVseSBhIGxvY2tkZXAgY2hlY2ssIHNvIGlmIHRydWUgdGhlIGxvY2tkZXAgd2FybmluZyBpcyBhdm9pZGVkLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZ2VuZXJhdGVkIGNvZGUgb2YgdGhlIGxvb3AgaXRzZWxmLCBvbmx5IGFkZHMgdGhlIGxvY2tkZXAgY2hlY2ssIGFuZCB0aHVzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5HaXZlbiBhbGwgb2YgdGhhdCwgdGhpcyBpcyByZWFsbHkgbW9yZSBsaWtlIGEgcHVyZWx5IGluZm9ybWF0aW9uYWwgY2hhbmdlLCBub3Qgb25lIHRoYXQgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGNvZGUgZXhlY3V0ZXMgKG90aGVyIHRoYW4sIGhvcGVmdWxseSwgcHJldmVudGluZyBsb2NrZGVwIHdhcm5pbmdzKS4gSXQncyBhIGxvY2tkZXAgYW5ub3RhdGlvbi4gVGh1cywgaXQncyBhbG1vc3QgY2VydGFpbmx5IG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6MzM6MzkuNzMwMTc2NDk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzI0Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaD0zNDY9c3RhdGljIGlubGluZSB2b2lkIGxpc3Rfc3BsaWNlX3RhaWxfaW5pdF9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oLTQ0NS0gKi9cXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaDo0NDY6I2RlZmluZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwb3MsIGhlYWQsIG1lbWJlciwgY29uZC4uLilcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtNDQ3LVxcdGZvciAoX19saXN0X2NoZWNrX3JjdShkdW1teSwgIyMgY29uZCwgMCksXFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzozOS43ODk5MTQ4NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDE2MjAyNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYF9fbGlzdF9jaGVja19yY3VgKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBfX2xpc3RfY2hlY2tfcmN1YCBpcyBhY3R1YWxseSBkb2luZy4gSSdtIGdvaW5nIHRvIGxvb2sgdXAgdGhlIGRlZmluaXRpb24gZGlyZWN0bHksIGRpZyBpbnRvIHRoZSBjb2RlLCBzZWUgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIHN0YXJ0IHdpdGggYSBzb2xpZCBkZWZpbml0aW9uIOKAkyB0aGF0J3MgdGhlIGZvdW5kYXRpb24gaGVyZSwgYWZ0ZXIgYWxsLiBUaGlzIGZ1bmN0aW9uIG5hbWUgc3Ryb25nbHkgc3VnZ2VzdHMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gY2hlY2tpbmcgYSBsaXN0IHN0cnVjdHVyZSwgYW5kIHRoZSBcIlJDVVwiIHBhcnQgKnNjcmVhbXMqIHRoYXQgd2UgYXJlIGluIHRoZSByZWFsbSBvZiBSZWFkLUNvcHktVXBkYXRlIHN5bmNocm9uaXphdGlvbi4gVGhpcyBpcyBnb2luZyB0byByZXF1aXJlIGEgY2FyZWZ1bCBleGFtaW5hdGlvbiBvZiBjb25jdXJyZW50IGFjY2VzcyBwYXR0ZXJucywgbWVtb3J5IG9yZGVyaW5nLCBhbmQgdGhlIGd1YXJhbnRlZXMgcHJvdmlkZWQgYnkgUkNVLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dC4gSXMgaXQgdmVyaWZ5aW5nIGxpc3QgaW50ZWdyaXR5PyBJcyBpdCByZWxhdGVkIHRvIGRlYnVnZ2luZz8gSXMgaXQgZm9yIGVycm9yIGRldGVjdGlvbiBkdXJpbmcgUkNVIG9wZXJhdGlvbnM/IFVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbSB3aWxsIGRpY3RhdGUgdGhlIGRlcHRoIG9mIG15IGludmVzdGlnYXRpb24uIFNvLCBkZWZpbml0aW9uIGZpcnN0LCB0aGVuIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTc4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6MzM6NDQuMjA2MTIwMTE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDE2Nzg3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgX19saXN0X2NoZWNrX3JjdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaD0yMj1zdGF0aWMgaW5saW5lIHZvaWQgSU5JVF9MSVNUX0hFQURfUkNVKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaC03MS0jaWZkZWYgQ09ORklHX1BST1ZFX1JDVV9MSVNUXFxuaW5jbHVkZS9saW51eC9yY3VsaXN0Lmg6NzI6I2RlZmluZSBfX2xpc3RfY2hlY2tfcmN1KGR1bW15LCBjb25kLCBleHRyYS4uLilcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtNzMtXFx0KHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaC04NC0jZWxzZVxcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oOjg1OiNkZWZpbmUgX19saXN0X2NoZWNrX3JjdShkdW1teSwgY29uZCwgZXh0cmEuLi4pXFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oLTg2LVxcdCh7IGNoZWNrX2FyZ19jb3VudF9vbmUoZXh0cmEpOyB9KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzo0NC41MjYyOTUzMTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDUxNzI4NjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgc28gYWZ0ZXIgZXhhbWluaW5nIHRoaXMgcGF0Y2ggY2xvc2VseSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IGl0J3MgcHVyZWx5IGEgbG9ja2RlcCBhbm5vdGF0aW9uIGZpeCwgYW5kIHRoZXJlZm9yZSwgbm90IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBjb3JlIGNoYW5nZSB3aXRoaW4gYF9fbGlzdF9jaGVja19yY3VgIGlzIHNvbGVseSBhYm91dCBsb2NrZGVwIGNoZWNrcy4gSXQgZG9lc24ndCBtb2RpZnkgdGhlIGxvb3AncyBleGVjdXRpb24gcGF0aCBpbiBhbnkgd2F5LiBUaGlzIGlzIGNyaXRpY2FsLCBtZWFuaW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcywgYXQgYWxsLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggaXMgcmVhbGx5IGp1c3QgYWRkaW5nIGBsb2NrZGVwX2lzX2hlbGRgIGFubm90YXRpb25zIHRvIGBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgbG9vcHMuIFdoaWxlIHRoaXMgaXMgaW1wb3J0YW50IGZvciByZXNvbHZpbmcgbG9ja2RlcCB3YXJuaW5ncywgaXQgZG9lc24ndCBjaGFuZ2UgaG93IHRoZSBkcml2ZXIgKmFjdHVhbGx5KiB3b3JrcywgaXRzIGV4ZWN1dGlvbiBmbG93LiBBbmQgb24gdG9wIG9mIHRoYXQsIGFuZCB0aGlzIGlzIGltcG9ydGFudCwgdGhlIG1seDUgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIHdoaWNoIGlzbid0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBzZXR1cC4gVGhpcyBmdXJ0aGVyIHJlZHVjZXMgdGhlIGxpa2VsaWhvb2Qgb2YgdGhlIGNoYW5nZSBsZWFkaW5nIHRvIHNvbWV0aGluZyBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS5cblxuSSBhbHNvIGRvdWJsZS1jaGVja2VkIGZvciBhbnkgKm90aGVyKiBjaGFuZ2VzIGx1cmtpbmcgaW4gdGhlIHBhdGNoLiBJIHNhdyB0aGF0IGBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdGAgYW5kIGBtbHg1ZV9tYWNzZWNfZ2V0X21hY3NlY19kZXZpY2VfY29udGV4dGAgd2VyZSBtb2RpZmllZCwgYW5kIHRoZSBgY29uc3RgIHF1YWxpZmllciB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBgbWFjc2VjYCBwb2ludGVyIGluIHRob3NlIGZ1bmN0aW9ucy4gSG93ZXZlciwgdGhpcyBpcyBiZWNhdXNlIGBsb2NrZGVwX2lzX2hlbGRgIG1pZ2h0IG5lZWQgYSBub24tY29uc3QgcG9pbnRlciwgb3IgdGhlIGNoYW5nZSBpcyBzaW1wbHkgdG8gcGFzcyBpdCB0byB0aGUgbG9ja2RlcCBtYWNyby4gQWdhaW4sIGl0IGlzICpub3QqIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cblRoZXJlZm9yZSwgY29uc2lkZXJpbmcgdGhlIGNvbXBsZXRlIGxhY2sgb2YgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIHJlbGlhbmNlIG9uIHNwZWNpZmljIGhhcmR3YXJlLCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjU5LCJPdXRwdXRUb2tlbnMiOjk4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjMzOjUwLjk3ODAyNzgyN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgbG9ja2RlcCBhbm5vdGF0aW9ucyAobG9ja2RlcF9pc19oZWxkKSB0byBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSBsb29wcyB0byBmaXggUkNVIGxvY2tkZXAgc3BsYXRzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIG1seDUgaGFyZHdhcmUgZHJpdmVyIGlzIGdlbmVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmhbvr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 20:11:28 +0000 UTC FinishedAt: 2026-07-01 20:33:51 +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+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBsb2NrZGVwIGFubm90YXRpb25zIChsb2NrZGVwX2lzX2hlbGQpIHRvIGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1IGxvb3BzIHRvIGZpeCBSQ1UgbG9ja2RlcCBzcGxhdHMuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGNvZGUuIEZ1cnRoZXJtb3JlLCB0aGUgbWx4NSBoYXJkd2FyZSBkcml2ZXIgaXMgZ2VuZXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdmMTlkMjAzOTkzNDA0OGZkMmZlNWIwZThhYzJkZDYyOWYzNTAwNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDIwOjMzOjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuY1xuaW5kZXggNTI4YjA0ZDRkZTQxNmIuLjMwMjhlMzI3ZTM2ZGEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNcbkBAIC00MDUsMTEgJiM0Mzs0MDUsMTMgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfaW5pdF9zYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eCxcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBtbHg1ZV9tYWNzZWNfcnhfc2MgKlxuLW1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHNjaV90IHNjaSlcbiYjNDM7bWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzY2lfdCBzY2kpXG4ge1xuIFx0c3RydWN0IG1seDVlX21hY3NlY19yeF9zYyAqaXRlcjtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIHJ4X3NjX2xpc3RfZWxlbWVudCkge1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIHJ4X3NjX2xpc3RfZWxlbWVudCxcbiYjNDM7XHRcdFx0XHRsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFjc2VjLVx1MDAzZWxvY2spKSB7XG4gXHRcdGlmIChpdGVyLVx1MDAzZXNjaSA9PSBzY2kpXG4gXHRcdFx0cmV0dXJuIGl0ZXI7XG4gXHR9XG5AQCAtNDczLDE0ICYjNDM7NDc1LDE1IEBAIHN0YXRpYyBib29sIG1seDVlX21hY3NlY19zZWN5X2ZlYXR1cmVzX3ZhbGlkYXRlKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxuIH1cbiBcbiBzdGF0aWMgc3RydWN0IG1seDVlX21hY3NlY19kZXZpY2UgKlxuLW1seDVlX21hY3NlY19nZXRfbWFjc2VjX2RldmljZV9jb250ZXh0KGNvbnN0IHN0cnVjdCBtbHg1ZV9tYWNzZWMgKm1hY3NlYyxcbiYjNDM7bWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHQoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxuIHtcbiBcdHN0cnVjdCBtbHg1ZV9tYWNzZWNfZGV2aWNlICppdGVyO1xuIFx0Y29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdDtcbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWMtXHUwMDNlbWFjc2VjX2RldmljZV9saXN0X2hlYWQ7XG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShpdGVyLCBsaXN0LCBtYWNzZWNfZGV2aWNlX2xpc3RfZWxlbWVudCkge1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIG1hY3NlY19kZXZpY2VfbGlzdF9lbGVtZW50LFxuJiM0MztcdFx0XHRcdGxvY2tkZXBfaXNfaGVsZChcdTAwMjZtYWNzZWMtXHUwMDNlbG9jaykpIHtcbiBcdFx0aWYgKGl0ZXItXHUwMDNlbmV0ZGV2ID09IGN0eC1cdTAwM2VzZWN5LVx1MDAzZW5ldGRldilcbiBcdFx0XHRyZXR1cm4gaXRlcjtcbiBcdH1cbkBAIC02OTIsNyAmIzQzOzY5NSw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2FkZF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxuIFx0fVxuIFxuIFx0cnhfc2NfbGlzdCA9IFx1MDAyNm1hY3NlY19kZXZpY2UtXHUwMDNlbWFjc2VjX3J4X3NjX2xpc3RfaGVhZDtcbi1cdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qocnhfc2NfbGlzdCwgY3R4X3J4X3NjLVx1MDAzZXNjaSk7XG4mIzQzO1x0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuIFx0aWYgKHJ4X3NjKSB7XG4gXHRcdG5ldGRldl9lcnIoY3R4LVx1MDAzZW5ldGRldiwgXCYjMzQ7TUFDc2VjIG9mZmxvYWQ6IHJ4X3NjIChzY2kgJWxsZCkgYWxyZWFkeSBleGlzdHNcXG5cJiMzNDssXG4gXHRcdFx0ICAgY3R4X3J4X3NjLVx1MDAzZXNjaSk7XG5AQCAtNzc1LDcgJiM0Mzs3NzgsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuJiM0MztcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHhfcnhfc2MtXHUwMDNlc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG5AQCAtODUzLDcgJiM0Mzs4NTYsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19kZWxfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eC1cdTAwM2VyeF9zYy1cdTAwM2VzY2kpO1xuJiM0MztcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHgtXHUwMDNlcnhfc2MtXHUwMDNlc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0bmV0ZGV2X2VycihjdHgtXHUwMDNlbmV0ZGV2LFxuIFx0XHRcdCAgIFwmIzM0O01BQ3NlYyBvZmZsb2FkIHJ4X3NjIHNjaSAlbGxkIGRvZXNuJiMzOTt0IGV4aXN0XFxuXCYjMzQ7LFxuQEAgLTg5NCw3ICYjNDM7ODk3LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfYWRkX3J4c2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG4gXHR9XG4gXG4gXHRsaXN0ID0gXHUwMDI2bWFjc2VjX2RldmljZS1cdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xuLVx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpO1xuJiM0MztcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBzY2kpO1xuIFx0aWYgKCFyeF9zYykge1xuIFx0XHRuZXRkZXZfZXJyKGN0eC1cdTAwM2VuZXRkZXYsXG4gXHRcdFx0ICAgXCYjMzQ7TUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24mIzM5O3QgZXhpc3RcXG5cJiMzNDssXG5AQCAtOTc4LDcgJiM0Mzs5ODEsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIHNjaSk7XG4mIzQzO1x0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIHNjaSk7XG4gXHRpZiAoIXJ4X3NjKSB7XG4gXHRcdG5ldGRldl9lcnIoY3R4LVx1MDAzZW5ldGRldixcbiBcdFx0XHQgICBcJiMzNDtNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2VzbiYjMzk7dCBleGlzdFxcblwmIzM0OyxcbkBAIC0xMDM1LDcgJiM0MzsxMDM4LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfZGVsX3J4c2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG4gXHR9XG4gXG4gXHRsaXN0ID0gXHUwMDI2bWFjc2VjX2RldmljZS1cdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xuLVx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpO1xuJiM0MztcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBzY2kpO1xuIFx0aWYgKCFyeF9zYykge1xuIFx0XHRuZXRkZXZfZXJyKGN0eC1cdTAwM2VuZXRkZXYsXG4gXHRcdFx0ICAgXCYjMzQ7TUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24mIzM5O3QgZXhpc3RcXG5cJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ZjE5ZDIwMzk5MzQwNDhmZDJmZTViMGU4YWMyZGQ2MjlmMzUwMDYzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAyMDozMzoyNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuYwppbmRleCA1MjhiMDRkNGRlNDE2Yi4uMzAyOGUzMjdlMzZkYTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmMKQEAgLTQwNSwxMSAmIzQzOzQwNSwxMyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19pbml0X3NhKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4LAogfQogCiBzdGF0aWMgc3RydWN0IG1seDVlX21hY3NlY19yeF9zYyAqCi1tbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzY2lfdCBzY2kpCiYjNDM7bWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLAomIzQzOwkJCQkgICAgY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc2NpX3Qgc2NpKQogewogCXN0cnVjdCBtbHg1ZV9tYWNzZWNfcnhfc2MgKml0ZXI7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShpdGVyLCBsaXN0LCByeF9zY19saXN0X2VsZW1lbnQpIHsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgcnhfc2NfbGlzdF9lbGVtZW50LAomIzQzOwkJCQlsb2NrZGVwX2lzX2hlbGQoJmFtcDttYWNzZWMtJmd0O2xvY2spKSB7CiAJCWlmIChpdGVyLSZndDtzY2kgPT0gc2NpKQogCQkJcmV0dXJuIGl0ZXI7CiAJfQpAQCAtNDczLDE0ICYjNDM7NDc1LDE1IEBAIHN0YXRpYyBib29sIG1seDVlX21hY3NlY19zZWN5X2ZlYXR1cmVzX3ZhbGlkYXRlKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KQogfQogCiBzdGF0aWMgc3RydWN0IG1seDVlX21hY3NlY19kZXZpY2UgKgotbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHQoY29uc3Qgc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLAomIzQzO21seDVlX21hY3NlY19nZXRfbWFjc2VjX2RldmljZV9jb250ZXh0KHN0cnVjdCBtbHg1ZV9tYWNzZWMgKm1hY3NlYywKIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpCiB7CiAJc3RydWN0IG1seDVlX21hY3NlY19kZXZpY2UgKml0ZXI7CiAJY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKIAogCWxpc3QgPSAmYW1wO21hY3NlYy0mZ3Q7bWFjc2VjX2RldmljZV9saXN0X2hlYWQ7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgbWFjc2VjX2RldmljZV9saXN0X2VsZW1lbnQpIHsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgbWFjc2VjX2RldmljZV9saXN0X2VsZW1lbnQsCiYjNDM7CQkJCWxvY2tkZXBfaXNfaGVsZCgmYW1wO21hY3NlYy0mZ3Q7bG9jaykpIHsKIAkJaWYgKGl0ZXItJmd0O25ldGRldiA9PSBjdHgtJmd0O3NlY3ktJmd0O25ldGRldikKIAkJCXJldHVybiBpdGVyOwogCX0KQEAgLTY5Miw3ICYjNDM7Njk1LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfYWRkX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpCiAJfQogCiAJcnhfc2NfbGlzdCA9ICZhbXA7bWFjc2VjX2RldmljZS0mZ3Q7bWFjc2VjX3J4X3NjX2xpc3RfaGVhZDsKLQlyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy0mZ3Q7c2NpKTsKJiM0MzsJcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy0mZ3Q7c2NpKTsKIAlpZiAocnhfc2MpIHsKIAkJbmV0ZGV2X2VycihjdHgtJmd0O25ldGRldiwgJiMzNDtNQUNzZWMgb2ZmbG9hZDogcnhfc2MgKHNjaSAlbGxkKSBhbHJlYWR5IGV4aXN0c1xuJiMzNDssCiAJCQkgICBjdHhfcnhfc2MtJmd0O3NjaSk7CkBAIC03NzUsNyAmIzQzOzc3OCw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX3VwZF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KQogCX0KIAogCWxpc3QgPSAmYW1wO21hY3NlY19kZXZpY2UtJmd0O21hY3NlY19yeF9zY19saXN0X2hlYWQ7Ci0Jcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBjdHhfcnhfc2MtJmd0O3NjaSk7CiYjNDM7CXJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHhfcnhfc2MtJmd0O3NjaSk7CiAJaWYgKCFyeF9zYykgewogCQllcnIgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKQEAgLTg1Myw3ICYjNDM7ODU2LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfZGVsX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpCiAJfQogCiAJbGlzdCA9ICZhbXA7bWFjc2VjX2RldmljZS0mZ3Q7bWFjc2VjX3J4X3NjX2xpc3RfaGVhZDsKLQlyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eC0mZ3Q7cnhfc2MtJmd0O3NjaSk7CiYjNDM7CXJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHgtJmd0O3J4X3NjLSZndDtzY2kpOwogCWlmICghcnhfc2MpIHsKIAkJbmV0ZGV2X2VycihjdHgtJmd0O25ldGRldiwKIAkJCSAgICYjMzQ7TUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24mIzM5O3QgZXhpc3RcbiYjMzQ7LApAQCAtODk0LDcgJiM0Mzs4OTcsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19hZGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eCkKIAl9CiAKIAlsaXN0ID0gJmFtcDttYWNzZWNfZGV2aWNlLSZndDttYWNzZWNfcnhfc2NfbGlzdF9oZWFkOwotCXJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobGlzdCwgc2NpKTsKJiM0MzsJcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIHNjaSk7CiAJaWYgKCFyeF9zYykgewogCQluZXRkZXZfZXJyKGN0eC0mZ3Q7bmV0ZGV2LAogCQkJICAgJiMzNDtNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2VzbiYjMzk7dCBleGlzdFxuJiMzNDssCkBAIC05NzgsNyAmIzQzOzk4MSw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX3VwZF9yeHNhKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KQogCX0KIAogCWxpc3QgPSAmYW1wO21hY3NlY19kZXZpY2UtJmd0O21hY3NlY19yeF9zY19saXN0X2hlYWQ7Ci0Jcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpOwomIzQzOwlyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTsKIAlpZiAoIXJ4X3NjKSB7CiAJCW5ldGRldl9lcnIoY3R4LSZndDtuZXRkZXYsCiAJCQkgICAmIzM0O01BQ3NlYyBvZmZsb2FkIHJ4X3NjIHNjaSAlbGxkIGRvZXNuJiMzOTt0IGV4aXN0XG4mIzM0OywKQEAgLTEwMzUsNyAmIzQzOzEwMzgsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19kZWxfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eCkKIAl9CiAKIAlsaXN0ID0gJmFtcDttYWNzZWNfZGV2aWNlLSZndDttYWNzZWNfcnhfc2NfbGlzdF9oZWFkOwotCXJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobGlzdCwgc2NpKTsKJiM0MzsJcnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIHNjaSk7CiAJaWYgKCFyeF9zYykgewogCQluZXRkZXZfZXJyKGN0eC0mZ3Q7bmV0ZGV2LAogCQkJICAgJiMzNDtNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2VzbiYjMzk7dCBleGlzdFxuJiMzNDssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MDgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4NjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNgLiBJdCYjMzk7cyBhIHNpbXBsZSBhZGRpdGlvbiwgc2xhcHBpbmcgYGxvY2tkZXBfaXNfaGVsZGAgaW50byBhIGNvdXBsZSBvZiBwbGFjZXMgd2l0aGluIHRoZSBgbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3RgIGFuZCBgbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHRgIGZ1bmN0aW9ucy4gVGhlIGludGVudGlvbiBpcyBjbGVhcjogc3F1YXNoaW5nIHNvbWUgbG9ja2RlcCB3YXJuaW5ncyByZWxhdGVkIHRvIFJDVSB1c2FnZS4gQnV0LCBpcyB0aGlzIHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nPwoKRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBjb2RlIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIHBhdGNoIGRlYWxzIHdpdGggTUFDc2VjIG9mZmxvYWQsIHBhcnQgb2YgdGhlIE1lbGxhbm94IENvbm5lY3RYLTUmIzQzOyBkcml2ZXIgKG1seDUpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBtbHg1IGlzIGEgaGFyZHdhcmUgZHJpdmVyOyBpdCByZXF1aXJlcyBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlLCByaWdodD8gU3RhbmRhcmQgUUVNVS9HQ0Ugc2V0dXBzIGRvbiYjMzk7dCBuYXRpdmVseSBlbXVsYXRlIHRoaXMuIEkgbWVhbiwgdGhleSBoYXZlIGUxMDAwLCB2aXJ0aW8sIGFuZCBzb21lIG90aGVycywgYnV0IG5vdCBtbHg1LCB3aGljaCBpcyBtb3JlIGNvbXBsZXguIFNvLCBhbSBJIGRlYWxpbmcgd2l0aCBhIGRlYWQgZW5kIGZyb20gdGhlIGdldC1nbz8KClRoZW4sIHRoZSBzeXprYWxsZXIgcXVlc3Rpb24gcG9wcyB1cC4gRG9lcyBzeXprYWxsZXIgb2ZmZXIgc29tZSBsZXZlbCBvZiBQQ0kgZnV6emluZz8gWWVzLCBpdCBkb2VzLCBidXQgdGhpcyBtbHg1IGRyaXZlciBpcyBhIGhlYXZ5d2VpZ2h0LiBUaGUgUENJIGZ1enppbmcgaW4gc3l6a2FsbGVyIGlzIHVzdWFsbHkgc2hhbGxvdyBhbmQgdW5saWtlbHkgdG8gZ2V0IGRlZXAgaW50byB0aGUgd2VlZHMgd2l0aCBzb21ldGhpbmcgdGhpcyBjb21wbGV4IHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIGVmZm9ydCB0byB0YXJnZXQgaXQuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlJiMzOTtzIGFueSBzcGVjaWZpYyBtbHg1IGNvbmZpZyBpbiBzeXprYWxsZXIgdG8gc3VnZ2VzdCB0aGF0IGl0JiMzOTtzIHdvcnRoIHRoZSBlZmZvcnQuCgpUaGVuLCB0aGVyZSYjMzk7cyB0aGUgdGV4dCBwcm9tcHQuIFRoZSBwcm9tcHQgc2F5cyB0aGF0IGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMsIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nLiBPa2F5LCBzbyBtbHg1IGlzbiYjMzk7dCBuYXRpdmVseSBlbXVsYXRlZC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB2RFBBIG9yIFZGSU8sIGJ1dCB0aGF0IHN0aWxsIHJlcXVpcmVzIHNvbWUgbGV2ZWwgb2YgaGFyZHdhcmUgcGFzc3Rocm91Z2gsIHJpZ2h0PyBFdmVuIHdpdGggc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nLCBpdCYjMzk7cyBhIGxvbmcgc2hvdC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSB0cnVseSBnZXQgdG8gdGhlIGBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdGA/CgpJIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBwYXRjaC4gSXQmIzM5O3MganVzdCBhZGRpbmcgdGhhdCBgbG9ja2RlcF9pc19oZWxkYCBjaGVjay4gVGhpcyBpc24mIzM5O3QgYWJvdXQgYWx0ZXJpbmcgdGhlIGZ1bmN0aW9uYWwgY29kZSBwYXRoOyBpdCYjMzk7cyBqdXN0IGFib3V0IHN1cHByZXNzaW5nIGEgbG9ja2RlcCB3YXJuaW5nLiBNeSB0aGlua2luZyBnb2VzIHRvIHRoZSBwcm9tcHQgYWdhaW46ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiAtIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMuLi4gLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDsgU28sIGFkZGluZyBhIGBsb2NrZGVwX2lzX2hlbGRgIOKAkyBpcyB0aGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2U/CgpUaGUgYGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBtYWNybyBpcyB3aGF0JiMzOTtzIGJlaW5nIG1vZGlmaWVkLiBUaGUgYGNvbmRgIHBhcmFtZXRlciBvZiB0aGF0IG1hY3JvIGlzIG9ubHkgY2hlY2tlZCB3aGVuIGBDT05GSUdfUFJPVkVfUkNVYCBpcyBlbmFibGVkLiBJdCBpcyBtZXJlbHkgYSBsb2NrZGVwIGNoZWNrLCBzbyBpZiB0cnVlIHRoZSBsb2NrZGVwIHdhcm5pbmcgaXMgYXZvaWRlZC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGdlbmVyYXRlZCBjb2RlIG9mIHRoZSBsb29wIGl0c2VsZiwgb25seSBhZGRzIHRoZSBsb2NrZGVwIGNoZWNrLCBhbmQgdGh1cyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KCkdpdmVuIGFsbCBvZiB0aGF0LCB0aGlzIGlzIHJlYWxseSBtb3JlIGxpa2UgYSBwdXJlbHkgaW5mb3JtYXRpb25hbCBjaGFuZ2UsIG5vdCBvbmUgdGhhdCBkaXJlY3RseSBpbXBhY3RzIGhvdyB0aGUgY29kZSBleGVjdXRlcyAob3RoZXIgdGhhbiwgaG9wZWZ1bGx5LCBwcmV2ZW50aW5nIGxvY2tkZXAgd2FybmluZ3MpLiBJdCYjMzk7cyBhIGxvY2tkZXAgYW5ub3RhdGlvbi4gVGh1cywgaXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBub3Qgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZpbmUgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaD0zNDY9c3RhdGljIGlubGluZSB2b2lkIGxpc3Rfc3BsaWNlX3RhaWxfaW5pdF9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCxcbi0tXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaC00NDUtICovXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaDo0NDY6I2RlZmluZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwb3MsIGhlYWQsIG1lbWJlciwgY29uZC4uLilcdFx0XFxcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oLTQ0Ny1cdGZvciAoX19saXN0X2NoZWNrX3JjdShkdW1teSwgIyMgY29uZCwgMCksXHRcdFx0XFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTc4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYF9fbGlzdF9jaGVja19yY3VgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGEgZ3JpcCBvbiB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgX19saXN0X2NoZWNrX3JjdWAgaXMgYWN0dWFsbHkgZG9pbmcuIEkmIzM5O20gZ29pbmcgdG8gbG9vayB1cCB0aGUgZGVmaW5pdGlvbiBkaXJlY3RseSwgZGlnIGludG8gdGhlIGNvZGUsIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBzb2xpZCBkZWZpbml0aW9uIOKAkyB0aGF0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIGhlcmUsIGFmdGVyIGFsbC4gVGhpcyBmdW5jdGlvbiBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIHNvbWV0aGluZyByZWxhdGVkIHRvIGNoZWNraW5nIGEgbGlzdCBzdHJ1Y3R1cmUsIGFuZCB0aGUgJiMzNDtSQ1UmIzM0OyBwYXJ0ICpzY3JlYW1zKiB0aGF0IHdlIGFyZSBpbiB0aGUgcmVhbG0gb2YgUmVhZC1Db3B5LVVwZGF0ZSBzeW5jaHJvbml6YXRpb24uIFRoaXMgaXMgZ29pbmcgdG8gcmVxdWlyZSBhIGNhcmVmdWwgZXhhbWluYXRpb24gb2YgY29uY3VycmVudCBhY2Nlc3MgcGF0dGVybnMsIG1lbW9yeSBvcmRlcmluZywgYW5kIHRoZSBndWFyYW50ZWVzIHByb3ZpZGVkIGJ5IFJDVS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0LiBJcyBpdCB2ZXJpZnlpbmcgbGlzdCBpbnRlZ3JpdHk/IElzIGl0IHJlbGF0ZWQgdG8gZGVidWdnaW5nPyBJcyBpdCBmb3IgZXJyb3IgZGV0ZWN0aW9uIGR1cmluZyBSQ1Ugb3BlcmF0aW9ucz8gVW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtIHdpbGwgZGljdGF0ZSB0aGUgZGVwdGggb2YgbXkgaW52ZXN0aWdhdGlvbi4gU28sIGRlZmluaXRpb24gZmlyc3QsIHRoZW4gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVmaW5lIF9fbGlzdF9jaGVja19yY3UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaD0yMj1zdGF0aWMgaW5saW5lIHZvaWQgSU5JVF9MSVNUX0hFQURfUkNVKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXG4tLVxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtNzEtI2lmZGVmIENPTkZJR19QUk9WRV9SQ1VfTElTVFxuaW5jbHVkZS9saW51eC9yY3VsaXN0Lmg6NzI6I2RlZmluZSBfX2xpc3RfY2hlY2tfcmN1KGR1bW15LCBjb25kLCBleHRyYS4uLilcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaC03My1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtODQtI2Vsc2VcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oOjg1OiNkZWZpbmUgX19saXN0X2NoZWNrX3JjdShkdW1teSwgY29uZCwgZXh0cmEuLi4pXHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtODYtXHQoeyBjaGVja19hcmdfY291bnRfb25lKGV4dHJhKTsgfSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjU5CgkJCQkJCQlvdXRwdXQ6IDk4CgkJCQkJCQl0aG91Z2h0czogMzc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyBhZnRlciBleGFtaW5pbmcgdGhpcyBwYXRjaCBjbG9zZWx5LCBteSBjb25jbHVzaW9uIGlzIHRoYXQgaXQmIzM5O3MgcHVyZWx5IGEgbG9ja2RlcCBhbm5vdGF0aW9uIGZpeCwgYW5kIHRoZXJlZm9yZSwgbm90IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgY29yZSBjaGFuZ2Ugd2l0aGluIGBfX2xpc3RfY2hlY2tfcmN1YCBpcyBzb2xlbHkgYWJvdXQgbG9ja2RlcCBjaGVja3MuIEl0IGRvZXNuJiMzOTt0IG1vZGlmeSB0aGUgbG9vcCYjMzk7cyBleGVjdXRpb24gcGF0aCBpbiBhbnkgd2F5LiBUaGlzIGlzIGNyaXRpY2FsLCBtZWFuaW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcywgYXQgYWxsLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhlIHBhdGNoIGlzIHJlYWxseSBqdXN0IGFkZGluZyBgbG9ja2RlcF9pc19oZWxkYCBhbm5vdGF0aW9ucyB0byBgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIGxvb3BzLiBXaGlsZSB0aGlzIGlzIGltcG9ydGFudCBmb3IgcmVzb2x2aW5nIGxvY2tkZXAgd2FybmluZ3MsIGl0IGRvZXNuJiMzOTt0IGNoYW5nZSBob3cgdGhlIGRyaXZlciAqYWN0dWFsbHkqIHdvcmtzLCBpdHMgZXhlY3V0aW9uIGZsb3cuIEFuZCBvbiB0b3Agb2YgdGhhdCwgYW5kIHRoaXMgaXMgaW1wb3J0YW50LCB0aGUgbWx4NSBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgd2hpY2ggaXNuJiMzOTt0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBzZXR1cC4gVGhpcyBmdXJ0aGVyIHJlZHVjZXMgdGhlIGxpa2VsaWhvb2Qgb2YgdGhlIGNoYW5nZSBsZWFkaW5nIHRvIHNvbWV0aGluZyBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4KCkkgYWxzbyBkb3VibGUtY2hlY2tlZCBmb3IgYW55ICpvdGhlciogY2hhbmdlcyBsdXJraW5nIGluIHRoZSBwYXRjaC4gSSBzYXcgdGhhdCBgbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3RgIGFuZCBgbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHRgIHdlcmUgbW9kaWZpZWQsIGFuZCB0aGUgYGNvbnN0YCBxdWFsaWZpZXIgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYG1hY3NlY2AgcG9pbnRlciBpbiB0aG9zZSBmdW5jdGlvbnMuIEhvd2V2ZXIsIHRoaXMgaXMgYmVjYXVzZSBgbG9ja2RlcF9pc19oZWxkYCBtaWdodCBuZWVkIGEgbm9uLWNvbnN0IHBvaW50ZXIsIG9yIHRoZSBjaGFuZ2UgaXMgc2ltcGx5IHRvIHBhc3MgaXQgdG8gdGhlIGxvY2tkZXAgbWFjcm8uIEFnYWluLCBpdCBpcyAqbm90KiBhIGZ1bmN0aW9uYWwgY2hhbmdlLgoKVGhlcmVmb3JlLCBjb25zaWRlcmluZyB0aGUgY29tcGxldGUgbGFjayBvZiBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgcmVsaWFuY2Ugb24gc3BlY2lmaWMgaGFyZHdhcmUsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgbG9ja2RlcCBhbm5vdGF0aW9ucyAobG9ja2RlcF9pc19oZWxkKSB0byBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSBsb29wcyB0byBmaXggUkNVIGxvY2tkZXAgc3BsYXRzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIG1seDUgaGFyZHdhcmUgZHJpdmVyIGlzIGdlbmVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzoyNy40Mjg4MzcxNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzU0OTI1NTA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzoyNy40Mjg4NDU0MzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzE1MjMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdmMTlkMjAzOTkzNDA0OGZkMmZlNWIwZThhYzJkZDYyOWYzNTAwNjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAyMDozMzoyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNcXG5pbmRleCA1MjhiMDRkNGRlNDE2Yi4uMzAyOGUzMjdlMzZkYTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jXFxuQEAgLTQwNSwxMSArNDA1LDEzIEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2luaXRfc2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgsXFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgbWx4NWVfbWFjc2VjX3J4X3NjICpcXG4tbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QoY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc2NpX3Qgc2NpKVxcbittbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChzdHJ1Y3QgbWx4NWVfbWFjc2VjICptYWNzZWMsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzY2lfdCBzY2kpXFxuIHtcXG4gXFx0c3RydWN0IG1seDVlX21hY3NlY19yeF9zYyAqaXRlcjtcXG4gXFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIHJ4X3NjX2xpc3RfZWxlbWVudCkge1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShpdGVyLCBsaXN0LCByeF9zY19saXN0X2VsZW1lbnQsXFxuK1xcdFxcdFxcdFxcdGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2bWFjc2VjLVxcdTAwM2Vsb2NrKSkge1xcbiBcXHRcXHRpZiAoaXRlci1cXHUwMDNlc2NpID09IHNjaSlcXG4gXFx0XFx0XFx0cmV0dXJuIGl0ZXI7XFxuIFxcdH1cXG5AQCAtNDczLDE0ICs0NzUsMTUgQEAgc3RhdGljIGJvb2wgbWx4NWVfbWFjc2VjX3NlY3lfZmVhdHVyZXNfdmFsaWRhdGUoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgbWx4NWVfbWFjc2VjX2RldmljZSAqXFxuLW1seDVlX21hY3NlY19nZXRfbWFjc2VjX2RldmljZV9jb250ZXh0KGNvbnN0IHN0cnVjdCBtbHg1ZV9tYWNzZWMgKm1hY3NlYyxcXG4rbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHQoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXFxuIHtcXG4gXFx0c3RydWN0IG1seDVlX21hY3NlY19kZXZpY2UgKml0ZXI7XFxuIFxcdGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7XFxuIFxcbiBcXHRsaXN0ID0gXFx1MDAyNm1hY3NlYy1cXHUwMDNlbWFjc2VjX2RldmljZV9saXN0X2hlYWQ7XFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIG1hY3NlY19kZXZpY2VfbGlzdF9lbGVtZW50KSB7XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIG1hY3NlY19kZXZpY2VfbGlzdF9lbGVtZW50LFxcbitcXHRcXHRcXHRcXHRsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNm1hY3NlYy1cXHUwMDNlbG9jaykpIHtcXG4gXFx0XFx0aWYgKGl0ZXItXFx1MDAzZW5ldGRldiA9PSBjdHgtXFx1MDAzZXNlY3ktXFx1MDAzZW5ldGRldilcXG4gXFx0XFx0XFx0cmV0dXJuIGl0ZXI7XFxuIFxcdH1cXG5AQCAtNjkyLDcgKzY5NSw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2FkZF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxcbiBcXHR9XFxuIFxcbiBcXHRyeF9zY19saXN0ID0gXFx1MDAyNm1hY3NlY19kZXZpY2UtXFx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XFxuLVxcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qocnhfc2NfbGlzdCwgY3R4X3J4X3NjLVxcdTAwM2VzY2kpO1xcbitcXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgcnhfc2NfbGlzdCwgY3R4X3J4X3NjLVxcdTAwM2VzY2kpO1xcbiBcXHRpZiAocnhfc2MpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihjdHgtXFx1MDAzZW5ldGRldiwgXFxcIk1BQ3NlYyBvZmZsb2FkOiByeF9zYyAoc2NpICVsbGQpIGFscmVhZHkgZXhpc3RzXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICBjdHhfcnhfc2MtXFx1MDAzZXNjaSk7XFxuQEAgLTc3NSw3ICs3NzgsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcXG4gXFx0fVxcbiBcXG4gXFx0bGlzdCA9IFxcdTAwMjZtYWNzZWNfZGV2aWNlLVxcdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xcbi1cXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eF9yeF9zYy1cXHUwMDNlc2NpKTtcXG4rXFx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIGN0eF9yeF9zYy1cXHUwMDNlc2NpKTtcXG4gXFx0aWYgKCFyeF9zYykge1xcbiBcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtODUzLDcgKzg1Niw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2RlbF9yeHNjKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxcbiBcXHR9XFxuIFxcbiBcXHRsaXN0ID0gXFx1MDAyNm1hY3NlY19kZXZpY2UtXFx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XFxuLVxcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobGlzdCwgY3R4LVxcdTAwM2VyeF9zYy1cXHUwMDNlc2NpKTtcXG4rXFx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIGN0eC1cXHUwMDNlcnhfc2MtXFx1MDAzZXNjaSk7XFxuIFxcdGlmICghcnhfc2MpIHtcXG4gXFx0XFx0bmV0ZGV2X2VycihjdHgtXFx1MDAzZW5ldGRldixcXG4gXFx0XFx0XFx0ICAgXFxcIk1BQ3NlYyBvZmZsb2FkIHJ4X3NjIHNjaSAlbGxkIGRvZXNuJ3QgZXhpc3RcXFxcblxcXCIsXFxuQEAgLTg5NCw3ICs4OTcsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19hZGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcXG4gXFx0fVxcbiBcXG4gXFx0bGlzdCA9IFxcdTAwMjZtYWNzZWNfZGV2aWNlLVxcdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xcbi1cXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIHNjaSk7XFxuK1xcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBzY2kpO1xcbiBcXHRpZiAoIXJ4X3NjKSB7XFxuIFxcdFxcdG5ldGRldl9lcnIoY3R4LVxcdTAwM2VuZXRkZXYsXFxuIFxcdFxcdFxcdCAgIFxcXCJNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2Vzbid0IGV4aXN0XFxcXG5cXFwiLFxcbkBAIC05NzgsNyArOTgxLDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfdXBkX3J4c2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXFxuIFxcdH1cXG4gXFxuIFxcdGxpc3QgPSBcXHUwMDI2bWFjc2VjX2RldmljZS1cXHUwMDNlbWFjc2VjX3J4X3NjX2xpc3RfaGVhZDtcXG4tXFx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpO1xcbitcXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTtcXG4gXFx0aWYgKCFyeF9zYykge1xcbiBcXHRcXHRuZXRkZXZfZXJyKGN0eC1cXHUwMDNlbmV0ZGV2LFxcbiBcXHRcXHRcXHQgICBcXFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcXFxuXFxcIixcXG5AQCAtMTAzNSw3ICsxMDM4LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfZGVsX3J4c2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXFxuIFxcdH1cXG4gXFxuIFxcdGxpc3QgPSBcXHUwMDI2bWFjc2VjX2RldmljZS1cXHUwMDNlbWFjc2VjX3J4X3NjX2xpc3RfaGVhZDtcXG4tXFx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBzY2kpO1xcbitcXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTtcXG4gXFx0aWYgKCFyeF9zYykge1xcbiBcXHRcXHRuZXRkZXZfZXJyKGN0eC1cXHUwMDNlbmV0ZGV2LFxcbiBcXHRcXHRcXHQgICBcXFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcXFxuXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6MzM6MjcuNzg2Nzc4Mjk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzE5MTI5NzU0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdmMTlkMjAzOTkzNDA0OGZkMmZlNWIwZThhYzJkZDYyOWYzNTAwNjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDIwOjMzOjI2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL21hY3NlYy5jXG5pbmRleCA1MjhiMDRkNGRlNDE2Yi4uMzAyOGUzMjdlMzZkYTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9tYWNzZWMuY1xuQEAgLTQwNSwxMSArNDA1LDEzIEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2luaXRfc2Eoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgsXG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbWx4NWVfbWFjc2VjX3J4X3NjICpcbi1tbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzY2lfdCBzY2kpXG4rbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3Qoc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHNjaV90IHNjaSlcbiB7XG4gXHRzdHJ1Y3QgbWx4NWVfbWFjc2VjX3J4X3NjICppdGVyO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgcnhfc2NfbGlzdF9lbGVtZW50KSB7XG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShpdGVyLCBsaXN0LCByeF9zY19saXN0X2VsZW1lbnQsXG4rXHRcdFx0XHRsb2NrZGVwX2lzX2hlbGQoXHUwMDI2bWFjc2VjLVx1MDAzZWxvY2spKSB7XG4gXHRcdGlmIChpdGVyLVx1MDAzZXNjaSA9PSBzY2kpXG4gXHRcdFx0cmV0dXJuIGl0ZXI7XG4gXHR9XG5AQCAtNDczLDE0ICs0NzUsMTUgQEAgc3RhdGljIGJvb2wgbWx4NWVfbWFjc2VjX3NlY3lfZmVhdHVyZXNfdmFsaWRhdGUoc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbWx4NWVfbWFjc2VjX2RldmljZSAqXG4tbWx4NWVfbWFjc2VjX2dldF9tYWNzZWNfZGV2aWNlX2NvbnRleHQoY29uc3Qgc3RydWN0IG1seDVlX21hY3NlYyAqbWFjc2VjLFxuK21seDVlX21hY3NlY19nZXRfbWFjc2VjX2RldmljZV9jb250ZXh0KHN0cnVjdCBtbHg1ZV9tYWNzZWMgKm1hY3NlYyxcbiBcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiB7XG4gXHRzdHJ1Y3QgbWx4NWVfbWFjc2VjX2RldmljZSAqaXRlcjtcbiBcdGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7XG4gXG4gXHRsaXN0ID0gXHUwMDI2bWFjc2VjLVx1MDAzZW1hY3NlY19kZXZpY2VfbGlzdF9oZWFkO1xuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaXRlciwgbGlzdCwgbWFjc2VjX2RldmljZV9saXN0X2VsZW1lbnQpIHtcbitcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGl0ZXIsIGxpc3QsIG1hY3NlY19kZXZpY2VfbGlzdF9lbGVtZW50LFxuK1x0XHRcdFx0bG9ja2RlcF9pc19oZWxkKFx1MDAyNm1hY3NlYy1cdTAwM2Vsb2NrKSkge1xuIFx0XHRpZiAoaXRlci1cdTAwM2VuZXRkZXYgPT0gY3R4LVx1MDAzZXNlY3ktXHUwMDNlbmV0ZGV2KVxuIFx0XHRcdHJldHVybiBpdGVyO1xuIFx0fVxuQEAgLTY5Miw3ICs2OTUsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19hZGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdHJ4X3NjX2xpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuK1x0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIHJ4X3NjX2xpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuIFx0aWYgKHJ4X3NjKSB7XG4gXHRcdG5ldGRldl9lcnIoY3R4LVx1MDAzZW5ldGRldiwgXCJNQUNzZWMgb2ZmbG9hZDogcnhfc2MgKHNjaSAlbGxkKSBhbHJlYWR5IGV4aXN0c1xcblwiLFxuIFx0XHRcdCAgIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuQEAgLTc3NSw3ICs3NzgsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYyhzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuK1x0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChtYWNzZWMsIGxpc3QsIGN0eF9yeF9zYy1cdTAwM2VzY2kpO1xuIFx0aWYgKCFyeF9zYykge1xuIFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIG91dDtcbkBAIC04NTMsNyArODU2LDcgQEAgc3RhdGljIGludCBtbHg1ZV9tYWNzZWNfZGVsX3J4c2Moc3RydWN0IG1hY3NlY19jb250ZXh0ICpjdHgpXG4gXHR9XG4gXG4gXHRsaXN0ID0gXHUwMDI2bWFjc2VjX2RldmljZS1cdTAwM2VtYWNzZWNfcnhfc2NfbGlzdF9oZWFkO1xuLVx0cnhfc2MgPSBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdChsaXN0LCBjdHgtXHUwMDNlcnhfc2MtXHUwMDNlc2NpKTtcbitcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBjdHgtXHUwMDNlcnhfc2MtXHUwMDNlc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0bmV0ZGV2X2VycihjdHgtXHUwMDNlbmV0ZGV2LFxuIFx0XHRcdCAgIFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcblwiLFxuQEAgLTg5NCw3ICs4OTcsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY19hZGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIHNjaSk7XG4rXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0bmV0ZGV2X2VycihjdHgtXHUwMDNlbmV0ZGV2LFxuIFx0XHRcdCAgIFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcblwiLFxuQEAgLTk3OCw3ICs5ODEsNyBAQCBzdGF0aWMgaW50IG1seDVlX21hY3NlY191cGRfcnhzYShzdHJ1Y3QgbWFjc2VjX2NvbnRleHQgKmN0eClcbiBcdH1cbiBcbiBcdGxpc3QgPSBcdTAwMjZtYWNzZWNfZGV2aWNlLVx1MDAzZW1hY3NlY19yeF9zY19saXN0X2hlYWQ7XG4tXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KGxpc3QsIHNjaSk7XG4rXHRyeF9zYyA9IG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0KG1hY3NlYywgbGlzdCwgc2NpKTtcbiBcdGlmICghcnhfc2MpIHtcbiBcdFx0bmV0ZGV2X2VycihjdHgtXHUwMDNlbmV0ZGV2LFxuIFx0XHRcdCAgIFwiTUFDc2VjIG9mZmxvYWQgcnhfc2Mgc2NpICVsbGQgZG9lc24ndCBleGlzdFxcblwiLFxuQEAgLTEwMzUsNyArMTAzOCw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfbWFjc2VjX2RlbF9yeHNhKHN0cnVjdCBtYWNzZWNfY29udGV4dCAqY3R4KVxuIFx0fVxuIFxuIFx0bGlzdCA9IFx1MDAyNm1hY3NlY19kZXZpY2UtXHUwMDNlbWFjc2VjX3J4X3NjX2xpc3RfaGVhZDtcbi1cdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobGlzdCwgc2NpKTtcbitcdHJ4X3NjID0gbWx4NWVfbWFjc2VjX2dldF9yeF9zY19mcm9tX3NjX2xpc3QobWFjc2VjLCBsaXN0LCBzY2kpO1xuIFx0aWYgKCFyeF9zYykge1xuIFx0XHRuZXRkZXZfZXJyKGN0eC1cdTAwM2VuZXRkZXYsXG4gXHRcdFx0ICAgXCJNQUNzZWMgb2ZmbG9hZCByeF9zYyBzY2kgJWxsZCBkb2Vzbid0IGV4aXN0XFxuXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzoyNy43ODY3ODA4NDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTk0MzM4NTk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbHg1L2NvcmUvZW5fYWNjZWwvbWFjc2VjLmNgLiBJdCdzIGEgc2ltcGxlIGFkZGl0aW9uLCBzbGFwcGluZyBgbG9ja2RlcF9pc19oZWxkYCBpbnRvIGEgY291cGxlIG9mIHBsYWNlcyB3aXRoaW4gdGhlIGBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdGAgYW5kIGBtbHg1ZV9tYWNzZWNfZ2V0X21hY3NlY19kZXZpY2VfY29udGV4dGAgZnVuY3Rpb25zLiBUaGUgaW50ZW50aW9uIGlzIGNsZWFyOiBzcXVhc2hpbmcgc29tZSBsb2NrZGVwIHdhcm5pbmdzIHJlbGF0ZWQgdG8gUkNVIHVzYWdlLiBCdXQsIGlzIHRoaXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmc/XG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBwYXRjaCBkZWFscyB3aXRoIE1BQ3NlYyBvZmZsb2FkLCBwYXJ0IG9mIHRoZSBNZWxsYW5veCBDb25uZWN0WC01KyBkcml2ZXIgKG1seDUpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBtbHg1IGlzIGEgaGFyZHdhcmUgZHJpdmVyOyBpdCByZXF1aXJlcyBzcGVjaWZpYyBQQ0llIGhhcmR3YXJlLCByaWdodD8gU3RhbmRhcmQgUUVNVS9HQ0Ugc2V0dXBzIGRvbid0IG5hdGl2ZWx5IGVtdWxhdGUgdGhpcy4gSSBtZWFuLCB0aGV5IGhhdmUgZTEwMDAsIHZpcnRpbywgYW5kIHNvbWUgb3RoZXJzLCBidXQgbm90IG1seDUsIHdoaWNoIGlzIG1vcmUgY29tcGxleC4gU28sIGFtIEkgZGVhbGluZyB3aXRoIGEgZGVhZCBlbmQgZnJvbSB0aGUgZ2V0LWdvP1xuXG5UaGVuLCB0aGUgc3l6a2FsbGVyIHF1ZXN0aW9uIHBvcHMgdXAuIERvZXMgc3l6a2FsbGVyIG9mZmVyIHNvbWUgbGV2ZWwgb2YgUENJIGZ1enppbmc/IFllcywgaXQgZG9lcywgYnV0IHRoaXMgbWx4NSBkcml2ZXIgaXMgYSBoZWF2eXdlaWdodC4gVGhlIFBDSSBmdXp6aW5nIGluIHN5emthbGxlciBpcyB1c3VhbGx5IHNoYWxsb3cgYW5kIHVubGlrZWx5IHRvIGdldCBkZWVwIGludG8gdGhlIHdlZWRzIHdpdGggc29tZXRoaW5nIHRoaXMgY29tcGxleCB1bmxlc3MgdGhlcmUncyBhIHNwZWNpZmljIGVmZm9ydCB0byB0YXJnZXQgaXQuIEknbSB3b25kZXJpbmcgaWYgdGhlcmUncyBhbnkgc3BlY2lmaWMgbWx4NSBjb25maWcgaW4gc3l6a2FsbGVyIHRvIHN1Z2dlc3QgdGhhdCBpdCdzIHdvcnRoIHRoZSBlZmZvcnQuXG5cblRoZW4sIHRoZXJlJ3MgdGhlIHRleHQgcHJvbXB0LiBUaGUgcHJvbXB0IHNheXMgdGhhdCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLiBPa2F5LCBzbyBtbHg1IGlzbid0IG5hdGl2ZWx5IGVtdWxhdGVkLiBJJ20gdGhpbmtpbmcgYWJvdXQgdkRQQSBvciBWRklPLCBidXQgdGhhdCBzdGlsbCByZXF1aXJlcyBzb21lIGxldmVsIG9mIGhhcmR3YXJlIHBhc3N0aHJvdWdoLCByaWdodD8gRXZlbiB3aXRoIHN5emthbGxlcidzIFBDSSBmdXp6aW5nLCBpdCdzIGEgbG9uZyBzaG90LiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIHRydWx5IGdldCB0byB0aGUgYG1seDVlX21hY3NlY19nZXRfcnhfc2NfZnJvbV9zY19saXN0YD9cblxuSSB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgcGF0Y2guIEl0J3MganVzdCBhZGRpbmcgdGhhdCBgbG9ja2RlcF9pc19oZWxkYCBjaGVjay4gVGhpcyBpc24ndCBhYm91dCBhbHRlcmluZyB0aGUgZnVuY3Rpb25hbCBjb2RlIHBhdGg7IGl0J3MganVzdCBhYm91dCBzdXBwcmVzc2luZyBhIGxvY2tkZXAgd2FybmluZy4gTXkgdGhpbmtpbmcgZ29lcyB0byB0aGUgcHJvbXB0IGFnYWluOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLi4uIC0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiIFNvLCBhZGRpbmcgYSBgbG9ja2RlcF9pc19oZWxkYCDigJMgaXMgdGhhdCBhIGZ1bmN0aW9uYWwgY2hhbmdlP1xuXG5UaGUgYGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBtYWNybyBpcyB3aGF0J3MgYmVpbmcgbW9kaWZpZWQuIFRoZSBgY29uZGAgcGFyYW1ldGVyIG9mIHRoYXQgbWFjcm8gaXMgb25seSBjaGVja2VkIHdoZW4gYENPTkZJR19QUk9WRV9SQ1VgIGlzIGVuYWJsZWQuIEl0IGlzIG1lcmVseSBhIGxvY2tkZXAgY2hlY2ssIHNvIGlmIHRydWUgdGhlIGxvY2tkZXAgd2FybmluZyBpcyBhdm9pZGVkLiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZ2VuZXJhdGVkIGNvZGUgb2YgdGhlIGxvb3AgaXRzZWxmLCBvbmx5IGFkZHMgdGhlIGxvY2tkZXAgY2hlY2ssIGFuZCB0aHVzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5HaXZlbiBhbGwgb2YgdGhhdCwgdGhpcyBpcyByZWFsbHkgbW9yZSBsaWtlIGEgcHVyZWx5IGluZm9ybWF0aW9uYWwgY2hhbmdlLCBub3Qgb25lIHRoYXQgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGNvZGUgZXhlY3V0ZXMgKG90aGVyIHRoYW4sIGhvcGVmdWxseSwgcHJldmVudGluZyBsb2NrZGVwIHdhcm5pbmdzKS4gSXQncyBhIGxvY2tkZXAgYW5ub3RhdGlvbi4gVGh1cywgaXQncyBhbG1vc3QgY2VydGFpbmx5IG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6MzM6MzkuNzMwMTc2NDk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzI0Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaD0zNDY9c3RhdGljIGlubGluZSB2b2lkIGxpc3Rfc3BsaWNlX3RhaWxfaW5pdF9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oLTQ0NS0gKi9cXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaDo0NDY6I2RlZmluZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwb3MsIGhlYWQsIG1lbWJlciwgY29uZC4uLilcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtNDQ3LVxcdGZvciAoX19saXN0X2NoZWNrX3JjdShkdW1teSwgIyMgY29uZCwgMCksXFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzozOS43ODk5MTQ4NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDE2MjAyNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYF9fbGlzdF9jaGVja19yY3VgKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBfX2xpc3RfY2hlY2tfcmN1YCBpcyBhY3R1YWxseSBkb2luZy4gSSdtIGdvaW5nIHRvIGxvb2sgdXAgdGhlIGRlZmluaXRpb24gZGlyZWN0bHksIGRpZyBpbnRvIHRoZSBjb2RlLCBzZWUgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIHN0YXJ0IHdpdGggYSBzb2xpZCBkZWZpbml0aW9uIOKAkyB0aGF0J3MgdGhlIGZvdW5kYXRpb24gaGVyZSwgYWZ0ZXIgYWxsLiBUaGlzIGZ1bmN0aW9uIG5hbWUgc3Ryb25nbHkgc3VnZ2VzdHMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gY2hlY2tpbmcgYSBsaXN0IHN0cnVjdHVyZSwgYW5kIHRoZSBcIlJDVVwiIHBhcnQgKnNjcmVhbXMqIHRoYXQgd2UgYXJlIGluIHRoZSByZWFsbSBvZiBSZWFkLUNvcHktVXBkYXRlIHN5bmNocm9uaXphdGlvbi4gVGhpcyBpcyBnb2luZyB0byByZXF1aXJlIGEgY2FyZWZ1bCBleGFtaW5hdGlvbiBvZiBjb25jdXJyZW50IGFjY2VzcyBwYXR0ZXJucywgbWVtb3J5IG9yZGVyaW5nLCBhbmQgdGhlIGd1YXJhbnRlZXMgcHJvdmlkZWQgYnkgUkNVLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dC4gSXMgaXQgdmVyaWZ5aW5nIGxpc3QgaW50ZWdyaXR5PyBJcyBpdCByZWxhdGVkIHRvIGRlYnVnZ2luZz8gSXMgaXQgZm9yIGVycm9yIGRldGVjdGlvbiBkdXJpbmcgUkNVIG9wZXJhdGlvbnM/IFVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbSB3aWxsIGRpY3RhdGUgdGhlIGRlcHRoIG9mIG15IGludmVzdGlnYXRpb24uIFNvLCBkZWZpbml0aW9uIGZpcnN0LCB0aGVuIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTc4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjA6MzM6NDQuMjA2MTIwMTE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDE2Nzg3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgX19saXN0X2NoZWNrX3JjdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3JjdWxpc3QuaD0yMj1zdGF0aWMgaW5saW5lIHZvaWQgSU5JVF9MSVNUX0hFQURfUkNVKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaC03MS0jaWZkZWYgQ09ORklHX1BST1ZFX1JDVV9MSVNUXFxuaW5jbHVkZS9saW51eC9yY3VsaXN0Lmg6NzI6I2RlZmluZSBfX2xpc3RfY2hlY2tfcmN1KGR1bW15LCBjb25kLCBleHRyYS4uLilcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9yY3VsaXN0LmgtNzMtXFx0KHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaC04NC0jZWxzZVxcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oOjg1OiNkZWZpbmUgX19saXN0X2NoZWNrX3JjdShkdW1teSwgY29uZCwgZXh0cmEuLi4pXFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvcmN1bGlzdC5oLTg2LVxcdCh7IGNoZWNrX2FyZ19jb3VudF9vbmUoZXh0cmEpOyB9KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMDozMzo0NC41MjYyOTUzMTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDUxNzI4NjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgc28gYWZ0ZXIgZXhhbWluaW5nIHRoaXMgcGF0Y2ggY2xvc2VseSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IGl0J3MgcHVyZWx5IGEgbG9ja2RlcCBhbm5vdGF0aW9uIGZpeCwgYW5kIHRoZXJlZm9yZSwgbm90IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBjb3JlIGNoYW5nZSB3aXRoaW4gYF9fbGlzdF9jaGVja19yY3VgIGlzIHNvbGVseSBhYm91dCBsb2NrZGVwIGNoZWNrcy4gSXQgZG9lc24ndCBtb2RpZnkgdGhlIGxvb3AncyBleGVjdXRpb24gcGF0aCBpbiBhbnkgd2F5LiBUaGlzIGlzIGNyaXRpY2FsLCBtZWFuaW5nIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcywgYXQgYWxsLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggaXMgcmVhbGx5IGp1c3QgYWRkaW5nIGBsb2NrZGVwX2lzX2hlbGRgIGFubm90YXRpb25zIHRvIGBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgbG9vcHMuIFdoaWxlIHRoaXMgaXMgaW1wb3J0YW50IGZvciByZXNvbHZpbmcgbG9ja2RlcCB3YXJuaW5ncywgaXQgZG9lc24ndCBjaGFuZ2UgaG93IHRoZSBkcml2ZXIgKmFjdHVhbGx5KiB3b3JrcywgaXRzIGV4ZWN1dGlvbiBmbG93LiBBbmQgb24gdG9wIG9mIHRoYXQsIGFuZCB0aGlzIGlzIGltcG9ydGFudCwgdGhlIG1seDUgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIHdoaWNoIGlzbid0IHR5cGljYWxseSBlbXVsYXRlZCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBzZXR1cC4gVGhpcyBmdXJ0aGVyIHJlZHVjZXMgdGhlIGxpa2VsaWhvb2Qgb2YgdGhlIGNoYW5nZSBsZWFkaW5nIHRvIHNvbWV0aGluZyBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS5cblxuSSBhbHNvIGRvdWJsZS1jaGVja2VkIGZvciBhbnkgKm90aGVyKiBjaGFuZ2VzIGx1cmtpbmcgaW4gdGhlIHBhdGNoLiBJIHNhdyB0aGF0IGBtbHg1ZV9tYWNzZWNfZ2V0X3J4X3NjX2Zyb21fc2NfbGlzdGAgYW5kIGBtbHg1ZV9tYWNzZWNfZ2V0X21hY3NlY19kZXZpY2VfY29udGV4dGAgd2VyZSBtb2RpZmllZCwgYW5kIHRoZSBgY29uc3RgIHF1YWxpZmllciB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBgbWFjc2VjYCBwb2ludGVyIGluIHRob3NlIGZ1bmN0aW9ucy4gSG93ZXZlciwgdGhpcyBpcyBiZWNhdXNlIGBsb2NrZGVwX2lzX2hlbGRgIG1pZ2h0IG5lZWQgYSBub24tY29uc3QgcG9pbnRlciwgb3IgdGhlIGNoYW5nZSBpcyBzaW1wbHkgdG8gcGFzcyBpdCB0byB0aGUgbG9ja2RlcCBtYWNyby4gQWdhaW4sIGl0IGlzICpub3QqIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cblRoZXJlZm9yZSwgY29uc2lkZXJpbmcgdGhlIGNvbXBsZXRlIGxhY2sgb2YgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIHJlbGlhbmNlIG9uIHNwZWNpZmljIGhhcmR3YXJlLCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjU5LCJPdXRwdXRUb2tlbnMiOjk4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIwOjMzOjUwLjk3ODAyNzgyN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGxvY2tkZXAgYW5ub3RhdGlvbnMgKGxvY2tkZXBfaXNfaGVsZCkgdG8gbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UgbG9vcHMgdG8gZml4IFJDVSBsb2NrZGVwIHNwbGF0cy4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgY29kZS4gRnVydGhlcm1vcmUsIHRoZSBtbHg1IGhhcmR3YXJlIGRyaXZlciBpcyBnZW5lcmFsbHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgbG9ja2RlcCBhbm5vdGF0aW9ucyAobG9ja2RlcF9pc19oZWxkKSB0byBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSBsb29wcyB0byBmaXggUkNVIGxvY2tkZXAgc3BsYXRzLiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBjb2RlLiBGdXJ0aGVybW9yZSwgdGhlIG1seDUgaGFyZHdhcmUgZHJpdmVyIGlzIGdlbmVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmhbvr[1] Phase: Running StartedAt: 2026-07-01 20:34:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmhbvr[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-01 20:34:01 +0000 UTC FinishedAt: 2026-07-01 20:34:09 +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,}