Name: series-workflowlcb5s Phase: Failed StartedAt: 2026-09-06 11:59:41 +0000 UTC FinishedAt: 2026-09-06 12:20:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlcb5s[0] Phase: Succeeded StartedAt: 2026-09-06 11:59:41 +0000 UTC FinishedAt: 2026-09-06 12:20:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlcb5s[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 11:59:41 +0000 UTC FinishedAt: 2026-09-06 12:20:15 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NzNhMzYyOTU4ZDU2YzhkZjAwNzVlYWFiYjFlZjRmODFkNWJlMGNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxMjoxOTo1NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbmluZGV4IDQxOWI5ZDc5NWYyYTcuLjVjNGY1MzA2MGM5MTggMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuQEAgLTEyLDYgJiM0MzsxMiw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maWx0ZXIuaFx1MDAzZVxuIFxuJiM0MzsjZGVmaW5lIFJWX01BWF9SRUdfQVJHU1x0XHQ4XG4mIzQzOyNkZWZpbmUgUlZfRVhUUkFfU1RLX0FSR1NcdChSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpXG4mIzQzO1xuIC8qIHZlcmlmeSBydW50aW1lIGRldGVjdGlvbiBleHRlbnNpb24gc3RhdHVzICovXG4gI2RlZmluZSBydl9leHRfZW5hYmxlZChleHQpIFxcXG4gXHQoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBXyMjZXh0KSBcdTAwMjZcdTAwMjYgcmlzY3ZfaGFzX2V4dGVuc2lvbl9saWtlbHkoUklTQ1ZfSVNBX0VYVF8jI2V4dCkpXG5AQCAtODIsNiAmIzQzOzg1LDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgc3RhY2tfc2l6ZTtcbiBcdGludCB0Y2Nfb2Zmc2V0O1xuJiM0MztcdGludCBzdGFja19hcmdfc3o7XG4gXHR1NjQgYXJlbmFfdm1fc3RhcnQ7XG4gXHR1NjQgdXNlcl92bV9zdGFydDtcbiB9O1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBlNzM3OGJlMTcxYTlmLi43Zjg0NDQ3YTMxZmZkIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTE1LDcgJiM0MzsxNSw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3BlcmNwdS5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7YnBmX2ppdC5oXCYjMzQ7XG4gXG4tI2RlZmluZSBSVl9NQVhfUkVHX0FSR1MgOFxuICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyXG4gI2RlZmluZSBSVl9GRU5UUllfTkJZVEVTIChSVl9GRU5UUllfTklOU05TICogNClcbiAvKiBpbW0gdGhhdCBhbGxvd3MgZW1pdF9pbW0gdG8gZW1pdCBtYXggY291bnQgaW5zbnMgKi9cbkBAIC0yMywxMSAmIzQzOzIyLDExIEBAXG4gLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cbiAjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgJiM0MzsgMSkgKiA0KVxuIFxuLSNkZWZpbmUgUlZfUkVHX1RDQyBSVl9SRUdfQTZcbiYjNDM7I2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19UNVxuICNkZWZpbmUgUlZfUkVHX0FSRU5BIFJWX1JFR19TNyAvKiBGb3Igc3RvcmluZyBhcmVuYV92bV9zdGFydCAqL1xuIFxuIHN0YXRpYyBjb25zdCBpbnQgcmVnbWFwW10gPSB7XG4tXHRbQlBGX1JFR18wXSA9XHRSVl9SRUdfQTUsXG4mIzQzO1x0W0JQRl9SRUdfMF0gPVx0UlZfUkVHX1Q2LFxuIFx0W0JQRl9SRUdfMV0gPVx0UlZfUkVHX0EwLFxuIFx0W0JQRl9SRUdfMl0gPVx0UlZfUkVHX0ExLFxuIFx0W0JQRl9SRUdfM10gPVx0UlZfUkVHX0EyLFxuQEAgLTQ3LDEzICYjNDM7NDYsMTMgQEAgc3RhdGljIGNvbnN0IGludCBwdF9yZWdtYXBbXSA9IHtcbiBcdFtSVl9SRUdfQTJdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGEyKSxcbiBcdFtSVl9SRUdfQTNdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGEzKSxcbiBcdFtSVl9SRUdfQTRdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGE0KSxcbi1cdFtSVl9SRUdfQTVdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGE1KSxcbiBcdFtSVl9SRUdfUzFdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMxKSxcbiBcdFtSVl9SRUdfUzJdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMyKSxcbiBcdFtSVl9SRUdfUzNdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMzKSxcbiBcdFtSVl9SRUdfUzRdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHM0KSxcbiBcdFtSVl9SRUdfUzVdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHM1KSxcbiBcdFtSVl9SRUdfVDBdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHQwKSxcbiYjNDM7XHRbUlZfUkVHX1Q2XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCB0NiksXG4gfTtcbiBcbiBlbnVtIHtcbkBAIC0yMzksNyAmIzQzOzIzOCw3IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoYm9vbCBpc190YWlsX2NhbGwsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xuIFx0aWYgKCFpc190YWlsX2NhbGwpXG4tXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCBSVl9SRUdfQTUsIDAsIGN0eCk7XG4mIzQzO1x0XHRlbWl0X2FkZGl3KFJWX1JFR19BMCwgcmVnbWFwW0JQRl9SRUdfMF0sIDAsIGN0eCk7XG4gXHRlbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSxcbiBcdFx0ICBpc190YWlsX2NhbGwgPyBSVl9UQUlMQ0FMTF9PRkZTRVQgOiAwLCBjdHgpO1xuIH1cbkBAIC00OTgsNiAmIzQzOzQ5NywxOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2xkeCh1OCByZCwgczE2IG9mZiwgdTggcnMsIHU4IHNpemUsIGJvb2wgc2lnbl9leHQsXG4gXHRjdHgtXHUwMDNlZXhfam1wX29mZiA9IGN0eC1cdTAwM2VuaW5zbnM7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19sZHgodTggcmQsIHMxNiBvZmYsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGlkeCA9IG9mZiAvIDggLSAxO1xuJiM0MztcbiYjNDM7XHRpZiAoaWR4IFx1MDAzYyBSVl9FWFRSQV9TVEtfQVJHUykge1xuJiM0MztcdFx0ZW1pdF9tdihyZCwgUlZfUkVHX0E1ICYjNDM7IGlkeCwgY3R4KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVtaXRfbGR4X2luc24ocmQsIChpZHggLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBSVl9SRUdfRlAsIEJQRl9EVywgZmFsc2UsIGN0eCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4ge1xuIFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XG5AQCAtNTE1LDYgJiM0Mzs1MjYsMTkgQEAgc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHhcbiBcdGN0eC1cdTAwM2VleF9qbXBfb2ZmID0gY3R4LVx1MDAzZW5pbnNucztcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfc3RhY2tfYXJnX3N0KHMxNiBvZmYsIHMzMiBpbW0sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0aWYgKGlkeCBcdTAwM2MgUlZfRVhUUkFfU1RLX0FSR1MpIHtcbiYjNDM7XHRcdGVtaXRfaW1tKFJWX1JFR19BNSAmIzQzOyBpZHgsIGltbSwgY3R4KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuJiM0MztcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgUlZfUkVHX1QxLCBCUEZfRFcsIGN0eCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZW1pdF9zdHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiB7XG4gXHRpZiAoaXNfMTJiX2ludChvZmYpKSB7XG5AQCAtNTMxLDYgJiM0Mzs1NTUsMTggQEAgc3RhdGljIHZvaWQgZW1pdF9zdHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdGN0eC1cdTAwM2VleF9qbXBfb2ZmID0gY3R4LVx1MDAzZW5pbnNucztcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfc3RhY2tfYXJnX3N0eChzMTYgb2ZmLCB1OCBycywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuJiM0MztcbiYjNDM7XHRpZiAoaWR4IFx1MDAzYyBSVl9FWFRSQV9TVEtfQVJHUykge1xuJiM0MztcdFx0ZW1pdF9tdihSVl9SRUdfQTUgJiM0MzsgaWR4LCBycywgY3R4KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgcnMsIEJQRl9EVywgY3R4KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGVtaXRfYXRvbWljX2xkX3N0KHU4IHJkLCB1OCBycywgY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuIFx0XHRcdCAgICAgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4ge1xuQEAgLTEwNzUsNyAmIzQzOzExMTEsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFxuIFx0c2F2ZV9yZXQgPSBmbGFncyBcdTAwMjYgKEJQRl9UUkFNUF9GX0NBTExfT1JJRyB8IEJQRl9UUkFNUF9GX1JFVF9GRU5UUllfUkVUKTtcbiBcdGlmIChzYXZlX3JldClcbi1cdFx0c3RhY2tfc2l6ZSAmIzQzOz0gMTY7IC8qIFNhdmUgYm90aCBBNSAoQlBGIFIwKSBhbmQgQTAgKi9cbiYjNDM7XHRcdHN0YWNrX3NpemUgJiM0Mzs9IDE2OyAvKiBTYXZlIGJvdGggUlZfUkVHX1Q2IChCUEYgUjApIGFuZCBSVl9SRUdfQTAgKi9cbiBcdHJldHZhbF9vZmYgPSBzdGFja19zaXplO1xuIFxuIFx0c3RhY2tfc2l6ZSAmIzQzOz0gbnJfYXJnX3Nsb3RzICogODtcbkBAIC0xODI0LDExICYjNDM7MTg2MCwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBmbS1cdTAwM2Vucl9hcmdzOyBpZHgmIzQzOyYjNDM7KSB7XG4tXHRcdFx0XHR1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSAmIzQzOyBpZHgsIGN0eCk7XG4gXHRcdFx0XHRib29sIHNpZ24gPSBmbS1cdTAwM2VhcmdfZmxhZ3NbaWR4XSBcdTAwMjYgQlRGX0ZNT0RFTF9TSUdORURfQVJHO1xuLVxuLVx0XHRcdFx0aWYgKHNpZ25fZXh0ZW5kKHJlZywgcmVnLCBmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdLCBzaWduLCBjdHgpKVxuLVx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHR1OCBhcmdfc3ogPSBmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdO1xuJiM0MztcbiYjNDM7XHRcdFx0XHRpZiAoYXJnX3N6ID09IDggfHwgKGFyZ19zeiAhPSA0IFx1MDAyNlx1MDAyNiAhc2lnbikpXG4mIzQzO1x0XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0aWYgKGlkeCBcdTAwM2MgUlZfTUFYX1JFR19BUkdTKSB7XG4mIzQzO1x0XHRcdFx0XHRpZiAoc2lnbl9leHRlbmQoUlZfUkVHX0EwICYjNDM7IGlkeCwgUlZfUkVHX0EwICYjNDM7IGlkeCwgYXJnX3N6LCBzaWduLCBjdHgpKVxuJiM0MztcdFx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfVDEsIChpZHggLSBSVl9NQVhfUkVHX0FSR1MpICogOCwgUlZfUkVHX1NQLCBjdHgpO1xuJiM0MztcdFx0XHRcdFx0aWYgKHNpZ25fZXh0ZW5kKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBhcmdfc3osIHNpZ24sIGN0eCkpXG4mIzQzO1x0XHRcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdFx0ZW1pdF9zZChSVl9SRUdfU1AsIChpZHggLSBSVl9NQVhfUkVHX0FSR1MpICogOCwgUlZfUkVHX1QxLCBjdHgpO1xuJiM0MztcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdH1cbiBcbkBAIC0xOTI3LDcgJiM0MzsxOTczLDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdHJzID0gUlZfUkVHX1QyO1xuIFx0XHR9XG4gXG4tXHRcdGVtaXRfbGR4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgc2lnbl9leHQsIGN0eCk7XG4mIzQzO1x0XHRpZiAoaXNfc3RhY2tfYXJnX2xkeChpbnNuKSlcbiYjNDM7XHRcdFx0ZW1pdF9zdGFja19hcmdfbGR4KHJkLCBvZmYsIGN0eCk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXRfbGR4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgc2lnbl9leHQsIGN0eCk7XG4gXG4gXHRcdHJldCA9IGFkZF9leGNlcHRpb25faGFuZGxlcihpbnNuLCByZCwgY3R4KTtcbiBcdFx0aWYgKHJldClcbkBAIC0xOTU3LDcgJiM0MzsyMDA2LDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdHJkID0gUlZfUkVHX1QzO1xuIFx0XHR9XG4gXG4tXHRcdGVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiYjNDM7XHRcdGlmIChpc19zdGFja19hcmdfc3QoaW5zbikpXG4mIzQzO1x0XHRcdGVtaXRfc3RhY2tfYXJnX3N0KG9mZiwgaW1tLCBjdHgpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0X3N0KHJkLCBvZmYsIGltbSwgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4gXG4gXHRcdHJldCA9IGFkZF9leGNlcHRpb25faGFuZGxlcihpbnNuLCBSRUdfRE9OVF9DTEVBUl9NQVJLRVIsIGN0eCk7XG4gXHRcdGlmIChyZXQpXG5AQCAtMTk3OSw3ICYjNDM7MjAzMSwxMCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHRyZCA9IFJWX1JFR19UMjtcbiBcdFx0fVxuIFxuLVx0XHRlbWl0X3N0eChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4mIzQzO1x0XHRpZiAoaXNfc3RhY2tfYXJnX3N0eChpbnNuKSlcbiYjNDM7XHRcdFx0ZW1pdF9zdGFja19hcmdfc3R4KG9mZiwgcnMsIGN0eCk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXRfc3R4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiBcbiBcdFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcbiBcdFx0aWYgKHJldClcbkBAIC0yMDI5LDkgJiM0MzsyMDg0LDkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXG4gdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4ge1xuLVx0aW50IGksIHN0YWNrX2FkanVzdCA9IDAsIHN0b3JlX29mZnNldCwgYnBmX3N0YWNrX2FkanVzdDtcbiYjNDM7XHRpbnQgaSwgc3RhY2tfYWRqdXN0ID0gMCwgc3RvcmVfb2Zmc2V0LCBicGZfc3RhY2tfYWRqdXN0ID0gY3R4LVx1MDAzZXN0YWNrX2FyZ19zejtcbiBcbi1cdGJwZl9zdGFja19hZGp1c3QgPSByb3VuZF91cChjdHgtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGgsIFNUQUNLX0FMSUdOKTtcbiYjNDM7XHRicGZfc3RhY2tfYWRqdXN0ICYjNDM7PSByb3VuZF91cChjdHgtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGgsIFNUQUNLX0FMSUdOKTtcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuIFx0XHRtYXJrX2ZwKGN0eCk7XG4gXG5AQCAtMjE5MCwzICYjNDM7MjI0NSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbiYjNDM7XG4mIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IGNiZmNkMjg3ZWExNjYuLjJmYjBiNGUxOThiOTQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC00OCw2ICYjNDM7NDgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0aW50IHBhc3MgPSAwLCBwcmV2X25pbnNucyA9IDAsIGk7XG4gXHRzdHJ1Y3QgcnZfaml0X2RhdGEgKmppdF9kYXRhO1xuIFx0c3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHg7XG4mIzQzO1x0dTE2IHN0YWNrX2FyZ19jbnQ7XG4gXG4gXHRpZiAoIXByb2ctXHUwMDNlaml0X3JlcXVlc3RlZClcbiBcdFx0cmV0dXJuIHByb2c7XG5AQCAtNzEsNiAmIzQzOzcyLDEyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuJiM0MztcbiYjNDM7XHRzdGFja19hcmdfY250ID0gYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZyk7XG4mIzQzO1x0LyogRmlyc3QgMyBzdGFjayBhcmdzIGluIHJlZ3MsIHJlc3Qgb24gc3RhY2sgKi9cbiYjNDM7XHRjdHgtXHUwMDNlc3RhY2tfYXJnX3N6ID0gc3RhY2tfYXJnX2NudCBcdTAwM2UgUlZfRVhUUkFfU1RLX0FSR1MgP1xuJiM0MztcdFx0XHQgICAgcm91bmRfdXAoKHN0YWNrX2FyZ19jbnQgLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBTVEFDS19BTElHTikgOiAwO1xuJiM0MztcbiBcdGN0eC1cdTAwM2Vwcm9nID0gcHJvZztcbiBcdGN0eC1cdTAwM2VvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy1cdTAwM2VsZW4pO1xuIFx0aWYgKCFjdHgtXHUwMDNlb2Zmc2V0KVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDAyYzYzN2Q4NzQyMDUuLmZjZjg1MGYyNDRjOTAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0xMCw3ICYjNDM7MTAsNyBAQFxuICAqXHQtIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYICh0MClcbiAgKlxuICAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkksIHdoZXJlXG4tICogcHRyID0gQlBGX1JFR19GUCAoczUpICYjNDM7IEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZFxuJiM0MzsgKiBwdHIgPSBCUEZfUkVHX0ZQIChzNSkgJiM0MzsgQlBGX1JFR19BWCAodDApLiBCUEYgUjAtUjUgKHQ2LCBhMC1hNCkgYXJlIHNhdmVkXG4gICogYWNyb3NzIHRoZSBjYWxsOyBCUEZfUkVHX0ZQIChzNSkgaXMgY2FsbGVlLXNhdmVkIGFuZCBuZWVkcyBubyBzYXZpbmcuXG4gICovXG4gXG5AQCAtMjAsOCAmIzQzOzIwLDggQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRSRUdfU1x0czAsIDYqU1pSRUcoc3ApXG4gXHRhZGRpXHRzMCwgc3AsIDgqU1pSRUdcbiBcbi1cdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMC1SNSAoYTUsIGEwLWE0KSAqL1xuLVx0UkVHX1NcdGE1LCA1KlNaUkVHKHNwKVxuJiM0MztcdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMC1SNSAodDYsIGEwLWE0KSAqL1xuJiM0MztcdFJFR19TXHR0NiwgNSpTWlJFRyhzcClcbiBcdFJFR19TXHRhMCwgNCpTWlJFRyhzcClcbiBcdFJFR19TXHRhMSwgMypTWlJFRyhzcClcbiBcdFJFR19TXHRhMiwgMipTWlJFRyhzcClcbkBAIC0zOCw3ICYjNDM7MzgsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdFJFR19MXHRhMiwgMipTWlJFRyhzcClcbiBcdFJFR19MXHRhMSwgMypTWlJFRyhzcClcbiBcdFJFR19MXHRhMCwgNCpTWlJFRyhzcClcbi1cdFJFR19MXHRhNSwgNSpTWlJFRyhzcClcbiYjNDM7XHRSRUdfTFx0dDYsIDUqU1pSRUcoc3ApXG4gXG4gXHRSRUdfTFx0czAsIDYqU1pSRUcoc3ApXG4gXHRSRUdfTFx0cmEsIDcqU1pSRUcoc3ApXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCA4ZDM4YWFmZTY2YTI4Li5hYjEyMzk3YTliNTJhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC00LDcgJiM0Mzs0LDggQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBsb25nIHN1YnByb2dfY2FsbF9tZW1fa2Z1bmMobG9uZyBhLCBsb25nIGIsIGxvbmcgYywgbG9uZyBkLCBsb25nIGUsIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtMyw3ICYjNDM7Myw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gaW50IHN1YnByb2dfYmFkX29yZGVyXzZhcmdzKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSwgaW50IGYpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5pbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbkBAIC0yMSw3ICYjNDM7MjEsOCBAQCBzdHJ1Y3Qge1xuIFxuIGludCB0aW1lcl9yZXN1bHQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4mIzQzO1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5pbmRleCAzNDVmMmRhMmUzNjFiLi5iNmIxYThhYTdmNDRhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbkBAIC02LDcgJiM0Mzs2LDggQEBcbiAjaW5jbHVkZSBcJiMzNDticGZfa2Z1bmNzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggY2UwMzAxYTQxZmE5NC4uN2JhYTljMWM4ZTMxZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC02LDcgJiM0Mzs2LDggQEBcbiAjaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4mIzQzO1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfaml0X2lubGluZS5jXG5pbmRleCAwMmU1NjJmNTZmOWQzLi41YjkyZGEyYWI3NWNmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xuQEAgLTExLDcgJiM0MzsxMSw3IEBAIF9faml0ZWQoXCYjMzQ7XHRhZGRxXHQlZ3M6e3suKn19LCAlcmF4XCYjMzQ7KVxuIF9fYXJjaF9hcm02NFxuIF9faml0ZWQoXCYjMzQ7XHRtcnNcdHg4LCBTUF9FTDBcJiMzNDspXG4gX19hcmNoX3Jpc2N2NjRcbi1fX2ppdGVkKFwmIzM0O1x0bXZcdGE1LCB0cFwmIzM0OylcbiYjNDM7X19qaXRlZChcJiMzNDtcdG12XHR0NiwgdHBcJiMzNDspXG4gX19hcmNoX2xvb25nYXJjaFxuIF9faml0ZWQoXCYjMzQ7XHRtb3ZlXHQkYTUsICR0cFwmIzM0OylcbiBpbnQgaW5saW5lX2JwZl9nZXRfY3VycmVudF90YXNrKHZvaWQpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9sZHN4LmNcbmluZGV4IDdlMjVlMWI4Y2QwYjcuLjQ5ZThjZDRiYjRmOTkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jXG5AQCAtMjg5LDExICYjNDM7Mjg5LDExIEBAIF9faml0ZWQoXCYjMzQ7bGRyc2hcdHgyMiwgW3gxMSwgIzB4MThdXCYjMzQ7KVxuIF9faml0ZWQoXCYjMzQ7YWRkXHR4MTEsIHgwLCB4MjhcJiMzNDspXG4gX19qaXRlZChcJiMzNDtsZHJzYlx0eDIyLCBbeDExLCAjMHgyMF1cJiMzNDspXG4gX19hcmNoX3Jpc2N2NjRcbi1fX2ppdGVkKFwmIzM0O2FkZFx0dDIsIGE1LCBzN1wmIzM0OylcbiYjNDM7X19qaXRlZChcJiMzNDthZGRcdHQyLCB0NiwgczdcJiMzNDspXG4gX19qaXRlZChcJiMzNDtsd1x0czMsIDB4MTAodDIpXCYjMzQ7KVxuLV9faml0ZWQoXCYjMzQ7YWRkXHR0MiwgYTUsIHM3XCYjMzQ7KVxuJiM0MztfX2ppdGVkKFwmIzM0O2FkZFx0dDIsIHQ2LCBzN1wmIzM0OylcbiBfX2ppdGVkKFwmIzM0O2xoXHRzMywgMHgxOCh0MilcJiMzNDspXG4tX19qaXRlZChcJiMzNDthZGRcdHQyLCBhNSwgczdcJiMzNDspXG4mIzQzO19faml0ZWQoXCYjMzQ7YWRkXHR0MiwgdDYsIHM3XCYjMzQ7KVxuIF9faml0ZWQoXCYjMzQ7bGJcdHMzLCAweDIwKHQyKVwmIzM0OylcbiBfX2ppdGVkKFwmIzM0O2FkZFx0dDIsIGEwLCBzN1wmIzM0OylcbiBfX2ppdGVkKFwmIzM0O2x3XHRzNCwgMHgxMCh0MilcJiMzNDspXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA1MWQyMmZhZjQ1NTlmLi5mNmE0YTZhYTBlNjE3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICYjNDM7MTIsOCBAQCBzdHJ1Y3Qge1xuIFx0X190eXBlKHZhbHVlLCBsb25nIGxvbmcpO1xuIH0gbWFwX2hhc2hfOGIgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IDhlNDMyNTI3M2IzZDguLjU3ZjIyNjkxNzQ0YWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTUsNyAmIzQzOzUsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NzNhMzYyOTU4ZDU2YzhkZjAwNzVlYWFiYjFlZjRmODFkNWJlMGNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAxMjoxOTo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaAppbmRleCA0MTliOWQ3OTVmMmE3Li41YzRmNTMwNjBjOTE4IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCkBAIC0xMiw2ICYjNDM7MTIsOSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2ZpbHRlci5oJmd0OwogCiYjNDM7I2RlZmluZSBSVl9NQVhfUkVHX0FSR1MJCTgKJiM0MzsjZGVmaW5lIFJWX0VYVFJBX1NUS19BUkdTCShSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpCiYjNDM7CiAvKiB2ZXJpZnkgcnVudGltZSBkZXRlY3Rpb24gZXh0ZW5zaW9uIHN0YXR1cyAqLwogI2RlZmluZSBydl9leHRfZW5hYmxlZChleHQpIFwKIAkoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBXyMjZXh0KSAmYW1wOyZhbXA7IHJpc2N2X2hhc19leHRlbnNpb25fbGlrZWx5KFJJU0NWX0lTQV9FWFRfIyNleHQpKQpAQCAtODIsNiAmIzQzOzg1LDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGFja19zaXplOwogCWludCB0Y2Nfb2Zmc2V0OwomIzQzOwlpbnQgc3RhY2tfYXJnX3N6OwogCXU2NCBhcmVuYV92bV9zdGFydDsKIAl1NjQgdXNlcl92bV9zdGFydDsKIH07CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCBlNzM3OGJlMTcxYTlmLi43Zjg0NDQ3YTMxZmZkIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTE1LDcgJiM0MzsxNSw2IEBACiAjaW5jbHVkZSAmbHQ7YXNtL3BlcmNwdS5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfaml0LmgmIzM0OwogCi0jZGVmaW5lIFJWX01BWF9SRUdfQVJHUyA4CiAjZGVmaW5lIFJWX0ZFTlRSWV9OSU5TTlMgMgogI2RlZmluZSBSVl9GRU5UUllfTkJZVEVTIChSVl9GRU5UUllfTklOU05TICogNCkKIC8qIGltbSB0aGF0IGFsbG93cyBlbWl0X2ltbSB0byBlbWl0IG1heCBjb3VudCBpbnNucyAqLwpAQCAtMjMsMTEgJiM0MzsyMiwxMSBAQAogLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi8KICNkZWZpbmUgUlZfVEFJTENBTExfT0ZGU0VUICgoUlZfRkVOVFJZX05JTlNOUyAmIzQzOyAxKSAqIDQpCiAKLSNkZWZpbmUgUlZfUkVHX1RDQyBSVl9SRUdfQTYKJiM0MzsjZGVmaW5lIFJWX1JFR19UQ0MgUlZfUkVHX1Q1CiAjZGVmaW5lIFJWX1JFR19BUkVOQSBSVl9SRUdfUzcgLyogRm9yIHN0b3JpbmcgYXJlbmFfdm1fc3RhcnQgKi8KIAogc3RhdGljIGNvbnN0IGludCByZWdtYXBbXSA9IHsKLQlbQlBGX1JFR18wXSA9CVJWX1JFR19BNSwKJiM0MzsJW0JQRl9SRUdfMF0gPQlSVl9SRUdfVDYsCiAJW0JQRl9SRUdfMV0gPQlSVl9SRUdfQTAsCiAJW0JQRl9SRUdfMl0gPQlSVl9SRUdfQTEsCiAJW0JQRl9SRUdfM10gPQlSVl9SRUdfQTIsCkBAIC00NywxMyAmIzQzOzQ2LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgcHRfcmVnbWFwW10gPSB7CiAJW1JWX1JFR19BMl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTIpLAogCVtSVl9SRUdfQTNdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGEzKSwKIAlbUlZfUkVHX0E0XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBhNCksCi0JW1JWX1JFR19BNV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTUpLAogCVtSVl9SRUdfUzFdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMxKSwKIAlbUlZfUkVHX1MyXSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzMiksCiAJW1JWX1JFR19TM10gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczMpLAogCVtSVl9SRUdfUzRdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHM0KSwKIAlbUlZfUkVHX1M1XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzNSksCiAJW1JWX1JFR19UMF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgdDApLAomIzQzOwlbUlZfUkVHX1Q2XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCB0NiksCiB9OwogCiBlbnVtIHsKQEAgLTIzOSw3ICYjNDM7MjM4LDcgQEAgc3RhdGljIHZvaWQgX19idWlsZF9lcGlsb2d1ZShib29sIGlzX3RhaWxfY2FsbCwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7CiAJLyogU2V0IHJldHVybiB2YWx1ZS4gKi8KIAlpZiAoIWlzX3RhaWxfY2FsbCkKLQkJZW1pdF9hZGRpdyhSVl9SRUdfQTAsIFJWX1JFR19BNSwgMCwgY3R4KTsKJiM0MzsJCWVtaXRfYWRkaXcoUlZfUkVHX0EwLCByZWdtYXBbQlBGX1JFR18wXSwgMCwgY3R4KTsKIAllbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSwKIAkJICBpc190YWlsX2NhbGwgPyBSVl9UQUlMQ0FMTF9PRkZTRVQgOiAwLCBjdHgpOwogfQpAQCAtNDk4LDYgJiM0Mzs0OTcsMTggQEAgc3RhdGljIHZvaWQgZW1pdF9sZHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBib29sIHNpZ25fZXh0LAogCWN0eC0mZ3Q7ZXhfam1wX29mZiA9IGN0eC0mZ3Q7bmluc25zOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9zdGFja19hcmdfbGR4KHU4IHJkLCBzMTYgb2ZmLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCkKJiM0Mzt7CiYjNDM7CWludCBpZHggPSBvZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJaWYgKGlkeCAmbHQ7IFJWX0VYVFJBX1NUS19BUkdTKSB7CiYjNDM7CQllbWl0X212KHJkLCBSVl9SRUdfQTUgJiM0MzsgaWR4LCBjdHgpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWVtaXRfbGR4X2luc24ocmQsIChpZHggLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBSVl9SRUdfRlAsIEJQRl9EVywgZmFsc2UsIGN0eCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiB7CiAJZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7CkBAIC01MTUsNiAmIzQzOzUyNiwxOSBAQCBzdGF0aWMgdm9pZCBlbWl0X3N0KHU4IHJkLCBzMTYgb2ZmLCBzMzIgaW1tLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eAogCWN0eC0mZ3Q7ZXhfam1wX29mZiA9IGN0eC0mZ3Q7bmluc25zOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9zdGFja19hcmdfc3QoczE2IG9mZiwgczMyIGltbSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiYjNDM7ewomIzQzOwlpbnQgaWR4ID0gLW9mZiAvIDggLSAxOwomIzQzOwomIzQzOwlpZiAoaWR4ICZsdDsgUlZfRVhUUkFfU1RLX0FSR1MpIHsKJiM0MzsJCWVtaXRfaW1tKFJWX1JFR19BNSAmIzQzOyBpZHgsIGltbSwgY3R4KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwllbWl0X2ltbShSVl9SRUdfVDEsIGltbSwgY3R4KTsKJiM0MzsJZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIChpZHggLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBSVl9SRUdfVDEsIEJQRl9EVywgY3R4KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBlbWl0X3N0eCh1OCByZCwgczE2IG9mZiwgdTggcnMsIHU4IHNpemUsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQogewogCWlmIChpc18xMmJfaW50KG9mZikpIHsKQEAgLTUzMSw2ICYjNDM7NTU1LDE4IEBAIHN0YXRpYyB2b2lkIGVtaXRfc3R4KHU4IHJkLCBzMTYgb2ZmLCB1OCBycywgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJY3R4LSZndDtleF9qbXBfb2ZmID0gY3R4LSZndDtuaW5zbnM7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19zdHgoczE2IG9mZiwgdTggcnMsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQomIzQzO3sKJiM0MzsJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJaWYgKGlkeCAmbHQ7IFJWX0VYVFJBX1NUS19BUkdTKSB7CiYjNDM7CQllbWl0X212KFJWX1JFR19BNSAmIzQzOyBpZHgsIHJzLCBjdHgpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgcnMsIEJQRl9EVywgY3R4KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGVtaXRfYXRvbWljX2xkX3N0KHU4IHJkLCB1OCBycywgY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLAogCQkJICAgICBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCkKIHsKQEAgLTEwNzUsNyAmIzQzOzExMTEsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLAogCiAJc2F2ZV9yZXQgPSBmbGFncyAmYW1wOyAoQlBGX1RSQU1QX0ZfQ0FMTF9PUklHIHwgQlBGX1RSQU1QX0ZfUkVUX0ZFTlRSWV9SRVQpOwogCWlmIChzYXZlX3JldCkKLQkJc3RhY2tfc2l6ZSAmIzQzOz0gMTY7IC8qIFNhdmUgYm90aCBBNSAoQlBGIFIwKSBhbmQgQTAgKi8KJiM0MzsJCXN0YWNrX3NpemUgJiM0Mzs9IDE2OyAvKiBTYXZlIGJvdGggUlZfUkVHX1Q2IChCUEYgUjApIGFuZCBSVl9SRUdfQTAgKi8KIAlyZXR2YWxfb2ZmID0gc3RhY2tfc2l6ZTsKIAogCXN0YWNrX3NpemUgJiM0Mzs9IG5yX2FyZ19zbG90cyAqIDg7CkBAIC0xODI0LDExICYjNDM7MTg2MCwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAogCQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBmbS0mZ3Q7bnJfYXJnczsgaWR4JiM0MzsmIzQzOykgewotCQkJCXU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICYjNDM7IGlkeCwgY3R4KTsKIAkJCQlib29sIHNpZ24gPSBmbS0mZ3Q7YXJnX2ZsYWdzW2lkeF0gJmFtcDsgQlRGX0ZNT0RFTF9TSUdORURfQVJHOwotCi0JCQkJaWYgKHNpZ25fZXh0ZW5kKHJlZywgcmVnLCBmbS0mZ3Q7YXJnX3NpemVbaWR4XSwgc2lnbiwgY3R4KSkKLQkJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJCXU4IGFyZ19zeiA9IGZtLSZndDthcmdfc2l6ZVtpZHhdOwomIzQzOwomIzQzOwkJCQlpZiAoYXJnX3N6ID09IDggfHwgKGFyZ19zeiAhPSA0ICZhbXA7JmFtcDsgIXNpZ24pKQomIzQzOwkJCQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkJCWlmIChpZHggJmx0OyBSVl9NQVhfUkVHX0FSR1MpIHsKJiM0MzsJCQkJCWlmIChzaWduX2V4dGVuZChSVl9SRUdfQTAgJiM0MzsgaWR4LCBSVl9SRUdfQTAgJiM0MzsgaWR4LCBhcmdfc3osIHNpZ24sIGN0eCkpCiYjNDM7CQkJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJCX0gZWxzZSB7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19UMSwgKGlkeCAtIFJWX01BWF9SRUdfQVJHUykgKiA4LCBSVl9SRUdfU1AsIGN0eCk7CiYjNDM7CQkJCQlpZiAoc2lnbl9leHRlbmQoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGFyZ19zeiwgc2lnbiwgY3R4KSkKJiM0MzsJCQkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQkJCWVtaXRfc2QoUlZfUkVHX1NQLCAoaWR4IC0gUlZfTUFYX1JFR19BUkdTKSAqIDgsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJfQogCQkJfQogCQl9CiAKQEAgLTE5MjcsNyAmIzQzOzE5NzMsMTAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJCQlycyA9IFJWX1JFR19UMjsKIAkJfQogCi0JCWVtaXRfbGR4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgc2lnbl9leHQsIGN0eCk7CiYjNDM7CQlpZiAoaXNfc3RhY2tfYXJnX2xkeChpbnNuKSkKJiM0MzsJCQllbWl0X3N0YWNrX2FyZ19sZHgocmQsIG9mZiwgY3R4KTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0X2xkeChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIHNpZ25fZXh0LCBjdHgpOwogCiAJCXJldCA9IGFkZF9leGNlcHRpb25faGFuZGxlcihpbnNuLCByZCwgY3R4KTsKIAkJaWYgKHJldCkKQEAgLTE5NTcsNyAmIzQzOzIwMDYsMTAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJCQlyZCA9IFJWX1JFR19UMzsKIAkJfQogCi0JCWVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCWlmIChpc19zdGFja19hcmdfc3QoaW5zbikpCiYjNDM7CQkJZW1pdF9zdGFja19hcmdfc3Qob2ZmLCBpbW0sIGN0eCk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdF9zdChyZCwgb2ZmLCBpbW0sIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwogCiAJCXJldCA9IGFkZF9leGNlcHRpb25faGFuZGxlcihpbnNuLCBSRUdfRE9OVF9DTEVBUl9NQVJLRVIsIGN0eCk7CiAJCWlmIChyZXQpCkBAIC0xOTc5LDcgJiM0MzsyMDMxLDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCQkJcmQgPSBSVl9SRUdfVDI7CiAJCX0KIAotCQllbWl0X3N0eChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQlpZiAoaXNfc3RhY2tfYXJnX3N0eChpbnNuKSkKJiM0MzsJCQllbWl0X3N0YWNrX2FyZ19zdHgob2ZmLCBycywgY3R4KTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0X3N0eChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7CiAKIAkJcmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTsKIAkJaWYgKHJldCkKQEAgLTIwMjksOSAmIzQzOzIwODQsOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAogdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpCiB7Ci0JaW50IGksIHN0YWNrX2FkanVzdCA9IDAsIHN0b3JlX29mZnNldCwgYnBmX3N0YWNrX2FkanVzdDsKJiM0MzsJaW50IGksIHN0YWNrX2FkanVzdCA9IDAsIHN0b3JlX29mZnNldCwgYnBmX3N0YWNrX2FkanVzdCA9IGN0eC0mZ3Q7c3RhY2tfYXJnX3N6OwogCi0JYnBmX3N0YWNrX2FkanVzdCA9IHJvdW5kX3VwKGN0eC0mZ3Q7cHJvZy0mZ3Q7YXV4LSZndDtzdGFja19kZXB0aCwgU1RBQ0tfQUxJR04pOwomIzQzOwlicGZfc3RhY2tfYWRqdXN0ICYjNDM7PSByb3VuZF91cChjdHgtJmd0O3Byb2ctJmd0O2F1eC0mZ3Q7c3RhY2tfZGVwdGgsIFNUQUNLX0FMSUdOKTsKIAlpZiAoYnBmX3N0YWNrX2FkanVzdCkKIAkJbWFya19mcChjdHgpOwogCkBAIC0yMTkwLDMgJiM0MzsyMjQ1LDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpCiB7CiAJcmV0dXJuIHRydWU7CiB9CiYjNDM7CiYjNDM7Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKaW5kZXggY2JmY2QyODdlYTE2Ni4uMmZiMGI0ZTE5OGI5NCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKQEAgLTQ4LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJaW50IHBhc3MgPSAwLCBwcmV2X25pbnNucyA9IDAsIGk7CiAJc3RydWN0IHJ2X2ppdF9kYXRhICpqaXRfZGF0YTsKIAlzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eDsKJiM0MzsJdTE2IHN0YWNrX2FyZ19jbnQ7CiAKIAlpZiAoIXByb2ctJmd0O2ppdF9yZXF1ZXN0ZWQpCiAJCXJldHVybiBwcm9nOwpAQCAtNzEsNiAmIzQzOzcyLDEyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAKIAljdHgtJmd0O2FyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctJmd0O2F1eC0mZ3Q7YXJlbmEpOwogCWN0eC0mZ3Q7dXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKJiM0MzsKJiM0MzsJc3RhY2tfYXJnX2NudCA9IGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpOwomIzQzOwkvKiBGaXJzdCAzIHN0YWNrIGFyZ3MgaW4gcmVncywgcmVzdCBvbiBzdGFjayAqLwomIzQzOwljdHgtJmd0O3N0YWNrX2FyZ19zeiA9IHN0YWNrX2FyZ19jbnQgJmd0OyBSVl9FWFRSQV9TVEtfQVJHUyA/CiYjNDM7CQkJICAgIHJvdW5kX3VwKChzdGFja19hcmdfY250IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgU1RBQ0tfQUxJR04pIDogMDsKJiM0MzsKIAljdHgtJmd0O3Byb2cgPSBwcm9nOwogCWN0eC0mZ3Q7b2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctJmd0O2xlbik7CiAJaWYgKCFjdHgtJmd0O29mZnNldCkKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKaW5kZXggMDJjNjM3ZDg3NDIwNS4uZmNmODUwZjI0NGM5MCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTEwLDcgJiM0MzsxMCw3IEBACiAgKgktIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYICh0MCkKICAqCiAgKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZQotICogcHRyID0gQlBGX1JFR19GUCAoczUpICYjNDM7IEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZAomIzQzOyAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSAmIzQzOyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAodDYsIGEwLWE0KSBhcmUgc2F2ZWQKICAqIGFjcm9zcyB0aGUgY2FsbDsgQlBGX1JFR19GUCAoczUpIGlzIGNhbGxlZS1zYXZlZCBhbmQgbmVlZHMgbm8gc2F2aW5nLgogICovCiAKQEAgLTIwLDggJiM0MzsyMCw4IEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCVJFR19TCXMwLCA2KlNaUkVHKHNwKQogCWFkZGkJczAsIHNwLCA4KlNaUkVHCiAKLQkvKiBTYXZlIEJQRiByZWdpc3RlcnMgUjAtUjUgKGE1LCBhMC1hNCkgKi8KLQlSRUdfUwlhNSwgNSpTWlJFRyhzcCkKJiM0MzsJLyogU2F2ZSBCUEYgcmVnaXN0ZXJzIFIwLVI1ICh0NiwgYTAtYTQpICovCiYjNDM7CVJFR19TCXQ2LCA1KlNaUkVHKHNwKQogCVJFR19TCWEwLCA0KlNaUkVHKHNwKQogCVJFR19TCWExLCAzKlNaUkVHKHNwKQogCVJFR19TCWEyLCAyKlNaUkVHKHNwKQpAQCAtMzgsNyAmIzQzOzM4LDcgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiAJUkVHX0wJYTIsIDIqU1pSRUcoc3ApCiAJUkVHX0wJYTEsIDMqU1pSRUcoc3ApCiAJUkVHX0wJYTAsIDQqU1pSRUcoc3ApCi0JUkVHX0wJYTUsIDUqU1pSRUcoc3ApCiYjNDM7CVJFR19MCXQ2LCA1KlNaUkVHKHNwKQogCiAJUkVHX0wJczAsIDYqU1pSRUcoc3ApCiAJUkVHX0wJcmEsIDcqU1pSRUcoc3ApCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggOGQzOGFhZmU2NmEyOC4uYWIxMjM5N2E5YjUyYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwpAQCAtNCw3ICYjNDM7NCw4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtMyw3ICYjNDM7Myw4IEBACiAjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwppbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCkBAIC0yMSw3ICYjNDM7MjEsOCBAQCBzdHJ1Y3QgewogCiBpbnQgdGltZXJfcmVzdWx0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCmluZGV4IDM0NWYyZGEyZTM2MWIuLmI2YjFhOGFhN2Y0NGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKQEAgLTYsNyAmIzQzOzYsOCBAQAogI2luY2x1ZGUgJiMzNDticGZfa2Z1bmNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggY2UwMzAxYTQxZmE5NC4uN2JhYTljMWM4ZTMxZSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCkBAIC02LDcgJiM0Mzs2LDggQEAKICNpbmNsdWRlICYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmMKaW5kZXggMDJlNTYyZjU2ZjlkMy4uNWI5MmRhMmFiNzVjZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfaml0X2lubGluZS5jCkBAIC0xMSw3ICYjNDM7MTEsNyBAQCBfX2ppdGVkKCYjMzQ7CWFkZHEJJWdzOnt7Lip9fSwgJXJheCYjMzQ7KQogX19hcmNoX2FybTY0CiBfX2ppdGVkKCYjMzQ7CW1ycwl4OCwgU1BfRUwwJiMzNDspCiBfX2FyY2hfcmlzY3Y2NAotX19qaXRlZCgmIzM0OwltdglhNSwgdHAmIzM0OykKJiM0MztfX2ppdGVkKCYjMzQ7CW12CXQ2LCB0cCYjMzQ7KQogX19hcmNoX2xvb25nYXJjaAogX19qaXRlZCgmIzM0Owltb3ZlCSRhNSwgJHRwJiMzNDspCiBpbnQgaW5saW5lX2JwZl9nZXRfY3VycmVudF90YXNrKHZvaWQpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guYwppbmRleCA3ZTI1ZTFiOGNkMGI3Li40OWU4Y2Q0YmI0Zjk5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9sZHN4LmMKQEAgLTI4OSwxMSAmIzQzOzI4OSwxMSBAQCBfX2ppdGVkKCYjMzQ7bGRyc2gJeDIyLCBbeDExLCAjMHgxOF0mIzM0OykKIF9faml0ZWQoJiMzNDthZGQJeDExLCB4MCwgeDI4JiMzNDspCiBfX2ppdGVkKCYjMzQ7bGRyc2IJeDIyLCBbeDExLCAjMHgyMF0mIzM0OykKIF9fYXJjaF9yaXNjdjY0Ci1fX2ppdGVkKCYjMzQ7YWRkCXQyLCBhNSwgczcmIzM0OykKJiM0MztfX2ppdGVkKCYjMzQ7YWRkCXQyLCB0NiwgczcmIzM0OykKIF9faml0ZWQoJiMzNDtsdwlzMywgMHgxMCh0MikmIzM0OykKLV9faml0ZWQoJiMzNDthZGQJdDIsIGE1LCBzNyYjMzQ7KQomIzQzO19faml0ZWQoJiMzNDthZGQJdDIsIHQ2LCBzNyYjMzQ7KQogX19qaXRlZCgmIzM0O2xoCXMzLCAweDE4KHQyKSYjMzQ7KQotX19qaXRlZCgmIzM0O2FkZAl0MiwgYTUsIHM3JiMzNDspCiYjNDM7X19qaXRlZCgmIzM0O2FkZAl0MiwgdDYsIHM3JiMzNDspCiBfX2ppdGVkKCYjMzQ7bGIJczMsIDB4MjAodDIpJiMzNDspCiBfX2ppdGVkKCYjMzQ7YWRkCXQyLCBhMCwgczcmIzM0OykKIF9faml0ZWQoJiMzNDtsdwlzNCwgMHgxMCh0MikmIzM0OykKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwppbmRleCA1MWQyMmZhZjQ1NTlmLi5mNmE0YTZhYTBlNjE3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCkBAIC0xMiw3ICYjNDM7MTIsOCBAQCBzdHJ1Y3QgewogCV9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTsKIH0gbWFwX2hhc2hfOGIgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIF9fbm9pbmxpbmUgX191c2VkCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKaW5kZXggOGU0MzI1MjczYjNkOC4uNTdmMjI2OTE3NDRhZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtNSw3ICYjNDM7NSw4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDIwCgkJCQkJCQlvdXRwdXQ6IDEwOQoJCQkJCQkJdGhvdWdodHM6IDEwNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIENvZGUgTW9kaWZpY2F0aW9uIGZvciBGdXp6aW5nIEVsaWdpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAsIHNvIHRoYXQmIzM5O3MgdGhlIGtleS4gRmlyc3QsIGEgY2FyZWZ1bCBpbnNwZWN0aW9uIG9mIHRoZSBkaWZmIHJldmVhbHMgbW9kaWZpY2F0aW9ucyBhY3Jvc3Mgc2V2ZXJhbCBmaWxlcy4gSXQgbG9va3MgbGlrZSB3ZSBoYXZlIGNoYW5nZXMgaW4gYm90aCBrZXJuZWwgYW5kIHVzZXJzcGFjZSBjb21wb25lbnRzLiBBbGwgb2YgdGhlIGtlcm5lbCBjb2RlIGNoYW5nZXMgZmFsbCB3aXRoaW4gYGFyY2gvcmlzY3YvYCwgd2hpY2ggaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBSSVNDLVYgNjQtYml0IGFyY2hpdGVjdHVyZS4gVGhlIHVzZXJzcGFjZSBtb2RpZmljYXRpb25zIGFyZSBncm91cGVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYC4KCk5vdywgd2UgbmVlZCB0byBhcHBseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmeSBhIHNjZW5hcmlvIHdoZXJlIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFNlY3Rpb24gMiBvdXRsaW5lcyB0aGUgY29uZGl0aW9ucy4gQmFzaWNhbGx5LCB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiBhbGwgbW9kaWZpY2F0aW9ucyBmYWxsIGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczogbm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcywgU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBvciBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuCgpHaXZlbiB0aGUgcHJvbXB0JiMzOTtzIHRhcmdldCwgSSBzZWUgYSBjbGVhciBtYXRjaC4gQWxsIHRoZSBDL0FTTSBrZXJuZWwgY29kZSBpcyBjb250YWluZWQgd2l0aGluIGBhcmNoL3Jpc2N2L2AsIG1ha2luZyBpdCBleGNsdXNpdmUgdG8gdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuIFRoaXMgY29kZSBpcyBpbmhlcmVudGx5IHVucmVhY2hhYmxlIG9uIGBhbWQ2NGAuIFRoZW4sIGFsbCBvdGhlciBtb2RpZmljYXRpb25zIGV4aXN0IHdpdGhpbiBgdG9vbHMvYCwgd2hpY2ggaXMgY29uc2lkZXJlZCB1c2VyLXNwYWNlIHNlbGZ0ZXN0cy4gQmFzZWQgb24gdGhpcywgYWxsIG1vZGlmaWVkIGNvZGUgaXMgZWl0aGVyIHNwZWNpZmljIHRvIGEgbm9uLXRhcmdldCBhcmNoaXRlY3R1cmUgb3IgaW4gYHRvb2xzL2AsIGZpdHRpbmcgdGhlIGNyaXRlcmlhLgoKVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgZmlsZXMgbGlzdGVkIGluIHRoZSBkaWZmIGFyZSBjb21wcmVoZW5zaXZlOiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oYCwgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgLCBgYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLCBhbmQgYSBzZXQgb2YgZmlsZXMgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9gLiBObyBvdGhlciBmaWxlcyB3ZXJlIHRvdWNoZWQuCgpTbywgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIGFzc2Vzc21lbnQuIFdlIGNhbiBjb25maWRlbnRseSBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uOgoKKiAgIGBXb3J0aEZ1enppbmc9ZmFsc2VgCiogICBgRm9jdXNTeW1ib2xzPW51bGxgCiogICBgRW5hYmxlQ29uZmlncz1udWxsYAoqICAgYFJlYXNvbmluZ2A6ICYjMzQ7VGhlIG1vZGlmaWNhdGlvbnMgYXJlIGVpdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgKFJJU0MtVikgYW5kIHVucmVhY2hhYmxlIG9uIGFtZDY0LCBvciB0aGV5IHJlc2lkZSBpbiB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyAoYHRvb2xzL2ApLCBzYXRpc2Z5aW5nIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7QWxsIGtlcm5lbCBtb2RpZmljYXRpb25zIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBsb2NhdGVkIGluIGFyY2gvcmlzY3YvIChSSVNDLVYgQlBGIEpJVCBpbXBsZW1lbnRhdGlvbiksIHdoaWNoIGlzIHNwZWNpZmljIHRvIFJJU0MtViBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8gKHVzZXJzcGFjZSBzZWxmdGVzdHMpLiBDb25zZXF1ZW50bHksIG5vIHJlYWNoYWJsZSBrZXJuZWwgY29kZSBpcyBtb2RpZmllZCBmb3IgYW1kNjQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjoxOTo1Ni45NjM2MzYxOTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzQ4NjAwODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjE5OjU2Ljk2MzY0MDg4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2OTk1ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTczYTM2Mjk1OGQ1NmM4ZGYwMDc1ZWFhYmIxZWY0ZjgxZDViZTBjYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDEyOjE5OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbmluZGV4IDQxOWI5ZDc5NWYyYTcuLjVjNGY1MzA2MGM5MTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuQEAgLTEyLDYgKzEyLDkgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlsdGVyLmhcXHUwMDNlXFxuIFxcbisjZGVmaW5lIFJWX01BWF9SRUdfQVJHU1xcdFxcdDhcXG4rI2RlZmluZSBSVl9FWFRSQV9TVEtfQVJHU1xcdChSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpXFxuK1xcbiAvKiB2ZXJpZnkgcnVudGltZSBkZXRlY3Rpb24gZXh0ZW5zaW9uIHN0YXR1cyAqL1xcbiAjZGVmaW5lIHJ2X2V4dF9lbmFibGVkKGV4dCkgXFxcXFxcbiBcXHQoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBXyMjZXh0KSBcXHUwMDI2XFx1MDAyNiByaXNjdl9oYXNfZXh0ZW5zaW9uX2xpa2VseShSSVNDVl9JU0FfRVhUXyMjZXh0KSlcXG5AQCAtODIsNiArODUsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgc3RhY2tfc2l6ZTtcXG4gXFx0aW50IHRjY19vZmZzZXQ7XFxuK1xcdGludCBzdGFja19hcmdfc3o7XFxuIFxcdHU2NCBhcmVuYV92bV9zdGFydDtcXG4gXFx0dTY0IHVzZXJfdm1fc3RhcnQ7XFxuIH07XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZTczNzhiZTE3MWE5Zi4uN2Y4NDQ0N2EzMWZmZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbkBAIC0xNSw3ICsxNSw2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vcGVyY3B1LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJicGZfaml0LmhcXFwiXFxuIFxcbi0jZGVmaW5lIFJWX01BWF9SRUdfQVJHUyA4XFxuICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyXFxuICNkZWZpbmUgUlZfRkVOVFJZX05CWVRFUyAoUlZfRkVOVFJZX05JTlNOUyAqIDQpXFxuIC8qIGltbSB0aGF0IGFsbG93cyBlbWl0X2ltbSB0byBlbWl0IG1heCBjb3VudCBpbnNucyAqL1xcbkBAIC0yMywxMSArMjIsMTEgQEBcXG4gLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cXG4gI2RlZmluZSBSVl9UQUlMQ0FMTF9PRkZTRVQgKChSVl9GRU5UUllfTklOU05TICsgMSkgKiA0KVxcbiBcXG4tI2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19BNlxcbisjZGVmaW5lIFJWX1JFR19UQ0MgUlZfUkVHX1Q1XFxuICNkZWZpbmUgUlZfUkVHX0FSRU5BIFJWX1JFR19TNyAvKiBGb3Igc3RvcmluZyBhcmVuYV92bV9zdGFydCAqL1xcbiBcXG4gc3RhdGljIGNvbnN0IGludCByZWdtYXBbXSA9IHtcXG4tXFx0W0JQRl9SRUdfMF0gPVxcdFJWX1JFR19BNSxcXG4rXFx0W0JQRl9SRUdfMF0gPVxcdFJWX1JFR19UNixcXG4gXFx0W0JQRl9SRUdfMV0gPVxcdFJWX1JFR19BMCxcXG4gXFx0W0JQRl9SRUdfMl0gPVxcdFJWX1JFR19BMSxcXG4gXFx0W0JQRl9SRUdfM10gPVxcdFJWX1JFR19BMixcXG5AQCAtNDcsMTMgKzQ2LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgcHRfcmVnbWFwW10gPSB7XFxuIFxcdFtSVl9SRUdfQTJdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGEyKSxcXG4gXFx0W1JWX1JFR19BM10gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTMpLFxcbiBcXHRbUlZfUkVHX0E0XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBhNCksXFxuLVxcdFtSVl9SRUdfQTVdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGE1KSxcXG4gXFx0W1JWX1JFR19TMV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczEpLFxcbiBcXHRbUlZfUkVHX1MyXSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzMiksXFxuIFxcdFtSVl9SRUdfUzNdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMzKSxcXG4gXFx0W1JWX1JFR19TNF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczQpLFxcbiBcXHRbUlZfUkVHX1M1XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzNSksXFxuIFxcdFtSVl9SRUdfVDBdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHQwKSxcXG4rXFx0W1JWX1JFR19UNl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgdDYpLFxcbiB9O1xcbiBcXG4gZW51bSB7XFxuQEAgLTIzOSw3ICsyMzgsNyBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKGJvb2wgaXNfdGFpbF9jYWxsLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4gXFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XFxuIFxcdC8qIFNldCByZXR1cm4gdmFsdWUuICovXFxuIFxcdGlmICghaXNfdGFpbF9jYWxsKVxcbi1cXHRcXHRlbWl0X2FkZGl3KFJWX1JFR19BMCwgUlZfUkVHX0E1LCAwLCBjdHgpO1xcbitcXHRcXHRlbWl0X2FkZGl3KFJWX1JFR19BMCwgcmVnbWFwW0JQRl9SRUdfMF0sIDAsIGN0eCk7XFxuIFxcdGVtaXRfamFscihSVl9SRUdfWkVSTywgaXNfdGFpbF9jYWxsID8gUlZfUkVHX1QzIDogUlZfUkVHX1JBLFxcbiBcXHRcXHQgIGlzX3RhaWxfY2FsbCA/IFJWX1RBSUxDQUxMX09GRlNFVCA6IDAsIGN0eCk7XFxuIH1cXG5AQCAtNDk4LDYgKzQ5NywxOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2xkeCh1OCByZCwgczE2IG9mZiwgdTggcnMsIHU4IHNpemUsIGJvb2wgc2lnbl9leHQsXFxuIFxcdGN0eC1cXHUwMDNlZXhfam1wX29mZiA9IGN0eC1cXHUwMDNlbmluc25zO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19sZHgodTggcmQsIHMxNiBvZmYsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbit7XFxuK1xcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcXG4rXFxuK1xcdGlmIChpZHggXFx1MDAzYyBSVl9FWFRSQV9TVEtfQVJHUykge1xcbitcXHRcXHRlbWl0X212KHJkLCBSVl9SRUdfQTUgKyBpZHgsIGN0eCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0ZW1pdF9sZHhfaW5zbihyZCwgKGlkeCAtIFJWX0VYVFJBX1NUS19BUkdTKSAqIDgsIFJWX1JFR19GUCwgQlBGX0RXLCBmYWxzZSwgY3R4KTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuIHtcXG4gXFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XFxuQEAgLTUxNSw2ICs1MjYsMTkgQEAgc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHhcXG4gXFx0Y3R4LVxcdTAwM2VleF9qbXBfb2ZmID0gY3R4LVxcdTAwM2VuaW5zbnM7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGVtaXRfc3RhY2tfYXJnX3N0KHMxNiBvZmYsIHMzMiBpbW0sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbit7XFxuK1xcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XFxuK1xcbitcXHRpZiAoaWR4IFxcdTAwM2MgUlZfRVhUUkFfU1RLX0FSR1MpIHtcXG4rXFx0XFx0ZW1pdF9pbW0oUlZfUkVHX0E1ICsgaWR4LCBpbW0sIGN0eCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XFxuK1xcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgUlZfUkVHX1QxLCBCUEZfRFcsIGN0eCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGVtaXRfc3R4KHU4IHJkLCBzMTYgb2ZmLCB1OCBycywgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuIHtcXG4gXFx0aWYgKGlzXzEyYl9pbnQob2ZmKSkge1xcbkBAIC01MzEsNiArNTU1LDE4IEBAIHN0YXRpYyB2b2lkIGVtaXRfc3R4KHU4IHJkLCBzMTYgb2ZmLCB1OCBycywgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGN0eC1cXHUwMDNlZXhfam1wX29mZiA9IGN0eC1cXHUwMDNlbmluc25zO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19zdHgoczE2IG9mZiwgdTggcnMsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbit7XFxuK1xcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XFxuK1xcbitcXHRpZiAoaWR4IFxcdTAwM2MgUlZfRVhUUkFfU1RLX0FSR1MpIHtcXG4rXFx0XFx0ZW1pdF9tdihSVl9SRUdfQTUgKyBpZHgsIHJzLCBjdHgpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgcnMsIEJQRl9EVywgY3R4KTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBlbWl0X2F0b21pY19sZF9zdCh1OCByZCwgdTggcnMsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4ge1xcbkBAIC0xMDc1LDcgKzExMTEsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbiBcXG4gXFx0c2F2ZV9yZXQgPSBmbGFncyBcXHUwMDI2IChCUEZfVFJBTVBfRl9DQUxMX09SSUcgfCBCUEZfVFJBTVBfRl9SRVRfRkVOVFJZX1JFVCk7XFxuIFxcdGlmIChzYXZlX3JldClcXG4tXFx0XFx0c3RhY2tfc2l6ZSArPSAxNjsgLyogU2F2ZSBib3RoIEE1IChCUEYgUjApIGFuZCBBMCAqL1xcbitcXHRcXHRzdGFja19zaXplICs9IDE2OyAvKiBTYXZlIGJvdGggUlZfUkVHX1Q2IChCUEYgUjApIGFuZCBSVl9SRUdfQTAgKi9cXG4gXFx0cmV0dmFsX29mZiA9IHN0YWNrX3NpemU7XFxuIFxcbiBcXHRzdGFja19zaXplICs9IG5yX2FyZ19zbG90cyAqIDg7XFxuQEAgLTE4MjQsMTEgKzE4NjAsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0XFx0XFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBmbS1cXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcXG4tXFx0XFx0XFx0XFx0dTggcmVnID0gYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzEgKyBpZHgsIGN0eCk7XFxuIFxcdFxcdFxcdFxcdGJvb2wgc2lnbiA9IGZtLVxcdTAwM2VhcmdfZmxhZ3NbaWR4XSBcXHUwMDI2IEJURl9GTU9ERUxfU0lHTkVEX0FSRztcXG4tXFxuLVxcdFxcdFxcdFxcdGlmIChzaWduX2V4dGVuZChyZWcsIHJlZywgZm0tXFx1MDAzZWFyZ19zaXplW2lkeF0sIHNpZ24sIGN0eCkpXFxuLVxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHR1OCBhcmdfc3ogPSBmbS1cXHUwMDNlYXJnX3NpemVbaWR4XTtcXG4rXFxuK1xcdFxcdFxcdFxcdGlmIChhcmdfc3ogPT0gOCB8fCAoYXJnX3N6ICE9IDQgXFx1MDAyNlxcdTAwMjYgIXNpZ24pKVxcbitcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdFxcdFxcdGlmIChpZHggXFx1MDAzYyBSVl9NQVhfUkVHX0FSR1MpIHtcXG4rXFx0XFx0XFx0XFx0XFx0aWYgKHNpZ25fZXh0ZW5kKFJWX1JFR19BMCArIGlkeCwgUlZfUkVHX0EwICsgaWR4LCBhcmdfc3osIHNpZ24sIGN0eCkpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UMSwgKGlkeCAtIFJWX01BWF9SRUdfQVJHUykgKiA4LCBSVl9SRUdfU1AsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdFxcdGlmIChzaWduX2V4dGVuZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgYXJnX3N6LCBzaWduLCBjdHgpKVxcbitcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0XFx0XFx0XFx0ZW1pdF9zZChSVl9SRUdfU1AsIChpZHggLSBSVl9NQVhfUkVHX0FSR1MpICogOCwgUlZfUkVHX1QxLCBjdHgpO1xcbitcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG5AQCAtMTkyNyw3ICsxOTczLDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRcXHRcXHRycyA9IFJWX1JFR19UMjtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0ZW1pdF9sZHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBzaWduX2V4dCwgY3R4KTtcXG4rXFx0XFx0aWYgKGlzX3N0YWNrX2FyZ19sZHgoaW5zbikpXFxuK1xcdFxcdFxcdGVtaXRfc3RhY2tfYXJnX2xkeChyZCwgb2ZmLCBjdHgpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXRfbGR4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgc2lnbl9leHQsIGN0eCk7XFxuIFxcbiBcXHRcXHRyZXQgPSBhZGRfZXhjZXB0aW9uX2hhbmRsZXIoaW5zbiwgcmQsIGN0eCk7XFxuIFxcdFxcdGlmIChyZXQpXFxuQEAgLTE5NTcsNyArMjAwNiwxMCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0XFx0XFx0cmQgPSBSVl9SRUdfVDM7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0aWYgKGlzX3N0YWNrX2FyZ19zdChpbnNuKSlcXG4rXFx0XFx0XFx0ZW1pdF9zdGFja19hcmdfc3Qob2ZmLCBpbW0sIGN0eCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdF9zdChyZCwgb2ZmLCBpbW0sIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbiBcXG4gXFx0XFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcXG4gXFx0XFx0aWYgKHJldClcXG5AQCAtMTk3OSw3ICsyMDMxLDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRcXHRcXHRyZCA9IFJWX1JFR19UMjtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0ZW1pdF9zdHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbitcXHRcXHRpZiAoaXNfc3RhY2tfYXJnX3N0eChpbnNuKSlcXG4rXFx0XFx0XFx0ZW1pdF9zdGFja19hcmdfc3R4KG9mZiwgcnMsIGN0eCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdF9zdHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbiBcXG4gXFx0XFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcXG4gXFx0XFx0aWYgKHJldClcXG5AQCAtMjAyOSw5ICsyMDg0LDkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcbiB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcXG4ge1xcbi1cXHRpbnQgaSwgc3RhY2tfYWRqdXN0ID0gMCwgc3RvcmVfb2Zmc2V0LCBicGZfc3RhY2tfYWRqdXN0O1xcbitcXHRpbnQgaSwgc3RhY2tfYWRqdXN0ID0gMCwgc3RvcmVfb2Zmc2V0LCBicGZfc3RhY2tfYWRqdXN0ID0gY3R4LVxcdTAwM2VzdGFja19hcmdfc3o7XFxuIFxcbi1cXHRicGZfc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoY3R4LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0YWNrX2RlcHRoLCBTVEFDS19BTElHTik7XFxuK1xcdGJwZl9zdGFja19hZGp1c3QgKz0gcm91bmRfdXAoY3R4LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0YWNrX2RlcHRoLCBTVEFDS19BTElHTik7XFxuIFxcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxcbiBcXHRcXHRtYXJrX2ZwKGN0eCk7XFxuIFxcbkBAIC0yMTkwLDMgKzIyNDUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG4ge1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbitcXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZClcXG4re1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuaW5kZXggY2JmY2QyODdlYTE2Ni4uMmZiMGI0ZTE5OGI5NCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0aW50IHBhc3MgPSAwLCBwcmV2X25pbnNucyA9IDAsIGk7XFxuIFxcdHN0cnVjdCBydl9qaXRfZGF0YSAqaml0X2RhdGE7XFxuIFxcdHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4O1xcbitcXHR1MTYgc3RhY2tfYXJnX2NudDtcXG4gXFxuIFxcdGlmICghcHJvZy1cXHUwMDNlaml0X3JlcXVlc3RlZClcXG4gXFx0XFx0cmV0dXJuIHByb2c7XFxuQEAgLTcxLDYgKzcyLDEyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcbiBcXHRjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXJlbmEpO1xcbiBcXHRjdHgtXFx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhcmVuYSk7XFxuK1xcbitcXHRzdGFja19hcmdfY250ID0gYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZyk7XFxuK1xcdC8qIEZpcnN0IDMgc3RhY2sgYXJncyBpbiByZWdzLCByZXN0IG9uIHN0YWNrICovXFxuK1xcdGN0eC1cXHUwMDNlc3RhY2tfYXJnX3N6ID0gc3RhY2tfYXJnX2NudCBcXHUwMDNlIFJWX0VYVFJBX1NUS19BUkdTID9cXG4rXFx0XFx0XFx0ICAgIHJvdW5kX3VwKChzdGFja19hcmdfY250IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgU1RBQ0tfQUxJR04pIDogMDtcXG4rXFxuIFxcdGN0eC1cXHUwMDNlcHJvZyA9IHByb2c7XFxuIFxcdGN0eC1cXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXFx1MDAzZWxlbik7XFxuIFxcdGlmICghY3R4LVxcdTAwM2VvZmZzZXQpXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5pbmRleCAwMmM2MzdkODc0MjA1Li5mY2Y4NTBmMjQ0YzkwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5AQCAtMTAsNyArMTAsNyBAQFxcbiAgKlxcdC0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHQwKVxcbiAgKlxcbiAgKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZVxcbi0gKiBwdHIgPSBCUEZfUkVHX0ZQIChzNSkgKyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWRcXG4rICogcHRyID0gQlBGX1JFR19GUCAoczUpICsgQlBGX1JFR19BWCAodDApLiBCUEYgUjAtUjUgKHQ2LCBhMC1hNCkgYXJlIHNhdmVkXFxuICAqIGFjcm9zcyB0aGUgY2FsbDsgQlBGX1JFR19GUCAoczUpIGlzIGNhbGxlZS1zYXZlZCBhbmQgbmVlZHMgbm8gc2F2aW5nLlxcbiAgKi9cXG4gXFxuQEAgLTIwLDggKzIwLDggQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdFJFR19TXFx0czAsIDYqU1pSRUcoc3ApXFxuIFxcdGFkZGlcXHRzMCwgc3AsIDgqU1pSRUdcXG4gXFxuLVxcdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMC1SNSAoYTUsIGEwLWE0KSAqL1xcbi1cXHRSRUdfU1xcdGE1LCA1KlNaUkVHKHNwKVxcbitcXHQvKiBTYXZlIEJQRiByZWdpc3RlcnMgUjAtUjUgKHQ2LCBhMC1hNCkgKi9cXG4rXFx0UkVHX1NcXHR0NiwgNSpTWlJFRyhzcClcXG4gXFx0UkVHX1NcXHRhMCwgNCpTWlJFRyhzcClcXG4gXFx0UkVHX1NcXHRhMSwgMypTWlJFRyhzcClcXG4gXFx0UkVHX1NcXHRhMiwgMipTWlJFRyhzcClcXG5AQCAtMzgsNyArMzgsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4gXFx0UkVHX0xcXHRhMiwgMipTWlJFRyhzcClcXG4gXFx0UkVHX0xcXHRhMSwgMypTWlJFRyhzcClcXG4gXFx0UkVHX0xcXHRhMCwgNCpTWlJFRyhzcClcXG4tXFx0UkVHX0xcXHRhNSwgNSpTWlJFRyhzcClcXG4rXFx0UkVHX0xcXHR0NiwgNSpTWlJFRyhzcClcXG4gXFxuIFxcdFJFR19MXFx0czAsIDYqU1pSRUcoc3ApXFxuIFxcdFJFR19MXFx0cmEsIDcqU1pSRUcoc3ApXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbmluZGV4IDhkMzhhYWZlNjZhMjguLmFiMTIzOTdhOWI1MmEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuQEAgLTQsNyArNCw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuaW5kZXggOTliYzExNWY4MzgwYS4uYTk4MGEzYTM5OWQzZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuQEAgLTMsNyArMyw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcXG5pbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbkBAIC0yMSw3ICsyMSw4IEBAIHN0cnVjdCB7XFxuIFxcbiBpbnQgdGltZXJfcmVzdWx0O1xcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxcXFxuK1xcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXFxuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uYjZiMWE4YWE3ZjQ0YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcXG5AQCAtNiw3ICs2LDggQEBcXG4gI2luY2x1ZGUgXFxcImJwZl9rZnVuY3MuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuaW5kZXggY2UwMzAxYTQxZmE5NC4uN2JhYTljMWM4ZTMxZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbkBAIC02LDcgKzYsOCBAQFxcbiAjaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfaml0X2lubGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xcbmluZGV4IDAyZTU2MmY1NmY5ZDMuLjViOTJkYTJhYjc1Y2YgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmNcXG5AQCAtMTEsNyArMTEsNyBAQCBfX2ppdGVkKFxcXCJcXHRhZGRxXFx0JWdzOnt7Lip9fSwgJXJheFxcXCIpXFxuIF9fYXJjaF9hcm02NFxcbiBfX2ppdGVkKFxcXCJcXHRtcnNcXHR4OCwgU1BfRUwwXFxcIilcXG4gX19hcmNoX3Jpc2N2NjRcXG4tX19qaXRlZChcXFwiXFx0bXZcXHRhNSwgdHBcXFwiKVxcbitfX2ppdGVkKFxcXCJcXHRtdlxcdHQ2LCB0cFxcXCIpXFxuIF9fYXJjaF9sb29uZ2FyY2hcXG4gX19qaXRlZChcXFwiXFx0bW92ZVxcdCRhNSwgJHRwXFxcIilcXG4gaW50IGlubGluZV9icGZfZ2V0X2N1cnJlbnRfdGFzayh2b2lkKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guY1xcbmluZGV4IDdlMjVlMWI4Y2QwYjcuLjQ5ZThjZDRiYjRmOTkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9sZHN4LmNcXG5AQCAtMjg5LDExICsyODksMTEgQEAgX19qaXRlZChcXFwibGRyc2hcXHR4MjIsIFt4MTEsICMweDE4XVxcXCIpXFxuIF9faml0ZWQoXFxcImFkZFxcdHgxMSwgeDAsIHgyOFxcXCIpXFxuIF9faml0ZWQoXFxcImxkcnNiXFx0eDIyLCBbeDExLCAjMHgyMF1cXFwiKVxcbiBfX2FyY2hfcmlzY3Y2NFxcbi1fX2ppdGVkKFxcXCJhZGRcXHR0MiwgYTUsIHM3XFxcIilcXG4rX19qaXRlZChcXFwiYWRkXFx0dDIsIHQ2LCBzN1xcXCIpXFxuIF9faml0ZWQoXFxcImx3XFx0czMsIDB4MTAodDIpXFxcIilcXG4tX19qaXRlZChcXFwiYWRkXFx0dDIsIGE1LCBzN1xcXCIpXFxuK19faml0ZWQoXFxcImFkZFxcdHQyLCB0NiwgczdcXFwiKVxcbiBfX2ppdGVkKFxcXCJsaFxcdHMzLCAweDE4KHQyKVxcXCIpXFxuLV9faml0ZWQoXFxcImFkZFxcdHQyLCBhNSwgczdcXFwiKVxcbitfX2ppdGVkKFxcXCJhZGRcXHR0MiwgdDYsIHM3XFxcIilcXG4gX19qaXRlZChcXFwibGJcXHRzMywgMHgyMCh0MilcXFwiKVxcbiBfX2ppdGVkKFxcXCJhZGRcXHR0MiwgYTAsIHM3XFxcIilcXG4gX19qaXRlZChcXFwibHdcXHRzNCwgMHgxMCh0MilcXFwiKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcXG5pbmRleCA1MWQyMmZhZjQ1NTlmLi5mNmE0YTZhYTBlNjE3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbkBAIC0xMiw3ICsxMiw4IEBAIHN0cnVjdCB7XFxuIFxcdF9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTtcXG4gfSBtYXBfaGFzaF84YiBTRUMoXFxcIi5tYXBzXFxcIik7XFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXFxcXG4rXFx0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXFx1MDAyNlxcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiBcXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXFxuIFxcbiBfX25vaW5saW5lIF9fdXNlZFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5pbmRleCA4ZTQzMjUyNzNiM2Q4Li41N2YyMjY5MTc0NGFkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbkBAIC01LDcgKzUsOCBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxcXFxuK1xcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gX19ub2lubGluZSBfX3VzZWQgX19uYWtlZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjoxOTo1Ny40NDEzMDk0NjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjY4NzA5MTQ5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiQWxsIGtlcm5lbCBtb2RpZmljYXRpb25zIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBsb2NhdGVkIGluIGFyY2gvcmlzY3YvIChSSVNDLVYgQlBGIEpJVCBpbXBsZW1lbnRhdGlvbiksIHdoaWNoIGlzIHNwZWNpZmljIHRvIFJJU0MtViBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8gKHVzZXJzcGFjZSBzZWxmdGVzdHMpLiBDb25zZXF1ZW50bHksIG5vIHJlYWNoYWJsZSBrZXJuZWwgY29kZSBpcyBtb2RpZmllZCBmb3IgYW1kNjQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3M2EzNjI5NThkNTZjOGRmMDA3NWVhYWJiMWVmNGY4MWQ1YmUwY2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDEyOjE5OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCA0MTliOWQ3OTVmMmE3Li41YzRmNTMwNjBjOTE4IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbkBAIC0xMiw2ICsxMiw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maWx0ZXIuaFx1MDAzZVxuIFxuKyNkZWZpbmUgUlZfTUFYX1JFR19BUkdTXHRcdDhcbisjZGVmaW5lIFJWX0VYVFJBX1NUS19BUkdTXHQoUlZfTUFYX1JFR19BUkdTIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTKVxuK1xuIC8qIHZlcmlmeSBydW50aW1lIGRldGVjdGlvbiBleHRlbnNpb24gc3RhdHVzICovXG4gI2RlZmluZSBydl9leHRfZW5hYmxlZChleHQpIFxcXG4gXHQoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBXyMjZXh0KSBcdTAwMjZcdTAwMjYgcmlzY3ZfaGFzX2V4dGVuc2lvbl9saWtlbHkoUklTQ1ZfSVNBX0VYVF8jI2V4dCkpXG5AQCAtODIsNiArODUsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGludCBzdGFja19zaXplO1xuIFx0aW50IHRjY19vZmZzZXQ7XG4rXHRpbnQgc3RhY2tfYXJnX3N6O1xuIFx0dTY0IGFyZW5hX3ZtX3N0YXJ0O1xuIFx0dTY0IHVzZXJfdm1fc3RhcnQ7XG4gfTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggZTczNzhiZTE3MWE5Zi4uN2Y4NDQ0N2EzMWZmZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xNSw3ICsxNSw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3BlcmNwdS5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfaml0LmhcIlxuIFxuLSNkZWZpbmUgUlZfTUFYX1JFR19BUkdTIDhcbiAjZGVmaW5lIFJWX0ZFTlRSWV9OSU5TTlMgMlxuICNkZWZpbmUgUlZfRkVOVFJZX05CWVRFUyAoUlZfRkVOVFJZX05JTlNOUyAqIDQpXG4gLyogaW1tIHRoYXQgYWxsb3dzIGVtaXRfaW1tIHRvIGVtaXQgbWF4IGNvdW50IGluc25zICovXG5AQCAtMjMsMTEgKzIyLDExIEBAXG4gLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cbiAjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgKyAxKSAqIDQpXG4gXG4tI2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19BNlxuKyNkZWZpbmUgUlZfUkVHX1RDQyBSVl9SRUdfVDVcbiAjZGVmaW5lIFJWX1JFR19BUkVOQSBSVl9SRUdfUzcgLyogRm9yIHN0b3JpbmcgYXJlbmFfdm1fc3RhcnQgKi9cbiBcbiBzdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0ge1xuLVx0W0JQRl9SRUdfMF0gPVx0UlZfUkVHX0E1LFxuK1x0W0JQRl9SRUdfMF0gPVx0UlZfUkVHX1Q2LFxuIFx0W0JQRl9SRUdfMV0gPVx0UlZfUkVHX0EwLFxuIFx0W0JQRl9SRUdfMl0gPVx0UlZfUkVHX0ExLFxuIFx0W0JQRl9SRUdfM10gPVx0UlZfUkVHX0EyLFxuQEAgLTQ3LDEzICs0NiwxMyBAQCBzdGF0aWMgY29uc3QgaW50IHB0X3JlZ21hcFtdID0ge1xuIFx0W1JWX1JFR19BMl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTIpLFxuIFx0W1JWX1JFR19BM10gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTMpLFxuIFx0W1JWX1JFR19BNF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTQpLFxuLVx0W1JWX1JFR19BNV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTUpLFxuIFx0W1JWX1JFR19TMV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczEpLFxuIFx0W1JWX1JFR19TMl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczIpLFxuIFx0W1JWX1JFR19TM10gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczMpLFxuIFx0W1JWX1JFR19TNF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczQpLFxuIFx0W1JWX1JFR19TNV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczUpLFxuIFx0W1JWX1JFR19UMF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgdDApLFxuK1x0W1JWX1JFR19UNl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgdDYpLFxuIH07XG4gXG4gZW51bSB7XG5AQCAtMjM5LDcgKzIzOCw3IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoYm9vbCBpc190YWlsX2NhbGwsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xuIFx0aWYgKCFpc190YWlsX2NhbGwpXG4tXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCBSVl9SRUdfQTUsIDAsIGN0eCk7XG4rXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCByZWdtYXBbQlBGX1JFR18wXSwgMCwgY3R4KTtcbiBcdGVtaXRfamFscihSVl9SRUdfWkVSTywgaXNfdGFpbF9jYWxsID8gUlZfUkVHX1QzIDogUlZfUkVHX1JBLFxuIFx0XHQgIGlzX3RhaWxfY2FsbCA/IFJWX1RBSUxDQUxMX09GRlNFVCA6IDAsIGN0eCk7XG4gfVxuQEAgLTQ5OCw2ICs0OTcsMTggQEAgc3RhdGljIHZvaWQgZW1pdF9sZHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBib29sIHNpZ25fZXh0LFxuIFx0Y3R4LVx1MDAzZWV4X2ptcF9vZmYgPSBjdHgtXHUwMDNlbmluc25zO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19sZHgodTggcmQsIHMxNiBvZmYsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuK3tcbitcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcbitcbitcdGlmIChpZHggXHUwMDNjIFJWX0VYVFJBX1NUS19BUkdTKSB7XG4rXHRcdGVtaXRfbXYocmQsIFJWX1JFR19BNSArIGlkeCwgY3R4KTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0ZW1pdF9sZHhfaW5zbihyZCwgKGlkeCAtIFJWX0VYVFJBX1NUS19BUkdTKSAqIDgsIFJWX1JFR19GUCwgQlBGX0RXLCBmYWxzZSwgY3R4KTtcbit9XG4rXG4gc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4ge1xuIFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XG5AQCAtNTE1LDYgKzUyNiwxOSBAQCBzdGF0aWMgdm9pZCBlbWl0X3N0KHU4IHJkLCBzMTYgb2ZmLCBzMzIgaW1tLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eFxuIFx0Y3R4LVx1MDAzZWV4X2ptcF9vZmYgPSBjdHgtXHUwMDNlbmluc25zO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19zdChzMTYgb2ZmLCBzMzIgaW1tLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbit7XG4rXHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuK1xuK1x0aWYgKGlkeCBcdTAwM2MgUlZfRVhUUkFfU1RLX0FSR1MpIHtcbitcdFx0ZW1pdF9pbW0oUlZfUkVHX0E1ICsgaWR4LCBpbW0sIGN0eCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuK1x0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIChpZHggLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBSVl9SRUdfVDEsIEJQRl9EVywgY3R4KTtcbit9XG4rXG4gc3RhdGljIHZvaWQgZW1pdF9zdHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiB7XG4gXHRpZiAoaXNfMTJiX2ludChvZmYpKSB7XG5AQCAtNTMxLDYgKzU1NSwxOCBAQCBzdGF0aWMgdm9pZCBlbWl0X3N0eCh1OCByZCwgczE2IG9mZiwgdTggcnMsIHU4IHNpemUsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0Y3R4LVx1MDAzZWV4X2ptcF9vZmYgPSBjdHgtXHUwMDNlbmluc25zO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19zdHgoczE2IG9mZiwgdTggcnMsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuK3tcbitcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XG4rXG4rXHRpZiAoaWR4IFx1MDAzYyBSVl9FWFRSQV9TVEtfQVJHUykge1xuK1x0XHRlbWl0X212KFJWX1JFR19BNSArIGlkeCwgcnMsIGN0eCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgcnMsIEJQRl9EVywgY3R4KTtcbit9XG4rXG4gc3RhdGljIGludCBlbWl0X2F0b21pY19sZF9zdCh1OCByZCwgdTggcnMsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbiBcdFx0XHQgICAgIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIHtcbkBAIC0xMDc1LDcgKzExMTEsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFxuIFx0c2F2ZV9yZXQgPSBmbGFncyBcdTAwMjYgKEJQRl9UUkFNUF9GX0NBTExfT1JJRyB8IEJQRl9UUkFNUF9GX1JFVF9GRU5UUllfUkVUKTtcbiBcdGlmIChzYXZlX3JldClcbi1cdFx0c3RhY2tfc2l6ZSArPSAxNjsgLyogU2F2ZSBib3RoIEE1IChCUEYgUjApIGFuZCBBMCAqL1xuK1x0XHRzdGFja19zaXplICs9IDE2OyAvKiBTYXZlIGJvdGggUlZfUkVHX1Q2IChCUEYgUjApIGFuZCBSVl9SRUdfQTAgKi9cbiBcdHJldHZhbF9vZmYgPSBzdGFja19zaXplO1xuIFxuIFx0c3RhY2tfc2l6ZSArPSBucl9hcmdfc2xvdHMgKiA4O1xuQEAgLTE4MjQsMTEgKzE4NjAsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZm0tXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcbi1cdFx0XHRcdHU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICsgaWR4LCBjdHgpO1xuIFx0XHRcdFx0Ym9vbCBzaWduID0gZm0tXHUwMDNlYXJnX2ZsYWdzW2lkeF0gXHUwMDI2IEJURl9GTU9ERUxfU0lHTkVEX0FSRztcbi1cbi1cdFx0XHRcdGlmIChzaWduX2V4dGVuZChyZWcsIHJlZywgZm0tXHUwMDNlYXJnX3NpemVbaWR4XSwgc2lnbiwgY3R4KSlcbi1cdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0XHR1OCBhcmdfc3ogPSBmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdO1xuK1xuK1x0XHRcdFx0aWYgKGFyZ19zeiA9PSA4IHx8IChhcmdfc3ogIT0gNCBcdTAwMjZcdTAwMjYgIXNpZ24pKVxuK1x0XHRcdFx0XHRjb250aW51ZTtcbitcbitcdFx0XHRcdGlmIChpZHggXHUwMDNjIFJWX01BWF9SRUdfQVJHUykge1xuK1x0XHRcdFx0XHRpZiAoc2lnbl9leHRlbmQoUlZfUkVHX0EwICsgaWR4LCBSVl9SRUdfQTAgKyBpZHgsIGFyZ19zeiwgc2lnbiwgY3R4KSlcbitcdFx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCAoaWR4IC0gUlZfTUFYX1JFR19BUkdTKSAqIDgsIFJWX1JFR19TUCwgY3R4KTtcbitcdFx0XHRcdFx0aWYgKHNpZ25fZXh0ZW5kKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBhcmdfc3osIHNpZ24sIGN0eCkpXG4rXHRcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0XHRcdGVtaXRfc2QoUlZfUkVHX1NQLCAoaWR4IC0gUlZfTUFYX1JFR19BUkdTKSAqIDgsIFJWX1JFR19UMSwgY3R4KTtcbitcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdH1cbiBcbkBAIC0xOTI3LDcgKzE5NzMsMTAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0cnMgPSBSVl9SRUdfVDI7XG4gXHRcdH1cbiBcbi1cdFx0ZW1pdF9sZHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBzaWduX2V4dCwgY3R4KTtcbitcdFx0aWYgKGlzX3N0YWNrX2FyZ19sZHgoaW5zbikpXG4rXHRcdFx0ZW1pdF9zdGFja19hcmdfbGR4KHJkLCBvZmYsIGN0eCk7XG4rXHRcdGVsc2VcbitcdFx0XHRlbWl0X2xkeChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIHNpZ25fZXh0LCBjdHgpO1xuIFxuIFx0XHRyZXQgPSBhZGRfZXhjZXB0aW9uX2hhbmRsZXIoaW5zbiwgcmQsIGN0eCk7XG4gXHRcdGlmIChyZXQpXG5AQCAtMTk1Nyw3ICsyMDA2LDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdHJkID0gUlZfUkVHX1QzO1xuIFx0XHR9XG4gXG4tXHRcdGVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0aWYgKGlzX3N0YWNrX2FyZ19zdChpbnNuKSlcbitcdFx0XHRlbWl0X3N0YWNrX2FyZ19zdChvZmYsIGltbSwgY3R4KTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiBcbiBcdFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcbiBcdFx0aWYgKHJldClcbkBAIC0xOTc5LDcgKzIwMzEsMTAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0cmQgPSBSVl9SRUdfVDI7XG4gXHRcdH1cbiBcbi1cdFx0ZW1pdF9zdHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRpZiAoaXNfc3RhY2tfYXJnX3N0eChpbnNuKSlcbitcdFx0XHRlbWl0X3N0YWNrX2FyZ19zdHgob2ZmLCBycywgY3R4KTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXRfc3R4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiBcbiBcdFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcbiBcdFx0aWYgKHJldClcbkBAIC0yMDI5LDkgKzIwODQsOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcbiB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcbiB7XG4tXHRpbnQgaSwgc3RhY2tfYWRqdXN0ID0gMCwgc3RvcmVfb2Zmc2V0LCBicGZfc3RhY2tfYWRqdXN0O1xuK1x0aW50IGksIHN0YWNrX2FkanVzdCA9IDAsIHN0b3JlX29mZnNldCwgYnBmX3N0YWNrX2FkanVzdCA9IGN0eC1cdTAwM2VzdGFja19hcmdfc3o7XG4gXG4tXHRicGZfc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoY3R4LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZXN0YWNrX2RlcHRoLCBTVEFDS19BTElHTik7XG4rXHRicGZfc3RhY2tfYWRqdXN0ICs9IHJvdW5kX3VwKGN0eC1cdTAwM2Vwcm9nLVx1MDAzZWF1eC1cdTAwM2VzdGFja19kZXB0aCwgU1RBQ0tfQUxJR04pO1xuIFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXG4gXHRcdG1hcmtfZnAoY3R4KTtcbiBcbkBAIC0yMTkwLDMgKzIyNDUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiB7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4rXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggY2JmY2QyODdlYTE2Ni4uMmZiMGI0ZTE5OGI5NCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdGludCBwYXNzID0gMCwgcHJldl9uaW5zbnMgPSAwLCBpO1xuIFx0c3RydWN0IHJ2X2ppdF9kYXRhICpqaXRfZGF0YTtcbiBcdHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4O1xuK1x0dTE2IHN0YWNrX2FyZ19jbnQ7XG4gXG4gXHRpZiAoIXByb2ctXHUwMDNlaml0X3JlcXVlc3RlZClcbiBcdFx0cmV0dXJuIHByb2c7XG5AQCAtNzEsNiArNzIsMTIgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcbiBcdGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNldXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4rXG4rXHRzdGFja19hcmdfY250ID0gYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZyk7XG4rXHQvKiBGaXJzdCAzIHN0YWNrIGFyZ3MgaW4gcmVncywgcmVzdCBvbiBzdGFjayAqL1xuK1x0Y3R4LVx1MDAzZXN0YWNrX2FyZ19zeiA9IHN0YWNrX2FyZ19jbnQgXHUwMDNlIFJWX0VYVFJBX1NUS19BUkdTID9cbitcdFx0XHQgICAgcm91bmRfdXAoKHN0YWNrX2FyZ19jbnQgLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBTVEFDS19BTElHTikgOiAwO1xuK1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuIFx0Y3R4LVx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4gXHRpZiAoIWN0eC1cdTAwM2VvZmZzZXQpXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggMDJjNjM3ZDg3NDIwNS4uZmNmODUwZjI0NGM5MCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTEwLDcgKzEwLDcgQEBcbiAgKlx0LSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAodDApXG4gICpcbiAgKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZVxuLSAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSArIEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZFxuKyAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSArIEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1ICh0NiwgYTAtYTQpIGFyZSBzYXZlZFxuICAqIGFjcm9zcyB0aGUgY2FsbDsgQlBGX1JFR19GUCAoczUpIGlzIGNhbGxlZS1zYXZlZCBhbmQgbmVlZHMgbm8gc2F2aW5nLlxuICAqL1xuIFxuQEAgLTIwLDggKzIwLDggQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRSRUdfU1x0czAsIDYqU1pSRUcoc3ApXG4gXHRhZGRpXHRzMCwgc3AsIDgqU1pSRUdcbiBcbi1cdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMC1SNSAoYTUsIGEwLWE0KSAqL1xuLVx0UkVHX1NcdGE1LCA1KlNaUkVHKHNwKVxuK1x0LyogU2F2ZSBCUEYgcmVnaXN0ZXJzIFIwLVI1ICh0NiwgYTAtYTQpICovXG4rXHRSRUdfU1x0dDYsIDUqU1pSRUcoc3ApXG4gXHRSRUdfU1x0YTAsIDQqU1pSRUcoc3ApXG4gXHRSRUdfU1x0YTEsIDMqU1pSRUcoc3ApXG4gXHRSRUdfU1x0YTIsIDIqU1pSRUcoc3ApXG5AQCAtMzgsNyArMzgsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdFJFR19MXHRhMiwgMipTWlJFRyhzcClcbiBcdFJFR19MXHRhMSwgMypTWlJFRyhzcClcbiBcdFJFR19MXHRhMCwgNCpTWlJFRyhzcClcbi1cdFJFR19MXHRhNSwgNSpTWlJFRyhzcClcbitcdFJFR19MXHR0NiwgNSpTWlJFRyhzcClcbiBcbiBcdFJFR19MXHRzMCwgNipTWlJFRyhzcClcbiBcdFJFR19MXHRyYSwgNypTWlJFRyhzcClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IDhkMzhhYWZlNjZhMjguLmFiMTIzOTdhOWI1MmEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTQsNyArNCw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBsb25nIHN1YnByb2dfY2FsbF9tZW1fa2Z1bmMobG9uZyBhLCBsb25nIGIsIGxvbmcgYywgbG9uZyBkLCBsb25nIGUsIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtMyw3ICszLDggQEBcbiAjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gaW50IHN1YnByb2dfYmFkX29yZGVyXzZhcmdzKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSwgaW50IGYpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5pbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbkBAIC0yMSw3ICsyMSw4IEBAIHN0cnVjdCB7XG4gXG4gaW50IHRpbWVyX3Jlc3VsdDtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5pbmRleCAzNDVmMmRhMmUzNjFiLi5iNmIxYThhYTdmNDRhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbkBAIC02LDcgKzYsOCBAQFxuICNpbmNsdWRlIFwiYnBmX2tmdW5jcy5oXCJcbiAjaW5jbHVkZSBcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCBjZTAzMDFhNDFmYTk0Li43YmFhOWMxYzhlMzFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTYsNyArNiw4IEBAXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuICNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiAvKiBGb3JjZSBrZnVuYyBleHRlcm4gQlRGIGdlbmVyYXRpb24gZm9yIGlubGluZSBhc20gY2FsbCBiZWxvdy5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfaml0X2lubGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xuaW5kZXggMDJlNTYyZjU2ZjlkMy4uNWI5MmRhMmFiNzVjZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmNcbkBAIC0xMSw3ICsxMSw3IEBAIF9faml0ZWQoXCJcdGFkZHFcdCVnczp7ey4qfX0sICVyYXhcIilcbiBfX2FyY2hfYXJtNjRcbiBfX2ppdGVkKFwiXHRtcnNcdHg4LCBTUF9FTDBcIilcbiBfX2FyY2hfcmlzY3Y2NFxuLV9faml0ZWQoXCJcdG12XHRhNSwgdHBcIilcbitfX2ppdGVkKFwiXHRtdlx0dDYsIHRwXCIpXG4gX19hcmNoX2xvb25nYXJjaFxuIF9faml0ZWQoXCJcdG1vdmVcdCRhNSwgJHRwXCIpXG4gaW50IGlubGluZV9icGZfZ2V0X2N1cnJlbnRfdGFzayh2b2lkKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9sZHN4LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jXG5pbmRleCA3ZTI1ZTFiOGNkMGI3Li40OWU4Y2Q0YmI0Zjk5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guY1xuQEAgLTI4OSwxMSArMjg5LDExIEBAIF9faml0ZWQoXCJsZHJzaFx0eDIyLCBbeDExLCAjMHgxOF1cIilcbiBfX2ppdGVkKFwiYWRkXHR4MTEsIHgwLCB4MjhcIilcbiBfX2ppdGVkKFwibGRyc2JcdHgyMiwgW3gxMSwgIzB4MjBdXCIpXG4gX19hcmNoX3Jpc2N2NjRcbi1fX2ppdGVkKFwiYWRkXHR0MiwgYTUsIHM3XCIpXG4rX19qaXRlZChcImFkZFx0dDIsIHQ2LCBzN1wiKVxuIF9faml0ZWQoXCJsd1x0czMsIDB4MTAodDIpXCIpXG4tX19qaXRlZChcImFkZFx0dDIsIGE1LCBzN1wiKVxuK19faml0ZWQoXCJhZGRcdHQyLCB0NiwgczdcIilcbiBfX2ppdGVkKFwibGhcdHMzLCAweDE4KHQyKVwiKVxuLV9faml0ZWQoXCJhZGRcdHQyLCBhNSwgczdcIilcbitfX2ppdGVkKFwiYWRkXHR0MiwgdDYsIHM3XCIpXG4gX19qaXRlZChcImxiXHRzMywgMHgyMCh0MilcIilcbiBfX2ppdGVkKFwiYWRkXHR0MiwgYTAsIHM3XCIpXG4gX19qaXRlZChcImx3XHRzNCwgMHgxMCh0MilcIilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbmluZGV4IDUxZDIyZmFmNDU1OWYuLmY2YTRhNmFhMGU2MTcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xuQEAgLTEyLDcgKzEyLDggQEAgc3RydWN0IHtcbiBcdF9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTtcbiB9IG1hcF9oYXNoXzhiIFNFQyhcIi5tYXBzXCIpO1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IDhlNDMyNTI3M2IzZDguLjU3ZjIyNjkxNzQ0YWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTUsNyArNSw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWQgX19uYWtlZFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6MTk6NTcuNDQxMzEwNjEyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Njg3MDg5MTc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgQ29kZSBNb2RpZmljYXRpb24gZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAsIHNvIHRoYXQncyB0aGUga2V5LiBGaXJzdCwgYSBjYXJlZnVsIGluc3BlY3Rpb24gb2YgdGhlIGRpZmYgcmV2ZWFscyBtb2RpZmljYXRpb25zIGFjcm9zcyBzZXZlcmFsIGZpbGVzLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgY2hhbmdlcyBpbiBib3RoIGtlcm5lbCBhbmQgdXNlcnNwYWNlIGNvbXBvbmVudHMuIEFsbCBvZiB0aGUga2VybmVsIGNvZGUgY2hhbmdlcyBmYWxsIHdpdGhpbiBgYXJjaC9yaXNjdi9gLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMsIHNwZWNpZmljYWxseSBmb3IgdGhlIFJJU0MtViA2NC1iaXQgYXJjaGl0ZWN0dXJlLiBUaGUgdXNlcnNwYWNlIG1vZGlmaWNhdGlvbnMgYXJlIGdyb3VwZWQgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLlxuXG5Ob3csIHdlIG5lZWQgdG8gYXBwbHkgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgYSBzY2VuYXJpbyB3aGVyZSB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBTZWN0aW9uIDIgb3V0bGluZXMgdGhlIGNvbmRpdGlvbnMuIEJhc2ljYWxseSwgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgYWxsIG1vZGlmaWNhdGlvbnMgZmFsbCBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6IG5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgb3IgVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLlxuXG5HaXZlbiB0aGUgcHJvbXB0J3MgdGFyZ2V0LCBJIHNlZSBhIGNsZWFyIG1hdGNoLiBBbGwgdGhlIEMvQVNNIGtlcm5lbCBjb2RlIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGFyY2gvcmlzY3YvYCwgbWFraW5nIGl0IGV4Y2x1c2l2ZSB0byB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4gVGhpcyBjb2RlIGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgb24gYGFtZDY0YC4gVGhlbiwgYWxsIG90aGVyIG1vZGlmaWNhdGlvbnMgZXhpc3Qgd2l0aGluIGB0b29scy9gLCB3aGljaCBpcyBjb25zaWRlcmVkIHVzZXItc3BhY2Ugc2VsZnRlc3RzLiBCYXNlZCBvbiB0aGlzLCBhbGwgbW9kaWZpZWQgY29kZSBpcyBlaXRoZXIgc3BlY2lmaWMgdG8gYSBub24tdGFyZ2V0IGFyY2hpdGVjdHVyZSBvciBpbiBgdG9vbHMvYCwgZml0dGluZyB0aGUgY3JpdGVyaWEuXG5cblRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgZmlsZXMgbGlzdGVkIGluIHRoZSBkaWZmIGFyZSBjb21wcmVoZW5zaXZlOiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oYCwgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgLCBgYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLCBhbmQgYSBzZXQgb2YgZmlsZXMgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9gLiBObyBvdGhlciBmaWxlcyB3ZXJlIHRvdWNoZWQuXG5cblNvLCBJJ20gY29uZmlkZW50IGluIHRoZSBhc3Nlc3NtZW50LiBXZSBjYW4gY29uZmlkZW50bHkgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbjpcblxuKiAgIGBXb3J0aEZ1enppbmc9ZmFsc2VgXG4qICAgYEZvY3VzU3ltYm9scz1udWxsYFxuKiAgIGBFbmFibGVDb25maWdzPW51bGxgXG4qICAgYFJlYXNvbmluZ2A6IFwiVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGVpdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgKFJJU0MtVikgYW5kIHVucmVhY2hhYmxlIG9uIGFtZDY0LCBvciB0aGV5IHJlc2lkZSBpbiB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyAoYHRvb2xzL2ApLCBzYXRpc2Z5aW5nIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAyMCwiT3V0cHV0VG9rZW5zIjoxMDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6MjA6MDQuMzEyMjA0NTk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIkFsbCBrZXJuZWwgbW9kaWZpY2F0aW9ucyBpbiB0aGlzIHBhdGNoIHNlcmllcyBhcmUgbG9jYXRlZCBpbiBhcmNoL3Jpc2N2LyAoUklTQy1WIEJQRiBKSVQgaW1wbGVtZW50YXRpb24pLCB3aGljaCBpcyBzcGVjaWZpYyB0byBSSVNDLVYgYW5kIHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvICh1c2Vyc3BhY2Ugc2VsZnRlc3RzKS4gQ29uc2VxdWVudGx5LCBubyByZWFjaGFibGUga2VybmVsIGNvZGUgaXMgbW9kaWZpZWQgZm9yIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjIwOjA0LjMxMjIyNjI3NloiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowlcb5s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 11:59:41 +0000 UTC FinishedAt: 2026-09-06 12:20:05 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NzNhMzYyOTU4ZDU2YzhkZjAwNzVlYWFiYjFlZjRmODFkNWJlMGNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxMjoxOTo1NiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbmluZGV4IDQxOWI5ZDc5NWYyYTcuLjVjNGY1MzA2MGM5MTggMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuQEAgLTEyLDYgJiM0MzsxMiw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maWx0ZXIuaFx1MDAzZVxuIFxuJiM0MzsjZGVmaW5lIFJWX01BWF9SRUdfQVJHU1x0XHQ4XG4mIzQzOyNkZWZpbmUgUlZfRVhUUkFfU1RLX0FSR1NcdChSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpXG4mIzQzO1xuIC8qIHZlcmlmeSBydW50aW1lIGRldGVjdGlvbiBleHRlbnNpb24gc3RhdHVzICovXG4gI2RlZmluZSBydl9leHRfZW5hYmxlZChleHQpIFxcXG4gXHQoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBXyMjZXh0KSBcdTAwMjZcdTAwMjYgcmlzY3ZfaGFzX2V4dGVuc2lvbl9saWtlbHkoUklTQ1ZfSVNBX0VYVF8jI2V4dCkpXG5AQCAtODIsNiAmIzQzOzg1LDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgc3RhY2tfc2l6ZTtcbiBcdGludCB0Y2Nfb2Zmc2V0O1xuJiM0MztcdGludCBzdGFja19hcmdfc3o7XG4gXHR1NjQgYXJlbmFfdm1fc3RhcnQ7XG4gXHR1NjQgdXNlcl92bV9zdGFydDtcbiB9O1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBlNzM3OGJlMTcxYTlmLi43Zjg0NDQ3YTMxZmZkIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTE1LDcgJiM0MzsxNSw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3BlcmNwdS5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7YnBmX2ppdC5oXCYjMzQ7XG4gXG4tI2RlZmluZSBSVl9NQVhfUkVHX0FSR1MgOFxuICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyXG4gI2RlZmluZSBSVl9GRU5UUllfTkJZVEVTIChSVl9GRU5UUllfTklOU05TICogNClcbiAvKiBpbW0gdGhhdCBhbGxvd3MgZW1pdF9pbW0gdG8gZW1pdCBtYXggY291bnQgaW5zbnMgKi9cbkBAIC0yMywxMSAmIzQzOzIyLDExIEBAXG4gLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cbiAjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgJiM0MzsgMSkgKiA0KVxuIFxuLSNkZWZpbmUgUlZfUkVHX1RDQyBSVl9SRUdfQTZcbiYjNDM7I2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19UNVxuICNkZWZpbmUgUlZfUkVHX0FSRU5BIFJWX1JFR19TNyAvKiBGb3Igc3RvcmluZyBhcmVuYV92bV9zdGFydCAqL1xuIFxuIHN0YXRpYyBjb25zdCBpbnQgcmVnbWFwW10gPSB7XG4tXHRbQlBGX1JFR18wXSA9XHRSVl9SRUdfQTUsXG4mIzQzO1x0W0JQRl9SRUdfMF0gPVx0UlZfUkVHX1Q2LFxuIFx0W0JQRl9SRUdfMV0gPVx0UlZfUkVHX0EwLFxuIFx0W0JQRl9SRUdfMl0gPVx0UlZfUkVHX0ExLFxuIFx0W0JQRl9SRUdfM10gPVx0UlZfUkVHX0EyLFxuQEAgLTQ3LDEzICYjNDM7NDYsMTMgQEAgc3RhdGljIGNvbnN0IGludCBwdF9yZWdtYXBbXSA9IHtcbiBcdFtSVl9SRUdfQTJdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGEyKSxcbiBcdFtSVl9SRUdfQTNdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGEzKSxcbiBcdFtSVl9SRUdfQTRdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGE0KSxcbi1cdFtSVl9SRUdfQTVdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGE1KSxcbiBcdFtSVl9SRUdfUzFdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMxKSxcbiBcdFtSVl9SRUdfUzJdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMyKSxcbiBcdFtSVl9SRUdfUzNdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMzKSxcbiBcdFtSVl9SRUdfUzRdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHM0KSxcbiBcdFtSVl9SRUdfUzVdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHM1KSxcbiBcdFtSVl9SRUdfVDBdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHQwKSxcbiYjNDM7XHRbUlZfUkVHX1Q2XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCB0NiksXG4gfTtcbiBcbiBlbnVtIHtcbkBAIC0yMzksNyAmIzQzOzIzOCw3IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoYm9vbCBpc190YWlsX2NhbGwsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xuIFx0aWYgKCFpc190YWlsX2NhbGwpXG4tXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCBSVl9SRUdfQTUsIDAsIGN0eCk7XG4mIzQzO1x0XHRlbWl0X2FkZGl3KFJWX1JFR19BMCwgcmVnbWFwW0JQRl9SRUdfMF0sIDAsIGN0eCk7XG4gXHRlbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSxcbiBcdFx0ICBpc190YWlsX2NhbGwgPyBSVl9UQUlMQ0FMTF9PRkZTRVQgOiAwLCBjdHgpO1xuIH1cbkBAIC00OTgsNiAmIzQzOzQ5NywxOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2xkeCh1OCByZCwgczE2IG9mZiwgdTggcnMsIHU4IHNpemUsIGJvb2wgc2lnbl9leHQsXG4gXHRjdHgtXHUwMDNlZXhfam1wX29mZiA9IGN0eC1cdTAwM2VuaW5zbnM7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19sZHgodTggcmQsIHMxNiBvZmYsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGlkeCA9IG9mZiAvIDggLSAxO1xuJiM0MztcbiYjNDM7XHRpZiAoaWR4IFx1MDAzYyBSVl9FWFRSQV9TVEtfQVJHUykge1xuJiM0MztcdFx0ZW1pdF9tdihyZCwgUlZfUkVHX0E1ICYjNDM7IGlkeCwgY3R4KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVtaXRfbGR4X2luc24ocmQsIChpZHggLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBSVl9SRUdfRlAsIEJQRl9EVywgZmFsc2UsIGN0eCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4ge1xuIFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XG5AQCAtNTE1LDYgJiM0Mzs1MjYsMTkgQEAgc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHhcbiBcdGN0eC1cdTAwM2VleF9qbXBfb2ZmID0gY3R4LVx1MDAzZW5pbnNucztcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfc3RhY2tfYXJnX3N0KHMxNiBvZmYsIHMzMiBpbW0sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0aW50IGlkeCA9IC1vZmYgLyA4IC0gMTtcbiYjNDM7XG4mIzQzO1x0aWYgKGlkeCBcdTAwM2MgUlZfRVhUUkFfU1RLX0FSR1MpIHtcbiYjNDM7XHRcdGVtaXRfaW1tKFJWX1JFR19BNSAmIzQzOyBpZHgsIGltbSwgY3R4KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuJiM0MztcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgUlZfUkVHX1QxLCBCUEZfRFcsIGN0eCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZW1pdF9zdHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiB7XG4gXHRpZiAoaXNfMTJiX2ludChvZmYpKSB7XG5AQCAtNTMxLDYgJiM0Mzs1NTUsMTggQEAgc3RhdGljIHZvaWQgZW1pdF9zdHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdGN0eC1cdTAwM2VleF9qbXBfb2ZmID0gY3R4LVx1MDAzZW5pbnNucztcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfc3RhY2tfYXJnX3N0eChzMTYgb2ZmLCB1OCBycywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuJiM0MztcbiYjNDM7XHRpZiAoaWR4IFx1MDAzYyBSVl9FWFRSQV9TVEtfQVJHUykge1xuJiM0MztcdFx0ZW1pdF9tdihSVl9SRUdfQTUgJiM0MzsgaWR4LCBycywgY3R4KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgcnMsIEJQRl9EVywgY3R4KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGVtaXRfYXRvbWljX2xkX3N0KHU4IHJkLCB1OCBycywgY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuIFx0XHRcdCAgICAgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4ge1xuQEAgLTEwNzUsNyAmIzQzOzExMTEsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFxuIFx0c2F2ZV9yZXQgPSBmbGFncyBcdTAwMjYgKEJQRl9UUkFNUF9GX0NBTExfT1JJRyB8IEJQRl9UUkFNUF9GX1JFVF9GRU5UUllfUkVUKTtcbiBcdGlmIChzYXZlX3JldClcbi1cdFx0c3RhY2tfc2l6ZSAmIzQzOz0gMTY7IC8qIFNhdmUgYm90aCBBNSAoQlBGIFIwKSBhbmQgQTAgKi9cbiYjNDM7XHRcdHN0YWNrX3NpemUgJiM0Mzs9IDE2OyAvKiBTYXZlIGJvdGggUlZfUkVHX1Q2IChCUEYgUjApIGFuZCBSVl9SRUdfQTAgKi9cbiBcdHJldHZhbF9vZmYgPSBzdGFja19zaXplO1xuIFxuIFx0c3RhY2tfc2l6ZSAmIzQzOz0gbnJfYXJnX3Nsb3RzICogODtcbkBAIC0xODI0LDExICYjNDM7MTg2MCwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0XHRcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBmbS1cdTAwM2Vucl9hcmdzOyBpZHgmIzQzOyYjNDM7KSB7XG4tXHRcdFx0XHR1OCByZWcgPSBicGZfdG9fcnZfcmVnKEJQRl9SRUdfMSAmIzQzOyBpZHgsIGN0eCk7XG4gXHRcdFx0XHRib29sIHNpZ24gPSBmbS1cdTAwM2VhcmdfZmxhZ3NbaWR4XSBcdTAwMjYgQlRGX0ZNT0RFTF9TSUdORURfQVJHO1xuLVxuLVx0XHRcdFx0aWYgKHNpZ25fZXh0ZW5kKHJlZywgcmVnLCBmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdLCBzaWduLCBjdHgpKVxuLVx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHR1OCBhcmdfc3ogPSBmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdO1xuJiM0MztcbiYjNDM7XHRcdFx0XHRpZiAoYXJnX3N6ID09IDggfHwgKGFyZ19zeiAhPSA0IFx1MDAyNlx1MDAyNiAhc2lnbikpXG4mIzQzO1x0XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0aWYgKGlkeCBcdTAwM2MgUlZfTUFYX1JFR19BUkdTKSB7XG4mIzQzO1x0XHRcdFx0XHRpZiAoc2lnbl9leHRlbmQoUlZfUkVHX0EwICYjNDM7IGlkeCwgUlZfUkVHX0EwICYjNDM7IGlkeCwgYXJnX3N6LCBzaWduLCBjdHgpKVxuJiM0MztcdFx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdFx0ZW1pdF9sZChSVl9SRUdfVDEsIChpZHggLSBSVl9NQVhfUkVHX0FSR1MpICogOCwgUlZfUkVHX1NQLCBjdHgpO1xuJiM0MztcdFx0XHRcdFx0aWYgKHNpZ25fZXh0ZW5kKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBhcmdfc3osIHNpZ24sIGN0eCkpXG4mIzQzO1x0XHRcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdFx0ZW1pdF9zZChSVl9SRUdfU1AsIChpZHggLSBSVl9NQVhfUkVHX0FSR1MpICogOCwgUlZfUkVHX1QxLCBjdHgpO1xuJiM0MztcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdH1cbiBcbkBAIC0xOTI3LDcgJiM0MzsxOTczLDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdHJzID0gUlZfUkVHX1QyO1xuIFx0XHR9XG4gXG4tXHRcdGVtaXRfbGR4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgc2lnbl9leHQsIGN0eCk7XG4mIzQzO1x0XHRpZiAoaXNfc3RhY2tfYXJnX2xkeChpbnNuKSlcbiYjNDM7XHRcdFx0ZW1pdF9zdGFja19hcmdfbGR4KHJkLCBvZmYsIGN0eCk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXRfbGR4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgc2lnbl9leHQsIGN0eCk7XG4gXG4gXHRcdHJldCA9IGFkZF9leGNlcHRpb25faGFuZGxlcihpbnNuLCByZCwgY3R4KTtcbiBcdFx0aWYgKHJldClcbkBAIC0xOTU3LDcgJiM0MzsyMDA2LDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdHJkID0gUlZfUkVHX1QzO1xuIFx0XHR9XG4gXG4tXHRcdGVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiYjNDM7XHRcdGlmIChpc19zdGFja19hcmdfc3QoaW5zbikpXG4mIzQzO1x0XHRcdGVtaXRfc3RhY2tfYXJnX3N0KG9mZiwgaW1tLCBjdHgpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRlbWl0X3N0KHJkLCBvZmYsIGltbSwgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4gXG4gXHRcdHJldCA9IGFkZF9leGNlcHRpb25faGFuZGxlcihpbnNuLCBSRUdfRE9OVF9DTEVBUl9NQVJLRVIsIGN0eCk7XG4gXHRcdGlmIChyZXQpXG5AQCAtMTk3OSw3ICYjNDM7MjAzMSwxMCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHRyZCA9IFJWX1JFR19UMjtcbiBcdFx0fVxuIFxuLVx0XHRlbWl0X3N0eChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7XG4mIzQzO1x0XHRpZiAoaXNfc3RhY2tfYXJnX3N0eChpbnNuKSlcbiYjNDM7XHRcdFx0ZW1pdF9zdGFja19hcmdfc3R4KG9mZiwgcnMsIGN0eCk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGVtaXRfc3R4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiBcbiBcdFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcbiBcdFx0aWYgKHJldClcbkBAIC0yMDI5LDkgJiM0MzsyMDg0LDkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXG4gdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4ge1xuLVx0aW50IGksIHN0YWNrX2FkanVzdCA9IDAsIHN0b3JlX29mZnNldCwgYnBmX3N0YWNrX2FkanVzdDtcbiYjNDM7XHRpbnQgaSwgc3RhY2tfYWRqdXN0ID0gMCwgc3RvcmVfb2Zmc2V0LCBicGZfc3RhY2tfYWRqdXN0ID0gY3R4LVx1MDAzZXN0YWNrX2FyZ19zejtcbiBcbi1cdGJwZl9zdGFja19hZGp1c3QgPSByb3VuZF91cChjdHgtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGgsIFNUQUNLX0FMSUdOKTtcbiYjNDM7XHRicGZfc3RhY2tfYWRqdXN0ICYjNDM7PSByb3VuZF91cChjdHgtXHUwMDNlcHJvZy1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGgsIFNUQUNLX0FMSUdOKTtcbiBcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxuIFx0XHRtYXJrX2ZwKGN0eCk7XG4gXG5AQCAtMjE5MCwzICYjNDM7MjI0NSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbiYjNDM7XG4mIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19zdGFja19hcmdzKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IGNiZmNkMjg3ZWExNjYuLjJmYjBiNGUxOThiOTQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC00OCw2ICYjNDM7NDgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0aW50IHBhc3MgPSAwLCBwcmV2X25pbnNucyA9IDAsIGk7XG4gXHRzdHJ1Y3QgcnZfaml0X2RhdGEgKmppdF9kYXRhO1xuIFx0c3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHg7XG4mIzQzO1x0dTE2IHN0YWNrX2FyZ19jbnQ7XG4gXG4gXHRpZiAoIXByb2ctXHUwMDNlaml0X3JlcXVlc3RlZClcbiBcdFx0cmV0dXJuIHByb2c7XG5AQCAtNzEsNiAmIzQzOzcyLDEyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuJiM0MztcbiYjNDM7XHRzdGFja19hcmdfY250ID0gYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZyk7XG4mIzQzO1x0LyogRmlyc3QgMyBzdGFjayBhcmdzIGluIHJlZ3MsIHJlc3Qgb24gc3RhY2sgKi9cbiYjNDM7XHRjdHgtXHUwMDNlc3RhY2tfYXJnX3N6ID0gc3RhY2tfYXJnX2NudCBcdTAwM2UgUlZfRVhUUkFfU1RLX0FSR1MgP1xuJiM0MztcdFx0XHQgICAgcm91bmRfdXAoKHN0YWNrX2FyZ19jbnQgLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBTVEFDS19BTElHTikgOiAwO1xuJiM0MztcbiBcdGN0eC1cdTAwM2Vwcm9nID0gcHJvZztcbiBcdGN0eC1cdTAwM2VvZmZzZXQgPSBrdnphbGxvY19vYmpzKGludCwgcHJvZy1cdTAwM2VsZW4pO1xuIFx0aWYgKCFjdHgtXHUwMDNlb2Zmc2V0KVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDAyYzYzN2Q4NzQyMDUuLmZjZjg1MGYyNDRjOTAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0xMCw3ICYjNDM7MTAsNyBAQFxuICAqXHQtIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYICh0MClcbiAgKlxuICAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkksIHdoZXJlXG4tICogcHRyID0gQlBGX1JFR19GUCAoczUpICYjNDM7IEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZFxuJiM0MzsgKiBwdHIgPSBCUEZfUkVHX0ZQIChzNSkgJiM0MzsgQlBGX1JFR19BWCAodDApLiBCUEYgUjAtUjUgKHQ2LCBhMC1hNCkgYXJlIHNhdmVkXG4gICogYWNyb3NzIHRoZSBjYWxsOyBCUEZfUkVHX0ZQIChzNSkgaXMgY2FsbGVlLXNhdmVkIGFuZCBuZWVkcyBubyBzYXZpbmcuXG4gICovXG4gXG5AQCAtMjAsOCAmIzQzOzIwLDggQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRSRUdfU1x0czAsIDYqU1pSRUcoc3ApXG4gXHRhZGRpXHRzMCwgc3AsIDgqU1pSRUdcbiBcbi1cdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMC1SNSAoYTUsIGEwLWE0KSAqL1xuLVx0UkVHX1NcdGE1LCA1KlNaUkVHKHNwKVxuJiM0MztcdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMC1SNSAodDYsIGEwLWE0KSAqL1xuJiM0MztcdFJFR19TXHR0NiwgNSpTWlJFRyhzcClcbiBcdFJFR19TXHRhMCwgNCpTWlJFRyhzcClcbiBcdFJFR19TXHRhMSwgMypTWlJFRyhzcClcbiBcdFJFR19TXHRhMiwgMipTWlJFRyhzcClcbkBAIC0zOCw3ICYjNDM7MzgsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdFJFR19MXHRhMiwgMipTWlJFRyhzcClcbiBcdFJFR19MXHRhMSwgMypTWlJFRyhzcClcbiBcdFJFR19MXHRhMCwgNCpTWlJFRyhzcClcbi1cdFJFR19MXHRhNSwgNSpTWlJFRyhzcClcbiYjNDM7XHRSRUdfTFx0dDYsIDUqU1pSRUcoc3ApXG4gXG4gXHRSRUdfTFx0czAsIDYqU1pSRUcoc3ApXG4gXHRSRUdfTFx0cmEsIDcqU1pSRUcoc3ApXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCA4ZDM4YWFmZTY2YTI4Li5hYjEyMzk3YTliNTJhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC00LDcgJiM0Mzs0LDggQEBcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBsb25nIHN1YnByb2dfY2FsbF9tZW1fa2Z1bmMobG9uZyBhLCBsb25nIGIsIGxvbmcgYywgbG9uZyBkLCBsb25nIGUsIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtMyw3ICYjNDM7Myw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gaW50IHN1YnByb2dfYmFkX29yZGVyXzZhcmdzKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSwgaW50IGYpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5pbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbkBAIC0yMSw3ICYjNDM7MjEsOCBAQCBzdHJ1Y3Qge1xuIFxuIGludCB0aW1lcl9yZXN1bHQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4mIzQzO1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5pbmRleCAzNDVmMmRhMmUzNjFiLi5iNmIxYThhYTdmNDRhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbkBAIC02LDcgJiM0Mzs2LDggQEBcbiAjaW5jbHVkZSBcJiMzNDticGZfa2Z1bmNzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuaW5kZXggY2UwMzAxYTQxZmE5NC4uN2JhYTljMWM4ZTMxZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmNcbkBAIC02LDcgJiM0Mzs2LDggQEBcbiAjaW5jbHVkZSBcJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4mIzQzO1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfaml0X2lubGluZS5jXG5pbmRleCAwMmU1NjJmNTZmOWQzLi41YjkyZGEyYWI3NWNmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xuQEAgLTExLDcgJiM0MzsxMSw3IEBAIF9faml0ZWQoXCYjMzQ7XHRhZGRxXHQlZ3M6e3suKn19LCAlcmF4XCYjMzQ7KVxuIF9fYXJjaF9hcm02NFxuIF9faml0ZWQoXCYjMzQ7XHRtcnNcdHg4LCBTUF9FTDBcJiMzNDspXG4gX19hcmNoX3Jpc2N2NjRcbi1fX2ppdGVkKFwmIzM0O1x0bXZcdGE1LCB0cFwmIzM0OylcbiYjNDM7X19qaXRlZChcJiMzNDtcdG12XHR0NiwgdHBcJiMzNDspXG4gX19hcmNoX2xvb25nYXJjaFxuIF9faml0ZWQoXCYjMzQ7XHRtb3ZlXHQkYTUsICR0cFwmIzM0OylcbiBpbnQgaW5saW5lX2JwZl9nZXRfY3VycmVudF90YXNrKHZvaWQpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9sZHN4LmNcbmluZGV4IDdlMjVlMWI4Y2QwYjcuLjQ5ZThjZDRiYjRmOTkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jXG5AQCAtMjg5LDExICYjNDM7Mjg5LDExIEBAIF9faml0ZWQoXCYjMzQ7bGRyc2hcdHgyMiwgW3gxMSwgIzB4MThdXCYjMzQ7KVxuIF9faml0ZWQoXCYjMzQ7YWRkXHR4MTEsIHgwLCB4MjhcJiMzNDspXG4gX19qaXRlZChcJiMzNDtsZHJzYlx0eDIyLCBbeDExLCAjMHgyMF1cJiMzNDspXG4gX19hcmNoX3Jpc2N2NjRcbi1fX2ppdGVkKFwmIzM0O2FkZFx0dDIsIGE1LCBzN1wmIzM0OylcbiYjNDM7X19qaXRlZChcJiMzNDthZGRcdHQyLCB0NiwgczdcJiMzNDspXG4gX19qaXRlZChcJiMzNDtsd1x0czMsIDB4MTAodDIpXCYjMzQ7KVxuLV9faml0ZWQoXCYjMzQ7YWRkXHR0MiwgYTUsIHM3XCYjMzQ7KVxuJiM0MztfX2ppdGVkKFwmIzM0O2FkZFx0dDIsIHQ2LCBzN1wmIzM0OylcbiBfX2ppdGVkKFwmIzM0O2xoXHRzMywgMHgxOCh0MilcJiMzNDspXG4tX19qaXRlZChcJiMzNDthZGRcdHQyLCBhNSwgczdcJiMzNDspXG4mIzQzO19faml0ZWQoXCYjMzQ7YWRkXHR0MiwgdDYsIHM3XCYjMzQ7KVxuIF9faml0ZWQoXCYjMzQ7bGJcdHMzLCAweDIwKHQyKVwmIzM0OylcbiBfX2ppdGVkKFwmIzM0O2FkZFx0dDIsIGEwLCBzN1wmIzM0OylcbiBfX2ppdGVkKFwmIzM0O2x3XHRzNCwgMHgxMCh0MilcJiMzNDspXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG5pbmRleCA1MWQyMmZhZjQ1NTlmLi5mNmE0YTZhYTBlNjE3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbkBAIC0xMiw3ICYjNDM7MTIsOCBAQCBzdHJ1Y3Qge1xuIFx0X190eXBlKHZhbHVlLCBsb25nIGxvbmcpO1xuIH0gbWFwX2hhc2hfOGIgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuJiM0MzsjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbiYjNDM7XHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IDhlNDMyNTI3M2IzZDguLjU3ZjIyNjkxNzQ0YWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTUsNyAmIzQzOzUsOCBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4mIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuJiM0MztcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NzNhMzYyOTU4ZDU2YzhkZjAwNzVlYWFiYjFlZjRmODFkNWJlMGNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAxMjoxOTo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaAppbmRleCA0MTliOWQ3OTVmMmE3Li41YzRmNTMwNjBjOTE4IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCkBAIC0xMiw2ICYjNDM7MTIsOSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2JwZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2ZpbHRlci5oJmd0OwogCiYjNDM7I2RlZmluZSBSVl9NQVhfUkVHX0FSR1MJCTgKJiM0MzsjZGVmaW5lIFJWX0VYVFJBX1NUS19BUkdTCShSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpCiYjNDM7CiAvKiB2ZXJpZnkgcnVudGltZSBkZXRlY3Rpb24gZXh0ZW5zaW9uIHN0YXR1cyAqLwogI2RlZmluZSBydl9leHRfZW5hYmxlZChleHQpIFwKIAkoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBXyMjZXh0KSAmYW1wOyZhbXA7IHJpc2N2X2hhc19leHRlbnNpb25fbGlrZWx5KFJJU0NWX0lTQV9FWFRfIyNleHQpKQpAQCAtODIsNiAmIzQzOzg1LDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGFja19zaXplOwogCWludCB0Y2Nfb2Zmc2V0OwomIzQzOwlpbnQgc3RhY2tfYXJnX3N6OwogCXU2NCBhcmVuYV92bV9zdGFydDsKIAl1NjQgdXNlcl92bV9zdGFydDsKIH07CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwppbmRleCBlNzM3OGJlMTcxYTlmLi43Zjg0NDQ3YTMxZmZkIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTE1LDcgJiM0MzsxNSw2IEBACiAjaW5jbHVkZSAmbHQ7YXNtL3BlcmNwdS5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfaml0LmgmIzM0OwogCi0jZGVmaW5lIFJWX01BWF9SRUdfQVJHUyA4CiAjZGVmaW5lIFJWX0ZFTlRSWV9OSU5TTlMgMgogI2RlZmluZSBSVl9GRU5UUllfTkJZVEVTIChSVl9GRU5UUllfTklOU05TICogNCkKIC8qIGltbSB0aGF0IGFsbG93cyBlbWl0X2ltbSB0byBlbWl0IG1heCBjb3VudCBpbnNucyAqLwpAQCAtMjMsMTEgJiM0MzsyMiwxMSBAQAogLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi8KICNkZWZpbmUgUlZfVEFJTENBTExfT0ZGU0VUICgoUlZfRkVOVFJZX05JTlNOUyAmIzQzOyAxKSAqIDQpCiAKLSNkZWZpbmUgUlZfUkVHX1RDQyBSVl9SRUdfQTYKJiM0MzsjZGVmaW5lIFJWX1JFR19UQ0MgUlZfUkVHX1Q1CiAjZGVmaW5lIFJWX1JFR19BUkVOQSBSVl9SRUdfUzcgLyogRm9yIHN0b3JpbmcgYXJlbmFfdm1fc3RhcnQgKi8KIAogc3RhdGljIGNvbnN0IGludCByZWdtYXBbXSA9IHsKLQlbQlBGX1JFR18wXSA9CVJWX1JFR19BNSwKJiM0MzsJW0JQRl9SRUdfMF0gPQlSVl9SRUdfVDYsCiAJW0JQRl9SRUdfMV0gPQlSVl9SRUdfQTAsCiAJW0JQRl9SRUdfMl0gPQlSVl9SRUdfQTEsCiAJW0JQRl9SRUdfM10gPQlSVl9SRUdfQTIsCkBAIC00NywxMyAmIzQzOzQ2LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgcHRfcmVnbWFwW10gPSB7CiAJW1JWX1JFR19BMl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTIpLAogCVtSVl9SRUdfQTNdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGEzKSwKIAlbUlZfUkVHX0E0XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBhNCksCi0JW1JWX1JFR19BNV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTUpLAogCVtSVl9SRUdfUzFdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMxKSwKIAlbUlZfUkVHX1MyXSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzMiksCiAJW1JWX1JFR19TM10gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczMpLAogCVtSVl9SRUdfUzRdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHM0KSwKIAlbUlZfUkVHX1M1XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzNSksCiAJW1JWX1JFR19UMF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgdDApLAomIzQzOwlbUlZfUkVHX1Q2XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCB0NiksCiB9OwogCiBlbnVtIHsKQEAgLTIzOSw3ICYjNDM7MjM4LDcgQEAgc3RhdGljIHZvaWQgX19idWlsZF9lcGlsb2d1ZShib29sIGlzX3RhaWxfY2FsbCwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7CiAJLyogU2V0IHJldHVybiB2YWx1ZS4gKi8KIAlpZiAoIWlzX3RhaWxfY2FsbCkKLQkJZW1pdF9hZGRpdyhSVl9SRUdfQTAsIFJWX1JFR19BNSwgMCwgY3R4KTsKJiM0MzsJCWVtaXRfYWRkaXcoUlZfUkVHX0EwLCByZWdtYXBbQlBGX1JFR18wXSwgMCwgY3R4KTsKIAllbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSwKIAkJICBpc190YWlsX2NhbGwgPyBSVl9UQUlMQ0FMTF9PRkZTRVQgOiAwLCBjdHgpOwogfQpAQCAtNDk4LDYgJiM0Mzs0OTcsMTggQEAgc3RhdGljIHZvaWQgZW1pdF9sZHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBib29sIHNpZ25fZXh0LAogCWN0eC0mZ3Q7ZXhfam1wX29mZiA9IGN0eC0mZ3Q7bmluc25zOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9zdGFja19hcmdfbGR4KHU4IHJkLCBzMTYgb2ZmLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCkKJiM0Mzt7CiYjNDM7CWludCBpZHggPSBvZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJaWYgKGlkeCAmbHQ7IFJWX0VYVFJBX1NUS19BUkdTKSB7CiYjNDM7CQllbWl0X212KHJkLCBSVl9SRUdfQTUgJiM0MzsgaWR4LCBjdHgpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWVtaXRfbGR4X2luc24ocmQsIChpZHggLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBSVl9SRUdfRlAsIEJQRl9EVywgZmFsc2UsIGN0eCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiB7CiAJZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7CkBAIC01MTUsNiAmIzQzOzUyNiwxOSBAQCBzdGF0aWMgdm9pZCBlbWl0X3N0KHU4IHJkLCBzMTYgb2ZmLCBzMzIgaW1tLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eAogCWN0eC0mZ3Q7ZXhfam1wX29mZiA9IGN0eC0mZ3Q7bmluc25zOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9zdGFja19hcmdfc3QoczE2IG9mZiwgczMyIGltbSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiYjNDM7ewomIzQzOwlpbnQgaWR4ID0gLW9mZiAvIDggLSAxOwomIzQzOwomIzQzOwlpZiAoaWR4ICZsdDsgUlZfRVhUUkFfU1RLX0FSR1MpIHsKJiM0MzsJCWVtaXRfaW1tKFJWX1JFR19BNSAmIzQzOyBpZHgsIGltbSwgY3R4KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwllbWl0X2ltbShSVl9SRUdfVDEsIGltbSwgY3R4KTsKJiM0MzsJZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIChpZHggLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBSVl9SRUdfVDEsIEJQRl9EVywgY3R4KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBlbWl0X3N0eCh1OCByZCwgczE2IG9mZiwgdTggcnMsIHU4IHNpemUsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQogewogCWlmIChpc18xMmJfaW50KG9mZikpIHsKQEAgLTUzMSw2ICYjNDM7NTU1LDE4IEBAIHN0YXRpYyB2b2lkIGVtaXRfc3R4KHU4IHJkLCBzMTYgb2ZmLCB1OCBycywgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJY3R4LSZndDtleF9qbXBfb2ZmID0gY3R4LSZndDtuaW5zbnM7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19zdHgoczE2IG9mZiwgdTggcnMsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQomIzQzO3sKJiM0MzsJaW50IGlkeCA9IC1vZmYgLyA4IC0gMTsKJiM0MzsKJiM0MzsJaWYgKGlkeCAmbHQ7IFJWX0VYVFJBX1NUS19BUkdTKSB7CiYjNDM7CQllbWl0X212KFJWX1JFR19BNSAmIzQzOyBpZHgsIHJzLCBjdHgpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgcnMsIEJQRl9EVywgY3R4KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGVtaXRfYXRvbWljX2xkX3N0KHU4IHJkLCB1OCBycywgY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLAogCQkJICAgICBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCkKIHsKQEAgLTEwNzUsNyAmIzQzOzExMTEsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLAogCiAJc2F2ZV9yZXQgPSBmbGFncyAmYW1wOyAoQlBGX1RSQU1QX0ZfQ0FMTF9PUklHIHwgQlBGX1RSQU1QX0ZfUkVUX0ZFTlRSWV9SRVQpOwogCWlmIChzYXZlX3JldCkKLQkJc3RhY2tfc2l6ZSAmIzQzOz0gMTY7IC8qIFNhdmUgYm90aCBBNSAoQlBGIFIwKSBhbmQgQTAgKi8KJiM0MzsJCXN0YWNrX3NpemUgJiM0Mzs9IDE2OyAvKiBTYXZlIGJvdGggUlZfUkVHX1Q2IChCUEYgUjApIGFuZCBSVl9SRUdfQTAgKi8KIAlyZXR2YWxfb2ZmID0gc3RhY2tfc2l6ZTsKIAogCXN0YWNrX3NpemUgJiM0Mzs9IG5yX2FyZ19zbG90cyAqIDg7CkBAIC0xODI0LDExICYjNDM7MTg2MCwyMSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAogCQkJZm9yIChpZHggPSAwOyBpZHggJmx0OyBmbS0mZ3Q7bnJfYXJnczsgaWR4JiM0MzsmIzQzOykgewotCQkJCXU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICYjNDM7IGlkeCwgY3R4KTsKIAkJCQlib29sIHNpZ24gPSBmbS0mZ3Q7YXJnX2ZsYWdzW2lkeF0gJmFtcDsgQlRGX0ZNT0RFTF9TSUdORURfQVJHOwotCi0JCQkJaWYgKHNpZ25fZXh0ZW5kKHJlZywgcmVnLCBmbS0mZ3Q7YXJnX3NpemVbaWR4XSwgc2lnbiwgY3R4KSkKLQkJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJCXU4IGFyZ19zeiA9IGZtLSZndDthcmdfc2l6ZVtpZHhdOwomIzQzOwomIzQzOwkJCQlpZiAoYXJnX3N6ID09IDggfHwgKGFyZ19zeiAhPSA0ICZhbXA7JmFtcDsgIXNpZ24pKQomIzQzOwkJCQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkJCWlmIChpZHggJmx0OyBSVl9NQVhfUkVHX0FSR1MpIHsKJiM0MzsJCQkJCWlmIChzaWduX2V4dGVuZChSVl9SRUdfQTAgJiM0MzsgaWR4LCBSVl9SRUdfQTAgJiM0MzsgaWR4LCBhcmdfc3osIHNpZ24sIGN0eCkpCiYjNDM7CQkJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJCX0gZWxzZSB7CiYjNDM7CQkJCQllbWl0X2xkKFJWX1JFR19UMSwgKGlkeCAtIFJWX01BWF9SRUdfQVJHUykgKiA4LCBSVl9SRUdfU1AsIGN0eCk7CiYjNDM7CQkJCQlpZiAoc2lnbl9leHRlbmQoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGFyZ19zeiwgc2lnbiwgY3R4KSkKJiM0MzsJCQkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQkJCWVtaXRfc2QoUlZfUkVHX1NQLCAoaWR4IC0gUlZfTUFYX1JFR19BUkdTKSAqIDgsIFJWX1JFR19UMSwgY3R4KTsKJiM0MzsJCQkJfQogCQkJfQogCQl9CiAKQEAgLTE5MjcsNyAmIzQzOzE5NzMsMTAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJCQlycyA9IFJWX1JFR19UMjsKIAkJfQogCi0JCWVtaXRfbGR4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgc2lnbl9leHQsIGN0eCk7CiYjNDM7CQlpZiAoaXNfc3RhY2tfYXJnX2xkeChpbnNuKSkKJiM0MzsJCQllbWl0X3N0YWNrX2FyZ19sZHgocmQsIG9mZiwgY3R4KTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0X2xkeChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIHNpZ25fZXh0LCBjdHgpOwogCiAJCXJldCA9IGFkZF9leGNlcHRpb25faGFuZGxlcihpbnNuLCByZCwgY3R4KTsKIAkJaWYgKHJldCkKQEAgLTE5NTcsNyAmIzQzOzIwMDYsMTAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJCQlyZCA9IFJWX1JFR19UMzsKIAkJfQogCi0JCWVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTsKJiM0MzsJCWlmIChpc19zdGFja19hcmdfc3QoaW5zbikpCiYjNDM7CQkJZW1pdF9zdGFja19hcmdfc3Qob2ZmLCBpbW0sIGN0eCk7CiYjNDM7CQllbHNlCiYjNDM7CQkJZW1pdF9zdChyZCwgb2ZmLCBpbW0sIEJQRl9TSVpFKGNvZGUpLCBjdHgpOwogCiAJCXJldCA9IGFkZF9leGNlcHRpb25faGFuZGxlcihpbnNuLCBSRUdfRE9OVF9DTEVBUl9NQVJLRVIsIGN0eCk7CiAJCWlmIChyZXQpCkBAIC0xOTc5LDcgJiM0MzsyMDMxLDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCQkJcmQgPSBSVl9SRUdfVDI7CiAJCX0KIAotCQllbWl0X3N0eChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7CiYjNDM7CQlpZiAoaXNfc3RhY2tfYXJnX3N0eChpbnNuKSkKJiM0MzsJCQllbWl0X3N0YWNrX2FyZ19zdHgob2ZmLCBycywgY3R4KTsKJiM0MzsJCWVsc2UKJiM0MzsJCQllbWl0X3N0eChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIGN0eCk7CiAKIAkJcmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTsKIAkJaWYgKHJldCkKQEAgLTIwMjksOSAmIzQzOzIwODQsOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwKIAogdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpCiB7Ci0JaW50IGksIHN0YWNrX2FkanVzdCA9IDAsIHN0b3JlX29mZnNldCwgYnBmX3N0YWNrX2FkanVzdDsKJiM0MzsJaW50IGksIHN0YWNrX2FkanVzdCA9IDAsIHN0b3JlX29mZnNldCwgYnBmX3N0YWNrX2FkanVzdCA9IGN0eC0mZ3Q7c3RhY2tfYXJnX3N6OwogCi0JYnBmX3N0YWNrX2FkanVzdCA9IHJvdW5kX3VwKGN0eC0mZ3Q7cHJvZy0mZ3Q7YXV4LSZndDtzdGFja19kZXB0aCwgU1RBQ0tfQUxJR04pOwomIzQzOwlicGZfc3RhY2tfYWRqdXN0ICYjNDM7PSByb3VuZF91cChjdHgtJmd0O3Byb2ctJmd0O2F1eC0mZ3Q7c3RhY2tfZGVwdGgsIFNUQUNLX0FMSUdOKTsKIAlpZiAoYnBmX3N0YWNrX2FkanVzdCkKIAkJbWFya19mcChjdHgpOwogCkBAIC0yMTkwLDMgJiM0MzsyMjQ1LDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpCiB7CiAJcmV0dXJuIHRydWU7CiB9CiYjNDM7CiYjNDM7Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKaW5kZXggY2JmY2QyODdlYTE2Ni4uMmZiMGI0ZTE5OGI5NCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKQEAgLTQ4LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJaW50IHBhc3MgPSAwLCBwcmV2X25pbnNucyA9IDAsIGk7CiAJc3RydWN0IHJ2X2ppdF9kYXRhICpqaXRfZGF0YTsKIAlzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eDsKJiM0MzsJdTE2IHN0YWNrX2FyZ19jbnQ7CiAKIAlpZiAoIXByb2ctJmd0O2ppdF9yZXF1ZXN0ZWQpCiAJCXJldHVybiBwcm9nOwpAQCAtNzEsNiAmIzQzOzcyLDEyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAKIAljdHgtJmd0O2FyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctJmd0O2F1eC0mZ3Q7YXJlbmEpOwogCWN0eC0mZ3Q7dXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKJiM0MzsKJiM0MzsJc3RhY2tfYXJnX2NudCA9IGJwZl9vdXRfc3RhY2tfYXJnX2NudChlbnYsIHByb2cpOwomIzQzOwkvKiBGaXJzdCAzIHN0YWNrIGFyZ3MgaW4gcmVncywgcmVzdCBvbiBzdGFjayAqLwomIzQzOwljdHgtJmd0O3N0YWNrX2FyZ19zeiA9IHN0YWNrX2FyZ19jbnQgJmd0OyBSVl9FWFRSQV9TVEtfQVJHUyA/CiYjNDM7CQkJICAgIHJvdW5kX3VwKChzdGFja19hcmdfY250IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgU1RBQ0tfQUxJR04pIDogMDsKJiM0MzsKIAljdHgtJmd0O3Byb2cgPSBwcm9nOwogCWN0eC0mZ3Q7b2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctJmd0O2xlbik7CiAJaWYgKCFjdHgtJmd0O29mZnNldCkKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKaW5kZXggMDJjNjM3ZDg3NDIwNS4uZmNmODUwZjI0NGM5MCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTEwLDcgJiM0MzsxMCw3IEBACiAgKgktIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYICh0MCkKICAqCiAgKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZQotICogcHRyID0gQlBGX1JFR19GUCAoczUpICYjNDM7IEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZAomIzQzOyAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSAmIzQzOyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAodDYsIGEwLWE0KSBhcmUgc2F2ZWQKICAqIGFjcm9zcyB0aGUgY2FsbDsgQlBGX1JFR19GUCAoczUpIGlzIGNhbGxlZS1zYXZlZCBhbmQgbmVlZHMgbm8gc2F2aW5nLgogICovCiAKQEAgLTIwLDggJiM0MzsyMCw4IEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCVJFR19TCXMwLCA2KlNaUkVHKHNwKQogCWFkZGkJczAsIHNwLCA4KlNaUkVHCiAKLQkvKiBTYXZlIEJQRiByZWdpc3RlcnMgUjAtUjUgKGE1LCBhMC1hNCkgKi8KLQlSRUdfUwlhNSwgNSpTWlJFRyhzcCkKJiM0MzsJLyogU2F2ZSBCUEYgcmVnaXN0ZXJzIFIwLVI1ICh0NiwgYTAtYTQpICovCiYjNDM7CVJFR19TCXQ2LCA1KlNaUkVHKHNwKQogCVJFR19TCWEwLCA0KlNaUkVHKHNwKQogCVJFR19TCWExLCAzKlNaUkVHKHNwKQogCVJFR19TCWEyLCAyKlNaUkVHKHNwKQpAQCAtMzgsNyAmIzQzOzM4LDcgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiAJUkVHX0wJYTIsIDIqU1pSRUcoc3ApCiAJUkVHX0wJYTEsIDMqU1pSRUcoc3ApCiAJUkVHX0wJYTAsIDQqU1pSRUcoc3ApCi0JUkVHX0wJYTUsIDUqU1pSRUcoc3ApCiYjNDM7CVJFR19MCXQ2LCA1KlNaUkVHKHNwKQogCiAJUkVHX0wJczAsIDYqU1pSRUcoc3ApCiAJUkVHX0wJcmEsIDcqU1pSRUcoc3ApCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggOGQzOGFhZmU2NmEyOC4uYWIxMjM5N2E5YjUyYSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYwpAQCAtNCw3ICYjNDM7NCw4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwppbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtMyw3ICYjNDM7Myw4IEBACiAjaW5jbHVkZSAmbHQ7dm1saW51eC5oJmd0OwogI2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBpbnQgc3VicHJvZ19iYWRfb3JkZXJfNmFyZ3MoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuYwppbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jCkBAIC0yMSw3ICYjNDM7MjEsOCBAQCBzdHJ1Y3QgewogCiBpbnQgdGltZXJfcmVzdWx0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jCmluZGV4IDM0NWYyZGEyZTM2MWIuLmI2YjFhOGFhN2Y0NGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfa2Z1bmMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmMKQEAgLTYsNyAmIzQzOzYsOCBAQAogI2luY2x1ZGUgJiMzNDticGZfa2Z1bmNzLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMKaW5kZXggY2UwMzAxYTQxZmE5NC4uN2JhYTljMWM4ZTMxZSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jCkBAIC02LDcgJiM0Mzs2LDggQEAKICNpbmNsdWRlICYjMzQ7Li4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmMKaW5kZXggMDJlNTYyZjU2ZjlkMy4uNWI5MmRhMmFiNzVjZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfaml0X2lubGluZS5jCkBAIC0xMSw3ICYjNDM7MTEsNyBAQCBfX2ppdGVkKCYjMzQ7CWFkZHEJJWdzOnt7Lip9fSwgJXJheCYjMzQ7KQogX19hcmNoX2FybTY0CiBfX2ppdGVkKCYjMzQ7CW1ycwl4OCwgU1BfRUwwJiMzNDspCiBfX2FyY2hfcmlzY3Y2NAotX19qaXRlZCgmIzM0OwltdglhNSwgdHAmIzM0OykKJiM0MztfX2ppdGVkKCYjMzQ7CW12CXQ2LCB0cCYjMzQ7KQogX19hcmNoX2xvb25nYXJjaAogX19qaXRlZCgmIzM0Owltb3ZlCSRhNSwgJHRwJiMzNDspCiBpbnQgaW5saW5lX2JwZl9nZXRfY3VycmVudF90YXNrKHZvaWQpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guYwppbmRleCA3ZTI1ZTFiOGNkMGI3Li40OWU4Y2Q0YmI0Zjk5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9sZHN4LmMKQEAgLTI4OSwxMSAmIzQzOzI4OSwxMSBAQCBfX2ppdGVkKCYjMzQ7bGRyc2gJeDIyLCBbeDExLCAjMHgxOF0mIzM0OykKIF9faml0ZWQoJiMzNDthZGQJeDExLCB4MCwgeDI4JiMzNDspCiBfX2ppdGVkKCYjMzQ7bGRyc2IJeDIyLCBbeDExLCAjMHgyMF0mIzM0OykKIF9fYXJjaF9yaXNjdjY0Ci1fX2ppdGVkKCYjMzQ7YWRkCXQyLCBhNSwgczcmIzM0OykKJiM0MztfX2ppdGVkKCYjMzQ7YWRkCXQyLCB0NiwgczcmIzM0OykKIF9faml0ZWQoJiMzNDtsdwlzMywgMHgxMCh0MikmIzM0OykKLV9faml0ZWQoJiMzNDthZGQJdDIsIGE1LCBzNyYjMzQ7KQomIzQzO19faml0ZWQoJiMzNDthZGQJdDIsIHQ2LCBzNyYjMzQ7KQogX19qaXRlZCgmIzM0O2xoCXMzLCAweDE4KHQyKSYjMzQ7KQotX19qaXRlZCgmIzM0O2FkZAl0MiwgYTUsIHM3JiMzNDspCiYjNDM7X19qaXRlZCgmIzM0O2FkZAl0MiwgdDYsIHM3JiMzNDspCiBfX2ppdGVkKCYjMzQ7bGIJczMsIDB4MjAodDIpJiMzNDspCiBfX2ppdGVkKCYjMzQ7YWRkCXQyLCBhMCwgczcmIzM0OykKIF9faml0ZWQoJiMzNDtsdwlzNCwgMHgxMCh0MikmIzM0OykKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuYwppbmRleCA1MWQyMmZhZjQ1NTlmLi5mNmE0YTZhYTBlNjE3IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZy5jCkBAIC0xMiw3ICYjNDM7MTIsOCBAQCBzdHJ1Y3QgewogCV9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTsKIH0gbWFwX2hhc2hfOGIgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiAKLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgJmFtcDsmYW1wOyBcCiYjNDM7I2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFwKJiM0MzsJKGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKSAmYW1wOyZhbXA7IFwKIAlkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpCiAKIF9fbm9pbmxpbmUgX191c2VkCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMKaW5kZXggOGU0MzI1MjczYjNkOC4uNTdmMjI2OTE3NDRhZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYwpAQCAtNSw3ICYjNDM7NSw4IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiAjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwogCi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpICZhbXA7JmFtcDsgXAomIzQzOyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcCiYjNDM7CShkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSkgJmFtcDsmYW1wOyBcCiAJZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKQogCiBfX25vaW5saW5lIF9fdXNlZCBfX25ha2VkCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDIwCgkJCQkJCQlvdXRwdXQ6IDEwOQoJCQkJCQkJdGhvdWdodHM6IDEwNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIENvZGUgTW9kaWZpY2F0aW9uIGZvciBGdXp6aW5nIEVsaWdpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAsIHNvIHRoYXQmIzM5O3MgdGhlIGtleS4gRmlyc3QsIGEgY2FyZWZ1bCBpbnNwZWN0aW9uIG9mIHRoZSBkaWZmIHJldmVhbHMgbW9kaWZpY2F0aW9ucyBhY3Jvc3Mgc2V2ZXJhbCBmaWxlcy4gSXQgbG9va3MgbGlrZSB3ZSBoYXZlIGNoYW5nZXMgaW4gYm90aCBrZXJuZWwgYW5kIHVzZXJzcGFjZSBjb21wb25lbnRzLiBBbGwgb2YgdGhlIGtlcm5lbCBjb2RlIGNoYW5nZXMgZmFsbCB3aXRoaW4gYGFyY2gvcmlzY3YvYCwgd2hpY2ggaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBSSVNDLVYgNjQtYml0IGFyY2hpdGVjdHVyZS4gVGhlIHVzZXJzcGFjZSBtb2RpZmljYXRpb25zIGFyZSBncm91cGVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYC4KCk5vdywgd2UgbmVlZCB0byBhcHBseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmeSBhIHNjZW5hcmlvIHdoZXJlIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFNlY3Rpb24gMiBvdXRsaW5lcyB0aGUgY29uZGl0aW9ucy4gQmFzaWNhbGx5LCB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiBhbGwgbW9kaWZpY2F0aW9ucyBmYWxsIGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczogbm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcywgU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBvciBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHMuCgpHaXZlbiB0aGUgcHJvbXB0JiMzOTtzIHRhcmdldCwgSSBzZWUgYSBjbGVhciBtYXRjaC4gQWxsIHRoZSBDL0FTTSBrZXJuZWwgY29kZSBpcyBjb250YWluZWQgd2l0aGluIGBhcmNoL3Jpc2N2L2AsIG1ha2luZyBpdCBleGNsdXNpdmUgdG8gdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuIFRoaXMgY29kZSBpcyBpbmhlcmVudGx5IHVucmVhY2hhYmxlIG9uIGBhbWQ2NGAuIFRoZW4sIGFsbCBvdGhlciBtb2RpZmljYXRpb25zIGV4aXN0IHdpdGhpbiBgdG9vbHMvYCwgd2hpY2ggaXMgY29uc2lkZXJlZCB1c2VyLXNwYWNlIHNlbGZ0ZXN0cy4gQmFzZWQgb24gdGhpcywgYWxsIG1vZGlmaWVkIGNvZGUgaXMgZWl0aGVyIHNwZWNpZmljIHRvIGEgbm9uLXRhcmdldCBhcmNoaXRlY3R1cmUgb3IgaW4gYHRvb2xzL2AsIGZpdHRpbmcgdGhlIGNyaXRlcmlhLgoKVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgZmlsZXMgbGlzdGVkIGluIHRoZSBkaWZmIGFyZSBjb21wcmVoZW5zaXZlOiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oYCwgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgLCBgYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLCBhbmQgYSBzZXQgb2YgZmlsZXMgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9gLiBObyBvdGhlciBmaWxlcyB3ZXJlIHRvdWNoZWQuCgpTbywgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIGFzc2Vzc21lbnQuIFdlIGNhbiBjb25maWRlbnRseSBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uOgoKKiAgIGBXb3J0aEZ1enppbmc9ZmFsc2VgCiogICBgRm9jdXNTeW1ib2xzPW51bGxgCiogICBgRW5hYmxlQ29uZmlncz1udWxsYAoqICAgYFJlYXNvbmluZ2A6ICYjMzQ7VGhlIG1vZGlmaWNhdGlvbnMgYXJlIGVpdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgKFJJU0MtVikgYW5kIHVucmVhY2hhYmxlIG9uIGFtZDY0LCBvciB0aGV5IHJlc2lkZSBpbiB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyAoYHRvb2xzL2ApLCBzYXRpc2Z5aW5nIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7QWxsIGtlcm5lbCBtb2RpZmljYXRpb25zIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBsb2NhdGVkIGluIGFyY2gvcmlzY3YvIChSSVNDLVYgQlBGIEpJVCBpbXBsZW1lbnRhdGlvbiksIHdoaWNoIGlzIHNwZWNpZmljIHRvIFJJU0MtViBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8gKHVzZXJzcGFjZSBzZWxmdGVzdHMpLiBDb25zZXF1ZW50bHksIG5vIHJlYWNoYWJsZSBrZXJuZWwgY29kZSBpcyBtb2RpZmllZCBmb3IgYW1kNjQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjoxOTo1Ni45NjM2MzYxOTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzQ4NjAwODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjE5OjU2Ljk2MzY0MDg4M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2OTk1ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTczYTM2Mjk1OGQ1NmM4ZGYwMDc1ZWFhYmIxZWY0ZjgxZDViZTBjYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDEyOjE5OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaCBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbmluZGV4IDQxOWI5ZDc5NWYyYTcuLjVjNGY1MzA2MGM5MTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuQEAgLTEyLDYgKzEyLDkgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlsdGVyLmhcXHUwMDNlXFxuIFxcbisjZGVmaW5lIFJWX01BWF9SRUdfQVJHU1xcdFxcdDhcXG4rI2RlZmluZSBSVl9FWFRSQV9TVEtfQVJHU1xcdChSVl9NQVhfUkVHX0FSR1MgLSBNQVhfQlBGX0ZVTkNfUkVHX0FSR1MpXFxuK1xcbiAvKiB2ZXJpZnkgcnVudGltZSBkZXRlY3Rpb24gZXh0ZW5zaW9uIHN0YXR1cyAqL1xcbiAjZGVmaW5lIHJ2X2V4dF9lbmFibGVkKGV4dCkgXFxcXFxcbiBcXHQoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBXyMjZXh0KSBcXHUwMDI2XFx1MDAyNiByaXNjdl9oYXNfZXh0ZW5zaW9uX2xpa2VseShSSVNDVl9JU0FfRVhUXyMjZXh0KSlcXG5AQCAtODIsNiArODUsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgc3RhY2tfc2l6ZTtcXG4gXFx0aW50IHRjY19vZmZzZXQ7XFxuK1xcdGludCBzdGFja19hcmdfc3o7XFxuIFxcdHU2NCBhcmVuYV92bV9zdGFydDtcXG4gXFx0dTY0IHVzZXJfdm1fc3RhcnQ7XFxuIH07XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZTczNzhiZTE3MWE5Zi4uN2Y4NDQ0N2EzMWZmZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbkBAIC0xNSw3ICsxNSw2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vcGVyY3B1LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJicGZfaml0LmhcXFwiXFxuIFxcbi0jZGVmaW5lIFJWX01BWF9SRUdfQVJHUyA4XFxuICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyXFxuICNkZWZpbmUgUlZfRkVOVFJZX05CWVRFUyAoUlZfRkVOVFJZX05JTlNOUyAqIDQpXFxuIC8qIGltbSB0aGF0IGFsbG93cyBlbWl0X2ltbSB0byBlbWl0IG1heCBjb3VudCBpbnNucyAqL1xcbkBAIC0yMywxMSArMjIsMTEgQEBcXG4gLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cXG4gI2RlZmluZSBSVl9UQUlMQ0FMTF9PRkZTRVQgKChSVl9GRU5UUllfTklOU05TICsgMSkgKiA0KVxcbiBcXG4tI2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19BNlxcbisjZGVmaW5lIFJWX1JFR19UQ0MgUlZfUkVHX1Q1XFxuICNkZWZpbmUgUlZfUkVHX0FSRU5BIFJWX1JFR19TNyAvKiBGb3Igc3RvcmluZyBhcmVuYV92bV9zdGFydCAqL1xcbiBcXG4gc3RhdGljIGNvbnN0IGludCByZWdtYXBbXSA9IHtcXG4tXFx0W0JQRl9SRUdfMF0gPVxcdFJWX1JFR19BNSxcXG4rXFx0W0JQRl9SRUdfMF0gPVxcdFJWX1JFR19UNixcXG4gXFx0W0JQRl9SRUdfMV0gPVxcdFJWX1JFR19BMCxcXG4gXFx0W0JQRl9SRUdfMl0gPVxcdFJWX1JFR19BMSxcXG4gXFx0W0JQRl9SRUdfM10gPVxcdFJWX1JFR19BMixcXG5AQCAtNDcsMTMgKzQ2LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgcHRfcmVnbWFwW10gPSB7XFxuIFxcdFtSVl9SRUdfQTJdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGEyKSxcXG4gXFx0W1JWX1JFR19BM10gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTMpLFxcbiBcXHRbUlZfUkVHX0E0XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBhNCksXFxuLVxcdFtSVl9SRUdfQTVdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIGE1KSxcXG4gXFx0W1JWX1JFR19TMV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczEpLFxcbiBcXHRbUlZfUkVHX1MyXSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzMiksXFxuIFxcdFtSVl9SRUdfUzNdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHMzKSxcXG4gXFx0W1JWX1JFR19TNF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczQpLFxcbiBcXHRbUlZfUkVHX1M1XSA9IG9mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzNSksXFxuIFxcdFtSVl9SRUdfVDBdID0gb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHQwKSxcXG4rXFx0W1JWX1JFR19UNl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgdDYpLFxcbiB9O1xcbiBcXG4gZW51bSB7XFxuQEAgLTIzOSw3ICsyMzgsNyBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKGJvb2wgaXNfdGFpbF9jYWxsLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4gXFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XFxuIFxcdC8qIFNldCByZXR1cm4gdmFsdWUuICovXFxuIFxcdGlmICghaXNfdGFpbF9jYWxsKVxcbi1cXHRcXHRlbWl0X2FkZGl3KFJWX1JFR19BMCwgUlZfUkVHX0E1LCAwLCBjdHgpO1xcbitcXHRcXHRlbWl0X2FkZGl3KFJWX1JFR19BMCwgcmVnbWFwW0JQRl9SRUdfMF0sIDAsIGN0eCk7XFxuIFxcdGVtaXRfamFscihSVl9SRUdfWkVSTywgaXNfdGFpbF9jYWxsID8gUlZfUkVHX1QzIDogUlZfUkVHX1JBLFxcbiBcXHRcXHQgIGlzX3RhaWxfY2FsbCA/IFJWX1RBSUxDQUxMX09GRlNFVCA6IDAsIGN0eCk7XFxuIH1cXG5AQCAtNDk4LDYgKzQ5NywxOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2xkeCh1OCByZCwgczE2IG9mZiwgdTggcnMsIHU4IHNpemUsIGJvb2wgc2lnbl9leHQsXFxuIFxcdGN0eC1cXHUwMDNlZXhfam1wX29mZiA9IGN0eC1cXHUwMDNlbmluc25zO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19sZHgodTggcmQsIHMxNiBvZmYsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbit7XFxuK1xcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcXG4rXFxuK1xcdGlmIChpZHggXFx1MDAzYyBSVl9FWFRSQV9TVEtfQVJHUykge1xcbitcXHRcXHRlbWl0X212KHJkLCBSVl9SRUdfQTUgKyBpZHgsIGN0eCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0ZW1pdF9sZHhfaW5zbihyZCwgKGlkeCAtIFJWX0VYVFJBX1NUS19BUkdTKSAqIDgsIFJWX1JFR19GUCwgQlBGX0RXLCBmYWxzZSwgY3R4KTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuIHtcXG4gXFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XFxuQEAgLTUxNSw2ICs1MjYsMTkgQEAgc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHhcXG4gXFx0Y3R4LVxcdTAwM2VleF9qbXBfb2ZmID0gY3R4LVxcdTAwM2VuaW5zbnM7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGVtaXRfc3RhY2tfYXJnX3N0KHMxNiBvZmYsIHMzMiBpbW0sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbit7XFxuK1xcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XFxuK1xcbitcXHRpZiAoaWR4IFxcdTAwM2MgUlZfRVhUUkFfU1RLX0FSR1MpIHtcXG4rXFx0XFx0ZW1pdF9pbW0oUlZfUkVHX0E1ICsgaWR4LCBpbW0sIGN0eCk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XFxuK1xcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgUlZfUkVHX1QxLCBCUEZfRFcsIGN0eCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGVtaXRfc3R4KHU4IHJkLCBzMTYgb2ZmLCB1OCBycywgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuIHtcXG4gXFx0aWYgKGlzXzEyYl9pbnQob2ZmKSkge1xcbkBAIC01MzEsNiArNTU1LDE4IEBAIHN0YXRpYyB2b2lkIGVtaXRfc3R4KHU4IHJkLCBzMTYgb2ZmLCB1OCBycywgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuIFxcdGN0eC1cXHUwMDNlZXhfam1wX29mZiA9IGN0eC1cXHUwMDNlbmluc25zO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19zdHgoczE2IG9mZiwgdTggcnMsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbit7XFxuK1xcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XFxuK1xcbitcXHRpZiAoaWR4IFxcdTAwM2MgUlZfRVhUUkFfU1RLX0FSR1MpIHtcXG4rXFx0XFx0ZW1pdF9tdihSVl9SRUdfQTUgKyBpZHgsIHJzLCBjdHgpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgcnMsIEJQRl9EVywgY3R4KTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBlbWl0X2F0b21pY19sZF9zdCh1OCByZCwgdTggcnMsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4ge1xcbkBAIC0xMDc1LDcgKzExMTEsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbiBcXG4gXFx0c2F2ZV9yZXQgPSBmbGFncyBcXHUwMDI2IChCUEZfVFJBTVBfRl9DQUxMX09SSUcgfCBCUEZfVFJBTVBfRl9SRVRfRkVOVFJZX1JFVCk7XFxuIFxcdGlmIChzYXZlX3JldClcXG4tXFx0XFx0c3RhY2tfc2l6ZSArPSAxNjsgLyogU2F2ZSBib3RoIEE1IChCUEYgUjApIGFuZCBBMCAqL1xcbitcXHRcXHRzdGFja19zaXplICs9IDE2OyAvKiBTYXZlIGJvdGggUlZfUkVHX1Q2IChCUEYgUjApIGFuZCBSVl9SRUdfQTAgKi9cXG4gXFx0cmV0dmFsX29mZiA9IHN0YWNrX3NpemU7XFxuIFxcbiBcXHRzdGFja19zaXplICs9IG5yX2FyZ19zbG90cyAqIDg7XFxuQEAgLTE4MjQsMTEgKzE4NjAsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0XFx0XFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBmbS1cXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcXG4tXFx0XFx0XFx0XFx0dTggcmVnID0gYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzEgKyBpZHgsIGN0eCk7XFxuIFxcdFxcdFxcdFxcdGJvb2wgc2lnbiA9IGZtLVxcdTAwM2VhcmdfZmxhZ3NbaWR4XSBcXHUwMDI2IEJURl9GTU9ERUxfU0lHTkVEX0FSRztcXG4tXFxuLVxcdFxcdFxcdFxcdGlmIChzaWduX2V4dGVuZChyZWcsIHJlZywgZm0tXFx1MDAzZWFyZ19zaXplW2lkeF0sIHNpZ24sIGN0eCkpXFxuLVxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHR1OCBhcmdfc3ogPSBmbS1cXHUwMDNlYXJnX3NpemVbaWR4XTtcXG4rXFxuK1xcdFxcdFxcdFxcdGlmIChhcmdfc3ogPT0gOCB8fCAoYXJnX3N6ICE9IDQgXFx1MDAyNlxcdTAwMjYgIXNpZ24pKVxcbitcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdFxcdFxcdGlmIChpZHggXFx1MDAzYyBSVl9NQVhfUkVHX0FSR1MpIHtcXG4rXFx0XFx0XFx0XFx0XFx0aWYgKHNpZ25fZXh0ZW5kKFJWX1JFR19BMCArIGlkeCwgUlZfUkVHX0EwICsgaWR4LCBhcmdfc3osIHNpZ24sIGN0eCkpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UMSwgKGlkeCAtIFJWX01BWF9SRUdfQVJHUykgKiA4LCBSVl9SRUdfU1AsIGN0eCk7XFxuK1xcdFxcdFxcdFxcdFxcdGlmIChzaWduX2V4dGVuZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgYXJnX3N6LCBzaWduLCBjdHgpKVxcbitcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0XFx0XFx0XFx0ZW1pdF9zZChSVl9SRUdfU1AsIChpZHggLSBSVl9NQVhfUkVHX0FSR1MpICogOCwgUlZfUkVHX1QxLCBjdHgpO1xcbitcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXG5AQCAtMTkyNyw3ICsxOTczLDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRcXHRcXHRycyA9IFJWX1JFR19UMjtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0ZW1pdF9sZHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBzaWduX2V4dCwgY3R4KTtcXG4rXFx0XFx0aWYgKGlzX3N0YWNrX2FyZ19sZHgoaW5zbikpXFxuK1xcdFxcdFxcdGVtaXRfc3RhY2tfYXJnX2xkeChyZCwgb2ZmLCBjdHgpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGVtaXRfbGR4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgc2lnbl9leHQsIGN0eCk7XFxuIFxcbiBcXHRcXHRyZXQgPSBhZGRfZXhjZXB0aW9uX2hhbmRsZXIoaW5zbiwgcmQsIGN0eCk7XFxuIFxcdFxcdGlmIChyZXQpXFxuQEAgLTE5NTcsNyArMjAwNiwxMCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0XFx0XFx0cmQgPSBSVl9SRUdfVDM7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcXG4rXFx0XFx0aWYgKGlzX3N0YWNrX2FyZ19zdChpbnNuKSlcXG4rXFx0XFx0XFx0ZW1pdF9zdGFja19hcmdfc3Qob2ZmLCBpbW0sIGN0eCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdF9zdChyZCwgb2ZmLCBpbW0sIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbiBcXG4gXFx0XFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcXG4gXFx0XFx0aWYgKHJldClcXG5AQCAtMTk3OSw3ICsyMDMxLDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRcXHRcXHRyZCA9IFJWX1JFR19UMjtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0ZW1pdF9zdHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbitcXHRcXHRpZiAoaXNfc3RhY2tfYXJnX3N0eChpbnNuKSlcXG4rXFx0XFx0XFx0ZW1pdF9zdGFja19hcmdfc3R4KG9mZiwgcnMsIGN0eCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0ZW1pdF9zdHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xcbiBcXG4gXFx0XFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcXG4gXFx0XFx0aWYgKHJldClcXG5AQCAtMjAyOSw5ICsyMDg0LDkgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXFxuIFxcbiB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcXG4ge1xcbi1cXHRpbnQgaSwgc3RhY2tfYWRqdXN0ID0gMCwgc3RvcmVfb2Zmc2V0LCBicGZfc3RhY2tfYWRqdXN0O1xcbitcXHRpbnQgaSwgc3RhY2tfYWRqdXN0ID0gMCwgc3RvcmVfb2Zmc2V0LCBicGZfc3RhY2tfYWRqdXN0ID0gY3R4LVxcdTAwM2VzdGFja19hcmdfc3o7XFxuIFxcbi1cXHRicGZfc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoY3R4LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0YWNrX2RlcHRoLCBTVEFDS19BTElHTik7XFxuK1xcdGJwZl9zdGFja19hZGp1c3QgKz0gcm91bmRfdXAoY3R4LVxcdTAwM2Vwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0YWNrX2RlcHRoLCBTVEFDS19BTElHTik7XFxuIFxcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxcbiBcXHRcXHRtYXJrX2ZwKGN0eCk7XFxuIFxcbkBAIC0yMTkwLDMgKzIyNDUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG4ge1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbitcXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZClcXG4re1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuaW5kZXggY2JmY2QyODdlYTE2Ni4uMmZiMGI0ZTE5OGI5NCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0aW50IHBhc3MgPSAwLCBwcmV2X25pbnNucyA9IDAsIGk7XFxuIFxcdHN0cnVjdCBydl9qaXRfZGF0YSAqaml0X2RhdGE7XFxuIFxcdHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4O1xcbitcXHR1MTYgc3RhY2tfYXJnX2NudDtcXG4gXFxuIFxcdGlmICghcHJvZy1cXHUwMDNlaml0X3JlcXVlc3RlZClcXG4gXFx0XFx0cmV0dXJuIHByb2c7XFxuQEAgLTcxLDYgKzcyLDEyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcbiBcXHRjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXJlbmEpO1xcbiBcXHRjdHgtXFx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhcmVuYSk7XFxuK1xcbitcXHRzdGFja19hcmdfY250ID0gYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZyk7XFxuK1xcdC8qIEZpcnN0IDMgc3RhY2sgYXJncyBpbiByZWdzLCByZXN0IG9uIHN0YWNrICovXFxuK1xcdGN0eC1cXHUwMDNlc3RhY2tfYXJnX3N6ID0gc3RhY2tfYXJnX2NudCBcXHUwMDNlIFJWX0VYVFJBX1NUS19BUkdTID9cXG4rXFx0XFx0XFx0ICAgIHJvdW5kX3VwKChzdGFja19hcmdfY250IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgU1RBQ0tfQUxJR04pIDogMDtcXG4rXFxuIFxcdGN0eC1cXHUwMDNlcHJvZyA9IHByb2c7XFxuIFxcdGN0eC1cXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXFx1MDAzZWxlbik7XFxuIFxcdGlmICghY3R4LVxcdTAwM2VvZmZzZXQpXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5pbmRleCAwMmM2MzdkODc0MjA1Li5mY2Y4NTBmMjQ0YzkwIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5AQCAtMTAsNyArMTAsNyBAQFxcbiAgKlxcdC0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHQwKVxcbiAgKlxcbiAgKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZVxcbi0gKiBwdHIgPSBCUEZfUkVHX0ZQIChzNSkgKyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWRcXG4rICogcHRyID0gQlBGX1JFR19GUCAoczUpICsgQlBGX1JFR19BWCAodDApLiBCUEYgUjAtUjUgKHQ2LCBhMC1hNCkgYXJlIHNhdmVkXFxuICAqIGFjcm9zcyB0aGUgY2FsbDsgQlBGX1JFR19GUCAoczUpIGlzIGNhbGxlZS1zYXZlZCBhbmQgbmVlZHMgbm8gc2F2aW5nLlxcbiAgKi9cXG4gXFxuQEAgLTIwLDggKzIwLDggQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdFJFR19TXFx0czAsIDYqU1pSRUcoc3ApXFxuIFxcdGFkZGlcXHRzMCwgc3AsIDgqU1pSRUdcXG4gXFxuLVxcdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMC1SNSAoYTUsIGEwLWE0KSAqL1xcbi1cXHRSRUdfU1xcdGE1LCA1KlNaUkVHKHNwKVxcbitcXHQvKiBTYXZlIEJQRiByZWdpc3RlcnMgUjAtUjUgKHQ2LCBhMC1hNCkgKi9cXG4rXFx0UkVHX1NcXHR0NiwgNSpTWlJFRyhzcClcXG4gXFx0UkVHX1NcXHRhMCwgNCpTWlJFRyhzcClcXG4gXFx0UkVHX1NcXHRhMSwgMypTWlJFRyhzcClcXG4gXFx0UkVHX1NcXHRhMiwgMipTWlJFRyhzcClcXG5AQCAtMzgsNyArMzgsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4gXFx0UkVHX0xcXHRhMiwgMipTWlJFRyhzcClcXG4gXFx0UkVHX0xcXHRhMSwgMypTWlJFRyhzcClcXG4gXFx0UkVHX0xcXHRhMCwgNCpTWlJFRyhzcClcXG4tXFx0UkVHX0xcXHRhNSwgNSpTWlJFRyhzcClcXG4rXFx0UkVHX0xcXHR0NiwgNSpTWlJFRyhzcClcXG4gXFxuIFxcdFJFR19MXFx0czAsIDYqU1pSRUcoc3ApXFxuIFxcdFJFR19MXFx0cmEsIDcqU1pSRUcoc3ApXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbmluZGV4IDhkMzhhYWZlNjZhMjguLmFiMTIzOTdhOWI1MmEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuQEAgLTQsNyArNCw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGxvbmcgc3VicHJvZ19jYWxsX21lbV9rZnVuYyhsb25nIGEsIGxvbmcgYiwgbG9uZyBjLCBsb25nIGQsIGxvbmcgZSwgbG9uZyBzaXplKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuaW5kZXggOTliYzExNWY4MzgwYS4uYTk4MGEzYTM5OWQzZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXFxuQEAgLTMsNyArMyw4IEBAXFxuICNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGludCBzdWJwcm9nX2JhZF9vcmRlcl82YXJncyhpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcXG5pbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmcuY1xcbkBAIC0yMSw3ICsyMSw4IEBAIHN0cnVjdCB7XFxuIFxcbiBpbnQgdGltZXJfcmVzdWx0O1xcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxcXFxuK1xcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gY29uc3Qgdm9sYXRpbGUgYm9vbCBoYXNfc3RhY2tfYXJnID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXFxuaW5kZXggMzQ1ZjJkYTJlMzYxYi4uYjZiMWE4YWE3ZjQ0YSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcXG5AQCAtNiw3ICs2LDggQEBcXG4gI2luY2x1ZGUgXFxcImJwZl9rZnVuY3MuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuaW5kZXggY2UwMzAxYTQxZmE5NC4uN2JhYTljMWM4ZTMxZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xcbkBAIC02LDcgKzYsOCBAQFxcbiAjaW5jbHVkZSBcXFwiLi4vdGVzdF9rbW9kcy9icGZfdGVzdG1vZF9rZnVuYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4gXFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcXFxcbitcXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcXHUwMDI2XFx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcXG4gXFxuIC8qIEZvcmNlIGtmdW5jIGV4dGVybiBCVEYgZ2VuZXJhdGlvbiBmb3IgaW5saW5lIGFzbSBjYWxsIGJlbG93LlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfaml0X2lubGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xcbmluZGV4IDAyZTU2MmY1NmY5ZDMuLjViOTJkYTJhYjc1Y2YgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmNcXG5AQCAtMTEsNyArMTEsNyBAQCBfX2ppdGVkKFxcXCJcXHRhZGRxXFx0JWdzOnt7Lip9fSwgJXJheFxcXCIpXFxuIF9fYXJjaF9hcm02NFxcbiBfX2ppdGVkKFxcXCJcXHRtcnNcXHR4OCwgU1BfRUwwXFxcIilcXG4gX19hcmNoX3Jpc2N2NjRcXG4tX19qaXRlZChcXFwiXFx0bXZcXHRhNSwgdHBcXFwiKVxcbitfX2ppdGVkKFxcXCJcXHRtdlxcdHQ2LCB0cFxcXCIpXFxuIF9fYXJjaF9sb29uZ2FyY2hcXG4gX19qaXRlZChcXFwiXFx0bW92ZVxcdCRhNSwgJHRwXFxcIilcXG4gaW50IGlubGluZV9icGZfZ2V0X2N1cnJlbnRfdGFzayh2b2lkKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guY1xcbmluZGV4IDdlMjVlMWI4Y2QwYjcuLjQ5ZThjZDRiYjRmOTkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9sZHN4LmNcXG5AQCAtMjg5LDExICsyODksMTEgQEAgX19qaXRlZChcXFwibGRyc2hcXHR4MjIsIFt4MTEsICMweDE4XVxcXCIpXFxuIF9faml0ZWQoXFxcImFkZFxcdHgxMSwgeDAsIHgyOFxcXCIpXFxuIF9faml0ZWQoXFxcImxkcnNiXFx0eDIyLCBbeDExLCAjMHgyMF1cXFwiKVxcbiBfX2FyY2hfcmlzY3Y2NFxcbi1fX2ppdGVkKFxcXCJhZGRcXHR0MiwgYTUsIHM3XFxcIilcXG4rX19qaXRlZChcXFwiYWRkXFx0dDIsIHQ2LCBzN1xcXCIpXFxuIF9faml0ZWQoXFxcImx3XFx0czMsIDB4MTAodDIpXFxcIilcXG4tX19qaXRlZChcXFwiYWRkXFx0dDIsIGE1LCBzN1xcXCIpXFxuK19faml0ZWQoXFxcImFkZFxcdHQyLCB0NiwgczdcXFwiKVxcbiBfX2ppdGVkKFxcXCJsaFxcdHMzLCAweDE4KHQyKVxcXCIpXFxuLV9faml0ZWQoXFxcImFkZFxcdHQyLCBhNSwgczdcXFwiKVxcbitfX2ppdGVkKFxcXCJhZGRcXHR0MiwgdDYsIHM3XFxcIilcXG4gX19qaXRlZChcXFwibGJcXHRzMywgMHgyMCh0MilcXFwiKVxcbiBfX2ppdGVkKFxcXCJhZGRcXHR0MiwgYTAsIHM3XFxcIilcXG4gX19qaXRlZChcXFwibHdcXHRzNCwgMHgxMCh0MilcXFwiKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcXG5pbmRleCA1MWQyMmZhZjQ1NTlmLi5mNmE0YTZhYTBlNjE3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xcbkBAIC0xMiw3ICsxMiw4IEBAIHN0cnVjdCB7XFxuIFxcdF9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTtcXG4gfSBtYXBfaGFzaF84YiBTRUMoXFxcIi5tYXBzXFxcIik7XFxuIFxcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXFxcXG4rXFx0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXFx1MDAyNlxcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiBcXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXFxuIFxcbiBfX25vaW5saW5lIF9fdXNlZFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcXG5pbmRleCA4ZTQzMjUyNzNiM2Q4Li41N2YyMjY5MTc0NGFkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xcbkBAIC01LDcgKzUsOCBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbiBcXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxcXFxuK1xcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gXFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxcbiBcXG4gX19ub2lubGluZSBfX3VzZWQgX19uYWtlZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjoxOTo1Ny40NDEzMDk0NjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjY4NzA5MTQ5OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiQWxsIGtlcm5lbCBtb2RpZmljYXRpb25zIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGFyZSBsb2NhdGVkIGluIGFyY2gvcmlzY3YvIChSSVNDLVYgQlBGIEpJVCBpbXBsZW1lbnRhdGlvbiksIHdoaWNoIGlzIHNwZWNpZmljIHRvIFJJU0MtViBhbmQgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8gKHVzZXJzcGFjZSBzZWxmdGVzdHMpLiBDb25zZXF1ZW50bHksIG5vIHJlYWNoYWJsZSBrZXJuZWwgY29kZSBpcyBtb2RpZmllZCBmb3IgYW1kNjQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3M2EzNjI5NThkNTZjOGRmMDA3NWVhYWJiMWVmNGY4MWQ1YmUwY2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDEyOjE5OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCA0MTliOWQ3OTVmMmE3Li41YzRmNTMwNjBjOTE4IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbkBAIC0xMiw2ICsxMiw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maWx0ZXIuaFx1MDAzZVxuIFxuKyNkZWZpbmUgUlZfTUFYX1JFR19BUkdTXHRcdDhcbisjZGVmaW5lIFJWX0VYVFJBX1NUS19BUkdTXHQoUlZfTUFYX1JFR19BUkdTIC0gTUFYX0JQRl9GVU5DX1JFR19BUkdTKVxuK1xuIC8qIHZlcmlmeSBydW50aW1lIGRldGVjdGlvbiBleHRlbnNpb24gc3RhdHVzICovXG4gI2RlZmluZSBydl9leHRfZW5hYmxlZChleHQpIFxcXG4gXHQoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBXyMjZXh0KSBcdTAwMjZcdTAwMjYgcmlzY3ZfaGFzX2V4dGVuc2lvbl9saWtlbHkoUklTQ1ZfSVNBX0VYVF8jI2V4dCkpXG5AQCAtODIsNiArODUsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGludCBzdGFja19zaXplO1xuIFx0aW50IHRjY19vZmZzZXQ7XG4rXHRpbnQgc3RhY2tfYXJnX3N6O1xuIFx0dTY0IGFyZW5hX3ZtX3N0YXJ0O1xuIFx0dTY0IHVzZXJfdm1fc3RhcnQ7XG4gfTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggZTczNzhiZTE3MWE5Zi4uN2Y4NDQ0N2EzMWZmZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xNSw3ICsxNSw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3BlcmNwdS5oXHUwMDNlXG4gI2luY2x1ZGUgXCJicGZfaml0LmhcIlxuIFxuLSNkZWZpbmUgUlZfTUFYX1JFR19BUkdTIDhcbiAjZGVmaW5lIFJWX0ZFTlRSWV9OSU5TTlMgMlxuICNkZWZpbmUgUlZfRkVOVFJZX05CWVRFUyAoUlZfRkVOVFJZX05JTlNOUyAqIDQpXG4gLyogaW1tIHRoYXQgYWxsb3dzIGVtaXRfaW1tIHRvIGVtaXQgbWF4IGNvdW50IGluc25zICovXG5AQCAtMjMsMTEgKzIyLDExIEBAXG4gLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cbiAjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgKyAxKSAqIDQpXG4gXG4tI2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19BNlxuKyNkZWZpbmUgUlZfUkVHX1RDQyBSVl9SRUdfVDVcbiAjZGVmaW5lIFJWX1JFR19BUkVOQSBSVl9SRUdfUzcgLyogRm9yIHN0b3JpbmcgYXJlbmFfdm1fc3RhcnQgKi9cbiBcbiBzdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0ge1xuLVx0W0JQRl9SRUdfMF0gPVx0UlZfUkVHX0E1LFxuK1x0W0JQRl9SRUdfMF0gPVx0UlZfUkVHX1Q2LFxuIFx0W0JQRl9SRUdfMV0gPVx0UlZfUkVHX0EwLFxuIFx0W0JQRl9SRUdfMl0gPVx0UlZfUkVHX0ExLFxuIFx0W0JQRl9SRUdfM10gPVx0UlZfUkVHX0EyLFxuQEAgLTQ3LDEzICs0NiwxMyBAQCBzdGF0aWMgY29uc3QgaW50IHB0X3JlZ21hcFtdID0ge1xuIFx0W1JWX1JFR19BMl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTIpLFxuIFx0W1JWX1JFR19BM10gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTMpLFxuIFx0W1JWX1JFR19BNF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTQpLFxuLVx0W1JWX1JFR19BNV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgYTUpLFxuIFx0W1JWX1JFR19TMV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczEpLFxuIFx0W1JWX1JFR19TMl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczIpLFxuIFx0W1JWX1JFR19TM10gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczMpLFxuIFx0W1JWX1JFR19TNF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczQpLFxuIFx0W1JWX1JFR19TNV0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgczUpLFxuIFx0W1JWX1JFR19UMF0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgdDApLFxuK1x0W1JWX1JFR19UNl0gPSBvZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgdDYpLFxuIH07XG4gXG4gZW51bSB7XG5AQCAtMjM5LDcgKzIzOCw3IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoYm9vbCBpc190YWlsX2NhbGwsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xuIFx0aWYgKCFpc190YWlsX2NhbGwpXG4tXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCBSVl9SRUdfQTUsIDAsIGN0eCk7XG4rXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCByZWdtYXBbQlBGX1JFR18wXSwgMCwgY3R4KTtcbiBcdGVtaXRfamFscihSVl9SRUdfWkVSTywgaXNfdGFpbF9jYWxsID8gUlZfUkVHX1QzIDogUlZfUkVHX1JBLFxuIFx0XHQgIGlzX3RhaWxfY2FsbCA/IFJWX1RBSUxDQUxMX09GRlNFVCA6IDAsIGN0eCk7XG4gfVxuQEAgLTQ5OCw2ICs0OTcsMTggQEAgc3RhdGljIHZvaWQgZW1pdF9sZHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBib29sIHNpZ25fZXh0LFxuIFx0Y3R4LVx1MDAzZWV4X2ptcF9vZmYgPSBjdHgtXHUwMDNlbmluc25zO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19sZHgodTggcmQsIHMxNiBvZmYsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuK3tcbitcdGludCBpZHggPSBvZmYgLyA4IC0gMTtcbitcbitcdGlmIChpZHggXHUwMDNjIFJWX0VYVFJBX1NUS19BUkdTKSB7XG4rXHRcdGVtaXRfbXYocmQsIFJWX1JFR19BNSArIGlkeCwgY3R4KTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0ZW1pdF9sZHhfaW5zbihyZCwgKGlkeCAtIFJWX0VYVFJBX1NUS19BUkdTKSAqIDgsIFJWX1JFR19GUCwgQlBGX0RXLCBmYWxzZSwgY3R4KTtcbit9XG4rXG4gc3RhdGljIHZvaWQgZW1pdF9zdCh1OCByZCwgczE2IG9mZiwgczMyIGltbSwgdTggc2l6ZSwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4ge1xuIFx0ZW1pdF9pbW0oUlZfUkVHX1QxLCBpbW0sIGN0eCk7XG5AQCAtNTE1LDYgKzUyNiwxOSBAQCBzdGF0aWMgdm9pZCBlbWl0X3N0KHU4IHJkLCBzMTYgb2ZmLCBzMzIgaW1tLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eFxuIFx0Y3R4LVx1MDAzZWV4X2ptcF9vZmYgPSBjdHgtXHUwMDNlbmluc25zO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19zdChzMTYgb2ZmLCBzMzIgaW1tLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbit7XG4rXHRpbnQgaWR4ID0gLW9mZiAvIDggLSAxO1xuK1xuK1x0aWYgKGlkeCBcdTAwM2MgUlZfRVhUUkFfU1RLX0FSR1MpIHtcbitcdFx0ZW1pdF9pbW0oUlZfUkVHX0E1ICsgaWR4LCBpbW0sIGN0eCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGVtaXRfaW1tKFJWX1JFR19UMSwgaW1tLCBjdHgpO1xuK1x0ZW1pdF9zdHhfaW5zbihSVl9SRUdfU1AsIChpZHggLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBSVl9SRUdfVDEsIEJQRl9EVywgY3R4KTtcbit9XG4rXG4gc3RhdGljIHZvaWQgZW1pdF9zdHgodTggcmQsIHMxNiBvZmYsIHU4IHJzLCB1OCBzaXplLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiB7XG4gXHRpZiAoaXNfMTJiX2ludChvZmYpKSB7XG5AQCAtNTMxLDYgKzU1NSwxOCBAQCBzdGF0aWMgdm9pZCBlbWl0X3N0eCh1OCByZCwgczE2IG9mZiwgdTggcnMsIHU4IHNpemUsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0Y3R4LVx1MDAzZWV4X2ptcF9vZmYgPSBjdHgtXHUwMDNlbmluc25zO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbWl0X3N0YWNrX2FyZ19zdHgoczE2IG9mZiwgdTggcnMsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuK3tcbitcdGludCBpZHggPSAtb2ZmIC8gOCAtIDE7XG4rXG4rXHRpZiAoaWR4IFx1MDAzYyBSVl9FWFRSQV9TVEtfQVJHUykge1xuK1x0XHRlbWl0X212KFJWX1JFR19BNSArIGlkeCwgcnMsIGN0eCk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGVtaXRfc3R4X2luc24oUlZfUkVHX1NQLCAoaWR4IC0gUlZfRVhUUkFfU1RLX0FSR1MpICogOCwgcnMsIEJQRl9EVywgY3R4KTtcbit9XG4rXG4gc3RhdGljIGludCBlbWl0X2F0b21pY19sZF9zdCh1OCByZCwgdTggcnMsIGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbiBcdFx0XHQgICAgIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIHtcbkBAIC0xMDc1LDcgKzExMTEsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFxuIFx0c2F2ZV9yZXQgPSBmbGFncyBcdTAwMjYgKEJQRl9UUkFNUF9GX0NBTExfT1JJRyB8IEJQRl9UUkFNUF9GX1JFVF9GRU5UUllfUkVUKTtcbiBcdGlmIChzYXZlX3JldClcbi1cdFx0c3RhY2tfc2l6ZSArPSAxNjsgLyogU2F2ZSBib3RoIEE1IChCUEYgUjApIGFuZCBBMCAqL1xuK1x0XHRzdGFja19zaXplICs9IDE2OyAvKiBTYXZlIGJvdGggUlZfUkVHX1Q2IChCUEYgUjApIGFuZCBSVl9SRUdfQTAgKi9cbiBcdHJldHZhbF9vZmYgPSBzdGFja19zaXplO1xuIFxuIFx0c3RhY2tfc2l6ZSArPSBucl9hcmdfc2xvdHMgKiA4O1xuQEAgLTE4MjQsMTEgKzE4NjAsMjEgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0XHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgZm0tXHUwMDNlbnJfYXJnczsgaWR4KyspIHtcbi1cdFx0XHRcdHU4IHJlZyA9IGJwZl90b19ydl9yZWcoQlBGX1JFR18xICsgaWR4LCBjdHgpO1xuIFx0XHRcdFx0Ym9vbCBzaWduID0gZm0tXHUwMDNlYXJnX2ZsYWdzW2lkeF0gXHUwMDI2IEJURl9GTU9ERUxfU0lHTkVEX0FSRztcbi1cbi1cdFx0XHRcdGlmIChzaWduX2V4dGVuZChyZWcsIHJlZywgZm0tXHUwMDNlYXJnX3NpemVbaWR4XSwgc2lnbiwgY3R4KSlcbi1cdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0XHR1OCBhcmdfc3ogPSBmbS1cdTAwM2Vhcmdfc2l6ZVtpZHhdO1xuK1xuK1x0XHRcdFx0aWYgKGFyZ19zeiA9PSA4IHx8IChhcmdfc3ogIT0gNCBcdTAwMjZcdTAwMjYgIXNpZ24pKVxuK1x0XHRcdFx0XHRjb250aW51ZTtcbitcbitcdFx0XHRcdGlmIChpZHggXHUwMDNjIFJWX01BWF9SRUdfQVJHUykge1xuK1x0XHRcdFx0XHRpZiAoc2lnbl9leHRlbmQoUlZfUkVHX0EwICsgaWR4LCBSVl9SRUdfQTAgKyBpZHgsIGFyZ19zeiwgc2lnbiwgY3R4KSlcbitcdFx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCAoaWR4IC0gUlZfTUFYX1JFR19BUkdTKSAqIDgsIFJWX1JFR19TUCwgY3R4KTtcbitcdFx0XHRcdFx0aWYgKHNpZ25fZXh0ZW5kKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBhcmdfc3osIHNpZ24sIGN0eCkpXG4rXHRcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0XHRcdGVtaXRfc2QoUlZfUkVHX1NQLCAoaWR4IC0gUlZfTUFYX1JFR19BUkdTKSAqIDgsIFJWX1JFR19UMSwgY3R4KTtcbitcdFx0XHRcdH1cbiBcdFx0XHR9XG4gXHRcdH1cbiBcbkBAIC0xOTI3LDcgKzE5NzMsMTAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0cnMgPSBSVl9SRUdfVDI7XG4gXHRcdH1cbiBcbi1cdFx0ZW1pdF9sZHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBzaWduX2V4dCwgY3R4KTtcbitcdFx0aWYgKGlzX3N0YWNrX2FyZ19sZHgoaW5zbikpXG4rXHRcdFx0ZW1pdF9zdGFja19hcmdfbGR4KHJkLCBvZmYsIGN0eCk7XG4rXHRcdGVsc2VcbitcdFx0XHRlbWl0X2xkeChyZCwgb2ZmLCBycywgQlBGX1NJWkUoY29kZSksIHNpZ25fZXh0LCBjdHgpO1xuIFxuIFx0XHRyZXQgPSBhZGRfZXhjZXB0aW9uX2hhbmRsZXIoaW5zbiwgcmQsIGN0eCk7XG4gXHRcdGlmIChyZXQpXG5AQCAtMTk1Nyw3ICsyMDA2LDEwIEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuIFx0XHRcdHJkID0gUlZfUkVHX1QzO1xuIFx0XHR9XG4gXG4tXHRcdGVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbitcdFx0aWYgKGlzX3N0YWNrX2FyZ19zdChpbnNuKSlcbitcdFx0XHRlbWl0X3N0YWNrX2FyZ19zdChvZmYsIGltbSwgY3R4KTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXRfc3QocmQsIG9mZiwgaW1tLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiBcbiBcdFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcbiBcdFx0aWYgKHJldClcbkBAIC0xOTc5LDcgKzIwMzEsMTAgQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG4gXHRcdFx0cmQgPSBSVl9SRUdfVDI7XG4gXHRcdH1cbiBcbi1cdFx0ZW1pdF9zdHgocmQsIG9mZiwgcnMsIEJQRl9TSVpFKGNvZGUpLCBjdHgpO1xuK1x0XHRpZiAoaXNfc3RhY2tfYXJnX3N0eChpbnNuKSlcbitcdFx0XHRlbWl0X3N0YWNrX2FyZ19zdHgob2ZmLCBycywgY3R4KTtcbitcdFx0ZWxzZVxuK1x0XHRcdGVtaXRfc3R4KHJkLCBvZmYsIHJzLCBCUEZfU0laRShjb2RlKSwgY3R4KTtcbiBcbiBcdFx0cmV0ID0gYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGluc24sIFJFR19ET05UX0NMRUFSX01BUktFUiwgY3R4KTtcbiBcdFx0aWYgKHJldClcbkBAIC0yMDI5LDkgKzIwODQsOSBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcbiB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcbiB7XG4tXHRpbnQgaSwgc3RhY2tfYWRqdXN0ID0gMCwgc3RvcmVfb2Zmc2V0LCBicGZfc3RhY2tfYWRqdXN0O1xuK1x0aW50IGksIHN0YWNrX2FkanVzdCA9IDAsIHN0b3JlX29mZnNldCwgYnBmX3N0YWNrX2FkanVzdCA9IGN0eC1cdTAwM2VzdGFja19hcmdfc3o7XG4gXG4tXHRicGZfc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoY3R4LVx1MDAzZXByb2ctXHUwMDNlYXV4LVx1MDAzZXN0YWNrX2RlcHRoLCBTVEFDS19BTElHTik7XG4rXHRicGZfc3RhY2tfYWRqdXN0ICs9IHJvdW5kX3VwKGN0eC1cdTAwM2Vwcm9nLVx1MDAzZWF1eC1cdTAwM2VzdGFja19kZXB0aCwgU1RBQ0tfQUxJR04pO1xuIFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXG4gXHRcdG1hcmtfZnAoY3R4KTtcbiBcbkBAIC0yMTkwLDMgKzIyNDUsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiB7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4rXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N0YWNrX2FyZ3Modm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggY2JmY2QyODdlYTE2Ni4uMmZiMGI0ZTE5OGI5NCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdGludCBwYXNzID0gMCwgcHJldl9uaW5zbnMgPSAwLCBpO1xuIFx0c3RydWN0IHJ2X2ppdF9kYXRhICpqaXRfZGF0YTtcbiBcdHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4O1xuK1x0dTE2IHN0YWNrX2FyZ19jbnQ7XG4gXG4gXHRpZiAoIXByb2ctXHUwMDNlaml0X3JlcXVlc3RlZClcbiBcdFx0cmV0dXJuIHByb2c7XG5AQCAtNzEsNiArNzIsMTIgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcbiBcdGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4gXHRjdHgtXHUwMDNldXNlcl92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChwcm9nLVx1MDAzZWF1eC1cdTAwM2VhcmVuYSk7XG4rXG4rXHRzdGFja19hcmdfY250ID0gYnBmX291dF9zdGFja19hcmdfY250KGVudiwgcHJvZyk7XG4rXHQvKiBGaXJzdCAzIHN0YWNrIGFyZ3MgaW4gcmVncywgcmVzdCBvbiBzdGFjayAqL1xuK1x0Y3R4LVx1MDAzZXN0YWNrX2FyZ19zeiA9IHN0YWNrX2FyZ19jbnQgXHUwMDNlIFJWX0VYVFJBX1NUS19BUkdTID9cbitcdFx0XHQgICAgcm91bmRfdXAoKHN0YWNrX2FyZ19jbnQgLSBSVl9FWFRSQV9TVEtfQVJHUykgKiA4LCBTVEFDS19BTElHTikgOiAwO1xuK1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuIFx0Y3R4LVx1MDAzZW9mZnNldCA9IGt2emFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4gXHRpZiAoIWN0eC1cdTAwM2VvZmZzZXQpXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggMDJjNjM3ZDg3NDIwNS4uZmNmODUwZjI0NGM5MCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTEwLDcgKzEwLDcgQEBcbiAgKlx0LSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAodDApXG4gICpcbiAgKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZVxuLSAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSArIEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZFxuKyAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSArIEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1ICh0NiwgYTAtYTQpIGFyZSBzYXZlZFxuICAqIGFjcm9zcyB0aGUgY2FsbDsgQlBGX1JFR19GUCAoczUpIGlzIGNhbGxlZS1zYXZlZCBhbmQgbmVlZHMgbm8gc2F2aW5nLlxuICAqL1xuIFxuQEAgLTIwLDggKzIwLDggQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRSRUdfU1x0czAsIDYqU1pSRUcoc3ApXG4gXHRhZGRpXHRzMCwgc3AsIDgqU1pSRUdcbiBcbi1cdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMC1SNSAoYTUsIGEwLWE0KSAqL1xuLVx0UkVHX1NcdGE1LCA1KlNaUkVHKHNwKVxuK1x0LyogU2F2ZSBCUEYgcmVnaXN0ZXJzIFIwLVI1ICh0NiwgYTAtYTQpICovXG4rXHRSRUdfU1x0dDYsIDUqU1pSRUcoc3ApXG4gXHRSRUdfU1x0YTAsIDQqU1pSRUcoc3ApXG4gXHRSRUdfU1x0YTEsIDMqU1pSRUcoc3ApXG4gXHRSRUdfU1x0YTIsIDIqU1pSRUcoc3ApXG5AQCAtMzgsNyArMzgsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdFJFR19MXHRhMiwgMipTWlJFRyhzcClcbiBcdFJFR19MXHRhMSwgMypTWlJFRyhzcClcbiBcdFJFR19MXHRhMCwgNCpTWlJFRyhzcClcbi1cdFJFR19MXHRhNSwgNSpTWlJFRyhzcClcbitcdFJFR19MXHR0NiwgNSpTWlJFRyhzcClcbiBcbiBcdFJFR19MXHRzMCwgNipTWlJFRyhzcClcbiBcdFJFR19MXHRyYSwgNypTWlJFRyhzcClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbmluZGV4IDhkMzhhYWZlNjZhMjguLmFiMTIzOTdhOWI1MmEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX19zdGFja19hcmdfcHJlY2lzaW9uLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTQsNyArNCw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBsb25nIHN1YnByb2dfY2FsbF9tZW1fa2Z1bmMobG9uZyBhLCBsb25nIGIsIGxvbmcgYywgbG9uZyBkLCBsb25nIGUsIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnRmX192ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5pbmRleCA5OWJjMTE1ZjgzODBhLi5hOTgwYTNhMzk5ZDNmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2J0Zl9fdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9idGZfX3ZlcmlmaWVyX3N0YWNrX2FyZ19vcmRlci5jXG5AQCAtMyw3ICszLDggQEBcbiAjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gaW50IHN1YnByb2dfYmFkX29yZGVyXzZhcmdzKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSwgaW50IGYpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG5pbmRleCA5NDRlM2JiNjAzZTdlLi4zZTllZDM3YzU3YmI5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnLmNcbkBAIC0yMSw3ICsyMSw4IEBAIHN0cnVjdCB7XG4gXG4gaW50IHRpbWVyX3Jlc3VsdDtcbiBcbi0jaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkpIFx1MDAyNlx1MDAyNiBcXFxuKyNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSB8fCBcXFxuK1x0KGRlZmluZWQoX19UQVJHRVRfQVJDSF9yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpIFx1MDAyNlx1MDAyNiBcXFxuIFx0ZGVmaW5lZChfX0JQRl9GRUFUVVJFX1NUQUNLX0FSR1VNRU5UKVxuIFxuIGNvbnN0IHZvbGF0aWxlIGJvb2wgaGFzX3N0YWNrX2FyZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG5pbmRleCAzNDVmMmRhMmUzNjFiLi5iNmIxYThhYTdmNDRhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19rZnVuYy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX2tmdW5jLmNcbkBAIC02LDcgKzYsOCBAQFxuICNpbmNsdWRlIFwiYnBmX2tmdW5jcy5oXCJcbiAjaW5jbHVkZSBcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2Rfa2Z1bmMuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiBjb25zdCB2b2xhdGlsZSBib29sIGhhc19zdGFja19hcmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdGFja19hcmdfcHJlY2lzaW9uLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RhY2tfYXJnX3ByZWNpc2lvbi5jXG5pbmRleCBjZTAzMDFhNDFmYTk0Li43YmFhOWMxYzhlMzFlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0YWNrX2FyZ19wcmVjaXNpb24uY1xuQEAgLTYsNyArNiw4IEBAXG4gI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kX2tmdW5jLmhcIlxuICNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4gXG4tI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpKSBcdTAwMjZcdTAwMjYgXFxcbisjaWYgKGRlZmluZWQoX19UQVJHRVRfQVJDSF94ODYpIHx8IGRlZmluZWQoX19UQVJHRVRfQVJDSF9hcm02NCkgfHwgXFxcbitcdChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfcmlzY3YpIFx1MDAyNlx1MDAyNiBfX3Jpc2N2X3hsZW4gPT0gNjQpKSBcdTAwMjZcdTAwMjYgXFxcbiBcdGRlZmluZWQoX19CUEZfRkVBVFVSRV9TVEFDS19BUkdVTUVOVClcbiBcbiAvKiBGb3JjZSBrZnVuYyBleHRlcm4gQlRGIGdlbmVyYXRpb24gZm9yIGlubGluZSBhc20gY2FsbCBiZWxvdy5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfaml0X2lubGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2ppdF9pbmxpbmUuY1xuaW5kZXggMDJlNTYyZjU2ZjlkMy4uNWI5MmRhMmFiNzVjZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9qaXRfaW5saW5lLmNcbkBAIC0xMSw3ICsxMSw3IEBAIF9faml0ZWQoXCJcdGFkZHFcdCVnczp7ey4qfX0sICVyYXhcIilcbiBfX2FyY2hfYXJtNjRcbiBfX2ppdGVkKFwiXHRtcnNcdHg4LCBTUF9FTDBcIilcbiBfX2FyY2hfcmlzY3Y2NFxuLV9faml0ZWQoXCJcdG12XHRhNSwgdHBcIilcbitfX2ppdGVkKFwiXHRtdlx0dDYsIHRwXCIpXG4gX19hcmNoX2xvb25nYXJjaFxuIF9faml0ZWQoXCJcdG1vdmVcdCRhNSwgJHRwXCIpXG4gaW50IGlubGluZV9icGZfZ2V0X2N1cnJlbnRfdGFzayh2b2lkKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9sZHN4LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbGRzeC5jXG5pbmRleCA3ZTI1ZTFiOGNkMGI3Li40OWU4Y2Q0YmI0Zjk5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2xkc3guY1xuQEAgLTI4OSwxMSArMjg5LDExIEBAIF9faml0ZWQoXCJsZHJzaFx0eDIyLCBbeDExLCAjMHgxOF1cIilcbiBfX2ppdGVkKFwiYWRkXHR4MTEsIHgwLCB4MjhcIilcbiBfX2ppdGVkKFwibGRyc2JcdHgyMiwgW3gxMSwgIzB4MjBdXCIpXG4gX19hcmNoX3Jpc2N2NjRcbi1fX2ppdGVkKFwiYWRkXHR0MiwgYTUsIHM3XCIpXG4rX19qaXRlZChcImFkZFx0dDIsIHQ2LCBzN1wiKVxuIF9faml0ZWQoXCJsd1x0czMsIDB4MTAodDIpXCIpXG4tX19qaXRlZChcImFkZFx0dDIsIGE1LCBzN1wiKVxuK19faml0ZWQoXCJhZGRcdHQyLCB0NiwgczdcIilcbiBfX2ppdGVkKFwibGhcdHMzLCAweDE4KHQyKVwiKVxuLV9faml0ZWQoXCJhZGRcdHQyLCBhNSwgczdcIilcbitfX2ppdGVkKFwiYWRkXHR0MiwgdDYsIHM3XCIpXG4gX19qaXRlZChcImxiXHRzMywgMHgyMCh0MilcIilcbiBfX2ppdGVkKFwiYWRkXHR0MiwgYTAsIHM3XCIpXG4gX19qaXRlZChcImx3XHRzNCwgMHgxMCh0MilcIilcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbmluZGV4IDUxZDIyZmFmNDU1OWYuLmY2YTRhNmFhMGU2MTcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmcuY1xuQEAgLTEyLDcgKzEyLDggQEAgc3RydWN0IHtcbiBcdF9fdHlwZSh2YWx1ZSwgbG9uZyBsb25nKTtcbiB9IG1hcF9oYXNoXzhiIFNFQyhcIi5tYXBzXCIpO1xuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWRcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbmluZGV4IDhlNDMyNTI3M2IzZDguLjU3ZjIyNjkxNzQ0YWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfc3RhY2tfYXJnX29yZGVyLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9zdGFja19hcmdfb3JkZXIuY1xuQEAgLTUsNyArNSw4IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcImJwZl9taXNjLmhcIlxuIFxuLSNpZiAoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3g4NikgfHwgZGVmaW5lZChfX1RBUkdFVF9BUkNIX2FybTY0KSkgXHUwMDI2XHUwMDI2IFxcXG4rI2lmIChkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfeDg2KSB8fCBkZWZpbmVkKF9fVEFSR0VUX0FSQ0hfYXJtNjQpIHx8IFxcXG4rXHQoZGVmaW5lZChfX1RBUkdFVF9BUkNIX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSkgXHUwMDI2XHUwMDI2IFxcXG4gXHRkZWZpbmVkKF9fQlBGX0ZFQVRVUkVfU1RBQ0tfQVJHVU1FTlQpXG4gXG4gX19ub2lubGluZSBfX3VzZWQgX19uYWtlZFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6MTk6NTcuNDQxMzEwNjEyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Njg3MDg5MTc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgQ29kZSBNb2RpZmljYXRpb24gZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAsIHNvIHRoYXQncyB0aGUga2V5LiBGaXJzdCwgYSBjYXJlZnVsIGluc3BlY3Rpb24gb2YgdGhlIGRpZmYgcmV2ZWFscyBtb2RpZmljYXRpb25zIGFjcm9zcyBzZXZlcmFsIGZpbGVzLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgY2hhbmdlcyBpbiBib3RoIGtlcm5lbCBhbmQgdXNlcnNwYWNlIGNvbXBvbmVudHMuIEFsbCBvZiB0aGUga2VybmVsIGNvZGUgY2hhbmdlcyBmYWxsIHdpdGhpbiBgYXJjaC9yaXNjdi9gLCB3aGljaCBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMsIHNwZWNpZmljYWxseSBmb3IgdGhlIFJJU0MtViA2NC1iaXQgYXJjaGl0ZWN0dXJlLiBUaGUgdXNlcnNwYWNlIG1vZGlmaWNhdGlvbnMgYXJlIGdyb3VwZWQgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLlxuXG5Ob3csIHdlIG5lZWQgdG8gYXBwbHkgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhLiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgYSBzY2VuYXJpbyB3aGVyZSB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBTZWN0aW9uIDIgb3V0bGluZXMgdGhlIGNvbmRpdGlvbnMuIEJhc2ljYWxseSwgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgYWxsIG1vZGlmaWNhdGlvbnMgZmFsbCBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6IG5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgb3IgVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLlxuXG5HaXZlbiB0aGUgcHJvbXB0J3MgdGFyZ2V0LCBJIHNlZSBhIGNsZWFyIG1hdGNoLiBBbGwgdGhlIEMvQVNNIGtlcm5lbCBjb2RlIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGFyY2gvcmlzY3YvYCwgbWFraW5nIGl0IGV4Y2x1c2l2ZSB0byB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4gVGhpcyBjb2RlIGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgb24gYGFtZDY0YC4gVGhlbiwgYWxsIG90aGVyIG1vZGlmaWNhdGlvbnMgZXhpc3Qgd2l0aGluIGB0b29scy9gLCB3aGljaCBpcyBjb25zaWRlcmVkIHVzZXItc3BhY2Ugc2VsZnRlc3RzLiBCYXNlZCBvbiB0aGlzLCBhbGwgbW9kaWZpZWQgY29kZSBpcyBlaXRoZXIgc3BlY2lmaWMgdG8gYSBub24tdGFyZ2V0IGFyY2hpdGVjdHVyZSBvciBpbiBgdG9vbHMvYCwgZml0dGluZyB0aGUgY3JpdGVyaWEuXG5cblRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSd2ZSBjb25maXJtZWQgdGhhdCB0aGUgZmlsZXMgbGlzdGVkIGluIHRoZSBkaWZmIGFyZSBjb21wcmVoZW5zaXZlOiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oYCwgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgLCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgLCBgYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLCBhbmQgYSBzZXQgb2YgZmlsZXMgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9gLiBObyBvdGhlciBmaWxlcyB3ZXJlIHRvdWNoZWQuXG5cblNvLCBJJ20gY29uZmlkZW50IGluIHRoZSBhc3Nlc3NtZW50LiBXZSBjYW4gY29uZmlkZW50bHkgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbjpcblxuKiAgIGBXb3J0aEZ1enppbmc9ZmFsc2VgXG4qICAgYEZvY3VzU3ltYm9scz1udWxsYFxuKiAgIGBFbmFibGVDb25maWdzPW51bGxgXG4qICAgYFJlYXNvbmluZ2A6IFwiVGhlIG1vZGlmaWNhdGlvbnMgYXJlIGVpdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgKFJJU0MtVikgYW5kIHVucmVhY2hhYmxlIG9uIGFtZDY0LCBvciB0aGV5IHJlc2lkZSBpbiB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyAoYHRvb2xzL2ApLCBzYXRpc2Z5aW5nIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAyMCwiT3V0cHV0VG9rZW5zIjoxMDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6MjA6MDQuMzEyMjA0NTk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIkFsbCBrZXJuZWwgbW9kaWZpY2F0aW9ucyBpbiB0aGlzIHBhdGNoIHNlcmllcyBhcmUgbG9jYXRlZCBpbiBhcmNoL3Jpc2N2LyAoUklTQy1WIEJQRiBKSVQgaW1wbGVtZW50YXRpb24pLCB3aGljaCBpcyBzcGVjaWZpYyB0byBSSVNDLVYgYW5kIHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvICh1c2Vyc3BhY2Ugc2VsZnRlc3RzKS4gQ29uc2VxdWVudGx5LCBubyByZWFjaGFibGUga2VybmVsIGNvZGUgaXMgbW9kaWZpZWQgZm9yIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJBbGwga2VybmVsIG1vZGlmaWNhdGlvbnMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIGxvY2F0ZWQgaW4gYXJjaC9yaXNjdi8gKFJJU0MtViBCUEYgSklUIGltcGxlbWVudGF0aW9uKSwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gUklTQy1WIGFuZCB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyAodXNlcnNwYWNlIHNlbGZ0ZXN0cykuIENvbnNlcXVlbnRseSwgbm8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIGlzIG1vZGlmaWVkIGZvciBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjIwOjA0LjMxMjIyNjI3NloiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowlcb5s[1] Phase: Running StartedAt: 2026-09-06 12:20:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlcb5s[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 12:20:15 +0000 UTC FinishedAt: 2026-09-06 12:20:20 +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,}