Name: series-workflowtcjqx Phase: Failed StartedAt: 2026-07-21 19:13:01 +0000 UTC FinishedAt: 2026-07-21 19:38:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtcjqx[0] Phase: Succeeded StartedAt: 2026-07-21 19:13:01 +0000 UTC FinishedAt: 2026-07-21 19:38:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtcjqx[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 19:13:01 +0000 UTC FinishedAt: 2026-07-21 19:38:14 +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+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiAoQWRtaW4gRnVuY3Rpb24pIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCBpbXBvc3NpYmxlIHRvIGZ1enouJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTI4YWZmZTRmYzU4ZTMyNjI2MDk1ZDg0MTA3NmE5NDdiNTBlYTYwNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE5OjMwOjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuQEAgLTUxOCw2ICYjNDM7NTE4LDE4IEBAIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7aW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XG4mIzQzO1xuJiM0MztcdGlmICghaXNfbG1hY192YWxpZChjZ3gsIGxtYWNfaWQpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdCpwa2luZCA9IGNneF9yZWFkKGNneCwgbG1hY19pZCwgY2d4LVx1MDAzZW1hY19vcHMtXHUwMDNlcnhpZF9tYXBfb2Zmc2V0KTtcbiYjNDM7XHQqcGtpbmQgPSAqcGtpbmQgXHUwMDI2IDB4M0Y7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHU4IGNneF9nZXRfbG1hY190eXBlKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKVxuIHtcbiBcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG5AQCAtMTQxLDYgJiM0MzsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTtcbiBpbnQgY2d4X2dldF9sbWFjX2NudCh2b2lkICpjZ3hkKTtcbiB2b2lkICpjZ3hfZ2V0X3BkYXRhKGludCBjZ3hfaWQpO1xuIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7XG4mIzQzO2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpO1xuIGludCBjZ3hfbG1hY19ldmhfcmVnaXN0ZXIoc3RydWN0IGNneF9ldmVudF9jYiAqY2IsIHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcbiBpbnQgY2d4X2xtYWNfZXZoX3VucmVnaXN0ZXIodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpO1xuIGludCBjZ3hfZ2V0X3R4X3N0YXRzKHZvaWQgKmNneGQsIGludCBsbWFjX2lkLCBpbnQgaWR4LCB1NjQgKnR4X3N0YXQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbmluZGV4IDdmMzUwNWFlNjg2MDQyLi45ZDViN2I1MWJkZmE1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuQEAgLTExMTUsNiAmIzQzOzExMTUsOCBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0IHU4ICppbnRmLCB1OCAqZW5hKTtcbiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTtcbiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuJiM0Mztib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZCk7XG4mIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjg3ZDIxODg5ZGM0OWUyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbkBAIC0xMzU1LDMgJiM0MzsxMzU1LDgyIEBAIHZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuIFx0aWYgKG1hY19vcHMtXHUwMDNlbWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpXG4gXHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlc2V0IE1BQ1xcblwmIzM0Oyk7XG4gfVxuJiM0MztcbiYjNDM7LyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4gVkZzIG11c3Qgbm90IHByb2dyYW1cbiYjNDM7ICogTlBDX1RYX0RFRl9QS0lORCBvbiBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyBpbiB0aGF0IGNhc2U6IHRoZSBQRiBvd25zXG4mIzQzOyAqIHBhcnNlIG1vZGUgYW5kIG5vIHNlcGFyYXRlIE5QQ19UWF9ISUdJR19QS0lORCBpcyBpbnN0YWxsZWQgb24gdGhlIFZGIExGLlxuJiM0MzsgKiBUWC1wYXJzZSBjYWxsZXJzIHNraXAgdGhlIHdyaXRlIHdoZW4gZGVuaWVkOyBydnVfbGZfcmVzZXQoKSBjbGVhcnMgZWFjaCBMRlxuJiM0MzsgKiBiZWZvcmUgYWxsb2Mgc28gdGhlIG5leHQgcGVybWl0dGVkIG93bmVyIHByb2dyYW1zIE5QQ19UWF9ERUZfUEtJTkQuXG4mIzQzOyAqL1xuJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XG4mIzQzO1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuJiM0MztcdHZvaWQgKmNneGQ7XG4mIzQzO1xuJiM0MztcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4mIzQzO1xuJiM0MztcdGlmICghKHBjaWZ1bmMgXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuJiM0MztcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiYjNDM7XHRlcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsIFx1MDAyNnJ4cGtpbmQpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAocnhwa2luZCkge1xuJiM0MztcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuJiM0MztcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cbiYjNDM7ICovXG4mIzQzO2Jvb2wgcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHBraW5kKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XG4mIzQzO1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneGQ7XG4mIzQzO1xuJiM0MztcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4mIzQzO1xuJiM0MztcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4mIzQzO1x0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0aWYgKCFpc192ZihwY2lmdW5jKSlcbiYjNDM7XHRcdGdvdG8gc2V0O1xuJiM0MztcbiYjNDM7XHRlcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsIFx1MDAyNnJ4cGtpbmQpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIGVycjtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChyeHBraW5kKSB7XG4mIzQzO1x0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XG4mIzQzO1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztzZXQ6XG4mIzQzO1x0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7ZXJyOlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuaW5kZXggNmEwY2UyNjY1MDMxZDYuLmQxZGU5Yzk4OTRiZGM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbkBAIC0zNjMsOCAmIzQzOzM2Myw4IEBAIHN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9jbnQgPSAxO1xuIFx0XHRyc3AtXHUwMDNldHhfbGluayA9IGNneF9pZCAqIGh3LVx1MDAzZWxtYWNfcGVyX2NneCAmIzQzOyBsbWFjX2lkO1xuIFxuLVx0XHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XG4tXHRcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xuJiM0MztcdFx0aWYgKHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcGtpbmQpKVxuJiM0MztcdFx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5JWF9JTlRGX1RZUEVfTEJLOlxuIFx0XHR2ZiA9IChwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTtcbkBAIC0xNTA1LDEzICYjNDM7MTUwNSwxNSBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JlcSAqcmVxLFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JzcCAqcnNwKVxuIHtcbi1cdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMDtcbiYjNDM7XHRpbnQgbml4bGYsIHFpbnRzLCBod2N0eF9zaXplLCBpbnRmLCByYyA9IDAsIHBmO1xuIFx0dTE2IGJjYXN0LCBtY2FzdCwgcHJvbWlzYywgdWNhc3Q7XG4gXHRzdHJ1Y3QgcnZ1X2h3aW5mbyAqaHcgPSBydnUtXHUwMDNlaHc7XG4gXHR1MTYgcGNpZnVuYyA9IHJlcS1cdTAwM2VoZHIucGNpZnVuYztcbiYjNDM7XHR1OCBjZ3hfaWQgPSAwLCBsbWFjX2lkID0gMDtcbiBcdGJvb2wgcnVsZXNfY3JlYXRlZCA9IGZhbHNlO1xuIFx0c3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmY7XG4mIzQzO1x0c3RydWN0IGNneCAqY2d4ZDtcbiBcdHU2NCBjZmcsIGN0eF9jZmc7XG4gXHRpbnQgYmxrYWRkcjtcbiBcbkBAIC0xNjg1LDggJiM0MzsxNjg3LDE5IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4gXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLVx1MDAzZXJ4X2NmZyk7XG4gXG4gXHQvKiBDb25maWd1cmUgcGtpbmQgZm9yIFRYIHBhcnNlIGNvbmZpZyAqL1xuLVx0Y2ZnID0gTlBDX1RYX0RFRl9QS0lORDtcbi1cdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xuJiM0MztcbiYjNDM7XHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XG4mIzQzO1x0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4mIzQzO1x0XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpIHtcbiYjNDM7XHRcdFx0Y2ZnID0gTlBDX1RYX0RFRl9QS0lORDtcbiYjNDM7XHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKSB7XG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbmluZGV4IGM3YmMwYjNhMjliOTg0Li4zODU1NGQ1MTE2NGUxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5AQCAtMTksNiAmIzQzOzE5LDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtjbjIway9ucGMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3J2dV9ucGMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2NuMjBrL3JlZy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2xtYWNfY29tbW9uLmhcJiMzNDtcbiBcbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9QRlx0MyAvKiBCcm9hZGNhc3QsIFByb21pc2MgYW5kIEFsbE11bHRpY2FzdCAqL1xuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX05JWExGXHQxIC8qIFVjYXN0IGZvciBMRnMgKi9cbkBAIC00MjAwLDEwICYjNDM7NDIwMSwxMSBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxuIFxuIHtcbiBcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xuLVx0aW50IGJsa2FkZHIsIG5peGxmLCByYywgaW50Zl9tb2RlO1xuIFx0aW50IHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4mIzQzO1x0aW50IGJsa2FkZHIsIG5peGxmLCByYywgaW50Zl9tb2RlO1xuJiM0MztcdHU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwO1xuIFx0dTY0IHJ4cGtpbmQsIHR4cGtpbmQ7XG4tXHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XG4mIzQzO1x0c3RydWN0IGNneCAqY2d4ZDtcbiBcbiBcdC8qIHVzZSBkZWZhdWx0IHBraW5kIHRvIGRpc2FibGUgZWRzYS9oaWdpZyAqL1xuIFx0cnhwa2luZCA9IHJ2dV9ucGNfZ2V0X3BraW5kKHJ2dSwgcGYpO1xuQEAgLTQyMjcsMTIgJiM0Mzs0MjI5LDggQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcbiBcdFx0LyogcnggcGtpbmQgc2V0IHJlcSB2YWxpZCBvbmx5IGZvciBjZ3ggbWFwcGVkIFBGcyAqL1xuIFx0XHRpZiAoIWlzX2NneF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXG4gXHRcdFx0cmV0dXJuIDA7XG4tXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi1cbi1cdFx0cmMgPSBjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLFxuLVx0XHRcdFx0ICAgcnhwa2luZCk7XG4tXHRcdGlmIChyYylcbi1cdFx0XHRyZXR1cm4gcmM7XG4mIzQzO1x0XHRpZiAoIXJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcnhwa2luZCkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuIFx0aWYgKGRpciBcdTAwMjYgUEtJTkRfVFgpIHtcbkBAIC00MjQxLDggJiM0Mzs0MjM5LDE5IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXHRcdGlmIChyYylcbiBcdFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuLVx0XHRcdCAgICB0eHBraW5kKTtcbiYjNDM7XHRcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XG4mIzQzO1x0XHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLFxuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNmxtYWNfaWQpO1xuJiM0MztcdFx0XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XG4mIzQzO1x0XHRcdG11dGV4X2xvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxuJiM0MztcdFx0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuJiM0MztcdFx0XHRcdFx0ICAgIHR4cGtpbmQpO1xuJiM0MztcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuJiM0MztcdFx0XHRcdCAgICB0eHBraW5kKTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdHBmdmYtXHUwMDNlaW50Zl9tb2RlID0gaW50Zl9tb2RlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYgKEFkbWluIEZ1bmN0aW9uKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgaW1wb3NzaWJsZSB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTI4YWZmZTRmYzU4ZTMyNjI2MDk1ZDg0MTA3NmE5NDdiNTBlYTYwNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDE5OjMwOjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYwppbmRleCAyZTk0ZDUxMDUwMTZiZi4uZjVmZDYxMzhjMzUyZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCkBAIC01MTgsNiAmIzQzOzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKQomIzQzO3sKJiM0MzsJc3RydWN0IGNneCAqY2d4ID0gY2d4ZDsKJiM0MzsKJiM0MzsJaWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJKnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtJmd0O21hY19vcHMtJmd0O3J4aWRfbWFwX29mZnNldCk7CiYjNDM7CSpwa2luZCA9ICpwa2luZCAmYW1wOyAweDNGOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpCiB7CiAJc3RydWN0IGNneCAqY2d4ID0gY2d4ZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgKaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaApAQCAtMTQxLDYgJiM0MzsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTsKIGludCBjZ3hfZ2V0X2xtYWNfY250KHZvaWQgKmNneGQpOwogdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTsKIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7CiYjNDM7aW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7CiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7CiBpbnQgY2d4X2xtYWNfZXZoX3VucmVnaXN0ZXIodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpOwogaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCmluZGV4IDdmMzUwNWFlNjg2MDQyLi45ZDViN2I1MWJkZmE1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKQEAgLTExMTUsNiAmIzQzOzExMTUsOCBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sCiAJCQkgdTggKmludGYsIHU4ICplbmEpOwogaW50IG5wY19jb25maWdfY250cl9kZWZhdWx0X2VudHJpZXMoc3RydWN0IHJ2dSAqcnZ1LCBib29sIGVuYWJsZSk7CiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpOwomIzQzO2Jvb2wgcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHBraW5kKTsKJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTsKIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7CiB1MzIgIHJ2dV9jZ3hfZ2V0X2ZpZm9sZW4oc3RydWN0IHJ2dSAqcnZ1KTsKIHZvaWQgKnJ2dV9maXJzdF9jZ3hfcGRhdGEoc3RydWN0IHJ2dSAqcnZ1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwppbmRleCA0ZmYzOTM1ZWQzZmU4NC4uODdkMjE4ODlkYzQ5ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMKQEAgLTEzNTUsMyAmIzQzOzEzNTUsODIgQEAgdm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpCiAJaWYgKG1hY19vcHMtJmd0O21hY19yZXNldChjZ3hkLCBsbWFjLCAhaXNfdmYocGNpZnVuYykpKQogCQlkZXZfZXJyKHJ2dS0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byByZXNldCBNQUNcbiYjMzQ7KTsKIH0KJiM0MzsKJiM0MzsvKiBEbyBub3QgYWxsb3cgQ0dYLW1hcHBlZCBWRnMgdG8gb3ZlcndyaXRlIFBLSU5EIHdoZW4gc3BlY2lhbCBwYXJzZSBraW5kcwomIzQzOyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuIFZGcyBtdXN0IG5vdCBwcm9ncmFtCiYjNDM7ICogTlBDX1RYX0RFRl9QS0lORCBvbiBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyBpbiB0aGF0IGNhc2U6IHRoZSBQRiBvd25zCiYjNDM7ICogcGFyc2UgbW9kZSBhbmQgbm8gc2VwYXJhdGUgTlBDX1RYX0hJR0lHX1BLSU5EIGlzIGluc3RhbGxlZCBvbiB0aGUgVkYgTEYuCiYjNDM7ICogVFgtcGFyc2UgY2FsbGVycyBza2lwIHRoZSB3cml0ZSB3aGVuIGRlbmllZDsgcnZ1X2xmX3Jlc2V0KCkgY2xlYXJzIGVhY2ggTEYKJiM0MzsgKiBiZWZvcmUgYWxsb2Mgc28gdGhlIG5leHQgcGVybWl0dGVkIG93bmVyIHByb2dyYW1zIE5QQ19UWF9ERUZfUEtJTkQuCiYjNDM7ICovCiYjNDM7Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYykKJiM0Mzt7CiYjNDM7CWludCBwZiwgZXJyLCByeHBraW5kOwomIzQzOwl1OCBjZ3hfaWQsIGxtYWNfaWQ7CiYjNDM7CXZvaWQgKmNneGQ7CiYjNDM7CiYjNDM7CXBmID0gcnZ1X2dldF9wZihydnUtJmd0O3BkZXYsIHBjaWZ1bmMpOwomIzQzOwomIzQzOwlpZiAoIShwY2lmdW5jICZhbXA7IFJWVV9QRlZGX0ZVTkNfTUFTSykpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJaWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJcnZ1X2dldF9jZ3hfbG1hY19pZChydnUtJmd0O3BmMmNneGxtYWNfbWFwW3BmXSwgJmFtcDtjZ3hfaWQsICZhbXA7bG1hY19pZCk7CiYjNDM7CWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKJiM0MzsJZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCAmYW1wO3J4cGtpbmQpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlzd2l0Y2ggKHJ4cGtpbmQpIHsKJiM0MzsJY2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6CiYjNDM7CWNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKiBEbyBub3QgYWxsb3cgQ0dYLW1hcHBlZCBWRnMgdG8gb3ZlcndyaXRlIFBLSU5EIHdoZW4gc3BlY2lhbCBwYXJzZSBraW5kcwomIzQzOyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuCiYjNDM7ICovCiYjNDM7Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpCiYjNDM7ewomIzQzOwlpbnQgcGYsIGVyciwgcnhwa2luZDsKJiM0MzsJdTggY2d4X2lkLCBsbWFjX2lkOwomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3hkOwomIzQzOwomIzQzOwlwZiA9IHJ2dV9nZXRfcGYocnZ1LSZndDtwZGV2LCBwY2lmdW5jKTsKJiM0MzsKJiM0MzsJaWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLCAmYW1wO2xtYWNfaWQpOwomIzQzOwljZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJaWYgKCFpc192ZihwY2lmdW5jKSkKJiM0MzsJCWdvdG8gc2V0OwomIzQzOwomIzQzOwllcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsICZhbXA7cnhwa2luZCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGVycjsKJiM0MzsKJiM0MzsJc3dpdGNoIChyeHBraW5kKSB7CiYjNDM7CWNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOgomIzQzOwljYXNlIE5QQ19SWF9FRFNBX1BLSU5EOgomIzQzOwkJZ290byBlcnI7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzO3NldDoKJiM0MzsJY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7ZXJyOgomIzQzOwltdXRleF91bmxvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIGZhbHNlOwomIzQzO30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwppbmRleCA2YTBjZTI2NjUwMzFkNi4uZDFkZTljOTg5NGJkYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMKQEAgLTM2Myw4ICYjNDM7MzYzLDggQEAgc3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZiwKIAkJcGZ2Zi0mZ3Q7dHhfY2hhbl9jbnQgPSAxOwogCQlyc3AtJmd0O3R4X2xpbmsgPSBjZ3hfaWQgKiBody0mZ3Q7bG1hY19wZXJfY2d4ICYjNDM7IGxtYWNfaWQ7CiAKLQkJY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpOwotCQlydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTsKJiM0MzsJCWlmIChydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChydnUsIHBjaWZ1bmMsIHBraW5kKSkKJiM0MzsJCQlydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTsKIAkJYnJlYWs7CiAJY2FzZSBOSVhfSU5URl9UWVBFX0xCSzoKIAkJdmYgPSAocGNpZnVuYyAmYW1wOyBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTsKQEAgLTE1MDUsMTMgJiM0MzsxNTA1LDE1IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsCiAJCQkJICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JlcSAqcmVxLAogCQkJCSAgc3RydWN0IG5peF9sZl9hbGxvY19yc3AgKnJzcCkKIHsKLQlpbnQgbml4bGYsIHFpbnRzLCBod2N0eF9zaXplLCBpbnRmLCByYyA9IDA7CiYjNDM7CWludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMCwgcGY7CiAJdTE2IGJjYXN0LCBtY2FzdCwgcHJvbWlzYywgdWNhc3Q7CiAJc3RydWN0IHJ2dV9od2luZm8gKmh3ID0gcnZ1LSZndDtodzsKIAl1MTYgcGNpZnVuYyA9IHJlcS0mZ3Q7aGRyLnBjaWZ1bmM7CiYjNDM7CXU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwOwogCWJvb2wgcnVsZXNfY3JlYXRlZCA9IGZhbHNlOwogCXN0cnVjdCBydnVfYmxvY2sgKmJsb2NrOwogCXN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZjsKJiM0MzsJc3RydWN0IGNneCAqY2d4ZDsKIAl1NjQgY2ZnLCBjdHhfY2ZnOwogCWludCBibGthZGRyOwogCkBAIC0xNjg1LDggJiM0MzsxNjg3LDE5IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsCiAJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS0mZ3Q7cnhfY2ZnKTsKIAogCS8qIENvbmZpZ3VyZSBwa2luZCBmb3IgVFggcGFyc2UgY29uZmlnICovCi0JY2ZnID0gTlBDX1RYX0RFRl9QS0lORDsKLQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTsKJiM0MzsKJiM0MzsJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CiYjNDM7CWlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHsKJiM0MzsJCXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLCAmYW1wO2xtYWNfaWQpOwomIzQzOwkJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwkJaWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7CiYjNDM7CQkJY2ZnID0gTlBDX1RYX0RFRl9QS0lORDsKJiM0MzsJCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTsKJiM0MzsJCX0KJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwl9CiAKIAlpZiAoaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKSB7CiAJCXBmdmYtJmd0O3R4X2NoYW5fYmFzZSA9IFJWVV9TV0lUQ0hfTEJLX0NIQU47CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMKaW5kZXggYzdiYzBiM2EyOWI5ODQuLjM4NTU0ZDUxMTY0ZTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jCkBAIC0xOSw2ICYjNDM7MTksNyBAQAogI2luY2x1ZGUgJiMzNDtjbjIway9ucGMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3J2dV9ucGMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2NuMjBrL3JlZy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2xtYWNfY29tbW9uLmgmIzM0OwogCiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9QRgkzIC8qIEJyb2FkY2FzdCwgUHJvbWlzYyBhbmQgQWxsTXVsdGljYXN0ICovCiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRgkxIC8qIFVjYXN0IGZvciBMRnMgKi8KQEAgLTQyMDAsMTAgJiM0Mzs0MjAxLDExIEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsCiAKIHsKIAlzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTsKLQlpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7CiAJaW50IHBmID0gcnZ1X2dldF9wZihydnUtJmd0O3BkZXYsIHBjaWZ1bmMpOwomIzQzOwlpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7CiYjNDM7CXU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwOwogCXU2NCByeHBraW5kLCB0eHBraW5kOwotCXU4IGNneF9pZCwgbG1hY19pZDsKJiM0MzsJc3RydWN0IGNneCAqY2d4ZDsKIAogCS8qIHVzZSBkZWZhdWx0IHBraW5kIHRvIGRpc2FibGUgZWRzYS9oaWdpZyAqLwogCXJ4cGtpbmQgPSBydnVfbnBjX2dldF9wa2luZChydnUsIHBmKTsKQEAgLTQyMjcsMTIgJiM0Mzs0MjI5LDggQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpciwKIAkJLyogcnggcGtpbmQgc2V0IHJlcSB2YWxpZCBvbmx5IGZvciBjZ3ggbWFwcGVkIFBGcyAqLwogCQlpZiAoIWlzX2NneF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpCiAJCQlyZXR1cm4gMDsKLQkJcnZ1X2dldF9jZ3hfbG1hY19pZChydnUtJmd0O3BmMmNneGxtYWNfbWFwW3BmXSwgJmFtcDtjZ3hfaWQsICZhbXA7bG1hY19pZCk7Ci0KLQkJcmMgPSBjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLAotCQkJCSAgIHJ4cGtpbmQpOwotCQlpZiAocmMpCi0JCQlyZXR1cm4gcmM7CiYjNDM7CQlpZiAoIXJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcnhwa2luZCkpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJaWYgKGRpciAmYW1wOyBQS0lORF9UWCkgewpAQCAtNDI0MSw4ICYjNDM7NDIzOSwxOSBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLAogCQlpZiAocmMpCiAJCQlyZXR1cm4gcmM7CiAKLQkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksCi0JCQkgICAgdHhwa2luZCk7CiYjNDM7CQlpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpICZhbXA7JmFtcDsgaXNfdmYocGNpZnVuYykpIHsKJiM0MzsJCQlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwKJiM0MzsJCQkJCSAgICAmYW1wO2xtYWNfaWQpOwomIzQzOwkJCWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKJiM0MzsJCQltdXRleF9sb2NrKCZhbXA7Y2d4ZC0mZ3Q7bG9jayk7CiYjNDM7CQkJaWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKQomIzQzOwkJCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwKJiM0MzsJCQkJCSAgICB0eHBraW5kKTsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksCiYjNDM7CQkJCSAgICB0eHBraW5kKTsKJiM0MzsJCX0KIAl9CiAKIAlwZnZmLSZndDtpbnRmX21vZGUgPSBpbnRmX21vZGU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNjgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiBkcml2ZXIuIEl0IHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gcHJldmVudGluZyBjb25mbGljdHMgd2hlbiB1c2luZyBDR1gtbWFwcGVkIFZGcywgc3BlY2lmaWNhbGx5IHdoZW4gdGhvc2Ugc2hhcmVkIExNQUNzIGFyZSBkZWFsaW5nIHdpdGggc3BlY2lhbCBwYXJzZSBraW5kcyBsaWtlIEhpR2lnIG9yIEVEU0EuIFRoZSBhZGRlZCBjaGVja3MgYXJlIHRvIHByb3RlY3QgdGhlIFBLSU5EIGZyb20gYmVpbmcgb3ZlcndyaXR0ZW4uIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGBjZ3hfZ2V0X3BraW5kYCwgYHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZGAsIGBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZGAsIGBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvY2AsIGFuZCBgcnZ1X25wY19zZXRfcGFyc2VfbW9kZWAuCgpOb3cgdGhlIHF1ZXN0aW9uIGlzLCBob3cgbGlrZWx5IGlzIHRoaXMgY29kZSBwYXRoIHRvIGFjdHVhbGx5IGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXRoIHRoZXNlIGtpbmRzIG9mIGhhcmR3YXJlLXNwZWNpZmljIG5ldHdvcmsgZHJpdmVycywgaXQmIzM5O3MgdXN1YWxseSBhIGdpdmVuIHRoYXQgdGhleSB3b24mIzM5O3QgYmUgcmVhY2hhYmxlIHVubGVzcyB5b3UmIzM5O3ZlIGdvdCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIGdvb2QgZW11bGF0aW9uIGxheWVyIGluIHBsYWNlLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIgaGFzIGFueSBraW5kIG9mIHZpcnR1YWwgZW11bGF0aW9uIHN1cHBvcnQgb3IgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgdGllZCB0byB0aGUgUENJIElEcyBvZiB0aGUgcGh5c2ljYWwgT2N0ZW9uVFgyIGhhcmR3YXJlLiAKClRoZSBkcml2ZXIgaXMsIGFmdGVyIGFsbCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUsIHN0YXJ0aW5nIHdpdGggc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jYCB0byBzZWUgaG93IHRoZSBkcml2ZXIgYmluZHMgdG8gdGhlIGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSByZWFjaGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFX0lEX1JWVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg2NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSBNYXJ2ZWxsIE9jdGVvbnR4MiBFdGhlcm5ldCBEcml2ZXIqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgaG93IHRoZSBNYXJ2ZWxsIE9jdGVvbnR4MiBFdGhlcm5ldCBkcml2ZXIgaGFuZGxlcyBQQ0kgZGV2aWNlIGlkZW50aWZpY2F0aW9uLiBUbyByZWZyZXNoIG15IG1lbW9yeSBhbmQgdW5kZXJzdGFuZCB0aGUgZmxvdywgSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNgLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiBob3cgdGhlIGRyaXZlciBkZWZpbmVzIGFuZCB1dGlsaXplcyB0aGUgYHBjaV9kZXZpY2VfaWRgIHN0cnVjdHVyZS4gSSBleHBlY3QgdGhpcyB3aWxsIHJldmVhbCB0aGUgcmVjb2duaXplZCBoYXJkd2FyZSBJRHMsIGFuZCBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCB0aGUgbWF0Y2hpbmcgbG9naWMgdXNlZCB3aGVuIHRoZSBzeXN0ZW0gZW51bWVyYXRlcyBhbmQgZGlzY292ZXJzIHRoZSBuZXR3b3JrIGludGVyZmFjZXMuIEFyZSB0aGV5IHVzaW5nIHRoZSBzdGFuZGFyZCBQQ0kgdmVuZG9yL2RldmljZSBJRCBwYWlycz8gUGVyaGFwcyB0aGV5JiMzOTt2ZSBnb3Qgc29tZSBtb3JlIHNwZWNpZmljIHN1YnZlbmRvci9zdWJkZXZpY2UgSURzIGluIHRoZXJlIHRvIGhhbmRsZSB0aGUgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBmYW1pbHkgb2YgTklDcz8gVGhpcyBmaWxlIHNob3VsZCBoYXZlIGFsbCB0aGUgYW5zd2Vycy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBydnVfbWJveF9pbnRyX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcnZ1X2lycSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtNDMtLyogU3VwcG9ydGVkIGRldmljZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ1LVx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNTQ1PXN0YXRpYyBhdG9taWNfdCBkZXZpY2VfYm91bmQgPSBBVE9NSUNfSU5JVCgwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM1NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNTQ3OnN0YXRpYyBpbnQgcnZ1X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNTQ4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTQzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIE9jdGVvblRYMiBSVlUgQUYgRHJpdmVyIGFuZCBTeXprYWxsZXIgQ29tcGF0aWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgZHJpdmVyIGJpbmRzIHRvIHRoZSBgUENJX1ZFTkRPUl9JRF9DQVZJVU1gIGFuZCBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgIGRldmljZSBJRHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoZXJlIGFueSBraW5kIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyB0aGluZywgZWl0aGVyIGluIFFFTVUgb3IgcGVyaGFwcyBpbiB0aGUga2VybmVsIGl0c2VsZj8mIzM0OyBBZnRlciBhbGwsIGRlYnVnZ2luZyB0aGlzIGtpbmQgb2YgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHdpdGhvdXQgYSBzdWl0YWJsZSBlbnZpcm9ubWVudCBpcyBhIG5pZ2h0bWFyZS4gSG1tLCBub3BlLCBpdCBsb29rcyBsaWtlIHRoZSBPY3Rlb25UWDIgUlZVIEFGIGlzIGEgZGVkaWNhdGVkIGhhcmR3YXJlIGNvbXBvbmVudCDigJMgYSBSZXNvdXJjZSBWaXJ0dWFsaXphdGlvbiBVbml0IEFkbWluIEZ1bmN0aW9uIOKAkyBvbiBNYXJ2ZWxsIE9jdGVvblRYMiBTb0NzLiBOb3QgYSBjb21tb24gZW11bGF0ZWQgZGV2aWNlLgoKUmlnaHQsIHNvIHRoYXQgbWVhbnMgU3l6a2FsbGVyIGlzbiYjMzk7dCBnb2luZyB0byBoYXZlIHRoaXMgaGFyZHdhcmUgbW9kZWxlZC4gQW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgbm90IHNvbWV0aGluZyBJJiMzOTtkIGZpbmQganVzdCBydW5uaW5nIGEgc3RhbmRhcmQgR0NFIG9yIFFFTVUgVk0uIE15IG1pbmQganVtcHMgdG8sICYjMzQ7V2FpdCwgZG9lcyBTeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X21vdW50X2ltYWdlYCB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgdG91Y2ggaXQ/JiMzNDsgTm8sIHRoYXQmIzM5O3MgY29tcGxldGVseSB1bnJlbGF0ZWQuIFRoaXMgaXMgYSAqUENJIGRldmljZSogZHJpdmVyLCBub3QgYSBmaWxlIHN5c3RlbSB0aGluZy4KCkFscmlnaHQsIG1heWJlIFN5emthbGxlciBjYW4gc3RpbGwgdHJpZ2dlciB0aGlzIHZpYSBzb21lIGZvcm0gb2YgdmlydHVhbCBQQ0kgaW5qZWN0aW9uPyBEb2VzIGl0IGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlc2A/IE5vLCB0aGF0JiMzOTtzIG5vdCByaW5naW5nIGFueSBiZWxscy4gQWgsIHdhaXQsIFN5emthbGxlciAqZG9lcyogaGF2ZSB0aGUgYWJpbGl0eSB0byBpbmplY3QgUENJIGRldmljZXMgdXNpbmcgYHZoY2lgIG9yIGB2ZmlvYCwgcmlnaHQ/IEJ1dCBldmVuIGlmIHRoYXQmIzM5O3MgcG9zc2libGUsIHRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gZG8gTU1JTyByZWFkcyBhbmQgd3JpdGVzLCB3aGljaCB3aWxsIHNpbXBseSBmYWlsIG9yIGNyYXNoIGlmIHRoZSBkZXZpY2UgaXNuJiMzOTt0IHByb3Blcmx5IGVtdWxhdGVkLiBUaGF0JiMzOTtzIGEgaHVnZSBwb3RlbnRpYWwgcm9hZGJsb2NrLgoKT2theSwgYmVzdCB0byBhc3N1bWUgdGhlIHdvcnN0IC0gbGV0JiMzOTtzIHNlZSBpZiBTeXprYWxsZXIgaGFzIGFueSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBhdGggdG8gc3VjY2VzcyBhdCB0aGlzIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2N0ZW9udHgyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c3lzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY2MwoJCQkJCQkJb3V0cHV0OiA4NgoJCQkJCQkJdGhvdWdodHM6IDYxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIGEgSGFyZHdhcmUgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBjaGVja3MgcmVsYXRlZCB0byBwcmV2ZW50aW5nIFZGIG92ZXJ3cml0ZXMgb2YgUEtJTkQgd2hlbiB1c2luZyBzcGVjaWFsIHBhcnNlIGtpbmRzIG9uIHRoZSBzaGFyZWQgTE1BQy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1dhaXQsIHRoaXMgaXMgT2N0ZW9uVFgyIHNwZWNpZmljISYjMzQ7IFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0aGlzIGNvZGUgKmNvdWxkKiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGJlY2F1c2UgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgdGllZCB0byB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIGZ1enppbmcgaXQgaXMgYSBub24tc3RhcnRlci4KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGFzc2VzcyB0aGUgcG9zc2liaWxpdHkgb2YgZW11bGF0aW9uLiBEb2VzIEdDRSwgUUVNVSwgb3IgZXZlbiBzeXprYWxsZXIgaGF2ZSBhbnkgc3VwcG9ydCBmb3IgdGhpcz8gSSBzZWFyY2ggYHN5cy9gIGZvciBtZW50aW9ucyBvZiBgb2N0ZW9udHgyYCBidXQgaXQgbG9va3MgbGlrZSBncmVwcGVyIGlzIGEgYml0IGxpbWl0ZWQgZm9yIGBzeXMvYCwgc28gdGhhdCYjMzk7cyBub3QgYSBncmVhdCBzaWduYWwuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24sIGBydnVfcHJvYmVgLCBiaW5kcyB0byBgUENJX1ZFTkRPUl9JRF9DQVZJVU1gIGFuZCBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgLiBCaW5nbywgdGhhdCBjb25maXJtcyBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuCgpMZXQgbWUgY29uZmlybSB0aGF0IHRoZXJlIGlzIG5vIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZToKCmBgYGMKc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0gewoJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSwKCXsgMCwgfQp9OwpgYGAKClRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHBsYWluIGFuZCBzaW1wbGUuIEFuZCBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgdmlydHVhbCBkZXZpY2UgdGhhdCB3b3VsZCBtYXNxdWVyYWRlIGFzIHRoaXMgY2FyZC4gTm8gZW11bGF0aW9uIG1lYW5zIG5vIGZ1enppbmcuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIHdpdGggbm8gUUVNVSBlbXVsYXRpb24sIHRoaXMgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLiBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuIEkgYW0gY29uZmlkZW50IHRoYXQgbm8gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgY2FuIHRyaWdnZXIgdGhpcyBjb2RlLiBUaGlzIGlzIGRlZmluaXRlbHkgbm90IGZ1enphYmxlLiBUaGUgTWFydmVsbCBPY3Rlb25UWDIgQUYgZHJpdmVyLCBhcyBhIFBDSSBkZXZpY2UsIGlzIHNpbXBseSBub3QgcmVhY2hhYmxlIGJ5IFN5emthbGxlciBvciBhbnkgb3RoZXIgc3RhbmRhcmQgVk0tYmFzZWQgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYgKEFkbWluIEZ1bmN0aW9uKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgaW1wb3NzaWJsZSB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIChBZG1pbiBGdW5jdGlvbikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgYW5kIGltcG9zc2libGUgdG8gZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozMDoyNi44MDE2OTQ3OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQwNjY3MTY4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiAoQWRtaW4gRnVuY3Rpb24pIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCBpbXBvc3NpYmxlIHRvIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozMDoyNi44MDE3MDI3NjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NTQyMjkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkyOGFmZmU0ZmM1OGUzMjYyNjA5NWQ4NDEwNzZhOTQ3YjUwZWE2MDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMTk6MzA6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xcbmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXFxuQEAgLTUxOCw2ICs1MTgsMTggQEAgaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZClcXG4re1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xcbitcXG4rXFx0aWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0KnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtXFx1MDAzZW1hY19vcHMtXFx1MDAzZXJ4aWRfbWFwX29mZnNldCk7XFxuK1xcdCpwa2luZCA9ICpwa2luZCBcXHUwMDI2IDB4M0Y7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxcbmluZGV4IDkyY2NmMzQzZGZlMDRmLi44NDExYTc1ZGQ3MjNmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXFxuQEAgLTE0MSw2ICsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTtcXG4gaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7XFxuIHZvaWQgKmNneF9nZXRfcGRhdGEoaW50IGNneF9pZCk7XFxuIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7XFxuK2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpO1xcbiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XFxuIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XFxuIGludCBjZ3hfZ2V0X3R4X3N0YXRzKHZvaWQgKmNneGQsIGludCBsbWFjX2lkLCBpbnQgaWR4LCB1NjQgKnR4X3N0YXQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuaW5kZXggN2YzNTA1YWU2ODYwNDIuLjlkNWI3YjUxYmRmYTU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5AQCAtMTExNSw2ICsxMTE1LDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRcXHRcXHQgdTggKmludGYsIHU4ICplbmEpO1xcbiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTtcXG4gYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcXG4rYm9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpO1xcbitib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcXG4gYm9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKTtcXG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XFxuIHZvaWQgKnJ2dV9maXJzdF9jZ3hfcGRhdGEoc3RydWN0IHJ2dSAqcnZ1KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjg3ZDIxODg5ZGM0OWUyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbkBAIC0xMzU1LDMgKzEzNTUsODIgQEAgdm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuIFxcdGlmIChtYWNfb3BzLVxcdTAwM2VtYWNfcmVzZXQoY2d4ZCwgbG1hYywgIWlzX3ZmKHBjaWZ1bmMpKSlcXG4gXFx0XFx0ZGV2X2VycihydnUtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byByZXNldCBNQUNcXFxcblxcXCIpO1xcbiB9XFxuK1xcbisvKiBEbyBub3QgYWxsb3cgQ0dYLW1hcHBlZCBWRnMgdG8gb3ZlcndyaXRlIFBLSU5EIHdoZW4gc3BlY2lhbCBwYXJzZSBraW5kc1xcbisgKiAoSGlHaWcsIEVEU0EsIGV0Yy4pIGFyZSBpbiB1c2Ugb24gdGhlIHNoYXJlZCBMTUFDLiBWRnMgbXVzdCBub3QgcHJvZ3JhbVxcbisgKiBOUENfVFhfREVGX1BLSU5EIG9uIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHIGluIHRoYXQgY2FzZTogdGhlIFBGIG93bnNcXG4rICogcGFyc2UgbW9kZSBhbmQgbm8gc2VwYXJhdGUgTlBDX1RYX0hJR0lHX1BLSU5EIGlzIGluc3RhbGxlZCBvbiB0aGUgVkYgTEYuXFxuKyAqIFRYLXBhcnNlIGNhbGxlcnMgc2tpcCB0aGUgd3JpdGUgd2hlbiBkZW5pZWQ7IHJ2dV9sZl9yZXNldCgpIGNsZWFycyBlYWNoIExGXFxuKyAqIGJlZm9yZSBhbGxvYyBzbyB0aGUgbmV4dCBwZXJtaXR0ZWQgb3duZXIgcHJvZ3JhbXMgTlBDX1RYX0RFRl9QS0lORC5cXG4rICovXFxuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuK3tcXG4rXFx0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XFxuK1xcdHU4IGNneF9pZCwgbG1hY19pZDtcXG4rXFx0dm9pZCAqY2d4ZDtcXG4rXFxuK1xcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXG4rXFx0aWYgKCEocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbitcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXFx1MDAyNnJ4cGtpbmQpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcXG4rXFx0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XFxuK1xcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdH1cXG4rfVxcbitcXG4rLyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cXG4rICovXFxuK2Jvb2wgcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHBraW5kKVxcbit7XFxuK1xcdGludCBwZiwgZXJyLCByeHBraW5kO1xcbitcXHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XFxuK1xcdHN0cnVjdCBjZ3ggKmNneGQ7XFxuK1xcbitcXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKTtcXG4rXFxuK1xcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuK1xcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHRpZiAoIWlzX3ZmKHBjaWZ1bmMpKVxcbitcXHRcXHRnb3RvIHNldDtcXG4rXFxuK1xcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXFx1MDAyNnJ4cGtpbmQpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRnb3RvIGVycjtcXG4rXFxuK1xcdHN3aXRjaCAocnhwa2luZCkge1xcbitcXHRjYXNlIE5QQ19SWF9ISUdJR19QS0lORDpcXG4rXFx0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcXG4rXFx0XFx0Z290byBlcnI7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitzZXQ6XFxuK1xcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsIHBraW5kKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK1xcbitlcnI6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcXG5pbmRleCA2YTBjZTI2NjUwMzFkNi4uZDFkZTljOTg5NGJkYzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuQEAgLTM2Myw4ICszNjMsOCBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxcbiBcXHRcXHRwZnZmLVxcdTAwM2V0eF9jaGFuX2NudCA9IDE7XFxuIFxcdFxcdHJzcC1cXHUwMDNldHhfbGluayA9IGNneF9pZCAqIGh3LVxcdTAwM2VsbWFjX3Blcl9jZ3ggKyBsbWFjX2lkO1xcbiBcXG4tXFx0XFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xcbi1cXHRcXHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcXG4rXFx0XFx0aWYgKHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcGtpbmQpKVxcbitcXHRcXHRcXHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTklYX0lOVEZfVFlQRV9MQks6XFxuIFxcdFxcdHZmID0gKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTtcXG5AQCAtMTUwNSwxMyArMTUwNSwxNSBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuaXhfbGZfYWxsb2NfcmVxICpyZXEsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IG5peF9sZl9hbGxvY19yc3AgKnJzcClcXG4ge1xcbi1cXHRpbnQgbml4bGYsIHFpbnRzLCBod2N0eF9zaXplLCBpbnRmLCByYyA9IDA7XFxuK1xcdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMCwgcGY7XFxuIFxcdHUxNiBiY2FzdCwgbWNhc3QsIHByb21pc2MsIHVjYXN0O1xcbiBcXHRzdHJ1Y3QgcnZ1X2h3aW5mbyAqaHcgPSBydnUtXFx1MDAzZWh3O1xcbiBcXHR1MTYgcGNpZnVuYyA9IHJlcS1cXHUwMDNlaGRyLnBjaWZ1bmM7XFxuK1xcdHU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwO1xcbiBcXHRib29sIHJ1bGVzX2NyZWF0ZWQgPSBmYWxzZTtcXG4gXFx0c3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7XFxuIFxcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZjtcXG4rXFx0c3RydWN0IGNneCAqY2d4ZDtcXG4gXFx0dTY0IGNmZywgY3R4X2NmZztcXG4gXFx0aW50IGJsa2FkZHI7XFxuIFxcbkBAIC0xNjg1LDggKzE2ODcsMTkgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcXG4gXFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS1cXHUwMDNlcnhfY2ZnKTtcXG4gXFxuIFxcdC8qIENvbmZpZ3VyZSBwa2luZCBmb3IgVFggcGFyc2UgY29uZmlnICovXFxuLVxcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XFxuLVxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xcbitcXG4rXFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYyk7XFxuK1xcbitcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XFxuK1xcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4rXFx0XFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7XFxuK1xcdFxcdFxcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XFxuK1xcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xcbitcXHRcXHR9XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpIHtcXG4gXFx0XFx0cGZ2Zi1cXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXFxuaW5kZXggYzdiYzBiM2EyOWI5ODQuLjM4NTU0ZDUxMTY0ZTE3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xcbkBAIC0xOSw2ICsxOSw3IEBAXFxuICNpbmNsdWRlIFxcXCJjbjIway9ucGMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInJ2dV9ucGMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImNuMjBrL3JlZy5oXFxcIlxcbisjaW5jbHVkZSBcXFwibG1hY19jb21tb24uaFxcXCJcXG4gXFxuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX1BGXFx0MyAvKiBCcm9hZGNhc3QsIFByb21pc2MgYW5kIEFsbE11bHRpY2FzdCAqL1xcbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRlxcdDEgLyogVWNhc3QgZm9yIExGcyAqL1xcbkBAIC00MjAwLDEwICs0MjAxLDExIEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXFxuIFxcbiB7XFxuIFxcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xcbi1cXHRpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7XFxuIFxcdGludCBwZiA9IHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKTtcXG4rXFx0aW50IGJsa2FkZHIsIG5peGxmLCByYywgaW50Zl9tb2RlO1xcbitcXHR1OCBjZ3hfaWQgPSAwLCBsbWFjX2lkID0gMDtcXG4gXFx0dTY0IHJ4cGtpbmQsIHR4cGtpbmQ7XFxuLVxcdHU4IGNneF9pZCwgbG1hY19pZDtcXG4rXFx0c3RydWN0IGNneCAqY2d4ZDtcXG4gXFxuIFxcdC8qIHVzZSBkZWZhdWx0IHBraW5kIHRvIGRpc2FibGUgZWRzYS9oaWdpZyAqL1xcbiBcXHRyeHBraW5kID0gcnZ1X25wY19nZXRfcGtpbmQocnZ1LCBwZik7XFxuQEAgLTQyMjcsMTIgKzQyMjksOCBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxcbiBcXHRcXHQvKiByeCBwa2luZCBzZXQgcmVxIHZhbGlkIG9ubHkgZm9yIGNneCBtYXBwZWQgUEZzICovXFxuIFxcdFxcdGlmICghaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcXG4gXFx0XFx0XFx0cmV0dXJuIDA7XFxuLVxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4tXFxuLVxcdFxcdHJjID0gY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCxcXG4tXFx0XFx0XFx0XFx0ICAgcnhwa2luZCk7XFxuLVxcdFxcdGlmIChyYylcXG4tXFx0XFx0XFx0cmV0dXJuIHJjO1xcbitcXHRcXHRpZiAoIXJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcnhwa2luZCkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoZGlyIFxcdTAwMjYgUEtJTkRfVFgpIHtcXG5AQCAtNDI0MSw4ICs0MjM5LDE5IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXFxuIFxcdFxcdGlmIChyYylcXG4gXFx0XFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4tXFx0XFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXFxuLVxcdFxcdFxcdCAgICB0eHBraW5kKTtcXG4rXFx0XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xcbitcXHRcXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmxtYWNfaWQpO1xcbitcXHRcXHRcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRcXHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXFxuK1xcdFxcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgdHhwa2luZCk7XFxuK1xcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxcbitcXHRcXHRcXHRcXHQgICAgdHhwa2luZCk7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0cGZ2Zi1cXHUwMDNlaW50Zl9tb2RlID0gaW50Zl9tb2RlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozMDoyNy42OTgyNDQ5NDlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NDMxNzAxNTgxMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiAoQWRtaW4gRnVuY3Rpb24pIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCBpbXBvc3NpYmxlIHRvIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkyOGFmZmU0ZmM1OGUzMjYyNjA5NWQ4NDEwNzZhOTQ3YjUwZWE2MDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxOTozMDoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuQEAgLTUxOCw2ICs1MTgsMTggQEAgaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpXG4re1xuK1x0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcbitcbitcdGlmICghaXNfbG1hY192YWxpZChjZ3gsIGxtYWNfaWQpKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdCpwa2luZCA9IGNneF9yZWFkKGNneCwgbG1hY19pZCwgY2d4LVx1MDAzZW1hY19vcHMtXHUwMDNlcnhpZF9tYXBfb2Zmc2V0KTtcbitcdCpwa2luZCA9ICpwa2luZCBcdTAwMjYgMHgzRjtcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpXG4ge1xuIFx0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG5pbmRleCA5MmNjZjM0M2RmZTA0Zi4uODQxMWE3NWRkNzIzZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbkBAIC0xNDEsNiArMTQxLDcgQEAgaW50IGNneF9nZXRfY2d4aWQodm9pZCAqY2d4ZCk7XG4gaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7XG4gdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTtcbiBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpO1xuK2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpO1xuIGludCBjZ3hfbG1hY19ldmhfcmVnaXN0ZXIoc3RydWN0IGNneF9ldmVudF9jYiAqY2IsIHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcbiBpbnQgY2d4X2xtYWNfZXZoX3VucmVnaXN0ZXIodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpO1xuIGludCBjZ3hfZ2V0X3R4X3N0YXRzKHZvaWQgKmNneGQsIGludCBsbWFjX2lkLCBpbnQgaWR4LCB1NjQgKnR4X3N0YXQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbmluZGV4IDdmMzUwNWFlNjg2MDQyLi45ZDViN2I1MWJkZmE1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuQEAgLTExMTUsNiArMTExNSw4IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdFx0XHQgdTggKmludGYsIHU4ICplbmEpO1xuIGludCBucGNfY29uZmlnX2NudHJfZGVmYXVsdF9lbnRyaWVzKHN0cnVjdCBydnUgKnJ2dSwgYm9vbCBlbmFibGUpO1xuIGJvb2wgaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7XG4rYm9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpO1xuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjg3ZDIxODg5ZGM0OWUyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbkBAIC0xMzU1LDMgKzEzNTUsODIgQEAgdm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4gXHRpZiAobWFjX29wcy1cdTAwM2VtYWNfcmVzZXQoY2d4ZCwgbG1hYywgIWlzX3ZmKHBjaWZ1bmMpKSlcbiBcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZXNldCBNQUNcXG5cIik7XG4gfVxuK1xuKy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4gVkZzIG11c3Qgbm90IHByb2dyYW1cbisgKiBOUENfVFhfREVGX1BLSU5EIG9uIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHIGluIHRoYXQgY2FzZTogdGhlIFBGIG93bnNcbisgKiBwYXJzZSBtb2RlIGFuZCBubyBzZXBhcmF0ZSBOUENfVFhfSElHSUdfUEtJTkQgaXMgaW5zdGFsbGVkIG9uIHRoZSBWRiBMRi5cbisgKiBUWC1wYXJzZSBjYWxsZXJzIHNraXAgdGhlIHdyaXRlIHdoZW4gZGVuaWVkOyBydnVfbGZfcmVzZXQoKSBjbGVhcnMgZWFjaCBMRlxuKyAqIGJlZm9yZSBhbGxvYyBzbyB0aGUgbmV4dCBwZXJtaXR0ZWQgb3duZXIgcHJvZ3JhbXMgTlBDX1RYX0RFRl9QS0lORC5cbisgKi9cbitib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuK3tcbitcdGludCBwZiwgZXJyLCByeHBraW5kO1xuK1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuK1x0dm9pZCAqY2d4ZDtcbitcbitcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4rXG4rXHRpZiAoIShwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbitcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXHUwMDI2cnhwa2luZCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcbitcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuK1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rfVxuK1xuKy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cbisgKi9cbitib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZClcbit7XG4rXHRpbnQgcGYsIGVyciwgcnhwa2luZDtcbitcdHU4IGNneF9pZCwgbG1hY19pZDtcbitcdHN0cnVjdCBjZ3ggKmNneGQ7XG4rXG4rXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuK1xuK1x0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbitcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbitcdGlmICghaXNfdmYocGNpZnVuYykpXG4rXHRcdGdvdG8gc2V0O1xuK1xuK1x0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcdTAwMjZyeHBraW5kKTtcbitcdGlmIChlcnIpXG4rXHRcdGdvdG8gZXJyO1xuK1xuK1x0c3dpdGNoIChyeHBraW5kKSB7XG4rXHRjYXNlIE5QQ19SWF9ISUdJR19QS0lORDpcbitcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XG4rXHRcdGdvdG8gZXJyO1xuK1x0ZGVmYXVsdDpcbitcdFx0YnJlYWs7XG4rXHR9XG4rXG4rc2V0OlxuK1x0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRyZXR1cm4gdHJ1ZTtcbitcbitlcnI6XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiBmYWxzZTtcbit9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5pbmRleCA2YTBjZTI2NjUwMzFkNi4uZDFkZTljOTg5NGJkYzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuQEAgLTM2Myw4ICszNjMsOCBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fY250ID0gMTtcbiBcdFx0cnNwLVx1MDAzZXR4X2xpbmsgPSBjZ3hfaWQgKiBody1cdTAwM2VsbWFjX3Blcl9jZ3ggKyBsbWFjX2lkO1xuIFxuLVx0XHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XG4tXHRcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xuK1x0XHRpZiAocnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCBwa2luZCkpXG4rXHRcdFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcbiBcdFx0dmYgPSAocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7XG5AQCAtMTUwNSwxMyArMTUwNSwxNSBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JlcSAqcmVxLFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JzcCAqcnNwKVxuIHtcbi1cdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMDtcbitcdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMCwgcGY7XG4gXHR1MTYgYmNhc3QsIG1jYXN0LCBwcm9taXNjLCB1Y2FzdDtcbiBcdHN0cnVjdCBydnVfaHdpbmZvICpodyA9IHJ2dS1cdTAwM2VodztcbiBcdHUxNiBwY2lmdW5jID0gcmVxLVx1MDAzZWhkci5wY2lmdW5jO1xuK1x0dTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7XG4gXHRib29sIHJ1bGVzX2NyZWF0ZWQgPSBmYWxzZTtcbiBcdHN0cnVjdCBydnVfYmxvY2sgKmJsb2NrO1xuIFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmO1xuK1x0c3RydWN0IGNneCAqY2d4ZDtcbiBcdHU2NCBjZmcsIGN0eF9jZmc7XG4gXHRpbnQgYmxrYWRkcjtcbiBcbkBAIC0xNjg1LDggKzE2ODcsMTkgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcbiBcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9SWF9DRkcobml4bGYpLCByZXEtXHUwMDNlcnhfY2ZnKTtcbiBcbiBcdC8qIENvbmZpZ3VyZSBwa2luZCBmb3IgVFggcGFyc2UgY29uZmlnICovXG4tXHRjZmcgPSBOUENfVFhfREVGX1BLSU5EO1xuLVx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXG4rXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuK1xuK1x0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xuK1x0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4rXHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0XHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpIHtcbitcdFx0XHRjZmcgPSBOUENfVFhfREVGX1BLSU5EO1xuK1x0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xuK1x0XHR9XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0fVxuIFxuIFx0aWYgKGlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSkge1xuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fYmFzZSA9IFJWVV9TV0lUQ0hfTEJLX0NIQU47XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5pbmRleCBjN2JjMGIzYTI5Yjk4NC4uMzg1NTRkNTExNjRlMTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuQEAgLTE5LDYgKzE5LDcgQEBcbiAjaW5jbHVkZSBcImNuMjBrL25wYy5oXCJcbiAjaW5jbHVkZSBcInJ2dV9ucGMuaFwiXG4gI2luY2x1ZGUgXCJjbjIway9yZWcuaFwiXG4rI2luY2x1ZGUgXCJsbWFjX2NvbW1vbi5oXCJcbiBcbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9QRlx0MyAvKiBCcm9hZGNhc3QsIFByb21pc2MgYW5kIEFsbE11bHRpY2FzdCAqL1xuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX05JWExGXHQxIC8qIFVjYXN0IGZvciBMRnMgKi9cbkBAIC00MjAwLDEwICs0MjAxLDExIEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXG4ge1xuIFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmID0gcnZ1X2dldF9wZnZmKHJ2dSwgcGNpZnVuYyk7XG4tXHRpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7XG4gXHRpbnQgcGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbitcdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcbitcdHU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwO1xuIFx0dTY0IHJ4cGtpbmQsIHR4cGtpbmQ7XG4tXHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XG4rXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuIFxuIFx0LyogdXNlIGRlZmF1bHQgcGtpbmQgdG8gZGlzYWJsZSBlZHNhL2hpZ2lnICovXG4gXHRyeHBraW5kID0gcnZ1X25wY19nZXRfcGtpbmQocnZ1LCBwZik7XG5AQCAtNDIyNywxMiArNDIyOSw4IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXHRcdC8qIHJ4IHBraW5kIHNldCByZXEgdmFsaWQgb25seSBmb3IgY2d4IG1hcHBlZCBQRnMgKi9cbiBcdFx0aWYgKCFpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4tXG4tXHRcdHJjID0gY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCxcbi1cdFx0XHRcdCAgIHJ4cGtpbmQpO1xuLVx0XHRpZiAocmMpXG4tXHRcdFx0cmV0dXJuIHJjO1xuK1x0XHRpZiAoIXJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcnhwa2luZCkpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4gXHRpZiAoZGlyIFx1MDAyNiBQS0lORF9UWCkge1xuQEAgLTQyNDEsOCArNDIzOSwxOSBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0cmV0dXJuIHJjO1xuIFxuLVx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbi1cdFx0XHQgICAgdHhwa2luZCk7XG4rXHRcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XG4rXHRcdFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsXG4rXHRcdFx0XHRcdCAgICBcdTAwMjZsbWFjX2lkKTtcbitcdFx0XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0XHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcbitcdFx0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuK1x0XHRcdFx0XHQgICAgdHhwa2luZCk7XG4rXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXG4rXHRcdFx0XHQgICAgdHhwa2luZCk7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHBmdmYtXHUwMDNlaW50Zl9tb2RlID0gaW50Zl9tb2RlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MzA6MjcuNjk4MjQ3NDg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2Mjk2MTM5MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlci4gSXQgc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBwcmV2ZW50aW5nIGNvbmZsaWN0cyB3aGVuIHVzaW5nIENHWC1tYXBwZWQgVkZzLCBzcGVjaWZpY2FsbHkgd2hlbiB0aG9zZSBzaGFyZWQgTE1BQ3MgYXJlIGRlYWxpbmcgd2l0aCBzcGVjaWFsIHBhcnNlIGtpbmRzIGxpa2UgSGlHaWcgb3IgRURTQS4gVGhlIGFkZGVkIGNoZWNrcyBhcmUgdG8gcHJvdGVjdCB0aGUgUEtJTkQgZnJvbSBiZWluZyBvdmVyd3JpdHRlbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgYGNneF9nZXRfcGtpbmRgLCBgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkYCwgYHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kYCwgYHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jYCwgYW5kIGBydnVfbnBjX3NldF9wYXJzZV9tb2RlYC5cblxuTm93IHRoZSBxdWVzdGlvbiBpcywgaG93IGxpa2VseSBpcyB0aGlzIGNvZGUgcGF0aCB0byBhY3R1YWxseSBiZSB0cmlnZ2VyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gV2l0aCB0aGVzZSBraW5kcyBvZiBoYXJkd2FyZS1zcGVjaWZpYyBuZXR3b3JrIGRyaXZlcnMsIGl0J3MgdXN1YWxseSBhIGdpdmVuIHRoYXQgdGhleSB3b24ndCBiZSByZWFjaGFibGUgdW5sZXNzIHlvdSd2ZSBnb3QgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50IG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYSBnb29kIGVtdWxhdGlvbiBsYXllciBpbiBwbGFjZS4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGhhcyBhbnkga2luZCBvZiB2aXJ0dWFsIGVtdWxhdGlvbiBzdXBwb3J0IG9yIGlmIGl0J3Mgc3RyaWN0bHkgdGllZCB0byB0aGUgUENJIElEcyBvZiB0aGUgcGh5c2ljYWwgT2N0ZW9uVFgyIGhhcmR3YXJlLiBcblxuVGhlIGRyaXZlciBpcywgYWZ0ZXIgYWxsLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlLCBzdGFydGluZyB3aXRoIHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY2AgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGJpbmRzIHRvIHRoZSBoYXJkd2FyZS4gVGhhdCdzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSByZWFjaGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNjgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozNTo1My45OTQzOTAxOThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5NDE4ODM3NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRV9JRF9SVlVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozNTo1Ni4xODg1OTEwNTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjYwMTAxOTU4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIE1hcnZlbGwgT2N0ZW9udHgyIEV0aGVybmV0IERyaXZlcioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIGhvdyB0aGUgTWFydmVsbCBPY3Rlb250eDIgRXRoZXJuZXQgZHJpdmVyIGhhbmRsZXMgUENJIGRldmljZSBpZGVudGlmaWNhdGlvbi4gVG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHVuZGVyc3RhbmQgdGhlIGZsb3csIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNgLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIGhvdyB0aGUgZHJpdmVyIGRlZmluZXMgYW5kIHV0aWxpemVzIHRoZSBgcGNpX2RldmljZV9pZGAgc3RydWN0dXJlLiBJIGV4cGVjdCB0aGlzIHdpbGwgcmV2ZWFsIHRoZSByZWNvZ25pemVkIGhhcmR3YXJlIElEcywgYW5kIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIGxvZ2ljIHVzZWQgd2hlbiB0aGUgc3lzdGVtIGVudW1lcmF0ZXMgYW5kIGRpc2NvdmVycyB0aGUgbmV0d29yayBpbnRlcmZhY2VzLiBBcmUgdGhleSB1c2luZyB0aGUgc3RhbmRhcmQgUENJIHZlbmRvci9kZXZpY2UgSUQgcGFpcnM/IFBlcmhhcHMgdGhleSd2ZSBnb3Qgc29tZSBtb3JlIHNwZWNpZmljIHN1YnZlbmRvci9zdWJkZXZpY2UgSURzIGluIHRoZXJlIHRvIGhhbmRsZSB0aGUgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBmYW1pbHkgb2YgTklDcz8gVGhpcyBmaWxlIHNob3VsZCBoYXZlIGFsbCB0aGUgYW5zd2Vycy4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODY1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MzY6MjIuNzg5NjEzNDQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDk4MDM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBydnVfbWJveF9pbnRyX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcnZ1X2lycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00My0vKiBTdXBwb3J0ZWQgZGV2aWNlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00NS1cXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzU0NT1zdGF0aWMgYXRvbWljX3QgZGV2aWNlX2JvdW5kID0gQVRPTUlDX0lOSVQoMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzU0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNTQ3OnN0YXRpYyBpbnQgcnZ1X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzU0OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjM2OjIzLjQwMDU5OTgyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMzYyNzM3NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIE9jdGVvblRYMiBSVlUgQUYgRHJpdmVyIGFuZCBTeXprYWxsZXIgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZSBkcml2ZXIgYmluZHMgdG8gdGhlIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgYW5kIGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAgZGV2aWNlIElEcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSXMgdGhlcmUgYW55IGtpbmQgb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHRoaW5nLCBlaXRoZXIgaW4gUUVNVSBvciBwZXJoYXBzIGluIHRoZSBrZXJuZWwgaXRzZWxmP1wiIEFmdGVyIGFsbCwgZGVidWdnaW5nIHRoaXMga2luZCBvZiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgd2l0aG91dCBhIHN1aXRhYmxlIGVudmlyb25tZW50IGlzIGEgbmlnaHRtYXJlLiBIbW0sIG5vcGUsIGl0IGxvb2tzIGxpa2UgdGhlIE9jdGVvblRYMiBSVlUgQUYgaXMgYSBkZWRpY2F0ZWQgaGFyZHdhcmUgY29tcG9uZW50IOKAkyBhIFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQgQWRtaW4gRnVuY3Rpb24g4oCTIG9uIE1hcnZlbGwgT2N0ZW9uVFgyIFNvQ3MuIE5vdCBhIGNvbW1vbiBlbXVsYXRlZCBkZXZpY2UuXG5cblJpZ2h0LCBzbyB0aGF0IG1lYW5zIFN5emthbGxlciBpc24ndCBnb2luZyB0byBoYXZlIHRoaXMgaGFyZHdhcmUgbW9kZWxlZC4gQW5kIGl0J3MgZGVmaW5pdGVseSBub3Qgc29tZXRoaW5nIEknZCBmaW5kIGp1c3QgcnVubmluZyBhIHN0YW5kYXJkIEdDRSBvciBRRU1VIFZNLiBNeSBtaW5kIGp1bXBzIHRvLCBcIldhaXQsIGRvZXMgU3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9tb3VudF9pbWFnZWAgdGhhdCBtaWdodCBpbmRpcmVjdGx5IHRvdWNoIGl0P1wiIE5vLCB0aGF0J3MgY29tcGxldGVseSB1bnJlbGF0ZWQuIFRoaXMgaXMgYSAqUENJIGRldmljZSogZHJpdmVyLCBub3QgYSBmaWxlIHN5c3RlbSB0aGluZy5cblxuQWxyaWdodCwgbWF5YmUgU3l6a2FsbGVyIGNhbiBzdGlsbCB0cmlnZ2VyIHRoaXMgdmlhIHNvbWUgZm9ybSBvZiB2aXJ0dWFsIFBDSSBpbmplY3Rpb24/IERvZXMgaXQgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VzYD8gTm8sIHRoYXQncyBub3QgcmluZ2luZyBhbnkgYmVsbHMuIEFoLCB3YWl0LCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IFBDSSBkZXZpY2VzIHVzaW5nIGB2aGNpYCBvciBgdmZpb2AsIHJpZ2h0PyBCdXQgZXZlbiBpZiB0aGF0J3MgcG9zc2libGUsIHRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gZG8gTU1JTyByZWFkcyBhbmQgd3JpdGVzLCB3aGljaCB3aWxsIHNpbXBseSBmYWlsIG9yIGNyYXNoIGlmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvcGVybHkgZW11bGF0ZWQuIFRoYXQncyBhIGh1Z2UgcG90ZW50aWFsIHJvYWRibG9jay5cblxuT2theSwgYmVzdCB0byBhc3N1bWUgdGhlIHdvcnN0IC0gbGV0J3Mgc2VlIGlmIFN5emthbGxlciBoYXMgYW55IGRlc2NyaXB0aW9uIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4gVGhhdCdzIHRoZSBtb3N0IGxpa2VseSBwYXRoIHRvIHN1Y2Nlc3MgYXQgdGhpcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU0MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozNzoyNi43NjMzMzk4NzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyODQ4OTIwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb250eDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6Mzc6MjcuNTA2MjAwNTE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMzNjIxNTEwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBpbiBhIEhhcmR3YXJlIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBjaGVja3MgcmVsYXRlZCB0byBwcmV2ZW50aW5nIFZGIG92ZXJ3cml0ZXMgb2YgUEtJTkQgd2hlbiB1c2luZyBzcGVjaWFsIHBhcnNlIGtpbmRzIG9uIHRoZSBzaGFyZWQgTE1BQy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIldhaXQsIHRoaXMgaXMgT2N0ZW9uVFgyIHNwZWNpZmljIVwiIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgd2F5IHRoaXMgY29kZSAqY291bGQqIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYmVjYXVzZSBpZiBpdCdzIHN0cmljdGx5IHRpZWQgdG8gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBmdXp6aW5nIGl0IGlzIGEgbm9uLXN0YXJ0ZXIuXG5cbk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGFzc2VzcyB0aGUgcG9zc2liaWxpdHkgb2YgZW11bGF0aW9uLiBEb2VzIEdDRSwgUUVNVSwgb3IgZXZlbiBzeXprYWxsZXIgaGF2ZSBhbnkgc3VwcG9ydCBmb3IgdGhpcz8gSSBzZWFyY2ggYHN5cy9gIGZvciBtZW50aW9ucyBvZiBgb2N0ZW9udHgyYCBidXQgaXQgbG9va3MgbGlrZSBncmVwcGVyIGlzIGEgYml0IGxpbWl0ZWQgZm9yIGBzeXMvYCwgc28gdGhhdCdzIG5vdCBhIGdyZWF0IHNpZ25hbC4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uLCBgcnZ1X3Byb2JlYCwgYmluZHMgdG8gYFBDSV9WRU5ET1JfSURfQ0FWSVVNYCBhbmQgYFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGYC4gQmluZ28sIHRoYXQgY29uZmlybXMgaXQncyBhIFBDSSBkcml2ZXIuXG5cbkxldCBtZSBjb25maXJtIHRoYXQgdGhlcmUgaXMgbm8gZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlOlxuXG5gYGBjXG5zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XG5cdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXG5cdHsgMCwgfVxufTtcbmBgYFxuXG5UaGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyLCBwbGFpbiBhbmQgc2ltcGxlLiBBbmQgSSBjYW4ndCB0aGluayBvZiBhbnkgdmlydHVhbCBkZXZpY2UgdGhhdCB3b3VsZCBtYXNxdWVyYWRlIGFzIHRoaXMgY2FyZC4gTm8gZW11bGF0aW9uIG1lYW5zIG5vIGZ1enppbmcuIEdpdmVuIHRoYXQgaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgd2l0aCBubyBRRU1VIGVtdWxhdGlvbiwgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuIEknbSBnb2luZyB0byByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlLiBJIGFtIGNvbmZpZGVudCB0aGF0IG5vIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNhbiB0cmlnZ2VyIHRoaXMgY29kZS4gVGhpcyBpcyBkZWZpbml0ZWx5IG5vdCBmdXp6YWJsZS4gVGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlciwgYXMgYSBQQ0kgZGV2aWNlLCBpcyBzaW1wbHkgbm90IHJlYWNoYWJsZSBieSBTeXprYWxsZXIgb3IgYW55IG90aGVyIHN0YW5kYXJkIFZNLWJhc2VkIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NjMsIk91dHB1dFRva2VucyI6ODYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6Mzc6NTAuODY4MzU1ODk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIChBZG1pbiBGdW5jdGlvbikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgYW5kIGltcG9zc2libGUgdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiAoQWRtaW4gRnVuY3Rpb24pIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCBpbXBvc3NpYmxlIHRvIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowtcjqx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 19:13:01 +0000 UTC FinishedAt: 2026-07-21 19:37:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiAoQWRtaW4gRnVuY3Rpb24pIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCBpbXBvc3NpYmxlIHRvIGZ1enouJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTI4YWZmZTRmYzU4ZTMyNjI2MDk1ZDg0MTA3NmE5NDdiNTBlYTYwNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE5OjMwOjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuQEAgLTUxOCw2ICYjNDM7NTE4LDE4IEBAIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7aW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XG4mIzQzO1xuJiM0MztcdGlmICghaXNfbG1hY192YWxpZChjZ3gsIGxtYWNfaWQpKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuJiM0MztcdCpwa2luZCA9IGNneF9yZWFkKGNneCwgbG1hY19pZCwgY2d4LVx1MDAzZW1hY19vcHMtXHUwMDNlcnhpZF9tYXBfb2Zmc2V0KTtcbiYjNDM7XHQqcGtpbmQgPSAqcGtpbmQgXHUwMDI2IDB4M0Y7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHU4IGNneF9nZXRfbG1hY190eXBlKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKVxuIHtcbiBcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG5AQCAtMTQxLDYgJiM0MzsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTtcbiBpbnQgY2d4X2dldF9sbWFjX2NudCh2b2lkICpjZ3hkKTtcbiB2b2lkICpjZ3hfZ2V0X3BkYXRhKGludCBjZ3hfaWQpO1xuIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7XG4mIzQzO2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpO1xuIGludCBjZ3hfbG1hY19ldmhfcmVnaXN0ZXIoc3RydWN0IGNneF9ldmVudF9jYiAqY2IsIHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcbiBpbnQgY2d4X2xtYWNfZXZoX3VucmVnaXN0ZXIodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpO1xuIGludCBjZ3hfZ2V0X3R4X3N0YXRzKHZvaWQgKmNneGQsIGludCBsbWFjX2lkLCBpbnQgaWR4LCB1NjQgKnR4X3N0YXQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbmluZGV4IDdmMzUwNWFlNjg2MDQyLi45ZDViN2I1MWJkZmE1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuQEAgLTExMTUsNiAmIzQzOzExMTUsOCBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0IHU4ICppbnRmLCB1OCAqZW5hKTtcbiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTtcbiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuJiM0Mztib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZCk7XG4mIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjg3ZDIxODg5ZGM0OWUyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbkBAIC0xMzU1LDMgJiM0MzsxMzU1LDgyIEBAIHZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuIFx0aWYgKG1hY19vcHMtXHUwMDNlbWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpXG4gXHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlc2V0IE1BQ1xcblwmIzM0Oyk7XG4gfVxuJiM0MztcbiYjNDM7LyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4gVkZzIG11c3Qgbm90IHByb2dyYW1cbiYjNDM7ICogTlBDX1RYX0RFRl9QS0lORCBvbiBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyBpbiB0aGF0IGNhc2U6IHRoZSBQRiBvd25zXG4mIzQzOyAqIHBhcnNlIG1vZGUgYW5kIG5vIHNlcGFyYXRlIE5QQ19UWF9ISUdJR19QS0lORCBpcyBpbnN0YWxsZWQgb24gdGhlIFZGIExGLlxuJiM0MzsgKiBUWC1wYXJzZSBjYWxsZXJzIHNraXAgdGhlIHdyaXRlIHdoZW4gZGVuaWVkOyBydnVfbGZfcmVzZXQoKSBjbGVhcnMgZWFjaCBMRlxuJiM0MzsgKiBiZWZvcmUgYWxsb2Mgc28gdGhlIG5leHQgcGVybWl0dGVkIG93bmVyIHByb2dyYW1zIE5QQ19UWF9ERUZfUEtJTkQuXG4mIzQzOyAqL1xuJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XG4mIzQzO1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuJiM0MztcdHZvaWQgKmNneGQ7XG4mIzQzO1xuJiM0MztcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4mIzQzO1xuJiM0MztcdGlmICghKHBjaWZ1bmMgXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuJiM0MztcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiYjNDM7XHRlcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsIFx1MDAyNnJ4cGtpbmQpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAocnhwa2luZCkge1xuJiM0MztcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuJiM0MztcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cbiYjNDM7ICovXG4mIzQzO2Jvb2wgcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHBraW5kKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XG4mIzQzO1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneGQ7XG4mIzQzO1xuJiM0MztcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4mIzQzO1xuJiM0MztcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4mIzQzO1x0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0aWYgKCFpc192ZihwY2lmdW5jKSlcbiYjNDM7XHRcdGdvdG8gc2V0O1xuJiM0MztcbiYjNDM7XHRlcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsIFx1MDAyNnJ4cGtpbmQpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRnb3RvIGVycjtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChyeHBraW5kKSB7XG4mIzQzO1x0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XG4mIzQzO1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztzZXQ6XG4mIzQzO1x0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7ZXJyOlxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuaW5kZXggNmEwY2UyNjY1MDMxZDYuLmQxZGU5Yzk4OTRiZGM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbkBAIC0zNjMsOCAmIzQzOzM2Myw4IEBAIHN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9jbnQgPSAxO1xuIFx0XHRyc3AtXHUwMDNldHhfbGluayA9IGNneF9pZCAqIGh3LVx1MDAzZWxtYWNfcGVyX2NneCAmIzQzOyBsbWFjX2lkO1xuIFxuLVx0XHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XG4tXHRcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xuJiM0MztcdFx0aWYgKHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcGtpbmQpKVxuJiM0MztcdFx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5JWF9JTlRGX1RZUEVfTEJLOlxuIFx0XHR2ZiA9IChwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTtcbkBAIC0xNTA1LDEzICYjNDM7MTUwNSwxNSBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JlcSAqcmVxLFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JzcCAqcnNwKVxuIHtcbi1cdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMDtcbiYjNDM7XHRpbnQgbml4bGYsIHFpbnRzLCBod2N0eF9zaXplLCBpbnRmLCByYyA9IDAsIHBmO1xuIFx0dTE2IGJjYXN0LCBtY2FzdCwgcHJvbWlzYywgdWNhc3Q7XG4gXHRzdHJ1Y3QgcnZ1X2h3aW5mbyAqaHcgPSBydnUtXHUwMDNlaHc7XG4gXHR1MTYgcGNpZnVuYyA9IHJlcS1cdTAwM2VoZHIucGNpZnVuYztcbiYjNDM7XHR1OCBjZ3hfaWQgPSAwLCBsbWFjX2lkID0gMDtcbiBcdGJvb2wgcnVsZXNfY3JlYXRlZCA9IGZhbHNlO1xuIFx0c3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmY7XG4mIzQzO1x0c3RydWN0IGNneCAqY2d4ZDtcbiBcdHU2NCBjZmcsIGN0eF9jZmc7XG4gXHRpbnQgYmxrYWRkcjtcbiBcbkBAIC0xNjg1LDggJiM0MzsxNjg3LDE5IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4gXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLVx1MDAzZXJ4X2NmZyk7XG4gXG4gXHQvKiBDb25maWd1cmUgcGtpbmQgZm9yIFRYIHBhcnNlIGNvbmZpZyAqL1xuLVx0Y2ZnID0gTlBDX1RYX0RFRl9QS0lORDtcbi1cdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xuJiM0MztcbiYjNDM7XHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XG4mIzQzO1x0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4mIzQzO1x0XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpIHtcbiYjNDM7XHRcdFx0Y2ZnID0gTlBDX1RYX0RFRl9QS0lORDtcbiYjNDM7XHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKSB7XG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbmluZGV4IGM3YmMwYjNhMjliOTg0Li4zODU1NGQ1MTE2NGUxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5AQCAtMTksNiAmIzQzOzE5LDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtjbjIway9ucGMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3J2dV9ucGMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2NuMjBrL3JlZy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2xtYWNfY29tbW9uLmhcJiMzNDtcbiBcbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9QRlx0MyAvKiBCcm9hZGNhc3QsIFByb21pc2MgYW5kIEFsbE11bHRpY2FzdCAqL1xuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX05JWExGXHQxIC8qIFVjYXN0IGZvciBMRnMgKi9cbkBAIC00MjAwLDEwICYjNDM7NDIwMSwxMSBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxuIFxuIHtcbiBcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xuLVx0aW50IGJsa2FkZHIsIG5peGxmLCByYywgaW50Zl9tb2RlO1xuIFx0aW50IHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4mIzQzO1x0aW50IGJsa2FkZHIsIG5peGxmLCByYywgaW50Zl9tb2RlO1xuJiM0MztcdHU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwO1xuIFx0dTY0IHJ4cGtpbmQsIHR4cGtpbmQ7XG4tXHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XG4mIzQzO1x0c3RydWN0IGNneCAqY2d4ZDtcbiBcbiBcdC8qIHVzZSBkZWZhdWx0IHBraW5kIHRvIGRpc2FibGUgZWRzYS9oaWdpZyAqL1xuIFx0cnhwa2luZCA9IHJ2dV9ucGNfZ2V0X3BraW5kKHJ2dSwgcGYpO1xuQEAgLTQyMjcsMTIgJiM0Mzs0MjI5LDggQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcbiBcdFx0LyogcnggcGtpbmQgc2V0IHJlcSB2YWxpZCBvbmx5IGZvciBjZ3ggbWFwcGVkIFBGcyAqL1xuIFx0XHRpZiAoIWlzX2NneF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXG4gXHRcdFx0cmV0dXJuIDA7XG4tXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi1cbi1cdFx0cmMgPSBjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLFxuLVx0XHRcdFx0ICAgcnhwa2luZCk7XG4tXHRcdGlmIChyYylcbi1cdFx0XHRyZXR1cm4gcmM7XG4mIzQzO1x0XHRpZiAoIXJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcnhwa2luZCkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuIFx0aWYgKGRpciBcdTAwMjYgUEtJTkRfVFgpIHtcbkBAIC00MjQxLDggJiM0Mzs0MjM5LDE5IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXHRcdGlmIChyYylcbiBcdFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuLVx0XHRcdCAgICB0eHBraW5kKTtcbiYjNDM7XHRcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XG4mIzQzO1x0XHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLFxuJiM0MztcdFx0XHRcdFx0ICAgIFx1MDAyNmxtYWNfaWQpO1xuJiM0MztcdFx0XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XG4mIzQzO1x0XHRcdG11dGV4X2xvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxuJiM0MztcdFx0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuJiM0MztcdFx0XHRcdFx0ICAgIHR4cGtpbmQpO1xuJiM0MztcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuJiM0MztcdFx0XHRcdCAgICB0eHBraW5kKTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdHBmdmYtXHUwMDNlaW50Zl9tb2RlID0gaW50Zl9tb2RlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYgKEFkbWluIEZ1bmN0aW9uKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgaW1wb3NzaWJsZSB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTI4YWZmZTRmYzU4ZTMyNjI2MDk1ZDg0MTA3NmE5NDdiNTBlYTYwNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDE5OjMwOjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYwppbmRleCAyZTk0ZDUxMDUwMTZiZi4uZjVmZDYxMzhjMzUyZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCkBAIC01MTgsNiAmIzQzOzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKQomIzQzO3sKJiM0MzsJc3RydWN0IGNneCAqY2d4ID0gY2d4ZDsKJiM0MzsKJiM0MzsJaWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsKJiM0MzsJKnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtJmd0O21hY19vcHMtJmd0O3J4aWRfbWFwX29mZnNldCk7CiYjNDM7CSpwa2luZCA9ICpwa2luZCAmYW1wOyAweDNGOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpCiB7CiAJc3RydWN0IGNneCAqY2d4ID0gY2d4ZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgKaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaApAQCAtMTQxLDYgJiM0MzsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTsKIGludCBjZ3hfZ2V0X2xtYWNfY250KHZvaWQgKmNneGQpOwogdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTsKIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7CiYjNDM7aW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7CiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7CiBpbnQgY2d4X2xtYWNfZXZoX3VucmVnaXN0ZXIodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpOwogaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCmluZGV4IDdmMzUwNWFlNjg2MDQyLi45ZDViN2I1MWJkZmE1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKQEAgLTExMTUsNiAmIzQzOzExMTUsOCBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sCiAJCQkgdTggKmludGYsIHU4ICplbmEpOwogaW50IG5wY19jb25maWdfY250cl9kZWZhdWx0X2VudHJpZXMoc3RydWN0IHJ2dSAqcnZ1LCBib29sIGVuYWJsZSk7CiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpOwomIzQzO2Jvb2wgcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHBraW5kKTsKJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTsKIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7CiB1MzIgIHJ2dV9jZ3hfZ2V0X2ZpZm9sZW4oc3RydWN0IHJ2dSAqcnZ1KTsKIHZvaWQgKnJ2dV9maXJzdF9jZ3hfcGRhdGEoc3RydWN0IHJ2dSAqcnZ1KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwppbmRleCA0ZmYzOTM1ZWQzZmU4NC4uODdkMjE4ODlkYzQ5ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMKQEAgLTEzNTUsMyAmIzQzOzEzNTUsODIgQEAgdm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpCiAJaWYgKG1hY19vcHMtJmd0O21hY19yZXNldChjZ3hkLCBsbWFjLCAhaXNfdmYocGNpZnVuYykpKQogCQlkZXZfZXJyKHJ2dS0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byByZXNldCBNQUNcbiYjMzQ7KTsKIH0KJiM0MzsKJiM0MzsvKiBEbyBub3QgYWxsb3cgQ0dYLW1hcHBlZCBWRnMgdG8gb3ZlcndyaXRlIFBLSU5EIHdoZW4gc3BlY2lhbCBwYXJzZSBraW5kcwomIzQzOyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuIFZGcyBtdXN0IG5vdCBwcm9ncmFtCiYjNDM7ICogTlBDX1RYX0RFRl9QS0lORCBvbiBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyBpbiB0aGF0IGNhc2U6IHRoZSBQRiBvd25zCiYjNDM7ICogcGFyc2UgbW9kZSBhbmQgbm8gc2VwYXJhdGUgTlBDX1RYX0hJR0lHX1BLSU5EIGlzIGluc3RhbGxlZCBvbiB0aGUgVkYgTEYuCiYjNDM7ICogVFgtcGFyc2UgY2FsbGVycyBza2lwIHRoZSB3cml0ZSB3aGVuIGRlbmllZDsgcnZ1X2xmX3Jlc2V0KCkgY2xlYXJzIGVhY2ggTEYKJiM0MzsgKiBiZWZvcmUgYWxsb2Mgc28gdGhlIG5leHQgcGVybWl0dGVkIG93bmVyIHByb2dyYW1zIE5QQ19UWF9ERUZfUEtJTkQuCiYjNDM7ICovCiYjNDM7Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYykKJiM0Mzt7CiYjNDM7CWludCBwZiwgZXJyLCByeHBraW5kOwomIzQzOwl1OCBjZ3hfaWQsIGxtYWNfaWQ7CiYjNDM7CXZvaWQgKmNneGQ7CiYjNDM7CiYjNDM7CXBmID0gcnZ1X2dldF9wZihydnUtJmd0O3BkZXYsIHBjaWZ1bmMpOwomIzQzOwomIzQzOwlpZiAoIShwY2lmdW5jICZhbXA7IFJWVV9QRlZGX0ZVTkNfTUFTSykpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJaWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJcnZ1X2dldF9jZ3hfbG1hY19pZChydnUtJmd0O3BmMmNneGxtYWNfbWFwW3BmXSwgJmFtcDtjZ3hfaWQsICZhbXA7bG1hY19pZCk7CiYjNDM7CWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKJiM0MzsJZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCAmYW1wO3J4cGtpbmQpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlzd2l0Y2ggKHJ4cGtpbmQpIHsKJiM0MzsJY2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6CiYjNDM7CWNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKiBEbyBub3QgYWxsb3cgQ0dYLW1hcHBlZCBWRnMgdG8gb3ZlcndyaXRlIFBLSU5EIHdoZW4gc3BlY2lhbCBwYXJzZSBraW5kcwomIzQzOyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuCiYjNDM7ICovCiYjNDM7Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpCiYjNDM7ewomIzQzOwlpbnQgcGYsIGVyciwgcnhwa2luZDsKJiM0MzsJdTggY2d4X2lkLCBsbWFjX2lkOwomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3hkOwomIzQzOwomIzQzOwlwZiA9IHJ2dV9nZXRfcGYocnZ1LSZndDtwZGV2LCBwY2lmdW5jKTsKJiM0MzsKJiM0MzsJaWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLCAmYW1wO2xtYWNfaWQpOwomIzQzOwljZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJaWYgKCFpc192ZihwY2lmdW5jKSkKJiM0MzsJCWdvdG8gc2V0OwomIzQzOwomIzQzOwllcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsICZhbXA7cnhwa2luZCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlnb3RvIGVycjsKJiM0MzsKJiM0MzsJc3dpdGNoIChyeHBraW5kKSB7CiYjNDM7CWNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOgomIzQzOwljYXNlIE5QQ19SWF9FRFNBX1BLSU5EOgomIzQzOwkJZ290byBlcnI7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlicmVhazsKJiM0MzsJfQomIzQzOwomIzQzO3NldDoKJiM0MzsJY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7ZXJyOgomIzQzOwltdXRleF91bmxvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJcmV0dXJuIGZhbHNlOwomIzQzO30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwppbmRleCA2YTBjZTI2NjUwMzFkNi4uZDFkZTljOTg5NGJkYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMKQEAgLTM2Myw4ICYjNDM7MzYzLDggQEAgc3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZiwKIAkJcGZ2Zi0mZ3Q7dHhfY2hhbl9jbnQgPSAxOwogCQlyc3AtJmd0O3R4X2xpbmsgPSBjZ3hfaWQgKiBody0mZ3Q7bG1hY19wZXJfY2d4ICYjNDM7IGxtYWNfaWQ7CiAKLQkJY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpOwotCQlydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTsKJiM0MzsJCWlmIChydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChydnUsIHBjaWZ1bmMsIHBraW5kKSkKJiM0MzsJCQlydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTsKIAkJYnJlYWs7CiAJY2FzZSBOSVhfSU5URl9UWVBFX0xCSzoKIAkJdmYgPSAocGNpZnVuYyAmYW1wOyBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTsKQEAgLTE1MDUsMTMgJiM0MzsxNTA1LDE1IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsCiAJCQkJICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JlcSAqcmVxLAogCQkJCSAgc3RydWN0IG5peF9sZl9hbGxvY19yc3AgKnJzcCkKIHsKLQlpbnQgbml4bGYsIHFpbnRzLCBod2N0eF9zaXplLCBpbnRmLCByYyA9IDA7CiYjNDM7CWludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMCwgcGY7CiAJdTE2IGJjYXN0LCBtY2FzdCwgcHJvbWlzYywgdWNhc3Q7CiAJc3RydWN0IHJ2dV9od2luZm8gKmh3ID0gcnZ1LSZndDtodzsKIAl1MTYgcGNpZnVuYyA9IHJlcS0mZ3Q7aGRyLnBjaWZ1bmM7CiYjNDM7CXU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwOwogCWJvb2wgcnVsZXNfY3JlYXRlZCA9IGZhbHNlOwogCXN0cnVjdCBydnVfYmxvY2sgKmJsb2NrOwogCXN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZjsKJiM0MzsJc3RydWN0IGNneCAqY2d4ZDsKIAl1NjQgY2ZnLCBjdHhfY2ZnOwogCWludCBibGthZGRyOwogCkBAIC0xNjg1LDggJiM0MzsxNjg3LDE5IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsCiAJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS0mZ3Q7cnhfY2ZnKTsKIAogCS8qIENvbmZpZ3VyZSBwa2luZCBmb3IgVFggcGFyc2UgY29uZmlnICovCi0JY2ZnID0gTlBDX1RYX0RFRl9QS0lORDsKLQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTsKJiM0MzsKJiM0MzsJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CiYjNDM7CWlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHsKJiM0MzsJCXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLCAmYW1wO2xtYWNfaWQpOwomIzQzOwkJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwkJaWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7CiYjNDM7CQkJY2ZnID0gTlBDX1RYX0RFRl9QS0lORDsKJiM0MzsJCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTsKJiM0MzsJCX0KJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwl9CiAKIAlpZiAoaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKSB7CiAJCXBmdmYtJmd0O3R4X2NoYW5fYmFzZSA9IFJWVV9TV0lUQ0hfTEJLX0NIQU47CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMKaW5kZXggYzdiYzBiM2EyOWI5ODQuLjM4NTU0ZDUxMTY0ZTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jCkBAIC0xOSw2ICYjNDM7MTksNyBAQAogI2luY2x1ZGUgJiMzNDtjbjIway9ucGMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3J2dV9ucGMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2NuMjBrL3JlZy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2xtYWNfY29tbW9uLmgmIzM0OwogCiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9QRgkzIC8qIEJyb2FkY2FzdCwgUHJvbWlzYyBhbmQgQWxsTXVsdGljYXN0ICovCiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRgkxIC8qIFVjYXN0IGZvciBMRnMgKi8KQEAgLTQyMDAsMTAgJiM0Mzs0MjAxLDExIEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsCiAKIHsKIAlzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTsKLQlpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7CiAJaW50IHBmID0gcnZ1X2dldF9wZihydnUtJmd0O3BkZXYsIHBjaWZ1bmMpOwomIzQzOwlpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7CiYjNDM7CXU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwOwogCXU2NCByeHBraW5kLCB0eHBraW5kOwotCXU4IGNneF9pZCwgbG1hY19pZDsKJiM0MzsJc3RydWN0IGNneCAqY2d4ZDsKIAogCS8qIHVzZSBkZWZhdWx0IHBraW5kIHRvIGRpc2FibGUgZWRzYS9oaWdpZyAqLwogCXJ4cGtpbmQgPSBydnVfbnBjX2dldF9wa2luZChydnUsIHBmKTsKQEAgLTQyMjcsMTIgJiM0Mzs0MjI5LDggQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpciwKIAkJLyogcnggcGtpbmQgc2V0IHJlcSB2YWxpZCBvbmx5IGZvciBjZ3ggbWFwcGVkIFBGcyAqLwogCQlpZiAoIWlzX2NneF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpCiAJCQlyZXR1cm4gMDsKLQkJcnZ1X2dldF9jZ3hfbG1hY19pZChydnUtJmd0O3BmMmNneGxtYWNfbWFwW3BmXSwgJmFtcDtjZ3hfaWQsICZhbXA7bG1hY19pZCk7Ci0KLQkJcmMgPSBjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLAotCQkJCSAgIHJ4cGtpbmQpOwotCQlpZiAocmMpCi0JCQlyZXR1cm4gcmM7CiYjNDM7CQlpZiAoIXJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcnhwa2luZCkpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJaWYgKGRpciAmYW1wOyBQS0lORF9UWCkgewpAQCAtNDI0MSw4ICYjNDM7NDIzOSwxOSBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLAogCQlpZiAocmMpCiAJCQlyZXR1cm4gcmM7CiAKLQkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksCi0JCQkgICAgdHhwa2luZCk7CiYjNDM7CQlpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpICZhbXA7JmFtcDsgaXNfdmYocGNpZnVuYykpIHsKJiM0MzsJCQlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwKJiM0MzsJCQkJCSAgICAmYW1wO2xtYWNfaWQpOwomIzQzOwkJCWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKJiM0MzsJCQltdXRleF9sb2NrKCZhbXA7Y2d4ZC0mZ3Q7bG9jayk7CiYjNDM7CQkJaWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKQomIzQzOwkJCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwKJiM0MzsJCQkJCSAgICB0eHBraW5kKTsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksCiYjNDM7CQkJCSAgICB0eHBraW5kKTsKJiM0MzsJCX0KIAl9CiAKIAlwZnZmLSZndDtpbnRmX21vZGUgPSBpbnRmX21vZGU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNjgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiBkcml2ZXIuIEl0IHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gcHJldmVudGluZyBjb25mbGljdHMgd2hlbiB1c2luZyBDR1gtbWFwcGVkIFZGcywgc3BlY2lmaWNhbGx5IHdoZW4gdGhvc2Ugc2hhcmVkIExNQUNzIGFyZSBkZWFsaW5nIHdpdGggc3BlY2lhbCBwYXJzZSBraW5kcyBsaWtlIEhpR2lnIG9yIEVEU0EuIFRoZSBhZGRlZCBjaGVja3MgYXJlIHRvIHByb3RlY3QgdGhlIFBLSU5EIGZyb20gYmVpbmcgb3ZlcndyaXR0ZW4uIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGBjZ3hfZ2V0X3BraW5kYCwgYHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZGAsIGBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZGAsIGBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvY2AsIGFuZCBgcnZ1X25wY19zZXRfcGFyc2VfbW9kZWAuCgpOb3cgdGhlIHF1ZXN0aW9uIGlzLCBob3cgbGlrZWx5IGlzIHRoaXMgY29kZSBwYXRoIHRvIGFjdHVhbGx5IGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXRoIHRoZXNlIGtpbmRzIG9mIGhhcmR3YXJlLXNwZWNpZmljIG5ldHdvcmsgZHJpdmVycywgaXQmIzM5O3MgdXN1YWxseSBhIGdpdmVuIHRoYXQgdGhleSB3b24mIzM5O3QgYmUgcmVhY2hhYmxlIHVubGVzcyB5b3UmIzM5O3ZlIGdvdCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhIGdvb2QgZW11bGF0aW9uIGxheWVyIGluIHBsYWNlLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIgaGFzIGFueSBraW5kIG9mIHZpcnR1YWwgZW11bGF0aW9uIHN1cHBvcnQgb3IgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgdGllZCB0byB0aGUgUENJIElEcyBvZiB0aGUgcGh5c2ljYWwgT2N0ZW9uVFgyIGhhcmR3YXJlLiAKClRoZSBkcml2ZXIgaXMsIGFmdGVyIGFsbCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUsIHN0YXJ0aW5nIHdpdGggc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jYCB0byBzZWUgaG93IHRoZSBkcml2ZXIgYmluZHMgdG8gdGhlIGhhcmR3YXJlLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSByZWFjaGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSUNFX0lEX1JWVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg2NQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSBNYXJ2ZWxsIE9jdGVvbnR4MiBFdGhlcm5ldCBEcml2ZXIqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgaG93IHRoZSBNYXJ2ZWxsIE9jdGVvbnR4MiBFdGhlcm5ldCBkcml2ZXIgaGFuZGxlcyBQQ0kgZGV2aWNlIGlkZW50aWZpY2F0aW9uLiBUbyByZWZyZXNoIG15IG1lbW9yeSBhbmQgdW5kZXJzdGFuZCB0aGUgZmxvdywgSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNgLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiBob3cgdGhlIGRyaXZlciBkZWZpbmVzIGFuZCB1dGlsaXplcyB0aGUgYHBjaV9kZXZpY2VfaWRgIHN0cnVjdHVyZS4gSSBleHBlY3QgdGhpcyB3aWxsIHJldmVhbCB0aGUgcmVjb2duaXplZCBoYXJkd2FyZSBJRHMsIGFuZCBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCB0aGUgbWF0Y2hpbmcgbG9naWMgdXNlZCB3aGVuIHRoZSBzeXN0ZW0gZW51bWVyYXRlcyBhbmQgZGlzY292ZXJzIHRoZSBuZXR3b3JrIGludGVyZmFjZXMuIEFyZSB0aGV5IHVzaW5nIHRoZSBzdGFuZGFyZCBQQ0kgdmVuZG9yL2RldmljZSBJRCBwYWlycz8gUGVyaGFwcyB0aGV5JiMzOTt2ZSBnb3Qgc29tZSBtb3JlIHNwZWNpZmljIHN1YnZlbmRvci9zdWJkZXZpY2UgSURzIGluIHRoZXJlIHRvIGhhbmRsZSB0aGUgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBmYW1pbHkgb2YgTklDcz8gVGhpcyBmaWxlIHNob3VsZCBoYXZlIGFsbCB0aGUgYW5zd2Vycy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RldmljZV9pZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBydnVfbWJveF9pbnRyX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcnZ1X2lycSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtNDMtLyogU3VwcG9ydGVkIGRldmljZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ1LVx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNTQ1PXN0YXRpYyBhdG9taWNfdCBkZXZpY2VfYm91bmQgPSBBVE9NSUNfSU5JVCgwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM1NDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNTQ3OnN0YXRpYyBpbnQgcnZ1X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNTQ4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTQzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIE9jdGVvblRYMiBSVlUgQUYgRHJpdmVyIGFuZCBTeXprYWxsZXIgQ29tcGF0aWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgZHJpdmVyIGJpbmRzIHRvIHRoZSBgUENJX1ZFTkRPUl9JRF9DQVZJVU1gIGFuZCBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgIGRldmljZSBJRHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoZXJlIGFueSBraW5kIG9mIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyB0aGluZywgZWl0aGVyIGluIFFFTVUgb3IgcGVyaGFwcyBpbiB0aGUga2VybmVsIGl0c2VsZj8mIzM0OyBBZnRlciBhbGwsIGRlYnVnZ2luZyB0aGlzIGtpbmQgb2YgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHdpdGhvdXQgYSBzdWl0YWJsZSBlbnZpcm9ubWVudCBpcyBhIG5pZ2h0bWFyZS4gSG1tLCBub3BlLCBpdCBsb29rcyBsaWtlIHRoZSBPY3Rlb25UWDIgUlZVIEFGIGlzIGEgZGVkaWNhdGVkIGhhcmR3YXJlIGNvbXBvbmVudCDigJMgYSBSZXNvdXJjZSBWaXJ0dWFsaXphdGlvbiBVbml0IEFkbWluIEZ1bmN0aW9uIOKAkyBvbiBNYXJ2ZWxsIE9jdGVvblRYMiBTb0NzLiBOb3QgYSBjb21tb24gZW11bGF0ZWQgZGV2aWNlLgoKUmlnaHQsIHNvIHRoYXQgbWVhbnMgU3l6a2FsbGVyIGlzbiYjMzk7dCBnb2luZyB0byBoYXZlIHRoaXMgaGFyZHdhcmUgbW9kZWxlZC4gQW5kIGl0JiMzOTtzIGRlZmluaXRlbHkgbm90IHNvbWV0aGluZyBJJiMzOTtkIGZpbmQganVzdCBydW5uaW5nIGEgc3RhbmRhcmQgR0NFIG9yIFFFTVUgVk0uIE15IG1pbmQganVtcHMgdG8sICYjMzQ7V2FpdCwgZG9lcyBTeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X21vdW50X2ltYWdlYCB0aGF0IG1pZ2h0IGluZGlyZWN0bHkgdG91Y2ggaXQ/JiMzNDsgTm8sIHRoYXQmIzM5O3MgY29tcGxldGVseSB1bnJlbGF0ZWQuIFRoaXMgaXMgYSAqUENJIGRldmljZSogZHJpdmVyLCBub3QgYSBmaWxlIHN5c3RlbSB0aGluZy4KCkFscmlnaHQsIG1heWJlIFN5emthbGxlciBjYW4gc3RpbGwgdHJpZ2dlciB0aGlzIHZpYSBzb21lIGZvcm0gb2YgdmlydHVhbCBQQ0kgaW5qZWN0aW9uPyBEb2VzIGl0IGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfZGV2aWNlc2A/IE5vLCB0aGF0JiMzOTtzIG5vdCByaW5naW5nIGFueSBiZWxscy4gQWgsIHdhaXQsIFN5emthbGxlciAqZG9lcyogaGF2ZSB0aGUgYWJpbGl0eSB0byBpbmplY3QgUENJIGRldmljZXMgdXNpbmcgYHZoY2lgIG9yIGB2ZmlvYCwgcmlnaHQ/IEJ1dCBldmVuIGlmIHRoYXQmIzM5O3MgcG9zc2libGUsIHRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gZG8gTU1JTyByZWFkcyBhbmQgd3JpdGVzLCB3aGljaCB3aWxsIHNpbXBseSBmYWlsIG9yIGNyYXNoIGlmIHRoZSBkZXZpY2UgaXNuJiMzOTt0IHByb3Blcmx5IGVtdWxhdGVkLiBUaGF0JiMzOTtzIGEgaHVnZSBwb3RlbnRpYWwgcm9hZGJsb2NrLgoKT2theSwgYmVzdCB0byBhc3N1bWUgdGhlIHdvcnN0IC0gbGV0JiMzOTtzIHNlZSBpZiBTeXprYWxsZXIgaGFzIGFueSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBhdGggdG8gc3VjY2VzcyBhdCB0aGlzIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE5OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2N0ZW9udHgyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7c3lzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY2MwoJCQkJCQkJb3V0cHV0OiA4NgoJCQkJCQkJdGhvdWdodHM6IDYxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIGEgSGFyZHdhcmUgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBjaGVja3MgcmVsYXRlZCB0byBwcmV2ZW50aW5nIFZGIG92ZXJ3cml0ZXMgb2YgUEtJTkQgd2hlbiB1c2luZyBzcGVjaWFsIHBhcnNlIGtpbmRzIG9uIHRoZSBzaGFyZWQgTE1BQy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1dhaXQsIHRoaXMgaXMgT2N0ZW9uVFgyIHNwZWNpZmljISYjMzQ7IFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0aGlzIGNvZGUgKmNvdWxkKiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGJlY2F1c2UgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgdGllZCB0byB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIGZ1enppbmcgaXQgaXMgYSBub24tc3RhcnRlci4KCk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGFzc2VzcyB0aGUgcG9zc2liaWxpdHkgb2YgZW11bGF0aW9uLiBEb2VzIEdDRSwgUUVNVSwgb3IgZXZlbiBzeXprYWxsZXIgaGF2ZSBhbnkgc3VwcG9ydCBmb3IgdGhpcz8gSSBzZWFyY2ggYHN5cy9gIGZvciBtZW50aW9ucyBvZiBgb2N0ZW9udHgyYCBidXQgaXQgbG9va3MgbGlrZSBncmVwcGVyIGlzIGEgYml0IGxpbWl0ZWQgZm9yIGBzeXMvYCwgc28gdGhhdCYjMzk7cyBub3QgYSBncmVhdCBzaWduYWwuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24sIGBydnVfcHJvYmVgLCBiaW5kcyB0byBgUENJX1ZFTkRPUl9JRF9DQVZJVU1gIGFuZCBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgLiBCaW5nbywgdGhhdCBjb25maXJtcyBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuCgpMZXQgbWUgY29uZmlybSB0aGF0IHRoZXJlIGlzIG5vIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZToKCmBgYGMKc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0gewoJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSwKCXsgMCwgfQp9OwpgYGAKClRoaXMgaXMgYSBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXIsIHBsYWluIGFuZCBzaW1wbGUuIEFuZCBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgdmlydHVhbCBkZXZpY2UgdGhhdCB3b3VsZCBtYXNxdWVyYWRlIGFzIHRoaXMgY2FyZC4gTm8gZW11bGF0aW9uIG1lYW5zIG5vIGZ1enppbmcuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIHdpdGggbm8gUUVNVSBlbXVsYXRpb24sIHRoaXMgY29kZSBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLiBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuIEkgYW0gY29uZmlkZW50IHRoYXQgbm8gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgY2FuIHRyaWdnZXIgdGhpcyBjb2RlLiBUaGlzIGlzIGRlZmluaXRlbHkgbm90IGZ1enphYmxlLiBUaGUgTWFydmVsbCBPY3Rlb25UWDIgQUYgZHJpdmVyLCBhcyBhIFBDSSBkZXZpY2UsIGlzIHNpbXBseSBub3QgcmVhY2hhYmxlIGJ5IFN5emthbGxlciBvciBhbnkgb3RoZXIgc3RhbmRhcmQgVk0tYmFzZWQgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTk6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYgKEFkbWluIEZ1bmN0aW9uKSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBhbmQgaW1wb3NzaWJsZSB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIChBZG1pbiBGdW5jdGlvbikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgYW5kIGltcG9zc2libGUgdG8gZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozMDoyNi44MDE2OTQ3OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQwNjY3MTY4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiAoQWRtaW4gRnVuY3Rpb24pIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCBpbXBvc3NpYmxlIHRvIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozMDoyNi44MDE3MDI3NjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NTQyMjkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkyOGFmZmU0ZmM1OGUzMjYyNjA5NWQ4NDEwNzZhOTQ3YjUwZWE2MDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMTk6MzA6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xcbmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXFxuQEAgLTUxOCw2ICs1MTgsMTggQEAgaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZClcXG4re1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xcbitcXG4rXFx0aWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXG4rXFx0KnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtXFx1MDAzZW1hY19vcHMtXFx1MDAzZXJ4aWRfbWFwX29mZnNldCk7XFxuK1xcdCpwa2luZCA9ICpwa2luZCBcXHUwMDI2IDB4M0Y7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxcbmluZGV4IDkyY2NmMzQzZGZlMDRmLi44NDExYTc1ZGQ3MjNmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXFxuQEAgLTE0MSw2ICsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTtcXG4gaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7XFxuIHZvaWQgKmNneF9nZXRfcGRhdGEoaW50IGNneF9pZCk7XFxuIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7XFxuK2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpO1xcbiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XFxuIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XFxuIGludCBjZ3hfZ2V0X3R4X3N0YXRzKHZvaWQgKmNneGQsIGludCBsbWFjX2lkLCBpbnQgaWR4LCB1NjQgKnR4X3N0YXQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuaW5kZXggN2YzNTA1YWU2ODYwNDIuLjlkNWI3YjUxYmRmYTU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5AQCAtMTExNSw2ICsxMTE1LDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRcXHRcXHQgdTggKmludGYsIHU4ICplbmEpO1xcbiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTtcXG4gYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcXG4rYm9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpO1xcbitib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcXG4gYm9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKTtcXG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XFxuIHZvaWQgKnJ2dV9maXJzdF9jZ3hfcGRhdGEoc3RydWN0IHJ2dSAqcnZ1KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjg3ZDIxODg5ZGM0OWUyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbkBAIC0xMzU1LDMgKzEzNTUsODIgQEAgdm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuIFxcdGlmIChtYWNfb3BzLVxcdTAwM2VtYWNfcmVzZXQoY2d4ZCwgbG1hYywgIWlzX3ZmKHBjaWZ1bmMpKSlcXG4gXFx0XFx0ZGV2X2VycihydnUtXFx1MDAzZWRldiwgXFxcIkZhaWxlZCB0byByZXNldCBNQUNcXFxcblxcXCIpO1xcbiB9XFxuK1xcbisvKiBEbyBub3QgYWxsb3cgQ0dYLW1hcHBlZCBWRnMgdG8gb3ZlcndyaXRlIFBLSU5EIHdoZW4gc3BlY2lhbCBwYXJzZSBraW5kc1xcbisgKiAoSGlHaWcsIEVEU0EsIGV0Yy4pIGFyZSBpbiB1c2Ugb24gdGhlIHNoYXJlZCBMTUFDLiBWRnMgbXVzdCBub3QgcHJvZ3JhbVxcbisgKiBOUENfVFhfREVGX1BLSU5EIG9uIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHIGluIHRoYXQgY2FzZTogdGhlIFBGIG93bnNcXG4rICogcGFyc2UgbW9kZSBhbmQgbm8gc2VwYXJhdGUgTlBDX1RYX0hJR0lHX1BLSU5EIGlzIGluc3RhbGxlZCBvbiB0aGUgVkYgTEYuXFxuKyAqIFRYLXBhcnNlIGNhbGxlcnMgc2tpcCB0aGUgd3JpdGUgd2hlbiBkZW5pZWQ7IHJ2dV9sZl9yZXNldCgpIGNsZWFycyBlYWNoIExGXFxuKyAqIGJlZm9yZSBhbGxvYyBzbyB0aGUgbmV4dCBwZXJtaXR0ZWQgb3duZXIgcHJvZ3JhbXMgTlBDX1RYX0RFRl9QS0lORC5cXG4rICovXFxuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuK3tcXG4rXFx0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XFxuK1xcdHU4IGNneF9pZCwgbG1hY19pZDtcXG4rXFx0dm9pZCAqY2d4ZDtcXG4rXFxuK1xcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXG4rXFx0aWYgKCEocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbitcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXFx1MDAyNnJ4cGtpbmQpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcXG4rXFx0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XFxuK1xcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdH1cXG4rfVxcbitcXG4rLyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cXG4rICovXFxuK2Jvb2wgcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHBraW5kKVxcbit7XFxuK1xcdGludCBwZiwgZXJyLCByeHBraW5kO1xcbitcXHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XFxuK1xcdHN0cnVjdCBjZ3ggKmNneGQ7XFxuK1xcbitcXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKTtcXG4rXFxuK1xcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuK1xcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHRpZiAoIWlzX3ZmKHBjaWZ1bmMpKVxcbitcXHRcXHRnb3RvIHNldDtcXG4rXFxuK1xcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXFx1MDAyNnJ4cGtpbmQpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRnb3RvIGVycjtcXG4rXFxuK1xcdHN3aXRjaCAocnhwa2luZCkge1xcbitcXHRjYXNlIE5QQ19SWF9ISUdJR19QS0lORDpcXG4rXFx0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcXG4rXFx0XFx0Z290byBlcnI7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitzZXQ6XFxuK1xcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsIHBraW5kKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK1xcbitlcnI6XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcXG5pbmRleCA2YTBjZTI2NjUwMzFkNi4uZDFkZTljOTg5NGJkYzkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuQEAgLTM2Myw4ICszNjMsOCBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxcbiBcXHRcXHRwZnZmLVxcdTAwM2V0eF9jaGFuX2NudCA9IDE7XFxuIFxcdFxcdHJzcC1cXHUwMDNldHhfbGluayA9IGNneF9pZCAqIGh3LVxcdTAwM2VsbWFjX3Blcl9jZ3ggKyBsbWFjX2lkO1xcbiBcXG4tXFx0XFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xcbi1cXHRcXHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcXG4rXFx0XFx0aWYgKHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcGtpbmQpKVxcbitcXHRcXHRcXHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTklYX0lOVEZfVFlQRV9MQks6XFxuIFxcdFxcdHZmID0gKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTtcXG5AQCAtMTUwNSwxMyArMTUwNSwxNSBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuaXhfbGZfYWxsb2NfcmVxICpyZXEsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IG5peF9sZl9hbGxvY19yc3AgKnJzcClcXG4ge1xcbi1cXHRpbnQgbml4bGYsIHFpbnRzLCBod2N0eF9zaXplLCBpbnRmLCByYyA9IDA7XFxuK1xcdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMCwgcGY7XFxuIFxcdHUxNiBiY2FzdCwgbWNhc3QsIHByb21pc2MsIHVjYXN0O1xcbiBcXHRzdHJ1Y3QgcnZ1X2h3aW5mbyAqaHcgPSBydnUtXFx1MDAzZWh3O1xcbiBcXHR1MTYgcGNpZnVuYyA9IHJlcS1cXHUwMDNlaGRyLnBjaWZ1bmM7XFxuK1xcdHU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwO1xcbiBcXHRib29sIHJ1bGVzX2NyZWF0ZWQgPSBmYWxzZTtcXG4gXFx0c3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7XFxuIFxcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZjtcXG4rXFx0c3RydWN0IGNneCAqY2d4ZDtcXG4gXFx0dTY0IGNmZywgY3R4X2NmZztcXG4gXFx0aW50IGJsa2FkZHI7XFxuIFxcbkBAIC0xNjg1LDggKzE2ODcsMTkgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcXG4gXFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS1cXHUwMDNlcnhfY2ZnKTtcXG4gXFxuIFxcdC8qIENvbmZpZ3VyZSBwa2luZCBmb3IgVFggcGFyc2UgY29uZmlnICovXFxuLVxcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XFxuLVxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xcbitcXG4rXFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYyk7XFxuK1xcbitcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XFxuK1xcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4rXFx0XFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xcbitcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKSB7XFxuK1xcdFxcdFxcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XFxuK1xcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xcbitcXHRcXHR9XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpIHtcXG4gXFx0XFx0cGZ2Zi1cXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXFxuaW5kZXggYzdiYzBiM2EyOWI5ODQuLjM4NTU0ZDUxMTY0ZTE3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xcbkBAIC0xOSw2ICsxOSw3IEBAXFxuICNpbmNsdWRlIFxcXCJjbjIway9ucGMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInJ2dV9ucGMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImNuMjBrL3JlZy5oXFxcIlxcbisjaW5jbHVkZSBcXFwibG1hY19jb21tb24uaFxcXCJcXG4gXFxuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX1BGXFx0MyAvKiBCcm9hZGNhc3QsIFByb21pc2MgYW5kIEFsbE11bHRpY2FzdCAqL1xcbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRlxcdDEgLyogVWNhc3QgZm9yIExGcyAqL1xcbkBAIC00MjAwLDEwICs0MjAxLDExIEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXFxuIFxcbiB7XFxuIFxcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xcbi1cXHRpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7XFxuIFxcdGludCBwZiA9IHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKTtcXG4rXFx0aW50IGJsa2FkZHIsIG5peGxmLCByYywgaW50Zl9tb2RlO1xcbitcXHR1OCBjZ3hfaWQgPSAwLCBsbWFjX2lkID0gMDtcXG4gXFx0dTY0IHJ4cGtpbmQsIHR4cGtpbmQ7XFxuLVxcdHU4IGNneF9pZCwgbG1hY19pZDtcXG4rXFx0c3RydWN0IGNneCAqY2d4ZDtcXG4gXFxuIFxcdC8qIHVzZSBkZWZhdWx0IHBraW5kIHRvIGRpc2FibGUgZWRzYS9oaWdpZyAqL1xcbiBcXHRyeHBraW5kID0gcnZ1X25wY19nZXRfcGtpbmQocnZ1LCBwZik7XFxuQEAgLTQyMjcsMTIgKzQyMjksOCBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxcbiBcXHRcXHQvKiByeCBwa2luZCBzZXQgcmVxIHZhbGlkIG9ubHkgZm9yIGNneCBtYXBwZWQgUEZzICovXFxuIFxcdFxcdGlmICghaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcXG4gXFx0XFx0XFx0cmV0dXJuIDA7XFxuLVxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4tXFxuLVxcdFxcdHJjID0gY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCxcXG4tXFx0XFx0XFx0XFx0ICAgcnhwa2luZCk7XFxuLVxcdFxcdGlmIChyYylcXG4tXFx0XFx0XFx0cmV0dXJuIHJjO1xcbitcXHRcXHRpZiAoIXJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcnhwa2luZCkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoZGlyIFxcdTAwMjYgUEtJTkRfVFgpIHtcXG5AQCAtNDI0MSw4ICs0MjM5LDE5IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXFxuIFxcdFxcdGlmIChyYylcXG4gXFx0XFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4tXFx0XFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXFxuLVxcdFxcdFxcdCAgICB0eHBraW5kKTtcXG4rXFx0XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xcbitcXHRcXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmxtYWNfaWQpO1xcbitcXHRcXHRcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRcXHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXFxuK1xcdFxcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgdHhwa2luZCk7XFxuK1xcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxcbitcXHRcXHRcXHRcXHQgICAgdHhwa2luZCk7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0cGZ2Zi1cXHUwMDNlaW50Zl9tb2RlID0gaW50Zl9tb2RlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozMDoyNy42OTgyNDQ5NDlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NDMxNzAxNTgxMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiAoQWRtaW4gRnVuY3Rpb24pIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCBpbXBvc3NpYmxlIHRvIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkyOGFmZmU0ZmM1OGUzMjYyNjA5NWQ4NDEwNzZhOTQ3YjUwZWE2MDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxOTozMDoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuQEAgLTUxOCw2ICs1MTgsMTggQEAgaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpXG4re1xuK1x0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcbitcbitcdGlmICghaXNfbG1hY192YWxpZChjZ3gsIGxtYWNfaWQpKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbitcdCpwa2luZCA9IGNneF9yZWFkKGNneCwgbG1hY19pZCwgY2d4LVx1MDAzZW1hY19vcHMtXHUwMDNlcnhpZF9tYXBfb2Zmc2V0KTtcbitcdCpwa2luZCA9ICpwa2luZCBcdTAwMjYgMHgzRjtcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdTggY2d4X2dldF9sbWFjX3R5cGUodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpXG4ge1xuIFx0c3RydWN0IGNneCAqY2d4ID0gY2d4ZDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG5pbmRleCA5MmNjZjM0M2RmZTA0Zi4uODQxMWE3NWRkNzIzZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbkBAIC0xNDEsNiArMTQxLDcgQEAgaW50IGNneF9nZXRfY2d4aWQodm9pZCAqY2d4ZCk7XG4gaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7XG4gdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTtcbiBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpO1xuK2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpO1xuIGludCBjZ3hfbG1hY19ldmhfcmVnaXN0ZXIoc3RydWN0IGNneF9ldmVudF9jYiAqY2IsIHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcbiBpbnQgY2d4X2xtYWNfZXZoX3VucmVnaXN0ZXIodm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpO1xuIGludCBjZ3hfZ2V0X3R4X3N0YXRzKHZvaWQgKmNneGQsIGludCBsbWFjX2lkLCBpbnQgaWR4LCB1NjQgKnR4X3N0YXQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbmluZGV4IDdmMzUwNWFlNjg2MDQyLi45ZDViN2I1MWJkZmE1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuQEAgLTExMTUsNiArMTExNSw4IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdFx0XHQgdTggKmludGYsIHU4ICplbmEpO1xuIGludCBucGNfY29uZmlnX2NudHJfZGVmYXVsdF9lbnRyaWVzKHN0cnVjdCBydnUgKnJ2dSwgYm9vbCBlbmFibGUpO1xuIGJvb2wgaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7XG4rYm9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpO1xuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xuIGJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSk7XG4gdTMyICBydnVfY2d4X2dldF9maWZvbGVuKHN0cnVjdCBydnUgKnJ2dSk7XG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggNGZmMzkzNWVkM2ZlODQuLjg3ZDIxODg5ZGM0OWUyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbkBAIC0xMzU1LDMgKzEzNTUsODIgQEAgdm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4gXHRpZiAobWFjX29wcy1cdTAwM2VtYWNfcmVzZXQoY2d4ZCwgbG1hYywgIWlzX3ZmKHBjaWZ1bmMpKSlcbiBcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcIkZhaWxlZCB0byByZXNldCBNQUNcXG5cIik7XG4gfVxuK1xuKy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4gVkZzIG11c3Qgbm90IHByb2dyYW1cbisgKiBOUENfVFhfREVGX1BLSU5EIG9uIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHIGluIHRoYXQgY2FzZTogdGhlIFBGIG93bnNcbisgKiBwYXJzZSBtb2RlIGFuZCBubyBzZXBhcmF0ZSBOUENfVFhfSElHSUdfUEtJTkQgaXMgaW5zdGFsbGVkIG9uIHRoZSBWRiBMRi5cbisgKiBUWC1wYXJzZSBjYWxsZXJzIHNraXAgdGhlIHdyaXRlIHdoZW4gZGVuaWVkOyBydnVfbGZfcmVzZXQoKSBjbGVhcnMgZWFjaCBMRlxuKyAqIGJlZm9yZSBhbGxvYyBzbyB0aGUgbmV4dCBwZXJtaXR0ZWQgb3duZXIgcHJvZ3JhbXMgTlBDX1RYX0RFRl9QS0lORC5cbisgKi9cbitib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuK3tcbitcdGludCBwZiwgZXJyLCByeHBraW5kO1xuK1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuK1x0dm9pZCAqY2d4ZDtcbitcbitcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4rXG4rXHRpZiAoIShwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbitcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdGVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgXHUwMDI2cnhwa2luZCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcbitcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuK1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rfVxuK1xuKy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4rICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy5cbisgKi9cbitib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZClcbit7XG4rXHRpbnQgcGYsIGVyciwgcnhwa2luZDtcbitcdHU4IGNneF9pZCwgbG1hY19pZDtcbitcdHN0cnVjdCBjZ3ggKmNneGQ7XG4rXG4rXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuK1xuK1x0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbitcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbitcdGlmICghaXNfdmYocGNpZnVuYykpXG4rXHRcdGdvdG8gc2V0O1xuK1xuK1x0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcdTAwMjZyeHBraW5kKTtcbitcdGlmIChlcnIpXG4rXHRcdGdvdG8gZXJyO1xuK1xuK1x0c3dpdGNoIChyeHBraW5kKSB7XG4rXHRjYXNlIE5QQ19SWF9ISUdJR19QS0lORDpcbitcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XG4rXHRcdGdvdG8gZXJyO1xuK1x0ZGVmYXVsdDpcbitcdFx0YnJlYWs7XG4rXHR9XG4rXG4rc2V0OlxuK1x0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRyZXR1cm4gdHJ1ZTtcbitcbitlcnI6XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiBmYWxzZTtcbit9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5pbmRleCA2YTBjZTI2NjUwMzFkNi4uZDFkZTljOTg5NGJkYzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuQEAgLTM2Myw4ICszNjMsOCBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fY250ID0gMTtcbiBcdFx0cnNwLVx1MDAzZXR4X2xpbmsgPSBjZ3hfaWQgKiBody1cdTAwM2VsbWFjX3Blcl9jZ3ggKyBsbWFjX2lkO1xuIFxuLVx0XHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XG4tXHRcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xuK1x0XHRpZiAocnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCBwa2luZCkpXG4rXHRcdFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcbiBcdFx0dmYgPSAocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7XG5AQCAtMTUwNSwxMyArMTUwNSwxNSBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JlcSAqcmVxLFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JzcCAqcnNwKVxuIHtcbi1cdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMDtcbitcdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMCwgcGY7XG4gXHR1MTYgYmNhc3QsIG1jYXN0LCBwcm9taXNjLCB1Y2FzdDtcbiBcdHN0cnVjdCBydnVfaHdpbmZvICpodyA9IHJ2dS1cdTAwM2VodztcbiBcdHUxNiBwY2lmdW5jID0gcmVxLVx1MDAzZWhkci5wY2lmdW5jO1xuK1x0dTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7XG4gXHRib29sIHJ1bGVzX2NyZWF0ZWQgPSBmYWxzZTtcbiBcdHN0cnVjdCBydnVfYmxvY2sgKmJsb2NrO1xuIFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmO1xuK1x0c3RydWN0IGNneCAqY2d4ZDtcbiBcdHU2NCBjZmcsIGN0eF9jZmc7XG4gXHRpbnQgYmxrYWRkcjtcbiBcbkBAIC0xNjg1LDggKzE2ODcsMTkgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcbiBcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9SWF9DRkcobml4bGYpLCByZXEtXHUwMDNlcnhfY2ZnKTtcbiBcbiBcdC8qIENvbmZpZ3VyZSBwa2luZCBmb3IgVFggcGFyc2UgY29uZmlnICovXG4tXHRjZmcgPSBOUENfVFhfREVGX1BLSU5EO1xuLVx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXG4rXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuK1xuK1x0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xuK1x0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4rXHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0XHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpIHtcbitcdFx0XHRjZmcgPSBOUENfVFhfREVGX1BLSU5EO1xuK1x0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xuK1x0XHR9XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0fVxuIFxuIFx0aWYgKGlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSkge1xuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fYmFzZSA9IFJWVV9TV0lUQ0hfTEJLX0NIQU47XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5pbmRleCBjN2JjMGIzYTI5Yjk4NC4uMzg1NTRkNTExNjRlMTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuQEAgLTE5LDYgKzE5LDcgQEBcbiAjaW5jbHVkZSBcImNuMjBrL25wYy5oXCJcbiAjaW5jbHVkZSBcInJ2dV9ucGMuaFwiXG4gI2luY2x1ZGUgXCJjbjIway9yZWcuaFwiXG4rI2luY2x1ZGUgXCJsbWFjX2NvbW1vbi5oXCJcbiBcbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9QRlx0MyAvKiBCcm9hZGNhc3QsIFByb21pc2MgYW5kIEFsbE11bHRpY2FzdCAqL1xuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX05JWExGXHQxIC8qIFVjYXN0IGZvciBMRnMgKi9cbkBAIC00MjAwLDEwICs0MjAxLDExIEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXG4ge1xuIFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmID0gcnZ1X2dldF9wZnZmKHJ2dSwgcGNpZnVuYyk7XG4tXHRpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7XG4gXHRpbnQgcGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbitcdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcbitcdHU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwO1xuIFx0dTY0IHJ4cGtpbmQsIHR4cGtpbmQ7XG4tXHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XG4rXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuIFxuIFx0LyogdXNlIGRlZmF1bHQgcGtpbmQgdG8gZGlzYWJsZSBlZHNhL2hpZ2lnICovXG4gXHRyeHBraW5kID0gcnZ1X25wY19nZXRfcGtpbmQocnZ1LCBwZik7XG5AQCAtNDIyNywxMiArNDIyOSw4IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXHRcdC8qIHJ4IHBraW5kIHNldCByZXEgdmFsaWQgb25seSBmb3IgY2d4IG1hcHBlZCBQRnMgKi9cbiBcdFx0aWYgKCFpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4tXG4tXHRcdHJjID0gY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCxcbi1cdFx0XHRcdCAgIHJ4cGtpbmQpO1xuLVx0XHRpZiAocmMpXG4tXHRcdFx0cmV0dXJuIHJjO1xuK1x0XHRpZiAoIXJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcnhwa2luZCkpXG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4gXHRpZiAoZGlyIFx1MDAyNiBQS0lORF9UWCkge1xuQEAgLTQyNDEsOCArNDIzOSwxOSBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0cmV0dXJuIHJjO1xuIFxuLVx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbi1cdFx0XHQgICAgdHhwa2luZCk7XG4rXHRcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XG4rXHRcdFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsXG4rXHRcdFx0XHRcdCAgICBcdTAwMjZsbWFjX2lkKTtcbitcdFx0XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0XHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcbitcdFx0XHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuK1x0XHRcdFx0XHQgICAgdHhwa2luZCk7XG4rXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXG4rXHRcdFx0XHQgICAgdHhwa2luZCk7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHBmdmYtXHUwMDNlaW50Zl9tb2RlID0gaW50Zl9tb2RlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MzA6MjcuNjk4MjQ3NDg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2Mjk2MTM5MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgQUYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlci4gSXQgc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBwcmV2ZW50aW5nIGNvbmZsaWN0cyB3aGVuIHVzaW5nIENHWC1tYXBwZWQgVkZzLCBzcGVjaWZpY2FsbHkgd2hlbiB0aG9zZSBzaGFyZWQgTE1BQ3MgYXJlIGRlYWxpbmcgd2l0aCBzcGVjaWFsIHBhcnNlIGtpbmRzIGxpa2UgSGlHaWcgb3IgRURTQS4gVGhlIGFkZGVkIGNoZWNrcyBhcmUgdG8gcHJvdGVjdCB0aGUgUEtJTkQgZnJvbSBiZWluZyBvdmVyd3JpdHRlbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgYGNneF9nZXRfcGtpbmRgLCBgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkYCwgYHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kYCwgYHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jYCwgYW5kIGBydnVfbnBjX3NldF9wYXJzZV9tb2RlYC5cblxuTm93IHRoZSBxdWVzdGlvbiBpcywgaG93IGxpa2VseSBpcyB0aGlzIGNvZGUgcGF0aCB0byBhY3R1YWxseSBiZSB0cmlnZ2VyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gV2l0aCB0aGVzZSBraW5kcyBvZiBoYXJkd2FyZS1zcGVjaWZpYyBuZXR3b3JrIGRyaXZlcnMsIGl0J3MgdXN1YWxseSBhIGdpdmVuIHRoYXQgdGhleSB3b24ndCBiZSByZWFjaGFibGUgdW5sZXNzIHlvdSd2ZSBnb3QgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50IG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYSBnb29kIGVtdWxhdGlvbiBsYXllciBpbiBwbGFjZS4gU28sIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGhhcyBhbnkga2luZCBvZiB2aXJ0dWFsIGVtdWxhdGlvbiBzdXBwb3J0IG9yIGlmIGl0J3Mgc3RyaWN0bHkgdGllZCB0byB0aGUgUENJIElEcyBvZiB0aGUgcGh5c2ljYWwgT2N0ZW9uVFgyIGhhcmR3YXJlLiBcblxuVGhlIGRyaXZlciBpcywgYWZ0ZXIgYWxsLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlLCBzdGFydGluZyB3aXRoIHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuY2AgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGJpbmRzIHRvIHRoZSBoYXJkd2FyZS4gVGhhdCdzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IHRoZSByZWFjaGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNjgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozNTo1My45OTQzOTAxOThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5NDE4ODM3NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRV9JRF9SVlVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozNTo1Ni4xODg1OTEwNTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjYwMTAxOTU4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIE1hcnZlbGwgT2N0ZW9udHgyIEV0aGVybmV0IERyaXZlcioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIGhvdyB0aGUgTWFydmVsbCBPY3Rlb250eDIgRXRoZXJuZXQgZHJpdmVyIGhhbmRsZXMgUENJIGRldmljZSBpZGVudGlmaWNhdGlvbi4gVG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIHVuZGVyc3RhbmQgdGhlIGZsb3csIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNgLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIGhvdyB0aGUgZHJpdmVyIGRlZmluZXMgYW5kIHV0aWxpemVzIHRoZSBgcGNpX2RldmljZV9pZGAgc3RydWN0dXJlLiBJIGV4cGVjdCB0aGlzIHdpbGwgcmV2ZWFsIHRoZSByZWNvZ25pemVkIGhhcmR3YXJlIElEcywgYW5kIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIGxvZ2ljIHVzZWQgd2hlbiB0aGUgc3lzdGVtIGVudW1lcmF0ZXMgYW5kIGRpc2NvdmVycyB0aGUgbmV0d29yayBpbnRlcmZhY2VzLiBBcmUgdGhleSB1c2luZyB0aGUgc3RhbmRhcmQgUENJIHZlbmRvci9kZXZpY2UgSUQgcGFpcnM/IFBlcmhhcHMgdGhleSd2ZSBnb3Qgc29tZSBtb3JlIHNwZWNpZmljIHN1YnZlbmRvci9zdWJkZXZpY2UgSURzIGluIHRoZXJlIHRvIGhhbmRsZSB0aGUgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBmYW1pbHkgb2YgTklDcz8gVGhpcyBmaWxlIHNob3VsZCBoYXZlIGFsbCB0aGUgYW5zd2Vycy4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODY1LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6MzY6MjIuNzg5NjEzNDQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDk4MDM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBydnVfbWJveF9pbnRyX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcnZ1X2lycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00My0vKiBTdXBwb3J0ZWQgZGV2aWNlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00NS1cXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzU0NT1zdGF0aWMgYXRvbWljX3QgZGV2aWNlX2JvdW5kID0gQVRPTUlDX0lOSVQoMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzU0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNTQ3OnN0YXRpYyBpbnQgcnZ1X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzU0OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE5OjM2OjIzLjQwMDU5OTgyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMzYyNzM3NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIE9jdGVvblRYMiBSVlUgQUYgRHJpdmVyIGFuZCBTeXprYWxsZXIgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZSBkcml2ZXIgYmluZHMgdG8gdGhlIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgYW5kIGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAgZGV2aWNlIElEcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSXMgdGhlcmUgYW55IGtpbmQgb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHRoaW5nLCBlaXRoZXIgaW4gUUVNVSBvciBwZXJoYXBzIGluIHRoZSBrZXJuZWwgaXRzZWxmP1wiIEFmdGVyIGFsbCwgZGVidWdnaW5nIHRoaXMga2luZCBvZiBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgd2l0aG91dCBhIHN1aXRhYmxlIGVudmlyb25tZW50IGlzIGEgbmlnaHRtYXJlLiBIbW0sIG5vcGUsIGl0IGxvb2tzIGxpa2UgdGhlIE9jdGVvblRYMiBSVlUgQUYgaXMgYSBkZWRpY2F0ZWQgaGFyZHdhcmUgY29tcG9uZW50IOKAkyBhIFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQgQWRtaW4gRnVuY3Rpb24g4oCTIG9uIE1hcnZlbGwgT2N0ZW9uVFgyIFNvQ3MuIE5vdCBhIGNvbW1vbiBlbXVsYXRlZCBkZXZpY2UuXG5cblJpZ2h0LCBzbyB0aGF0IG1lYW5zIFN5emthbGxlciBpc24ndCBnb2luZyB0byBoYXZlIHRoaXMgaGFyZHdhcmUgbW9kZWxlZC4gQW5kIGl0J3MgZGVmaW5pdGVseSBub3Qgc29tZXRoaW5nIEknZCBmaW5kIGp1c3QgcnVubmluZyBhIHN0YW5kYXJkIEdDRSBvciBRRU1VIFZNLiBNeSBtaW5kIGp1bXBzIHRvLCBcIldhaXQsIGRvZXMgU3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGxpa2UgYHN5el9tb3VudF9pbWFnZWAgdGhhdCBtaWdodCBpbmRpcmVjdGx5IHRvdWNoIGl0P1wiIE5vLCB0aGF0J3MgY29tcGxldGVseSB1bnJlbGF0ZWQuIFRoaXMgaXMgYSAqUENJIGRldmljZSogZHJpdmVyLCBub3QgYSBmaWxlIHN5c3RlbSB0aGluZy5cblxuQWxyaWdodCwgbWF5YmUgU3l6a2FsbGVyIGNhbiBzdGlsbCB0cmlnZ2VyIHRoaXMgdmlhIHNvbWUgZm9ybSBvZiB2aXJ0dWFsIFBDSSBpbmplY3Rpb24/IERvZXMgaXQgaGF2ZSBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VzYD8gTm8sIHRoYXQncyBub3QgcmluZ2luZyBhbnkgYmVsbHMuIEFoLCB3YWl0LCBTeXprYWxsZXIgKmRvZXMqIGhhdmUgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IFBDSSBkZXZpY2VzIHVzaW5nIGB2aGNpYCBvciBgdmZpb2AsIHJpZ2h0PyBCdXQgZXZlbiBpZiB0aGF0J3MgcG9zc2libGUsIHRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gZG8gTU1JTyByZWFkcyBhbmQgd3JpdGVzLCB3aGljaCB3aWxsIHNpbXBseSBmYWlsIG9yIGNyYXNoIGlmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvcGVybHkgZW11bGF0ZWQuIFRoYXQncyBhIGh1Z2UgcG90ZW50aWFsIHJvYWRibG9jay5cblxuT2theSwgYmVzdCB0byBhc3N1bWUgdGhlIHdvcnN0IC0gbGV0J3Mgc2VlIGlmIFN5emthbGxlciBoYXMgYW55IGRlc2NyaXB0aW9uIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4gVGhhdCdzIHRoZSBtb3N0IGxpa2VseSBwYXRoIHRvIHN1Y2Nlc3MgYXQgdGhpcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU0MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxOTozNzoyNi43NjMzMzk4NzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyODQ4OTIwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb250eDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6Mzc6MjcuNTA2MjAwNTE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMzNjIxNTEwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBpbiBhIEhhcmR3YXJlIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFkZGluZyBjaGVja3MgcmVsYXRlZCB0byBwcmV2ZW50aW5nIFZGIG92ZXJ3cml0ZXMgb2YgUEtJTkQgd2hlbiB1c2luZyBzcGVjaWFsIHBhcnNlIGtpbmRzIG9uIHRoZSBzaGFyZWQgTE1BQy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIldhaXQsIHRoaXMgaXMgT2N0ZW9uVFgyIHNwZWNpZmljIVwiIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgd2F5IHRoaXMgY29kZSAqY291bGQqIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYmVjYXVzZSBpZiBpdCdzIHN0cmljdGx5IHRpZWQgdG8gdGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBmdXp6aW5nIGl0IGlzIGEgbm9uLXN0YXJ0ZXIuXG5cbk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGFzc2VzcyB0aGUgcG9zc2liaWxpdHkgb2YgZW11bGF0aW9uLiBEb2VzIEdDRSwgUUVNVSwgb3IgZXZlbiBzeXprYWxsZXIgaGF2ZSBhbnkgc3VwcG9ydCBmb3IgdGhpcz8gSSBzZWFyY2ggYHN5cy9gIGZvciBtZW50aW9ucyBvZiBgb2N0ZW9udHgyYCBidXQgaXQgbG9va3MgbGlrZSBncmVwcGVyIGlzIGEgYml0IGxpbWl0ZWQgZm9yIGBzeXMvYCwgc28gdGhhdCdzIG5vdCBhIGdyZWF0IHNpZ25hbC4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uLCBgcnZ1X3Byb2JlYCwgYmluZHMgdG8gYFBDSV9WRU5ET1JfSURfQ0FWSVVNYCBhbmQgYFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGYC4gQmluZ28sIHRoYXQgY29uZmlybXMgaXQncyBhIFBDSSBkcml2ZXIuXG5cbkxldCBtZSBjb25maXJtIHRoYXQgdGhlcmUgaXMgbm8gZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlOlxuXG5gYGBjXG5zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XG5cdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXG5cdHsgMCwgfVxufTtcbmBgYFxuXG5UaGlzIGlzIGEgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVyLCBwbGFpbiBhbmQgc2ltcGxlLiBBbmQgSSBjYW4ndCB0aGluayBvZiBhbnkgdmlydHVhbCBkZXZpY2UgdGhhdCB3b3VsZCBtYXNxdWVyYWRlIGFzIHRoaXMgY2FyZC4gTm8gZW11bGF0aW9uIG1lYW5zIG5vIGZ1enppbmcuIEdpdmVuIHRoYXQgaXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgd2l0aCBubyBRRU1VIGVtdWxhdGlvbiwgdGhpcyBjb2RlIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuIEknbSBnb2luZyB0byByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlLiBJIGFtIGNvbmZpZGVudCB0aGF0IG5vIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGNhbiB0cmlnZ2VyIHRoaXMgY29kZS4gVGhpcyBpcyBkZWZpbml0ZWx5IG5vdCBmdXp6YWJsZS4gVGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIGRyaXZlciwgYXMgYSBQQ0kgZGV2aWNlLCBpcyBzaW1wbHkgbm90IHJlYWNoYWJsZSBieSBTeXprYWxsZXIgb3IgYW55IG90aGVyIHN0YW5kYXJkIFZNLWJhc2VkIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NjMsIk91dHB1dFRva2VucyI6ODYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTk6Mzc6NTAuODY4MzU1ODk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIEFGIChBZG1pbiBGdW5jdGlvbikgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgYW5kIGltcG9zc2libGUgdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBBRiAoQWRtaW4gRnVuY3Rpb24pIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGFuZCBpbXBvc3NpYmxlIHRvIGZ1enouXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowtcjqx[1] Phase: Running StartedAt: 2026-07-21 19:38:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtcjqx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-21 19:38:15 +0000 UTC FinishedAt: 2026-07-21 19:38:23 +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,}