Name: series-workflow9hpg5 Phase: Failed StartedAt: 2026-08-01 14:54:31 +0000 UTC FinishedAt: 2026-08-01 15:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hpg5[0] Phase: Succeeded StartedAt: 2026-08-01 14:54:31 +0000 UTC FinishedAt: 2026-08-01 15:10:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hpg5[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 14:54:31 +0000 UTC FinishedAt: 2026-08-01 15:10:34 +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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIChuZ2JlL3R4Z2JlKSBFdGhlcm5ldCBkcml2ZXJzLCB3aGljaCBhcmUgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNTowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQzZjI4NTA0ZjUwNGJkMGE2MTZjYjIzZTZjMzg3YzA3M2Y5N2YxYmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE1OjA5OjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuaW5kZXggMjYwZTE0ZDVkNTQxMi4uMzQ5YWZiZTYwMTMyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXG5AQCAtMjg4Niw2ICYjNDM7Mjg4Niw4IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IHd4LVx1MDAzZXJ4X3JpbmdbaV07XG4gXG4mIzQzO1x0XHRpZiAoIXJ4X3JpbmcpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRub25fZW9wX2Rlc2NzICYjNDM7PSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLm5vbl9lb3BfZGVzY3M7XG4gXHRcdGFsbG9jX3J4X2J1ZmZfZmFpbGVkICYjNDM7PSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xuIFx0XHRod19jc3VtX3J4X2dvb2QgJiM0Mzs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMuY3N1bV9nb29kX2NudDtcbkBAIC0yOTExLDEyICYjNDM7MjkxMywxNyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC1cdTAwM2V0eF9yaW5nW2ldO1xuIFxuJiM0MztcdFx0aWYgKCF0eF9yaW5nKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0cmVzdGFydF9xdWV1ZSAmIzQzOz0gdHhfcmluZy1cdTAwM2V0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlO1xuIFx0XHR0eF9idXN5ICYjNDM7PSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnR4X2J1c3k7XG4gXHR9XG4gXHR3eC1cdTAwM2VyZXN0YXJ0X3F1ZXVlID0gcmVzdGFydF9xdWV1ZTtcbiBcdHd4LVx1MDAzZXR4X2J1c3kgPSB0eF9idXN5O1xuIFxuJiM0MztcdGlmICh3eC1cdTAwM2VwZGV2LVx1MDAzZWlzX3ZpcnRmbilcbiYjNDM7XHRcdGdvdG8gc2tpcF9od19zdGF0cztcbiYjNDM7XG4gXHR3eF91cGRhdGVfeG9mZl9yeF9sZmMod3gpO1xuIFxuIFx0aHdzdGF0cy1cdTAwM2VncHJjICYjNDM7PSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7XG5AQCAtMjk1Niw2ICYjNDM7Mjk2Myw3IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHRcdGh3c3RhdHMtXHUwMDNlcW1wcmMgJiM0Mzs9IHJkMzJfd3JhcCh3eCwgV1hfUFhfTVBSQyhpKSxcbiBcdFx0XHRcdFx0ICAgIFx1MDAyNnd4LVx1MDAzZWxhc3Rfc3RhdHMucW1wcmNbaV0pO1xuIFxuJiM0Mztza2lwX2h3X3N0YXRzOlxuIFx0c3Bpbl91bmxvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gfVxuIEVYUE9SVF9TWU1CT0wod3hfdXBkYXRlX3N0YXRzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuaW5kZXggMzE1NzJmNTliOWNlMi4uYTRjYTAxYzE4YzZhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbkBAIC01LDYgJiM0Mzs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9pbmV0X2Vjbi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9uZXRkZXZfcXVldWVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JrcXVldWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2N0cC5oXHUwMDNlXG5AQCAtMzA5MSw2ICYjNDM7MzA5Miw4IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdGlmICh3eC1cdTAwM2VwZGV2LVx1MDAzZWlzX3ZpcnRmbilcbiYjNDM7XHRcdHJldHVybjtcbiBcbiBcdGh3c3RhdHMgPSBcdTAwMjZ3eC1cdTAwM2VzdGF0cztcbiBcdHN0YXRzLVx1MDAzZXJ4X2Vycm9ycyA9IGh3c3RhdHMtXHUwMDNlY3JjZXJycyAmIzQzOyBod3N0YXRzLVx1MDAzZXJsZWM7XG5AQCAtMzEwMCw2ICYjNDM7MzEwMyw1NCBAQCB2b2lkIHd4X2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gfVxuIEVYUE9SVF9TWU1CT0wod3hfZ2V0X3N0YXRzNjQpO1xuIFxuJiM0MztzdGF0aWMgdm9pZCB3eF9nZXRfcXVldWVfc3RhdHNfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGlkeCxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnN0YXRzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0c3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC1cdTAwM2VyeF9yaW5nW2lkeF07XG4mIzQzO1xuJiM0MztcdHN0YXRzLVx1MDAzZXBhY2tldHMgPSByaW5nLVx1MDAzZXN0YXRzLnBhY2tldHM7XG4mIzQzO1x0c3RhdHMtXHUwMDNlYnl0ZXMgPSByaW5nLVx1MDAzZXN0YXRzLmJ5dGVzO1xuJiM0MztcdHN0YXRzLVx1MDAzZWFsbG9jX2ZhaWwgPSB3eC1cdTAwM2VhbGxvY19yeF9idWZmX2ZhaWxlZDtcbiYjNDM7XHRzdGF0cy1cdTAwM2Vjc3VtX2NvbXBsZXRlID0gd3gtXHUwMDNlaHdfY3N1bV9yeF9nb29kO1xuJiM0MztcdHN0YXRzLVx1MDAzZWNzdW1fYmFkID0gd3gtXHUwMDNlaHdfY3N1bV9yeF9lcnJvcjtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX3N0YXRzX3R4ICpzdGF0cylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpO1xuJiM0MztcdHN0cnVjdCB3eF9yaW5nICpyaW5nID0gd3gtXHUwMDNldHhfcmluZ1tpZHhdO1xuJiM0MztcbiYjNDM7XHRzdGF0cy1cdTAwM2VwYWNrZXRzID0gcmluZy1cdTAwM2VzdGF0cy5wYWNrZXRzO1xuJiM0MztcdHN0YXRzLVx1MDAzZWJ5dGVzID0gcmluZy1cdTAwM2VzdGF0cy5ieXRlcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X2Jhc2Vfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c19yeCAqcngsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KVxuJiM0Mzt7XG4mIzQzO1x0cngtXHUwMDNlYnl0ZXMgPSAwO1xuJiM0MztcdHJ4LVx1MDAzZXBhY2tldHMgPSAwO1xuJiM0MztcdHJ4LVx1MDAzZWFsbG9jX2ZhaWwgPSAwO1xuJiM0MztcdHJ4LVx1MDAzZWNzdW1fY29tcGxldGUgPSAwO1xuJiM0MztcdHJ4LVx1MDAzZWNzdW1fYmFkID0gMDtcbiYjNDM7XHR0eC1cdTAwM2VieXRlcyA9IDA7XG4mIzQzO1x0dHgtXHUwMDNlcGFja2V0cyA9IDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3N0YXRfb3BzIHd4X3N0YXRfb3BzID0ge1xuJiM0MztcdC5nZXRfcXVldWVfc3RhdHNfcnggID0gd3hfZ2V0X3F1ZXVlX3N0YXRzX3J4LFxuJiM0MztcdC5nZXRfcXVldWVfc3RhdHNfdHggID0gd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4LFxuJiM0MztcdC5nZXRfYmFzZV9zdGF0cyAgICAgID0gd3hfZ2V0X2Jhc2Vfc3RhdHMsXG4mIzQzO307XG4mIzQzO1xuJiM0Mzt2b2lkIHd4X3NldF9zdGF0X29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0bmV0ZGV2LVx1MDAzZXN0YXRfb3BzID0gXHUwMDI2d3hfc3RhdF9vcHM7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTCh3eF9zZXRfc3RhdF9vcHMpO1xuJiM0MztcbiBpbnQgd3hfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxuIHtcbiBcdG5ldGRldl9mZWF0dXJlc190IGNoYW5nZWQgPSBuZXRkZXYtXHUwMDNlZmVhdHVyZXMgXiBmZWF0dXJlcztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxuaW5kZXggYmM2NzE3ODY5NzhlNS4uY2Y2ZGQ3NGZlZjg3YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmhcbkBAIC0zMCw2ICYjNDM7MzAsNyBAQCB2b2lkIHd4X2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpO1xuIGludCB3eF9zZXR1cF9yZXNvdXJjZXMoc3RydWN0IHd4ICp3eCk7XG4gdm9pZCB3eF9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHQgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cyk7XG4mIzQzO3ZvaWQgd3hfc2V0X3N0YXRfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuIGludCB3eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpO1xuIG5ldGRldl9mZWF0dXJlc190IHd4X2ZpeF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0ICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmNcbmluZGV4IDI2ZGU3OGU5YTY5ZWYuLmYxMTY2NzdmYjlkZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXG5AQCAtNSw2ICYjNDM7NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGNpLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDt3eF90eXBlLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7d3hfaHcuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3d4X21ieC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7d3hfbGliLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt3eF92Zi5oXCYjMzQ7XG5AQCAtMTYsOSAmIzQzOzE3LDEzIEBAIGludCB3eHZmX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2X2QpXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xuIFx0c3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiBcbiYjNDM7XHRydG5sX2xvY2soKTtcbiBcdG5ldGlmX2RldmljZV9kZXRhY2god3gtXHUwMDNlbmV0ZGV2KTtcbiYjNDM7XHRpZiAobmV0aWZfcnVubmluZyh3eC1cdTAwM2VuZXRkZXYpKVxuJiM0MztcdFx0d3h2Zl9jbG9zZSh3eC1cdTAwM2VuZXRkZXYpO1xuIFx0d3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4gXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XG4mIzQzO1x0cnRubF91bmxvY2soKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0zNCwxMiAmIzQzOzM5LDI1IEBAIGludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcbiB7XG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xuIFx0c3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gcGNpX2VuYWJsZV9kZXZpY2VfbWVtKHBkZXYpO1xuJiM0MztcdGlmIChlcnIpIHtcbiYjNDM7XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0Nhbm5vdCBlbmFibGUgUENJIGRldmljZSBmcm9tIHN1c3BlbmRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHR9XG4gXG4gXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcbi1cdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4mIzQzO1x0cnRubF9sb2NrKCk7XG4mIzQzO1x0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbiYjNDM7XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgbmV0aWZfcnVubmluZyh3eC1cdTAwM2VuZXRkZXYpKVxuJiM0MztcdFx0ZXJyID0gd3h2Zl9vcGVuKHd4LVx1MDAzZW5ldGRldik7XG4mIzQzO1x0cnRubF91bmxvY2soKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcdG5ldGlmX2RldmljZV9hdHRhY2god3gtXHUwMDNlbmV0ZGV2KTtcbiBcbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIEVYUE9SVF9TWU1CT0wod3h2Zl9yZXN1bWUpO1xuIFxuQEAgLTQwOSw2ICYjNDM7NDI3LDcgQEAgc3RhdGljIHZvaWQgd3h2Zl9zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIFx0d3h2Zl9saW5rX2NvbmZpZ19zdWJ0YXNrKHd4KTtcbiBcdHd4dmZfcmVzZXRfc3VidGFzayh3eCk7XG4mIzQzO1x0d3hfdXBkYXRlX3N0YXRzKHd4KTtcbiBcdHd4X3NlcnZpY2VfZXZlbnRfY29tcGxldGUod3gpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmNcbmluZGV4IGExNjIyMTk5NTkwOWYuLmQ5NjVmN2FmMTY5N2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uY1xuQEAgLTcwMCw2ICYjNDM7NzAwLDcgQEAgc3RhdGljIGludCBuZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSBuZ2JlX2RyaXZlcl9uYW1lO1xuIFx0bmdiZV9zZXRfZXRodG9vbF9vcHMobmV0ZGV2KTtcbiBcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2bmdiZV9uZXRkZXZfb3BzO1xuJiM0MztcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xuIFxuIFx0bmV0ZGV2LVx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8IE5FVElGX0ZfSVBfQ1NVTSB8XG4gXHRcdFx0ICAgTkVUSUZfRl9UU08gfCBORVRJRl9GX1RTTzYgfFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi9uZ2JldmZfbWFpbi5jXG5pbmRleCBkNzljZjhkODQ4NGY5Li5iNDgxN2M1ODk5MmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uY1xuQEAgLTQ4LDYgJiM0Mzs0OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbmdiZXZmX25ldGRldl9vcHMgPSB7XG4gXHQubmRvX3N0YXJ0X3htaXQgICAgICAgICA9IHd4X3htaXRfZnJhbWUsXG4gXHQubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLFxuIFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSB3eF9zZXRfbWFjX3ZmLFxuJiM0MztcdC5uZG9fZ2V0X3N0YXRzNjQgICAgICAgID0gd3hfZ2V0X3N0YXRzNjQsXG4gfTtcbiBcbiBzdGF0aWMgdm9pZCBuZ2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbkBAIC0xOTAsNiAmIzQzOzE5MSw3IEBAIHN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcbiBcdHd4X3NldF9ldGh0b29sX29wc192ZihuZXRkZXYpO1xuIFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZuZ2JldmZfbmV0ZGV2X29wcztcbiYjNDM7XHR3eF9zZXRfc3RhdF9vcHMobmV0ZGV2KTtcbiBcbiBcdC8qIHNldHVwIHRoZSBwcml2YXRlIHN0cnVjdHVyZSAqL1xuIFx0ZXJyID0gbmdiZXZmX3N3X2luaXQod3gpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmNcbmluZGV4IGMyNzc4NjNiYWY2N2EuLjdmM2Q3MmU1M2ZkMzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmNcbkBAIC03NDUsNiAmIzQzOzc0NSw3IEBAIHN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHR3eC1cdTAwM2Vkcml2ZXJfbmFtZSA9IHR4Z2JlX2RyaXZlcl9uYW1lO1xuIFx0dHhnYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XG4gXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnR4Z2JlX25ldGRldl9vcHM7XG4mIzQzO1x0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XG4gXHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xuIFxuIFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG5pbmRleCA4YjE2YjkwMDgyMGFhLi4xZTMwZDhmMjE4M2EwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcbkBAIC00NCw2ICYjNDM7NDQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHR4Z2JldmZfbmV0ZGV2X29wcyA9IHtcbiBcdC5uZG9fc3RhcnRfeG1pdCAgICAgICAgID0gd3hfeG1pdF9mcmFtZSxcbiBcdC5uZG9fdmFsaWRhdGVfYWRkciAgICAgID0gZXRoX3ZhbGlkYXRlX2FkZHIsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHd4X3NldF9tYWNfdmYsXG4mIzQzO1x0Lm5kb19nZXRfc3RhdHM2NCAgICAgICAgPSB3eF9nZXRfc3RhdHM2NCxcbiB9O1xuIFxuIHN0YXRpYyB2b2lkIHR4Z2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbkBAIC0yNTUsNiAmIzQzOzI1Niw3IEBAIHN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdHd4LVx1MDAzZWRyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7XG4gXHR3eF9zZXRfZXRodG9vbF9vcHNfdmYobmV0ZGV2KTtcbiBcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dHhnYmV2Zl9uZXRkZXZfb3BzO1xuJiM0MztcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xuIFxuIFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG4gXHRlcnIgPSB0eGdiZXZmX3N3X2luaXQod3gpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAobmdiZS90eGdiZSkgRXRoZXJuZXQgZHJpdmVycywgd2hpY2ggYXJlIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0M2YyODUwNGY1MDRiZDBhNjE2Y2IyM2U2YzM4N2MwNzNmOTdmMWJlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAxNTowOTo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYwppbmRleCAyNjBlMTRkNWQ1NDEyLi4zNDlhZmJlNjAxMzJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jCkBAIC0yODg2LDYgJiM0MzsyODg2LDggQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eCkKIAlmb3IgKGkgPSAwOyBpICZsdDsgd3gtJmd0O251bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtJmd0O3J4X3JpbmdbaV07CiAKJiM0MzsJCWlmICghcnhfcmluZykKJiM0MzsJCQljb250aW51ZTsKIAkJbm9uX2VvcF9kZXNjcyAmIzQzOz0gcnhfcmluZy0mZ3Q7cnhfc3RhdHMubm9uX2VvcF9kZXNjczsKIAkJYWxsb2NfcnhfYnVmZl9mYWlsZWQgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkOwogCQlod19jc3VtX3J4X2dvb2QgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7CkBAIC0yOTExLDEyICYjNDM7MjkxMywxNyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KQogCWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKIAkJc3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC0mZ3Q7dHhfcmluZ1tpXTsKIAomIzQzOwkJaWYgKCF0eF9yaW5nKQomIzQzOwkJCWNvbnRpbnVlOwogCQlyZXN0YXJ0X3F1ZXVlICYjNDM7PSB0eF9yaW5nLSZndDt0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlOwogCQl0eF9idXN5ICYjNDM7PSB0eF9yaW5nLSZndDt0eF9zdGF0cy50eF9idXN5OwogCX0KIAl3eC0mZ3Q7cmVzdGFydF9xdWV1ZSA9IHJlc3RhcnRfcXVldWU7CiAJd3gtJmd0O3R4X2J1c3kgPSB0eF9idXN5OwogCiYjNDM7CWlmICh3eC0mZ3Q7cGRldi0mZ3Q7aXNfdmlydGZuKQomIzQzOwkJZ290byBza2lwX2h3X3N0YXRzOwomIzQzOwogCXd4X3VwZGF0ZV94b2ZmX3J4X2xmYyh3eCk7CiAKIAlod3N0YXRzLSZndDtncHJjICYjNDM7PSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7CkBAIC0yOTU2LDYgJiM0MzsyOTYzLDcgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eCkKIAkJaHdzdGF0cy0mZ3Q7cW1wcmMgJiM0Mzs9IHJkMzJfd3JhcCh3eCwgV1hfUFhfTVBSQyhpKSwKIAkJCQkJICAgICZhbXA7d3gtJmd0O2xhc3Rfc3RhdHMucW1wcmNbaV0pOwogCiYjNDM7c2tpcF9od19zdGF0czoKIAlzcGluX3VubG9jaygmYW1wO3d4LSZndDtod19zdGF0c19sb2NrKTsKIH0KIEVYUE9SVF9TWU1CT0wod3hfdXBkYXRlX3N0YXRzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCmluZGV4IDMxNTcyZjU5YjljZTIuLmE0Y2EwMWMxOGM2YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYwpAQCAtNSw2ICYjNDM7NSw3IEBACiAjaW5jbHVkZSAmbHQ7bmV0L2lwNl9jaGVja3N1bS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9pbmV0X2Vjbi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtuZXQvbmV0ZGV2X3F1ZXVlcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3dvcmtxdWV1ZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NjdHAuaCZndDsKQEAgLTMwOTEsNiAmIzQzOzMwOTIsOCBAQCB2b2lkIHd4X2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJfQogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWlmICh3eC0mZ3Q7cGRldi0mZ3Q7aXNfdmlydGZuKQomIzQzOwkJcmV0dXJuOwogCiAJaHdzdGF0cyA9ICZhbXA7d3gtJmd0O3N0YXRzOwogCXN0YXRzLSZndDtyeF9lcnJvcnMgPSBod3N0YXRzLSZndDtjcmNlcnJzICYjNDM7IGh3c3RhdHMtJmd0O3JsZWM7CkBAIC0zMTAwLDYgJiM0MzszMTAzLDU0IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIH0KIEVYUE9SVF9TWU1CT0wod3hfZ2V0X3N0YXRzNjQpOwogCiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsCiYjNDM7CQkJCSAgc3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c19yeCAqc3RhdHMpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJc3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC0mZ3Q7cnhfcmluZ1tpZHhdOwomIzQzOwomIzQzOwlzdGF0cy0mZ3Q7cGFja2V0cyA9IHJpbmctJmd0O3N0YXRzLnBhY2tldHM7CiYjNDM7CXN0YXRzLSZndDtieXRlcyA9IHJpbmctJmd0O3N0YXRzLmJ5dGVzOwomIzQzOwlzdGF0cy0mZ3Q7YWxsb2NfZmFpbCA9IHd4LSZndDthbGxvY19yeF9idWZmX2ZhaWxlZDsKJiM0MzsJc3RhdHMtJmd0O2NzdW1fY29tcGxldGUgPSB3eC0mZ3Q7aHdfY3N1bV9yeF9nb29kOwomIzQzOwlzdGF0cy0mZ3Q7Y3N1bV9iYWQgPSB3eC0mZ3Q7aHdfY3N1bV9yeF9lcnJvcjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsCiYjNDM7CQkJCSAgc3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c190eCAqc3RhdHMpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJc3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC0mZ3Q7dHhfcmluZ1tpZHhdOwomIzQzOwomIzQzOwlzdGF0cy0mZ3Q7cGFja2V0cyA9IHJpbmctJmd0O3N0YXRzLnBhY2tldHM7CiYjNDM7CXN0YXRzLSZndDtieXRlcyA9IHJpbmctJmd0O3N0YXRzLmJ5dGVzOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB3eF9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnJ4LAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KQomIzQzO3sKJiM0MzsJcngtJmd0O2J5dGVzID0gMDsKJiM0MzsJcngtJmd0O3BhY2tldHMgPSAwOwomIzQzOwlyeC0mZ3Q7YWxsb2NfZmFpbCA9IDA7CiYjNDM7CXJ4LSZndDtjc3VtX2NvbXBsZXRlID0gMDsKJiM0MzsJcngtJmd0O2NzdW1fYmFkID0gMDsKJiM0MzsJdHgtJmd0O2J5dGVzID0gMDsKJiM0MzsJdHgtJmd0O3BhY2tldHMgPSAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9zdGF0X29wcyB3eF9zdGF0X29wcyA9IHsKJiM0MzsJLmdldF9xdWV1ZV9zdGF0c19yeCAgPSB3eF9nZXRfcXVldWVfc3RhdHNfcngsCiYjNDM7CS5nZXRfcXVldWVfc3RhdHNfdHggID0gd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4LAomIzQzOwkuZ2V0X2Jhc2Vfc3RhdHMgICAgICA9IHd4X2dldF9iYXNlX3N0YXRzLAomIzQzO307CiYjNDM7CiYjNDM7dm9pZCB3eF9zZXRfc3RhdF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKJiM0Mzt7CiYjNDM7CW5ldGRldi0mZ3Q7c3RhdF9vcHMgPSAmYW1wO3d4X3N0YXRfb3BzOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKHd4X3NldF9zdGF0X29wcyk7CiYjNDM7CiBpbnQgd3hfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKQogewogCW5ldGRldl9mZWF0dXJlc190IGNoYW5nZWQgPSBuZXRkZXYtJmd0O2ZlYXR1cmVzIF4gZmVhdHVyZXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaAppbmRleCBiYzY3MTc4Njk3OGU1Li5jZjZkZDc0ZmVmODdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmgKQEAgLTMwLDYgJiM0MzszMCw3IEBAIHZvaWQgd3hfZnJlZV9yZXNvdXJjZXMoc3RydWN0IHd4ICp3eCk7CiBpbnQgd3hfc2V0dXBfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpOwogdm9pZCB3eF9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCQkgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cyk7CiYjNDM7dm9pZCB3eF9zZXRfc3RhdF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7CiBpbnQgd3hfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKTsKIG5ldGRldl9mZWF0dXJlc190IHd4X2ZpeF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCQkJCSAgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMKaW5kZXggMjZkZTc4ZTlhNjllZi4uZjExNjY3N2ZiOWRmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jCkBAIC01LDYgJiM0Mzs1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9wY2kuaCZndDsKIAogI2luY2x1ZGUgJiMzNDt3eF90eXBlLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7d3hfaHcuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3d4X21ieC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7d3hfbGliLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt3eF92Zi5oJiMzNDsKQEAgLTE2LDkgJiM0MzsxNywxMyBAQCBpbnQgd3h2Zl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldl9kKQogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXZfZCk7CiAJc3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAomIzQzOwlydG5sX2xvY2soKTsKIAluZXRpZl9kZXZpY2VfZGV0YWNoKHd4LSZndDtuZXRkZXYpOwomIzQzOwlpZiAobmV0aWZfcnVubmluZyh3eC0mZ3Q7bmV0ZGV2KSkKJiM0MzsJCXd4dmZfY2xvc2Uod3gtJmd0O25ldGRldik7CiAJd3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7CiAJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOwomIzQzOwlydG5sX3VubG9jaygpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zNCwxMiAmIzQzOzM5LDI1IEBAIGludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZCkKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpOwogCXN0cnVjdCB3eCAqd3ggPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CiYjNDM7CWludCBlcnIgPSAwOwomIzQzOwomIzQzOwllcnIgPSBwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldik7CiYjNDM7CWlmIChlcnIpIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7Q2Fubm90IGVuYWJsZSBQQ0kgZGV2aWNlIGZyb20gc3VzcGVuZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsJfQogCiAJcGNpX3NldF9tYXN0ZXIocGRldik7Ci0Jd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTsKJiM0MzsJcnRubF9sb2NrKCk7CiYjNDM7CWVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7CiYjNDM7CWlmICghZXJyICZhbXA7JmFtcDsgbmV0aWZfcnVubmluZyh3eC0mZ3Q7bmV0ZGV2KSkKJiM0MzsJCWVyciA9IHd4dmZfb3Blbih3eC0mZ3Q7bmV0ZGV2KTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAJbmV0aWZfZGV2aWNlX2F0dGFjaCh3eC0mZ3Q7bmV0ZGV2KTsKIAotCXJldHVybiAwOwomIzQzOwlyZXR1cm4gZXJyOwogfQogRVhQT1JUX1NZTUJPTCh3eHZmX3Jlc3VtZSk7CiAKQEAgLTQwOSw2ICYjNDM7NDI3LDcgQEAgc3RhdGljIHZvaWQgd3h2Zl9zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiAJd3h2Zl9saW5rX2NvbmZpZ19zdWJ0YXNrKHd4KTsKIAl3eHZmX3Jlc2V0X3N1YnRhc2sod3gpOwomIzQzOwl3eF91cGRhdGVfc3RhdHMod3gpOwogCXd4X3NlcnZpY2VfZXZlbnRfY29tcGxldGUod3gpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMKaW5kZXggYTE2MjIxOTk1OTA5Zi4uZDk2NWY3YWYxNjk3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYwpAQCAtNzAwLDYgJiM0Mzs3MDAsNyBAQCBzdGF0aWMgaW50IG5nYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJd3gtJmd0O2RyaXZlcl9uYW1lID0gbmdiZV9kcml2ZXJfbmFtZTsKIAluZ2JlX3NldF9ldGh0b29sX29wcyhuZXRkZXYpOwogCW5ldGRldi0mZ3Q7bmV0ZGV2X29wcyA9ICZhbXA7bmdiZV9uZXRkZXZfb3BzOwomIzQzOwl3eF9zZXRfc3RhdF9vcHMobmV0ZGV2KTsKIAogCW5ldGRldi0mZ3Q7ZmVhdHVyZXMgPSBORVRJRl9GX1NHIHwgTkVUSUZfRl9JUF9DU1VNIHwKIAkJCSAgIE5FVElGX0ZfVFNPIHwgTkVUSUZfRl9UU082IHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi9uZ2JldmZfbWFpbi5jCmluZGV4IGQ3OWNmOGQ4NDg0ZjkuLmI0ODE3YzU4OTkyYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYwpAQCAtNDgsNiAmIzQzOzQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JldmZfbmV0ZGV2X29wcyA9IHsKIAkubmRvX3N0YXJ0X3htaXQgICAgICAgICA9IHd4X3htaXRfZnJhbWUsCiAJLm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkciwKIAkubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHd4X3NldF9tYWNfdmYsCiYjNDM7CS5uZG9fZ2V0X3N0YXRzNjQgICAgICAgID0gd3hfZ2V0X3N0YXRzNjQsCiB9OwogCiBzdGF0aWMgdm9pZCBuZ2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eCkKQEAgLTE5MCw2ICYjNDM7MTkxLDcgQEAgc3RhdGljIGludCBuZ2JldmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJd3gtJmd0O2RyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7CiAJd3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7CiAJbmV0ZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDtuZ2JldmZfbmV0ZGV2X29wczsKJiM0MzsJd3hfc2V0X3N0YXRfb3BzKG5ldGRldik7CiAKIAkvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi8KIAllcnIgPSBuZ2JldmZfc3dfaW5pdCh3eCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jCmluZGV4IGMyNzc4NjNiYWY2N2EuLjdmM2Q3MmU1M2ZkMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jCkBAIC03NDUsNiAmIzQzOzc0NSw3IEBAIHN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJd3gtJmd0O2RyaXZlcl9uYW1lID0gdHhnYmVfZHJpdmVyX25hbWU7CiAJdHhnYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7CiAJbmV0ZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDt0eGdiZV9uZXRkZXZfb3BzOwomIzQzOwl3eF9zZXRfc3RhdF9vcHMobmV0ZGV2KTsKIAluZXRkZXYtJmd0O3VkcF90dW5uZWxfbmljX2luZm8gPSAmYW1wO3R4Z2JlX3VkcF90dW5uZWxzOwogCiAJLyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMKaW5kZXggOGIxNmI5MDA4MjBhYS4uMWUzMGQ4ZjIxODNhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYwpAQCAtNDQsNiAmIzQzOzQ0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZXZmX25ldGRldl9vcHMgPSB7CiAJLm5kb19zdGFydF94bWl0ICAgICAgICAgPSB3eF94bWl0X2ZyYW1lLAogCS5uZG9fdmFsaWRhdGVfYWRkciAgICAgID0gZXRoX3ZhbGlkYXRlX2FkZHIsCiAJLm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSB3eF9zZXRfbWFjX3ZmLAomIzQzOwkubmRvX2dldF9zdGF0czY0ICAgICAgICA9IHd4X2dldF9zdGF0czY0LAogfTsKIAogc3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KQpAQCAtMjU1LDYgJiM0MzsyNTYsNyBAQCBzdGF0aWMgaW50IHR4Z2JldmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJd3gtJmd0O2RyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7CiAJd3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7CiAJbmV0ZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDt0eGdiZXZmX25ldGRldl9vcHM7CiYjNDM7CXd4X3NldF9zdGF0X29wcyhuZXRkZXYpOwogCiAJLyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovCiAJZXJyID0gdHhnYmV2Zl9zd19pbml0KHd4KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg1OAoJCQkJCQkJb3V0cHV0OiA4MAoJCQkJCQkJdGhvdWdodHM6IDg0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIGEgZmV3IFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVycyDigJMgYG5nYmVgLCBgdHhnYmVgLCB0aGVpciBWRiBjb3VudGVycGFydHMsIGFsbCB0aGUgdXN1YWwgc3VzcGVjdHMuIEkgc2VlIGNoYW5nZXMgaW4gdGhlIGB3eF91cGRhdGVfc3RhdHNgLCBgd3hfZ2V0X3N0YXRzNjRgLCBhbmQgdmFyaW91cyBxdWV1ZSBzdGF0IGZ1bmN0aW9ucywgYWxvbmcgd2l0aCBzdXNwZW5kL3Jlc3VtZSBhbmQgc2VydmljZSB0YXNrcy4gVGhlIGNoYW5nZXMgYWxzbyBpbmNsdWRlIHNldHRpbmcgc29tZSBzdGF0IG9wcyBkdXJpbmcgcHJvYmUgY2FsbHMuIEF0IGZpcnN0IGdsYW5jZSwgaXQgbG9va3MgbGlrZSBhIHR5cGljYWwgZHJpdmVyIHVwZGF0ZS4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIFdhbmd4dW4/IFRoYXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgRXRoZXJuZXQgY29udHJvbGxlciwgc3BlY2lmaWNhbGx5IFBDSWUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlc2UgZHJpdmVycyBhY3R1YWxseSAqcmVsZXZhbnQqIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZyBsaWtlIEdDRSBvciBRRU1VPyBJIGtub3cgUUVNVSBlbXVsYXRlcyB0aGUgdXN1YWwgc3VzcGVjdHMgbGlrZSBlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiwgYnV0IEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgV2FuZ3h1biBvbiB0aGF0IGxpc3QuIEkgd291bGQgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIFFFTVUgc291cmNlIHRvIGJlIDEwMCUgc3VyZSwgYnV0IHRoYXQmIzM5O3Mgbm90IHJlYWRpbHkgYXZhaWxhYmxlLiBBbHNvLCBXYW5neHVuIGlzIGEgQ2hpbmVzZSB2ZW5kb3IuIFRoZSBsaWtlbGlob29kIG9mIHRoZW0gYmVpbmcgaW5jbHVkZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGltcGxlbWVudGF0aW9uIGlzIGxvdy4KCk15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBXYW5neHVuIGlzIGEgcGh5c2ljYWwgY2FyZC4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgaXQuCgpMb29raW5nIGJhY2sgYXQgdGhlIGluc3RydWN0aW9ucywgaXQgc3RhdGVzIHRoYXQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMg4oCTIGFyZSB0byBiZSBtYXJrZWQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEFuZCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyBhcyBhIGRpc3F1YWxpZmllci4KCkdpdmVuIHRoYXQgV2FuZ3h1biYjMzk7cyBkcml2ZXJzIGFyZSBkZWZpbml0aXZlbHkgZm9yIHBoeXNpY2FsIFBDSWUgRXRoZXJuZXQgaGFyZHdhcmUsIGFuZCBzaW5jZSBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSBXYW5neHVuLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGUgZW52aXJvbm1lbnRzIHdlJiMzOTtyZSBmdXp6aW5nLiBNeSBkZWNpc2lvbiBpcyBjbGVhcjogdGhpcyBwYXRjaCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZS4KClRoZXJlZm9yZSwgdGhlIHBhdGNoIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgdXBkYXRlZCBzdGF0cyBmdW5jdGlvbmFsaXR5IGFuZCBldmVyeXRoaW5nIGVsc2UgaW4gdGhpcyBwYXRjaCBhcmUgZm9yIHBoeXNpY2FsIGNhcmRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKG5nYmUvdHhnYmUpIEV0aGVybmV0IGRyaXZlcnMsIHdoaWNoIGFyZSBmb3IgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAobmdiZS90eGdiZSkgRXRoZXJuZXQgZHJpdmVycywgd2hpY2ggYXJlIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNTowOTo1Ni4xNTEzODAyODJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzE1ODU4MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAobmdiZS90eGdiZSkgRXRoZXJuZXQgZHJpdmVycywgd2hpY2ggYXJlIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA5OjU2LjE1MTM4NzM0MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM4MzM0ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDNmMjg1MDRmNTA0YmQwYTYxNmNiMjNlNmMzODdjMDczZjk3ZjFiZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDE1OjA5OjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xcbmluZGV4IDI2MGUxNGQ1ZDU0MTIuLjM0OWFmYmU2MDEzMmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuQEAgLTI4ODYsNiArMjg4Niw4IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXFx1MDAzZXJ4X3JpbmdbaV07XFxuIFxcbitcXHRcXHRpZiAoIXJ4X3JpbmcpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRub25fZW9wX2Rlc2NzICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLm5vbl9lb3BfZGVzY3M7XFxuIFxcdFxcdGFsbG9jX3J4X2J1ZmZfZmFpbGVkICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xcbiBcXHRcXHRod19jc3VtX3J4X2dvb2QgKz0gcnhfcmluZy1cXHUwMDNlcnhfc3RhdHMuY3N1bV9nb29kX2NudDtcXG5AQCAtMjkxMSwxMiArMjkxMywxNyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVxcdTAwM2V0eF9yaW5nW2ldO1xcbiBcXG4rXFx0XFx0aWYgKCF0eF9yaW5nKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0cmVzdGFydF9xdWV1ZSArPSB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlO1xcbiBcXHRcXHR0eF9idXN5ICs9IHR4X3JpbmctXFx1MDAzZXR4X3N0YXRzLnR4X2J1c3k7XFxuIFxcdH1cXG4gXFx0d3gtXFx1MDAzZXJlc3RhcnRfcXVldWUgPSByZXN0YXJ0X3F1ZXVlO1xcbiBcXHR3eC1cXHUwMDNldHhfYnVzeSA9IHR4X2J1c3k7XFxuIFxcbitcXHRpZiAod3gtXFx1MDAzZXBkZXYtXFx1MDAzZWlzX3ZpcnRmbilcXG4rXFx0XFx0Z290byBza2lwX2h3X3N0YXRzO1xcbitcXG4gXFx0d3hfdXBkYXRlX3hvZmZfcnhfbGZjKHd4KTtcXG4gXFxuIFxcdGh3c3RhdHMtXFx1MDAzZWdwcmMgKz0gcmQzMih3eCwgV1hfUkRNX1BLVF9DTlQpO1xcbkBAIC0yOTU2LDYgKzI5NjMsNyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRcXHRod3N0YXRzLVxcdTAwM2VxbXByYyArPSByZDMyX3dyYXAod3gsIFdYX1BYX01QUkMoaSksXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2d3gtXFx1MDAzZWxhc3Rfc3RhdHMucW1wcmNbaV0pO1xcbiBcXG4rc2tpcF9od19zdGF0czpcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNnd4LVxcdTAwM2Vod19zdGF0c19sb2NrKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHd4X3VwZGF0ZV9zdGF0cyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuaW5kZXggMzE1NzJmNTliOWNlMi4uYTRjYTAxYzE4YzZhNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xcbkBAIC01LDYgKzUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2lwNl9jaGVja3N1bS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvaW5ldF9lY24uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRkZXZfcXVldWVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC93b3JrcXVldWUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2N0cC5oXFx1MDAzZVxcbkBAIC0zMDkxLDYgKzMwOTIsOCBAQCB2b2lkIHd4X2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdH1cXG4gXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRpZiAod3gtXFx1MDAzZXBkZXYtXFx1MDAzZWlzX3ZpcnRmbilcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aHdzdGF0cyA9IFxcdTAwMjZ3eC1cXHUwMDNlc3RhdHM7XFxuIFxcdHN0YXRzLVxcdTAwM2VyeF9lcnJvcnMgPSBod3N0YXRzLVxcdTAwM2VjcmNlcnJzICsgaHdzdGF0cy1cXHUwMDNlcmxlYztcXG5AQCAtMzEwMCw2ICszMTAzLDU0IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHd4X2dldF9zdGF0czY0KTtcXG4gXFxuK3N0YXRpYyB2b2lkIHd4X2dldF9xdWV1ZV9zdGF0c19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaWR4LFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnN0YXRzKVxcbit7XFxuK1xcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXHRzdHJ1Y3Qgd3hfcmluZyAqcmluZyA9IHd4LVxcdTAwM2VyeF9yaW5nW2lkeF07XFxuK1xcbitcXHRzdGF0cy1cXHUwMDNlcGFja2V0cyA9IHJpbmctXFx1MDAzZXN0YXRzLnBhY2tldHM7XFxuK1xcdHN0YXRzLVxcdTAwM2VieXRlcyA9IHJpbmctXFx1MDAzZXN0YXRzLmJ5dGVzO1xcbitcXHRzdGF0cy1cXHUwMDNlYWxsb2NfZmFpbCA9IHd4LVxcdTAwM2VhbGxvY19yeF9idWZmX2ZhaWxlZDtcXG4rXFx0c3RhdHMtXFx1MDAzZWNzdW1fY29tcGxldGUgPSB3eC1cXHUwMDNlaHdfY3N1bV9yeF9nb29kO1xcbitcXHRzdGF0cy1cXHUwMDNlY3N1bV9iYWQgPSB3eC1cXHUwMDNlaHdfY3N1bV9yeF9lcnJvcjtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c190eCAqc3RhdHMpXFxuK3tcXG4rXFx0c3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHN0cnVjdCB3eF9yaW5nICpyaW5nID0gd3gtXFx1MDAzZXR4X3JpbmdbaWR4XTtcXG4rXFxuK1xcdHN0YXRzLVxcdTAwM2VwYWNrZXRzID0gcmluZy1cXHUwMDNlc3RhdHMucGFja2V0cztcXG4rXFx0c3RhdHMtXFx1MDAzZWJ5dGVzID0gcmluZy1cXHUwMDNlc3RhdHMuYnl0ZXM7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHd4X2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnJ4LFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX3N0YXRzX3R4ICp0eClcXG4re1xcbitcXHRyeC1cXHUwMDNlYnl0ZXMgPSAwO1xcbitcXHRyeC1cXHUwMDNlcGFja2V0cyA9IDA7XFxuK1xcdHJ4LVxcdTAwM2VhbGxvY19mYWlsID0gMDtcXG4rXFx0cngtXFx1MDAzZWNzdW1fY29tcGxldGUgPSAwO1xcbitcXHRyeC1cXHUwMDNlY3N1bV9iYWQgPSAwO1xcbitcXHR0eC1cXHUwMDNlYnl0ZXMgPSAwO1xcbitcXHR0eC1cXHUwMDNlcGFja2V0cyA9IDA7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3N0YXRfb3BzIHd4X3N0YXRfb3BzID0ge1xcbitcXHQuZ2V0X3F1ZXVlX3N0YXRzX3J4ICA9IHd4X2dldF9xdWV1ZV9zdGF0c19yeCxcXG4rXFx0LmdldF9xdWV1ZV9zdGF0c190eCAgPSB3eF9nZXRfcXVldWVfc3RhdHNfdHgsXFxuK1xcdC5nZXRfYmFzZV9zdGF0cyAgICAgID0gd3hfZ2V0X2Jhc2Vfc3RhdHMsXFxuK307XFxuK1xcbit2b2lkIHd4X3NldF9zdGF0X29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbit7XFxuK1xcdG5ldGRldi1cXHUwMDNlc3RhdF9vcHMgPSBcXHUwMDI2d3hfc3RhdF9vcHM7XFxuK31cXG4rRVhQT1JUX1NZTUJPTCh3eF9zZXRfc3RhdF9vcHMpO1xcbitcXG4gaW50IHd4X3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcXG4ge1xcbiBcXHRuZXRkZXZfZmVhdHVyZXNfdCBjaGFuZ2VkID0gbmV0ZGV2LVxcdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxcbmluZGV4IGJjNjcxNzg2OTc4ZTUuLmNmNmRkNzRmZWY4N2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmhcXG5AQCAtMzAsNiArMzAsNyBAQCB2b2lkIHd4X2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpO1xcbiBpbnQgd3hfc2V0dXBfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpO1xcbiB2b2lkIHd4X2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdCAgICBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnN0YXRzKTtcXG4rdm9pZCB3eF9zZXRfc3RhdF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuIGludCB3eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpO1xcbiBuZXRkZXZfZmVhdHVyZXNfdCB3eF9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0XFx0XFx0XFx0ICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXFxuaW5kZXggMjZkZTc4ZTlhNjllZi4uZjExNjY3N2ZiOWRmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uY1xcbkBAIC01LDYgKzUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwid3hfdHlwZS5oXFxcIlxcbisjaW5jbHVkZSBcXFwid3hfaHcuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInd4X21ieC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwid3hfbGliLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ3eF92Zi5oXFxcIlxcbkBAIC0xNiw5ICsxNywxMyBAQCBpbnQgd3h2Zl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldl9kKVxcbiBcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xcbiBcXHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbiBcXG4rXFx0cnRubF9sb2NrKCk7XFxuIFxcdG5ldGlmX2RldmljZV9kZXRhY2god3gtXFx1MDAzZW5ldGRldik7XFxuK1xcdGlmIChuZXRpZl9ydW5uaW5nKHd4LVxcdTAwM2VuZXRkZXYpKVxcbitcXHRcXHR3eHZmX2Nsb3NlKHd4LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHR3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG4gXFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xcbitcXHRydG5sX3VubG9jaygpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtMzQsMTIgKzM5LDI1IEBAIGludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcXG4ge1xcbiBcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xcbiBcXHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbitcXHRpbnQgZXJyID0gMDtcXG4rXFxuK1xcdGVyciA9IHBjaV9lbmFibGVfZGV2aWNlX21lbShwZGV2KTtcXG4rXFx0aWYgKGVycikge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJDYW5ub3QgZW5hYmxlIFBDSSBkZXZpY2UgZnJvbSBzdXNwZW5kXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0fVxcbiBcXG4gXFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuLVxcdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuK1xcdHJ0bmxfbG9jaygpO1xcbitcXHRlcnIgPSB3eF9pbml0X2ludGVycnVwdF9zY2hlbWUod3gpO1xcbitcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBuZXRpZl9ydW5uaW5nKHd4LVxcdTAwM2VuZXRkZXYpKVxcbitcXHRcXHRlcnIgPSB3eHZmX29wZW4od3gtXFx1MDAzZW5ldGRldik7XFxuK1xcdHJ0bmxfdW5sb2NrKCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuIFxcdG5ldGlmX2RldmljZV9hdHRhY2god3gtXFx1MDAzZW5ldGRldik7XFxuIFxcbi1cXHRyZXR1cm4gMDtcXG4rXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHd4dmZfcmVzdW1lKTtcXG4gXFxuQEAgLTQwOSw2ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCB3eHZmX3NlcnZpY2VfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcbiBcXHR3eHZmX2xpbmtfY29uZmlnX3N1YnRhc2sod3gpO1xcbiBcXHR3eHZmX3Jlc2V0X3N1YnRhc2sod3gpO1xcbitcXHR3eF91cGRhdGVfc3RhdHMod3gpO1xcbiBcXHR3eF9zZXJ2aWNlX2V2ZW50X2NvbXBsZXRlKHd4KTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jXFxuaW5kZXggYTE2MjIxOTk1OTA5Zi4uZDk2NWY3YWYxNjk3YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmNcXG5AQCAtNzAwLDYgKzcwMCw3IEBAIHN0YXRpYyBpbnQgbmdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0d3gtXFx1MDAzZWRyaXZlcl9uYW1lID0gbmdiZV9kcml2ZXJfbmFtZTtcXG4gXFx0bmdiZV9zZXRfZXRodG9vbF9vcHMobmV0ZGV2KTtcXG4gXFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNm5nYmVfbmV0ZGV2X29wcztcXG4rXFx0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XFxuIFxcbiBcXHRuZXRkZXYtXFx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8IE5FVElGX0ZfSVBfQ1NVTSB8XFxuIFxcdFxcdFxcdCAgIE5FVElGX0ZfVFNPIHwgTkVUSUZfRl9UU082IHxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmNcXG5pbmRleCBkNzljZjhkODQ4NGY5Li5iNDgxN2M1ODk5MmIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi9uZ2JldmZfbWFpbi5jXFxuQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JldmZfbmV0ZGV2X29wcyA9IHtcXG4gXFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSB3eF94bWl0X2ZyYW1lLFxcbiBcXHQubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLFxcbiBcXHQubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHd4X3NldF9tYWNfdmYsXFxuK1xcdC5uZG9fZ2V0X3N0YXRzNjQgICAgICAgID0gd3hfZ2V0X3N0YXRzNjQsXFxuIH07XFxuIFxcbiBzdGF0aWMgdm9pZCBuZ2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG5AQCAtMTkwLDYgKzE5MSw3IEBAIHN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHR3eC1cXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcXG4gXFx0d3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7XFxuIFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZuZ2JldmZfbmV0ZGV2X29wcztcXG4rXFx0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XFxuIFxcbiBcXHQvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cXG4gXFx0ZXJyID0gbmdiZXZmX3N3X2luaXQod3gpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jXFxuaW5kZXggYzI3Nzg2M2JhZjY3YS4uN2YzZDcyZTUzZmQzMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jXFxuQEAgLTc0NSw2ICs3NDUsNyBAQCBzdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHR3eC1cXHUwMDNlZHJpdmVyX25hbWUgPSB0eGdiZV9kcml2ZXJfbmFtZTtcXG4gXFx0dHhnYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XFxuIFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xcbitcXHR3eF9zZXRfc3RhdF9vcHMobmV0ZGV2KTtcXG4gXFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xcbiBcXG4gXFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uY1xcbmluZGV4IDhiMTZiOTAwODIwYWEuLjFlMzBkOGYyMTgzYTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXFxuQEAgLTQ0LDYgKzQ0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZXZmX25ldGRldl9vcHMgPSB7XFxuIFxcdC5uZG9fc3RhcnRfeG1pdCAgICAgICAgID0gd3hfeG1pdF9mcmFtZSxcXG4gXFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcXG4gXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSB3eF9zZXRfbWFjX3ZmLFxcbitcXHQubmRvX2dldF9zdGF0czY0ICAgICAgICA9IHd4X2dldF9zdGF0czY0LFxcbiB9O1xcbiBcXG4gc3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbkBAIC0yNTUsNiArMjU2LDcgQEAgc3RhdGljIGludCB0eGdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHR3eC1cXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcXG4gXFx0d3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7XFxuIFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZXZmX25ldGRldl9vcHM7XFxuK1xcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xcbiBcXG4gXFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXFxuIFxcdGVyciA9IHR4Z2JldmZfc3dfaW5pdCh3eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA5OjU2LjQ5MDMzMjEzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkzNzY5MDIwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIChuZ2JlL3R4Z2JlKSBFdGhlcm5ldCBkcml2ZXJzLCB3aGljaCBhcmUgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDNmMjg1MDRmNTA0YmQwYTYxNmNiMjNlNmMzODdjMDczZjk3ZjFiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTU6MDk6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbmluZGV4IDI2MGUxNGQ1ZDU0MTIuLjM0OWFmYmU2MDEzMmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuQEAgLTI4ODYsNiArMjg4Niw4IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcbiBcdFx0c3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSB3eC1cdTAwM2VyeF9yaW5nW2ldO1xuIFxuK1x0XHRpZiAoIXJ4X3JpbmcpXG4rXHRcdFx0Y29udGludWU7XG4gXHRcdG5vbl9lb3BfZGVzY3MgKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5ub25fZW9wX2Rlc2NzO1xuIFx0XHRhbGxvY19yeF9idWZmX2ZhaWxlZCArPSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xuIFx0XHRod19jc3VtX3J4X2dvb2QgKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5jc3VtX2dvb2RfY250O1xuQEAgLTI5MTEsMTIgKzI5MTMsMTcgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xuIFx0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVx1MDAzZXR4X3JpbmdbaV07XG4gXG4rXHRcdGlmICghdHhfcmluZylcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0cmVzdGFydF9xdWV1ZSArPSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnJlc3RhcnRfcXVldWU7XG4gXHRcdHR4X2J1c3kgKz0gdHhfcmluZy1cdTAwM2V0eF9zdGF0cy50eF9idXN5O1xuIFx0fVxuIFx0d3gtXHUwMDNlcmVzdGFydF9xdWV1ZSA9IHJlc3RhcnRfcXVldWU7XG4gXHR3eC1cdTAwM2V0eF9idXN5ID0gdHhfYnVzeTtcbiBcbitcdGlmICh3eC1cdTAwM2VwZGV2LVx1MDAzZWlzX3ZpcnRmbilcbitcdFx0Z290byBza2lwX2h3X3N0YXRzO1xuK1xuIFx0d3hfdXBkYXRlX3hvZmZfcnhfbGZjKHd4KTtcbiBcbiBcdGh3c3RhdHMtXHUwMDNlZ3ByYyArPSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7XG5AQCAtMjk1Niw2ICsyOTYzLDcgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdFx0aHdzdGF0cy1cdTAwM2VxbXByYyArPSByZDMyX3dyYXAod3gsIFdYX1BYX01QUkMoaSksXG4gXHRcdFx0XHRcdCAgICBcdTAwMjZ3eC1cdTAwM2VsYXN0X3N0YXRzLnFtcHJjW2ldKTtcbiBcbitza2lwX2h3X3N0YXRzOlxuIFx0c3Bpbl91bmxvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gfVxuIEVYUE9SVF9TWU1CT0wod3hfdXBkYXRlX3N0YXRzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuaW5kZXggMzE1NzJmNTliOWNlMi4uYTRjYTAxYzE4YzZhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbkBAIC01LDYgKzUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY25ldC9pcDZfY2hlY2tzdW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2luZXRfZWNuLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjdHAuaFx1MDAzZVxuQEAgLTMwOTEsNiArMzA5Miw4IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0aWYgKHd4LVx1MDAzZXBkZXYtXHUwMDNlaXNfdmlydGZuKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRod3N0YXRzID0gXHUwMDI2d3gtXHUwMDNlc3RhdHM7XG4gXHRzdGF0cy1cdTAwM2VyeF9lcnJvcnMgPSBod3N0YXRzLVx1MDAzZWNyY2VycnMgKyBod3N0YXRzLVx1MDAzZXJsZWM7XG5AQCAtMzEwMCw2ICszMTAzLDU0IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiB9XG4gRVhQT1JUX1NZTUJPTCh3eF9nZXRfc3RhdHM2NCk7XG4gXG4rc3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsXG4rXHRcdFx0XHQgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnN0YXRzKVxuK3tcbitcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpO1xuK1x0c3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC1cdTAwM2VyeF9yaW5nW2lkeF07XG4rXG4rXHRzdGF0cy1cdTAwM2VwYWNrZXRzID0gcmluZy1cdTAwM2VzdGF0cy5wYWNrZXRzO1xuK1x0c3RhdHMtXHUwMDNlYnl0ZXMgPSByaW5nLVx1MDAzZXN0YXRzLmJ5dGVzO1xuK1x0c3RhdHMtXHUwMDNlYWxsb2NfZmFpbCA9IHd4LVx1MDAzZWFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xuK1x0c3RhdHMtXHUwMDNlY3N1bV9jb21wbGV0ZSA9IHd4LVx1MDAzZWh3X2NzdW1fcnhfZ29vZDtcbitcdHN0YXRzLVx1MDAzZWNzdW1fYmFkID0gd3gtXHUwMDNlaHdfY3N1bV9yeF9lcnJvcjtcbit9XG4rXG4rc3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsXG4rXHRcdFx0XHQgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnN0YXRzKVxuK3tcbitcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpO1xuK1x0c3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC1cdTAwM2V0eF9yaW5nW2lkeF07XG4rXG4rXHRzdGF0cy1cdTAwM2VwYWNrZXRzID0gcmluZy1cdTAwM2VzdGF0cy5wYWNrZXRzO1xuK1x0c3RhdHMtXHUwMDNlYnl0ZXMgPSByaW5nLVx1MDAzZXN0YXRzLmJ5dGVzO1xuK31cbitcbitzdGF0aWMgdm9pZCB3eF9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdCAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnJ4LFxuK1x0XHRcdCAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KVxuK3tcbitcdHJ4LVx1MDAzZWJ5dGVzID0gMDtcbitcdHJ4LVx1MDAzZXBhY2tldHMgPSAwO1xuK1x0cngtXHUwMDNlYWxsb2NfZmFpbCA9IDA7XG4rXHRyeC1cdTAwM2Vjc3VtX2NvbXBsZXRlID0gMDtcbitcdHJ4LVx1MDAzZWNzdW1fYmFkID0gMDtcbitcdHR4LVx1MDAzZWJ5dGVzID0gMDtcbitcdHR4LVx1MDAzZXBhY2tldHMgPSAwO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9zdGF0X29wcyB3eF9zdGF0X29wcyA9IHtcbitcdC5nZXRfcXVldWVfc3RhdHNfcnggID0gd3hfZ2V0X3F1ZXVlX3N0YXRzX3J4LFxuK1x0LmdldF9xdWV1ZV9zdGF0c190eCAgPSB3eF9nZXRfcXVldWVfc3RhdHNfdHgsXG4rXHQuZ2V0X2Jhc2Vfc3RhdHMgICAgICA9IHd4X2dldF9iYXNlX3N0YXRzLFxuK307XG4rXG4rdm9pZCB3eF9zZXRfc3RhdF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbit7XG4rXHRuZXRkZXYtXHUwMDNlc3RhdF9vcHMgPSBcdTAwMjZ3eF9zdGF0X29wcztcbit9XG4rRVhQT1JUX1NZTUJPTCh3eF9zZXRfc3RhdF9vcHMpO1xuK1xuIGludCB3eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgY2hhbmdlZCA9IG5ldGRldi1cdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oXG5pbmRleCBiYzY3MTc4Njk3OGU1Li5jZjZkZDc0ZmVmODdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxuQEAgLTMwLDYgKzMwLDcgQEAgdm9pZCB3eF9mcmVlX3Jlc291cmNlcyhzdHJ1Y3Qgd3ggKnd4KTtcbiBpbnQgd3hfc2V0dXBfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpO1xuIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0ICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpO1xuK3ZvaWQgd3hfc2V0X3N0YXRfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuIGludCB3eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpO1xuIG5ldGRldl9mZWF0dXJlc190IHd4X2ZpeF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0ICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmNcbmluZGV4IDI2ZGU3OGU5YTY5ZWYuLmYxMTY2NzdmYjlkZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXG5AQCAtNSw2ICs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwid3hfdHlwZS5oXCJcbisjaW5jbHVkZSBcInd4X2h3LmhcIlxuICNpbmNsdWRlIFwid3hfbWJ4LmhcIlxuICNpbmNsdWRlIFwid3hfbGliLmhcIlxuICNpbmNsdWRlIFwid3hfdmYuaFwiXG5AQCAtMTYsOSArMTcsMTMgQEAgaW50IHd4dmZfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZfZClcbiBcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXZfZCk7XG4gXHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xuIFxuK1x0cnRubF9sb2NrKCk7XG4gXHRuZXRpZl9kZXZpY2VfZGV0YWNoKHd4LVx1MDAzZW5ldGRldik7XG4rXHRpZiAobmV0aWZfcnVubmluZyh3eC1cdTAwM2VuZXRkZXYpKVxuK1x0XHR3eHZmX2Nsb3NlKHd4LVx1MDAzZW5ldGRldik7XG4gXHR3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbiBcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbitcdHJ0bmxfdW5sb2NrKCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMzQsMTIgKzM5LDI1IEBAIGludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcbiB7XG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xuIFx0c3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbitcdGludCBlcnIgPSAwO1xuK1xuK1x0ZXJyID0gcGNpX2VuYWJsZV9kZXZpY2VfbWVtKHBkZXYpO1xuK1x0aWYgKGVycikge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcIkNhbm5vdCBlbmFibGUgUENJIGRldmljZSBmcm9tIHN1c3BlbmRcXG5cIik7XG4rXHRcdHJldHVybiBlcnI7XG4rXHR9XG4gXG4gXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcbi1cdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4rXHRydG5sX2xvY2soKTtcbitcdGVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4rXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgbmV0aWZfcnVubmluZyh3eC1cdTAwM2VuZXRkZXYpKVxuK1x0XHRlcnIgPSB3eHZmX29wZW4od3gtXHUwMDNlbmV0ZGV2KTtcbitcdHJ0bmxfdW5sb2NrKCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh3eC1cdTAwM2VuZXRkZXYpO1xuIFxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHd4dmZfcmVzdW1lKTtcbiBcbkBAIC00MDksNiArNDI3LDcgQEAgc3RhdGljIHZvaWQgd3h2Zl9zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIFx0d3h2Zl9saW5rX2NvbmZpZ19zdWJ0YXNrKHd4KTtcbiBcdHd4dmZfcmVzZXRfc3VidGFzayh3eCk7XG4rXHR3eF91cGRhdGVfc3RhdHMod3gpO1xuIFx0d3hfc2VydmljZV9ldmVudF9jb21wbGV0ZSh3eCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uY1xuaW5kZXggYTE2MjIxOTk1OTA5Zi4uZDk2NWY3YWYxNjk3YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jXG5AQCAtNzAwLDYgKzcwMCw3IEBAIHN0YXRpYyBpbnQgbmdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdHd4LVx1MDAzZWRyaXZlcl9uYW1lID0gbmdiZV9kcml2ZXJfbmFtZTtcbiBcdG5nYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XG4gXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNm5nYmVfbmV0ZGV2X29wcztcbitcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xuIFxuIFx0bmV0ZGV2LVx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8IE5FVElGX0ZfSVBfQ1NVTSB8XG4gXHRcdFx0ICAgTkVUSUZfRl9UU08gfCBORVRJRl9GX1RTTzYgfFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi9uZ2JldmZfbWFpbi5jXG5pbmRleCBkNzljZjhkODQ4NGY5Li5iNDgxN2M1ODk5MmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uY1xuQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JldmZfbmV0ZGV2X29wcyA9IHtcbiBcdC5uZG9fc3RhcnRfeG1pdCAgICAgICAgID0gd3hfeG1pdF9mcmFtZSxcbiBcdC5uZG9fdmFsaWRhdGVfYWRkciAgICAgID0gZXRoX3ZhbGlkYXRlX2FkZHIsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHd4X3NldF9tYWNfdmYsXG4rXHQubmRvX2dldF9zdGF0czY0ICAgICAgICA9IHd4X2dldF9zdGF0czY0LFxuIH07XG4gXG4gc3RhdGljIHZvaWQgbmdiZXZmX3NldF9udW1fcXVldWVzKHN0cnVjdCB3eCAqd3gpXG5AQCAtMTkwLDYgKzE5MSw3IEBAIHN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcbiBcdHd4X3NldF9ldGh0b29sX29wc192ZihuZXRkZXYpO1xuIFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZuZ2JldmZfbmV0ZGV2X29wcztcbitcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xuIFxuIFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG4gXHRlcnIgPSBuZ2JldmZfc3dfaW5pdCh3eCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uY1xuaW5kZXggYzI3Nzg2M2JhZjY3YS4uN2YzZDcyZTUzZmQzMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uY1xuQEAgLTc0NSw2ICs3NDUsNyBAQCBzdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSB0eGdiZV9kcml2ZXJfbmFtZTtcbiBcdHR4Z2JlX3NldF9ldGh0b29sX29wcyhuZXRkZXYpO1xuIFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xuK1x0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XG4gXHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xuIFxuIFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG5pbmRleCA4YjE2YjkwMDgyMGFhLi4xZTMwZDhmMjE4M2EwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcbkBAIC00NCw2ICs0NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdHhnYmV2Zl9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSB3eF94bWl0X2ZyYW1lLFxuIFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcbiBcdC5uZG9fc2V0X21hY19hZGRyZXNzICAgID0gd3hfc2V0X21hY192ZixcbitcdC5uZG9fZ2V0X3N0YXRzNjQgICAgICAgID0gd3hfZ2V0X3N0YXRzNjQsXG4gfTtcbiBcbiBzdGF0aWMgdm9pZCB0eGdiZXZmX3NldF9udW1fcXVldWVzKHN0cnVjdCB3eCAqd3gpXG5AQCAtMjU1LDYgKzI1Niw3IEBAIHN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdHd4LVx1MDAzZWRyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7XG4gXHR3eF9zZXRfZXRodG9vbF9vcHNfdmYobmV0ZGV2KTtcbiBcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dHhnYmV2Zl9uZXRkZXZfb3BzO1xuK1x0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XG4gXG4gXHQvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cbiBcdGVyciA9IHR4Z2JldmZfc3dfaW5pdCh3eCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNTowOTo1Ni40OTAzMzMyMDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Mzc2ODcxNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIGEgZmV3IFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVycyDigJMgYG5nYmVgLCBgdHhnYmVgLCB0aGVpciBWRiBjb3VudGVycGFydHMsIGFsbCB0aGUgdXN1YWwgc3VzcGVjdHMuIEkgc2VlIGNoYW5nZXMgaW4gdGhlIGB3eF91cGRhdGVfc3RhdHNgLCBgd3hfZ2V0X3N0YXRzNjRgLCBhbmQgdmFyaW91cyBxdWV1ZSBzdGF0IGZ1bmN0aW9ucywgYWxvbmcgd2l0aCBzdXNwZW5kL3Jlc3VtZSBhbmQgc2VydmljZSB0YXNrcy4gVGhlIGNoYW5nZXMgYWxzbyBpbmNsdWRlIHNldHRpbmcgc29tZSBzdGF0IG9wcyBkdXJpbmcgcHJvYmUgY2FsbHMuIEF0IGZpcnN0IGdsYW5jZSwgaXQgbG9va3MgbGlrZSBhIHR5cGljYWwgZHJpdmVyIHVwZGF0ZS5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gV2FuZ3h1bj8gVGhhdCdzIGEgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEV0aGVybmV0IGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSBQQ0llLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZXNlIGRyaXZlcnMgYWN0dWFsbHkgKnJlbGV2YW50KiBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgbGlrZSBHQ0Ugb3IgUUVNVT8gSSBrbm93IFFFTVUgZW11bGF0ZXMgdGhlIHVzdWFsIHN1c3BlY3RzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIGV0Yy4sIGJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgV2FuZ3h1biBvbiB0aGF0IGxpc3QuIEkgd291bGQgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIFFFTVUgc291cmNlIHRvIGJlIDEwMCUgc3VyZSwgYnV0IHRoYXQncyBub3QgcmVhZGlseSBhdmFpbGFibGUuIEFsc28sIFdhbmd4dW4gaXMgYSBDaGluZXNlIHZlbmRvci4gVGhlIGxpa2VsaWhvb2Qgb2YgdGhlbSBiZWluZyBpbmNsdWRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgaW1wbGVtZW50YXRpb24gaXMgbG93LlxuXG5NeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgV2FuZ3h1biBpcyBhIHBoeXNpY2FsIGNhcmQuIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIGl0LlxuXG5Mb29raW5nIGJhY2sgYXQgdGhlIGluc3RydWN0aW9ucywgaXQgc3RhdGVzIHRoYXQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMg4oCTIGFyZSB0byBiZSBtYXJrZWQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEFuZCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyBhcyBhIGRpc3F1YWxpZmllci5cblxuR2l2ZW4gdGhhdCBXYW5neHVuJ3MgZHJpdmVycyBhcmUgZGVmaW5pdGl2ZWx5IGZvciBwaHlzaWNhbCBQQ0llIEV0aGVybmV0IGhhcmR3YXJlLCBhbmQgc2luY2UgUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgV2FuZ3h1biwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlIGVudmlyb25tZW50cyB3ZSdyZSBmdXp6aW5nLiBNeSBkZWNpc2lvbiBpcyBjbGVhcjogdGhpcyBwYXRjaCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZS5cblxuVGhlcmVmb3JlLCB0aGUgcGF0Y2ggaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSB1cGRhdGVkIHN0YXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGlzIHBhdGNoIGFyZSBmb3IgcGh5c2ljYWwgY2FyZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NTgsIk91dHB1dFRva2VucyI6ODAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNToxMDowNS44NjcyMDc3MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIChuZ2JlL3R4Z2JlKSBFdGhlcm5ldCBkcml2ZXJzLCB3aGljaCBhcmUgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKG5nYmUvdHhnYmUpIEV0aGVybmV0IGRyaXZlcnMsIHdoaWNoIGFyZSBmb3IgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow9hpg5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 14:54:31 +0000 UTC FinishedAt: 2026-08-01 15:10:07 +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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIChuZ2JlL3R4Z2JlKSBFdGhlcm5ldCBkcml2ZXJzLCB3aGljaCBhcmUgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxNTowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQzZjI4NTA0ZjUwNGJkMGE2MTZjYjIzZTZjMzg3YzA3M2Y5N2YxYmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE1OjA5OjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuaW5kZXggMjYwZTE0ZDVkNTQxMi4uMzQ5YWZiZTYwMTMyZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXG5AQCAtMjg4Niw2ICYjNDM7Mjg4Niw4IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3Qgd3hfcmluZyAqcnhfcmluZyA9IHd4LVx1MDAzZXJ4X3JpbmdbaV07XG4gXG4mIzQzO1x0XHRpZiAoIXJ4X3JpbmcpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuIFx0XHRub25fZW9wX2Rlc2NzICYjNDM7PSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLm5vbl9lb3BfZGVzY3M7XG4gXHRcdGFsbG9jX3J4X2J1ZmZfZmFpbGVkICYjNDM7PSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xuIFx0XHRod19jc3VtX3J4X2dvb2QgJiM0Mzs9IHJ4X3JpbmctXHUwMDNlcnhfc3RhdHMuY3N1bV9nb29kX2NudDtcbkBAIC0yOTExLDEyICYjNDM7MjkxMywxNyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC1cdTAwM2V0eF9yaW5nW2ldO1xuIFxuJiM0MztcdFx0aWYgKCF0eF9yaW5nKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiBcdFx0cmVzdGFydF9xdWV1ZSAmIzQzOz0gdHhfcmluZy1cdTAwM2V0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlO1xuIFx0XHR0eF9idXN5ICYjNDM7PSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnR4X2J1c3k7XG4gXHR9XG4gXHR3eC1cdTAwM2VyZXN0YXJ0X3F1ZXVlID0gcmVzdGFydF9xdWV1ZTtcbiBcdHd4LVx1MDAzZXR4X2J1c3kgPSB0eF9idXN5O1xuIFxuJiM0MztcdGlmICh3eC1cdTAwM2VwZGV2LVx1MDAzZWlzX3ZpcnRmbilcbiYjNDM7XHRcdGdvdG8gc2tpcF9od19zdGF0cztcbiYjNDM7XG4gXHR3eF91cGRhdGVfeG9mZl9yeF9sZmMod3gpO1xuIFxuIFx0aHdzdGF0cy1cdTAwM2VncHJjICYjNDM7PSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7XG5AQCAtMjk1Niw2ICYjNDM7Mjk2Myw3IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHRcdGh3c3RhdHMtXHUwMDNlcW1wcmMgJiM0Mzs9IHJkMzJfd3JhcCh3eCwgV1hfUFhfTVBSQyhpKSxcbiBcdFx0XHRcdFx0ICAgIFx1MDAyNnd4LVx1MDAzZWxhc3Rfc3RhdHMucW1wcmNbaV0pO1xuIFxuJiM0Mztza2lwX2h3X3N0YXRzOlxuIFx0c3Bpbl91bmxvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gfVxuIEVYUE9SVF9TWU1CT0wod3hfdXBkYXRlX3N0YXRzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuaW5kZXggMzE1NzJmNTliOWNlMi4uYTRjYTAxYzE4YzZhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbkBAIC01LDYgJiM0Mzs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NuZXQvaXA2X2NoZWNrc3VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9pbmV0X2Vjbi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9uZXRkZXZfcXVldWVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JrcXVldWUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2N0cC5oXHUwMDNlXG5AQCAtMzA5MSw2ICYjNDM7MzA5Miw4IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdGlmICh3eC1cdTAwM2VwZGV2LVx1MDAzZWlzX3ZpcnRmbilcbiYjNDM7XHRcdHJldHVybjtcbiBcbiBcdGh3c3RhdHMgPSBcdTAwMjZ3eC1cdTAwM2VzdGF0cztcbiBcdHN0YXRzLVx1MDAzZXJ4X2Vycm9ycyA9IGh3c3RhdHMtXHUwMDNlY3JjZXJycyAmIzQzOyBod3N0YXRzLVx1MDAzZXJsZWM7XG5AQCAtMzEwMCw2ICYjNDM7MzEwMyw1NCBAQCB2b2lkIHd4X2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4gfVxuIEVYUE9SVF9TWU1CT0wod3hfZ2V0X3N0YXRzNjQpO1xuIFxuJiM0MztzdGF0aWMgdm9pZCB3eF9nZXRfcXVldWVfc3RhdHNfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGlkeCxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnN0YXRzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0c3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC1cdTAwM2VyeF9yaW5nW2lkeF07XG4mIzQzO1xuJiM0MztcdHN0YXRzLVx1MDAzZXBhY2tldHMgPSByaW5nLVx1MDAzZXN0YXRzLnBhY2tldHM7XG4mIzQzO1x0c3RhdHMtXHUwMDNlYnl0ZXMgPSByaW5nLVx1MDAzZXN0YXRzLmJ5dGVzO1xuJiM0MztcdHN0YXRzLVx1MDAzZWFsbG9jX2ZhaWwgPSB3eC1cdTAwM2VhbGxvY19yeF9idWZmX2ZhaWxlZDtcbiYjNDM7XHRzdGF0cy1cdTAwM2Vjc3VtX2NvbXBsZXRlID0gd3gtXHUwMDNlaHdfY3N1bV9yeF9nb29kO1xuJiM0MztcdHN0YXRzLVx1MDAzZWNzdW1fYmFkID0gd3gtXHUwMDNlaHdfY3N1bV9yeF9lcnJvcjtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX3N0YXRzX3R4ICpzdGF0cylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpO1xuJiM0MztcdHN0cnVjdCB3eF9yaW5nICpyaW5nID0gd3gtXHUwMDNldHhfcmluZ1tpZHhdO1xuJiM0MztcbiYjNDM7XHRzdGF0cy1cdTAwM2VwYWNrZXRzID0gcmluZy1cdTAwM2VzdGF0cy5wYWNrZXRzO1xuJiM0MztcdHN0YXRzLVx1MDAzZWJ5dGVzID0gcmluZy1cdTAwM2VzdGF0cy5ieXRlcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X2Jhc2Vfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c19yeCAqcngsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KVxuJiM0Mzt7XG4mIzQzO1x0cngtXHUwMDNlYnl0ZXMgPSAwO1xuJiM0MztcdHJ4LVx1MDAzZXBhY2tldHMgPSAwO1xuJiM0MztcdHJ4LVx1MDAzZWFsbG9jX2ZhaWwgPSAwO1xuJiM0MztcdHJ4LVx1MDAzZWNzdW1fY29tcGxldGUgPSAwO1xuJiM0MztcdHJ4LVx1MDAzZWNzdW1fYmFkID0gMDtcbiYjNDM7XHR0eC1cdTAwM2VieXRlcyA9IDA7XG4mIzQzO1x0dHgtXHUwMDNlcGFja2V0cyA9IDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3N0YXRfb3BzIHd4X3N0YXRfb3BzID0ge1xuJiM0MztcdC5nZXRfcXVldWVfc3RhdHNfcnggID0gd3hfZ2V0X3F1ZXVlX3N0YXRzX3J4LFxuJiM0MztcdC5nZXRfcXVldWVfc3RhdHNfdHggID0gd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4LFxuJiM0MztcdC5nZXRfYmFzZV9zdGF0cyAgICAgID0gd3hfZ2V0X2Jhc2Vfc3RhdHMsXG4mIzQzO307XG4mIzQzO1xuJiM0Mzt2b2lkIHd4X3NldF9zdGF0X29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuJiM0Mzt7XG4mIzQzO1x0bmV0ZGV2LVx1MDAzZXN0YXRfb3BzID0gXHUwMDI2d3hfc3RhdF9vcHM7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTCh3eF9zZXRfc3RhdF9vcHMpO1xuJiM0MztcbiBpbnQgd3hfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxuIHtcbiBcdG5ldGRldl9mZWF0dXJlc190IGNoYW5nZWQgPSBuZXRkZXYtXHUwMDNlZmVhdHVyZXMgXiBmZWF0dXJlcztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxuaW5kZXggYmM2NzE3ODY5NzhlNS4uY2Y2ZGQ3NGZlZjg3YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmhcbkBAIC0zMCw2ICYjNDM7MzAsNyBAQCB2b2lkIHd4X2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpO1xuIGludCB3eF9zZXR1cF9yZXNvdXJjZXMoc3RydWN0IHd4ICp3eCk7XG4gdm9pZCB3eF9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHQgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cyk7XG4mIzQzO3ZvaWQgd3hfc2V0X3N0YXRfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuIGludCB3eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpO1xuIG5ldGRldl9mZWF0dXJlc190IHd4X2ZpeF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0ICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmNcbmluZGV4IDI2ZGU3OGU5YTY5ZWYuLmYxMTY2NzdmYjlkZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXG5AQCAtNSw2ICYjNDM7NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGNpLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDt3eF90eXBlLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7d3hfaHcuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3d4X21ieC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7d3hfbGliLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt3eF92Zi5oXCYjMzQ7XG5AQCAtMTYsOSAmIzQzOzE3LDEzIEBAIGludCB3eHZmX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2X2QpXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xuIFx0c3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiBcbiYjNDM7XHRydG5sX2xvY2soKTtcbiBcdG5ldGlmX2RldmljZV9kZXRhY2god3gtXHUwMDNlbmV0ZGV2KTtcbiYjNDM7XHRpZiAobmV0aWZfcnVubmluZyh3eC1cdTAwM2VuZXRkZXYpKVxuJiM0MztcdFx0d3h2Zl9jbG9zZSh3eC1cdTAwM2VuZXRkZXYpO1xuIFx0d3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4gXHRwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7XG4mIzQzO1x0cnRubF91bmxvY2soKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0zNCwxMiAmIzQzOzM5LDI1IEBAIGludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcbiB7XG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xuIFx0c3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gcGNpX2VuYWJsZV9kZXZpY2VfbWVtKHBkZXYpO1xuJiM0MztcdGlmIChlcnIpIHtcbiYjNDM7XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O0Nhbm5vdCBlbmFibGUgUENJIGRldmljZSBmcm9tIHN1c3BlbmRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHR9XG4gXG4gXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcbi1cdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4mIzQzO1x0cnRubF9sb2NrKCk7XG4mIzQzO1x0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbiYjNDM7XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgbmV0aWZfcnVubmluZyh3eC1cdTAwM2VuZXRkZXYpKVxuJiM0MztcdFx0ZXJyID0gd3h2Zl9vcGVuKHd4LVx1MDAzZW5ldGRldik7XG4mIzQzO1x0cnRubF91bmxvY2soKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcdG5ldGlmX2RldmljZV9hdHRhY2god3gtXHUwMDNlbmV0ZGV2KTtcbiBcbi1cdHJldHVybiAwO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIEVYUE9SVF9TWU1CT0wod3h2Zl9yZXN1bWUpO1xuIFxuQEAgLTQwOSw2ICYjNDM7NDI3LDcgQEAgc3RhdGljIHZvaWQgd3h2Zl9zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIFx0d3h2Zl9saW5rX2NvbmZpZ19zdWJ0YXNrKHd4KTtcbiBcdHd4dmZfcmVzZXRfc3VidGFzayh3eCk7XG4mIzQzO1x0d3hfdXBkYXRlX3N0YXRzKHd4KTtcbiBcdHd4X3NlcnZpY2VfZXZlbnRfY29tcGxldGUod3gpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmNcbmluZGV4IGExNjIyMTk5NTkwOWYuLmQ5NjVmN2FmMTY5N2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uY1xuQEAgLTcwMCw2ICYjNDM7NzAwLDcgQEAgc3RhdGljIGludCBuZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSBuZ2JlX2RyaXZlcl9uYW1lO1xuIFx0bmdiZV9zZXRfZXRodG9vbF9vcHMobmV0ZGV2KTtcbiBcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2bmdiZV9uZXRkZXZfb3BzO1xuJiM0MztcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xuIFxuIFx0bmV0ZGV2LVx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8IE5FVElGX0ZfSVBfQ1NVTSB8XG4gXHRcdFx0ICAgTkVUSUZfRl9UU08gfCBORVRJRl9GX1RTTzYgfFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi9uZ2JldmZfbWFpbi5jXG5pbmRleCBkNzljZjhkODQ4NGY5Li5iNDgxN2M1ODk5MmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uY1xuQEAgLTQ4LDYgJiM0Mzs0OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbmdiZXZmX25ldGRldl9vcHMgPSB7XG4gXHQubmRvX3N0YXJ0X3htaXQgICAgICAgICA9IHd4X3htaXRfZnJhbWUsXG4gXHQubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLFxuIFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSB3eF9zZXRfbWFjX3ZmLFxuJiM0MztcdC5uZG9fZ2V0X3N0YXRzNjQgICAgICAgID0gd3hfZ2V0X3N0YXRzNjQsXG4gfTtcbiBcbiBzdGF0aWMgdm9pZCBuZ2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbkBAIC0xOTAsNiAmIzQzOzE5MSw3IEBAIHN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcbiBcdHd4X3NldF9ldGh0b29sX29wc192ZihuZXRkZXYpO1xuIFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZuZ2JldmZfbmV0ZGV2X29wcztcbiYjNDM7XHR3eF9zZXRfc3RhdF9vcHMobmV0ZGV2KTtcbiBcbiBcdC8qIHNldHVwIHRoZSBwcml2YXRlIHN0cnVjdHVyZSAqL1xuIFx0ZXJyID0gbmdiZXZmX3N3X2luaXQod3gpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmNcbmluZGV4IGMyNzc4NjNiYWY2N2EuLjdmM2Q3MmU1M2ZkMzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmNcbkBAIC03NDUsNiAmIzQzOzc0NSw3IEBAIHN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHR3eC1cdTAwM2Vkcml2ZXJfbmFtZSA9IHR4Z2JlX2RyaXZlcl9uYW1lO1xuIFx0dHhnYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XG4gXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnR4Z2JlX25ldGRldl9vcHM7XG4mIzQzO1x0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XG4gXHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xuIFxuIFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG5pbmRleCA4YjE2YjkwMDgyMGFhLi4xZTMwZDhmMjE4M2EwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcbkBAIC00NCw2ICYjNDM7NDQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHR4Z2JldmZfbmV0ZGV2X29wcyA9IHtcbiBcdC5uZG9fc3RhcnRfeG1pdCAgICAgICAgID0gd3hfeG1pdF9mcmFtZSxcbiBcdC5uZG9fdmFsaWRhdGVfYWRkciAgICAgID0gZXRoX3ZhbGlkYXRlX2FkZHIsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHd4X3NldF9tYWNfdmYsXG4mIzQzO1x0Lm5kb19nZXRfc3RhdHM2NCAgICAgICAgPSB3eF9nZXRfc3RhdHM2NCxcbiB9O1xuIFxuIHN0YXRpYyB2b2lkIHR4Z2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbkBAIC0yNTUsNiAmIzQzOzI1Niw3IEBAIHN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdHd4LVx1MDAzZWRyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7XG4gXHR3eF9zZXRfZXRodG9vbF9vcHNfdmYobmV0ZGV2KTtcbiBcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dHhnYmV2Zl9uZXRkZXZfb3BzO1xuJiM0MztcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xuIFxuIFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG4gXHRlcnIgPSB0eGdiZXZmX3N3X2luaXQod3gpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAobmdiZS90eGdiZSkgRXRoZXJuZXQgZHJpdmVycywgd2hpY2ggYXJlIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0M2YyODUwNGY1MDRiZDBhNjE2Y2IyM2U2YzM4N2MwNzNmOTdmMWJlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAxNTowOTo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYwppbmRleCAyNjBlMTRkNWQ1NDEyLi4zNDlhZmJlNjAxMzJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jCkBAIC0yODg2LDYgJiM0MzsyODg2LDggQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eCkKIAlmb3IgKGkgPSAwOyBpICZsdDsgd3gtJmd0O251bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtJmd0O3J4X3JpbmdbaV07CiAKJiM0MzsJCWlmICghcnhfcmluZykKJiM0MzsJCQljb250aW51ZTsKIAkJbm9uX2VvcF9kZXNjcyAmIzQzOz0gcnhfcmluZy0mZ3Q7cnhfc3RhdHMubm9uX2VvcF9kZXNjczsKIAkJYWxsb2NfcnhfYnVmZl9mYWlsZWQgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkOwogCQlod19jc3VtX3J4X2dvb2QgJiM0Mzs9IHJ4X3JpbmctJmd0O3J4X3N0YXRzLmNzdW1fZ29vZF9jbnQ7CkBAIC0yOTExLDEyICYjNDM7MjkxMywxNyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KQogCWZvciAoaSA9IDA7IGkgJmx0OyB3eC0mZ3Q7bnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKIAkJc3RydWN0IHd4X3JpbmcgKnR4X3JpbmcgPSB3eC0mZ3Q7dHhfcmluZ1tpXTsKIAomIzQzOwkJaWYgKCF0eF9yaW5nKQomIzQzOwkJCWNvbnRpbnVlOwogCQlyZXN0YXJ0X3F1ZXVlICYjNDM7PSB0eF9yaW5nLSZndDt0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlOwogCQl0eF9idXN5ICYjNDM7PSB0eF9yaW5nLSZndDt0eF9zdGF0cy50eF9idXN5OwogCX0KIAl3eC0mZ3Q7cmVzdGFydF9xdWV1ZSA9IHJlc3RhcnRfcXVldWU7CiAJd3gtJmd0O3R4X2J1c3kgPSB0eF9idXN5OwogCiYjNDM7CWlmICh3eC0mZ3Q7cGRldi0mZ3Q7aXNfdmlydGZuKQomIzQzOwkJZ290byBza2lwX2h3X3N0YXRzOwomIzQzOwogCXd4X3VwZGF0ZV94b2ZmX3J4X2xmYyh3eCk7CiAKIAlod3N0YXRzLSZndDtncHJjICYjNDM7PSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7CkBAIC0yOTU2LDYgJiM0MzsyOTYzLDcgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eCkKIAkJaHdzdGF0cy0mZ3Q7cW1wcmMgJiM0Mzs9IHJkMzJfd3JhcCh3eCwgV1hfUFhfTVBSQyhpKSwKIAkJCQkJICAgICZhbXA7d3gtJmd0O2xhc3Rfc3RhdHMucW1wcmNbaV0pOwogCiYjNDM7c2tpcF9od19zdGF0czoKIAlzcGluX3VubG9jaygmYW1wO3d4LSZndDtod19zdGF0c19sb2NrKTsKIH0KIEVYUE9SVF9TWU1CT0wod3hfdXBkYXRlX3N0YXRzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCmluZGV4IDMxNTcyZjU5YjljZTIuLmE0Y2EwMWMxOGM2YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYwpAQCAtNSw2ICYjNDM7NSw3IEBACiAjaW5jbHVkZSAmbHQ7bmV0L2lwNl9jaGVja3N1bS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9pbmV0X2Vjbi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtuZXQvbmV0ZGV2X3F1ZXVlcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3dvcmtxdWV1ZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lvcG9sbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NjdHAuaCZndDsKQEAgLTMwOTEsNiAmIzQzOzMwOTIsOCBAQCB2b2lkIHd4X2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJfQogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWlmICh3eC0mZ3Q7cGRldi0mZ3Q7aXNfdmlydGZuKQomIzQzOwkJcmV0dXJuOwogCiAJaHdzdGF0cyA9ICZhbXA7d3gtJmd0O3N0YXRzOwogCXN0YXRzLSZndDtyeF9lcnJvcnMgPSBod3N0YXRzLSZndDtjcmNlcnJzICYjNDM7IGh3c3RhdHMtJmd0O3JsZWM7CkBAIC0zMTAwLDYgJiM0MzszMTAzLDU0IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKIH0KIEVYUE9SVF9TWU1CT0wod3hfZ2V0X3N0YXRzNjQpOwogCiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsCiYjNDM7CQkJCSAgc3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c19yeCAqc3RhdHMpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJc3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC0mZ3Q7cnhfcmluZ1tpZHhdOwomIzQzOwomIzQzOwlzdGF0cy0mZ3Q7cGFja2V0cyA9IHJpbmctJmd0O3N0YXRzLnBhY2tldHM7CiYjNDM7CXN0YXRzLSZndDtieXRlcyA9IHJpbmctJmd0O3N0YXRzLmJ5dGVzOwomIzQzOwlzdGF0cy0mZ3Q7YWxsb2NfZmFpbCA9IHd4LSZndDthbGxvY19yeF9idWZmX2ZhaWxlZDsKJiM0MzsJc3RhdHMtJmd0O2NzdW1fY29tcGxldGUgPSB3eC0mZ3Q7aHdfY3N1bV9yeF9nb29kOwomIzQzOwlzdGF0cy0mZ3Q7Y3N1bV9iYWQgPSB3eC0mZ3Q7aHdfY3N1bV9yeF9lcnJvcjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsCiYjNDM7CQkJCSAgc3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c190eCAqc3RhdHMpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgd3ggKnd4ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJc3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC0mZ3Q7dHhfcmluZ1tpZHhdOwomIzQzOwomIzQzOwlzdGF0cy0mZ3Q7cGFja2V0cyA9IHJpbmctJmd0O3N0YXRzLnBhY2tldHM7CiYjNDM7CXN0YXRzLSZndDtieXRlcyA9IHJpbmctJmd0O3N0YXRzLmJ5dGVzOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB3eF9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnJ4LAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KQomIzQzO3sKJiM0MzsJcngtJmd0O2J5dGVzID0gMDsKJiM0MzsJcngtJmd0O3BhY2tldHMgPSAwOwomIzQzOwlyeC0mZ3Q7YWxsb2NfZmFpbCA9IDA7CiYjNDM7CXJ4LSZndDtjc3VtX2NvbXBsZXRlID0gMDsKJiM0MzsJcngtJmd0O2NzdW1fYmFkID0gMDsKJiM0MzsJdHgtJmd0O2J5dGVzID0gMDsKJiM0MzsJdHgtJmd0O3BhY2tldHMgPSAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9zdGF0X29wcyB3eF9zdGF0X29wcyA9IHsKJiM0MzsJLmdldF9xdWV1ZV9zdGF0c19yeCAgPSB3eF9nZXRfcXVldWVfc3RhdHNfcngsCiYjNDM7CS5nZXRfcXVldWVfc3RhdHNfdHggID0gd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4LAomIzQzOwkuZ2V0X2Jhc2Vfc3RhdHMgICAgICA9IHd4X2dldF9iYXNlX3N0YXRzLAomIzQzO307CiYjNDM7CiYjNDM7dm9pZCB3eF9zZXRfc3RhdF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKJiM0Mzt7CiYjNDM7CW5ldGRldi0mZ3Q7c3RhdF9vcHMgPSAmYW1wO3d4X3N0YXRfb3BzOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKHd4X3NldF9zdGF0X29wcyk7CiYjNDM7CiBpbnQgd3hfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKQogewogCW5ldGRldl9mZWF0dXJlc190IGNoYW5nZWQgPSBuZXRkZXYtJmd0O2ZlYXR1cmVzIF4gZmVhdHVyZXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaAppbmRleCBiYzY3MTc4Njk3OGU1Li5jZjZkZDc0ZmVmODdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmgKQEAgLTMwLDYgJiM0MzszMCw3IEBAIHZvaWQgd3hfZnJlZV9yZXNvdXJjZXMoc3RydWN0IHd4ICp3eCk7CiBpbnQgd3hfc2V0dXBfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpOwogdm9pZCB3eF9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCQkgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzdGF0cyk7CiYjNDM7dm9pZCB3eF9zZXRfc3RhdF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7CiBpbnQgd3hfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKTsKIG5ldGRldl9mZWF0dXJlc190IHd4X2ZpeF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAogCQkJCSAgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMKaW5kZXggMjZkZTc4ZTlhNjllZi4uZjExNjY3N2ZiOWRmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jCkBAIC01LDYgJiM0Mzs1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9wY2kuaCZndDsKIAogI2luY2x1ZGUgJiMzNDt3eF90eXBlLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7d3hfaHcuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3d4X21ieC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7d3hfbGliLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt3eF92Zi5oJiMzNDsKQEAgLTE2LDkgJiM0MzsxNywxMyBAQCBpbnQgd3h2Zl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldl9kKQogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXZfZCk7CiAJc3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAomIzQzOwlydG5sX2xvY2soKTsKIAluZXRpZl9kZXZpY2VfZGV0YWNoKHd4LSZndDtuZXRkZXYpOwomIzQzOwlpZiAobmV0aWZfcnVubmluZyh3eC0mZ3Q7bmV0ZGV2KSkKJiM0MzsJCXd4dmZfY2xvc2Uod3gtJmd0O25ldGRldik7CiAJd3hfY2xlYXJfaW50ZXJydXB0X3NjaGVtZSh3eCk7CiAJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOwomIzQzOwlydG5sX3VubG9jaygpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zNCwxMiAmIzQzOzM5LDI1IEBAIGludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZCkKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpOwogCXN0cnVjdCB3eCAqd3ggPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CiYjNDM7CWludCBlcnIgPSAwOwomIzQzOwomIzQzOwllcnIgPSBwY2lfZW5hYmxlX2RldmljZV9tZW0ocGRldik7CiYjNDM7CWlmIChlcnIpIHsKJiM0MzsJCWRldl9lcnIoJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7Q2Fubm90IGVuYWJsZSBQQ0kgZGV2aWNlIGZyb20gc3VzcGVuZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsJfQogCiAJcGNpX3NldF9tYXN0ZXIocGRldik7Ci0Jd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTsKJiM0MzsJcnRubF9sb2NrKCk7CiYjNDM7CWVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7CiYjNDM7CWlmICghZXJyICZhbXA7JmFtcDsgbmV0aWZfcnVubmluZyh3eC0mZ3Q7bmV0ZGV2KSkKJiM0MzsJCWVyciA9IHd4dmZfb3Blbih3eC0mZ3Q7bmV0ZGV2KTsKJiM0MzsJcnRubF91bmxvY2soKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAJbmV0aWZfZGV2aWNlX2F0dGFjaCh3eC0mZ3Q7bmV0ZGV2KTsKIAotCXJldHVybiAwOwomIzQzOwlyZXR1cm4gZXJyOwogfQogRVhQT1JUX1NZTUJPTCh3eHZmX3Jlc3VtZSk7CiAKQEAgLTQwOSw2ICYjNDM7NDI3LDcgQEAgc3RhdGljIHZvaWQgd3h2Zl9zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiAJd3h2Zl9saW5rX2NvbmZpZ19zdWJ0YXNrKHd4KTsKIAl3eHZmX3Jlc2V0X3N1YnRhc2sod3gpOwomIzQzOwl3eF91cGRhdGVfc3RhdHMod3gpOwogCXd4X3NlcnZpY2VfZXZlbnRfY29tcGxldGUod3gpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMKaW5kZXggYTE2MjIxOTk1OTA5Zi4uZDk2NWY3YWYxNjk3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYwpAQCAtNzAwLDYgJiM0Mzs3MDAsNyBAQCBzdGF0aWMgaW50IG5nYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJd3gtJmd0O2RyaXZlcl9uYW1lID0gbmdiZV9kcml2ZXJfbmFtZTsKIAluZ2JlX3NldF9ldGh0b29sX29wcyhuZXRkZXYpOwogCW5ldGRldi0mZ3Q7bmV0ZGV2X29wcyA9ICZhbXA7bmdiZV9uZXRkZXZfb3BzOwomIzQzOwl3eF9zZXRfc3RhdF9vcHMobmV0ZGV2KTsKIAogCW5ldGRldi0mZ3Q7ZmVhdHVyZXMgPSBORVRJRl9GX1NHIHwgTkVUSUZfRl9JUF9DU1VNIHwKIAkJCSAgIE5FVElGX0ZfVFNPIHwgTkVUSUZfRl9UU082IHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi9uZ2JldmZfbWFpbi5jCmluZGV4IGQ3OWNmOGQ4NDg0ZjkuLmI0ODE3YzU4OTkyYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYwpAQCAtNDgsNiAmIzQzOzQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JldmZfbmV0ZGV2X29wcyA9IHsKIAkubmRvX3N0YXJ0X3htaXQgICAgICAgICA9IHd4X3htaXRfZnJhbWUsCiAJLm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkciwKIAkubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHd4X3NldF9tYWNfdmYsCiYjNDM7CS5uZG9fZ2V0X3N0YXRzNjQgICAgICAgID0gd3hfZ2V0X3N0YXRzNjQsCiB9OwogCiBzdGF0aWMgdm9pZCBuZ2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eCkKQEAgLTE5MCw2ICYjNDM7MTkxLDcgQEAgc3RhdGljIGludCBuZ2JldmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJd3gtJmd0O2RyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7CiAJd3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7CiAJbmV0ZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDtuZ2JldmZfbmV0ZGV2X29wczsKJiM0MzsJd3hfc2V0X3N0YXRfb3BzKG5ldGRldik7CiAKIAkvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi8KIAllcnIgPSBuZ2JldmZfc3dfaW5pdCh3eCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jCmluZGV4IGMyNzc4NjNiYWY2N2EuLjdmM2Q3MmU1M2ZkMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jCkBAIC03NDUsNiAmIzQzOzc0NSw3IEBAIHN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJd3gtJmd0O2RyaXZlcl9uYW1lID0gdHhnYmVfZHJpdmVyX25hbWU7CiAJdHhnYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7CiAJbmV0ZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDt0eGdiZV9uZXRkZXZfb3BzOwomIzQzOwl3eF9zZXRfc3RhdF9vcHMobmV0ZGV2KTsKIAluZXRkZXYtJmd0O3VkcF90dW5uZWxfbmljX2luZm8gPSAmYW1wO3R4Z2JlX3VkcF90dW5uZWxzOwogCiAJLyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMKaW5kZXggOGIxNmI5MDA4MjBhYS4uMWUzMGQ4ZjIxODNhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYwpAQCAtNDQsNiAmIzQzOzQ0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZXZmX25ldGRldl9vcHMgPSB7CiAJLm5kb19zdGFydF94bWl0ICAgICAgICAgPSB3eF94bWl0X2ZyYW1lLAogCS5uZG9fdmFsaWRhdGVfYWRkciAgICAgID0gZXRoX3ZhbGlkYXRlX2FkZHIsCiAJLm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSB3eF9zZXRfbWFjX3ZmLAomIzQzOwkubmRvX2dldF9zdGF0czY0ICAgICAgICA9IHd4X2dldF9zdGF0czY0LAogfTsKIAogc3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KQpAQCAtMjU1LDYgJiM0MzsyNTYsNyBAQCBzdGF0aWMgaW50IHR4Z2JldmZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJd3gtJmd0O2RyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7CiAJd3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7CiAJbmV0ZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDt0eGdiZXZmX25ldGRldl9vcHM7CiYjNDM7CXd4X3NldF9zdGF0X29wcyhuZXRkZXYpOwogCiAJLyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovCiAJZXJyID0gdHhnYmV2Zl9zd19pbml0KHd4KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg1OAoJCQkJCQkJb3V0cHV0OiA4MAoJCQkJCQkJdGhvdWdodHM6IDg0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIGEgZmV3IFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVycyDigJMgYG5nYmVgLCBgdHhnYmVgLCB0aGVpciBWRiBjb3VudGVycGFydHMsIGFsbCB0aGUgdXN1YWwgc3VzcGVjdHMuIEkgc2VlIGNoYW5nZXMgaW4gdGhlIGB3eF91cGRhdGVfc3RhdHNgLCBgd3hfZ2V0X3N0YXRzNjRgLCBhbmQgdmFyaW91cyBxdWV1ZSBzdGF0IGZ1bmN0aW9ucywgYWxvbmcgd2l0aCBzdXNwZW5kL3Jlc3VtZSBhbmQgc2VydmljZSB0YXNrcy4gVGhlIGNoYW5nZXMgYWxzbyBpbmNsdWRlIHNldHRpbmcgc29tZSBzdGF0IG9wcyBkdXJpbmcgcHJvYmUgY2FsbHMuIEF0IGZpcnN0IGdsYW5jZSwgaXQgbG9va3MgbGlrZSBhIHR5cGljYWwgZHJpdmVyIHVwZGF0ZS4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIFdhbmd4dW4/IFRoYXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgRXRoZXJuZXQgY29udHJvbGxlciwgc3BlY2lmaWNhbGx5IFBDSWUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlc2UgZHJpdmVycyBhY3R1YWxseSAqcmVsZXZhbnQqIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZyBsaWtlIEdDRSBvciBRRU1VPyBJIGtub3cgUUVNVSBlbXVsYXRlcyB0aGUgdXN1YWwgc3VzcGVjdHMgbGlrZSBlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiwgYnV0IEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgV2FuZ3h1biBvbiB0aGF0IGxpc3QuIEkgd291bGQgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIFFFTVUgc291cmNlIHRvIGJlIDEwMCUgc3VyZSwgYnV0IHRoYXQmIzM5O3Mgbm90IHJlYWRpbHkgYXZhaWxhYmxlLiBBbHNvLCBXYW5neHVuIGlzIGEgQ2hpbmVzZSB2ZW5kb3IuIFRoZSBsaWtlbGlob29kIG9mIHRoZW0gYmVpbmcgaW5jbHVkZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGltcGxlbWVudGF0aW9uIGlzIGxvdy4KCk15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBXYW5neHVuIGlzIGEgcGh5c2ljYWwgY2FyZC4gUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgaXQuCgpMb29raW5nIGJhY2sgYXQgdGhlIGluc3RydWN0aW9ucywgaXQgc3RhdGVzIHRoYXQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMg4oCTIGFyZSB0byBiZSBtYXJrZWQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEFuZCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyBhcyBhIGRpc3F1YWxpZmllci4KCkdpdmVuIHRoYXQgV2FuZ3h1biYjMzk7cyBkcml2ZXJzIGFyZSBkZWZpbml0aXZlbHkgZm9yIHBoeXNpY2FsIFBDSWUgRXRoZXJuZXQgaGFyZHdhcmUsIGFuZCBzaW5jZSBRRU1VIGRvZXMgKm5vdCogZW11bGF0ZSBXYW5neHVuLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGUgZW52aXJvbm1lbnRzIHdlJiMzOTtyZSBmdXp6aW5nLiBNeSBkZWNpc2lvbiBpcyBjbGVhcjogdGhpcyBwYXRjaCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZS4KClRoZXJlZm9yZSwgdGhlIHBhdGNoIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgdXBkYXRlZCBzdGF0cyBmdW5jdGlvbmFsaXR5IGFuZCBldmVyeXRoaW5nIGVsc2UgaW4gdGhpcyBwYXRjaCBhcmUgZm9yIHBoeXNpY2FsIGNhcmRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE1OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKG5nYmUvdHhnYmUpIEV0aGVybmV0IGRyaXZlcnMsIHdoaWNoIGFyZSBmb3IgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAobmdiZS90eGdiZSkgRXRoZXJuZXQgZHJpdmVycywgd2hpY2ggYXJlIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNTowOTo1Ni4xNTEzODAyODJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzE1ODU4MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2FuZ3h1biAobmdiZS90eGdiZSkgRXRoZXJuZXQgZHJpdmVycywgd2hpY2ggYXJlIGZvciBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA5OjU2LjE1MTM4NzM0MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM4MzM0ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDNmMjg1MDRmNTA0YmQwYTYxNmNiMjNlNmMzODdjMDczZjk3ZjFiZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDE1OjA5OjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xcbmluZGV4IDI2MGUxNGQ1ZDU0MTIuLjM0OWFmYmU2MDEzMmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jXFxuQEAgLTI4ODYsNiArMjg4Niw4IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCB3eF9yaW5nICpyeF9yaW5nID0gd3gtXFx1MDAzZXJ4X3JpbmdbaV07XFxuIFxcbitcXHRcXHRpZiAoIXJ4X3JpbmcpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHRub25fZW9wX2Rlc2NzICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLm5vbl9lb3BfZGVzY3M7XFxuIFxcdFxcdGFsbG9jX3J4X2J1ZmZfZmFpbGVkICs9IHJ4X3JpbmctXFx1MDAzZXJ4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xcbiBcXHRcXHRod19jc3VtX3J4X2dvb2QgKz0gcnhfcmluZy1cXHUwMDNlcnhfc3RhdHMuY3N1bV9nb29kX2NudDtcXG5AQCAtMjkxMSwxMiArMjkxMywxNyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVxcdTAwM2V0eF9yaW5nW2ldO1xcbiBcXG4rXFx0XFx0aWYgKCF0eF9yaW5nKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0cmVzdGFydF9xdWV1ZSArPSB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0cy5yZXN0YXJ0X3F1ZXVlO1xcbiBcXHRcXHR0eF9idXN5ICs9IHR4X3JpbmctXFx1MDAzZXR4X3N0YXRzLnR4X2J1c3k7XFxuIFxcdH1cXG4gXFx0d3gtXFx1MDAzZXJlc3RhcnRfcXVldWUgPSByZXN0YXJ0X3F1ZXVlO1xcbiBcXHR3eC1cXHUwMDNldHhfYnVzeSA9IHR4X2J1c3k7XFxuIFxcbitcXHRpZiAod3gtXFx1MDAzZXBkZXYtXFx1MDAzZWlzX3ZpcnRmbilcXG4rXFx0XFx0Z290byBza2lwX2h3X3N0YXRzO1xcbitcXG4gXFx0d3hfdXBkYXRlX3hvZmZfcnhfbGZjKHd4KTtcXG4gXFxuIFxcdGh3c3RhdHMtXFx1MDAzZWdwcmMgKz0gcmQzMih3eCwgV1hfUkRNX1BLVF9DTlQpO1xcbkBAIC0yOTU2LDYgKzI5NjMsNyBAQCB2b2lkIHd4X3VwZGF0ZV9zdGF0cyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRcXHRod3N0YXRzLVxcdTAwM2VxbXByYyArPSByZDMyX3dyYXAod3gsIFdYX1BYX01QUkMoaSksXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2d3gtXFx1MDAzZWxhc3Rfc3RhdHMucW1wcmNbaV0pO1xcbiBcXG4rc2tpcF9od19zdGF0czpcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNnd4LVxcdTAwM2Vod19zdGF0c19sb2NrKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHd4X3VwZGF0ZV9zdGF0cyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuaW5kZXggMzE1NzJmNTliOWNlMi4uYTRjYTAxYzE4YzZhNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xcbkBAIC01LDYgKzUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2lwNl9jaGVja3N1bS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3BhZ2VfcG9vbC9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvaW5ldF9lY24uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRkZXZfcXVldWVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC93b3JrcXVldWUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2N0cC5oXFx1MDAzZVxcbkBAIC0zMDkxLDYgKzMwOTIsOCBAQCB2b2lkIHd4X2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdH1cXG4gXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRpZiAod3gtXFx1MDAzZXBkZXYtXFx1MDAzZWlzX3ZpcnRmbilcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aHdzdGF0cyA9IFxcdTAwMjZ3eC1cXHUwMDNlc3RhdHM7XFxuIFxcdHN0YXRzLVxcdTAwM2VyeF9lcnJvcnMgPSBod3N0YXRzLVxcdTAwM2VjcmNlcnJzICsgaHdzdGF0cy1cXHUwMDNlcmxlYztcXG5AQCAtMzEwMCw2ICszMTAzLDU0IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHd4X2dldF9zdGF0czY0KTtcXG4gXFxuK3N0YXRpYyB2b2lkIHd4X2dldF9xdWV1ZV9zdGF0c19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaWR4LFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnN0YXRzKVxcbit7XFxuK1xcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXHRzdHJ1Y3Qgd3hfcmluZyAqcmluZyA9IHd4LVxcdTAwM2VyeF9yaW5nW2lkeF07XFxuK1xcbitcXHRzdGF0cy1cXHUwMDNlcGFja2V0cyA9IHJpbmctXFx1MDAzZXN0YXRzLnBhY2tldHM7XFxuK1xcdHN0YXRzLVxcdTAwM2VieXRlcyA9IHJpbmctXFx1MDAzZXN0YXRzLmJ5dGVzO1xcbitcXHRzdGF0cy1cXHUwMDNlYWxsb2NfZmFpbCA9IHd4LVxcdTAwM2VhbGxvY19yeF9idWZmX2ZhaWxlZDtcXG4rXFx0c3RhdHMtXFx1MDAzZWNzdW1fY29tcGxldGUgPSB3eC1cXHUwMDNlaHdfY3N1bV9yeF9nb29kO1xcbitcXHRzdGF0cy1cXHUwMDNlY3N1bV9iYWQgPSB3eC1cXHUwMDNlaHdfY3N1bV9yeF9lcnJvcjtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c190eCAqc3RhdHMpXFxuK3tcXG4rXFx0c3RydWN0IHd4ICp3eCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHN0cnVjdCB3eF9yaW5nICpyaW5nID0gd3gtXFx1MDAzZXR4X3JpbmdbaWR4XTtcXG4rXFxuK1xcdHN0YXRzLVxcdTAwM2VwYWNrZXRzID0gcmluZy1cXHUwMDNlc3RhdHMucGFja2V0cztcXG4rXFx0c3RhdHMtXFx1MDAzZWJ5dGVzID0gcmluZy1cXHUwMDNlc3RhdHMuYnl0ZXM7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHd4X2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnJ4LFxcbitcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX3N0YXRzX3R4ICp0eClcXG4re1xcbitcXHRyeC1cXHUwMDNlYnl0ZXMgPSAwO1xcbitcXHRyeC1cXHUwMDNlcGFja2V0cyA9IDA7XFxuK1xcdHJ4LVxcdTAwM2VhbGxvY19mYWlsID0gMDtcXG4rXFx0cngtXFx1MDAzZWNzdW1fY29tcGxldGUgPSAwO1xcbitcXHRyeC1cXHUwMDNlY3N1bV9iYWQgPSAwO1xcbitcXHR0eC1cXHUwMDNlYnl0ZXMgPSAwO1xcbitcXHR0eC1cXHUwMDNlcGFja2V0cyA9IDA7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3N0YXRfb3BzIHd4X3N0YXRfb3BzID0ge1xcbitcXHQuZ2V0X3F1ZXVlX3N0YXRzX3J4ICA9IHd4X2dldF9xdWV1ZV9zdGF0c19yeCxcXG4rXFx0LmdldF9xdWV1ZV9zdGF0c190eCAgPSB3eF9nZXRfcXVldWVfc3RhdHNfdHgsXFxuK1xcdC5nZXRfYmFzZV9zdGF0cyAgICAgID0gd3hfZ2V0X2Jhc2Vfc3RhdHMsXFxuK307XFxuK1xcbit2b2lkIHd4X3NldF9zdGF0X29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbit7XFxuK1xcdG5ldGRldi1cXHUwMDNlc3RhdF9vcHMgPSBcXHUwMDI2d3hfc3RhdF9vcHM7XFxuK31cXG4rRVhQT1JUX1NZTUJPTCh3eF9zZXRfc3RhdF9vcHMpO1xcbitcXG4gaW50IHd4X3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcXG4ge1xcbiBcXHRuZXRkZXZfZmVhdHVyZXNfdCBjaGFuZ2VkID0gbmV0ZGV2LVxcdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxcbmluZGV4IGJjNjcxNzg2OTc4ZTUuLmNmNmRkNzRmZWY4N2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmhcXG5AQCAtMzAsNiArMzAsNyBAQCB2b2lkIHd4X2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpO1xcbiBpbnQgd3hfc2V0dXBfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpO1xcbiB2b2lkIHd4X2dldF9zdGF0czY0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuIFxcdFxcdCAgICBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnN0YXRzKTtcXG4rdm9pZCB3eF9zZXRfc3RhdF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuIGludCB3eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpO1xcbiBuZXRkZXZfZmVhdHVyZXNfdCB3eF9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4gXFx0XFx0XFx0XFx0ICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXFxuaW5kZXggMjZkZTc4ZTlhNjllZi4uZjExNjY3N2ZiOWRmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uY1xcbkBAIC01LDYgKzUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwid3hfdHlwZS5oXFxcIlxcbisjaW5jbHVkZSBcXFwid3hfaHcuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInd4X21ieC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwid3hfbGliLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ3eF92Zi5oXFxcIlxcbkBAIC0xNiw5ICsxNywxMyBAQCBpbnQgd3h2Zl9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldl9kKVxcbiBcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xcbiBcXHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbiBcXG4rXFx0cnRubF9sb2NrKCk7XFxuIFxcdG5ldGlmX2RldmljZV9kZXRhY2god3gtXFx1MDAzZW5ldGRldik7XFxuK1xcdGlmIChuZXRpZl9ydW5uaW5nKHd4LVxcdTAwM2VuZXRkZXYpKVxcbitcXHRcXHR3eHZmX2Nsb3NlKHd4LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHR3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG4gXFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xcbitcXHRydG5sX3VubG9jaygpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtMzQsMTIgKzM5LDI1IEBAIGludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcXG4ge1xcbiBcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xcbiBcXHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbitcXHRpbnQgZXJyID0gMDtcXG4rXFxuK1xcdGVyciA9IHBjaV9lbmFibGVfZGV2aWNlX21lbShwZGV2KTtcXG4rXFx0aWYgKGVycikge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJDYW5ub3QgZW5hYmxlIFBDSSBkZXZpY2UgZnJvbSBzdXNwZW5kXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0fVxcbiBcXG4gXFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuLVxcdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuK1xcdHJ0bmxfbG9jaygpO1xcbitcXHRlcnIgPSB3eF9pbml0X2ludGVycnVwdF9zY2hlbWUod3gpO1xcbitcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBuZXRpZl9ydW5uaW5nKHd4LVxcdTAwM2VuZXRkZXYpKVxcbitcXHRcXHRlcnIgPSB3eHZmX29wZW4od3gtXFx1MDAzZW5ldGRldik7XFxuK1xcdHJ0bmxfdW5sb2NrKCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuIFxcdG5ldGlmX2RldmljZV9hdHRhY2god3gtXFx1MDAzZW5ldGRldik7XFxuIFxcbi1cXHRyZXR1cm4gMDtcXG4rXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHd4dmZfcmVzdW1lKTtcXG4gXFxuQEAgLTQwOSw2ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCB3eHZmX3NlcnZpY2VfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcbiBcXHR3eHZmX2xpbmtfY29uZmlnX3N1YnRhc2sod3gpO1xcbiBcXHR3eHZmX3Jlc2V0X3N1YnRhc2sod3gpO1xcbitcXHR3eF91cGRhdGVfc3RhdHMod3gpO1xcbiBcXHR3eF9zZXJ2aWNlX2V2ZW50X2NvbXBsZXRlKHd4KTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jXFxuaW5kZXggYTE2MjIxOTk1OTA5Zi4uZDk2NWY3YWYxNjk3YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmNcXG5AQCAtNzAwLDYgKzcwMCw3IEBAIHN0YXRpYyBpbnQgbmdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0d3gtXFx1MDAzZWRyaXZlcl9uYW1lID0gbmdiZV9kcml2ZXJfbmFtZTtcXG4gXFx0bmdiZV9zZXRfZXRodG9vbF9vcHMobmV0ZGV2KTtcXG4gXFx0bmV0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNm5nYmVfbmV0ZGV2X29wcztcXG4rXFx0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XFxuIFxcbiBcXHRuZXRkZXYtXFx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8IE5FVElGX0ZfSVBfQ1NVTSB8XFxuIFxcdFxcdFxcdCAgIE5FVElGX0ZfVFNPIHwgTkVUSUZfRl9UU082IHxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmNcXG5pbmRleCBkNzljZjhkODQ4NGY5Li5iNDgxN2M1ODk5MmIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi9uZ2JldmZfbWFpbi5jXFxuQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JldmZfbmV0ZGV2X29wcyA9IHtcXG4gXFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSB3eF94bWl0X2ZyYW1lLFxcbiBcXHQubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLFxcbiBcXHQubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHd4X3NldF9tYWNfdmYsXFxuK1xcdC5uZG9fZ2V0X3N0YXRzNjQgICAgICAgID0gd3hfZ2V0X3N0YXRzNjQsXFxuIH07XFxuIFxcbiBzdGF0aWMgdm9pZCBuZ2JldmZfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG5AQCAtMTkwLDYgKzE5MSw3IEBAIHN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHR3eC1cXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcXG4gXFx0d3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7XFxuIFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZuZ2JldmZfbmV0ZGV2X29wcztcXG4rXFx0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XFxuIFxcbiBcXHQvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cXG4gXFx0ZXJyID0gbmdiZXZmX3N3X2luaXQod3gpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jXFxuaW5kZXggYzI3Nzg2M2JhZjY3YS4uN2YzZDcyZTUzZmQzMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jXFxuQEAgLTc0NSw2ICs3NDUsNyBAQCBzdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHR3eC1cXHUwMDNlZHJpdmVyX25hbWUgPSB0eGdiZV9kcml2ZXJfbmFtZTtcXG4gXFx0dHhnYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XFxuIFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xcbitcXHR3eF9zZXRfc3RhdF9vcHMobmV0ZGV2KTtcXG4gXFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xcbiBcXG4gXFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uY1xcbmluZGV4IDhiMTZiOTAwODIwYWEuLjFlMzBkOGYyMTgzYTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXFxuQEAgLTQ0LDYgKzQ0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB0eGdiZXZmX25ldGRldl9vcHMgPSB7XFxuIFxcdC5uZG9fc3RhcnRfeG1pdCAgICAgICAgID0gd3hfeG1pdF9mcmFtZSxcXG4gXFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcXG4gXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSB3eF9zZXRfbWFjX3ZmLFxcbitcXHQubmRvX2dldF9zdGF0czY0ICAgICAgICA9IHd4X2dldF9zdGF0czY0LFxcbiB9O1xcbiBcXG4gc3RhdGljIHZvaWQgdHhnYmV2Zl9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbkBAIC0yNTUsNiArMjU2LDcgQEAgc3RhdGljIGludCB0eGdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHR3eC1cXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcXG4gXFx0d3hfc2V0X2V0aHRvb2xfb3BzX3ZmKG5ldGRldik7XFxuIFxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZXZmX25ldGRldl9vcHM7XFxuK1xcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xcbiBcXG4gXFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXFxuIFxcdGVyciA9IHR4Z2JldmZfc3dfaW5pdCh3eCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE1OjA5OjU2LjQ5MDMzMjEzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkzNzY5MDIwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIChuZ2JlL3R4Z2JlKSBFdGhlcm5ldCBkcml2ZXJzLCB3aGljaCBhcmUgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDNmMjg1MDRmNTA0YmQwYTYxNmNiMjNlNmMzODdjMDczZjk3ZjFiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTU6MDk6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbmluZGV4IDI2MGUxNGQ1ZDU0MTIuLjM0OWFmYmU2MDEzMmUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuY1xuQEAgLTI4ODYsNiArMjg4Niw4IEBAIHZvaWQgd3hfdXBkYXRlX3N0YXRzKHN0cnVjdCB3eCAqd3gpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcbiBcdFx0c3RydWN0IHd4X3JpbmcgKnJ4X3JpbmcgPSB3eC1cdTAwM2VyeF9yaW5nW2ldO1xuIFxuK1x0XHRpZiAoIXJ4X3JpbmcpXG4rXHRcdFx0Y29udGludWU7XG4gXHRcdG5vbl9lb3BfZGVzY3MgKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5ub25fZW9wX2Rlc2NzO1xuIFx0XHRhbGxvY19yeF9idWZmX2ZhaWxlZCArPSByeF9yaW5nLVx1MDAzZXJ4X3N0YXRzLmFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xuIFx0XHRod19jc3VtX3J4X2dvb2QgKz0gcnhfcmluZy1cdTAwM2VyeF9zdGF0cy5jc3VtX2dvb2RfY250O1xuQEAgLTI5MTEsMTIgKzI5MTMsMTcgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xuIFx0XHRzdHJ1Y3Qgd3hfcmluZyAqdHhfcmluZyA9IHd4LVx1MDAzZXR4X3JpbmdbaV07XG4gXG4rXHRcdGlmICghdHhfcmluZylcbitcdFx0XHRjb250aW51ZTtcbiBcdFx0cmVzdGFydF9xdWV1ZSArPSB0eF9yaW5nLVx1MDAzZXR4X3N0YXRzLnJlc3RhcnRfcXVldWU7XG4gXHRcdHR4X2J1c3kgKz0gdHhfcmluZy1cdTAwM2V0eF9zdGF0cy50eF9idXN5O1xuIFx0fVxuIFx0d3gtXHUwMDNlcmVzdGFydF9xdWV1ZSA9IHJlc3RhcnRfcXVldWU7XG4gXHR3eC1cdTAwM2V0eF9idXN5ID0gdHhfYnVzeTtcbiBcbitcdGlmICh3eC1cdTAwM2VwZGV2LVx1MDAzZWlzX3ZpcnRmbilcbitcdFx0Z290byBza2lwX2h3X3N0YXRzO1xuK1xuIFx0d3hfdXBkYXRlX3hvZmZfcnhfbGZjKHd4KTtcbiBcbiBcdGh3c3RhdHMtXHUwMDNlZ3ByYyArPSByZDMyKHd4LCBXWF9SRE1fUEtUX0NOVCk7XG5AQCAtMjk1Niw2ICsyOTYzLDcgQEAgdm9pZCB3eF91cGRhdGVfc3RhdHMoc3RydWN0IHd4ICp3eClcbiBcdFx0aHdzdGF0cy1cdTAwM2VxbXByYyArPSByZDMyX3dyYXAod3gsIFdYX1BYX01QUkMoaSksXG4gXHRcdFx0XHRcdCAgICBcdTAwMjZ3eC1cdTAwM2VsYXN0X3N0YXRzLnFtcHJjW2ldKTtcbiBcbitza2lwX2h3X3N0YXRzOlxuIFx0c3Bpbl91bmxvY2soXHUwMDI2d3gtXHUwMDNlaHdfc3RhdHNfbG9jayk7XG4gfVxuIEVYUE9SVF9TWU1CT0wod3hfdXBkYXRlX3N0YXRzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuaW5kZXggMzE1NzJmNTliOWNlMi4uYTRjYTAxYzE4YzZhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbkBAIC01LDYgKzUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY25ldC9pcDZfY2hlY2tzdW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L2luZXRfZWNuLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X3F1ZXVlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pb3BvbGwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjdHAuaFx1MDAzZVxuQEAgLTMwOTEsNiArMzA5Miw4IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0aWYgKHd4LVx1MDAzZXBkZXYtXHUwMDNlaXNfdmlydGZuKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRod3N0YXRzID0gXHUwMDI2d3gtXHUwMDNlc3RhdHM7XG4gXHRzdGF0cy1cdTAwM2VyeF9lcnJvcnMgPSBod3N0YXRzLVx1MDAzZWNyY2VycnMgKyBod3N0YXRzLVx1MDAzZXJsZWM7XG5AQCAtMzEwMCw2ICszMTAzLDU0IEBAIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiB9XG4gRVhQT1JUX1NZTUJPTCh3eF9nZXRfc3RhdHM2NCk7XG4gXG4rc3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsXG4rXHRcdFx0XHQgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnN0YXRzKVxuK3tcbitcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpO1xuK1x0c3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC1cdTAwM2VyeF9yaW5nW2lkeF07XG4rXG4rXHRzdGF0cy1cdTAwM2VwYWNrZXRzID0gcmluZy1cdTAwM2VzdGF0cy5wYWNrZXRzO1xuK1x0c3RhdHMtXHUwMDNlYnl0ZXMgPSByaW5nLVx1MDAzZXN0YXRzLmJ5dGVzO1xuK1x0c3RhdHMtXHUwMDNlYWxsb2NfZmFpbCA9IHd4LVx1MDAzZWFsbG9jX3J4X2J1ZmZfZmFpbGVkO1xuK1x0c3RhdHMtXHUwMDNlY3N1bV9jb21wbGV0ZSA9IHd4LVx1MDAzZWh3X2NzdW1fcnhfZ29vZDtcbitcdHN0YXRzLVx1MDAzZWNzdW1fYmFkID0gd3gtXHUwMDNlaHdfY3N1bV9yeF9lcnJvcjtcbit9XG4rXG4rc3RhdGljIHZvaWQgd3hfZ2V0X3F1ZXVlX3N0YXRzX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpZHgsXG4rXHRcdFx0XHQgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnN0YXRzKVxuK3tcbitcdHN0cnVjdCB3eCAqd3ggPSBuZXRkZXZfcHJpdihkZXYpO1xuK1x0c3RydWN0IHd4X3JpbmcgKnJpbmcgPSB3eC1cdTAwM2V0eF9yaW5nW2lkeF07XG4rXG4rXHRzdGF0cy1cdTAwM2VwYWNrZXRzID0gcmluZy1cdTAwM2VzdGF0cy5wYWNrZXRzO1xuK1x0c3RhdHMtXHUwMDNlYnl0ZXMgPSByaW5nLVx1MDAzZXN0YXRzLmJ5dGVzO1xuK31cbitcbitzdGF0aWMgdm9pZCB3eF9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdCAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggKnJ4LFxuK1x0XHRcdCAgICAgIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KVxuK3tcbitcdHJ4LVx1MDAzZWJ5dGVzID0gMDtcbitcdHJ4LVx1MDAzZXBhY2tldHMgPSAwO1xuK1x0cngtXHUwMDNlYWxsb2NfZmFpbCA9IDA7XG4rXHRyeC1cdTAwM2Vjc3VtX2NvbXBsZXRlID0gMDtcbitcdHJ4LVx1MDAzZWNzdW1fYmFkID0gMDtcbitcdHR4LVx1MDAzZWJ5dGVzID0gMDtcbitcdHR4LVx1MDAzZXBhY2tldHMgPSAwO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9zdGF0X29wcyB3eF9zdGF0X29wcyA9IHtcbitcdC5nZXRfcXVldWVfc3RhdHNfcnggID0gd3hfZ2V0X3F1ZXVlX3N0YXRzX3J4LFxuK1x0LmdldF9xdWV1ZV9zdGF0c190eCAgPSB3eF9nZXRfcXVldWVfc3RhdHNfdHgsXG4rXHQuZ2V0X2Jhc2Vfc3RhdHMgICAgICA9IHd4X2dldF9iYXNlX3N0YXRzLFxuK307XG4rXG4rdm9pZCB3eF9zZXRfc3RhdF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbit7XG4rXHRuZXRkZXYtXHUwMDNlc3RhdF9vcHMgPSBcdTAwMjZ3eF9zdGF0X29wcztcbit9XG4rRVhQT1JUX1NZTUJPTCh3eF9zZXRfc3RhdF9vcHMpO1xuK1xuIGludCB3eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgY2hhbmdlZCA9IG5ldGRldi1cdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5oXG5pbmRleCBiYzY3MTc4Njk3OGU1Li5jZjZkZDc0ZmVmODdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaFxuQEAgLTMwLDYgKzMwLDcgQEAgdm9pZCB3eF9mcmVlX3Jlc291cmNlcyhzdHJ1Y3Qgd3ggKnd4KTtcbiBpbnQgd3hfc2V0dXBfcmVzb3VyY2VzKHN0cnVjdCB3eCAqd3gpO1xuIHZvaWQgd3hfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiBcdFx0ICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpO1xuK3ZvaWQgd3hfc2V0X3N0YXRfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuIGludCB3eF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMpO1xuIG5ldGRldl9mZWF0dXJlc190IHd4X2ZpeF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuIFx0XHRcdFx0ICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmNcbmluZGV4IDI2ZGU3OGU5YTY5ZWYuLmYxMTY2NzdmYjlkZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jXG5AQCAtNSw2ICs1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwid3hfdHlwZS5oXCJcbisjaW5jbHVkZSBcInd4X2h3LmhcIlxuICNpbmNsdWRlIFwid3hfbWJ4LmhcIlxuICNpbmNsdWRlIFwid3hfbGliLmhcIlxuICNpbmNsdWRlIFwid3hfdmYuaFwiXG5AQCAtMTYsOSArMTcsMTMgQEAgaW50IHd4dmZfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZfZClcbiBcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXZfZCk7XG4gXHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xuIFxuK1x0cnRubF9sb2NrKCk7XG4gXHRuZXRpZl9kZXZpY2VfZGV0YWNoKHd4LVx1MDAzZW5ldGRldik7XG4rXHRpZiAobmV0aWZfcnVubmluZyh3eC1cdTAwM2VuZXRkZXYpKVxuK1x0XHR3eHZmX2Nsb3NlKHd4LVx1MDAzZW5ldGRldik7XG4gXHR3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbiBcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbitcdHJ0bmxfdW5sb2NrKCk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMzQsMTIgKzM5LDI1IEBAIGludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcbiB7XG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2X2QpO1xuIFx0c3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbitcdGludCBlcnIgPSAwO1xuK1xuK1x0ZXJyID0gcGNpX2VuYWJsZV9kZXZpY2VfbWVtKHBkZXYpO1xuK1x0aWYgKGVycikge1xuK1x0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcIkNhbm5vdCBlbmFibGUgUENJIGRldmljZSBmcm9tIHN1c3BlbmRcXG5cIik7XG4rXHRcdHJldHVybiBlcnI7XG4rXHR9XG4gXG4gXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcbi1cdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4rXHRydG5sX2xvY2soKTtcbitcdGVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG4rXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgbmV0aWZfcnVubmluZyh3eC1cdTAwM2VuZXRkZXYpKVxuK1x0XHRlcnIgPSB3eHZmX29wZW4od3gtXHUwMDNlbmV0ZGV2KTtcbitcdHJ0bmxfdW5sb2NrKCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuIFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh3eC1cdTAwM2VuZXRkZXYpO1xuIFxuLVx0cmV0dXJuIDA7XG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHd4dmZfcmVzdW1lKTtcbiBcbkBAIC00MDksNiArNDI3LDcgQEAgc3RhdGljIHZvaWQgd3h2Zl9zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIFx0d3h2Zl9saW5rX2NvbmZpZ19zdWJ0YXNrKHd4KTtcbiBcdHd4dmZfcmVzZXRfc3VidGFzayh3eCk7XG4rXHR3eF91cGRhdGVfc3RhdHMod3gpO1xuIFx0d3hfc2VydmljZV9ldmVudF9jb21wbGV0ZSh3eCk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uY1xuaW5kZXggYTE2MjIxOTk1OTA5Zi4uZDk2NWY3YWYxNjk3YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jXG5AQCAtNzAwLDYgKzcwMCw3IEBAIHN0YXRpYyBpbnQgbmdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdHd4LVx1MDAzZWRyaXZlcl9uYW1lID0gbmdiZV9kcml2ZXJfbmFtZTtcbiBcdG5nYmVfc2V0X2V0aHRvb2xfb3BzKG5ldGRldik7XG4gXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNm5nYmVfbmV0ZGV2X29wcztcbitcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xuIFxuIFx0bmV0ZGV2LVx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9TRyB8IE5FVElGX0ZfSVBfQ1NVTSB8XG4gXHRcdFx0ICAgTkVUSUZfRl9UU08gfCBORVRJRl9GX1RTTzYgfFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmV2Zi9uZ2JldmZfbWFpbi5jXG5pbmRleCBkNzljZjhkODQ4NGY5Li5iNDgxN2M1ODk5MmIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uY1xuQEAgLTQ4LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBuZ2JldmZfbmV0ZGV2X29wcyA9IHtcbiBcdC5uZG9fc3RhcnRfeG1pdCAgICAgICAgID0gd3hfeG1pdF9mcmFtZSxcbiBcdC5uZG9fdmFsaWRhdGVfYWRkciAgICAgID0gZXRoX3ZhbGlkYXRlX2FkZHIsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHd4X3NldF9tYWNfdmYsXG4rXHQubmRvX2dldF9zdGF0czY0ICAgICAgICA9IHd4X2dldF9zdGF0czY0LFxuIH07XG4gXG4gc3RhdGljIHZvaWQgbmdiZXZmX3NldF9udW1fcXVldWVzKHN0cnVjdCB3eCAqd3gpXG5AQCAtMTkwLDYgKzE5MSw3IEBAIHN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSBLQlVJTERfTU9ETkFNRTtcbiBcdHd4X3NldF9ldGh0b29sX29wc192ZihuZXRkZXYpO1xuIFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZuZ2JldmZfbmV0ZGV2X29wcztcbitcdHd4X3NldF9zdGF0X29wcyhuZXRkZXYpO1xuIFxuIFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG4gXHRlcnIgPSBuZ2JldmZfc3dfaW5pdCh3eCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uY1xuaW5kZXggYzI3Nzg2M2JhZjY3YS4uN2YzZDcyZTUzZmQzMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uY1xuQEAgLTc0NSw2ICs3NDUsNyBAQCBzdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0d3gtXHUwMDNlZHJpdmVyX25hbWUgPSB0eGdiZV9kcml2ZXJfbmFtZTtcbiBcdHR4Z2JlX3NldF9ldGh0b29sX29wcyhuZXRkZXYpO1xuIFx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xuK1x0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XG4gXHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnR4Z2JlX3VkcF90dW5uZWxzO1xuIFxuIFx0Lyogc2V0dXAgdGhlIHByaXZhdGUgc3RydWN0dXJlICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG5pbmRleCA4YjE2YjkwMDgyMGFhLi4xZTMwZDhmMjE4M2EwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmNcbkBAIC00NCw2ICs0NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdHhnYmV2Zl9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSB3eF94bWl0X2ZyYW1lLFxuIFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcbiBcdC5uZG9fc2V0X21hY19hZGRyZXNzICAgID0gd3hfc2V0X21hY192ZixcbitcdC5uZG9fZ2V0X3N0YXRzNjQgICAgICAgID0gd3hfZ2V0X3N0YXRzNjQsXG4gfTtcbiBcbiBzdGF0aWMgdm9pZCB0eGdiZXZmX3NldF9udW1fcXVldWVzKHN0cnVjdCB3eCAqd3gpXG5AQCAtMjU1LDYgKzI1Niw3IEBAIHN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdHd4LVx1MDAzZWRyaXZlcl9uYW1lID0gS0JVSUxEX01PRE5BTUU7XG4gXHR3eF9zZXRfZXRodG9vbF9vcHNfdmYobmV0ZGV2KTtcbiBcdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dHhnYmV2Zl9uZXRkZXZfb3BzO1xuK1x0d3hfc2V0X3N0YXRfb3BzKG5ldGRldik7XG4gXG4gXHQvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cbiBcdGVyciA9IHR4Z2JldmZfc3dfaW5pdCh3eCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNTowOTo1Ni40OTAzMzMyMDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Mzc2ODcxNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIGEgZmV3IFdhbmd4dW4gRXRoZXJuZXQgZHJpdmVycyDigJMgYG5nYmVgLCBgdHhnYmVgLCB0aGVpciBWRiBjb3VudGVycGFydHMsIGFsbCB0aGUgdXN1YWwgc3VzcGVjdHMuIEkgc2VlIGNoYW5nZXMgaW4gdGhlIGB3eF91cGRhdGVfc3RhdHNgLCBgd3hfZ2V0X3N0YXRzNjRgLCBhbmQgdmFyaW91cyBxdWV1ZSBzdGF0IGZ1bmN0aW9ucywgYWxvbmcgd2l0aCBzdXNwZW5kL3Jlc3VtZSBhbmQgc2VydmljZSB0YXNrcy4gVGhlIGNoYW5nZXMgYWxzbyBpbmNsdWRlIHNldHRpbmcgc29tZSBzdGF0IG9wcyBkdXJpbmcgcHJvYmUgY2FsbHMuIEF0IGZpcnN0IGdsYW5jZSwgaXQgbG9va3MgbGlrZSBhIHR5cGljYWwgZHJpdmVyIHVwZGF0ZS5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gV2FuZ3h1bj8gVGhhdCdzIGEgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEV0aGVybmV0IGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSBQQ0llLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZXNlIGRyaXZlcnMgYWN0dWFsbHkgKnJlbGV2YW50KiBpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgbGlrZSBHQ0Ugb3IgUUVNVT8gSSBrbm93IFFFTVUgZW11bGF0ZXMgdGhlIHVzdWFsIHN1c3BlY3RzIGxpa2UgZTEwMDAsIHZpcnRpby1uZXQsIGV0Yy4sIGJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgV2FuZ3h1biBvbiB0aGF0IGxpc3QuIEkgd291bGQgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIFFFTVUgc291cmNlIHRvIGJlIDEwMCUgc3VyZSwgYnV0IHRoYXQncyBub3QgcmVhZGlseSBhdmFpbGFibGUuIEFsc28sIFdhbmd4dW4gaXMgYSBDaGluZXNlIHZlbmRvci4gVGhlIGxpa2VsaWhvb2Qgb2YgdGhlbSBiZWluZyBpbmNsdWRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgaW1wbGVtZW50YXRpb24gaXMgbG93LlxuXG5NeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgV2FuZ3h1biBpcyBhIHBoeXNpY2FsIGNhcmQuIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIGl0LlxuXG5Mb29raW5nIGJhY2sgYXQgdGhlIGluc3RydWN0aW9ucywgaXQgc3RhdGVzIHRoYXQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMg4oCTIGFyZSB0byBiZSBtYXJrZWQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIEFuZCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyBhcyBhIGRpc3F1YWxpZmllci5cblxuR2l2ZW4gdGhhdCBXYW5neHVuJ3MgZHJpdmVycyBhcmUgZGVmaW5pdGl2ZWx5IGZvciBwaHlzaWNhbCBQQ0llIEV0aGVybmV0IGhhcmR3YXJlLCBhbmQgc2luY2UgUUVNVSBkb2VzICpub3QqIGVtdWxhdGUgV2FuZ3h1biwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gdGhlIGVudmlyb25tZW50cyB3ZSdyZSBmdXp6aW5nLiBNeSBkZWNpc2lvbiBpcyBjbGVhcjogdGhpcyBwYXRjaCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZS5cblxuVGhlcmVmb3JlLCB0aGUgcGF0Y2ggaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSB1cGRhdGVkIHN0YXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGlzIHBhdGNoIGFyZSBmb3IgcGh5c2ljYWwgY2FyZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NTgsIk91dHB1dFRva2VucyI6ODAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxNToxMDowNS44NjcyMDc3MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXYW5neHVuIChuZ2JlL3R4Z2JlKSBFdGhlcm5ldCBkcml2ZXJzLCB3aGljaCBhcmUgZm9yIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdhbmd4dW4gKG5nYmUvdHhnYmUpIEV0aGVybmV0IGRyaXZlcnMsIHdoaWNoIGFyZSBmb3IgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow9hpg5[1] Phase: Running StartedAt: 2026-08-01 15:10:34 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9hpg5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-01 15:10:34 +0000 UTC FinishedAt: 2026-08-01 15:10:39 +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,}