Name: series-workflow94hv9 Phase: Failed StartedAt: 2026-07-23 04:30:42 +0000 UTC FinishedAt: 2026-07-23 04:44:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow94hv9[0] Phase: Succeeded StartedAt: 2026-07-23 04:30:42 +0000 UTC FinishedAt: 2026-07-23 04:44:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow94hv9[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 04:30:42 +0000 UTC FinishedAt: 2026-07-23 04:44:12 +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+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDlkZWQ3NzVjMDA3NjUyMzZjMjBhMDkwODZkODdlYTQyZDI1NTFjNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0MzozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG5pbmRleCAyZTk0ZDUxMDUwMTZiZi4uZjVmZDYxMzhjMzUyZmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbkBAIC01MTgsNiAmIzQzOzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xuJiM0MztcbiYjNDM7XHRpZiAoIWlzX2xtYWNfdmFsaWQoY2d4LCBsbWFjX2lkKSlcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHQqcGtpbmQgPSBjZ3hfcmVhZChjZ3gsIGxtYWNfaWQsIGNneC1cdTAwM2VtYWNfb3BzLVx1MDAzZXJ4aWRfbWFwX29mZnNldCk7XG4mIzQzO1x0KnBraW5kID0gKnBraW5kIFx1MDAyNiAweDNGO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB1OCBjZ3hfZ2V0X2xtYWNfdHlwZSh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZClcbiB7XG4gXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbmluZGV4IDkyY2NmMzQzZGZlMDRmLi44NDExYTc1ZGQ3MjNmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuQEAgLTE0MSw2ICYjNDM7MTQxLDcgQEAgaW50IGNneF9nZXRfY2d4aWQodm9pZCAqY2d4ZCk7XG4gaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7XG4gdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTtcbiBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpO1xuJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKTtcbiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XG4gaW50IGNneF9sbWFjX2V2aF91bnJlZ2lzdGVyKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcbiBpbnQgY2d4X2dldF90eF9zdGF0cyh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCwgaW50IGlkeCwgdTY0ICp0eF9zdGF0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5pbmRleCA3ZjM1MDVhZTY4NjA0Mi4uOWQ1YjdiNTFiZGZhNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbkBAIC0xMTE1LDYgJiM0MzsxMTE1LDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCB1OCAqaW50ZiwgdTggKmVuYSk7XG4gaW50IG5wY19jb25maWdfY250cl9kZWZhdWx0X2VudHJpZXMoc3RydWN0IHJ2dSAqcnZ1LCBib29sIGVuYWJsZSk7XG4gYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcbiYjNDM7Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpO1xuJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcbiBib29sIGlzX21hY19mZWF0dXJlX3N1cHBvcnRlZChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgaW50IGZlYXR1cmUpO1xuIHUzMiAgcnZ1X2NneF9nZXRfZmlmb2xlbihzdHJ1Y3QgcnZ1ICpydnUpO1xuIHZvaWQgKnJ2dV9maXJzdF9jZ3hfcGRhdGEoc3RydWN0IHJ2dSAqcnZ1KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbmluZGV4IDRmZjM5MzVlZDNmZTg0Li44N2QyMTg4OWRjNDllMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG5AQCAtMTM1NSwzICYjNDM7MTM1NSw4MiBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbiBcdGlmIChtYWNfb3BzLVx1MDAzZW1hY19yZXNldChjZ3hkLCBsbWFjLCAhaXNfdmYocGNpZnVuYykpKVxuIFx0XHRkZXZfZXJyKHJ2dS1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byByZXNldCBNQUNcXG5cJiMzNDspO1xuIH1cbiYjNDM7XG4mIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4mIzQzOyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuIFZGcyBtdXN0IG5vdCBwcm9ncmFtXG4mIzQzOyAqIE5QQ19UWF9ERUZfUEtJTkQgb24gTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcgaW4gdGhhdCBjYXNlOiB0aGUgUEYgb3duc1xuJiM0MzsgKiBwYXJzZSBtb2RlIGFuZCBubyBzZXBhcmF0ZSBOUENfVFhfSElHSUdfUEtJTkQgaXMgaW5zdGFsbGVkIG9uIHRoZSBWRiBMRi5cbiYjNDM7ICogVFgtcGFyc2UgY2FsbGVycyBza2lwIHRoZSB3cml0ZSB3aGVuIGRlbmllZDsgcnZ1X2xmX3Jlc2V0KCkgY2xlYXJzIGVhY2ggTEZcbiYjNDM7ICogYmVmb3JlIGFsbG9jIHNvIHRoZSBuZXh0IHBlcm1pdHRlZCBvd25lciBwcm9ncmFtcyBOUENfVFhfREVGX1BLSU5ELlxuJiM0MzsgKi9cbiYjNDM7Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbiYjNDM7e1xuJiM0MztcdGludCBwZiwgZXJyLCByeHBraW5kO1xuJiM0MztcdHU4IGNneF9pZCwgbG1hY19pZDtcbiYjNDM7XHR2b2lkICpjZ3hkO1xuJiM0MztcbiYjNDM7XHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuJiM0MztcbiYjNDM7XHRpZiAoIShwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbiYjNDM7XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XG4mIzQzO1x0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcdTAwMjZyeHBraW5kKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJ4cGtpbmQpIHtcbiYjNDM7XHRjYXNlIE5QQ19SWF9ISUdJR19QS0lORDpcbiYjNDM7XHRjYXNlIE5QQ19SWF9FRFNBX1BLSU5EOlxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4mIzQzOyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuXG4mIzQzOyAqL1xuJiM0Mztib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZClcbiYjNDM7e1xuJiM0MztcdGludCBwZiwgZXJyLCByeHBraW5kO1xuJiM0MztcdHU4IGNneF9pZCwgbG1hY19pZDtcbiYjNDM7XHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuJiM0MztcbiYjNDM7XHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuJiM0MztcbiYjNDM7XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuJiM0MztcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuJiM0MztcdGlmICghaXNfdmYocGNpZnVuYykpXG4mIzQzO1x0XHRnb3RvIHNldDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcdTAwMjZyeHBraW5kKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBlcnI7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAocnhwa2luZCkge1xuJiM0MztcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuJiM0MztcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XG4mIzQzO1x0XHRnb3RvIGVycjtcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7c2V0OlxuJiM0MztcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsIHBraW5kKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO2VycjpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbmluZGV4IDZhMGNlMjY2NTAzMWQ2Li45NjRiY2FhZTA5OGUyNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5AQCAtMzYzLDggJiM0MzszNjMsOCBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fY250ID0gMTtcbiBcdFx0cnNwLVx1MDAzZXR4X2xpbmsgPSBjZ3hfaWQgKiBody1cdTAwM2VsbWFjX3Blcl9jZ3ggJiM0MzsgbG1hY19pZDtcbiBcbi1cdFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuLVx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbiYjNDM7XHRcdGlmIChydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChydnUsIHBjaWZ1bmMsIHBraW5kKSlcbiYjNDM7XHRcdFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcbiBcdFx0dmYgPSAocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7XG5AQCAtMTUwNSwxMyAmIzQzOzE1MDUsMTUgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcbiBcdFx0XHRcdCAgc3RydWN0IG5peF9sZl9hbGxvY19yZXEgKnJlcSxcbiBcdFx0XHRcdCAgc3RydWN0IG5peF9sZl9hbGxvY19yc3AgKnJzcClcbiB7XG4tXHRpbnQgbml4bGYsIHFpbnRzLCBod2N0eF9zaXplLCBpbnRmLCByYyA9IDA7XG4mIzQzO1x0aW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwLCBwZjtcbiBcdHUxNiBiY2FzdCwgbWNhc3QsIHByb21pc2MsIHVjYXN0O1xuIFx0c3RydWN0IHJ2dV9od2luZm8gKmh3ID0gcnZ1LVx1MDAzZWh3O1xuIFx0dTE2IHBjaWZ1bmMgPSByZXEtXHUwMDNlaGRyLnBjaWZ1bmM7XG4mIzQzO1x0dTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7XG4gXHRib29sIHJ1bGVzX2NyZWF0ZWQgPSBmYWxzZTtcbiBcdHN0cnVjdCBydnVfYmxvY2sgKmJsb2NrO1xuIFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmO1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXHR1NjQgY2ZnLCBjdHhfY2ZnO1xuIFx0aW50IGJsa2FkZHI7XG4gXG5AQCAtMTY4NSw4ICYjNDM7MTY4NywyMCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS1cdTAwM2VyeF9jZmcpO1xuIFxuIFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cbiYjNDM7XG4mIzQzO1x0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbiBcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XG4tXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcbiYjNDM7XHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbiYjNDM7XHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcbiYjNDM7XHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKGlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSkge1xuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fYmFzZSA9IFJWVV9TV0lUQ0hfTEJLX0NIQU47XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5pbmRleCBjN2JjMGIzYTI5Yjk4NC4uMzg1NTRkNTExNjRlMTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuQEAgLTE5LDYgJiM0MzsxOSw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7Y24yMGsvbnBjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtydnVfbnBjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtjbjIway9yZWcuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtsbWFjX2NvbW1vbi5oXCYjMzQ7XG4gXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEZcdDMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi9cbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRlx0MSAvKiBVY2FzdCBmb3IgTEZzICovXG5AQCAtNDIwMCwxMCAmIzQzOzQyMDEsMTEgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcbiBcbiB7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTtcbi1cdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcbiBcdGludCBwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuJiM0MztcdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcbiYjNDM7XHR1OCBjZ3hfaWQgPSAwLCBsbWFjX2lkID0gMDtcbiBcdHU2NCByeHBraW5kLCB0eHBraW5kO1xuLVx0dTggY2d4X2lkLCBsbWFjX2lkO1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXG4gXHQvKiB1c2UgZGVmYXVsdCBwa2luZCB0byBkaXNhYmxlIGVkc2EvaGlnaWcgKi9cbiBcdHJ4cGtpbmQgPSBydnVfbnBjX2dldF9wa2luZChydnUsIHBmKTtcbkBAIC00MjI3LDEyICYjNDM7NDIyOSw4IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXHRcdC8qIHJ4IHBraW5kIHNldCByZXEgdmFsaWQgb25seSBmb3IgY2d4IG1hcHBlZCBQRnMgKi9cbiBcdFx0aWYgKCFpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4tXG4tXHRcdHJjID0gY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCxcbi1cdFx0XHRcdCAgIHJ4cGtpbmQpO1xuLVx0XHRpZiAocmMpXG4tXHRcdFx0cmV0dXJuIHJjO1xuJiM0MztcdFx0aWYgKCFydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChydnUsIHBjaWZ1bmMsIHJ4cGtpbmQpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiBcdGlmIChkaXIgXHUwMDI2IFBLSU5EX1RYKSB7XG5AQCAtNDI0MSw4ICYjNDM7NDIzOSwxOSBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0cmV0dXJuIHJjO1xuIFxuLVx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbi1cdFx0XHQgICAgdHhwa2luZCk7XG4mIzQzO1x0XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xuJiM0MztcdFx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCxcbiYjNDM7XHRcdFx0XHRcdCAgICBcdTAwMjZsbWFjX2lkKTtcbiYjNDM7XHRcdFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuJiM0MztcdFx0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcbiYjNDM7XHRcdFx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbiYjNDM7XHRcdFx0XHRcdCAgICB0eHBraW5kKTtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbiYjNDM7XHRcdFx0XHQgICAgdHhwa2luZCk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRwZnZmLVx1MDAzZWludGZfbW9kZSA9IGludGZfbW9kZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZGVkNzc1YzAwNzY1MjM2YzIwYTA5MDg2ZDg3ZWE0MmQyNTUxYzczCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMDQ6NDM6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMKQEAgLTUxOCw2ICYjNDM7NTE4LDE4IEBAIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkOwomIzQzOwomIzQzOwlpZiAoIWlzX2xtYWNfdmFsaWQoY2d4LCBsbWFjX2lkKSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwkqcGtpbmQgPSBjZ3hfcmVhZChjZ3gsIGxtYWNfaWQsIGNneC0mZ3Q7bWFjX29wcy0mZ3Q7cnhpZF9tYXBfb2Zmc2V0KTsKJiM0MzsJKnBraW5kID0gKnBraW5kICZhbXA7IDB4M0Y7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1OCBjZ3hfZ2V0X2xtYWNfdHlwZSh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCkKIHsKIAlzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaAppbmRleCA5MmNjZjM0M2RmZTA0Zi4uODQxMWE3NWRkNzIzZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oCkBAIC0xNDEsNiAmIzQzOzE0MSw3IEBAIGludCBjZ3hfZ2V0X2NneGlkKHZvaWQgKmNneGQpOwogaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7CiB2b2lkICpjZ3hfZ2V0X3BkYXRhKGludCBjZ3hfaWQpOwogaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKTsKJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKTsKIGludCBjZ3hfbG1hY19ldmhfcmVnaXN0ZXIoc3RydWN0IGNneF9ldmVudF9jYiAqY2IsIHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTsKIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7CiBpbnQgY2d4X2dldF90eF9zdGF0cyh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCwgaW50IGlkeCwgdTY0ICp0eF9zdGF0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKaW5kZXggN2YzNTA1YWU2ODYwNDIuLjlkNWI3YjUxYmRmYTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaApAQCAtMTExNSw2ICYjNDM7MTExNSw4IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwKIAkJCSB1OCAqaW50ZiwgdTggKmVuYSk7CiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTsKIGJvb2wgaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7CiYjNDM7Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpOwomIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpOwogYm9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKTsKIHUzMiAgcnZ1X2NneF9nZXRfZmlmb2xlbihzdHJ1Y3QgcnZ1ICpydnUpOwogdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCmluZGV4IDRmZjM5MzVlZDNmZTg0Li44N2QyMTg4OWRjNDllMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwpAQCAtMTM1NSwzICYjNDM7MTM1NSw4MiBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYykKIAlpZiAobWFjX29wcy0mZ3Q7bWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpCiAJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlc2V0IE1BQ1xuJiMzNDspOwogfQomIzQzOwomIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzCiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4gVkZzIG11c3Qgbm90IHByb2dyYW0KJiM0MzsgKiBOUENfVFhfREVGX1BLSU5EIG9uIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHIGluIHRoYXQgY2FzZTogdGhlIFBGIG93bnMKJiM0MzsgKiBwYXJzZSBtb2RlIGFuZCBubyBzZXBhcmF0ZSBOUENfVFhfSElHSUdfUEtJTkQgaXMgaW5zdGFsbGVkIG9uIHRoZSBWRiBMRi4KJiM0MzsgKiBUWC1wYXJzZSBjYWxsZXJzIHNraXAgdGhlIHdyaXRlIHdoZW4gZGVuaWVkOyBydnVfbGZfcmVzZXQoKSBjbGVhcnMgZWFjaCBMRgomIzQzOyAqIGJlZm9yZSBhbGxvYyBzbyB0aGUgbmV4dCBwZXJtaXR0ZWQgb3duZXIgcHJvZ3JhbXMgTlBDX1RYX0RFRl9QS0lORC4KJiM0MzsgKi8KJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKQomIzQzO3sKJiM0MzsJaW50IHBmLCBlcnIsIHJ4cGtpbmQ7CiYjNDM7CXU4IGNneF9pZCwgbG1hY19pZDsKJiM0MzsJdm9pZCAqY2d4ZDsKJiM0MzsKJiM0MzsJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CiYjNDM7CWlmICghKHBjaWZ1bmMgJmFtcDsgUlZVX1BGVkZfRlVOQ19NQVNLKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwgJmFtcDtsbWFjX2lkKTsKJiM0MzsJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwllcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsICZhbXA7cnhwa2luZCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXN3aXRjaCAocnhwa2luZCkgewomIzQzOwljYXNlIE5QQ19SWF9ISUdJR19QS0lORDoKJiM0MzsJY2FzZSBOUENfUlhfRURTQV9QS0lORDoKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzCiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4KJiM0MzsgKi8KJiM0Mztib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZCkKJiM0Mzt7CiYjNDM7CWludCBwZiwgZXJyLCByeHBraW5kOwomIzQzOwl1OCBjZ3hfaWQsIGxtYWNfaWQ7CiYjNDM7CXN0cnVjdCBjZ3ggKmNneGQ7CiYjNDM7CiYjNDM7CXBmID0gcnZ1X2dldF9wZihydnUtJmd0O3BkZXYsIHBjaWZ1bmMpOwomIzQzOwomIzQzOwlpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcnZ1X2dldF9jZ3hfbG1hY19pZChydnUtJmd0O3BmMmNneGxtYWNfbWFwW3BmXSwgJmFtcDtjZ3hfaWQsICZhbXA7bG1hY19pZCk7CiYjNDM7CWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwlpZiAoIWlzX3ZmKHBjaWZ1bmMpKQomIzQzOwkJZ290byBzZXQ7CiYjNDM7CiYjNDM7CWVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgJmFtcDtyeHBraW5kKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gZXJyOwomIzQzOwomIzQzOwlzd2l0Y2ggKHJ4cGtpbmQpIHsKJiM0MzsJY2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6CiYjNDM7CWNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiYjNDM7c2V0OgomIzQzOwljZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MztlcnI6CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCmluZGV4IDZhMGNlMjY2NTAzMWQ2Li45NjRiY2FhZTA5OGUyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwpAQCAtMzYzLDggJiM0MzszNjMsOCBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLAogCQlwZnZmLSZndDt0eF9jaGFuX2NudCA9IDE7CiAJCXJzcC0mZ3Q7dHhfbGluayA9IGNneF9pZCAqIGh3LSZndDtsbWFjX3Blcl9jZ3ggJiM0MzsgbG1hY19pZDsKIAotCQljZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7Ci0JCXJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpOwomIzQzOwkJaWYgKHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcGtpbmQpKQomIzQzOwkJCXJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpOwogCQlicmVhazsKIAljYXNlIE5JWF9JTlRGX1RZUEVfTEJLOgogCQl2ZiA9IChwY2lmdW5jICZhbXA7IFJWVV9QRlZGX0ZVTkNfTUFTSykgLSAxOwpAQCAtMTUwNSwxMyAmIzQzOzE1MDUsMTUgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSwKIAkJCQkgIHN0cnVjdCBuaXhfbGZfYWxsb2NfcmVxICpyZXEsCiAJCQkJICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JzcCAqcnNwKQogewotCWludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMDsKJiM0MzsJaW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwLCBwZjsKIAl1MTYgYmNhc3QsIG1jYXN0LCBwcm9taXNjLCB1Y2FzdDsKIAlzdHJ1Y3QgcnZ1X2h3aW5mbyAqaHcgPSBydnUtJmd0O2h3OwogCXUxNiBwY2lmdW5jID0gcmVxLSZndDtoZHIucGNpZnVuYzsKJiM0MzsJdTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7CiAJYm9vbCBydWxlc19jcmVhdGVkID0gZmFsc2U7CiAJc3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7CiAJc3RydWN0IHJ2dV9wZnZmICpwZnZmOwomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3hkOwogCXU2NCBjZmcsIGN0eF9jZmc7CiAJaW50IGJsa2FkZHI7CiAKQEAgLTE2ODUsOCAmIzQzOzE2ODcsMjAgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSwKIAlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLSZndDtyeF9jZmcpOwogCiAJLyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi8KJiM0MzsKJiM0MzsJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiAJY2ZnID0gTlBDX1RYX0RFRl9QS0lORDsKLQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTsKJiM0MzsKJiM0MzsJaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSAmYW1wOyZhbXA7IGlzX3ZmKHBjaWZ1bmMpKSB7CiYjNDM7CQlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwgJmFtcDtsbWFjX2lkKTsKJiM0MzsJCWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJCWlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSkKJiM0MzsJCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7CiYjNDM7CX0KIAogCWlmIChpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpIHsKIAkJcGZ2Zi0mZ3Q7dHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYwppbmRleCBjN2JjMGIzYTI5Yjk4NC4uMzg1NTRkNTExNjRlMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMKQEAgLTE5LDYgJiM0MzsxOSw3IEBACiAjaW5jbHVkZSAmIzM0O2NuMjBrL25wYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cnZ1X25wYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y24yMGsvcmVnLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7bG1hY19jb21tb24uaCYjMzQ7CiAKICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX1BGCTMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi8KICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX05JWExGCTEgLyogVWNhc3QgZm9yIExGcyAqLwpAQCAtNDIwMCwxMCAmIzQzOzQyMDEsMTEgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpciwKIAogewogCXN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpOwotCWludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTsKIAlpbnQgcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CWludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTsKJiM0MzsJdTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7CiAJdTY0IHJ4cGtpbmQsIHR4cGtpbmQ7Ci0JdTggY2d4X2lkLCBsbWFjX2lkOwomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3hkOwogCiAJLyogdXNlIGRlZmF1bHQgcGtpbmQgdG8gZGlzYWJsZSBlZHNhL2hpZ2lnICovCiAJcnhwa2luZCA9IHJ2dV9ucGNfZ2V0X3BraW5kKHJ2dSwgcGYpOwpAQCAtNDIyNywxMiAmIzQzOzQyMjksOCBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLAogCQkvKiByeCBwa2luZCBzZXQgcmVxIHZhbGlkIG9ubHkgZm9yIGNneCBtYXBwZWQgUEZzICovCiAJCWlmICghaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSkKIAkJCXJldHVybiAwOwotCQlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwgJmFtcDtsbWFjX2lkKTsKLQotCQlyYyA9IGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsCi0JCQkJICAgcnhwa2luZCk7Ci0JCWlmIChyYykKLQkJCXJldHVybiByYzsKJiM0MzsJCWlmICghcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCByeHBraW5kKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAoZGlyICZhbXA7IFBLSU5EX1RYKSB7CkBAIC00MjQxLDggJiM0Mzs0MjM5LDE5IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsCiAJCWlmIChyYykKIAkJCXJldHVybiByYzsKIAotCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwKLQkJCSAgICB0eHBraW5kKTsKJiM0MzsJCWlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgJmFtcDsmYW1wOyBpc192ZihwY2lmdW5jKSkgewomIzQzOwkJCXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLAomIzQzOwkJCQkJICAgICZhbXA7bG1hY19pZCk7CiYjNDM7CQkJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJCQlpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpCiYjNDM7CQkJCXJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLAomIzQzOwkJCQkJICAgIHR4cGtpbmQpOwomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwKJiM0MzsJCQkJICAgIHR4cGtpbmQpOwomIzQzOwkJfQogCX0KIAogCXBmdmYtJmd0O2ludGZfbW9kZSA9IGludGZfbW9kZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIwNAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBRiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyB0d2Vha2luZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFGIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgUmVzb3VyY2UgVmlydHVhbGl6YXRpb24gVW5pdC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBWaXJ0dWFsIEZ1bmN0aW9ucyAoVkZzKSBmcm9tIG1lc3Npbmcgd2l0aCB0aGUgUGFja2V0IEtpbmQgKFBLSU5EKSB3aGVuIGNlcnRhaW4gc3BlY2lhbCBwYXJzZSBraW5kcywgbGlrZSBIaUdpZyBvciBFRFNBLCBhcmUgYWN0aXZlIG9uIGEgc2hhcmVkIExNQUMuIFRoZXnigJl2ZSBhZGRlZCBgY2d4X2dldF9wa2luZGAgYW5kIG1vZGlmaWVkIGBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZGAgYW5kIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgIHRvIGFjaGlldmUgdGhpcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHRoaXMgZXZlbiBiZSB0ZXN0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsKClRoaXMgZHJpdmVyIGlzIGxvY2F0ZWQgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AsIGFuZCBpdCYjMzk7cyBoYXJkd2FyZS1zcGVjaWZpYyB0byB0aGUgT2N0ZW9uVFgyLiBOb3csIHRoZSBiaWcgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFsaXN0aWNhbGx5IGVtdWxhdGUgdGhpcyBpbiBRRU1VPyBNeSBleHBlcmllbmNlIGlzIHRoYXQgc3RhbmRhcmQgUUVNVSBvZnRlbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlIHRoZSBPY3Rlb25UWDIuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIG9yIGlmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBzdHJpY3RseSB0aWVkIHRvIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSYjMzk7bGwgc3RhcnQgYnkgdXNpbmcgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYW55IG1lbnRpb25zIG9mIGBPQ1RFT05UWDJfQUZgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIGlkZWEgaWYgdGhpcyBmdW5jdGlvbmFsaXR5IGNhbiBldmVuIGJlIGJyb3VnaHQgdXAgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7T0NURU9OVFgyX0FGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9Nj1jb25maWcgT0NURU9OVFgyX01CT1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTIyPWNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0yMy1cdGJvb2wgXCYjMzQ7RGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0yNS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSAmIzQzOz0gYWYvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICYjNDM7PSBhZi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgJiM0Mzs9IG5pYy9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT03PW9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgJiM0Mzs9IHJ2dV9tYm94Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgJiM0Mzs9IHJ2dV9hZi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZS05LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMDAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIE9jdGVvblRYMiBOZXR3b3JrIERyaXZlcioqCgpBbHJpZ2h0LCBzbyB0aGUgc3lzdGVtIGluZGljYXRlcyB0aGUgbmV0d29yayBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgdGhlIGBPQ1RFT05UWDJfQUZgIGRyaXZlci4gSW1tZWRpYXRlbHksIG15IG1pbmQganVtcHMgdG8gdGhlIGtub3duIGRlcGVuZGVuY2llczogd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBBUk02NCBhcmNoaXRlY3R1cmUgYW5kIGEgUENJIGJ1cyBpbXBsZW1lbnRhdGlvbi4gR2l2ZW4gdGhhdCwgbXkgbmV4dCBzdGVwIGlzIHRvIGhlYWQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlLCBzcGVjaWZpY2FsbHkgdG8gdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcyBvciByZXN0cmljdGlvbnMgaW4gZGV0YWlsLiBMZXQmIzM5O3MgZGVsdmUgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AgdG8gY29uZmlybSBhc3N1bXB0aW9ucyBhbmQgZ2FpbiBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIGludGVncmF0ZWQuIFRoaXMgaW5pdGlhbCBLY29uZmlnIGluc3BlY3Rpb24gd2lsbCBzZXQgdGhlIHN0YWdlIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE9DVEVPTlRYMl9BRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz02PWNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIE9DVEVPTlRYMiBLY29uZmlnIEZpbGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA5LiBJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWV0aGluZyBmdW5kYW1lbnRhbCwgcHJvYmFibHkgYSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBqdWRnaW5nIGJ5IHRoZSBjaG9pY2Ugb2YgYEtjb25maWdgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSAqc2NvcGUqIG9mIHdoYXQmIzM5O3MgYmVpbmcgZGVmaW5lZCBvciBndWFyZGVkIHRoZXJlLiBJcyB0aGlzIHRoZSBkcml2ZXImIzM5O3MgZ2VuZXJhbCBlbmFibGUvZGlzYWJsZSBzd2l0Y2g/IEEgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZT8gT3IgbWF5YmUgYSBkZXBlbmRlbmN5IG9uIGFub3RoZXIgbW9kdWxlIG9yIGtlcm5lbCBjb21wb25lbnQ/IEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIE9DVEVPTlRYMiBhcmNoaXRlY3R1cmUsIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBvcHRpb25zIHJlbGF0ZWQgdG8gTUFDIGFkZHJlc3NlcywgZmxvdyBjb250cm9sLCBvciBtYXliZSBldmVuIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBhcyB0aGUgS2NvbmZpZyB3b3VsZCBleHBvc2UgdGhlIHNldHRpbmdzIGZvciB0aGUgZHJpdmVyLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBrZXl3b3JkcyBsaWtlICYjMzQ7Q09ORklHX09DVEVPTlRYMl9FVEgsJiMzNDsgJiMzNDtzdXBwb3J0LCYjMzQ7IG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgbGlrZSAmIzM0O1JYX0NIRUNLU1VNX09GRkxPQUQmIzM0OyBvciAmIzM0O1RYX1JTU19FTkFCTEUmIzM0Oy4gSSYjMzk7bSByZWFkeSB0byBldmFsdWF0ZSB3aGV0aGVyIHRoZSBvcHRpb24mIzM5O3MgZGVmYXVsdCB2YWx1ZSBpcyBzZW5zaWJsZSwgaXRzIGhlbHAgdGV4dCBpcyBjbGVhciBlbm91Z2gsIGFuZCBpZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSB3ZWxsLWRlZmluZWQuIEkmIzM5O2xsIGFsc28gYmUgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG9wdGlvbiYjMzk7cyBwcmVzZW5jZSBvciBhYnNlbmNlIG9uIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFxuICAgOTpcdGNvbmZpZyBPQ1RFT05UWDJfQUZcbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgMTE6XHRcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuICAxMjpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDEzOlx0XHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuICAxNDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgUmVzb3VyY2UgVmlydHVhbGl6YXRpb25cbiAgMTg6XHRcdCAgVW5pdCYjMzk7cyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcbiAgMTk6XHRcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxuICAyMDpcdFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzcxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gSXQmIzM5O3MgY2xlYXJseSBhIFBDSSBoYXJkd2FyZSBpbnRlcmFjdGlvbiwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhlcmUgKmFueSogc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZT8gQmVjYXVzZSB0eXBpY2FsbHksIHdpdGggdGhlc2UgaGlnaGx5IHNwZWNpYWxpemVkIGRyaXZlcnMsIHRoZSBhbnN3ZXIgaXMgbm8uIEkga25vdyBTeXprYWxsZXIgdXN1YWxseSBmdXp6ZXMgUENJIGRldmljZXMgdmlhIHZQQ0ksIGluamVjdGluZyByYW5kb20gUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuIEJ1dCwgdGhlIGNydWNpYWwgcG9pbnQgaXMsIHRoYXQgcmVxdWlyZXMgdGhlIGRyaXZlciB0byBiZSBwcm9iZWQgaW4gdGhlIGZpcnN0IHBsYWNlLCBhbmQgdGhhdOKAmXMgYSBwb3RlbnRpYWwgYmxvY2tlci4KCkhvbGQgb24gYSBzZWNvbmQsIFN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIGZ1bmN0aW9ucyBsaWtlIGBzeXpfcGNpdmZgLCBvciBldmVuIGp1c3QgYnkgY3JlYXRpbmcgYSBmYWtlIFBDSSBkZXZpY2UuIFNvIGl0JiMzOTtzIG5vdCB0b3RhbGx5IG9mZiB0aGUgdGFibGUuCgpOb3csIHRoZSBjb3JlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBhY3R1YWxseSBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIG9yIGlmIGl0JiMzOTtzIGNvbmZpbmVkIHRvIHRoaXMgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uICh0aGluayBVU0IgZ2FkZ2V0LCBvciBtYWM4MDIxMV9od3NpbSksIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nIGluIHRoaXMgY29udGV4dC4KClRoaXMgaXMgYSBNYXJ2ZWxsIE9jdGVvblRYMiBkcml2ZXIuIEl0JiMzOTtzIGRlZGljYXRlZCBoYXJkd2FyZS4gVGhlcmUmIzM5O3Mgbm8gcmVhZGlseSBhdmFpbGFibGUgc29mdHdhcmUgZW11bGF0aW9uLCBsaWtlIHRoZXJlIGlzIGZvciB0aGluZ3MgbGlrZSBlMTAwMCBvciBydGw4MTM5LiBHaXZlbiB0aGF0LCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdGhlc2UgY29kZSBwYXRocyBhcmUgbGlrZWx5IHVudG91Y2hhYmxlIHVubGVzcyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FuIHNvbWVob3cgZ2V0IGEgaG9sZCBvZiBpdC4gVGhhdCBzYWlkLCBpdOKAmXMgc3RpbGwgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4KCkFoLCBidXQgU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLiBTbywgdGhlIGtleSBpcyB3aGV0aGVyIGl0JiMzOTtzIGNsYXNzaWZpZWQgYXMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OyBUaGUgcnVsZSBpcyBleHBsaWNpdDogY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoICplbXVsYXRlZCogaGFyZHdhcmUsIGFyZSBvdXQuCgpTaW5jZSB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIE9jdGVvblRYMiwgYW5kIGdpdmVuIHRoZSB3b3JkaW5nLCBpdCB3b3VsZCBiZSBkaWZmaWN1bHQgdG8gcmVhY2ggdGhpcyBjb2RlIGluIFFFTVUuCkkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIHRob3VnaC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIFFFTVUgZXZlbiAqc3VwcG9ydHMqIE9jdGVvblRYMi4gVGhhdCB3aWxsIHNldHRsZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtPQ1RFT05UWDImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMTYKCQkJCQkJCW91dHB1dDogOTIKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGZWFzaWJpbGl0eSBvZiBGdXp6aW5nIHRoaXMgQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXJlJiMzOTtzIGFueSBleHBsaWNpdCBhY2tub3dsZWRnZW1lbnQgb2YgT2N0ZW9uVFgyIHdpdGhpbiB0aGUgUUVNVSBkb2N1bWVudGF0aW9uIG9ubGluZS4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBmaXJzdCBzdGVwIOKAkyBpZiBRRU1VICpkaWQqIGVtdWxhdGUgaXQsIHRoYXQgd291bGQgc2lnbmlmaWNhbnRseSBjaGFuZ2UgdGhpbmdzLiBIb3dldmVyLCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBPY3Rlb25UWDIgUlZVIGFyY2hpdGVjdHVyZS4KClRoZXJlZm9yZSwgZ2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBzeXN0ZW0sIHRoaXMgc3BlY2lmaWMgYmxvY2sgb2YgY29kZSBpcyBpbmhlcmVudGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciwgY3JpdGljYWxseSwgUUVNVS4gSXQmIzM5O3MgdGllZCB0byBhIHZlcnkgc3BlY2lmaWMsIGhhcmR3YXJlLWxldmVsIGRlcGVuZGVuY3kuCgpDb25zZXF1ZW50bHksIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGEgYFdvcnRoRnV6emluZz1mYWxzZWAgdmFsdWUuIFRoZSBqdXN0aWZpY2F0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyLiBJdHMgZGVwZW5kZW5jeSBvbiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIG1lYW5zIGl0IHdpbGwgbmV2ZXIgYmUgZXhlcmNpc2VkIHdpdGhpbiBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjMzLjc2NDE0NDUwOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODg3NDkwNzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjMzLjc2NDE1MDcxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAxNDY4NTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOWRlZDc3NWMwMDc2NTIzNmMyMGEwOTA4NmQ4N2VhNDJkMjU1MWM3M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0MzozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXFxuaW5kZXggMmU5NGQ1MTA1MDE2YmYuLmY1ZmQ2MTM4YzM1MmZkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcXG5AQCAtNTE4LDYgKzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKVxcbit7XFxuK1xcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XFxuK1xcbitcXHRpZiAoIWlzX2xtYWNfdmFsaWQoY2d4LCBsbWFjX2lkKSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHQqcGtpbmQgPSBjZ3hfcmVhZChjZ3gsIGxtYWNfaWQsIGNneC1cXHUwMDNlbWFjX29wcy1cXHUwMDNlcnhpZF9tYXBfb2Zmc2V0KTtcXG4rXFx0KnBraW5kID0gKnBraW5kIFxcdTAwMjYgMHgzRjtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0YXRpYyB1OCBjZ3hfZ2V0X2xtYWNfdHlwZSh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXFxuaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcXG5AQCAtMTQxLDYgKzE0MSw3IEBAIGludCBjZ3hfZ2V0X2NneGlkKHZvaWQgKmNneGQpO1xcbiBpbnQgY2d4X2dldF9sbWFjX2NudCh2b2lkICpjZ3hkKTtcXG4gdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTtcXG4gaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKTtcXG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7XFxuIGludCBjZ3hfbG1hY19ldmhfcmVnaXN0ZXIoc3RydWN0IGNneF9ldmVudF9jYiAqY2IsIHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcXG4gaW50IGNneF9sbWFjX2V2aF91bnJlZ2lzdGVyKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcXG4gaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5pbmRleCA3ZjM1MDVhZTY4NjA0Mi4uOWQ1YjdiNTFiZGZhNTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxcbkBAIC0xMTE1LDYgKzExMTUsOCBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXFxuIFxcdFxcdFxcdCB1OCAqaW50ZiwgdTggKmVuYSk7XFxuIGludCBucGNfY29uZmlnX2NudHJfZGVmYXVsdF9lbnRyaWVzKHN0cnVjdCBydnUgKnJ2dSwgYm9vbCBlbmFibGUpO1xcbiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xcbitib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZCk7XFxuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xcbiBib29sIGlzX21hY19mZWF0dXJlX3N1cHBvcnRlZChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgaW50IGZlYXR1cmUpO1xcbiB1MzIgIHJ2dV9jZ3hfZ2V0X2ZpZm9sZW4oc3RydWN0IHJ2dSAqcnZ1KTtcXG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcXG5pbmRleCA0ZmYzOTM1ZWQzZmU4NC4uODdkMjE4ODlkYzQ5ZTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuQEAgLTEzNTUsMyArMTM1NSw4MiBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4gXFx0aWYgKG1hY19vcHMtXFx1MDAzZW1hY19yZXNldChjZ3hkLCBsbWFjLCAhaXNfdmYocGNpZnVuYykpKVxcbiBcXHRcXHRkZXZfZXJyKHJ2dS1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlc2V0IE1BQ1xcXFxuXFxcIik7XFxuIH1cXG4rXFxuKy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXFxuKyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuIFZGcyBtdXN0IG5vdCBwcm9ncmFtXFxuKyAqIE5QQ19UWF9ERUZfUEtJTkQgb24gTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcgaW4gdGhhdCBjYXNlOiB0aGUgUEYgb3duc1xcbisgKiBwYXJzZSBtb2RlIGFuZCBubyBzZXBhcmF0ZSBOUENfVFhfSElHSUdfUEtJTkQgaXMgaW5zdGFsbGVkIG9uIHRoZSBWRiBMRi5cXG4rICogVFgtcGFyc2UgY2FsbGVycyBza2lwIHRoZSB3cml0ZSB3aGVuIGRlbmllZDsgcnZ1X2xmX3Jlc2V0KCkgY2xlYXJzIGVhY2ggTEZcXG4rICogYmVmb3JlIGFsbG9jIHNvIHRoZSBuZXh0IHBlcm1pdHRlZCBvd25lciBwcm9ncmFtcyBOUENfVFhfREVGX1BLSU5ELlxcbisgKi9cXG4rYm9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4re1xcbitcXHRpbnQgcGYsIGVyciwgcnhwa2luZDtcXG4rXFx0dTggY2d4X2lkLCBsbWFjX2lkO1xcbitcXHR2b2lkICpjZ3hkO1xcbitcXG4rXFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYyk7XFxuK1xcbitcXHRpZiAoIShwY2lmdW5jIFxcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuK1xcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcXG4rXFx0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcXHUwMDI2cnhwa2luZCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHN3aXRjaCAocnhwa2luZCkge1xcbitcXHRjYXNlIE5QQ19SWF9ISUdJR19QS0lORDpcXG4rXFx0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKiBEbyBub3QgYWxsb3cgQ0dYLW1hcHBlZCBWRnMgdG8gb3ZlcndyaXRlIFBLSU5EIHdoZW4gc3BlY2lhbCBwYXJzZSBraW5kc1xcbisgKiAoSGlHaWcsIEVEU0EsIGV0Yy4pIGFyZSBpbiB1c2Ugb24gdGhlIHNoYXJlZCBMTUFDLlxcbisgKi9cXG4rYm9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpXFxuK3tcXG4rXFx0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XFxuK1xcdHU4IGNneF9pZCwgbG1hY19pZDtcXG4rXFx0c3RydWN0IGNneCAqY2d4ZDtcXG4rXFxuK1xcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXG4rXFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4rXFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdGlmICghaXNfdmYocGNpZnVuYykpXFxuK1xcdFxcdGdvdG8gc2V0O1xcbitcXG4rXFx0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcXHUwMDI2cnhwa2luZCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXG4rXFx0c3dpdGNoIChyeHBraW5kKSB7XFxuK1xcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxcbitcXHRjYXNlIE5QQ19SWF9FRFNBX1BLSU5EOlxcbitcXHRcXHRnb3RvIGVycjtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFxuK3NldDpcXG4rXFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK2VycjpcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xcbmluZGV4IDZhMGNlMjY2NTAzMWQ2Li45NjRiY2FhZTA5OGUyNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcXG5AQCAtMzYzLDggKzM2Myw4IEBAIHN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXFxuIFxcdFxcdHBmdmYtXFx1MDAzZXR4X2NoYW5fY250ID0gMTtcXG4gXFx0XFx0cnNwLVxcdTAwM2V0eF9saW5rID0gY2d4X2lkICogaHctXFx1MDAzZWxtYWNfcGVyX2NneCArIGxtYWNfaWQ7XFxuIFxcbi1cXHRcXHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XFxuLVxcdFxcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xcbitcXHRcXHRpZiAocnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCBwa2luZCkpXFxuK1xcdFxcdFxcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcXG4gXFx0XFx0dmYgPSAocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykgLSAxO1xcbkBAIC0xNTA1LDEzICsxNTA1LDE1IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IG5peF9sZl9hbGxvY19yZXEgKnJlcSxcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JzcCAqcnNwKVxcbiB7XFxuLVxcdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMDtcXG4rXFx0aW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwLCBwZjtcXG4gXFx0dTE2IGJjYXN0LCBtY2FzdCwgcHJvbWlzYywgdWNhc3Q7XFxuIFxcdHN0cnVjdCBydnVfaHdpbmZvICpodyA9IHJ2dS1cXHUwMDNlaHc7XFxuIFxcdHUxNiBwY2lmdW5jID0gcmVxLVxcdTAwM2VoZHIucGNpZnVuYztcXG4rXFx0dTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7XFxuIFxcdGJvb2wgcnVsZXNfY3JlYXRlZCA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgcnZ1X2Jsb2NrICpibG9jaztcXG4gXFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmO1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xcbiBcXHR1NjQgY2ZnLCBjdHhfY2ZnO1xcbiBcXHRpbnQgYmxrYWRkcjtcXG4gXFxuQEAgLTE2ODUsOCArMTY4NywyMCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbiBcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLVxcdTAwM2VyeF9jZmcpO1xcbiBcXG4gXFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cXG4rXFxuK1xcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbiBcXHRjZmcgPSBOUENfVFhfREVGX1BLSU5EO1xcbi1cXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTtcXG4rXFxuK1xcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcXG4rXFx0XFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbitcXHRcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcdFxcdG11dGV4X2xvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXFxuK1xcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSkge1xcbiBcXHRcXHRwZnZmLVxcdTAwM2V0eF9jaGFuX2Jhc2UgPSBSVlVfU1dJVENIX0xCS19DSEFOO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcXG5pbmRleCBjN2JjMGIzYTI5Yjk4NC4uMzg1NTRkNTExNjRlMTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXFxuQEAgLTE5LDYgKzE5LDcgQEBcXG4gI2luY2x1ZGUgXFxcImNuMjBrL25wYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicnZ1X25wYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiY24yMGsvcmVnLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJsbWFjX2NvbW1vbi5oXFxcIlxcbiBcXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEZcXHQzIC8qIEJyb2FkY2FzdCwgUHJvbWlzYyBhbmQgQWxsTXVsdGljYXN0ICovXFxuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX05JWExGXFx0MSAvKiBVY2FzdCBmb3IgTEZzICovXFxuQEAgLTQyMDAsMTAgKzQyMDEsMTEgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcXG4gXFxuIHtcXG4gXFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmID0gcnZ1X2dldF9wZnZmKHJ2dSwgcGNpZnVuYyk7XFxuLVxcdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcXG4gXFx0aW50IHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXHRpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7XFxuK1xcdHU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwO1xcbiBcXHR1NjQgcnhwa2luZCwgdHhwa2luZDtcXG4tXFx0dTggY2d4X2lkLCBsbWFjX2lkO1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xcbiBcXG4gXFx0LyogdXNlIGRlZmF1bHQgcGtpbmQgdG8gZGlzYWJsZSBlZHNhL2hpZ2lnICovXFxuIFxcdHJ4cGtpbmQgPSBydnVfbnBjX2dldF9wa2luZChydnUsIHBmKTtcXG5AQCAtNDIyNywxMiArNDIyOSw4IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXFxuIFxcdFxcdC8qIHJ4IHBraW5kIHNldCByZXEgdmFsaWQgb25seSBmb3IgY2d4IG1hcHBlZCBQRnMgKi9cXG4gXFx0XFx0aWYgKCFpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4tXFx0XFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbi1cXG4tXFx0XFx0cmMgPSBjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLFxcbi1cXHRcXHRcXHRcXHQgICByeHBraW5kKTtcXG4tXFx0XFx0aWYgKHJjKVxcbi1cXHRcXHRcXHRyZXR1cm4gcmM7XFxuK1xcdFxcdGlmICghcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCByeHBraW5kKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChkaXIgXFx1MDAyNiBQS0lORF9UWCkge1xcbkBAIC00MjQxLDggKzQyMzksMTkgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcXG4gXFx0XFx0aWYgKHJjKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmM7XFxuIFxcbi1cXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcXG4tXFx0XFx0XFx0ICAgIHR4cGtpbmQpO1xcbitcXHRcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XFxuK1xcdFxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2bG1hY19pZCk7XFxuK1xcdFxcdFxcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcXG4rXFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdFxcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcXG4rXFx0XFx0XFx0XFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICB0eHBraW5kKTtcXG4rXFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXFxuK1xcdFxcdFxcdFxcdCAgICB0eHBraW5kKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRwZnZmLVxcdTAwM2VpbnRmX21vZGUgPSBpbnRmX21vZGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjM0LjE2NjI3NjY3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI2NDg1MzUzMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWRlZDc3NWMwMDc2NTIzNmMyMGEwOTA4NmQ4N2VhNDJkMjU1MWM3M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA0OjQzOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuaW5kZXggMmU5NGQ1MTA1MDE2YmYuLmY1ZmQ2MTM4YzM1MmZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG5AQCAtNTE4LDYgKzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZClcbit7XG4rXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xuK1xuK1x0aWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0KnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtXHUwMDNlbWFjX29wcy1cdTAwM2VyeGlkX21hcF9vZmZzZXQpO1xuK1x0KnBraW5kID0gKnBraW5kIFx1MDAyNiAweDNGO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyB1OCBjZ3hfZ2V0X2xtYWNfdHlwZSh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZClcbiB7XG4gXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbmluZGV4IDkyY2NmMzQzZGZlMDRmLi44NDExYTc1ZGQ3MjNmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuQEAgLTE0MSw2ICsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTtcbiBpbnQgY2d4X2dldF9sbWFjX2NudCh2b2lkICpjZ3hkKTtcbiB2b2lkICpjZ3hfZ2V0X3BkYXRhKGludCBjZ3hfaWQpO1xuIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7XG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7XG4gaW50IGNneF9sbWFjX2V2aF9yZWdpc3RlcihzdHJ1Y3QgY2d4X2V2ZW50X2NiICpjYiwgdm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpO1xuIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XG4gaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuaW5kZXggN2YzNTA1YWU2ODYwNDIuLjlkNWI3YjUxYmRmYTU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5AQCAtMTExNSw2ICsxMTE1LDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCB1OCAqaW50ZiwgdTggKmVuYSk7XG4gaW50IG5wY19jb25maWdfY250cl9kZWZhdWx0X2VudHJpZXMoc3RydWN0IHJ2dSAqcnZ1LCBib29sIGVuYWJsZSk7XG4gYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcbitib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZCk7XG4rYm9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7XG4gYm9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKTtcbiB1MzIgIHJ2dV9jZ3hfZ2V0X2ZpZm9sZW4oc3RydWN0IHJ2dSAqcnZ1KTtcbiB2b2lkICpydnVfZmlyc3RfY2d4X3BkYXRhKHN0cnVjdCBydnUgKnJ2dSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG5pbmRleCA0ZmYzOTM1ZWQzZmU4NC4uODdkMjE4ODlkYzQ5ZTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuQEAgLTEzNTUsMyArMTM1NSw4MiBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbiBcdGlmIChtYWNfb3BzLVx1MDAzZW1hY19yZXNldChjZ3hkLCBsbWFjLCAhaXNfdmYocGNpZnVuYykpKVxuIFx0XHRkZXZfZXJyKHJ2dS1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIHJlc2V0IE1BQ1xcblwiKTtcbiB9XG4rXG4rLyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbisgKiAoSGlHaWcsIEVEU0EsIGV0Yy4pIGFyZSBpbiB1c2Ugb24gdGhlIHNoYXJlZCBMTUFDLiBWRnMgbXVzdCBub3QgcHJvZ3JhbVxuKyAqIE5QQ19UWF9ERUZfUEtJTkQgb24gTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcgaW4gdGhhdCBjYXNlOiB0aGUgUEYgb3duc1xuKyAqIHBhcnNlIG1vZGUgYW5kIG5vIHNlcGFyYXRlIE5QQ19UWF9ISUdJR19QS0lORCBpcyBpbnN0YWxsZWQgb24gdGhlIFZGIExGLlxuKyAqIFRYLXBhcnNlIGNhbGxlcnMgc2tpcCB0aGUgd3JpdGUgd2hlbiBkZW5pZWQ7IHJ2dV9sZl9yZXNldCgpIGNsZWFycyBlYWNoIExGXG4rICogYmVmb3JlIGFsbG9jIHNvIHRoZSBuZXh0IHBlcm1pdHRlZCBvd25lciBwcm9ncmFtcyBOUENfVFhfREVGX1BLSU5ELlxuKyAqL1xuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4re1xuK1x0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XG4rXHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XG4rXHR2b2lkICpjZ3hkO1xuK1xuK1x0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbitcbitcdGlmICghKHBjaWZ1bmMgXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuK1x0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuK1x0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcdTAwMjZyeHBraW5kKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHN3aXRjaCAocnhwa2luZCkge1xuK1x0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XG4rXHRjYXNlIE5QQ19SWF9FRFNBX1BLSU5EOlxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdH1cbit9XG4rXG4rLyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbisgKiAoSGlHaWcsIEVEU0EsIGV0Yy4pIGFyZSBpbiB1c2Ugb24gdGhlIHNoYXJlZCBMTUFDLlxuKyAqL1xuK2Jvb2wgcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHBraW5kKVxuK3tcbitcdGludCBwZiwgZXJyLCByeHBraW5kO1xuK1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuK1x0c3RydWN0IGNneCAqY2d4ZDtcbitcbitcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4rXG4rXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuK1x0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0aWYgKCFpc192ZihwY2lmdW5jKSlcbitcdFx0Z290byBzZXQ7XG4rXG4rXHRlcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsIFx1MDAyNnJ4cGtpbmQpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnI7XG4rXG4rXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcbitcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuK1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbitcdFx0Z290byBlcnI7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitzZXQ6XG4rXHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiB0cnVlO1xuK1xuK2VycjpcbitcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0cmV0dXJuIGZhbHNlO1xuK31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbmluZGV4IDZhMGNlMjY2NTAzMWQ2Li45NjRiY2FhZTA5OGUyNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5AQCAtMzYzLDggKzM2Myw4IEBAIHN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9jbnQgPSAxO1xuIFx0XHRyc3AtXHUwMDNldHhfbGluayA9IGNneF9pZCAqIGh3LVx1MDAzZWxtYWNfcGVyX2NneCArIGxtYWNfaWQ7XG4gXG4tXHRcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsIHBraW5kKTtcbi1cdFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XG4rXHRcdGlmIChydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChydnUsIHBjaWZ1bmMsIHBraW5kKSlcbitcdFx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5JWF9JTlRGX1RZUEVfTEJLOlxuIFx0XHR2ZiA9IChwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTtcbkBAIC0xNTA1LDEzICsxNTA1LDE1IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4gXHRcdFx0XHQgIHN0cnVjdCBuaXhfbGZfYWxsb2NfcmVxICpyZXEsXG4gXHRcdFx0XHQgIHN0cnVjdCBuaXhfbGZfYWxsb2NfcnNwICpyc3ApXG4ge1xuLVx0aW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwO1xuK1x0aW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwLCBwZjtcbiBcdHUxNiBiY2FzdCwgbWNhc3QsIHByb21pc2MsIHVjYXN0O1xuIFx0c3RydWN0IHJ2dV9od2luZm8gKmh3ID0gcnZ1LVx1MDAzZWh3O1xuIFx0dTE2IHBjaWZ1bmMgPSByZXEtXHUwMDNlaGRyLnBjaWZ1bmM7XG4rXHR1OCBjZ3hfaWQgPSAwLCBsbWFjX2lkID0gMDtcbiBcdGJvb2wgcnVsZXNfY3JlYXRlZCA9IGZhbHNlO1xuIFx0c3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmY7XG4rXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuIFx0dTY0IGNmZywgY3R4X2NmZztcbiBcdGludCBibGthZGRyO1xuIFxuQEAgLTE2ODUsOCArMTY4NywyMCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS1cdTAwM2VyeF9jZmcpO1xuIFxuIFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cbitcbitcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4gXHRjZmcgPSBOUENfVFhfREVGX1BLSU5EO1xuLVx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXG4rXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xuK1x0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4rXHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0XHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXG4rXHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0fSBlbHNlIHtcbitcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXHR9XG4gXG4gXHRpZiAoaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKSB7XG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbmluZGV4IGM3YmMwYjNhMjliOTg0Li4zODU1NGQ1MTE2NGUxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5AQCAtMTksNiArMTksNyBAQFxuICNpbmNsdWRlIFwiY24yMGsvbnBjLmhcIlxuICNpbmNsdWRlIFwicnZ1X25wYy5oXCJcbiAjaW5jbHVkZSBcImNuMjBrL3JlZy5oXCJcbisjaW5jbHVkZSBcImxtYWNfY29tbW9uLmhcIlxuIFxuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX1BGXHQzIC8qIEJyb2FkY2FzdCwgUHJvbWlzYyBhbmQgQWxsTXVsdGljYXN0ICovXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfTklYTEZcdDEgLyogVWNhc3QgZm9yIExGcyAqL1xuQEAgLTQyMDAsMTAgKzQyMDEsMTEgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcbiBcbiB7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTtcbi1cdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcbiBcdGludCBwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuK1x0aW50IGJsa2FkZHIsIG5peGxmLCByYywgaW50Zl9tb2RlO1xuK1x0dTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7XG4gXHR1NjQgcnhwa2luZCwgdHhwa2luZDtcbi1cdHU4IGNneF9pZCwgbG1hY19pZDtcbitcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXG4gXHQvKiB1c2UgZGVmYXVsdCBwa2luZCB0byBkaXNhYmxlIGVkc2EvaGlnaWcgKi9cbiBcdHJ4cGtpbmQgPSBydnVfbnBjX2dldF9wa2luZChydnUsIHBmKTtcbkBAIC00MjI3LDEyICs0MjI5LDggQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcbiBcdFx0LyogcnggcGtpbmQgc2V0IHJlcSB2YWxpZCBvbmx5IGZvciBjZ3ggbWFwcGVkIFBGcyAqL1xuIFx0XHRpZiAoIWlzX2NneF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXG4gXHRcdFx0cmV0dXJuIDA7XG4tXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi1cbi1cdFx0cmMgPSBjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLFxuLVx0XHRcdFx0ICAgcnhwa2luZCk7XG4tXHRcdGlmIChyYylcbi1cdFx0XHRyZXR1cm4gcmM7XG4rXHRcdGlmICghcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCByeHBraW5kKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiBcdGlmIChkaXIgXHUwMDI2IFBLSU5EX1RYKSB7XG5AQCAtNDI0MSw4ICs0MjM5LDE5IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXHRcdGlmIChyYylcbiBcdFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuLVx0XHRcdCAgICB0eHBraW5kKTtcbitcdFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcbitcdFx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCxcbitcdFx0XHRcdFx0ICAgIFx1MDAyNmxtYWNfaWQpO1xuK1x0XHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdFx0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRcdFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxuK1x0XHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXG4rXHRcdFx0XHRcdCAgICB0eHBraW5kKTtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbitcdFx0XHRcdCAgICB0eHBraW5kKTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0cGZ2Zi1cdTAwM2VpbnRmX21vZGUgPSBpbnRmX21vZGU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0MzozNC4xNjYyNzc2NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDA2NDA1NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFGIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyB0d2Vha2luZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFGIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgUmVzb3VyY2UgVmlydHVhbGl6YXRpb24gVW5pdC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBWaXJ0dWFsIEZ1bmN0aW9ucyAoVkZzKSBmcm9tIG1lc3Npbmcgd2l0aCB0aGUgUGFja2V0IEtpbmQgKFBLSU5EKSB3aGVuIGNlcnRhaW4gc3BlY2lhbCBwYXJzZSBraW5kcywgbGlrZSBIaUdpZyBvciBFRFNBLCBhcmUgYWN0aXZlIG9uIGEgc2hhcmVkIExNQUMuIFRoZXnigJl2ZSBhZGRlZCBgY2d4X2dldF9wa2luZGAgYW5kIG1vZGlmaWVkIGBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZGAgYW5kIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgIHRvIGFjaGlldmUgdGhpcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQ2FuIHRoaXMgZXZlbiBiZSB0ZXN0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCJcblxuVGhpcyBkcml2ZXIgaXMgbG9jYXRlZCBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCwgYW5kIGl0J3MgaGFyZHdhcmUtc3BlY2lmaWMgdG8gdGhlIE9jdGVvblRYMi4gTm93LCB0aGUgYmlnIHF1ZXN0aW9uIGlzLCBjYW4gd2UgcmVhbGlzdGljYWxseSBlbXVsYXRlIHRoaXMgaW4gUUVNVT8gTXkgZXhwZXJpZW5jZSBpcyB0aGF0IHN0YW5kYXJkIFFFTVUgb2Z0ZW4gZG9lc24ndCBkaXJlY3RseSBlbXVsYXRlIHRoZSBPY3Rlb25UWDIuIEknbSBnb2luZyB0byBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIG9yIGlmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBzdHJpY3RseSB0aWVkIHRvIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSdsbCBzdGFydCBieSB1c2luZyBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRoZSBLY29uZmlnIGZpbGVzIGZvciBhbnkgbWVudGlvbnMgb2YgYE9DVEVPTlRYMl9BRmAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgaWRlYSBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgY2FuIGV2ZW4gYmUgYnJvdWdodCB1cCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIwNCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjQwLjE3MjY4NjMxMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUxNjE1MDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk9DVEVPTlRYMl9BRlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTY9Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo5OmNvbmZpZyBPQ1RFT05UWDJfQUZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVxcdGJvb2wgXFxcIkRpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IGFmL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSArPSBuaWMvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT03PW9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgKz0gcnZ1X21ib3gub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgKz0gcnZ1X2FmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZS05LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0Mzo0Mi4wMjQzMTE3NjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU0OTAwODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIE9jdGVvblRYMiBOZXR3b3JrIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIHRoZSBzeXN0ZW0gaW5kaWNhdGVzIHRoZSBuZXR3b3JrIGRyaXZlciBpbiBxdWVzdGlvbiBpcyB0aGUgYE9DVEVPTlRYMl9BRmAgZHJpdmVyLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUga25vd24gZGVwZW5kZW5jaWVzOiB3ZSdyZSBkZWFsaW5nIHdpdGggYW4gQVJNNjQgYXJjaGl0ZWN0dXJlIGFuZCBhIFBDSSBidXMgaW1wbGVtZW50YXRpb24uIEdpdmVuIHRoYXQsIG15IG5leHQgc3RlcCBpcyB0byBoZWFkIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgc3BlY2lmaWNhbGx5IHRvIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoYXQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgb3IgcmVzdHJpY3Rpb25zIGluIGRldGFpbC4gTGV0J3MgZGVsdmUgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AgdG8gY29uZmlybSBhc3N1bXB0aW9ucyBhbmQgZ2FpbiBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIGludGVncmF0ZWQuIFRoaXMgaW5pdGlhbCBLY29uZmlnIGluc3BlY3Rpb24gd2lsbCBzZXQgdGhlIHN0YWdlIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMDAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0Mzo0NS4yNzkyMjAwMjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1MTU2MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9DVEVPTlRYMl9BRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9Nj1jb25maWcgT0NURU9OVFgyX01CT1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjQ1LjMzNTc0NTkzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDU3NzE5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIE1hcnZlbGwgT0NURU9OVFgyIEtjb25maWcgRmlsZSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA5LiBJJ20gYXNzdW1pbmcgd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgZnVuZGFtZW50YWwsIHByb2JhYmx5IGEgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbiwganVkZ2luZyBieSB0aGUgY2hvaWNlIG9mIGBLY29uZmlnYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgKnNjb3BlKiBvZiB3aGF0J3MgYmVpbmcgZGVmaW5lZCBvciBndWFyZGVkIHRoZXJlLiBJcyB0aGlzIHRoZSBkcml2ZXIncyBnZW5lcmFsIGVuYWJsZS9kaXNhYmxlIHN3aXRjaD8gQSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlPyBPciBtYXliZSBhIGRlcGVuZGVuY3kgb24gYW5vdGhlciBtb2R1bGUgb3Iga2VybmVsIGNvbXBvbmVudD8gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgT0NURU9OVFgyIGFyY2hpdGVjdHVyZSwgSSdtIGV4cGVjdGluZyB0byBzZWUgb3B0aW9ucyByZWxhdGVkIHRvIE1BQyBhZGRyZXNzZXMsIGZsb3cgY29udHJvbCwgb3IgbWF5YmUgZXZlbiBvZmZsb2FkIGNhcGFiaWxpdGllcywgYXMgdGhlIEtjb25maWcgd291bGQgZXhwb3NlIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGRyaXZlci4gSSdsbCBiZSBsb29raW5nIGZvciBrZXl3b3JkcyBsaWtlIFwiQ09ORklHX09DVEVPTlRYMl9FVEgsXCIgXCJzdXBwb3J0LFwiIG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgbGlrZSBcIlJYX0NIRUNLU1VNX09GRkxPQURcIiBvciBcIlRYX1JTU19FTkFCTEVcIi4gSSdtIHJlYWR5IHRvIGV2YWx1YXRlIHdoZXRoZXIgdGhlIG9wdGlvbidzIGRlZmF1bHQgdmFsdWUgaXMgc2Vuc2libGUsIGl0cyBoZWxwIHRleHQgaXMgY2xlYXIgZW5vdWdoLCBhbmQgaWYgdGhlIGRlcGVuZGVuY2llcyBhcmUgd2VsbC1kZWZpbmVkLiBJJ2xsIGFsc28gYmUgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG9wdGlvbidzIHByZXNlbmNlIG9yIGFic2VuY2Ugb24gdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcwOCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjQ4Ljk4MTUxOTk1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgT0NURU9OVFgyX0FGXFxuICAxMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDExOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMTI6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXFxuICAxODpcXHRcXHQgIFVuaXQncyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcXG4gIDE5OlxcdFxcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxcbiAgMjA6XFx0XFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDM6NDguOTgxNTgxMjUyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg5OTk4ODczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBJdCdzIGNsZWFybHkgYSBQQ0kgaGFyZHdhcmUgaW50ZXJhY3Rpb24sIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmU/IEJlY2F1c2UgdHlwaWNhbGx5LCB3aXRoIHRoZXNlIGhpZ2hseSBzcGVjaWFsaXplZCBkcml2ZXJzLCB0aGUgYW5zd2VyIGlzIG5vLiBJIGtub3cgU3l6a2FsbGVyIHVzdWFsbHkgZnV6emVzIFBDSSBkZXZpY2VzIHZpYSB2UENJLCBpbmplY3RpbmcgcmFuZG9tIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8gcmVhZHMvd3JpdGVzLiBCdXQsIHRoZSBjcnVjaWFsIHBvaW50IGlzLCB0aGF0IHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmUgcHJvYmVkIGluIHRoZSBmaXJzdCBwbGFjZSwgYW5kIHRoYXTigJlzIGEgcG90ZW50aWFsIGJsb2NrZXIuXG5cbkhvbGQgb24gYSBzZWNvbmQsIFN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIGZ1bmN0aW9ucyBsaWtlIGBzeXpfcGNpdmZgLCBvciBldmVuIGp1c3QgYnkgY3JlYXRpbmcgYSBmYWtlIFBDSSBkZXZpY2UuIFNvIGl0J3Mgbm90IHRvdGFsbHkgb2ZmIHRoZSB0YWJsZS5cblxuTm93LCB0aGUgY29yZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgcGF0Y2ggYWN0dWFsbHkgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBvciBpZiBpdCdzIGNvbmZpbmVkIHRvIHRoaXMgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uICh0aGluayBVU0IgZ2FkZ2V0LCBvciBtYWM4MDIxMV9od3NpbSksIGl0J3Mgbm90IHdvcnRoIGZ1enppbmcgaW4gdGhpcyBjb250ZXh0LlxuXG5UaGlzIGlzIGEgTWFydmVsbCBPY3Rlb25UWDIgZHJpdmVyLiBJdCdzIGRlZGljYXRlZCBoYXJkd2FyZS4gVGhlcmUncyBubyByZWFkaWx5IGF2YWlsYWJsZSBzb2Z0d2FyZSBlbXVsYXRpb24sIGxpa2UgdGhlcmUgaXMgZm9yIHRoaW5ncyBsaWtlIGUxMDAwIG9yIHJ0bDgxMzkuIEdpdmVuIHRoYXQsIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBsaWtlbHkgdW50b3VjaGFibGUgdW5sZXNzIFN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhbiBzb21laG93IGdldCBhIGhvbGQgb2YgaXQuIFRoYXQgc2FpZCwgaXTigJlzIHN0aWxsIGEgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuXG5cbkFoLCBidXQgU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLiBTbywgdGhlIGtleSBpcyB3aGV0aGVyIGl0J3MgY2xhc3NpZmllZCBhcyBcImltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiIFRoZSBydWxlIGlzIGV4cGxpY2l0OiBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIEdDRSBvciBRRU1VLCBldmVuIHdpdGggKmVtdWxhdGVkKiBoYXJkd2FyZSwgYXJlIG91dC5cblxuU2luY2UgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIE9jdGVvblRYMiwgYW5kIGdpdmVuIHRoZSB3b3JkaW5nLCBpdCB3b3VsZCBiZSBkaWZmaWN1bHQgdG8gcmVhY2ggdGhpcyBjb2RlIGluIFFFTVUuXG5JIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCB0aG91Z2guIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBRRU1VIGV2ZW4gKnN1cHBvcnRzKiBPY3Rlb25UWDIuIFRoYXQgd2lsbCBzZXR0bGUgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNzEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0Mzo1NS44ODE1NzIzM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MzgwMTczLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJPQ1RFT05UWDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiRG9jdW1lbnRhdGlvbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjU2LjEwOTk2MTE3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQxNjMzOTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmVhc2liaWxpdHkgb2YgRnV6emluZyB0aGlzIENvZGUqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUncyBhbnkgZXhwbGljaXQgYWNrbm93bGVkZ2VtZW50IG9mIE9jdGVvblRYMiB3aXRoaW4gdGhlIFFFTVUgZG9jdW1lbnRhdGlvbiBvbmxpbmUuIFRoYXQncyB1c3VhbGx5IGEgZ29vZCBmaXJzdCBzdGVwIOKAkyBpZiBRRU1VICpkaWQqIGVtdWxhdGUgaXQsIHRoYXQgd291bGQgc2lnbmlmaWNhbnRseSBjaGFuZ2UgdGhpbmdzLiBIb3dldmVyLCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIE9jdGVvblRYMiBSVlUgYXJjaGl0ZWN0dXJlLlxuXG5UaGVyZWZvcmUsIGdpdmVuIG15IGtub3dsZWRnZSBvZiB0aGUgc3lzdGVtLCB0aGlzIHNwZWNpZmljIGJsb2NrIG9mIGNvZGUgaXMgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSB3aXRoaW4gdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IsIGNyaXRpY2FsbHksIFFFTVUuIEl0J3MgdGllZCB0byBhIHZlcnkgc3BlY2lmaWMsIGhhcmR3YXJlLWxldmVsIGRlcGVuZGVuY3kuXG5cbkNvbnNlcXVlbnRseSwgSSdtIGdvaW5nIHRvIHJldHVybiBhIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHZhbHVlLiBUaGUganVzdGlmaWNhdGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZGVzaWduZWQgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMi4gSXRzIGRlcGVuZGVuY3kgb24gdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBtZWFucyBpdCB3aWxsIG5ldmVyIGJlIGV4ZXJjaXNlZCB3aXRoaW4gYW55IHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMTYsIk91dHB1dFRva2VucyI6OTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDQ6MDAuNjUxNTk3Mjg0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow94hv9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 04:30:42 +0000 UTC FinishedAt: 2026-07-23 04:44:02 +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+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDlkZWQ3NzVjMDA3NjUyMzZjMjBhMDkwODZkODdlYTQyZDI1NTFjNzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0MzozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG5pbmRleCAyZTk0ZDUxMDUwMTZiZi4uZjVmZDYxMzhjMzUyZmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbkBAIC01MTgsNiAmIzQzOzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xuJiM0MztcbiYjNDM7XHRpZiAoIWlzX2xtYWNfdmFsaWQoY2d4LCBsbWFjX2lkKSlcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcbiYjNDM7XHQqcGtpbmQgPSBjZ3hfcmVhZChjZ3gsIGxtYWNfaWQsIGNneC1cdTAwM2VtYWNfb3BzLVx1MDAzZXJ4aWRfbWFwX29mZnNldCk7XG4mIzQzO1x0KnBraW5kID0gKnBraW5kIFx1MDAyNiAweDNGO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB1OCBjZ3hfZ2V0X2xtYWNfdHlwZSh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZClcbiB7XG4gXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbmluZGV4IDkyY2NmMzQzZGZlMDRmLi44NDExYTc1ZGQ3MjNmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuQEAgLTE0MSw2ICYjNDM7MTQxLDcgQEAgaW50IGNneF9nZXRfY2d4aWQodm9pZCAqY2d4ZCk7XG4gaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7XG4gdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTtcbiBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpO1xuJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKTtcbiBpbnQgY2d4X2xtYWNfZXZoX3JlZ2lzdGVyKHN0cnVjdCBjZ3hfZXZlbnRfY2IgKmNiLCB2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XG4gaW50IGNneF9sbWFjX2V2aF91bnJlZ2lzdGVyKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcbiBpbnQgY2d4X2dldF90eF9zdGF0cyh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCwgaW50IGlkeCwgdTY0ICp0eF9zdGF0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5pbmRleCA3ZjM1MDVhZTY4NjA0Mi4uOWQ1YjdiNTFiZGZhNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbkBAIC0xMTE1LDYgJiM0MzsxMTE1LDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCB1OCAqaW50ZiwgdTggKmVuYSk7XG4gaW50IG5wY19jb25maWdfY250cl9kZWZhdWx0X2VudHJpZXMoc3RydWN0IHJ2dSAqcnZ1LCBib29sIGVuYWJsZSk7XG4gYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcbiYjNDM7Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpO1xuJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcbiBib29sIGlzX21hY19mZWF0dXJlX3N1cHBvcnRlZChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgaW50IGZlYXR1cmUpO1xuIHUzMiAgcnZ1X2NneF9nZXRfZmlmb2xlbihzdHJ1Y3QgcnZ1ICpydnUpO1xuIHZvaWQgKnJ2dV9maXJzdF9jZ3hfcGRhdGEoc3RydWN0IHJ2dSAqcnZ1KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbmluZGV4IDRmZjM5MzVlZDNmZTg0Li44N2QyMTg4OWRjNDllMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG5AQCAtMTM1NSwzICYjNDM7MTM1NSw4MiBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbiBcdGlmIChtYWNfb3BzLVx1MDAzZW1hY19yZXNldChjZ3hkLCBsbWFjLCAhaXNfdmYocGNpZnVuYykpKVxuIFx0XHRkZXZfZXJyKHJ2dS1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byByZXNldCBNQUNcXG5cJiMzNDspO1xuIH1cbiYjNDM7XG4mIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4mIzQzOyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuIFZGcyBtdXN0IG5vdCBwcm9ncmFtXG4mIzQzOyAqIE5QQ19UWF9ERUZfUEtJTkQgb24gTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcgaW4gdGhhdCBjYXNlOiB0aGUgUEYgb3duc1xuJiM0MzsgKiBwYXJzZSBtb2RlIGFuZCBubyBzZXBhcmF0ZSBOUENfVFhfSElHSUdfUEtJTkQgaXMgaW5zdGFsbGVkIG9uIHRoZSBWRiBMRi5cbiYjNDM7ICogVFgtcGFyc2UgY2FsbGVycyBza2lwIHRoZSB3cml0ZSB3aGVuIGRlbmllZDsgcnZ1X2xmX3Jlc2V0KCkgY2xlYXJzIGVhY2ggTEZcbiYjNDM7ICogYmVmb3JlIGFsbG9jIHNvIHRoZSBuZXh0IHBlcm1pdHRlZCBvd25lciBwcm9ncmFtcyBOUENfVFhfREVGX1BLSU5ELlxuJiM0MzsgKi9cbiYjNDM7Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbiYjNDM7e1xuJiM0MztcdGludCBwZiwgZXJyLCByeHBraW5kO1xuJiM0MztcdHU4IGNneF9pZCwgbG1hY19pZDtcbiYjNDM7XHR2b2lkICpjZ3hkO1xuJiM0MztcbiYjNDM7XHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuJiM0MztcbiYjNDM7XHRpZiAoIShwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbiYjNDM7XHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XG4mIzQzO1x0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcdTAwMjZyeHBraW5kKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJ4cGtpbmQpIHtcbiYjNDM7XHRjYXNlIE5QQ19SWF9ISUdJR19QS0lORDpcbiYjNDM7XHRjYXNlIE5QQ19SWF9FRFNBX1BLSU5EOlxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXG4mIzQzOyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuXG4mIzQzOyAqL1xuJiM0Mztib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZClcbiYjNDM7e1xuJiM0MztcdGludCBwZiwgZXJyLCByeHBraW5kO1xuJiM0MztcdHU4IGNneF9pZCwgbG1hY19pZDtcbiYjNDM7XHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuJiM0MztcbiYjNDM7XHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuJiM0MztcbiYjNDM7XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuJiM0MztcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuJiM0MztcdGlmICghaXNfdmYocGNpZnVuYykpXG4mIzQzO1x0XHRnb3RvIHNldDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcdTAwMjZyeHBraW5kKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0Z290byBlcnI7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAocnhwa2luZCkge1xuJiM0MztcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuJiM0MztcdGNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6XG4mIzQzO1x0XHRnb3RvIGVycjtcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7c2V0OlxuJiM0MztcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsIHBraW5kKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO2VycjpcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbmluZGV4IDZhMGNlMjY2NTAzMWQ2Li45NjRiY2FhZTA5OGUyNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5AQCAtMzYzLDggJiM0MzszNjMsOCBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fY250ID0gMTtcbiBcdFx0cnNwLVx1MDAzZXR4X2xpbmsgPSBjZ3hfaWQgKiBody1cdTAwM2VsbWFjX3Blcl9jZ3ggJiM0MzsgbG1hY19pZDtcbiBcbi1cdFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xuLVx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbiYjNDM7XHRcdGlmIChydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChydnUsIHBjaWZ1bmMsIHBraW5kKSlcbiYjNDM7XHRcdFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcbiBcdFx0dmYgPSAocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSAtIDE7XG5AQCAtMTUwNSwxMyAmIzQzOzE1MDUsMTUgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcbiBcdFx0XHRcdCAgc3RydWN0IG5peF9sZl9hbGxvY19yZXEgKnJlcSxcbiBcdFx0XHRcdCAgc3RydWN0IG5peF9sZl9hbGxvY19yc3AgKnJzcClcbiB7XG4tXHRpbnQgbml4bGYsIHFpbnRzLCBod2N0eF9zaXplLCBpbnRmLCByYyA9IDA7XG4mIzQzO1x0aW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwLCBwZjtcbiBcdHUxNiBiY2FzdCwgbWNhc3QsIHByb21pc2MsIHVjYXN0O1xuIFx0c3RydWN0IHJ2dV9od2luZm8gKmh3ID0gcnZ1LVx1MDAzZWh3O1xuIFx0dTE2IHBjaWZ1bmMgPSByZXEtXHUwMDNlaGRyLnBjaWZ1bmM7XG4mIzQzO1x0dTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7XG4gXHRib29sIHJ1bGVzX2NyZWF0ZWQgPSBmYWxzZTtcbiBcdHN0cnVjdCBydnVfYmxvY2sgKmJsb2NrO1xuIFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmO1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXHR1NjQgY2ZnLCBjdHhfY2ZnO1xuIFx0aW50IGJsa2FkZHI7XG4gXG5AQCAtMTY4NSw4ICYjNDM7MTY4NywyMCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS1cdTAwM2VyeF9jZmcpO1xuIFxuIFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cbiYjNDM7XG4mIzQzO1x0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbiBcdGNmZyA9IE5QQ19UWF9ERUZfUEtJTkQ7XG4tXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcbiYjNDM7XHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbiYjNDM7XHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcbiYjNDM7XHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKGlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSkge1xuIFx0XHRwZnZmLVx1MDAzZXR4X2NoYW5fYmFzZSA9IFJWVV9TV0lUQ0hfTEJLX0NIQU47XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5pbmRleCBjN2JjMGIzYTI5Yjk4NC4uMzg1NTRkNTExNjRlMTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuQEAgLTE5LDYgJiM0MzsxOSw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7Y24yMGsvbnBjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtydnVfbnBjLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtjbjIway9yZWcuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtsbWFjX2NvbW1vbi5oXCYjMzQ7XG4gXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEZcdDMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi9cbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRlx0MSAvKiBVY2FzdCBmb3IgTEZzICovXG5AQCAtNDIwMCwxMCAmIzQzOzQyMDEsMTEgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcbiBcbiB7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTtcbi1cdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcbiBcdGludCBwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuJiM0MztcdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcbiYjNDM7XHR1OCBjZ3hfaWQgPSAwLCBsbWFjX2lkID0gMDtcbiBcdHU2NCByeHBraW5kLCB0eHBraW5kO1xuLVx0dTggY2d4X2lkLCBsbWFjX2lkO1xuJiM0MztcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXG4gXHQvKiB1c2UgZGVmYXVsdCBwa2luZCB0byBkaXNhYmxlIGVkc2EvaGlnaWcgKi9cbiBcdHJ4cGtpbmQgPSBydnVfbnBjX2dldF9wa2luZChydnUsIHBmKTtcbkBAIC00MjI3LDEyICYjNDM7NDIyOSw4IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXHRcdC8qIHJ4IHBraW5kIHNldCByZXEgdmFsaWQgb25seSBmb3IgY2d4IG1hcHBlZCBQRnMgKi9cbiBcdFx0aWYgKCFpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxuIFx0XHRcdHJldHVybiAwO1xuLVx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4tXG4tXHRcdHJjID0gY2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCxcbi1cdFx0XHRcdCAgIHJ4cGtpbmQpO1xuLVx0XHRpZiAocmMpXG4tXHRcdFx0cmV0dXJuIHJjO1xuJiM0MztcdFx0aWYgKCFydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChydnUsIHBjaWZ1bmMsIHJ4cGtpbmQpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiBcdGlmIChkaXIgXHUwMDI2IFBLSU5EX1RYKSB7XG5AQCAtNDI0MSw4ICYjNDM7NDIzOSwxOSBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxuIFx0XHRpZiAocmMpXG4gXHRcdFx0cmV0dXJuIHJjO1xuIFxuLVx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbi1cdFx0XHQgICAgdHhwa2luZCk7XG4mIzQzO1x0XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xuJiM0MztcdFx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCxcbiYjNDM7XHRcdFx0XHRcdCAgICBcdTAwMjZsbWFjX2lkKTtcbiYjNDM7XHRcdFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuJiM0MztcdFx0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcbiYjNDM7XHRcdFx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbiYjNDM7XHRcdFx0XHRcdCAgICB0eHBraW5kKTtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbiYjNDM7XHRcdFx0XHQgICAgdHhwa2luZCk7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRwZnZmLVx1MDAzZWludGZfbW9kZSA9IGludGZfbW9kZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZGVkNzc1YzAwNzY1MjM2YzIwYTA5MDg2ZDg3ZWE0MmQyNTUxYzczCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMDQ6NDM6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jCmluZGV4IDJlOTRkNTEwNTAxNmJmLi5mNWZkNjEzOGMzNTJmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMKQEAgLTUxOCw2ICYjNDM7NTE4LDE4IEBAIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO2ludCBjZ3hfZ2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCAqcGtpbmQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkOwomIzQzOwomIzQzOwlpZiAoIWlzX2xtYWNfdmFsaWQoY2d4LCBsbWFjX2lkKSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwomIzQzOwkqcGtpbmQgPSBjZ3hfcmVhZChjZ3gsIGxtYWNfaWQsIGNneC0mZ3Q7bWFjX29wcy0mZ3Q7cnhpZF9tYXBfb2Zmc2V0KTsKJiM0MzsJKnBraW5kID0gKnBraW5kICZhbXA7IDB4M0Y7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1OCBjZ3hfZ2V0X2xtYWNfdHlwZSh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCkKIHsKIAlzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaAppbmRleCA5MmNjZjM0M2RmZTA0Zi4uODQxMWE3NWRkNzIzZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oCkBAIC0xNDEsNiAmIzQzOzE0MSw3IEBAIGludCBjZ3hfZ2V0X2NneGlkKHZvaWQgKmNneGQpOwogaW50IGNneF9nZXRfbG1hY19jbnQodm9pZCAqY2d4ZCk7CiB2b2lkICpjZ3hfZ2V0X3BkYXRhKGludCBjZ3hfaWQpOwogaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKTsKJiM0MztpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKTsKIGludCBjZ3hfbG1hY19ldmhfcmVnaXN0ZXIoc3RydWN0IGNneF9ldmVudF9jYiAqY2IsIHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTsKIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7CiBpbnQgY2d4X2dldF90eF9zdGF0cyh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCwgaW50IGlkeCwgdTY0ICp0eF9zdGF0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgKaW5kZXggN2YzNTA1YWU2ODYwNDIuLjlkNWI3YjUxYmRmYTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaApAQCAtMTExNSw2ICYjNDM7MTExNSw4IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwKIAkJCSB1OCAqaW50ZiwgdTggKmVuYSk7CiBpbnQgbnBjX2NvbmZpZ19jbnRyX2RlZmF1bHRfZW50cmllcyhzdHJ1Y3QgcnZ1ICpydnUsIGJvb2wgZW5hYmxlKTsKIGJvb2wgaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7CiYjNDM7Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpOwomIzQzO2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpOwogYm9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKTsKIHUzMiAgcnZ1X2NneF9nZXRfZmlmb2xlbihzdHJ1Y3QgcnZ1ICpydnUpOwogdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCmluZGV4IDRmZjM5MzVlZDNmZTg0Li44N2QyMTg4OWRjNDllMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwpAQCAtMTM1NSwzICYjNDM7MTM1NSw4MiBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYykKIAlpZiAobWFjX29wcy0mZ3Q7bWFjX3Jlc2V0KGNneGQsIGxtYWMsICFpc192ZihwY2lmdW5jKSkpCiAJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7RmFpbGVkIHRvIHJlc2V0IE1BQ1xuJiMzNDspOwogfQomIzQzOwomIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzCiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4gVkZzIG11c3Qgbm90IHByb2dyYW0KJiM0MzsgKiBOUENfVFhfREVGX1BLSU5EIG9uIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHIGluIHRoYXQgY2FzZTogdGhlIFBGIG93bnMKJiM0MzsgKiBwYXJzZSBtb2RlIGFuZCBubyBzZXBhcmF0ZSBOUENfVFhfSElHSUdfUEtJTkQgaXMgaW5zdGFsbGVkIG9uIHRoZSBWRiBMRi4KJiM0MzsgKiBUWC1wYXJzZSBjYWxsZXJzIHNraXAgdGhlIHdyaXRlIHdoZW4gZGVuaWVkOyBydnVfbGZfcmVzZXQoKSBjbGVhcnMgZWFjaCBMRgomIzQzOyAqIGJlZm9yZSBhbGxvYyBzbyB0aGUgbmV4dCBwZXJtaXR0ZWQgb3duZXIgcHJvZ3JhbXMgTlBDX1RYX0RFRl9QS0lORC4KJiM0MzsgKi8KJiM0Mztib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKQomIzQzO3sKJiM0MzsJaW50IHBmLCBlcnIsIHJ4cGtpbmQ7CiYjNDM7CXU4IGNneF9pZCwgbG1hY19pZDsKJiM0MzsJdm9pZCAqY2d4ZDsKJiM0MzsKJiM0MzsJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CiYjNDM7CWlmICghKHBjaWZ1bmMgJmFtcDsgUlZVX1BGVkZfRlVOQ19NQVNLKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwgJmFtcDtsbWFjX2lkKTsKJiM0MzsJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwllcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsICZhbXA7cnhwa2luZCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXN3aXRjaCAocnhwa2luZCkgewomIzQzOwljYXNlIE5QQ19SWF9ISUdJR19QS0lORDoKJiM0MzsJY2FzZSBOUENfUlhfRURTQV9QS0lORDoKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzCiYjNDM7ICogKEhpR2lnLCBFRFNBLCBldGMuKSBhcmUgaW4gdXNlIG9uIHRoZSBzaGFyZWQgTE1BQy4KJiM0MzsgKi8KJiM0Mztib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZCkKJiM0Mzt7CiYjNDM7CWludCBwZiwgZXJyLCByeHBraW5kOwomIzQzOwl1OCBjZ3hfaWQsIGxtYWNfaWQ7CiYjNDM7CXN0cnVjdCBjZ3ggKmNneGQ7CiYjNDM7CiYjNDM7CXBmID0gcnZ1X2dldF9wZihydnUtJmd0O3BkZXYsIHBjaWZ1bmMpOwomIzQzOwomIzQzOwlpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcnZ1X2dldF9jZ3hfbG1hY19pZChydnUtJmd0O3BmMmNneGxtYWNfbWFwW3BmXSwgJmFtcDtjZ3hfaWQsICZhbXA7bG1hY19pZCk7CiYjNDM7CWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwlpZiAoIWlzX3ZmKHBjaWZ1bmMpKQomIzQzOwkJZ290byBzZXQ7CiYjNDM7CiYjNDM7CWVyciA9IGNneF9nZXRfcGtpbmQoY2d4ZCwgbG1hY19pZCwgJmFtcDtyeHBraW5kKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gZXJyOwomIzQzOwomIzQzOwlzd2l0Y2ggKHJ4cGtpbmQpIHsKJiM0MzsJY2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6CiYjNDM7CWNhc2UgTlBDX1JYX0VEU0FfUEtJTkQ6CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiYjNDM7c2V0OgomIzQzOwljZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MztlcnI6CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCmluZGV4IDZhMGNlMjY2NTAzMWQ2Li45NjRiY2FhZTA5OGUyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwpAQCAtMzYzLDggJiM0MzszNjMsOCBAQCBzdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLAogCQlwZnZmLSZndDt0eF9jaGFuX2NudCA9IDE7CiAJCXJzcC0mZ3Q7dHhfbGluayA9IGNneF9pZCAqIGh3LSZndDtsbWFjX3Blcl9jZ3ggJiM0MzsgbG1hY19pZDsKIAotCQljZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7Ci0JCXJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpOwomIzQzOwkJaWYgKHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHJ2dSwgcGNpZnVuYywgcGtpbmQpKQomIzQzOwkJCXJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpOwogCQlicmVhazsKIAljYXNlIE5JWF9JTlRGX1RZUEVfTEJLOgogCQl2ZiA9IChwY2lmdW5jICZhbXA7IFJWVV9QRlZGX0ZVTkNfTUFTSykgLSAxOwpAQCAtMTUwNSwxMyAmIzQzOzE1MDUsMTUgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSwKIAkJCQkgIHN0cnVjdCBuaXhfbGZfYWxsb2NfcmVxICpyZXEsCiAJCQkJICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JzcCAqcnNwKQogewotCWludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMDsKJiM0MzsJaW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwLCBwZjsKIAl1MTYgYmNhc3QsIG1jYXN0LCBwcm9taXNjLCB1Y2FzdDsKIAlzdHJ1Y3QgcnZ1X2h3aW5mbyAqaHcgPSBydnUtJmd0O2h3OwogCXUxNiBwY2lmdW5jID0gcmVxLSZndDtoZHIucGNpZnVuYzsKJiM0MzsJdTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7CiAJYm9vbCBydWxlc19jcmVhdGVkID0gZmFsc2U7CiAJc3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7CiAJc3RydWN0IHJ2dV9wZnZmICpwZnZmOwomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3hkOwogCXU2NCBjZmcsIGN0eF9jZmc7CiAJaW50IGJsa2FkZHI7CiAKQEAgLTE2ODUsOCAmIzQzOzE2ODcsMjAgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSwKIAlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLSZndDtyeF9jZmcpOwogCiAJLyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi8KJiM0MzsKJiM0MzsJcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiAJY2ZnID0gTlBDX1RYX0RFRl9QS0lORDsKLQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTsKJiM0MzsKJiM0MzsJaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSAmYW1wOyZhbXA7IGlzX3ZmKHBjaWZ1bmMpKSB7CiYjNDM7CQlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwgJmFtcDtsbWFjX2lkKTsKJiM0MzsJCWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJCWlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSkKJiM0MzsJCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7CiYjNDM7CX0KIAogCWlmIChpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpIHsKIAkJcGZ2Zi0mZ3Q7dHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYwppbmRleCBjN2JjMGIzYTI5Yjk4NC4uMzg1NTRkNTExNjRlMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMKQEAgLTE5LDYgJiM0MzsxOSw3IEBACiAjaW5jbHVkZSAmIzM0O2NuMjBrL25wYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cnZ1X25wYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y24yMGsvcmVnLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7bG1hY19jb21tb24uaCYjMzQ7CiAKICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX1BGCTMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi8KICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX05JWExGCTEgLyogVWNhc3QgZm9yIExGcyAqLwpAQCAtNDIwMCwxMCAmIzQzOzQyMDEsMTEgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpciwKIAogewogCXN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpOwotCWludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTsKIAlpbnQgcGYgPSBydnVfZ2V0X3BmKHJ2dS0mZ3Q7cGRldiwgcGNpZnVuYyk7CiYjNDM7CWludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTsKJiM0MzsJdTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7CiAJdTY0IHJ4cGtpbmQsIHR4cGtpbmQ7Ci0JdTggY2d4X2lkLCBsbWFjX2lkOwomIzQzOwlzdHJ1Y3QgY2d4ICpjZ3hkOwogCiAJLyogdXNlIGRlZmF1bHQgcGtpbmQgdG8gZGlzYWJsZSBlZHNhL2hpZ2lnICovCiAJcnhwa2luZCA9IHJ2dV9ucGNfZ2V0X3BraW5kKHJ2dSwgcGYpOwpAQCAtNDIyNywxMiAmIzQzOzQyMjksOCBAQCBpbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLAogCQkvKiByeCBwa2luZCBzZXQgcmVxIHZhbGlkIG9ubHkgZm9yIGNneCBtYXBwZWQgUEZzICovCiAJCWlmICghaXNfY2d4X2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSkKIAkJCXJldHVybiAwOwotCQlydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS0mZ3Q7cGYyY2d4bG1hY19tYXBbcGZdLCAmYW1wO2NneF9pZCwgJmFtcDtsbWFjX2lkKTsKLQotCQlyYyA9IGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsCi0JCQkJICAgcnhwa2luZCk7Ci0JCWlmIChyYykKLQkJCXJldHVybiByYzsKJiM0MzsJCWlmICghcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCByeHBraW5kKSkKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAoZGlyICZhbXA7IFBLSU5EX1RYKSB7CkBAIC00MjQxLDggJiM0Mzs0MjM5LDE5IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsCiAJCWlmIChyYykKIAkJCXJldHVybiByYzsKIAotCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwKLQkJCSAgICB0eHBraW5kKTsKJiM0MzsJCWlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgJmFtcDsmYW1wOyBpc192ZihwY2lmdW5jKSkgewomIzQzOwkJCXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLAomIzQzOwkJCQkJICAgICZhbXA7bG1hY19pZCk7CiYjNDM7CQkJY2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpOwomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtjZ3hkLSZndDtsb2NrKTsKJiM0MzsJCQlpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpCiYjNDM7CQkJCXJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLAomIzQzOwkJCQkJICAgIHR4cGtpbmQpOwomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO2NneGQtJmd0O2xvY2spOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwKJiM0MzsJCQkJICAgIHR4cGtpbmQpOwomIzQzOwkJfQogCX0KIAogCXBmdmYtJmd0O2ludGZfbW9kZSA9IGludGZfbW9kZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIwNAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBRiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyB0d2Vha2luZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFGIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgUmVzb3VyY2UgVmlydHVhbGl6YXRpb24gVW5pdC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBWaXJ0dWFsIEZ1bmN0aW9ucyAoVkZzKSBmcm9tIG1lc3Npbmcgd2l0aCB0aGUgUGFja2V0IEtpbmQgKFBLSU5EKSB3aGVuIGNlcnRhaW4gc3BlY2lhbCBwYXJzZSBraW5kcywgbGlrZSBIaUdpZyBvciBFRFNBLCBhcmUgYWN0aXZlIG9uIGEgc2hhcmVkIExNQUMuIFRoZXnigJl2ZSBhZGRlZCBgY2d4X2dldF9wa2luZGAgYW5kIG1vZGlmaWVkIGBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZGAgYW5kIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgIHRvIGFjaGlldmUgdGhpcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHRoaXMgZXZlbiBiZSB0ZXN0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsKClRoaXMgZHJpdmVyIGlzIGxvY2F0ZWQgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AsIGFuZCBpdCYjMzk7cyBoYXJkd2FyZS1zcGVjaWZpYyB0byB0aGUgT2N0ZW9uVFgyLiBOb3csIHRoZSBiaWcgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFsaXN0aWNhbGx5IGVtdWxhdGUgdGhpcyBpbiBRRU1VPyBNeSBleHBlcmllbmNlIGlzIHRoYXQgc3RhbmRhcmQgUUVNVSBvZnRlbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBlbXVsYXRlIHRoZSBPY3Rlb25UWDIuIEkmIzM5O20gZ29pbmcgdG8gbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIG9yIGlmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBzdHJpY3RseSB0aWVkIHRvIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSYjMzk7bGwgc3RhcnQgYnkgdXNpbmcgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYW55IG1lbnRpb25zIG9mIGBPQ1RFT05UWDJfQUZgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIGlkZWEgaWYgdGhpcyBmdW5jdGlvbmFsaXR5IGNhbiBldmVuIGJlIGJyb3VnaHQgdXAgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7T0NURU9OVFgyX0FGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9Nj1jb25maWcgT0NURU9OVFgyX01CT1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTIyPWNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0yMy1cdGJvb2wgXCYjMzQ7RGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0yNS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSAmIzQzOz0gYWYvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICYjNDM7PSBhZi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgJiM0Mzs9IG5pYy9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT03PW9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgJiM0Mzs9IHJ2dV9tYm94Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgJiM0Mzs9IHJ2dV9hZi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZS05LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMDAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIE9jdGVvblRYMiBOZXR3b3JrIERyaXZlcioqCgpBbHJpZ2h0LCBzbyB0aGUgc3lzdGVtIGluZGljYXRlcyB0aGUgbmV0d29yayBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgdGhlIGBPQ1RFT05UWDJfQUZgIGRyaXZlci4gSW1tZWRpYXRlbHksIG15IG1pbmQganVtcHMgdG8gdGhlIGtub3duIGRlcGVuZGVuY2llczogd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhbiBBUk02NCBhcmNoaXRlY3R1cmUgYW5kIGEgUENJIGJ1cyBpbXBsZW1lbnRhdGlvbi4gR2l2ZW4gdGhhdCwgbXkgbmV4dCBzdGVwIGlzIHRvIGhlYWQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlLCBzcGVjaWZpY2FsbHkgdG8gdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcyBvciByZXN0cmljdGlvbnMgaW4gZGV0YWlsLiBMZXQmIzM5O3MgZGVsdmUgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AgdG8gY29uZmlybSBhc3N1bXB0aW9ucyBhbmQgZ2FpbiBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIGludGVncmF0ZWQuIFRoaXMgaW5pdGlhbCBLY29uZmlnIGluc3BlY3Rpb24gd2lsbCBzZXQgdGhlIHN0YWdlIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE9DVEVPTlRYMl9BRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz02PWNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIE9DVEVPTlRYMiBLY29uZmlnIEZpbGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA5LiBJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWV0aGluZyBmdW5kYW1lbnRhbCwgcHJvYmFibHkgYSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBqdWRnaW5nIGJ5IHRoZSBjaG9pY2Ugb2YgYEtjb25maWdgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSAqc2NvcGUqIG9mIHdoYXQmIzM5O3MgYmVpbmcgZGVmaW5lZCBvciBndWFyZGVkIHRoZXJlLiBJcyB0aGlzIHRoZSBkcml2ZXImIzM5O3MgZ2VuZXJhbCBlbmFibGUvZGlzYWJsZSBzd2l0Y2g/IEEgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZT8gT3IgbWF5YmUgYSBkZXBlbmRlbmN5IG9uIGFub3RoZXIgbW9kdWxlIG9yIGtlcm5lbCBjb21wb25lbnQ/IEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIE9DVEVPTlRYMiBhcmNoaXRlY3R1cmUsIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBvcHRpb25zIHJlbGF0ZWQgdG8gTUFDIGFkZHJlc3NlcywgZmxvdyBjb250cm9sLCBvciBtYXliZSBldmVuIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBhcyB0aGUgS2NvbmZpZyB3b3VsZCBleHBvc2UgdGhlIHNldHRpbmdzIGZvciB0aGUgZHJpdmVyLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBrZXl3b3JkcyBsaWtlICYjMzQ7Q09ORklHX09DVEVPTlRYMl9FVEgsJiMzNDsgJiMzNDtzdXBwb3J0LCYjMzQ7IG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgbGlrZSAmIzM0O1JYX0NIRUNLU1VNX09GRkxPQUQmIzM0OyBvciAmIzM0O1RYX1JTU19FTkFCTEUmIzM0Oy4gSSYjMzk7bSByZWFkeSB0byBldmFsdWF0ZSB3aGV0aGVyIHRoZSBvcHRpb24mIzM5O3MgZGVmYXVsdCB2YWx1ZSBpcyBzZW5zaWJsZSwgaXRzIGhlbHAgdGV4dCBpcyBjbGVhciBlbm91Z2gsIGFuZCBpZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSB3ZWxsLWRlZmluZWQuIEkmIzM5O2xsIGFsc28gYmUgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG9wdGlvbiYjMzk7cyBwcmVzZW5jZSBvciBhYnNlbmNlIG9uIHRoZSBvdmVyYWxsIG5ldHdvcmsgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFxuICAgOTpcdGNvbmZpZyBPQ1RFT05UWDJfQUZcbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgMTE6XHRcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuICAxMjpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDEzOlx0XHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuICAxNDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgUmVzb3VyY2UgVmlydHVhbGl6YXRpb25cbiAgMTg6XHRcdCAgVW5pdCYjMzk7cyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcbiAgMTk6XHRcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxuICAyMDpcdFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzcxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gSXQmIzM5O3MgY2xlYXJseSBhIFBDSSBoYXJkd2FyZSBpbnRlcmFjdGlvbiwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhlcmUgKmFueSogc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZT8gQmVjYXVzZSB0eXBpY2FsbHksIHdpdGggdGhlc2UgaGlnaGx5IHNwZWNpYWxpemVkIGRyaXZlcnMsIHRoZSBhbnN3ZXIgaXMgbm8uIEkga25vdyBTeXprYWxsZXIgdXN1YWxseSBmdXp6ZXMgUENJIGRldmljZXMgdmlhIHZQQ0ksIGluamVjdGluZyByYW5kb20gUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuIEJ1dCwgdGhlIGNydWNpYWwgcG9pbnQgaXMsIHRoYXQgcmVxdWlyZXMgdGhlIGRyaXZlciB0byBiZSBwcm9iZWQgaW4gdGhlIGZpcnN0IHBsYWNlLCBhbmQgdGhhdOKAmXMgYSBwb3RlbnRpYWwgYmxvY2tlci4KCkhvbGQgb24gYSBzZWNvbmQsIFN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIGZ1bmN0aW9ucyBsaWtlIGBzeXpfcGNpdmZgLCBvciBldmVuIGp1c3QgYnkgY3JlYXRpbmcgYSBmYWtlIFBDSSBkZXZpY2UuIFNvIGl0JiMzOTtzIG5vdCB0b3RhbGx5IG9mZiB0aGUgdGFibGUuCgpOb3csIHRoZSBjb3JlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBhY3R1YWxseSBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIG9yIGlmIGl0JiMzOTtzIGNvbmZpbmVkIHRvIHRoaXMgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uICh0aGluayBVU0IgZ2FkZ2V0LCBvciBtYWM4MDIxMV9od3NpbSksIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nIGluIHRoaXMgY29udGV4dC4KClRoaXMgaXMgYSBNYXJ2ZWxsIE9jdGVvblRYMiBkcml2ZXIuIEl0JiMzOTtzIGRlZGljYXRlZCBoYXJkd2FyZS4gVGhlcmUmIzM5O3Mgbm8gcmVhZGlseSBhdmFpbGFibGUgc29mdHdhcmUgZW11bGF0aW9uLCBsaWtlIHRoZXJlIGlzIGZvciB0aGluZ3MgbGlrZSBlMTAwMCBvciBydGw4MTM5LiBHaXZlbiB0aGF0LCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdGhlc2UgY29kZSBwYXRocyBhcmUgbGlrZWx5IHVudG91Y2hhYmxlIHVubGVzcyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FuIHNvbWVob3cgZ2V0IGEgaG9sZCBvZiBpdC4gVGhhdCBzYWlkLCBpdOKAmXMgc3RpbGwgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4KCkFoLCBidXQgU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLiBTbywgdGhlIGtleSBpcyB3aGV0aGVyIGl0JiMzOTtzIGNsYXNzaWZpZWQgYXMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OyBUaGUgcnVsZSBpcyBleHBsaWNpdDogY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoICplbXVsYXRlZCogaGFyZHdhcmUsIGFyZSBvdXQuCgpTaW5jZSB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIE9jdGVvblRYMiwgYW5kIGdpdmVuIHRoZSB3b3JkaW5nLCBpdCB3b3VsZCBiZSBkaWZmaWN1bHQgdG8gcmVhY2ggdGhpcyBjb2RlIGluIFFFTVUuCkkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIHRob3VnaC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIFFFTVUgZXZlbiAqc3VwcG9ydHMqIE9jdGVvblRYMi4gVGhhdCB3aWxsIHNldHRsZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtPQ1RFT05UWDImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMTYKCQkJCQkJCW91dHB1dDogOTIKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGZWFzaWJpbGl0eSBvZiBGdXp6aW5nIHRoaXMgQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXJlJiMzOTtzIGFueSBleHBsaWNpdCBhY2tub3dsZWRnZW1lbnQgb2YgT2N0ZW9uVFgyIHdpdGhpbiB0aGUgUUVNVSBkb2N1bWVudGF0aW9uIG9ubGluZS4gVGhhdCYjMzk7cyB1c3VhbGx5IGEgZ29vZCBmaXJzdCBzdGVwIOKAkyBpZiBRRU1VICpkaWQqIGVtdWxhdGUgaXQsIHRoYXQgd291bGQgc2lnbmlmaWNhbnRseSBjaGFuZ2UgdGhpbmdzLiBIb3dldmVyLCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBPY3Rlb25UWDIgUlZVIGFyY2hpdGVjdHVyZS4KClRoZXJlZm9yZSwgZ2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBzeXN0ZW0sIHRoaXMgc3BlY2lmaWMgYmxvY2sgb2YgY29kZSBpcyBpbmhlcmVudGx5IHVucmVhY2hhYmxlIHdpdGhpbiB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciwgY3JpdGljYWxseSwgUUVNVS4gSXQmIzM5O3MgdGllZCB0byBhIHZlcnkgc3BlY2lmaWMsIGhhcmR3YXJlLWxldmVsIGRlcGVuZGVuY3kuCgpDb25zZXF1ZW50bHksIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGEgYFdvcnRoRnV6emluZz1mYWxzZWAgdmFsdWUuIFRoZSBqdXN0aWZpY2F0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBkZXNpZ25lZCBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyLiBJdHMgZGVwZW5kZW5jeSBvbiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIG1lYW5zIGl0IHdpbGwgbmV2ZXIgYmUgZXhlcmNpc2VkIHdpdGhpbiBhbnkgc3RhbmRhcmQgdmlydHVhbGl6ZWQgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjMzLjc2NDE0NDUwOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODg3NDkwNzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjMzLjc2NDE1MDcxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAxNDY4NTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOWRlZDc3NWMwMDc2NTIzNmMyMGEwOTA4NmQ4N2VhNDJkMjU1MWM3M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0MzozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXFxuaW5kZXggMmU5NGQ1MTA1MDE2YmYuLmY1ZmQ2MTM4YzM1MmZkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcXG5AQCAtNTE4LDYgKzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgY2d4X2dldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgKnBraW5kKVxcbit7XFxuK1xcdHN0cnVjdCBjZ3ggKmNneCA9IGNneGQ7XFxuK1xcbitcXHRpZiAoIWlzX2xtYWNfdmFsaWQoY2d4LCBsbWFjX2lkKSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuK1xcbitcXHQqcGtpbmQgPSBjZ3hfcmVhZChjZ3gsIGxtYWNfaWQsIGNneC1cXHUwMDNlbWFjX29wcy1cXHUwMDNlcnhpZF9tYXBfb2Zmc2V0KTtcXG4rXFx0KnBraW5kID0gKnBraW5kIFxcdTAwMjYgMHgzRjtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIHN0YXRpYyB1OCBjZ3hfZ2V0X2xtYWNfdHlwZSh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZClcXG4ge1xcbiBcXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXFxuaW5kZXggOTJjY2YzNDNkZmUwNGYuLjg0MTFhNzVkZDcyM2Y5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcXG5AQCAtMTQxLDYgKzE0MSw3IEBAIGludCBjZ3hfZ2V0X2NneGlkKHZvaWQgKmNneGQpO1xcbiBpbnQgY2d4X2dldF9sbWFjX2NudCh2b2lkICpjZ3hkKTtcXG4gdm9pZCAqY2d4X2dldF9wZGF0YShpbnQgY2d4X2lkKTtcXG4gaW50IGNneF9zZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50IHBraW5kKTtcXG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7XFxuIGludCBjZ3hfbG1hY19ldmhfcmVnaXN0ZXIoc3RydWN0IGNneF9ldmVudF9jYiAqY2IsIHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcXG4gaW50IGNneF9sbWFjX2V2aF91bnJlZ2lzdGVyKHZvaWQgKmNneGQsIGludCBsbWFjX2lkKTtcXG4gaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5pbmRleCA3ZjM1MDVhZTY4NjA0Mi4uOWQ1YjdiNTFiZGZhNTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxcbkBAIC0xMTE1LDYgKzExMTUsOCBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXFxuIFxcdFxcdFxcdCB1OCAqaW50ZiwgdTggKmVuYSk7XFxuIGludCBucGNfY29uZmlnX2NudHJfZGVmYXVsdF9lbnRyaWVzKHN0cnVjdCBydnUgKnJ2dSwgYm9vbCBlbmFibGUpO1xcbiBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xcbitib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZCk7XFxuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpO1xcbiBib29sIGlzX21hY19mZWF0dXJlX3N1cHBvcnRlZChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgaW50IGZlYXR1cmUpO1xcbiB1MzIgIHJ2dV9jZ3hfZ2V0X2ZpZm9sZW4oc3RydWN0IHJ2dSAqcnZ1KTtcXG4gdm9pZCAqcnZ1X2ZpcnN0X2NneF9wZGF0YShzdHJ1Y3QgcnZ1ICpydnUpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcXG5pbmRleCA0ZmYzOTM1ZWQzZmU4NC4uODdkMjE4ODlkYzQ5ZTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuQEAgLTEzNTUsMyArMTM1NSw4MiBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4gXFx0aWYgKG1hY19vcHMtXFx1MDAzZW1hY19yZXNldChjZ3hkLCBsbWFjLCAhaXNfdmYocGNpZnVuYykpKVxcbiBcXHRcXHRkZXZfZXJyKHJ2dS1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlc2V0IE1BQ1xcXFxuXFxcIik7XFxuIH1cXG4rXFxuKy8qIERvIG5vdCBhbGxvdyBDR1gtbWFwcGVkIFZGcyB0byBvdmVyd3JpdGUgUEtJTkQgd2hlbiBzcGVjaWFsIHBhcnNlIGtpbmRzXFxuKyAqIChIaUdpZywgRURTQSwgZXRjLikgYXJlIGluIHVzZSBvbiB0aGUgc2hhcmVkIExNQUMuIFZGcyBtdXN0IG5vdCBwcm9ncmFtXFxuKyAqIE5QQ19UWF9ERUZfUEtJTkQgb24gTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcgaW4gdGhhdCBjYXNlOiB0aGUgUEYgb3duc1xcbisgKiBwYXJzZSBtb2RlIGFuZCBubyBzZXBhcmF0ZSBOUENfVFhfSElHSUdfUEtJTkQgaXMgaW5zdGFsbGVkIG9uIHRoZSBWRiBMRi5cXG4rICogVFgtcGFyc2UgY2FsbGVycyBza2lwIHRoZSB3cml0ZSB3aGVuIGRlbmllZDsgcnZ1X2xmX3Jlc2V0KCkgY2xlYXJzIGVhY2ggTEZcXG4rICogYmVmb3JlIGFsbG9jIHNvIHRoZSBuZXh0IHBlcm1pdHRlZCBvd25lciBwcm9ncmFtcyBOUENfVFhfREVGX1BLSU5ELlxcbisgKi9cXG4rYm9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4re1xcbitcXHRpbnQgcGYsIGVyciwgcnhwa2luZDtcXG4rXFx0dTggY2d4X2lkLCBsbWFjX2lkO1xcbitcXHR2b2lkICpjZ3hkO1xcbitcXG4rXFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYyk7XFxuK1xcbitcXHRpZiAoIShwY2lmdW5jIFxcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuK1xcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcXG4rXFx0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcXHUwMDI2cnhwa2luZCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHN3aXRjaCAocnhwa2luZCkge1xcbitcXHRjYXNlIE5QQ19SWF9ISUdJR19QS0lORDpcXG4rXFx0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKiBEbyBub3QgYWxsb3cgQ0dYLW1hcHBlZCBWRnMgdG8gb3ZlcndyaXRlIFBLSU5EIHdoZW4gc3BlY2lhbCBwYXJzZSBraW5kc1xcbisgKiAoSGlHaWcsIEVEU0EsIGV0Yy4pIGFyZSBpbiB1c2Ugb24gdGhlIHNoYXJlZCBMTUFDLlxcbisgKi9cXG4rYm9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpXFxuK3tcXG4rXFx0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XFxuK1xcdHU4IGNneF9pZCwgbG1hY19pZDtcXG4rXFx0c3RydWN0IGNneCAqY2d4ZDtcXG4rXFxuK1xcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXG4rXFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4rXFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdGlmICghaXNfdmYocGNpZnVuYykpXFxuK1xcdFxcdGdvdG8gc2V0O1xcbitcXG4rXFx0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcXHUwMDI2cnhwa2luZCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXG4rXFx0c3dpdGNoIChyeHBraW5kKSB7XFxuK1xcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxcbitcXHRjYXNlIE5QQ19SWF9FRFNBX1BLSU5EOlxcbitcXHRcXHRnb3RvIGVycjtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFxuK3NldDpcXG4rXFx0Y2d4X3NldF9wa2luZChydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KSwgbG1hY19pZCwgcGtpbmQpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK2VycjpcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xcbmluZGV4IDZhMGNlMjY2NTAzMWQ2Li45NjRiY2FhZTA5OGUyNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcXG5AQCAtMzYzLDggKzM2Myw4IEBAIHN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXFxuIFxcdFxcdHBmdmYtXFx1MDAzZXR4X2NoYW5fY250ID0gMTtcXG4gXFx0XFx0cnNwLVxcdTAwM2V0eF9saW5rID0gY2d4X2lkICogaHctXFx1MDAzZWxtYWNfcGVyX2NneCArIGxtYWNfaWQ7XFxuIFxcbi1cXHRcXHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XFxuLVxcdFxcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xcbitcXHRcXHRpZiAocnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCBwa2luZCkpXFxuK1xcdFxcdFxcdHJ2dV9ucGNfc2V0X3BraW5kKHJ2dSwgcGtpbmQsIHBmdmYpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBOSVhfSU5URl9UWVBFX0xCSzpcXG4gXFx0XFx0dmYgPSAocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykgLSAxO1xcbkBAIC0xNTA1LDEzICsxNTA1LDE1IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IG5peF9sZl9hbGxvY19yZXEgKnJlcSxcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgbml4X2xmX2FsbG9jX3JzcCAqcnNwKVxcbiB7XFxuLVxcdGludCBuaXhsZiwgcWludHMsIGh3Y3R4X3NpemUsIGludGYsIHJjID0gMDtcXG4rXFx0aW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwLCBwZjtcXG4gXFx0dTE2IGJjYXN0LCBtY2FzdCwgcHJvbWlzYywgdWNhc3Q7XFxuIFxcdHN0cnVjdCBydnVfaHdpbmZvICpodyA9IHJ2dS1cXHUwMDNlaHc7XFxuIFxcdHUxNiBwY2lmdW5jID0gcmVxLVxcdTAwM2VoZHIucGNpZnVuYztcXG4rXFx0dTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7XFxuIFxcdGJvb2wgcnVsZXNfY3JlYXRlZCA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgcnZ1X2Jsb2NrICpibG9jaztcXG4gXFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmO1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xcbiBcXHR1NjQgY2ZnLCBjdHhfY2ZnO1xcbiBcXHRpbnQgYmxrYWRkcjtcXG4gXFxuQEAgLTE2ODUsOCArMTY4NywyMCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbiBcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfUlhfQ0ZHKG5peGxmKSwgcmVxLVxcdTAwM2VyeF9jZmcpO1xcbiBcXG4gXFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cXG4rXFxuK1xcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbiBcXHRjZmcgPSBOUENfVFhfREVGX1BLSU5EO1xcbi1cXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTtcXG4rXFxuK1xcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcXG4rXFx0XFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbitcXHRcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuK1xcdFxcdG11dGV4X2xvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXFxuK1xcdFxcdFxcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLCBjZmcpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmNneGQtXFx1MDAzZWxvY2spO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSwgY2ZnKTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSkge1xcbiBcXHRcXHRwZnZmLVxcdTAwM2V0eF9jaGFuX2Jhc2UgPSBSVlVfU1dJVENIX0xCS19DSEFOO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcXG5pbmRleCBjN2JjMGIzYTI5Yjk4NC4uMzg1NTRkNTExNjRlMTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXFxuQEAgLTE5LDYgKzE5LDcgQEBcXG4gI2luY2x1ZGUgXFxcImNuMjBrL25wYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicnZ1X25wYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiY24yMGsvcmVnLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJsbWFjX2NvbW1vbi5oXFxcIlxcbiBcXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEZcXHQzIC8qIEJyb2FkY2FzdCwgUHJvbWlzYyBhbmQgQWxsTXVsdGljYXN0ICovXFxuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX05JWExGXFx0MSAvKiBVY2FzdCBmb3IgTEZzICovXFxuQEAgLTQyMDAsMTAgKzQyMDEsMTEgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcXG4gXFxuIHtcXG4gXFx0c3RydWN0IHJ2dV9wZnZmICpwZnZmID0gcnZ1X2dldF9wZnZmKHJ2dSwgcGNpZnVuYyk7XFxuLVxcdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcXG4gXFx0aW50IHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbitcXHRpbnQgYmxrYWRkciwgbml4bGYsIHJjLCBpbnRmX21vZGU7XFxuK1xcdHU4IGNneF9pZCA9IDAsIGxtYWNfaWQgPSAwO1xcbiBcXHR1NjQgcnhwa2luZCwgdHhwa2luZDtcXG4tXFx0dTggY2d4X2lkLCBsbWFjX2lkO1xcbitcXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xcbiBcXG4gXFx0LyogdXNlIGRlZmF1bHQgcGtpbmQgdG8gZGlzYWJsZSBlZHNhL2hpZ2lnICovXFxuIFxcdHJ4cGtpbmQgPSBydnVfbnBjX2dldF9wa2luZChydnUsIHBmKTtcXG5AQCAtNDIyNywxMiArNDIyOSw4IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXFxuIFxcdFxcdC8qIHJ4IHBraW5kIHNldCByZXEgdmFsaWQgb25seSBmb3IgY2d4IG1hcHBlZCBQRnMgKi9cXG4gXFx0XFx0aWYgKCFpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4tXFx0XFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbi1cXG4tXFx0XFx0cmMgPSBjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLFxcbi1cXHRcXHRcXHRcXHQgICByeHBraW5kKTtcXG4tXFx0XFx0aWYgKHJjKVxcbi1cXHRcXHRcXHRyZXR1cm4gcmM7XFxuK1xcdFxcdGlmICghcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCByeHBraW5kKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChkaXIgXFx1MDAyNiBQS0lORF9UWCkge1xcbkBAIC00MjQxLDggKzQyMzksMTkgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcXG4gXFx0XFx0aWYgKHJjKVxcbiBcXHRcXHRcXHRyZXR1cm4gcmM7XFxuIFxcbi1cXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcXG4tXFx0XFx0XFx0ICAgIHR4cGtpbmQpO1xcbitcXHRcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XFxuK1xcdFxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2bG1hY19pZCk7XFxuK1xcdFxcdFxcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcXG4rXFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2d4ZC1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdFxcdGlmIChydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQocnZ1LCBwY2lmdW5jKSlcXG4rXFx0XFx0XFx0XFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICB0eHBraW5kKTtcXG4rXFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjZ3hkLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXFxuK1xcdFxcdFxcdFxcdCAgICB0eHBraW5kKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRwZnZmLVxcdTAwM2VpbnRmX21vZGUgPSBpbnRmX21vZGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjM0LjE2NjI3NjY3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI2NDg1MzUzMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWRlZDc3NWMwMDc2NTIzNmMyMGEwOTA4NmQ4N2VhNDJkMjU1MWM3M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDA0OjQzOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guY1xuaW5kZXggMmU5NGQ1MTA1MDE2YmYuLmY1ZmQ2MTM4YzM1MmZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jXG5AQCAtNTE4LDYgKzUxOCwxOCBAQCBpbnQgY2d4X3NldF9wa2luZCh2b2lkICpjZ3hkLCB1OCBsbWFjX2lkLCBpbnQgcGtpbmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZClcbit7XG4rXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xuK1xuK1x0aWYgKCFpc19sbWFjX3ZhbGlkKGNneCwgbG1hY19pZCkpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuK1x0KnBraW5kID0gY2d4X3JlYWQoY2d4LCBsbWFjX2lkLCBjZ3gtXHUwMDNlbWFjX29wcy1cdTAwM2VyeGlkX21hcF9vZmZzZXQpO1xuK1x0KnBraW5kID0gKnBraW5kIFx1MDAyNiAweDNGO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyB1OCBjZ3hfZ2V0X2xtYWNfdHlwZSh2b2lkICpjZ3hkLCBpbnQgbG1hY19pZClcbiB7XG4gXHRzdHJ1Y3QgY2d4ICpjZ3ggPSBjZ3hkO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmhcbmluZGV4IDkyY2NmMzQzZGZlMDRmLi44NDExYTc1ZGQ3MjNmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaFxuQEAgLTE0MSw2ICsxNDEsNyBAQCBpbnQgY2d4X2dldF9jZ3hpZCh2b2lkICpjZ3hkKTtcbiBpbnQgY2d4X2dldF9sbWFjX2NudCh2b2lkICpjZ3hkKTtcbiB2b2lkICpjZ3hfZ2V0X3BkYXRhKGludCBjZ3hfaWQpO1xuIGludCBjZ3hfc2V0X3BraW5kKHZvaWQgKmNneGQsIHU4IGxtYWNfaWQsIGludCBwa2luZCk7XG4raW50IGNneF9nZXRfcGtpbmQodm9pZCAqY2d4ZCwgdTggbG1hY19pZCwgaW50ICpwa2luZCk7XG4gaW50IGNneF9sbWFjX2V2aF9yZWdpc3RlcihzdHJ1Y3QgY2d4X2V2ZW50X2NiICpjYiwgdm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQpO1xuIGludCBjZ3hfbG1hY19ldmhfdW5yZWdpc3Rlcih2b2lkICpjZ3hkLCBpbnQgbG1hY19pZCk7XG4gaW50IGNneF9nZXRfdHhfc3RhdHModm9pZCAqY2d4ZCwgaW50IGxtYWNfaWQsIGludCBpZHgsIHU2NCAqdHhfc3RhdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuaW5kZXggN2YzNTA1YWU2ODYwNDIuLjlkNWI3YjUxYmRmYTU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5AQCAtMTExNSw2ICsxMTE1LDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCB1OCAqaW50ZiwgdTggKmVuYSk7XG4gaW50IG5wY19jb25maWdfY250cl9kZWZhdWx0X2VudHJpZXMoc3RydWN0IHJ2dSAqcnZ1LCBib29sIGVuYWJsZSk7XG4gYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKTtcbitib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZCk7XG4rYm9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyk7XG4gYm9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKTtcbiB1MzIgIHJ2dV9jZ3hfZ2V0X2ZpZm9sZW4oc3RydWN0IHJ2dSAqcnZ1KTtcbiB2b2lkICpydnVfZmlyc3RfY2d4X3BkYXRhKHN0cnVjdCBydnUgKnJ2dSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG5pbmRleCA0ZmYzOTM1ZWQzZmU4NC4uODdkMjE4ODlkYzQ5ZTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuQEAgLTEzNTUsMyArMTM1NSw4MiBAQCB2b2lkIHJ2dV9tYWNfcmVzZXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbiBcdGlmIChtYWNfb3BzLVx1MDAzZW1hY19yZXNldChjZ3hkLCBsbWFjLCAhaXNfdmYocGNpZnVuYykpKVxuIFx0XHRkZXZfZXJyKHJ2dS1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIHJlc2V0IE1BQ1xcblwiKTtcbiB9XG4rXG4rLyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbisgKiAoSGlHaWcsIEVEU0EsIGV0Yy4pIGFyZSBpbiB1c2Ugb24gdGhlIHNoYXJlZCBMTUFDLiBWRnMgbXVzdCBub3QgcHJvZ3JhbVxuKyAqIE5QQ19UWF9ERUZfUEtJTkQgb24gTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcgaW4gdGhhdCBjYXNlOiB0aGUgUEYgb3duc1xuKyAqIHBhcnNlIG1vZGUgYW5kIG5vIHNlcGFyYXRlIE5QQ19UWF9ISUdJR19QS0lORCBpcyBpbnN0YWxsZWQgb24gdGhlIFZGIExGLlxuKyAqIFRYLXBhcnNlIGNhbGxlcnMgc2tpcCB0aGUgd3JpdGUgd2hlbiBkZW5pZWQ7IHJ2dV9sZl9yZXNldCgpIGNsZWFycyBlYWNoIExGXG4rICogYmVmb3JlIGFsbG9jIHNvIHRoZSBuZXh0IHBlcm1pdHRlZCBvd25lciBwcm9ncmFtcyBOUENfVFhfREVGX1BLSU5ELlxuKyAqL1xuK2Jvb2wgcnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4re1xuK1x0aW50IHBmLCBlcnIsIHJ4cGtpbmQ7XG4rXHR1OCBjZ3hfaWQsIGxtYWNfaWQ7XG4rXHR2b2lkICpjZ3hkO1xuK1xuK1x0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbitcbitcdGlmICghKHBjaWZ1bmMgXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuK1x0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuK1x0ZXJyID0gY2d4X2dldF9wa2luZChjZ3hkLCBsbWFjX2lkLCBcdTAwMjZyeHBraW5kKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHN3aXRjaCAocnhwa2luZCkge1xuK1x0Y2FzZSBOUENfUlhfSElHSUdfUEtJTkQ6XG4rXHRjYXNlIE5QQ19SWF9FRFNBX1BLSU5EOlxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdH1cbit9XG4rXG4rLyogRG8gbm90IGFsbG93IENHWC1tYXBwZWQgVkZzIHRvIG92ZXJ3cml0ZSBQS0lORCB3aGVuIHNwZWNpYWwgcGFyc2Uga2luZHNcbisgKiAoSGlHaWcsIEVEU0EsIGV0Yy4pIGFyZSBpbiB1c2Ugb24gdGhlIHNoYXJlZCBMTUFDLlxuKyAqL1xuK2Jvb2wgcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHBraW5kKVxuK3tcbitcdGludCBwZiwgZXJyLCByeHBraW5kO1xuK1x0dTggY2d4X2lkLCBsbWFjX2lkO1xuK1x0c3RydWN0IGNneCAqY2d4ZDtcbitcbitcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4rXG4rXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuK1x0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0aWYgKCFpc192ZihwY2lmdW5jKSlcbitcdFx0Z290byBzZXQ7XG4rXG4rXHRlcnIgPSBjZ3hfZ2V0X3BraW5kKGNneGQsIGxtYWNfaWQsIFx1MDAyNnJ4cGtpbmQpO1xuK1x0aWYgKGVycilcbitcdFx0Z290byBlcnI7XG4rXG4rXHRzd2l0Y2ggKHJ4cGtpbmQpIHtcbitcdGNhc2UgTlBDX1JYX0hJR0lHX1BLSU5EOlxuK1x0Y2FzZSBOUENfUlhfRURTQV9QS0lORDpcbitcdFx0Z290byBlcnI7XG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbitcdH1cbitcbitzZXQ6XG4rXHRjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLCBwa2luZCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbitcdHJldHVybiB0cnVlO1xuK1xuK2VycjpcbitcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0cmV0dXJuIGZhbHNlO1xuK31cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbmluZGV4IDZhMGNlMjY2NTAzMWQ2Li45NjRiY2FhZTA5OGUyNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5AQCAtMzYzLDggKzM2Myw4IEBAIHN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9jbnQgPSAxO1xuIFx0XHRyc3AtXHUwMDNldHhfbGluayA9IGNneF9pZCAqIGh3LVx1MDAzZWxtYWNfcGVyX2NneCArIGxtYWNfaWQ7XG4gXG4tXHRcdGNneF9zZXRfcGtpbmQocnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSksIGxtYWNfaWQsIHBraW5kKTtcbi1cdFx0cnZ1X25wY19zZXRfcGtpbmQocnZ1LCBwa2luZCwgcGZ2Zik7XG4rXHRcdGlmIChydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChydnUsIHBjaWZ1bmMsIHBraW5kKSlcbitcdFx0XHRydnVfbnBjX3NldF9wa2luZChydnUsIHBraW5kLCBwZnZmKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE5JWF9JTlRGX1RZUEVfTEJLOlxuIFx0XHR2ZiA9IChwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIC0gMTtcbkBAIC0xNTA1LDEzICsxNTA1LDE1IEBAIGludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4gXHRcdFx0XHQgIHN0cnVjdCBuaXhfbGZfYWxsb2NfcmVxICpyZXEsXG4gXHRcdFx0XHQgIHN0cnVjdCBuaXhfbGZfYWxsb2NfcnNwICpyc3ApXG4ge1xuLVx0aW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwO1xuK1x0aW50IG5peGxmLCBxaW50cywgaHdjdHhfc2l6ZSwgaW50ZiwgcmMgPSAwLCBwZjtcbiBcdHUxNiBiY2FzdCwgbWNhc3QsIHByb21pc2MsIHVjYXN0O1xuIFx0c3RydWN0IHJ2dV9od2luZm8gKmh3ID0gcnZ1LVx1MDAzZWh3O1xuIFx0dTE2IHBjaWZ1bmMgPSByZXEtXHUwMDNlaGRyLnBjaWZ1bmM7XG4rXHR1OCBjZ3hfaWQgPSAwLCBsbWFjX2lkID0gMDtcbiBcdGJvb2wgcnVsZXNfY3JlYXRlZCA9IGZhbHNlO1xuIFx0c3RydWN0IHJ2dV9ibG9jayAqYmxvY2s7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmY7XG4rXHRzdHJ1Y3QgY2d4ICpjZ3hkO1xuIFx0dTY0IGNmZywgY3R4X2NmZztcbiBcdGludCBibGthZGRyO1xuIFxuQEAgLTE2ODUsOCArMTY4NywyMCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuIFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1JYX0NGRyhuaXhsZiksIHJlcS1cdTAwM2VyeF9jZmcpO1xuIFxuIFx0LyogQ29uZmlndXJlIHBraW5kIGZvciBUWCBwYXJzZSBjb25maWcgKi9cbitcbitcdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG4gXHRjZmcgPSBOUENfVFhfREVGX1BLSU5EO1xuLVx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXG4rXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xuK1x0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4rXHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0XHRpZiAocnZ1X2NneF9pc19wa2luZF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXG4rXHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZjZ3hkLVx1MDAzZWxvY2spO1xuK1x0fSBlbHNlIHtcbitcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksIGNmZyk7XG4rXHR9XG4gXG4gXHRpZiAoaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKSB7XG4gXHRcdHBmdmYtXHUwMDNldHhfY2hhbl9iYXNlID0gUlZVX1NXSVRDSF9MQktfQ0hBTjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbmluZGV4IGM3YmMwYjNhMjliOTg0Li4zODU1NGQ1MTE2NGUxNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5AQCAtMTksNiArMTksNyBAQFxuICNpbmNsdWRlIFwiY24yMGsvbnBjLmhcIlxuICNpbmNsdWRlIFwicnZ1X25wYy5oXCJcbiAjaW5jbHVkZSBcImNuMjBrL3JlZy5oXCJcbisjaW5jbHVkZSBcImxtYWNfY29tbW9uLmhcIlxuIFxuICNkZWZpbmUgUlNWRF9NQ0FNX0VOVFJJRVNfUEVSX1BGXHQzIC8qIEJyb2FkY2FzdCwgUHJvbWlzYyBhbmQgQWxsTXVsdGljYXN0ICovXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfTklYTEZcdDEgLyogVWNhc3QgZm9yIExGcyAqL1xuQEAgLTQyMDAsMTAgKzQyMDEsMTEgQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcbiBcbiB7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTtcbi1cdGludCBibGthZGRyLCBuaXhsZiwgcmMsIGludGZfbW9kZTtcbiBcdGludCBwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuK1x0aW50IGJsa2FkZHIsIG5peGxmLCByYywgaW50Zl9tb2RlO1xuK1x0dTggY2d4X2lkID0gMCwgbG1hY19pZCA9IDA7XG4gXHR1NjQgcnhwa2luZCwgdHhwa2luZDtcbi1cdHU4IGNneF9pZCwgbG1hY19pZDtcbitcdHN0cnVjdCBjZ3ggKmNneGQ7XG4gXG4gXHQvKiB1c2UgZGVmYXVsdCBwa2luZCB0byBkaXNhYmxlIGVkc2EvaGlnaWcgKi9cbiBcdHJ4cGtpbmQgPSBydnVfbnBjX2dldF9wa2luZChydnUsIHBmKTtcbkBAIC00MjI3LDEyICs0MjI5LDggQEAgaW50IHJ2dV9ucGNfc2V0X3BhcnNlX21vZGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTY0IG1vZGUsIHU4IGRpcixcbiBcdFx0LyogcnggcGtpbmQgc2V0IHJlcSB2YWxpZCBvbmx5IGZvciBjZ3ggbWFwcGVkIFBGcyAqL1xuIFx0XHRpZiAoIWlzX2NneF9jb25maWdfcGVybWl0dGVkKHJ2dSwgcGNpZnVuYykpXG4gXHRcdFx0cmV0dXJuIDA7XG4tXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi1cbi1cdFx0cmMgPSBjZ3hfc2V0X3BraW5kKHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpLCBsbWFjX2lkLFxuLVx0XHRcdFx0ICAgcnhwa2luZCk7XG4tXHRcdGlmIChyYylcbi1cdFx0XHRyZXR1cm4gcmM7XG4rXHRcdGlmICghcnZ1X2NneF9jaGVja19wZXJtaXNzaW9uX2FuZF9zZXRfcGtpbmQocnZ1LCBwY2lmdW5jLCByeHBraW5kKSlcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiBcdGlmIChkaXIgXHUwMDI2IFBLSU5EX1RYKSB7XG5AQCAtNDI0MSw4ICs0MjM5LDE5IEBAIGludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4gXHRcdGlmIChyYylcbiBcdFx0XHRyZXR1cm4gcmM7XG4gXG4tXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX0xGWF9UWF9QQVJTRV9DRkcobml4bGYpLFxuLVx0XHRcdCAgICB0eHBraW5kKTtcbitcdFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcbitcdFx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCxcbitcdFx0XHRcdFx0ICAgIFx1MDAyNmxtYWNfaWQpO1xuK1x0XHRcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbitcdFx0XHRtdXRleF9sb2NrKFx1MDAyNmNneGQtXHUwMDNlbG9jayk7XG4rXHRcdFx0aWYgKHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChydnUsIHBjaWZ1bmMpKVxuK1x0XHRcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTEZYX1RYX1BBUlNFX0NGRyhuaXhsZiksXG4rXHRcdFx0XHRcdCAgICB0eHBraW5kKTtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y2d4ZC1cdTAwM2Vsb2NrKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsIE5JWF9BRl9MRlhfVFhfUEFSU0VfQ0ZHKG5peGxmKSxcbitcdFx0XHRcdCAgICB0eHBraW5kKTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0cGZ2Zi1cdTAwM2VpbnRmX21vZGUgPSBpbnRmX21vZGU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0MzozNC4xNjYyNzc2NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDA2NDA1NjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFGIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyB0d2Vha2luZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFGIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgUmVzb3VyY2UgVmlydHVhbGl6YXRpb24gVW5pdC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgaW50ZW5kZWQgdG8gcHJldmVudCBWaXJ0dWFsIEZ1bmN0aW9ucyAoVkZzKSBmcm9tIG1lc3Npbmcgd2l0aCB0aGUgUGFja2V0IEtpbmQgKFBLSU5EKSB3aGVuIGNlcnRhaW4gc3BlY2lhbCBwYXJzZSBraW5kcywgbGlrZSBIaUdpZyBvciBFRFNBLCBhcmUgYWN0aXZlIG9uIGEgc2hhcmVkIExNQUMuIFRoZXnigJl2ZSBhZGRlZCBgY2d4X2dldF9wa2luZGAgYW5kIG1vZGlmaWVkIGBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZGAgYW5kIGBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWRgIHRvIGFjaGlldmUgdGhpcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQ2FuIHRoaXMgZXZlbiBiZSB0ZXN0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCJcblxuVGhpcyBkcml2ZXIgaXMgbG9jYXRlZCBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCwgYW5kIGl0J3MgaGFyZHdhcmUtc3BlY2lmaWMgdG8gdGhlIE9jdGVvblRYMi4gTm93LCB0aGUgYmlnIHF1ZXN0aW9uIGlzLCBjYW4gd2UgcmVhbGlzdGljYWxseSBlbXVsYXRlIHRoaXMgaW4gUUVNVT8gTXkgZXhwZXJpZW5jZSBpcyB0aGF0IHN0YW5kYXJkIFFFTVUgb2Z0ZW4gZG9lc24ndCBkaXJlY3RseSBlbXVsYXRlIHRoZSBPY3Rlb25UWDIuIEknbSBnb2luZyB0byBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUsIG9yIGlmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBzdHJpY3RseSB0aWVkIHRvIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSdsbCBzdGFydCBieSB1c2luZyBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRoZSBLY29uZmlnIGZpbGVzIGZvciBhbnkgbWVudGlvbnMgb2YgYE9DVEVPTlRYMl9BRmAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGluaXRpYWwgaWRlYSBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgY2FuIGV2ZW4gYmUgYnJvdWdodCB1cCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIwNCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjQwLjE3MjY4NjMxMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUxNjE1MDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk9DVEVPTlRYMl9BRlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTY9Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo5OmNvbmZpZyBPQ1RFT05UWDJfQUZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVxcdGJvb2wgXFxcIkRpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IGFmL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSArPSBuaWMvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT03PW9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgKz0gcnZ1X21ib3gub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgKz0gcnZ1X2FmLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZS05LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0Mzo0Mi4wMjQzMTE3NjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjU0OTAwODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIE9jdGVvblRYMiBOZXR3b3JrIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIHRoZSBzeXN0ZW0gaW5kaWNhdGVzIHRoZSBuZXR3b3JrIGRyaXZlciBpbiBxdWVzdGlvbiBpcyB0aGUgYE9DVEVPTlRYMl9BRmAgZHJpdmVyLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUga25vd24gZGVwZW5kZW5jaWVzOiB3ZSdyZSBkZWFsaW5nIHdpdGggYW4gQVJNNjQgYXJjaGl0ZWN0dXJlIGFuZCBhIFBDSSBidXMgaW1wbGVtZW50YXRpb24uIEdpdmVuIHRoYXQsIG15IG5leHQgc3RlcCBpcyB0byBoZWFkIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgc3BlY2lmaWNhbGx5IHRvIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoYXQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgb3IgcmVzdHJpY3Rpb25zIGluIGRldGFpbC4gTGV0J3MgZGVsdmUgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AgdG8gY29uZmlybSBhc3N1bXB0aW9ucyBhbmQgZ2FpbiBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIGludGVncmF0ZWQuIFRoaXMgaW5pdGlhbCBLY29uZmlnIGluc3BlY3Rpb24gd2lsbCBzZXQgdGhlIHN0YWdlIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMDAsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0Mzo0NS4yNzkyMjAwMjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY1MTU2MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9DVEVPTlRYMl9BRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9Nj1jb25maWcgT0NURU9OVFgyX01CT1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjQ1LjMzNTc0NTkzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDU3NzE5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIE1hcnZlbGwgT0NURU9OVFgyIEtjb25maWcgRmlsZSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA5LiBJJ20gYXNzdW1pbmcgd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgZnVuZGFtZW50YWwsIHByb2JhYmx5IGEgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbiwganVkZ2luZyBieSB0aGUgY2hvaWNlIG9mIGBLY29uZmlnYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgKnNjb3BlKiBvZiB3aGF0J3MgYmVpbmcgZGVmaW5lZCBvciBndWFyZGVkIHRoZXJlLiBJcyB0aGlzIHRoZSBkcml2ZXIncyBnZW5lcmFsIGVuYWJsZS9kaXNhYmxlIHN3aXRjaD8gQSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlPyBPciBtYXliZSBhIGRlcGVuZGVuY3kgb24gYW5vdGhlciBtb2R1bGUgb3Iga2VybmVsIGNvbXBvbmVudD8gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgT0NURU9OVFgyIGFyY2hpdGVjdHVyZSwgSSdtIGV4cGVjdGluZyB0byBzZWUgb3B0aW9ucyByZWxhdGVkIHRvIE1BQyBhZGRyZXNzZXMsIGZsb3cgY29udHJvbCwgb3IgbWF5YmUgZXZlbiBvZmZsb2FkIGNhcGFiaWxpdGllcywgYXMgdGhlIEtjb25maWcgd291bGQgZXhwb3NlIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGRyaXZlci4gSSdsbCBiZSBsb29raW5nIGZvciBrZXl3b3JkcyBsaWtlIFwiQ09ORklHX09DVEVPTlRYMl9FVEgsXCIgXCJzdXBwb3J0LFwiIG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgbGlrZSBcIlJYX0NIRUNLU1VNX09GRkxPQURcIiBvciBcIlRYX1JTU19FTkFCTEVcIi4gSSdtIHJlYWR5IHRvIGV2YWx1YXRlIHdoZXRoZXIgdGhlIG9wdGlvbidzIGRlZmF1bHQgdmFsdWUgaXMgc2Vuc2libGUsIGl0cyBoZWxwIHRleHQgaXMgY2xlYXIgZW5vdWdoLCBhbmQgaWYgdGhlIGRlcGVuZGVuY2llcyBhcmUgd2VsbC1kZWZpbmVkLiBJJ2xsIGFsc28gYmUgY29uc2lkZXJpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG9wdGlvbidzIHByZXNlbmNlIG9yIGFic2VuY2Ugb24gdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcwOCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjQ4Ljk4MTUxOTk1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgT0NURU9OVFgyX0FGXFxuICAxMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDExOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMTI6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXFxuICAxODpcXHRcXHQgIFVuaXQncyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcXG4gIDE5OlxcdFxcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxcbiAgMjA6XFx0XFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDM6NDguOTgxNTgxMjUyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg5OTk4ODczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIFRoaXMgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBJdCdzIGNsZWFybHkgYSBQQ0kgaGFyZHdhcmUgaW50ZXJhY3Rpb24sIHJpZ2h0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoZXJlICphbnkqIHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUgZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmU/IEJlY2F1c2UgdHlwaWNhbGx5LCB3aXRoIHRoZXNlIGhpZ2hseSBzcGVjaWFsaXplZCBkcml2ZXJzLCB0aGUgYW5zd2VyIGlzIG5vLiBJIGtub3cgU3l6a2FsbGVyIHVzdWFsbHkgZnV6emVzIFBDSSBkZXZpY2VzIHZpYSB2UENJLCBpbmplY3RpbmcgcmFuZG9tIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8gcmVhZHMvd3JpdGVzLiBCdXQsIHRoZSBjcnVjaWFsIHBvaW50IGlzLCB0aGF0IHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmUgcHJvYmVkIGluIHRoZSBmaXJzdCBwbGFjZSwgYW5kIHRoYXTigJlzIGEgcG90ZW50aWFsIGJsb2NrZXIuXG5cbkhvbGQgb24gYSBzZWNvbmQsIFN5emthbGxlciAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIGZ1bmN0aW9ucyBsaWtlIGBzeXpfcGNpdmZgLCBvciBldmVuIGp1c3QgYnkgY3JlYXRpbmcgYSBmYWtlIFBDSSBkZXZpY2UuIFNvIGl0J3Mgbm90IHRvdGFsbHkgb2ZmIHRoZSB0YWJsZS5cblxuTm93LCB0aGUgY29yZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgcGF0Y2ggYWN0dWFsbHkgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBvciBpZiBpdCdzIGNvbmZpbmVkIHRvIHRoaXMgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uICh0aGluayBVU0IgZ2FkZ2V0LCBvciBtYWM4MDIxMV9od3NpbSksIGl0J3Mgbm90IHdvcnRoIGZ1enppbmcgaW4gdGhpcyBjb250ZXh0LlxuXG5UaGlzIGlzIGEgTWFydmVsbCBPY3Rlb25UWDIgZHJpdmVyLiBJdCdzIGRlZGljYXRlZCBoYXJkd2FyZS4gVGhlcmUncyBubyByZWFkaWx5IGF2YWlsYWJsZSBzb2Z0d2FyZSBlbXVsYXRpb24sIGxpa2UgdGhlcmUgaXMgZm9yIHRoaW5ncyBsaWtlIGUxMDAwIG9yIHJ0bDgxMzkuIEdpdmVuIHRoYXQsIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBsaWtlbHkgdW50b3VjaGFibGUgdW5sZXNzIFN5emthbGxlcidzIFBDSSBmdXp6aW5nIGNhbiBzb21laG93IGdldCBhIGhvbGQgb2YgaXQuIFRoYXQgc2FpZCwgaXTigJlzIHN0aWxsIGEgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIuXG5cbkFoLCBidXQgU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLiBTbywgdGhlIGtleSBpcyB3aGV0aGVyIGl0J3MgY2xhc3NpZmllZCBhcyBcImltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiIFRoZSBydWxlIGlzIGV4cGxpY2l0OiBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIEdDRSBvciBRRU1VLCBldmVuIHdpdGggKmVtdWxhdGVkKiBoYXJkd2FyZSwgYXJlIG91dC5cblxuU2luY2UgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIE9jdGVvblRYMiwgYW5kIGdpdmVuIHRoZSB3b3JkaW5nLCBpdCB3b3VsZCBiZSBkaWZmaWN1bHQgdG8gcmVhY2ggdGhpcyBjb2RlIGluIFFFTVUuXG5JIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCB0aG91Z2guIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBRRU1VIGV2ZW4gKnN1cHBvcnRzKiBPY3Rlb25UWDIuIFRoYXQgd2lsbCBzZXR0bGUgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNzEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0Mzo1NS44ODE1NzIzM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MzgwMTczLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJPQ1RFT05UWDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiRG9jdW1lbnRhdGlvbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQzOjU2LjEwOTk2MTE3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQxNjMzOTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmVhc2liaWxpdHkgb2YgRnV6emluZyB0aGlzIENvZGUqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUncyBhbnkgZXhwbGljaXQgYWNrbm93bGVkZ2VtZW50IG9mIE9jdGVvblRYMiB3aXRoaW4gdGhlIFFFTVUgZG9jdW1lbnRhdGlvbiBvbmxpbmUuIFRoYXQncyB1c3VhbGx5IGEgZ29vZCBmaXJzdCBzdGVwIOKAkyBpZiBRRU1VICpkaWQqIGVtdWxhdGUgaXQsIHRoYXQgd291bGQgc2lnbmlmaWNhbnRseSBjaGFuZ2UgdGhpbmdzLiBIb3dldmVyLCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIE9jdGVvblRYMiBSVlUgYXJjaGl0ZWN0dXJlLlxuXG5UaGVyZWZvcmUsIGdpdmVuIG15IGtub3dsZWRnZSBvZiB0aGUgc3lzdGVtLCB0aGlzIHNwZWNpZmljIGJsb2NrIG9mIGNvZGUgaXMgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSB3aXRoaW4gdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IsIGNyaXRpY2FsbHksIFFFTVUuIEl0J3MgdGllZCB0byBhIHZlcnkgc3BlY2lmaWMsIGhhcmR3YXJlLWxldmVsIGRlcGVuZGVuY3kuXG5cbkNvbnNlcXVlbnRseSwgSSdtIGdvaW5nIHRvIHJldHVybiBhIGBXb3J0aEZ1enppbmc9ZmFsc2VgIHZhbHVlLiBUaGUganVzdGlmaWNhdGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZGVzaWduZWQgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMi4gSXRzIGRlcGVuZGVuY3kgb24gdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBtZWFucyBpdCB3aWxsIG5ldmVyIGJlIGV4ZXJjaXNlZCB3aXRoaW4gYW55IHN0YW5kYXJkIHZpcnR1YWxpemVkIHRlc3QgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMTYsIk91dHB1dFRva2VucyI6OTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDQ6MDAuNjUxNTk3Mjg0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB3aGljaCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow94hv9[1] Phase: Running StartedAt: 2026-07-23 04:44:12 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow94hv9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-23 04:44:12 +0000 UTC FinishedAt: 2026-07-23 04:44:18 +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,}