Name: series-workflowjqf92 Phase: Failed StartedAt: 2026-09-15 02:29:42 +0000 UTC FinishedAt: 2026-09-15 03:20:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjqf92[0] Phase: Succeeded StartedAt: 2026-09-15 02:29:42 +0000 UTC FinishedAt: 2026-09-15 03:20:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjqf92[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 02:29:42 +0000 UTC FinishedAt: 2026-09-15 03:20:48 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwNmJkYzYwYjRhNDFiNTFhZjc3ODA5NmQ5ZWRjZjNmYzE2OTUwNmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzoxOTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG5pbmRleCA0MDFmOGI4YWUxY2FlLi5lNzkxOGQzZjZhYmE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG5AQCAtMzExLDYgJiM0MzszMTEsMjkgQEAgZmJuaWNfcnhfY3N1bSh1NjQgcmNkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmNxLFxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZmJuaWNfdHhfZG9vcmJlbGwoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIF9fbGU2NCAqbWV0YSlcbiYjNDM7e1xuJiM0MztcdCptZXRhIHw9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX1JFUV9DT01QTEVUSU9OKTtcbiYjNDM7XHRyaW5nLVx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcbiYjNDM7XG4mIzQzO1x0LyogRm9yY2UgRE1BIHdyaXRlcyB0byBmbHVzaCBiZWZvcmUgd3JpdGluZyB0byB0YWlsICovXG4mIzQzO1x0ZG1hX3dtYigpO1xuJiM0MztcbiYjNDM7XHR3cml0ZWwocmluZy1cdTAwM2V0YWlsLCByaW5nLVx1MDAzZWRvb3JiZWxsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUGFja2V0cyBoYW5kZWQgdG8gdXMgd2l0aCB4bWl0X21vcmUgc2V0IGFyZSBsZWZ0IGluIHRoZSByaW5nIHdpdGhvdXQgYVxuJiM0MzsgKiBkb29yYmVsbCwgYW5kIHdpdGhvdXQgYSBjb21wbGV0aW9uIHJlcXVlc3QsIGluIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZVxuJiM0MzsgKiBwYWNrZXQgZW5kaW5nIHRoZSBidXJzdCB3aWxsIHJpbmcgZm9yIGFsbCBvZiB0aGVtLiBJZiB0aGF0IHBhY2tldCBnZXRzXG4mIzQzOyAqIGRyb3BwZWQgaW5zdGVhZCB3ZSBoYXZlIHRvIHJpbmcgaGVyZSwgb3RoZXJ3aXNlIHRoZSBkZXNjcmlwdG9ycyBzaXQgaW5cbiYjNDM7ICogdGhlIHJpbmcgdW50aWwgdGhlIG5leHQgdHJhbnNtaXQsIHdoaWNoIG1heSBuZXZlciBjb21lLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwoc3RydWN0IGZibmljX3JpbmcgKnJpbmcpXG4mIzQzO3tcbiYjNDM7XHRpZiAocmluZy1cdTAwM2VkZWZlcnJlZF9tZXRhIFx1MDAzZT0gMClcbiYjNDM7XHRcdGZibmljX3R4X2Rvb3JiZWxsKHJpbmcsIFx1MDAyNnJpbmctXHUwMDNlZGVzY1tyaW5nLVx1MDAzZWRlZmVycmVkX21ldGFdKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgYm9vbFxuIGZibmljX3R4X21hcChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTY0ICptZXRhKVxuIHtcbkBAIC0zNzgsMTQgJiM0Mzs0MDEsMTAgQEAgZmJuaWNfdHhfbWFwKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2xlNjQgKm1ldGEpXG4gXHQvKiBWZXJpZnkgdGhlcmUgaXMgcm9vbSBmb3IgYW5vdGhlciBwYWNrZXQgKi9cbiBcdGZibmljX21heWJlX3N0b3BfdHgoc2tiLVx1MDAzZWRldiwgcmluZywgRkJOSUNfTUFYX1NLQl9ERVNDKTtcbiBcbi1cdGlmIChmYm5pY190eF9zZW50X3F1ZXVlKHNrYiwgcmluZykpIHtcbi1cdFx0Km1ldGEgfD0gY3B1X3RvX2xlNjQoRkJOSUNfVFdEX0ZMQUdfUkVRX0NPTVBMRVRJT04pO1xuLVxuLVx0XHQvKiBGb3JjZSBETUEgd3JpdGVzIHRvIGZsdXNoIGJlZm9yZSB3cml0aW5nIHRvIHRhaWwgKi9cbi1cdFx0ZG1hX3dtYigpO1xuLVxuLVx0XHR3cml0ZWwodGFpbCwgcmluZy1cdTAwM2Vkb29yYmVsbCk7XG4tXHR9XG4mIzQzO1x0aWYgKGZibmljX3R4X3NlbnRfcXVldWUoc2tiLCByaW5nKSlcbiYjNDM7XHRcdGZibmljX3R4X2Rvb3JiZWxsKHJpbmcsIG1ldGEpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHJpbmctXHUwMDNlZGVmZXJyZWRfbWV0YSA9IG1ldGEgLSByaW5nLVx1MDAzZWRlc2M7XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG4gZG1hX2Vycm9yOlxuQEAgLTQyNSw4ICYjNDM7NDQ0LDEwIEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcbiBcdCAqIG90aGVyd2lzZSB0cnkgbmV4dCB0aW1lXG4gXHQgKi9cbiBcdGRlc2NfbmVlZGVkID0gc2tiX3NoaW5mbyhza2IpLVx1MDAzZW5yX2ZyYWdzICYjNDM7IDEwO1xuLVx0aWYgKGZibmljX21heWJlX3N0b3BfdHgoc2tiLVx1MDAzZWRldiwgcmluZywgZGVzY19uZWVkZWQpKVxuJiM0MztcdGlmIChmYm5pY19tYXliZV9zdG9wX3R4KHNrYi1cdTAwM2VkZXYsIHJpbmcsIGRlc2NfbmVlZGVkKSkge1xuJiM0MztcdFx0ZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwocmluZyk7XG4gXHRcdHJldHVybiBORVRERVZfVFhfQlVTWTtcbiYjNDM7XHR9XG4gXG4gXHQqbWV0YSA9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX0RFU1RfTUFDKTtcbiBcbkBAIC00NDcsNiAmIzQzOzQ2OCw4IEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcbiBlcnJfZnJlZTpcbiBcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gZXJyX2NvdW50OlxuJiM0MztcdGZibmljX3R4X2ZsdXNoX2Rvb3JiZWxsKHJpbmcpO1xuJiM0MztcbiBcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cmluZy1cdTAwM2VzdGF0cy5zeW5jcCk7XG4gXHRyaW5nLVx1MDAzZXN0YXRzLmRyb3BwZWQmIzQzOyYjNDM7O1xuIFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cmluZy1cdTAwM2VzdGF0cy5zeW5jcCk7XG5AQCAtMjQ5MSw2ICYjNDM7MjUxNCw3IEBAIHN0YXRpYyB2b2lkIGZibmljX2VuYWJsZV90d3EwKHN0cnVjdCBmYm5pY19yaW5nICp0d3EpXG4gXHRmYm5pY19yaW5nX3dyMzIodHdxLCBGQk5JQ19RVUVVRV9UV1EwX0NUTCwgRkJOSUNfUVVFVUVfVFdRX0NUTF9SRVNFVCk7XG4gXHR0d3EtXHUwMDNldGFpbCA9IDA7XG4gXHR0d3EtXHUwMDNlaGVhZCA9IDA7XG4mIzQzO1x0dHdxLVx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcbiBcbiBcdC8qIFN0b3JlIGRlc2NyaXB0b3IgcmluZyBhZGRyZXNzIGFuZCBzaXplICovXG4gXHRmYm5pY19yaW5nX3dyMzIodHdxLCBGQk5JQ19RVUVVRV9UV1EwX0JBTCwgbG93ZXJfMzJfYml0cyh0d3EtXHUwMDNlZG1hKSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaFxuaW5kZXggZTAzYzlkMmMzOGRjYS4uZjU4OTk0NDZkY2M1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaFxuQEAgLTEyOCw5ICYjNDM7MTI4LDE0IEBAIHN0cnVjdCBmYm5pY19yaW5nIHtcbiBcdFx0LyogUnggQkRRcyBvbmx5ICovXG4gXHRcdHN0cnVjdCBwYWdlX3Bvb2wgKnBhZ2VfcG9vbDtcbiBcbi1cdFx0LyogRGVmZXJyZWRfaGVhZCBpcyB1c2VkIHRvIGNhY2hlIHRoZSBoZWFkIGZvciBUV1ExIGlmXG4mIzQzO1x0XHQvKiBUV1EwIG9ubHksIGluZGV4IG9mIHRoZSBtZXRhIGRlc2NyaXB0b3Igb2YgdGhlIGxhc3QgcGFja2V0XG4mIzQzO1x0XHQgKiBwbGFjZWQgaW4gdGhlIHJpbmcgd2l0aG91dCByaW5naW5nIHRoZSBkb29yYmVsbCwgLTEgaWYgdGhlXG4mIzQzO1x0XHQgKiBkb29yYmVsbCBpcyBpbiBzeW5jIHdpdGggdGhlIHRhaWwuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHMzMiBkZWZlcnJlZF9tZXRhO1xuJiM0MztcbiYjNDM7XHRcdC8qIFRDUSBvbmx5LCB1c2VkIHRvIGNhY2hlIHRoZSBoZWFkIGZvciBUV1ExIGlmXG4gXHRcdCAqIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjbGVhbiBUV1ExIHdpdGggemVybyBuYXBpX2J1ZGdldC5cbi1cdFx0ICogV2UgZG8gbm90IHVzZSBpdCBmb3IgYW55IG90aGVyIHJpbmcuXG4gXHRcdCAqL1xuIFx0XHRzMzIgZGVmZXJyZWRfaGVhZDtcbiBcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcwNmJkYzYwYjRhNDFiNTFhZjc3ODA5NmQ5ZWRjZjNmYzE2OTUwNmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAwMzoxOTo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMKaW5kZXggNDAxZjhiOGFlMWNhZS4uZTc5MThkM2Y2YWJhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMKQEAgLTMxMSw2ICYjNDM7MzExLDI5IEBAIGZibmljX3J4X2NzdW0odTY0IHJjZCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZibmljX3JpbmcgKnJjcSwKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBmYm5pY190eF9kb29yYmVsbChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgX19sZTY0ICptZXRhKQomIzQzO3sKJiM0MzsJKm1ldGEgfD0gY3B1X3RvX2xlNjQoRkJOSUNfVFdEX0ZMQUdfUkVRX0NPTVBMRVRJT04pOwomIzQzOwlyaW5nLSZndDtkZWZlcnJlZF9tZXRhID0gLTE7CiYjNDM7CiYjNDM7CS8qIEZvcmNlIERNQSB3cml0ZXMgdG8gZmx1c2ggYmVmb3JlIHdyaXRpbmcgdG8gdGFpbCAqLwomIzQzOwlkbWFfd21iKCk7CiYjNDM7CiYjNDM7CXdyaXRlbChyaW5nLSZndDt0YWlsLCByaW5nLSZndDtkb29yYmVsbCk7CiYjNDM7fQomIzQzOwomIzQzOy8qIFBhY2tldHMgaGFuZGVkIHRvIHVzIHdpdGggeG1pdF9tb3JlIHNldCBhcmUgbGVmdCBpbiB0aGUgcmluZyB3aXRob3V0IGEKJiM0MzsgKiBkb29yYmVsbCwgYW5kIHdpdGhvdXQgYSBjb21wbGV0aW9uIHJlcXVlc3QsIGluIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZQomIzQzOyAqIHBhY2tldCBlbmRpbmcgdGhlIGJ1cnN0IHdpbGwgcmluZyBmb3IgYWxsIG9mIHRoZW0uIElmIHRoYXQgcGFja2V0IGdldHMKJiM0MzsgKiBkcm9wcGVkIGluc3RlYWQgd2UgaGF2ZSB0byByaW5nIGhlcmUsIG90aGVyd2lzZSB0aGUgZGVzY3JpcHRvcnMgc2l0IGluCiYjNDM7ICogdGhlIHJpbmcgdW50aWwgdGhlIG5leHQgdHJhbnNtaXQsIHdoaWNoIG1heSBuZXZlciBjb21lLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIGZibmljX3R4X2ZsdXNoX2Rvb3JiZWxsKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nKQomIzQzO3sKJiM0MzsJaWYgKHJpbmctJmd0O2RlZmVycmVkX21ldGEgJmd0Oz0gMCkKJiM0MzsJCWZibmljX3R4X2Rvb3JiZWxsKHJpbmcsICZhbXA7cmluZy0mZ3Q7ZGVzY1tyaW5nLSZndDtkZWZlcnJlZF9tZXRhXSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wKIGZibmljX3R4X21hcChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTY0ICptZXRhKQogewpAQCAtMzc4LDE0ICYjNDM7NDAxLDEwIEBAIGZibmljX3R4X21hcChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTY0ICptZXRhKQogCS8qIFZlcmlmeSB0aGVyZSBpcyByb29tIGZvciBhbm90aGVyIHBhY2tldCAqLwogCWZibmljX21heWJlX3N0b3BfdHgoc2tiLSZndDtkZXYsIHJpbmcsIEZCTklDX01BWF9TS0JfREVTQyk7CiAKLQlpZiAoZmJuaWNfdHhfc2VudF9xdWV1ZShza2IsIHJpbmcpKSB7Ci0JCSptZXRhIHw9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX1JFUV9DT01QTEVUSU9OKTsKLQotCQkvKiBGb3JjZSBETUEgd3JpdGVzIHRvIGZsdXNoIGJlZm9yZSB3cml0aW5nIHRvIHRhaWwgKi8KLQkJZG1hX3dtYigpOwotCi0JCXdyaXRlbCh0YWlsLCByaW5nLSZndDtkb29yYmVsbCk7Ci0JfQomIzQzOwlpZiAoZmJuaWNfdHhfc2VudF9xdWV1ZShza2IsIHJpbmcpKQomIzQzOwkJZmJuaWNfdHhfZG9vcmJlbGwocmluZywgbWV0YSk7CiYjNDM7CWVsc2UKJiM0MzsJCXJpbmctJmd0O2RlZmVycmVkX21ldGEgPSBtZXRhIC0gcmluZy0mZ3Q7ZGVzYzsKIAogCXJldHVybiBmYWxzZTsKIGRtYV9lcnJvcjoKQEAgLTQyNSw4ICYjNDM7NDQ0LDEwIEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZykKIAkgKiBvdGhlcndpc2UgdHJ5IG5leHQgdGltZQogCSAqLwogCWRlc2NfbmVlZGVkID0gc2tiX3NoaW5mbyhza2IpLSZndDtucl9mcmFncyAmIzQzOyAxMDsKLQlpZiAoZmJuaWNfbWF5YmVfc3RvcF90eChza2ItJmd0O2RldiwgcmluZywgZGVzY19uZWVkZWQpKQomIzQzOwlpZiAoZmJuaWNfbWF5YmVfc3RvcF90eChza2ItJmd0O2RldiwgcmluZywgZGVzY19uZWVkZWQpKSB7CiYjNDM7CQlmYm5pY190eF9mbHVzaF9kb29yYmVsbChyaW5nKTsKIAkJcmV0dXJuIE5FVERFVl9UWF9CVVNZOwomIzQzOwl9CiAKIAkqbWV0YSA9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX0RFU1RfTUFDKTsKIApAQCAtNDQ3LDYgJiM0Mzs0NjgsOCBAQCBmYm5pY194bWl0X2ZyYW1lX3Jpbmcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZibmljX3JpbmcgKnJpbmcpCiBlcnJfZnJlZToKIAlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogZXJyX2NvdW50OgomIzQzOwlmYm5pY190eF9mbHVzaF9kb29yYmVsbChyaW5nKTsKJiM0MzsKIAl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZhbXA7cmluZy0mZ3Q7c3RhdHMuc3luY3ApOwogCXJpbmctJmd0O3N0YXRzLmRyb3BwZWQmIzQzOyYjNDM7OwogCXU2NF9zdGF0c191cGRhdGVfZW5kKCZhbXA7cmluZy0mZ3Q7c3RhdHMuc3luY3ApOwpAQCAtMjQ5MSw2ICYjNDM7MjUxNCw3IEBAIHN0YXRpYyB2b2lkIGZibmljX2VuYWJsZV90d3EwKHN0cnVjdCBmYm5pY19yaW5nICp0d3EpCiAJZmJuaWNfcmluZ193cjMyKHR3cSwgRkJOSUNfUVVFVUVfVFdRMF9DVEwsIEZCTklDX1FVRVVFX1RXUV9DVExfUkVTRVQpOwogCXR3cS0mZ3Q7dGFpbCA9IDA7CiAJdHdxLSZndDtoZWFkID0gMDsKJiM0MzsJdHdxLSZndDtkZWZlcnJlZF9tZXRhID0gLTE7CiAKIAkvKiBTdG9yZSBkZXNjcmlwdG9yIHJpbmcgYWRkcmVzcyBhbmQgc2l6ZSAqLwogCWZibmljX3Jpbmdfd3IzMih0d3EsIEZCTklDX1FVRVVFX1RXUTBfQkFMLCBsb3dlcl8zMl9iaXRzKHR3cS0mZ3Q7ZG1hKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oCmluZGV4IGUwM2M5ZDJjMzhkY2EuLmY1ODk5NDQ2ZGNjNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oCkBAIC0xMjgsOSAmIzQzOzEyOCwxNCBAQCBzdHJ1Y3QgZmJuaWNfcmluZyB7CiAJCS8qIFJ4IEJEUXMgb25seSAqLwogCQlzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7CiAKLQkJLyogRGVmZXJyZWRfaGVhZCBpcyB1c2VkIHRvIGNhY2hlIHRoZSBoZWFkIGZvciBUV1ExIGlmCiYjNDM7CQkvKiBUV1EwIG9ubHksIGluZGV4IG9mIHRoZSBtZXRhIGRlc2NyaXB0b3Igb2YgdGhlIGxhc3QgcGFja2V0CiYjNDM7CQkgKiBwbGFjZWQgaW4gdGhlIHJpbmcgd2l0aG91dCByaW5naW5nIHRoZSBkb29yYmVsbCwgLTEgaWYgdGhlCiYjNDM7CQkgKiBkb29yYmVsbCBpcyBpbiBzeW5jIHdpdGggdGhlIHRhaWwuCiYjNDM7CQkgKi8KJiM0MzsJCXMzMiBkZWZlcnJlZF9tZXRhOwomIzQzOwomIzQzOwkJLyogVENRIG9ubHksIHVzZWQgdG8gY2FjaGUgdGhlIGhlYWQgZm9yIFRXUTEgaWYKIAkJICogYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNsZWFuIFRXUTEgd2l0aCB6ZXJvIG5hcGlfYnVkZ2V0LgotCQkgKiBXZSBkbyBub3QgdXNlIGl0IGZvciBhbnkgb3RoZXIgcmluZy4KIAkJICovCiAJCXMzMiBkZWZlcnJlZF9oZWFkOwogCX07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyB0aGUgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggc2VyaWVzLiBNeSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSwgc28gbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoZSBwYXRjaCB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaGAuIFRoYXQgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgTWV0YSBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlIChOSUMpIGRyaXZlciwgb3IgYGZibmljYC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXMgdGhpcyBhIGhhcmR3YXJlIGRyaXZlciwgb3IgaXMgaXQgdmlydHVhbD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyB0byBiZSBzdXJlLiBUaGF0JiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGdldHRpbmcgYSBiZXR0ZXIgc2Vuc2Ugb2YgaG93IHRoaXMgcGllY2UgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRkJOSUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX01FVEFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyMDpjb25maWcgRkJOSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O01ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjM0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uLCBhbmQgdGhlIEtjb25maWcgZmlsZSBpcyB0aGUgcGxhY2UgdG8gc3RhcnQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGlzIGZpbGUgc2hvdWxkIGJlIHRoZSBjZW50cmFsIHBvaW50IGZvciBjb25maWd1cmluZyB0aGUgaGlnaGVyLWxldmVsIEV0aGVybmV0IHNldHRpbmdzLCB0aGUgb25lcyB0aGF0IHBvdGVudGlhbGx5IG9yY2hlc3RyYXRlIG9yIGFmZmVjdCBzZXZlcmFsIGxvd2VyLWxldmVsIGRyaXZlcnMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgb3B0aW9ucyBkZWZpbmluZyB0aGUgb3ZlcmFsbCBFdGhlcm5ldCBzdWJzeXN0ZW0gZmVhdHVyZXMsIG1heWJlIHNvbWUgZ2xvYmFsIHBhcmFtZXRlcnMgdGhhdCBhcHBseSBhY3Jvc3MgZGlmZmVyZW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbnMsIG9yIHBlcmhhcHMgc2VsZWN0aW9uIHN0YXRlbWVudHMgdG8gdHVybiBvbiBvciBvZmYgbWFqb3IgZHJpdmVyIGdyb3Vwcy4gSXQmIzM5O3MgYWxzbyBwb3NzaWJsZSB0aGlzIGZpbGUganVzdCBpbXBvcnRzIG90aGVyIEtjb25maWcgZmlsZXMgdGhhdCBhcmUgbW9yZSBzcGVjaWZpYyB0byBjZXJ0YWluIGRyaXZlciBmYW1pbGllcy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGVzZSBjb25maWd1cmF0aW9ucywgdG8gdW5kZXJzdGFuZCBob3cgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGhhbmRsZWQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc3ltYm9scywgdGhlaXIgZGVmYXVsdHMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIEV0aGVybmV0IGFyY2hpdGVjdHVyZS4gTGV0JiMzOTtzIHN0YXJ0IHJlYWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNZXRhIFBsYXRmb3JtcyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX01FVEFcbiAgIDc6XHRcdGJvb2wgXCYjMzQ7TWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1wmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZGVzaWduZWQgYnkgTWV0YSwgc2F5IFkuXG4gIDExOlx0XHQgIFRoYXQmIzM5O3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXG4gIDEyOlx0XG4gIDEzOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNDpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXG4gIDE1Olx0XHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTWV0YSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTY6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNzpcdFxuICAxODpcdGlmIE5FVF9WRU5ET1JfTUVUQVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBGQk5JQ1xuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZVwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiA2NEJJVCB8fCBDT01QSUxFX1RFU1RcbiAgMjM6XHRcdGRlcGVuZHMgb24gIVMzOTBcbiAgMjQ6XHRcdGRlcGVuZHMgb24gTUFYX1NLQl9GUkFHUyBcdTAwM2MgMjJcbiAgMjU6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICAyNjpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyNzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDI4Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDI5Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgMzA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDMxOlx0XHRzZWxlY3QgUExETUZXXG4gIDMyOlx0XHRoZWxwXG4gIDMzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXG4gIDM0Olx0XG4gIDM1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgMzY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgZmJuaWMuICBNU0ktWCBpbnRlcnJ1cHQgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAgMzc6XHRcbiAgMzg6XHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MjYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyBpdDoKCioqSW52ZXN0aWdhdGluZyB0aGUgZmJuaWMgRHJpdmVyKioKCk9rYXksIHNvIGBmYm5pY2AgaXMgTWV0YSYjMzk7cyBjdXN0b20gbmV0d29yayBpbnRlcmZhY2UsIHJpZ2h0PyBUaGF0JiMzOTtzIHRoZWlyIEhvc3QgTmV0d29yayBJbnRlcmZhY2Ug4oCTIGl0JiMzOTtzIGJhc2ljYWxseSBhIFBDSS1iYXNlZCBuZXR3b3JrIGNhcmQgZHJpdmVyLCB0aGUgZHJpdmVyIGZvciB0aGVpciBBU0lDIG9yIFNtYXJ0TklDLCBvciB3aGF0ZXZlciBjdXN0b20gUENJZSBOSUMgdGhleSYjMzk7dmUgY29va2VkIHVwLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGlzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRyaXZlciBzb3VyY2UgY29kZSDigJMgc29tZXRoaW5nIGxpa2UgYGZibmljX3BjaS5jYCB3b3VsZCBiZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBzcGVjaWZpYyBkZXZpY2VzLCBpbiB0ZXJtcyBvZiBQQ0kgSURzIGFuZCBzdWNoLCB0aGlzIHRoaW5nIGFjdHVhbGx5IGJpbmRzIHRvLiBUaGF0JiMzOTtsbCB0ZWxsIG1lIHdoYXQgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gc3VwcG9ydC4gVGhpcyBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtmYm5pYy5oJiMzNDssCiAgICAmIzM0O2ZibmljX2Nzci5jJiMzNDssCiAgICAmIzM0O2ZibmljX2Nzci5oJiMzNDssCiAgICAmIzM0O2ZibmljX2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19kZXZsaW5rLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfZHJ2aW5mby5oJiMzNDssCiAgICAmIzM0O2ZibmljX2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19mdy5jJiMzNDssCiAgICAmIzM0O2ZibmljX2Z3LmgmIzM0OywKICAgICYjMzQ7ZmJuaWNfZndfbG9nLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfZndfbG9nLmgmIzM0OywKICAgICYjMzQ7ZmJuaWNfaHdfc3RhdHMuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19od19zdGF0cy5oJiMzNDssCiAgICAmIzM0O2ZibmljX2h3bW9uLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfaXJxLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfbWFjLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfbWFjLmgmIzM0OywKICAgICYjMzQ7ZmJuaWNfbWRpby5jJiMzNDssCiAgICAmIzM0O2ZibmljX25ldGRldi5jJiMzNDssCiAgICAmIzM0O2ZibmljX25ldGRldi5oJiMzNDssCiAgICAmIzM0O2ZibmljX3BjaS5jJiMzNDssCiAgICAmIzM0O2ZibmljX3BoeWxpbmsuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19ycGMuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19ycGMuaCYjMzQ7LAogICAgJiMzNDtmYm5pY190aW1lLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfdGx2LmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfdGx2LmgmIzM0OywKICAgICYjMzQ7ZmJuaWNfdHhyeC5jJiMzNDssCiAgICAmIzM0O2ZibmljX3R4cnguaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk2OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBQQ0kgSUQgUmVhbG0qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzIGFyZSBiZWluZyBpZGVudGlmaWVkLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgUENJIGJ1cyBhcmNoaXRlY3R1cmUuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uLCB0aGUgUENJIElEcywgd2lsbCBiZSBiYWtlZCBpbnRvIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYGZibmljX3BjaS5jYCBmaWxlLiBUaGlzIG5hbWluZyBjb252ZW50aW9uIGZlZWxzIHByZXR0eSBzdGFuZGFyZCBmb3IgYSBQQ0ktcmVsYXRlZCBkcml2ZXIsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgc3RhcnQgZGlnZ2luZy4gSXQmIzM5O3MgdXN1YWxseSB0aGUgcGxhY2Ugd2hlcmUgdGhlIFBDSSBkZXZpY2UgSURzIGFyZSBlbnVtZXJhdGVkIGFuZCBoYW5kbGVkLiBMZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gaXQsIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBjcnVjaWFsIGluZm9ybWF0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfaW5mbyAqZmJuaWNfaW5mb190YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYzozMDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZmJuaWNfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMS1cdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yMTQ9c3RhdGljIHZvaWQgZmJuaWNfc2VydmljZV90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI1OC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjI1OTpzdGF0aWMgaW50IGZibmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDg2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBmYm5pY2AgTklDIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgc25pcHBldDogYHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH1gLiBBaCwgaXQmIzM5O3MgTWV0YSYjMzk7cyBjdXN0b20gQVNJQyBOSUMsIHRoZSBgZmJuaWNgLiBJbnRlcmVzdGluZy4gTm93LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nIHRoaXMuCgpMZXQmIzM5O3Mgc2VlLCB0aGUgaW5zdHJ1Y3Rpb25zIGluIFNlY3Rpb24gMiBsYXkgb3V0IHRoZSAmIzM0O25lZ2F0aXZlIGNyaXRlcmlhJiMzNDsg4oCTIHdoZW4gdG8gc2tpcCBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIGl0IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIGZhbGxzIHVuZGVyICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKClJpZ2h0LCBsZXQmIzM5O3MgZGV0ZXJtaW5lIGlmIGBmYm5pY2AgaXMgZW11bGF0ZWQuIERlZmluaXRlbHkgbm90IGluIHN0YW5kYXJkIFFFTVU7IGl0IG9ubHkgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIGNvbW1vbiBOSUNzLiBUaGUgZG9jdW1lbnRhdGlvbiBsaXN0cyB0aGUgdXN1YWwgc3VzcGVjdHM6IHZpcnRpby1uZXQsIGUxMDAwLCBlMTAwMGUsIGFuZCBzbyBvbi4gYGZibmljYCBkZW1hbmRzIHBoeXNpY2FsIGhhcmR3YXJlLCBpbmRpY2F0ZWQgYnkgdGhlIGBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVUQSwgLi4uKWAgY2FsbC4KClNvLCBjYW4gd2UgcmVhY2ggYGZibmljYCB3aXRob3V0IHRoZSBwaHlzaWNhbCBQQ0llIGRldmljZT8gTGV0JiMzOTtzIHJ1bGUgb3V0IGFueSB2aXJ0dWFsIGJ1cywgbmV0ZGV2IG1vY2ssIG9yIGR1bW15IHByb2JlLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgZmJuaWNfcHJvYmVgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jYC4gVGhlIGFuc3dlciBpcyBwcm9iYWJseSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTU6XHQgKiBhbmQgYSBoYXJkd2FyZSByZXNldCBvY2N1ci5cbiAyNTY6XHQgKlxuIDI1NzpcdCAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBvbiBmYWlsdXJlXG4gMjU4Olx0ICoqL1xuIDI1OTpcdHN0YXRpYyBpbnQgZmJuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gMjYwOlx0e1xuIDI2MTpcdFx0Y29uc3Qgc3RydWN0IGZibmljX2luZm8gKmluZm8gPSBmYm5pY19pbmZvX3RibFtlbnQtXHUwMDNlZHJpdmVyX2RhdGFdO1xuIDI2MjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiAyNjM6XHRcdHN0cnVjdCBmYm5pY19kZXYgKmZiZDtcbiAyNjQ6XHRcdGludCBlcnI7XG4gMjY1Olx0XG4gMjY2Olx0XHRpZiAocGRldi1cdTAwM2VlcnJvcl9zdGF0ZSAhPSBwY2lfY2hhbm5lbF9pb19ub3JtYWwpIHtcbiAyNjc6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldixcbiAyNjg6XHRcdFx0XHRcJiMzNDtQQ0kgZGV2aWNlIHN0aWxsIGluIGFuIGVycm9yIHN0YXRlLiBVbmFibGUgdG8gbG9hZC4uLlxcblwmIzM0Oyk7XG4gMjY5Olx0XHRcdHJldHVybiAtRUlPO1xuIDI3MDpcdFx0fVxuIDI3MTpcdFxuIDI3MjpcdFx0ZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuIDI3MzpcdFx0aWYgKGVycikge1xuIDI3NDpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtQQ0kgZW5hYmxlIGRldmljZSBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuIDI3NTpcdFx0XHRyZXR1cm4gZXJyO1xuIDI3NjpcdFx0fVxuIDI3NzpcdFxuIDI3ODpcdFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDQ2KSk7XG4gMjc5Olx0XHRpZiAoZXJyKVxuIDI4MDpcdFx0XHRlcnIgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbiAyODE6XHRcdGlmIChlcnIpIHtcbiAyODI6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RE1BIGNvbmZpZ3VyYXRpb24gZmFpbGVkOiAlZFxcblwmIzM0OywgZXJyKTtcbiAyODM6XHRcdFx0cmV0dXJuIGVycjtcbiAyODQ6XHRcdH1cbiAyODU6XHRcbiAyODY6XHRcdGVyciA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBpbmZvLVx1MDAzZWJhcl9tYXNrLCBmYm5pY19kcml2ZXJfbmFtZSk7XG4gMjg3Olx0XHRpZiAoZXJyKSB7XG4gMjg4Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gMjg5Olx0XHRcdFx0XCYjMzQ7cGNpX3JlcXVlc3Rfc2VsZWN0ZWRfcmVnaW9ucyBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuIDI5MDpcdFx0XHRyZXR1cm4gZXJyO1xuIDI5MTpcdFx0fVxuIDI5MjpcdFxuIDI5MzpcdFx0ZmJkID0gZmJuaWNfZGV2bGlua19hbGxvYyhwZGV2KTtcbiAyOTQ6XHRcdGlmICghZmJkKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDMKCQkJCQkJCW91dHB1dDogODYKCQkJCQkJCXRob3VnaHRzOiA1MzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBleGFtaW5lZCB0aGlzIHBhdGNoIGNsb3NlbHkuIEl0JiMzOTtzIGNsZWFyIHRoYXQgdGhpcyBpcyBhIFBDSSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBNZXRhJiMzOTtzIEFTSUMgTklDIOKAkyB0aGUgYGZibmljYCBkcml2ZXIsIHRvIGJlIHByZWNpc2UgKGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYylgKS4gVGhlIGtleSBmaWxlcyB0b3VjaGVkIGFyZSBgZmJuaWNfdHhyeC5jYCBhbmQgYGZibmljX3R4cnguaGAsIHdoaWNoIGRlYWwgd2l0aCB0cmFuc21pdCByaW5nIG9wZXJhdGlvbnM6IGBmYm5pY190eF9kb29yYmVsbGAsIGBmYm5pY190eF9mbHVzaF9kb29yYmVsbGAsIGV0Yy4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIFRYIHBhdGggc3R1ZmYuCgpUaGUgY3JpdGljYWwgcG9pbnQgaGVyZSBpcyB0aGF0IHRoaXMgY29kZSAqYWJzb2x1dGVseSogcmVxdWlyZXMgYSBydW5uaW5nIGBmYm5pY2AgbmV0d29yayBpbnRlcmZhY2UsIGFuZCB0aGF0IGluIHR1cm4sIGRlbWFuZHMgcGh5c2ljYWwgTWV0YSBBU0lDIGhhcmR3YXJlLiBUaGlzIGltbWVkaWF0ZWx5IHRocm93cyB1cCBhIHJlZCBmbGFnIGluIG15IG1pbmQsIHdoaWNoIGlzIHJlaW5mb3JjZWQgYnkgdGhlICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgY2F0ZWdvcnkgaW4gdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIOKAkyBhIFNtYXJ0TklDIGluIHRoaXMgY2FzZSDigJMgdGhhdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIHdlIHJlbHkgb24gZm9yIGZ1enppbmcuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgIGluIHRoaXMgY2FzZS4gVGhlIHNwZWNpZmljIGNvZGUgY2hhbmdlcyBhcmUgaW5hY2Nlc3NpYmxlIGR1cmluZyB0aGUgZnV6emluZyBwcm9jZXNzLgoKQ29uc2VxdWVudGx5LCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGFuIGVtcHR5IGxpc3QsIGBbXWAuIFRoZXJlJiMzOTtzIG5vdGhpbmcgc3BlY2lmaWMgdG8gdGFyZ2V0IHNpbmNlIHRoZSBlbnRpcmUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gQW5kIGBFbmFibGVDb25maWdzYCBpcyBhbHNvIGdvaW5nIHRvIGJlIGVtcHR5IGBbXWAuIFdlICpjb3VsZCogbWVudGlvbiBgRkJOSUNgIGlmIGl0IGFkZHMgY2xhcml0eSwgYnV0IGFuIGVtcHR5IGxpc3Qgb3IgYG51bGxgIGlzIHRoZSBzdGFuZGFyZCBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpJIHJlY2hlY2tlZCB0aGUgYHNldC1yZXN1bHRzYCB0b29sJiMzOTtzIHNwZWNpZmljYXRpb24gdG8gY29uZmlybToKKiAgIGBFbmFibGVDb25maWdzYDogS2VybmVsIGNvbmZpZyBmbGFncywgbm8gQ09ORklHIHByZWZpeCwgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciBmdXp6aW5nLgoqICAgYEZvY3VzU3ltYm9sc2A6IFNwZWNpZmljIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4KKiAgIGBSZWFzb25pbmdgOiBDb25jaXNlIGV4cGxhbmF0aW9uIGZvciB0aGUgZGVjaXNpb24uCiogICBgV29ydGhGdXp6aW5nYDogQm9vbGVhbiwgd2hldGhlciB0aGUgY29kZSBpcyByZWFjaGFibGUuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCB0aGUgZGlmZjsgaXQmIzM5O3MganVzdCB0aGUgdHdvIGBmYm5pY2AgZmlsZXMsIGNvbmZpcm1pbmcgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuCgpNeSByZWFzb25pbmcgd2lsbCBiZTogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHJpbmcgZG9vcmJlbGwgYW5kIGZsdXNoIGhhbmRsaW5nIGxvZ2ljIGluIE1ldGEmIzM5O3MgSG9zdCBOZXR3b3JrIEludGVyZmFjZSBkcml2ZXIgKGBmYm5pY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwcm9wcmlldGFyeSwgcGh5c2ljYWwgTWV0YSBBU0lDIFBDSWUgaGFyZHdhcmUgKGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgLi4uKWApLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7CgpOb3cgSSYjMzk7bSByZWFkeSB0byBpbnZva2UgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjE5OjQ3LjQ0MjU3OTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDA0NTI1NDI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRyYW5zbWl0IHJpbmcgZG9vcmJlbGwgYW5kIGZsdXNoIGhhbmRsaW5nIGxvZ2ljIGluIHRoZSBNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlIGRyaXZlciAoZmJuaWMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZXRhIEFTSUMgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjE5OjQ3LjQ0MjU4Mzc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc5MDc1ODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzA2YmRjNjBiNGE0MWI1MWFmNzc4MDk2ZDllZGNmM2ZjMTY5NTA2YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzoxOTo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXFxuaW5kZXggNDAxZjhiOGFlMWNhZS4uZTc5MThkM2Y2YWJhOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXFxuQEAgLTMxMSw2ICszMTEsMjkgQEAgZmJuaWNfcnhfY3N1bSh1NjQgcmNkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmNxLFxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGZibmljX3R4X2Rvb3JiZWxsKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nLCBfX2xlNjQgKm1ldGEpXFxuK3tcXG4rXFx0Km1ldGEgfD0gY3B1X3RvX2xlNjQoRkJOSUNfVFdEX0ZMQUdfUkVRX0NPTVBMRVRJT04pO1xcbitcXHRyaW5nLVxcdTAwM2VkZWZlcnJlZF9tZXRhID0gLTE7XFxuK1xcbitcXHQvKiBGb3JjZSBETUEgd3JpdGVzIHRvIGZsdXNoIGJlZm9yZSB3cml0aW5nIHRvIHRhaWwgKi9cXG4rXFx0ZG1hX3dtYigpO1xcbitcXG4rXFx0d3JpdGVsKHJpbmctXFx1MDAzZXRhaWwsIHJpbmctXFx1MDAzZWRvb3JiZWxsKTtcXG4rfVxcbitcXG4rLyogUGFja2V0cyBoYW5kZWQgdG8gdXMgd2l0aCB4bWl0X21vcmUgc2V0IGFyZSBsZWZ0IGluIHRoZSByaW5nIHdpdGhvdXQgYVxcbisgKiBkb29yYmVsbCwgYW5kIHdpdGhvdXQgYSBjb21wbGV0aW9uIHJlcXVlc3QsIGluIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZVxcbisgKiBwYWNrZXQgZW5kaW5nIHRoZSBidXJzdCB3aWxsIHJpbmcgZm9yIGFsbCBvZiB0aGVtLiBJZiB0aGF0IHBhY2tldCBnZXRzXFxuKyAqIGRyb3BwZWQgaW5zdGVhZCB3ZSBoYXZlIHRvIHJpbmcgaGVyZSwgb3RoZXJ3aXNlIHRoZSBkZXNjcmlwdG9ycyBzaXQgaW5cXG4rICogdGhlIHJpbmcgdW50aWwgdGhlIG5leHQgdHJhbnNtaXQsIHdoaWNoIG1heSBuZXZlciBjb21lLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwoc3RydWN0IGZibmljX3JpbmcgKnJpbmcpXFxuK3tcXG4rXFx0aWYgKHJpbmctXFx1MDAzZWRlZmVycmVkX21ldGEgXFx1MDAzZT0gMClcXG4rXFx0XFx0ZmJuaWNfdHhfZG9vcmJlbGwocmluZywgXFx1MDAyNnJpbmctXFx1MDAzZWRlc2NbcmluZy1cXHUwMDNlZGVmZXJyZWRfbWV0YV0pO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbFxcbiBmYm5pY190eF9tYXAoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIHN0cnVjdCBza19idWZmICpza2IsIF9fbGU2NCAqbWV0YSlcXG4ge1xcbkBAIC0zNzgsMTQgKzQwMSwxMCBAQCBmYm5pY190eF9tYXAoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIHN0cnVjdCBza19idWZmICpza2IsIF9fbGU2NCAqbWV0YSlcXG4gXFx0LyogVmVyaWZ5IHRoZXJlIGlzIHJvb20gZm9yIGFub3RoZXIgcGFja2V0ICovXFxuIFxcdGZibmljX21heWJlX3N0b3BfdHgoc2tiLVxcdTAwM2VkZXYsIHJpbmcsIEZCTklDX01BWF9TS0JfREVTQyk7XFxuIFxcbi1cXHRpZiAoZmJuaWNfdHhfc2VudF9xdWV1ZShza2IsIHJpbmcpKSB7XFxuLVxcdFxcdCptZXRhIHw9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX1JFUV9DT01QTEVUSU9OKTtcXG4tXFxuLVxcdFxcdC8qIEZvcmNlIERNQSB3cml0ZXMgdG8gZmx1c2ggYmVmb3JlIHdyaXRpbmcgdG8gdGFpbCAqL1xcbi1cXHRcXHRkbWFfd21iKCk7XFxuLVxcbi1cXHRcXHR3cml0ZWwodGFpbCwgcmluZy1cXHUwMDNlZG9vcmJlbGwpO1xcbi1cXHR9XFxuK1xcdGlmIChmYm5pY190eF9zZW50X3F1ZXVlKHNrYiwgcmluZykpXFxuK1xcdFxcdGZibmljX3R4X2Rvb3JiZWxsKHJpbmcsIG1ldGEpO1xcbitcXHRlbHNlXFxuK1xcdFxcdHJpbmctXFx1MDAzZWRlZmVycmVkX21ldGEgPSBtZXRhIC0gcmluZy1cXHUwMDNlZGVzYztcXG4gXFxuIFxcdHJldHVybiBmYWxzZTtcXG4gZG1hX2Vycm9yOlxcbkBAIC00MjUsOCArNDQ0LDEwIEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcXG4gXFx0ICogb3RoZXJ3aXNlIHRyeSBuZXh0IHRpbWVcXG4gXFx0ICovXFxuIFxcdGRlc2NfbmVlZGVkID0gc2tiX3NoaW5mbyhza2IpLVxcdTAwM2Vucl9mcmFncyArIDEwO1xcbi1cXHRpZiAoZmJuaWNfbWF5YmVfc3RvcF90eChza2ItXFx1MDAzZWRldiwgcmluZywgZGVzY19uZWVkZWQpKVxcbitcXHRpZiAoZmJuaWNfbWF5YmVfc3RvcF90eChza2ItXFx1MDAzZWRldiwgcmluZywgZGVzY19uZWVkZWQpKSB7XFxuK1xcdFxcdGZibmljX3R4X2ZsdXNoX2Rvb3JiZWxsKHJpbmcpO1xcbiBcXHRcXHRyZXR1cm4gTkVUREVWX1RYX0JVU1k7XFxuK1xcdH1cXG4gXFxuIFxcdCptZXRhID0gY3B1X3RvX2xlNjQoRkJOSUNfVFdEX0ZMQUdfREVTVF9NQUMpO1xcbiBcXG5AQCAtNDQ3LDYgKzQ2OCw4IEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcXG4gZXJyX2ZyZWU6XFxuIFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuIGVycl9jb3VudDpcXG4rXFx0ZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwocmluZyk7XFxuK1xcbiBcXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFxcdTAwMjZyaW5nLVxcdTAwM2VzdGF0cy5zeW5jcCk7XFxuIFxcdHJpbmctXFx1MDAzZXN0YXRzLmRyb3BwZWQrKztcXG4gXFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXFx1MDAyNnJpbmctXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5AQCAtMjQ5MSw2ICsyNTE0LDcgQEAgc3RhdGljIHZvaWQgZmJuaWNfZW5hYmxlX3R3cTAoc3RydWN0IGZibmljX3JpbmcgKnR3cSlcXG4gXFx0ZmJuaWNfcmluZ193cjMyKHR3cSwgRkJOSUNfUVVFVUVfVFdRMF9DVEwsIEZCTklDX1FVRVVFX1RXUV9DVExfUkVTRVQpO1xcbiBcXHR0d3EtXFx1MDAzZXRhaWwgPSAwO1xcbiBcXHR0d3EtXFx1MDAzZWhlYWQgPSAwO1xcbitcXHR0d3EtXFx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcXG4gXFxuIFxcdC8qIFN0b3JlIGRlc2NyaXB0b3IgcmluZyBhZGRyZXNzIGFuZCBzaXplICovXFxuIFxcdGZibmljX3Jpbmdfd3IzMih0d3EsIEZCTklDX1FVRVVFX1RXUTBfQkFMLCBsb3dlcl8zMl9iaXRzKHR3cS1cXHUwMDNlZG1hKSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmhcXG5pbmRleCBlMDNjOWQyYzM4ZGNhLi5mNTg5OTQ0NmRjYzUxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmhcXG5AQCAtMTI4LDkgKzEyOCwxNCBAQCBzdHJ1Y3QgZmJuaWNfcmluZyB7XFxuIFxcdFxcdC8qIFJ4IEJEUXMgb25seSAqL1xcbiBcXHRcXHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XFxuIFxcbi1cXHRcXHQvKiBEZWZlcnJlZF9oZWFkIGlzIHVzZWQgdG8gY2FjaGUgdGhlIGhlYWQgZm9yIFRXUTEgaWZcXG4rXFx0XFx0LyogVFdRMCBvbmx5LCBpbmRleCBvZiB0aGUgbWV0YSBkZXNjcmlwdG9yIG9mIHRoZSBsYXN0IHBhY2tldFxcbitcXHRcXHQgKiBwbGFjZWQgaW4gdGhlIHJpbmcgd2l0aG91dCByaW5naW5nIHRoZSBkb29yYmVsbCwgLTEgaWYgdGhlXFxuK1xcdFxcdCAqIGRvb3JiZWxsIGlzIGluIHN5bmMgd2l0aCB0aGUgdGFpbC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHMzMiBkZWZlcnJlZF9tZXRhO1xcbitcXG4rXFx0XFx0LyogVENRIG9ubHksIHVzZWQgdG8gY2FjaGUgdGhlIGhlYWQgZm9yIFRXUTEgaWZcXG4gXFx0XFx0ICogYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNsZWFuIFRXUTEgd2l0aCB6ZXJvIG5hcGlfYnVkZ2V0Llxcbi1cXHRcXHQgKiBXZSBkbyBub3QgdXNlIGl0IGZvciBhbnkgb3RoZXIgcmluZy5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdHMzMiBkZWZlcnJlZF9oZWFkO1xcbiBcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoxOTo0OS42MjIyODYyNTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjUxODY1NTM0NTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0cmFuc21pdCByaW5nIGRvb3JiZWxsIGFuZCBmbHVzaCBoYW5kbGluZyBsb2dpYyBpbiB0aGUgTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZSBkcml2ZXIgKGZibmljKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWV0YSBBU0lDIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNmJkYzYwYjRhNDFiNTFhZjc3ODA5NmQ5ZWRjZjNmYzE2OTUwNmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzoxOTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcbmluZGV4IDQwMWY4YjhhZTFjYWUuLmU3OTE4ZDNmNmFiYTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcbkBAIC0zMTEsNiArMzExLDI5IEBAIGZibmljX3J4X2NzdW0odTY0IHJjZCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZibmljX3JpbmcgKnJjcSxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgZmJuaWNfdHhfZG9vcmJlbGwoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIF9fbGU2NCAqbWV0YSlcbit7XG4rXHQqbWV0YSB8PSBjcHVfdG9fbGU2NChGQk5JQ19UV0RfRkxBR19SRVFfQ09NUExFVElPTik7XG4rXHRyaW5nLVx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcbitcbitcdC8qIEZvcmNlIERNQSB3cml0ZXMgdG8gZmx1c2ggYmVmb3JlIHdyaXRpbmcgdG8gdGFpbCAqL1xuK1x0ZG1hX3dtYigpO1xuK1xuK1x0d3JpdGVsKHJpbmctXHUwMDNldGFpbCwgcmluZy1cdTAwM2Vkb29yYmVsbCk7XG4rfVxuK1xuKy8qIFBhY2tldHMgaGFuZGVkIHRvIHVzIHdpdGggeG1pdF9tb3JlIHNldCBhcmUgbGVmdCBpbiB0aGUgcmluZyB3aXRob3V0IGFcbisgKiBkb29yYmVsbCwgYW5kIHdpdGhvdXQgYSBjb21wbGV0aW9uIHJlcXVlc3QsIGluIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZVxuKyAqIHBhY2tldCBlbmRpbmcgdGhlIGJ1cnN0IHdpbGwgcmluZyBmb3IgYWxsIG9mIHRoZW0uIElmIHRoYXQgcGFja2V0IGdldHNcbisgKiBkcm9wcGVkIGluc3RlYWQgd2UgaGF2ZSB0byByaW5nIGhlcmUsIG90aGVyd2lzZSB0aGUgZGVzY3JpcHRvcnMgc2l0IGluXG4rICogdGhlIHJpbmcgdW50aWwgdGhlIG5leHQgdHJhbnNtaXQsIHdoaWNoIG1heSBuZXZlciBjb21lLlxuKyAqL1xuK3N0YXRpYyB2b2lkIGZibmljX3R4X2ZsdXNoX2Rvb3JiZWxsKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nKVxuK3tcbitcdGlmIChyaW5nLVx1MDAzZWRlZmVycmVkX21ldGEgXHUwMDNlPSAwKVxuK1x0XHRmYm5pY190eF9kb29yYmVsbChyaW5nLCBcdTAwMjZyaW5nLVx1MDAzZWRlc2NbcmluZy1cdTAwM2VkZWZlcnJlZF9tZXRhXSk7XG4rfVxuK1xuIHN0YXRpYyBib29sXG4gZmJuaWNfdHhfbWFwKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2xlNjQgKm1ldGEpXG4ge1xuQEAgLTM3OCwxNCArNDAxLDEwIEBAIGZibmljX3R4X21hcChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTY0ICptZXRhKVxuIFx0LyogVmVyaWZ5IHRoZXJlIGlzIHJvb20gZm9yIGFub3RoZXIgcGFja2V0ICovXG4gXHRmYm5pY19tYXliZV9zdG9wX3R4KHNrYi1cdTAwM2VkZXYsIHJpbmcsIEZCTklDX01BWF9TS0JfREVTQyk7XG4gXG4tXHRpZiAoZmJuaWNfdHhfc2VudF9xdWV1ZShza2IsIHJpbmcpKSB7XG4tXHRcdCptZXRhIHw9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX1JFUV9DT01QTEVUSU9OKTtcbi1cbi1cdFx0LyogRm9yY2UgRE1BIHdyaXRlcyB0byBmbHVzaCBiZWZvcmUgd3JpdGluZyB0byB0YWlsICovXG4tXHRcdGRtYV93bWIoKTtcbi1cbi1cdFx0d3JpdGVsKHRhaWwsIHJpbmctXHUwMDNlZG9vcmJlbGwpO1xuLVx0fVxuK1x0aWYgKGZibmljX3R4X3NlbnRfcXVldWUoc2tiLCByaW5nKSlcbitcdFx0ZmJuaWNfdHhfZG9vcmJlbGwocmluZywgbWV0YSk7XG4rXHRlbHNlXG4rXHRcdHJpbmctXHUwMDNlZGVmZXJyZWRfbWV0YSA9IG1ldGEgLSByaW5nLVx1MDAzZWRlc2M7XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG4gZG1hX2Vycm9yOlxuQEAgLTQyNSw4ICs0NDQsMTAgQEAgZmJuaWNfeG1pdF9mcmFtZV9yaW5nKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmYm5pY19yaW5nICpyaW5nKVxuIFx0ICogb3RoZXJ3aXNlIHRyeSBuZXh0IHRpbWVcbiBcdCAqL1xuIFx0ZGVzY19uZWVkZWQgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3MgKyAxMDtcbi1cdGlmIChmYm5pY19tYXliZV9zdG9wX3R4KHNrYi1cdTAwM2VkZXYsIHJpbmcsIGRlc2NfbmVlZGVkKSlcbitcdGlmIChmYm5pY19tYXliZV9zdG9wX3R4KHNrYi1cdTAwM2VkZXYsIHJpbmcsIGRlc2NfbmVlZGVkKSkge1xuK1x0XHRmYm5pY190eF9mbHVzaF9kb29yYmVsbChyaW5nKTtcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuK1x0fVxuIFxuIFx0Km1ldGEgPSBjcHVfdG9fbGU2NChGQk5JQ19UV0RfRkxBR19ERVNUX01BQyk7XG4gXG5AQCAtNDQ3LDYgKzQ2OCw4IEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcbiBlcnJfZnJlZTpcbiBcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gZXJyX2NvdW50OlxuK1x0ZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwocmluZyk7XG4rXG4gXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJpbmctXHUwMDNlc3RhdHMuc3luY3ApO1xuIFx0cmluZy1cdTAwM2VzdGF0cy5kcm9wcGVkKys7XG4gXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZyaW5nLVx1MDAzZXN0YXRzLnN5bmNwKTtcbkBAIC0yNDkxLDYgKzI1MTQsNyBAQCBzdGF0aWMgdm9pZCBmYm5pY19lbmFibGVfdHdxMChzdHJ1Y3QgZmJuaWNfcmluZyAqdHdxKVxuIFx0ZmJuaWNfcmluZ193cjMyKHR3cSwgRkJOSUNfUVVFVUVfVFdRMF9DVEwsIEZCTklDX1FVRVVFX1RXUV9DVExfUkVTRVQpO1xuIFx0dHdxLVx1MDAzZXRhaWwgPSAwO1xuIFx0dHdxLVx1MDAzZWhlYWQgPSAwO1xuK1x0dHdxLVx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcbiBcbiBcdC8qIFN0b3JlIGRlc2NyaXB0b3IgcmluZyBhZGRyZXNzIGFuZCBzaXplICovXG4gXHRmYm5pY19yaW5nX3dyMzIodHdxLCBGQk5JQ19RVUVVRV9UV1EwX0JBTCwgbG93ZXJfMzJfYml0cyh0d3EtXHUwMDNlZG1hKSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaFxuaW5kZXggZTAzYzlkMmMzOGRjYS4uZjU4OTk0NDZkY2M1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaFxuQEAgLTEyOCw5ICsxMjgsMTQgQEAgc3RydWN0IGZibmljX3Jpbmcge1xuIFx0XHQvKiBSeCBCRFFzIG9ubHkgKi9cbiBcdFx0c3RydWN0IHBhZ2VfcG9vbCAqcGFnZV9wb29sO1xuIFxuLVx0XHQvKiBEZWZlcnJlZF9oZWFkIGlzIHVzZWQgdG8gY2FjaGUgdGhlIGhlYWQgZm9yIFRXUTEgaWZcbitcdFx0LyogVFdRMCBvbmx5LCBpbmRleCBvZiB0aGUgbWV0YSBkZXNjcmlwdG9yIG9mIHRoZSBsYXN0IHBhY2tldFxuK1x0XHQgKiBwbGFjZWQgaW4gdGhlIHJpbmcgd2l0aG91dCByaW5naW5nIHRoZSBkb29yYmVsbCwgLTEgaWYgdGhlXG4rXHRcdCAqIGRvb3JiZWxsIGlzIGluIHN5bmMgd2l0aCB0aGUgdGFpbC5cbitcdFx0ICovXG4rXHRcdHMzMiBkZWZlcnJlZF9tZXRhO1xuK1xuK1x0XHQvKiBUQ1Egb25seSwgdXNlZCB0byBjYWNoZSB0aGUgaGVhZCBmb3IgVFdRMSBpZlxuIFx0XHQgKiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gY2xlYW4gVFdRMSB3aXRoIHplcm8gbmFwaV9idWRnZXQuXG4tXHRcdCAqIFdlIGRvIG5vdCB1c2UgaXQgZm9yIGFueSBvdGhlciByaW5nLlxuIFx0XHQgKi9cbiBcdFx0czMyIGRlZmVycmVkX2hlYWQ7XG4gXHR9O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MTk6NDkuNjIyMjg4MTI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjQ4ODU4Mzc0MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXZhbHVhdGluZyB0aGUgUGF0Y2ggU2VyaWVzKipcblxuT2theSwgc28gdGhlIHVzZXIgd2FudHMgbWUgdG8gdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBzZXJpZXMuIE15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLCBzbyBsZXQncyBicmVhayB0aGlzIGRvd24uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgcGF0Y2ggdG91Y2hlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmhgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgTWV0YSBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlIChOSUMpIGRyaXZlciwgb3IgYGZibmljYC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXMgdGhpcyBhIGhhcmR3YXJlIGRyaXZlciwgb3IgaXMgaXQgdmlydHVhbD8gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIGJlIHN1cmUuIFRoYXQncyB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBnZXR0aW5nIGEgYmV0dGVyIHNlbnNlIG9mIGhvdyB0aGlzIHBpZWNlIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoxNC41MDgxMjgzM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg0NTUxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZCTklDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTE4PWlmIE5FVF9WRU5ET1JfTUVUQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MjA6Y29uZmlnIEZCTklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoxNC42NTY1ODg0NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjA3Mjk2NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uLCBhbmQgdGhlIEtjb25maWcgZmlsZSBpcyB0aGUgcGxhY2UgdG8gc3RhcnQuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnYC4gVGhpcyBmaWxlIHNob3VsZCBiZSB0aGUgY2VudHJhbCBwb2ludCBmb3IgY29uZmlndXJpbmcgdGhlIGhpZ2hlci1sZXZlbCBFdGhlcm5ldCBzZXR0aW5ncywgdGhlIG9uZXMgdGhhdCBwb3RlbnRpYWxseSBvcmNoZXN0cmF0ZSBvciBhZmZlY3Qgc2V2ZXJhbCBsb3dlci1sZXZlbCBkcml2ZXJzLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgb3B0aW9ucyBkZWZpbmluZyB0aGUgb3ZlcmFsbCBFdGhlcm5ldCBzdWJzeXN0ZW0gZmVhdHVyZXMsIG1heWJlIHNvbWUgZ2xvYmFsIHBhcmFtZXRlcnMgdGhhdCBhcHBseSBhY3Jvc3MgZGlmZmVyZW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbnMsIG9yIHBlcmhhcHMgc2VsZWN0aW9uIHN0YXRlbWVudHMgdG8gdHVybiBvbiBvciBvZmYgbWFqb3IgZHJpdmVyIGdyb3Vwcy4gSXQncyBhbHNvIHBvc3NpYmxlIHRoaXMgZmlsZSBqdXN0IGltcG9ydHMgb3RoZXIgS2NvbmZpZyBmaWxlcyB0aGF0IGFyZSBtb3JlIHNwZWNpZmljIHRvIGNlcnRhaW4gZHJpdmVyIGZhbWlsaWVzLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZXNlIGNvbmZpZ3VyYXRpb25zLCB0byB1bmRlcnN0YW5kIGhvdyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgaG93IGRlcGVuZGVuY2llcyBhcmUgaGFuZGxlZC4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHN5bWJvbHMsIHRoZWlyIGRlZmF1bHRzLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcmVsYXRpb25zaGlwcyB0byBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBFdGhlcm5ldCBhcmNoaXRlY3R1cmUuIExldCdzIHN0YXJ0IHJlYWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MzQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoxNi44NjM4OTEzNTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWV0YSBQbGF0Zm9ybXMgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9NRVRBXFxuICAgNzpcXHRcXHRib29sIFxcXCJNZXRhIFBsYXRmb3JtcyBkZXZpY2VzXFxcIlxcbiAgIDg6XFx0XFx0ZGVmYXVsdCB5XFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZGVzaWduZWQgYnkgTWV0YSwgc2F5IFkuXFxuICAxMTpcXHRcXHQgIFRoYXQncyBNZXRhIGFzIGluIHRoZSBwYXJlbnQgY29tcGFueSBvZiBGYWNlYm9vay5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTQ6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXFxuICAxNTpcXHRcXHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTWV0YSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDE2OlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBORVRfVkVORE9SX01FVEFcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIEZCTklDXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZVxcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gNjRCSVQgfHwgQ09NUElMRV9URVNUXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uICFTMzkwXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIE1BWF9TS0JfRlJBR1MgXFx1MDAzYyAyMlxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuICAyNjpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAyNzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDI4OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDI5OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgMzA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDMxOlxcdFxcdHNlbGVjdCBQTERNRldcXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZS5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICAzNjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGZibmljLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWQuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9NRVRBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjIwOjE2Ljg2Mzk1MzY4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI1Mjc2MjQ3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIGl0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGZibmljIERyaXZlcioqXG5cbk9rYXksIHNvIGBmYm5pY2AgaXMgTWV0YSdzIGN1c3RvbSBuZXR3b3JrIGludGVyZmFjZSwgcmlnaHQ/IFRoYXQncyB0aGVpciBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlIOKAkyBpdCdzIGJhc2ljYWxseSBhIFBDSS1iYXNlZCBuZXR3b3JrIGNhcmQgZHJpdmVyLCB0aGUgZHJpdmVyIGZvciB0aGVpciBBU0lDIG9yIFNtYXJ0TklDLCBvciB3aGF0ZXZlciBjdXN0b20gUENJZSBOSUMgdGhleSd2ZSBjb29rZWQgdXAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMuIExldCdzIGRpZyBpbnRvIHRoZSBkcml2ZXIgc291cmNlIGNvZGUg4oCTIHNvbWV0aGluZyBsaWtlIGBmYm5pY19wY2kuY2Agd291bGQgYmUgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc3BlY2lmaWMgZGV2aWNlcywgaW4gdGVybXMgb2YgUENJIElEcyBhbmQgc3VjaCwgdGhpcyB0aGluZyBhY3R1YWxseSBiaW5kcyB0by4gVGhhdCdsbCB0ZWxsIG1lIHdoYXQgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gc3VwcG9ydC4gVGhpcyBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDI2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoxOS4zOTE1ODA2MTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJmYm5pYy5oXCIsXG4gICAgXCJmYm5pY19jc3IuY1wiLFxuICAgIFwiZmJuaWNfY3NyLmhcIixcbiAgICBcImZibmljX2RlYnVnZnMuY1wiLFxuICAgIFwiZmJuaWNfZGV2bGluay5jXCIsXG4gICAgXCJmYm5pY19kcnZpbmZvLmhcIixcbiAgICBcImZibmljX2V0aHRvb2wuY1wiLFxuICAgIFwiZmJuaWNfZncuY1wiLFxuICAgIFwiZmJuaWNfZncuaFwiLFxuICAgIFwiZmJuaWNfZndfbG9nLmNcIixcbiAgICBcImZibmljX2Z3X2xvZy5oXCIsXG4gICAgXCJmYm5pY19od19zdGF0cy5jXCIsXG4gICAgXCJmYm5pY19od19zdGF0cy5oXCIsXG4gICAgXCJmYm5pY19od21vbi5jXCIsXG4gICAgXCJmYm5pY19pcnEuY1wiLFxuICAgIFwiZmJuaWNfbWFjLmNcIixcbiAgICBcImZibmljX21hYy5oXCIsXG4gICAgXCJmYm5pY19tZGlvLmNcIixcbiAgICBcImZibmljX25ldGRldi5jXCIsXG4gICAgXCJmYm5pY19uZXRkZXYuaFwiLFxuICAgIFwiZmJuaWNfcGNpLmNcIixcbiAgICBcImZibmljX3BoeWxpbmsuY1wiLFxuICAgIFwiZmJuaWNfcnBjLmNcIixcbiAgICBcImZibmljX3JwYy5oXCIsXG4gICAgXCJmYm5pY190aW1lLmNcIixcbiAgICBcImZibmljX3Rsdi5jXCIsXG4gICAgXCJmYm5pY190bHYuaFwiLFxuICAgIFwiZmJuaWNfdHhyeC5jXCIsXG4gICAgXCJmYm5pY190eHJ4LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6MTkuMzkxNjU5NTA2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY4OTEwNzkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFBDSSBJRCBSZWFsbSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBuZXR3b3JrIGludGVyZmFjZSBjYXJkcyBhcmUgYmVpbmcgaWRlbnRpZmllZCwgZXNwZWNpYWxseSB3aXRoaW4gdGhlIFBDSSBidXMgYXJjaGl0ZWN0dXJlLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiwgdGhlIFBDSSBJRHMsIHdpbGwgYmUgYmFrZWQgaW50byB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgYGZibmljX3BjaS5jYCBmaWxlLiBUaGlzIG5hbWluZyBjb252ZW50aW9uIGZlZWxzIHByZXR0eSBzdGFuZGFyZCBmb3IgYSBQQ0ktcmVsYXRlZCBkcml2ZXIsIHNvIHRoYXQncyB3aGVyZSBJJ2xsIHN0YXJ0IGRpZ2dpbmcuIEl0J3MgdXN1YWxseSB0aGUgcGxhY2Ugd2hlcmUgdGhlIFBDSSBkZXZpY2UgSURzIGFyZSBlbnVtZXJhdGVkIGFuZCBoYW5kbGVkLiBMZXQncyBnZXQgcmlnaHQgaW50byBpdCwgSSBleHBlY3QgdG8gZmluZCBzb21lIGNydWNpYWwgaW5mb3JtYXRpb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6MjEuMDgwNzY5MjM4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODc4NjkwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2luZm8gKmZibmljX2luZm9fdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTMxLVxcdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTIxND1zdGF0aWMgdm9pZCBmYm5pY19zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MjU5OnN0YXRpYyBpbnQgZmJuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoyMS4xMjk1Njg1M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNTUxODc0NTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZmJuaWNgIE5JQyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBzbmlwcGV0OiBgeyBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYykgfWAuIEFoLCBpdCdzIE1ldGEncyBjdXN0b20gQVNJQyBOSUMsIHRoZSBgZmJuaWNgLiBJbnRlcmVzdGluZy4gTm93LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBpdCdzIHdvcnRoIGZ1enppbmcgdGhpcy5cblxuTGV0J3Mgc2VlLCB0aGUgaW5zdHJ1Y3Rpb25zIGluIFNlY3Rpb24gMiBsYXkgb3V0IHRoZSBcIm5lZ2F0aXZlIGNyaXRlcmlhXCIg4oCTIHdoZW4gdG8gc2tpcCBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIGl0IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIGZhbGxzIHVuZGVyIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuUmlnaHQsIGxldCdzIGRldGVybWluZSBpZiBgZmJuaWNgIGlzIGVtdWxhdGVkLiBEZWZpbml0ZWx5IG5vdCBpbiBzdGFuZGFyZCBRRU1VOyBpdCBvbmx5IHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBjb21tb24gTklDcy4gVGhlIGRvY3VtZW50YXRpb24gbGlzdHMgdGhlIHVzdWFsIHN1c3BlY3RzOiB2aXJ0aW8tbmV0LCBlMTAwMCwgZTEwMDBlLCBhbmQgc28gb24uIGBmYm5pY2AgZGVtYW5kcyBwaHlzaWNhbCBoYXJkd2FyZSwgaW5kaWNhdGVkIGJ5IHRoZSBgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FVEEsIC4uLilgIGNhbGwuXG5cblNvLCBjYW4gd2UgcmVhY2ggYGZibmljYCB3aXRob3V0IHRoZSBwaHlzaWNhbCBQQ0llIGRldmljZT8gTGV0J3MgcnVsZSBvdXQgYW55IHZpcnR1YWwgYnVzLCBuZXRkZXYgbW9jaywgb3IgZHVtbXkgcHJvYmUuIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGZibmljX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuY2AuIFRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0ODYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6MzYuNjQ4MzE2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1NTpcXHQgKiBhbmQgYSBoYXJkd2FyZSByZXNldCBvY2N1ci5cXG4gMjU2OlxcdCAqXFxuIDI1NzpcXHQgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgb24gZmFpbHVyZVxcbiAyNTg6XFx0ICoqL1xcbiAyNTk6XFx0c3RhdGljIGludCBmYm5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gMjYwOlxcdHtcXG4gMjYxOlxcdFxcdGNvbnN0IHN0cnVjdCBmYm5pY19pbmZvICppbmZvID0gZmJuaWNfaW5mb190YmxbZW50LVxcdTAwM2Vkcml2ZXJfZGF0YV07XFxuIDI2MjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiAyNjM6XFx0XFx0c3RydWN0IGZibmljX2RldiAqZmJkO1xcbiAyNjQ6XFx0XFx0aW50IGVycjtcXG4gMjY1OlxcdFxcbiAyNjY6XFx0XFx0aWYgKHBkZXYtXFx1MDAzZWVycm9yX3N0YXRlICE9IHBjaV9jaGFubmVsX2lvX25vcm1hbCkge1xcbiAyNjc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbiAyNjg6XFx0XFx0XFx0XFx0XFxcIlBDSSBkZXZpY2Ugc3RpbGwgaW4gYW4gZXJyb3Igc3RhdGUuIFVuYWJsZSB0byBsb2FkLi4uXFxcXG5cXFwiKTtcXG4gMjY5OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiAyNzA6XFx0XFx0fVxcbiAyNzE6XFx0XFxuIDI3MjpcXHRcXHRlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XFxuIDI3MzpcXHRcXHRpZiAoZXJyKSB7XFxuIDI3NDpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJQQ0kgZW5hYmxlIGRldmljZSBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBlcnIpO1xcbiAyNzU6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gMjc2OlxcdFxcdH1cXG4gMjc3OlxcdFxcbiAyNzg6XFx0XFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBETUFfQklUX01BU0soNDYpKTtcXG4gMjc5OlxcdFxcdGlmIChlcnIpXFxuIDI4MDpcXHRcXHRcXHRlcnIgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xcbiAyODE6XFx0XFx0aWYgKGVycikge1xcbiAyODI6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRE1BIGNvbmZpZ3VyYXRpb24gZmFpbGVkOiAlZFxcXFxuXFxcIiwgZXJyKTtcXG4gMjgzOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDI4NDpcXHRcXHR9XFxuIDI4NTpcXHRcXG4gMjg2OlxcdFxcdGVyciA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBpbmZvLVxcdTAwM2ViYXJfbWFzaywgZmJuaWNfZHJpdmVyX25hbWUpO1xcbiAyODc6XFx0XFx0aWYgKGVycikge1xcbiAyODg6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbiAyODk6XFx0XFx0XFx0XFx0XFxcInBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMgZmFpbGVkOiAlZFxcXFxuXFxcIiwgZXJyKTtcXG4gMjkwOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDI5MTpcXHRcXHR9XFxuIDI5MjpcXHRcXG4gMjkzOlxcdFxcdGZiZCA9IGZibmljX2RldmxpbmtfYWxsb2MocGRldik7XFxuIDI5NDpcXHRcXHRpZiAoIWZiZCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDozNi42NDgzOTUyMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0ODM5Mzk5NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2ggY2xvc2VseS4gSXQncyBjbGVhciB0aGF0IHRoaXMgaXMgYSBQQ0kgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgTWV0YSdzIEFTSUMgTklDIOKAkyB0aGUgYGZibmljYCBkcml2ZXIsIHRvIGJlIHByZWNpc2UgKGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYylgKS4gVGhlIGtleSBmaWxlcyB0b3VjaGVkIGFyZSBgZmJuaWNfdHhyeC5jYCBhbmQgYGZibmljX3R4cnguaGAsIHdoaWNoIGRlYWwgd2l0aCB0cmFuc21pdCByaW5nIG9wZXJhdGlvbnM6IGBmYm5pY190eF9kb29yYmVsbGAsIGBmYm5pY190eF9mbHVzaF9kb29yYmVsbGAsIGV0Yy4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIFRYIHBhdGggc3R1ZmYuXG5cblRoZSBjcml0aWNhbCBwb2ludCBoZXJlIGlzIHRoYXQgdGhpcyBjb2RlICphYnNvbHV0ZWx5KiByZXF1aXJlcyBhIHJ1bm5pbmcgYGZibmljYCBuZXR3b3JrIGludGVyZmFjZSwgYW5kIHRoYXQgaW4gdHVybiwgZGVtYW5kcyBwaHlzaWNhbCBNZXRhIEFTSUMgaGFyZHdhcmUuIFRoaXMgaW1tZWRpYXRlbHkgdGhyb3dzIHVwIGEgcmVkIGZsYWcgaW4gbXkgbWluZCwgd2hpY2ggaXMgcmVpbmZvcmNlZCBieSB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeSBpbiB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBXZSdyZSB0YWxraW5nIGFib3V0IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSDigJMgYSBTbWFydE5JQyBpbiB0aGlzIGNhc2Ug4oCTIHRoYXQncyBub3QgZ29pbmcgdG8gYmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIHdlIHJlbHkgb24gZm9yIGZ1enppbmcuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaGFzIHRvIGJlIGBmYWxzZWAgaW4gdGhpcyBjYXNlLiBUaGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzIGFyZSBpbmFjY2Vzc2libGUgZHVyaW5nIHRoZSBmdXp6aW5nIHByb2Nlc3MuXG5cbkNvbnNlcXVlbnRseSwgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBhbiBlbXB0eSBsaXN0LCBgW11gLiBUaGVyZSdzIG5vdGhpbmcgc3BlY2lmaWMgdG8gdGFyZ2V0IHNpbmNlIHRoZSBlbnRpcmUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gQW5kIGBFbmFibGVDb25maWdzYCBpcyBhbHNvIGdvaW5nIHRvIGJlIGVtcHR5IGBbXWAuIFdlICpjb3VsZCogbWVudGlvbiBgRkJOSUNgIGlmIGl0IGFkZHMgY2xhcml0eSwgYnV0IGFuIGVtcHR5IGxpc3Qgb3IgYG51bGxgIGlzIHRoZSBzdGFuZGFyZCBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkkgcmVjaGVja2VkIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wncyBzcGVjaWZpY2F0aW9uIHRvIGNvbmZpcm06XG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBLZXJuZWwgY29uZmlnIGZsYWdzLCBubyBDT05GSUcgcHJlZml4LCB3aGljaCBhcmUgcmVxdWlyZWQgZm9yIGZ1enppbmcuXG4qICAgYEZvY3VzU3ltYm9sc2A6IFNwZWNpZmljIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi5cbiogICBgUmVhc29uaW5nYDogQ29uY2lzZSBleHBsYW5hdGlvbiBmb3IgdGhlIGRlY2lzaW9uLlxuKiAgIGBXb3J0aEZ1enppbmdgOiBCb29sZWFuLCB3aGV0aGVyIHRoZSBjb2RlIGlzIHJlYWNoYWJsZS5cblxuSSd2ZSBkb3VibGUtY2hlY2tlZCB0aGUgZGlmZjsgaXQncyBqdXN0IHRoZSB0d28gYGZibmljYCBmaWxlcywgY29uZmlybWluZyB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS5cblxuTXkgcmVhc29uaW5nIHdpbGwgYmU6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCByaW5nIGRvb3JiZWxsIGFuZCBmbHVzaCBoYW5kbGluZyBsb2dpYyBpbiBNZXRhJ3MgSG9zdCBOZXR3b3JrIEludGVyZmFjZSBkcml2ZXIgKGBmYm5pY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwcm9wcmlldGFyeSwgcGh5c2ljYWwgTWV0YSBBU0lDIFBDSWUgaGFyZHdhcmUgKGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgLi4uKWApLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiXG5cbk5vdyBJJ20gcmVhZHkgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODQzLCJPdXRwdXRUb2tlbnMiOjg2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6NDEuNDg3Nzk2NzkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6NDEuNDg3ODIyNjQzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjqf92[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 02:29:42 +0000 UTC FinishedAt: 2026-09-15 03:20:42 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwNmJkYzYwYjRhNDFiNTFhZjc3ODA5NmQ5ZWRjZjNmYzE2OTUwNmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzoxOTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG5pbmRleCA0MDFmOGI4YWUxY2FlLi5lNzkxOGQzZjZhYmE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXG5AQCAtMzExLDYgJiM0MzszMTEsMjkgQEAgZmJuaWNfcnhfY3N1bSh1NjQgcmNkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmNxLFxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZmJuaWNfdHhfZG9vcmJlbGwoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIF9fbGU2NCAqbWV0YSlcbiYjNDM7e1xuJiM0MztcdCptZXRhIHw9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX1JFUV9DT01QTEVUSU9OKTtcbiYjNDM7XHRyaW5nLVx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcbiYjNDM7XG4mIzQzO1x0LyogRm9yY2UgRE1BIHdyaXRlcyB0byBmbHVzaCBiZWZvcmUgd3JpdGluZyB0byB0YWlsICovXG4mIzQzO1x0ZG1hX3dtYigpO1xuJiM0MztcbiYjNDM7XHR3cml0ZWwocmluZy1cdTAwM2V0YWlsLCByaW5nLVx1MDAzZWRvb3JiZWxsKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUGFja2V0cyBoYW5kZWQgdG8gdXMgd2l0aCB4bWl0X21vcmUgc2V0IGFyZSBsZWZ0IGluIHRoZSByaW5nIHdpdGhvdXQgYVxuJiM0MzsgKiBkb29yYmVsbCwgYW5kIHdpdGhvdXQgYSBjb21wbGV0aW9uIHJlcXVlc3QsIGluIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZVxuJiM0MzsgKiBwYWNrZXQgZW5kaW5nIHRoZSBidXJzdCB3aWxsIHJpbmcgZm9yIGFsbCBvZiB0aGVtLiBJZiB0aGF0IHBhY2tldCBnZXRzXG4mIzQzOyAqIGRyb3BwZWQgaW5zdGVhZCB3ZSBoYXZlIHRvIHJpbmcgaGVyZSwgb3RoZXJ3aXNlIHRoZSBkZXNjcmlwdG9ycyBzaXQgaW5cbiYjNDM7ICogdGhlIHJpbmcgdW50aWwgdGhlIG5leHQgdHJhbnNtaXQsIHdoaWNoIG1heSBuZXZlciBjb21lLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwoc3RydWN0IGZibmljX3JpbmcgKnJpbmcpXG4mIzQzO3tcbiYjNDM7XHRpZiAocmluZy1cdTAwM2VkZWZlcnJlZF9tZXRhIFx1MDAzZT0gMClcbiYjNDM7XHRcdGZibmljX3R4X2Rvb3JiZWxsKHJpbmcsIFx1MDAyNnJpbmctXHUwMDNlZGVzY1tyaW5nLVx1MDAzZWRlZmVycmVkX21ldGFdKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgYm9vbFxuIGZibmljX3R4X21hcChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTY0ICptZXRhKVxuIHtcbkBAIC0zNzgsMTQgJiM0Mzs0MDEsMTAgQEAgZmJuaWNfdHhfbWFwKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2xlNjQgKm1ldGEpXG4gXHQvKiBWZXJpZnkgdGhlcmUgaXMgcm9vbSBmb3IgYW5vdGhlciBwYWNrZXQgKi9cbiBcdGZibmljX21heWJlX3N0b3BfdHgoc2tiLVx1MDAzZWRldiwgcmluZywgRkJOSUNfTUFYX1NLQl9ERVNDKTtcbiBcbi1cdGlmIChmYm5pY190eF9zZW50X3F1ZXVlKHNrYiwgcmluZykpIHtcbi1cdFx0Km1ldGEgfD0gY3B1X3RvX2xlNjQoRkJOSUNfVFdEX0ZMQUdfUkVRX0NPTVBMRVRJT04pO1xuLVxuLVx0XHQvKiBGb3JjZSBETUEgd3JpdGVzIHRvIGZsdXNoIGJlZm9yZSB3cml0aW5nIHRvIHRhaWwgKi9cbi1cdFx0ZG1hX3dtYigpO1xuLVxuLVx0XHR3cml0ZWwodGFpbCwgcmluZy1cdTAwM2Vkb29yYmVsbCk7XG4tXHR9XG4mIzQzO1x0aWYgKGZibmljX3R4X3NlbnRfcXVldWUoc2tiLCByaW5nKSlcbiYjNDM7XHRcdGZibmljX3R4X2Rvb3JiZWxsKHJpbmcsIG1ldGEpO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHJpbmctXHUwMDNlZGVmZXJyZWRfbWV0YSA9IG1ldGEgLSByaW5nLVx1MDAzZWRlc2M7XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG4gZG1hX2Vycm9yOlxuQEAgLTQyNSw4ICYjNDM7NDQ0LDEwIEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcbiBcdCAqIG90aGVyd2lzZSB0cnkgbmV4dCB0aW1lXG4gXHQgKi9cbiBcdGRlc2NfbmVlZGVkID0gc2tiX3NoaW5mbyhza2IpLVx1MDAzZW5yX2ZyYWdzICYjNDM7IDEwO1xuLVx0aWYgKGZibmljX21heWJlX3N0b3BfdHgoc2tiLVx1MDAzZWRldiwgcmluZywgZGVzY19uZWVkZWQpKVxuJiM0MztcdGlmIChmYm5pY19tYXliZV9zdG9wX3R4KHNrYi1cdTAwM2VkZXYsIHJpbmcsIGRlc2NfbmVlZGVkKSkge1xuJiM0MztcdFx0ZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwocmluZyk7XG4gXHRcdHJldHVybiBORVRERVZfVFhfQlVTWTtcbiYjNDM7XHR9XG4gXG4gXHQqbWV0YSA9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX0RFU1RfTUFDKTtcbiBcbkBAIC00NDcsNiAmIzQzOzQ2OCw4IEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcbiBlcnJfZnJlZTpcbiBcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gZXJyX2NvdW50OlxuJiM0MztcdGZibmljX3R4X2ZsdXNoX2Rvb3JiZWxsKHJpbmcpO1xuJiM0MztcbiBcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cmluZy1cdTAwM2VzdGF0cy5zeW5jcCk7XG4gXHRyaW5nLVx1MDAzZXN0YXRzLmRyb3BwZWQmIzQzOyYjNDM7O1xuIFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cmluZy1cdTAwM2VzdGF0cy5zeW5jcCk7XG5AQCAtMjQ5MSw2ICYjNDM7MjUxNCw3IEBAIHN0YXRpYyB2b2lkIGZibmljX2VuYWJsZV90d3EwKHN0cnVjdCBmYm5pY19yaW5nICp0d3EpXG4gXHRmYm5pY19yaW5nX3dyMzIodHdxLCBGQk5JQ19RVUVVRV9UV1EwX0NUTCwgRkJOSUNfUVVFVUVfVFdRX0NUTF9SRVNFVCk7XG4gXHR0d3EtXHUwMDNldGFpbCA9IDA7XG4gXHR0d3EtXHUwMDNlaGVhZCA9IDA7XG4mIzQzO1x0dHdxLVx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcbiBcbiBcdC8qIFN0b3JlIGRlc2NyaXB0b3IgcmluZyBhZGRyZXNzIGFuZCBzaXplICovXG4gXHRmYm5pY19yaW5nX3dyMzIodHdxLCBGQk5JQ19RVUVVRV9UV1EwX0JBTCwgbG93ZXJfMzJfYml0cyh0d3EtXHUwMDNlZG1hKSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaFxuaW5kZXggZTAzYzlkMmMzOGRjYS4uZjU4OTk0NDZkY2M1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaFxuQEAgLTEyOCw5ICYjNDM7MTI4LDE0IEBAIHN0cnVjdCBmYm5pY19yaW5nIHtcbiBcdFx0LyogUnggQkRRcyBvbmx5ICovXG4gXHRcdHN0cnVjdCBwYWdlX3Bvb2wgKnBhZ2VfcG9vbDtcbiBcbi1cdFx0LyogRGVmZXJyZWRfaGVhZCBpcyB1c2VkIHRvIGNhY2hlIHRoZSBoZWFkIGZvciBUV1ExIGlmXG4mIzQzO1x0XHQvKiBUV1EwIG9ubHksIGluZGV4IG9mIHRoZSBtZXRhIGRlc2NyaXB0b3Igb2YgdGhlIGxhc3QgcGFja2V0XG4mIzQzO1x0XHQgKiBwbGFjZWQgaW4gdGhlIHJpbmcgd2l0aG91dCByaW5naW5nIHRoZSBkb29yYmVsbCwgLTEgaWYgdGhlXG4mIzQzO1x0XHQgKiBkb29yYmVsbCBpcyBpbiBzeW5jIHdpdGggdGhlIHRhaWwuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHMzMiBkZWZlcnJlZF9tZXRhO1xuJiM0MztcbiYjNDM7XHRcdC8qIFRDUSBvbmx5LCB1c2VkIHRvIGNhY2hlIHRoZSBoZWFkIGZvciBUV1ExIGlmXG4gXHRcdCAqIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjbGVhbiBUV1ExIHdpdGggemVybyBuYXBpX2J1ZGdldC5cbi1cdFx0ICogV2UgZG8gbm90IHVzZSBpdCBmb3IgYW55IG90aGVyIHJpbmcuXG4gXHRcdCAqL1xuIFx0XHRzMzIgZGVmZXJyZWRfaGVhZDtcbiBcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcwNmJkYzYwYjRhNDFiNTFhZjc3ODA5NmQ5ZWRjZjNmYzE2OTUwNmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAwMzoxOTo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMKaW5kZXggNDAxZjhiOGFlMWNhZS4uZTc5MThkM2Y2YWJhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMKQEAgLTMxMSw2ICYjNDM7MzExLDI5IEBAIGZibmljX3J4X2NzdW0odTY0IHJjZCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZibmljX3JpbmcgKnJjcSwKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBmYm5pY190eF9kb29yYmVsbChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgX19sZTY0ICptZXRhKQomIzQzO3sKJiM0MzsJKm1ldGEgfD0gY3B1X3RvX2xlNjQoRkJOSUNfVFdEX0ZMQUdfUkVRX0NPTVBMRVRJT04pOwomIzQzOwlyaW5nLSZndDtkZWZlcnJlZF9tZXRhID0gLTE7CiYjNDM7CiYjNDM7CS8qIEZvcmNlIERNQSB3cml0ZXMgdG8gZmx1c2ggYmVmb3JlIHdyaXRpbmcgdG8gdGFpbCAqLwomIzQzOwlkbWFfd21iKCk7CiYjNDM7CiYjNDM7CXdyaXRlbChyaW5nLSZndDt0YWlsLCByaW5nLSZndDtkb29yYmVsbCk7CiYjNDM7fQomIzQzOwomIzQzOy8qIFBhY2tldHMgaGFuZGVkIHRvIHVzIHdpdGggeG1pdF9tb3JlIHNldCBhcmUgbGVmdCBpbiB0aGUgcmluZyB3aXRob3V0IGEKJiM0MzsgKiBkb29yYmVsbCwgYW5kIHdpdGhvdXQgYSBjb21wbGV0aW9uIHJlcXVlc3QsIGluIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZQomIzQzOyAqIHBhY2tldCBlbmRpbmcgdGhlIGJ1cnN0IHdpbGwgcmluZyBmb3IgYWxsIG9mIHRoZW0uIElmIHRoYXQgcGFja2V0IGdldHMKJiM0MzsgKiBkcm9wcGVkIGluc3RlYWQgd2UgaGF2ZSB0byByaW5nIGhlcmUsIG90aGVyd2lzZSB0aGUgZGVzY3JpcHRvcnMgc2l0IGluCiYjNDM7ICogdGhlIHJpbmcgdW50aWwgdGhlIG5leHQgdHJhbnNtaXQsIHdoaWNoIG1heSBuZXZlciBjb21lLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIGZibmljX3R4X2ZsdXNoX2Rvb3JiZWxsKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nKQomIzQzO3sKJiM0MzsJaWYgKHJpbmctJmd0O2RlZmVycmVkX21ldGEgJmd0Oz0gMCkKJiM0MzsJCWZibmljX3R4X2Rvb3JiZWxsKHJpbmcsICZhbXA7cmluZy0mZ3Q7ZGVzY1tyaW5nLSZndDtkZWZlcnJlZF9tZXRhXSk7CiYjNDM7fQomIzQzOwogc3RhdGljIGJvb2wKIGZibmljX3R4X21hcChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTY0ICptZXRhKQogewpAQCAtMzc4LDE0ICYjNDM7NDAxLDEwIEBAIGZibmljX3R4X21hcChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTY0ICptZXRhKQogCS8qIFZlcmlmeSB0aGVyZSBpcyByb29tIGZvciBhbm90aGVyIHBhY2tldCAqLwogCWZibmljX21heWJlX3N0b3BfdHgoc2tiLSZndDtkZXYsIHJpbmcsIEZCTklDX01BWF9TS0JfREVTQyk7CiAKLQlpZiAoZmJuaWNfdHhfc2VudF9xdWV1ZShza2IsIHJpbmcpKSB7Ci0JCSptZXRhIHw9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX1JFUV9DT01QTEVUSU9OKTsKLQotCQkvKiBGb3JjZSBETUEgd3JpdGVzIHRvIGZsdXNoIGJlZm9yZSB3cml0aW5nIHRvIHRhaWwgKi8KLQkJZG1hX3dtYigpOwotCi0JCXdyaXRlbCh0YWlsLCByaW5nLSZndDtkb29yYmVsbCk7Ci0JfQomIzQzOwlpZiAoZmJuaWNfdHhfc2VudF9xdWV1ZShza2IsIHJpbmcpKQomIzQzOwkJZmJuaWNfdHhfZG9vcmJlbGwocmluZywgbWV0YSk7CiYjNDM7CWVsc2UKJiM0MzsJCXJpbmctJmd0O2RlZmVycmVkX21ldGEgPSBtZXRhIC0gcmluZy0mZ3Q7ZGVzYzsKIAogCXJldHVybiBmYWxzZTsKIGRtYV9lcnJvcjoKQEAgLTQyNSw4ICYjNDM7NDQ0LDEwIEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZykKIAkgKiBvdGhlcndpc2UgdHJ5IG5leHQgdGltZQogCSAqLwogCWRlc2NfbmVlZGVkID0gc2tiX3NoaW5mbyhza2IpLSZndDtucl9mcmFncyAmIzQzOyAxMDsKLQlpZiAoZmJuaWNfbWF5YmVfc3RvcF90eChza2ItJmd0O2RldiwgcmluZywgZGVzY19uZWVkZWQpKQomIzQzOwlpZiAoZmJuaWNfbWF5YmVfc3RvcF90eChza2ItJmd0O2RldiwgcmluZywgZGVzY19uZWVkZWQpKSB7CiYjNDM7CQlmYm5pY190eF9mbHVzaF9kb29yYmVsbChyaW5nKTsKIAkJcmV0dXJuIE5FVERFVl9UWF9CVVNZOwomIzQzOwl9CiAKIAkqbWV0YSA9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX0RFU1RfTUFDKTsKIApAQCAtNDQ3LDYgJiM0Mzs0NjgsOCBAQCBmYm5pY194bWl0X2ZyYW1lX3Jpbmcoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZibmljX3JpbmcgKnJpbmcpCiBlcnJfZnJlZToKIAlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogZXJyX2NvdW50OgomIzQzOwlmYm5pY190eF9mbHVzaF9kb29yYmVsbChyaW5nKTsKJiM0MzsKIAl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZhbXA7cmluZy0mZ3Q7c3RhdHMuc3luY3ApOwogCXJpbmctJmd0O3N0YXRzLmRyb3BwZWQmIzQzOyYjNDM7OwogCXU2NF9zdGF0c191cGRhdGVfZW5kKCZhbXA7cmluZy0mZ3Q7c3RhdHMuc3luY3ApOwpAQCAtMjQ5MSw2ICYjNDM7MjUxNCw3IEBAIHN0YXRpYyB2b2lkIGZibmljX2VuYWJsZV90d3EwKHN0cnVjdCBmYm5pY19yaW5nICp0d3EpCiAJZmJuaWNfcmluZ193cjMyKHR3cSwgRkJOSUNfUVVFVUVfVFdRMF9DVEwsIEZCTklDX1FVRVVFX1RXUV9DVExfUkVTRVQpOwogCXR3cS0mZ3Q7dGFpbCA9IDA7CiAJdHdxLSZndDtoZWFkID0gMDsKJiM0MzsJdHdxLSZndDtkZWZlcnJlZF9tZXRhID0gLTE7CiAKIAkvKiBTdG9yZSBkZXNjcmlwdG9yIHJpbmcgYWRkcmVzcyBhbmQgc2l6ZSAqLwogCWZibmljX3Jpbmdfd3IzMih0d3EsIEZCTklDX1FVRVVFX1RXUTBfQkFMLCBsb3dlcl8zMl9iaXRzKHR3cS0mZ3Q7ZG1hKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oCmluZGV4IGUwM2M5ZDJjMzhkY2EuLmY1ODk5NDQ2ZGNjNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oCkBAIC0xMjgsOSAmIzQzOzEyOCwxNCBAQCBzdHJ1Y3QgZmJuaWNfcmluZyB7CiAJCS8qIFJ4IEJEUXMgb25seSAqLwogCQlzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7CiAKLQkJLyogRGVmZXJyZWRfaGVhZCBpcyB1c2VkIHRvIGNhY2hlIHRoZSBoZWFkIGZvciBUV1ExIGlmCiYjNDM7CQkvKiBUV1EwIG9ubHksIGluZGV4IG9mIHRoZSBtZXRhIGRlc2NyaXB0b3Igb2YgdGhlIGxhc3QgcGFja2V0CiYjNDM7CQkgKiBwbGFjZWQgaW4gdGhlIHJpbmcgd2l0aG91dCByaW5naW5nIHRoZSBkb29yYmVsbCwgLTEgaWYgdGhlCiYjNDM7CQkgKiBkb29yYmVsbCBpcyBpbiBzeW5jIHdpdGggdGhlIHRhaWwuCiYjNDM7CQkgKi8KJiM0MzsJCXMzMiBkZWZlcnJlZF9tZXRhOwomIzQzOwomIzQzOwkJLyogVENRIG9ubHksIHVzZWQgdG8gY2FjaGUgdGhlIGhlYWQgZm9yIFRXUTEgaWYKIAkJICogYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNsZWFuIFRXUTEgd2l0aCB6ZXJvIG5hcGlfYnVkZ2V0LgotCQkgKiBXZSBkbyBub3QgdXNlIGl0IGZvciBhbnkgb3RoZXIgcmluZy4KIAkJICovCiAJCXMzMiBkZWZlcnJlZF9oZWFkOwogCX07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyB0aGUgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIHRoZSB1c2VyIHdhbnRzIG1lIHRvIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggc2VyaWVzLiBNeSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSwgc28gbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoZSBwYXRjaCB0b3VjaGVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaGAuIFRoYXQgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgTWV0YSBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlIChOSUMpIGRyaXZlciwgb3IgYGZibmljYC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXMgdGhpcyBhIGhhcmR3YXJlIGRyaXZlciwgb3IgaXMgaXQgdmlydHVhbD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyB0byBiZSBzdXJlLiBUaGF0JiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGdldHRpbmcgYSBiZXR0ZXIgc2Vuc2Ugb2YgaG93IHRoaXMgcGllY2UgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRkJOSUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX01FVEFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyMDpjb25maWcgRkJOSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O01ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjM0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uLCBhbmQgdGhlIEtjb25maWcgZmlsZSBpcyB0aGUgcGxhY2UgdG8gc3RhcnQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGlzIGZpbGUgc2hvdWxkIGJlIHRoZSBjZW50cmFsIHBvaW50IGZvciBjb25maWd1cmluZyB0aGUgaGlnaGVyLWxldmVsIEV0aGVybmV0IHNldHRpbmdzLCB0aGUgb25lcyB0aGF0IHBvdGVudGlhbGx5IG9yY2hlc3RyYXRlIG9yIGFmZmVjdCBzZXZlcmFsIGxvd2VyLWxldmVsIGRyaXZlcnMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgb3B0aW9ucyBkZWZpbmluZyB0aGUgb3ZlcmFsbCBFdGhlcm5ldCBzdWJzeXN0ZW0gZmVhdHVyZXMsIG1heWJlIHNvbWUgZ2xvYmFsIHBhcmFtZXRlcnMgdGhhdCBhcHBseSBhY3Jvc3MgZGlmZmVyZW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbnMsIG9yIHBlcmhhcHMgc2VsZWN0aW9uIHN0YXRlbWVudHMgdG8gdHVybiBvbiBvciBvZmYgbWFqb3IgZHJpdmVyIGdyb3Vwcy4gSXQmIzM5O3MgYWxzbyBwb3NzaWJsZSB0aGlzIGZpbGUganVzdCBpbXBvcnRzIG90aGVyIEtjb25maWcgZmlsZXMgdGhhdCBhcmUgbW9yZSBzcGVjaWZpYyB0byBjZXJ0YWluIGRyaXZlciBmYW1pbGllcy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGVzZSBjb25maWd1cmF0aW9ucywgdG8gdW5kZXJzdGFuZCBob3cgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGhhbmRsZWQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc3ltYm9scywgdGhlaXIgZGVmYXVsdHMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIEV0aGVybmV0IGFyY2hpdGVjdHVyZS4gTGV0JiMzOTtzIHN0YXJ0IHJlYWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNZXRhIFBsYXRmb3JtcyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX01FVEFcbiAgIDc6XHRcdGJvb2wgXCYjMzQ7TWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1wmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZGVzaWduZWQgYnkgTWV0YSwgc2F5IFkuXG4gIDExOlx0XHQgIFRoYXQmIzM5O3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXG4gIDEyOlx0XG4gIDEzOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNDpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXG4gIDE1Olx0XHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTWV0YSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTY6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNzpcdFxuICAxODpcdGlmIE5FVF9WRU5ET1JfTUVUQVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBGQk5JQ1xuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZVwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiA2NEJJVCB8fCBDT01QSUxFX1RFU1RcbiAgMjM6XHRcdGRlcGVuZHMgb24gIVMzOTBcbiAgMjQ6XHRcdGRlcGVuZHMgb24gTUFYX1NLQl9GUkFHUyBcdTAwM2MgMjJcbiAgMjU6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICAyNjpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyNzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDI4Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDI5Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgMzA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDMxOlx0XHRzZWxlY3QgUExETUZXXG4gIDMyOlx0XHRoZWxwXG4gIDMzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXG4gIDM0Olx0XG4gIDM1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgMzY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgZmJuaWMuICBNU0ktWCBpbnRlcnJ1cHQgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAgMzc6XHRcbiAgMzg6XHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MjYKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyBpdDoKCioqSW52ZXN0aWdhdGluZyB0aGUgZmJuaWMgRHJpdmVyKioKCk9rYXksIHNvIGBmYm5pY2AgaXMgTWV0YSYjMzk7cyBjdXN0b20gbmV0d29yayBpbnRlcmZhY2UsIHJpZ2h0PyBUaGF0JiMzOTtzIHRoZWlyIEhvc3QgTmV0d29yayBJbnRlcmZhY2Ug4oCTIGl0JiMzOTtzIGJhc2ljYWxseSBhIFBDSS1iYXNlZCBuZXR3b3JrIGNhcmQgZHJpdmVyLCB0aGUgZHJpdmVyIGZvciB0aGVpciBBU0lDIG9yIFNtYXJ0TklDLCBvciB3aGF0ZXZlciBjdXN0b20gUENJZSBOSUMgdGhleSYjMzk7dmUgY29va2VkIHVwLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGlzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRyaXZlciBzb3VyY2UgY29kZSDigJMgc29tZXRoaW5nIGxpa2UgYGZibmljX3BjaS5jYCB3b3VsZCBiZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBzcGVjaWZpYyBkZXZpY2VzLCBpbiB0ZXJtcyBvZiBQQ0kgSURzIGFuZCBzdWNoLCB0aGlzIHRoaW5nIGFjdHVhbGx5IGJpbmRzIHRvLiBUaGF0JiMzOTtsbCB0ZWxsIG1lIHdoYXQgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gc3VwcG9ydC4gVGhpcyBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtmYm5pYy5oJiMzNDssCiAgICAmIzM0O2ZibmljX2Nzci5jJiMzNDssCiAgICAmIzM0O2ZibmljX2Nzci5oJiMzNDssCiAgICAmIzM0O2ZibmljX2RlYnVnZnMuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19kZXZsaW5rLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfZHJ2aW5mby5oJiMzNDssCiAgICAmIzM0O2ZibmljX2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19mdy5jJiMzNDssCiAgICAmIzM0O2ZibmljX2Z3LmgmIzM0OywKICAgICYjMzQ7ZmJuaWNfZndfbG9nLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfZndfbG9nLmgmIzM0OywKICAgICYjMzQ7ZmJuaWNfaHdfc3RhdHMuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19od19zdGF0cy5oJiMzNDssCiAgICAmIzM0O2ZibmljX2h3bW9uLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfaXJxLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfbWFjLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfbWFjLmgmIzM0OywKICAgICYjMzQ7ZmJuaWNfbWRpby5jJiMzNDssCiAgICAmIzM0O2ZibmljX25ldGRldi5jJiMzNDssCiAgICAmIzM0O2ZibmljX25ldGRldi5oJiMzNDssCiAgICAmIzM0O2ZibmljX3BjaS5jJiMzNDssCiAgICAmIzM0O2ZibmljX3BoeWxpbmsuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19ycGMuYyYjMzQ7LAogICAgJiMzNDtmYm5pY19ycGMuaCYjMzQ7LAogICAgJiMzNDtmYm5pY190aW1lLmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfdGx2LmMmIzM0OywKICAgICYjMzQ7ZmJuaWNfdGx2LmgmIzM0OywKICAgICYjMzQ7ZmJuaWNfdHhyeC5jJiMzNDssCiAgICAmIzM0O2ZibmljX3R4cnguaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk2OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBQQ0kgSUQgUmVhbG0qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZXNlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzIGFyZSBiZWluZyBpZGVudGlmaWVkLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgUENJIGJ1cyBhcmNoaXRlY3R1cmUuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uLCB0aGUgUENJIElEcywgd2lsbCBiZSBiYWtlZCBpbnRvIHRoZSBkcml2ZXIgY29kZSBpdHNlbGYuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYGZibmljX3BjaS5jYCBmaWxlLiBUaGlzIG5hbWluZyBjb252ZW50aW9uIGZlZWxzIHByZXR0eSBzdGFuZGFyZCBmb3IgYSBQQ0ktcmVsYXRlZCBkcml2ZXIsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgc3RhcnQgZGlnZ2luZy4gSXQmIzM5O3MgdXN1YWxseSB0aGUgcGxhY2Ugd2hlcmUgdGhlIFBDSSBkZXZpY2UgSURzIGFyZSBlbnVtZXJhdGVkIGFuZCBoYW5kbGVkLiBMZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gaXQsIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBjcnVjaWFsIGluZm9ybWF0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfaW5mbyAqZmJuaWNfaW5mb190YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYzozMDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZmJuaWNfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMS1cdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yMTQ9c3RhdGljIHZvaWQgZmJuaWNfc2VydmljZV90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI1OC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjI1OTpzdGF0aWMgaW50IGZibmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDg2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBmYm5pY2AgTklDIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgc25pcHBldDogYHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH1gLiBBaCwgaXQmIzM5O3MgTWV0YSYjMzk7cyBjdXN0b20gQVNJQyBOSUMsIHRoZSBgZmJuaWNgLiBJbnRlcmVzdGluZy4gTm93LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nIHRoaXMuCgpMZXQmIzM5O3Mgc2VlLCB0aGUgaW5zdHJ1Y3Rpb25zIGluIFNlY3Rpb24gMiBsYXkgb3V0IHRoZSAmIzM0O25lZ2F0aXZlIGNyaXRlcmlhJiMzNDsg4oCTIHdoZW4gdG8gc2tpcCBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIGl0IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIGZhbGxzIHVuZGVyICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKClJpZ2h0LCBsZXQmIzM5O3MgZGV0ZXJtaW5lIGlmIGBmYm5pY2AgaXMgZW11bGF0ZWQuIERlZmluaXRlbHkgbm90IGluIHN0YW5kYXJkIFFFTVU7IGl0IG9ubHkgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIGNvbW1vbiBOSUNzLiBUaGUgZG9jdW1lbnRhdGlvbiBsaXN0cyB0aGUgdXN1YWwgc3VzcGVjdHM6IHZpcnRpby1uZXQsIGUxMDAwLCBlMTAwMGUsIGFuZCBzbyBvbi4gYGZibmljYCBkZW1hbmRzIHBoeXNpY2FsIGhhcmR3YXJlLCBpbmRpY2F0ZWQgYnkgdGhlIGBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUVUQSwgLi4uKWAgY2FsbC4KClNvLCBjYW4gd2UgcmVhY2ggYGZibmljYCB3aXRob3V0IHRoZSBwaHlzaWNhbCBQQ0llIGRldmljZT8gTGV0JiMzOTtzIHJ1bGUgb3V0IGFueSB2aXJ0dWFsIGJ1cywgbmV0ZGV2IG1vY2ssIG9yIGR1bW15IHByb2JlLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgZmJuaWNfcHJvYmVgIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jYC4gVGhlIGFuc3dlciBpcyBwcm9iYWJseSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTU6XHQgKiBhbmQgYSBoYXJkd2FyZSByZXNldCBvY2N1ci5cbiAyNTY6XHQgKlxuIDI1NzpcdCAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBvbiBmYWlsdXJlXG4gMjU4Olx0ICoqL1xuIDI1OTpcdHN0YXRpYyBpbnQgZmJuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gMjYwOlx0e1xuIDI2MTpcdFx0Y29uc3Qgc3RydWN0IGZibmljX2luZm8gKmluZm8gPSBmYm5pY19pbmZvX3RibFtlbnQtXHUwMDNlZHJpdmVyX2RhdGFdO1xuIDI2MjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiAyNjM6XHRcdHN0cnVjdCBmYm5pY19kZXYgKmZiZDtcbiAyNjQ6XHRcdGludCBlcnI7XG4gMjY1Olx0XG4gMjY2Olx0XHRpZiAocGRldi1cdTAwM2VlcnJvcl9zdGF0ZSAhPSBwY2lfY2hhbm5lbF9pb19ub3JtYWwpIHtcbiAyNjc6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldixcbiAyNjg6XHRcdFx0XHRcJiMzNDtQQ0kgZGV2aWNlIHN0aWxsIGluIGFuIGVycm9yIHN0YXRlLiBVbmFibGUgdG8gbG9hZC4uLlxcblwmIzM0Oyk7XG4gMjY5Olx0XHRcdHJldHVybiAtRUlPO1xuIDI3MDpcdFx0fVxuIDI3MTpcdFxuIDI3MjpcdFx0ZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuIDI3MzpcdFx0aWYgKGVycikge1xuIDI3NDpcdFx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtQQ0kgZW5hYmxlIGRldmljZSBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuIDI3NTpcdFx0XHRyZXR1cm4gZXJyO1xuIDI3NjpcdFx0fVxuIDI3NzpcdFxuIDI3ODpcdFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDQ2KSk7XG4gMjc5Olx0XHRpZiAoZXJyKVxuIDI4MDpcdFx0XHRlcnIgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbiAyODE6XHRcdGlmIChlcnIpIHtcbiAyODI6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7RE1BIGNvbmZpZ3VyYXRpb24gZmFpbGVkOiAlZFxcblwmIzM0OywgZXJyKTtcbiAyODM6XHRcdFx0cmV0dXJuIGVycjtcbiAyODQ6XHRcdH1cbiAyODU6XHRcbiAyODY6XHRcdGVyciA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBpbmZvLVx1MDAzZWJhcl9tYXNrLCBmYm5pY19kcml2ZXJfbmFtZSk7XG4gMjg3Olx0XHRpZiAoZXJyKSB7XG4gMjg4Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gMjg5Olx0XHRcdFx0XCYjMzQ7cGNpX3JlcXVlc3Rfc2VsZWN0ZWRfcmVnaW9ucyBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCBlcnIpO1xuIDI5MDpcdFx0XHRyZXR1cm4gZXJyO1xuIDI5MTpcdFx0fVxuIDI5MjpcdFxuIDI5MzpcdFx0ZmJkID0gZmJuaWNfZGV2bGlua19hbGxvYyhwZGV2KTtcbiAyOTQ6XHRcdGlmICghZmJkKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDMKCQkJCQkJCW91dHB1dDogODYKCQkJCQkJCXRob3VnaHRzOiA1MzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBleGFtaW5lZCB0aGlzIHBhdGNoIGNsb3NlbHkuIEl0JiMzOTtzIGNsZWFyIHRoYXQgdGhpcyBpcyBhIFBDSSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBNZXRhJiMzOTtzIEFTSUMgTklDIOKAkyB0aGUgYGZibmljYCBkcml2ZXIsIHRvIGJlIHByZWNpc2UgKGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYylgKS4gVGhlIGtleSBmaWxlcyB0b3VjaGVkIGFyZSBgZmJuaWNfdHhyeC5jYCBhbmQgYGZibmljX3R4cnguaGAsIHdoaWNoIGRlYWwgd2l0aCB0cmFuc21pdCByaW5nIG9wZXJhdGlvbnM6IGBmYm5pY190eF9kb29yYmVsbGAsIGBmYm5pY190eF9mbHVzaF9kb29yYmVsbGAsIGV0Yy4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIFRYIHBhdGggc3R1ZmYuCgpUaGUgY3JpdGljYWwgcG9pbnQgaGVyZSBpcyB0aGF0IHRoaXMgY29kZSAqYWJzb2x1dGVseSogcmVxdWlyZXMgYSBydW5uaW5nIGBmYm5pY2AgbmV0d29yayBpbnRlcmZhY2UsIGFuZCB0aGF0IGluIHR1cm4sIGRlbWFuZHMgcGh5c2ljYWwgTWV0YSBBU0lDIGhhcmR3YXJlLiBUaGlzIGltbWVkaWF0ZWx5IHRocm93cyB1cCBhIHJlZCBmbGFnIGluIG15IG1pbmQsIHdoaWNoIGlzIHJlaW5mb3JjZWQgYnkgdGhlICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgY2F0ZWdvcnkgaW4gdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIOKAkyBhIFNtYXJ0TklDIGluIHRoaXMgY2FzZSDigJMgdGhhdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIHdlIHJlbHkgb24gZm9yIGZ1enppbmcuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgIGluIHRoaXMgY2FzZS4gVGhlIHNwZWNpZmljIGNvZGUgY2hhbmdlcyBhcmUgaW5hY2Nlc3NpYmxlIGR1cmluZyB0aGUgZnV6emluZyBwcm9jZXNzLgoKQ29uc2VxdWVudGx5LCBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGFuIGVtcHR5IGxpc3QsIGBbXWAuIFRoZXJlJiMzOTtzIG5vdGhpbmcgc3BlY2lmaWMgdG8gdGFyZ2V0IHNpbmNlIHRoZSBlbnRpcmUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gQW5kIGBFbmFibGVDb25maWdzYCBpcyBhbHNvIGdvaW5nIHRvIGJlIGVtcHR5IGBbXWAuIFdlICpjb3VsZCogbWVudGlvbiBgRkJOSUNgIGlmIGl0IGFkZHMgY2xhcml0eSwgYnV0IGFuIGVtcHR5IGxpc3Qgb3IgYG51bGxgIGlzIHRoZSBzdGFuZGFyZCBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpJIHJlY2hlY2tlZCB0aGUgYHNldC1yZXN1bHRzYCB0b29sJiMzOTtzIHNwZWNpZmljYXRpb24gdG8gY29uZmlybToKKiAgIGBFbmFibGVDb25maWdzYDogS2VybmVsIGNvbmZpZyBmbGFncywgbm8gQ09ORklHIHByZWZpeCwgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciBmdXp6aW5nLgoqICAgYEZvY3VzU3ltYm9sc2A6IFNwZWNpZmljIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4KKiAgIGBSZWFzb25pbmdgOiBDb25jaXNlIGV4cGxhbmF0aW9uIGZvciB0aGUgZGVjaXNpb24uCiogICBgV29ydGhGdXp6aW5nYDogQm9vbGVhbiwgd2hldGhlciB0aGUgY29kZSBpcyByZWFjaGFibGUuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCB0aGUgZGlmZjsgaXQmIzM5O3MganVzdCB0aGUgdHdvIGBmYm5pY2AgZmlsZXMsIGNvbmZpcm1pbmcgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuCgpNeSByZWFzb25pbmcgd2lsbCBiZTogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHJpbmcgZG9vcmJlbGwgYW5kIGZsdXNoIGhhbmRsaW5nIGxvZ2ljIGluIE1ldGEmIzM5O3MgSG9zdCBOZXR3b3JrIEludGVyZmFjZSBkcml2ZXIgKGBmYm5pY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwcm9wcmlldGFyeSwgcGh5c2ljYWwgTWV0YSBBU0lDIFBDSWUgaGFyZHdhcmUgKGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgLi4uKWApLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7CgpOb3cgSSYjMzk7bSByZWFkeSB0byBpbnZva2UgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjE5OjQ3LjQ0MjU3OTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDA0NTI1NDI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRyYW5zbWl0IHJpbmcgZG9vcmJlbGwgYW5kIGZsdXNoIGhhbmRsaW5nIGxvZ2ljIGluIHRoZSBNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlIGRyaXZlciAoZmJuaWMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBNZXRhIEFTSUMgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjE5OjQ3LjQ0MjU4Mzc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc5MDc1ODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzA2YmRjNjBiNGE0MWI1MWFmNzc4MDk2ZDllZGNmM2ZjMTY5NTA2YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzoxOTo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXFxuaW5kZXggNDAxZjhiOGFlMWNhZS4uZTc5MThkM2Y2YWJhOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jXFxuQEAgLTMxMSw2ICszMTEsMjkgQEAgZmJuaWNfcnhfY3N1bSh1NjQgcmNkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmNxLFxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGZibmljX3R4X2Rvb3JiZWxsKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nLCBfX2xlNjQgKm1ldGEpXFxuK3tcXG4rXFx0Km1ldGEgfD0gY3B1X3RvX2xlNjQoRkJOSUNfVFdEX0ZMQUdfUkVRX0NPTVBMRVRJT04pO1xcbitcXHRyaW5nLVxcdTAwM2VkZWZlcnJlZF9tZXRhID0gLTE7XFxuK1xcbitcXHQvKiBGb3JjZSBETUEgd3JpdGVzIHRvIGZsdXNoIGJlZm9yZSB3cml0aW5nIHRvIHRhaWwgKi9cXG4rXFx0ZG1hX3dtYigpO1xcbitcXG4rXFx0d3JpdGVsKHJpbmctXFx1MDAzZXRhaWwsIHJpbmctXFx1MDAzZWRvb3JiZWxsKTtcXG4rfVxcbitcXG4rLyogUGFja2V0cyBoYW5kZWQgdG8gdXMgd2l0aCB4bWl0X21vcmUgc2V0IGFyZSBsZWZ0IGluIHRoZSByaW5nIHdpdGhvdXQgYVxcbisgKiBkb29yYmVsbCwgYW5kIHdpdGhvdXQgYSBjb21wbGV0aW9uIHJlcXVlc3QsIGluIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZVxcbisgKiBwYWNrZXQgZW5kaW5nIHRoZSBidXJzdCB3aWxsIHJpbmcgZm9yIGFsbCBvZiB0aGVtLiBJZiB0aGF0IHBhY2tldCBnZXRzXFxuKyAqIGRyb3BwZWQgaW5zdGVhZCB3ZSBoYXZlIHRvIHJpbmcgaGVyZSwgb3RoZXJ3aXNlIHRoZSBkZXNjcmlwdG9ycyBzaXQgaW5cXG4rICogdGhlIHJpbmcgdW50aWwgdGhlIG5leHQgdHJhbnNtaXQsIHdoaWNoIG1heSBuZXZlciBjb21lLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwoc3RydWN0IGZibmljX3JpbmcgKnJpbmcpXFxuK3tcXG4rXFx0aWYgKHJpbmctXFx1MDAzZWRlZmVycmVkX21ldGEgXFx1MDAzZT0gMClcXG4rXFx0XFx0ZmJuaWNfdHhfZG9vcmJlbGwocmluZywgXFx1MDAyNnJpbmctXFx1MDAzZWRlc2NbcmluZy1cXHUwMDNlZGVmZXJyZWRfbWV0YV0pO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbFxcbiBmYm5pY190eF9tYXAoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIHN0cnVjdCBza19idWZmICpza2IsIF9fbGU2NCAqbWV0YSlcXG4ge1xcbkBAIC0zNzgsMTQgKzQwMSwxMCBAQCBmYm5pY190eF9tYXAoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIHN0cnVjdCBza19idWZmICpza2IsIF9fbGU2NCAqbWV0YSlcXG4gXFx0LyogVmVyaWZ5IHRoZXJlIGlzIHJvb20gZm9yIGFub3RoZXIgcGFja2V0ICovXFxuIFxcdGZibmljX21heWJlX3N0b3BfdHgoc2tiLVxcdTAwM2VkZXYsIHJpbmcsIEZCTklDX01BWF9TS0JfREVTQyk7XFxuIFxcbi1cXHRpZiAoZmJuaWNfdHhfc2VudF9xdWV1ZShza2IsIHJpbmcpKSB7XFxuLVxcdFxcdCptZXRhIHw9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX1JFUV9DT01QTEVUSU9OKTtcXG4tXFxuLVxcdFxcdC8qIEZvcmNlIERNQSB3cml0ZXMgdG8gZmx1c2ggYmVmb3JlIHdyaXRpbmcgdG8gdGFpbCAqL1xcbi1cXHRcXHRkbWFfd21iKCk7XFxuLVxcbi1cXHRcXHR3cml0ZWwodGFpbCwgcmluZy1cXHUwMDNlZG9vcmJlbGwpO1xcbi1cXHR9XFxuK1xcdGlmIChmYm5pY190eF9zZW50X3F1ZXVlKHNrYiwgcmluZykpXFxuK1xcdFxcdGZibmljX3R4X2Rvb3JiZWxsKHJpbmcsIG1ldGEpO1xcbitcXHRlbHNlXFxuK1xcdFxcdHJpbmctXFx1MDAzZWRlZmVycmVkX21ldGEgPSBtZXRhIC0gcmluZy1cXHUwMDNlZGVzYztcXG4gXFxuIFxcdHJldHVybiBmYWxzZTtcXG4gZG1hX2Vycm9yOlxcbkBAIC00MjUsOCArNDQ0LDEwIEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcXG4gXFx0ICogb3RoZXJ3aXNlIHRyeSBuZXh0IHRpbWVcXG4gXFx0ICovXFxuIFxcdGRlc2NfbmVlZGVkID0gc2tiX3NoaW5mbyhza2IpLVxcdTAwM2Vucl9mcmFncyArIDEwO1xcbi1cXHRpZiAoZmJuaWNfbWF5YmVfc3RvcF90eChza2ItXFx1MDAzZWRldiwgcmluZywgZGVzY19uZWVkZWQpKVxcbitcXHRpZiAoZmJuaWNfbWF5YmVfc3RvcF90eChza2ItXFx1MDAzZWRldiwgcmluZywgZGVzY19uZWVkZWQpKSB7XFxuK1xcdFxcdGZibmljX3R4X2ZsdXNoX2Rvb3JiZWxsKHJpbmcpO1xcbiBcXHRcXHRyZXR1cm4gTkVUREVWX1RYX0JVU1k7XFxuK1xcdH1cXG4gXFxuIFxcdCptZXRhID0gY3B1X3RvX2xlNjQoRkJOSUNfVFdEX0ZMQUdfREVTVF9NQUMpO1xcbiBcXG5AQCAtNDQ3LDYgKzQ2OCw4IEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcXG4gZXJyX2ZyZWU6XFxuIFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuIGVycl9jb3VudDpcXG4rXFx0ZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwocmluZyk7XFxuK1xcbiBcXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFxcdTAwMjZyaW5nLVxcdTAwM2VzdGF0cy5zeW5jcCk7XFxuIFxcdHJpbmctXFx1MDAzZXN0YXRzLmRyb3BwZWQrKztcXG4gXFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXFx1MDAyNnJpbmctXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5AQCAtMjQ5MSw2ICsyNTE0LDcgQEAgc3RhdGljIHZvaWQgZmJuaWNfZW5hYmxlX3R3cTAoc3RydWN0IGZibmljX3JpbmcgKnR3cSlcXG4gXFx0ZmJuaWNfcmluZ193cjMyKHR3cSwgRkJOSUNfUVVFVUVfVFdRMF9DVEwsIEZCTklDX1FVRVVFX1RXUV9DVExfUkVTRVQpO1xcbiBcXHR0d3EtXFx1MDAzZXRhaWwgPSAwO1xcbiBcXHR0d3EtXFx1MDAzZWhlYWQgPSAwO1xcbitcXHR0d3EtXFx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcXG4gXFxuIFxcdC8qIFN0b3JlIGRlc2NyaXB0b3IgcmluZyBhZGRyZXNzIGFuZCBzaXplICovXFxuIFxcdGZibmljX3Jpbmdfd3IzMih0d3EsIEZCTklDX1FVRVVFX1RXUTBfQkFMLCBsb3dlcl8zMl9iaXRzKHR3cS1cXHUwMDNlZG1hKSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmhcXG5pbmRleCBlMDNjOWQyYzM4ZGNhLi5mNTg5OTQ0NmRjYzUxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmhcXG5AQCAtMTI4LDkgKzEyOCwxNCBAQCBzdHJ1Y3QgZmJuaWNfcmluZyB7XFxuIFxcdFxcdC8qIFJ4IEJEUXMgb25seSAqL1xcbiBcXHRcXHRzdHJ1Y3QgcGFnZV9wb29sICpwYWdlX3Bvb2w7XFxuIFxcbi1cXHRcXHQvKiBEZWZlcnJlZF9oZWFkIGlzIHVzZWQgdG8gY2FjaGUgdGhlIGhlYWQgZm9yIFRXUTEgaWZcXG4rXFx0XFx0LyogVFdRMCBvbmx5LCBpbmRleCBvZiB0aGUgbWV0YSBkZXNjcmlwdG9yIG9mIHRoZSBsYXN0IHBhY2tldFxcbitcXHRcXHQgKiBwbGFjZWQgaW4gdGhlIHJpbmcgd2l0aG91dCByaW5naW5nIHRoZSBkb29yYmVsbCwgLTEgaWYgdGhlXFxuK1xcdFxcdCAqIGRvb3JiZWxsIGlzIGluIHN5bmMgd2l0aCB0aGUgdGFpbC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHMzMiBkZWZlcnJlZF9tZXRhO1xcbitcXG4rXFx0XFx0LyogVENRIG9ubHksIHVzZWQgdG8gY2FjaGUgdGhlIGhlYWQgZm9yIFRXUTEgaWZcXG4gXFx0XFx0ICogYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNsZWFuIFRXUTEgd2l0aCB6ZXJvIG5hcGlfYnVkZ2V0Llxcbi1cXHRcXHQgKiBXZSBkbyBub3QgdXNlIGl0IGZvciBhbnkgb3RoZXIgcmluZy5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdHMzMiBkZWZlcnJlZF9oZWFkO1xcbiBcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoxOTo0OS42MjIyODYyNTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjUxODY1NTM0NTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0cmFuc21pdCByaW5nIGRvb3JiZWxsIGFuZCBmbHVzaCBoYW5kbGluZyBsb2dpYyBpbiB0aGUgTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZSBkcml2ZXIgKGZibmljKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTWV0YSBBU0lDIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNmJkYzYwYjRhNDFiNTFhZjc3ODA5NmQ5ZWRjZjNmYzE2OTUwNmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzoxOTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcbmluZGV4IDQwMWY4YjhhZTFjYWUuLmU3OTE4ZDNmNmFiYTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNcbkBAIC0zMTEsNiArMzExLDI5IEBAIGZibmljX3J4X2NzdW0odTY0IHJjZCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZibmljX3JpbmcgKnJjcSxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgZmJuaWNfdHhfZG9vcmJlbGwoc3RydWN0IGZibmljX3JpbmcgKnJpbmcsIF9fbGU2NCAqbWV0YSlcbit7XG4rXHQqbWV0YSB8PSBjcHVfdG9fbGU2NChGQk5JQ19UV0RfRkxBR19SRVFfQ09NUExFVElPTik7XG4rXHRyaW5nLVx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcbitcbitcdC8qIEZvcmNlIERNQSB3cml0ZXMgdG8gZmx1c2ggYmVmb3JlIHdyaXRpbmcgdG8gdGFpbCAqL1xuK1x0ZG1hX3dtYigpO1xuK1xuK1x0d3JpdGVsKHJpbmctXHUwMDNldGFpbCwgcmluZy1cdTAwM2Vkb29yYmVsbCk7XG4rfVxuK1xuKy8qIFBhY2tldHMgaGFuZGVkIHRvIHVzIHdpdGggeG1pdF9tb3JlIHNldCBhcmUgbGVmdCBpbiB0aGUgcmluZyB3aXRob3V0IGFcbisgKiBkb29yYmVsbCwgYW5kIHdpdGhvdXQgYSBjb21wbGV0aW9uIHJlcXVlc3QsIGluIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZVxuKyAqIHBhY2tldCBlbmRpbmcgdGhlIGJ1cnN0IHdpbGwgcmluZyBmb3IgYWxsIG9mIHRoZW0uIElmIHRoYXQgcGFja2V0IGdldHNcbisgKiBkcm9wcGVkIGluc3RlYWQgd2UgaGF2ZSB0byByaW5nIGhlcmUsIG90aGVyd2lzZSB0aGUgZGVzY3JpcHRvcnMgc2l0IGluXG4rICogdGhlIHJpbmcgdW50aWwgdGhlIG5leHQgdHJhbnNtaXQsIHdoaWNoIG1heSBuZXZlciBjb21lLlxuKyAqL1xuK3N0YXRpYyB2b2lkIGZibmljX3R4X2ZsdXNoX2Rvb3JiZWxsKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nKVxuK3tcbitcdGlmIChyaW5nLVx1MDAzZWRlZmVycmVkX21ldGEgXHUwMDNlPSAwKVxuK1x0XHRmYm5pY190eF9kb29yYmVsbChyaW5nLCBcdTAwMjZyaW5nLVx1MDAzZWRlc2NbcmluZy1cdTAwM2VkZWZlcnJlZF9tZXRhXSk7XG4rfVxuK1xuIHN0YXRpYyBib29sXG4gZmJuaWNfdHhfbWFwKHN0cnVjdCBmYm5pY19yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2xlNjQgKm1ldGEpXG4ge1xuQEAgLTM3OCwxNCArNDAxLDEwIEBAIGZibmljX3R4X21hcChzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTY0ICptZXRhKVxuIFx0LyogVmVyaWZ5IHRoZXJlIGlzIHJvb20gZm9yIGFub3RoZXIgcGFja2V0ICovXG4gXHRmYm5pY19tYXliZV9zdG9wX3R4KHNrYi1cdTAwM2VkZXYsIHJpbmcsIEZCTklDX01BWF9TS0JfREVTQyk7XG4gXG4tXHRpZiAoZmJuaWNfdHhfc2VudF9xdWV1ZShza2IsIHJpbmcpKSB7XG4tXHRcdCptZXRhIHw9IGNwdV90b19sZTY0KEZCTklDX1RXRF9GTEFHX1JFUV9DT01QTEVUSU9OKTtcbi1cbi1cdFx0LyogRm9yY2UgRE1BIHdyaXRlcyB0byBmbHVzaCBiZWZvcmUgd3JpdGluZyB0byB0YWlsICovXG4tXHRcdGRtYV93bWIoKTtcbi1cbi1cdFx0d3JpdGVsKHRhaWwsIHJpbmctXHUwMDNlZG9vcmJlbGwpO1xuLVx0fVxuK1x0aWYgKGZibmljX3R4X3NlbnRfcXVldWUoc2tiLCByaW5nKSlcbitcdFx0ZmJuaWNfdHhfZG9vcmJlbGwocmluZywgbWV0YSk7XG4rXHRlbHNlXG4rXHRcdHJpbmctXHUwMDNlZGVmZXJyZWRfbWV0YSA9IG1ldGEgLSByaW5nLVx1MDAzZWRlc2M7XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG4gZG1hX2Vycm9yOlxuQEAgLTQyNSw4ICs0NDQsMTAgQEAgZmJuaWNfeG1pdF9mcmFtZV9yaW5nKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmYm5pY19yaW5nICpyaW5nKVxuIFx0ICogb3RoZXJ3aXNlIHRyeSBuZXh0IHRpbWVcbiBcdCAqL1xuIFx0ZGVzY19uZWVkZWQgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3MgKyAxMDtcbi1cdGlmIChmYm5pY19tYXliZV9zdG9wX3R4KHNrYi1cdTAwM2VkZXYsIHJpbmcsIGRlc2NfbmVlZGVkKSlcbitcdGlmIChmYm5pY19tYXliZV9zdG9wX3R4KHNrYi1cdTAwM2VkZXYsIHJpbmcsIGRlc2NfbmVlZGVkKSkge1xuK1x0XHRmYm5pY190eF9mbHVzaF9kb29yYmVsbChyaW5nKTtcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9CVVNZO1xuK1x0fVxuIFxuIFx0Km1ldGEgPSBjcHVfdG9fbGU2NChGQk5JQ19UV0RfRkxBR19ERVNUX01BQyk7XG4gXG5AQCAtNDQ3LDYgKzQ2OCw4IEBAIGZibmljX3htaXRfZnJhbWVfcmluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZylcbiBlcnJfZnJlZTpcbiBcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gZXJyX2NvdW50OlxuK1x0ZmJuaWNfdHhfZmx1c2hfZG9vcmJlbGwocmluZyk7XG4rXG4gXHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnJpbmctXHUwMDNlc3RhdHMuc3luY3ApO1xuIFx0cmluZy1cdTAwM2VzdGF0cy5kcm9wcGVkKys7XG4gXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZyaW5nLVx1MDAzZXN0YXRzLnN5bmNwKTtcbkBAIC0yNDkxLDYgKzI1MTQsNyBAQCBzdGF0aWMgdm9pZCBmYm5pY19lbmFibGVfdHdxMChzdHJ1Y3QgZmJuaWNfcmluZyAqdHdxKVxuIFx0ZmJuaWNfcmluZ193cjMyKHR3cSwgRkJOSUNfUVVFVUVfVFdRMF9DVEwsIEZCTklDX1FVRVVFX1RXUV9DVExfUkVTRVQpO1xuIFx0dHdxLVx1MDAzZXRhaWwgPSAwO1xuIFx0dHdxLVx1MDAzZWhlYWQgPSAwO1xuK1x0dHdxLVx1MDAzZWRlZmVycmVkX21ldGEgPSAtMTtcbiBcbiBcdC8qIFN0b3JlIGRlc2NyaXB0b3IgcmluZyBhZGRyZXNzIGFuZCBzaXplICovXG4gXHRmYm5pY19yaW5nX3dyMzIodHdxLCBGQk5JQ19RVUVVRV9UV1EwX0JBTCwgbG93ZXJfMzJfYml0cyh0d3EtXHUwMDNlZG1hKSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaFxuaW5kZXggZTAzYzlkMmMzOGRjYS4uZjU4OTk0NDZkY2M1MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaFxuQEAgLTEyOCw5ICsxMjgsMTQgQEAgc3RydWN0IGZibmljX3Jpbmcge1xuIFx0XHQvKiBSeCBCRFFzIG9ubHkgKi9cbiBcdFx0c3RydWN0IHBhZ2VfcG9vbCAqcGFnZV9wb29sO1xuIFxuLVx0XHQvKiBEZWZlcnJlZF9oZWFkIGlzIHVzZWQgdG8gY2FjaGUgdGhlIGhlYWQgZm9yIFRXUTEgaWZcbitcdFx0LyogVFdRMCBvbmx5LCBpbmRleCBvZiB0aGUgbWV0YSBkZXNjcmlwdG9yIG9mIHRoZSBsYXN0IHBhY2tldFxuK1x0XHQgKiBwbGFjZWQgaW4gdGhlIHJpbmcgd2l0aG91dCByaW5naW5nIHRoZSBkb29yYmVsbCwgLTEgaWYgdGhlXG4rXHRcdCAqIGRvb3JiZWxsIGlzIGluIHN5bmMgd2l0aCB0aGUgdGFpbC5cbitcdFx0ICovXG4rXHRcdHMzMiBkZWZlcnJlZF9tZXRhO1xuK1xuK1x0XHQvKiBUQ1Egb25seSwgdXNlZCB0byBjYWNoZSB0aGUgaGVhZCBmb3IgVFdRMSBpZlxuIFx0XHQgKiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gY2xlYW4gVFdRMSB3aXRoIHplcm8gbmFwaV9idWRnZXQuXG4tXHRcdCAqIFdlIGRvIG5vdCB1c2UgaXQgZm9yIGFueSBvdGhlciByaW5nLlxuIFx0XHQgKi9cbiBcdFx0czMyIGRlZmVycmVkX2hlYWQ7XG4gXHR9O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MTk6NDkuNjIyMjg4MTI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjQ4ODU4Mzc0MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXZhbHVhdGluZyB0aGUgUGF0Y2ggU2VyaWVzKipcblxuT2theSwgc28gdGhlIHVzZXIgd2FudHMgbWUgdG8gdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBzZXJpZXMuIE15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLCBzbyBsZXQncyBicmVhayB0aGlzIGRvd24uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgcGF0Y2ggdG91Y2hlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmNgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmhgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgTWV0YSBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlIChOSUMpIGRyaXZlciwgb3IgYGZibmljYC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXMgdGhpcyBhIGhhcmR3YXJlIGRyaXZlciwgb3IgaXMgaXQgdmlydHVhbD8gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIGJlIHN1cmUuIFRoYXQncyB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBnZXR0aW5nIGEgYmV0dGVyIHNlbnNlIG9mIGhvdyB0aGlzIHBpZWNlIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoxNC41MDgxMjgzM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg0NTUxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZCTklDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTE4PWlmIE5FVF9WRU5ET1JfTUVUQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MjA6Y29uZmlnIEZCTklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoxNC42NTY1ODg0NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjA3Mjk2NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9uLCBhbmQgdGhlIEtjb25maWcgZmlsZSBpcyB0aGUgcGxhY2UgdG8gc3RhcnQuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnYC4gVGhpcyBmaWxlIHNob3VsZCBiZSB0aGUgY2VudHJhbCBwb2ludCBmb3IgY29uZmlndXJpbmcgdGhlIGhpZ2hlci1sZXZlbCBFdGhlcm5ldCBzZXR0aW5ncywgdGhlIG9uZXMgdGhhdCBwb3RlbnRpYWxseSBvcmNoZXN0cmF0ZSBvciBhZmZlY3Qgc2V2ZXJhbCBsb3dlci1sZXZlbCBkcml2ZXJzLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgb3B0aW9ucyBkZWZpbmluZyB0aGUgb3ZlcmFsbCBFdGhlcm5ldCBzdWJzeXN0ZW0gZmVhdHVyZXMsIG1heWJlIHNvbWUgZ2xvYmFsIHBhcmFtZXRlcnMgdGhhdCBhcHBseSBhY3Jvc3MgZGlmZmVyZW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbnMsIG9yIHBlcmhhcHMgc2VsZWN0aW9uIHN0YXRlbWVudHMgdG8gdHVybiBvbiBvciBvZmYgbWFqb3IgZHJpdmVyIGdyb3Vwcy4gSXQncyBhbHNvIHBvc3NpYmxlIHRoaXMgZmlsZSBqdXN0IGltcG9ydHMgb3RoZXIgS2NvbmZpZyBmaWxlcyB0aGF0IGFyZSBtb3JlIHNwZWNpZmljIHRvIGNlcnRhaW4gZHJpdmVyIGZhbWlsaWVzLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZXNlIGNvbmZpZ3VyYXRpb25zLCB0byB1bmRlcnN0YW5kIGhvdyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgaG93IGRlcGVuZGVuY2llcyBhcmUgaGFuZGxlZC4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHN5bWJvbHMsIHRoZWlyIGRlZmF1bHRzLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcmVsYXRpb25zaGlwcyB0byBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBFdGhlcm5ldCBhcmNoaXRlY3R1cmUuIExldCdzIHN0YXJ0IHJlYWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MzQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoxNi44NjM4OTEzNTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWV0YSBQbGF0Zm9ybXMgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9NRVRBXFxuICAgNzpcXHRcXHRib29sIFxcXCJNZXRhIFBsYXRmb3JtcyBkZXZpY2VzXFxcIlxcbiAgIDg6XFx0XFx0ZGVmYXVsdCB5XFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZGVzaWduZWQgYnkgTWV0YSwgc2F5IFkuXFxuICAxMTpcXHRcXHQgIFRoYXQncyBNZXRhIGFzIGluIHRoZSBwYXJlbnQgY29tcGFueSBvZiBGYWNlYm9vay5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTQ6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXFxuICAxNTpcXHRcXHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTWV0YSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDE2OlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBORVRfVkVORE9SX01FVEFcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIEZCTklDXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZVxcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gNjRCSVQgfHwgQ09NUElMRV9URVNUXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uICFTMzkwXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIE1BWF9TS0JfRlJBR1MgXFx1MDAzYyAyMlxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXFxuICAyNjpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAyNzpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDI4OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDI5OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgMzA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDMxOlxcdFxcdHNlbGVjdCBQTERNRldcXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZS5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICAzNjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGZibmljLiAgTVNJLVggaW50ZXJydXB0IHN1cHBvcnQgaXMgcmVxdWlyZWQuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9NRVRBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjIwOjE2Ljg2Mzk1MzY4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI1Mjc2MjQ3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIGl0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGZibmljIERyaXZlcioqXG5cbk9rYXksIHNvIGBmYm5pY2AgaXMgTWV0YSdzIGN1c3RvbSBuZXR3b3JrIGludGVyZmFjZSwgcmlnaHQ/IFRoYXQncyB0aGVpciBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlIOKAkyBpdCdzIGJhc2ljYWxseSBhIFBDSS1iYXNlZCBuZXR3b3JrIGNhcmQgZHJpdmVyLCB0aGUgZHJpdmVyIGZvciB0aGVpciBBU0lDIG9yIFNtYXJ0TklDLCBvciB3aGF0ZXZlciBjdXN0b20gUENJZSBOSUMgdGhleSd2ZSBjb29rZWQgdXAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMuIExldCdzIGRpZyBpbnRvIHRoZSBkcml2ZXIgc291cmNlIGNvZGUg4oCTIHNvbWV0aGluZyBsaWtlIGBmYm5pY19wY2kuY2Agd291bGQgYmUgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc3BlY2lmaWMgZGV2aWNlcywgaW4gdGVybXMgb2YgUENJIElEcyBhbmQgc3VjaCwgdGhpcyB0aGluZyBhY3R1YWxseSBiaW5kcyB0by4gVGhhdCdsbCB0ZWxsIG1lIHdoYXQgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gc3VwcG9ydC4gVGhpcyBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDI2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoxOS4zOTE1ODA2MTZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJmYm5pYy5oXCIsXG4gICAgXCJmYm5pY19jc3IuY1wiLFxuICAgIFwiZmJuaWNfY3NyLmhcIixcbiAgICBcImZibmljX2RlYnVnZnMuY1wiLFxuICAgIFwiZmJuaWNfZGV2bGluay5jXCIsXG4gICAgXCJmYm5pY19kcnZpbmZvLmhcIixcbiAgICBcImZibmljX2V0aHRvb2wuY1wiLFxuICAgIFwiZmJuaWNfZncuY1wiLFxuICAgIFwiZmJuaWNfZncuaFwiLFxuICAgIFwiZmJuaWNfZndfbG9nLmNcIixcbiAgICBcImZibmljX2Z3X2xvZy5oXCIsXG4gICAgXCJmYm5pY19od19zdGF0cy5jXCIsXG4gICAgXCJmYm5pY19od19zdGF0cy5oXCIsXG4gICAgXCJmYm5pY19od21vbi5jXCIsXG4gICAgXCJmYm5pY19pcnEuY1wiLFxuICAgIFwiZmJuaWNfbWFjLmNcIixcbiAgICBcImZibmljX21hYy5oXCIsXG4gICAgXCJmYm5pY19tZGlvLmNcIixcbiAgICBcImZibmljX25ldGRldi5jXCIsXG4gICAgXCJmYm5pY19uZXRkZXYuaFwiLFxuICAgIFwiZmJuaWNfcGNpLmNcIixcbiAgICBcImZibmljX3BoeWxpbmsuY1wiLFxuICAgIFwiZmJuaWNfcnBjLmNcIixcbiAgICBcImZibmljX3JwYy5oXCIsXG4gICAgXCJmYm5pY190aW1lLmNcIixcbiAgICBcImZibmljX3Rsdi5jXCIsXG4gICAgXCJmYm5pY190bHYuaFwiLFxuICAgIFwiZmJuaWNfdHhyeC5jXCIsXG4gICAgXCJmYm5pY190eHJ4LmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6MTkuMzkxNjU5NTA2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTY4OTEwNzkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFBDSSBJRCBSZWFsbSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBuZXR3b3JrIGludGVyZmFjZSBjYXJkcyBhcmUgYmVpbmcgaWRlbnRpZmllZCwgZXNwZWNpYWxseSB3aXRoaW4gdGhlIFBDSSBidXMgYXJjaGl0ZWN0dXJlLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiwgdGhlIFBDSSBJRHMsIHdpbGwgYmUgYmFrZWQgaW50byB0aGUgZHJpdmVyIGNvZGUgaXRzZWxmLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgYGZibmljX3BjaS5jYCBmaWxlLiBUaGlzIG5hbWluZyBjb252ZW50aW9uIGZlZWxzIHByZXR0eSBzdGFuZGFyZCBmb3IgYSBQQ0ktcmVsYXRlZCBkcml2ZXIsIHNvIHRoYXQncyB3aGVyZSBJJ2xsIHN0YXJ0IGRpZ2dpbmcuIEl0J3MgdXN1YWxseSB0aGUgcGxhY2Ugd2hlcmUgdGhlIFBDSSBkZXZpY2UgSURzIGFyZSBlbnVtZXJhdGVkIGFuZCBoYW5kbGVkLiBMZXQncyBnZXQgcmlnaHQgaW50byBpdCwgSSBleHBlY3QgdG8gZmluZCBzb21lIGNydWNpYWwgaW5mb3JtYXRpb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6MjEuMDgwNzY5MjM4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODc4NjkwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2luZm8gKmZibmljX2luZm9fdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTMxLVxcdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTIxND1zdGF0aWMgdm9pZCBmYm5pY19zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MjU5OnN0YXRpYyBpbnQgZmJuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDoyMS4xMjk1Njg1M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNTUxODc0NTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZmJuaWNgIE5JQyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBzbmlwcGV0OiBgeyBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYykgfWAuIEFoLCBpdCdzIE1ldGEncyBjdXN0b20gQVNJQyBOSUMsIHRoZSBgZmJuaWNgLiBJbnRlcmVzdGluZy4gTm93LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBpdCdzIHdvcnRoIGZ1enppbmcgdGhpcy5cblxuTGV0J3Mgc2VlLCB0aGUgaW5zdHJ1Y3Rpb25zIGluIFNlY3Rpb24gMiBsYXkgb3V0IHRoZSBcIm5lZ2F0aXZlIGNyaXRlcmlhXCIg4oCTIHdoZW4gdG8gc2tpcCBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIGl0IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjb2RlIGZhbGxzIHVuZGVyIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuUmlnaHQsIGxldCdzIGRldGVybWluZSBpZiBgZmJuaWNgIGlzIGVtdWxhdGVkLiBEZWZpbml0ZWx5IG5vdCBpbiBzdGFuZGFyZCBRRU1VOyBpdCBvbmx5IHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBjb21tb24gTklDcy4gVGhlIGRvY3VtZW50YXRpb24gbGlzdHMgdGhlIHVzdWFsIHN1c3BlY3RzOiB2aXJ0aW8tbmV0LCBlMTAwMCwgZTEwMDBlLCBhbmQgc28gb24uIGBmYm5pY2AgZGVtYW5kcyBwaHlzaWNhbCBoYXJkd2FyZSwgaW5kaWNhdGVkIGJ5IHRoZSBgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FVEEsIC4uLilgIGNhbGwuXG5cblNvLCBjYW4gd2UgcmVhY2ggYGZibmljYCB3aXRob3V0IHRoZSBwaHlzaWNhbCBQQ0llIGRldmljZT8gTGV0J3MgcnVsZSBvdXQgYW55IHZpcnR1YWwgYnVzLCBuZXRkZXYgbW9jaywgb3IgZHVtbXkgcHJvYmUuIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGZibmljX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuY2AuIFRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0ODYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6MzYuNjQ4MzE2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1NSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1NTpcXHQgKiBhbmQgYSBoYXJkd2FyZSByZXNldCBvY2N1ci5cXG4gMjU2OlxcdCAqXFxuIDI1NzpcXHQgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgb24gZmFpbHVyZVxcbiAyNTg6XFx0ICoqL1xcbiAyNTk6XFx0c3RhdGljIGludCBmYm5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gMjYwOlxcdHtcXG4gMjYxOlxcdFxcdGNvbnN0IHN0cnVjdCBmYm5pY19pbmZvICppbmZvID0gZmJuaWNfaW5mb190YmxbZW50LVxcdTAwM2Vkcml2ZXJfZGF0YV07XFxuIDI2MjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiAyNjM6XFx0XFx0c3RydWN0IGZibmljX2RldiAqZmJkO1xcbiAyNjQ6XFx0XFx0aW50IGVycjtcXG4gMjY1OlxcdFxcbiAyNjY6XFx0XFx0aWYgKHBkZXYtXFx1MDAzZWVycm9yX3N0YXRlICE9IHBjaV9jaGFubmVsX2lvX25vcm1hbCkge1xcbiAyNjc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbiAyNjg6XFx0XFx0XFx0XFx0XFxcIlBDSSBkZXZpY2Ugc3RpbGwgaW4gYW4gZXJyb3Igc3RhdGUuIFVuYWJsZSB0byBsb2FkLi4uXFxcXG5cXFwiKTtcXG4gMjY5OlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiAyNzA6XFx0XFx0fVxcbiAyNzE6XFx0XFxuIDI3MjpcXHRcXHRlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XFxuIDI3MzpcXHRcXHRpZiAoZXJyKSB7XFxuIDI3NDpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJQQ0kgZW5hYmxlIGRldmljZSBmYWlsZWQ6ICVkXFxcXG5cXFwiLCBlcnIpO1xcbiAyNzU6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gMjc2OlxcdFxcdH1cXG4gMjc3OlxcdFxcbiAyNzg6XFx0XFx0ZXJyID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBETUFfQklUX01BU0soNDYpKTtcXG4gMjc5OlxcdFxcdGlmIChlcnIpXFxuIDI4MDpcXHRcXHRcXHRlcnIgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xcbiAyODE6XFx0XFx0aWYgKGVycikge1xcbiAyODI6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiRE1BIGNvbmZpZ3VyYXRpb24gZmFpbGVkOiAlZFxcXFxuXFxcIiwgZXJyKTtcXG4gMjgzOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDI4NDpcXHRcXHR9XFxuIDI4NTpcXHRcXG4gMjg2OlxcdFxcdGVyciA9IHBjaW1faW9tYXBfcmVnaW9ucyhwZGV2LCBpbmZvLVxcdTAwM2ViYXJfbWFzaywgZmJuaWNfZHJpdmVyX25hbWUpO1xcbiAyODc6XFx0XFx0aWYgKGVycikge1xcbiAyODg6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbiAyODk6XFx0XFx0XFx0XFx0XFxcInBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMgZmFpbGVkOiAlZFxcXFxuXFxcIiwgZXJyKTtcXG4gMjkwOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDI5MTpcXHRcXHR9XFxuIDI5MjpcXHRcXG4gMjkzOlxcdFxcdGZiZCA9IGZibmljX2RldmxpbmtfYWxsb2MocGRldik7XFxuIDI5NDpcXHRcXHRpZiAoIWZiZCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzoyMDozNi42NDgzOTUyMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0ODM5Mzk5NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2ggY2xvc2VseS4gSXQncyBjbGVhciB0aGF0IHRoaXMgaXMgYSBQQ0kgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgTWV0YSdzIEFTSUMgTklDIOKAkyB0aGUgYGZibmljYCBkcml2ZXIsIHRvIGJlIHByZWNpc2UgKGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgZmJuaWNfYm9hcmRfYXNpYylgKS4gVGhlIGtleSBmaWxlcyB0b3VjaGVkIGFyZSBgZmJuaWNfdHhyeC5jYCBhbmQgYGZibmljX3R4cnguaGAsIHdoaWNoIGRlYWwgd2l0aCB0cmFuc21pdCByaW5nIG9wZXJhdGlvbnM6IGBmYm5pY190eF9kb29yYmVsbGAsIGBmYm5pY190eF9mbHVzaF9kb29yYmVsbGAsIGV0Yy4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIFRYIHBhdGggc3R1ZmYuXG5cblRoZSBjcml0aWNhbCBwb2ludCBoZXJlIGlzIHRoYXQgdGhpcyBjb2RlICphYnNvbHV0ZWx5KiByZXF1aXJlcyBhIHJ1bm5pbmcgYGZibmljYCBuZXR3b3JrIGludGVyZmFjZSwgYW5kIHRoYXQgaW4gdHVybiwgZGVtYW5kcyBwaHlzaWNhbCBNZXRhIEFTSUMgaGFyZHdhcmUuIFRoaXMgaW1tZWRpYXRlbHkgdGhyb3dzIHVwIGEgcmVkIGZsYWcgaW4gbXkgbWluZCwgd2hpY2ggaXMgcmVpbmZvcmNlZCBieSB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeSBpbiB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBXZSdyZSB0YWxraW5nIGFib3V0IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSDigJMgYSBTbWFydE5JQyBpbiB0aGlzIGNhc2Ug4oCTIHRoYXQncyBub3QgZ29pbmcgdG8gYmUgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIHdlIHJlbHkgb24gZm9yIGZ1enppbmcuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaGFzIHRvIGJlIGBmYWxzZWAgaW4gdGhpcyBjYXNlLiBUaGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzIGFyZSBpbmFjY2Vzc2libGUgZHVyaW5nIHRoZSBmdXp6aW5nIHByb2Nlc3MuXG5cbkNvbnNlcXVlbnRseSwgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBhbiBlbXB0eSBsaXN0LCBgW11gLiBUaGVyZSdzIG5vdGhpbmcgc3BlY2lmaWMgdG8gdGFyZ2V0IHNpbmNlIHRoZSBlbnRpcmUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gQW5kIGBFbmFibGVDb25maWdzYCBpcyBhbHNvIGdvaW5nIHRvIGJlIGVtcHR5IGBbXWAuIFdlICpjb3VsZCogbWVudGlvbiBgRkJOSUNgIGlmIGl0IGFkZHMgY2xhcml0eSwgYnV0IGFuIGVtcHR5IGxpc3Qgb3IgYG51bGxgIGlzIHRoZSBzdGFuZGFyZCBmb3IgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkkgcmVjaGVja2VkIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wncyBzcGVjaWZpY2F0aW9uIHRvIGNvbmZpcm06XG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBLZXJuZWwgY29uZmlnIGZsYWdzLCBubyBDT05GSUcgcHJlZml4LCB3aGljaCBhcmUgcmVxdWlyZWQgZm9yIGZ1enppbmcuXG4qICAgYEZvY3VzU3ltYm9sc2A6IFNwZWNpZmljIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi5cbiogICBgUmVhc29uaW5nYDogQ29uY2lzZSBleHBsYW5hdGlvbiBmb3IgdGhlIGRlY2lzaW9uLlxuKiAgIGBXb3J0aEZ1enppbmdgOiBCb29sZWFuLCB3aGV0aGVyIHRoZSBjb2RlIGlzIHJlYWNoYWJsZS5cblxuSSd2ZSBkb3VibGUtY2hlY2tlZCB0aGUgZGlmZjsgaXQncyBqdXN0IHRoZSB0d28gYGZibmljYCBmaWxlcywgY29uZmlybWluZyB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS5cblxuTXkgcmVhc29uaW5nIHdpbGwgYmU6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCByaW5nIGRvb3JiZWxsIGFuZCBmbHVzaCBoYW5kbGluZyBsb2dpYyBpbiBNZXRhJ3MgSG9zdCBOZXR3b3JrIEludGVyZmFjZSBkcml2ZXIgKGBmYm5pY2ApLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwcm9wcmlldGFyeSwgcGh5c2ljYWwgTWV0YSBBU0lDIFBDSWUgaGFyZHdhcmUgKGBQQ0lfREVWSUNFX0RBVEEoTUVUQSwgRkJOSUNfQVNJQywgLi4uKWApLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiXG5cbk5vdyBJJ20gcmVhZHkgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODQzLCJPdXRwdXRUb2tlbnMiOjg2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6NDEuNDg3Nzk2NzkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdHJhbnNtaXQgcmluZyBkb29yYmVsbCBhbmQgZmx1c2ggaGFuZGxpbmcgbG9naWMgaW4gdGhlIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UgZHJpdmVyIChmYm5pYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ldGEgQVNJQyBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MjA6NDEuNDg3ODIyNjQzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjqf92[1] Phase: Running StartedAt: 2026-09-15 03:20:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjqf92[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 03:20:48 +0000 UTC FinishedAt: 2026-09-15 03:20:53 +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,}