Name: series-workflowjrlwn Phase: Failed StartedAt: 2026-07-25 08:45:51 +0000 UTC FinishedAt: 2026-07-25 09:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrlwn[0] Phase: Succeeded StartedAt: 2026-07-25 08:45:51 +0000 UTC FinishedAt: 2026-07-25 09:12:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrlwn[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 08:45:51 +0000 UTC FinishedAt: 2026-07-25 09:12:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA5OjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwOToxMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZiNzg4MmQ4YmVkODJiYTdiOWVhNzU2ZjU5YWUxMDI0OGU5MjU5ZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwOToxMTozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDVkLi4yZTU5NzhlYzJiMDViYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG5AQCAtMTA4Nyw2ICYjNDM7MTA4Nyw3IEBAIGludCBhdGgxMWtfZHBfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZW51bV90eF9yaW5nczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWRyX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS50eGJ1Zl9pZHIpO1xuIFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X2lkcl9sb2NrKTtcbiYjNDM7XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5pbmRleCA4NGY2NjgzOWYwYzZkZS4uNmQ5OTUwMWFhMjY5YzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuQEAgLTg3LDYgJiM0Mzs4Nyw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcbiBcdHN0cnVjdCBpZHIgdHhidWZfaWRyO1xuIFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xuIFx0c3BpbmxvY2tfdCB0eF9pZHJfbG9jaztcbiYjNDM7XHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXG4mIzQzO1x0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XG4gXHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcbiBcdGludCB0eF9zdGF0dXNfaGVhZDtcbiBcdGludCB0eF9zdGF0dXNfdGFpbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcbmluZGV4IGNhYzk3MGM5MjgwNmEyLi4wODNhY2E4ZmYzNTViYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5AQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBpbnQgYXRoMTFrX2RwX3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX3ZpZiAqYXJ2aWYsXG4gXG4gXHRwb29sX2lkID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikgXHUwMDI2IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpO1xuIFxuLVx0cmluZ19zZWxlY3RvciA9IGFiLVx1MDAzZWh3X3BhcmFtcy5od19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiKTtcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbmluZGV4IDkzZjlhMDNjNDhkYzBmLi44YTI4YzFkNGMxN2I2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXG5AQCAtODc2LDI4ICYjNDM7ODc2LDE0IEBAIHN0YXRpYyBib29sIGF0aDExa19od193Y242ODU1X3J4X2Rlc2NfZ2V0X2xkcGNfc3VwcG9ydChzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpXG4gXHRcdFx0IF9fbGUzMl90b19jcHUoZGVzYy1cdTAwM2V1LndjbjY4NTUubXNkdV9zdGFydC5pbmZvMikpO1xuIH1cbiBcbi1zdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLXtcbi1cdC8qIExldCB0aGUgZGVmYXVsdCByaW5nIHNlbGVjdGlvbiBiZSBiYXNlZCBvbiBjdXJyZW50IHByb2Nlc3NvclxuLVx0ICogbnVtYmVyLCB3aGVyZSBvbmUgb2YgdGhlIDMgdGNsIHJpbmdzIGFyZSBzZWxlY3RlZCBiYXNlZCBvblxuLVx0ICogdGhlIHNtcF9wcm9jZXNzb3JfaWQoKS4gSW4gY2FzZSB0aGF0IHJpbmdcbi1cdCAqIGlzIGZ1bGwvYnVzeSwgd2UgcmVzb3J0IHRvIG90aGVyIGF2YWlsYWJsZSByaW5ncy5cbi1cdCAqIElmIGFsbCByaW5ncyBhcmUgZnVsbCwgd2UgZHJvcCB0aGUgcGFja2V0LlxuLVx0ICpcbi1cdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXG4tXHQgKi9cbiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfaHdfaXBxODA3NF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3IodTggYWMpXG4mIzQzO3tcbiBcdHJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7XG4gfVxuIFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3N0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxuIHtcbi1cdC8qIFNlbGVjdCB0aGUgVENMIHJpbmcgYmFzZWQgb24gdGhlIGZsb3cgaGFzaCBvZiB0aGUgU0tCIGluc3RlYWRcbi1cdCAqIG9mIENQVSBJRC4gU2luY2UgYXBwbGljYXRpb25zIHB1bXBpbmcgdGhlIHRyYWZmaWMgY2FuIGJlIHNjaGVkdWxlZFxuLVx0ICogb24gbXVsdGlwbGUgQ1BVcywgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCBwYWNrZXRzIG9mIHRoZSBzYW1lIGZsb3dcbi1cdCAqIGNvdWxkIGVuZCBvbiBkaWZmZXJlbnQgVENMIHJpbmdzLCB0aGlzIGNvdWxkIHNvbWV0aW1lcyByZXN1bHRzIGluXG4tXHQgKiBhbiBvdXQgb2Ygb3JkZXIgYXJyaXZhbCBvZiB0aGUgcGFja2V0cyBhdCB0aGUgcmVjZWl2ZXIuXG4tXHQgKi9cbi1cdHJldHVybiBza2JfZ2V0X2hhc2goc2tiKTtcbiYjNDM7XHRyZXR1cm4gYWM7XG4gfVxuIFxuIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaFxuaW5kZXggNDk5NjUzNmZiZDE0ZjEuLmI2YmM4YjcyZDgxMjBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbkBAIC0yNzMsNyAmIzQzOzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHtcbiBcdHUxNiAoKm1wZHVfaW5mb19nZXRfcGVlcmlkKShzdHJ1Y3QgaGFsX3J4X21wZHVfaW5mbyAqbXBkdV9pbmZvKTtcbiBcdGJvb2wgKCpyeF9kZXNjX21hY19hZGRyMl92YWxpZCkoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcbiBcdHU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcbi1cdHUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiYjNDM7XHR1MzIgKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xuIH07XG4gXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkZS4uOTgxM2Y3OTIzYzM0ZjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5AQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDU5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuJiM0MztcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuJiM0MztcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4mIzQzO1x0fTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4mIzQzO1x0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XG4mIzQzO1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdHUzMiByaW5nX3NlbGVjdG9yO1xuJiM0MztcdGludCBudW1fZnJlZTtcbiYjNDM7XHR1OCByaW5nX2lkO1xuJiM0MztcbiYjNDM7XHRpZiAoIWFyKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXHUwMDNlYWMpO1xuJiM0MztcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzO1xuJiM0MztcdHR4X3JpbmcgPSBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkcC50eF9yaW5nW3JpbmdfaWRdO1xuJiM0MztcdHRjbF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsLnNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4mIzQzO1xuJiM0MztcdHdoaWxlICgxKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xuJiM0MztcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRhdGgxMWtfbWFjX29wX3R4KGh3LCBcdTAwMjZjb250cm9sLCBza2IpO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTFrX21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4mIzQzO1x0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcbiBcdC5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0YXJ0LFxuIFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCxcbiBcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuaW5kZXggYWY1ZjExZmMxZDg0YWIuLjNkNDZjZmJmMGExYzNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbkBAIC0xNTM5LDYgJiM0MzsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5pbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcbiBcdHU4IHRjbF9kYXRhX3JpbmdfaWQ7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfZGF0YV9yaW5nO1xuIFx0c3RydWN0IGRwX3NybmcgdGNsX2NvbXBfcmluZztcbiYjNDM7XHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXG4mIzQzO1x0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XG4gXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcbiBcdGludCB0eF9zdGF0dXNfaGVhZDtcbiBcdGludCB0eF9zdGF0dXNfdGFpbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuaW5kZXggYTE2NDU2M2ZmZjI4OWMuLjA3MWNiNWQzMDkzMTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICYjNDM7MzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLFxuIFx0ZWxzZVxuIFx0XHRyZXR1cm4gKChzcm5nLVx1MDAzZXJpbmdfc2l6ZSAtIGhwICYjNDM7IHRwKSAvIHNybmctXHUwMDNlZW50cnlfc2l6ZSkgLSAxO1xuIH1cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XG4gXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaGFsX3NybmcgKnNybmcpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCA4NmZiOGI3MTk2MTM1MC4uNjVjYWE3YTIzNDlmMTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxuQEAgLTI0Myw3ICYjNDM7MjQzLDcgQEAgc3RydWN0IGF0aDEya19od19vcHMge1xuIFx0aW50ICgqbWFjX2lkX3RvX3BkZXZfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7XG4gXHRpbnQgKCptYWNfaWRfdG9fc3JuZ19pZCkoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LCBpbnQgbWFjX2lkKTtcbiBcdGludCAoKnJ4ZG1hX3Jpbmdfc2VsX2NvbmZpZykoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4tXHR1OCAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiYjNDM7XHR1OCAoKmdldF9yaW5nX3NlbGVjdG9yKSh1OCBhYyk7XG4gXHRib29sICgqZHBfc3JuZ19pc190eF9jb21wX3JpbmcpKGludCByaW5nX251bSk7XG4gXHRib29sICgqaXNfZnJhbWVfbGlua19hZ25vc3RpYykoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbmluZGV4IGQyNzQ5ZGU0NDU1MzRhLi43NDM1OWU4ZWVhNDcxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5AQCAtMTExLDcgJiM0MzsxMTEsNyBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxuIFx0ICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuXG4gXHQgKiBUT0RPOiBBZGQgdGhyb3R0bGluZyBsb2dpYyB3aGVuIGFsbCByaW5ncyBhcmUgZnVsbFxuIFx0ICovXG4tXHRyaW5nX3NlbGVjdG9yID0gZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2IpO1xuJiM0MztcdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcbiBcbiB0Y2xfcmluZ19zZWw6XG4gXHR0Y2xfcmluZ19yZXRyeSA9IGZhbHNlO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuaW5kZXggZDlmZGQyZmM4Mjk4NmEuLmFmMGEzYmE4MDVkZGRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbkBAIC00OSw3ICYjNDM7NDksNyBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfcWNuOTI3NChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl9xY245Mjc0KHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NCh1OCBhYylcbiB7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbkBAIC04Myw5ICYjNDM7ODMsOSBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfd2NuNzg1MChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXG4gXHRyZXR1cm4gbWFjX2lkO1xuIH1cbiBcbi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7c3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl93Y243ODUwKHU4IGFjKVxuIHtcbi1cdHJldHVybiBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTtcbiYjNDM7XHRyZXR1cm4gYWM7XG4gfVxuIFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbkBAIC0xMTAwLDkgJiM0MzsxMTAwLDgzIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtXHUwMDNldmlmKTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGF0aDEya19od190b19haChodyk7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XG4mIzQzO1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbiYjNDM7XHR9O1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSB0eHEtXHUwMDNldmlmO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuJiM0MztcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuJiM0MztcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4mIzQzO1x0c3RydWN0IGF0aDEya19zdGEgKmFoc3RhO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0c3RydWN0IGF0aDEyayAqYXI7XG4mIzQzO1x0dTggcmluZ19zZWxlY3RvcjtcbiYjNDM7XHRpbnQgbnVtX2ZyZWU7XG4mIzQzO1x0dTggcmluZ19pZDtcbiYjNDM7XHR1OCBsaW5rX2lkO1xuJiM0MztcbiYjNDM7XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSBcdTAwMjZcdTAwMjYgdHhxLVx1MDAzZXN0YSkge1xuJiM0MztcdFx0YWhzdGEgPSBhdGgxMmtfc3RhX3RvX2Foc3RhKHR4cS1cdTAwM2VzdGEpO1xuJiM0MztcdFx0bGlua19pZCA9IGFoc3RhLVx1MDAzZWFzc29jX2xpbmtfaWQ7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGxpbmtfaWQgPSBhaHZpZi1cdTAwM2VkZWZsaW5rLmxpbmtfaWQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1xuJiM0MztcdGFydmlmID0gcmN1X2RlcmVmZXJlbmNlKGFodmlmLVx1MDAzZWxpbmtbbGlua19pZF0pO1xuJiM0MztcdGlmICghYXJ2aWYgfHwgIWFydmlmLVx1MDAzZWFyKSB7XG4mIzQzO1x0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGFyID0gYXJ2aWYtXHUwMDNlYXI7XG4mIzQzO1x0ZHAgPSBhci1cdTAwM2VhYi1cdTAwM2VkcDtcbiYjNDM7XG4mIzQzO1x0cmluZ19zZWxlY3RvciA9IGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vod19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVx1MDAzZWFjKTtcbiYjNDM7XHRyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZztcbiYjNDM7XHR0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tyaW5nX2lkXTtcbiYjNDM7XHR0Y2xfcmluZyA9IFx1MDAyNmRwLVx1MDAzZWhhbC1cdTAwM2Vzcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAoMSkge1xuJiM0MztcdFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILFxuJiM0MztcdFx0XHRcdCAgICAgIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKG51bV9mcmVlID09IDApIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcbiYjNDM7XHRcdGlmICghc2tiKSB7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YXRoMTJrX3dpZmk3X21hY19vcF90eChodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbiYjNDM7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbiYjNDM7XHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDk6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiNzg4MmQ4YmVkODJiYTdiOWVhNzU2ZjU5YWUxMDI0OGU5MjU5ZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwOToxMTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwppbmRleCBmMzg5Yjk3YWNiZGQ1ZC4uMmU1OTc4ZWMyYjA1YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKQEAgLTEwODcsNiAmIzQzOzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFiLSZndDtod19wYXJhbXMuaGFsX3BhcmFtcy0mZ3Q7bnVtX3R4X3JpbmdzOyBpJiM0MzsmIzQzOykgewogCQlpZHJfaW5pdCgmYW1wO2RwLSZndDt0eF9yaW5nW2ldLnR4YnVmX2lkcik7CiAJCXNwaW5fbG9ja19pbml0KCZhbXA7ZHAtJmd0O3R4X3JpbmdbaV0udHhfaWRyX2xvY2spOwomIzQzOwkJc3Bpbl9sb2NrX2luaXQoJmFtcDtkcC0mZ3Q7dHhfcmluZ1tpXS53YWtlX3R4X2xvY2spOwogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTsKIAogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKaW5kZXggODRmNjY4MzlmMGM2ZGUuLjZkOTk1MDFhYTI2OWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oCkBAIC04Nyw2ICYjNDM7ODcsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7CiAJc3RydWN0IGlkciB0eGJ1Zl9pZHI7CiAJLyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqLwogCXNwaW5sb2NrX3QgdHhfaWRyX2xvY2s7CiYjNDM7CS8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi8KJiM0MzsJc3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7CiAJc3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7CiAJaW50IHR4X3N0YXR1c19oZWFkOwogCWludCB0eF9zdGF0dXNfdGFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYwppbmRleCBjYWM5NzBjOTI4MDZhMi4uMDgzYWNhOGZmMzU1YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmMKQEAgLTEwOCw3ICYjNDM7MTA4LDcgQEAgaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLAogCiAJcG9vbF9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpICZhbXA7IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpOwogCi0JcmluZ19zZWxlY3RvciA9IGFiLSZndDtod19wYXJhbXMuaHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3Rvcihza2IpOwomIzQzOwlyaW5nX3NlbGVjdG9yID0gYWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTsKIAogdGNsX3Jpbmdfc2VsOgogCXRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMKaW5kZXggOTNmOWEwM2M0OGRjMGYuLjhhMjhjMWQ0YzE3YjZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jCkBAIC04NzYsMjggJiM0Mzs4NzYsMTQgQEAgc3RhdGljIGJvb2wgYXRoMTFrX2h3X3djbjY4NTVfcnhfZGVzY19nZXRfbGRwY19zdXBwb3J0KHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYykKIAkJCSBfX2xlMzJfdG9fY3B1KGRlc2MtJmd0O3Uud2NuNjg1NS5tc2R1X3N0YXJ0LmluZm8yKSk7CiB9CiAKLXN0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpCi17Ci0JLyogTGV0IHRoZSBkZWZhdWx0IHJpbmcgc2VsZWN0aW9uIGJlIGJhc2VkIG9uIGN1cnJlbnQgcHJvY2Vzc29yCi0JICogbnVtYmVyLCB3aGVyZSBvbmUgb2YgdGhlIDMgdGNsIHJpbmdzIGFyZSBzZWxlY3RlZCBiYXNlZCBvbgotCSAqIHRoZSBzbXBfcHJvY2Vzc29yX2lkKCkuIEluIGNhc2UgdGhhdCByaW5nCi0JICogaXMgZnVsbC9idXN5LCB3ZSByZXNvcnQgdG8gb3RoZXIgYXZhaWxhYmxlIHJpbmdzLgotCSAqIElmIGFsbCByaW5ncyBhcmUgZnVsbCwgd2UgZHJvcCB0aGUgcGFja2V0LgotCSAqCi0JICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGwKLQkgKi8KJiM0MztzdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYykKJiM0Mzt7CiAJcmV0dXJuIHNtcF9wcm9jZXNzb3JfaWQoKTsKIH0KIAotc3RhdGljIHUzMiBhdGgxMWtfaHdfd2NuNjc1MF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYykKIHsKLQkvKiBTZWxlY3QgdGhlIFRDTCByaW5nIGJhc2VkIG9uIHRoZSBmbG93IGhhc2ggb2YgdGhlIFNLQiBpbnN0ZWFkCi0JICogb2YgQ1BVIElELiBTaW5jZSBhcHBsaWNhdGlvbnMgcHVtcGluZyB0aGUgdHJhZmZpYyBjYW4gYmUgc2NoZWR1bGVkCi0JICogb24gbXVsdGlwbGUgQ1BVcywgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCBwYWNrZXRzIG9mIHRoZSBzYW1lIGZsb3cKLQkgKiBjb3VsZCBlbmQgb24gZGlmZmVyZW50IFRDTCByaW5ncywgdGhpcyBjb3VsZCBzb21ldGltZXMgcmVzdWx0cyBpbgotCSAqIGFuIG91dCBvZiBvcmRlciBhcnJpdmFsIG9mIHRoZSBwYWNrZXRzIGF0IHRoZSByZWNlaXZlci4KLQkgKi8KLQlyZXR1cm4gc2tiX2dldF9oYXNoKHNrYik7CiYjNDM7CXJldHVybiBhYzsKIH0KIAogY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmgKaW5kZXggNDk5NjUzNmZiZDE0ZjEuLmI2YmM4YjcyZDgxMjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oCkBAIC0yNzMsNyAmIzQzOzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHsKIAl1MTYgKCptcGR1X2luZm9fZ2V0X3BlZXJpZCkoc3RydWN0IGhhbF9yeF9tcGR1X2luZm8gKm1wZHVfaW5mbyk7CiAJYm9vbCAoKnJ4X2Rlc2NfbWFjX2FkZHIyX3ZhbGlkKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpOwogCXU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTsKLQl1MzIgKCpnZXRfcmluZ19zZWxlY3Rvcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7CiYjNDM7CXUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKSh1OCBhYyk7CiB9OwogCiBleHRlcm4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwppbmRleCAyZDU1Y2RjNGQxNjVkZS4uOTgxM2Y3OTIzYzM0ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwpAQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDU5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKJiM0MzsJCQkJCXN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsKJiM0MzsJCS5zdGEgPSB0eHEtJmd0O3N0YSwKJiM0MzsJfTsKJiM0MzsJc3RydWN0IGF0aDExayAqYXIgPSBody0mZ3Q7cHJpdjsKJiM0MzsJc3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7CiYjNDM7CXN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CXUzMiByaW5nX3NlbGVjdG9yOwomIzQzOwlpbnQgbnVtX2ZyZWU7CiYjNDM7CXU4IHJpbmdfaWQ7CiYjNDM7CiYjNDM7CWlmICghYXIpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXJpbmdfc2VsZWN0b3IgPSBhci0mZ3Q7YWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHR4cS0mZ3Q7YWMpOwomIzQzOwlyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGFyLSZndDthYi0mZ3Q7aHdfcGFyYW1zLmhhbF9wYXJhbXMtJmd0O251bV90eF9yaW5nczsKJiM0MzsJdHhfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtkcC50eF9yaW5nW3JpbmdfaWRdOwomIzQzOwl0Y2xfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtoYWwuc3JuZ19saXN0W3R4X3JpbmctJmd0O3RjbF9kYXRhX3JpbmcucmluZ19pZF07CiYjNDM7CiYjNDM7CXdoaWxlICgxKSB7CiYjNDM7CQlpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsCiYjNDM7CQkJCSAgICAgICZhbXA7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CQludW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItJmd0O2FiLCB0Y2xfcmluZywgdHJ1ZSk7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJCWlmIChudW1fZnJlZSA9PSAwKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7CiYjNDM7CQlpZiAoIXNrYikgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWF0aDExa19tYWNfb3BfdHgoaHcsICZhbXA7Y29udHJvbCwgc2tiKTsKJiM0MzsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMWtfb3BzID0gewogCS50eAkJCQk9IGF0aDExa19tYWNfb3BfdHgsCi0JLndha2VfdHhfcXVldWUJCQk9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSwKJiM0MzsJLndha2VfdHhfcXVldWUJCQk9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSwKIAkuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCwKIAkuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLAogCS5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jCmluZGV4IGFmNWYxMWZjMWQ4NGFiLi4zZDQ2Y2ZiZjBhMWMzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYwpAQCAtMTUzOSw2ICYjNDM7MTUzOSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiAJfQogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFiLSZndDtod19wYXJhbXMtJmd0O21heF90eF9yaW5nOyBpJiM0MzsmIzQzOykgewomIzQzOwkJc3Bpbl9sb2NrX2luaXQoJmFtcDtkcC0mZ3Q7dHhfcmluZ1tpXS53YWtlX3R4X2xvY2spOwogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTsKIAogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKaW5kZXggZjhjZmM3YmIyOWRkNzguLjY4ZDIwMjBiZTliODY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oCkBAIC01OCw2ICYjNDM7NTgsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7CiAJdTggdGNsX2RhdGFfcmluZ19pZDsKIAlzdHJ1Y3QgZHBfc3JuZyB0Y2xfZGF0YV9yaW5nOwogCXN0cnVjdCBkcF9zcm5nIHRjbF9jb21wX3Jpbmc7CiYjNDM7CS8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi8KJiM0MzsJc3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7CiAJc3RydWN0IGhhbF93Ym1fY29tcGxldGlvbl9yaW5nX3R4ICp0eF9zdGF0dXM7CiAJaW50IHR4X3N0YXR1c19oZWFkOwogCWludCB0eF9zdGF0dXNfdGFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jCmluZGV4IGExNjQ1NjNmZmYyODljLi4wNzFjYjVkMzA5MzEwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jCkBAIC0zOTAsNiAmIzQzOzM5MCw3IEBAIGludCBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBoYWxfc3JuZyAqc3JuZywKIAllbHNlCiAJCXJldHVybiAoKHNybmctJmd0O3Jpbmdfc2l6ZSAtIGhwICYjNDM7IHRwKSAvIHNybmctJmd0O2VudHJ5X3NpemUpIC0gMTsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKTsKIAogdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYiwKIAkJCQkgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCmluZGV4IDg2ZmI4YjcxOTYxMzUwLi42NWNhYTdhMjM0OWYxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaApAQCAtMjQzLDcgJiM0MzsyNDMsNyBAQCBzdHJ1Y3QgYXRoMTJrX2h3X29wcyB7CiAJaW50ICgqbWFjX2lkX3RvX3BkZXZfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7CiAJaW50ICgqbWFjX2lkX3RvX3NybmdfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7CiAJaW50ICgqcnhkbWFfcmluZ19zZWxfY29uZmlnKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTsKLQl1OCAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKJiM0MzsJdTggKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpOwogCWJvb2wgKCpkcF9zcm5nX2lzX3R4X2NvbXBfcmluZykoaW50IHJpbmdfbnVtKTsKIAlib29sICgqaXNfZnJhbWVfbGlua19hZ25vc3RpYykoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsCiAJCQkJICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKaW5kZXggZDI3NDlkZTQ0NTUzNGEuLjc0MzU5ZThlZWE0NzExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jCkBAIC0xMTEsNyAmIzQzOzExMSw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphCiAJICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuCiAJICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGwKIAkgKi8KLQlyaW5nX3NlbGVjdG9yID0gZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7aHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3Rvcihza2IpOwomIzQzOwlyaW5nX3NlbGVjdG9yID0gZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7aHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7CiAKIHRjbF9yaW5nX3NlbDoKIAl0Y2xfcmluZ19yZXRyeSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCmluZGV4IGQ5ZmRkMmZjODI5ODZhLi5hZjBhM2JhODA1ZGRkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwpAQCAtNDksNyAmIzQzOzQ5LDcgQEAgYXRoMTJrX3dpZmk3X2h3X21hY19pZF90b19zcm5nX2lkX3FjbjkyNzQoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQoc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQodTggYWMpCiB7CiAJcmV0dXJuIHNtcF9wcm9jZXNzb3JfaWQoKTsKIH0KQEAgLTgzLDkgJiM0Mzs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywKIAlyZXR1cm4gbWFjX2lkOwogfQogCi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAoc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAodTggYWMpCiB7Ci0JcmV0dXJuIHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpOwomIzQzOwlyZXR1cm4gYWM7CiB9CiAKIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSkKQEAgLTExMDAsOSAmIzQzOzExMDAsODMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiYjNDM7CQkJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtJmd0O3ZpZik7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2h3X3RvX2FoKGh3KTsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7CiYjNDM7CQkuc3RhID0gdHhxLSZndDtzdGEsCiYjNDM7CX07CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSB0eHEtJmd0O3ZpZjsKJiM0MzsJc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWY7CiYjNDM7CXN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nOwomIzQzOwlzdHJ1Y3QgaGFsX3NybmcgKnRjbF9yaW5nOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGE7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHAgKmRwOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlzdHJ1Y3QgYXRoMTJrICphcjsKJiM0MzsJdTggcmluZ19zZWxlY3RvcjsKJiM0MzsJaW50IG51bV9mcmVlOwomIzQzOwl1OCByaW5nX2lkOwomIzQzOwl1OCBsaW5rX2lkOwomIzQzOwomIzQzOwlpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSAmYW1wOyZhbXA7IHR4cS0mZ3Q7c3RhKSB7CiYjNDM7CQlhaHN0YSA9IGF0aDEya19zdGFfdG9fYWhzdGEodHhxLSZndDtzdGEpOwomIzQzOwkJbGlua19pZCA9IGFoc3RhLSZndDthc3NvY19saW5rX2lkOwomIzQzOwl9IGVsc2UgewomIzQzOwkJbGlua19pZCA9IGFodmlmLSZndDtkZWZsaW5rLmxpbmtfaWQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwomIzQzOwlhcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi0mZ3Q7bGlua1tsaW5rX2lkXSk7CiYjNDM7CWlmICghYXJ2aWYgfHwgIWFydmlmLSZndDthcikgewomIzQzOwkJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJYXIgPSBhcnZpZi0mZ3Q7YXI7CiYjNDM7CWRwID0gYXItJmd0O2FiLSZndDtkcDsKJiM0MzsKJiM0MzsJcmluZ19zZWxlY3RvciA9IGRwLSZndDtod19wYXJhbXMtJmd0O2h3X29wcy0mZ3Q7Z2V0X3Jpbmdfc2VsZWN0b3IodHhxLSZndDthYyk7CiYjNDM7CXJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7bWF4X3R4X3Jpbmc7CiYjNDM7CXR4X3JpbmcgPSAmYW1wO2RwLSZndDt0eF9yaW5nW3JpbmdfaWRdOwomIzQzOwl0Y2xfcmluZyA9ICZhbXA7ZHAtJmd0O2hhbC0mZ3Q7c3JuZ19saXN0W3R4X3JpbmctJmd0O3RjbF9kYXRhX3JpbmcucmluZ19pZF07CiYjNDM7CiYjNDM7CXdoaWxlICgxKSB7CiYjNDM7CQlpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsCiYjNDM7CQkJCSAgICAgICZhbXA7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CQludW1fZnJlZSA9IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItJmd0O2FiLCB0Y2xfcmluZywgdHJ1ZSk7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJCWlmIChudW1fZnJlZSA9PSAwKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7CiYjNDM7CQlpZiAoIXNrYikgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsICZhbXA7Y29udHJvbCwgc2tiKTsKJiM0MzsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHsKIAkudHgJCQkJPSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LAotCS53YWtlX3R4X3F1ZXVlCQkJPSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsCiYjNDM7CS53YWtlX3R4X3F1ZXVlCQkJPSBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUsCiAJLnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RhcnQsCiAJLnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RvcCwKIAkucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ4NgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogYXRoMTFrL2F0aDEyayBEcml2ZXIgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpdmVzIGludG8gdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGEgbmV3IGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIGFuZCBzb21lIGNoYW5nZXMgdG8gcmluZyBzZWxlY3Rpb24uICBUaGUgY29yZSBvZiB0aGUgaXNzdWUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBpcyB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxpa2UgbW9zdCBzcGVjaWFsaXplZCBoYXJkd2FyZSBkcml2ZXJzLCB0aGVzZSBhcmUgbGlrZWx5IGJvdW5kIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiAgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGF0JiMzOTtzIHRoZSBjYXNlLgoKTXkgdW5kZXJzdGFuZGluZyBvZiB0aGVzZSBkcml2ZXJzIGlzIHRoYXQgdGhleSBhcmUgUXVhbGNvbW0gQXRoZXJvcyBkcml2ZXJzIGZvciA4MDIuMTFheC9iZSBkZXZpY2VzLCBwcmltYXJpbHkgUENJIG9yIEFIQiBiYXNlZC4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgZGVkaWNhdGVkIHNvZnR3YXJlIGVtdWxhdGlvbiBsYXllciwgbGlrZSBhIGBtYWM4MDIxMV9od3NpbWAgZXF1aXZhbGVudCwgd2hpY2ggSSBrbm93IGlzIHNlcGFyYXRlLCB0aGVzZSBkcml2ZXJzIHdpbGwgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gIFRoZSBxdWVzdGlvbiBpczogY2FuIHdlIGZha2UgaXQgd2l0aCBhIHZpcnR1YWwgUENJIGRldmljZT8gU3l6a2FsbGVyLCBpbiBteSBleHBlcmllbmNlLCBkb2VzbiYjMzk7dCB1c3VhbGx5IG9mZmVyIHNwZWNpZmljIGVtdWxhdGlvbiBmb3IgcGFydGljdWxhciBXaS1GaSBjYXJkcy4KCkxldCBtZSBqdXN0IGNoZWNrIGZvciBhbnkgZXhpc3RpbmcgZW11bGF0aW9uIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSBpdHNlbGYuIEEgcXVpY2sgYGdyZXBgIGZvciBgYXRoMTFrYCBvciBgYXRoMTJrYCBzaG91bGQgc2hvdyBpZiB0aGVyZSYjMzk7cyBhbnkgdmlydHVhbCBkZXZpY2UgaW1wbGVtZW50YXRpb24gSSYjMzk7bSBtaXNzaW5nLiAgQnV0LCByZWFsaXN0aWNhbGx5LCBJIGRvbiYjMzk7dCBleHBlY3QgdG8gZmluZCBhbnl0aGluZy4KCldhaXQuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgY2xlYXIgZXhjbHVzaW9uOiAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkFuZCAqYmluZ28qISBUaGVzZSBgYXRoMTFrYCBhbmQgYGF0aDEya2AgZHJpdmVycyBhcmUgKmV4YWN0bHkqIHRoYXQuIFRoZXkgYXJlIHZlbmRvci1zcGVjaWZpYyAoUXVhbGNvbW0pLCBhbmQgdGhleSAqZG8qIHJlcXVpcmUgUENJZS9BSEIgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IFBDSS9BSEIgZGVwZW5kZW5jeTsgeWVzLCBgYXRoMTFrYCBoYXMgYHBjaS5jYCBhbmQgYGFoYi5jYCwgYW5kIGBhdGgxMmtgIGhhcyBgcGNpLmNgLgoKVGhlcmVmb3JlLCB0aGUgbGlrZWxpaG9vZCBvZiBiZWluZyBhYmxlIHRvIGZ1enogdGhlc2UgZWZmZWN0aXZlbHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFIGlzIGVzc2VudGlhbGx5IHplcm8uIENvbnNlcXVlbnRseSwgdGhlIGFuc3dlciBpcyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LiBJIHNob3VsZCB1c2UgdGhlIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBkb3VibGUgY2hlY2sgdGhhdCB0aGlzIGlzIGFjY3VyYXRlIGFuZCB0byBiZSBzdXJlIHRoYXQgdGhlcmUgaXMgbm8gZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19wY2lfcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDA9c3RhdGljIGludCBhdGgxMWtfcGNpX3NldF9pcnFfYWZmaW5pdHlfaGludChzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzo5NDk6c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy05NTAtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTI5Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYXRoMTFrX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVx0LmlkX3RhYmxlID0gYXRoMTFrX3BjaV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTI5OTpcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMDAtXHQucmVtb3ZlID0gYXRoMTFrX3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyMAoJCQkJCQkJb3V0cHV0OiA4OQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmc9RmFsc2UqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQmIzM5O3Mgd29ya2luZyB3aXRoIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCwgYXMgd2Uga25vdywgYXJlIHByZXR0eSBzdGFuZGFyZCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IGludGVyZmFjZSB3aXRoIHRoZSBQQ0llIGFuZCBBSEIgYnVzZXMuIFRoZSBwcm9ibGVtIGhlcmUsIGFuZCBpdCYjMzk7cyBhIGNyaXRpY2FsIG9uZSBmb3IgZnV6emluZywgaXMgdGhlIGxhY2sgb2YgUUVNVSBlbXVsYXRpb24gZm9yIHRob3NlIHBhcnRpY3VsYXIgV2ktRmkgY2FyZHMuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUgZGVwZW5kZW5jaWVzIHRoYXQganVzdCBhcmVuJiMzOTt0IGdvaW5nIHRvIGJlIHJlcGxpY2F0ZWQgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXaXRob3V0IHRoYXQgZW11bGF0aW9uLCB0aGUgY29kZSBtb2RpZmljYXRpb25zIHNpbXBseSB3b24mIzM5O3QgYmUgcmVhY2hhYmxlIGR1cmluZyBhIGZ1enppbmcgY2FtcGFpZ24uIFNvLCBnaXZlbiB0aG9zZSBjb25zdHJhaW50cywgSSYjMzk7bSBnb2luZyB0byBzZXQgV29ydGhGdXp6aW5nIHRvIGZhbHNlLiBUaGUganVpY2UganVzdCBpc24mIzM5O3Qgd29ydGggdGhlIHNxdWVlemUgaW4gdGhpcyBzY2VuYXJpby4gV2UmIzM5O2QgYmUgd2FzdGluZyBvdXIgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDExayBhbmQgYXRoMTJrIFdpLUZpIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgZHJpdmVycy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDk6MTE6MzYuMTk2NzYwOTM5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNjk4ODY0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDk6MTE6MzYuMTk2NzY5MzI5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjEzOTc5MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmYjc4ODJkOGJlZDgyYmE3YjllYTc1NmY1OWFlMTAyNDhlOTI1OWY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDA5OjExOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbmluZGV4IGYzODliOTdhY2JkZDVkLi4yZTU5NzhlYzJiMDViYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG5AQCAtMTA4Nyw2ICsxMDg3LDcgQEAgaW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVxcdTAwM2VudW1fdHhfcmluZ3M7IGkrKykge1xcbiBcXHRcXHRpZHJfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhidWZfaWRyKTtcXG4gXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLnR4X2lkcl9sb2NrKTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XFxuIFxcdFxcdGRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xcbiBcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcXG5pbmRleCA4NGY2NjgzOWYwYzZkZS4uNmQ5OTUwMWFhMjY5YzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXFxuQEAgLTg3LDYgKzg3LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xcbiBcXHRzdHJ1Y3QgaWRyIHR4YnVmX2lkcjtcXG4gXFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xcbiBcXHRzcGlubG9ja190IHR4X2lkcl9sb2NrO1xcbitcXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXFxuK1xcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xcbiBcXHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcXG4gXFx0aW50IHR4X3N0YXR1c19oZWFkO1xcbiBcXHRpbnQgdHhfc3RhdHVzX3RhaWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xcbmluZGV4IGNhYzk3MGM5MjgwNmEyLi4wODNhY2E4ZmYzNTViYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcXG5AQCAtMTA4LDcgKzEwOCw3IEBAIGludCBhdGgxMWtfZHBfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcXG4gXFxuIFxcdHBvb2xfaWQgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSBcXHUwMDI2IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpO1xcbiBcXG4tXFx0cmluZ19zZWxlY3RvciA9IGFiLVxcdTAwM2Vod19wYXJhbXMuaHdfb3BzLVxcdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2IpO1xcbitcXHRyaW5nX3NlbGVjdG9yID0gYWItXFx1MDAzZWh3X3BhcmFtcy5od19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcXG4gXFxuIHRjbF9yaW5nX3NlbDpcXG4gXFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXFxuaW5kZXggOTNmOWEwM2M0OGRjMGYuLjhhMjhjMWQ0YzE3YjZlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xcbkBAIC04NzYsMjggKzg3NiwxNCBAQCBzdGF0aWMgYm9vbCBhdGgxMWtfaHdfd2NuNjg1NV9yeF9kZXNjX2dldF9sZHBjX3N1cHBvcnQoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKVxcbiBcXHRcXHRcXHQgX19sZTMyX3RvX2NwdShkZXNjLVxcdTAwM2V1LndjbjY4NTUubXNkdV9zdGFydC5pbmZvMikpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi17XFxuLVxcdC8qIExldCB0aGUgZGVmYXVsdCByaW5nIHNlbGVjdGlvbiBiZSBiYXNlZCBvbiBjdXJyZW50IHByb2Nlc3Nvclxcbi1cXHQgKiBudW1iZXIsIHdoZXJlIG9uZSBvZiB0aGUgMyB0Y2wgcmluZ3MgYXJlIHNlbGVjdGVkIGJhc2VkIG9uXFxuLVxcdCAqIHRoZSBzbXBfcHJvY2Vzc29yX2lkKCkuIEluIGNhc2UgdGhhdCByaW5nXFxuLVxcdCAqIGlzIGZ1bGwvYnVzeSwgd2UgcmVzb3J0IHRvIG90aGVyIGF2YWlsYWJsZSByaW5ncy5cXG4tXFx0ICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuXFxuLVxcdCAqXFxuLVxcdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXFxuLVxcdCAqL1xcbitzdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYylcXG4re1xcbiBcXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitzdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYylcXG4ge1xcbi1cXHQvKiBTZWxlY3QgdGhlIFRDTCByaW5nIGJhc2VkIG9uIHRoZSBmbG93IGhhc2ggb2YgdGhlIFNLQiBpbnN0ZWFkXFxuLVxcdCAqIG9mIENQVSBJRC4gU2luY2UgYXBwbGljYXRpb25zIHB1bXBpbmcgdGhlIHRyYWZmaWMgY2FuIGJlIHNjaGVkdWxlZFxcbi1cXHQgKiBvbiBtdWx0aXBsZSBDUFVzLCB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IHBhY2tldHMgb2YgdGhlIHNhbWUgZmxvd1xcbi1cXHQgKiBjb3VsZCBlbmQgb24gZGlmZmVyZW50IFRDTCByaW5ncywgdGhpcyBjb3VsZCBzb21ldGltZXMgcmVzdWx0cyBpblxcbi1cXHQgKiBhbiBvdXQgb2Ygb3JkZXIgYXJyaXZhbCBvZiB0aGUgcGFja2V0cyBhdCB0aGUgcmVjZWl2ZXIuXFxuLVxcdCAqL1xcbi1cXHRyZXR1cm4gc2tiX2dldF9oYXNoKHNrYik7XFxuK1xcdHJldHVybiBhYztcXG4gfVxcbiBcXG4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHMgPSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaFxcbmluZGV4IDQ5OTY1MzZmYmQxNGYxLi5iNmJjOGI3MmQ4MTIwYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcXG5AQCAtMjczLDcgKzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHtcXG4gXFx0dTE2ICgqbXBkdV9pbmZvX2dldF9wZWVyaWQpKHN0cnVjdCBoYWxfcnhfbXBkdV9pbmZvICptcGR1X2luZm8pO1xcbiBcXHRib29sICgqcnhfZGVzY19tYWNfYWRkcjJfdmFsaWQpKHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYyk7XFxuIFxcdHU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcXG4tXFx0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xcbitcXHR1MzIgKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xcbiB9O1xcbiBcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbmluZGV4IDJkNTVjZGM0ZDE2NWRlLi45ODEzZjc5MjNjMzRmMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbkBAIC0xMDA2NSw5ICsxMDA2NSw1OSBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuK3tcXG4rXFx0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XFxuK1xcdFxcdC5zdGEgPSB0eHEtXFx1MDAzZXN0YSxcXG4rXFx0fTtcXG4rXFx0c3RydWN0IGF0aDExayAqYXIgPSBody1cXHUwMDNlcHJpdjtcXG4rXFx0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XFxuK1xcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdHUzMiByaW5nX3NlbGVjdG9yO1xcbitcXHRpbnQgbnVtX2ZyZWU7XFxuK1xcdHU4IHJpbmdfaWQ7XFxuK1xcbitcXHRpZiAoIWFyKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRyaW5nX3NlbGVjdG9yID0gYXItXFx1MDAzZWFiLVxcdTAwM2Vod19wYXJhbXMuaHdfb3BzLVxcdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXFx1MDAzZWFjKTtcXG4rXFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBhci1cXHUwMDNlYWItXFx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVxcdTAwM2VudW1fdHhfcmluZ3M7XFxuK1xcdHR4X3JpbmcgPSBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkcC50eF9yaW5nW3JpbmdfaWRdO1xcbitcXHR0Y2xfcmluZyA9IFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWhhbC5zcm5nX2xpc3RbdHhfcmluZy1cXHUwMDNldGNsX2RhdGFfcmluZy5yaW5nX2lkXTtcXG4rXFxuK1xcdHdoaWxlICgxKSB7XFxuK1xcdFxcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMUtfRkxBR19DUkFTSF9GTFVTSCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlZGV2X2ZsYWdzKSkpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdG51bV9mcmVlID0gYXRoMTFrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cXHUwMDNlYWIsIHRjbF9yaW5nLCB0cnVlKTtcXG4rXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnRjbF9yaW5nLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdFxcdGlmIChudW1fZnJlZSA9PSAwKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XFxuK1xcdFxcdGlmICghc2tiKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0YXRoMTFrX21hY19vcF90eChodywgXFx1MDAyNmNvbnRyb2wsIHNrYik7XFxuK1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcXG4gXFx0LnR4XFx0XFx0XFx0XFx0PSBhdGgxMWtfbWFjX29wX3R4LFxcbi1cXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxcbitcXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxcbiBcXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcXG4gXFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCxcXG4gXFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xcbmluZGV4IGFmNWYxMWZjMWQ4NGFiLi4zZDQ2Y2ZiZjBhMWMzZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG5AQCAtMTUzOSw2ICsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gXFx0fVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZW1heF90eF9yaW5nOyBpKyspIHtcXG4rXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XFxuIFxcdFxcdGRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xcbiBcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcXG5pbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xcbiBcXHR1OCB0Y2xfZGF0YV9yaW5nX2lkO1xcbiBcXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfZGF0YV9yaW5nO1xcbiBcXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xcbitcXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXFxuK1xcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xcbiBcXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcXG4gXFx0aW50IHR4X3N0YXR1c19oZWFkO1xcbiBcXHRpbnQgdHhfc3RhdHVzX3RhaWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuaW5kZXggYTE2NDU2M2ZmZjI4OWMuLjA3MWNiNWQzMDkzMTBkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuQEAgLTM5MCw2ICszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXFxuIFxcdGVsc2VcXG4gXFx0XFx0cmV0dXJuICgoc3JuZy1cXHUwMDNlcmluZ19zaXplIC0gaHAgKyB0cCkgLyBzcm5nLVxcdTAwM2VlbnRyeV9zaXplKSAtIDE7XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XFxuIFxcbiB2b2lkICphdGgxMmtfaGFsX3Nybmdfc3JjX25leHRfcGVlayhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcXG5pbmRleCA4NmZiOGI3MTk2MTM1MC4uNjVjYWE3YTIzNDlmMTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXFxuQEAgLTI0Myw3ICsyNDMsNyBAQCBzdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XFxuIFxcdGludCAoKm1hY19pZF90b19wZGV2X2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpO1xcbiBcXHRpbnQgKCptYWNfaWRfdG9fc3JuZ19pZCkoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LCBpbnQgbWFjX2lkKTtcXG4gXFx0aW50ICgqcnhkbWFfcmluZ19zZWxfY29uZmlnKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG4tXFx0dTggKCpnZXRfcmluZ19zZWxlY3Rvcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuK1xcdHU4ICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTtcXG4gXFx0Ym9vbCAoKmRwX3NybmdfaXNfdHhfY29tcF9yaW5nKShpbnQgcmluZ19udW0pO1xcbiBcXHRib29sICgqaXNfZnJhbWVfbGlua19hZ25vc3RpYykoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcXG5pbmRleCBkMjc0OWRlNDQ1NTM0YS4uNzQzNTllOGVlYTQ3MTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXFxuQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxcbiBcXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cXG4gXFx0ICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGxcXG4gXFx0ICovXFxuLVxcdHJpbmdfc2VsZWN0b3IgPSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vod19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XFxuK1xcdHJpbmdfc2VsZWN0b3IgPSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vod19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcXG4gXFxuIHRjbF9yaW5nX3NlbDpcXG4gXFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuaW5kZXggZDlmZGQyZmM4Mjk4NmEuLmFmMGEzYmE4MDVkZGRiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbkBAIC00OSw3ICs0OSw3IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF9xY245Mjc0KGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodyxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQodTggYWMpXFxuIHtcXG4gXFx0cmV0dXJuIHNtcF9wcm9jZXNzb3JfaWQoKTtcXG4gfVxcbkBAIC04Myw5ICs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodyxcXG4gXFx0cmV0dXJuIG1hY19pZDtcXG4gfVxcbiBcXG4tc3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl93Y243ODUwKHN0cnVjdCBza19idWZmICpza2IpXFxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MCh1OCBhYylcXG4ge1xcbi1cXHRyZXR1cm4gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuK1xcdHJldHVybiBhYztcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3NybmdfaXNfY29tcF9yaW5nX3djbjc4NTAoaW50IHJpbmdfbnVtKVxcbkBAIC0xMTAwLDkgKzExMDAsODMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuK3tcXG4rXFx0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtXFx1MDAzZXZpZik7XFxuK1xcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2h3X3RvX2FoKGh3KTtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XFxuK1xcdFxcdC5zdGEgPSB0eHEtXFx1MDAzZXN0YSxcXG4rXFx0fTtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHR4cS1cXHUwMDNldmlmO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcXG4rXFx0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XFxuK1xcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XFxuK1xcdHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YTtcXG4rXFx0c3RydWN0IGF0aDEya19kcCAqZHA7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbitcXHR1OCByaW5nX3NlbGVjdG9yO1xcbitcXHRpbnQgbnVtX2ZyZWU7XFxuK1xcdHU4IHJpbmdfaWQ7XFxuK1xcdHU4IGxpbmtfaWQ7XFxuK1xcbitcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSBcXHUwMDI2XFx1MDAyNiB0eHEtXFx1MDAzZXN0YSkge1xcbitcXHRcXHRhaHN0YSA9IGF0aDEya19zdGFfdG9fYWhzdGEodHhxLVxcdTAwM2VzdGEpO1xcbitcXHRcXHRsaW5rX2lkID0gYWhzdGEtXFx1MDAzZWFzc29jX2xpbmtfaWQ7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGxpbmtfaWQgPSBhaHZpZi1cXHUwMDNlZGVmbGluay5saW5rX2lkO1xcbitcXHR9XFxuK1xcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcbitcXHRhcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi1cXHUwMDNlbGlua1tsaW5rX2lkXSk7XFxuK1xcdGlmICghYXJ2aWYgfHwgIWFydmlmLVxcdTAwM2Vhcikge1xcbitcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRhciA9IGFydmlmLVxcdTAwM2VhcjtcXG4rXFx0ZHAgPSBhci1cXHUwMDNlYWItXFx1MDAzZWRwO1xcbitcXG4rXFx0cmluZ19zZWxlY3RvciA9IGRwLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVxcdTAwM2VhYyk7XFxuK1xcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgZHAtXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlbWF4X3R4X3Jpbmc7XFxuK1xcdHR4X3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbcmluZ19pZF07XFxuK1xcdHRjbF9yaW5nID0gXFx1MDAyNmRwLVxcdTAwM2VoYWwtXFx1MDAzZXNybmdfbGlzdFt0eF9yaW5nLVxcdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xcbitcXG4rXFx0d2hpbGUgKDEpIHtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILFxcbitcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcbitcXHRcXHRzcGluX2xvY2soXFx1MDAyNnRjbF9yaW5nLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0bnVtX2ZyZWUgPSBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVxcdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2dGNsX3JpbmctXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0XFx0aWYgKG51bV9mcmVlID09IDApIHtcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcXG4rXFx0XFx0aWYgKCFza2IpIHtcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRhdGgxMmtfd2lmaTdfbWFjX29wX3R4KGh3LCBcXHUwMDI2Y29udHJvbCwgc2tiKTtcXG4rXFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHR9XFxuK1xcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7XFxuIFxcdC50eFxcdFxcdFxcdFxcdD0gYXRoMTJrX3dpZmk3X21hY19vcF90eCxcXG4tXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcXG4rXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcXG4gXFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RhcnQsXFxuIFxcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsXFxuIFxcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwOToxMTozNy4xNTkwOTMzMTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNzQwNzU0NjEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDExayBhbmQgYXRoMTJrIFdpLUZpIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgZHJpdmVycy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYjc4ODJkOGJlZDgyYmE3YjllYTc1NmY1OWFlMTAyNDhlOTI1OWY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDk6MTE6MzQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDVkLi4yZTU5NzhlYzJiMDViYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG5AQCAtMTA4Nyw2ICsxMDg3LDcgQEAgaW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzOyBpKyspIHtcbiBcdFx0aWRyX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS50eGJ1Zl9pZHIpO1xuIFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X2lkcl9sb2NrKTtcbitcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS53YWtlX3R4X2xvY2spO1xuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xuIFxuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbmluZGV4IDg0ZjY2ODM5ZjBjNmRlLi42ZDk5NTAxYWEyNjljNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5AQCAtODcsNiArODcsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7XG4gXHRzdHJ1Y3QgaWRyIHR4YnVmX2lkcjtcbiBcdC8qIFByb3RlY3RzIHR4YnVmX2lkciBhbmQgbnVtX3BlbmRpbmcgKi9cbiBcdHNwaW5sb2NrX3QgdHhfaWRyX2xvY2s7XG4rXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXG4rXHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuaW5kZXggY2FjOTcwYzkyODA2YTIuLjA4M2FjYThmZjM1NWJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcbkBAIC0xMDgsNyArMTA4LDcgQEAgaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxuIFxuIFx0cG9vbF9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpIFx1MDAyNiAoQVRIMTFLX0hXX01BWF9RVUVVRVMgLSAxKTtcbiBcbi1cdHJpbmdfc2VsZWN0b3IgPSBhYi1cdTAwM2Vod19wYXJhbXMuaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XG4rXHRyaW5nX3NlbGVjdG9yID0gYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbmluZGV4IDkzZjlhMDNjNDhkYzBmLi44YTI4YzFkNGMxN2I2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXG5AQCAtODc2LDI4ICs4NzYsMTQgQEAgc3RhdGljIGJvb2wgYXRoMTFrX2h3X3djbjY4NTVfcnhfZGVzY19nZXRfbGRwY19zdXBwb3J0KHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYylcbiBcdFx0XHQgX19sZTMyX3RvX2NwdShkZXNjLVx1MDAzZXUud2NuNjg1NS5tc2R1X3N0YXJ0LmluZm8yKSk7XG4gfVxuIFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXG4te1xuLVx0LyogTGV0IHRoZSBkZWZhdWx0IHJpbmcgc2VsZWN0aW9uIGJlIGJhc2VkIG9uIGN1cnJlbnQgcHJvY2Vzc29yXG4tXHQgKiBudW1iZXIsIHdoZXJlIG9uZSBvZiB0aGUgMyB0Y2wgcmluZ3MgYXJlIHNlbGVjdGVkIGJhc2VkIG9uXG4tXHQgKiB0aGUgc21wX3Byb2Nlc3Nvcl9pZCgpLiBJbiBjYXNlIHRoYXQgcmluZ1xuLVx0ICogaXMgZnVsbC9idXN5LCB3ZSByZXNvcnQgdG8gb3RoZXIgYXZhaWxhYmxlIHJpbmdzLlxuLVx0ICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuXG4tXHQgKlxuLVx0ICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGxcbi1cdCAqL1xuK3N0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxuK3tcbiBcdHJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7XG4gfVxuIFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXG4rc3RhdGljIHUzMiBhdGgxMWtfaHdfd2NuNjc1MF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3IodTggYWMpXG4ge1xuLVx0LyogU2VsZWN0IHRoZSBUQ0wgcmluZyBiYXNlZCBvbiB0aGUgZmxvdyBoYXNoIG9mIHRoZSBTS0IgaW5zdGVhZFxuLVx0ICogb2YgQ1BVIElELiBTaW5jZSBhcHBsaWNhdGlvbnMgcHVtcGluZyB0aGUgdHJhZmZpYyBjYW4gYmUgc2NoZWR1bGVkXG4tXHQgKiBvbiBtdWx0aXBsZSBDUFVzLCB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IHBhY2tldHMgb2YgdGhlIHNhbWUgZmxvd1xuLVx0ICogY291bGQgZW5kIG9uIGRpZmZlcmVudCBUQ0wgcmluZ3MsIHRoaXMgY291bGQgc29tZXRpbWVzIHJlc3VsdHMgaW5cbi1cdCAqIGFuIG91dCBvZiBvcmRlciBhcnJpdmFsIG9mIHRoZSBwYWNrZXRzIGF0IHRoZSByZWNlaXZlci5cbi1cdCAqL1xuLVx0cmV0dXJuIHNrYl9nZXRfaGFzaChza2IpO1xuK1x0cmV0dXJuIGFjO1xuIH1cbiBcbiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wcyA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbmluZGV4IDQ5OTY1MzZmYmQxNGYxLi5iNmJjOGI3MmQ4MTIwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXG5AQCAtMjczLDcgKzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHtcbiBcdHUxNiAoKm1wZHVfaW5mb19nZXRfcGVlcmlkKShzdHJ1Y3QgaGFsX3J4X21wZHVfaW5mbyAqbXBkdV9pbmZvKTtcbiBcdGJvb2wgKCpyeF9kZXNjX21hY19hZGRyMl92YWxpZCkoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcbiBcdHU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcbi1cdHUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbitcdHUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKSh1OCBhYyk7XG4gfTtcbiBcbiBleHRlcm4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbmluZGV4IDJkNTVjZGM0ZDE2NWRlLi45ODEzZjc5MjNjMzRmMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC0xMDA2NSw5ICsxMDA2NSw1OSBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuK1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbitcdH07XG4rXHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcbitcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4rXHRpbnQgbnVtX2ZyZWU7XG4rXHR1OCByaW5nX2lkO1xuK1xuK1x0aWYgKCFhcilcbitcdFx0cmV0dXJuO1xuK1xuK1x0cmluZ19zZWxlY3RvciA9IGFyLVx1MDAzZWFiLVx1MDAzZWh3X3BhcmFtcy5od19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVx1MDAzZWFjKTtcbitcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzO1xuK1x0dHhfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRwLnR4X3JpbmdbcmluZ19pZF07XG4rXHR0Y2xfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWhhbC5zcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuK1xuK1x0d2hpbGUgKDEpIHtcbitcdFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXG4rXHRcdHNwaW5fbG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuK1xuK1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1xuK1x0XHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcbitcdFx0aWYgKCFza2IpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0YXRoMTFrX21hY19vcF90eChodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbitcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbmluZGV4IGFmNWYxMWZjMWQ4NGFiLi4zZDQ2Y2ZiZjBhMWMzZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG5AQCAtMTUzOSw2ICsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZzsgaSsrKSB7XG4rXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5pbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0dTggdGNsX2RhdGFfcmluZ19pZDtcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xuK1x0LyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqL1xuK1x0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XG4gXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcbiBcdGludCB0eF9zdGF0dXNfaGVhZDtcbiBcdGludCB0eF9zdGF0dXNfdGFpbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuaW5kZXggYTE2NDU2M2ZmZjI4OWMuLjA3MWNiNWQzMDkzMTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXG4gXHRlbHNlXG4gXHRcdHJldHVybiAoKHNybmctXHUwMDNlcmluZ19zaXplIC0gaHAgKyB0cCkgLyBzcm5nLVx1MDAzZWVudHJ5X3NpemUpIC0gMTtcbiB9XG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XG4gXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaGFsX3NybmcgKnNybmcpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCA4NmZiOGI3MTk2MTM1MC4uNjVjYWE3YTIzNDlmMTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxuQEAgLTI0Myw3ICsyNDMsNyBAQCBzdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XG4gXHRpbnQgKCptYWNfaWRfdG9fcGRldl9pZCkoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LCBpbnQgbWFjX2lkKTtcbiBcdGludCAoKm1hY19pZF90b19zcm5nX2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpO1xuIFx0aW50ICgqcnhkbWFfcmluZ19zZWxfY29uZmlnKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbi1cdHU4ICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xuK1x0dTggKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xuIFx0Ym9vbCAoKmRwX3NybmdfaXNfdHhfY29tcF9yaW5nKShpbnQgcmluZ19udW0pO1xuIFx0Ym9vbCAoKmlzX2ZyYW1lX2xpbmtfYWdub3N0aWMpKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCBkMjc0OWRlNDQ1NTM0YS4uNzQzNTllOGVlYTQ3MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxuIFx0ICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuXG4gXHQgKiBUT0RPOiBBZGQgdGhyb3R0bGluZyBsb2dpYyB3aGVuIGFsbCByaW5ncyBhcmUgZnVsbFxuIFx0ICovXG4tXHRyaW5nX3NlbGVjdG9yID0gZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2IpO1xuK1x0cmluZ19zZWxlY3RvciA9IGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vod19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikpO1xuIFxuIHRjbF9yaW5nX3NlbDpcbiBcdHRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5pbmRleCBkOWZkZDJmYzgyOTg2YS4uYWYwYTNiYTgwNWRkZGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuQEAgLTQ5LDcgKzQ5LDcgQEAgYXRoMTJrX3dpZmk3X2h3X21hY19pZF90b19zcm5nX2lkX3FjbjkyNzQoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NCh1OCBhYylcbiB7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbkBAIC04Myw5ICs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodyxcbiBcdHJldHVybiBtYWNfaWQ7XG4gfVxuIFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MCh1OCBhYylcbiB7XG4tXHRyZXR1cm4gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4rXHRyZXR1cm4gYWM7XG4gfVxuIFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbkBAIC0xMTAwLDkgKzExMDAsODMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodHhxLVx1MDAzZXZpZik7XG4rXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGF0aDEya19od190b19haChodyk7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHtcbitcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4rXHR9O1xuK1x0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHR4cS1cdTAwM2V2aWY7XG4rXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbitcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuK1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbitcdHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YTtcbitcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0dTggcmluZ19zZWxlY3RvcjtcbitcdGludCBudW1fZnJlZTtcbitcdHU4IHJpbmdfaWQ7XG4rXHR1OCBsaW5rX2lkO1xuK1xuK1x0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZikgXHUwMDI2XHUwMDI2IHR4cS1cdTAwM2VzdGEpIHtcbitcdFx0YWhzdGEgPSBhdGgxMmtfc3RhX3RvX2Foc3RhKHR4cS1cdTAwM2VzdGEpO1xuK1x0XHRsaW5rX2lkID0gYWhzdGEtXHUwMDNlYXNzb2NfbGlua19pZDtcbitcdH0gZWxzZSB7XG4rXHRcdGxpbmtfaWQgPSBhaHZpZi1cdTAwM2VkZWZsaW5rLmxpbmtfaWQ7XG4rXHR9XG4rXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXG4rXHRhcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi1cdTAwM2VsaW5rW2xpbmtfaWRdKTtcbitcdGlmICghYXJ2aWYgfHwgIWFydmlmLVx1MDAzZWFyKSB7XG4rXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRhciA9IGFydmlmLVx1MDAzZWFyO1xuK1x0ZHAgPSBhci1cdTAwM2VhYi1cdTAwM2VkcDtcbitcbitcdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHR4cS1cdTAwM2VhYyk7XG4rXHRyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZztcbitcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xuK1x0dGNsX3JpbmcgPSBcdTAwMjZkcC1cdTAwM2VoYWwtXHUwMDNlc3JuZ19saXN0W3R4X3JpbmctXHUwMDNldGNsX2RhdGFfcmluZy5yaW5nX2lkXTtcbitcbitcdHdoaWxlICgxKSB7XG4rXHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCxcbitcdFx0XHRcdCAgICAgIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuK1x0XHRcdGJyZWFrO1xuK1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1xuK1x0XHRzcGluX2xvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4rXHRcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcbitcdFx0aWYgKG51bV9mcmVlID09IDApIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XG4rXHRcdGlmICghc2tiKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXG4rXHRcdGF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4rXG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdH1cbitcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjExOjM3LjE1OTA5NTE3OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyOTEzNTE5NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IGF0aDExay9hdGgxMmsgRHJpdmVyIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGRpdmVzIGludG8gdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGEgbmV3IGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIGFuZCBzb21lIGNoYW5nZXMgdG8gcmluZyBzZWxlY3Rpb24uICBUaGUgY29yZSBvZiB0aGUgaXNzdWUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBpcyB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxpa2UgbW9zdCBzcGVjaWFsaXplZCBoYXJkd2FyZSBkcml2ZXJzLCB0aGVzZSBhcmUgbGlrZWx5IGJvdW5kIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiAgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGF0J3MgdGhlIGNhc2UuXG5cbk15IHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgZHJpdmVycyBpcyB0aGF0IHRoZXkgYXJlIFF1YWxjb21tIEF0aGVyb3MgZHJpdmVycyBmb3IgODAyLjExYXgvYmUgZGV2aWNlcywgcHJpbWFyaWx5IFBDSSBvciBBSEIgYmFzZWQuIFVubGVzcyB0aGVyZSdzIGEgZGVkaWNhdGVkIHNvZnR3YXJlIGVtdWxhdGlvbiBsYXllciwgbGlrZSBhIGBtYWM4MDIxMV9od3NpbWAgZXF1aXZhbGVudCwgd2hpY2ggSSBrbm93IGlzIHNlcGFyYXRlLCB0aGVzZSBkcml2ZXJzIHdpbGwgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gIFRoZSBxdWVzdGlvbiBpczogY2FuIHdlIGZha2UgaXQgd2l0aCBhIHZpcnR1YWwgUENJIGRldmljZT8gU3l6a2FsbGVyLCBpbiBteSBleHBlcmllbmNlLCBkb2Vzbid0IHVzdWFsbHkgb2ZmZXIgc3BlY2lmaWMgZW11bGF0aW9uIGZvciBwYXJ0aWN1bGFyIFdpLUZpIGNhcmRzLlxuXG5MZXQgbWUganVzdCBjaGVjayBmb3IgYW55IGV4aXN0aW5nIGVtdWxhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgaXRzZWxmLiBBIHF1aWNrIGBncmVwYCBmb3IgYGF0aDExa2Agb3IgYGF0aDEya2Agc2hvdWxkIHNob3cgaWYgdGhlcmUncyBhbnkgdmlydHVhbCBkZXZpY2UgaW1wbGVtZW50YXRpb24gSSdtIG1pc3NpbmcuICBCdXQsIHJlYWxpc3RpY2FsbHksIEkgZG9uJ3QgZXhwZWN0IHRvIGZpbmQgYW55dGhpbmcuXG5cbldhaXQuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgY2xlYXIgZXhjbHVzaW9uOiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuQW5kICpiaW5nbyohIFRoZXNlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzIGFyZSAqZXhhY3RseSogdGhhdC4gVGhleSBhcmUgdmVuZG9yLXNwZWNpZmljIChRdWFsY29tbSksIGFuZCB0aGV5ICpkbyogcmVxdWlyZSBQQ0llL0FIQiBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cy4gTGV0J3MgY29uZmlybSB0aGF0IFBDSS9BSEIgZGVwZW5kZW5jeTsgeWVzLCBgYXRoMTFrYCBoYXMgYHBjaS5jYCBhbmQgYGFoYi5jYCwgYW5kIGBhdGgxMmtgIGhhcyBgcGNpLmNgLlxuXG5UaGVyZWZvcmUsIHRoZSBsaWtlbGlob29kIG9mIGJlaW5nIGFibGUgdG8gZnV6eiB0aGVzZSBlZmZlY3RpdmVseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UgaXMgZXNzZW50aWFsbHkgemVyby4gQ29uc2VxdWVudGx5LCB0aGUgYW5zd2VyIGlzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuIEkgc2hvdWxkIHVzZSB0aGUgYGRlZmF1bHRfYXBpOmdyZXBwZXJgIHRvIGRvdWJsZSBjaGVjayB0aGF0IHRoaXMgaXMgYWNjdXJhdGUgYW5kIHRvIGJlIHN1cmUgdGhhdCB0aGVyZSBpcyBubyBlbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0ODYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwOToxMTo0NS40NTA0NTAxNTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2MzY4MTg2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfcGNpX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ5OnN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk1MC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEyOTY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0aDExa19wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVxcdC5pZF90YWJsZSA9IGF0aDExa19wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMjk5OlxcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzAwLVxcdC5yZW1vdmUgPSBhdGgxMWtfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDk6MTE6NTAuNTE0MTM4NjIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1MjQ2MjE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmc9RmFsc2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0J3Mgd29ya2luZyB3aXRoIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCwgYXMgd2Uga25vdywgYXJlIHByZXR0eSBzdGFuZGFyZCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IGludGVyZmFjZSB3aXRoIHRoZSBQQ0llIGFuZCBBSEIgYnVzZXMuIFRoZSBwcm9ibGVtIGhlcmUsIGFuZCBpdCdzIGEgY3JpdGljYWwgb25lIGZvciBmdXp6aW5nLCBpcyB0aGUgbGFjayBvZiBRRU1VIGVtdWxhdGlvbiBmb3IgdGhvc2UgcGFydGljdWxhciBXaS1GaSBjYXJkcy4gV2UncmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0aGF0IGp1c3QgYXJlbid0IGdvaW5nIHRvIGJlIHJlcGxpY2F0ZWQgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXaXRob3V0IHRoYXQgZW11bGF0aW9uLCB0aGUgY29kZSBtb2RpZmljYXRpb25zIHNpbXBseSB3b24ndCBiZSByZWFjaGFibGUgZHVyaW5nIGEgZnV6emluZyBjYW1wYWlnbi4gU28sIGdpdmVuIHRob3NlIGNvbnN0cmFpbnRzLCBJJ20gZ29pbmcgdG8gc2V0IFdvcnRoRnV6emluZyB0byBmYWxzZS4gVGhlIGp1aWNlIGp1c3QgaXNuJ3Qgd29ydGggdGhlIHNxdWVlemUgaW4gdGhpcyBzY2VuYXJpby4gV2UnZCBiZSB3YXN0aW5nIG91ciB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTIwLCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjExOjU0LjU2NjYwMzYwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDExayBhbmQgYXRoMTJrIFdpLUZpIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgZHJpdmVycy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUXVhbGNvbW0gYXRoMTFrIGFuZCBhdGgxMmsgV2ktRmkgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrlwn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 08:45:51 +0000 UTC FinishedAt: 2026-07-25 09:11:56 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDA5OjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwOToxMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZiNzg4MmQ4YmVkODJiYTdiOWVhNzU2ZjU5YWUxMDI0OGU5MjU5ZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwOToxMTozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDVkLi4yZTU5NzhlYzJiMDViYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG5AQCAtMTA4Nyw2ICYjNDM7MTA4Nyw3IEBAIGludCBhdGgxMWtfZHBfYWxsb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZW51bV90eF9yaW5nczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWRyX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS50eGJ1Zl9pZHIpO1xuIFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X2lkcl9sb2NrKTtcbiYjNDM7XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5pbmRleCA4NGY2NjgzOWYwYzZkZS4uNmQ5OTUwMWFhMjY5YzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuQEAgLTg3LDYgJiM0Mzs4Nyw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcbiBcdHN0cnVjdCBpZHIgdHhidWZfaWRyO1xuIFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xuIFx0c3BpbmxvY2tfdCB0eF9pZHJfbG9jaztcbiYjNDM7XHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXG4mIzQzO1x0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XG4gXHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcbiBcdGludCB0eF9zdGF0dXNfaGVhZDtcbiBcdGludCB0eF9zdGF0dXNfdGFpbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcbmluZGV4IGNhYzk3MGM5MjgwNmEyLi4wODNhY2E4ZmYzNTViYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5AQCAtMTA4LDcgJiM0MzsxMDgsNyBAQCBpbnQgYXRoMTFrX2RwX3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgYXRoMTFrX3ZpZiAqYXJ2aWYsXG4gXG4gXHRwb29sX2lkID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikgXHUwMDI2IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpO1xuIFxuLVx0cmluZ19zZWxlY3RvciA9IGFiLVx1MDAzZWh3X3BhcmFtcy5od19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiKTtcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbmluZGV4IDkzZjlhMDNjNDhkYzBmLi44YTI4YzFkNGMxN2I2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXG5AQCAtODc2LDI4ICYjNDM7ODc2LDE0IEBAIHN0YXRpYyBib29sIGF0aDExa19od193Y242ODU1X3J4X2Rlc2NfZ2V0X2xkcGNfc3VwcG9ydChzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpXG4gXHRcdFx0IF9fbGUzMl90b19jcHUoZGVzYy1cdTAwM2V1LndjbjY4NTUubXNkdV9zdGFydC5pbmZvMikpO1xuIH1cbiBcbi1zdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLXtcbi1cdC8qIExldCB0aGUgZGVmYXVsdCByaW5nIHNlbGVjdGlvbiBiZSBiYXNlZCBvbiBjdXJyZW50IHByb2Nlc3NvclxuLVx0ICogbnVtYmVyLCB3aGVyZSBvbmUgb2YgdGhlIDMgdGNsIHJpbmdzIGFyZSBzZWxlY3RlZCBiYXNlZCBvblxuLVx0ICogdGhlIHNtcF9wcm9jZXNzb3JfaWQoKS4gSW4gY2FzZSB0aGF0IHJpbmdcbi1cdCAqIGlzIGZ1bGwvYnVzeSwgd2UgcmVzb3J0IHRvIG90aGVyIGF2YWlsYWJsZSByaW5ncy5cbi1cdCAqIElmIGFsbCByaW5ncyBhcmUgZnVsbCwgd2UgZHJvcCB0aGUgcGFja2V0LlxuLVx0ICpcbi1cdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXG4tXHQgKi9cbiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfaHdfaXBxODA3NF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3IodTggYWMpXG4mIzQzO3tcbiBcdHJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7XG4gfVxuIFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3N0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxuIHtcbi1cdC8qIFNlbGVjdCB0aGUgVENMIHJpbmcgYmFzZWQgb24gdGhlIGZsb3cgaGFzaCBvZiB0aGUgU0tCIGluc3RlYWRcbi1cdCAqIG9mIENQVSBJRC4gU2luY2UgYXBwbGljYXRpb25zIHB1bXBpbmcgdGhlIHRyYWZmaWMgY2FuIGJlIHNjaGVkdWxlZFxuLVx0ICogb24gbXVsdGlwbGUgQ1BVcywgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCBwYWNrZXRzIG9mIHRoZSBzYW1lIGZsb3dcbi1cdCAqIGNvdWxkIGVuZCBvbiBkaWZmZXJlbnQgVENMIHJpbmdzLCB0aGlzIGNvdWxkIHNvbWV0aW1lcyByZXN1bHRzIGluXG4tXHQgKiBhbiBvdXQgb2Ygb3JkZXIgYXJyaXZhbCBvZiB0aGUgcGFja2V0cyBhdCB0aGUgcmVjZWl2ZXIuXG4tXHQgKi9cbi1cdHJldHVybiBza2JfZ2V0X2hhc2goc2tiKTtcbiYjNDM7XHRyZXR1cm4gYWM7XG4gfVxuIFxuIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzID0ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaFxuaW5kZXggNDk5NjUzNmZiZDE0ZjEuLmI2YmM4YjcyZDgxMjBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbkBAIC0yNzMsNyAmIzQzOzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHtcbiBcdHUxNiAoKm1wZHVfaW5mb19nZXRfcGVlcmlkKShzdHJ1Y3QgaGFsX3J4X21wZHVfaW5mbyAqbXBkdV9pbmZvKTtcbiBcdGJvb2wgKCpyeF9kZXNjX21hY19hZGRyMl92YWxpZCkoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcbiBcdHU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcbi1cdHUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiYjNDM7XHR1MzIgKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xuIH07XG4gXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkZS4uOTgxM2Y3OTIzYzM0ZjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5AQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDU5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuJiM0MztcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuJiM0MztcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4mIzQzO1x0fTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4mIzQzO1x0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XG4mIzQzO1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdHUzMiByaW5nX3NlbGVjdG9yO1xuJiM0MztcdGludCBudW1fZnJlZTtcbiYjNDM7XHR1OCByaW5nX2lkO1xuJiM0MztcbiYjNDM7XHRpZiAoIWFyKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRyaW5nX3NlbGVjdG9yID0gYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXHUwMDNlYWMpO1xuJiM0MztcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzO1xuJiM0MztcdHR4X3JpbmcgPSBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkcC50eF9yaW5nW3JpbmdfaWRdO1xuJiM0MztcdHRjbF9yaW5nID0gXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlaGFsLnNybmdfbGlzdFt0eF9yaW5nLVx1MDAzZXRjbF9kYXRhX3JpbmcucmluZ19pZF07XG4mIzQzO1xuJiM0MztcdHdoaWxlICgxKSB7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuJiM0MztcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGh3LCB0eHEpO1xuJiM0MztcdFx0aWYgKCFza2IpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRhdGgxMWtfbWFjX29wX3R4KGh3LCBcdTAwMjZjb250cm9sLCBza2IpO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTFrX21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4mIzQzO1x0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcbiBcdC5zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0YXJ0LFxuIFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCxcbiBcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuaW5kZXggYWY1ZjExZmMxZDg0YWIuLjNkNDZjZmJmMGExYzNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbkBAIC0xNTM5LDYgJiM0MzsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5pbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTU4LDYgJiM0Mzs1OCw4IEBAIHN0cnVjdCBkcF90eF9yaW5nIHtcbiBcdHU4IHRjbF9kYXRhX3JpbmdfaWQ7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfZGF0YV9yaW5nO1xuIFx0c3RydWN0IGRwX3NybmcgdGNsX2NvbXBfcmluZztcbiYjNDM7XHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXG4mIzQzO1x0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XG4gXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcbiBcdGludCB0eF9zdGF0dXNfaGVhZDtcbiBcdGludCB0eF9zdGF0dXNfdGFpbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuaW5kZXggYTE2NDU2M2ZmZjI4OWMuLjA3MWNiNWQzMDkzMTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICYjNDM7MzkwLDcgQEAgaW50IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IGhhbF9zcm5nICpzcm5nLFxuIFx0ZWxzZVxuIFx0XHRyZXR1cm4gKChzcm5nLVx1MDAzZXJpbmdfc2l6ZSAtIGhwICYjNDM7IHRwKSAvIHNybmctXHUwMDNlZW50cnlfc2l6ZSkgLSAxO1xuIH1cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XG4gXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaGFsX3NybmcgKnNybmcpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCA4NmZiOGI3MTk2MTM1MC4uNjVjYWE3YTIzNDlmMTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxuQEAgLTI0Myw3ICYjNDM7MjQzLDcgQEAgc3RydWN0IGF0aDEya19od19vcHMge1xuIFx0aW50ICgqbWFjX2lkX3RvX3BkZXZfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7XG4gXHRpbnQgKCptYWNfaWRfdG9fc3JuZ19pZCkoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LCBpbnQgbWFjX2lkKTtcbiBcdGludCAoKnJ4ZG1hX3Jpbmdfc2VsX2NvbmZpZykoc3RydWN0IGF0aDEya19iYXNlICphYik7XG4tXHR1OCAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiYjNDM7XHR1OCAoKmdldF9yaW5nX3NlbGVjdG9yKSh1OCBhYyk7XG4gXHRib29sICgqZHBfc3JuZ19pc190eF9jb21wX3JpbmcpKGludCByaW5nX251bSk7XG4gXHRib29sICgqaXNfZnJhbWVfbGlua19hZ25vc3RpYykoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbmluZGV4IGQyNzQ5ZGU0NDU1MzRhLi43NDM1OWU4ZWVhNDcxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5AQCAtMTExLDcgJiM0MzsxMTEsNyBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxuIFx0ICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuXG4gXHQgKiBUT0RPOiBBZGQgdGhyb3R0bGluZyBsb2dpYyB3aGVuIGFsbCByaW5ncyBhcmUgZnVsbFxuIFx0ICovXG4tXHRyaW5nX3NlbGVjdG9yID0gZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2IpO1xuJiM0MztcdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcbiBcbiB0Y2xfcmluZ19zZWw6XG4gXHR0Y2xfcmluZ19yZXRyeSA9IGZhbHNlO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuaW5kZXggZDlmZGQyZmM4Mjk4NmEuLmFmMGEzYmE4MDVkZGRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbkBAIC00OSw3ICYjNDM7NDksNyBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfcWNuOTI3NChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl9xY245Mjc0KHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NCh1OCBhYylcbiB7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbkBAIC04Myw5ICYjNDM7ODMsOSBAQCBhdGgxMmtfd2lmaTdfaHdfbWFjX2lkX3RvX3NybmdfaWRfd2NuNzg1MChjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsXG4gXHRyZXR1cm4gbWFjX2lkO1xuIH1cbiBcbi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7c3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl93Y243ODUwKHU4IGFjKVxuIHtcbi1cdHJldHVybiBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTtcbiYjNDM7XHRyZXR1cm4gYWM7XG4gfVxuIFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbkBAIC0xMTAwLDkgJiM0MzsxMTAwLDgzIEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtXHUwMDNldmlmKTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGF0aDEya19od190b19haChodyk7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XG4mIzQzO1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbiYjNDM7XHR9O1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSB0eHEtXHUwMDNldmlmO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuJiM0MztcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuJiM0MztcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4mIzQzO1x0c3RydWN0IGF0aDEya19zdGEgKmFoc3RhO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0c3RydWN0IGF0aDEyayAqYXI7XG4mIzQzO1x0dTggcmluZ19zZWxlY3RvcjtcbiYjNDM7XHRpbnQgbnVtX2ZyZWU7XG4mIzQzO1x0dTggcmluZ19pZDtcbiYjNDM7XHR1OCBsaW5rX2lkO1xuJiM0MztcbiYjNDM7XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSBcdTAwMjZcdTAwMjYgdHhxLVx1MDAzZXN0YSkge1xuJiM0MztcdFx0YWhzdGEgPSBhdGgxMmtfc3RhX3RvX2Foc3RhKHR4cS1cdTAwM2VzdGEpO1xuJiM0MztcdFx0bGlua19pZCA9IGFoc3RhLVx1MDAzZWFzc29jX2xpbmtfaWQ7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGxpbmtfaWQgPSBhaHZpZi1cdTAwM2VkZWZsaW5rLmxpbmtfaWQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1xuJiM0MztcdGFydmlmID0gcmN1X2RlcmVmZXJlbmNlKGFodmlmLVx1MDAzZWxpbmtbbGlua19pZF0pO1xuJiM0MztcdGlmICghYXJ2aWYgfHwgIWFydmlmLVx1MDAzZWFyKSB7XG4mIzQzO1x0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGFyID0gYXJ2aWYtXHUwMDNlYXI7XG4mIzQzO1x0ZHAgPSBhci1cdTAwM2VhYi1cdTAwM2VkcDtcbiYjNDM7XG4mIzQzO1x0cmluZ19zZWxlY3RvciA9IGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vod19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVx1MDAzZWFjKTtcbiYjNDM7XHRyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZztcbiYjNDM7XHR0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tyaW5nX2lkXTtcbiYjNDM7XHR0Y2xfcmluZyA9IFx1MDAyNmRwLVx1MDAzZWhhbC1cdTAwM2Vzcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuJiM0MztcbiYjNDM7XHR3aGlsZSAoMSkge1xuJiM0MztcdFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILFxuJiM0MztcdFx0XHRcdCAgICAgIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcbiYjNDM7XHRcdHNwaW5fbG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKG51bV9mcmVlID09IDApIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcbiYjNDM7XHRcdGlmICghc2tiKSB7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YXRoMTJrX3dpZmk3X21hY19vcF90eChodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbiYjNDM7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbiYjNDM7XHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDk6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiNzg4MmQ4YmVkODJiYTdiOWVhNzU2ZjU5YWUxMDI0OGU5MjU5ZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwOToxMTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwppbmRleCBmMzg5Yjk3YWNiZGQ1ZC4uMmU1OTc4ZWMyYjA1YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKQEAgLTEwODcsNiAmIzQzOzEwODcsNyBAQCBpbnQgYXRoMTFrX2RwX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFiLSZndDtod19wYXJhbXMuaGFsX3BhcmFtcy0mZ3Q7bnVtX3R4X3JpbmdzOyBpJiM0MzsmIzQzOykgewogCQlpZHJfaW5pdCgmYW1wO2RwLSZndDt0eF9yaW5nW2ldLnR4YnVmX2lkcik7CiAJCXNwaW5fbG9ja19pbml0KCZhbXA7ZHAtJmd0O3R4X3JpbmdbaV0udHhfaWRyX2xvY2spOwomIzQzOwkJc3Bpbl9sb2NrX2luaXQoJmFtcDtkcC0mZ3Q7dHhfcmluZ1tpXS53YWtlX3R4X2xvY2spOwogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTsKIAogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKaW5kZXggODRmNjY4MzlmMGM2ZGUuLjZkOTk1MDFhYTI2OWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oCkBAIC04Nyw2ICYjNDM7ODcsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7CiAJc3RydWN0IGlkciB0eGJ1Zl9pZHI7CiAJLyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqLwogCXNwaW5sb2NrX3QgdHhfaWRyX2xvY2s7CiYjNDM7CS8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi8KJiM0MzsJc3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7CiAJc3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7CiAJaW50IHR4X3N0YXR1c19oZWFkOwogCWludCB0eF9zdGF0dXNfdGFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYwppbmRleCBjYWM5NzBjOTI4MDZhMi4uMDgzYWNhOGZmMzU1YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmMKQEAgLTEwOCw3ICYjNDM7MTA4LDcgQEAgaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLAogCiAJcG9vbF9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpICZhbXA7IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpOwogCi0JcmluZ19zZWxlY3RvciA9IGFiLSZndDtod19wYXJhbXMuaHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3Rvcihza2IpOwomIzQzOwlyaW5nX3NlbGVjdG9yID0gYWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTsKIAogdGNsX3Jpbmdfc2VsOgogCXRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMKaW5kZXggOTNmOWEwM2M0OGRjMGYuLjhhMjhjMWQ0YzE3YjZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jCkBAIC04NzYsMjggJiM0Mzs4NzYsMTQgQEAgc3RhdGljIGJvb2wgYXRoMTFrX2h3X3djbjY4NTVfcnhfZGVzY19nZXRfbGRwY19zdXBwb3J0KHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYykKIAkJCSBfX2xlMzJfdG9fY3B1KGRlc2MtJmd0O3Uud2NuNjg1NS5tc2R1X3N0YXJ0LmluZm8yKSk7CiB9CiAKLXN0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpCi17Ci0JLyogTGV0IHRoZSBkZWZhdWx0IHJpbmcgc2VsZWN0aW9uIGJlIGJhc2VkIG9uIGN1cnJlbnQgcHJvY2Vzc29yCi0JICogbnVtYmVyLCB3aGVyZSBvbmUgb2YgdGhlIDMgdGNsIHJpbmdzIGFyZSBzZWxlY3RlZCBiYXNlZCBvbgotCSAqIHRoZSBzbXBfcHJvY2Vzc29yX2lkKCkuIEluIGNhc2UgdGhhdCByaW5nCi0JICogaXMgZnVsbC9idXN5LCB3ZSByZXNvcnQgdG8gb3RoZXIgYXZhaWxhYmxlIHJpbmdzLgotCSAqIElmIGFsbCByaW5ncyBhcmUgZnVsbCwgd2UgZHJvcCB0aGUgcGFja2V0LgotCSAqCi0JICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGwKLQkgKi8KJiM0MztzdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYykKJiM0Mzt7CiAJcmV0dXJuIHNtcF9wcm9jZXNzb3JfaWQoKTsKIH0KIAotc3RhdGljIHUzMiBhdGgxMWtfaHdfd2NuNjc1MF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYykKIHsKLQkvKiBTZWxlY3QgdGhlIFRDTCByaW5nIGJhc2VkIG9uIHRoZSBmbG93IGhhc2ggb2YgdGhlIFNLQiBpbnN0ZWFkCi0JICogb2YgQ1BVIElELiBTaW5jZSBhcHBsaWNhdGlvbnMgcHVtcGluZyB0aGUgdHJhZmZpYyBjYW4gYmUgc2NoZWR1bGVkCi0JICogb24gbXVsdGlwbGUgQ1BVcywgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCBwYWNrZXRzIG9mIHRoZSBzYW1lIGZsb3cKLQkgKiBjb3VsZCBlbmQgb24gZGlmZmVyZW50IFRDTCByaW5ncywgdGhpcyBjb3VsZCBzb21ldGltZXMgcmVzdWx0cyBpbgotCSAqIGFuIG91dCBvZiBvcmRlciBhcnJpdmFsIG9mIHRoZSBwYWNrZXRzIGF0IHRoZSByZWNlaXZlci4KLQkgKi8KLQlyZXR1cm4gc2tiX2dldF9oYXNoKHNrYik7CiYjNDM7CXJldHVybiBhYzsKIH0KIAogY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHMgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmgKaW5kZXggNDk5NjUzNmZiZDE0ZjEuLmI2YmM4YjcyZDgxMjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oCkBAIC0yNzMsNyAmIzQzOzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHsKIAl1MTYgKCptcGR1X2luZm9fZ2V0X3BlZXJpZCkoc3RydWN0IGhhbF9yeF9tcGR1X2luZm8gKm1wZHVfaW5mbyk7CiAJYm9vbCAoKnJ4X2Rlc2NfbWFjX2FkZHIyX3ZhbGlkKShzdHJ1Y3QgaGFsX3J4X2Rlc2MgKmRlc2MpOwogCXU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTsKLQl1MzIgKCpnZXRfcmluZ19zZWxlY3Rvcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7CiYjNDM7CXUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKSh1OCBhYyk7CiB9OwogCiBleHRlcm4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwppbmRleCAyZDU1Y2RjNGQxNjVkZS4uOTgxM2Y3OTIzYzM0ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwpAQCAtMTAwNjUsOSAmIzQzOzEwMDY1LDU5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKJiM0MzsJCQkJCXN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsKJiM0MzsJCS5zdGEgPSB0eHEtJmd0O3N0YSwKJiM0MzsJfTsKJiM0MzsJc3RydWN0IGF0aDExayAqYXIgPSBody0mZ3Q7cHJpdjsKJiM0MzsJc3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7CiYjNDM7CXN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CXUzMiByaW5nX3NlbGVjdG9yOwomIzQzOwlpbnQgbnVtX2ZyZWU7CiYjNDM7CXU4IHJpbmdfaWQ7CiYjNDM7CiYjNDM7CWlmICghYXIpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXJpbmdfc2VsZWN0b3IgPSBhci0mZ3Q7YWItJmd0O2h3X3BhcmFtcy5od19vcHMtJmd0O2dldF9yaW5nX3NlbGVjdG9yKHR4cS0mZ3Q7YWMpOwomIzQzOwlyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGFyLSZndDthYi0mZ3Q7aHdfcGFyYW1zLmhhbF9wYXJhbXMtJmd0O251bV90eF9yaW5nczsKJiM0MzsJdHhfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtkcC50eF9yaW5nW3JpbmdfaWRdOwomIzQzOwl0Y2xfcmluZyA9ICZhbXA7YXItJmd0O2FiLSZndDtoYWwuc3JuZ19saXN0W3R4X3JpbmctJmd0O3RjbF9kYXRhX3JpbmcucmluZ19pZF07CiYjNDM7CiYjNDM7CXdoaWxlICgxKSB7CiYjNDM7CQlpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTFLX0ZMQUdfQ1JBU0hfRkxVU0gsCiYjNDM7CQkJCSAgICAgICZhbXA7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CQludW1fZnJlZSA9IGF0aDExa19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItJmd0O2FiLCB0Y2xfcmluZywgdHJ1ZSk7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJCWlmIChudW1fZnJlZSA9PSAwKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7CiYjNDM7CQlpZiAoIXNrYikgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWF0aDExa19tYWNfb3BfdHgoaHcsICZhbXA7Y29udHJvbCwgc2tiKTsKJiM0MzsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMWtfb3BzID0gewogCS50eAkJCQk9IGF0aDExa19tYWNfb3BfdHgsCi0JLndha2VfdHhfcXVldWUJCQk9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSwKJiM0MzsJLndha2VfdHhfcXVldWUJCQk9IGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZSwKIAkuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCwKIAkuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLAogCS5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jCmluZGV4IGFmNWYxMWZjMWQ4NGFiLi4zZDQ2Y2ZiZjBhMWMzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYwpAQCAtMTUzOSw2ICYjNDM7MTUzOSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX2RwX3NldHVwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiAJfQogCiAJZm9yIChpID0gMDsgaSAmbHQ7IGFiLSZndDtod19wYXJhbXMtJmd0O21heF90eF9yaW5nOyBpJiM0MzsmIzQzOykgewomIzQzOwkJc3Bpbl9sb2NrX2luaXQoJmFtcDtkcC0mZ3Q7dHhfcmluZ1tpXS53YWtlX3R4X2xvY2spOwogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTsKIAogCQlkcC0mZ3Q7dHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKaW5kZXggZjhjZmM3YmIyOWRkNzguLjY4ZDIwMjBiZTliODY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oCkBAIC01OCw2ICYjNDM7NTgsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7CiAJdTggdGNsX2RhdGFfcmluZ19pZDsKIAlzdHJ1Y3QgZHBfc3JuZyB0Y2xfZGF0YV9yaW5nOwogCXN0cnVjdCBkcF9zcm5nIHRjbF9jb21wX3Jpbmc7CiYjNDM7CS8qIFNlcmlhbGl6ZXMgd2FrZV90eF9xdWV1ZSBvcGVyYXRpb25zIGZvciB0aGlzIHJpbmcgKi8KJiM0MzsJc3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7CiAJc3RydWN0IGhhbF93Ym1fY29tcGxldGlvbl9yaW5nX3R4ICp0eF9zdGF0dXM7CiAJaW50IHR4X3N0YXR1c19oZWFkOwogCWludCB0eF9zdGF0dXNfdGFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jCmluZGV4IGExNjQ1NjNmZmYyODljLi4wNzFjYjVkMzA5MzEwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jCkBAIC0zOTAsNiAmIzQzOzM5MCw3IEBAIGludCBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBoYWxfc3JuZyAqc3JuZywKIAllbHNlCiAJCXJldHVybiAoKHNybmctJmd0O3Jpbmdfc2l6ZSAtIGhwICYjNDM7IHRwKSAvIHNybmctJmd0O2VudHJ5X3NpemUpIC0gMTsKIH0KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKTsKIAogdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYiwKIAkJCQkgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCmluZGV4IDg2ZmI4YjcxOTYxMzUwLi42NWNhYTdhMjM0OWYxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaApAQCAtMjQzLDcgJiM0MzsyNDMsNyBAQCBzdHJ1Y3QgYXRoMTJrX2h3X29wcyB7CiAJaW50ICgqbWFjX2lkX3RvX3BkZXZfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7CiAJaW50ICgqbWFjX2lkX3RvX3NybmdfaWQpKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywgaW50IG1hY19pZCk7CiAJaW50ICgqcnhkbWFfcmluZ19zZWxfY29uZmlnKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTsKLQl1OCAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKJiM0MzsJdTggKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpOwogCWJvb2wgKCpkcF9zcm5nX2lzX3R4X2NvbXBfcmluZykoaW50IHJpbmdfbnVtKTsKIAlib29sICgqaXNfZnJhbWVfbGlua19hZ25vc3RpYykoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsCiAJCQkJICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKaW5kZXggZDI3NDlkZTQ0NTUzNGEuLjc0MzU5ZThlZWE0NzExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jCkBAIC0xMTEsNyAmIzQzOzExMSw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphCiAJICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuCiAJICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGwKIAkgKi8KLQlyaW5nX3NlbGVjdG9yID0gZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7aHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3Rvcihza2IpOwomIzQzOwlyaW5nX3NlbGVjdG9yID0gZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7aHdfb3BzLSZndDtnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7CiAKIHRjbF9yaW5nX3NlbDoKIAl0Y2xfcmluZ19yZXRyeSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCmluZGV4IGQ5ZmRkMmZjODI5ODZhLi5hZjBhM2JhODA1ZGRkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwpAQCAtNDksNyAmIzQzOzQ5LDcgQEAgYXRoMTJrX3dpZmk3X2h3X21hY19pZF90b19zcm5nX2lkX3FjbjkyNzQoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQoc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQodTggYWMpCiB7CiAJcmV0dXJuIHNtcF9wcm9jZXNzb3JfaWQoKTsKIH0KQEAgLTgzLDkgJiM0Mzs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodywKIAlyZXR1cm4gbWFjX2lkOwogfQogCi1zdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAoc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MztzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3djbjc4NTAodTggYWMpCiB7Ci0JcmV0dXJuIHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpOwomIzQzOwlyZXR1cm4gYWM7CiB9CiAKIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSkKQEAgLTExMDAsOSAmIzQzOzExMDAsODMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAl9CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiYjNDM7CQkJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtJmd0O3ZpZik7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2h3X3RvX2FoKGh3KTsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7CiYjNDM7CQkuc3RhID0gdHhxLSZndDtzdGEsCiYjNDM7CX07CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPSB0eHEtJmd0O3ZpZjsKJiM0MzsJc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWY7CiYjNDM7CXN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nOwomIzQzOwlzdHJ1Y3QgaGFsX3NybmcgKnRjbF9yaW5nOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX3N0YSAqYWhzdGE7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHAgKmRwOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlzdHJ1Y3QgYXRoMTJrICphcjsKJiM0MzsJdTggcmluZ19zZWxlY3RvcjsKJiM0MzsJaW50IG51bV9mcmVlOwomIzQzOwl1OCByaW5nX2lkOwomIzQzOwl1OCBsaW5rX2lkOwomIzQzOwomIzQzOwlpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSAmYW1wOyZhbXA7IHR4cS0mZ3Q7c3RhKSB7CiYjNDM7CQlhaHN0YSA9IGF0aDEya19zdGFfdG9fYWhzdGEodHhxLSZndDtzdGEpOwomIzQzOwkJbGlua19pZCA9IGFoc3RhLSZndDthc3NvY19saW5rX2lkOwomIzQzOwl9IGVsc2UgewomIzQzOwkJbGlua19pZCA9IGFodmlmLSZndDtkZWZsaW5rLmxpbmtfaWQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwomIzQzOwlhcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi0mZ3Q7bGlua1tsaW5rX2lkXSk7CiYjNDM7CWlmICghYXJ2aWYgfHwgIWFydmlmLSZndDthcikgewomIzQzOwkJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJYXIgPSBhcnZpZi0mZ3Q7YXI7CiYjNDM7CWRwID0gYXItJmd0O2FiLSZndDtkcDsKJiM0MzsKJiM0MzsJcmluZ19zZWxlY3RvciA9IGRwLSZndDtod19wYXJhbXMtJmd0O2h3X29wcy0mZ3Q7Z2V0X3Jpbmdfc2VsZWN0b3IodHhxLSZndDthYyk7CiYjNDM7CXJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgZHAtJmd0O2h3X3BhcmFtcy0mZ3Q7bWF4X3R4X3Jpbmc7CiYjNDM7CXR4X3JpbmcgPSAmYW1wO2RwLSZndDt0eF9yaW5nW3JpbmdfaWRdOwomIzQzOwl0Y2xfcmluZyA9ICZhbXA7ZHAtJmd0O2hhbC0mZ3Q7c3JuZ19saXN0W3R4X3JpbmctJmd0O3RjbF9kYXRhX3JpbmcucmluZ19pZF07CiYjNDM7CiYjNDM7CXdoaWxlICgxKSB7CiYjNDM7CQlpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsCiYjNDM7CQkJCSAgICAgICZhbXA7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3R4X3JpbmctJmd0O3dha2VfdHhfbG9jayk7CiYjNDM7CiYjNDM7CQlzcGluX2xvY2soJmFtcDt0Y2xfcmluZy0mZ3Q7bG9jayk7CiYjNDM7CQludW1fZnJlZSA9IGF0aDEya19oYWxfc3JuZ19zcmNfbnVtX2ZyZWUoYXItJmd0O2FiLCB0Y2xfcmluZywgdHJ1ZSk7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO3RjbF9yaW5nLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJCWlmIChudW1fZnJlZSA9PSAwKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2tfYmgoJmFtcDt0eF9yaW5nLSZndDt3YWtlX3R4X2xvY2spOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7CiYjNDM7CQlpZiAoIXNrYikgewomIzQzOwkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsICZhbXA7Y29udHJvbCwgc2tiKTsKJiM0MzsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7dHhfcmluZy0mZ3Q7d2FrZV90eF9sb2NrKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHsKIAkudHgJCQkJPSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LAotCS53YWtlX3R4X3F1ZXVlCQkJPSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsCiYjNDM7CS53YWtlX3R4X3F1ZXVlCQkJPSBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUsCiAJLnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RhcnQsCiAJLnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RvcCwKIAkucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ4NgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogYXRoMTFrL2F0aDEyayBEcml2ZXIgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpdmVzIGludG8gdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGEgbmV3IGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIGFuZCBzb21lIGNoYW5nZXMgdG8gcmluZyBzZWxlY3Rpb24uICBUaGUgY29yZSBvZiB0aGUgaXNzdWUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBpcyB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxpa2UgbW9zdCBzcGVjaWFsaXplZCBoYXJkd2FyZSBkcml2ZXJzLCB0aGVzZSBhcmUgbGlrZWx5IGJvdW5kIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiAgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGF0JiMzOTtzIHRoZSBjYXNlLgoKTXkgdW5kZXJzdGFuZGluZyBvZiB0aGVzZSBkcml2ZXJzIGlzIHRoYXQgdGhleSBhcmUgUXVhbGNvbW0gQXRoZXJvcyBkcml2ZXJzIGZvciA4MDIuMTFheC9iZSBkZXZpY2VzLCBwcmltYXJpbHkgUENJIG9yIEFIQiBiYXNlZC4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgZGVkaWNhdGVkIHNvZnR3YXJlIGVtdWxhdGlvbiBsYXllciwgbGlrZSBhIGBtYWM4MDIxMV9od3NpbWAgZXF1aXZhbGVudCwgd2hpY2ggSSBrbm93IGlzIHNlcGFyYXRlLCB0aGVzZSBkcml2ZXJzIHdpbGwgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gIFRoZSBxdWVzdGlvbiBpczogY2FuIHdlIGZha2UgaXQgd2l0aCBhIHZpcnR1YWwgUENJIGRldmljZT8gU3l6a2FsbGVyLCBpbiBteSBleHBlcmllbmNlLCBkb2VzbiYjMzk7dCB1c3VhbGx5IG9mZmVyIHNwZWNpZmljIGVtdWxhdGlvbiBmb3IgcGFydGljdWxhciBXaS1GaSBjYXJkcy4KCkxldCBtZSBqdXN0IGNoZWNrIGZvciBhbnkgZXhpc3RpbmcgZW11bGF0aW9uIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSBpdHNlbGYuIEEgcXVpY2sgYGdyZXBgIGZvciBgYXRoMTFrYCBvciBgYXRoMTJrYCBzaG91bGQgc2hvdyBpZiB0aGVyZSYjMzk7cyBhbnkgdmlydHVhbCBkZXZpY2UgaW1wbGVtZW50YXRpb24gSSYjMzk7bSBtaXNzaW5nLiAgQnV0LCByZWFsaXN0aWNhbGx5LCBJIGRvbiYjMzk7dCBleHBlY3QgdG8gZmluZCBhbnl0aGluZy4KCldhaXQuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgY2xlYXIgZXhjbHVzaW9uOiAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkFuZCAqYmluZ28qISBUaGVzZSBgYXRoMTFrYCBhbmQgYGF0aDEya2AgZHJpdmVycyBhcmUgKmV4YWN0bHkqIHRoYXQuIFRoZXkgYXJlIHZlbmRvci1zcGVjaWZpYyAoUXVhbGNvbW0pLCBhbmQgdGhleSAqZG8qIHJlcXVpcmUgUENJZS9BSEIgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IFBDSS9BSEIgZGVwZW5kZW5jeTsgeWVzLCBgYXRoMTFrYCBoYXMgYHBjaS5jYCBhbmQgYGFoYi5jYCwgYW5kIGBhdGgxMmtgIGhhcyBgcGNpLmNgLgoKVGhlcmVmb3JlLCB0aGUgbGlrZWxpaG9vZCBvZiBiZWluZyBhYmxlIHRvIGZ1enogdGhlc2UgZWZmZWN0aXZlbHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFIGlzIGVzc2VudGlhbGx5IHplcm8uIENvbnNlcXVlbnRseSwgdGhlIGFuc3dlciBpcyAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LiBJIHNob3VsZCB1c2UgdGhlIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBkb3VibGUgY2hlY2sgdGhhdCB0aGlzIGlzIGFjY3VyYXRlIGFuZCB0byBiZSBzdXJlIHRoYXQgdGhlcmUgaXMgbm8gZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa19wY2lfcHJvYmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz05NDA9c3RhdGljIGludCBhdGgxMWtfcGNpX3NldF9pcnFfYWZmaW5pdHlfaGludChzdHJ1Y3QgYXRoMTFrX3BjaSAqYWJfcGNpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzo5NDk6c3RhdGljIGludCBhdGgxMWtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy05NTAtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTI5Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgYXRoMTFrX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVx0LmlkX3RhYmxlID0gYXRoMTFrX3BjaV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTI5OTpcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMDAtXHQucmVtb3ZlID0gYXRoMTFrX3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDk6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyMAoJCQkJCQkJb3V0cHV0OiA4OQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmc9RmFsc2UqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQmIzM5O3Mgd29ya2luZyB3aXRoIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCwgYXMgd2Uga25vdywgYXJlIHByZXR0eSBzdGFuZGFyZCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IGludGVyZmFjZSB3aXRoIHRoZSBQQ0llIGFuZCBBSEIgYnVzZXMuIFRoZSBwcm9ibGVtIGhlcmUsIGFuZCBpdCYjMzk7cyBhIGNyaXRpY2FsIG9uZSBmb3IgZnV6emluZywgaXMgdGhlIGxhY2sgb2YgUUVNVSBlbXVsYXRpb24gZm9yIHRob3NlIHBhcnRpY3VsYXIgV2ktRmkgY2FyZHMuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUgZGVwZW5kZW5jaWVzIHRoYXQganVzdCBhcmVuJiMzOTt0IGdvaW5nIHRvIGJlIHJlcGxpY2F0ZWQgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXaXRob3V0IHRoYXQgZW11bGF0aW9uLCB0aGUgY29kZSBtb2RpZmljYXRpb25zIHNpbXBseSB3b24mIzM5O3QgYmUgcmVhY2hhYmxlIGR1cmluZyBhIGZ1enppbmcgY2FtcGFpZ24uIFNvLCBnaXZlbiB0aG9zZSBjb25zdHJhaW50cywgSSYjMzk7bSBnb2luZyB0byBzZXQgV29ydGhGdXp6aW5nIHRvIGZhbHNlLiBUaGUganVpY2UganVzdCBpc24mIzM5O3Qgd29ydGggdGhlIHNxdWVlemUgaW4gdGhpcyBzY2VuYXJpby4gV2UmIzM5O2QgYmUgd2FzdGluZyBvdXIgdGltZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDExayBhbmQgYXRoMTJrIFdpLUZpIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgZHJpdmVycy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDk6MTE6MzYuMTk2NzYwOTM5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNjk4ODY0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDk6MTE6MzYuMTk2NzY5MzI5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjEzOTc5MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmYjc4ODJkOGJlZDgyYmE3YjllYTc1NmY1OWFlMTAyNDhlOTI1OWY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDA5OjExOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbmluZGV4IGYzODliOTdhY2JkZDVkLi4yZTU5NzhlYzJiMDViYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcXG5AQCAtMTA4Nyw2ICsxMDg3LDcgQEAgaW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVxcdTAwM2VudW1fdHhfcmluZ3M7IGkrKykge1xcbiBcXHRcXHRpZHJfaW5pdChcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhidWZfaWRyKTtcXG4gXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLnR4X2lkcl9sb2NrKTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XFxuIFxcdFxcdGRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xcbiBcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcXG5pbmRleCA4NGY2NjgzOWYwYzZkZS4uNmQ5OTUwMWFhMjY5YzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXFxuQEAgLTg3LDYgKzg3LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xcbiBcXHRzdHJ1Y3QgaWRyIHR4YnVmX2lkcjtcXG4gXFx0LyogUHJvdGVjdHMgdHhidWZfaWRyIGFuZCBudW1fcGVuZGluZyAqL1xcbiBcXHRzcGlubG9ja190IHR4X2lkcl9sb2NrO1xcbitcXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXFxuK1xcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xcbiBcXHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcXG4gXFx0aW50IHR4X3N0YXR1c19oZWFkO1xcbiBcXHRpbnQgdHhfc3RhdHVzX3RhaWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xcbmluZGV4IGNhYzk3MGM5MjgwNmEyLi4wODNhY2E4ZmYzNTViYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcXG5AQCAtMTA4LDcgKzEwOCw3IEBAIGludCBhdGgxMWtfZHBfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcXG4gXFxuIFxcdHBvb2xfaWQgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSBcXHUwMDI2IChBVEgxMUtfSFdfTUFYX1FVRVVFUyAtIDEpO1xcbiBcXG4tXFx0cmluZ19zZWxlY3RvciA9IGFiLVxcdTAwM2Vod19wYXJhbXMuaHdfb3BzLVxcdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2IpO1xcbitcXHRyaW5nX3NlbGVjdG9yID0gYWItXFx1MDAzZWh3X3BhcmFtcy5od19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcXG4gXFxuIHRjbF9yaW5nX3NlbDpcXG4gXFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXFxuaW5kZXggOTNmOWEwM2M0OGRjMGYuLjhhMjhjMWQ0YzE3YjZlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xcbkBAIC04NzYsMjggKzg3NiwxNCBAQCBzdGF0aWMgYm9vbCBhdGgxMWtfaHdfd2NuNjg1NV9yeF9kZXNjX2dldF9sZHBjX3N1cHBvcnQoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKVxcbiBcXHRcXHRcXHQgX19sZTMyX3RvX2NwdShkZXNjLVxcdTAwM2V1LndjbjY4NTUubXNkdV9zdGFydC5pbmZvMikpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi17XFxuLVxcdC8qIExldCB0aGUgZGVmYXVsdCByaW5nIHNlbGVjdGlvbiBiZSBiYXNlZCBvbiBjdXJyZW50IHByb2Nlc3Nvclxcbi1cXHQgKiBudW1iZXIsIHdoZXJlIG9uZSBvZiB0aGUgMyB0Y2wgcmluZ3MgYXJlIHNlbGVjdGVkIGJhc2VkIG9uXFxuLVxcdCAqIHRoZSBzbXBfcHJvY2Vzc29yX2lkKCkuIEluIGNhc2UgdGhhdCByaW5nXFxuLVxcdCAqIGlzIGZ1bGwvYnVzeSwgd2UgcmVzb3J0IHRvIG90aGVyIGF2YWlsYWJsZSByaW5ncy5cXG4tXFx0ICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuXFxuLVxcdCAqXFxuLVxcdCAqIFRPRE86IEFkZCB0aHJvdHRsaW5nIGxvZ2ljIHdoZW4gYWxsIHJpbmdzIGFyZSBmdWxsXFxuLVxcdCAqL1xcbitzdGF0aWMgdTMyIGF0aDExa19od19pcHE4MDc0X2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYylcXG4re1xcbiBcXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3RvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitzdGF0aWMgdTMyIGF0aDExa19od193Y242NzUwX2dldF90Y2xfcmluZ19zZWxlY3Rvcih1OCBhYylcXG4ge1xcbi1cXHQvKiBTZWxlY3QgdGhlIFRDTCByaW5nIGJhc2VkIG9uIHRoZSBmbG93IGhhc2ggb2YgdGhlIFNLQiBpbnN0ZWFkXFxuLVxcdCAqIG9mIENQVSBJRC4gU2luY2UgYXBwbGljYXRpb25zIHB1bXBpbmcgdGhlIHRyYWZmaWMgY2FuIGJlIHNjaGVkdWxlZFxcbi1cXHQgKiBvbiBtdWx0aXBsZSBDUFVzLCB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IHBhY2tldHMgb2YgdGhlIHNhbWUgZmxvd1xcbi1cXHQgKiBjb3VsZCBlbmQgb24gZGlmZmVyZW50IFRDTCByaW5ncywgdGhpcyBjb3VsZCBzb21ldGltZXMgcmVzdWx0cyBpblxcbi1cXHQgKiBhbiBvdXQgb2Ygb3JkZXIgYXJyaXZhbCBvZiB0aGUgcGFja2V0cyBhdCB0aGUgcmVjZWl2ZXIuXFxuLVxcdCAqL1xcbi1cXHRyZXR1cm4gc2tiX2dldF9oYXNoKHNrYik7XFxuK1xcdHJldHVybiBhYztcXG4gfVxcbiBcXG4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHMgPSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaFxcbmluZGV4IDQ5OTY1MzZmYmQxNGYxLi5iNmJjOGI3MmQ4MTIwYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcXG5AQCAtMjczLDcgKzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHtcXG4gXFx0dTE2ICgqbXBkdV9pbmZvX2dldF9wZWVyaWQpKHN0cnVjdCBoYWxfcnhfbXBkdV9pbmZvICptcGR1X2luZm8pO1xcbiBcXHRib29sICgqcnhfZGVzY19tYWNfYWRkcjJfdmFsaWQpKHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYyk7XFxuIFxcdHU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcXG4tXFx0dTMyICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xcbitcXHR1MzIgKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xcbiB9O1xcbiBcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdGgxMWtfaHdfb3BzIGlwcTgwNzRfb3BzO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbmluZGV4IDJkNTVjZGM0ZDE2NWRlLi45ODEzZjc5MjNjMzRmMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbkBAIC0xMDA2NSw5ICsxMDA2NSw1OSBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuK3tcXG4rXFx0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XFxuK1xcdFxcdC5zdGEgPSB0eHEtXFx1MDAzZXN0YSxcXG4rXFx0fTtcXG4rXFx0c3RydWN0IGF0aDExayAqYXIgPSBody1cXHUwMDNlcHJpdjtcXG4rXFx0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XFxuK1xcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdHUzMiByaW5nX3NlbGVjdG9yO1xcbitcXHRpbnQgbnVtX2ZyZWU7XFxuK1xcdHU4IHJpbmdfaWQ7XFxuK1xcbitcXHRpZiAoIWFyKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRyaW5nX3NlbGVjdG9yID0gYXItXFx1MDAzZWFiLVxcdTAwM2Vod19wYXJhbXMuaHdfb3BzLVxcdTAwM2VnZXRfcmluZ19zZWxlY3Rvcih0eHEtXFx1MDAzZWFjKTtcXG4rXFx0cmluZ19pZCA9IHJpbmdfc2VsZWN0b3IgJSBhci1cXHUwMDNlYWItXFx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVxcdTAwM2VudW1fdHhfcmluZ3M7XFxuK1xcdHR4X3JpbmcgPSBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkcC50eF9yaW5nW3JpbmdfaWRdO1xcbitcXHR0Y2xfcmluZyA9IFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWhhbC5zcm5nX2xpc3RbdHhfcmluZy1cXHUwMDNldGNsX2RhdGFfcmluZy5yaW5nX2lkXTtcXG4rXFxuK1xcdHdoaWxlICgxKSB7XFxuK1xcdFxcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMUtfRkxBR19DUkFTSF9GTFVTSCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlZGV2X2ZsYWdzKSkpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXG4rXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZ0Y2xfcmluZy1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdG51bV9mcmVlID0gYXRoMTFrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cXHUwMDNlYWIsIHRjbF9yaW5nLCB0cnVlKTtcXG4rXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnRjbF9yaW5nLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdFxcdGlmIChudW1fZnJlZSA9PSAwKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XFxuK1xcdFxcdGlmICghc2tiKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0YXRoMTFrX21hY19vcF90eChodywgXFx1MDAyNmNvbnRyb2wsIHNrYik7XFxuK1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dHhfcmluZy1cXHUwMDNld2FrZV90eF9sb2NrKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcXG4gXFx0LnR4XFx0XFx0XFx0XFx0PSBhdGgxMWtfbWFjX29wX3R4LFxcbi1cXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxcbitcXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxcbiBcXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcXG4gXFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCxcXG4gXFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xcbmluZGV4IGFmNWYxMWZjMWQ4NGFiLi4zZDQ2Y2ZiZjBhMWMzZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcXG5AQCAtMTUzOSw2ICsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gXFx0fVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZW1heF90eF9yaW5nOyBpKyspIHtcXG4rXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW2ldLndha2VfdHhfbG9jayk7XFxuIFxcdFxcdGRwLVxcdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xcbiBcXG4gXFx0XFx0ZHAtXFx1MDAzZXR4X3JpbmdbaV0udHhfc3RhdHVzX2hlYWQgPSAwO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcXG5pbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xcbiBcXHR1OCB0Y2xfZGF0YV9yaW5nX2lkO1xcbiBcXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfZGF0YV9yaW5nO1xcbiBcXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xcbitcXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXFxuK1xcdHNwaW5sb2NrX3Qgd2FrZV90eF9sb2NrO1xcbiBcXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcXG4gXFx0aW50IHR4X3N0YXR1c19oZWFkO1xcbiBcXHRpbnQgdHhfc3RhdHVzX3RhaWw7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuaW5kZXggYTE2NDU2M2ZmZjI4OWMuLjA3MWNiNWQzMDkzMTBkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaGFsLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jXFxuQEAgLTM5MCw2ICszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXFxuIFxcdGVsc2VcXG4gXFx0XFx0cmV0dXJuICgoc3JuZy1cXHUwMDNlcmluZ19zaXplIC0gaHAgKyB0cCkgLyBzcm5nLVxcdTAwM2VlbnRyeV9zaXplKSAtIDE7XFxuIH1cXG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XFxuIFxcbiB2b2lkICphdGgxMmtfaGFsX3Nybmdfc3JjX25leHRfcGVlayhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IGhhbF9zcm5nICpzcm5nKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcXG5pbmRleCA4NmZiOGI3MTk2MTM1MC4uNjVjYWE3YTIzNDlmMTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXFxuQEAgLTI0Myw3ICsyNDMsNyBAQCBzdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XFxuIFxcdGludCAoKm1hY19pZF90b19wZGV2X2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpO1xcbiBcXHRpbnQgKCptYWNfaWRfdG9fc3JuZ19pZCkoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LCBpbnQgbWFjX2lkKTtcXG4gXFx0aW50ICgqcnhkbWFfcmluZ19zZWxfY29uZmlnKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG4tXFx0dTggKCpnZXRfcmluZ19zZWxlY3Rvcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuK1xcdHU4ICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHU4IGFjKTtcXG4gXFx0Ym9vbCAoKmRwX3NybmdfaXNfdHhfY29tcF9yaW5nKShpbnQgcmluZ19udW0pO1xcbiBcXHRib29sICgqaXNfZnJhbWVfbGlua19hZ25vc3RpYykoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcXG5pbmRleCBkMjc0OWRlNDQ1NTM0YS4uNzQzNTllOGVlYTQ3MTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXFxuQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxcbiBcXHQgKiBJZiBhbGwgcmluZ3MgYXJlIGZ1bGwsIHdlIGRyb3AgdGhlIHBhY2tldC5cXG4gXFx0ICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGxcXG4gXFx0ICovXFxuLVxcdHJpbmdfc2VsZWN0b3IgPSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vod19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XFxuK1xcdHJpbmdfc2VsZWN0b3IgPSBkcC1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2Vod19vcHMtXFx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpKTtcXG4gXFxuIHRjbF9yaW5nX3NlbDpcXG4gXFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXFxuaW5kZXggZDlmZGQyZmM4Mjk4NmEuLmFmMGEzYmE4MDVkZGRiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbkBAIC00OSw3ICs0OSw3IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF9xY245Mjc0KGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodyxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitzdGF0aWMgdTggYXRoMTJrX3dpZmk3X2h3X2dldF9yaW5nX3NlbGVjdG9yX3FjbjkyNzQodTggYWMpXFxuIHtcXG4gXFx0cmV0dXJuIHNtcF9wcm9jZXNzb3JfaWQoKTtcXG4gfVxcbkBAIC04Myw5ICs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodyxcXG4gXFx0cmV0dXJuIG1hY19pZDtcXG4gfVxcbiBcXG4tc3RhdGljIHU4IGF0aDEya193aWZpN19od19nZXRfcmluZ19zZWxlY3Rvcl93Y243ODUwKHN0cnVjdCBza19idWZmICpza2IpXFxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MCh1OCBhYylcXG4ge1xcbi1cXHRyZXR1cm4gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuK1xcdHJldHVybiBhYztcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3NybmdfaXNfY29tcF9yaW5nX3djbjc4NTAoaW50IHJpbmdfbnVtKVxcbkBAIC0xMTAwLDkgKzExMDAsODMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuK3tcXG4rXFx0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih0eHEtXFx1MDAzZXZpZik7XFxuK1xcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2h3X3RvX2FoKGh3KTtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sIGNvbnRyb2wgPSB7XFxuK1xcdFxcdC5zdGEgPSB0eHEtXFx1MDAzZXN0YSxcXG4rXFx0fTtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHR4cS1cXHUwMDNldmlmO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcXG4rXFx0c3RydWN0IGRwX3R4X3JpbmcgKnR4X3Jpbmc7XFxuK1xcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XFxuK1xcdHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YTtcXG4rXFx0c3RydWN0IGF0aDEya19kcCAqZHA7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbitcXHR1OCByaW5nX3NlbGVjdG9yO1xcbitcXHRpbnQgbnVtX2ZyZWU7XFxuK1xcdHU4IHJpbmdfaWQ7XFxuK1xcdHU4IGxpbmtfaWQ7XFxuK1xcbitcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSBcXHUwMDI2XFx1MDAyNiB0eHEtXFx1MDAzZXN0YSkge1xcbitcXHRcXHRhaHN0YSA9IGF0aDEya19zdGFfdG9fYWhzdGEodHhxLVxcdTAwM2VzdGEpO1xcbitcXHRcXHRsaW5rX2lkID0gYWhzdGEtXFx1MDAzZWFzc29jX2xpbmtfaWQ7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGxpbmtfaWQgPSBhaHZpZi1cXHUwMDNlZGVmbGluay5saW5rX2lkO1xcbitcXHR9XFxuK1xcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcbitcXHRhcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi1cXHUwMDNlbGlua1tsaW5rX2lkXSk7XFxuK1xcdGlmICghYXJ2aWYgfHwgIWFydmlmLVxcdTAwM2Vhcikge1xcbitcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRhciA9IGFydmlmLVxcdTAwM2VhcjtcXG4rXFx0ZHAgPSBhci1cXHUwMDNlYWItXFx1MDAzZWRwO1xcbitcXG4rXFx0cmluZ19zZWxlY3RvciA9IGRwLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWh3X29wcy1cXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVxcdTAwM2VhYyk7XFxuK1xcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgZHAtXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlbWF4X3R4X3Jpbmc7XFxuK1xcdHR4X3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbcmluZ19pZF07XFxuK1xcdHRjbF9yaW5nID0gXFx1MDAyNmRwLVxcdTAwM2VoYWwtXFx1MDAzZXNybmdfbGlzdFt0eF9yaW5nLVxcdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xcbitcXG4rXFx0d2hpbGUgKDEpIHtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILFxcbitcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcbitcXHRcXHRzcGluX2xvY2soXFx1MDAyNnRjbF9yaW5nLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0bnVtX2ZyZWUgPSBhdGgxMmtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVxcdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2dGNsX3JpbmctXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0XFx0aWYgKG51bV9mcmVlID09IDApIHtcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcXG4rXFx0XFx0aWYgKCFza2IpIHtcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnR4X3JpbmctXFx1MDAzZXdha2VfdHhfbG9jayk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRhdGgxMmtfd2lmaTdfbWFjX29wX3R4KGh3LCBcXHUwMDI2Y29udHJvbCwgc2tiKTtcXG4rXFxuK1xcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ0eF9yaW5nLVxcdTAwM2V3YWtlX3R4X2xvY2spO1xcbitcXHR9XFxuK1xcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEya19vcHNfd2lmaTcgPSB7XFxuIFxcdC50eFxcdFxcdFxcdFxcdD0gYXRoMTJrX3dpZmk3X21hY19vcF90eCxcXG4tXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcXG4rXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGF0aDEya193aWZpN19tYWNfb3Bfd2FrZV90eF9xdWV1ZSxcXG4gXFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDEya19tYWNfb3Bfc3RhcnQsXFxuIFxcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsXFxuIFxcdC5yZWNvbmZpZ19jb21wbGV0ZSAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwOToxMTozNy4xNTkwOTMzMTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNzQwNzU0NjEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDExayBhbmQgYXRoMTJrIFdpLUZpIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgZHJpdmVycy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYjc4ODJkOGJlZDgyYmE3YjllYTc1NmY1OWFlMTAyNDhlOTI1OWY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDk6MTE6MzQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGYzODliOTdhY2JkZDVkLi4yZTU5NzhlYzJiMDViYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG5AQCAtMTA4Nyw2ICsxMDg3LDcgQEAgaW50IGF0aDExa19kcF9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzOyBpKyspIHtcbiBcdFx0aWRyX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS50eGJ1Zl9pZHIpO1xuIFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X2lkcl9sb2NrKTtcbitcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tpXS53YWtlX3R4X2xvY2spO1xuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnRjbF9kYXRhX3JpbmdfaWQgPSBpO1xuIFxuIFx0XHRkcC1cdTAwM2V0eF9yaW5nW2ldLnR4X3N0YXR1c19oZWFkID0gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmhcbmluZGV4IDg0ZjY2ODM5ZjBjNmRlLi42ZDk5NTAxYWEyNjljNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5oXG5AQCAtODcsNiArODcsOCBAQCBzdHJ1Y3QgZHBfdHhfcmluZyB7XG4gXHRzdHJ1Y3QgaWRyIHR4YnVmX2lkcjtcbiBcdC8qIFByb3RlY3RzIHR4YnVmX2lkciBhbmQgbnVtX3BlbmRpbmcgKi9cbiBcdHNwaW5sb2NrX3QgdHhfaWRyX2xvY2s7XG4rXHQvKiBTZXJpYWxpemVzIHdha2VfdHhfcXVldWUgb3BlcmF0aW9ucyBmb3IgdGhpcyByaW5nICovXG4rXHRzcGlubG9ja190IHdha2VfdHhfbG9jaztcbiBcdHN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzO1xuIFx0aW50IHR4X3N0YXR1c19oZWFkO1xuIFx0aW50IHR4X3N0YXR1c190YWlsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuaW5kZXggY2FjOTcwYzkyODA2YTIuLjA4M2FjYThmZjM1NWJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcbkBAIC0xMDgsNyArMTA4LDcgQEAgaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxuIFxuIFx0cG9vbF9pZCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpIFx1MDAyNiAoQVRIMTFLX0hXX01BWF9RVUVVRVMgLSAxKTtcbiBcbi1cdHJpbmdfc2VsZWN0b3IgPSBhYi1cdTAwM2Vod19wYXJhbXMuaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHNrYik7XG4rXHRyaW5nX3NlbGVjdG9yID0gYWItXHUwMDNlaHdfcGFyYW1zLmh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKSk7XG4gXG4gdGNsX3Jpbmdfc2VsOlxuIFx0dGNsX3JpbmdfcmV0cnkgPSBmYWxzZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmNcbmluZGV4IDkzZjlhMDNjNDhkYzBmLi44YTI4YzFkNGMxN2I2ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5jXG5AQCAtODc2LDI4ICs4NzYsMTQgQEAgc3RhdGljIGJvb2wgYXRoMTFrX2h3X3djbjY4NTVfcnhfZGVzY19nZXRfbGRwY19zdXBwb3J0KHN0cnVjdCBoYWxfcnhfZGVzYyAqZGVzYylcbiBcdFx0XHQgX19sZTMyX3RvX2NwdShkZXNjLVx1MDAzZXUud2NuNjg1NS5tc2R1X3N0YXJ0LmluZm8yKSk7XG4gfVxuIFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXG4te1xuLVx0LyogTGV0IHRoZSBkZWZhdWx0IHJpbmcgc2VsZWN0aW9uIGJlIGJhc2VkIG9uIGN1cnJlbnQgcHJvY2Vzc29yXG4tXHQgKiBudW1iZXIsIHdoZXJlIG9uZSBvZiB0aGUgMyB0Y2wgcmluZ3MgYXJlIHNlbGVjdGVkIGJhc2VkIG9uXG4tXHQgKiB0aGUgc21wX3Byb2Nlc3Nvcl9pZCgpLiBJbiBjYXNlIHRoYXQgcmluZ1xuLVx0ICogaXMgZnVsbC9idXN5LCB3ZSByZXNvcnQgdG8gb3RoZXIgYXZhaWxhYmxlIHJpbmdzLlxuLVx0ICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuXG4tXHQgKlxuLVx0ICogVE9ETzogQWRkIHRocm90dGxpbmcgbG9naWMgd2hlbiBhbGwgcmluZ3MgYXJlIGZ1bGxcbi1cdCAqL1xuK3N0YXRpYyB1MzIgYXRoMTFrX2h3X2lwcTgwNzRfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHU4IGFjKVxuK3tcbiBcdHJldHVybiBzbXBfcHJvY2Vzc29yX2lkKCk7XG4gfVxuIFxuLXN0YXRpYyB1MzIgYXRoMTFrX2h3X3djbjY3NTBfZ2V0X3RjbF9yaW5nX3NlbGVjdG9yKHN0cnVjdCBza19idWZmICpza2IpXG4rc3RhdGljIHUzMiBhdGgxMWtfaHdfd2NuNjc1MF9nZXRfdGNsX3Jpbmdfc2VsZWN0b3IodTggYWMpXG4ge1xuLVx0LyogU2VsZWN0IHRoZSBUQ0wgcmluZyBiYXNlZCBvbiB0aGUgZmxvdyBoYXNoIG9mIHRoZSBTS0IgaW5zdGVhZFxuLVx0ICogb2YgQ1BVIElELiBTaW5jZSBhcHBsaWNhdGlvbnMgcHVtcGluZyB0aGUgdHJhZmZpYyBjYW4gYmUgc2NoZWR1bGVkXG4tXHQgKiBvbiBtdWx0aXBsZSBDUFVzLCB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IHBhY2tldHMgb2YgdGhlIHNhbWUgZmxvd1xuLVx0ICogY291bGQgZW5kIG9uIGRpZmZlcmVudCBUQ0wgcmluZ3MsIHRoaXMgY291bGQgc29tZXRpbWVzIHJlc3VsdHMgaW5cbi1cdCAqIGFuIG91dCBvZiBvcmRlciBhcnJpdmFsIG9mIHRoZSBwYWNrZXRzIGF0IHRoZSByZWNlaXZlci5cbi1cdCAqL1xuLVx0cmV0dXJuIHNrYl9nZXRfaGFzaChza2IpO1xuK1x0cmV0dXJuIGFjO1xuIH1cbiBcbiBjb25zdCBzdHJ1Y3QgYXRoMTFrX2h3X29wcyBpcHE4MDc0X29wcyA9IHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2h3LmhcbmluZGV4IDQ5OTY1MzZmYmQxNGYxLi5iNmJjOGI3MmQ4MTIwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvaHcuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9ody5oXG5AQCAtMjczLDcgKzI3Myw3IEBAIHN0cnVjdCBhdGgxMWtfaHdfb3BzIHtcbiBcdHUxNiAoKm1wZHVfaW5mb19nZXRfcGVlcmlkKShzdHJ1Y3QgaGFsX3J4X21wZHVfaW5mbyAqbXBkdV9pbmZvKTtcbiBcdGJvb2wgKCpyeF9kZXNjX21hY19hZGRyMl92YWxpZCkoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcbiBcdHU4KiAoKnJ4X2Rlc2NfbXBkdV9zdGFydF9hZGRyMikoc3RydWN0IGhhbF9yeF9kZXNjICpkZXNjKTtcbi1cdHUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbitcdHUzMiAoKmdldF9yaW5nX3NlbGVjdG9yKSh1OCBhYyk7XG4gfTtcbiBcbiBleHRlcm4gY29uc3Qgc3RydWN0IGF0aDExa19od19vcHMgaXBxODA3NF9vcHM7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbmluZGV4IDJkNTVjZGM0ZDE2NWRlLi45ODEzZjc5MjNjMzRmMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC0xMDA2NSw5ICsxMDA2NSw1OSBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0ge1xuK1x0XHQuc3RhID0gdHhxLVx1MDAzZXN0YSxcbitcdH07XG4rXHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3QgZHBfdHhfcmluZyAqdHhfcmluZztcbitcdHN0cnVjdCBoYWxfc3JuZyAqdGNsX3Jpbmc7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0dTMyIHJpbmdfc2VsZWN0b3I7XG4rXHRpbnQgbnVtX2ZyZWU7XG4rXHR1OCByaW5nX2lkO1xuK1xuK1x0aWYgKCFhcilcbitcdFx0cmV0dXJuO1xuK1xuK1x0cmluZ19zZWxlY3RvciA9IGFyLVx1MDAzZWFiLVx1MDAzZWh3X3BhcmFtcy5od19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3IodHhxLVx1MDAzZWFjKTtcbitcdHJpbmdfaWQgPSByaW5nX3NlbGVjdG9yICUgYXItXHUwMDNlYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNlbnVtX3R4X3JpbmdzO1xuK1x0dHhfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRwLnR4X3JpbmdbcmluZ19pZF07XG4rXHR0Y2xfcmluZyA9IFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWhhbC5zcm5nX2xpc3RbdHhfcmluZy1cdTAwM2V0Y2xfZGF0YV9yaW5nLnJpbmdfaWRdO1xuK1xuK1x0d2hpbGUgKDEpIHtcbitcdFx0aWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDExS19GTEFHX0NSQVNIX0ZMVVNILFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXG4rXHRcdHNwaW5fbG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcdFx0bnVtX2ZyZWUgPSBhdGgxMWtfaGFsX3Nybmdfc3JjX251bV9mcmVlKGFyLVx1MDAzZWFiLCB0Y2xfcmluZywgdHJ1ZSk7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnRjbF9yaW5nLVx1MDAzZWxvY2spO1xuK1xuK1x0XHRpZiAobnVtX2ZyZWUgPT0gMCkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuK1xuK1x0XHRza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShodywgdHhxKTtcbitcdFx0aWYgKCFza2IpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0YXRoMTFrX21hY19vcF90eChodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbitcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMWtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmNcbmluZGV4IGFmNWYxMWZjMWQ4NGFiLi4zZDQ2Y2ZiZjBhMWMzZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5jXG5AQCAtMTUzOSw2ICsxNTM5LDcgQEAgc3RhdGljIGludCBhdGgxMmtfZHBfc2V0dXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdH1cbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZzsgaSsrKSB7XG4rXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbaV0ud2FrZV90eF9sb2NrKTtcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50Y2xfZGF0YV9yaW5nX2lkID0gaTtcbiBcbiBcdFx0ZHAtXHUwMDNldHhfcmluZ1tpXS50eF9zdGF0dXNfaGVhZCA9IDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5pbmRleCBmOGNmYzdiYjI5ZGQ3OC4uNjhkMjAyMGJlOWI4NjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTU4LDYgKzU4LDggQEAgc3RydWN0IGRwX3R4X3Jpbmcge1xuIFx0dTggdGNsX2RhdGFfcmluZ19pZDtcbiBcdHN0cnVjdCBkcF9zcm5nIHRjbF9kYXRhX3Jpbmc7XG4gXHRzdHJ1Y3QgZHBfc3JuZyB0Y2xfY29tcF9yaW5nO1xuK1x0LyogU2VyaWFsaXplcyB3YWtlX3R4X3F1ZXVlIG9wZXJhdGlvbnMgZm9yIHRoaXMgcmluZyAqL1xuK1x0c3BpbmxvY2tfdCB3YWtlX3R4X2xvY2s7XG4gXHRzdHJ1Y3QgaGFsX3dibV9jb21wbGV0aW9uX3JpbmdfdHggKnR4X3N0YXR1cztcbiBcdGludCB0eF9zdGF0dXNfaGVhZDtcbiBcdGludCB0eF9zdGF0dXNfdGFpbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuaW5kZXggYTE2NDU2M2ZmZjI4OWMuLjA3MWNiNWQzMDkzMTBkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9oYWwuY1xuQEAgLTM5MCw2ICszOTAsNyBAQCBpbnQgYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3QgaGFsX3NybmcgKnNybmcsXG4gXHRlbHNlXG4gXHRcdHJldHVybiAoKHNybmctXHUwMDNlcmluZ19zaXplIC0gaHAgKyB0cCkgLyBzcm5nLVx1MDAzZWVudHJ5X3NpemUpIC0gMTtcbiB9XG4rRVhQT1JUX1NZTUJPTF9HUEwoYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZSk7XG4gXG4gdm9pZCAqYXRoMTJrX2hhbF9zcm5nX3NyY19uZXh0X3BlZWsoc3RydWN0IGF0aDEya19iYXNlICphYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaGFsX3NybmcgKnNybmcpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oXG5pbmRleCA4NmZiOGI3MTk2MTM1MC4uNjVjYWE3YTIzNDlmMTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaFxuQEAgLTI0Myw3ICsyNDMsNyBAQCBzdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XG4gXHRpbnQgKCptYWNfaWRfdG9fcGRldl9pZCkoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LCBpbnQgbWFjX2lkKTtcbiBcdGludCAoKm1hY19pZF90b19zcm5nX2lkKShjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyAqaHcsIGludCBtYWNfaWQpO1xuIFx0aW50ICgqcnhkbWFfcmluZ19zZWxfY29uZmlnKShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbi1cdHU4ICgqZ2V0X3Jpbmdfc2VsZWN0b3IpKHN0cnVjdCBza19idWZmICpza2IpO1xuK1x0dTggKCpnZXRfcmluZ19zZWxlY3RvcikodTggYWMpO1xuIFx0Ym9vbCAoKmRwX3NybmdfaXNfdHhfY29tcF9yaW5nKShpbnQgcmluZ19udW0pO1xuIFx0Ym9vbCAoKmlzX2ZyYW1lX2xpbmtfYWdub3N0aWMpKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCBkMjc0OWRlNDQ1NTM0YS4uNzQzNTllOGVlYTQ3MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxuIFx0ICogSWYgYWxsIHJpbmdzIGFyZSBmdWxsLCB3ZSBkcm9wIHRoZSBwYWNrZXQuXG4gXHQgKiBUT0RPOiBBZGQgdGhyb3R0bGluZyBsb2dpYyB3aGVuIGFsbCByaW5ncyBhcmUgZnVsbFxuIFx0ICovXG4tXHRyaW5nX3NlbGVjdG9yID0gZHAtXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWh3X29wcy1cdTAwM2VnZXRfcmluZ19zZWxlY3Rvcihza2IpO1xuK1x0cmluZ19zZWxlY3RvciA9IGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2Vod19vcHMtXHUwMDNlZ2V0X3Jpbmdfc2VsZWN0b3Ioc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikpO1xuIFxuIHRjbF9yaW5nX3NlbDpcbiBcdHRjbF9yaW5nX3JldHJ5ID0gZmFsc2U7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5pbmRleCBkOWZkZDJmYzgyOTg2YS4uYWYwYTNiYTgwNWRkZGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuQEAgLTQ5LDcgKzQ5LDcgQEAgYXRoMTJrX3dpZmk3X2h3X21hY19pZF90b19zcm5nX2lkX3FjbjkyNzQoY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgKmh3LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3JfcWNuOTI3NCh1OCBhYylcbiB7XG4gXHRyZXR1cm4gc21wX3Byb2Nlc3Nvcl9pZCgpO1xuIH1cbkBAIC04Myw5ICs4Myw5IEBAIGF0aDEya193aWZpN19od19tYWNfaWRfdG9fc3JuZ19pZF93Y243ODUwKGNvbnN0IHN0cnVjdCBhdGgxMmtfaHdfcGFyYW1zICpodyxcbiBcdHJldHVybiBtYWNfaWQ7XG4gfVxuIFxuLXN0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyB1OCBhdGgxMmtfd2lmaTdfaHdfZ2V0X3Jpbmdfc2VsZWN0b3Jfd2NuNzg1MCh1OCBhYylcbiB7XG4tXHRyZXR1cm4gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4rXHRyZXR1cm4gYWM7XG4gfVxuIFxuIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbkBAIC0xMTAwLDkgKzExMDAsODMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuK1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodHhxLVx1MDAzZXZpZik7XG4rXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaCA9IGF0aDEya19od190b19haChodyk7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHtcbitcdFx0LnN0YSA9IHR4cS1cdTAwM2VzdGEsXG4rXHR9O1xuK1x0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IHR4cS1cdTAwM2V2aWY7XG4rXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbitcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nO1xuK1x0c3RydWN0IGhhbF9zcm5nICp0Y2xfcmluZztcbitcdHN0cnVjdCBhdGgxMmtfc3RhICphaHN0YTtcbitcdHN0cnVjdCBhdGgxMmtfZHAgKmRwO1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHN0cnVjdCBhdGgxMmsgKmFyO1xuK1x0dTggcmluZ19zZWxlY3RvcjtcbitcdGludCBudW1fZnJlZTtcbitcdHU4IHJpbmdfaWQ7XG4rXHR1OCBsaW5rX2lkO1xuK1xuK1x0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKHZpZikgXHUwMDI2XHUwMDI2IHR4cS1cdTAwM2VzdGEpIHtcbitcdFx0YWhzdGEgPSBhdGgxMmtfc3RhX3RvX2Foc3RhKHR4cS1cdTAwM2VzdGEpO1xuK1x0XHRsaW5rX2lkID0gYWhzdGEtXHUwMDNlYXNzb2NfbGlua19pZDtcbitcdH0gZWxzZSB7XG4rXHRcdGxpbmtfaWQgPSBhaHZpZi1cdTAwM2VkZWZsaW5rLmxpbmtfaWQ7XG4rXHR9XG4rXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXG4rXHRhcnZpZiA9IHJjdV9kZXJlZmVyZW5jZShhaHZpZi1cdTAwM2VsaW5rW2xpbmtfaWRdKTtcbitcdGlmICghYXJ2aWYgfHwgIWFydmlmLVx1MDAzZWFyKSB7XG4rXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRhciA9IGFydmlmLVx1MDAzZWFyO1xuK1x0ZHAgPSBhci1cdTAwM2VhYi1cdTAwM2VkcDtcbitcbitcdHJpbmdfc2VsZWN0b3IgPSBkcC1cdTAwM2Vod19wYXJhbXMtXHUwMDNlaHdfb3BzLVx1MDAzZWdldF9yaW5nX3NlbGVjdG9yKHR4cS1cdTAwM2VhYyk7XG4rXHRyaW5nX2lkID0gcmluZ19zZWxlY3RvciAlIGRwLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VtYXhfdHhfcmluZztcbitcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xuK1x0dGNsX3JpbmcgPSBcdTAwMjZkcC1cdTAwM2VoYWwtXHUwMDNlc3JuZ19saXN0W3R4X3JpbmctXHUwMDNldGNsX2RhdGFfcmluZy5yaW5nX2lkXTtcbitcbitcdHdoaWxlICgxKSB7XG4rXHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCxcbitcdFx0XHRcdCAgICAgIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuK1x0XHRcdGJyZWFrO1xuK1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1xuK1x0XHRzcGluX2xvY2soXHUwMDI2dGNsX3JpbmctXHUwMDNlbG9jayk7XG4rXHRcdG51bV9mcmVlID0gYXRoMTJrX2hhbF9zcm5nX3NyY19udW1fZnJlZShhci1cdTAwM2VhYiwgdGNsX3JpbmcsIHRydWUpO1xuK1x0XHRzcGluX3VubG9jayhcdTAwMjZ0Y2xfcmluZy1cdTAwM2Vsb2NrKTtcbitcbitcdFx0aWYgKG51bV9mcmVlID09IDApIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ0eF9yaW5nLVx1MDAzZXdha2VfdHhfbG9jayk7XG4rXHRcdFx0YnJlYWs7XG4rXHRcdH1cbitcbitcdFx0c2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoaHcsIHR4cSk7XG4rXHRcdGlmICghc2tiKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dHhfcmluZy1cdTAwM2V3YWtlX3R4X2xvY2spO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXG4rXHRcdGF0aDEya193aWZpN19tYWNfb3BfdHgoaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4rXG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnR4X3JpbmctXHUwMDNld2FrZV90eF9sb2NrKTtcbitcdH1cbitcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK31cbitcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbitcdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBhdGgxMmtfd2lmaTdfbWFjX29wX3dha2VfdHhfcXVldWUsXG4gXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9zdGFydCxcbiBcdC5zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhdGgxMmtfbWFjX29wX3N0b3AsXG4gXHQucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjExOjM3LjE1OTA5NTE3OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyOTEzNTE5NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IGF0aDExay9hdGgxMmsgRHJpdmVyIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGRpdmVzIGludG8gdGhlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGEgbmV3IGB3YWtlX3R4X3F1ZXVlYCBoYW5kbGVyIGFuZCBzb21lIGNoYW5nZXMgdG8gcmluZyBzZWxlY3Rpb24uICBUaGUgY29yZSBvZiB0aGUgaXNzdWUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBpcyB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIGFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxpa2UgbW9zdCBzcGVjaWFsaXplZCBoYXJkd2FyZSBkcml2ZXJzLCB0aGVzZSBhcmUgbGlrZWx5IGJvdW5kIHRvIHBoeXNpY2FsIGhhcmR3YXJlLiAgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGF0J3MgdGhlIGNhc2UuXG5cbk15IHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgZHJpdmVycyBpcyB0aGF0IHRoZXkgYXJlIFF1YWxjb21tIEF0aGVyb3MgZHJpdmVycyBmb3IgODAyLjExYXgvYmUgZGV2aWNlcywgcHJpbWFyaWx5IFBDSSBvciBBSEIgYmFzZWQuIFVubGVzcyB0aGVyZSdzIGEgZGVkaWNhdGVkIHNvZnR3YXJlIGVtdWxhdGlvbiBsYXllciwgbGlrZSBhIGBtYWM4MDIxMV9od3NpbWAgZXF1aXZhbGVudCwgd2hpY2ggSSBrbm93IGlzIHNlcGFyYXRlLCB0aGVzZSBkcml2ZXJzIHdpbGwgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gIFRoZSBxdWVzdGlvbiBpczogY2FuIHdlIGZha2UgaXQgd2l0aCBhIHZpcnR1YWwgUENJIGRldmljZT8gU3l6a2FsbGVyLCBpbiBteSBleHBlcmllbmNlLCBkb2Vzbid0IHVzdWFsbHkgb2ZmZXIgc3BlY2lmaWMgZW11bGF0aW9uIGZvciBwYXJ0aWN1bGFyIFdpLUZpIGNhcmRzLlxuXG5MZXQgbWUganVzdCBjaGVjayBmb3IgYW55IGV4aXN0aW5nIGVtdWxhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgaXRzZWxmLiBBIHF1aWNrIGBncmVwYCBmb3IgYGF0aDExa2Agb3IgYGF0aDEya2Agc2hvdWxkIHNob3cgaWYgdGhlcmUncyBhbnkgdmlydHVhbCBkZXZpY2UgaW1wbGVtZW50YXRpb24gSSdtIG1pc3NpbmcuICBCdXQsIHJlYWxpc3RpY2FsbHksIEkgZG9uJ3QgZXhwZWN0IHRvIGZpbmQgYW55dGhpbmcuXG5cbldhaXQuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIGEgY2xlYXIgZXhjbHVzaW9uOiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuQW5kICpiaW5nbyohIFRoZXNlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYCBkcml2ZXJzIGFyZSAqZXhhY3RseSogdGhhdC4gVGhleSBhcmUgdmVuZG9yLXNwZWNpZmljIChRdWFsY29tbSksIGFuZCB0aGV5ICpkbyogcmVxdWlyZSBQQ0llL0FIQiBoYXJkd2FyZSB0aGF0IGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cy4gTGV0J3MgY29uZmlybSB0aGF0IFBDSS9BSEIgZGVwZW5kZW5jeTsgeWVzLCBgYXRoMTFrYCBoYXMgYHBjaS5jYCBhbmQgYGFoYi5jYCwgYW5kIGBhdGgxMmtgIGhhcyBgcGNpLmNgLlxuXG5UaGVyZWZvcmUsIHRoZSBsaWtlbGlob29kIG9mIGJlaW5nIGFibGUgdG8gZnV6eiB0aGVzZSBlZmZlY3RpdmVseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UgaXMgZXNzZW50aWFsbHkgemVyby4gQ29uc2VxdWVudGx5LCB0aGUgYW5zd2VyIGlzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuIEkgc2hvdWxkIHVzZSB0aGUgYGRlZmF1bHRfYXBpOmdyZXBwZXJgIHRvIGRvdWJsZSBjaGVjayB0aGF0IHRoaXMgaXMgYWNjdXJhdGUgYW5kIHRvIGJlIHN1cmUgdGhhdCB0aGVyZSBpcyBubyBlbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0ODYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwOToxMTo0NS40NTA0NTAxNTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2MzY4MTg2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfcGNpX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ5OnN0YXRpYyBpbnQgYXRoMTFrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk1MC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEyOTY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGF0aDExa19wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMjk4LVxcdC5pZF90YWJsZSA9IGF0aDExa19wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMjk5OlxcdC5wcm9iZSA9IGF0aDExa19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzAwLVxcdC5yZW1vdmUgPSBhdGgxMWtfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDk6MTE6NTAuNTE0MTM4NjIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1MjQ2MjE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmc9RmFsc2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0J3Mgd29ya2luZyB3aXRoIHRoZSBRdWFsY29tbSBhdGgxMWsgYW5kIGF0aDEyayBXaS1GaSBkcml2ZXJzLCB3aGljaCwgYXMgd2Uga25vdywgYXJlIHByZXR0eSBzdGFuZGFyZCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IGludGVyZmFjZSB3aXRoIHRoZSBQQ0llIGFuZCBBSEIgYnVzZXMuIFRoZSBwcm9ibGVtIGhlcmUsIGFuZCBpdCdzIGEgY3JpdGljYWwgb25lIGZvciBmdXp6aW5nLCBpcyB0aGUgbGFjayBvZiBRRU1VIGVtdWxhdGlvbiBmb3IgdGhvc2UgcGFydGljdWxhciBXaS1GaSBjYXJkcy4gV2UncmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0aGF0IGp1c3QgYXJlbid0IGdvaW5nIHRvIGJlIHJlcGxpY2F0ZWQgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXaXRob3V0IHRoYXQgZW11bGF0aW9uLCB0aGUgY29kZSBtb2RpZmljYXRpb25zIHNpbXBseSB3b24ndCBiZSByZWFjaGFibGUgZHVyaW5nIGEgZnV6emluZyBjYW1wYWlnbi4gU28sIGdpdmVuIHRob3NlIGNvbnN0cmFpbnRzLCBJJ20gZ29pbmcgdG8gc2V0IFdvcnRoRnV6emluZyB0byBmYWxzZS4gVGhlIGp1aWNlIGp1c3QgaXNuJ3Qgd29ydGggdGhlIHNxdWVlemUgaW4gdGhpcyBzY2VuYXJpby4gV2UnZCBiZSB3YXN0aW5nIG91ciB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTIwLCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA5OjExOjU0LjU2NjYwMzYwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIGF0aDExayBhbmQgYXRoMTJrIFdpLUZpIGRyaXZlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgZHJpdmVycy4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUXVhbGNvbW0gYXRoMTFrIGFuZCBhdGgxMmsgV2ktRmkgZHJpdmVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBkcml2ZXJzLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrlwn[1] Phase: Running StartedAt: 2026-07-25 09:12:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrlwn[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-25 09:12:05 +0000 UTC FinishedAt: 2026-07-25 09:12:35 +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,}