Name: series-workflowp52qc Phase: Failed StartedAt: 2026-08-07 13:21:06 +0000 UTC FinishedAt: 2026-08-07 14:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp52qc[0] Phase: Succeeded StartedAt: 2026-08-07 13:21:06 +0000 UTC FinishedAt: 2026-08-07 14:44:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp52qc[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 13:21:06 +0000 UTC FinishedAt: 2026-08-07 14:44:10 +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+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS4gVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMWFkODNhNDE1ODdhNWM0MDdmNzA3MDM4ZmMzZWQ5MDM2YmViYWQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAxNDowMTo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDUuLjJlNTk3OGVjMmIwNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuQEAgLTEwODcsNiAmIzQzOzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cdTAwM2VudW1fdHhfcmluZ3M7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlkcl9pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udHhidWZfaWRyKTtcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9pZHJfbG9jayk7XG4mIzQzO1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XG4gXG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuaW5kZXggODRmNjY4MzlmMGM2ZC4uNmQ5OTUwMWFhMjY5YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5AQCAtODcsNiAmIzQzOzg3LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0c3RydWN0IGlkciB0eGJ1Zl9pZHI7XG4gXHQvKiBQcm90ZWN0cyB0eGJ1Zl9pZHIgYW5kIG51bV9wZW5kaW5nICovXG4gXHRzcGlubG9ja190IHR4X2lkcl9sb2NrO1xuJiM0MztcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbiYjNDM7XHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuaW5kZXggY2FjOTcwYzkyODA2YS4uMDgzYWNhOGZmMzU1YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5AQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBpbnQgYXRoMTFrX2RwX3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX3ZpZiAqYXJ2aWYsXG4gXG4gXHRwb29sX2lkID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikgXHUwMDI2IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpO1xuIFxuLVx0cmluZ19zZWxlY3RvciA9IGFiLVx1MDAzZWh3X3BhcmFtcy5od19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiKTtcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbmluZGV4IDkzZjlhMDNjNDhkYzAuLjhhMjhjMWQ0YzE3YjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xuQEAgLTg3NiwyOCAmIzQzOzg3NiwxNCBAQCBzdGF0aWMgYm9vbCBhdGgxMWtfaHdfd2NuNjg1NV9yeF9kZXNjX2dldF9sZHBjX3N1cHBvcnQoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKVxuIFx0XHRcdCBfX2xlMzJfdG9fY3B1KGRlc2MtXHUwMDNldS53Y242ODU1Lm1zZHVfc3RhcnQuaW5mbzIpKTtcbiB9XG4gXG4tc3RhdGljIHUzMiBhdGgxMWtfaHdfaXBxODA3NF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi17XG4tXHQvKiBMZXQgdGhlIGRlZmF1bHQgcmluZyBzZWxlY3Rpb24gYmUgYmFzZWQgb24gY3VycmVudCBwcm9jZXNzb3Jcbi1cdCAqIG51bWJlciwgd2hlcmUgb25lIG9mIHRoZSAzIHRjbCByaW5ncyBhcmUgc2VsZWN0ZWQgYmFzZWQgb25cbi1cdCAqIHRoZSBzbXBfcHJvY2Vzc29yX2lkKCkuIEluIGNhc2UgdGhhdCByaW5nXG4tXHQgKiBpcyBmdWxsL2J1c3ksIHdlIHJlc29ydCB0byBvdGhlciBhdmFpbGFibGUgcmluZ3MuXG4tXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cbi1cdCAqXG4tXHQgKiBUT0RPOiBBZGQgdGhyb3R0bGluZyBsb2dpYyB3aGVuIGFsbCByaW5ncyBhcmUgZnVsbFxuLVx0ICovXG4mIzQzO3N0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxuJiM0Mzt7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbiBcbi1zdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0MztzdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYylcbiB7XG4tXHQvKiBTZWxlY3QgdGhlIFRDTCByaW5nIGJhc2VkIG9uIHRoZSBmbG93IGhhc2ggb2YgdGhlIFNLQiBpbnN0ZWFkXG4tXHQgKiBvZiBDUFUgSUQuIFNpbmNlIGFwcGxpY2F0aW9ucyBwdW1waW5nIHRoZSB0cmFmZmljIGNhbiBiZSBzY2hlZHVsZWRcbi1cdCAqIG9uIG11bHRpcGxlIENQVXMsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgcGFja2V0cyBvZiB0aGUgc2FtZSBmbG93XG4tXHQgKiBjb3VsZCBlbmQgb24gZGlmZmVyZW50IFRDTCByaW5ncywgdGhpcyBjb3VsZCBzb21ldGltZXMgcmVzdWx0cyBpblxuLVx0ICogYW4gb3V0IG9mIG9yZGVyIGFycml2YWwgb2YgdGhlIHBhY2tldHMgYXQgdGhlIHJlY2VpdmVyLlxuLVx0ICovXG4tXHRyZXR1cm4gc2tiX2dldF9oYXNoKHNrYik7XG4mIzQzO1x0cmV0dXJuIGFjO1xuIH1cbiBcbiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wcyA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbmluZGV4IDQ5OTY1MzZmYmQxNGYuLmI2YmM4YjcyZDgxMjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaFxuQEAgLTI3Myw3ICYjNDM7MjczLDcgQEAgc3RydWN0IGF0aDExa19od19vcHMge1xuIFx0dTE2ICgqbXBkdV9pbmZvX2dldF9wZWVyaWQpKHN0cnVjdCBoYWxfcnhfbXBkdV9pbmZvICptcGR1X2luZm8pO1xuIFx0Ym9vbCAoKnJ4X2Rlc2NfbWFjX2FkZHIyX3ZhbGlkKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpO1xuIFx0dTgqICgqcnhfZGVzY19tcGR1X3N0YXJ0X2FkZHIyKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpO1xuLVx0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xuJiM0MztcdHUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKSh1OCBhYyk7XG4gfTtcbiBcbiBleHRlcm4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLjk4MTNmNzkyM2MzNGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5AQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDU5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuJiM0MztcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuJiM0MztcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4mIzQzO1x0fTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4mIzQzO1x0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XG4mIzQzO1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdHUzMiByaW5nX3NlbGVjdG9yO1xuJiM0MztcdGludCBudW1fZnJlZTtcbiYjNDM7XHR1OCByaW5nX2lkO1xuJiM0MztcbiYjNDM7XHRpZiAoIWFyKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXHUwMDNlYWMpO1xuJiM0MztcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzO1xuJiM0MztcdHR4X3JpbmcgPSBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkcC50eF9yaW5nW3JpbmdfaWRdO1xuJiM0MztcdHRjbF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsLnNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4mIzQzO1xuJiM0MztcdHdoaWxlICgxKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xuJiM0MztcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRhdGgxMWtfbWFjX29wX3R4KGh3LCBcdTAwMjZjb250cm9sLCBza2IpO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTFrX21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4mIzQzO1x0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcbiBcdC5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0YXJ0LFxuIFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCxcbiBcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuaW5kZXggYWY1ZjExZmMxZDg0YS4uM2Q0NmNmYmYwYTFjMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG5AQCAtMTUzOSw2ICYjNDM7MTUzOSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlbWF4X3R4X3Jpbmc7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XG4gXG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuaW5kZXggZjhjZmM3YmIyOWRkNy4uNjhkMjAyMGJlOWI4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5AQCAtNTgsNiAmIzQzOzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0dTggdGNsX2RhdGFfcmluZ19pZDtcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xuJiM0MztcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbiYjNDM7XHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX2NvbXBsZXRpb25fcmluZ190eCAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG5pbmRleCBhMTY0NTYzZmZmMjg5Li4wNzFjYjVkMzA5MzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICYjNDM7MzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLFxuIFx0ZWxzZVxuIFx0XHRyZXR1cm4gKChzcm5nLVx1MDAzZXJpbmdfc2l6ZSAtIGhwICYjNDM7IHRwKSAvIHNybmctXHUwMDNlZW50cnlfc2l6ZSkgLSAxO1xuIH1cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XG4gXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaGFsX3NybmcgKnNybmcpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCA4NmZiOGI3MTk2MTM1Li42NWNhYTdhMjM0OWYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbkBAIC0yNDMsNyAmIzQzOzI0Myw3IEBAIHN0cnVjdCBhdGgxMmtfaHdfb3BzIHtcbiBcdGludCAoKm1hY19pZF90b19wZGV2X2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpO1xuIFx0aW50ICgqbWFjX2lkX3RvX3NybmdfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7XG4gXHRpbnQgKCpyeGRtYV9yaW5nX3NlbF9jb25maWcpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuLVx0dTggKCpnZXRfcmluZ19zZWxlY3Rvcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4mIzQzO1x0dTggKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xuIFx0Ym9vbCAoKmRwX3NybmdfaXNfdHhfY29tcF9yaW5nKShpbnQgcmluZ19udW0pO1xuIFx0Ym9vbCAoKmlzX2ZyYW1lX2xpbmtfYWdub3N0aWMpKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCBkMjc0OWRlNDQ1NTM0Li43NDM1OWU4ZWVhNDcxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbkBAIC0xMTEsNyAmIzQzOzExMSw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXG4gXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cbiBcdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXG4gXHQgKi9cbi1cdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XG4mIzQzO1x0cmluZ19zZWxlY3RvciA9IGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vod19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikpO1xuIFxuIHRjbF9yaW5nX3NlbDpcbiBcdHRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5pbmRleCBkOWZkZDJmYzgyOTg2Li5iZWRhZGQ0ODJhOGU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbkBAIC00OSw3ICYjNDM7NDksNyBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfcWNuOTI3NChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl9xY245Mjc0KHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NCh1OCBhYylcbiB7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbkBAIC04Myw5ICYjNDM7ODMsOSBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfd2NuNzg1MChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXG4gXHRyZXR1cm4gbWFjX2lkO1xuIH1cbiBcbi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7c3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl93Y243ODUwKHU4IGFjKVxuIHtcbi1cdHJldHVybiBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTtcbiYjNDM7XHRyZXR1cm4gYWM7XG4gfVxuIFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbkBAIC0xMTAwLDkgJiM0MzsxMTAwLDgyIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtXHUwMDNldmlmKTtcbiYjNDM7XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHtcbiYjNDM7XHRcdC5zdGEgPSB0eHEtXHUwMDNlc3RhLFxuJiM0MztcdH07XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHR4cS1cdTAwM2V2aWY7XG4mIzQzO1x0c3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWY7XG4mIzQzO1x0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XG4mIzQzO1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGE7XG4mIzQzO1x0c3RydWN0IGF0aDEya19kcCAqZHA7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrICphcjtcbiYjNDM7XHR1OCByaW5nX3NlbGVjdG9yO1xuJiM0MztcdGludCBudW1fZnJlZTtcbiYjNDM7XHR1OCByaW5nX2lkO1xuJiM0MztcdHU4IGxpbmtfaWQ7XG4mIzQzO1xuJiM0MztcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpIFx1MDAyNlx1MDAyNiB0eHEtXHUwMDNlc3RhKSB7XG4mIzQzO1x0XHRhaHN0YSA9IGF0aDEya19zdGFfdG9fYWhzdGEodHhxLVx1MDAzZXN0YSk7XG4mIzQzO1x0XHRsaW5rX2lkID0gYWhzdGEtXHUwMDNlYXNzb2NfbGlua19pZDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bGlua19pZCA9IGFodmlmLVx1MDAzZWRlZmxpbmsubGlua19pZDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XG4mIzQzO1x0YXJ2aWYgPSByY3VfZGVyZWZlcmVuY2UoYWh2aWYtXHUwMDNlbGlua1tsaW5rX2lkXSk7XG4mIzQzO1x0aWYgKCFhcnZpZiB8fCAhYXJ2aWYtXHUwMDNlYXIpIHtcbiYjNDM7XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0YXIgPSBhcnZpZi1cdTAwM2VhcjtcbiYjNDM7XHRkcCA9IGFyLVx1MDAzZWFiLVx1MDAzZWRwO1xuJiM0MztcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXHUwMDNlYWMpO1xuJiM0MztcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZW1heF90eF9yaW5nO1xuJiM0MztcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xuJiM0MztcdHRjbF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNlaGFsLVx1MDAzZXNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4mIzQzO1xuJiM0MztcdHdoaWxlICgxKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bnVtX2ZyZWUgPSBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xuJiM0MztcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRhdGgxMmtfd2lmaTdfbWFjX29wX3R4KGh3LCBcdTAwMjZjb250cm9sLCBza2IpO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMmtfb3BzX3dpZmk3ID0ge1xuIFx0LnR4XHRcdFx0XHQ9IGF0aDEya193aWZpN19tYWNfb3BfdHgsXG4tXHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxuJiM0MztcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS4gVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMWFkODNhNDE1ODdhNWM0MDdmNzA3MDM4ZmMzZWQ5MDM2YmViYWQwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAxNDowMTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwppbmRleCBmMzg5Yjk3YWNiZGQ1Li4yZTU5NzhlYzJiMDViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jCkBAIC0xMDg3LDYgJiM0MzsxMDg3LDcgQEAgaW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKQogCWZvciAoaSA9IDA7IGkgJmx0OyBhYi0mZ3Q7aHdfcGFyYW1zLmhhbF9wYXJhbXMtJmd0O251bV90eF9yaW5nczsgaSYjNDM7JiM0MzspIHsKIAkJaWRyX2luaXQoJmFtcDtkcC0mZ3Q7dHhfcmluZ1tpXS50eGJ1Zl9pZHIpOwogCQlzcGluX2xvY2tfaW5pdCgmYW1wO2RwLSZndDt0eF9yaW5nW2ldLnR4X2lkcl9sb2NrKTsKJiM0MzsJCXNwaW5fbG9ja19pbml0KCZhbXA7ZHAtJmd0O3R4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTsKIAkJZHAtJmd0O3R4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7CiAKIAkJZHAtJmd0O3R4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oCmluZGV4IDg0ZjY2ODM5ZjBjNmQuLjZkOTk1MDFhYTI2OWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKQEAgLTg3LDYgJiM0Mzs4Nyw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHsKIAlzdHJ1Y3QgaWRyIHR4YnVmX2lkcjsKIAkvKiBQcm90ZWN0cyB0eGJ1Zl9pZHIgYW5kIG51bV9wZW5kaW5nICovCiAJc3BpbmxvY2tfdCB0eF9pZHJfbG9jazsKJiM0MzsJLyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqLwomIzQzOwlzcGlubG9ja190IHdha2VfdHhfbG9jazsKIAlzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1czsKIAlpbnQgdHhfc3RhdHVzX2hlYWQ7CiAJaW50IHR4X3N0YXR1c190YWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jCmluZGV4IGNhYzk3MGM5MjgwNmEuLjA4M2FjYThmZjM1NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmMKQEAgLTEwOCw3ICYjNDM7MTA4LDcgQEAgaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLAogCiAJcG9vbF9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpICZhbXA7IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpOwogCi0JcmluZ19zZWxlY3RvciA9IGFiLSZndDtod19wYXJhbXMuaHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3Rvcihza2IpOwomIzQzOwlyaW5nX3NlbGVjdG9yID0gYWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTsKIAogdGNsX3Jpbmdfc2VsOgogCXRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMKaW5kZXggOTNmOWEwM2M0OGRjMC4uOGEyOGMxZDRjMTdiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuYwpAQCAtODc2LDI4ICYjNDM7ODc2LDE0IEBAIHN0YXRpYyBib29sIGF0aDExa19od193Y242ODU1X3J4X2Rlc2NfZ2V0X2xkcGNfc3VwcG9ydChzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpCiAJCQkgX19sZTMyX3RvX2NwdShkZXNjLSZndDt1LndjbjY4NTUubXNkdV9zdGFydC5pbmZvMikpOwogfQogCi1zdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQotewotCS8qIExldCB0aGUgZGVmYXVsdCByaW5nIHNlbGVjdGlvbiBiZSBiYXNlZCBvbiBjdXJyZW50IHByb2Nlc3NvcgotCSAqIG51bWJlciwgd2hlcmUgb25lIG9mIHRoZSAzIHRjbCByaW5ncyBhcmUgc2VsZWN0ZWQgYmFzZWQgb24KLQkgKiB0aGUgc21wX3Byb2Nlc3Nvcl9pZCgpLiBJbiBjYXNlIHRoYXQgcmluZwotCSAqIGlzIGZ1bGwvYnVzeSwgd2UgcmVzb3J0IHRvIG90aGVyIGF2YWlsYWJsZSByaW5ncy4KLQkgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC4KLQkgKgotCSAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsCi0JICovCiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfaHdfaXBxODA3NF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3IodTggYWMpCiYjNDM7ewogCXJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7CiB9CiAKLXN0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfaHdfd2NuNjc1MF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3IodTggYWMpCiB7Ci0JLyogU2VsZWN0IHRoZSBUQ0wgcmluZyBiYXNlZCBvbiB0aGUgZmxvdyBoYXNoIG9mIHRoZSBTS0IgaW5zdGVhZAotCSAqIG9mIENQVSBJRC4gU2luY2UgYXBwbGljYXRpb25zIHB1bXBpbmcgdGhlIHRyYWZmaWMgY2FuIGJlIHNjaGVkdWxlZAotCSAqIG9uIG11bHRpcGxlIENQVXMsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgcGFja2V0cyBvZiB0aGUgc2FtZSBmbG93Ci0JICogY291bGQgZW5kIG9uIGRpZmZlcmVudCBUQ0wgcmluZ3MsIHRoaXMgY291bGQgc29tZXRpbWVzIHJlc3VsdHMgaW4KLQkgKiBhbiBvdXQgb2Ygb3JkZXIgYXJyaXZhbCBvZiB0aGUgcGFja2V0cyBhdCB0aGUgcmVjZWl2ZXIuCi0JICovCi0JcmV0dXJuIHNrYl9nZXRfaGFzaChza2IpOwomIzQzOwlyZXR1cm4gYWM7CiB9CiAKIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oCmluZGV4IDQ5OTY1MzZmYmQxNGYuLmI2YmM4YjcyZDgxMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmgKQEAgLTI3Myw3ICYjNDM7MjczLDcgQEAgc3RydWN0IGF0aDExa19od19vcHMgewogCXUxNiAoKm1wZHVfaW5mb19nZXRfcGVlcmlkKShzdHJ1Y3QgaGFsX3J4X21wZHVfaW5mbyAqbXBkdV9pbmZvKTsKIAlib29sICgqcnhfZGVzY19tYWNfYWRkcjJfdmFsaWQpKHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYyk7CiAJdTgqICgqcnhfZGVzY19tcGR1X3N0YXJ0X2FkZHIyKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpOwotCXUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKJiM0MzsJdTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTsKIH07CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCmluZGV4IDJkNTVjZGM0ZDE2NWQuLjk4MTNmNzkyM2MzNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwpAQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDU5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKJiM0MzsJCQkJCXN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsKJiM0MzsJCS5zdGEgPSB0eHEtJmd0O3N0YSwKJiM0MzsJfTsKJiM0MzsJc3RydWN0IGF0aDExayAqYXIgPSBody0mZ3Q7cHJpdjsKJiM0MzsJc3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7CiYjNDM7CXN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CXUzMiByaW5nX3NlbGVjdG9yOwomIzQzOwlpbnQgbnVtX2ZyZWU7CiYjNDM7CXU4IHJpbmdfaWQ7CiYjNDM7CiYjNDM7CWlmICghYXIpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXJpbmdfc2VsZWN0b3IgPSBhci0mZ3Q7YWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHR4cS0mZ3Q7YWMpOwomIzQzOwlyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGFyLSZndDthYi0mZ3Q7aHdfcGFyYW1zLmhhbF9wYXJhbXMtJmd0O251bV90eF9yaW5nczsKJiM0MzsJdHhfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtkcC50eF9yaW5nW3JpbmdfaWRdOwomIzQzOwl0Y2xfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtoYWwuc3JuZ19saXN0W3R4X3JpbmctJmd0O3RjbF9kYXRhX3JpbmcucmluZ19pZF07CiYjNDM7CiYjNDM7CXdoaWxlICgxKSB7CiYjNDM7CQlpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsCiYjNDM7CQkJCSAgICAgICZhbXA7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CQludW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItJmd0O2FiLCB0Y2xfcmluZywgdHJ1ZSk7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJCWlmIChudW1fZnJlZSA9PSAwKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7CiYjNDM7CQlpZiAoIXNrYikgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWF0aDExa19tYWNfb3BfdHgoaHcsICZhbXA7Y29udHJvbCwgc2tiKTsKJiM0MzsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMWtfb3BzID0gewogCS50eAkJCQk9IGF0aDExa19tYWNfb3BfdHgsCi0JLndha2VfdHhfcXVldWUJCQk9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSwKJiM0MzsJLndha2VfdHhfcXVldWUJCQk9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSwKIAkuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCwKIAkuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLAogCS5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jCmluZGV4IGFmNWYxMWZjMWQ4NGEuLjNkNDZjZmJmMGExYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMKQEAgLTE1MzksNiAmIzQzOzE1MzksNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCX0KIAogCWZvciAoaSA9IDA7IGkgJmx0OyBhYi0mZ3Q7aHdfcGFyYW1zLSZndDttYXhfdHhfcmluZzsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXNwaW5fbG9ja19pbml0KCZhbXA7ZHAtJmd0O3R4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTsKIAkJZHAtJmd0O3R4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7CiAKIAkJZHAtJmd0O3R4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oCmluZGV4IGY4Y2ZjN2JiMjlkZDcuLjY4ZDIwMjBiZTliODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHsKIAl1OCB0Y2xfZGF0YV9yaW5nX2lkOwogCXN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7CiAJc3RydWN0IGRwX3NybmcgdGNsX2NvbXBfcmluZzsKJiM0MzsJLyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqLwomIzQzOwlzcGlubG9ja190IHdha2VfdHhfbG9jazsKIAlzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1czsKIAlpbnQgdHhfc3RhdHVzX2hlYWQ7CiAJaW50IHR4X3N0YXR1c190YWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMKaW5kZXggYTE2NDU2M2ZmZjI4OS4uMDcxY2I1ZDMwOTMxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jCkBAIC0zOTAsNiAmIzQzOzM5MCw3IEBAIGludCBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBoYWxfc3JuZyAqc3JuZywKIAllbHNlCiAJCXJldHVybiAoKHNybmctJmd0O3Jpbmdfc2l6ZSAtIGhwICYjNDM7IHRwKSAvIHNybmctJmd0O2VudHJ5X3NpemUpIC0gMTsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKTsKIAogdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYiwKIAkJCQkgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCmluZGV4IDg2ZmI4YjcxOTYxMzUuLjY1Y2FhN2EyMzQ5ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmgKQEAgLTI0Myw3ICYjNDM7MjQzLDcgQEAgc3RydWN0IGF0aDEya19od19vcHMgewogCWludCAoKm1hY19pZF90b19wZGV2X2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpOwogCWludCAoKm1hY19pZF90b19zcm5nX2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpOwogCWludCAoKnJ4ZG1hX3Jpbmdfc2VsX2NvbmZpZykoc3RydWN0IGF0aDEya19iYXNlICphYik7Ci0JdTggKCpnZXRfcmluZ19zZWxlY3Rvcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7CiYjNDM7CXU4ICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTsKIAlib29sICgqZHBfc3JuZ19pc190eF9jb21wX3JpbmcpKGludCByaW5nX251bSk7CiAJYm9vbCAoKmlzX2ZyYW1lX2xpbmtfYWdub3N0aWMpKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLAogCQkJCSAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jCmluZGV4IGQyNzQ5ZGU0NDU1MzQuLjc0MzU5ZThlZWE0NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKQEAgLTExMSw3ICYjNDM7MTExLDcgQEAgaW50IGF0aDEya193aWZpN19kcF90eChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmEKIAkgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC4KIAkgKiBUT0RPOiBBZGQgdGhyb3R0bGluZyBsb2dpYyB3aGVuIGFsbCByaW5ncyBhcmUgZnVsbAogCSAqLwotCXJpbmdfc2VsZWN0b3IgPSBkcC0mZ3Q7aHdfcGFyYW1zLSZndDtod19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHNrYik7CiYjNDM7CXJpbmdfc2VsZWN0b3IgPSBkcC0mZ3Q7aHdfcGFyYW1zLSZndDtod19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTsKIAogdGNsX3Jpbmdfc2VsOgogCXRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKaW5kZXggZDlmZGQyZmM4Mjk4Ni4uYmVkYWRkNDgyYThlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwpAQCAtNDksNyAmIzQzOzQ5LDcgQEAgYXRoMTJrX3dpZmk3X2h3X21hY19pZF90b19zcm5nX2lkX3FjbjkyNzQoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQoc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQodTggYWMpCiB7CiAJcmV0dXJuIHNtcF9wcm9jZXNzb3JfaWQoKTsKIH0KQEAgLTgzLDkgJiM0Mzs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywKIAlyZXR1cm4gbWFjX2lkOwogfQogCi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAoc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAodTggYWMpCiB7Ci0JcmV0dXJuIHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpOwomIzQzOwlyZXR1cm4gYWM7CiB9CiAKIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSkKQEAgLTExMDAsOSAmIzQzOzExMDAsODIgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiYjNDM7CQkJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtJmd0O3ZpZik7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0gewomIzQzOwkJLnN0YSA9IHR4cS0mZ3Q7c3RhLAomIzQzOwl9OwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gdHhxLSZndDt2aWY7CiYjNDM7CXN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmOwomIzQzOwlzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZzsKJiM0MzsJc3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZzsKJiM0MzsJc3RydWN0IGF0aDEya19zdGEgKmFoc3RhOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2RwICpkcDsKJiM0MzsJc3RydWN0IHNrX2J1ZmYgKnNrYjsKJiM0MzsJc3RydWN0IGF0aDEyayAqYXI7CiYjNDM7CXU4IHJpbmdfc2VsZWN0b3I7CiYjNDM7CWludCBudW1fZnJlZTsKJiM0MzsJdTggcmluZ19pZDsKJiM0MzsJdTggbGlua19pZDsKJiM0MzsKJiM0MzsJaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZikgJmFtcDsmYW1wOyB0eHEtJmd0O3N0YSkgewomIzQzOwkJYWhzdGEgPSBhdGgxMmtfc3RhX3RvX2Foc3RhKHR4cS0mZ3Q7c3RhKTsKJiM0MzsJCWxpbmtfaWQgPSBhaHN0YS0mZ3Q7YXNzb2NfbGlua19pZDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWxpbmtfaWQgPSBhaHZpZi0mZ3Q7ZGVmbGluay5saW5rX2lkOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKJiM0MzsKJiM0MzsJYXJ2aWYgPSByY3VfZGVyZWZlcmVuY2UoYWh2aWYtJmd0O2xpbmtbbGlua19pZF0pOwomIzQzOwlpZiAoIWFydmlmIHx8ICFhcnZpZi0mZ3Q7YXIpIHsKJiM0MzsJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWFyID0gYXJ2aWYtJmd0O2FyOwomIzQzOwlkcCA9IGFyLSZndDthYi0mZ3Q7ZHA7CiYjNDM7CiYjNDM7CXJpbmdfc2VsZWN0b3IgPSBkcC0mZ3Q7aHdfcGFyYW1zLSZndDtod19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHR4cS0mZ3Q7YWMpOwomIzQzOwlyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGRwLSZndDtod19wYXJhbXMtJmd0O21heF90eF9yaW5nOwomIzQzOwl0eF9yaW5nID0gJmFtcDtkcC0mZ3Q7dHhfcmluZ1tyaW5nX2lkXTsKJiM0MzsJdGNsX3JpbmcgPSAmYW1wO2RwLSZndDtoYWwtJmd0O3NybmdfbGlzdFt0eF9yaW5nLSZndDt0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdOwomIzQzOwomIzQzOwl3aGlsZSAoMSkgewomIzQzOwkJaWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILAomIzQzOwkJCQkgICAgICAmYW1wO2FyLSZndDthYi0mZ3Q7ZGV2X2ZsYWdzKSkpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrKCZhbXA7dGNsX3JpbmctJmd0O2xvY2spOwomIzQzOwkJbnVtX2ZyZWUgPSBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLSZndDthYiwgdGNsX3JpbmcsIHRydWUpOwomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CQlpZiAobnVtX2ZyZWUgPT0gMCkgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpOwomIzQzOwkJaWYgKCFza2IpIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlhdGgxMmtfd2lmaTdfbWFjX29wX3R4KGh3LCAmYW1wO2NvbnRyb2wsIHNrYik7CiYjNDM7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7CiAJLnR4CQkJCT0gYXRoMTJrX3dpZmk3X21hY19vcF90eCwKLQkud2FrZV90eF9xdWV1ZQkJCT0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLAomIzQzOwkud2FrZV90eF9xdWV1ZQkJCT0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLAogCS5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0YXJ0LAogCS5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsCiAJLnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODAKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA1MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBXaS1GaSBEcml2ZXIgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyB0aGUgYGF0aDExa2AgYW5kIGBhdGgxMmtgIHdpcmVsZXNzIGRyaXZlcnMuIEl0IGludHJvZHVjZXMgYSBzcGlubG9jayAoYHdha2VfdHhfbG9ja2ApIHRvIHRoZSBgZHBfdHhfcmluZ2Agc3RydWN0IGFuZCBpbmNsdWRlcyBgd2FrZV90eF9xdWV1ZWAgY2FsbGJhY2tzIGZvciBib3RoIGRyaXZlcnMuIFRoZSBgZ2V0X3Jpbmdfc2VsZWN0b3JgIGZ1bmN0aW9uIGFsc28gY2hhbmdlZCB0byBhY2NlcHQgYHU4IGFjYCBpbnN0ZWFkIG9mIGBzdHJ1Y3Qgc2tfYnVmZiAqc2tiYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIHRlc3QgdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VPwoKU2luY2UgSSYjMzk7bSBkZWFsaW5nIHdpdGggYGF0aDExa2AgYW5kIGBhdGgxMmtgLCB3aGljaCBhcmUgUXVhbGNvbW0gV2ktRmkgZHJpdmVycywgSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhleSBhcmUgUENJIG9yIEFIQiBkZXZpY2VzLiBBbmQgdGhlIGFuc3dlciBpcywgeWVzLCB0aGV5IGFyZSwgdXN1YWxseSBwaHlzaWNhbCBQQ0llIG9yIEFIQi4gU28sIHRoZSBjb3JlIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiBJIGVmZmVjdGl2ZWx5IGVtdWxhdGUgb3IgZnV6eiB0aGVzZSBkcml2ZXJzIGluIHRoZSBhYnNlbmNlIG9mIHRoZSBhY3R1YWwgaGFyZHdhcmU/CgpHZW5lcmFsbHkgc3BlYWtpbmcsIHdoZW4gaXQgY29tZXMgdG8gV2ktRmksIHRoZXJlIGFyZSBzb21lIHNvZnR3YXJlIGVtdWxhdG9ycyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCBgYXRoMTFrYCBhbmQgYGF0aDEya2AgYXJlIGRlc2lnbmVkIGZvciBoYXJkd2FyZS4gR2l2ZW4gdGhlIGNvbnRleHQsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNoYWxsZW5nZXMgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgYXJlbiYjMzk7dCB0eXBpY2FsbHkgd2VsbC1lbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IGhpdHMgaG9tZS4gYGF0aDExa2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJL0FIQiBXaS1GaSBkcml2ZXIsIGRlc2lnbmVkIGZvciBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4L2JlIGRldmljZXMuCgpTbywgdGhlIHJlYWwgcXVlc3Rpb24gYm9pbHMgZG93biB0bzogaXMgdGhlcmUgYSByZWFzb25hYmxlIGNoYW5jZSBvZiBmdXp6aW5nIHRoaXMgaW4gUUVNVT8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlcnMgb2Z0ZW4gcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSBjYW4gdGhpbmsgb2YgYG1hYzgwMjExX2h3c2ltYCwgYW5kIHBvc3NpYmx5IGBmbWFjYCwgYnV0IGBtYWM4MDIxMV9od3NpbWAgaXMgYSB2aXJ0dWFsIGRyaXZlciwgbm90IGFuIGVtdWxhdG9yIGZvciBgYXRoMTFrYC4gV2hpbGUgc3l6a2FsbGVyIGhhcyBzb21lIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgdGhpcyBpc24mIzM5O3QgVVNCOyBpdCYjMzk7cyBQQ0kvQUhCLgoKVWx0aW1hdGVseSwgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYGF0aDExa2Agb2ZmZXJzIGFueSBraW5kIG9mIHZpcnR1YWwgb3IgZW11bGF0ZWQgc3VwcG9ydC4gSSYjMzk7bSBnb2luZyB0byBsZXZlcmFnZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRocm91Z2ggdGhlIGNvZGViYXNlIGZvciBtZW50aW9ucyBvZiBgYXRoMTFrYCBhbmQgYGF0aDEya2AgY29tYmluZWQgd2l0aCB0aGUgYnVzIHR5cGVzIHRoZXkgdXNlLCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IHdheSB0aGlzIGNvZGUgY2FuIGJlIHRlc3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ5OnN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTUwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEyOTY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0aDExa19wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTI5OC1cdC5pZF90YWJsZSA9IGF0aDExa19wY2lfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEyOTk6XHQucHJvYmUgPSBhdGgxMWtfcGNpX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzAwLVx0LnJlbW92ZSA9IGF0aDExa19wY2lfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3OTYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlBDSSBEcml2ZXIgQ29uc2lkZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcy4uLiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FscmlnaHQsIFBDSS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBsZXQmIzM5O3Mgbm90IGdldCB0dW5uZWwgdmlzaW9uLiYjMzQ7IEkgaW1tZWRpYXRlbHkgc3RhcnQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSwgc28gdGhlIGRhdGEgdHJhbnNmZXIgYmV0d2VlbiB0aGUgQ1BVIGFuZCB0aGUgUENJIGRldmljZSwgYXMgd2VsbCBhcyBhbnkgb3RoZXJzLCBpcyB0aGUgaW1wb3J0YW50IGJpdC4gVGhpcyBkcml2ZXIgaXMgaGFuZGxpbmcgdGhhdCBkYXRhIHRyYW5zZmVyLgoKQW5kIHRoYXQmIzM5O3Mgd2hlbiBpdCBoaXRzIG1lOiAmIzM0O1doYXQgYWJvdXQgdGhlIEFIQj8mIzM0OyBUaGUgUENJIGJ1cyBpcyB0aGUgc3RhbmRhcmQgaGVyZSwgc28gdGhhdCBtZWFucyB0aGUgQUhCIGJ1cyBpcyB0aGUgaGFyZHdhcmUgY29ubmVjdGlvbiB0byB0aGUgcmVzdCBvZiB0aGUgYm9hcmQuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGV2ZW4gdGhvdWdoIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgc3lzdGVtLW9uLWNoaXAgKFNvQykgaW5mcmFzdHJ1Y3R1cmUuIFNwZWNpZmljYWxseSwgaG93IGRvZXMgdGhpcyBkcml2ZXIgaW50ZXJmYWNlIHdpdGggdGhlIEFkdmFuY2VkIEhpZ2gtcGVyZm9ybWFuY2UgQnVzIChBSEIpLCBvciBhbnkgb3RoZXIgcG90ZW50aWFsIGludGVyY29ubmVjdD8gSXMgdGhlcmUgYW4gaW50ZXJtZWRpYXJ5IGJyaWRnZSwgbWVtb3J5LW1hcHBlZCBJL08sIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpLCBvciBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGF0IGludGVyY29ubmVjdCBpcyBjcnVjaWFsIHRvIHRydWx5IHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIGhvdyBpdCB3aWxsIHBlcmZvcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2FoYl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEwNzM9c3RhdGljIGludCBhdGgxMWtfYWhiX2Z3X3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTEwODpzdGF0aWMgaW50IGF0aDExa19haGJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTEwOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMzAzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF0aDExa19haGJfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTMwNy1cdH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEzMDg6XHQucHJvYmUgPSBhdGgxMWtfYWhiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzA5LVx0LnJlbW92ZSA9IGF0aDExa19haGJfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzOTYKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiA1MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciBhdGgxMWsvYXRoMTJrIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGEgUENJIGFuZCBBSEIgZHJpdmVyLiBUaGUgcHJvbXB0IHNheXMgSSBuZWVkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggdG91Y2hlcyBjb2RlIHRoYXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIG9yIGlmIGl0JiMzOTtzIHNwZWNpZmljIHRvIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB0aG9zZSBlbnZpcm9ubWVudHMuIFNwZWNpZmljYWxseSwgdGhlIHByb21wdCBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVcyBhcyBleGFtcGxlcyB0byBmbGFnLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGFyZSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVycywgZGV2ZWxvcGVkIGJ5IFF1YWxjb21tIEF0aGVyb3MgZm9yIDgwMi4xMWF4L2JlLCBhbmQgdGhleSByZWx5IG9uIGVpdGhlciBQQ0llIG9yIEFIQiBoYXJkd2FyZS4gVGhlc2UgYXJlIHR5cGljYWxseSBub3QgZW11bGF0ZWQgcHJvcGVybHkgaW4gc3RhbmRhcmQgUUVNVS4gVGhleSByZXF1aXJlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBvcGVyYXRlIGNvcnJlY3RseS4KCkkgYnJpZWZseSBjb25zaWRlcmVkIGlmIFN5emthbGxlciBjb3VsZCBzb21laG93IGZ1enogdGhpcyB1c2luZyBpdHMgUENJIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuIEl0ICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIChgc3l6X3BjaV9kZXZpY2VfYWRkYCksIGJ1dCBpdCYjMzk7cyBwcmV0dHkgbGltaXRlZCBhbmQgZ2VuZXJhbGx5IGRvZXNuJiMzOTt0IGRpdmUgZGVlcCBpbnRvIGNvbXBsZXggV2ktRmkgTUFDL1BIWSBsb2dpYyB3aXRob3V0IHNwZWNpZmljIHRhcmdldGluZyBvciBoYXJkd2FyZSBlbXVsYXRpb24uIEhvd2V2ZXIsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGNhbGxzIG91dCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBjb21wb25lbnRzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS4gV2ktRmkgZHJpdmVycywgaW4gdGhpcyBzY2VuYXJpbywgc2VlbSB0byBmYWxsIGludG8gdGhhdCBjYXRlZ29yeSBvZiAmIzM0O25vdCBlbXVsYXRlZC4mIzM0OwoKSSB0b29rIGEgcXVpY2sgbG9vayB0byBzZWUgaWYgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGFueSBob29rcyBpbnRvIHRoZXNlIGRyaXZlcnMgZGlyZWN0bHkuIEl0IGRvZXMgaGF2ZSBgc3lzL2xpbnV4L3NvY2tldF9uZXRsaW5rX2dlbmVyaWNfbmw4MDIxMS50eHRgLCB3aGljaCBmdXp6ZWQgbmw4MDIxMSwgYnV0IHRoYXQgdXN1YWxseSBoaXRzIGBtYWM4MDIxMV9od3NpbWAgb3IgYGNmZzgwMjExYCBjb3JlIGFuZCBpcyBub3QgbGlrZWx5IHRvIGhpdCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHVubGVzcyB0aGUgaGFyZHdhcmUgaXMgcHJlc2VudCBpbiB0aGUgZW52aXJvbm1lbnQuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhlIHJlbGV2YW50IGhhcmR3YXJlIGlzICpub3QqIHByZXNlbnQgaW4gdGhlIEdDRS9RRU1VIGVudmlyb25tZW50LCB0aGUgY29kZSBwYXRocyByZWxhdGVkIHRvIGBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWVgIHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWQuCgpCYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBwYXRjaCBtb2RpZmllcyB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyAoYXRoMTFrL2F0aDEyayksIHdoaWNoIG5lY2Vzc2l0YXRlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0JiMzOTtzIGFic2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGFuZCBhdGgxMmsgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBBdGhlcm9zIGhhcmR3YXJlLiBUaGVzZSByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS4gVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAxOjQ5LjE5NDcwODA1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjY0NzQ4MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS4gVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAxOjQ5LjE5NDcxMzQxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NDMxODkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIxYWQ4M2E0MTU4N2E1YzQwN2Y3MDcwMzhmYzNlZDkwMzZiZWJhZDBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgNyAxNDowMTo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG5pbmRleCBmMzg5Yjk3YWNiZGQ1Li4yZTU5NzhlYzJiMDViIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbkBAIC0xMDg3LDYgKzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXFx1MDAzZW51bV90eF9yaW5nczsgaSsrKSB7XFxuIFxcdFxcdGlkcl9pbml0KFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tpXS50eGJ1Zl9pZHIpO1xcbiBcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhfaWRyX2xvY2spO1xcbitcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XFxuIFxcbiBcXHRcXHRkcC1cXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxcbmluZGV4IDg0ZjY2ODM5ZjBjNmQuLjZkOTk1MDFhYTI2OWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXFxuQEAgLTg3LDYgKzg3LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xcbiBcXHRzdHJ1Y3QgaWRyIHR4YnVmX2lkcjtcXG4gXFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xcbiBcXHRzcGlubG9ja190IHR4X2lkcl9sb2NrO1xcbitcXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXFxuK1xcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xcbiBcXHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcXG4gXFx0aW50IHR4X3N0YXR1c19oZWFkO1xcbiBcXHRpbnQgdHhfc3RhdHVzX3RhaWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xcbmluZGV4IGNhYzk3MGM5MjgwNmEuLjA4M2FjYThmZjM1NWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXFxuQEAgLTEwOCw3ICsxMDgsNyBAQCBpbnQgYXRoMTFrX2RwX3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX3ZpZiAqYXJ2aWYsXFxuIFxcbiBcXHRwb29sX2lkID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikgXFx1MDAyNiAoQVRIMTFLX0hXX01BWF9RVUVVRVMgLSAxKTtcXG4gXFxuLVxcdHJpbmdfc2VsZWN0b3IgPSBhYi1cXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiKTtcXG4rXFx0cmluZ19zZWxlY3RvciA9IGFiLVxcdTAwM2Vod19wYXJhbXMuaHdfb3BzLVxcdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XFxuIFxcbiB0Y2xfcmluZ19zZWw6XFxuIFxcdHRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xcbmluZGV4IDkzZjlhMDNjNDhkYzAuLjhhMjhjMWQ0YzE3YjYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXFxuQEAgLTg3NiwyOCArODc2LDE0IEBAIHN0YXRpYyBib29sIGF0aDExa19od193Y242ODU1X3J4X2Rlc2NfZ2V0X2xkcGNfc3VwcG9ydChzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpXFxuIFxcdFxcdFxcdCBfX2xlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZXUud2NuNjg1NS5tc2R1X3N0YXJ0LmluZm8yKSk7XFxuIH1cXG4gXFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXFxuLXtcXG4tXFx0LyogTGV0IHRoZSBkZWZhdWx0IHJpbmcgc2VsZWN0aW9uIGJlIGJhc2VkIG9uIGN1cnJlbnQgcHJvY2Vzc29yXFxuLVxcdCAqIG51bWJlciwgd2hlcmUgb25lIG9mIHRoZSAzIHRjbCByaW5ncyBhcmUgc2VsZWN0ZWQgYmFzZWQgb25cXG4tXFx0ICogdGhlIHNtcF9wcm9jZXNzb3JfaWQoKS4gSW4gY2FzZSB0aGF0IHJpbmdcXG4tXFx0ICogaXMgZnVsbC9idXN5LCB3ZSByZXNvcnQgdG8gb3RoZXIgYXZhaWxhYmxlIHJpbmdzLlxcbi1cXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cXG4tXFx0ICpcXG4tXFx0ICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGxcXG4tXFx0ICovXFxuK3N0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxcbit7XFxuIFxcdHJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXFxuK3N0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxcbiB7XFxuLVxcdC8qIFNlbGVjdCB0aGUgVENMIHJpbmcgYmFzZWQgb24gdGhlIGZsb3cgaGFzaCBvZiB0aGUgU0tCIGluc3RlYWRcXG4tXFx0ICogb2YgQ1BVIElELiBTaW5jZSBhcHBsaWNhdGlvbnMgcHVtcGluZyB0aGUgdHJhZmZpYyBjYW4gYmUgc2NoZWR1bGVkXFxuLVxcdCAqIG9uIG11bHRpcGxlIENQVXMsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgcGFja2V0cyBvZiB0aGUgc2FtZSBmbG93XFxuLVxcdCAqIGNvdWxkIGVuZCBvbiBkaWZmZXJlbnQgVENMIHJpbmdzLCB0aGlzIGNvdWxkIHNvbWV0aW1lcyByZXN1bHRzIGluXFxuLVxcdCAqIGFuIG91dCBvZiBvcmRlciBhcnJpdmFsIG9mIHRoZSBwYWNrZXRzIGF0IHRoZSByZWNlaXZlci5cXG4tXFx0ICovXFxuLVxcdHJldHVybiBza2JfZ2V0X2hhc2goc2tiKTtcXG4rXFx0cmV0dXJuIGFjO1xcbiB9XFxuIFxcbiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wcyA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXFxuaW5kZXggNDk5NjUzNmZiZDE0Zi4uYjZiYzhiNzJkODEyMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcXG5AQCAtMjczLDcgKzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHtcXG4gXFx0dTE2ICgqbXBkdV9pbmZvX2dldF9wZWVyaWQpKHN0cnVjdCBoYWxfcnhfbXBkdV9pbmZvICptcGR1X2luZm8pO1xcbiBcXHRib29sICgqcnhfZGVzY19tYWNfYWRkcjJfdmFsaWQpKHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYyk7XFxuIFxcdHU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcXG4tXFx0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xcbitcXHR1MzIgKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xcbiB9O1xcbiBcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLjk4MTNmNzkyM2MzNGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5AQCAtMTAwNjUsOSArMTAwNjUsNTkgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xcbitcXHRcXHQuc3RhID0gdHhxLVxcdTAwM2VzdGEsXFxuK1xcdH07XFxuK1xcdHN0cnVjdCBhdGgxMWsgKmFyID0gaHctXFx1MDAzZXByaXY7XFxuK1xcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xcbitcXHRzdHJ1Y3QgaGFsX3NybmcgKnRjbF9yaW5nO1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbitcXHR1MzIgcmluZ19zZWxlY3RvcjtcXG4rXFx0aW50IG51bV9mcmVlO1xcbitcXHR1OCByaW5nX2lkO1xcbitcXG4rXFx0aWYgKCFhcilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cmluZ19zZWxlY3RvciA9IGFyLVxcdTAwM2VhYi1cXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVxcdTAwM2VhYyk7XFxuK1xcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXFx1MDAzZWFiLVxcdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cXHUwMDNlbnVtX3R4X3JpbmdzO1xcbitcXHR0eF9yaW5nID0gXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlZHAudHhfcmluZ1tyaW5nX2lkXTtcXG4rXFx0dGNsX3JpbmcgPSBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VoYWwuc3JuZ19saXN0W3R4X3JpbmctXFx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XFxuK1xcbitcXHR3aGlsZSAoMSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2dGNsX3JpbmctXFx1MDAzZWxvY2spO1xcbitcXHRcXHRudW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItXFx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRpZiAobnVtX2ZyZWUgPT0gMCkge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xcbitcXHRcXHRpZiAoIXNrYikge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGF0aDExa19tYWNfb3BfdHgoaHcsIFxcdTAwMjZjb250cm9sLCBza2IpO1xcbitcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XFxuIFxcdC50eFxcdFxcdFxcdFxcdD0gYXRoMTFrX21hY19vcF90eCxcXG4tXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcXG4rXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcXG4gXFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXFxuIFxcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXFxuIFxcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG5pbmRleCBhZjVmMTFmYzFkODRhLi4zZDQ2Y2ZiZjBhMWMzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xcbkBAIC0xNTM5LDYgKzE1MzksNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXHR9XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlbWF4X3R4X3Jpbmc7IGkrKykge1xcbitcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XFxuIFxcbiBcXHRcXHRkcC1cXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbmluZGV4IGY4Y2ZjN2JiMjlkZDcuLjY4ZDIwMjBiZTliODYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xcbiBcXHR1OCB0Y2xfZGF0YV9yaW5nX2lkO1xcbiBcXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfZGF0YV9yaW5nO1xcbiBcXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xcbitcXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXFxuK1xcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xcbiBcXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcXG4gXFx0aW50IHR4X3N0YXR1c19oZWFkO1xcbiBcXHRpbnQgdHhfc3RhdHVzX3RhaWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuaW5kZXggYTE2NDU2M2ZmZjI4OS4uMDcxY2I1ZDMwOTMxMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xcbkBAIC0zOTAsNiArMzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLFxcbiBcXHRlbHNlXFxuIFxcdFxcdHJldHVybiAoKHNybmctXFx1MDAzZXJpbmdfc2l6ZSAtIGhwICsgdHApIC8gc3JuZy1cXHUwMDNlZW50cnlfc2l6ZSkgLSAxO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUpO1xcbiBcXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBoYWxfc3JuZyAqc3JuZylcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXFxuaW5kZXggODZmYjhiNzE5NjEzNS4uNjVjYWE3YTIzNDlmMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcXG5AQCAtMjQzLDcgKzI0Myw3IEBAIHN0cnVjdCBhdGgxMmtfaHdfb3BzIHtcXG4gXFx0aW50ICgqbWFjX2lkX3RvX3BkZXZfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7XFxuIFxcdGludCAoKm1hY19pZF90b19zcm5nX2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpO1xcbiBcXHRpbnQgKCpyeGRtYV9yaW5nX3NlbF9jb25maWcpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbi1cXHR1OCAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4rXFx0dTggKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xcbiBcXHRib29sICgqZHBfc3JuZ19pc190eF9jb21wX3JpbmcpKGludCByaW5nX251bSk7XFxuIFxcdGJvb2wgKCppc19mcmFtZV9saW5rX2Fnbm9zdGljKShzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbmluZGV4IGQyNzQ5ZGU0NDU1MzQuLjc0MzU5ZThlZWE0NzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXFxuQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxcbiBcXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cXG4gXFx0ICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGxcXG4gXFx0ICovXFxuLVxcdHJpbmdfc2VsZWN0b3IgPSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vod19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XFxuK1xcdHJpbmdfc2VsZWN0b3IgPSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vod19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcXG4gXFxuIHRjbF9yaW5nX3NlbDpcXG4gXFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuaW5kZXggZDlmZGQyZmM4Mjk4Ni4uYmVkYWRkNDgyYThlOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG5AQCAtNDksNyArNDksNyBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfcWNuOTI3NChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4rc3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl9xY245Mjc0KHU4IGFjKVxcbiB7XFxuIFxcdHJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuIH1cXG5AQCAtODMsOSArODMsOSBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfd2NuNzg1MChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXFxuIFxcdHJldHVybiBtYWNfaWQ7XFxuIH1cXG4gXFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAodTggYWMpXFxuIHtcXG4tXFx0cmV0dXJuIHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xcbitcXHRyZXR1cm4gYWM7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcXG5AQCAtMTEwMCw5ICsxMTAwLDgyIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodHhxLVxcdTAwM2V2aWYpO1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHtcXG4rXFx0XFx0LnN0YSA9IHR4cS1cXHUwMDNlc3RhLFxcbitcXHR9O1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gdHhxLVxcdTAwM2V2aWY7XFxuK1xcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xcbitcXHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcXG4rXFx0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcXG4rXFx0c3RydWN0IGF0aDEya19zdGEgKmFoc3RhO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2RwICpkcDtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuK1xcdHU4IHJpbmdfc2VsZWN0b3I7XFxuK1xcdGludCBudW1fZnJlZTtcXG4rXFx0dTggcmluZ19pZDtcXG4rXFx0dTggbGlua19pZDtcXG4rXFxuK1xcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpIFxcdTAwMjZcXHUwMDI2IHR4cS1cXHUwMDNlc3RhKSB7XFxuK1xcdFxcdGFoc3RhID0gYXRoMTJrX3N0YV90b19haHN0YSh0eHEtXFx1MDAzZXN0YSk7XFxuK1xcdFxcdGxpbmtfaWQgPSBhaHN0YS1cXHUwMDNlYXNzb2NfbGlua19pZDtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0bGlua19pZCA9IGFodmlmLVxcdTAwM2VkZWZsaW5rLmxpbmtfaWQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFxuK1xcdGFydmlmID0gcmN1X2RlcmVmZXJlbmNlKGFodmlmLVxcdTAwM2VsaW5rW2xpbmtfaWRdKTtcXG4rXFx0aWYgKCFhcnZpZiB8fCAhYXJ2aWYtXFx1MDAzZWFyKSB7XFxuK1xcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGFyID0gYXJ2aWYtXFx1MDAzZWFyO1xcbitcXHRkcCA9IGFyLVxcdTAwM2VhYi1cXHUwMDNlZHA7XFxuK1xcbitcXHRyaW5nX3NlbGVjdG9yID0gZHAtXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlaHdfb3BzLVxcdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXFx1MDAzZWFjKTtcXG4rXFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VtYXhfdHhfcmluZztcXG4rXFx0dHhfcmluZyA9IFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tyaW5nX2lkXTtcXG4rXFx0dGNsX3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZWhhbC1cXHUwMDNlc3JuZ19saXN0W3R4X3JpbmctXFx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XFxuK1xcbitcXHR3aGlsZSAoMSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2dGNsX3JpbmctXFx1MDAzZWxvY2spO1xcbitcXHRcXHRudW1fZnJlZSA9IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItXFx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRpZiAobnVtX2ZyZWUgPT0gMCkge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xcbitcXHRcXHRpZiAoIXNrYikge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsIFxcdTAwMjZjb250cm9sLCBza2IpO1xcbitcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdH1cXG4rXFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcXG4gXFx0LnR4XFx0XFx0XFx0XFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxcbi1cXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxcbitcXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLFxcbiBcXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcXG4gXFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RvcCxcXG4gXFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAxOjUwLjY4OTc5OTQ4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0NzY5NjQ1MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGFuZCBhdGgxMmsgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBBdGhlcm9zIGhhcmR3YXJlLiBUaGVzZSByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjFhZDgzYTQxNTg3YTVjNDA3ZjcwNzAzOGZjM2VkOTAzNmJlYmFkMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTQ6MDE6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDUuLjJlNTk3OGVjMmIwNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuQEAgLTEwODcsNiArMTA4Nyw3IEBAIGludCBhdGgxMWtfZHBfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZW51bV90eF9yaW5nczsgaSsrKSB7XG4gXHRcdGlkcl9pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udHhidWZfaWRyKTtcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9pZHJfbG9jayk7XG4rXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5pbmRleCA4NGY2NjgzOWYwYzZkLi42ZDk5NTAxYWEyNjljIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbkBAIC04Nyw2ICs4Nyw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcbiBcdHN0cnVjdCBpZHIgdHhidWZfaWRyO1xuIFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xuIFx0c3BpbmxvY2tfdCB0eF9pZHJfbG9jaztcbitcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbitcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xuIFx0c3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7XG4gXHRpbnQgdHhfc3RhdHVzX2hlYWQ7XG4gXHRpbnQgdHhfc3RhdHVzX3RhaWw7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5pbmRleCBjYWM5NzBjOTI4MDZhLi4wODNhY2E4ZmYzNTViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcbkBAIC0xMDgsNyArMTA4LDcgQEAgaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxuIFxuIFx0cG9vbF9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpIFx1MDAyNiAoQVRIMTFLX0hXX01BWF9RVUVVRVMgLSAxKTtcbiBcbi1cdHJpbmdfc2VsZWN0b3IgPSBhYi1cdTAwM2Vod19wYXJhbXMuaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XG4rXHRyaW5nX3NlbGVjdG9yID0gYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbmluZGV4IDkzZjlhMDNjNDhkYzAuLjhhMjhjMWQ0YzE3YjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xuQEAgLTg3NiwyOCArODc2LDE0IEBAIHN0YXRpYyBib29sIGF0aDExa19od193Y242ODU1X3J4X2Rlc2NfZ2V0X2xkcGNfc3VwcG9ydChzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpXG4gXHRcdFx0IF9fbGUzMl90b19jcHUoZGVzYy1cdTAwM2V1LndjbjY4NTUubXNkdV9zdGFydC5pbmZvMikpO1xuIH1cbiBcbi1zdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLXtcbi1cdC8qIExldCB0aGUgZGVmYXVsdCByaW5nIHNlbGVjdGlvbiBiZSBiYXNlZCBvbiBjdXJyZW50IHByb2Nlc3NvclxuLVx0ICogbnVtYmVyLCB3aGVyZSBvbmUgb2YgdGhlIDMgdGNsIHJpbmdzIGFyZSBzZWxlY3RlZCBiYXNlZCBvblxuLVx0ICogdGhlIHNtcF9wcm9jZXNzb3JfaWQoKS4gSW4gY2FzZSB0aGF0IHJpbmdcbi1cdCAqIGlzIGZ1bGwvYnVzeSwgd2UgcmVzb3J0IHRvIG90aGVyIGF2YWlsYWJsZSByaW5ncy5cbi1cdCAqIElmIGFsbCByaW5ncyBhcmUgZnVsbCwgd2UgZHJvcCB0aGUgcGFja2V0LlxuLVx0ICpcbi1cdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXG4tXHQgKi9cbitzdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYylcbit7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbiBcbi1zdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxuIHtcbi1cdC8qIFNlbGVjdCB0aGUgVENMIHJpbmcgYmFzZWQgb24gdGhlIGZsb3cgaGFzaCBvZiB0aGUgU0tCIGluc3RlYWRcbi1cdCAqIG9mIENQVSBJRC4gU2luY2UgYXBwbGljYXRpb25zIHB1bXBpbmcgdGhlIHRyYWZmaWMgY2FuIGJlIHNjaGVkdWxlZFxuLVx0ICogb24gbXVsdGlwbGUgQ1BVcywgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCBwYWNrZXRzIG9mIHRoZSBzYW1lIGZsb3dcbi1cdCAqIGNvdWxkIGVuZCBvbiBkaWZmZXJlbnQgVENMIHJpbmdzLCB0aGlzIGNvdWxkIHNvbWV0aW1lcyByZXN1bHRzIGluXG4tXHQgKiBhbiBvdXQgb2Ygb3JkZXIgYXJyaXZhbCBvZiB0aGUgcGFja2V0cyBhdCB0aGUgcmVjZWl2ZXIuXG4tXHQgKi9cbi1cdHJldHVybiBza2JfZ2V0X2hhc2goc2tiKTtcbitcdHJldHVybiBhYztcbiB9XG4gXG4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHMgPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXG5pbmRleCA0OTk2NTM2ZmJkMTRmLi5iNmJjOGI3MmQ4MTIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbkBAIC0yNzMsNyArMjczLDcgQEAgc3RydWN0IGF0aDExa19od19vcHMge1xuIFx0dTE2ICgqbXBkdV9pbmZvX2dldF9wZWVyaWQpKHN0cnVjdCBoYWxfcnhfbXBkdV9pbmZvICptcGR1X2luZm8pO1xuIFx0Ym9vbCAoKnJ4X2Rlc2NfbWFjX2FkZHIyX3ZhbGlkKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpO1xuIFx0dTgqICgqcnhfZGVzY19tcGR1X3N0YXJ0X2FkZHIyKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpO1xuLVx0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xuK1x0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTtcbiB9O1xuIFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wcztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuaW5kZXggMmQ1NWNkYzRkMTY1ZC4uOTgxM2Y3OTIzYzM0ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC0xMDA2NSw5ICsxMDA2NSw1OSBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuK1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbitcdH07XG4rXHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcbitcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4rXHRpbnQgbnVtX2ZyZWU7XG4rXHR1OCByaW5nX2lkO1xuK1xuK1x0aWYgKCFhcilcbitcdFx0cmV0dXJuO1xuK1xuK1x0cmluZ19zZWxlY3RvciA9IGFyLVx1MDAzZWFiLVx1MDAzZWh3X3BhcmFtcy5od19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVx1MDAzZWFjKTtcbitcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzO1xuK1x0dHhfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRwLnR4X3JpbmdbcmluZ19pZF07XG4rXHR0Y2xfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWhhbC5zcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuK1xuK1x0d2hpbGUgKDEpIHtcbitcdFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXG4rXHRcdHNwaW5fbG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuK1xuK1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1xuK1x0XHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcbitcdFx0aWYgKCFza2IpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0YXRoMTFrX21hY19vcF90eChodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbitcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbmluZGV4IGFmNWYxMWZjMWQ4NGEuLjNkNDZjZmJmMGExYzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuQEAgLTE1MzksNiArMTUzOSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlbWF4X3R4X3Jpbmc7IGkrKykge1xuK1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XG4gXG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuaW5kZXggZjhjZmM3YmIyOWRkNy4uNjhkMjAyMGJlOWI4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5AQCAtNTgsNiArNTgsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7XG4gXHR1OCB0Y2xfZGF0YV9yaW5nX2lkO1xuIFx0c3RydWN0IGRwX3NybmcgdGNsX2RhdGFfcmluZztcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9jb21wX3Jpbmc7XG4rXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXG4rXHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX2NvbXBsZXRpb25fcmluZ190eCAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG5pbmRleCBhMTY0NTYzZmZmMjg5Li4wNzFjYjVkMzA5MzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXG4gXHRlbHNlXG4gXHRcdHJldHVybiAoKHNybmctXHUwMDNlcmluZ19zaXplIC0gaHAgKyB0cCkgLyBzcm5nLVx1MDAzZWVudHJ5X3NpemUpIC0gMTtcbiB9XG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XG4gXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaGFsX3NybmcgKnNybmcpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCA4NmZiOGI3MTk2MTM1Li42NWNhYTdhMjM0OWYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbkBAIC0yNDMsNyArMjQzLDcgQEAgc3RydWN0IGF0aDEya19od19vcHMge1xuIFx0aW50ICgqbWFjX2lkX3RvX3BkZXZfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7XG4gXHRpbnQgKCptYWNfaWRfdG9fc3JuZ19pZCkoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LCBpbnQgbWFjX2lkKTtcbiBcdGludCAoKnJ4ZG1hX3Jpbmdfc2VsX2NvbmZpZykoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4tXHR1OCAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbitcdHU4ICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTtcbiBcdGJvb2wgKCpkcF9zcm5nX2lzX3R4X2NvbXBfcmluZykoaW50IHJpbmdfbnVtKTtcbiBcdGJvb2wgKCppc19mcmFtZV9saW5rX2Fnbm9zdGljKShzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuaW5kZXggZDI3NDlkZTQ0NTUzNC4uNzQzNTllOGVlYTQ3MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5AQCAtMTExLDcgKzExMSw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXG4gXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cbiBcdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXG4gXHQgKi9cbi1cdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XG4rXHRyaW5nX3NlbGVjdG9yID0gZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IGQ5ZmRkMmZjODI5ODYuLmJlZGFkZDQ4MmE4ZTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuQEAgLTQ5LDcgKzQ5LDcgQEAgYXRoMTJrX3dpZmk3X2h3X21hY19pZF90b19zcm5nX2lkX3FjbjkyNzQoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NCh1OCBhYylcbiB7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbkBAIC04Myw5ICs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodyxcbiBcdHJldHVybiBtYWNfaWQ7XG4gfVxuIFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MCh1OCBhYylcbiB7XG4tXHRyZXR1cm4gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4rXHRyZXR1cm4gYWM7XG4gfVxuIFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbkBAIC0xMTAwLDkgKzExMDAsODIgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodHhxLVx1MDAzZXZpZik7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHtcbitcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4rXHR9O1xuK1x0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHR4cS1cdTAwM2V2aWY7XG4rXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbitcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuK1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbitcdHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YTtcbitcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0dTggcmluZ19zZWxlY3RvcjtcbitcdGludCBudW1fZnJlZTtcbitcdHU4IHJpbmdfaWQ7XG4rXHR1OCBsaW5rX2lkO1xuK1xuK1x0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZikgXHUwMDI2XHUwMDI2IHR4cS1cdTAwM2VzdGEpIHtcbitcdFx0YWhzdGEgPSBhdGgxMmtfc3RhX3RvX2Foc3RhKHR4cS1cdTAwM2VzdGEpO1xuK1x0XHRsaW5rX2lkID0gYWhzdGEtXHUwMDNlYXNzb2NfbGlua19pZDtcbitcdH0gZWxzZSB7XG4rXHRcdGxpbmtfaWQgPSBhaHZpZi1cdTAwM2VkZWZsaW5rLmxpbmtfaWQ7XG4rXHR9XG4rXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXG4rXHRhcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi1cdTAwM2VsaW5rW2xpbmtfaWRdKTtcbitcdGlmICghYXJ2aWYgfHwgIWFydmlmLVx1MDAzZWFyKSB7XG4rXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRhciA9IGFydmlmLVx1MDAzZWFyO1xuK1x0ZHAgPSBhci1cdTAwM2VhYi1cdTAwM2VkcDtcbitcbitcdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHR4cS1cdTAwM2VhYyk7XG4rXHRyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZztcbitcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xuK1x0dGNsX3JpbmcgPSBcdTAwMjZkcC1cdTAwM2VoYWwtXHUwMDNlc3JuZ19saXN0W3R4X3JpbmctXHUwMDNldGNsX2RhdGFfcmluZy5yaW5nX2lkXTtcbitcbitcdHdoaWxlICgxKSB7XG4rXHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCxcbitcdFx0XHRcdCAgICAgIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuK1x0XHRcdGJyZWFrO1xuK1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1xuK1x0XHRzcGluX2xvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4rXHRcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcbitcdFx0aWYgKG51bV9mcmVlID09IDApIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XG4rXHRcdGlmICghc2tiKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXG4rXHRcdGF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4rXG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdH1cbitcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAxOjUwLjY4OTgwMDc1N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMDA2NjczODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBXaS1GaSBEcml2ZXIgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBtb2RpZnlpbmcgdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXJzLiBJdCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGB3YWtlX3R4X2xvY2tgKSB0byB0aGUgYGRwX3R4X3JpbmdgIHN0cnVjdCBhbmQgaW5jbHVkZXMgYHdha2VfdHhfcXVldWVgIGNhbGxiYWNrcyBmb3IgYm90aCBkcml2ZXJzLiBUaGUgYGdldF9yaW5nX3NlbGVjdG9yYCBmdW5jdGlvbiBhbHNvIGNoYW5nZWQgdG8gYWNjZXB0IGB1OCBhY2AgaW5zdGVhZCBvZiBgc3RydWN0IHNrX2J1ZmYgKnNrYmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gSSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgUUVNVT9cblxuU2luY2UgSSdtIGRlYWxpbmcgd2l0aCBgYXRoMTFrYCBhbmQgYGF0aDEya2AsIHdoaWNoIGFyZSBRdWFsY29tbSBXaS1GaSBkcml2ZXJzLCBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGV5IGFyZSBQQ0kgb3IgQUhCIGRldmljZXMuIEFuZCB0aGUgYW5zd2VyIGlzLCB5ZXMsIHRoZXkgYXJlLCB1c3VhbGx5IHBoeXNpY2FsIFBDSWUgb3IgQUhCLiBTbywgdGhlIGNvcmUgcXVlc3Rpb24gYmVjb21lczogY2FuIEkgZWZmZWN0aXZlbHkgZW11bGF0ZSBvciBmdXp6IHRoZXNlIGRyaXZlcnMgaW4gdGhlIGFic2VuY2Ugb2YgdGhlIGFjdHVhbCBoYXJkd2FyZT9cblxuR2VuZXJhbGx5IHNwZWFraW5nLCB3aGVuIGl0IGNvbWVzIHRvIFdpLUZpLCB0aGVyZSBhcmUgc29tZSBzb2Z0d2FyZSBlbXVsYXRvcnMgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGFyZSBkZXNpZ25lZCBmb3IgaGFyZHdhcmUuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjaGFsbGVuZ2VzIHdpdGggdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGFyZW4ndCB0eXBpY2FsbHkgd2VsbC1lbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IGhpdHMgaG9tZS4gYGF0aDExa2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJL0FIQiBXaS1GaSBkcml2ZXIsIGRlc2lnbmVkIGZvciBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4L2JlIGRldmljZXMuXG5cblNvLCB0aGUgcmVhbCBxdWVzdGlvbiBib2lscyBkb3duIHRvOiBpcyB0aGVyZSBhIHJlYXNvbmFibGUgY2hhbmNlIG9mIGZ1enppbmcgdGhpcyBpbiBRRU1VPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVycyBvZnRlbiByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlLiBJIGNhbiB0aGluayBvZiBgbWFjODAyMTFfaHdzaW1gLCBhbmQgcG9zc2libHkgYGZtYWNgLCBidXQgYG1hYzgwMjExX2h3c2ltYCBpcyBhIHZpcnR1YWwgZHJpdmVyLCBub3QgYW4gZW11bGF0b3IgZm9yIGBhdGgxMWtgLiBXaGlsZSBzeXprYWxsZXIgaGFzIHNvbWUgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB0aGlzIGlzbid0IFVTQjsgaXQncyBQQ0kvQUhCLlxuXG5VbHRpbWF0ZWx5LCBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBgYXRoMTFrYCBvZmZlcnMgYW55IGtpbmQgb2YgdmlydHVhbCBvciBlbXVsYXRlZCBzdXBwb3J0LiBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBjb2RlYmFzZSBmb3IgbWVudGlvbnMgb2YgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGNvbWJpbmVkIHdpdGggdGhlIGJ1cyB0eXBlcyB0aGV5IHVzZSwgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSB3YXkgdGhpcyBjb2RlIGNhbiBiZSB0ZXN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDowMTo1OS42OTA0NzE0NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3MTgxNTM0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfcGNpX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ5OnN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk1MC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEyOTY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0aDExa19wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVxcdC5pZF90YWJsZSA9IGF0aDExa19wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMjk5OlxcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzAwLVxcdC5yZW1vdmUgPSBhdGgxMWtfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MDI6MDEuNzYyMjkzMTY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgxNzc4NDA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipQQ0kgRHJpdmVyIENvbnNpZGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzLi4uIGl0J3MgYSBQQ0kgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJBbHJpZ2h0LCBQQ0kuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBsZXQncyBub3QgZ2V0IHR1bm5lbCB2aXNpb24uXCIgSSBpbW1lZGlhdGVseSBzdGFydCB0byB0aGluayBhYm91dCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBXZSdyZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUsIHNvIHRoZSBkYXRhIHRyYW5zZmVyIGJldHdlZW4gdGhlIENQVSBhbmQgdGhlIFBDSSBkZXZpY2UsIGFzIHdlbGwgYXMgYW55IG90aGVycywgaXMgdGhlIGltcG9ydGFudCBiaXQuIFRoaXMgZHJpdmVyIGlzIGhhbmRsaW5nIHRoYXQgZGF0YSB0cmFuc2Zlci5cblxuQW5kIHRoYXQncyB3aGVuIGl0IGhpdHMgbWU6IFwiV2hhdCBhYm91dCB0aGUgQUhCP1wiIFRoZSBQQ0kgYnVzIGlzIHRoZSBzdGFuZGFyZCBoZXJlLCBzbyB0aGF0IG1lYW5zIHRoZSBBSEIgYnVzIGlzIHRoZSBoYXJkd2FyZSBjb25uZWN0aW9uIHRvIHRoZSByZXN0IG9mIHRoZSBib2FyZC4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgZXZlbiB0aG91Z2ggdGhpcyBpcyBhIFBDSSBkcml2ZXIsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBzeXN0ZW0tb24tY2hpcCAoU29DKSBpbmZyYXN0cnVjdHVyZS4gU3BlY2lmaWNhbGx5LCBob3cgZG9lcyB0aGlzIGRyaXZlciBpbnRlcmZhY2Ugd2l0aCB0aGUgQWR2YW5jZWQgSGlnaC1wZXJmb3JtYW5jZSBCdXMgKEFIQiksIG9yIGFueSBvdGhlciBwb3RlbnRpYWwgaW50ZXJjb25uZWN0PyBJcyB0aGVyZSBhbiBpbnRlcm1lZGlhcnkgYnJpZGdlLCBtZW1vcnktbWFwcGVkIEkvTywgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKERNQSksIG9yIHNvbWV0aGluZyBlbHNlPyBVbmRlcnN0YW5kaW5nIHRoYXQgaW50ZXJjb25uZWN0IGlzIGNydWNpYWwgdG8gdHJ1bHkgdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCBhbmQgaG93IGl0IHdpbGwgcGVyZm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc5NiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAyOjA1LjU4MDA3OTYyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQyNzEyNTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19haGJfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMDczPXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9md19yZXNvdXJjZV9kZWluaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExMDg6c3RhdGljIGludCBhdGgxMWtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTMwMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhdGgxMWtfYWhiX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTMwNy1cXHR9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTMwODpcXHQucHJvYmUgPSBhdGgxMWtfYWhiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTMwOS1cXHQucmVtb3ZlID0gYXRoMTFrX2FoYl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAyOjA3LjMyMjc5NzA1OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMzY2MjA3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciBhdGgxMWsvYXRoMTJrIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBhIFBDSSBhbmQgQUhCIGRyaXZlci4gVGhlIHByb21wdCBzYXlzIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIHRvdWNoZXMgY29kZSB0aGF0J3MgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIG9yIGlmIGl0J3Mgc3BlY2lmaWMgdG8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHRob3NlIGVudmlyb25tZW50cy4gU3BlY2lmaWNhbGx5LCB0aGUgcHJvbXB0IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFVzIGFzIGV4YW1wbGVzIHRvIGZsYWcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBhcmUgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlcnMsIGRldmVsb3BlZCBieSBRdWFsY29tbSBBdGhlcm9zIGZvciA4MDIuMTFheC9iZSwgYW5kIHRoZXkgcmVseSBvbiBlaXRoZXIgUENJZSBvciBBSEIgaGFyZHdhcmUuIFRoZXNlIGFyZSB0eXBpY2FsbHkgbm90IGVtdWxhdGVkIHByb3Blcmx5IGluIHN0YW5kYXJkIFFFTVUuIFRoZXkgcmVxdWlyZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gb3BlcmF0ZSBjb3JyZWN0bHkuXG5cbkkgYnJpZWZseSBjb25zaWRlcmVkIGlmIFN5emthbGxlciBjb3VsZCBzb21laG93IGZ1enogdGhpcyB1c2luZyBpdHMgUENJIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuIEl0ICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIChgc3l6X3BjaV9kZXZpY2VfYWRkYCksIGJ1dCBpdCdzIHByZXR0eSBsaW1pdGVkIGFuZCBnZW5lcmFsbHkgZG9lc24ndCBkaXZlIGRlZXAgaW50byBjb21wbGV4IFdpLUZpIE1BQy9QSFkgbG9naWMgd2l0aG91dCBzcGVjaWZpYyB0YXJnZXRpbmcgb3IgaGFyZHdhcmUgZW11bGF0aW9uLiBIb3dldmVyLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgY29tcG9uZW50cyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUuIFdpLUZpIGRyaXZlcnMsIGluIHRoaXMgc2NlbmFyaW8sIHNlZW0gdG8gZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnkgb2YgXCJub3QgZW11bGF0ZWQuXCJcblxuSSB0b29rIGEgcXVpY2sgbG9vayB0byBzZWUgaWYgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGFueSBob29rcyBpbnRvIHRoZXNlIGRyaXZlcnMgZGlyZWN0bHkuIEl0IGRvZXMgaGF2ZSBgc3lzL2xpbnV4L3NvY2tldF9uZXRsaW5rX2dlbmVyaWNfbmw4MDIxMS50eHRgLCB3aGljaCBmdXp6ZWQgbmw4MDIxMSwgYnV0IHRoYXQgdXN1YWxseSBoaXRzIGBtYWM4MDIxMV9od3NpbWAgb3IgYGNmZzgwMjExYCBjb3JlIGFuZCBpcyBub3QgbGlrZWx5IHRvIGhpdCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHVubGVzcyB0aGUgaGFyZHdhcmUgaXMgcHJlc2VudCBpbiB0aGUgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGUgcmVsZXZhbnQgaGFyZHdhcmUgaXMgKm5vdCogcHJlc2VudCBpbiB0aGUgR0NFL1FFTVUgZW52aXJvbm1lbnQsIHRoZSBjb2RlIHBhdGhzIHJlbGF0ZWQgdG8gYGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZWAgd2lsbCBuZXZlciBiZSBleGVjdXRlZC5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBwYXRjaCBtb2RpZmllcyB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyAoYXRoMTFrL2F0aDEyayksIHdoaWNoIG5lY2Vzc2l0YXRlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0J3MgYWJzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM5NiwiT3V0cHV0VG9rZW5zIjo5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDowMjoxNS40NTk0MjAxMDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIFdpLUZpIGRyaXZlcnMgZm9yIFF1YWxjb21tIEF0aGVyb3MgaGFyZHdhcmUuIFRoZXNlIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGFuZCBhdGgxMmsgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBBdGhlcm9zIGhhcmR3YXJlLiBUaGVzZSByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MDI6MTUuNDU5NDQ2Njg2WiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowp52qc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 13:21:06 +0000 UTC FinishedAt: 2026-08-07 14:44:00 +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+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS4gVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMWFkODNhNDE1ODdhNWM0MDdmNzA3MDM4ZmMzZWQ5MDM2YmViYWQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAxNDowMTo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDUuLjJlNTk3OGVjMmIwNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuQEAgLTEwODcsNiAmIzQzOzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cdTAwM2VudW1fdHhfcmluZ3M7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlkcl9pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udHhidWZfaWRyKTtcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9pZHJfbG9jayk7XG4mIzQzO1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XG4gXG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuaW5kZXggODRmNjY4MzlmMGM2ZC4uNmQ5OTUwMWFhMjY5YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5AQCAtODcsNiAmIzQzOzg3LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0c3RydWN0IGlkciB0eGJ1Zl9pZHI7XG4gXHQvKiBQcm90ZWN0cyB0eGJ1Zl9pZHIgYW5kIG51bV9wZW5kaW5nICovXG4gXHRzcGlubG9ja190IHR4X2lkcl9sb2NrO1xuJiM0MztcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbiYjNDM7XHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuaW5kZXggY2FjOTcwYzkyODA2YS4uMDgzYWNhOGZmMzU1YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5AQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBpbnQgYXRoMTFrX2RwX3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX3ZpZiAqYXJ2aWYsXG4gXG4gXHRwb29sX2lkID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikgXHUwMDI2IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpO1xuIFxuLVx0cmluZ19zZWxlY3RvciA9IGFiLVx1MDAzZWh3X3BhcmFtcy5od19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiKTtcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbmluZGV4IDkzZjlhMDNjNDhkYzAuLjhhMjhjMWQ0YzE3YjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xuQEAgLTg3NiwyOCAmIzQzOzg3NiwxNCBAQCBzdGF0aWMgYm9vbCBhdGgxMWtfaHdfd2NuNjg1NV9yeF9kZXNjX2dldF9sZHBjX3N1cHBvcnQoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKVxuIFx0XHRcdCBfX2xlMzJfdG9fY3B1KGRlc2MtXHUwMDNldS53Y242ODU1Lm1zZHVfc3RhcnQuaW5mbzIpKTtcbiB9XG4gXG4tc3RhdGljIHUzMiBhdGgxMWtfaHdfaXBxODA3NF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi17XG4tXHQvKiBMZXQgdGhlIGRlZmF1bHQgcmluZyBzZWxlY3Rpb24gYmUgYmFzZWQgb24gY3VycmVudCBwcm9jZXNzb3Jcbi1cdCAqIG51bWJlciwgd2hlcmUgb25lIG9mIHRoZSAzIHRjbCByaW5ncyBhcmUgc2VsZWN0ZWQgYmFzZWQgb25cbi1cdCAqIHRoZSBzbXBfcHJvY2Vzc29yX2lkKCkuIEluIGNhc2UgdGhhdCByaW5nXG4tXHQgKiBpcyBmdWxsL2J1c3ksIHdlIHJlc29ydCB0byBvdGhlciBhdmFpbGFibGUgcmluZ3MuXG4tXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cbi1cdCAqXG4tXHQgKiBUT0RPOiBBZGQgdGhyb3R0bGluZyBsb2dpYyB3aGVuIGFsbCByaW5ncyBhcmUgZnVsbFxuLVx0ICovXG4mIzQzO3N0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxuJiM0Mzt7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbiBcbi1zdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0MztzdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYylcbiB7XG4tXHQvKiBTZWxlY3QgdGhlIFRDTCByaW5nIGJhc2VkIG9uIHRoZSBmbG93IGhhc2ggb2YgdGhlIFNLQiBpbnN0ZWFkXG4tXHQgKiBvZiBDUFUgSUQuIFNpbmNlIGFwcGxpY2F0aW9ucyBwdW1waW5nIHRoZSB0cmFmZmljIGNhbiBiZSBzY2hlZHVsZWRcbi1cdCAqIG9uIG11bHRpcGxlIENQVXMsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgcGFja2V0cyBvZiB0aGUgc2FtZSBmbG93XG4tXHQgKiBjb3VsZCBlbmQgb24gZGlmZmVyZW50IFRDTCByaW5ncywgdGhpcyBjb3VsZCBzb21ldGltZXMgcmVzdWx0cyBpblxuLVx0ICogYW4gb3V0IG9mIG9yZGVyIGFycml2YWwgb2YgdGhlIHBhY2tldHMgYXQgdGhlIHJlY2VpdmVyLlxuLVx0ICovXG4tXHRyZXR1cm4gc2tiX2dldF9oYXNoKHNrYik7XG4mIzQzO1x0cmV0dXJuIGFjO1xuIH1cbiBcbiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wcyA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbmluZGV4IDQ5OTY1MzZmYmQxNGYuLmI2YmM4YjcyZDgxMjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaFxuQEAgLTI3Myw3ICYjNDM7MjczLDcgQEAgc3RydWN0IGF0aDExa19od19vcHMge1xuIFx0dTE2ICgqbXBkdV9pbmZvX2dldF9wZWVyaWQpKHN0cnVjdCBoYWxfcnhfbXBkdV9pbmZvICptcGR1X2luZm8pO1xuIFx0Ym9vbCAoKnJ4X2Rlc2NfbWFjX2FkZHIyX3ZhbGlkKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpO1xuIFx0dTgqICgqcnhfZGVzY19tcGR1X3N0YXJ0X2FkZHIyKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpO1xuLVx0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xuJiM0MztcdHUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKSh1OCBhYyk7XG4gfTtcbiBcbiBleHRlcm4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLjk4MTNmNzkyM2MzNGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5AQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDU5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuJiM0MztcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuJiM0MztcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4mIzQzO1x0fTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4mIzQzO1x0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XG4mIzQzO1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdHUzMiByaW5nX3NlbGVjdG9yO1xuJiM0MztcdGludCBudW1fZnJlZTtcbiYjNDM7XHR1OCByaW5nX2lkO1xuJiM0MztcbiYjNDM7XHRpZiAoIWFyKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXHUwMDNlYWMpO1xuJiM0MztcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzO1xuJiM0MztcdHR4X3JpbmcgPSBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkcC50eF9yaW5nW3JpbmdfaWRdO1xuJiM0MztcdHRjbF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsLnNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4mIzQzO1xuJiM0MztcdHdoaWxlICgxKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xuJiM0MztcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRhdGgxMWtfbWFjX29wX3R4KGh3LCBcdTAwMjZjb250cm9sLCBza2IpO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTFrX21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4mIzQzO1x0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcbiBcdC5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0YXJ0LFxuIFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCxcbiBcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuaW5kZXggYWY1ZjExZmMxZDg0YS4uM2Q0NmNmYmYwYTFjMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG5AQCAtMTUzOSw2ICYjNDM7MTUzOSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlbWF4X3R4X3Jpbmc7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XG4gXG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuaW5kZXggZjhjZmM3YmIyOWRkNy4uNjhkMjAyMGJlOWI4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5AQCAtNTgsNiAmIzQzOzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0dTggdGNsX2RhdGFfcmluZ19pZDtcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xuJiM0MztcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbiYjNDM7XHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX2NvbXBsZXRpb25fcmluZ190eCAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG5pbmRleCBhMTY0NTYzZmZmMjg5Li4wNzFjYjVkMzA5MzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICYjNDM7MzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLFxuIFx0ZWxzZVxuIFx0XHRyZXR1cm4gKChzcm5nLVx1MDAzZXJpbmdfc2l6ZSAtIGhwICYjNDM7IHRwKSAvIHNybmctXHUwMDNlZW50cnlfc2l6ZSkgLSAxO1xuIH1cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XG4gXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaGFsX3NybmcgKnNybmcpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCA4NmZiOGI3MTk2MTM1Li42NWNhYTdhMjM0OWYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbkBAIC0yNDMsNyAmIzQzOzI0Myw3IEBAIHN0cnVjdCBhdGgxMmtfaHdfb3BzIHtcbiBcdGludCAoKm1hY19pZF90b19wZGV2X2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpO1xuIFx0aW50ICgqbWFjX2lkX3RvX3NybmdfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7XG4gXHRpbnQgKCpyeGRtYV9yaW5nX3NlbF9jb25maWcpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuLVx0dTggKCpnZXRfcmluZ19zZWxlY3Rvcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4mIzQzO1x0dTggKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xuIFx0Ym9vbCAoKmRwX3NybmdfaXNfdHhfY29tcF9yaW5nKShpbnQgcmluZ19udW0pO1xuIFx0Ym9vbCAoKmlzX2ZyYW1lX2xpbmtfYWdub3N0aWMpKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCBkMjc0OWRlNDQ1NTM0Li43NDM1OWU4ZWVhNDcxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbkBAIC0xMTEsNyAmIzQzOzExMSw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXG4gXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cbiBcdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXG4gXHQgKi9cbi1cdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XG4mIzQzO1x0cmluZ19zZWxlY3RvciA9IGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vod19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikpO1xuIFxuIHRjbF9yaW5nX3NlbDpcbiBcdHRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5pbmRleCBkOWZkZDJmYzgyOTg2Li5iZWRhZGQ0ODJhOGU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbkBAIC00OSw3ICYjNDM7NDksNyBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfcWNuOTI3NChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl9xY245Mjc0KHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NCh1OCBhYylcbiB7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbkBAIC04Myw5ICYjNDM7ODMsOSBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfd2NuNzg1MChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXG4gXHRyZXR1cm4gbWFjX2lkO1xuIH1cbiBcbi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7c3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl93Y243ODUwKHU4IGFjKVxuIHtcbi1cdHJldHVybiBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTtcbiYjNDM7XHRyZXR1cm4gYWM7XG4gfVxuIFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbkBAIC0xMTAwLDkgJiM0MzsxMTAwLDgyIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtXHUwMDNldmlmKTtcbiYjNDM7XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHtcbiYjNDM7XHRcdC5zdGEgPSB0eHEtXHUwMDNlc3RhLFxuJiM0MztcdH07XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHR4cS1cdTAwM2V2aWY7XG4mIzQzO1x0c3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWY7XG4mIzQzO1x0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XG4mIzQzO1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGE7XG4mIzQzO1x0c3RydWN0IGF0aDEya19kcCAqZHA7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrICphcjtcbiYjNDM7XHR1OCByaW5nX3NlbGVjdG9yO1xuJiM0MztcdGludCBudW1fZnJlZTtcbiYjNDM7XHR1OCByaW5nX2lkO1xuJiM0MztcdHU4IGxpbmtfaWQ7XG4mIzQzO1xuJiM0MztcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpIFx1MDAyNlx1MDAyNiB0eHEtXHUwMDNlc3RhKSB7XG4mIzQzO1x0XHRhaHN0YSA9IGF0aDEya19zdGFfdG9fYWhzdGEodHhxLVx1MDAzZXN0YSk7XG4mIzQzO1x0XHRsaW5rX2lkID0gYWhzdGEtXHUwMDNlYXNzb2NfbGlua19pZDtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bGlua19pZCA9IGFodmlmLVx1MDAzZWRlZmxpbmsubGlua19pZDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XG4mIzQzO1x0YXJ2aWYgPSByY3VfZGVyZWZlcmVuY2UoYWh2aWYtXHUwMDNlbGlua1tsaW5rX2lkXSk7XG4mIzQzO1x0aWYgKCFhcnZpZiB8fCAhYXJ2aWYtXHUwMDNlYXIpIHtcbiYjNDM7XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0YXIgPSBhcnZpZi1cdTAwM2VhcjtcbiYjNDM7XHRkcCA9IGFyLVx1MDAzZWFiLVx1MDAzZWRwO1xuJiM0MztcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXHUwMDNlYWMpO1xuJiM0MztcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZW1heF90eF9yaW5nO1xuJiM0MztcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xuJiM0MztcdHRjbF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNlaGFsLVx1MDAzZXNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4mIzQzO1xuJiM0MztcdHdoaWxlICgxKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bnVtX2ZyZWUgPSBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xuJiM0MztcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRhdGgxMmtfd2lmaTdfbWFjX29wX3R4KGh3LCBcdTAwMjZjb250cm9sLCBza2IpO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMmtfb3BzX3dpZmk3ID0ge1xuIFx0LnR4XHRcdFx0XHQ9IGF0aDEya193aWZpN19tYWNfb3BfdHgsXG4tXHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxuJiM0MztcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS4gVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMWFkODNhNDE1ODdhNWM0MDdmNzA3MDM4ZmMzZWQ5MDM2YmViYWQwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAxNDowMTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwppbmRleCBmMzg5Yjk3YWNiZGQ1Li4yZTU5NzhlYzJiMDViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jCkBAIC0xMDg3LDYgJiM0MzsxMDg3LDcgQEAgaW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKQogCWZvciAoaSA9IDA7IGkgJmx0OyBhYi0mZ3Q7aHdfcGFyYW1zLmhhbF9wYXJhbXMtJmd0O251bV90eF9yaW5nczsgaSYjNDM7JiM0MzspIHsKIAkJaWRyX2luaXQoJmFtcDtkcC0mZ3Q7dHhfcmluZ1tpXS50eGJ1Zl9pZHIpOwogCQlzcGluX2xvY2tfaW5pdCgmYW1wO2RwLSZndDt0eF9yaW5nW2ldLnR4X2lkcl9sb2NrKTsKJiM0MzsJCXNwaW5fbG9ja19pbml0KCZhbXA7ZHAtJmd0O3R4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTsKIAkJZHAtJmd0O3R4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7CiAKIAkJZHAtJmd0O3R4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oCmluZGV4IDg0ZjY2ODM5ZjBjNmQuLjZkOTk1MDFhYTI2OWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKQEAgLTg3LDYgJiM0Mzs4Nyw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHsKIAlzdHJ1Y3QgaWRyIHR4YnVmX2lkcjsKIAkvKiBQcm90ZWN0cyB0eGJ1Zl9pZHIgYW5kIG51bV9wZW5kaW5nICovCiAJc3BpbmxvY2tfdCB0eF9pZHJfbG9jazsKJiM0MzsJLyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqLwomIzQzOwlzcGlubG9ja190IHdha2VfdHhfbG9jazsKIAlzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1czsKIAlpbnQgdHhfc3RhdHVzX2hlYWQ7CiAJaW50IHR4X3N0YXR1c190YWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jCmluZGV4IGNhYzk3MGM5MjgwNmEuLjA4M2FjYThmZjM1NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmMKQEAgLTEwOCw3ICYjNDM7MTA4LDcgQEAgaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLAogCiAJcG9vbF9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpICZhbXA7IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpOwogCi0JcmluZ19zZWxlY3RvciA9IGFiLSZndDtod19wYXJhbXMuaHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3Rvcihza2IpOwomIzQzOwlyaW5nX3NlbGVjdG9yID0gYWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTsKIAogdGNsX3Jpbmdfc2VsOgogCXRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMKaW5kZXggOTNmOWEwM2M0OGRjMC4uOGEyOGMxZDRjMTdiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuYwpAQCAtODc2LDI4ICYjNDM7ODc2LDE0IEBAIHN0YXRpYyBib29sIGF0aDExa19od193Y242ODU1X3J4X2Rlc2NfZ2V0X2xkcGNfc3VwcG9ydChzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpCiAJCQkgX19sZTMyX3RvX2NwdShkZXNjLSZndDt1LndjbjY4NTUubXNkdV9zdGFydC5pbmZvMikpOwogfQogCi1zdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQotewotCS8qIExldCB0aGUgZGVmYXVsdCByaW5nIHNlbGVjdGlvbiBiZSBiYXNlZCBvbiBjdXJyZW50IHByb2Nlc3NvcgotCSAqIG51bWJlciwgd2hlcmUgb25lIG9mIHRoZSAzIHRjbCByaW5ncyBhcmUgc2VsZWN0ZWQgYmFzZWQgb24KLQkgKiB0aGUgc21wX3Byb2Nlc3Nvcl9pZCgpLiBJbiBjYXNlIHRoYXQgcmluZwotCSAqIGlzIGZ1bGwvYnVzeSwgd2UgcmVzb3J0IHRvIG90aGVyIGF2YWlsYWJsZSByaW5ncy4KLQkgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC4KLQkgKgotCSAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsCi0JICovCiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfaHdfaXBxODA3NF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3IodTggYWMpCiYjNDM7ewogCXJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7CiB9CiAKLXN0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfaHdfd2NuNjc1MF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3IodTggYWMpCiB7Ci0JLyogU2VsZWN0IHRoZSBUQ0wgcmluZyBiYXNlZCBvbiB0aGUgZmxvdyBoYXNoIG9mIHRoZSBTS0IgaW5zdGVhZAotCSAqIG9mIENQVSBJRC4gU2luY2UgYXBwbGljYXRpb25zIHB1bXBpbmcgdGhlIHRyYWZmaWMgY2FuIGJlIHNjaGVkdWxlZAotCSAqIG9uIG11bHRpcGxlIENQVXMsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgcGFja2V0cyBvZiB0aGUgc2FtZSBmbG93Ci0JICogY291bGQgZW5kIG9uIGRpZmZlcmVudCBUQ0wgcmluZ3MsIHRoaXMgY291bGQgc29tZXRpbWVzIHJlc3VsdHMgaW4KLQkgKiBhbiBvdXQgb2Ygb3JkZXIgYXJyaXZhbCBvZiB0aGUgcGFja2V0cyBhdCB0aGUgcmVjZWl2ZXIuCi0JICovCi0JcmV0dXJuIHNrYl9nZXRfaGFzaChza2IpOwomIzQzOwlyZXR1cm4gYWM7CiB9CiAKIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oCmluZGV4IDQ5OTY1MzZmYmQxNGYuLmI2YmM4YjcyZDgxMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmgKQEAgLTI3Myw3ICYjNDM7MjczLDcgQEAgc3RydWN0IGF0aDExa19od19vcHMgewogCXUxNiAoKm1wZHVfaW5mb19nZXRfcGVlcmlkKShzdHJ1Y3QgaGFsX3J4X21wZHVfaW5mbyAqbXBkdV9pbmZvKTsKIAlib29sICgqcnhfZGVzY19tYWNfYWRkcjJfdmFsaWQpKHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYyk7CiAJdTgqICgqcnhfZGVzY19tcGR1X3N0YXJ0X2FkZHIyKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpOwotCXUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKJiM0MzsJdTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTsKIH07CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCmluZGV4IDJkNTVjZGM0ZDE2NWQuLjk4MTNmNzkyM2MzNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwpAQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDU5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKJiM0MzsJCQkJCXN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsKJiM0MzsJCS5zdGEgPSB0eHEtJmd0O3N0YSwKJiM0MzsJfTsKJiM0MzsJc3RydWN0IGF0aDExayAqYXIgPSBody0mZ3Q7cHJpdjsKJiM0MzsJc3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7CiYjNDM7CXN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CXUzMiByaW5nX3NlbGVjdG9yOwomIzQzOwlpbnQgbnVtX2ZyZWU7CiYjNDM7CXU4IHJpbmdfaWQ7CiYjNDM7CiYjNDM7CWlmICghYXIpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXJpbmdfc2VsZWN0b3IgPSBhci0mZ3Q7YWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHR4cS0mZ3Q7YWMpOwomIzQzOwlyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGFyLSZndDthYi0mZ3Q7aHdfcGFyYW1zLmhhbF9wYXJhbXMtJmd0O251bV90eF9yaW5nczsKJiM0MzsJdHhfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtkcC50eF9yaW5nW3JpbmdfaWRdOwomIzQzOwl0Y2xfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtoYWwuc3JuZ19saXN0W3R4X3JpbmctJmd0O3RjbF9kYXRhX3JpbmcucmluZ19pZF07CiYjNDM7CiYjNDM7CXdoaWxlICgxKSB7CiYjNDM7CQlpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsCiYjNDM7CQkJCSAgICAgICZhbXA7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CQludW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItJmd0O2FiLCB0Y2xfcmluZywgdHJ1ZSk7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJCWlmIChudW1fZnJlZSA9PSAwKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7CiYjNDM7CQlpZiAoIXNrYikgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWF0aDExa19tYWNfb3BfdHgoaHcsICZhbXA7Y29udHJvbCwgc2tiKTsKJiM0MzsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMWtfb3BzID0gewogCS50eAkJCQk9IGF0aDExa19tYWNfb3BfdHgsCi0JLndha2VfdHhfcXVldWUJCQk9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSwKJiM0MzsJLndha2VfdHhfcXVldWUJCQk9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSwKIAkuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCwKIAkuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLAogCS5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jCmluZGV4IGFmNWYxMWZjMWQ4NGEuLjNkNDZjZmJmMGExYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMKQEAgLTE1MzksNiAmIzQzOzE1MzksNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCX0KIAogCWZvciAoaSA9IDA7IGkgJmx0OyBhYi0mZ3Q7aHdfcGFyYW1zLSZndDttYXhfdHhfcmluZzsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXNwaW5fbG9ja19pbml0KCZhbXA7ZHAtJmd0O3R4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTsKIAkJZHAtJmd0O3R4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7CiAKIAkJZHAtJmd0O3R4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oCmluZGV4IGY4Y2ZjN2JiMjlkZDcuLjY4ZDIwMjBiZTliODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHsKIAl1OCB0Y2xfZGF0YV9yaW5nX2lkOwogCXN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7CiAJc3RydWN0IGRwX3NybmcgdGNsX2NvbXBfcmluZzsKJiM0MzsJLyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqLwomIzQzOwlzcGlubG9ja190IHdha2VfdHhfbG9jazsKIAlzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1czsKIAlpbnQgdHhfc3RhdHVzX2hlYWQ7CiAJaW50IHR4X3N0YXR1c190YWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMKaW5kZXggYTE2NDU2M2ZmZjI4OS4uMDcxY2I1ZDMwOTMxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jCkBAIC0zOTAsNiAmIzQzOzM5MCw3IEBAIGludCBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBoYWxfc3JuZyAqc3JuZywKIAllbHNlCiAJCXJldHVybiAoKHNybmctJmd0O3Jpbmdfc2l6ZSAtIGhwICYjNDM7IHRwKSAvIHNybmctJmd0O2VudHJ5X3NpemUpIC0gMTsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKTsKIAogdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYiwKIAkJCQkgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCmluZGV4IDg2ZmI4YjcxOTYxMzUuLjY1Y2FhN2EyMzQ5ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmgKQEAgLTI0Myw3ICYjNDM7MjQzLDcgQEAgc3RydWN0IGF0aDEya19od19vcHMgewogCWludCAoKm1hY19pZF90b19wZGV2X2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpOwogCWludCAoKm1hY19pZF90b19zcm5nX2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpOwogCWludCAoKnJ4ZG1hX3Jpbmdfc2VsX2NvbmZpZykoc3RydWN0IGF0aDEya19iYXNlICphYik7Ci0JdTggKCpnZXRfcmluZ19zZWxlY3Rvcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7CiYjNDM7CXU4ICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTsKIAlib29sICgqZHBfc3JuZ19pc190eF9jb21wX3JpbmcpKGludCByaW5nX251bSk7CiAJYm9vbCAoKmlzX2ZyYW1lX2xpbmtfYWdub3N0aWMpKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLAogCQkJCSAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jCmluZGV4IGQyNzQ5ZGU0NDU1MzQuLjc0MzU5ZThlZWE0NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKQEAgLTExMSw3ICYjNDM7MTExLDcgQEAgaW50IGF0aDEya193aWZpN19kcF90eChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmEKIAkgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC4KIAkgKiBUT0RPOiBBZGQgdGhyb3R0bGluZyBsb2dpYyB3aGVuIGFsbCByaW5ncyBhcmUgZnVsbAogCSAqLwotCXJpbmdfc2VsZWN0b3IgPSBkcC0mZ3Q7aHdfcGFyYW1zLSZndDtod19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHNrYik7CiYjNDM7CXJpbmdfc2VsZWN0b3IgPSBkcC0mZ3Q7aHdfcGFyYW1zLSZndDtod19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTsKIAogdGNsX3Jpbmdfc2VsOgogCXRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMKaW5kZXggZDlmZGQyZmM4Mjk4Ni4uYmVkYWRkNDgyYThlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwpAQCAtNDksNyAmIzQzOzQ5LDcgQEAgYXRoMTJrX3dpZmk3X2h3X21hY19pZF90b19zcm5nX2lkX3FjbjkyNzQoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQoc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQodTggYWMpCiB7CiAJcmV0dXJuIHNtcF9wcm9jZXNzb3JfaWQoKTsKIH0KQEAgLTgzLDkgJiM0Mzs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywKIAlyZXR1cm4gbWFjX2lkOwogfQogCi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAoc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAodTggYWMpCiB7Ci0JcmV0dXJuIHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpOwomIzQzOwlyZXR1cm4gYWM7CiB9CiAKIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSkKQEAgLTExMDAsOSAmIzQzOzExMDAsODIgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiYjNDM7CQkJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtJmd0O3ZpZik7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0gewomIzQzOwkJLnN0YSA9IHR4cS0mZ3Q7c3RhLAomIzQzOwl9OwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gdHhxLSZndDt2aWY7CiYjNDM7CXN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmOwomIzQzOwlzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZzsKJiM0MzsJc3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZzsKJiM0MzsJc3RydWN0IGF0aDEya19zdGEgKmFoc3RhOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2RwICpkcDsKJiM0MzsJc3RydWN0IHNrX2J1ZmYgKnNrYjsKJiM0MzsJc3RydWN0IGF0aDEyayAqYXI7CiYjNDM7CXU4IHJpbmdfc2VsZWN0b3I7CiYjNDM7CWludCBudW1fZnJlZTsKJiM0MzsJdTggcmluZ19pZDsKJiM0MzsJdTggbGlua19pZDsKJiM0MzsKJiM0MzsJaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZikgJmFtcDsmYW1wOyB0eHEtJmd0O3N0YSkgewomIzQzOwkJYWhzdGEgPSBhdGgxMmtfc3RhX3RvX2Foc3RhKHR4cS0mZ3Q7c3RhKTsKJiM0MzsJCWxpbmtfaWQgPSBhaHN0YS0mZ3Q7YXNzb2NfbGlua19pZDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWxpbmtfaWQgPSBhaHZpZi0mZ3Q7ZGVmbGluay5saW5rX2lkOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKJiM0MzsKJiM0MzsJYXJ2aWYgPSByY3VfZGVyZWZlcmVuY2UoYWh2aWYtJmd0O2xpbmtbbGlua19pZF0pOwomIzQzOwlpZiAoIWFydmlmIHx8ICFhcnZpZi0mZ3Q7YXIpIHsKJiM0MzsJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWFyID0gYXJ2aWYtJmd0O2FyOwomIzQzOwlkcCA9IGFyLSZndDthYi0mZ3Q7ZHA7CiYjNDM7CiYjNDM7CXJpbmdfc2VsZWN0b3IgPSBkcC0mZ3Q7aHdfcGFyYW1zLSZndDtod19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHR4cS0mZ3Q7YWMpOwomIzQzOwlyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGRwLSZndDtod19wYXJhbXMtJmd0O21heF90eF9yaW5nOwomIzQzOwl0eF9yaW5nID0gJmFtcDtkcC0mZ3Q7dHhfcmluZ1tyaW5nX2lkXTsKJiM0MzsJdGNsX3JpbmcgPSAmYW1wO2RwLSZndDtoYWwtJmd0O3NybmdfbGlzdFt0eF9yaW5nLSZndDt0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdOwomIzQzOwomIzQzOwl3aGlsZSAoMSkgewomIzQzOwkJaWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILAomIzQzOwkJCQkgICAgICAmYW1wO2FyLSZndDthYi0mZ3Q7ZGV2X2ZsYWdzKSkpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrKCZhbXA7dGNsX3JpbmctJmd0O2xvY2spOwomIzQzOwkJbnVtX2ZyZWUgPSBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLSZndDthYiwgdGNsX3JpbmcsIHRydWUpOwomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CQlpZiAobnVtX2ZyZWUgPT0gMCkgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpOwomIzQzOwkJaWYgKCFza2IpIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlhdGgxMmtfd2lmaTdfbWFjX29wX3R4KGh3LCAmYW1wO2NvbnRyb2wsIHNrYik7CiYjNDM7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7CiAJLnR4CQkJCT0gYXRoMTJrX3dpZmk3X21hY19vcF90eCwKLQkud2FrZV90eF9xdWV1ZQkJCT0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLAomIzQzOwkud2FrZV90eF9xdWV1ZQkJCT0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLAogCS5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0YXJ0LAogCS5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsCiAJLnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODAKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA1MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBXaS1GaSBEcml2ZXIgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyB0aGUgYGF0aDExa2AgYW5kIGBhdGgxMmtgIHdpcmVsZXNzIGRyaXZlcnMuIEl0IGludHJvZHVjZXMgYSBzcGlubG9jayAoYHdha2VfdHhfbG9ja2ApIHRvIHRoZSBgZHBfdHhfcmluZ2Agc3RydWN0IGFuZCBpbmNsdWRlcyBgd2FrZV90eF9xdWV1ZWAgY2FsbGJhY2tzIGZvciBib3RoIGRyaXZlcnMuIFRoZSBgZ2V0X3Jpbmdfc2VsZWN0b3JgIGZ1bmN0aW9uIGFsc28gY2hhbmdlZCB0byBhY2NlcHQgYHU4IGFjYCBpbnN0ZWFkIG9mIGBzdHJ1Y3Qgc2tfYnVmZiAqc2tiYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIHRlc3QgdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgbGlrZSBRRU1VPwoKU2luY2UgSSYjMzk7bSBkZWFsaW5nIHdpdGggYGF0aDExa2AgYW5kIGBhdGgxMmtgLCB3aGljaCBhcmUgUXVhbGNvbW0gV2ktRmkgZHJpdmVycywgSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhleSBhcmUgUENJIG9yIEFIQiBkZXZpY2VzLiBBbmQgdGhlIGFuc3dlciBpcywgeWVzLCB0aGV5IGFyZSwgdXN1YWxseSBwaHlzaWNhbCBQQ0llIG9yIEFIQi4gU28sIHRoZSBjb3JlIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiBJIGVmZmVjdGl2ZWx5IGVtdWxhdGUgb3IgZnV6eiB0aGVzZSBkcml2ZXJzIGluIHRoZSBhYnNlbmNlIG9mIHRoZSBhY3R1YWwgaGFyZHdhcmU/CgpHZW5lcmFsbHkgc3BlYWtpbmcsIHdoZW4gaXQgY29tZXMgdG8gV2ktRmksIHRoZXJlIGFyZSBzb21lIHNvZnR3YXJlIGVtdWxhdG9ycyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCBgYXRoMTFrYCBhbmQgYGF0aDEya2AgYXJlIGRlc2lnbmVkIGZvciBoYXJkd2FyZS4gR2l2ZW4gdGhlIGNvbnRleHQsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNoYWxsZW5nZXMgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgYXJlbiYjMzk7dCB0eXBpY2FsbHkgd2VsbC1lbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IGhpdHMgaG9tZS4gYGF0aDExa2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJL0FIQiBXaS1GaSBkcml2ZXIsIGRlc2lnbmVkIGZvciBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4L2JlIGRldmljZXMuCgpTbywgdGhlIHJlYWwgcXVlc3Rpb24gYm9pbHMgZG93biB0bzogaXMgdGhlcmUgYSByZWFzb25hYmxlIGNoYW5jZSBvZiBmdXp6aW5nIHRoaXMgaW4gUUVNVT8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlcnMgb2Z0ZW4gcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSBjYW4gdGhpbmsgb2YgYG1hYzgwMjExX2h3c2ltYCwgYW5kIHBvc3NpYmx5IGBmbWFjYCwgYnV0IGBtYWM4MDIxMV9od3NpbWAgaXMgYSB2aXJ0dWFsIGRyaXZlciwgbm90IGFuIGVtdWxhdG9yIGZvciBgYXRoMTFrYC4gV2hpbGUgc3l6a2FsbGVyIGhhcyBzb21lIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgdGhpcyBpc24mIzM5O3QgVVNCOyBpdCYjMzk7cyBQQ0kvQUhCLgoKVWx0aW1hdGVseSwgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYGF0aDExa2Agb2ZmZXJzIGFueSBraW5kIG9mIHZpcnR1YWwgb3IgZW11bGF0ZWQgc3VwcG9ydC4gSSYjMzk7bSBnb2luZyB0byBsZXZlcmFnZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRocm91Z2ggdGhlIGNvZGViYXNlIGZvciBtZW50aW9ucyBvZiBgYXRoMTFrYCBhbmQgYGF0aDEya2AgY29tYmluZWQgd2l0aCB0aGUgYnVzIHR5cGVzIHRoZXkgdXNlLCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IHdheSB0aGlzIGNvZGUgY2FuIGJlIHRlc3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMWtfcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ5OnN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTUwLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEyOTY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0aDExa19wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTI5OC1cdC5pZF90YWJsZSA9IGF0aDExa19wY2lfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEyOTk6XHQucHJvYmUgPSBhdGgxMWtfcGNpX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzAwLVx0LnJlbW92ZSA9IGF0aDExa19wY2lfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3OTYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlBDSSBEcml2ZXIgQ29uc2lkZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcy4uLiBpdCYjMzk7cyBhIFBDSSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FscmlnaHQsIFBDSS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBsZXQmIzM5O3Mgbm90IGdldCB0dW5uZWwgdmlzaW9uLiYjMzQ7IEkgaW1tZWRpYXRlbHkgc3RhcnQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSwgc28gdGhlIGRhdGEgdHJhbnNmZXIgYmV0d2VlbiB0aGUgQ1BVIGFuZCB0aGUgUENJIGRldmljZSwgYXMgd2VsbCBhcyBhbnkgb3RoZXJzLCBpcyB0aGUgaW1wb3J0YW50IGJpdC4gVGhpcyBkcml2ZXIgaXMgaGFuZGxpbmcgdGhhdCBkYXRhIHRyYW5zZmVyLgoKQW5kIHRoYXQmIzM5O3Mgd2hlbiBpdCBoaXRzIG1lOiAmIzM0O1doYXQgYWJvdXQgdGhlIEFIQj8mIzM0OyBUaGUgUENJIGJ1cyBpcyB0aGUgc3RhbmRhcmQgaGVyZSwgc28gdGhhdCBtZWFucyB0aGUgQUhCIGJ1cyBpcyB0aGUgaGFyZHdhcmUgY29ubmVjdGlvbiB0byB0aGUgcmVzdCBvZiB0aGUgYm9hcmQuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGV2ZW4gdGhvdWdoIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgc3lzdGVtLW9uLWNoaXAgKFNvQykgaW5mcmFzdHJ1Y3R1cmUuIFNwZWNpZmljYWxseSwgaG93IGRvZXMgdGhpcyBkcml2ZXIgaW50ZXJmYWNlIHdpdGggdGhlIEFkdmFuY2VkIEhpZ2gtcGVyZm9ybWFuY2UgQnVzIChBSEIpLCBvciBhbnkgb3RoZXIgcG90ZW50aWFsIGludGVyY29ubmVjdD8gSXMgdGhlcmUgYW4gaW50ZXJtZWRpYXJ5IGJyaWRnZSwgbWVtb3J5LW1hcHBlZCBJL08sIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpLCBvciBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGF0IGludGVyY29ubmVjdCBpcyBjcnVjaWFsIHRvIHRydWx5IHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgYW5kIGhvdyBpdCB3aWxsIHBlcmZvcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX2FoYl9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEwNzM9c3RhdGljIGludCBhdGgxMWtfYWhiX2Z3X3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTEwODpzdGF0aWMgaW50IGF0aDExa19haGJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTEwOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMzAzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF0aDExa19haGJfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTMwNy1cdH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEzMDg6XHQucHJvYmUgPSBhdGgxMWtfYWhiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzA5LVx0LnJlbW92ZSA9IGF0aDExa19haGJfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE0OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzOTYKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiA1MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciBhdGgxMWsvYXRoMTJrIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGEgUENJIGFuZCBBSEIgZHJpdmVyLiBUaGUgcHJvbXB0IHNheXMgSSBuZWVkIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggdG91Y2hlcyBjb2RlIHRoYXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIG9yIGlmIGl0JiMzOTtzIHNwZWNpZmljIHRvIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB0aG9zZSBlbnZpcm9ubWVudHMuIFNwZWNpZmljYWxseSwgdGhlIHByb21wdCBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVcyBhcyBleGFtcGxlcyB0byBmbGFnLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGFyZSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVycywgZGV2ZWxvcGVkIGJ5IFF1YWxjb21tIEF0aGVyb3MgZm9yIDgwMi4xMWF4L2JlLCBhbmQgdGhleSByZWx5IG9uIGVpdGhlciBQQ0llIG9yIEFIQiBoYXJkd2FyZS4gVGhlc2UgYXJlIHR5cGljYWxseSBub3QgZW11bGF0ZWQgcHJvcGVybHkgaW4gc3RhbmRhcmQgUUVNVS4gVGhleSByZXF1aXJlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBvcGVyYXRlIGNvcnJlY3RseS4KCkkgYnJpZWZseSBjb25zaWRlcmVkIGlmIFN5emthbGxlciBjb3VsZCBzb21laG93IGZ1enogdGhpcyB1c2luZyBpdHMgUENJIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuIEl0ICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIChgc3l6X3BjaV9kZXZpY2VfYWRkYCksIGJ1dCBpdCYjMzk7cyBwcmV0dHkgbGltaXRlZCBhbmQgZ2VuZXJhbGx5IGRvZXNuJiMzOTt0IGRpdmUgZGVlcCBpbnRvIGNvbXBsZXggV2ktRmkgTUFDL1BIWSBsb2dpYyB3aXRob3V0IHNwZWNpZmljIHRhcmdldGluZyBvciBoYXJkd2FyZSBlbXVsYXRpb24uIEhvd2V2ZXIsIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGNhbGxzIG91dCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBjb21wb25lbnRzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZS4gV2ktRmkgZHJpdmVycywgaW4gdGhpcyBzY2VuYXJpbywgc2VlbSB0byBmYWxsIGludG8gdGhhdCBjYXRlZ29yeSBvZiAmIzM0O25vdCBlbXVsYXRlZC4mIzM0OwoKSSB0b29rIGEgcXVpY2sgbG9vayB0byBzZWUgaWYgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGFueSBob29rcyBpbnRvIHRoZXNlIGRyaXZlcnMgZGlyZWN0bHkuIEl0IGRvZXMgaGF2ZSBgc3lzL2xpbnV4L3NvY2tldF9uZXRsaW5rX2dlbmVyaWNfbmw4MDIxMS50eHRgLCB3aGljaCBmdXp6ZWQgbmw4MDIxMSwgYnV0IHRoYXQgdXN1YWxseSBoaXRzIGBtYWM4MDIxMV9od3NpbWAgb3IgYGNmZzgwMjExYCBjb3JlIGFuZCBpcyBub3QgbGlrZWx5IHRvIGhpdCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHVubGVzcyB0aGUgaGFyZHdhcmUgaXMgcHJlc2VudCBpbiB0aGUgZW52aXJvbm1lbnQuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhlIHJlbGV2YW50IGhhcmR3YXJlIGlzICpub3QqIHByZXNlbnQgaW4gdGhlIEdDRS9RRU1VIGVudmlyb25tZW50LCB0aGUgY29kZSBwYXRocyByZWxhdGVkIHRvIGBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWVgIHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWQuCgpCYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBwYXRjaCBtb2RpZmllcyB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyAoYXRoMTFrL2F0aDEyayksIHdoaWNoIG5lY2Vzc2l0YXRlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0JiMzOTtzIGFic2VudCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGFuZCBhdGgxMmsgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBBdGhlcm9zIGhhcmR3YXJlLiBUaGVzZSByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS4gVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTQ6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAxOjQ5LjE5NDcwODA1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjY0NzQ4MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBhbmQgYXRoMTJrIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS4gVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAxOjQ5LjE5NDcxMzQxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NDMxODkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIxYWQ4M2E0MTU4N2E1YzQwN2Y3MDcwMzhmYzNlZDkwMzZiZWJhZDBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgNyAxNDowMTo0NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG5pbmRleCBmMzg5Yjk3YWNiZGQ1Li4yZTU5NzhlYzJiMDViIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbkBAIC0xMDg3LDYgKzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXFx1MDAzZW51bV90eF9yaW5nczsgaSsrKSB7XFxuIFxcdFxcdGlkcl9pbml0KFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tpXS50eGJ1Zl9pZHIpO1xcbiBcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhfaWRyX2xvY2spO1xcbitcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XFxuIFxcbiBcXHRcXHRkcC1cXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxcbmluZGV4IDg0ZjY2ODM5ZjBjNmQuLjZkOTk1MDFhYTI2OWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXFxuQEAgLTg3LDYgKzg3LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xcbiBcXHRzdHJ1Y3QgaWRyIHR4YnVmX2lkcjtcXG4gXFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xcbiBcXHRzcGlubG9ja190IHR4X2lkcl9sb2NrO1xcbitcXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXFxuK1xcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xcbiBcXHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcXG4gXFx0aW50IHR4X3N0YXR1c19oZWFkO1xcbiBcXHRpbnQgdHhfc3RhdHVzX3RhaWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xcbmluZGV4IGNhYzk3MGM5MjgwNmEuLjA4M2FjYThmZjM1NWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXFxuQEAgLTEwOCw3ICsxMDgsNyBAQCBpbnQgYXRoMTFrX2RwX3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX3ZpZiAqYXJ2aWYsXFxuIFxcbiBcXHRwb29sX2lkID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikgXFx1MDAyNiAoQVRIMTFLX0hXX01BWF9RVUVVRVMgLSAxKTtcXG4gXFxuLVxcdHJpbmdfc2VsZWN0b3IgPSBhYi1cXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiKTtcXG4rXFx0cmluZ19zZWxlY3RvciA9IGFiLVxcdTAwM2Vod19wYXJhbXMuaHdfb3BzLVxcdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XFxuIFxcbiB0Y2xfcmluZ19zZWw6XFxuIFxcdHRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xcbmluZGV4IDkzZjlhMDNjNDhkYzAuLjhhMjhjMWQ0YzE3YjYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXFxuQEAgLTg3NiwyOCArODc2LDE0IEBAIHN0YXRpYyBib29sIGF0aDExa19od193Y242ODU1X3J4X2Rlc2NfZ2V0X2xkcGNfc3VwcG9ydChzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpXFxuIFxcdFxcdFxcdCBfX2xlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZXUud2NuNjg1NS5tc2R1X3N0YXJ0LmluZm8yKSk7XFxuIH1cXG4gXFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXFxuLXtcXG4tXFx0LyogTGV0IHRoZSBkZWZhdWx0IHJpbmcgc2VsZWN0aW9uIGJlIGJhc2VkIG9uIGN1cnJlbnQgcHJvY2Vzc29yXFxuLVxcdCAqIG51bWJlciwgd2hlcmUgb25lIG9mIHRoZSAzIHRjbCByaW5ncyBhcmUgc2VsZWN0ZWQgYmFzZWQgb25cXG4tXFx0ICogdGhlIHNtcF9wcm9jZXNzb3JfaWQoKS4gSW4gY2FzZSB0aGF0IHJpbmdcXG4tXFx0ICogaXMgZnVsbC9idXN5LCB3ZSByZXNvcnQgdG8gb3RoZXIgYXZhaWxhYmxlIHJpbmdzLlxcbi1cXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cXG4tXFx0ICpcXG4tXFx0ICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGxcXG4tXFx0ICovXFxuK3N0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxcbit7XFxuIFxcdHJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXFxuK3N0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxcbiB7XFxuLVxcdC8qIFNlbGVjdCB0aGUgVENMIHJpbmcgYmFzZWQgb24gdGhlIGZsb3cgaGFzaCBvZiB0aGUgU0tCIGluc3RlYWRcXG4tXFx0ICogb2YgQ1BVIElELiBTaW5jZSBhcHBsaWNhdGlvbnMgcHVtcGluZyB0aGUgdHJhZmZpYyBjYW4gYmUgc2NoZWR1bGVkXFxuLVxcdCAqIG9uIG11bHRpcGxlIENQVXMsIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgcGFja2V0cyBvZiB0aGUgc2FtZSBmbG93XFxuLVxcdCAqIGNvdWxkIGVuZCBvbiBkaWZmZXJlbnQgVENMIHJpbmdzLCB0aGlzIGNvdWxkIHNvbWV0aW1lcyByZXN1bHRzIGluXFxuLVxcdCAqIGFuIG91dCBvZiBvcmRlciBhcnJpdmFsIG9mIHRoZSBwYWNrZXRzIGF0IHRoZSByZWNlaXZlci5cXG4tXFx0ICovXFxuLVxcdHJldHVybiBza2JfZ2V0X2hhc2goc2tiKTtcXG4rXFx0cmV0dXJuIGFjO1xcbiB9XFxuIFxcbiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wcyA9IHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXFxuaW5kZXggNDk5NjUzNmZiZDE0Zi4uYjZiYzhiNzJkODEyMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcXG5AQCAtMjczLDcgKzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHtcXG4gXFx0dTE2ICgqbXBkdV9pbmZvX2dldF9wZWVyaWQpKHN0cnVjdCBoYWxfcnhfbXBkdV9pbmZvICptcGR1X2luZm8pO1xcbiBcXHRib29sICgqcnhfZGVzY19tYWNfYWRkcjJfdmFsaWQpKHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYyk7XFxuIFxcdHU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcXG4tXFx0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xcbitcXHR1MzIgKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xcbiB9O1xcbiBcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLjk4MTNmNzkyM2MzNGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5AQCAtMTAwNjUsOSArMTAwNjUsNTkgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xcbitcXHRcXHQuc3RhID0gdHhxLVxcdTAwM2VzdGEsXFxuK1xcdH07XFxuK1xcdHN0cnVjdCBhdGgxMWsgKmFyID0gaHctXFx1MDAzZXByaXY7XFxuK1xcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xcbitcXHRzdHJ1Y3QgaGFsX3NybmcgKnRjbF9yaW5nO1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbitcXHR1MzIgcmluZ19zZWxlY3RvcjtcXG4rXFx0aW50IG51bV9mcmVlO1xcbitcXHR1OCByaW5nX2lkO1xcbitcXG4rXFx0aWYgKCFhcilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0cmluZ19zZWxlY3RvciA9IGFyLVxcdTAwM2VhYi1cXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVxcdTAwM2VhYyk7XFxuK1xcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXFx1MDAzZWFiLVxcdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cXHUwMDNlbnVtX3R4X3JpbmdzO1xcbitcXHR0eF9yaW5nID0gXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlZHAudHhfcmluZ1tyaW5nX2lkXTtcXG4rXFx0dGNsX3JpbmcgPSBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VoYWwuc3JuZ19saXN0W3R4X3JpbmctXFx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XFxuK1xcbitcXHR3aGlsZSAoMSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2dGNsX3JpbmctXFx1MDAzZWxvY2spO1xcbitcXHRcXHRudW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItXFx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRpZiAobnVtX2ZyZWUgPT0gMCkge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xcbitcXHRcXHRpZiAoIXNrYikge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGF0aDExa19tYWNfb3BfdHgoaHcsIFxcdTAwMjZjb250cm9sLCBza2IpO1xcbitcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdH1cXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XFxuIFxcdC50eFxcdFxcdFxcdFxcdD0gYXRoMTFrX21hY19vcF90eCxcXG4tXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcXG4rXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcXG4gXFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXFxuIFxcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXFxuIFxcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG5pbmRleCBhZjVmMTFmYzFkODRhLi4zZDQ2Y2ZiZjBhMWMzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xcbkBAIC0xNTM5LDYgKzE1MzksNyBAQCBzdGF0aWMgaW50IGF0aDEya19kcF9zZXR1cChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXHR9XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlbWF4X3R4X3Jpbmc7IGkrKykge1xcbitcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XFxuIFxcbiBcXHRcXHRkcC1cXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbmluZGV4IGY4Y2ZjN2JiMjlkZDcuLjY4ZDIwMjBiZTliODYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xcbiBcXHR1OCB0Y2xfZGF0YV9yaW5nX2lkO1xcbiBcXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfZGF0YV9yaW5nO1xcbiBcXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xcbitcXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXFxuK1xcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xcbiBcXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcXG4gXFx0aW50IHR4X3N0YXR1c19oZWFkO1xcbiBcXHRpbnQgdHhfc3RhdHVzX3RhaWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuaW5kZXggYTE2NDU2M2ZmZjI4OS4uMDcxY2I1ZDMwOTMxMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xcbkBAIC0zOTAsNiArMzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLFxcbiBcXHRlbHNlXFxuIFxcdFxcdHJldHVybiAoKHNybmctXFx1MDAzZXJpbmdfc2l6ZSAtIGhwICsgdHApIC8gc3JuZy1cXHUwMDNlZW50cnlfc2l6ZSkgLSAxO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUpO1xcbiBcXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBoYWxfc3JuZyAqc3JuZylcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXFxuaW5kZXggODZmYjhiNzE5NjEzNS4uNjVjYWE3YTIzNDlmMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcXG5AQCAtMjQzLDcgKzI0Myw3IEBAIHN0cnVjdCBhdGgxMmtfaHdfb3BzIHtcXG4gXFx0aW50ICgqbWFjX2lkX3RvX3BkZXZfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7XFxuIFxcdGludCAoKm1hY19pZF90b19zcm5nX2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpO1xcbiBcXHRpbnQgKCpyeGRtYV9yaW5nX3NlbF9jb25maWcpKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbi1cXHR1OCAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4rXFx0dTggKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xcbiBcXHRib29sICgqZHBfc3JuZ19pc190eF9jb21wX3JpbmcpKGludCByaW5nX251bSk7XFxuIFxcdGJvb2wgKCppc19mcmFtZV9saW5rX2Fnbm9zdGljKShzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbmluZGV4IGQyNzQ5ZGU0NDU1MzQuLjc0MzU5ZThlZWE0NzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXFxuQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxcbiBcXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cXG4gXFx0ICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGxcXG4gXFx0ICovXFxuLVxcdHJpbmdfc2VsZWN0b3IgPSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vod19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XFxuK1xcdHJpbmdfc2VsZWN0b3IgPSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vod19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcXG4gXFxuIHRjbF9yaW5nX3NlbDpcXG4gXFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuaW5kZXggZDlmZGQyZmM4Mjk4Ni4uYmVkYWRkNDgyYThlOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG5AQCAtNDksNyArNDksNyBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfcWNuOTI3NChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4rc3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl9xY245Mjc0KHU4IGFjKVxcbiB7XFxuIFxcdHJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7XFxuIH1cXG5AQCAtODMsOSArODMsOSBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfd2NuNzg1MChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXFxuIFxcdHJldHVybiBtYWNfaWQ7XFxuIH1cXG4gXFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAodTggYWMpXFxuIHtcXG4tXFx0cmV0dXJuIHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xcbitcXHRyZXR1cm4gYWM7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcXG5AQCAtMTEwMCw5ICsxMTAwLDgyIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodHhxLVxcdTAwM2V2aWYpO1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHtcXG4rXFx0XFx0LnN0YSA9IHR4cS1cXHUwMDNlc3RhLFxcbitcXHR9O1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gdHhxLVxcdTAwM2V2aWY7XFxuK1xcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xcbitcXHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcXG4rXFx0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcXG4rXFx0c3RydWN0IGF0aDEya19zdGEgKmFoc3RhO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2RwICpkcDtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuK1xcdHU4IHJpbmdfc2VsZWN0b3I7XFxuK1xcdGludCBudW1fZnJlZTtcXG4rXFx0dTggcmluZ19pZDtcXG4rXFx0dTggbGlua19pZDtcXG4rXFxuK1xcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpIFxcdTAwMjZcXHUwMDI2IHR4cS1cXHUwMDNlc3RhKSB7XFxuK1xcdFxcdGFoc3RhID0gYXRoMTJrX3N0YV90b19haHN0YSh0eHEtXFx1MDAzZXN0YSk7XFxuK1xcdFxcdGxpbmtfaWQgPSBhaHN0YS1cXHUwMDNlYXNzb2NfbGlua19pZDtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0bGlua19pZCA9IGFodmlmLVxcdTAwM2VkZWZsaW5rLmxpbmtfaWQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFxuK1xcdGFydmlmID0gcmN1X2RlcmVmZXJlbmNlKGFodmlmLVxcdTAwM2VsaW5rW2xpbmtfaWRdKTtcXG4rXFx0aWYgKCFhcnZpZiB8fCAhYXJ2aWYtXFx1MDAzZWFyKSB7XFxuK1xcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGFyID0gYXJ2aWYtXFx1MDAzZWFyO1xcbitcXHRkcCA9IGFyLVxcdTAwM2VhYi1cXHUwMDNlZHA7XFxuK1xcbitcXHRyaW5nX3NlbGVjdG9yID0gZHAtXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlaHdfb3BzLVxcdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXFx1MDAzZWFjKTtcXG4rXFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VtYXhfdHhfcmluZztcXG4rXFx0dHhfcmluZyA9IFxcdTAwMjZkcC1cXHUwMDNldHhfcmluZ1tyaW5nX2lkXTtcXG4rXFx0dGNsX3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZWhhbC1cXHUwMDNlc3JuZ19saXN0W3R4X3JpbmctXFx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XFxuK1xcbitcXHR3aGlsZSAoMSkge1xcbitcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2dGNsX3JpbmctXFx1MDAzZWxvY2spO1xcbitcXHRcXHRudW1fZnJlZSA9IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItXFx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRcXHRpZiAobnVtX2ZyZWUgPT0gMCkge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xcbitcXHRcXHRpZiAoIXNrYikge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsIFxcdTAwMjZjb250cm9sLCBza2IpO1xcbitcXG4rXFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdH1cXG4rXFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcXG4gXFx0LnR4XFx0XFx0XFx0XFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxcbi1cXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxcbitcXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLFxcbiBcXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcXG4gXFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RvcCxcXG4gXFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAxOjUwLjY4OTc5OTQ4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0NzY5NjQ1MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGFuZCBhdGgxMmsgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBBdGhlcm9zIGhhcmR3YXJlLiBUaGVzZSByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjFhZDgzYTQxNTg3YTVjNDA3ZjcwNzAzOGZjM2VkOTAzNmJlYmFkMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTQ6MDE6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDUuLjJlNTk3OGVjMmIwNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuQEAgLTEwODcsNiArMTA4Nyw3IEBAIGludCBhdGgxMWtfZHBfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZW51bV90eF9yaW5nczsgaSsrKSB7XG4gXHRcdGlkcl9pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0udHhidWZfaWRyKTtcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9pZHJfbG9jayk7XG4rXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5pbmRleCA4NGY2NjgzOWYwYzZkLi42ZDk5NTAxYWEyNjljIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbkBAIC04Nyw2ICs4Nyw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcbiBcdHN0cnVjdCBpZHIgdHhidWZfaWRyO1xuIFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xuIFx0c3BpbmxvY2tfdCB0eF9pZHJfbG9jaztcbitcdC8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi9cbitcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xuIFx0c3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7XG4gXHRpbnQgdHhfc3RhdHVzX2hlYWQ7XG4gXHRpbnQgdHhfc3RhdHVzX3RhaWw7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5pbmRleCBjYWM5NzBjOTI4MDZhLi4wODNhY2E4ZmYzNTViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcbkBAIC0xMDgsNyArMTA4LDcgQEAgaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxuIFxuIFx0cG9vbF9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpIFx1MDAyNiAoQVRIMTFLX0hXX01BWF9RVUVVRVMgLSAxKTtcbiBcbi1cdHJpbmdfc2VsZWN0b3IgPSBhYi1cdTAwM2Vod19wYXJhbXMuaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XG4rXHRyaW5nX3NlbGVjdG9yID0gYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbmluZGV4IDkzZjlhMDNjNDhkYzAuLjhhMjhjMWQ0YzE3YjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xuQEAgLTg3NiwyOCArODc2LDE0IEBAIHN0YXRpYyBib29sIGF0aDExa19od193Y242ODU1X3J4X2Rlc2NfZ2V0X2xkcGNfc3VwcG9ydChzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpXG4gXHRcdFx0IF9fbGUzMl90b19jcHUoZGVzYy1cdTAwM2V1LndjbjY4NTUubXNkdV9zdGFydC5pbmZvMikpO1xuIH1cbiBcbi1zdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLXtcbi1cdC8qIExldCB0aGUgZGVmYXVsdCByaW5nIHNlbGVjdGlvbiBiZSBiYXNlZCBvbiBjdXJyZW50IHByb2Nlc3NvclxuLVx0ICogbnVtYmVyLCB3aGVyZSBvbmUgb2YgdGhlIDMgdGNsIHJpbmdzIGFyZSBzZWxlY3RlZCBiYXNlZCBvblxuLVx0ICogdGhlIHNtcF9wcm9jZXNzb3JfaWQoKS4gSW4gY2FzZSB0aGF0IHJpbmdcbi1cdCAqIGlzIGZ1bGwvYnVzeSwgd2UgcmVzb3J0IHRvIG90aGVyIGF2YWlsYWJsZSByaW5ncy5cbi1cdCAqIElmIGFsbCByaW5ncyBhcmUgZnVsbCwgd2UgZHJvcCB0aGUgcGFja2V0LlxuLVx0ICpcbi1cdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXG4tXHQgKi9cbitzdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYylcbit7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbiBcbi1zdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxuIHtcbi1cdC8qIFNlbGVjdCB0aGUgVENMIHJpbmcgYmFzZWQgb24gdGhlIGZsb3cgaGFzaCBvZiB0aGUgU0tCIGluc3RlYWRcbi1cdCAqIG9mIENQVSBJRC4gU2luY2UgYXBwbGljYXRpb25zIHB1bXBpbmcgdGhlIHRyYWZmaWMgY2FuIGJlIHNjaGVkdWxlZFxuLVx0ICogb24gbXVsdGlwbGUgQ1BVcywgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCBwYWNrZXRzIG9mIHRoZSBzYW1lIGZsb3dcbi1cdCAqIGNvdWxkIGVuZCBvbiBkaWZmZXJlbnQgVENMIHJpbmdzLCB0aGlzIGNvdWxkIHNvbWV0aW1lcyByZXN1bHRzIGluXG4tXHQgKiBhbiBvdXQgb2Ygb3JkZXIgYXJyaXZhbCBvZiB0aGUgcGFja2V0cyBhdCB0aGUgcmVjZWl2ZXIuXG4tXHQgKi9cbi1cdHJldHVybiBza2JfZ2V0X2hhc2goc2tiKTtcbitcdHJldHVybiBhYztcbiB9XG4gXG4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHMgPSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXG5pbmRleCA0OTk2NTM2ZmJkMTRmLi5iNmJjOGI3MmQ4MTIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbkBAIC0yNzMsNyArMjczLDcgQEAgc3RydWN0IGF0aDExa19od19vcHMge1xuIFx0dTE2ICgqbXBkdV9pbmZvX2dldF9wZWVyaWQpKHN0cnVjdCBoYWxfcnhfbXBkdV9pbmZvICptcGR1X2luZm8pO1xuIFx0Ym9vbCAoKnJ4X2Rlc2NfbWFjX2FkZHIyX3ZhbGlkKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpO1xuIFx0dTgqICgqcnhfZGVzY19tcGR1X3N0YXJ0X2FkZHIyKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpO1xuLVx0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xuK1x0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTtcbiB9O1xuIFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wcztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuaW5kZXggMmQ1NWNkYzRkMTY1ZC4uOTgxM2Y3OTIzYzM0ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC0xMDA2NSw5ICsxMDA2NSw1OSBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuK1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbitcdH07XG4rXHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcbitcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4rXHRpbnQgbnVtX2ZyZWU7XG4rXHR1OCByaW5nX2lkO1xuK1xuK1x0aWYgKCFhcilcbitcdFx0cmV0dXJuO1xuK1xuK1x0cmluZ19zZWxlY3RvciA9IGFyLVx1MDAzZWFiLVx1MDAzZWh3X3BhcmFtcy5od19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVx1MDAzZWFjKTtcbitcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzO1xuK1x0dHhfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRwLnR4X3JpbmdbcmluZ19pZF07XG4rXHR0Y2xfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWhhbC5zcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuK1xuK1x0d2hpbGUgKDEpIHtcbitcdFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXG4rXHRcdHNwaW5fbG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuK1xuK1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1xuK1x0XHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcbitcdFx0aWYgKCFza2IpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0YXRoMTFrX21hY19vcF90eChodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbitcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbmluZGV4IGFmNWYxMWZjMWQ4NGEuLjNkNDZjZmJmMGExYzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuQEAgLTE1MzksNiArMTUzOSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMtXHUwMDNlbWF4X3R4X3Jpbmc7IGkrKykge1xuK1x0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udGNsX2RhdGFfcmluZ19pZCA9IGk7XG4gXG4gXHRcdGRwLVx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuaW5kZXggZjhjZmM3YmIyOWRkNy4uNjhkMjAyMGJlOWI4NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5AQCAtNTgsNiArNTgsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7XG4gXHR1OCB0Y2xfZGF0YV9yaW5nX2lkO1xuIFx0c3RydWN0IGRwX3NybmcgdGNsX2RhdGFfcmluZztcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9jb21wX3Jpbmc7XG4rXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXG4rXHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX2NvbXBsZXRpb25fcmluZ190eCAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXG5pbmRleCBhMTY0NTYzZmZmMjg5Li4wNzFjYjVkMzA5MzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXG4gXHRlbHNlXG4gXHRcdHJldHVybiAoKHNybmctXHUwMDNlcmluZ19zaXplIC0gaHAgKyB0cCkgLyBzcm5nLVx1MDAzZWVudHJ5X3NpemUpIC0gMTtcbiB9XG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XG4gXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaGFsX3NybmcgKnNybmcpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCA4NmZiOGI3MTk2MTM1Li42NWNhYTdhMjM0OWYxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbkBAIC0yNDMsNyArMjQzLDcgQEAgc3RydWN0IGF0aDEya19od19vcHMge1xuIFx0aW50ICgqbWFjX2lkX3RvX3BkZXZfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7XG4gXHRpbnQgKCptYWNfaWRfdG9fc3JuZ19pZCkoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LCBpbnQgbWFjX2lkKTtcbiBcdGludCAoKnJ4ZG1hX3Jpbmdfc2VsX2NvbmZpZykoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4tXHR1OCAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbitcdHU4ICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTtcbiBcdGJvb2wgKCpkcF9zcm5nX2lzX3R4X2NvbXBfcmluZykoaW50IHJpbmdfbnVtKTtcbiBcdGJvb2wgKCppc19mcmFtZV9saW5rX2Fnbm9zdGljKShzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuaW5kZXggZDI3NDlkZTQ0NTUzNC4uNzQzNTllOGVlYTQ3MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5AQCAtMTExLDcgKzExMSw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXG4gXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cbiBcdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXG4gXHQgKi9cbi1cdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XG4rXHRyaW5nX3NlbGVjdG9yID0gZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IGQ5ZmRkMmZjODI5ODYuLmJlZGFkZDQ4MmE4ZTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuQEAgLTQ5LDcgKzQ5LDcgQEAgYXRoMTJrX3dpZmk3X2h3X21hY19pZF90b19zcm5nX2lkX3FjbjkyNzQoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NCh1OCBhYylcbiB7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbkBAIC04Myw5ICs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodyxcbiBcdHJldHVybiBtYWNfaWQ7XG4gfVxuIFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MCh1OCBhYylcbiB7XG4tXHRyZXR1cm4gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4rXHRyZXR1cm4gYWM7XG4gfVxuIFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbkBAIC0xMTAwLDkgKzExMDAsODIgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodHhxLVx1MDAzZXZpZik7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHtcbitcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4rXHR9O1xuK1x0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHR4cS1cdTAwM2V2aWY7XG4rXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbitcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuK1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbitcdHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YTtcbitcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0dTggcmluZ19zZWxlY3RvcjtcbitcdGludCBudW1fZnJlZTtcbitcdHU4IHJpbmdfaWQ7XG4rXHR1OCBsaW5rX2lkO1xuK1xuK1x0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZikgXHUwMDI2XHUwMDI2IHR4cS1cdTAwM2VzdGEpIHtcbitcdFx0YWhzdGEgPSBhdGgxMmtfc3RhX3RvX2Foc3RhKHR4cS1cdTAwM2VzdGEpO1xuK1x0XHRsaW5rX2lkID0gYWhzdGEtXHUwMDNlYXNzb2NfbGlua19pZDtcbitcdH0gZWxzZSB7XG4rXHRcdGxpbmtfaWQgPSBhaHZpZi1cdTAwM2VkZWZsaW5rLmxpbmtfaWQ7XG4rXHR9XG4rXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXG4rXHRhcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi1cdTAwM2VsaW5rW2xpbmtfaWRdKTtcbitcdGlmICghYXJ2aWYgfHwgIWFydmlmLVx1MDAzZWFyKSB7XG4rXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRhciA9IGFydmlmLVx1MDAzZWFyO1xuK1x0ZHAgPSBhci1cdTAwM2VhYi1cdTAwM2VkcDtcbitcbitcdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHR4cS1cdTAwM2VhYyk7XG4rXHRyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZztcbitcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xuK1x0dGNsX3JpbmcgPSBcdTAwMjZkcC1cdTAwM2VoYWwtXHUwMDNlc3JuZ19saXN0W3R4X3JpbmctXHUwMDNldGNsX2RhdGFfcmluZy5yaW5nX2lkXTtcbitcbitcdHdoaWxlICgxKSB7XG4rXHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCxcbitcdFx0XHRcdCAgICAgIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuK1x0XHRcdGJyZWFrO1xuK1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1xuK1x0XHRzcGluX2xvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4rXHRcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcbitcdFx0aWYgKG51bV9mcmVlID09IDApIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XG4rXHRcdGlmICghc2tiKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXG4rXHRcdGF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4rXG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdH1cbitcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAxOjUwLjY4OTgwMDc1N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMDA2NjczODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBsaWNhdGlvbnMgb2YgYSBXaS1GaSBEcml2ZXIgUGF0Y2ggaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBtb2RpZnlpbmcgdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXJzLiBJdCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgKGB3YWtlX3R4X2xvY2tgKSB0byB0aGUgYGRwX3R4X3JpbmdgIHN0cnVjdCBhbmQgaW5jbHVkZXMgYHdha2VfdHhfcXVldWVgIGNhbGxiYWNrcyBmb3IgYm90aCBkcml2ZXJzLiBUaGUgYGdldF9yaW5nX3NlbGVjdG9yYCBmdW5jdGlvbiBhbHNvIGNoYW5nZWQgdG8gYWNjZXB0IGB1OCBhY2AgaW5zdGVhZCBvZiBgc3RydWN0IHNrX2J1ZmYgKnNrYmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gSSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGxpa2UgUUVNVT9cblxuU2luY2UgSSdtIGRlYWxpbmcgd2l0aCBgYXRoMTFrYCBhbmQgYGF0aDEya2AsIHdoaWNoIGFyZSBRdWFsY29tbSBXaS1GaSBkcml2ZXJzLCBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGV5IGFyZSBQQ0kgb3IgQUhCIGRldmljZXMuIEFuZCB0aGUgYW5zd2VyIGlzLCB5ZXMsIHRoZXkgYXJlLCB1c3VhbGx5IHBoeXNpY2FsIFBDSWUgb3IgQUhCLiBTbywgdGhlIGNvcmUgcXVlc3Rpb24gYmVjb21lczogY2FuIEkgZWZmZWN0aXZlbHkgZW11bGF0ZSBvciBmdXp6IHRoZXNlIGRyaXZlcnMgaW4gdGhlIGFic2VuY2Ugb2YgdGhlIGFjdHVhbCBoYXJkd2FyZT9cblxuR2VuZXJhbGx5IHNwZWFraW5nLCB3aGVuIGl0IGNvbWVzIHRvIFdpLUZpLCB0aGVyZSBhcmUgc29tZSBzb2Z0d2FyZSBlbXVsYXRvcnMgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGFyZSBkZXNpZ25lZCBmb3IgaGFyZHdhcmUuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBjaGFsbGVuZ2VzIHdpdGggdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGFyZW4ndCB0eXBpY2FsbHkgd2VsbC1lbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IGhpdHMgaG9tZS4gYGF0aDExa2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJL0FIQiBXaS1GaSBkcml2ZXIsIGRlc2lnbmVkIGZvciBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4L2JlIGRldmljZXMuXG5cblNvLCB0aGUgcmVhbCBxdWVzdGlvbiBib2lscyBkb3duIHRvOiBpcyB0aGVyZSBhIHJlYXNvbmFibGUgY2hhbmNlIG9mIGZ1enppbmcgdGhpcyBpbiBRRU1VPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVycyBvZnRlbiByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlLiBJIGNhbiB0aGluayBvZiBgbWFjODAyMTFfaHdzaW1gLCBhbmQgcG9zc2libHkgYGZtYWNgLCBidXQgYG1hYzgwMjExX2h3c2ltYCBpcyBhIHZpcnR1YWwgZHJpdmVyLCBub3QgYW4gZW11bGF0b3IgZm9yIGBhdGgxMWtgLiBXaGlsZSBzeXprYWxsZXIgaGFzIHNvbWUgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB0aGlzIGlzbid0IFVTQjsgaXQncyBQQ0kvQUhCLlxuXG5VbHRpbWF0ZWx5LCBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBgYXRoMTFrYCBvZmZlcnMgYW55IGtpbmQgb2YgdmlydHVhbCBvciBlbXVsYXRlZCBzdXBwb3J0LiBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBjb2RlYmFzZSBmb3IgbWVudGlvbnMgb2YgYGF0aDExa2AgYW5kIGBhdGgxMmtgIGNvbWJpbmVkIHdpdGggdGhlIGJ1cyB0eXBlcyB0aGV5IHVzZSwgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSB3YXkgdGhpcyBjb2RlIGNhbiBiZSB0ZXN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDowMTo1OS42OTA0NzE0NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3MTgxNTM0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfcGNpX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ5OnN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk1MC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEyOTY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0aDExa19wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVxcdC5pZF90YWJsZSA9IGF0aDExa19wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMjk5OlxcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzAwLVxcdC5yZW1vdmUgPSBhdGgxMWtfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MDI6MDEuNzYyMjkzMTY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgxNzc4NDA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipQQ0kgRHJpdmVyIENvbnNpZGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzLi4uIGl0J3MgYSBQQ0kgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJBbHJpZ2h0LCBQQ0kuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBsZXQncyBub3QgZ2V0IHR1bm5lbCB2aXNpb24uXCIgSSBpbW1lZGlhdGVseSBzdGFydCB0byB0aGluayBhYm91dCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBXZSdyZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUsIHNvIHRoZSBkYXRhIHRyYW5zZmVyIGJldHdlZW4gdGhlIENQVSBhbmQgdGhlIFBDSSBkZXZpY2UsIGFzIHdlbGwgYXMgYW55IG90aGVycywgaXMgdGhlIGltcG9ydGFudCBiaXQuIFRoaXMgZHJpdmVyIGlzIGhhbmRsaW5nIHRoYXQgZGF0YSB0cmFuc2Zlci5cblxuQW5kIHRoYXQncyB3aGVuIGl0IGhpdHMgbWU6IFwiV2hhdCBhYm91dCB0aGUgQUhCP1wiIFRoZSBQQ0kgYnVzIGlzIHRoZSBzdGFuZGFyZCBoZXJlLCBzbyB0aGF0IG1lYW5zIHRoZSBBSEIgYnVzIGlzIHRoZSBoYXJkd2FyZSBjb25uZWN0aW9uIHRvIHRoZSByZXN0IG9mIHRoZSBib2FyZC4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgZXZlbiB0aG91Z2ggdGhpcyBpcyBhIFBDSSBkcml2ZXIsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBzeXN0ZW0tb24tY2hpcCAoU29DKSBpbmZyYXN0cnVjdHVyZS4gU3BlY2lmaWNhbGx5LCBob3cgZG9lcyB0aGlzIGRyaXZlciBpbnRlcmZhY2Ugd2l0aCB0aGUgQWR2YW5jZWQgSGlnaC1wZXJmb3JtYW5jZSBCdXMgKEFIQiksIG9yIGFueSBvdGhlciBwb3RlbnRpYWwgaW50ZXJjb25uZWN0PyBJcyB0aGVyZSBhbiBpbnRlcm1lZGlhcnkgYnJpZGdlLCBtZW1vcnktbWFwcGVkIEkvTywgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgKERNQSksIG9yIHNvbWV0aGluZyBlbHNlPyBVbmRlcnN0YW5kaW5nIHRoYXQgaW50ZXJjb25uZWN0IGlzIGNydWNpYWwgdG8gdHJ1bHkgdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCBhbmQgaG93IGl0IHdpbGwgcGVyZm9ybS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc5NiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAyOjA1LjU4MDA3OTYyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQyNzEyNTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDExa19haGJfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMDczPXN0YXRpYyBpbnQgYXRoMTFrX2FoYl9md19yZXNvdXJjZV9kZWluaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExMDg6c3RhdGljIGludCBhdGgxMWtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM9MTMwMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhdGgxMWtfYWhiX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTMwNy1cXHR9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTMwODpcXHQucHJvYmUgPSBhdGgxMWtfYWhiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTMwOS1cXHQucmVtb3ZlID0gYXRoMTFrX2FoYl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE0OjAyOjA3LjMyMjc5NzA1OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMzY2MjA3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciBhdGgxMWsvYXRoMTJrIERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBhIFBDSSBhbmQgQUhCIGRyaXZlci4gVGhlIHByb21wdCBzYXlzIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIHRvdWNoZXMgY29kZSB0aGF0J3MgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIG9yIGlmIGl0J3Mgc3BlY2lmaWMgdG8gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHRob3NlIGVudmlyb25tZW50cy4gU3BlY2lmaWNhbGx5LCB0aGUgcHJvbXB0IG1lbnRpb25zIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFVzIGFzIGV4YW1wbGVzIHRvIGZsYWcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBhcmUgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlcnMsIGRldmVsb3BlZCBieSBRdWFsY29tbSBBdGhlcm9zIGZvciA4MDIuMTFheC9iZSwgYW5kIHRoZXkgcmVseSBvbiBlaXRoZXIgUENJZSBvciBBSEIgaGFyZHdhcmUuIFRoZXNlIGFyZSB0eXBpY2FsbHkgbm90IGVtdWxhdGVkIHByb3Blcmx5IGluIHN0YW5kYXJkIFFFTVUuIFRoZXkgcmVxdWlyZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gb3BlcmF0ZSBjb3JyZWN0bHkuXG5cbkkgYnJpZWZseSBjb25zaWRlcmVkIGlmIFN5emthbGxlciBjb3VsZCBzb21laG93IGZ1enogdGhpcyB1c2luZyBpdHMgUENJIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuIEl0ICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIChgc3l6X3BjaV9kZXZpY2VfYWRkYCksIGJ1dCBpdCdzIHByZXR0eSBsaW1pdGVkIGFuZCBnZW5lcmFsbHkgZG9lc24ndCBkaXZlIGRlZXAgaW50byBjb21wbGV4IFdpLUZpIE1BQy9QSFkgbG9naWMgd2l0aG91dCBzcGVjaWZpYyB0YXJnZXRpbmcgb3IgaGFyZHdhcmUgZW11bGF0aW9uLiBIb3dldmVyLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgY29tcG9uZW50cyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUuIFdpLUZpIGRyaXZlcnMsIGluIHRoaXMgc2NlbmFyaW8sIHNlZW0gdG8gZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnkgb2YgXCJub3QgZW11bGF0ZWQuXCJcblxuSSB0b29rIGEgcXVpY2sgbG9vayB0byBzZWUgaWYgU3l6a2FsbGVyICpkb2VzKiBoYXZlIGFueSBob29rcyBpbnRvIHRoZXNlIGRyaXZlcnMgZGlyZWN0bHkuIEl0IGRvZXMgaGF2ZSBgc3lzL2xpbnV4L3NvY2tldF9uZXRsaW5rX2dlbmVyaWNfbmw4MDIxMS50eHRgLCB3aGljaCBmdXp6ZWQgbmw4MDIxMSwgYnV0IHRoYXQgdXN1YWxseSBoaXRzIGBtYWM4MDIxMV9od3NpbWAgb3IgYGNmZzgwMjExYCBjb3JlIGFuZCBpcyBub3QgbGlrZWx5IHRvIGhpdCBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzIHVubGVzcyB0aGUgaGFyZHdhcmUgaXMgcHJlc2VudCBpbiB0aGUgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGUgcmVsZXZhbnQgaGFyZHdhcmUgaXMgKm5vdCogcHJlc2VudCBpbiB0aGUgR0NFL1FFTVUgZW52aXJvbm1lbnQsIHRoZSBjb2RlIHBhdGhzIHJlbGF0ZWQgdG8gYGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZWAgd2lsbCBuZXZlciBiZSBleGVjdXRlZC5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBwYXRjaCBtb2RpZmllcyB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyAoYXRoMTFrL2F0aDEyayksIHdoaWNoIG5lY2Vzc2l0YXRlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0J3MgYWJzZW50IGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM5NiwiT3V0cHV0VG9rZW5zIjo5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNDowMjoxNS40NTk0MjAxMDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgYW5kIGF0aDEyayBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIFdpLUZpIGRyaXZlcnMgZm9yIFF1YWxjb21tIEF0aGVyb3MgaGFyZHdhcmUuIFRoZXNlIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGFuZCBhdGgxMmsgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBBdGhlcm9zIGhhcmR3YXJlLiBUaGVzZSByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTQ6MDI6MTUuNDU5NDQ2Njg2WiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowp52qc[1] Phase: Running StartedAt: 2026-08-07 14:44:10 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp52qc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-07 14:44:10 +0000 UTC FinishedAt: 2026-08-07 14:44:15 +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,}