Name: series-workflowrbdhr Phase: Succeeded StartedAt: 2026-06-29 19:41:51 +0000 UTC FinishedAt: 2026-06-29 23:48:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[0] Phase: Succeeded StartedAt: 2026-06-29 19:41:51 +0000 UTC FinishedAt: 2026-06-29 19:52:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 19:41:51 +0000 UTC FinishedAt: 2026-06-29 19:52:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTIPLE_TABLES", "IPV6_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTIPLE_TABLES", "IPV6_MULTIPLE_TABLES" ], "series_id": "976a5565-78ae-4ce0-ad09-153164152e84" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "fib_newrule", "fib_delrule", "fib_new_table", "fib_rules_event", "fib4_rule_configure", "fib4_rule_delete", "fib6_rule_configure", "fib6_rule_delete" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE5OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtJUFY2X01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZpYl9uZXdydWxlJiMzNDssCiAgICAmIzM0O2ZpYl9kZWxydWxlJiMzNDssCiAgICAmIzM0O2ZpYl9uZXdfdGFibGUmIzM0OywKICAgICYjMzQ7ZmliX3J1bGVzX2V2ZW50JiMzNDssCiAgICAmIzM0O2ZpYjRfcnVsZV9jb25maWd1cmUmIzM0OywKICAgICYjMzQ7ZmliNF9ydWxlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtmaWI2X3J1bGVfY29uZmlndXJlJiMzNDssCiAgICAmIzM0O2ZpYjZfcnVsZV9kZWxldGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIGZvciBGSUIgcnVsZXMgYW5kIHRhYmxlcywgcmVwbGFjaW5nIFJUTkwgd2l0aCBmaW5lci1ncmFpbmVkIG11dGV4ZXMgYW5kIHNwaW5sb2NrcyAob3BzLVx1MDAzZWxvY2sgYW5kIGZpYl90YWJsZV9oYXNoX2xvY2spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFJUTV9ORVdSVUxFLCBSVE1fREVMUlVMRSkgYW5kIG5ldGRldiBldmVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byB1c2UgdGhlIG5ldyBsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM4NjUxOGM2MWNjNGM3ZGM0ZGFmZmQ3Y2MwOWEyMGRiOTkwNTIxNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAxOTo1MDowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaCBiL2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oXG5pbmRleCA3ZGVlMGFlNjE2ZTMyMi4uYzZiOTQ3OTBmYTgxZWUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvZmliX3J1bGVzLmhcbkBAIC04Miw3ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgZmliX3J1bGVzX29wcyB7XG4gXHRcdFx0XHRcdCAgICAgc3RydWN0IGZpYl9ydWxlX2hkciAqLFxuIFx0XHRcdFx0XHQgICAgIHN0cnVjdCBubGF0dHIgKiosXG4gXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqKTtcbi1cdGludFx0XHRcdCgqZGVsZXRlKShzdHJ1Y3QgZmliX3J1bGUgKik7XG4mIzQzO1x0dm9pZFx0XHRcdCgqZGVsZXRlKShzdHJ1Y3QgZmliX3J1bGUgKik7XG4gXHRpbnRcdFx0XHQoKmNvbXBhcmUpKHN0cnVjdCBmaWJfcnVsZSAqLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgZmliX3J1bGVfaGRyICosXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBubGF0dHIgKiopO1xuQEAgLTkzLDExICYjNDM7OTMsMTMgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMge1xuIFx0LyogQ2FsbGVkIGFmdGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJ1bGVzIHNldCwgbXVzdCBmbHVzaFxuIFx0ICogdGhlIHJvdXRlIGNhY2hlIGlmIG9uZSBleGlzdHMuICovXG4gXHR2b2lkXHRcdFx0KCpmbHVzaF9jYWNoZSkoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyk7XG4mIzQzO1x0Ym9vbFx0XHRcdCgqbmVlZF9ydG5sKShzdHJ1Y3QgbmV0ICpuZXQpO1xuIFxuIFx0aW50XHRcdFx0bmxncm91cDtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdHJ1bGVzX2xpc3Q7XG4gXHRzdHJ1Y3QgbW9kdWxlXHRcdCpvd25lcjtcbiBcdHN0cnVjdCBuZXRcdFx0KmZyb19uZXQ7XG4mIzQzO1x0c3RydWN0IG11dGV4XHRcdGxvY2s7XG4gXHRzdHJ1Y3QgcmN1X2hlYWRcdFx0cmN1O1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfZmliLmggYi9pbmNsdWRlL25ldC9pcF9maWIuaFxuaW5kZXggYzYzYTNjNDk2N2FlNjEuLjBhMzUzNTVmYjBmMzM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfZmliLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX2ZpYi5oXG5AQCAtMzAyLDcgJiM0MzszMDIsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXG4gXHRcdFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX0xPQ0FMX0lOREVYXSA6XG4gXHRcdFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX01BSU5fSU5ERVhdO1xuIFxuLVx0dGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcnRubChobGlzdF9maXJzdF9yY3UocHRyKSk7XG4mIzQzO1x0LyogT25seSBmaWI0X3J1bGVzX2luaXQoKSBhZGRzIGZpYl90YWJsZS4gKi9cbiYjNDM7XHR0Yl9obGlzdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoaGxpc3RfZmlyc3RfcmN1KHB0ciksIHRydWUpO1xuIFxuIFx0cmV0dXJuIGhsaXN0X2VudHJ5KHRiX2hsaXN0LCBzdHJ1Y3QgZmliX3RhYmxlLCB0Yl9obGlzdCk7XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaCBiL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaFxuaW5kZXggNmUyN2M1NjUxNGRmNTcuLjU5NTA2MzIwNTU4YTk5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmhcbkBAIC0xMjcsNiAmIzQzOzEyNyw3IEBAIHN0cnVjdCBuZXRuc19pcHY0IHtcbiBcdGF0b21pY190XHRcdGZpYl9udW1fdGNsYXNzaWRfdXNlcnM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZFx0KmZpYl90YWJsZV9oYXNoO1xuJiM0MztcdHNwaW5sb2NrX3RcdFx0ZmliX3RhYmxlX2hhc2hfbG9jaztcbiBcdHN0cnVjdCBzb2NrXHRcdCpmaWJubDtcbiBcdHN0cnVjdCBobGlzdF9oZWFkXHQqZmliX2luZm9faGFzaDtcbiBcdHVuc2lnbmVkIGludFx0XHRmaWJfaW5mb19oYXNoX2JpdHM7XG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmliX3J1bGVzLmMgYi9uZXQvY29yZS9maWJfcnVsZXMuY1xuaW5kZXggY2YzNzRjMjA4NzMyNTguLjIyZTVlNWUxYTljNDRmIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmliX3J1bGVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2ZpYl9ydWxlcy5jXG5AQCAtNTEsNyAmIzQzOzUxLDYgQEAgYm9vbCBmaWJfcnVsZV9tYXRjaGFsbChjb25zdCBzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdHJldHVybiB0cnVlO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZV9tYXRjaGFsbCk7XG4gXG4gaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4gXHRcdFx0IHUzMiBwcmVmLCB1MzIgdGFibGUpXG5AQCAtNzgsNyAmIzQzOzc3LDYgQEAgaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnItXHUwMDNlbGlzdCwgXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QpO1xuIFx0cmV0dXJuIDA7XG4gfVxuLUVYUE9SVF9TWU1CT0woZmliX2RlZmF1bHRfcnVsZV9hZGQpO1xuIFxuIHN0YXRpYyB1MzIgZmliX2RlZmF1bHRfcnVsZV9wcmVmKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMpXG4ge1xuQEAgLTE3Miw2ICYjNDM7MTcwLDcgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QpO1xuJiM0MztcdG11dGV4X2luaXQoXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0b3BzLVx1MDAzZWZyb19uZXQgPSBuZXQ7XG4gXG4gXHRlcnIgPSBfX2ZpYl9ydWxlc19yZWdpc3RlcihvcHMpO1xuQEAgLTE4Miw3ICYjNDM7MTgxLDYgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpXG4gXG4gXHRyZXR1cm4gb3BzO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfcmVnaXN0ZXIpO1xuIFxuIHN0YXRpYyB2b2lkIGZpYl9ydWxlc19jbGVhbnVwX29wcyhzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKVxuIHtcbkBAIC0yMDcsNyAmIzQzOzIwNSw2IEBAIHZvaWQgZmliX3J1bGVzX3VucmVnaXN0ZXIoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcylcbiBcdGZpYl9ydWxlc19jbGVhbnVwX29wcyhvcHMpO1xuIFx0a2ZyZWVfcmN1KG9wcywgcmN1KTtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX3VucmVnaXN0ZXIpO1xuIFxuIHN0YXRpYyBpbnQgdWlkX3JhbmdlX3NldChzdHJ1Y3QgZmliX2t1aWRfcmFuZ2UgKnJhbmdlKVxuIHtcbkBAIC0zNjMsNyAmIzQzOzM2MCw2IEBAIGludCBmaWJfcnVsZXNfbG9va3VwKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsIHN0cnVjdCBmbG93aSAqZmwsXG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfbG9va3VwKTtcbiBcbiBzdGF0aWMgaW50IGNhbGxfZmliX3J1bGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiBcdFx0XHRcdCAgZW51bSBmaWJfZXZlbnRfdHlwZSBldmVudF90eXBlLFxuQEAgLTM5MSw3ICYjNDM7Mzg3LDcgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9ydWxlX25vdGlmaWVycyhzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdC5ydWxlID0gcnVsZSxcbiBcdH07XG4gXG4tXHRBU1NFUlRfUlROTF9ORVQobmV0KTtcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbiBcdC8qIFBhaXJlZCB3aXRoIFJFQURfT05DRSgpIGluIGZpYl9ydWxlc19zZXEoKSAqL1xuIFx0V1JJVEVfT05DRShvcHMtXHUwMDNlZmliX3J1bGVzX3NlcSwgb3BzLVx1MDAzZWZpYl9ydWxlc19zZXEgJiM0MzsgMSk7XG5AQCAtNDIzLDcgJiM0Mzs0MTksNiBAQCBpbnQgZmliX3J1bGVzX2R1bXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCBpbnQgZmFtaWx5LFxuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2R1bXApO1xuIFxuIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KVxuIHtcbkBAIC00MzksNyAmIzQzOzQzNCw2IEBAIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KVxuIFxuIFx0cmV0dXJuIGZpYl9ydWxlc19zZXE7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKGZpYl9ydWxlc19zZXFfcmVhZCk7XG4gXG4gc3RhdGljIHN0cnVjdCBmaWJfcnVsZSAqcnVsZV9maW5kKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4gXHRcdFx0XHQgIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCxcbkBAIC03NDAsMTAgJiM0Mzs3MzQsMTAgQEAgc3RhdGljIGludCBmaWJfbmwycnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tc3RhdGljIGludCBmaWJfbmwycnVsZV9ydG5sKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuLVx0XHRcdCAgICBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxuLVx0XHRcdCAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLVx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3N0YXRpYyBpbnQgZmliX25sMnJ1bGVfbG9ja2VkKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuIFx0aWYgKCF0YltGUkFfUFJJT1JJVFldKVxuIFx0XHRubHJ1bGUtXHUwMDNlcHJlZiA9IGZpYl9kZWZhdWx0X3J1bGVfcHJlZihvcHMpO1xuQEAgLTc1NCwxMiAmIzQzOzc0OCwxNCBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuJiM0MztcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XG4gXHRpZiAodGJbRlJBX0lJRk5BTUVdKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG4tXHRcdGRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS1cdTAwM2Vmcl9uZXQsIG5scnVsZS1cdTAwM2VpaWZuYW1lKTtcbiYjNDM7XHRcdGRldiA9IGRldl9nZXRfYnlfbmFtZV9yY3UobmxydWxlLVx1MDAzZWZyX25ldCwgbmxydWxlLVx1MDAzZWlpZm5hbWUpO1xuIFx0XHRpZiAoZGV2KSB7XG4tXHRcdFx0bmxydWxlLVx1MDAzZWlpZmluZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4mIzQzO1x0XHRcdG5scnVsZS1cdTAwM2VpaWZpbmRleCA9IFJFQURfT05DRShkZXYtXHUwMDNlaWZpbmRleCk7XG4gXHRcdFx0bmxydWxlLVx1MDAzZWlpZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTtcbiBcdFx0fVxuIFx0fVxuQEAgLTc2NywxMyAmIzQzOzc2MywxNSBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXG4gXHRpZiAodGJbRlJBX09JRk5BTUVdKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG4tXHRcdGRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS1cdTAwM2Vmcl9uZXQsIG5scnVsZS1cdTAwM2VvaWZuYW1lKTtcbiYjNDM7XHRcdGRldiA9IGRldl9nZXRfYnlfbmFtZV9yY3UobmxydWxlLVx1MDAzZWZyX25ldCwgbmxydWxlLVx1MDAzZW9pZm5hbWUpO1xuIFx0XHRpZiAoZGV2KSB7XG4tXHRcdFx0bmxydWxlLVx1MDAzZW9pZmluZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4mIzQzO1x0XHRcdG5scnVsZS1cdTAwM2VvaWZpbmRleCA9IFJFQURfT05DRShkZXYtXHUwMDNlaWZpbmRleCk7XG4gXHRcdFx0bmxydWxlLVx1MDAzZW9pZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTtcbiBcdFx0fVxuIFx0fVxuIFxuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC04ODMsNiAmIzQzOzg4MSw3IEBAIGludCBmaWJfbmV3cnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0c3RydWN0IG5sYXR0ciAqdGJbRlJBX01BWCAmIzQzOyAxXTtcbiBcdGJvb2wgdXNlcl9wcmlvcml0eSA9IGZhbHNlO1xuIFx0c3RydWN0IGZpYl9ydWxlX2hkciAqZnJoO1xuJiM0MztcdGJvb2wgdW5sb2NrX3J0bmwgPSBmYWxzZTtcbiBcbiBcdGZyaCA9IG5sbXNnX3BheWxvYWQobmxoLCBzaXplb2YoKmZyaCkpO1xuIFx0aWYgKCFmcmgpIHtcbkBAIC05MDgsMTAgJiM0Mzs5MDcsMTMgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycm91dDtcbiBcbi1cdGlmICghcnRubF9oZWxkKVxuJiM0MztcdGlmICghcnRubF9oZWxkIFx1MDAyNlx1MDAyNiBvcHMtXHUwMDNlbmVlZF9ydG5sIFx1MDAyNlx1MDAyNiBvcHMtXHUwMDNlbmVlZF9ydG5sKG5ldCkpIHtcbiYjNDM7XHRcdHVubG9ja19ydG5sID0gdHJ1ZTtcbiBcdFx0cnRubF9uZXRfbG9jayhuZXQpO1xuJiM0MztcdH1cbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbi1cdGVyciA9IGZpYl9ubDJydWxlX3J0bmwocnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcbiYjNDM7XHRlcnIgPSBmaWJfbmwycnVsZV9sb2NrZWQocnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyb3V0X2ZyZWU7XG4gXG5AQCAtOTU5LDcgJiM0Mzs5NjEsNyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyLCBcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgbGlzdCkge1xuIFx0XHRcdGlmIChyLVx1MDAzZWFjdGlvbiA9PSBGUl9BQ1RfR09UTyBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgci1cdTAwM2V0YXJnZXQgPT0gcnVsZS1cdTAwM2VwcmVmIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBydG5sX2RlcmVmZXJlbmNlKHItXHUwMDNlY3RhcmdldCkgPT0gTlVMTCkge1xuJiM0MztcdFx0XHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihyLVx1MDAzZWN0YXJnZXQpKSB7XG4gXHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoci1cdTAwM2VjdGFyZ2V0LCBydWxlKTtcbiBcdFx0XHRcdGlmICgtLW9wcy1cdTAwM2V1bnJlc29sdmVkX3J1bGVzID09IDApXG4gXHRcdFx0XHRcdGJyZWFrO1xuQEAgLTk3OCw3ICYjNDM7OTgwLDggQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXG4gXHRmaWJfcnVsZV9nZXQocnVsZSk7XG4gXG4tXHRpZiAoIXJ0bmxfaGVsZClcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuJiM0MztcdGlmICh1bmxvY2tfcnRubClcbiBcdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4gXG4gXHRub3RpZnlfcnVsZV9jaGFuZ2UoUlRNX05FV1JVTEUsIHJ1bGUsIG9wcywgbmxoLCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcbkBAIC05ODgsNyAmIzQzOzk5MSw4IEBAIGludCBmaWJfbmV3cnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyb3V0X2ZyZWU6XG4tXHRpZiAoIXJ0bmxfaGVsZClcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuJiM0MztcdGlmICh1bmxvY2tfcnRubClcbiBcdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4gXHRrZnJlZShydWxlKTtcbiBlcnJvdXQ6XG5AQCAtMTAzNywxMCAmIzQzOzEwNDEsOSBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyb3V0O1xuIFxuLVx0aWYgKCFydG5sX2hlbGQpXG4tXHRcdHJ0bmxfbmV0X2xvY2sobmV0KTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbi1cdGVyciA9IGZpYl9ubDJydWxlX3J0bmwobmxydWxlLCBvcHMsIHRiLCBleHRhY2spO1xuJiM0MztcdGVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChubHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycm91dF9mcmVlO1xuIFxuQEAgLTEwNTUsMTEgJiM0MzsxMDU4LDggQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRcdGdvdG8gZXJyb3V0X2ZyZWU7XG4gXHR9XG4gXG4tXHRpZiAob3BzLVx1MDAzZWRlbGV0ZSkge1xuLVx0XHRlcnIgPSBvcHMtXHUwMDNlZGVsZXRlKHJ1bGUpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gZXJyb3V0X2ZyZWU7XG4tXHR9XG4mIzQzO1x0aWYgKG9wcy1cdTAwM2VkZWxldGUpXG4mIzQzO1x0XHRvcHMtXHUwMDNlZGVsZXRlKHJ1bGUpO1xuIFxuIFx0aWYgKHJ1bGUtXHUwMDNldHVuX2lkKVxuIFx0XHRpcF90dW5uZWxfdW5uZWVkX21ldGFkYXRhKCk7XG5AQCAtMTA2OCw3ICYjNDM7MTA2OCw3IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFxuIFx0aWYgKHJ1bGUtXHUwMDNlYWN0aW9uID09IEZSX0FDVF9HT1RPKSB7XG4gXHRcdG9wcy1cdTAwM2Vucl9nb3RvX3J1bGVzLS07XG4tXHRcdGlmIChydG5sX2RlcmVmZXJlbmNlKHJ1bGUtXHUwMDNlY3RhcmdldCkgPT0gTlVMTClcbiYjNDM7XHRcdGlmICghcmN1X2FjY2Vzc19wb2ludGVyKHJ1bGUtXHUwMDNlY3RhcmdldCkpXG4gXHRcdFx0b3BzLVx1MDAzZXVucmVzb2x2ZWRfcnVsZXMtLTtcbiBcdH1cbiBcbkBAIC0xMDg2LDcgJiM0MzsxMDg2LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRcdGlmIChcdTAwMjZuLVx1MDAzZWxpc3QgPT0gXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QgfHwgbi1cdTAwM2VwcmVmICE9IHJ1bGUtXHUwMDNlcHJlZilcbiBcdFx0XHRuID0gTlVMTDtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyLCBcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgbGlzdCkge1xuLVx0XHRcdGlmIChydG5sX2RlcmVmZXJlbmNlKHItXHUwMDNlY3RhcmdldCkgIT0gcnVsZSlcbiYjNDM7XHRcdFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihyLVx1MDAzZWN0YXJnZXQpICE9IHJ1bGUpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoci1cdTAwM2VjdGFyZ2V0LCBuKTtcbiBcdFx0XHRpZiAoIW4pXG5AQCAtMTA5Niw4ICYjNDM7MTA5Niw3IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFxuIFx0Y2FsbF9maWJfcnVsZV9ub3RpZmllcnMobmV0LCBGSUJfRVZFTlRfUlVMRV9ERUwsIHJ1bGUsIG9wcywgTlVMTCk7XG4gXG4tXHRpZiAoIXJ0bmxfaGVsZClcbi1cdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbiBcdG5vdGlmeV9ydWxlX2NoYW5nZShSVE1fREVMUlVMRSwgcnVsZSwgb3BzLCBubGgsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xuIFx0ZmliX3J1bGVfcHV0KHJ1bGUpO1xuQEAgLTExMDcsOCAmIzQzOzExMDYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdHJldHVybiAwO1xuIFxuIGVycm91dF9mcmVlOlxuLVx0aWYgKCFydG5sX2hlbGQpXG4tXHRcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4gXHRrZnJlZShubHJ1bGUpO1xuIGVycm91dDpcbiBcdHJ1bGVzX29wc19wdXQob3BzKTtcbkBAIC0xNDAyLDI0ICYjNDM7MTQwMCwzMCBAQCBzdGF0aWMgaW50IGZpYl9ydWxlc19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGRldik7XG4gXHRzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzO1xuIFxuLVx0QVNTRVJUX1JUTkwoKTtcbi1cbiBcdHN3aXRjaCAoZXZlbnQpIHtcbiBcdGNhc2UgTkVUREVWX1JFR0lTVEVSOlxuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXHUwMDI2bmV0LVx1MDAzZXJ1bGVzX29wcywgbGlzdClcbiYjNDM7XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcdTAwMjZuZXQtXHUwMDNlcnVsZXNfb3BzLCBsaXN0KSB7XG4mIzQzO1x0XHRcdG11dGV4X2xvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0XHRcdGF0dGFjaF9ydWxlcyhcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgZGV2KTtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdH1cbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIE5FVERFVl9DSEFOR0VOQU1FOlxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXHUwMDI2bmV0LVx1MDAzZXJ1bGVzX29wcywgbGlzdCkge1xuJiM0MztcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRkZXRhY2hfcnVsZXMoXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XG4gXHRcdFx0YXR0YWNoX3J1bGVzKFx1MDAyNm9wcy1cdTAwM2VydWxlc19saXN0LCBkZXYpO1xuJiM0MztcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBORVRERVZfVU5SRUdJU1RFUjpcbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsIFx1MDAyNm5ldC1cdTAwM2VydWxlc19vcHMsIGxpc3QpXG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXHUwMDI2bmV0LVx1MDAzZXJ1bGVzX29wcywgbGlzdCkge1xuJiM0MztcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRkZXRhY2hfcnVsZXMoXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XG4mIzQzO1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcbmluZGV4IDQyMjEyOTcwZDczNTQwLi41NGViNzI2OTUwOTNkYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xuQEAgLTc2LDcgJiM0Mzs3Niw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBmaWI0X3J1bGVzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFxuIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9uZXdfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXG4ge1xuLVx0c3RydWN0IGZpYl90YWJsZSAqdGIsICphbGlhcyA9IE5VTEw7XG4mIzQzO1x0c3RydWN0IGZpYl90YWJsZSAqdGIsICpuZXdfdGIsICphbGlhcyA9IE5VTEw7XG4gXHR1bnNpZ25lZCBpbnQgaDtcbiBcbiBcdGlmIChpZCA9PSAwKVxuQEAgLTg1LDE0ICYjNDM7ODUsMjcgQEAgc3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcbiBcdGlmICh0YilcbiBcdFx0cmV0dXJuIHRiO1xuIFxuJiM0MztcdGlmICghY2hlY2tfbmV0KG5ldCkpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4gXHRpZiAoaWQgPT0gUlRfVEFCTEVfTE9DQUwgXHUwMDI2XHUwMDI2ICFuZXQtXHUwMDNlaXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcylcbiBcdFx0YWxpYXMgPSBmaWJfbmV3X3RhYmxlKG5ldCwgUlRfVEFCTEVfTUFJTik7XG4gXG4tXHRpZiAoY2hlY2tfbmV0KG5ldCkpXG4tXHRcdHRiID0gZmliX3RyaWVfdGFibGUoaWQsIGFsaWFzKTtcbi1cdGlmICghdGIpXG4mIzQzO1x0bmV3X3RiID0gZmliX3RyaWVfdGFibGUoaWQsIGFsaWFzKTtcbiYjNDM7XHRpZiAoIW5ld190YilcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4mIzQzO1x0c3Bpbl9sb2NrKFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xuJiM0MztcbiYjNDM7XHR0YiA9IGZpYl9nZXRfdGFibGUobmV0LCBpZCk7XG4mIzQzO1x0aWYgKHRiKSB7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaF9sb2NrKTtcbiYjNDM7XHRcdGZpYl9mcmVlX3RhYmxlKG5ld190Yik7XG4mIzQzO1x0XHRyZXR1cm4gdGI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR0YiA9IG5ld190YjtcbiYjNDM7XG4gXHRzd2l0Y2ggKGlkKSB7XG4gXHRjYXNlIFJUX1RBQkxFX01BSU46XG4gXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihuZXQtXHUwMDNlaXB2NC5maWJfbWFpbiwgdGIpO1xuQEAgLTEwNiwyOCAmIzQzOzExOSwzNSBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuIFxuIFx0aCA9IGlkIFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xuIFx0aGxpc3RfYWRkX2hlYWRfcmN1KFx1MDAyNnRiLVx1MDAzZXRiX2hsaXN0LCBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXSk7XG4mIzQzO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xuJiM0MztcbiBcdHJldHVybiB0YjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZmliX25ld190YWJsZSk7XG4gXG4tLyogY2FsbGVyIG11c3QgaG9sZCBlaXRoZXIgcnRubCBvciByY3UgcmVhZCBsb2NrICovXG4gc3RydWN0IGZpYl90YWJsZSAqZmliX2dldF90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcbiB7XG4tXHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcbiYjNDM7XHRzdHJ1Y3QgZmliX3RhYmxlICp0YiA9IE5VTEw7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDtcbiBcdHVuc2lnbmVkIGludCBoO1xuIFxuIFx0aWYgKGlkID09IDApXG4gXHRcdGlkID0gUlRfVEFCTEVfTUFJTjtcbiBcdGggPSBpZCBcdTAwMjYgKEZJQl9UQUJMRV9IQVNIU1ogLSAxKTtcbi1cbiBcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QsXG4tXHRcdFx0XHQgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSkge1xuJiM0MztcbiYjNDM7XHQvKiBmaWJfdGFibGUgaXMgbm90IGRlc3Ryb3llZCB1bnRpbCBpcF9maWJfbmV0X2V4aXQoKVxuJiM0MztcdCAqIGV4Y2VwdCBmb3IgdGhlIG1lcmdlZCBtYWluL2xvY2FsIHRhYmxlLlxuJiM0MztcdCAqIGZpYl91bm1lcmdlKCkgaXMgY2FsbGVkIHVuZGVyIFJUTkwsIHNvIG90aGVyIHJlYWRlcnNcbiYjNDM7XHQgKiB1bmRlciBSVE5MIChlLmcuIGZpYl9mbHVzaCgpLCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKCkpXG4mIzQzO1x0ICogY2FuIHNhZmVseSB0cmF2ZXJzZSB0aGUgbGlzdCB3aXRoIHJjdV9kZXJlZmVyZW5jZV9yYXcoKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKVxuIFx0XHRpZiAodGItXHUwMDNldGJfaWQgPT0gaWQpXG4tXHRcdFx0cmV0dXJuIHRiO1xuLVx0fVxuLVx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdGI7XG4gfVxuICNlbmRpZiAvKiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTICovXG4gXG5AQCAtMTkwLDEwICYjNDM7MjEwLDkgQEAgdm9pZCBmaWJfZmx1c2goc3RydWN0IG5ldCAqbmV0KVxuIFxuIFx0Zm9yIChoID0gMDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi1cdFx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcbiBcdFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XG4gXG4tXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGIsIHRtcCwgaGVhZCwgdGJfaGxpc3QpXG4mIzQzO1x0XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKVxuIFx0XHRcdGZsdXNoZWQgJiM0Mzs9IGZpYl90YWJsZV9mbHVzaChuZXQsIHRiLCBmYWxzZSk7XG4gXHR9XG4gXG5AQCAtMTU2NSw2ICYjNDM7MTU4NCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0bmV0LVx1MDAzZWlwdjQuc3lzY3RsX2ZpYl9tdWx0aXBhdGhfaGFzaF9maWVsZHMgPVxuIFx0XHRGSUJfTVVMVElQQVRIX0hBU0hfRklFTERfREVGQVVMVF9NQVNLO1xuICNlbmRpZlxuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xuIFxuIFx0LyogQXZvaWQgZmFsc2Ugc2hhcmluZyA6IFVzZSBhdCBsZWFzdCBhIGZ1bGwgY2FjaGUgbGluZSAqL1xuIFx0c2l6ZSA9IG1heF90KHNpemVfdCwgc2l6ZSwgTDFfQ0FDSEVfQllURVMpO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9ydWxlcy5jIGIvbmV0L2lwdjQvZmliX3J1bGVzLmNcbmluZGV4IGUwNjhhNWJhY2U3M2YyLi40ZWRiMGRjYTdiZThhMSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2ZpYl9ydWxlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfcnVsZXMuY1xuQEAgLTMwMSwxMCAmIzQzOzMwMSwxMiBAQCBzdGF0aWMgaW50IGZpYjRfcnVsZV9jb25maWd1cmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICAgIGZpYjRfbmwycnVsZV9kc2NwX21hc2sodGJbRlJBX0RTQ1BfTUFTS10sIHJ1bGU0LCBleHRhY2spIFx1MDAzYyAwKVxuIFx0XHRnb3RvIGVycm91dDtcbiBcbi1cdC8qIHNwbGl0IGxvY2FsL21haW4gaWYgdGhleSBhcmUgbm90IGFscmVhZHkgc3BsaXQgKi9cbi1cdGVyciA9IGZpYl91bm1lcmdlKG5ldCk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGVycm91dDtcbiYjNDM7XHRpZiAoIW5ldC1cdTAwM2VpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzKSB7XG4mIzQzO1x0XHQvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovXG4mIzQzO1x0XHRlcnIgPSBmaWJfdW5tZXJnZShuZXQpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0Z290byBlcnJvdXQ7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKHJ1bGUtXHUwMDNldGFibGUgPT0gUlRfVEFCTEVfVU5TUEVDIFx1MDAyNlx1MDAyNiAhcnVsZS1cdTAwM2VsM21kZXYpIHtcbiBcdFx0aWYgKHJ1bGUtXHUwMDNlYWN0aW9uID09IEZSX0FDVF9UT19UQkwpIHtcbkBAIC0zNDksNyAmIzQzOzM1MSw3IEBAIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbmZpZ3VyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuJiM0MztzdGF0aWMgdm9pZCBmaWI0X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcbiB7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBydWxlLVx1MDAzZWZyX25ldDtcbiBcbkBAIC0zNjEsOCAmIzQzOzM2Myw2IEBAIHN0YXRpYyBpbnQgZmliNF9ydWxlX2RlbGV0ZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpXG4gXHRpZiAobmV0LVx1MDAzZWlwdjQuZmliX3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0IFx1MDAyNlx1MDAyNlxuIFx0ICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSlcbiBcdFx0bmV0LVx1MDAzZWlwdjQuZmliX3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0LS07XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBmaWI0X3J1bGVfY29tcGFyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCxcbkBAIC00NjAsNiAmIzQzOzQ2MCwxMSBAQCBzdGF0aWMgdm9pZCBmaWI0X3J1bGVfZmx1c2hfY2FjaGUoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcylcbiBcdHJ0X2NhY2hlX2ZsdXNoKG9wcy1cdTAwM2Vmcm9fbmV0KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGZpYjRfcnVsZV9uZWVkX3J0bmwoc3RydWN0IG5ldCAqbmV0KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuICFuZXQtXHUwMDNlaXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgX19uZXRfaW5pdGNvbnN0IGZpYjRfcnVsZXNfb3BzX3RlbXBsYXRlID0ge1xuIFx0LmZhbWlseVx0XHQ9IEFGX0lORVQsXG4gXHQucnVsZV9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgZmliNF9ydWxlKSxcbkBAIC00NzMsNiAmIzQzOzQ3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNF9ydWxlc19vcHNfdGVtcGxhdGUgPSB7XG4gXHQuZmlsbFx0XHQ9IGZpYjRfcnVsZV9maWxsLFxuIFx0Lm5sbXNnX3BheWxvYWRcdD0gZmliNF9ydWxlX25sbXNnX3BheWxvYWQsXG4gXHQuZmx1c2hfY2FjaGVcdD0gZmliNF9ydWxlX2ZsdXNoX2NhY2hlLFxuJiM0MztcdC5uZWVkX3J0bmxcdD0gZmliNF9ydWxlX25lZWRfcnRubCxcbiBcdC5ubGdyb3VwXHQ9IFJUTkxHUlBfSVBWNF9SVUxFLFxuIFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gfTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfdHJpZS5jIGIvbmV0L2lwdjQvZmliX3RyaWUuY1xuaW5kZXggZTExZGM4NmNlZGEwYmUuLmQxZDM0MmQ3MTQ4ZTgyIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZmliX3RyaWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvZmliX3RyaWUuY1xuQEAgLTIxMzcsOCAmIzQzOzIxMzcsNyBAQCB2b2lkIGZpYl9pbmZvX25vdGlmeV91cGRhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxfaW5mbyAqaW5mbylcbiBcdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbiBcdFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XG4gXG4tXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QsXG4tXHRcdFx0XHRcdCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpKVxuJiM0MztcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSlcbiBcdFx0XHRfX2ZpYl9pbmZvX25vdGlmeV91cGRhdGUobmV0LCB0YiwgaW5mbyk7XG4gXHR9XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuYyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xuaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjA0ZGFiOTMyOWQwY2Y1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmNcbkBAIC00ODAsMTUgJiM0Mzs0ODAsMTMgQEAgc3RhdGljIGludCBmaWI2X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZmliNl9ydWxlX2RlbGV0ZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpXG4mIzQzO3N0YXRpYyB2b2lkIGZpYjZfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuIHtcbiBcdHN0cnVjdCBuZXQgKm5ldCA9IHJ1bGUtXHUwMDNlZnJfbmV0O1xuIFxuIFx0aWYgKG5ldC1cdTAwM2VpcHY2LmZpYjZfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QgXHUwMDI2XHUwMDI2XG4gXHQgICAgZmliX3J1bGVfcmVxdWlyZXNfZmxkaXNzZWN0KHJ1bGUpKVxuIFx0XHRuZXQtXHUwMDNlaXB2Ni5maWI2X3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0LS07XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBmaWI2X3J1bGVfY29tcGFyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCxcbkBAIC02MzcsMjEgJiM0Mzs2MzUsMTQgQEAgc3RhdGljIGludCBfX25ldF9pbml0IGZpYjZfcnVsZXNfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0Z290byBvdXQ7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliNl9ydWxlc19uZXRfZXhpdF9iYXRjaChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfbGlzdClcbiYjNDM7c3RhdGljIHZvaWQgX19uZXRfZXhpdCBmaWI2X3J1bGVzX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbiB7XG4tXHRzdHJ1Y3QgbmV0ICpuZXQ7XG4tXG4tXHRydG5sX2xvY2soKTtcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnkobmV0LCBuZXRfbGlzdCwgZXhpdF9saXN0KSB7XG4tXHRcdGZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC1cdTAwM2VpcHY2LmZpYjZfcnVsZXNfb3BzKTtcbi1cdFx0Y29uZF9yZXNjaGVkKCk7XG4tXHR9XG4tXHRydG5sX3VubG9jaygpO1xuJiM0MztcdGZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC1cdTAwM2VpcHY2LmZpYjZfcnVsZXNfb3BzKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBmaWI2X3J1bGVzX25ldF9vcHMgPSB7XG4gXHQuaW5pdCA9IGZpYjZfcnVsZXNfbmV0X2luaXQsXG4tXHQuZXhpdF9iYXRjaCA9IGZpYjZfcnVsZXNfbmV0X2V4aXRfYmF0Y2gsXG4mIzQzO1x0LmV4aXQgPSBmaWI2X3J1bGVzX25ldF9leGl0LFxuIH07XG4gXG4gaW50IF9faW5pdCBmaWI2X3J1bGVzX2luaXQodm9pZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9NVUxUSVBMRV9UQUJMRVMmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWJfbmV3cnVsZSYjMzQ7LAogICAgJiMzNDtmaWJfZGVscnVsZSYjMzQ7LAogICAgJiMzNDtmaWJfbmV3X3RhYmxlJiMzNDssCiAgICAmIzM0O2ZpYl9ydWxlc19ldmVudCYjMzQ7LAogICAgJiMzNDtmaWI0X3J1bGVfY29uZmlndXJlJiMzNDssCiAgICAmIzM0O2ZpYjRfcnVsZV9kZWxldGUmIzM0OywKICAgICYjMzQ7ZmliNl9ydWxlX2NvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtmaWI2X3J1bGVfZGVsZXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cdTAwM2Vsb2NrIGFuZCBmaWJfdGFibGVfaGFzaF9sb2NrKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBSVE1fTkVXUlVMRSwgUlRNX0RFTFJVTEUpIGFuZCBuZXRkZXYgZXZlbnRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbW9kaWZpZWQgdG8gdXNlIHRoZSBuZXcgbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4NjUxOGM2MWNjNGM3ZGM0ZGFmZmQ3Y2MwOWEyMGRiOTkwNTIxNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAxOTo1MDowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oIGIvaW5jbHVkZS9uZXQvZmliX3J1bGVzLmgKaW5kZXggN2RlZTBhZTYxNmUzMjIuLmM2Yjk0NzkwZmE4MWVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9maWJfcnVsZXMuaApAQCAtODIsNyAmIzQzOzgyLDcgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMgewogCQkJCQkgICAgIHN0cnVjdCBmaWJfcnVsZV9oZHIgKiwKIAkJCQkJICAgICBzdHJ1Y3QgbmxhdHRyICoqLAogCQkJCQkgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKik7Ci0JaW50CQkJKCpkZWxldGUpKHN0cnVjdCBmaWJfcnVsZSAqKTsKJiM0MzsJdm9pZAkJCSgqZGVsZXRlKShzdHJ1Y3QgZmliX3J1bGUgKik7CiAJaW50CQkJKCpjb21wYXJlKShzdHJ1Y3QgZmliX3J1bGUgKiwKIAkJCQkJICAgc3RydWN0IGZpYl9ydWxlX2hkciAqLAogCQkJCQkgICBzdHJ1Y3QgbmxhdHRyICoqKTsKQEAgLTkzLDExICYjNDM7OTMsMTMgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMgewogCS8qIENhbGxlZCBhZnRlciBtb2RpZmljYXRpb25zIHRvIHRoZSBydWxlcyBzZXQsIG11c3QgZmx1c2gKIAkgKiB0aGUgcm91dGUgY2FjaGUgaWYgb25lIGV4aXN0cy4gKi8KIAl2b2lkCQkJKCpmbHVzaF9jYWNoZSkoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyk7CiYjNDM7CWJvb2wJCQkoKm5lZWRfcnRubCkoc3RydWN0IG5ldCAqbmV0KTsKIAogCWludAkJCW5sZ3JvdXA7CiAJc3RydWN0IGxpc3RfaGVhZAlydWxlc19saXN0OwogCXN0cnVjdCBtb2R1bGUJCSpvd25lcjsKIAlzdHJ1Y3QgbmV0CQkqZnJvX25ldDsKJiM0MzsJc3RydWN0IG11dGV4CQlsb2NrOwogCXN0cnVjdCByY3VfaGVhZAkJcmN1OwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfZmliLmggYi9pbmNsdWRlL25ldC9pcF9maWIuaAppbmRleCBjNjNhM2M0OTY3YWU2MS4uMGEzNTM1NWZiMGYzMzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwX2ZpYi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX2ZpYi5oCkBAIC0zMDIsNyAmIzQzOzMwMiw4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl90YWJsZSAqZmliX2dldF90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCkKIAkJJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbVEFCTEVfTE9DQUxfSU5ERVhdIDoKIAkJJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbVEFCTEVfTUFJTl9JTkRFWF07CiAKLQl0Yl9obGlzdCA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGhsaXN0X2ZpcnN0X3JjdShwdHIpKTsKJiM0MzsJLyogT25seSBmaWI0X3J1bGVzX2luaXQoKSBhZGRzIGZpYl90YWJsZS4gKi8KJiM0MzsJdGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGhsaXN0X2ZpcnN0X3JjdShwdHIpLCB0cnVlKTsKIAogCXJldHVybiBobGlzdF9lbnRyeSh0Yl9obGlzdCwgc3RydWN0IGZpYl90YWJsZSwgdGJfaGxpc3QpOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oIGIvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oCmluZGV4IDZlMjdjNTY1MTRkZjU3Li41OTUwNjMyMDU1OGE5OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaApAQCAtMTI3LDYgJiM0MzsxMjcsNyBAQCBzdHJ1Y3QgbmV0bnNfaXB2NCB7CiAJYXRvbWljX3QJCWZpYl9udW1fdGNsYXNzaWRfdXNlcnM7CiAjZW5kaWYKIAlzdHJ1Y3QgaGxpc3RfaGVhZAkqZmliX3RhYmxlX2hhc2g7CiYjNDM7CXNwaW5sb2NrX3QJCWZpYl90YWJsZV9oYXNoX2xvY2s7CiAJc3RydWN0IHNvY2sJCSpmaWJubDsKIAlzdHJ1Y3QgaGxpc3RfaGVhZAkqZmliX2luZm9faGFzaDsKIAl1bnNpZ25lZCBpbnQJCWZpYl9pbmZvX2hhc2hfYml0czsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpYl9ydWxlcy5jIGIvbmV0L2NvcmUvZmliX3J1bGVzLmMKaW5kZXggY2YzNzRjMjA4NzMyNTguLjIyZTVlNWUxYTljNDRmIDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWJfcnVsZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9maWJfcnVsZXMuYwpAQCAtNTEsNyAmIzQzOzUxLDYgQEAgYm9vbCBmaWJfcnVsZV9tYXRjaGFsbChjb25zdCBzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpCiAJCXJldHVybiBmYWxzZTsKIAlyZXR1cm4gdHJ1ZTsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGZpYl9ydWxlX21hdGNoYWxsKTsKIAogaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsCiAJCQkgdTMyIHByZWYsIHUzMiB0YWJsZSkKQEAgLTc4LDcgJiM0Mzs3Nyw2IEBAIGludCBmaWJfZGVmYXVsdF9ydWxlX2FkZChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLAogCWxpc3RfYWRkX3RhaWwoJmFtcDtyLSZndDtsaXN0LCAmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCk7CiAJcmV0dXJuIDA7CiB9Ci1FWFBPUlRfU1lNQk9MKGZpYl9kZWZhdWx0X3J1bGVfYWRkKTsKIAogc3RhdGljIHUzMiBmaWJfZGVmYXVsdF9ydWxlX3ByZWYoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcykKIHsKQEAgLTE3Miw2ICYjNDM7MTcwLDcgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtvcHMtJmd0O3J1bGVzX2xpc3QpOwomIzQzOwltdXRleF9pbml0KCZhbXA7b3BzLSZndDtsb2NrKTsKIAlvcHMtJmd0O2Zyb19uZXQgPSBuZXQ7CiAKIAllcnIgPSBfX2ZpYl9ydWxlc19yZWdpc3RlcihvcHMpOwpAQCAtMTgyLDcgJiM0MzsxODEsNiBAQCBmaWJfcnVsZXNfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgKnRtcGwsIHN0cnVjdCBuZXQgKm5ldCkKIAogCXJldHVybiBvcHM7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfcmVnaXN0ZXIpOwogCiBzdGF0aWMgdm9pZCBmaWJfcnVsZXNfY2xlYW51cF9vcHMoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcykKIHsKQEAgLTIwNyw3ICYjNDM7MjA1LDYgQEAgdm9pZCBmaWJfcnVsZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKQogCWZpYl9ydWxlc19jbGVhbnVwX29wcyhvcHMpOwogCWtmcmVlX3JjdShvcHMsIHJjdSk7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfdW5yZWdpc3Rlcik7CiAKIHN0YXRpYyBpbnQgdWlkX3JhbmdlX3NldChzdHJ1Y3QgZmliX2t1aWRfcmFuZ2UgKnJhbmdlKQogewpAQCAtMzYzLDcgJiM0MzszNjAsNiBAQCBpbnQgZmliX3J1bGVzX2xvb2t1cChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLCBzdHJ1Y3QgZmxvd2kgKmZsLAogCiAJcmV0dXJuIGVycjsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGZpYl9ydWxlc19sb29rdXApOwogCiBzdGF0aWMgaW50IGNhbGxfZmliX3J1bGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAkJCQkgIGVudW0gZmliX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSwKQEAgLTM5MSw3ICYjNDM7Mzg3LDcgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9ydWxlX25vdGlmaWVycyhzdHJ1Y3QgbmV0ICpuZXQsCiAJCS5ydWxlID0gcnVsZSwKIAl9OwogCi0JQVNTRVJUX1JUTkxfTkVUKG5ldCk7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtvcHMtJmd0O2xvY2spOwogCiAJLyogUGFpcmVkIHdpdGggUkVBRF9PTkNFKCkgaW4gZmliX3J1bGVzX3NlcSgpICovCiAJV1JJVEVfT05DRShvcHMtJmd0O2ZpYl9ydWxlc19zZXEsIG9wcy0mZ3Q7ZmliX3J1bGVzX3NlcSAmIzQzOyAxKTsKQEAgLTQyMyw3ICYjNDM7NDE5LDYgQEAgaW50IGZpYl9ydWxlc19kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgaW50IGZhbWlseSwKIAogCXJldHVybiBlcnI7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfZHVtcCk7CiAKIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KQogewpAQCAtNDM5LDcgJiM0Mzs0MzQsNiBAQCB1bnNpZ25lZCBpbnQgZmliX3J1bGVzX3NlcV9yZWFkKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCwgaW50IGZhbWlseSkKIAogCXJldHVybiBmaWJfcnVsZXNfc2VxOwogfQotRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX3NlcV9yZWFkKTsKIAogc3RhdGljIHN0cnVjdCBmaWJfcnVsZSAqcnVsZV9maW5kKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsCiAJCQkJICBzdHJ1Y3QgZmliX3J1bGVfaGRyICpmcmgsCkBAIC03NDAsMTAgJiM0Mzs3MzQsMTAgQEAgc3RhdGljIGludCBmaWJfbmwycnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubG1zZ2hkciAqbmxoLAogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgZmliX25sMnJ1bGVfcnRubChzdHJ1Y3QgZmliX3J1bGUgKm5scnVsZSwKLQkJCSAgICBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLAotCQkJICAgIHN0cnVjdCBubGF0dHIgKnRiW10sCi0JCQkgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQomIzQzO3N0YXRpYyBpbnQgZmliX25sMnJ1bGVfbG9ja2VkKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLAomIzQzOwkJCSAgICAgIHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsCiYjNDM7CQkJICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwKJiM0MzsJCQkgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiAJaWYgKCF0YltGUkFfUFJJT1JJVFldKQogCQlubHJ1bGUtJmd0O3ByZWYgPSBmaWJfZGVmYXVsdF9ydWxlX3ByZWYob3BzKTsKQEAgLTc1NCwxMiAmIzQzOzc0OCwxNCBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CiAJaWYgKHRiW0ZSQV9JSUZOQU1FXSkgewogCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCi0JCWRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS0mZ3Q7ZnJfbmV0LCBubHJ1bGUtJmd0O2lpZm5hbWUpOwomIzQzOwkJZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtJmd0O2ZyX25ldCwgbmxydWxlLSZndDtpaWZuYW1lKTsKIAkJaWYgKGRldikgewotCQkJbmxydWxlLSZndDtpaWZpbmRleCA9IGRldi0mZ3Q7aWZpbmRleDsKJiM0MzsJCQlubHJ1bGUtJmd0O2lpZmluZGV4ID0gUkVBRF9PTkNFKGRldi0mZ3Q7aWZpbmRleCk7CiAJCQlubHJ1bGUtJmd0O2lpZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTsKIAkJfQogCX0KQEAgLTc2NywxMyAmIzQzOzc2MywxNSBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsCiAJaWYgKHRiW0ZSQV9PSUZOQU1FXSkgewogCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCi0JCWRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS0mZ3Q7ZnJfbmV0LCBubHJ1bGUtJmd0O29pZm5hbWUpOwomIzQzOwkJZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtJmd0O2ZyX25ldCwgbmxydWxlLSZndDtvaWZuYW1lKTsKIAkJaWYgKGRldikgewotCQkJbmxydWxlLSZndDtvaWZpbmRleCA9IGRldi0mZ3Q7aWZpbmRleDsKJiM0MzsJCQlubHJ1bGUtJmd0O29pZmluZGV4ID0gUkVBRF9PTkNFKGRldi0mZ3Q7aWZpbmRleCk7CiAJCQlubHJ1bGUtJmd0O29pZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTsKIAkJfQogCX0KIAomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtODgzLDYgJiM0Mzs4ODEsNyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAlzdHJ1Y3QgbmxhdHRyICp0YltGUkFfTUFYICYjNDM7IDFdOwogCWJvb2wgdXNlcl9wcmlvcml0eSA9IGZhbHNlOwogCXN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaDsKJiM0MzsJYm9vbCB1bmxvY2tfcnRubCA9IGZhbHNlOwogCiAJZnJoID0gbmxtc2dfcGF5bG9hZChubGgsIHNpemVvZigqZnJoKSk7CiAJaWYgKCFmcmgpIHsKQEAgLTkwOCwxMCAmIzQzOzkwNywxMyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAlpZiAoZXJyKQogCQlnb3RvIGVycm91dDsKIAotCWlmICghcnRubF9oZWxkKQomIzQzOwlpZiAoIXJ0bmxfaGVsZCAmYW1wOyZhbXA7IG9wcy0mZ3Q7bmVlZF9ydG5sICZhbXA7JmFtcDsgb3BzLSZndDtuZWVkX3J0bmwobmV0KSkgewomIzQzOwkJdW5sb2NrX3J0bmwgPSB0cnVlOwogCQlydG5sX25ldF9sb2NrKG5ldCk7CiYjNDM7CX0KJiM0MzsJbXV0ZXhfbG9jaygmYW1wO29wcy0mZ3Q7bG9jayk7CiAKLQllcnIgPSBmaWJfbmwycnVsZV9ydG5sKHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7CiYjNDM7CWVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChydWxlLCBvcHMsIHRiLCBleHRhY2spOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyb3V0X2ZyZWU7CiAKQEAgLTk1OSw3ICYjNDM7OTYxLDcgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkociwgJmFtcDtvcHMtJmd0O3J1bGVzX2xpc3QsIGxpc3QpIHsKIAkJCWlmIChyLSZndDthY3Rpb24gPT0gRlJfQUNUX0dPVE8gJmFtcDsmYW1wOwogCQkJICAgIHItJmd0O3RhcmdldCA9PSBydWxlLSZndDtwcmVmICZhbXA7JmFtcDsKLQkJCSAgICBydG5sX2RlcmVmZXJlbmNlKHItJmd0O2N0YXJnZXQpID09IE5VTEwpIHsKJiM0MzsJCQkgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihyLSZndDtjdGFyZ2V0KSkgewogCQkJCXJjdV9hc3NpZ25fcG9pbnRlcihyLSZndDtjdGFyZ2V0LCBydWxlKTsKIAkJCQlpZiAoLS1vcHMtJmd0O3VucmVzb2x2ZWRfcnVsZXMgPT0gMCkKIAkJCQkJYnJlYWs7CkBAIC05NzgsNyAmIzQzOzk4MCw4IEBAIGludCBmaWJfbmV3cnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLAogCiAJZmliX3J1bGVfZ2V0KHJ1bGUpOwogCi0JaWYgKCFydG5sX2hlbGQpCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO29wcy0mZ3Q7bG9jayk7CiYjNDM7CWlmICh1bmxvY2tfcnRubCkKIAkJcnRubF9uZXRfdW5sb2NrKG5ldCk7CiAKIAlub3RpZnlfcnVsZV9jaGFuZ2UoUlRNX05FV1JVTEUsIHJ1bGUsIG9wcywgbmxoLCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTsKQEAgLTk4OCw3ICYjNDM7OTkxLDggQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsCiAJcmV0dXJuIDA7CiAKIGVycm91dF9mcmVlOgotCWlmICghcnRubF9oZWxkKQomIzQzOwltdXRleF91bmxvY2soJmFtcDtvcHMtJmd0O2xvY2spOwomIzQzOwlpZiAodW5sb2NrX3J0bmwpCiAJCXJ0bmxfbmV0X3VubG9jayhuZXQpOwogCWtmcmVlKHJ1bGUpOwogZXJyb3V0OgpAQCAtMTAzNywxMCAmIzQzOzEwNDEsOSBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAlpZiAoZXJyKQogCQlnb3RvIGVycm91dDsKIAotCWlmICghcnRubF9oZWxkKQotCQlydG5sX25ldF9sb2NrKG5ldCk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCi0JZXJyID0gZmliX25sMnJ1bGVfcnRubChubHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7CiYjNDM7CWVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChubHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7CiAJaWYgKGVycikKIAkJZ290byBlcnJvdXRfZnJlZTsKIApAQCAtMTA1NSwxMSAmIzQzOzEwNTgsOCBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAkJZ290byBlcnJvdXRfZnJlZTsKIAl9CiAKLQlpZiAob3BzLSZndDtkZWxldGUpIHsKLQkJZXJyID0gb3BzLSZndDtkZWxldGUocnVsZSk7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIGVycm91dF9mcmVlOwotCX0KJiM0MzsJaWYgKG9wcy0mZ3Q7ZGVsZXRlKQomIzQzOwkJb3BzLSZndDtkZWxldGUocnVsZSk7CiAKIAlpZiAocnVsZS0mZ3Q7dHVuX2lkKQogCQlpcF90dW5uZWxfdW5uZWVkX21ldGFkYXRhKCk7CkBAIC0xMDY4LDcgJiM0MzsxMDY4LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsCiAKIAlpZiAocnVsZS0mZ3Q7YWN0aW9uID09IEZSX0FDVF9HT1RPKSB7CiAJCW9wcy0mZ3Q7bnJfZ290b19ydWxlcy0tOwotCQlpZiAocnRubF9kZXJlZmVyZW5jZShydWxlLSZndDtjdGFyZ2V0KSA9PSBOVUxMKQomIzQzOwkJaWYgKCFyY3VfYWNjZXNzX3BvaW50ZXIocnVsZS0mZ3Q7Y3RhcmdldCkpCiAJCQlvcHMtJmd0O3VucmVzb2x2ZWRfcnVsZXMtLTsKIAl9CiAKQEAgLTEwODYsNyAmIzQzOzEwODYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAkJaWYgKCZhbXA7bi0mZ3Q7bGlzdCA9PSAmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCB8fCBuLSZndDtwcmVmICE9IHJ1bGUtJmd0O3ByZWYpCiAJCQluID0gTlVMTDsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShyLCAmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCwgbGlzdCkgewotCQkJaWYgKHJ0bmxfZGVyZWZlcmVuY2Uoci0mZ3Q7Y3RhcmdldCkgIT0gcnVsZSkKJiM0MzsJCQlpZiAocmN1X2FjY2Vzc19wb2ludGVyKHItJmd0O2N0YXJnZXQpICE9IHJ1bGUpCiAJCQkJY29udGludWU7CiAJCQlyY3VfYXNzaWduX3BvaW50ZXIoci0mZ3Q7Y3RhcmdldCwgbik7CiAJCQlpZiAoIW4pCkBAIC0xMDk2LDggJiM0MzsxMDk2LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsCiAKIAljYWxsX2ZpYl9ydWxlX25vdGlmaWVycyhuZXQsIEZJQl9FVkVOVF9SVUxFX0RFTCwgcnVsZSwgb3BzLCBOVUxMKTsKIAotCWlmICghcnRubF9oZWxkKQotCQlydG5sX25ldF91bmxvY2sobmV0KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7b3BzLSZndDtsb2NrKTsKIAogCW5vdGlmeV9ydWxlX2NoYW5nZShSVE1fREVMUlVMRSwgcnVsZSwgb3BzLCBubGgsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpOwogCWZpYl9ydWxlX3B1dChydWxlKTsKQEAgLTExMDcsOCAmIzQzOzExMDYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAlyZXR1cm4gMDsKIAogZXJyb3V0X2ZyZWU6Ci0JaWYgKCFydG5sX2hlbGQpCi0JCXJ0bmxfbmV0X3VubG9jayhuZXQpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCWtmcmVlKG5scnVsZSk7CiBlcnJvdXQ6CiAJcnVsZXNfb3BzX3B1dChvcHMpOwpAQCAtMTQwMiwyNCAmIzQzOzE0MDAsMzAgQEAgc3RhdGljIGludCBmaWJfcnVsZXNfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LAogCXN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoZGV2KTsKIAlzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzOwogCi0JQVNTRVJUX1JUTkwoKTsKLQogCXN3aXRjaCAoZXZlbnQpIHsKIAljYXNlIE5FVERFVl9SRUdJU1RFUjoKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsICZhbXA7bmV0LSZndDtydWxlc19vcHMsIGxpc3QpCiYjNDM7CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgJmFtcDtuZXQtJmd0O3J1bGVzX29wcywgbGlzdCkgewomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCQkJYXR0YWNoX3J1bGVzKCZhbXA7b3BzLSZndDtydWxlc19saXN0LCBkZXYpOwomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO29wcy0mZ3Q7bG9jayk7CiYjNDM7CQl9CiAJCWJyZWFrOwogCiAJY2FzZSBORVRERVZfQ0hBTkdFTkFNRToKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsICZhbXA7bmV0LSZndDtydWxlc19vcHMsIGxpc3QpIHsKJiM0MzsJCQltdXRleF9sb2NrKCZhbXA7b3BzLSZndDtsb2NrKTsKIAkJCWRldGFjaF9ydWxlcygmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCwgZGV2KTsKIAkJCWF0dGFjaF9ydWxlcygmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCwgZGV2KTsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCQl9CiAJCWJyZWFrOwogCiAJY2FzZSBORVRERVZfVU5SRUdJU1RFUjoKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsICZhbXA7bmV0LSZndDtydWxlc19vcHMsIGxpc3QpCiYjNDM7CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgJmFtcDtuZXQtJmd0O3J1bGVzX29wcywgbGlzdCkgewomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCQkJZGV0YWNoX3J1bGVzKCZhbXA7b3BzLSZndDtydWxlc19saXN0LCBkZXYpOwomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO29wcy0mZ3Q7bG9jayk7CiYjNDM7CQl9CiAJCWJyZWFrOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuYwppbmRleCA0MjIxMjk3MGQ3MzU0MC4uNTRlYjcyNjk1MDkzZGEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jCkBAIC03Niw3ICYjNDM7NzYsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNF9ydWxlc19pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAogc3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCkKIHsKLQlzdHJ1Y3QgZmliX3RhYmxlICp0YiwgKmFsaWFzID0gTlVMTDsKJiM0MzsJc3RydWN0IGZpYl90YWJsZSAqdGIsICpuZXdfdGIsICphbGlhcyA9IE5VTEw7CiAJdW5zaWduZWQgaW50IGg7CiAKIAlpZiAoaWQgPT0gMCkKQEAgLTg1LDE0ICYjNDM7ODUsMjcgQEAgc3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCkKIAlpZiAodGIpCiAJCXJldHVybiB0YjsKIAomIzQzOwlpZiAoIWNoZWNrX25ldChuZXQpKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiAJaWYgKGlkID09IFJUX1RBQkxFX0xPQ0FMICZhbXA7JmFtcDsgIW5ldC0mZ3Q7aXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcykKIAkJYWxpYXMgPSBmaWJfbmV3X3RhYmxlKG5ldCwgUlRfVEFCTEVfTUFJTik7CiAKLQlpZiAoY2hlY2tfbmV0KG5ldCkpCi0JCXRiID0gZmliX3RyaWVfdGFibGUoaWQsIGFsaWFzKTsKLQlpZiAoIXRiKQomIzQzOwluZXdfdGIgPSBmaWJfdHJpZV90YWJsZShpZCwgYWxpYXMpOwomIzQzOwlpZiAoIW5ld190YikKIAkJcmV0dXJuIE5VTEw7CiAKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7bmV0LSZndDtpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spOwomIzQzOwomIzQzOwl0YiA9IGZpYl9nZXRfdGFibGUobmV0LCBpZCk7CiYjNDM7CWlmICh0YikgewomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hfbG9jayk7CiYjNDM7CQlmaWJfZnJlZV90YWJsZShuZXdfdGIpOwomIzQzOwkJcmV0dXJuIHRiOwomIzQzOwl9CiYjNDM7CiYjNDM7CXRiID0gbmV3X3RiOwomIzQzOwogCXN3aXRjaCAoaWQpIHsKIAljYXNlIFJUX1RBQkxFX01BSU46CiAJCXJjdV9hc3NpZ25fcG9pbnRlcihuZXQtJmd0O2lwdjQuZmliX21haW4sIHRiKTsKQEAgLTEwNiwyOCAmIzQzOzExOSwzNSBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKQogCiAJaCA9IGlkICZhbXA7IChGSUJfVEFCTEVfSEFTSFNaIC0gMSk7CiAJaGxpc3RfYWRkX2hlYWRfcmN1KCZhbXA7dGItJmd0O3RiX2hsaXN0LCAmYW1wO25ldC0mZ3Q7aXB2NC5maWJfdGFibGVfaGFzaFtoXSk7CiYjNDM7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7bmV0LSZndDtpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spOwomIzQzOwogCXJldHVybiB0YjsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGZpYl9uZXdfdGFibGUpOwogCi0vKiBjYWxsZXIgbXVzdCBob2xkIGVpdGhlciBydG5sIG9yIHJjdSByZWFkIGxvY2sgKi8KIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpCiB7Ci0Jc3RydWN0IGZpYl90YWJsZSAqdGI7CiYjNDM7CXN0cnVjdCBmaWJfdGFibGUgKnRiID0gTlVMTDsKIAlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDsKIAl1bnNpZ25lZCBpbnQgaDsKIAogCWlmIChpZCA9PSAwKQogCQlpZCA9IFJUX1RBQkxFX01BSU47CiAJaCA9IGlkICZhbXA7IChGSUJfVEFCTEVfSEFTSFNaIC0gMSk7Ci0KIAloZWFkID0gJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbaF07Ci0JaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwKLQkJCQkgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSkgewomIzQzOwomIzQzOwkvKiBmaWJfdGFibGUgaXMgbm90IGRlc3Ryb3llZCB1bnRpbCBpcF9maWJfbmV0X2V4aXQoKQomIzQzOwkgKiBleGNlcHQgZm9yIHRoZSBtZXJnZWQgbWFpbi9sb2NhbCB0YWJsZS4KJiM0MzsJICogZmliX3VubWVyZ2UoKSBpcyBjYWxsZWQgdW5kZXIgUlROTCwgc28gb3RoZXIgcmVhZGVycwomIzQzOwkgKiB1bmRlciBSVE5MIChlLmcuIGZpYl9mbHVzaCgpLCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKCkpCiYjNDM7CSAqIGNhbiBzYWZlbHkgdHJhdmVyc2UgdGhlIGxpc3Qgd2l0aCByY3VfZGVyZWZlcmVuY2VfcmF3KCkuCiYjNDM7CSAqLwomIzQzOwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKQogCQlpZiAodGItJmd0O3RiX2lkID09IGlkKQotCQkJcmV0dXJuIHRiOwotCX0KLQlyZXR1cm4gTlVMTDsKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJcmV0dXJuIHRiOwogfQogI2VuZGlmIC8qIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVMgKi8KIApAQCAtMTkwLDEwICYjNDM7MjEwLDkgQEAgdm9pZCBmaWJfZmx1c2goc3RydWN0IG5ldCAqbmV0KQogCiAJZm9yIChoID0gMDsgaCAmbHQ7IEZJQl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbaF07Ci0JCXN0cnVjdCBobGlzdF9ub2RlICp0bXA7CiAJCXN0cnVjdCBmaWJfdGFibGUgKnRiOwogCi0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGIsIHRtcCwgaGVhZCwgdGJfaGxpc3QpCiYjNDM7CQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKQogCQkJZmx1c2hlZCAmIzQzOz0gZmliX3RhYmxlX2ZsdXNoKG5ldCwgdGIsIGZhbHNlKTsKIAl9CiAKQEAgLTE1NjUsNiAmIzQzOzE1ODQsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfZmliX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAluZXQtJmd0O2lwdjQuc3lzY3RsX2ZpYl9tdWx0aXBhdGhfaGFzaF9maWVsZHMgPQogCQlGSUJfTVVMVElQQVRIX0hBU0hfRklFTERfREVGQVVMVF9NQVNLOwogI2VuZGlmCiYjNDM7CXNwaW5fbG9ja19pbml0KCZhbXA7bmV0LSZndDtpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spOwogCiAJLyogQXZvaWQgZmFsc2Ugc2hhcmluZyA6IFVzZSBhdCBsZWFzdCBhIGZ1bGwgY2FjaGUgbGluZSAqLwogCXNpemUgPSBtYXhfdChzaXplX3QsIHNpemUsIEwxX0NBQ0hFX0JZVEVTKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9ydWxlcy5jIGIvbmV0L2lwdjQvZmliX3J1bGVzLmMKaW5kZXggZTA2OGE1YmFjZTczZjIuLjRlZGIwZGNhN2JlOGExIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9maWJfcnVsZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfcnVsZXMuYwpAQCAtMzAxLDEwICYjNDM7MzAxLDEyIEBAIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbmZpZ3VyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBza19idWZmICpza2IsCiAJICAgIGZpYjRfbmwycnVsZV9kc2NwX21hc2sodGJbRlJBX0RTQ1BfTUFTS10sIHJ1bGU0LCBleHRhY2spICZsdDsgMCkKIAkJZ290byBlcnJvdXQ7CiAKLQkvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovCi0JZXJyID0gZmliX3VubWVyZ2UobmV0KTsKLQlpZiAoZXJyKQotCQlnb3RvIGVycm91dDsKJiM0MzsJaWYgKCFuZXQtJmd0O2lwdjQuZmliX2hhc19jdXN0b21fcnVsZXMpIHsKJiM0MzsJCS8qIHNwbGl0IGxvY2FsL21haW4gaWYgdGhleSBhcmUgbm90IGFscmVhZHkgc3BsaXQgKi8KJiM0MzsJCWVyciA9IGZpYl91bm1lcmdlKG5ldCk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCWdvdG8gZXJyb3V0OwomIzQzOwl9CiAKIAlpZiAocnVsZS0mZ3Q7dGFibGUgPT0gUlRfVEFCTEVfVU5TUEVDICZhbXA7JmFtcDsgIXJ1bGUtJmd0O2wzbWRldikgewogCQlpZiAocnVsZS0mZ3Q7YWN0aW9uID09IEZSX0FDVF9UT19UQkwpIHsKQEAgLTM0OSw3ICYjNDM7MzUxLDcgQEAgc3RhdGljIGludCBmaWI0X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQomIzQzO3N0YXRpYyB2b2lkIGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQogewogCXN0cnVjdCBuZXQgKm5ldCA9IHJ1bGUtJmd0O2ZyX25ldDsKIApAQCAtMzYxLDggJiM0MzszNjMsNiBAQCBzdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQogCWlmIChuZXQtJmd0O2lwdjQuZmliX3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0ICZhbXA7JmFtcDsKIAkgICAgZmliX3J1bGVfcmVxdWlyZXNfZmxkaXNzZWN0KHJ1bGUpKQogCQluZXQtJmd0O2lwdjQuZmliX3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0LS07Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBmaWI0X3J1bGVfY29tcGFyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCwKQEAgLTQ2MCw2ICYjNDM7NDYwLDExIEBAIHN0YXRpYyB2b2lkIGZpYjRfcnVsZV9mbHVzaF9jYWNoZShzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKQogCXJ0X2NhY2hlX2ZsdXNoKG9wcy0mZ3Q7ZnJvX25ldCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBmaWI0X3J1bGVfbmVlZF9ydG5sKHN0cnVjdCBuZXQgKm5ldCkKJiM0Mzt7CiYjNDM7CXJldHVybiAhbmV0LSZndDtpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNF9ydWxlc19vcHNfdGVtcGxhdGUgPSB7CiAJLmZhbWlseQkJPSBBRl9JTkVULAogCS5ydWxlX3NpemUJPSBzaXplb2Yoc3RydWN0IGZpYjRfcnVsZSksCkBAIC00NzMsNiAmIzQzOzQ3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNF9ydWxlc19vcHNfdGVtcGxhdGUgPSB7CiAJLmZpbGwJCT0gZmliNF9ydWxlX2ZpbGwsCiAJLm5sbXNnX3BheWxvYWQJPSBmaWI0X3J1bGVfbmxtc2dfcGF5bG9hZCwKIAkuZmx1c2hfY2FjaGUJPSBmaWI0X3J1bGVfZmx1c2hfY2FjaGUsCiYjNDM7CS5uZWVkX3J0bmwJPSBmaWI0X3J1bGVfbmVlZF9ydG5sLAogCS5ubGdyb3VwCT0gUlROTEdSUF9JUFY0X1JVTEUsCiAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogfTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl90cmllLmMgYi9uZXQvaXB2NC9maWJfdHJpZS5jCmluZGV4IGUxMWRjODZjZWRhMGJlLi5kMWQzNDJkNzE0OGU4MiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvZmliX3RyaWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfdHJpZS5jCkBAIC0yMTM3LDggJiM0MzsyMTM3LDcgQEAgdm9pZCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sX2luZm8gKmluZm8pCiAJCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbaF07CiAJCXN0cnVjdCBmaWJfdGFibGUgKnRiOwogCi0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QsCi0JCQkJCSBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpKQomIzQzOwkJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSkKIAkJCV9fZmliX2luZm9fbm90aWZ5X3VwZGF0ZShuZXQsIHRiLCBpbmZvKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9maWI2X3J1bGVzLmMgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmMKaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjA0ZGFiOTMyOWQwY2Y1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9maWI2X3J1bGVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jCkBAIC00ODAsMTUgJiM0Mzs0ODAsMTMgQEAgc3RhdGljIGludCBmaWI2X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgaW50IGZpYjZfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQomIzQzO3N0YXRpYyB2b2lkIGZpYjZfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQogewogCXN0cnVjdCBuZXQgKm5ldCA9IHJ1bGUtJmd0O2ZyX25ldDsKIAogCWlmIChuZXQtJmd0O2lwdjYuZmliNl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdCAmYW1wOyZhbXA7CiAJICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSkKIAkJbmV0LSZndDtpcHY2LmZpYjZfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QtLTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGZpYjZfcnVsZV9jb21wYXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IGZpYl9ydWxlX2hkciAqZnJoLApAQCAtNjM3LDIxICYjNDM7NjM1LDE0IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBmaWI2X3J1bGVzX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAlnb3RvIG91dDsKIH0KIAotc3RhdGljIHZvaWQgX19uZXRfZXhpdCBmaWI2X3J1bGVzX25ldF9leGl0X2JhdGNoKHN0cnVjdCBsaXN0X2hlYWQgKm5ldF9saXN0KQomIzQzO3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliNl9ydWxlc19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiB7Ci0Jc3RydWN0IG5ldCAqbmV0OwotCi0JcnRubF9sb2NrKCk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShuZXQsIG5ldF9saXN0LCBleGl0X2xpc3QpIHsKLQkJZmliX3J1bGVzX3VucmVnaXN0ZXIobmV0LSZndDtpcHY2LmZpYjZfcnVsZXNfb3BzKTsKLQkJY29uZF9yZXNjaGVkKCk7Ci0JfQotCXJ0bmxfdW5sb2NrKCk7CiYjNDM7CWZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC0mZ3Q7aXB2Ni5maWI2X3J1bGVzX29wcyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZmliNl9ydWxlc19uZXRfb3BzID0gewogCS5pbml0ID0gZmliNl9ydWxlc19uZXRfaW5pdCwKLQkuZXhpdF9iYXRjaCA9IGZpYjZfcnVsZXNfbmV0X2V4aXRfYmF0Y2gsCiYjNDM7CS5leGl0ID0gZmliNl9ydWxlc19uZXRfZXhpdCwKIH07CiAKIGludCBfX2luaXQgZmliNl9ydWxlc19pbml0KHZvaWQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMDgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBTdWJzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSBwYXJ0IGRlYWxpbmcgd2l0aCBgZmliX3J1bGVzYCBhbmQgYGZpYl90YWJsZWAgbG9naWMuIEl0JiMzOTtzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3IsIGFzIEkgY2FuIHNlZSBpdCYjMzk7cyBtYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIGhvdyB0aGVzZSB0YWJsZXMgYXJlIG1hbmFnZWQuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgYWx0ZXJhdGlvbiBvZiBgZmliX3J1bGVzX29wcy0mZ3Q7ZGVsZXRlYCB0byByZXR1cm4gYHZvaWRgIGluc3RlYWQgb2YgYGludGAuIFRoYXQmIzM5O3MgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2UgdG8gdGhlIGVycm9yIGhhbmRsaW5nIG1vZGVsLgoKVGhlIHJlYWwgbWVhdCBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBsb2NraW5nIHN0cmF0ZWd5LiBJbnN0ZWFkIG9mIHJlbHlpbmcgc29sZWx5IG9uIGBydG5sX2xvY2soKWAsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYG11dGV4YCBsb2NrIHdpdGhpbiBgZmliX3J1bGVzX29wc2AgdG8gcHJvdGVjdCBgZmliX3J1bGVzX2xpc3RgLiBJdCBhbHNvIHRocm93cyBpbiBhIGBuZWVkX3J0bmxgIGZsYWcgdG8gYGZpYl9ydWxlc19vcHNgIHdoaWNoIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLiBUaGlzIGZpbmUtZ3JhaW5lZCBsb2NraW5nIGFwcHJvYWNoIGlzIGludGVyZXN0aW5nLiBXZSYjMzk7cmUgbW92aW5nIGF3YXkgZnJvbSB0aGUgbW9yZSBjb2Fyc2UtZ3JhaW5lZCBSVE5MIGxvY2ssIGluZGljYXRpbmcgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yIG1heWJlIGEgbW92ZSB0b3dhcmRzIG1vcmUgY29uY3VycmVudCBhY2Nlc3MuCgpJIHNlZSB0aGF0IGBmaWJfbmV3cnVsZWAgYW5kIGBmaWJfZGVscnVsZWAgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgYG9wcy0mZ3Q7bG9ja2AgaW5zdGVhZCBvZiBgcnRubF9sb2NrKClgLCB3aGljaCBtYWtlcyBzZW5zZS4gU2ltaWxhcmx5LCBgZmliX25ld190YWJsZWAgaXMgbm93IHVzaW5nIGEgYGZpYl90YWJsZV9oYXNoX2xvY2tgIHNwaW5sb2NrLCB3aGljaCBJIGFzc3VtZSBpcyBmb3IgcHJvdGVjdGluZyB0aGUgaGFzaCB0YWJsZSYjMzk7cyBpbnRlZ3JpdHkgZHVyaW5nIHRhYmxlIGNyZWF0aW9uLiBgZmliX2dldF90YWJsZWAgaXMgdXNpbmcgZWl0aGVyIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCBvciBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCB3aXRoIGB0cnVlYCwgd2hpY2ggaXMgZGVmaW5pdGVseSBpbXBvcnRhbnQsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29udGV4dCBmb3IgdGhpcyB1c2FnZSwgdmVyaWZ5aW5nIGl0cyB1c2UgY2FzZSB3aXRoIHRoZSBvdGhlciBsb2NrcyBpbiB0aGlzIHBhdGNoLiBUaGUgYGZpYl9ydWxlc19ldmVudGAgZnVuY3Rpb24gc2VlbXMgdG8gYmUgZ2FpbmluZyBhIGxvY2sgdG8gcHJvdGVjdCBhdHRhY2hpbmcgYW5kIGRldGFjaGluZyBydWxlczsgbGlrZWx5IGNyaXRpY2FsIGZvciBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEFuZCB0aGUgYGZpYjZfcnVsZXNfbmV0X2V4aXRfYmF0Y2hgIGlzIGJlaW5nIHJlZmFjdG9yZWQgdG8gYGZpYjZfcnVsZXNfbmV0X2V4aXRgIHdpdGggdGhlIHJlbW92YWwgb2YgYHJ0bmxfbG9jaygpYCwgd2hpY2ggZGVmaW5pdGVseSBjaGFuZ2VzIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgSVB2NiBGSUIgcnVsZXMgbWFuYWdlbWVudC4KCkZyb20gYSBmdW5jdGlvbmFsIHN0YW5kcG9pbnQsIHRoaXMgcGF0Y2ggaXMgYSBjb3JlIG5ldHdvcmtpbmcgY2hhbmdlLCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBsb2NrbGVzcyBvciBmaW5lci1ncmFpbmVkIGxvY2tpbmcgZGVmaW5pdGVseSBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBmbG93LCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2Ugb2YgdGhpcywgaXQmIzM5O3MgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHNwZWNpZmljIGZ1bmN0aW9uczogYGZpYl9uZXdydWxlYCwgYGZpYl9kZWxydWxlYCwgYGZpYl9uZXdfdGFibGVgLCBgZmliX2dldF90YWJsZWAsIGBmaWJfcnVsZXNfZXZlbnRgLCBhbmQgdGhlIElQdjQgYW5kIElQdjYgcnVsZSBjb25maWd1cmF0aW9uIGFuZCBkZWxldGlvbiBmdW5jdGlvbnMgKGBmaWI0X3J1bGVfY29uZmlndXJlYCwgYGZpYjRfcnVsZV9kZWxldGVgLCBgZmliNl9ydWxlX2NvbmZpZ3VyZWAsIGBmaWI2X3J1bGVfZGVsZXRlYCkuCgpGaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGUgYENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNgIGFuZCBgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTYCBhcmUgZ29pbmcgdG8gYmUga2V5LCBlc3BlY2lhbGx5IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcyBpbiBgZmliX25ld190YWJsZWAgYW5kIGBmaWJfZ2V0X3RhYmxlYCwgYW5kIGFsc28gdGhlIGBmaWI2X3J1bGVzX25ldGAgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgY29uZmlndXJhdGlvbnMgYXJlIHByb3Blcmx5IGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9NTM9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc6NTQ6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctNTUtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnPTI0PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnOjI1OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnLTI2LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTUwPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc6NTE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZy01Mi1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3Fjb21fZGVmY29uZmlnPTM4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9hcm0vY29uZmlncy9xY29tX2RlZmNvbmZpZzozOTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcWNvbV9kZWZjb25maWctNDAtQ09ORklHX0lQX1JPVVRFX1ZFUkJPU0U9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MTE5PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxMjA6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEyMS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEzNT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTM2OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMzctQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWc9MTc9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9iY200N3h4X2RlZmNvbmZpZzoxODpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2JjbTQ3eHhfZGVmY29uZmlnLTE5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnPTMyPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc6MzM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnPTI0PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZzoyNTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWctMjYtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnPTM2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjM3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnLTM4LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnPTQ1PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc6NDY6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy00Ny1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTU3PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo1ODpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctNTktQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTI5PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjMwOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTMxLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9MzM9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjM0OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0zNS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnPTI4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzoyOTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWctMzAtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZz0zMD1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc6MzE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnLTMyLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc9MzE9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnOjMyOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZy0zMy1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWctMzQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc9Mjk9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZzozMDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnLTMxLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzozMzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZz00Nz1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjQ4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWctNDktQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvcWlfbGI2MF9kZWZjb25maWc9MjU9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9xaV9sYjYwX2RlZmNvbmZpZzoyNjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL3FpX2xiNjBfZGVmY29uZmlnLTI3LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JiNTMyX2RlZmNvbmZpZz0zMD1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL3JiNTMyX2RlZmNvbmZpZzozMTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL3JiNTMyX2RlZmNvbmZpZy0zMi1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9yczkwX2RlZmNvbmZpZz00Nz1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL3JzOTBfZGVmY29uZmlnOjQ4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvcnM5MF9kZWZjb25maWctNDktQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZz0zMT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL3J0MzA1eF9kZWZjb25maWc6MzI6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnLTMzLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnPTMzPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MveHdheV9kZWZjb25maWc6MzQ6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZy0zNS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZz00Nj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnOjQ3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWctNDgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc9NDI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3hlc19tcGM4NXh4X2RlZmNvbmZpZzo0MzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgveGVzX21wYzg1eHhfZGVmY29uZmlnLTQ0LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTYwPUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc6NjE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy02Mi1DT05GSUdfSVBfUElNU01fVjE9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9ODY9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjg3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy04OC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTM4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEzOTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xNDAtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTEyOT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMzA6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTMxLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zZTc3MTJfZGVmY29uZmlnPTMyPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWc6MzM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzEyX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvc2gvY29uZmlncy9zZTc3MjFfZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9zaC9jb25maWdzL3NlNzcyMV9kZWZjb25maWctMzQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWc9MzM9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL3NoL2NvbmZpZ3Mvc2gyMDA3X2RlZmNvbmZpZzozNDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnLTM1LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9MzI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9zaC9jb25maWdzL3RpdGFuX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnPTY2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZzo2NzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWctNjgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTY3PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjY4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTY5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZz0xNj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZzoxNzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZy0xOC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5pbmNsdWRlL25ldC9pcF9maWIuaD0xNjY9dm9pZCBfX25ldF9leGl0IGZpYjRfc2VtYW50aWNzX2V4aXQoc3RydWN0IG5ldCAqbmV0KTtcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTE2Ny1cbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjE2ODojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xuaW5jbHVkZS9uZXQvaXBfZmliLmgtMTY5LXN0cnVjdCBmaWJfcnVsZTtcbi0tXG5pbmNsdWRlL25ldC9pcF9maWIuaD0xODc9c3RydWN0IGZpYl9yZXN1bHRfbmwge1xuLS1cbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTIwMS1cbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjIwMjojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xuaW5jbHVkZS9uZXQvaXBfZmliLmgtMjAzLSNkZWZpbmUgRklCX1RBQkxFX0hBU0hTWiAyNTZcbi0tXG5pbmNsdWRlL25ldC9pcF9maWIuaD0yODk9dm9pZCBmaWJfZnJlZV90YWJsZShzdHJ1Y3QgZmliX3RhYmxlICp0Yik7XG5pbmNsdWRlL25ldC9pcF9maWIuaC0yOTAtXG5pbmNsdWRlL25ldC9pcF9maWIuaDoyOTE6I2lmbmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcF9maWIuaC0yOTItXG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmg9MzU3PXN0YXRpYyBpbmxpbmUgYm9vbCBmaWI0X3J1bGVzX2Vhcmx5X2Zsb3dfZGlzc2VjdChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmgtMzYzLX1cbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjM2NDojZWxzZSAvKiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTICovXG5pbmNsdWRlL25ldC9pcF9maWIuaC0zNjUtaW50IF9fbmV0X2luaXQgZmliNF9ydWxlc19pbml0KHN0cnVjdCBuZXQgKm5ldCk7XG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmg9NDE3PXN0YXRpYyBpbmxpbmUgYm9vbCBmaWI0X3J1bGVzX2Vhcmx5X2Zsb3dfZGlzc2VjdChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmgtNDM3LVxuaW5jbHVkZS9uZXQvaXBfZmliLmg6NDM4OiNlbmRpZiAvKiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTICovXG5pbmNsdWRlL25ldC9pcF9maWIuaC00MzktXG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmg9NTk4PXN0YXRpYyBpbmxpbmUgdm9pZCBmaWJfY29tYmluZV9pdGFnKHUzMiAqaXRhZywgY29uc3Qgc3RydWN0IGZpYl9yZXN1bHQgKnJlcylcbi0tXG5pbmNsdWRlL25ldC9pcF9maWIuaC02MDEtXHRzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjID0gcmVzLVx1MDAzZW5oYztcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjYwMjojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xuaW5jbHVkZS9uZXQvaXBfZmliLmgtNjAzLVx0dTMyIHJ0YWc7XG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmgtNjEzLVxuaW5jbHVkZS9uZXQvaXBfZmliLmg6NjE0OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcF9maWIuaC02MTUtXHRydGFnID0gcmVzLVx1MDAzZXRjbGFzc2lkO1xuLS1cbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaD01NT1zdHJ1Y3QgbmV0bnNfaXB2NCB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTExNi1cdHN0cnVjdCBtdXRleFx0XHRyYV9tdXRleDtcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaDoxMTc6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaC0xMTgtXHRzdHJ1Y3QgZmliX3J1bGVzX29wc1x0KnJ1bGVzX29wcztcbi0tXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yMC0jaWYgZGVmaW5lZChDT05GSUdfSVBWNikgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTKVxubmV0L2NvcmUvZmliX3J1bGVzLmM6MjE6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTIyLSNkZWZpbmUgSU5ESVJFQ1RfQ0FMTF9NVChmLCBmMiwgZjEsIC4uLikgXFxcbi0tXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yNi0jZW5kaWZcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjI3OiNlbGlmIGRlZmluZWQoQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUylcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTI4LSNkZWZpbmUgSU5ESVJFQ1RfQ0FMTF9NVChmLCBmMiwgZjEsIC4uLikgSU5ESVJFQ1RfQ0FMTF8xKGYsIGYxLCBfX1ZBX0FSR1NfXylcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfUFJPQ19GUykgJiM0Mzs9IHByb2Mub1xubmV0L2lwdjQvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUykgJiM0Mzs9IGZpYl9ydWxlcy5vXG5uZXQvaXB2NC9NYWtlZmlsZS0yMy1vYmotJChDT05GSUdfSVBfTVJPVVRFKSAmIzQzOz0gaXBtci5vXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtNTAtXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzo1MTojaWZuZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUyLVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTEyOT1zdHJ1Y3QgZmliX3RhYmxlICpmaWJfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1MS19XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNTI6I2VuZGlmIC8qIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVMgKi9cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1My1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE1ND1zdGF0aWMgdm9pZCBmaWJfcmVwbGFjZV90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWJfdGFibGUgKm9sZCxcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTYte1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU3OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTgtXHRzd2l0Y2ggKG5ldy1cdTAwM2V0Yl9pZCkge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2MTA9c3RhdGljIHZvaWQgaXBfZmliX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjE0LVx0QVNTRVJUX1JUTkxfTkVUKG5ldCk7XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjE1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjE2LVx0UkNVX0lOSVRfUE9JTlRFUihuZXQtXHUwMDNlaXB2NC5maWJfbWFpbiwgTlVMTCk7XG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTYzNz1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjcwLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTY3MTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY3Mi1cdGZpYjRfcnVsZXNfZXhpdChuZXQpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2OTE9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBmaWJfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5Mi17XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjkzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjk0LVx0ZmliNF9ydWxlc19leGl0KG5ldCk7XG4tLVxubmV0L2lwdjQvcm91dGUuYz0xNTg0PXN0YXRpYyB2b2lkIHJ0X3NldF9uZXh0aG9wKHN0cnVjdCBydGFibGUgKnJ0LCBfX2JlMzIgZGFkZHIsXG4tLVxubmV0L2lwdjQvcm91dGUuYy0xNjM1LSNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxubmV0L2lwdjQvcm91dGUuYzoxNjM2OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9yb3V0ZS5jLTE2MzctXHRzZXRfY2xhc3NfdGFnKHJ0LCByZXMtXHUwMDNldGNsYXNzaWQpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND03Mj1DT05GSUdfSVBfTVVMVElDQVNUPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDo3MzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC03NC1DT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9NDA9Q09ORklHX0lQX01VTFRJQ0FTVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6NDE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtNDItQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTM1PUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjM2OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTM3LUNPTkZJR19KVU1QX0xBQkVMPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTU3PUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo1ODpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHgtNTktQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ9MTA4PUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ6MTA5OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTEwLUNPTkZJR19JUF9QSU1TTV9WMT15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb249OTU9Q09ORklHX0lQX01VTFRJQ0FTVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjo5NjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTk3LUNPTkZJR19JUF9ORl9GSUxURVI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc9NT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc6NjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWctNy1DT05GSUdfSVBfTkZfRklMVEVSPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy93aXJlZ3VhcmQvcWVtdS9rZXJuZWwuY29uZmlnPTMxPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZzozMjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3dpcmVndWFyZC9xZW11L2tlcm5lbC5jb25maWctMzMtQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ4NAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIGFzIGlmIEkmIzM5O20gZGlyZWN0bHkgZXhwZXJpZW5jaW5nIGl0OgoKKipFeGFtaW5pbmcgYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2AqKgoKQWxyaWdodCwgdGltZSB0byBmb2N1cy4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24sIGBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciByb3V0aW5nLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gYWxyZWFkeSBlbnZpc2lvbmluZyB0aGUgcm91dGluZyB0YWJsZSBpbmZyYXN0cnVjdHVyZSBhbmQgaG93IGVuYWJsaW5nIHRoaXMgb3B0aW9uIGNoYW5nZXMgdGhpbmdzIHdpdGhpbiB0aGUgSVB2NiBjb250ZXh0LiBJcyB0aGlzIGFib3V0IHBvbGljeSByb3V0aW5nPyBUcmFmZmljIG1hbmFnZW1lbnQ/IFRoZSBhYmlsaXR5IHRvIHNlZ3JlZ2F0ZSB0cmFmZmljIGJhc2VkIG9uIGRpZmZlcmVudCBzb3VyY2Ugb3IgZGVzdGluYXRpb24gYWRkcmVzcyBwcmVmaXhlcz8gSSYjMzk7bSBwaWN0dXJpbmcgdGhlIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMg4oCTIHRoZSByb3V0ZSB0YWJsZXMsIHRoZSBGSUIgKEZvcndhcmRpbmcgSW5mb3JtYXRpb24gQmFzZSkgbG9va3VwcywgdGhlIGludGVyZmFjZSBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhpcyBpcyBhIHJlY2VudCBhZGRpdGlvbiwgb3IgYSBsb25nLXN0YW5kaW5nIGZlYXR1cmUgdGhhdCYjMzk7cyBmaW5hbGx5IGdldHRpbmcgc29tZSBtb3JlIGF0dGVudGlvbi4gV2hhdCBhcmUgdGhlIGNvbW1vbiB1c2UgY2FzZXMgd2hlcmUgbXVsdGlwbGUgSVB2NiByb3V0aW5nIHRhYmxlcyBiZWNvbWUgZXNzZW50aWFsPyBBcmUgd2UgdGFsa2luZyBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG5ldHdvcmsgbmFtZXNwYWNlcywgb3IgcGVyaGFwcyBzb3BoaXN0aWNhdGVkIHRyYWZmaWMgZW5naW5lZXJpbmcgc2NlbmFyaW9zPyBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSByZWxhdGVkIGRvY3VtZW50YXRpb24gdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gYW55IGRlcGVuZGVuY2llcyBvciBjYXZlYXRzLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSB0aWVkIHRvIHRoaXMgb25lLCBpbXBhY3RpbmcgaXRzIGZ1bmN0aW9uYWxpdHk/IEFuZCB3aGF0IGlzIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Q/IFRoaXMgY291bGQgc2lnbmlmaWNhbnRseSBhZmZlY3QgdGhlIG92ZXJhbGwgcGFja2V0IGZvcndhcmRpbmcgcmF0ZS4gT2theSwgdGltZSB0byBzZWUgaWYgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGdpdmUgbWUgYW55IG1vcmUgaW5zaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnPTUwPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy01MS0jIENPTkZJR19JUFY2X1NJVCBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc6NTI6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy01My1DT05GSUdfTkVURklMVEVSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9NjE9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTYyLSMgQ09ORklHX0lQVjZfU0lUIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo2MzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTY0LUNPTkZJR19ORVRGSUxURVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTY4PUNPTkZJR19JUFY2X1NJVD1tXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZzo2OTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWctNzAtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTE1MD1DT05GSUdfSVBWNl9UVU5ORUw9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MTUxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0xNTItQ09ORklHX05FVF9EU0E9bVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvdGVncmFfZGVmY29uZmlnPTUyPUNPTkZJR19JUFY2X1RVTk5FTD15XG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZzo1MzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9hcm0vY29uZmlncy90ZWdyYV9kZWZjb25maWctNTQtQ09ORklHX0NBTj15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xNTg9Q09ORklHX0lORVQ2X0lQQ09NUD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjE1OTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xNjAtQ09ORklHX0lQVjZfTVJPVVRFPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE3ND1DT05GSUdfSU5FVDZfSVBDT01QPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTc1OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE3Ni1DT05GSUdfSVBWNl9NUk9VVEU9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2JjbTQ3eHhfZGVmY29uZmlnPTIzPUNPTkZJR19UQ1BfQ09OR19BRFZBTkNFRD15XG5hcmNoL21pcHMvY29uZmlncy9iY200N3h4X2RlZmNvbmZpZzoyNDpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWctMjUtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWc9NjA9Q09ORklHX0lQVjZfVFVOTkVMPW1cbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWc6NjE6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWctNjItQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9NjM9Q09ORklHX0lQVjZfR1JFPXlcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc6NjQ6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWctNjUtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnPTQ1PUNPTkZJR19JUFY2X01JUDY9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc6NDY6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTQ3LUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZz00MT1DT05GSUdfSVBWNl9NSVA2PW1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnOjQyOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZy00My1DT05GSUdfSVBWNl9TVUJUUkVFUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnPTQwPUNPTkZJR19JUFY2X01JUDY9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnOjQxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX3I0a19kZWZjb25maWctNDItQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTQ2PUNPTkZJR19JUFY2X1RVTk5FTD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo0NzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctNDgtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTQ1PUNPTkZJR19JUFY2X1RVTk5FTD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZzo0NjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctNDctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnPTQ1PUNPTkZJR19JUFY2X1RVTk5FTD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZzo0NjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctNDctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZz01MD1DT05GSUdfSVBWNl9UVU5ORUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjUxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWctNTItQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0zOD1DT05GSUdfSVBWNl9UVU5ORUw9bVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnOjM5OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWctNDAtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTE1PUNPTkZJR19JUFY2X1RVTk5FTD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjExNjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0xMTctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xNzM9Q09ORklHX0lQVjZfR1JFPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxNzQ6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xNzUtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xNjQ9Q09ORklHX0lQVjZfR1JFPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxNjU6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xNjYtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaC0yNC1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaDoyNTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMjYtI2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAyNTZcbi0tXG5pbmNsdWRlL25ldC9pcDZfZmliLmg9MzkxPXN0cnVjdCBmaWI2X3RhYmxlIHtcbi0tXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtNDA4LVxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oOjQwOTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtNDEwLSNkZWZpbmUgRklCNl9UQUJMRV9NSU5cdFx0MVxuLS1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaD02NjA9c3RhdGljIGlubGluZSBzdHJ1Y3QgcnQ2X2luZm8gKnBvbF9sb29rdXBfZnVuYyhwb2xfbG9va3VwX3QgbG9va3VwLFxuLS1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaC02NzQtXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6Njc1OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcbmluY2x1ZGUvbmV0L2lwNl9maWIuaC02NzYtc3RhdGljIGlubGluZSBib29sIGZpYjZfaGFzX2N1c3RvbV9ydWxlcyhjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2Ni5oPTY2PXN0cnVjdCBuZXRuc19pcHY2IHtcbi0tXG5pbmNsdWRlL25ldC9uZXRucy9pcHY2LmgtODctXHR1bnNpZ25lZCBjaGFyXHRcdGZsb3dsYWJlbF9oYXNfZXhjbDtcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjYuaDo4ODojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9uZXRucy9pcHY2LmgtODktXHRib29sXHRcdFx0ZmliNl9oYXNfY3VzdG9tX3J1bGVzO1xuLS1cbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTE5LVxubmV0L2NvcmUvZmliX3J1bGVzLmM6MjA6I2lmIGRlZmluZWQoQ09ORklHX0lQVjYpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUylcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTIxLSNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG4tLVxubmV0L2lwdjYvTWFrZWZpbGU9MjA9aXB2Ni0kKENPTkZJR19ORVRGSUxURVIpICYjNDM7PSBuZXRmaWx0ZXIub1xubmV0L2lwdjYvTWFrZWZpbGU6MjE6aXB2Ni0kKENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUykgJiM0Mzs9IGZpYjZfcnVsZXMub1xubmV0L2lwdjYvTWFrZWZpbGUtMjItaXB2Ni0kKENPTkZJR19QUk9DX0ZTKSAmIzQzOz0gcHJvYy5vXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTIxMz1zdGF0aWMgdm9pZCBmaWI2X2xpbmtfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl90YWJsZSAqdGIpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTIzMC1cbm5ldC9pcHY2L2lwNl9maWIuYzoyMzE6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvaXA2X2ZpYi5jLTIzMi1cbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjQ2Mj1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1MDQtXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjUwNTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUwNi1cdG5ldC1cdTAwM2VpcHY2LmZpYjZfbG9jYWxfdGJsID0ga3phbGxvY19vYmooKm5ldC1cdTAwM2VpcHY2LmZpYjZfbG9jYWxfdGJsKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUyMC1cbm5ldC9pcHY2L2lwNl9maWIuYzoyNTIxOiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTIyLW91dF9maWI2X21haW5fdGJsOlxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9MjkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnQ2X2luZm8gaXA2X251bGxfZW50cnlfdGVtcGxhdGUgPSB7XG4tLVxubmV0L2lwdjYvcm91dGUuYy0zMDQtXG5uZXQvaXB2Ni9yb3V0ZS5jOjMwNTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9yb3V0ZS5jLTMwNi1cbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTY0ODI9c3RhdGljIGludCBpcDZfcm91dGVfZGV2X25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXG4tLVxubmV0L2lwdjYvcm91dGUuYy02NDk0LVx0XHRuZXQtXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeS1cdTAwM2VydDZpX2lkZXYgPSBpbjZfZGV2X2dldChkZXYpO1xubmV0L2lwdjYvcm91dGUuYzo2NDk1OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L3JvdXRlLmMtNjQ5Ni1cdFx0bmV0LVx1MDAzZWlwdjYuaXA2X3Byb2hpYml0X2VudHJ5LVx1MDAzZWRzdC5kZXYgPSBkZXY7XG4tLVxubmV0L2lwdjYvcm91dGUuYy02NTA2LVx0XHRpbjZfZGV2X3B1dF9jbGVhcihcdTAwMjZuZXQtXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeS1cdTAwM2VydDZpX2lkZXYpO1xubmV0L2lwdjYvcm91dGUuYzo2NTA3OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L3JvdXRlLmMtNjUwOC1cdFx0aW42X2Rldl9wdXRfY2xlYXIoXHUwMDI2bmV0LVx1MDAzZWlwdjYuaXA2X3Byb2hpYml0X2VudHJ5LVx1MDAzZXJ0NmlfaWRldik7XG4tLVxubmV0L2lwdjYvcm91dGUuYz02Njc2PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcDZfcm91dGVfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNjcwMS1cbm5ldC9pcHY2L3JvdXRlLmM6NjcwMjojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3MDMtXHRuZXQtXHUwMDNlaXB2Ni5maWI2X2hhc19jdXN0b21fcnVsZXMgPSBmYWxzZTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3NDMtXG5uZXQvaXB2Ni9yb3V0ZS5jOjY3NDQ6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvcm91dGUuYy02NzQ1LW91dF9pcDZfcHJvaGliaXRfZW50cnk6XG4tLVxubmV0L2lwdjYvcm91dGUuYz02NzU4PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXA2X3JvdXRlX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3NjEtXHRrZnJlZShuZXQtXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeSk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjY3NjI6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvcm91dGUuYy02NzYzLVx0a2ZyZWUobmV0LVx1MDAzZWlwdjYuaXA2X3Byb2hpYml0X2VudHJ5KTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTY4MzQ9dm9pZCBfX2luaXQgaXA2X3JvdXRlX2luaXRfc3BlY2lhbF9lbnRyaWVzKHZvaWQpXG4tLVxubmV0L2lwdjYvcm91dGUuYy02ODQxLVx0aW5pdF9uZXQuaXB2Ni5pcDZfbnVsbF9lbnRyeS1cdTAwM2VydDZpX2lkZXYgPSBpbjZfZGV2X2dldChpbml0X25ldC5sb29wYmFja19kZXYpO1xubmV0L2lwdjYvcm91dGUuYzo2ODQyOiAgI2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvcm91dGUuYy02ODQzLVx0aW5pdF9uZXQuaXB2Ni5pcDZfcHJvaGliaXRfZW50cnktXHUwMDNlZHN0LmRldiA9IGluaXRfbmV0Lmxvb3BiYWNrX2Rldjtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZz0zPUNPTkZJR19JUFY2PXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQvY29uZmlnOjQ6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQvY29uZmlnLTUtQ09ORklHX05FVF9MM19NQVNURVJfREVWPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTQ0PUNPTkZJR19JUFY2X01ST1VURT15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjQ1OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnLTQ2LUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZz0xND1DT05GSUdfSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZzoxNTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnLTE2LUNPTkZJR19JUFY2X1BJTVNNX1YyPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnPTEwPUNPTkZJR19JUFY2PXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc6MTE6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWctMTItQ09ORklHX0tBTExTWU1TPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZz0zNT1DT05GSUdfSVBWNj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzozNjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWctMzctQ09ORklHX0lQVjZfVFVOTkVMPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGNwX2FvL2NvbmZpZz0xPUNPTkZJR19JUFY2PXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90Y3BfYW8vY29uZmlnOjI6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90Y3BfYW8vY29uZmlnLTMtQ09ORklHX05FVF9MM19NQVNURVJfREVWPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy93aXJlZ3VhcmQvcWVtdS9rZXJuZWwuY29uZmlnPTMyPUNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZzozMzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZy0zNC1DT05GSUdfVFRZPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA2NQoJCQkJCQkJb3V0cHV0OiAyMTIKCQkJCQkJCXRob3VnaHRzOiA3MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgU2VsZWN0aW9uIGZvciBGSUIgUnVsZSBhbmQgVGFibGUgTG9ja2luZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBiZXN0IGZ1enogdGhpcyBwYXRjaC4gVGhlIGNvbmZpZ3MgdGhhdCBhcmUgcmVsZXZhbnQgaGVyZSBhcmUgYElQX01VTFRJUExFX1RBQkxFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AsIHNvIHdlJiMzOTtyZSBnb29kIHRoZXJlLiBUaGUgY29yZSBjaGFuZ2UgaXMgdG8gdGhlIGxvY2tpbmcgbWVjaGFuaXNtcyBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIG1vdmluZyBmcm9tIHRoZSBSVE5MIHRvIG1vcmUgZmluZS1ncmFpbmVkIGxvY2tpbmcgd2l0aCBtdXRleGVzIGFuZCBzcGlubG9ja3MuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgYW55dGhpbmcgdGhhdCBpbnRlcmFjdHMgd2l0aCByb3V0aW5nIHJ1bGVzIGFuZCB0YWJsZXMuCgpJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMuIFRoZXNlIGFyZSB0aGUgb25lcyB3aGVyZSB0aGUgbG9ja2luZyBjaGFuZ2VzIGFyZSBkaXJlY3RseSBpbXBsZW1lbnRlZC4gSSBpbml0aWFsbHkgdGhvdWdodCB0byBpbmNsdWRlIGBmaWJfZ2V0X3RhYmxlYCwgYnV0IGhvbGQgb24uIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB3aGV0aGVyIGl0IGlzIGNhbGxlZCBpbiBob3QgcGF0aHMsIHNpbmNlIHRoYXQgd291bGQgbWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0byBmdXp6IGVmZmVjdGl2ZWx5LiBBaCwgeWVzLCBpdCYjMzk7cyBjYWxsZWQgYnkgdGhlIGNvcmUgbG9va3VwIGZ1bmN0aW9ucyBsaWtlIGBmaWJfbG9va3VwYCBhbmQgYGlwX3JvdXRlX2lucHV0X25vcmVmYC4gTm90IGlkZWFsLiBMZXQmIzM5O3MgZXhjbHVkZSB0aGF0IGZvciBub3cuCgpTbywgdGhlIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGJlOiBgZmliX25ld3J1bGVgLCBgZmliX2RlbHJ1bGVgLCBgZmliX25ld190YWJsZWAsIGBmaWJfcnVsZXNfZXZlbnRgLCBgZmliNF9ydWxlX2NvbmZpZ3VyZWAsIGBmaWI0X3J1bGVfZGVsZXRlYCwgYGZpYjZfcnVsZV9jb25maWd1cmVgLCBhbmQgYGZpYjZfcnVsZV9kZWxldGVgLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHdoZXJlIHRob3NlIGFyZSBpbXBsZW1lbnRlZC4gYGZpYl9uZXdydWxlYCBhbmQgYGZpYl9kZWxydWxlYCBsaXZlIGluIGBuZXQvY29yZS9maWJfcnVsZXMuY2AuIGBmaWJfbmV3X3RhYmxlYCBpcyBpbiBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgLiBBbmQgYGZpYl9ydWxlc19ldmVudGAgaXMgYWxzbyBpbiBgbmV0L2NvcmUvZmliX3J1bGVzLmNgLgoKT2theSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGBJUF9NVUxUSVBMRV9UQUJMRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGFyZSB0aGUgY29ycmVjdCBjb25maWdzLCByaWdodD8gWWVwLCBjb25maXJtZWQuCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhciBub3c6IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZywgc28gd2Ugd2FudCB0byBoaXQgdGhlIG5ldyBsb2NraW5nIGNvZGUgZGlyZWN0bHkuIFRoZSBwcmltYXJ5IHdheSB0byB0cmlnZ2VyIHRoaXMgaXMgdGhyb3VnaCBuZXRsaW5rIG1lc3NhZ2VzIGxpa2UgYFJUTV9ORVdSVUxFYCBhbmQgYFJUTV9ERUxSVUxFYCBvciB0aHJvdWdoIG5ldGRldiBldmVudHMuIFRoZXNlIHRyaWdnZXIgdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMsIHNvIHRob3NlIGFyZSB3aGF0IHdlIHdhbnQgdG8gZnV6ei4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSBzaG91bGQgY2hlY2sgd2hldGhlciBgZmliNF9ydWxlX2RlbGV0ZWAgYW5kIGBmaWI2X3J1bGVfZGVsZXRlYCBhcmUgc3RhdGljLiBZZXMsIHRoZXkgYXJlIGluIHRoZSByZXNwZWN0aXZlIGZpbGVzIGBuZXQvaXB2NC9maWJfcnVsZXMuY2AgYW5kIGBuZXQvaXB2Ni9maWI2X3J1bGVzLmNgLiBMZXQmIzM5O3MgYWxzbyBkb3VibGUgY2hlY2sgYGZpYl9uZXdydWxlYCBhbmQgYGZpYl9kZWxydWxlYC4gWWVwLCBleHBvcnRlZCBvciBqdXN0IGdsb2JhbC4gQW5kIGBmaWJfbmV3X3RhYmxlYCBpcyBhbHNvIGV4cG9ydGVkLiBGaW5hbGx5LCBgZmliX3J1bGVzX2V2ZW50YCBpcyBhbHNvIHN0YXRpYy4KCkFscmlnaHQsIGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHNvbGlkIHRhcmdldCBsaXN0OiB0aGUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyBpbXBhY3RlZCBieSB0aGUgbG9ja2luZyBjaGFuZ2VzLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9NVUxUSVBMRV9UQUJMRVMmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWJfbmV3cnVsZSYjMzQ7LAogICAgJiMzNDtmaWJfZGVscnVsZSYjMzQ7LAogICAgJiMzNDtmaWJfbmV3X3RhYmxlJiMzNDssCiAgICAmIzM0O2ZpYl9ydWxlc19ldmVudCYjMzQ7LAogICAgJiMzNDtmaWI0X3J1bGVfY29uZmlndXJlJiMzNDssCiAgICAmIzM0O2ZpYjRfcnVsZV9kZWxldGUmIzM0OywKICAgICYjMzQ7ZmliNl9ydWxlX2NvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtmaWI2X3J1bGVfZGVsZXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cdTAwM2Vsb2NrIGFuZCBmaWJfdGFibGVfaGFzaF9sb2NrKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBSVE1fTkVXUlVMRSwgUlRNX0RFTFJVTEUpIGFuZCBuZXRkZXYgZXZlbnRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbW9kaWZpZWQgdG8gdXNlIHRoZSBuZXcgbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtJUFY2X01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZpYl9uZXdydWxlJiMzNDssCiAgICAmIzM0O2ZpYl9kZWxydWxlJiMzNDssCiAgICAmIzM0O2ZpYl9uZXdfdGFibGUmIzM0OywKICAgICYjMzQ7ZmliX3J1bGVzX2V2ZW50JiMzNDssCiAgICAmIzM0O2ZpYjRfcnVsZV9jb25maWd1cmUmIzM0OywKICAgICYjMzQ7ZmliNF9ydWxlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtmaWI2X3J1bGVfY29uZmlndXJlJiMzNDssCiAgICAmIzM0O2ZpYjZfcnVsZV9kZWxldGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIGZvciBGSUIgcnVsZXMgYW5kIHRhYmxlcywgcmVwbGFjaW5nIFJUTkwgd2l0aCBmaW5lci1ncmFpbmVkIG11dGV4ZXMgYW5kIHNwaW5sb2NrcyAob3BzLVx1MDAzZWxvY2sgYW5kIGZpYl90YWJsZV9oYXNoX2xvY2spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFJUTV9ORVdSVUxFLCBSVE1fREVMUlVMRSkgYW5kIG5ldGRldiBldmVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byB1c2UgdGhlIG5ldyBsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE5OjUwOjA3LjMwNjk4ODA2NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MzY1ODY0NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX01VTFRJUExFX1RBQkxFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWJfbmV3cnVsZVwiLFxuICAgIFwiZmliX2RlbHJ1bGVcIixcbiAgICBcImZpYl9uZXdfdGFibGVcIixcbiAgICBcImZpYl9ydWxlc19ldmVudFwiLFxuICAgIFwiZmliNF9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNF9ydWxlX2RlbGV0ZVwiLFxuICAgIFwiZmliNl9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNl9ydWxlX2RlbGV0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cXHUwMDNlbG9jayBhbmQgZmliX3RhYmxlX2hhc2hfbG9jaykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgUlRNX05FV1JVTEUsIFJUTV9ERUxSVUxFKSBhbmQgbmV0ZGV2IGV2ZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGxvY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxOTo1MDowNy4zMDY5OTI5NDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzU5MjM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM4NjUxOGM2MWNjNGM3ZGM0ZGFmZmQ3Y2MwOWEyMGRiOTkwNTIxNTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTk6NTA6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZmliX3J1bGVzLmggYi9pbmNsdWRlL25ldC9maWJfcnVsZXMuaFxcbmluZGV4IDdkZWUwYWU2MTZlMzIyLi5jNmI5NDc5MGZhODFlZSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oXFxuQEAgLTgyLDcgKzgyLDcgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMge1xcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBmaWJfcnVsZV9oZHIgKixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmxhdHRyICoqLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKik7XFxuLVxcdGludFxcdFxcdFxcdCgqZGVsZXRlKShzdHJ1Y3QgZmliX3J1bGUgKik7XFxuK1xcdHZvaWRcXHRcXHRcXHQoKmRlbGV0ZSkoc3RydWN0IGZpYl9ydWxlICopO1xcbiBcXHRpbnRcXHRcXHRcXHQoKmNvbXBhcmUpKHN0cnVjdCBmaWJfcnVsZSAqLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZmliX3J1bGVfaGRyICosXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBubGF0dHIgKiopO1xcbkBAIC05MywxMSArOTMsMTMgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMge1xcbiBcXHQvKiBDYWxsZWQgYWZ0ZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcnVsZXMgc2V0LCBtdXN0IGZsdXNoXFxuIFxcdCAqIHRoZSByb3V0ZSBjYWNoZSBpZiBvbmUgZXhpc3RzLiAqL1xcbiBcXHR2b2lkXFx0XFx0XFx0KCpmbHVzaF9jYWNoZSkoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyk7XFxuK1xcdGJvb2xcXHRcXHRcXHQoKm5lZWRfcnRubCkoc3RydWN0IG5ldCAqbmV0KTtcXG4gXFxuIFxcdGludFxcdFxcdFxcdG5sZ3JvdXA7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWRcXHRydWxlc19saXN0O1xcbiBcXHRzdHJ1Y3QgbW9kdWxlXFx0XFx0Km93bmVyO1xcbiBcXHRzdHJ1Y3QgbmV0XFx0XFx0KmZyb19uZXQ7XFxuK1xcdHN0cnVjdCBtdXRleFxcdFxcdGxvY2s7XFxuIFxcdHN0cnVjdCByY3VfaGVhZFxcdFxcdHJjdTtcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX2ZpYi5oIGIvaW5jbHVkZS9uZXQvaXBfZmliLmhcXG5pbmRleCBjNjNhM2M0OTY3YWU2MS4uMGEzNTM1NWZiMGYzMzUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfZmliLmhcXG4rKysgYi9pbmNsdWRlL25ldC9pcF9maWIuaFxcbkBAIC0zMDIsNyArMzAyLDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxcbiBcXHRcXHRcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX0xPQ0FMX0lOREVYXSA6XFxuIFxcdFxcdFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbVEFCTEVfTUFJTl9JTkRFWF07XFxuIFxcbi1cXHR0Yl9obGlzdCA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGhsaXN0X2ZpcnN0X3JjdShwdHIpKTtcXG4rXFx0LyogT25seSBmaWI0X3J1bGVzX2luaXQoKSBhZGRzIGZpYl90YWJsZS4gKi9cXG4rXFx0dGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGhsaXN0X2ZpcnN0X3JjdShwdHIpLCB0cnVlKTtcXG4gXFxuIFxcdHJldHVybiBobGlzdF9lbnRyeSh0Yl9obGlzdCwgc3RydWN0IGZpYl90YWJsZSwgdGJfaGxpc3QpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaCBiL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaFxcbmluZGV4IDZlMjdjNTY1MTRkZjU3Li41OTUwNjMyMDU1OGE5OSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmhcXG4rKysgYi9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmhcXG5AQCAtMTI3LDYgKzEyNyw3IEBAIHN0cnVjdCBuZXRuc19pcHY0IHtcXG4gXFx0YXRvbWljX3RcXHRcXHRmaWJfbnVtX3RjbGFzc2lkX3VzZXJzO1xcbiAjZW5kaWZcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWRcXHQqZmliX3RhYmxlX2hhc2g7XFxuK1xcdHNwaW5sb2NrX3RcXHRcXHRmaWJfdGFibGVfaGFzaF9sb2NrO1xcbiBcXHRzdHJ1Y3Qgc29ja1xcdFxcdCpmaWJubDtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWRcXHQqZmliX2luZm9faGFzaDtcXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0ZmliX2luZm9faGFzaF9iaXRzO1xcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWJfcnVsZXMuYyBiL25ldC9jb3JlL2ZpYl9ydWxlcy5jXFxuaW5kZXggY2YzNzRjMjA4NzMyNTguLjIyZTVlNWUxYTljNDRmIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2ZpYl9ydWxlcy5jXFxuKysrIGIvbmV0L2NvcmUvZmliX3J1bGVzLmNcXG5AQCAtNTEsNyArNTEsNiBAQCBib29sIGZpYl9ydWxlX21hdGNoYWxsKGNvbnN0IHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZV9tYXRjaGFsbCk7XFxuIFxcbiBpbnQgZmliX2RlZmF1bHRfcnVsZV9hZGQoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyxcXG4gXFx0XFx0XFx0IHUzMiBwcmVmLCB1MzIgdGFibGUpXFxuQEAgLTc4LDcgKzc3LDYgQEAgaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnItXFx1MDAzZWxpc3QsIFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbi1FWFBPUlRfU1lNQk9MKGZpYl9kZWZhdWx0X3J1bGVfYWRkKTtcXG4gXFxuIHN0YXRpYyB1MzIgZmliX2RlZmF1bHRfcnVsZV9wcmVmKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMpXFxuIHtcXG5AQCAtMTcyLDYgKzE3MCw3IEBAIGZpYl9ydWxlc19yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqdG1wbCwgc3RydWN0IG5ldCAqbmV0KVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QpO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZvcHMtXFx1MDAzZWxvY2spO1xcbiBcXHRvcHMtXFx1MDAzZWZyb19uZXQgPSBuZXQ7XFxuIFxcbiBcXHRlcnIgPSBfX2ZpYl9ydWxlc19yZWdpc3RlcihvcHMpO1xcbkBAIC0xODIsNyArMTgxLDYgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcbiBcXHRyZXR1cm4gb3BzO1xcbiB9XFxuLUVYUE9SVF9TWU1CT0xfR1BMKGZpYl9ydWxlc19yZWdpc3Rlcik7XFxuIFxcbiBzdGF0aWMgdm9pZCBmaWJfcnVsZXNfY2xlYW51cF9vcHMoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcylcXG4ge1xcbkBAIC0yMDcsNyArMjA1LDYgQEAgdm9pZCBmaWJfcnVsZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKVxcbiBcXHRmaWJfcnVsZXNfY2xlYW51cF9vcHMob3BzKTtcXG4gXFx0a2ZyZWVfcmN1KG9wcywgcmN1KTtcXG4gfVxcbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfdW5yZWdpc3Rlcik7XFxuIFxcbiBzdGF0aWMgaW50IHVpZF9yYW5nZV9zZXQoc3RydWN0IGZpYl9rdWlkX3JhbmdlICpyYW5nZSlcXG4ge1xcbkBAIC0zNjMsNyArMzYwLDYgQEAgaW50IGZpYl9ydWxlc19sb29rdXAoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcywgc3RydWN0IGZsb3dpICpmbCxcXG4gXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2xvb2t1cCk7XFxuIFxcbiBzdGF0aWMgaW50IGNhbGxfZmliX3J1bGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4gXFx0XFx0XFx0XFx0ICBlbnVtIGZpYl9ldmVudF90eXBlIGV2ZW50X3R5cGUsXFxuQEAgLTM5MSw3ICszODcsNyBAQCBzdGF0aWMgaW50IGNhbGxfZmliX3J1bGVfbm90aWZpZXJzKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0XFx0LnJ1bGUgPSBydWxlLFxcbiBcXHR9O1xcbiBcXG4tXFx0QVNTRVJUX1JUTkxfTkVUKG5ldCk7XFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHQvKiBQYWlyZWQgd2l0aCBSRUFEX09OQ0UoKSBpbiBmaWJfcnVsZXNfc2VxKCkgKi9cXG4gXFx0V1JJVEVfT05DRShvcHMtXFx1MDAzZWZpYl9ydWxlc19zZXEsIG9wcy1cXHUwMDNlZmliX3J1bGVzX3NlcSArIDEpO1xcbkBAIC00MjMsNyArNDE5LDYgQEAgaW50IGZpYl9ydWxlc19kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgaW50IGZhbWlseSxcXG4gXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2R1bXApO1xcbiBcXG4gdW5zaWduZWQgaW50IGZpYl9ydWxlc19zZXFfcmVhZChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQsIGludCBmYW1pbHkpXFxuIHtcXG5AQCAtNDM5LDcgKzQzNCw2IEBAIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KVxcbiBcXG4gXFx0cmV0dXJuIGZpYl9ydWxlc19zZXE7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX3NlcV9yZWFkKTtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgZmliX3J1bGUgKnJ1bGVfZmluZChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCxcXG5AQCAtNzQwLDEwICs3MzQsMTAgQEAgc3RhdGljIGludCBmaWJfbmwycnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXFxuLVxcdFxcdFxcdCAgICBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxcbi1cXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tXFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4rc3RhdGljIGludCBmaWJfbmwycnVsZV9sb2NrZWQoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4ge1xcbiBcXHRpZiAoIXRiW0ZSQV9QUklPUklUWV0pXFxuIFxcdFxcdG5scnVsZS1cXHUwMDNlcHJlZiA9IGZpYl9kZWZhdWx0X3J1bGVfcHJlZihvcHMpO1xcbkBAIC03NTQsMTIgKzc0OCwxNCBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcbiBcXHRpZiAodGJbRlJBX0lJRk5BTUVdKSB7XFxuIFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcbi1cXHRcXHRkZXYgPSBfX2Rldl9nZXRfYnlfbmFtZShubHJ1bGUtXFx1MDAzZWZyX25ldCwgbmxydWxlLVxcdTAwM2VpaWZuYW1lKTtcXG4rXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtXFx1MDAzZWZyX25ldCwgbmxydWxlLVxcdTAwM2VpaWZuYW1lKTtcXG4gXFx0XFx0aWYgKGRldikge1xcbi1cXHRcXHRcXHRubHJ1bGUtXFx1MDAzZWlpZmluZGV4ID0gZGV2LVxcdTAwM2VpZmluZGV4O1xcbitcXHRcXHRcXHRubHJ1bGUtXFx1MDAzZWlpZmluZGV4ID0gUkVBRF9PTkNFKGRldi1cXHUwMDNlaWZpbmRleCk7XFxuIFxcdFxcdFxcdG5scnVsZS1cXHUwMDNlaWlmX2lzX2wzX21hc3RlciA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG5AQCAtNzY3LDEzICs3NjMsMTUgQEAgc3RhdGljIGludCBmaWJfbmwycnVsZV9ydG5sKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxcbiBcXHRpZiAodGJbRlJBX09JRk5BTUVdKSB7XFxuIFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcbi1cXHRcXHRkZXYgPSBfX2Rldl9nZXRfYnlfbmFtZShubHJ1bGUtXFx1MDAzZWZyX25ldCwgbmxydWxlLVxcdTAwM2VvaWZuYW1lKTtcXG4rXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtXFx1MDAzZWZyX25ldCwgbmxydWxlLVxcdTAwM2VvaWZuYW1lKTtcXG4gXFx0XFx0aWYgKGRldikge1xcbi1cXHRcXHRcXHRubHJ1bGUtXFx1MDAzZW9pZmluZGV4ID0gZGV2LVxcdTAwM2VpZmluZGV4O1xcbitcXHRcXHRcXHRubHJ1bGUtXFx1MDAzZW9pZmluZGV4ID0gUkVBRF9PTkNFKGRldi1cXHUwMDNlaWZpbmRleCk7XFxuIFxcdFxcdFxcdG5scnVsZS1cXHUwMDNlb2lmX2lzX2wzX21hc3RlciA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTg4Myw2ICs4ODEsNyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0c3RydWN0IG5sYXR0ciAqdGJbRlJBX01BWCArIDFdO1xcbiBcXHRib29sIHVzZXJfcHJpb3JpdHkgPSBmYWxzZTtcXG4gXFx0c3RydWN0IGZpYl9ydWxlX2hkciAqZnJoO1xcbitcXHRib29sIHVubG9ja19ydG5sID0gZmFsc2U7XFxuIFxcbiBcXHRmcmggPSBubG1zZ19wYXlsb2FkKG5saCwgc2l6ZW9mKCpmcmgpKTtcXG4gXFx0aWYgKCFmcmgpIHtcXG5AQCAtOTA4LDEwICs5MDcsMTMgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyb3V0O1xcbiBcXG4tXFx0aWYgKCFydG5sX2hlbGQpXFxuK1xcdGlmICghcnRubF9oZWxkIFxcdTAwMjZcXHUwMDI2IG9wcy1cXHUwMDNlbmVlZF9ydG5sIFxcdTAwMjZcXHUwMDI2IG9wcy1cXHUwMDNlbmVlZF9ydG5sKG5ldCkpIHtcXG4rXFx0XFx0dW5sb2NrX3J0bmwgPSB0cnVlO1xcbiBcXHRcXHRydG5sX25ldF9sb2NrKG5ldCk7XFxuK1xcdH1cXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4gXFxuLVxcdGVyciA9IGZpYl9ubDJydWxlX3J0bmwocnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcXG4rXFx0ZXJyID0gZmliX25sMnJ1bGVfbG9ja2VkKHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyb3V0X2ZyZWU7XFxuIFxcbkBAIC05NTksNyArOTYxLDcgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkociwgXFx1MDAyNm9wcy1cXHUwMDNlcnVsZXNfbGlzdCwgbGlzdCkge1xcbiBcXHRcXHRcXHRpZiAoci1cXHUwMDNlYWN0aW9uID09IEZSX0FDVF9HT1RPIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICByLVxcdTAwM2V0YXJnZXQgPT0gcnVsZS1cXHUwMDNlcHJlZiBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAgcnRubF9kZXJlZmVyZW5jZShyLVxcdTAwM2VjdGFyZ2V0KSA9PSBOVUxMKSB7XFxuK1xcdFxcdFxcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKHItXFx1MDAzZWN0YXJnZXQpKSB7XFxuIFxcdFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihyLVxcdTAwM2VjdGFyZ2V0LCBydWxlKTtcXG4gXFx0XFx0XFx0XFx0aWYgKC0tb3BzLVxcdTAwM2V1bnJlc29sdmVkX3J1bGVzID09IDApXFxuIFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbkBAIC05NzgsNyArOTgwLDggQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuIFxcbiBcXHRmaWJfcnVsZV9nZXQocnVsZSk7XFxuIFxcbi1cXHRpZiAoIXJ0bmxfaGVsZClcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHMtXFx1MDAzZWxvY2spO1xcbitcXHRpZiAodW5sb2NrX3J0bmwpXFxuIFxcdFxcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xcbiBcXG4gXFx0bm90aWZ5X3J1bGVfY2hhbmdlKFJUTV9ORVdSVUxFLCBydWxlLCBvcHMsIG5saCwgTkVUTElOS19DQihza2IpLnBvcnRpZCk7XFxuQEAgLTk4OCw3ICs5OTEsOCBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvdXRfZnJlZTpcXG4tXFx0aWYgKCFydG5sX2hlbGQpXFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4rXFx0aWYgKHVubG9ja19ydG5sKVxcbiBcXHRcXHRydG5sX25ldF91bmxvY2sobmV0KTtcXG4gXFx0a2ZyZWUocnVsZSk7XFxuIGVycm91dDpcXG5AQCAtMTAzNywxMCArMTA0MSw5IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycm91dDtcXG4gXFxuLVxcdGlmICghcnRubF9oZWxkKVxcbi1cXHRcXHRydG5sX25ldF9sb2NrKG5ldCk7XFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcbi1cXHRlcnIgPSBmaWJfbmwycnVsZV9ydG5sKG5scnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcXG4rXFx0ZXJyID0gZmliX25sMnJ1bGVfbG9ja2VkKG5scnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBlcnJvdXRfZnJlZTtcXG4gXFxuQEAgLTEwNTUsMTEgKzEwNTgsOCBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0XFx0Z290byBlcnJvdXRfZnJlZTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKG9wcy1cXHUwMDNlZGVsZXRlKSB7XFxuLVxcdFxcdGVyciA9IG9wcy1cXHUwMDNlZGVsZXRlKHJ1bGUpO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRnb3RvIGVycm91dF9mcmVlO1xcbi1cXHR9XFxuK1xcdGlmIChvcHMtXFx1MDAzZWRlbGV0ZSlcXG4rXFx0XFx0b3BzLVxcdTAwM2VkZWxldGUocnVsZSk7XFxuIFxcbiBcXHRpZiAocnVsZS1cXHUwMDNldHVuX2lkKVxcbiBcXHRcXHRpcF90dW5uZWxfdW5uZWVkX21ldGFkYXRhKCk7XFxuQEAgLTEwNjgsNyArMTA2OCw3IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbiBcXG4gXFx0aWYgKHJ1bGUtXFx1MDAzZWFjdGlvbiA9PSBGUl9BQ1RfR09UTykge1xcbiBcXHRcXHRvcHMtXFx1MDAzZW5yX2dvdG9fcnVsZXMtLTtcXG4tXFx0XFx0aWYgKHJ0bmxfZGVyZWZlcmVuY2UocnVsZS1cXHUwMDNlY3RhcmdldCkgPT0gTlVMTClcXG4rXFx0XFx0aWYgKCFyY3VfYWNjZXNzX3BvaW50ZXIocnVsZS1cXHUwMDNlY3RhcmdldCkpXFxuIFxcdFxcdFxcdG9wcy1cXHUwMDNldW5yZXNvbHZlZF9ydWxlcy0tO1xcbiBcXHR9XFxuIFxcbkBAIC0xMDg2LDcgKzEwODYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0XFx0aWYgKFxcdTAwMjZuLVxcdTAwM2VsaXN0ID09IFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QgfHwgbi1cXHUwMDNlcHJlZiAhPSBydWxlLVxcdTAwM2VwcmVmKVxcbiBcXHRcXHRcXHRuID0gTlVMTDtcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyLCBcXHUwMDI2b3BzLVxcdTAwM2VydWxlc19saXN0LCBsaXN0KSB7XFxuLVxcdFxcdFxcdGlmIChydG5sX2RlcmVmZXJlbmNlKHItXFx1MDAzZWN0YXJnZXQpICE9IHJ1bGUpXFxuK1xcdFxcdFxcdGlmIChyY3VfYWNjZXNzX3BvaW50ZXIoci1cXHUwMDNlY3RhcmdldCkgIT0gcnVsZSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihyLVxcdTAwM2VjdGFyZ2V0LCBuKTtcXG4gXFx0XFx0XFx0aWYgKCFuKVxcbkBAIC0xMDk2LDggKzEwOTYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFxuIFxcdGNhbGxfZmliX3J1bGVfbm90aWZpZXJzKG5ldCwgRklCX0VWRU5UX1JVTEVfREVMLCBydWxlLCBvcHMsIE5VTEwpO1xcbiBcXG4tXFx0aWYgKCFydG5sX2hlbGQpXFxuLVxcdFxcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHRub3RpZnlfcnVsZV9jaGFuZ2UoUlRNX0RFTFJVTEUsIHJ1bGUsIG9wcywgbmxoLCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcXG4gXFx0ZmliX3J1bGVfcHV0KHJ1bGUpO1xcbkBAIC0xMTA3LDggKzExMDYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvdXRfZnJlZTpcXG4tXFx0aWYgKCFydG5sX2hlbGQpXFxuLVxcdFxcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcdGtmcmVlKG5scnVsZSk7XFxuIGVycm91dDpcXG4gXFx0cnVsZXNfb3BzX3B1dChvcHMpO1xcbkBAIC0xNDAyLDI0ICsxNDAwLDMwIEBAIHN0YXRpYyBpbnQgZmliX3J1bGVzX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywgdW5zaWduZWQgbG9uZyBldmVudCxcXG4gXFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChkZXYpO1xcbiBcXHRzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzO1xcbiBcXG4tXFx0QVNTRVJUX1JUTkwoKTtcXG4tXFxuIFxcdHN3aXRjaCAoZXZlbnQpIHtcXG4gXFx0Y2FzZSBORVRERVZfUkVHSVNURVI6XFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcXHUwMDI2bmV0LVxcdTAwM2VydWxlc19vcHMsIGxpc3QpXFxuK1xcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcXHUwMDI2bmV0LVxcdTAwM2VydWxlc19vcHMsIGxpc3QpIHtcXG4rXFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0XFx0YXR0YWNoX3J1bGVzKFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XFxuK1xcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgTkVUREVWX0NIQU5HRU5BTUU6XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcXHUwMDI2bmV0LVxcdTAwM2VydWxlc19vcHMsIGxpc3QpIHtcXG4rXFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0XFx0ZGV0YWNoX3J1bGVzKFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XFxuIFxcdFxcdFxcdGF0dGFjaF9ydWxlcyhcXHUwMDI2b3BzLVxcdTAwM2VydWxlc19saXN0LCBkZXYpO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIE5FVERFVl9VTlJFR0lTVEVSOlxcbi1cXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXFx1MDAyNm5ldC1cXHUwMDNlcnVsZXNfb3BzLCBsaXN0KVxcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXFx1MDAyNm5ldC1cXHUwMDNlcnVsZXNfb3BzLCBsaXN0KSB7XFxuK1xcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdFxcdGRldGFjaF9ydWxlcyhcXHUwMDI2b3BzLVxcdTAwM2VydWxlc19saXN0LCBkZXYpO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcXG5pbmRleCA0MjIxMjk3MGQ3MzU0MC4uNTRlYjcyNjk1MDkzZGEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcXG4rKysgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xcbkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBmaWI0X3J1bGVzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXG4gc3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcXG4ge1xcbi1cXHRzdHJ1Y3QgZmliX3RhYmxlICp0YiwgKmFsaWFzID0gTlVMTDtcXG4rXFx0c3RydWN0IGZpYl90YWJsZSAqdGIsICpuZXdfdGIsICphbGlhcyA9IE5VTEw7XFxuIFxcdHVuc2lnbmVkIGludCBoO1xcbiBcXG4gXFx0aWYgKGlkID09IDApXFxuQEAgLTg1LDE0ICs4NSwyNyBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxcbiBcXHRpZiAodGIpXFxuIFxcdFxcdHJldHVybiB0YjtcXG4gXFxuK1xcdGlmICghY2hlY2tfbmV0KG5ldCkpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4gXFx0aWYgKGlkID09IFJUX1RBQkxFX0xPQ0FMIFxcdTAwMjZcXHUwMDI2ICFuZXQtXFx1MDAzZWlwdjQuZmliX2hhc19jdXN0b21fcnVsZXMpXFxuIFxcdFxcdGFsaWFzID0gZmliX25ld190YWJsZShuZXQsIFJUX1RBQkxFX01BSU4pO1xcbiBcXG4tXFx0aWYgKGNoZWNrX25ldChuZXQpKVxcbi1cXHRcXHR0YiA9IGZpYl90cmllX3RhYmxlKGlkLCBhbGlhcyk7XFxuLVxcdGlmICghdGIpXFxuK1xcdG5ld190YiA9IGZpYl90cmllX3RhYmxlKGlkLCBhbGlhcyk7XFxuK1xcdGlmICghbmV3X3RiKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuK1xcdHNwaW5fbG9jayhcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xcbitcXG4rXFx0dGIgPSBmaWJfZ2V0X3RhYmxlKG5ldCwgaWQpO1xcbitcXHRpZiAodGIpIHtcXG4rXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaF9sb2NrKTtcXG4rXFx0XFx0ZmliX2ZyZWVfdGFibGUobmV3X3RiKTtcXG4rXFx0XFx0cmV0dXJuIHRiO1xcbitcXHR9XFxuK1xcbitcXHR0YiA9IG5ld190YjtcXG4rXFxuIFxcdHN3aXRjaCAoaWQpIHtcXG4gXFx0Y2FzZSBSVF9UQUJMRV9NQUlOOlxcbiBcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobmV0LVxcdTAwM2VpcHY0LmZpYl9tYWluLCB0Yik7XFxuQEAgLTEwNiwyOCArMTE5LDM1IEBAIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9uZXdfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuIFxcbiBcXHRoID0gaWQgXFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xcbiBcXHRobGlzdF9hZGRfaGVhZF9yY3UoXFx1MDAyNnRiLVxcdTAwM2V0Yl9obGlzdCwgXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXSk7XFxuK1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xcbitcXG4gXFx0cmV0dXJuIHRiO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGZpYl9uZXdfdGFibGUpO1xcbiBcXG4tLyogY2FsbGVyIG11c3QgaG9sZCBlaXRoZXIgcnRubCBvciByY3UgcmVhZCBsb2NrICovXFxuIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuIHtcXG4tXFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuK1xcdHN0cnVjdCBmaWJfdGFibGUgKnRiID0gTlVMTDtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7XFxuIFxcdHVuc2lnbmVkIGludCBoO1xcbiBcXG4gXFx0aWYgKGlkID09IDApXFxuIFxcdFxcdGlkID0gUlRfVEFCTEVfTUFJTjtcXG4gXFx0aCA9IGlkIFxcdTAwMjYgKEZJQl9UQUJMRV9IQVNIU1ogLSAxKTtcXG4tXFxuIFxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xcbi1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LFxcbi1cXHRcXHRcXHRcXHQgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSkge1xcbitcXG4rXFx0LyogZmliX3RhYmxlIGlzIG5vdCBkZXN0cm95ZWQgdW50aWwgaXBfZmliX25ldF9leGl0KClcXG4rXFx0ICogZXhjZXB0IGZvciB0aGUgbWVyZ2VkIG1haW4vbG9jYWwgdGFibGUuXFxuK1xcdCAqIGZpYl91bm1lcmdlKCkgaXMgY2FsbGVkIHVuZGVyIFJUTkwsIHNvIG90aGVyIHJlYWRlcnNcXG4rXFx0ICogdW5kZXIgUlROTCAoZS5nLiBmaWJfZmx1c2goKSwgZmliX2luZm9fbm90aWZ5X3VwZGF0ZSgpKVxcbitcXHQgKiBjYW4gc2FmZWx5IHRyYXZlcnNlIHRoZSBsaXN0IHdpdGggcmN1X2RlcmVmZXJlbmNlX3JhdygpLlxcbitcXHQgKi9cXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSlcXG4gXFx0XFx0aWYgKHRiLVxcdTAwM2V0Yl9pZCA9PSBpZClcXG4tXFx0XFx0XFx0cmV0dXJuIHRiO1xcbi1cXHR9XFxuLVxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdHJldHVybiB0YjtcXG4gfVxcbiAjZW5kaWYgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbiBcXG5AQCAtMTkwLDEwICsyMTAsOSBAQCB2b2lkIGZpYl9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcbiBcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxuIFxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4tXFx0XFx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcXG4gXFx0XFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuIFxcbi1cXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRiLCB0bXAsIGhlYWQsIHRiX2hsaXN0KVxcbitcXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKVxcbiBcXHRcXHRcXHRmbHVzaGVkICs9IGZpYl90YWJsZV9mbHVzaChuZXQsIHRiLCBmYWxzZSk7XFxuIFxcdH1cXG4gXFxuQEAgLTE1NjUsNiArMTU4NCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXHRuZXQtXFx1MDAzZWlwdjQuc3lzY3RsX2ZpYl9tdWx0aXBhdGhfaGFzaF9maWVsZHMgPVxcbiBcXHRcXHRGSUJfTVVMVElQQVRIX0hBU0hfRklFTERfREVGQVVMVF9NQVNLO1xcbiAjZW5kaWZcXG4rXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaF9sb2NrKTtcXG4gXFxuIFxcdC8qIEF2b2lkIGZhbHNlIHNoYXJpbmcgOiBVc2UgYXQgbGVhc3QgYSBmdWxsIGNhY2hlIGxpbmUgKi9cXG4gXFx0c2l6ZSA9IG1heF90KHNpemVfdCwgc2l6ZSwgTDFfQ0FDSEVfQllURVMpO1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfcnVsZXMuYyBiL25ldC9pcHY0L2ZpYl9ydWxlcy5jXFxuaW5kZXggZTA2OGE1YmFjZTczZjIuLjRlZGIwZGNhN2JlOGExIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2ZpYl9ydWxlcy5jXFxuKysrIGIvbmV0L2lwdjQvZmliX3J1bGVzLmNcXG5AQCAtMzAxLDEwICszMDEsMTIgQEAgc3RhdGljIGludCBmaWI0X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICAgIGZpYjRfbmwycnVsZV9kc2NwX21hc2sodGJbRlJBX0RTQ1BfTUFTS10sIHJ1bGU0LCBleHRhY2spIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byBlcnJvdXQ7XFxuIFxcbi1cXHQvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovXFxuLVxcdGVyciA9IGZpYl91bm1lcmdlKG5ldCk7XFxuLVxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gZXJyb3V0O1xcbitcXHRpZiAoIW5ldC1cXHUwMDNlaXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcykge1xcbitcXHRcXHQvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovXFxuK1xcdFxcdGVyciA9IGZpYl91bm1lcmdlKG5ldCk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdGdvdG8gZXJyb3V0O1xcbitcXHR9XFxuIFxcbiBcXHRpZiAocnVsZS1cXHUwMDNldGFibGUgPT0gUlRfVEFCTEVfVU5TUEVDIFxcdTAwMjZcXHUwMDI2ICFydWxlLVxcdTAwM2VsM21kZXYpIHtcXG4gXFx0XFx0aWYgKHJ1bGUtXFx1MDAzZWFjdGlvbiA9PSBGUl9BQ1RfVE9fVEJMKSB7XFxuQEAgLTM0OSw3ICszNTEsNyBAQCBzdGF0aWMgaW50IGZpYjRfcnVsZV9jb25maWd1cmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxcbitzdGF0aWMgdm9pZCBmaWI0X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBydWxlLVxcdTAwM2Vmcl9uZXQ7XFxuIFxcbkBAIC0zNjEsOCArMzYzLDYgQEAgc3RhdGljIGludCBmaWI0X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcXG4gXFx0aWYgKG5ldC1cXHUwMDNlaXB2NC5maWJfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSlcXG4gXFx0XFx0bmV0LVxcdTAwM2VpcHY0LmZpYl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdC0tO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbXBhcmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3QgZmliX3J1bGVfaGRyICpmcmgsXFxuQEAgLTQ2MCw2ICs0NjAsMTEgQEAgc3RhdGljIHZvaWQgZmliNF9ydWxlX2ZsdXNoX2NhY2hlKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMpXFxuIFxcdHJ0X2NhY2hlX2ZsdXNoKG9wcy1cXHUwMDNlZnJvX25ldCk7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGZpYjRfcnVsZV9uZWVkX3J0bmwoc3RydWN0IG5ldCAqbmV0KVxcbit7XFxuK1xcdHJldHVybiAhbmV0LVxcdTAwM2VpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgX19uZXRfaW5pdGNvbnN0IGZpYjRfcnVsZXNfb3BzX3RlbXBsYXRlID0ge1xcbiBcXHQuZmFtaWx5XFx0XFx0PSBBRl9JTkVULFxcbiBcXHQucnVsZV9zaXplXFx0PSBzaXplb2Yoc3RydWN0IGZpYjRfcnVsZSksXFxuQEAgLTQ3Myw2ICs0NzgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgX19uZXRfaW5pdGNvbnN0IGZpYjRfcnVsZXNfb3BzX3RlbXBsYXRlID0ge1xcbiBcXHQuZmlsbFxcdFxcdD0gZmliNF9ydWxlX2ZpbGwsXFxuIFxcdC5ubG1zZ19wYXlsb2FkXFx0PSBmaWI0X3J1bGVfbmxtc2dfcGF5bG9hZCxcXG4gXFx0LmZsdXNoX2NhY2hlXFx0PSBmaWI0X3J1bGVfZmx1c2hfY2FjaGUsXFxuK1xcdC5uZWVkX3J0bmxcXHQ9IGZpYjRfcnVsZV9uZWVkX3J0bmwsXFxuIFxcdC5ubGdyb3VwXFx0PSBSVE5MR1JQX0lQVjRfUlVMRSxcXG4gXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX3RyaWUuYyBiL25ldC9pcHY0L2ZpYl90cmllLmNcXG5pbmRleCBlMTFkYzg2Y2VkYTBiZS4uZDFkMzQyZDcxNDhlODIgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvZmliX3RyaWUuY1xcbisrKyBiL25ldC9pcHY0L2ZpYl90cmllLmNcXG5AQCAtMjEzNyw4ICsyMTM3LDcgQEAgdm9pZCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sX2luZm8gKmluZm8pXFxuIFxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4gXFx0XFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuIFxcbi1cXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LFxcbi1cXHRcXHRcXHRcXHRcXHQgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSlcXG4rXFx0XFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSlcXG4gXFx0XFx0XFx0X19maWJfaW5mb19ub3RpZnlfdXBkYXRlKG5ldCwgdGIsIGluZm8pO1xcbiBcXHR9XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jIGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jXFxuaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjA0ZGFiOTMyOWQwY2Y1IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xcbisrKyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xcbkBAIC00ODAsMTUgKzQ4MCwxMyBAQCBzdGF0aWMgaW50IGZpYjZfcnVsZV9jb25maWd1cmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGZpYjZfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxcbitzdGF0aWMgdm9pZCBmaWI2X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBydWxlLVxcdTAwM2Vmcl9uZXQ7XFxuIFxcbiBcXHRpZiAobmV0LVxcdTAwM2VpcHY2LmZpYjZfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSlcXG4gXFx0XFx0bmV0LVxcdTAwM2VpcHY2LmZpYjZfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QtLTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGZpYjZfcnVsZV9jb21wYXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IGZpYl9ydWxlX2hkciAqZnJoLFxcbkBAIC02MzcsMjEgKzYzNSwxNCBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNl9ydWxlc19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcdGdvdG8gb3V0O1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGZpYjZfcnVsZXNfbmV0X2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2xpc3QpXFxuK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliNl9ydWxlc19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIHtcXG4tXFx0c3RydWN0IG5ldCAqbmV0O1xcbi1cXG4tXFx0cnRubF9sb2NrKCk7XFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkobmV0LCBuZXRfbGlzdCwgZXhpdF9saXN0KSB7XFxuLVxcdFxcdGZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC1cXHUwMDNlaXB2Ni5maWI2X3J1bGVzX29wcyk7XFxuLVxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbi1cXHR9XFxuLVxcdHJ0bmxfdW5sb2NrKCk7XFxuK1xcdGZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC1cXHUwMDNlaXB2Ni5maWI2X3J1bGVzX29wcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZmliNl9ydWxlc19uZXRfb3BzID0ge1xcbiBcXHQuaW5pdCA9IGZpYjZfcnVsZXNfbmV0X2luaXQsXFxuLVxcdC5leGl0X2JhdGNoID0gZmliNl9ydWxlc19uZXRfZXhpdF9iYXRjaCxcXG4rXFx0LmV4aXQgPSBmaWI2X3J1bGVzX25ldF9leGl0LFxcbiB9O1xcbiBcXG4gaW50IF9faW5pdCBmaWI2X3J1bGVzX2luaXQodm9pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTk6NTA6MDcuNzg1MjU0MDY3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg4NzU4ODYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSVBMRV9UQUJMRVNcIixcbiAgICBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmliX25ld3J1bGVcIixcbiAgICBcImZpYl9kZWxydWxlXCIsXG4gICAgXCJmaWJfbmV3X3RhYmxlXCIsXG4gICAgXCJmaWJfcnVsZXNfZXZlbnRcIixcbiAgICBcImZpYjRfcnVsZV9jb25maWd1cmVcIixcbiAgICBcImZpYjRfcnVsZV9kZWxldGVcIixcbiAgICBcImZpYjZfcnVsZV9jb25maWd1cmVcIixcbiAgICBcImZpYjZfcnVsZV9kZWxldGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gZm9yIEZJQiBydWxlcyBhbmQgdGFibGVzLCByZXBsYWNpbmcgUlROTCB3aXRoIGZpbmVyLWdyYWluZWQgbXV0ZXhlcyBhbmQgc3BpbmxvY2tzIChvcHMtXFx1MDAzZWxvY2sgYW5kIGZpYl90YWJsZV9oYXNoX2xvY2spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFJUTV9ORVdSVUxFLCBSVE1fREVMUlVMRSkgYW5kIG5ldGRldiBldmVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byB1c2UgdGhlIG5ldyBsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjODY1MThjNjFjYzRjN2RjNGRhZmZkN2NjMDlhMjBkYjk5MDUyMTUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTk6NTA6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaCBiL2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oXG5pbmRleCA3ZGVlMGFlNjE2ZTMyMi4uYzZiOTQ3OTBmYTgxZWUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaFxuKysrIGIvaW5jbHVkZS9uZXQvZmliX3J1bGVzLmhcbkBAIC04Miw3ICs4Miw3IEBAIHN0cnVjdCBmaWJfcnVsZXNfb3BzIHtcbiBcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZmliX3J1bGVfaGRyICosXG4gXHRcdFx0XHRcdCAgICAgc3RydWN0IG5sYXR0ciAqKixcbiBcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICopO1xuLVx0aW50XHRcdFx0KCpkZWxldGUpKHN0cnVjdCBmaWJfcnVsZSAqKTtcbitcdHZvaWRcdFx0XHQoKmRlbGV0ZSkoc3RydWN0IGZpYl9ydWxlICopO1xuIFx0aW50XHRcdFx0KCpjb21wYXJlKShzdHJ1Y3QgZmliX3J1bGUgKixcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGZpYl9ydWxlX2hkciAqLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgbmxhdHRyICoqKTtcbkBAIC05MywxMSArOTMsMTMgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMge1xuIFx0LyogQ2FsbGVkIGFmdGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJ1bGVzIHNldCwgbXVzdCBmbHVzaFxuIFx0ICogdGhlIHJvdXRlIGNhY2hlIGlmIG9uZSBleGlzdHMuICovXG4gXHR2b2lkXHRcdFx0KCpmbHVzaF9jYWNoZSkoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyk7XG4rXHRib29sXHRcdFx0KCpuZWVkX3J0bmwpKHN0cnVjdCBuZXQgKm5ldCk7XG4gXG4gXHRpbnRcdFx0XHRubGdyb3VwO1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0cnVsZXNfbGlzdDtcbiBcdHN0cnVjdCBtb2R1bGVcdFx0Km93bmVyO1xuIFx0c3RydWN0IG5ldFx0XHQqZnJvX25ldDtcbitcdHN0cnVjdCBtdXRleFx0XHRsb2NrO1xuIFx0c3RydWN0IHJjdV9oZWFkXHRcdHJjdTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX2ZpYi5oIGIvaW5jbHVkZS9uZXQvaXBfZmliLmhcbmluZGV4IGM2M2EzYzQ5NjdhZTYxLi4wYTM1MzU1ZmIwZjMzNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX2ZpYi5oXG4rKysgYi9pbmNsdWRlL25ldC9pcF9maWIuaFxuQEAgLTMwMiw3ICszMDIsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXG4gXHRcdFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX0xPQ0FMX0lOREVYXSA6XG4gXHRcdFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX01BSU5fSU5ERVhdO1xuIFxuLVx0dGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcnRubChobGlzdF9maXJzdF9yY3UocHRyKSk7XG4rXHQvKiBPbmx5IGZpYjRfcnVsZXNfaW5pdCgpIGFkZHMgZmliX3RhYmxlLiAqL1xuK1x0dGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGhsaXN0X2ZpcnN0X3JjdShwdHIpLCB0cnVlKTtcbiBcbiBcdHJldHVybiBobGlzdF9lbnRyeSh0Yl9obGlzdCwgc3RydWN0IGZpYl90YWJsZSwgdGJfaGxpc3QpO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmggYi9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmhcbmluZGV4IDZlMjdjNTY1MTRkZjU3Li41OTUwNjMyMDU1OGE5OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaFxuKysrIGIvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oXG5AQCAtMTI3LDYgKzEyNyw3IEBAIHN0cnVjdCBuZXRuc19pcHY0IHtcbiBcdGF0b21pY190XHRcdGZpYl9udW1fdGNsYXNzaWRfdXNlcnM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZFx0KmZpYl90YWJsZV9oYXNoO1xuK1x0c3BpbmxvY2tfdFx0XHRmaWJfdGFibGVfaGFzaF9sb2NrO1xuIFx0c3RydWN0IHNvY2tcdFx0KmZpYm5sO1xuIFx0c3RydWN0IGhsaXN0X2hlYWRcdCpmaWJfaW5mb19oYXNoO1xuIFx0dW5zaWduZWQgaW50XHRcdGZpYl9pbmZvX2hhc2hfYml0cztcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWJfcnVsZXMuYyBiL25ldC9jb3JlL2ZpYl9ydWxlcy5jXG5pbmRleCBjZjM3NGMyMDg3MzI1OC4uMjJlNWU1ZTFhOWM0NGYgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9maWJfcnVsZXMuY1xuKysrIGIvbmV0L2NvcmUvZmliX3J1bGVzLmNcbkBAIC01MSw3ICs1MSw2IEBAIGJvb2wgZmliX3J1bGVfbWF0Y2hhbGwoY29uc3Qgc3RydWN0IGZpYl9ydWxlICpydWxlKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVfbWF0Y2hhbGwpO1xuIFxuIGludCBmaWJfZGVmYXVsdF9ydWxlX2FkZChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxuIFx0XHRcdCB1MzIgcHJlZiwgdTMyIHRhYmxlKVxuQEAgLTc4LDcgKzc3LDYgQEAgaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnItXHUwMDNlbGlzdCwgXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QpO1xuIFx0cmV0dXJuIDA7XG4gfVxuLUVYUE9SVF9TWU1CT0woZmliX2RlZmF1bHRfcnVsZV9hZGQpO1xuIFxuIHN0YXRpYyB1MzIgZmliX2RlZmF1bHRfcnVsZV9wcmVmKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMpXG4ge1xuQEAgLTE3Miw2ICsxNzAsNyBAQCBmaWJfcnVsZXNfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgKnRtcGwsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCk7XG4rXHRtdXRleF9pbml0KFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcdG9wcy1cdTAwM2Vmcm9fbmV0ID0gbmV0O1xuIFxuIFx0ZXJyID0gX19maWJfcnVsZXNfcmVnaXN0ZXIob3BzKTtcbkBAIC0xODIsNyArMTgxLDYgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpXG4gXG4gXHRyZXR1cm4gb3BzO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfcmVnaXN0ZXIpO1xuIFxuIHN0YXRpYyB2b2lkIGZpYl9ydWxlc19jbGVhbnVwX29wcyhzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKVxuIHtcbkBAIC0yMDcsNyArMjA1LDYgQEAgdm9pZCBmaWJfcnVsZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKVxuIFx0ZmliX3J1bGVzX2NsZWFudXBfb3BzKG9wcyk7XG4gXHRrZnJlZV9yY3Uob3BzLCByY3UpO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfdW5yZWdpc3Rlcik7XG4gXG4gc3RhdGljIGludCB1aWRfcmFuZ2Vfc2V0KHN0cnVjdCBmaWJfa3VpZF9yYW5nZSAqcmFuZ2UpXG4ge1xuQEAgLTM2Myw3ICszNjAsNiBAQCBpbnQgZmliX3J1bGVzX2xvb2t1cChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLCBzdHJ1Y3QgZmxvd2kgKmZsLFxuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2xvb2t1cCk7XG4gXG4gc3RhdGljIGludCBjYWxsX2ZpYl9ydWxlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4gXHRcdFx0XHQgIGVudW0gZmliX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSxcbkBAIC0zOTEsNyArMzg3LDcgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9ydWxlX25vdGlmaWVycyhzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdC5ydWxlID0gcnVsZSxcbiBcdH07XG4gXG4tXHRBU1NFUlRfUlROTF9ORVQobmV0KTtcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFxuIFx0LyogUGFpcmVkIHdpdGggUkVBRF9PTkNFKCkgaW4gZmliX3J1bGVzX3NlcSgpICovXG4gXHRXUklURV9PTkNFKG9wcy1cdTAwM2VmaWJfcnVsZXNfc2VxLCBvcHMtXHUwMDNlZmliX3J1bGVzX3NlcSArIDEpO1xuQEAgLTQyMyw3ICs0MTksNiBAQCBpbnQgZmliX3J1bGVzX2R1bXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCBpbnQgZmFtaWx5LFxuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2R1bXApO1xuIFxuIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KVxuIHtcbkBAIC00MzksNyArNDM0LDYgQEAgdW5zaWduZWQgaW50IGZpYl9ydWxlc19zZXFfcmVhZChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQsIGludCBmYW1pbHkpXG4gXG4gXHRyZXR1cm4gZmliX3J1bGVzX3NlcTtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX3NlcV9yZWFkKTtcbiBcbiBzdGF0aWMgc3RydWN0IGZpYl9ydWxlICpydWxlX2ZpbmQoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyxcbiBcdFx0XHRcdCAgc3RydWN0IGZpYl9ydWxlX2hkciAqZnJoLFxuQEAgLTc0MCwxMCArNzM0LDEwIEBAIHN0YXRpYyBpbnQgZmliX25sMnJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZmliX25sMnJ1bGVfcnRubChzdHJ1Y3QgZmliX3J1bGUgKm5scnVsZSxcbi1cdFx0XHQgICAgc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyxcbi1cdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi1cdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3N0YXRpYyBpbnQgZmliX25sMnJ1bGVfbG9ja2VkKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4rXHRcdFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSxcbitcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuIFx0aWYgKCF0YltGUkFfUFJJT1JJVFldKVxuIFx0XHRubHJ1bGUtXHUwMDNlcHJlZiA9IGZpYl9kZWZhdWx0X3J1bGVfcHJlZihvcHMpO1xuQEAgLTc1NCwxMiArNzQ4LDE0IEBAIHN0YXRpYyBpbnQgZmliX25sMnJ1bGVfcnRubChzdHJ1Y3QgZmliX3J1bGUgKm5scnVsZSxcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXG4gXHRpZiAodGJbRlJBX0lJRk5BTUVdKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG4tXHRcdGRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS1cdTAwM2Vmcl9uZXQsIG5scnVsZS1cdTAwM2VpaWZuYW1lKTtcbitcdFx0ZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtXHUwMDNlZnJfbmV0LCBubHJ1bGUtXHUwMDNlaWlmbmFtZSk7XG4gXHRcdGlmIChkZXYpIHtcbi1cdFx0XHRubHJ1bGUtXHUwMDNlaWlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbitcdFx0XHRubHJ1bGUtXHUwMDNlaWlmaW5kZXggPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWlmaW5kZXgpO1xuIFx0XHRcdG5scnVsZS1cdTAwM2VpaWZfaXNfbDNfbWFzdGVyID0gbmV0aWZfaXNfbDNfbWFzdGVyKGRldik7XG4gXHRcdH1cbiBcdH1cbkBAIC03NjcsMTMgKzc2MywxNSBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXG4gXHRpZiAodGJbRlJBX09JRk5BTUVdKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG4tXHRcdGRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS1cdTAwM2Vmcl9uZXQsIG5scnVsZS1cdTAwM2VvaWZuYW1lKTtcbitcdFx0ZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtXHUwMDNlZnJfbmV0LCBubHJ1bGUtXHUwMDNlb2lmbmFtZSk7XG4gXHRcdGlmIChkZXYpIHtcbi1cdFx0XHRubHJ1bGUtXHUwMDNlb2lmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbitcdFx0XHRubHJ1bGUtXHUwMDNlb2lmaW5kZXggPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWlmaW5kZXgpO1xuIFx0XHRcdG5scnVsZS1cdTAwM2VvaWZfaXNfbDNfbWFzdGVyID0gbmV0aWZfaXNfbDNfbWFzdGVyKGRldik7XG4gXHRcdH1cbiBcdH1cbiBcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTg4Myw2ICs4ODEsNyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdHN0cnVjdCBubGF0dHIgKnRiW0ZSQV9NQVggKyAxXTtcbiBcdGJvb2wgdXNlcl9wcmlvcml0eSA9IGZhbHNlO1xuIFx0c3RydWN0IGZpYl9ydWxlX2hkciAqZnJoO1xuK1x0Ym9vbCB1bmxvY2tfcnRubCA9IGZhbHNlO1xuIFxuIFx0ZnJoID0gbmxtc2dfcGF5bG9hZChubGgsIHNpemVvZigqZnJoKSk7XG4gXHRpZiAoIWZyaCkge1xuQEAgLTkwOCwxMCArOTA3LDEzIEBAIGludCBmaWJfbmV3cnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJvdXQ7XG4gXG4tXHRpZiAoIXJ0bmxfaGVsZClcbitcdGlmICghcnRubF9oZWxkIFx1MDAyNlx1MDAyNiBvcHMtXHUwMDNlbmVlZF9ydG5sIFx1MDAyNlx1MDAyNiBvcHMtXHUwMDNlbmVlZF9ydG5sKG5ldCkpIHtcbitcdFx0dW5sb2NrX3J0bmwgPSB0cnVlO1xuIFx0XHRydG5sX25ldF9sb2NrKG5ldCk7XG4rXHR9XG4rXHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbi1cdGVyciA9IGZpYl9ubDJydWxlX3J0bmwocnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcbitcdGVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChydWxlLCBvcHMsIHRiLCBleHRhY2spO1xuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJvdXRfZnJlZTtcbiBcbkBAIC05NTksNyArOTYxLDcgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkociwgXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QsIGxpc3QpIHtcbiBcdFx0XHRpZiAoci1cdTAwM2VhY3Rpb24gPT0gRlJfQUNUX0dPVE8gXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIHItXHUwMDNldGFyZ2V0ID09IHJ1bGUtXHUwMDNlcHJlZiBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgcnRubF9kZXJlZmVyZW5jZShyLVx1MDAzZWN0YXJnZXQpID09IE5VTEwpIHtcbitcdFx0XHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihyLVx1MDAzZWN0YXJnZXQpKSB7XG4gXHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoci1cdTAwM2VjdGFyZ2V0LCBydWxlKTtcbiBcdFx0XHRcdGlmICgtLW9wcy1cdTAwM2V1bnJlc29sdmVkX3J1bGVzID09IDApXG4gXHRcdFx0XHRcdGJyZWFrO1xuQEAgLTk3OCw3ICs5ODAsOCBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcbiBcdGZpYl9ydWxlX2dldChydWxlKTtcbiBcbi1cdGlmICghcnRubF9oZWxkKVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbitcdGlmICh1bmxvY2tfcnRubClcbiBcdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4gXG4gXHRub3RpZnlfcnVsZV9jaGFuZ2UoUlRNX05FV1JVTEUsIHJ1bGUsIG9wcywgbmxoLCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcbkBAIC05ODgsNyArOTkxLDggQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvdXRfZnJlZTpcbi1cdGlmICghcnRubF9oZWxkKVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbitcdGlmICh1bmxvY2tfcnRubClcbiBcdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4gXHRrZnJlZShydWxlKTtcbiBlcnJvdXQ6XG5AQCAtMTAzNywxMCArMTA0MSw5IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJvdXQ7XG4gXG4tXHRpZiAoIXJ0bmxfaGVsZClcbi1cdFx0cnRubF9uZXRfbG9jayhuZXQpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4gXG4tXHRlcnIgPSBmaWJfbmwycnVsZV9ydG5sKG5scnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcbitcdGVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChubHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycm91dF9mcmVlO1xuIFxuQEAgLTEwNTUsMTEgKzEwNTgsOCBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdFx0Z290byBlcnJvdXRfZnJlZTtcbiBcdH1cbiBcbi1cdGlmIChvcHMtXHUwMDNlZGVsZXRlKSB7XG4tXHRcdGVyciA9IG9wcy1cdTAwM2VkZWxldGUocnVsZSk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBlcnJvdXRfZnJlZTtcbi1cdH1cbitcdGlmIChvcHMtXHUwMDNlZGVsZXRlKVxuK1x0XHRvcHMtXHUwMDNlZGVsZXRlKHJ1bGUpO1xuIFxuIFx0aWYgKHJ1bGUtXHUwMDNldHVuX2lkKVxuIFx0XHRpcF90dW5uZWxfdW5uZWVkX21ldGFkYXRhKCk7XG5AQCAtMTA2OCw3ICsxMDY4LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXG4gXHRpZiAocnVsZS1cdTAwM2VhY3Rpb24gPT0gRlJfQUNUX0dPVE8pIHtcbiBcdFx0b3BzLVx1MDAzZW5yX2dvdG9fcnVsZXMtLTtcbi1cdFx0aWYgKHJ0bmxfZGVyZWZlcmVuY2UocnVsZS1cdTAwM2VjdGFyZ2V0KSA9PSBOVUxMKVxuK1x0XHRpZiAoIXJjdV9hY2Nlc3NfcG9pbnRlcihydWxlLVx1MDAzZWN0YXJnZXQpKVxuIFx0XHRcdG9wcy1cdTAwM2V1bnJlc29sdmVkX3J1bGVzLS07XG4gXHR9XG4gXG5AQCAtMTA4Niw3ICsxMDg2LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRcdGlmIChcdTAwMjZuLVx1MDAzZWxpc3QgPT0gXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QgfHwgbi1cdTAwM2VwcmVmICE9IHJ1bGUtXHUwMDNlcHJlZilcbiBcdFx0XHRuID0gTlVMTDtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyLCBcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgbGlzdCkge1xuLVx0XHRcdGlmIChydG5sX2RlcmVmZXJlbmNlKHItXHUwMDNlY3RhcmdldCkgIT0gcnVsZSlcbitcdFx0XHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKHItXHUwMDNlY3RhcmdldCkgIT0gcnVsZSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihyLVx1MDAzZWN0YXJnZXQsIG4pO1xuIFx0XHRcdGlmICghbilcbkBAIC0xMDk2LDggKzEwOTYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcbiBcdGNhbGxfZmliX3J1bGVfbm90aWZpZXJzKG5ldCwgRklCX0VWRU5UX1JVTEVfREVMLCBydWxlLCBvcHMsIE5VTEwpO1xuIFxuLVx0aWYgKCFydG5sX2hlbGQpXG4tXHRcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbiBcdG5vdGlmeV9ydWxlX2NoYW5nZShSVE1fREVMUlVMRSwgcnVsZSwgb3BzLCBubGgsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xuIFx0ZmliX3J1bGVfcHV0KHJ1bGUpO1xuQEAgLTExMDcsOCArMTEwNiw3IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyb3V0X2ZyZWU6XG4tXHRpZiAoIXJ0bmxfaGVsZClcbi1cdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0a2ZyZWUobmxydWxlKTtcbiBlcnJvdXQ6XG4gXHRydWxlc19vcHNfcHV0KG9wcyk7XG5AQCAtMTQwMiwyNCArMTQwMCwzMCBAQCBzdGF0aWMgaW50IGZpYl9ydWxlc19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGRldik7XG4gXHRzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzO1xuIFxuLVx0QVNTRVJUX1JUTkwoKTtcbi1cbiBcdHN3aXRjaCAoZXZlbnQpIHtcbiBcdGNhc2UgTkVUREVWX1JFR0lTVEVSOlxuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXHUwMDI2bmV0LVx1MDAzZXJ1bGVzX29wcywgbGlzdClcbitcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsIFx1MDAyNm5ldC1cdTAwM2VydWxlc19vcHMsIGxpc3QpIHtcbitcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRhdHRhY2hfcnVsZXMoXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XG4rXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbitcdFx0fVxuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgTkVUREVWX0NIQU5HRU5BTUU6XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcdTAwMjZuZXQtXHUwMDNlcnVsZXNfb3BzLCBsaXN0KSB7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4gXHRcdFx0ZGV0YWNoX3J1bGVzKFx1MDAyNm9wcy1cdTAwM2VydWxlc19saXN0LCBkZXYpO1xuIFx0XHRcdGF0dGFjaF9ydWxlcyhcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgZGV2KTtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBORVRERVZfVU5SRUdJU1RFUjpcbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsIFx1MDAyNm5ldC1cdTAwM2VydWxlc19vcHMsIGxpc3QpXG4rXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcdTAwMjZuZXQtXHUwMDNlcnVsZXNfb3BzLCBsaXN0KSB7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4gXHRcdFx0ZGV0YWNoX3J1bGVzKFx1MDAyNm9wcy1cdTAwM2VydWxlc19saXN0LCBkZXYpO1xuK1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4rXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xuaW5kZXggNDIyMTI5NzBkNzM1NDAuLjU0ZWI3MjY5NTA5M2RhIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcbisrKyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXG5AQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNF9ydWxlc19pbml0KHN0cnVjdCBuZXQgKm5ldClcbiBcbiBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuIHtcbi1cdHN0cnVjdCBmaWJfdGFibGUgKnRiLCAqYWxpYXMgPSBOVUxMO1xuK1x0c3RydWN0IGZpYl90YWJsZSAqdGIsICpuZXdfdGIsICphbGlhcyA9IE5VTEw7XG4gXHR1bnNpZ25lZCBpbnQgaDtcbiBcbiBcdGlmIChpZCA9PSAwKVxuQEAgLTg1LDE0ICs4NSwyNyBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuIFx0aWYgKHRiKVxuIFx0XHRyZXR1cm4gdGI7XG4gXG4rXHRpZiAoIWNoZWNrX25ldChuZXQpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbiBcdGlmIChpZCA9PSBSVF9UQUJMRV9MT0NBTCBcdTAwMjZcdTAwMjYgIW5ldC1cdTAwM2VpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzKVxuIFx0XHRhbGlhcyA9IGZpYl9uZXdfdGFibGUobmV0LCBSVF9UQUJMRV9NQUlOKTtcbiBcbi1cdGlmIChjaGVja19uZXQobmV0KSlcbi1cdFx0dGIgPSBmaWJfdHJpZV90YWJsZShpZCwgYWxpYXMpO1xuLVx0aWYgKCF0YilcbitcdG5ld190YiA9IGZpYl90cmllX3RhYmxlKGlkLCBhbGlhcyk7XG4rXHRpZiAoIW5ld190YilcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4rXHRzcGluX2xvY2soXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hfbG9jayk7XG4rXG4rXHR0YiA9IGZpYl9nZXRfdGFibGUobmV0LCBpZCk7XG4rXHRpZiAodGIpIHtcbitcdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hfbG9jayk7XG4rXHRcdGZpYl9mcmVlX3RhYmxlKG5ld190Yik7XG4rXHRcdHJldHVybiB0YjtcbitcdH1cbitcbitcdHRiID0gbmV3X3RiO1xuK1xuIFx0c3dpdGNoIChpZCkge1xuIFx0Y2FzZSBSVF9UQUJMRV9NQUlOOlxuIFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobmV0LVx1MDAzZWlwdjQuZmliX21haW4sIHRiKTtcbkBAIC0xMDYsMjggKzExOSwzNSBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuIFxuIFx0aCA9IGlkIFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xuIFx0aGxpc3RfYWRkX2hlYWRfcmN1KFx1MDAyNnRiLVx1MDAzZXRiX2hsaXN0LCBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXSk7XG4rXG4rXHRzcGluX3VubG9jayhcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaF9sb2NrKTtcbitcbiBcdHJldHVybiB0YjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZmliX25ld190YWJsZSk7XG4gXG4tLyogY2FsbGVyIG11c3QgaG9sZCBlaXRoZXIgcnRubCBvciByY3UgcmVhZCBsb2NrICovXG4gc3RydWN0IGZpYl90YWJsZSAqZmliX2dldF90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcbiB7XG4tXHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcbitcdHN0cnVjdCBmaWJfdGFibGUgKnRiID0gTlVMTDtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuIFx0dW5zaWduZWQgaW50IGg7XG4gXG4gXHRpZiAoaWQgPT0gMClcbiBcdFx0aWQgPSBSVF9UQUJMRV9NQUlOO1xuIFx0aCA9IGlkIFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xuLVxuIFx0aGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCxcbi1cdFx0XHRcdCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpKSB7XG4rXG4rXHQvKiBmaWJfdGFibGUgaXMgbm90IGRlc3Ryb3llZCB1bnRpbCBpcF9maWJfbmV0X2V4aXQoKVxuK1x0ICogZXhjZXB0IGZvciB0aGUgbWVyZ2VkIG1haW4vbG9jYWwgdGFibGUuXG4rXHQgKiBmaWJfdW5tZXJnZSgpIGlzIGNhbGxlZCB1bmRlciBSVE5MLCBzbyBvdGhlciByZWFkZXJzXG4rXHQgKiB1bmRlciBSVE5MIChlLmcuIGZpYl9mbHVzaCgpLCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKCkpXG4rXHQgKiBjYW4gc2FmZWx5IHRyYXZlcnNlIHRoZSBsaXN0IHdpdGggcmN1X2RlcmVmZXJlbmNlX3JhdygpLlxuK1x0ICovXG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKVxuIFx0XHRpZiAodGItXHUwMDNldGJfaWQgPT0gaWQpXG4tXHRcdFx0cmV0dXJuIHRiO1xuLVx0fVxuLVx0cmV0dXJuIE5VTEw7XG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRyZXR1cm4gdGI7XG4gfVxuICNlbmRpZiAvKiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTICovXG4gXG5AQCAtMTkwLDEwICsyMTAsOSBAQCB2b2lkIGZpYl9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQpXG4gXG4gXHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyspIHtcbiBcdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi1cdFx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcbiBcdFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XG4gXG4tXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGIsIHRtcCwgaGVhZCwgdGJfaGxpc3QpXG4rXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QsIHRydWUpXG4gXHRcdFx0Zmx1c2hlZCArPSBmaWJfdGFibGVfZmx1c2gobmV0LCB0YiwgZmFsc2UpO1xuIFx0fVxuIFxuQEAgLTE1NjUsNiArMTU4NCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0bmV0LVx1MDAzZWlwdjQuc3lzY3RsX2ZpYl9tdWx0aXBhdGhfaGFzaF9maWVsZHMgPVxuIFx0XHRGSUJfTVVMVElQQVRIX0hBU0hfRklFTERfREVGQVVMVF9NQVNLO1xuICNlbmRpZlxuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hfbG9jayk7XG4gXG4gXHQvKiBBdm9pZCBmYWxzZSBzaGFyaW5nIDogVXNlIGF0IGxlYXN0IGEgZnVsbCBjYWNoZSBsaW5lICovXG4gXHRzaXplID0gbWF4X3Qoc2l6ZV90LCBzaXplLCBMMV9DQUNIRV9CWVRFUyk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX3J1bGVzLmMgYi9uZXQvaXB2NC9maWJfcnVsZXMuY1xuaW5kZXggZTA2OGE1YmFjZTczZjIuLjRlZGIwZGNhN2JlOGExIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZmliX3J1bGVzLmNcbisrKyBiL25ldC9pcHY0L2ZpYl9ydWxlcy5jXG5AQCAtMzAxLDEwICszMDEsMTIgQEAgc3RhdGljIGludCBmaWI0X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICBmaWI0X25sMnJ1bGVfZHNjcF9tYXNrKHRiW0ZSQV9EU0NQX01BU0tdLCBydWxlNCwgZXh0YWNrKSBcdTAwM2MgMClcbiBcdFx0Z290byBlcnJvdXQ7XG4gXG4tXHQvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovXG4tXHRlcnIgPSBmaWJfdW5tZXJnZShuZXQpO1xuLVx0aWYgKGVycilcbi1cdFx0Z290byBlcnJvdXQ7XG4rXHRpZiAoIW5ldC1cdTAwM2VpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzKSB7XG4rXHRcdC8qIHNwbGl0IGxvY2FsL21haW4gaWYgdGhleSBhcmUgbm90IGFscmVhZHkgc3BsaXQgKi9cbitcdFx0ZXJyID0gZmliX3VubWVyZ2UobmV0KTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRnb3RvIGVycm91dDtcbitcdH1cbiBcbiBcdGlmIChydWxlLVx1MDAzZXRhYmxlID09IFJUX1RBQkxFX1VOU1BFQyBcdTAwMjZcdTAwMjYgIXJ1bGUtXHUwMDNlbDNtZGV2KSB7XG4gXHRcdGlmIChydWxlLVx1MDAzZWFjdGlvbiA9PSBGUl9BQ1RfVE9fVEJMKSB7XG5AQCAtMzQ5LDcgKzM1MSw3IEBAIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbmZpZ3VyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuK3N0YXRpYyB2b2lkIGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuIHtcbiBcdHN0cnVjdCBuZXQgKm5ldCA9IHJ1bGUtXHUwMDNlZnJfbmV0O1xuIFxuQEAgLTM2MSw4ICszNjMsNiBAQCBzdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuIFx0aWYgKG5ldC1cdTAwM2VpcHY0LmZpYl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdCBcdTAwMjZcdTAwMjZcbiBcdCAgICBmaWJfcnVsZV9yZXF1aXJlc19mbGRpc3NlY3QocnVsZSkpXG4gXHRcdG5ldC1cdTAwM2VpcHY0LmZpYl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdC0tO1xuLVxuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbXBhcmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3QgZmliX3J1bGVfaGRyICpmcmgsXG5AQCAtNDYwLDYgKzQ2MCwxMSBAQCBzdGF0aWMgdm9pZCBmaWI0X3J1bGVfZmx1c2hfY2FjaGUoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcylcbiBcdHJ0X2NhY2hlX2ZsdXNoKG9wcy1cdTAwM2Vmcm9fbmV0KTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgZmliNF9ydWxlX25lZWRfcnRubChzdHJ1Y3QgbmV0ICpuZXQpXG4re1xuK1x0cmV0dXJuICFuZXQtXHUwMDNlaXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcztcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzIF9fbmV0X2luaXRjb25zdCBmaWI0X3J1bGVzX29wc190ZW1wbGF0ZSA9IHtcbiBcdC5mYW1pbHlcdFx0PSBBRl9JTkVULFxuIFx0LnJ1bGVfc2l6ZVx0PSBzaXplb2Yoc3RydWN0IGZpYjRfcnVsZSksXG5AQCAtNDczLDYgKzQ3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNF9ydWxlc19vcHNfdGVtcGxhdGUgPSB7XG4gXHQuZmlsbFx0XHQ9IGZpYjRfcnVsZV9maWxsLFxuIFx0Lm5sbXNnX3BheWxvYWRcdD0gZmliNF9ydWxlX25sbXNnX3BheWxvYWQsXG4gXHQuZmx1c2hfY2FjaGVcdD0gZmliNF9ydWxlX2ZsdXNoX2NhY2hlLFxuK1x0Lm5lZWRfcnRubFx0PSBmaWI0X3J1bGVfbmVlZF9ydG5sLFxuIFx0Lm5sZ3JvdXBcdD0gUlROTEdSUF9JUFY0X1JVTEUsXG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiB9O1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl90cmllLmMgYi9uZXQvaXB2NC9maWJfdHJpZS5jXG5pbmRleCBlMTFkYzg2Y2VkYTBiZS4uZDFkMzQyZDcxNDhlODIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfdHJpZS5jXG4rKysgYi9uZXQvaXB2NC9maWJfdHJpZS5jXG5AQCAtMjEzNyw4ICsyMTM3LDcgQEAgdm9pZCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sX2luZm8gKmluZm8pXG4gXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XG4gXHRcdHN0cnVjdCBmaWJfdGFibGUgKnRiO1xuIFxuLVx0XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LFxuLVx0XHRcdFx0XHQgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSlcbitcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSlcbiBcdFx0XHRfX2ZpYl9pbmZvX25vdGlmeV91cGRhdGUobmV0LCB0YiwgaW5mbyk7XG4gXHR9XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuYyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xuaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjA0ZGFiOTMyOWQwY2Y1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jXG4rKysgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmNcbkBAIC00ODAsMTUgKzQ4MCwxMyBAQCBzdGF0aWMgaW50IGZpYjZfcnVsZV9jb25maWd1cmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tc3RhdGljIGludCBmaWI2X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcbitzdGF0aWMgdm9pZCBmaWI2X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcbiB7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBydWxlLVx1MDAzZWZyX25ldDtcbiBcbiBcdGlmIChuZXQtXHUwMDNlaXB2Ni5maWI2X3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0IFx1MDAyNlx1MDAyNlxuIFx0ICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSlcbiBcdFx0bmV0LVx1MDAzZWlwdjYuZmliNl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdC0tO1xuLVxuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZmliNl9ydWxlX2NvbXBhcmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3QgZmliX3J1bGVfaGRyICpmcmgsXG5AQCAtNjM3LDIxICs2MzUsMTQgQEAgc3RhdGljIGludCBfX25ldF9pbml0IGZpYjZfcnVsZXNfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0Z290byBvdXQ7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliNl9ydWxlc19uZXRfZXhpdF9iYXRjaChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfbGlzdClcbitzdGF0aWMgdm9pZCBfX25ldF9leGl0IGZpYjZfcnVsZXNfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuIHtcbi1cdHN0cnVjdCBuZXQgKm5ldDtcbi1cbi1cdHJ0bmxfbG9jaygpO1xuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShuZXQsIG5ldF9saXN0LCBleGl0X2xpc3QpIHtcbi1cdFx0ZmliX3J1bGVzX3VucmVnaXN0ZXIobmV0LVx1MDAzZWlwdjYuZmliNl9ydWxlc19vcHMpO1xuLVx0XHRjb25kX3Jlc2NoZWQoKTtcbi1cdH1cbi1cdHJ0bmxfdW5sb2NrKCk7XG4rXHRmaWJfcnVsZXNfdW5yZWdpc3RlcihuZXQtXHUwMDNlaXB2Ni5maWI2X3J1bGVzX29wcyk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZmliNl9ydWxlc19uZXRfb3BzID0ge1xuIFx0LmluaXQgPSBmaWI2X3J1bGVzX25ldF9pbml0LFxuLVx0LmV4aXRfYmF0Y2ggPSBmaWI2X3J1bGVzX25ldF9leGl0X2JhdGNoLFxuK1x0LmV4aXQgPSBmaWI2X3J1bGVzX25ldF9leGl0LFxuIH07XG4gXG4gaW50IF9faW5pdCBmaWI2X3J1bGVzX2luaXQodm9pZClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE5OjUwOjA3Ljc4NTI1NTU5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNTA3NjI5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgcGFydCBkZWFsaW5nIHdpdGggYGZpYl9ydWxlc2AgYW5kIGBmaWJfdGFibGVgIGxvZ2ljLiBJdCdzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3IsIGFzIEkgY2FuIHNlZSBpdCdzIG1ha2luZyBzb21lIGZ1bmRhbWVudGFsIGNoYW5nZXMgdG8gaG93IHRoZXNlIHRhYmxlcyBhcmUgbWFuYWdlZC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhbHRlcmF0aW9uIG9mIGBmaWJfcnVsZXNfb3BzLVx1MDAzZWRlbGV0ZWAgdG8gcmV0dXJuIGB2b2lkYCBpbnN0ZWFkIG9mIGBpbnRgLiBUaGF0J3MgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2UgdG8gdGhlIGVycm9yIGhhbmRsaW5nIG1vZGVsLlxuXG5UaGUgcmVhbCBtZWF0IG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGxvY2tpbmcgc3RyYXRlZ3kuIEluc3RlYWQgb2YgcmVseWluZyBzb2xlbHkgb24gYHJ0bmxfbG9jaygpYCwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBgbXV0ZXhgIGxvY2sgd2l0aGluIGBmaWJfcnVsZXNfb3BzYCB0byBwcm90ZWN0IGBmaWJfcnVsZXNfbGlzdGAuIEl0IGFsc28gdGhyb3dzIGluIGEgYG5lZWRfcnRubGAgZmxhZyB0byBgZmliX3J1bGVzX29wc2Agd2hpY2ggd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIFRoaXMgZmluZS1ncmFpbmVkIGxvY2tpbmcgYXBwcm9hY2ggaXMgaW50ZXJlc3RpbmcuIFdlJ3JlIG1vdmluZyBhd2F5IGZyb20gdGhlIG1vcmUgY29hcnNlLWdyYWluZWQgUlROTCBsb2NrLCBpbmRpY2F0aW5nIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBtYXliZSBhIG1vdmUgdG93YXJkcyBtb3JlIGNvbmN1cnJlbnQgYWNjZXNzLlxuXG5JIHNlZSB0aGF0IGBmaWJfbmV3cnVsZWAgYW5kIGBmaWJfZGVscnVsZWAgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgYG9wcy1cdTAwM2Vsb2NrYCBpbnN0ZWFkIG9mIGBydG5sX2xvY2soKWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBTaW1pbGFybHksIGBmaWJfbmV3X3RhYmxlYCBpcyBub3cgdXNpbmcgYSBgZmliX3RhYmxlX2hhc2hfbG9ja2Agc3BpbmxvY2ssIHdoaWNoIEkgYXNzdW1lIGlzIGZvciBwcm90ZWN0aW5nIHRoZSBoYXNoIHRhYmxlJ3MgaW50ZWdyaXR5IGR1cmluZyB0YWJsZSBjcmVhdGlvbi4gYGZpYl9nZXRfdGFibGVgIGlzIHVzaW5nIGVpdGhlciBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgb3IgYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgd2l0aCBgdHJ1ZWAsIHdoaWNoIGlzIGRlZmluaXRlbHkgaW1wb3J0YW50LCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQgZm9yIHRoaXMgdXNhZ2UsIHZlcmlmeWluZyBpdHMgdXNlIGNhc2Ugd2l0aCB0aGUgb3RoZXIgbG9ja3MgaW4gdGhpcyBwYXRjaC4gVGhlIGBmaWJfcnVsZXNfZXZlbnRgIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIGdhaW5pbmcgYSBsb2NrIHRvIHByb3RlY3QgYXR0YWNoaW5nIGFuZCBkZXRhY2hpbmcgcnVsZXM7IGxpa2VseSBjcml0aWNhbCBmb3IgYSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50LiBBbmQgdGhlIGBmaWI2X3J1bGVzX25ldF9leGl0X2JhdGNoYCBpcyBiZWluZyByZWZhY3RvcmVkIHRvIGBmaWI2X3J1bGVzX25ldF9leGl0YCB3aXRoIHRoZSByZW1vdmFsIG9mIGBydG5sX2xvY2soKWAsIHdoaWNoIGRlZmluaXRlbHkgY2hhbmdlcyB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIElQdjYgRklCIHJ1bGVzIG1hbmFnZW1lbnQuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHN0YW5kcG9pbnQsIHRoaXMgcGF0Y2ggaXMgYSBjb3JlIG5ldHdvcmtpbmcgY2hhbmdlLCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBsb2NrbGVzcyBvciBmaW5lci1ncmFpbmVkIGxvY2tpbmcgZGVmaW5pdGVseSBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBmbG93LCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2Ugb2YgdGhpcywgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gc3BlY2lmaWMgZnVuY3Rpb25zOiBgZmliX25ld3J1bGVgLCBgZmliX2RlbHJ1bGVgLCBgZmliX25ld190YWJsZWAsIGBmaWJfZ2V0X3RhYmxlYCwgYGZpYl9ydWxlc19ldmVudGAsIGFuZCB0aGUgSVB2NCBhbmQgSVB2NiBydWxlIGNvbmZpZ3VyYXRpb24gYW5kIGRlbGV0aW9uIGZ1bmN0aW9ucyAoYGZpYjRfcnVsZV9jb25maWd1cmVgLCBgZmliNF9ydWxlX2RlbGV0ZWAsIGBmaWI2X3J1bGVfY29uZmlndXJlYCwgYGZpYjZfcnVsZV9kZWxldGVgKS5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gVGhlIGBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTYCBhbmQgYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2AgYXJlIGdvaW5nIHRvIGJlIGtleSwgZXNwZWNpYWxseSBmb3IgdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIGNoYW5nZXMgaW4gYGZpYl9uZXdfdGFibGVgIGFuZCBgZmliX2dldF90YWJsZWAsIGFuZCBhbHNvIHRoZSBgZmliNl9ydWxlc19uZXRgIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBwcm9wZXJseSBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTA4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTk6NTA6MTUuOTM2MDIwMjQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODQ1MzgwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9NTM9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnOjU0OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy01NS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvaXhwNHh4X2RlZmNvbmZpZz0yND1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWc6MjU6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnLTI2LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc9NTA9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc6NTE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWctNTItQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3Fjb21fZGVmY29uZmlnPTM4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvcWNvbV9kZWZjb25maWc6Mzk6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9hcm0vY29uZmlncy9xY29tX2RlZmNvbmZpZy00MC1DT05GSUdfSVBfUk9VVEVfVkVSQk9TRT15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTExOT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjEyMDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEyMS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTM1PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTM2OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTM3LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWc9MTc9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWc6MTg6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWctMTktQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZzozMzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc9MjQ9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZzoyNTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnLTI2LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnPTM2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZzozNzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWctMzgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZz00NT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZzo0NjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy00Ny1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9NTc9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo1ODpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTU5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTI5PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzozMDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMzEtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTMzPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MzQ6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0zNS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWc9Mjg9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzoyOTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnLTMwLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZz0zMD1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnOjMxOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWctMzItQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnPTMxPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc6MzI6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZy0zMy1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnPTMyPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnLTM0LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc9Mjk9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc6MzA6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWctMzEtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MzI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTQ3PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjQ4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTQ5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcWlfbGI2MF9kZWZjb25maWc9MjU9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvcWlfbGI2MF9kZWZjb25maWc6MjY6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvcWlfbGI2MF9kZWZjb25maWctMjctQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9yYjUzMl9kZWZjb25maWc9MzA9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnOjMxOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JiNTMyX2RlZmNvbmZpZy0zMi1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3JzOTBfZGVmY29uZmlnPTQ3PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JzOTBfZGVmY29uZmlnOjQ4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JzOTBfZGVmY29uZmlnLTQ5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZz0zMT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnOjMyOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3J0MzA1eF9kZWZjb25maWctMzMtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZz0zMz1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZzozNDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZy0zNS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnPTQ2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnOjQ3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnLTQ4LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc9NDI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc6NDM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWctNDQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZz02MD1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZzo2MTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy02Mi1DT05GSUdfSVBfUElNU01fVjE9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz04Nj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjg3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctODgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTM4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMzk6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTE0MC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMjk9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjEzMDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTMxLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWc9MzI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWc6MzM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWctMzQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZzozMzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnPTMzPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnOjM0OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnLTM1LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3RpdGFuX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWctMzQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnPTY2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6Njc6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02OC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZz02Nz1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6Njg6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTY5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9jb21tb25fZGVmY29uZmlnPTE2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZzoxNzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWctMTgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5pbmNsdWRlL25ldC9pcF9maWIuaD0xNjY9dm9pZCBfX25ldF9leGl0IGZpYjRfc2VtYW50aWNzX2V4aXQoc3RydWN0IG5ldCAqbmV0KTtcXG5pbmNsdWRlL25ldC9pcF9maWIuaC0xNjctXFxuaW5jbHVkZS9uZXQvaXBfZmliLmg6MTY4OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxuaW5jbHVkZS9uZXQvaXBfZmliLmgtMTY5LXN0cnVjdCBmaWJfcnVsZTtcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTE4Nz1zdHJ1Y3QgZmliX3Jlc3VsdF9ubCB7XFxuLS1cXG5pbmNsdWRlL25ldC9pcF9maWIuaC0yMDEtXFxuaW5jbHVkZS9uZXQvaXBfZmliLmg6MjAyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxuaW5jbHVkZS9uZXQvaXBfZmliLmgtMjAzLSNkZWZpbmUgRklCX1RBQkxFX0hBU0hTWiAyNTZcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTI4OT12b2lkIGZpYl9mcmVlX3RhYmxlKHN0cnVjdCBmaWJfdGFibGUgKnRiKTtcXG5pbmNsdWRlL25ldC9pcF9maWIuaC0yOTAtXFxuaW5jbHVkZS9uZXQvaXBfZmliLmg6MjkxOiNpZm5kZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTI5Mi1cXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTM1Nz1zdGF0aWMgaW5saW5lIGJvb2wgZmliNF9ydWxlc19lYXJseV9mbG93X2Rpc3NlY3Qoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxuaW5jbHVkZS9uZXQvaXBfZmliLmgtMzYzLX1cXG5pbmNsdWRlL25ldC9pcF9maWIuaDozNjQ6I2Vsc2UgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTM2NS1pbnQgX19uZXRfaW5pdCBmaWI0X3J1bGVzX2luaXQoc3RydWN0IG5ldCAqbmV0KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTQxNz1zdGF0aWMgaW5saW5lIGJvb2wgZmliNF9ydWxlc19lYXJseV9mbG93X2Rpc3NlY3Qoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxuaW5jbHVkZS9uZXQvaXBfZmliLmgtNDM3LVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjQzODojZW5kaWYgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTQzOS1cXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTU5OD1zdGF0aWMgaW5saW5lIHZvaWQgZmliX2NvbWJpbmVfaXRhZyh1MzIgKml0YWcsIGNvbnN0IHN0cnVjdCBmaWJfcmVzdWx0ICpyZXMpXFxuLS1cXG5pbmNsdWRlL25ldC9pcF9maWIuaC02MDEtXFx0c3RydWN0IGZpYl9uaF9jb21tb24gKm5oYyA9IHJlcy1cXHUwMDNlbmhjO1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjYwMjojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTYwMy1cXHR1MzIgcnRhZztcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTYxMy1cXG5pbmNsdWRlL25ldC9pcF9maWIuaDo2MTQ6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcXG5pbmNsdWRlL25ldC9pcF9maWIuaC02MTUtXFx0cnRhZyA9IHJlcy1cXHUwMDNldGNsYXNzaWQ7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0Lmg9NTU9c3RydWN0IG5ldG5zX2lwdjQge1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTExNi1cXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRyYV9tdXRleDtcXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0Lmg6MTE3OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTExOC1cXHRzdHJ1Y3QgZmliX3J1bGVzX29wc1xcdCpydWxlc19vcHM7XFxuLS1cXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yMC0jaWYgZGVmaW5lZChDT05GSUdfSVBWNikgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMpXFxubmV0L2NvcmUvZmliX3J1bGVzLmM6MjE6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yMi0jZGVmaW5lIElORElSRUNUX0NBTExfTVQoZiwgZjIsIGYxLCAuLi4pIFxcXFxcXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTI2LSNlbmRpZlxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjI3OiNlbGlmIGRlZmluZWQoQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUylcXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yOC0jZGVmaW5lIElORElSRUNUX0NBTExfTVQoZiwgZjIsIGYxLCAuLi4pIElORElSRUNUX0NBTExfMShmLCBmMSwgX19WQV9BUkdTX18pXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfUFJPQ19GUykgKz0gcHJvYy5vXFxubmV0L2lwdjQvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUykgKz0gZmliX3J1bGVzLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0yMy1vYmotJChDT05GSUdfSVBfTVJPVVRFKSArPSBpcG1yLm9cXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUwLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjUxOiNpZm5kZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUyLVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTI5PXN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTEtfVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MjojZW5kaWYgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1My1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTQ9c3RhdGljIHZvaWQgZmliX3JlcGxhY2VfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliX3RhYmxlICpvbGQsXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTYte1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1NzojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1OC1cXHRzd2l0Y2ggKG5ldy1cXHUwMDNldGJfaWQpIHtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2MTA9c3RhdGljIHZvaWQgaXBfZmliX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2MTQtXFx0QVNTRVJUX1JUTkxfTkVUKG5ldCk7XFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTYxNTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2MTYtXFx0UkNVX0lOSVRfUE9JTlRFUihuZXQtXFx1MDAzZWlwdjQuZmliX21haW4sIE5VTEwpO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTYzNz1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2NzAtXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTY3MTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2NzItXFx0ZmliNF9ydWxlc19leGl0KG5ldCk7XFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNjkxPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjkyLXtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjkzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5NC1cXHRmaWI0X3J1bGVzX2V4aXQobmV0KTtcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9MTU4ND1zdGF0aWMgdm9pZCBydF9zZXRfbmV4dGhvcChzdHJ1Y3QgcnRhYmxlICpydCwgX19iZTMyIGRhZGRyLFxcbi0tXFxubmV0L2lwdjQvcm91dGUuYy0xNjM1LSNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9pcHY0L3JvdXRlLmM6MTYzNjojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L3JvdXRlLmMtMTYzNy1cXHRzZXRfY2xhc3NfdGFnKHJ0LCByZXMtXFx1MDAzZXRjbGFzc2lkKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND03Mj1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6NzM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTc0LUNPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUw9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTQwPUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbDo0MTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtNDItQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ9MzU9Q09ORklHX0lQX01VTFRJQ0FTVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjM2OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NC0zNy1DT05GSUdfSlVNUF9MQUJFTD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTU3PUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6NTg6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC01OS1DT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTEwOD1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDoxMDk6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTEwLUNPTkZJR19JUF9QSU1TTV9WMT15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbj05NT1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjo5NjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbi05Ny1DT05GSUdfSVBfTkZfRklMVEVSPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc9NT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnOjY6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL2NvbmZpZy03LUNPTkZJR19JUF9ORl9GSUxURVI9bVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZz0zMT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy93aXJlZ3VhcmQvcWVtdS9rZXJuZWwuY29uZmlnOjMyOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3dpcmVndWFyZC9xZW11L2tlcm5lbC5jb25maWctMzMtQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTk6NTA6MTguNTIwNTYzNzE1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4MTg5NTQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgYXMgaWYgSSdtIGRpcmVjdGx5IGV4cGVyaWVuY2luZyBpdDpcblxuKipFeGFtaW5pbmcgYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGZvY3VzLiBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciByb3V0aW5nLiBTcGVjaWZpY2FsbHksIEknbSBhbHJlYWR5IGVudmlzaW9uaW5nIHRoZSByb3V0aW5nIHRhYmxlIGluZnJhc3RydWN0dXJlIGFuZCBob3cgZW5hYmxpbmcgdGhpcyBvcHRpb24gY2hhbmdlcyB0aGluZ3Mgd2l0aGluIHRoZSBJUHY2IGNvbnRleHQuIElzIHRoaXMgYWJvdXQgcG9saWN5IHJvdXRpbmc/IFRyYWZmaWMgbWFuYWdlbWVudD8gVGhlIGFiaWxpdHkgdG8gc2VncmVnYXRlIHRyYWZmaWMgYmFzZWQgb24gZGlmZmVyZW50IHNvdXJjZSBvciBkZXN0aW5hdGlvbiBhZGRyZXNzIHByZWZpeGVzPyBJJ20gcGljdHVyaW5nIHRoZSBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIOKAkyB0aGUgcm91dGUgdGFibGVzLCB0aGUgRklCIChGb3J3YXJkaW5nIEluZm9ybWF0aW9uIEJhc2UpIGxvb2t1cHMsIHRoZSBpbnRlcmZhY2UgY29uZmlndXJhdGlvbnMuIEknbSB3b25kZXJpbmcgaWYgdGhpcyBpcyBhIHJlY2VudCBhZGRpdGlvbiwgb3IgYSBsb25nLXN0YW5kaW5nIGZlYXR1cmUgdGhhdCdzIGZpbmFsbHkgZ2V0dGluZyBzb21lIG1vcmUgYXR0ZW50aW9uLiBXaGF0IGFyZSB0aGUgY29tbW9uIHVzZSBjYXNlcyB3aGVyZSBtdWx0aXBsZSBJUHY2IHJvdXRpbmcgdGFibGVzIGJlY29tZSBlc3NlbnRpYWw/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbmV0d29yayBuYW1lc3BhY2VzLCBvciBwZXJoYXBzIHNvcGhpc3RpY2F0ZWQgdHJhZmZpYyBlbmdpbmVlcmluZyBzY2VuYXJpb3M/IEkgbmVlZCB0byBxdWlja2x5IHNjYW4gdGhlIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgZGVwZW5kZW5jaWVzIG9yIGNhdmVhdHMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHRpZWQgdG8gdGhpcyBvbmUsIGltcGFjdGluZyBpdHMgZnVuY3Rpb25hbGl0eT8gQW5kIHdoYXQgaXMgdGhlIHBlcmZvcm1hbmNlIGltcGFjdD8gVGhpcyBjb3VsZCBzaWduaWZpY2FudGx5IGFmZmVjdCB0aGUgb3ZlcmFsbCBwYWNrZXQgZm9yd2FyZGluZyByYXRlLiBPa2F5LCB0aW1lIHRvIHNlZSBpZiB0aGUgc291cmNlIGNvZGUgY29tbWVudHMgZ2l2ZSBtZSBhbnkgbW9yZSBpbnNpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ4NCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE5OjUwOjIzLjYwMjQ2MTA4OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc1NjYwMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc9NTA9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy01MS0jIENPTkZJR19JUFY2X1NJVCBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjUyOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnLTUzLUNPTkZJR19ORVRGSUxURVI9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTYxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctNjItIyBDT05GSUdfSVBWNl9TSVQgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo2MzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy02NC1DT05GSUdfTkVURklMVEVSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTY4PUNPTkZJR19JUFY2X1NJVD1tXFxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc6Njk6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZy03MC1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZz0xNTA9Q09ORklHX0lQVjZfVFVOTkVMPW1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoxNTE6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0xNTItQ09ORklHX05FVF9EU0E9bVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy90ZWdyYV9kZWZjb25maWc9NTI9Q09ORklHX0lQVjZfVFVOTkVMPXlcXG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZzo1MzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvdGVncmFfZGVmY29uZmlnLTU0LUNPTkZJR19DQU49eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xNTg9Q09ORklHX0lORVQ2X0lQQ09NUD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxNTk6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTE2MC1DT05GSUdfSVBWNl9NUk9VVEU9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xNzQ9Q09ORklHX0lORVQ2X0lQQ09NUD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxNzU6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE3Ni1DT05GSUdfSVBWNl9NUk9VVEU9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWc9MjM9Q09ORklHX1RDUF9DT05HX0FEVkFOQ0VEPXlcXG5hcmNoL21pcHMvY29uZmlncy9iY200N3h4X2RlZmNvbmZpZzoyNDpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2JjbTQ3eHhfZGVmY29uZmlnLTI1LUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWc9NjA9Q09ORklHX0lQVjZfVFVOTkVMPW1cXG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnOjYxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZy02Mi1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnPTYzPUNPTkZJR19JUFY2X0dSRT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzo2NDpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWctNjUtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc9NDU9Q09ORklHX0lQVjZfTUlQNj1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc6NDY6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZy00Ny1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZz00MT1DT05GSUdfSVBWNl9NSVA2PW1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZzo0MjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTQzLUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZz00MD1DT05GSUdfSVBWNl9NSVA2PW1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX3I0a19kZWZjb25maWc6NDE6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX3I0a19kZWZjb25maWctNDItQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9NDY9Q09ORklHX0lQVjZfVFVOTkVMPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo0NzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTQ4LUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTQ1PUNPTkZJR19JUFY2X1RVTk5FTD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6NDY6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy00Ny1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz00NT1DT05GSUdfSVBWNl9UVU5ORUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjQ2OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctNDctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnPTUwPUNPTkZJR19JUFY2X1RVTk5FTD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjUxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnLTUyLUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0zOD1DT05GSUdfSVBWNl9UVU5ORUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzozOTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZy00MC1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTExNT1DT05GSUdfSVBWNl9UVU5ORUw9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MTE2OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0xMTctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTE3Mz1DT05GSUdfSVBWNl9HUkU9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxNzQ6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTc1LUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xNjQ9Q09ORklHX0lQVjZfR1JFPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTY1OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE2Ni1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMjQtXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oOjI1OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMjYtI2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAyNTZcXG4tLVxcbmluY2x1ZGUvbmV0L2lwNl9maWIuaD0zOTE9c3RydWN0IGZpYjZfdGFibGUge1xcbi0tXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTQwOC1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6NDA5OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtNDEwLSNkZWZpbmUgRklCNl9UQUJMRV9NSU5cXHRcXHQxXFxuLS1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmg9NjYwPXN0YXRpYyBpbmxpbmUgc3RydWN0IHJ0Nl9pbmZvICpwb2xfbG9va3VwX2Z1bmMocG9sX2xvb2t1cF90IGxvb2t1cCxcXG4tLVxcbmluY2x1ZGUvbmV0L2lwNl9maWIuaC02NzQtXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oOjY3NTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTY3Ni1zdGF0aWMgaW5saW5lIGJvb2wgZmliNl9oYXNfY3VzdG9tX3J1bGVzKGNvbnN0IHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjYuaD02Nj1zdHJ1Y3QgbmV0bnNfaXB2NiB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy9pcHY2LmgtODctXFx0dW5zaWduZWQgY2hhclxcdFxcdGZsb3dsYWJlbF9oYXNfZXhjbDtcXG5pbmNsdWRlL25ldC9uZXRucy9pcHY2Lmg6ODg6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjYuaC04OS1cXHRib29sXFx0XFx0XFx0ZmliNl9oYXNfY3VzdG9tX3J1bGVzO1xcbi0tXFxubmV0L2NvcmUvZmliX3J1bGVzLmMtMTktXFxubmV0L2NvcmUvZmliX3J1bGVzLmM6MjA6I2lmIGRlZmluZWQoQ09ORklHX0lQVjYpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTKVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTIxLSNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZT0yMD1pcHY2LSQoQ09ORklHX05FVEZJTFRFUikgKz0gbmV0ZmlsdGVyLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyMTppcHY2LSQoQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTKSArPSBmaWI2X3J1bGVzLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS0yMi1pcHY2LSQoQ09ORklHX1BST0NfRlMpICs9IHByb2Mub1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTIxMz1zdGF0aWMgdm9pZCBmaWI2X2xpbmtfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl90YWJsZSAqdGIpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjMwLVxcbm5ldC9pcHY2L2lwNl9maWIuYzoyMzE6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yMzItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjQ2Mj1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUwNC1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjUwNTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1MDYtXFx0bmV0LVxcdTAwM2VpcHY2LmZpYjZfbG9jYWxfdGJsID0ga3phbGxvY19vYmooKm5ldC1cXHUwMDNlaXB2Ni5maWI2X2xvY2FsX3RibCk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUyMC1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjUyMTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1MjItb3V0X2ZpYjZfbWFpbl90Ymw6XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTI5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0Nl9pbmZvIGlwNl9udWxsX2VudHJ5X3RlbXBsYXRlID0ge1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYy0zMDQtXFxubmV0L2lwdjYvcm91dGUuYzozMDU6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L3JvdXRlLmMtMzA2LVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz02NDgyPXN0YXRpYyBpbnQgaXA2X3JvdXRlX2Rldl9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NDk0LVxcdFxcdG5ldC1cXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeS1cXHUwMDNlcnQ2aV9pZGV2ID0gaW42X2Rldl9nZXQoZGV2KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjY0OTU6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L3JvdXRlLmMtNjQ5Ni1cXHRcXHRuZXQtXFx1MDAzZWlwdjYuaXA2X3Byb2hpYml0X2VudHJ5LVxcdTAwM2Vkc3QuZGV2ID0gZGV2O1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NTA2LVxcdFxcdGluNl9kZXZfcHV0X2NsZWFyKFxcdTAwMjZuZXQtXFx1MDAzZWlwdjYuaXA2X251bGxfZW50cnktXFx1MDAzZXJ0NmlfaWRldik7XFxubmV0L2lwdjYvcm91dGUuYzo2NTA3OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9yb3V0ZS5jLTY1MDgtXFx0XFx0aW42X2Rldl9wdXRfY2xlYXIoXFx1MDAyNm5ldC1cXHUwMDNlaXB2Ni5pcDZfcHJvaGliaXRfZW50cnktXFx1MDAzZXJ0NmlfaWRldik7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTY2NzY9c3RhdGljIGludCBfX25ldF9pbml0IGlwNl9yb3V0ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3MDEtXFxubmV0L2lwdjYvcm91dGUuYzo2NzAyOiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3MDMtXFx0bmV0LVxcdTAwM2VpcHY2LmZpYjZfaGFzX2N1c3RvbV9ydWxlcyA9IGZhbHNlO1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NzQzLVxcbm5ldC9pcHY2L3JvdXRlLmM6Njc0NDojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvcm91dGUuYy02NzQ1LW91dF9pcDZfcHJvaGliaXRfZW50cnk6XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTY3NTg9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBpcDZfcm91dGVfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NzYxLVxcdGtmcmVlKG5ldC1cXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeSk7XFxubmV0L2lwdjYvcm91dGUuYzo2NzYyOiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3NjMtXFx0a2ZyZWUobmV0LVxcdTAwM2VpcHY2LmlwNl9wcm9oaWJpdF9lbnRyeSk7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTY4MzQ9dm9pZCBfX2luaXQgaXA2X3JvdXRlX2luaXRfc3BlY2lhbF9lbnRyaWVzKHZvaWQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTY4NDEtXFx0aW5pdF9uZXQuaXB2Ni5pcDZfbnVsbF9lbnRyeS1cXHUwMDNlcnQ2aV9pZGV2ID0gaW42X2Rldl9nZXQoaW5pdF9uZXQubG9vcGJhY2tfZGV2KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjY4NDI6ICAjaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvcm91dGUuYy02ODQzLVxcdGluaXRfbmV0LmlwdjYuaXA2X3Byb2hpYml0X2VudHJ5LVxcdTAwM2Vkc3QuZGV2ID0gaW5pdF9uZXQubG9vcGJhY2tfZGV2O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvdmlydGlvX25ldC9jb25maWc9Mz1DT05GSUdfSVBWNj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvdmlydGlvX25ldC9jb25maWc6NDpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQvY29uZmlnLTUtQ09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWc9NDQ9Q09ORklHX0lQVjZfTVJPVVRFPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjQ1OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZy00Ni1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZz0xND1DT05GSUdfSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWc6MTU6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWctMTYtQ09ORklHX0lQVjZfUElNU01fVjI9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL2NvbmZpZz0xMD1DT05GSUdfSVBWNj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL2NvbmZpZzoxMTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWctMTItQ09ORklHX0tBTExTWU1TPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnPTM1PUNPTkZJR19JUFY2PXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzozNjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnLTM3LUNPTkZJR19JUFY2X1RVTk5FTD1tXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGNwX2FvL2NvbmZpZz0xPUNPTkZJR19JUFY2PXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGNwX2FvL2NvbmZpZzoyOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWctMy1DT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZz0zMj1DT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy93aXJlZ3VhcmQvcWVtdS9rZXJuZWwuY29uZmlnOjMzOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZy0zNC1DT05GSUdfVFRZPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTk6NTA6MjUuNjc4MTI1ODc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5MTI4MDQ1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgU2VsZWN0aW9uIGZvciBGSUIgUnVsZSBhbmQgVGFibGUgTG9ja2luZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gYmVzdCBmdXp6IHRoaXMgcGF0Y2guIFRoZSBjb25maWdzIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUgYXJlIGBJUF9NVUxUSVBMRV9UQUJMRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCBzbyB3ZSdyZSBnb29kIHRoZXJlLiBUaGUgY29yZSBjaGFuZ2UgaXMgdG8gdGhlIGxvY2tpbmcgbWVjaGFuaXNtcyBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIG1vdmluZyBmcm9tIHRoZSBSVE5MIHRvIG1vcmUgZmluZS1ncmFpbmVkIGxvY2tpbmcgd2l0aCBtdXRleGVzIGFuZCBzcGlubG9ja3MuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgYW55dGhpbmcgdGhhdCBpbnRlcmFjdHMgd2l0aCByb3V0aW5nIHJ1bGVzIGFuZCB0YWJsZXMuXG5cbkkgbmVlZCB0byBmb2N1cyBvbiB0aGUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHRoZSBvbmVzIHdoZXJlIHRoZSBsb2NraW5nIGNoYW5nZXMgYXJlIGRpcmVjdGx5IGltcGxlbWVudGVkLiBJIGluaXRpYWxseSB0aG91Z2h0IHRvIGluY2x1ZGUgYGZpYl9nZXRfdGFibGVgLCBidXQgaG9sZCBvbi4gTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHdoZXRoZXIgaXQgaXMgY2FsbGVkIGluIGhvdCBwYXRocywgc2luY2UgdGhhdCB3b3VsZCBtYWtlIGl0IG1vcmUgZGlmZmljdWx0IHRvIGZ1enogZWZmZWN0aXZlbHkuIEFoLCB5ZXMsIGl0J3MgY2FsbGVkIGJ5IHRoZSBjb3JlIGxvb2t1cCBmdW5jdGlvbnMgbGlrZSBgZmliX2xvb2t1cGAgYW5kIGBpcF9yb3V0ZV9pbnB1dF9ub3JlZmAuIE5vdCBpZGVhbC4gTGV0J3MgZXhjbHVkZSB0aGF0IGZvciBub3cuXG5cblNvLCB0aGUgZm9jdXMgc3ltYm9scyBzaG91bGQgYmU6IGBmaWJfbmV3cnVsZWAsIGBmaWJfZGVscnVsZWAsIGBmaWJfbmV3X3RhYmxlYCwgYGZpYl9ydWxlc19ldmVudGAsIGBmaWI0X3J1bGVfY29uZmlndXJlYCwgYGZpYjRfcnVsZV9kZWxldGVgLCBgZmliNl9ydWxlX2NvbmZpZ3VyZWAsIGFuZCBgZmliNl9ydWxlX2RlbGV0ZWAuXG5cbk5vdywgbGV0J3MgdmVyaWZ5IHdoZXJlIHRob3NlIGFyZSBpbXBsZW1lbnRlZC4gYGZpYl9uZXdydWxlYCBhbmQgYGZpYl9kZWxydWxlYCBsaXZlIGluIGBuZXQvY29yZS9maWJfcnVsZXMuY2AuIGBmaWJfbmV3X3RhYmxlYCBpcyBpbiBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgLiBBbmQgYGZpYl9ydWxlc19ldmVudGAgaXMgYWxzbyBpbiBgbmV0L2NvcmUvZmliX3J1bGVzLmNgLlxuXG5Pa2F5LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYElQX01VTFRJUExFX1RBQkxFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYXJlIHRoZSBjb3JyZWN0IGNvbmZpZ3MsIHJpZ2h0PyBZZXAsIGNvbmZpcm1lZC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXIgbm93OiB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcsIHNvIHdlIHdhbnQgdG8gaGl0IHRoZSBuZXcgbG9ja2luZyBjb2RlIGRpcmVjdGx5LiBUaGUgcHJpbWFyeSB3YXkgdG8gdHJpZ2dlciB0aGlzIGlzIHRocm91Z2ggbmV0bGluayBtZXNzYWdlcyBsaWtlIGBSVE1fTkVXUlVMRWAgYW5kIGBSVE1fREVMUlVMRWAgb3IgdGhyb3VnaCBuZXRkZXYgZXZlbnRzLiBUaGVzZSB0cmlnZ2VyIHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zLCBzbyB0aG9zZSBhcmUgd2hhdCB3ZSB3YW50IHRvIGZ1enouXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgYGZpYjRfcnVsZV9kZWxldGVgIGFuZCBgZmliNl9ydWxlX2RlbGV0ZWAgYXJlIHN0YXRpYy4gWWVzLCB0aGV5IGFyZSBpbiB0aGUgcmVzcGVjdGl2ZSBmaWxlcyBgbmV0L2lwdjQvZmliX3J1bGVzLmNgIGFuZCBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYC4gTGV0J3MgYWxzbyBkb3VibGUgY2hlY2sgYGZpYl9uZXdydWxlYCBhbmQgYGZpYl9kZWxydWxlYC4gWWVwLCBleHBvcnRlZCBvciBqdXN0IGdsb2JhbC4gQW5kIGBmaWJfbmV3X3RhYmxlYCBpcyBhbHNvIGV4cG9ydGVkLiBGaW5hbGx5LCBgZmliX3J1bGVzX2V2ZW50YCBpcyBhbHNvIHN0YXRpYy5cblxuQWxyaWdodCwgbG9va3MgbGlrZSB3ZSBoYXZlIGEgc29saWQgdGFyZ2V0IGxpc3Q6IHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zIGltcGFjdGVkIGJ5IHRoZSBsb2NraW5nIGNoYW5nZXMuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwNjUsIk91dHB1dFRva2VucyI6MjEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE5OjUwOjM2LjU5MDkzMzA4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5MDQ2NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX01VTFRJUExFX1RBQkxFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWJfbmV3cnVsZVwiLFxuICAgIFwiZmliX2RlbHJ1bGVcIixcbiAgICBcImZpYl9uZXdfdGFibGVcIixcbiAgICBcImZpYl9ydWxlc19ldmVudFwiLFxuICAgIFwiZmliNF9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNF9ydWxlX2RlbGV0ZVwiLFxuICAgIFwiZmliNl9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNl9ydWxlX2RlbGV0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cXHUwMDNlbG9jayBhbmQgZmliX3RhYmxlX2hhc2hfbG9jaykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgUlRNX05FV1JVTEUsIFJUTV9ERUxSVUxFKSBhbmQgbmV0ZGV2IGV2ZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGxvY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX01VTFRJUExFX1RBQkxFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWJfbmV3cnVsZVwiLFxuICAgIFwiZmliX2RlbHJ1bGVcIixcbiAgICBcImZpYl9uZXdfdGFibGVcIixcbiAgICBcImZpYl9ydWxlc19ldmVudFwiLFxuICAgIFwiZmliNF9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNF9ydWxlX2RlbGV0ZVwiLFxuICAgIFwiZmliNl9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNl9ydWxlX2RlbGV0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cXHUwMDNlbG9jayBhbmQgZmliX3RhYmxlX2hhc2hfbG9jaykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgUlRNX05FV1JVTEUsIFJUTV9ERUxSVUxFKSBhbmQgbmV0ZGV2IGV2ZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGxvY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrbdhr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 19:41:51 +0000 UTC FinishedAt: 2026-06-29 19:50:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTIPLE_TABLES", "IPV6_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTIPLE_TABLES", "IPV6_MULTIPLE_TABLES" ], "series_id": "976a5565-78ae-4ce0-ad09-153164152e84" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "fib_newrule", "fib_delrule", "fib_new_table", "fib_rules_event", "fib4_rule_configure", "fib4_rule_delete", "fib6_rule_configure", "fib6_rule_delete" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE5OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtJUFY2X01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZpYl9uZXdydWxlJiMzNDssCiAgICAmIzM0O2ZpYl9kZWxydWxlJiMzNDssCiAgICAmIzM0O2ZpYl9uZXdfdGFibGUmIzM0OywKICAgICYjMzQ7ZmliX3J1bGVzX2V2ZW50JiMzNDssCiAgICAmIzM0O2ZpYjRfcnVsZV9jb25maWd1cmUmIzM0OywKICAgICYjMzQ7ZmliNF9ydWxlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtmaWI2X3J1bGVfY29uZmlndXJlJiMzNDssCiAgICAmIzM0O2ZpYjZfcnVsZV9kZWxldGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIGZvciBGSUIgcnVsZXMgYW5kIHRhYmxlcywgcmVwbGFjaW5nIFJUTkwgd2l0aCBmaW5lci1ncmFpbmVkIG11dGV4ZXMgYW5kIHNwaW5sb2NrcyAob3BzLVx1MDAzZWxvY2sgYW5kIGZpYl90YWJsZV9oYXNoX2xvY2spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFJUTV9ORVdSVUxFLCBSVE1fREVMUlVMRSkgYW5kIG5ldGRldiBldmVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byB1c2UgdGhlIG5ldyBsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM4NjUxOGM2MWNjNGM3ZGM0ZGFmZmQ3Y2MwOWEyMGRiOTkwNTIxNTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAxOTo1MDowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaCBiL2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oXG5pbmRleCA3ZGVlMGFlNjE2ZTMyMi4uYzZiOTQ3OTBmYTgxZWUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvZmliX3J1bGVzLmhcbkBAIC04Miw3ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgZmliX3J1bGVzX29wcyB7XG4gXHRcdFx0XHRcdCAgICAgc3RydWN0IGZpYl9ydWxlX2hkciAqLFxuIFx0XHRcdFx0XHQgICAgIHN0cnVjdCBubGF0dHIgKiosXG4gXHRcdFx0XHRcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqKTtcbi1cdGludFx0XHRcdCgqZGVsZXRlKShzdHJ1Y3QgZmliX3J1bGUgKik7XG4mIzQzO1x0dm9pZFx0XHRcdCgqZGVsZXRlKShzdHJ1Y3QgZmliX3J1bGUgKik7XG4gXHRpbnRcdFx0XHQoKmNvbXBhcmUpKHN0cnVjdCBmaWJfcnVsZSAqLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgZmliX3J1bGVfaGRyICosXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBubGF0dHIgKiopO1xuQEAgLTkzLDExICYjNDM7OTMsMTMgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMge1xuIFx0LyogQ2FsbGVkIGFmdGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJ1bGVzIHNldCwgbXVzdCBmbHVzaFxuIFx0ICogdGhlIHJvdXRlIGNhY2hlIGlmIG9uZSBleGlzdHMuICovXG4gXHR2b2lkXHRcdFx0KCpmbHVzaF9jYWNoZSkoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyk7XG4mIzQzO1x0Ym9vbFx0XHRcdCgqbmVlZF9ydG5sKShzdHJ1Y3QgbmV0ICpuZXQpO1xuIFxuIFx0aW50XHRcdFx0bmxncm91cDtcbiBcdHN0cnVjdCBsaXN0X2hlYWRcdHJ1bGVzX2xpc3Q7XG4gXHRzdHJ1Y3QgbW9kdWxlXHRcdCpvd25lcjtcbiBcdHN0cnVjdCBuZXRcdFx0KmZyb19uZXQ7XG4mIzQzO1x0c3RydWN0IG11dGV4XHRcdGxvY2s7XG4gXHRzdHJ1Y3QgcmN1X2hlYWRcdFx0cmN1O1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfZmliLmggYi9pbmNsdWRlL25ldC9pcF9maWIuaFxuaW5kZXggYzYzYTNjNDk2N2FlNjEuLjBhMzUzNTVmYjBmMzM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfZmliLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX2ZpYi5oXG5AQCAtMzAyLDcgJiM0MzszMDIsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXG4gXHRcdFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX0xPQ0FMX0lOREVYXSA6XG4gXHRcdFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX01BSU5fSU5ERVhdO1xuIFxuLVx0dGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcnRubChobGlzdF9maXJzdF9yY3UocHRyKSk7XG4mIzQzO1x0LyogT25seSBmaWI0X3J1bGVzX2luaXQoKSBhZGRzIGZpYl90YWJsZS4gKi9cbiYjNDM7XHR0Yl9obGlzdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoaGxpc3RfZmlyc3RfcmN1KHB0ciksIHRydWUpO1xuIFxuIFx0cmV0dXJuIGhsaXN0X2VudHJ5KHRiX2hsaXN0LCBzdHJ1Y3QgZmliX3RhYmxlLCB0Yl9obGlzdCk7XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaCBiL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaFxuaW5kZXggNmUyN2M1NjUxNGRmNTcuLjU5NTA2MzIwNTU4YTk5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmhcbkBAIC0xMjcsNiAmIzQzOzEyNyw3IEBAIHN0cnVjdCBuZXRuc19pcHY0IHtcbiBcdGF0b21pY190XHRcdGZpYl9udW1fdGNsYXNzaWRfdXNlcnM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZFx0KmZpYl90YWJsZV9oYXNoO1xuJiM0MztcdHNwaW5sb2NrX3RcdFx0ZmliX3RhYmxlX2hhc2hfbG9jaztcbiBcdHN0cnVjdCBzb2NrXHRcdCpmaWJubDtcbiBcdHN0cnVjdCBobGlzdF9oZWFkXHQqZmliX2luZm9faGFzaDtcbiBcdHVuc2lnbmVkIGludFx0XHRmaWJfaW5mb19oYXNoX2JpdHM7XG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmliX3J1bGVzLmMgYi9uZXQvY29yZS9maWJfcnVsZXMuY1xuaW5kZXggY2YzNzRjMjA4NzMyNTguLjIyZTVlNWUxYTljNDRmIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmliX3J1bGVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2ZpYl9ydWxlcy5jXG5AQCAtNTEsNyAmIzQzOzUxLDYgQEAgYm9vbCBmaWJfcnVsZV9tYXRjaGFsbChjb25zdCBzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdHJldHVybiB0cnVlO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZV9tYXRjaGFsbCk7XG4gXG4gaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4gXHRcdFx0IHUzMiBwcmVmLCB1MzIgdGFibGUpXG5AQCAtNzgsNyAmIzQzOzc3LDYgQEAgaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnItXHUwMDNlbGlzdCwgXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QpO1xuIFx0cmV0dXJuIDA7XG4gfVxuLUVYUE9SVF9TWU1CT0woZmliX2RlZmF1bHRfcnVsZV9hZGQpO1xuIFxuIHN0YXRpYyB1MzIgZmliX2RlZmF1bHRfcnVsZV9wcmVmKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMpXG4ge1xuQEAgLTE3Miw2ICYjNDM7MTcwLDcgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QpO1xuJiM0MztcdG11dGV4X2luaXQoXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0b3BzLVx1MDAzZWZyb19uZXQgPSBuZXQ7XG4gXG4gXHRlcnIgPSBfX2ZpYl9ydWxlc19yZWdpc3RlcihvcHMpO1xuQEAgLTE4Miw3ICYjNDM7MTgxLDYgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpXG4gXG4gXHRyZXR1cm4gb3BzO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfcmVnaXN0ZXIpO1xuIFxuIHN0YXRpYyB2b2lkIGZpYl9ydWxlc19jbGVhbnVwX29wcyhzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKVxuIHtcbkBAIC0yMDcsNyAmIzQzOzIwNSw2IEBAIHZvaWQgZmliX3J1bGVzX3VucmVnaXN0ZXIoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcylcbiBcdGZpYl9ydWxlc19jbGVhbnVwX29wcyhvcHMpO1xuIFx0a2ZyZWVfcmN1KG9wcywgcmN1KTtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX3VucmVnaXN0ZXIpO1xuIFxuIHN0YXRpYyBpbnQgdWlkX3JhbmdlX3NldChzdHJ1Y3QgZmliX2t1aWRfcmFuZ2UgKnJhbmdlKVxuIHtcbkBAIC0zNjMsNyAmIzQzOzM2MCw2IEBAIGludCBmaWJfcnVsZXNfbG9va3VwKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsIHN0cnVjdCBmbG93aSAqZmwsXG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfbG9va3VwKTtcbiBcbiBzdGF0aWMgaW50IGNhbGxfZmliX3J1bGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiBcdFx0XHRcdCAgZW51bSBmaWJfZXZlbnRfdHlwZSBldmVudF90eXBlLFxuQEAgLTM5MSw3ICYjNDM7Mzg3LDcgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9ydWxlX25vdGlmaWVycyhzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdC5ydWxlID0gcnVsZSxcbiBcdH07XG4gXG4tXHRBU1NFUlRfUlROTF9ORVQobmV0KTtcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbiBcdC8qIFBhaXJlZCB3aXRoIFJFQURfT05DRSgpIGluIGZpYl9ydWxlc19zZXEoKSAqL1xuIFx0V1JJVEVfT05DRShvcHMtXHUwMDNlZmliX3J1bGVzX3NlcSwgb3BzLVx1MDAzZWZpYl9ydWxlc19zZXEgJiM0MzsgMSk7XG5AQCAtNDIzLDcgJiM0Mzs0MTksNiBAQCBpbnQgZmliX3J1bGVzX2R1bXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCBpbnQgZmFtaWx5LFxuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2R1bXApO1xuIFxuIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KVxuIHtcbkBAIC00MzksNyAmIzQzOzQzNCw2IEBAIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KVxuIFxuIFx0cmV0dXJuIGZpYl9ydWxlc19zZXE7XG4gfVxuLUVYUE9SVF9TWU1CT0xfR1BMKGZpYl9ydWxlc19zZXFfcmVhZCk7XG4gXG4gc3RhdGljIHN0cnVjdCBmaWJfcnVsZSAqcnVsZV9maW5kKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4gXHRcdFx0XHQgIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCxcbkBAIC03NDAsMTAgJiM0Mzs3MzQsMTAgQEAgc3RhdGljIGludCBmaWJfbmwycnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tc3RhdGljIGludCBmaWJfbmwycnVsZV9ydG5sKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuLVx0XHRcdCAgICBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxuLVx0XHRcdCAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLVx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3N0YXRpYyBpbnQgZmliX25sMnJ1bGVfbG9ja2VkKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuIFx0aWYgKCF0YltGUkFfUFJJT1JJVFldKVxuIFx0XHRubHJ1bGUtXHUwMDNlcHJlZiA9IGZpYl9kZWZhdWx0X3J1bGVfcHJlZihvcHMpO1xuQEAgLTc1NCwxMiAmIzQzOzc0OCwxNCBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuJiM0MztcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XG4gXHRpZiAodGJbRlJBX0lJRk5BTUVdKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG4tXHRcdGRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS1cdTAwM2Vmcl9uZXQsIG5scnVsZS1cdTAwM2VpaWZuYW1lKTtcbiYjNDM7XHRcdGRldiA9IGRldl9nZXRfYnlfbmFtZV9yY3UobmxydWxlLVx1MDAzZWZyX25ldCwgbmxydWxlLVx1MDAzZWlpZm5hbWUpO1xuIFx0XHRpZiAoZGV2KSB7XG4tXHRcdFx0bmxydWxlLVx1MDAzZWlpZmluZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4mIzQzO1x0XHRcdG5scnVsZS1cdTAwM2VpaWZpbmRleCA9IFJFQURfT05DRShkZXYtXHUwMDNlaWZpbmRleCk7XG4gXHRcdFx0bmxydWxlLVx1MDAzZWlpZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTtcbiBcdFx0fVxuIFx0fVxuQEAgLTc2NywxMyAmIzQzOzc2MywxNSBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXG4gXHRpZiAodGJbRlJBX09JRk5BTUVdKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG4tXHRcdGRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS1cdTAwM2Vmcl9uZXQsIG5scnVsZS1cdTAwM2VvaWZuYW1lKTtcbiYjNDM7XHRcdGRldiA9IGRldl9nZXRfYnlfbmFtZV9yY3UobmxydWxlLVx1MDAzZWZyX25ldCwgbmxydWxlLVx1MDAzZW9pZm5hbWUpO1xuIFx0XHRpZiAoZGV2KSB7XG4tXHRcdFx0bmxydWxlLVx1MDAzZW9pZmluZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4mIzQzO1x0XHRcdG5scnVsZS1cdTAwM2VvaWZpbmRleCA9IFJFQURfT05DRShkZXYtXHUwMDNlaWZpbmRleCk7XG4gXHRcdFx0bmxydWxlLVx1MDAzZW9pZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTtcbiBcdFx0fVxuIFx0fVxuIFxuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC04ODMsNiAmIzQzOzg4MSw3IEBAIGludCBmaWJfbmV3cnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0c3RydWN0IG5sYXR0ciAqdGJbRlJBX01BWCAmIzQzOyAxXTtcbiBcdGJvb2wgdXNlcl9wcmlvcml0eSA9IGZhbHNlO1xuIFx0c3RydWN0IGZpYl9ydWxlX2hkciAqZnJoO1xuJiM0MztcdGJvb2wgdW5sb2NrX3J0bmwgPSBmYWxzZTtcbiBcbiBcdGZyaCA9IG5sbXNnX3BheWxvYWQobmxoLCBzaXplb2YoKmZyaCkpO1xuIFx0aWYgKCFmcmgpIHtcbkBAIC05MDgsMTAgJiM0Mzs5MDcsMTMgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycm91dDtcbiBcbi1cdGlmICghcnRubF9oZWxkKVxuJiM0MztcdGlmICghcnRubF9oZWxkIFx1MDAyNlx1MDAyNiBvcHMtXHUwMDNlbmVlZF9ydG5sIFx1MDAyNlx1MDAyNiBvcHMtXHUwMDNlbmVlZF9ydG5sKG5ldCkpIHtcbiYjNDM7XHRcdHVubG9ja19ydG5sID0gdHJ1ZTtcbiBcdFx0cnRubF9uZXRfbG9jayhuZXQpO1xuJiM0MztcdH1cbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbi1cdGVyciA9IGZpYl9ubDJydWxlX3J0bmwocnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcbiYjNDM7XHRlcnIgPSBmaWJfbmwycnVsZV9sb2NrZWQocnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyb3V0X2ZyZWU7XG4gXG5AQCAtOTU5LDcgJiM0Mzs5NjEsNyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyLCBcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgbGlzdCkge1xuIFx0XHRcdGlmIChyLVx1MDAzZWFjdGlvbiA9PSBGUl9BQ1RfR09UTyBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgci1cdTAwM2V0YXJnZXQgPT0gcnVsZS1cdTAwM2VwcmVmIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBydG5sX2RlcmVmZXJlbmNlKHItXHUwMDNlY3RhcmdldCkgPT0gTlVMTCkge1xuJiM0MztcdFx0XHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihyLVx1MDAzZWN0YXJnZXQpKSB7XG4gXHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoci1cdTAwM2VjdGFyZ2V0LCBydWxlKTtcbiBcdFx0XHRcdGlmICgtLW9wcy1cdTAwM2V1bnJlc29sdmVkX3J1bGVzID09IDApXG4gXHRcdFx0XHRcdGJyZWFrO1xuQEAgLTk3OCw3ICYjNDM7OTgwLDggQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXG4gXHRmaWJfcnVsZV9nZXQocnVsZSk7XG4gXG4tXHRpZiAoIXJ0bmxfaGVsZClcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuJiM0MztcdGlmICh1bmxvY2tfcnRubClcbiBcdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4gXG4gXHRub3RpZnlfcnVsZV9jaGFuZ2UoUlRNX05FV1JVTEUsIHJ1bGUsIG9wcywgbmxoLCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcbkBAIC05ODgsNyAmIzQzOzk5MSw4IEBAIGludCBmaWJfbmV3cnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyb3V0X2ZyZWU6XG4tXHRpZiAoIXJ0bmxfaGVsZClcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuJiM0MztcdGlmICh1bmxvY2tfcnRubClcbiBcdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4gXHRrZnJlZShydWxlKTtcbiBlcnJvdXQ6XG5AQCAtMTAzNywxMCAmIzQzOzEwNDEsOSBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyb3V0O1xuIFxuLVx0aWYgKCFydG5sX2hlbGQpXG4tXHRcdHJ0bmxfbmV0X2xvY2sobmV0KTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbi1cdGVyciA9IGZpYl9ubDJydWxlX3J0bmwobmxydWxlLCBvcHMsIHRiLCBleHRhY2spO1xuJiM0MztcdGVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChubHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycm91dF9mcmVlO1xuIFxuQEAgLTEwNTUsMTEgJiM0MzsxMDU4LDggQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRcdGdvdG8gZXJyb3V0X2ZyZWU7XG4gXHR9XG4gXG4tXHRpZiAob3BzLVx1MDAzZWRlbGV0ZSkge1xuLVx0XHRlcnIgPSBvcHMtXHUwMDNlZGVsZXRlKHJ1bGUpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gZXJyb3V0X2ZyZWU7XG4tXHR9XG4mIzQzO1x0aWYgKG9wcy1cdTAwM2VkZWxldGUpXG4mIzQzO1x0XHRvcHMtXHUwMDNlZGVsZXRlKHJ1bGUpO1xuIFxuIFx0aWYgKHJ1bGUtXHUwMDNldHVuX2lkKVxuIFx0XHRpcF90dW5uZWxfdW5uZWVkX21ldGFkYXRhKCk7XG5AQCAtMTA2OCw3ICYjNDM7MTA2OCw3IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFxuIFx0aWYgKHJ1bGUtXHUwMDNlYWN0aW9uID09IEZSX0FDVF9HT1RPKSB7XG4gXHRcdG9wcy1cdTAwM2Vucl9nb3RvX3J1bGVzLS07XG4tXHRcdGlmIChydG5sX2RlcmVmZXJlbmNlKHJ1bGUtXHUwMDNlY3RhcmdldCkgPT0gTlVMTClcbiYjNDM7XHRcdGlmICghcmN1X2FjY2Vzc19wb2ludGVyKHJ1bGUtXHUwMDNlY3RhcmdldCkpXG4gXHRcdFx0b3BzLVx1MDAzZXVucmVzb2x2ZWRfcnVsZXMtLTtcbiBcdH1cbiBcbkBAIC0xMDg2LDcgJiM0MzsxMDg2LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRcdGlmIChcdTAwMjZuLVx1MDAzZWxpc3QgPT0gXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QgfHwgbi1cdTAwM2VwcmVmICE9IHJ1bGUtXHUwMDNlcHJlZilcbiBcdFx0XHRuID0gTlVMTDtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyLCBcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgbGlzdCkge1xuLVx0XHRcdGlmIChydG5sX2RlcmVmZXJlbmNlKHItXHUwMDNlY3RhcmdldCkgIT0gcnVsZSlcbiYjNDM7XHRcdFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihyLVx1MDAzZWN0YXJnZXQpICE9IHJ1bGUpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoci1cdTAwM2VjdGFyZ2V0LCBuKTtcbiBcdFx0XHRpZiAoIW4pXG5AQCAtMTA5Niw4ICYjNDM7MTA5Niw3IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFxuIFx0Y2FsbF9maWJfcnVsZV9ub3RpZmllcnMobmV0LCBGSUJfRVZFTlRfUlVMRV9ERUwsIHJ1bGUsIG9wcywgTlVMTCk7XG4gXG4tXHRpZiAoIXJ0bmxfaGVsZClcbi1cdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbiBcdG5vdGlmeV9ydWxlX2NoYW5nZShSVE1fREVMUlVMRSwgcnVsZSwgb3BzLCBubGgsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xuIFx0ZmliX3J1bGVfcHV0KHJ1bGUpO1xuQEAgLTExMDcsOCAmIzQzOzExMDYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdHJldHVybiAwO1xuIFxuIGVycm91dF9mcmVlOlxuLVx0aWYgKCFydG5sX2hlbGQpXG4tXHRcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4gXHRrZnJlZShubHJ1bGUpO1xuIGVycm91dDpcbiBcdHJ1bGVzX29wc19wdXQob3BzKTtcbkBAIC0xNDAyLDI0ICYjNDM7MTQwMCwzMCBAQCBzdGF0aWMgaW50IGZpYl9ydWxlc19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGRldik7XG4gXHRzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzO1xuIFxuLVx0QVNTRVJUX1JUTkwoKTtcbi1cbiBcdHN3aXRjaCAoZXZlbnQpIHtcbiBcdGNhc2UgTkVUREVWX1JFR0lTVEVSOlxuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXHUwMDI2bmV0LVx1MDAzZXJ1bGVzX29wcywgbGlzdClcbiYjNDM7XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcdTAwMjZuZXQtXHUwMDNlcnVsZXNfb3BzLCBsaXN0KSB7XG4mIzQzO1x0XHRcdG11dGV4X2xvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0XHRcdGF0dGFjaF9ydWxlcyhcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgZGV2KTtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdH1cbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIE5FVERFVl9DSEFOR0VOQU1FOlxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXHUwMDI2bmV0LVx1MDAzZXJ1bGVzX29wcywgbGlzdCkge1xuJiM0MztcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRkZXRhY2hfcnVsZXMoXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XG4gXHRcdFx0YXR0YWNoX3J1bGVzKFx1MDAyNm9wcy1cdTAwM2VydWxlc19saXN0LCBkZXYpO1xuJiM0MztcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBORVRERVZfVU5SRUdJU1RFUjpcbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsIFx1MDAyNm5ldC1cdTAwM2VydWxlc19vcHMsIGxpc3QpXG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXHUwMDI2bmV0LVx1MDAzZXJ1bGVzX29wcywgbGlzdCkge1xuJiM0MztcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRkZXRhY2hfcnVsZXMoXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XG4mIzQzO1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHR9XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcbmluZGV4IDQyMjEyOTcwZDczNTQwLi41NGViNzI2OTUwOTNkYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xuQEAgLTc2LDcgJiM0Mzs3Niw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBmaWI0X3J1bGVzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFxuIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9uZXdfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXG4ge1xuLVx0c3RydWN0IGZpYl90YWJsZSAqdGIsICphbGlhcyA9IE5VTEw7XG4mIzQzO1x0c3RydWN0IGZpYl90YWJsZSAqdGIsICpuZXdfdGIsICphbGlhcyA9IE5VTEw7XG4gXHR1bnNpZ25lZCBpbnQgaDtcbiBcbiBcdGlmIChpZCA9PSAwKVxuQEAgLTg1LDE0ICYjNDM7ODUsMjcgQEAgc3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcbiBcdGlmICh0YilcbiBcdFx0cmV0dXJuIHRiO1xuIFxuJiM0MztcdGlmICghY2hlY2tfbmV0KG5ldCkpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4gXHRpZiAoaWQgPT0gUlRfVEFCTEVfTE9DQUwgXHUwMDI2XHUwMDI2ICFuZXQtXHUwMDNlaXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcylcbiBcdFx0YWxpYXMgPSBmaWJfbmV3X3RhYmxlKG5ldCwgUlRfVEFCTEVfTUFJTik7XG4gXG4tXHRpZiAoY2hlY2tfbmV0KG5ldCkpXG4tXHRcdHRiID0gZmliX3RyaWVfdGFibGUoaWQsIGFsaWFzKTtcbi1cdGlmICghdGIpXG4mIzQzO1x0bmV3X3RiID0gZmliX3RyaWVfdGFibGUoaWQsIGFsaWFzKTtcbiYjNDM7XHRpZiAoIW5ld190YilcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4mIzQzO1x0c3Bpbl9sb2NrKFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xuJiM0MztcbiYjNDM7XHR0YiA9IGZpYl9nZXRfdGFibGUobmV0LCBpZCk7XG4mIzQzO1x0aWYgKHRiKSB7XG4mIzQzO1x0XHRzcGluX3VubG9jayhcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaF9sb2NrKTtcbiYjNDM7XHRcdGZpYl9mcmVlX3RhYmxlKG5ld190Yik7XG4mIzQzO1x0XHRyZXR1cm4gdGI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR0YiA9IG5ld190YjtcbiYjNDM7XG4gXHRzd2l0Y2ggKGlkKSB7XG4gXHRjYXNlIFJUX1RBQkxFX01BSU46XG4gXHRcdHJjdV9hc3NpZ25fcG9pbnRlcihuZXQtXHUwMDNlaXB2NC5maWJfbWFpbiwgdGIpO1xuQEAgLTEwNiwyOCAmIzQzOzExOSwzNSBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuIFxuIFx0aCA9IGlkIFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xuIFx0aGxpc3RfYWRkX2hlYWRfcmN1KFx1MDAyNnRiLVx1MDAzZXRiX2hsaXN0LCBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXSk7XG4mIzQzO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xuJiM0MztcbiBcdHJldHVybiB0YjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZmliX25ld190YWJsZSk7XG4gXG4tLyogY2FsbGVyIG11c3QgaG9sZCBlaXRoZXIgcnRubCBvciByY3UgcmVhZCBsb2NrICovXG4gc3RydWN0IGZpYl90YWJsZSAqZmliX2dldF90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcbiB7XG4tXHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcbiYjNDM7XHRzdHJ1Y3QgZmliX3RhYmxlICp0YiA9IE5VTEw7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDtcbiBcdHVuc2lnbmVkIGludCBoO1xuIFxuIFx0aWYgKGlkID09IDApXG4gXHRcdGlkID0gUlRfVEFCTEVfTUFJTjtcbiBcdGggPSBpZCBcdTAwMjYgKEZJQl9UQUJMRV9IQVNIU1ogLSAxKTtcbi1cbiBcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QsXG4tXHRcdFx0XHQgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSkge1xuJiM0MztcbiYjNDM7XHQvKiBmaWJfdGFibGUgaXMgbm90IGRlc3Ryb3llZCB1bnRpbCBpcF9maWJfbmV0X2V4aXQoKVxuJiM0MztcdCAqIGV4Y2VwdCBmb3IgdGhlIG1lcmdlZCBtYWluL2xvY2FsIHRhYmxlLlxuJiM0MztcdCAqIGZpYl91bm1lcmdlKCkgaXMgY2FsbGVkIHVuZGVyIFJUTkwsIHNvIG90aGVyIHJlYWRlcnNcbiYjNDM7XHQgKiB1bmRlciBSVE5MIChlLmcuIGZpYl9mbHVzaCgpLCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKCkpXG4mIzQzO1x0ICogY2FuIHNhZmVseSB0cmF2ZXJzZSB0aGUgbGlzdCB3aXRoIHJjdV9kZXJlZmVyZW5jZV9yYXcoKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKVxuIFx0XHRpZiAodGItXHUwMDNldGJfaWQgPT0gaWQpXG4tXHRcdFx0cmV0dXJuIHRiO1xuLVx0fVxuLVx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdGI7XG4gfVxuICNlbmRpZiAvKiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTICovXG4gXG5AQCAtMTkwLDEwICYjNDM7MjEwLDkgQEAgdm9pZCBmaWJfZmx1c2goc3RydWN0IG5ldCAqbmV0KVxuIFxuIFx0Zm9yIChoID0gMDsgaCBcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi1cdFx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcbiBcdFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XG4gXG4tXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGIsIHRtcCwgaGVhZCwgdGJfaGxpc3QpXG4mIzQzO1x0XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKVxuIFx0XHRcdGZsdXNoZWQgJiM0Mzs9IGZpYl90YWJsZV9mbHVzaChuZXQsIHRiLCBmYWxzZSk7XG4gXHR9XG4gXG5AQCAtMTU2NSw2ICYjNDM7MTU4NCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0bmV0LVx1MDAzZWlwdjQuc3lzY3RsX2ZpYl9tdWx0aXBhdGhfaGFzaF9maWVsZHMgPVxuIFx0XHRGSUJfTVVMVElQQVRIX0hBU0hfRklFTERfREVGQVVMVF9NQVNLO1xuICNlbmRpZlxuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xuIFxuIFx0LyogQXZvaWQgZmFsc2Ugc2hhcmluZyA6IFVzZSBhdCBsZWFzdCBhIGZ1bGwgY2FjaGUgbGluZSAqL1xuIFx0c2l6ZSA9IG1heF90KHNpemVfdCwgc2l6ZSwgTDFfQ0FDSEVfQllURVMpO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9ydWxlcy5jIGIvbmV0L2lwdjQvZmliX3J1bGVzLmNcbmluZGV4IGUwNjhhNWJhY2U3M2YyLi40ZWRiMGRjYTdiZThhMSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2ZpYl9ydWxlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfcnVsZXMuY1xuQEAgLTMwMSwxMCAmIzQzOzMwMSwxMiBAQCBzdGF0aWMgaW50IGZpYjRfcnVsZV9jb25maWd1cmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICAgIGZpYjRfbmwycnVsZV9kc2NwX21hc2sodGJbRlJBX0RTQ1BfTUFTS10sIHJ1bGU0LCBleHRhY2spIFx1MDAzYyAwKVxuIFx0XHRnb3RvIGVycm91dDtcbiBcbi1cdC8qIHNwbGl0IGxvY2FsL21haW4gaWYgdGhleSBhcmUgbm90IGFscmVhZHkgc3BsaXQgKi9cbi1cdGVyciA9IGZpYl91bm1lcmdlKG5ldCk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIGVycm91dDtcbiYjNDM7XHRpZiAoIW5ldC1cdTAwM2VpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzKSB7XG4mIzQzO1x0XHQvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovXG4mIzQzO1x0XHRlcnIgPSBmaWJfdW5tZXJnZShuZXQpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0Z290byBlcnJvdXQ7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKHJ1bGUtXHUwMDNldGFibGUgPT0gUlRfVEFCTEVfVU5TUEVDIFx1MDAyNlx1MDAyNiAhcnVsZS1cdTAwM2VsM21kZXYpIHtcbiBcdFx0aWYgKHJ1bGUtXHUwMDNlYWN0aW9uID09IEZSX0FDVF9UT19UQkwpIHtcbkBAIC0zNDksNyAmIzQzOzM1MSw3IEBAIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbmZpZ3VyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuJiM0MztzdGF0aWMgdm9pZCBmaWI0X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcbiB7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBydWxlLVx1MDAzZWZyX25ldDtcbiBcbkBAIC0zNjEsOCAmIzQzOzM2Myw2IEBAIHN0YXRpYyBpbnQgZmliNF9ydWxlX2RlbGV0ZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpXG4gXHRpZiAobmV0LVx1MDAzZWlwdjQuZmliX3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0IFx1MDAyNlx1MDAyNlxuIFx0ICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSlcbiBcdFx0bmV0LVx1MDAzZWlwdjQuZmliX3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0LS07XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBmaWI0X3J1bGVfY29tcGFyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCxcbkBAIC00NjAsNiAmIzQzOzQ2MCwxMSBAQCBzdGF0aWMgdm9pZCBmaWI0X3J1bGVfZmx1c2hfY2FjaGUoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcylcbiBcdHJ0X2NhY2hlX2ZsdXNoKG9wcy1cdTAwM2Vmcm9fbmV0KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGZpYjRfcnVsZV9uZWVkX3J0bmwoc3RydWN0IG5ldCAqbmV0KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuICFuZXQtXHUwMDNlaXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgX19uZXRfaW5pdGNvbnN0IGZpYjRfcnVsZXNfb3BzX3RlbXBsYXRlID0ge1xuIFx0LmZhbWlseVx0XHQ9IEFGX0lORVQsXG4gXHQucnVsZV9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgZmliNF9ydWxlKSxcbkBAIC00NzMsNiAmIzQzOzQ3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNF9ydWxlc19vcHNfdGVtcGxhdGUgPSB7XG4gXHQuZmlsbFx0XHQ9IGZpYjRfcnVsZV9maWxsLFxuIFx0Lm5sbXNnX3BheWxvYWRcdD0gZmliNF9ydWxlX25sbXNnX3BheWxvYWQsXG4gXHQuZmx1c2hfY2FjaGVcdD0gZmliNF9ydWxlX2ZsdXNoX2NhY2hlLFxuJiM0MztcdC5uZWVkX3J0bmxcdD0gZmliNF9ydWxlX25lZWRfcnRubCxcbiBcdC5ubGdyb3VwXHQ9IFJUTkxHUlBfSVBWNF9SVUxFLFxuIFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gfTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfdHJpZS5jIGIvbmV0L2lwdjQvZmliX3RyaWUuY1xuaW5kZXggZTExZGM4NmNlZGEwYmUuLmQxZDM0MmQ3MTQ4ZTgyIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZmliX3RyaWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvZmliX3RyaWUuY1xuQEAgLTIxMzcsOCAmIzQzOzIxMzcsNyBAQCB2b2lkIGZpYl9pbmZvX25vdGlmeV91cGRhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxfaW5mbyAqaW5mbylcbiBcdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbiBcdFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XG4gXG4tXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QsXG4tXHRcdFx0XHRcdCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpKVxuJiM0MztcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSlcbiBcdFx0XHRfX2ZpYl9pbmZvX25vdGlmeV91cGRhdGUobmV0LCB0YiwgaW5mbyk7XG4gXHR9XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuYyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xuaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjA0ZGFiOTMyOWQwY2Y1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmNcbkBAIC00ODAsMTUgJiM0Mzs0ODAsMTMgQEAgc3RhdGljIGludCBmaWI2X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZmliNl9ydWxlX2RlbGV0ZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpXG4mIzQzO3N0YXRpYyB2b2lkIGZpYjZfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuIHtcbiBcdHN0cnVjdCBuZXQgKm5ldCA9IHJ1bGUtXHUwMDNlZnJfbmV0O1xuIFxuIFx0aWYgKG5ldC1cdTAwM2VpcHY2LmZpYjZfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QgXHUwMDI2XHUwMDI2XG4gXHQgICAgZmliX3J1bGVfcmVxdWlyZXNfZmxkaXNzZWN0KHJ1bGUpKVxuIFx0XHRuZXQtXHUwMDNlaXB2Ni5maWI2X3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0LS07XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBmaWI2X3J1bGVfY29tcGFyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCxcbkBAIC02MzcsMjEgJiM0Mzs2MzUsMTQgQEAgc3RhdGljIGludCBfX25ldF9pbml0IGZpYjZfcnVsZXNfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0Z290byBvdXQ7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliNl9ydWxlc19uZXRfZXhpdF9iYXRjaChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfbGlzdClcbiYjNDM7c3RhdGljIHZvaWQgX19uZXRfZXhpdCBmaWI2X3J1bGVzX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbiB7XG4tXHRzdHJ1Y3QgbmV0ICpuZXQ7XG4tXG4tXHRydG5sX2xvY2soKTtcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnkobmV0LCBuZXRfbGlzdCwgZXhpdF9saXN0KSB7XG4tXHRcdGZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC1cdTAwM2VpcHY2LmZpYjZfcnVsZXNfb3BzKTtcbi1cdFx0Y29uZF9yZXNjaGVkKCk7XG4tXHR9XG4tXHRydG5sX3VubG9jaygpO1xuJiM0MztcdGZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC1cdTAwM2VpcHY2LmZpYjZfcnVsZXNfb3BzKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBmaWI2X3J1bGVzX25ldF9vcHMgPSB7XG4gXHQuaW5pdCA9IGZpYjZfcnVsZXNfbmV0X2luaXQsXG4tXHQuZXhpdF9iYXRjaCA9IGZpYjZfcnVsZXNfbmV0X2V4aXRfYmF0Y2gsXG4mIzQzO1x0LmV4aXQgPSBmaWI2X3J1bGVzX25ldF9leGl0LFxuIH07XG4gXG4gaW50IF9faW5pdCBmaWI2X3J1bGVzX2luaXQodm9pZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9NVUxUSVBMRV9UQUJMRVMmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWJfbmV3cnVsZSYjMzQ7LAogICAgJiMzNDtmaWJfZGVscnVsZSYjMzQ7LAogICAgJiMzNDtmaWJfbmV3X3RhYmxlJiMzNDssCiAgICAmIzM0O2ZpYl9ydWxlc19ldmVudCYjMzQ7LAogICAgJiMzNDtmaWI0X3J1bGVfY29uZmlndXJlJiMzNDssCiAgICAmIzM0O2ZpYjRfcnVsZV9kZWxldGUmIzM0OywKICAgICYjMzQ7ZmliNl9ydWxlX2NvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtmaWI2X3J1bGVfZGVsZXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cdTAwM2Vsb2NrIGFuZCBmaWJfdGFibGVfaGFzaF9sb2NrKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBSVE1fTkVXUlVMRSwgUlRNX0RFTFJVTEUpIGFuZCBuZXRkZXYgZXZlbnRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbW9kaWZpZWQgdG8gdXNlIHRoZSBuZXcgbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4NjUxOGM2MWNjNGM3ZGM0ZGFmZmQ3Y2MwOWEyMGRiOTkwNTIxNTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyOSAxOTo1MDowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oIGIvaW5jbHVkZS9uZXQvZmliX3J1bGVzLmgKaW5kZXggN2RlZTBhZTYxNmUzMjIuLmM2Yjk0NzkwZmE4MWVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9maWJfcnVsZXMuaApAQCAtODIsNyAmIzQzOzgyLDcgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMgewogCQkJCQkgICAgIHN0cnVjdCBmaWJfcnVsZV9oZHIgKiwKIAkJCQkJICAgICBzdHJ1Y3QgbmxhdHRyICoqLAogCQkJCQkgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKik7Ci0JaW50CQkJKCpkZWxldGUpKHN0cnVjdCBmaWJfcnVsZSAqKTsKJiM0MzsJdm9pZAkJCSgqZGVsZXRlKShzdHJ1Y3QgZmliX3J1bGUgKik7CiAJaW50CQkJKCpjb21wYXJlKShzdHJ1Y3QgZmliX3J1bGUgKiwKIAkJCQkJICAgc3RydWN0IGZpYl9ydWxlX2hkciAqLAogCQkJCQkgICBzdHJ1Y3QgbmxhdHRyICoqKTsKQEAgLTkzLDExICYjNDM7OTMsMTMgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMgewogCS8qIENhbGxlZCBhZnRlciBtb2RpZmljYXRpb25zIHRvIHRoZSBydWxlcyBzZXQsIG11c3QgZmx1c2gKIAkgKiB0aGUgcm91dGUgY2FjaGUgaWYgb25lIGV4aXN0cy4gKi8KIAl2b2lkCQkJKCpmbHVzaF9jYWNoZSkoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyk7CiYjNDM7CWJvb2wJCQkoKm5lZWRfcnRubCkoc3RydWN0IG5ldCAqbmV0KTsKIAogCWludAkJCW5sZ3JvdXA7CiAJc3RydWN0IGxpc3RfaGVhZAlydWxlc19saXN0OwogCXN0cnVjdCBtb2R1bGUJCSpvd25lcjsKIAlzdHJ1Y3QgbmV0CQkqZnJvX25ldDsKJiM0MzsJc3RydWN0IG11dGV4CQlsb2NrOwogCXN0cnVjdCByY3VfaGVhZAkJcmN1OwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfZmliLmggYi9pbmNsdWRlL25ldC9pcF9maWIuaAppbmRleCBjNjNhM2M0OTY3YWU2MS4uMGEzNTM1NWZiMGYzMzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwX2ZpYi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX2ZpYi5oCkBAIC0zMDIsNyAmIzQzOzMwMiw4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl90YWJsZSAqZmliX2dldF90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCkKIAkJJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbVEFCTEVfTE9DQUxfSU5ERVhdIDoKIAkJJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbVEFCTEVfTUFJTl9JTkRFWF07CiAKLQl0Yl9obGlzdCA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGhsaXN0X2ZpcnN0X3JjdShwdHIpKTsKJiM0MzsJLyogT25seSBmaWI0X3J1bGVzX2luaXQoKSBhZGRzIGZpYl90YWJsZS4gKi8KJiM0MzsJdGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGhsaXN0X2ZpcnN0X3JjdShwdHIpLCB0cnVlKTsKIAogCXJldHVybiBobGlzdF9lbnRyeSh0Yl9obGlzdCwgc3RydWN0IGZpYl90YWJsZSwgdGJfaGxpc3QpOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oIGIvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oCmluZGV4IDZlMjdjNTY1MTRkZjU3Li41OTUwNjMyMDU1OGE5OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaApAQCAtMTI3LDYgJiM0MzsxMjcsNyBAQCBzdHJ1Y3QgbmV0bnNfaXB2NCB7CiAJYXRvbWljX3QJCWZpYl9udW1fdGNsYXNzaWRfdXNlcnM7CiAjZW5kaWYKIAlzdHJ1Y3QgaGxpc3RfaGVhZAkqZmliX3RhYmxlX2hhc2g7CiYjNDM7CXNwaW5sb2NrX3QJCWZpYl90YWJsZV9oYXNoX2xvY2s7CiAJc3RydWN0IHNvY2sJCSpmaWJubDsKIAlzdHJ1Y3QgaGxpc3RfaGVhZAkqZmliX2luZm9faGFzaDsKIAl1bnNpZ25lZCBpbnQJCWZpYl9pbmZvX2hhc2hfYml0czsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpYl9ydWxlcy5jIGIvbmV0L2NvcmUvZmliX3J1bGVzLmMKaW5kZXggY2YzNzRjMjA4NzMyNTguLjIyZTVlNWUxYTljNDRmIDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWJfcnVsZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9maWJfcnVsZXMuYwpAQCAtNTEsNyAmIzQzOzUxLDYgQEAgYm9vbCBmaWJfcnVsZV9tYXRjaGFsbChjb25zdCBzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUpCiAJCXJldHVybiBmYWxzZTsKIAlyZXR1cm4gdHJ1ZTsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGZpYl9ydWxlX21hdGNoYWxsKTsKIAogaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsCiAJCQkgdTMyIHByZWYsIHUzMiB0YWJsZSkKQEAgLTc4LDcgJiM0Mzs3Nyw2IEBAIGludCBmaWJfZGVmYXVsdF9ydWxlX2FkZChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLAogCWxpc3RfYWRkX3RhaWwoJmFtcDtyLSZndDtsaXN0LCAmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCk7CiAJcmV0dXJuIDA7CiB9Ci1FWFBPUlRfU1lNQk9MKGZpYl9kZWZhdWx0X3J1bGVfYWRkKTsKIAogc3RhdGljIHUzMiBmaWJfZGVmYXVsdF9ydWxlX3ByZWYoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcykKIHsKQEAgLTE3Miw2ICYjNDM7MTcwLDcgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtvcHMtJmd0O3J1bGVzX2xpc3QpOwomIzQzOwltdXRleF9pbml0KCZhbXA7b3BzLSZndDtsb2NrKTsKIAlvcHMtJmd0O2Zyb19uZXQgPSBuZXQ7CiAKIAllcnIgPSBfX2ZpYl9ydWxlc19yZWdpc3RlcihvcHMpOwpAQCAtMTgyLDcgJiM0MzsxODEsNiBAQCBmaWJfcnVsZXNfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgKnRtcGwsIHN0cnVjdCBuZXQgKm5ldCkKIAogCXJldHVybiBvcHM7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfcmVnaXN0ZXIpOwogCiBzdGF0aWMgdm9pZCBmaWJfcnVsZXNfY2xlYW51cF9vcHMoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcykKIHsKQEAgLTIwNyw3ICYjNDM7MjA1LDYgQEAgdm9pZCBmaWJfcnVsZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKQogCWZpYl9ydWxlc19jbGVhbnVwX29wcyhvcHMpOwogCWtmcmVlX3JjdShvcHMsIHJjdSk7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfdW5yZWdpc3Rlcik7CiAKIHN0YXRpYyBpbnQgdWlkX3JhbmdlX3NldChzdHJ1Y3QgZmliX2t1aWRfcmFuZ2UgKnJhbmdlKQogewpAQCAtMzYzLDcgJiM0MzszNjAsNiBAQCBpbnQgZmliX3J1bGVzX2xvb2t1cChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLCBzdHJ1Y3QgZmxvd2kgKmZsLAogCiAJcmV0dXJuIGVycjsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGZpYl9ydWxlc19sb29rdXApOwogCiBzdGF0aWMgaW50IGNhbGxfZmliX3J1bGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAkJCQkgIGVudW0gZmliX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSwKQEAgLTM5MSw3ICYjNDM7Mzg3LDcgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9ydWxlX25vdGlmaWVycyhzdHJ1Y3QgbmV0ICpuZXQsCiAJCS5ydWxlID0gcnVsZSwKIAl9OwogCi0JQVNTRVJUX1JUTkxfTkVUKG5ldCk7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtvcHMtJmd0O2xvY2spOwogCiAJLyogUGFpcmVkIHdpdGggUkVBRF9PTkNFKCkgaW4gZmliX3J1bGVzX3NlcSgpICovCiAJV1JJVEVfT05DRShvcHMtJmd0O2ZpYl9ydWxlc19zZXEsIG9wcy0mZ3Q7ZmliX3J1bGVzX3NlcSAmIzQzOyAxKTsKQEAgLTQyMyw3ICYjNDM7NDE5LDYgQEAgaW50IGZpYl9ydWxlc19kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgaW50IGZhbWlseSwKIAogCXJldHVybiBlcnI7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfZHVtcCk7CiAKIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KQogewpAQCAtNDM5LDcgJiM0Mzs0MzQsNiBAQCB1bnNpZ25lZCBpbnQgZmliX3J1bGVzX3NlcV9yZWFkKGNvbnN0IHN0cnVjdCBuZXQgKm5ldCwgaW50IGZhbWlseSkKIAogCXJldHVybiBmaWJfcnVsZXNfc2VxOwogfQotRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX3NlcV9yZWFkKTsKIAogc3RhdGljIHN0cnVjdCBmaWJfcnVsZSAqcnVsZV9maW5kKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsCiAJCQkJICBzdHJ1Y3QgZmliX3J1bGVfaGRyICpmcmgsCkBAIC03NDAsMTAgJiM0Mzs3MzQsMTAgQEAgc3RhdGljIGludCBmaWJfbmwycnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubG1zZ2hkciAqbmxoLAogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgZmliX25sMnJ1bGVfcnRubChzdHJ1Y3QgZmliX3J1bGUgKm5scnVsZSwKLQkJCSAgICBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLAotCQkJICAgIHN0cnVjdCBubGF0dHIgKnRiW10sCi0JCQkgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQomIzQzO3N0YXRpYyBpbnQgZmliX25sMnJ1bGVfbG9ja2VkKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLAomIzQzOwkJCSAgICAgIHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsCiYjNDM7CQkJICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwKJiM0MzsJCQkgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiAJaWYgKCF0YltGUkFfUFJJT1JJVFldKQogCQlubHJ1bGUtJmd0O3ByZWYgPSBmaWJfZGVmYXVsdF9ydWxlX3ByZWYob3BzKTsKQEAgLTc1NCwxMiAmIzQzOzc0OCwxNCBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CiAJaWYgKHRiW0ZSQV9JSUZOQU1FXSkgewogCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCi0JCWRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS0mZ3Q7ZnJfbmV0LCBubHJ1bGUtJmd0O2lpZm5hbWUpOwomIzQzOwkJZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtJmd0O2ZyX25ldCwgbmxydWxlLSZndDtpaWZuYW1lKTsKIAkJaWYgKGRldikgewotCQkJbmxydWxlLSZndDtpaWZpbmRleCA9IGRldi0mZ3Q7aWZpbmRleDsKJiM0MzsJCQlubHJ1bGUtJmd0O2lpZmluZGV4ID0gUkVBRF9PTkNFKGRldi0mZ3Q7aWZpbmRleCk7CiAJCQlubHJ1bGUtJmd0O2lpZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTsKIAkJfQogCX0KQEAgLTc2NywxMyAmIzQzOzc2MywxNSBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsCiAJaWYgKHRiW0ZSQV9PSUZOQU1FXSkgewogCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCi0JCWRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS0mZ3Q7ZnJfbmV0LCBubHJ1bGUtJmd0O29pZm5hbWUpOwomIzQzOwkJZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtJmd0O2ZyX25ldCwgbmxydWxlLSZndDtvaWZuYW1lKTsKIAkJaWYgKGRldikgewotCQkJbmxydWxlLSZndDtvaWZpbmRleCA9IGRldi0mZ3Q7aWZpbmRleDsKJiM0MzsJCQlubHJ1bGUtJmd0O29pZmluZGV4ID0gUkVBRF9PTkNFKGRldi0mZ3Q7aWZpbmRleCk7CiAJCQlubHJ1bGUtJmd0O29pZl9pc19sM19tYXN0ZXIgPSBuZXRpZl9pc19sM19tYXN0ZXIoZGV2KTsKIAkJfQogCX0KIAomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIApAQCAtODgzLDYgJiM0Mzs4ODEsNyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAlzdHJ1Y3QgbmxhdHRyICp0YltGUkFfTUFYICYjNDM7IDFdOwogCWJvb2wgdXNlcl9wcmlvcml0eSA9IGZhbHNlOwogCXN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaDsKJiM0MzsJYm9vbCB1bmxvY2tfcnRubCA9IGZhbHNlOwogCiAJZnJoID0gbmxtc2dfcGF5bG9hZChubGgsIHNpemVvZigqZnJoKSk7CiAJaWYgKCFmcmgpIHsKQEAgLTkwOCwxMCAmIzQzOzkwNywxMyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAlpZiAoZXJyKQogCQlnb3RvIGVycm91dDsKIAotCWlmICghcnRubF9oZWxkKQomIzQzOwlpZiAoIXJ0bmxfaGVsZCAmYW1wOyZhbXA7IG9wcy0mZ3Q7bmVlZF9ydG5sICZhbXA7JmFtcDsgb3BzLSZndDtuZWVkX3J0bmwobmV0KSkgewomIzQzOwkJdW5sb2NrX3J0bmwgPSB0cnVlOwogCQlydG5sX25ldF9sb2NrKG5ldCk7CiYjNDM7CX0KJiM0MzsJbXV0ZXhfbG9jaygmYW1wO29wcy0mZ3Q7bG9jayk7CiAKLQllcnIgPSBmaWJfbmwycnVsZV9ydG5sKHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7CiYjNDM7CWVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChydWxlLCBvcHMsIHRiLCBleHRhY2spOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyb3V0X2ZyZWU7CiAKQEAgLTk1OSw3ICYjNDM7OTYxLDcgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkociwgJmFtcDtvcHMtJmd0O3J1bGVzX2xpc3QsIGxpc3QpIHsKIAkJCWlmIChyLSZndDthY3Rpb24gPT0gRlJfQUNUX0dPVE8gJmFtcDsmYW1wOwogCQkJICAgIHItJmd0O3RhcmdldCA9PSBydWxlLSZndDtwcmVmICZhbXA7JmFtcDsKLQkJCSAgICBydG5sX2RlcmVmZXJlbmNlKHItJmd0O2N0YXJnZXQpID09IE5VTEwpIHsKJiM0MzsJCQkgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihyLSZndDtjdGFyZ2V0KSkgewogCQkJCXJjdV9hc3NpZ25fcG9pbnRlcihyLSZndDtjdGFyZ2V0LCBydWxlKTsKIAkJCQlpZiAoLS1vcHMtJmd0O3VucmVzb2x2ZWRfcnVsZXMgPT0gMCkKIAkJCQkJYnJlYWs7CkBAIC05NzgsNyAmIzQzOzk4MCw4IEBAIGludCBmaWJfbmV3cnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLAogCiAJZmliX3J1bGVfZ2V0KHJ1bGUpOwogCi0JaWYgKCFydG5sX2hlbGQpCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO29wcy0mZ3Q7bG9jayk7CiYjNDM7CWlmICh1bmxvY2tfcnRubCkKIAkJcnRubF9uZXRfdW5sb2NrKG5ldCk7CiAKIAlub3RpZnlfcnVsZV9jaGFuZ2UoUlRNX05FV1JVTEUsIHJ1bGUsIG9wcywgbmxoLCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTsKQEAgLTk4OCw3ICYjNDM7OTkxLDggQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsCiAJcmV0dXJuIDA7CiAKIGVycm91dF9mcmVlOgotCWlmICghcnRubF9oZWxkKQomIzQzOwltdXRleF91bmxvY2soJmFtcDtvcHMtJmd0O2xvY2spOwomIzQzOwlpZiAodW5sb2NrX3J0bmwpCiAJCXJ0bmxfbmV0X3VubG9jayhuZXQpOwogCWtmcmVlKHJ1bGUpOwogZXJyb3V0OgpAQCAtMTAzNywxMCAmIzQzOzEwNDEsOSBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAlpZiAoZXJyKQogCQlnb3RvIGVycm91dDsKIAotCWlmICghcnRubF9oZWxkKQotCQlydG5sX25ldF9sb2NrKG5ldCk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCi0JZXJyID0gZmliX25sMnJ1bGVfcnRubChubHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7CiYjNDM7CWVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChubHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7CiAJaWYgKGVycikKIAkJZ290byBlcnJvdXRfZnJlZTsKIApAQCAtMTA1NSwxMSAmIzQzOzEwNTgsOCBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAkJZ290byBlcnJvdXRfZnJlZTsKIAl9CiAKLQlpZiAob3BzLSZndDtkZWxldGUpIHsKLQkJZXJyID0gb3BzLSZndDtkZWxldGUocnVsZSk7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIGVycm91dF9mcmVlOwotCX0KJiM0MzsJaWYgKG9wcy0mZ3Q7ZGVsZXRlKQomIzQzOwkJb3BzLSZndDtkZWxldGUocnVsZSk7CiAKIAlpZiAocnVsZS0mZ3Q7dHVuX2lkKQogCQlpcF90dW5uZWxfdW5uZWVkX21ldGFkYXRhKCk7CkBAIC0xMDY4LDcgJiM0MzsxMDY4LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsCiAKIAlpZiAocnVsZS0mZ3Q7YWN0aW9uID09IEZSX0FDVF9HT1RPKSB7CiAJCW9wcy0mZ3Q7bnJfZ290b19ydWxlcy0tOwotCQlpZiAocnRubF9kZXJlZmVyZW5jZShydWxlLSZndDtjdGFyZ2V0KSA9PSBOVUxMKQomIzQzOwkJaWYgKCFyY3VfYWNjZXNzX3BvaW50ZXIocnVsZS0mZ3Q7Y3RhcmdldCkpCiAJCQlvcHMtJmd0O3VucmVzb2x2ZWRfcnVsZXMtLTsKIAl9CiAKQEAgLTEwODYsNyAmIzQzOzEwODYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAkJaWYgKCZhbXA7bi0mZ3Q7bGlzdCA9PSAmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCB8fCBuLSZndDtwcmVmICE9IHJ1bGUtJmd0O3ByZWYpCiAJCQluID0gTlVMTDsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShyLCAmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCwgbGlzdCkgewotCQkJaWYgKHJ0bmxfZGVyZWZlcmVuY2Uoci0mZ3Q7Y3RhcmdldCkgIT0gcnVsZSkKJiM0MzsJCQlpZiAocmN1X2FjY2Vzc19wb2ludGVyKHItJmd0O2N0YXJnZXQpICE9IHJ1bGUpCiAJCQkJY29udGludWU7CiAJCQlyY3VfYXNzaWduX3BvaW50ZXIoci0mZ3Q7Y3RhcmdldCwgbik7CiAJCQlpZiAoIW4pCkBAIC0xMDk2LDggJiM0MzsxMDk2LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsCiAKIAljYWxsX2ZpYl9ydWxlX25vdGlmaWVycyhuZXQsIEZJQl9FVkVOVF9SVUxFX0RFTCwgcnVsZSwgb3BzLCBOVUxMKTsKIAotCWlmICghcnRubF9oZWxkKQotCQlydG5sX25ldF91bmxvY2sobmV0KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7b3BzLSZndDtsb2NrKTsKIAogCW5vdGlmeV9ydWxlX2NoYW5nZShSVE1fREVMUlVMRSwgcnVsZSwgb3BzLCBubGgsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpOwogCWZpYl9ydWxlX3B1dChydWxlKTsKQEAgLTExMDcsOCAmIzQzOzExMDYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKIAlyZXR1cm4gMDsKIAogZXJyb3V0X2ZyZWU6Ci0JaWYgKCFydG5sX2hlbGQpCi0JCXJ0bmxfbmV0X3VubG9jayhuZXQpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCWtmcmVlKG5scnVsZSk7CiBlcnJvdXQ6CiAJcnVsZXNfb3BzX3B1dChvcHMpOwpAQCAtMTQwMiwyNCAmIzQzOzE0MDAsMzAgQEAgc3RhdGljIGludCBmaWJfcnVsZXNfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LAogCXN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoZGV2KTsKIAlzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzOwogCi0JQVNTRVJUX1JUTkwoKTsKLQogCXN3aXRjaCAoZXZlbnQpIHsKIAljYXNlIE5FVERFVl9SRUdJU1RFUjoKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsICZhbXA7bmV0LSZndDtydWxlc19vcHMsIGxpc3QpCiYjNDM7CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgJmFtcDtuZXQtJmd0O3J1bGVzX29wcywgbGlzdCkgewomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCQkJYXR0YWNoX3J1bGVzKCZhbXA7b3BzLSZndDtydWxlc19saXN0LCBkZXYpOwomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO29wcy0mZ3Q7bG9jayk7CiYjNDM7CQl9CiAJCWJyZWFrOwogCiAJY2FzZSBORVRERVZfQ0hBTkdFTkFNRToKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsICZhbXA7bmV0LSZndDtydWxlc19vcHMsIGxpc3QpIHsKJiM0MzsJCQltdXRleF9sb2NrKCZhbXA7b3BzLSZndDtsb2NrKTsKIAkJCWRldGFjaF9ydWxlcygmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCwgZGV2KTsKIAkJCWF0dGFjaF9ydWxlcygmYW1wO29wcy0mZ3Q7cnVsZXNfbGlzdCwgZGV2KTsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCQl9CiAJCWJyZWFrOwogCiAJY2FzZSBORVRERVZfVU5SRUdJU1RFUjoKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsICZhbXA7bmV0LSZndDtydWxlc19vcHMsIGxpc3QpCiYjNDM7CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgJmFtcDtuZXQtJmd0O3J1bGVzX29wcywgbGlzdCkgewomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtvcHMtJmd0O2xvY2spOwogCQkJZGV0YWNoX3J1bGVzKCZhbXA7b3BzLSZndDtydWxlc19saXN0LCBkZXYpOwomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO29wcy0mZ3Q7bG9jayk7CiYjNDM7CQl9CiAJCWJyZWFrOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuYwppbmRleCA0MjIxMjk3MGQ3MzU0MC4uNTRlYjcyNjk1MDkzZGEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jCkBAIC03Niw3ICYjNDM7NzYsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNF9ydWxlc19pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAogc3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCkKIHsKLQlzdHJ1Y3QgZmliX3RhYmxlICp0YiwgKmFsaWFzID0gTlVMTDsKJiM0MzsJc3RydWN0IGZpYl90YWJsZSAqdGIsICpuZXdfdGIsICphbGlhcyA9IE5VTEw7CiAJdW5zaWduZWQgaW50IGg7CiAKIAlpZiAoaWQgPT0gMCkKQEAgLTg1LDE0ICYjNDM7ODUsMjcgQEAgc3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCkKIAlpZiAodGIpCiAJCXJldHVybiB0YjsKIAomIzQzOwlpZiAoIWNoZWNrX25ldChuZXQpKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiAJaWYgKGlkID09IFJUX1RBQkxFX0xPQ0FMICZhbXA7JmFtcDsgIW5ldC0mZ3Q7aXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcykKIAkJYWxpYXMgPSBmaWJfbmV3X3RhYmxlKG5ldCwgUlRfVEFCTEVfTUFJTik7CiAKLQlpZiAoY2hlY2tfbmV0KG5ldCkpCi0JCXRiID0gZmliX3RyaWVfdGFibGUoaWQsIGFsaWFzKTsKLQlpZiAoIXRiKQomIzQzOwluZXdfdGIgPSBmaWJfdHJpZV90YWJsZShpZCwgYWxpYXMpOwomIzQzOwlpZiAoIW5ld190YikKIAkJcmV0dXJuIE5VTEw7CiAKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7bmV0LSZndDtpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spOwomIzQzOwomIzQzOwl0YiA9IGZpYl9nZXRfdGFibGUobmV0LCBpZCk7CiYjNDM7CWlmICh0YikgewomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hfbG9jayk7CiYjNDM7CQlmaWJfZnJlZV90YWJsZShuZXdfdGIpOwomIzQzOwkJcmV0dXJuIHRiOwomIzQzOwl9CiYjNDM7CiYjNDM7CXRiID0gbmV3X3RiOwomIzQzOwogCXN3aXRjaCAoaWQpIHsKIAljYXNlIFJUX1RBQkxFX01BSU46CiAJCXJjdV9hc3NpZ25fcG9pbnRlcihuZXQtJmd0O2lwdjQuZmliX21haW4sIHRiKTsKQEAgLTEwNiwyOCAmIzQzOzExOSwzNSBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKQogCiAJaCA9IGlkICZhbXA7IChGSUJfVEFCTEVfSEFTSFNaIC0gMSk7CiAJaGxpc3RfYWRkX2hlYWRfcmN1KCZhbXA7dGItJmd0O3RiX2hsaXN0LCAmYW1wO25ldC0mZ3Q7aXB2NC5maWJfdGFibGVfaGFzaFtoXSk7CiYjNDM7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7bmV0LSZndDtpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spOwomIzQzOwogCXJldHVybiB0YjsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGZpYl9uZXdfdGFibGUpOwogCi0vKiBjYWxsZXIgbXVzdCBob2xkIGVpdGhlciBydG5sIG9yIHJjdSByZWFkIGxvY2sgKi8KIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpCiB7Ci0Jc3RydWN0IGZpYl90YWJsZSAqdGI7CiYjNDM7CXN0cnVjdCBmaWJfdGFibGUgKnRiID0gTlVMTDsKIAlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDsKIAl1bnNpZ25lZCBpbnQgaDsKIAogCWlmIChpZCA9PSAwKQogCQlpZCA9IFJUX1RBQkxFX01BSU47CiAJaCA9IGlkICZhbXA7IChGSUJfVEFCTEVfSEFTSFNaIC0gMSk7Ci0KIAloZWFkID0gJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbaF07Ci0JaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwKLQkJCQkgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSkgewomIzQzOwomIzQzOwkvKiBmaWJfdGFibGUgaXMgbm90IGRlc3Ryb3llZCB1bnRpbCBpcF9maWJfbmV0X2V4aXQoKQomIzQzOwkgKiBleGNlcHQgZm9yIHRoZSBtZXJnZWQgbWFpbi9sb2NhbCB0YWJsZS4KJiM0MzsJICogZmliX3VubWVyZ2UoKSBpcyBjYWxsZWQgdW5kZXIgUlROTCwgc28gb3RoZXIgcmVhZGVycwomIzQzOwkgKiB1bmRlciBSVE5MIChlLmcuIGZpYl9mbHVzaCgpLCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKCkpCiYjNDM7CSAqIGNhbiBzYWZlbHkgdHJhdmVyc2UgdGhlIGxpc3Qgd2l0aCByY3VfZGVyZWZlcmVuY2VfcmF3KCkuCiYjNDM7CSAqLwomIzQzOwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKQogCQlpZiAodGItJmd0O3RiX2lkID09IGlkKQotCQkJcmV0dXJuIHRiOwotCX0KLQlyZXR1cm4gTlVMTDsKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJcmV0dXJuIHRiOwogfQogI2VuZGlmIC8qIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVMgKi8KIApAQCAtMTkwLDEwICYjNDM7MjEwLDkgQEAgdm9pZCBmaWJfZmx1c2goc3RydWN0IG5ldCAqbmV0KQogCiAJZm9yIChoID0gMDsgaCAmbHQ7IEZJQl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbaF07Ci0JCXN0cnVjdCBobGlzdF9ub2RlICp0bXA7CiAJCXN0cnVjdCBmaWJfdGFibGUgKnRiOwogCi0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGIsIHRtcCwgaGVhZCwgdGJfaGxpc3QpCiYjNDM7CQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKQogCQkJZmx1c2hlZCAmIzQzOz0gZmliX3RhYmxlX2ZsdXNoKG5ldCwgdGIsIGZhbHNlKTsKIAl9CiAKQEAgLTE1NjUsNiAmIzQzOzE1ODQsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgaXBfZmliX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAluZXQtJmd0O2lwdjQuc3lzY3RsX2ZpYl9tdWx0aXBhdGhfaGFzaF9maWVsZHMgPQogCQlGSUJfTVVMVElQQVRIX0hBU0hfRklFTERfREVGQVVMVF9NQVNLOwogI2VuZGlmCiYjNDM7CXNwaW5fbG9ja19pbml0KCZhbXA7bmV0LSZndDtpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spOwogCiAJLyogQXZvaWQgZmFsc2Ugc2hhcmluZyA6IFVzZSBhdCBsZWFzdCBhIGZ1bGwgY2FjaGUgbGluZSAqLwogCXNpemUgPSBtYXhfdChzaXplX3QsIHNpemUsIEwxX0NBQ0hFX0JZVEVTKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9ydWxlcy5jIGIvbmV0L2lwdjQvZmliX3J1bGVzLmMKaW5kZXggZTA2OGE1YmFjZTczZjIuLjRlZGIwZGNhN2JlOGExIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9maWJfcnVsZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfcnVsZXMuYwpAQCAtMzAxLDEwICYjNDM7MzAxLDEyIEBAIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbmZpZ3VyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBza19idWZmICpza2IsCiAJICAgIGZpYjRfbmwycnVsZV9kc2NwX21hc2sodGJbRlJBX0RTQ1BfTUFTS10sIHJ1bGU0LCBleHRhY2spICZsdDsgMCkKIAkJZ290byBlcnJvdXQ7CiAKLQkvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovCi0JZXJyID0gZmliX3VubWVyZ2UobmV0KTsKLQlpZiAoZXJyKQotCQlnb3RvIGVycm91dDsKJiM0MzsJaWYgKCFuZXQtJmd0O2lwdjQuZmliX2hhc19jdXN0b21fcnVsZXMpIHsKJiM0MzsJCS8qIHNwbGl0IGxvY2FsL21haW4gaWYgdGhleSBhcmUgbm90IGFscmVhZHkgc3BsaXQgKi8KJiM0MzsJCWVyciA9IGZpYl91bm1lcmdlKG5ldCk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCWdvdG8gZXJyb3V0OwomIzQzOwl9CiAKIAlpZiAocnVsZS0mZ3Q7dGFibGUgPT0gUlRfVEFCTEVfVU5TUEVDICZhbXA7JmFtcDsgIXJ1bGUtJmd0O2wzbWRldikgewogCQlpZiAocnVsZS0mZ3Q7YWN0aW9uID09IEZSX0FDVF9UT19UQkwpIHsKQEAgLTM0OSw3ICYjNDM7MzUxLDcgQEAgc3RhdGljIGludCBmaWI0X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQomIzQzO3N0YXRpYyB2b2lkIGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQogewogCXN0cnVjdCBuZXQgKm5ldCA9IHJ1bGUtJmd0O2ZyX25ldDsKIApAQCAtMzYxLDggJiM0MzszNjMsNiBAQCBzdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQogCWlmIChuZXQtJmd0O2lwdjQuZmliX3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0ICZhbXA7JmFtcDsKIAkgICAgZmliX3J1bGVfcmVxdWlyZXNfZmxkaXNzZWN0KHJ1bGUpKQogCQluZXQtJmd0O2lwdjQuZmliX3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0LS07Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBmaWI0X3J1bGVfY29tcGFyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCwKQEAgLTQ2MCw2ICYjNDM7NDYwLDExIEBAIHN0YXRpYyB2b2lkIGZpYjRfcnVsZV9mbHVzaF9jYWNoZShzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKQogCXJ0X2NhY2hlX2ZsdXNoKG9wcy0mZ3Q7ZnJvX25ldCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBmaWI0X3J1bGVfbmVlZF9ydG5sKHN0cnVjdCBuZXQgKm5ldCkKJiM0Mzt7CiYjNDM7CXJldHVybiAhbmV0LSZndDtpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNF9ydWxlc19vcHNfdGVtcGxhdGUgPSB7CiAJLmZhbWlseQkJPSBBRl9JTkVULAogCS5ydWxlX3NpemUJPSBzaXplb2Yoc3RydWN0IGZpYjRfcnVsZSksCkBAIC00NzMsNiAmIzQzOzQ3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNF9ydWxlc19vcHNfdGVtcGxhdGUgPSB7CiAJLmZpbGwJCT0gZmliNF9ydWxlX2ZpbGwsCiAJLm5sbXNnX3BheWxvYWQJPSBmaWI0X3J1bGVfbmxtc2dfcGF5bG9hZCwKIAkuZmx1c2hfY2FjaGUJPSBmaWI0X3J1bGVfZmx1c2hfY2FjaGUsCiYjNDM7CS5uZWVkX3J0bmwJPSBmaWI0X3J1bGVfbmVlZF9ydG5sLAogCS5ubGdyb3VwCT0gUlROTEdSUF9JUFY0X1JVTEUsCiAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogfTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl90cmllLmMgYi9uZXQvaXB2NC9maWJfdHJpZS5jCmluZGV4IGUxMWRjODZjZWRhMGJlLi5kMWQzNDJkNzE0OGU4MiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvZmliX3RyaWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfdHJpZS5jCkBAIC0yMTM3LDggJiM0MzsyMTM3LDcgQEAgdm9pZCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sX2luZm8gKmluZm8pCiAJCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gJmFtcDtuZXQtJmd0O2lwdjQuZmliX3RhYmxlX2hhc2hbaF07CiAJCXN0cnVjdCBmaWJfdGFibGUgKnRiOwogCi0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QsCi0JCQkJCSBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpKQomIzQzOwkJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSkKIAkJCV9fZmliX2luZm9fbm90aWZ5X3VwZGF0ZShuZXQsIHRiLCBpbmZvKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9maWI2X3J1bGVzLmMgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmMKaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjA0ZGFiOTMyOWQwY2Y1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9maWI2X3J1bGVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jCkBAIC00ODAsMTUgJiM0Mzs0ODAsMTMgQEAgc3RhdGljIGludCBmaWI2X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgaW50IGZpYjZfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQomIzQzO3N0YXRpYyB2b2lkIGZpYjZfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKQogewogCXN0cnVjdCBuZXQgKm5ldCA9IHJ1bGUtJmd0O2ZyX25ldDsKIAogCWlmIChuZXQtJmd0O2lwdjYuZmliNl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdCAmYW1wOyZhbXA7CiAJICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSkKIAkJbmV0LSZndDtpcHY2LmZpYjZfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QtLTsKLQotCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGZpYjZfcnVsZV9jb21wYXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IGZpYl9ydWxlX2hkciAqZnJoLApAQCAtNjM3LDIxICYjNDM7NjM1LDE0IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBmaWI2X3J1bGVzX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAlnb3RvIG91dDsKIH0KIAotc3RhdGljIHZvaWQgX19uZXRfZXhpdCBmaWI2X3J1bGVzX25ldF9leGl0X2JhdGNoKHN0cnVjdCBsaXN0X2hlYWQgKm5ldF9saXN0KQomIzQzO3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliNl9ydWxlc19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiB7Ci0Jc3RydWN0IG5ldCAqbmV0OwotCi0JcnRubF9sb2NrKCk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShuZXQsIG5ldF9saXN0LCBleGl0X2xpc3QpIHsKLQkJZmliX3J1bGVzX3VucmVnaXN0ZXIobmV0LSZndDtpcHY2LmZpYjZfcnVsZXNfb3BzKTsKLQkJY29uZF9yZXNjaGVkKCk7Ci0JfQotCXJ0bmxfdW5sb2NrKCk7CiYjNDM7CWZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC0mZ3Q7aXB2Ni5maWI2X3J1bGVzX29wcyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZmliNl9ydWxlc19uZXRfb3BzID0gewogCS5pbml0ID0gZmliNl9ydWxlc19uZXRfaW5pdCwKLQkuZXhpdF9iYXRjaCA9IGZpYjZfcnVsZXNfbmV0X2V4aXRfYmF0Y2gsCiYjNDM7CS5leGl0ID0gZmliNl9ydWxlc19uZXRfZXhpdCwKIH07CiAKIGludCBfX2luaXQgZmliNl9ydWxlc19pbml0KHZvaWQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE5OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMDgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBTdWJzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSBwYXJ0IGRlYWxpbmcgd2l0aCBgZmliX3J1bGVzYCBhbmQgYGZpYl90YWJsZWAgbG9naWMuIEl0JiMzOTtzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3IsIGFzIEkgY2FuIHNlZSBpdCYjMzk7cyBtYWtpbmcgc29tZSBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIGhvdyB0aGVzZSB0YWJsZXMgYXJlIG1hbmFnZWQuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgYWx0ZXJhdGlvbiBvZiBgZmliX3J1bGVzX29wcy0mZ3Q7ZGVsZXRlYCB0byByZXR1cm4gYHZvaWRgIGluc3RlYWQgb2YgYGludGAuIFRoYXQmIzM5O3MgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2UgdG8gdGhlIGVycm9yIGhhbmRsaW5nIG1vZGVsLgoKVGhlIHJlYWwgbWVhdCBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBsb2NraW5nIHN0cmF0ZWd5LiBJbnN0ZWFkIG9mIHJlbHlpbmcgc29sZWx5IG9uIGBydG5sX2xvY2soKWAsIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYG11dGV4YCBsb2NrIHdpdGhpbiBgZmliX3J1bGVzX29wc2AgdG8gcHJvdGVjdCBgZmliX3J1bGVzX2xpc3RgLiBJdCBhbHNvIHRocm93cyBpbiBhIGBuZWVkX3J0bmxgIGZsYWcgdG8gYGZpYl9ydWxlc19vcHNgIHdoaWNoIHdhcnJhbnRzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLiBUaGlzIGZpbmUtZ3JhaW5lZCBsb2NraW5nIGFwcHJvYWNoIGlzIGludGVyZXN0aW5nLiBXZSYjMzk7cmUgbW92aW5nIGF3YXkgZnJvbSB0aGUgbW9yZSBjb2Fyc2UtZ3JhaW5lZCBSVE5MIGxvY2ssIGluZGljYXRpbmcgYSBwb3RlbnRpYWwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yIG1heWJlIGEgbW92ZSB0b3dhcmRzIG1vcmUgY29uY3VycmVudCBhY2Nlc3MuCgpJIHNlZSB0aGF0IGBmaWJfbmV3cnVsZWAgYW5kIGBmaWJfZGVscnVsZWAgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgYG9wcy0mZ3Q7bG9ja2AgaW5zdGVhZCBvZiBgcnRubF9sb2NrKClgLCB3aGljaCBtYWtlcyBzZW5zZS4gU2ltaWxhcmx5LCBgZmliX25ld190YWJsZWAgaXMgbm93IHVzaW5nIGEgYGZpYl90YWJsZV9oYXNoX2xvY2tgIHNwaW5sb2NrLCB3aGljaCBJIGFzc3VtZSBpcyBmb3IgcHJvdGVjdGluZyB0aGUgaGFzaCB0YWJsZSYjMzk7cyBpbnRlZ3JpdHkgZHVyaW5nIHRhYmxlIGNyZWF0aW9uLiBgZmliX2dldF90YWJsZWAgaXMgdXNpbmcgZWl0aGVyIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCBvciBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCB3aXRoIGB0cnVlYCwgd2hpY2ggaXMgZGVmaW5pdGVseSBpbXBvcnRhbnQsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29udGV4dCBmb3IgdGhpcyB1c2FnZSwgdmVyaWZ5aW5nIGl0cyB1c2UgY2FzZSB3aXRoIHRoZSBvdGhlciBsb2NrcyBpbiB0aGlzIHBhdGNoLiBUaGUgYGZpYl9ydWxlc19ldmVudGAgZnVuY3Rpb24gc2VlbXMgdG8gYmUgZ2FpbmluZyBhIGxvY2sgdG8gcHJvdGVjdCBhdHRhY2hpbmcgYW5kIGRldGFjaGluZyBydWxlczsgbGlrZWx5IGNyaXRpY2FsIGZvciBhIG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEFuZCB0aGUgYGZpYjZfcnVsZXNfbmV0X2V4aXRfYmF0Y2hgIGlzIGJlaW5nIHJlZmFjdG9yZWQgdG8gYGZpYjZfcnVsZXNfbmV0X2V4aXRgIHdpdGggdGhlIHJlbW92YWwgb2YgYHJ0bmxfbG9jaygpYCwgd2hpY2ggZGVmaW5pdGVseSBjaGFuZ2VzIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgSVB2NiBGSUIgcnVsZXMgbWFuYWdlbWVudC4KCkZyb20gYSBmdW5jdGlvbmFsIHN0YW5kcG9pbnQsIHRoaXMgcGF0Y2ggaXMgYSBjb3JlIG5ldHdvcmtpbmcgY2hhbmdlLCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBsb2NrbGVzcyBvciBmaW5lci1ncmFpbmVkIGxvY2tpbmcgZGVmaW5pdGVseSBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBmbG93LCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2Ugb2YgdGhpcywgaXQmIzM5O3MgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHNwZWNpZmljIGZ1bmN0aW9uczogYGZpYl9uZXdydWxlYCwgYGZpYl9kZWxydWxlYCwgYGZpYl9uZXdfdGFibGVgLCBgZmliX2dldF90YWJsZWAsIGBmaWJfcnVsZXNfZXZlbnRgLCBhbmQgdGhlIElQdjQgYW5kIElQdjYgcnVsZSBjb25maWd1cmF0aW9uIGFuZCBkZWxldGlvbiBmdW5jdGlvbnMgKGBmaWI0X3J1bGVfY29uZmlndXJlYCwgYGZpYjRfcnVsZV9kZWxldGVgLCBgZmliNl9ydWxlX2NvbmZpZ3VyZWAsIGBmaWI2X3J1bGVfZGVsZXRlYCkuCgpGaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zLiBUaGUgYENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNgIGFuZCBgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTYCBhcmUgZ29pbmcgdG8gYmUga2V5LCBlc3BlY2lhbGx5IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgY2hhbmdlcyBpbiBgZmliX25ld190YWJsZWAgYW5kIGBmaWJfZ2V0X3RhYmxlYCwgYW5kIGFsc28gdGhlIGBmaWI2X3J1bGVzX25ldGAgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgY29uZmlndXJhdGlvbnMgYXJlIHByb3Blcmx5IGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTk6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9NTM9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc6NTQ6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctNTUtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnPTI0PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnOjI1OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnLTI2LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTUwPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc6NTE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZy01Mi1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3Fjb21fZGVmY29uZmlnPTM4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9hcm0vY29uZmlncy9xY29tX2RlZmNvbmZpZzozOTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcWNvbV9kZWZjb25maWctNDAtQ09ORklHX0lQX1JPVVRFX1ZFUkJPU0U9eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MTE5PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxMjA6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEyMS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEzNT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTM2OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMzctQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWc9MTc9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9iY200N3h4X2RlZmNvbmZpZzoxODpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2JjbTQ3eHhfZGVmY29uZmlnLTE5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnPTMyPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc6MzM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnPTI0PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZzoyNTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWctMjYtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnPTM2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjM3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnLTM4LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnPTQ1PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc6NDY6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy00Ny1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTU3PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo1ODpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctNTktQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTI5PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjMwOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTMxLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9MzM9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjM0OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0zNS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnPTI4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzoyOTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWctMzAtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZz0zMD1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc6MzE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnLTMyLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc9MzE9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnOjMyOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZy0zMy1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWctMzQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc9Mjk9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZzozMDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnLTMxLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzozMzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZz00Nz1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjQ4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWctNDktQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvcWlfbGI2MF9kZWZjb25maWc9MjU9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL21pcHMvY29uZmlncy9xaV9sYjYwX2RlZmNvbmZpZzoyNjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL3FpX2xiNjBfZGVmY29uZmlnLTI3LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JiNTMyX2RlZmNvbmZpZz0zMD1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL3JiNTMyX2RlZmNvbmZpZzozMTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL3JiNTMyX2RlZmNvbmZpZy0zMi1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9yczkwX2RlZmNvbmZpZz00Nz1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL3JzOTBfZGVmY29uZmlnOjQ4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvcnM5MF9kZWZjb25maWctNDktQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZz0zMT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvbWlwcy9jb25maWdzL3J0MzA1eF9kZWZjb25maWc6MzI6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnLTMzLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3h3YXlfZGVmY29uZmlnPTMzPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MveHdheV9kZWZjb25maWc6MzQ6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZy0zNS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZz00Nj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnOjQ3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWctNDgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc9NDI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3hlc19tcGM4NXh4X2RlZmNvbmZpZzo0MzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgveGVzX21wYzg1eHhfZGVmY29uZmlnLTQ0LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTYwPUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc6NjE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy02Mi1DT05GSUdfSVBfUElNU01fVjE9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9ODY9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjg3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy04OC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTM4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEzOTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xNDAtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTEyOT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMzA6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTMxLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zZTc3MTJfZGVmY29uZmlnPTMyPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWc6MzM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzEyX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gvc2gvY29uZmlncy9zZTc3MjFfZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9zaC9jb25maWdzL3NlNzcyMV9kZWZjb25maWctMzQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWc9MzM9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL3NoL2NvbmZpZ3Mvc2gyMDA3X2RlZmNvbmZpZzozNDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnLTM1LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9MzI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9zaC9jb25maWdzL3RpdGFuX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnPTY2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZzo2NzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWctNjgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XG4tLVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTY3PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjY4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTY5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxuLS1cbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZz0xNj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZzoxNzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZy0xOC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcbi0tXG5pbmNsdWRlL25ldC9pcF9maWIuaD0xNjY9dm9pZCBfX25ldF9leGl0IGZpYjRfc2VtYW50aWNzX2V4aXQoc3RydWN0IG5ldCAqbmV0KTtcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTE2Ny1cbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjE2ODojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xuaW5jbHVkZS9uZXQvaXBfZmliLmgtMTY5LXN0cnVjdCBmaWJfcnVsZTtcbi0tXG5pbmNsdWRlL25ldC9pcF9maWIuaD0xODc9c3RydWN0IGZpYl9yZXN1bHRfbmwge1xuLS1cbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTIwMS1cbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjIwMjojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xuaW5jbHVkZS9uZXQvaXBfZmliLmgtMjAzLSNkZWZpbmUgRklCX1RBQkxFX0hBU0hTWiAyNTZcbi0tXG5pbmNsdWRlL25ldC9pcF9maWIuaD0yODk9dm9pZCBmaWJfZnJlZV90YWJsZShzdHJ1Y3QgZmliX3RhYmxlICp0Yik7XG5pbmNsdWRlL25ldC9pcF9maWIuaC0yOTAtXG5pbmNsdWRlL25ldC9pcF9maWIuaDoyOTE6I2lmbmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcF9maWIuaC0yOTItXG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmg9MzU3PXN0YXRpYyBpbmxpbmUgYm9vbCBmaWI0X3J1bGVzX2Vhcmx5X2Zsb3dfZGlzc2VjdChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmgtMzYzLX1cbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjM2NDojZWxzZSAvKiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTICovXG5pbmNsdWRlL25ldC9pcF9maWIuaC0zNjUtaW50IF9fbmV0X2luaXQgZmliNF9ydWxlc19pbml0KHN0cnVjdCBuZXQgKm5ldCk7XG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmg9NDE3PXN0YXRpYyBpbmxpbmUgYm9vbCBmaWI0X3J1bGVzX2Vhcmx5X2Zsb3dfZGlzc2VjdChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmgtNDM3LVxuaW5jbHVkZS9uZXQvaXBfZmliLmg6NDM4OiNlbmRpZiAvKiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTICovXG5pbmNsdWRlL25ldC9pcF9maWIuaC00MzktXG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmg9NTk4PXN0YXRpYyBpbmxpbmUgdm9pZCBmaWJfY29tYmluZV9pdGFnKHUzMiAqaXRhZywgY29uc3Qgc3RydWN0IGZpYl9yZXN1bHQgKnJlcylcbi0tXG5pbmNsdWRlL25ldC9pcF9maWIuaC02MDEtXHRzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjID0gcmVzLVx1MDAzZW5oYztcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjYwMjojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xuaW5jbHVkZS9uZXQvaXBfZmliLmgtNjAzLVx0dTMyIHJ0YWc7XG4tLVxuaW5jbHVkZS9uZXQvaXBfZmliLmgtNjEzLVxuaW5jbHVkZS9uZXQvaXBfZmliLmg6NjE0OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcF9maWIuaC02MTUtXHRydGFnID0gcmVzLVx1MDAzZXRjbGFzc2lkO1xuLS1cbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaD01NT1zdHJ1Y3QgbmV0bnNfaXB2NCB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTExNi1cdHN0cnVjdCBtdXRleFx0XHRyYV9tdXRleDtcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaDoxMTc6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjQuaC0xMTgtXHRzdHJ1Y3QgZmliX3J1bGVzX29wc1x0KnJ1bGVzX29wcztcbi0tXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yMC0jaWYgZGVmaW5lZChDT05GSUdfSVBWNikgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTKVxubmV0L2NvcmUvZmliX3J1bGVzLmM6MjE6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTIyLSNkZWZpbmUgSU5ESVJFQ1RfQ0FMTF9NVChmLCBmMiwgZjEsIC4uLikgXFxcbi0tXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yNi0jZW5kaWZcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjI3OiNlbGlmIGRlZmluZWQoQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUylcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTI4LSNkZWZpbmUgSU5ESVJFQ1RfQ0FMTF9NVChmLCBmMiwgZjEsIC4uLikgSU5ESVJFQ1RfQ0FMTF8xKGYsIGYxLCBfX1ZBX0FSR1NfXylcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfUFJPQ19GUykgJiM0Mzs9IHByb2Mub1xubmV0L2lwdjQvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUykgJiM0Mzs9IGZpYl9ydWxlcy5vXG5uZXQvaXB2NC9NYWtlZmlsZS0yMy1vYmotJChDT05GSUdfSVBfTVJPVVRFKSAmIzQzOz0gaXBtci5vXG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtNTAtXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzo1MTojaWZuZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUyLVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTEyOT1zdHJ1Y3QgZmliX3RhYmxlICpmaWJfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1MS19XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNTI6I2VuZGlmIC8qIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVMgKi9cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1My1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE1ND1zdGF0aWMgdm9pZCBmaWJfcmVwbGFjZV90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWJfdGFibGUgKm9sZCxcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTYte1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTU3OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTgtXHRzd2l0Y2ggKG5ldy1cdTAwM2V0Yl9pZCkge1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2MTA9c3RhdGljIHZvaWQgaXBfZmliX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjE0LVx0QVNTRVJUX1JUTkxfTkVUKG5ldCk7XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjE1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjE2LVx0UkNVX0lOSVRfUE9JTlRFUihuZXQtXHUwMDNlaXB2NC5maWJfbWFpbiwgTlVMTCk7XG4tLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTYzNz1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjcwLVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTY3MTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY3Mi1cdGZpYjRfcnVsZXNfZXhpdChuZXQpO1xuLS1cbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2OTE9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBmaWJfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5Mi17XG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjkzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjk0LVx0ZmliNF9ydWxlc19leGl0KG5ldCk7XG4tLVxubmV0L2lwdjQvcm91dGUuYz0xNTg0PXN0YXRpYyB2b2lkIHJ0X3NldF9uZXh0aG9wKHN0cnVjdCBydGFibGUgKnJ0LCBfX2JlMzIgZGFkZHIsXG4tLVxubmV0L2lwdjQvcm91dGUuYy0xNjM1LSNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxubmV0L2lwdjQvcm91dGUuYzoxNjM2OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2NC9yb3V0ZS5jLTE2MzctXHRzZXRfY2xhc3NfdGFnKHJ0LCByZXMtXHUwMDNldGNsYXNzaWQpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND03Mj1DT05GSUdfSVBfTVVMVElDQVNUPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDo3MzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC03NC1DT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9NDA9Q09ORklHX0lQX01VTFRJQ0FTVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6NDE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtNDItQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTM1PUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjM2OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTM3LUNPTkZJR19KVU1QX0xBQkVMPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTU3PUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo1ODpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHgtNTktQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTD15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ9MTA4PUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQ6MTA5OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTEwLUNPTkZJR19JUF9QSU1TTV9WMT15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb249OTU9Q09ORklHX0lQX01VTFRJQ0FTVD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjo5NjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTk3LUNPTkZJR19JUF9ORl9GSUxURVI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc9NT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc6NjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWctNy1DT05GSUdfSVBfTkZfRklMVEVSPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy93aXJlZ3VhcmQvcWVtdS9rZXJuZWwuY29uZmlnPTMxPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZzozMjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3dpcmVndWFyZC9xZW11L2tlcm5lbC5jb25maWctMzMtQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQ4NAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMsIGFzIGlmIEkmIzM5O20gZGlyZWN0bHkgZXhwZXJpZW5jaW5nIGl0OgoKKipFeGFtaW5pbmcgYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2AqKgoKQWxyaWdodCwgdGltZSB0byBmb2N1cy4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24sIGBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciByb3V0aW5nLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gYWxyZWFkeSBlbnZpc2lvbmluZyB0aGUgcm91dGluZyB0YWJsZSBpbmZyYXN0cnVjdHVyZSBhbmQgaG93IGVuYWJsaW5nIHRoaXMgb3B0aW9uIGNoYW5nZXMgdGhpbmdzIHdpdGhpbiB0aGUgSVB2NiBjb250ZXh0LiBJcyB0aGlzIGFib3V0IHBvbGljeSByb3V0aW5nPyBUcmFmZmljIG1hbmFnZW1lbnQ/IFRoZSBhYmlsaXR5IHRvIHNlZ3JlZ2F0ZSB0cmFmZmljIGJhc2VkIG9uIGRpZmZlcmVudCBzb3VyY2Ugb3IgZGVzdGluYXRpb24gYWRkcmVzcyBwcmVmaXhlcz8gSSYjMzk7bSBwaWN0dXJpbmcgdGhlIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMg4oCTIHRoZSByb3V0ZSB0YWJsZXMsIHRoZSBGSUIgKEZvcndhcmRpbmcgSW5mb3JtYXRpb24gQmFzZSkgbG9va3VwcywgdGhlIGludGVyZmFjZSBjb25maWd1cmF0aW9ucy4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhpcyBpcyBhIHJlY2VudCBhZGRpdGlvbiwgb3IgYSBsb25nLXN0YW5kaW5nIGZlYXR1cmUgdGhhdCYjMzk7cyBmaW5hbGx5IGdldHRpbmcgc29tZSBtb3JlIGF0dGVudGlvbi4gV2hhdCBhcmUgdGhlIGNvbW1vbiB1c2UgY2FzZXMgd2hlcmUgbXVsdGlwbGUgSVB2NiByb3V0aW5nIHRhYmxlcyBiZWNvbWUgZXNzZW50aWFsPyBBcmUgd2UgdGFsa2luZyBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG5ldHdvcmsgbmFtZXNwYWNlcywgb3IgcGVyaGFwcyBzb3BoaXN0aWNhdGVkIHRyYWZmaWMgZW5naW5lZXJpbmcgc2NlbmFyaW9zPyBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSByZWxhdGVkIGRvY3VtZW50YXRpb24gdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gYW55IGRlcGVuZGVuY2llcyBvciBjYXZlYXRzLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSB0aWVkIHRvIHRoaXMgb25lLCBpbXBhY3RpbmcgaXRzIGZ1bmN0aW9uYWxpdHk/IEFuZCB3aGF0IGlzIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Q/IFRoaXMgY291bGQgc2lnbmlmaWNhbnRseSBhZmZlY3QgdGhlIG92ZXJhbGwgcGFja2V0IGZvcndhcmRpbmcgcmF0ZS4gT2theSwgdGltZSB0byBzZWUgaWYgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGdpdmUgbWUgYW55IG1vcmUgaW5zaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnPTUwPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy01MS0jIENPTkZJR19JUFY2X1NJVCBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc6NTI6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy01My1DT05GSUdfTkVURklMVEVSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9NjE9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTYyLSMgQ09ORklHX0lQVjZfU0lUIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo2MzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnLTY0LUNPTkZJR19ORVRGSUxURVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTY4PUNPTkZJR19JUFY2X1NJVD1tXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZzo2OTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWctNzAtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTE1MD1DT05GSUdfSVBWNl9UVU5ORUw9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MTUxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0xNTItQ09ORklHX05FVF9EU0E9bVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvdGVncmFfZGVmY29uZmlnPTUyPUNPTkZJR19JUFY2X1RVTk5FTD15XG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZzo1MzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9hcm0vY29uZmlncy90ZWdyYV9kZWZjb25maWctNTQtQ09ORklHX0NBTj15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xNTg9Q09ORklHX0lORVQ2X0lQQ09NUD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjE1OTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xNjAtQ09ORklHX0lQVjZfTVJPVVRFPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE3ND1DT05GSUdfSU5FVDZfSVBDT01QPW1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTc1OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE3Ni1DT05GSUdfSVBWNl9NUk9VVEU9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2JjbTQ3eHhfZGVmY29uZmlnPTIzPUNPTkZJR19UQ1BfQ09OR19BRFZBTkNFRD15XG5hcmNoL21pcHMvY29uZmlncy9iY200N3h4X2RlZmNvbmZpZzoyNDpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWctMjUtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWc9NjA9Q09ORklHX0lQVjZfVFVOTkVMPW1cbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWc6NjE6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWctNjItQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9NjM9Q09ORklHX0lQVjZfR1JFPXlcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc6NjQ6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWctNjUtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnPTQ1PUNPTkZJR19JUFY2X01JUDY9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc6NDY6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTQ3LUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZz00MT1DT05GSUdfSVBWNl9NSVA2PW1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnOjQyOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZy00My1DT05GSUdfSVBWNl9TVUJUUkVFUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnPTQwPUNPTkZJR19JUFY2X01JUDY9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnOjQxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX3I0a19kZWZjb25maWctNDItQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTQ2PUNPTkZJR19JUFY2X1RVTk5FTD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo0NzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctNDgtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTQ1PUNPTkZJR19JUFY2X1RVTk5FTD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZzo0NjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctNDctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnPTQ1PUNPTkZJR19JUFY2X1RVTk5FTD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZzo0NjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctNDctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZz01MD1DT05GSUdfSVBWNl9UVU5ORUw9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjUxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWctNTItQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0zOD1DT05GSUdfSVBWNl9UVU5ORUw9bVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnOjM5OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWctNDAtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTE1PUNPTkZJR19JUFY2X1RVTk5FTD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjExNjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0xMTctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xNzM9Q09ORklHX0lQVjZfR1JFPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxNzQ6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xNzUtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xNjQ9Q09ORklHX0lQVjZfR1JFPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxNjU6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xNjYtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxuLS1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaC0yNC1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaDoyNTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMjYtI2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAyNTZcbi0tXG5pbmNsdWRlL25ldC9pcDZfZmliLmg9MzkxPXN0cnVjdCBmaWI2X3RhYmxlIHtcbi0tXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtNDA4LVxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oOjQwOTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtNDEwLSNkZWZpbmUgRklCNl9UQUJMRV9NSU5cdFx0MVxuLS1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaD02NjA9c3RhdGljIGlubGluZSBzdHJ1Y3QgcnQ2X2luZm8gKnBvbF9sb29rdXBfZnVuYyhwb2xfbG9va3VwX3QgbG9va3VwLFxuLS1cbmluY2x1ZGUvbmV0L2lwNl9maWIuaC02NzQtXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6Njc1OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcbmluY2x1ZGUvbmV0L2lwNl9maWIuaC02NzYtc3RhdGljIGlubGluZSBib29sIGZpYjZfaGFzX2N1c3RvbV9ydWxlcyhjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2Ni5oPTY2PXN0cnVjdCBuZXRuc19pcHY2IHtcbi0tXG5pbmNsdWRlL25ldC9uZXRucy9pcHY2LmgtODctXHR1bnNpZ25lZCBjaGFyXHRcdGZsb3dsYWJlbF9oYXNfZXhjbDtcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjYuaDo4ODojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9uZXRucy9pcHY2LmgtODktXHRib29sXHRcdFx0ZmliNl9oYXNfY3VzdG9tX3J1bGVzO1xuLS1cbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTE5LVxubmV0L2NvcmUvZmliX3J1bGVzLmM6MjA6I2lmIGRlZmluZWQoQ09ORklHX0lQVjYpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUylcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTIxLSNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXG4tLVxubmV0L2lwdjYvTWFrZWZpbGU9MjA9aXB2Ni0kKENPTkZJR19ORVRGSUxURVIpICYjNDM7PSBuZXRmaWx0ZXIub1xubmV0L2lwdjYvTWFrZWZpbGU6MjE6aXB2Ni0kKENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUykgJiM0Mzs9IGZpYjZfcnVsZXMub1xubmV0L2lwdjYvTWFrZWZpbGUtMjItaXB2Ni0kKENPTkZJR19QUk9DX0ZTKSAmIzQzOz0gcHJvYy5vXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTIxMz1zdGF0aWMgdm9pZCBmaWI2X2xpbmtfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl90YWJsZSAqdGIpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTIzMC1cbm5ldC9pcHY2L2lwNl9maWIuYzoyMzE6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvaXA2X2ZpYi5jLTIzMi1cbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjQ2Mj1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1MDQtXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjUwNTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUwNi1cdG5ldC1cdTAwM2VpcHY2LmZpYjZfbG9jYWxfdGJsID0ga3phbGxvY19vYmooKm5ldC1cdTAwM2VpcHY2LmZpYjZfbG9jYWxfdGJsKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUyMC1cbm5ldC9pcHY2L2lwNl9maWIuYzoyNTIxOiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTIyLW91dF9maWI2X21haW5fdGJsOlxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9MjkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnQ2X2luZm8gaXA2X251bGxfZW50cnlfdGVtcGxhdGUgPSB7XG4tLVxubmV0L2lwdjYvcm91dGUuYy0zMDQtXG5uZXQvaXB2Ni9yb3V0ZS5jOjMwNTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9yb3V0ZS5jLTMwNi1cbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTY0ODI9c3RhdGljIGludCBpcDZfcm91dGVfZGV2X25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXG4tLVxubmV0L2lwdjYvcm91dGUuYy02NDk0LVx0XHRuZXQtXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeS1cdTAwM2VydDZpX2lkZXYgPSBpbjZfZGV2X2dldChkZXYpO1xubmV0L2lwdjYvcm91dGUuYzo2NDk1OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L3JvdXRlLmMtNjQ5Ni1cdFx0bmV0LVx1MDAzZWlwdjYuaXA2X3Byb2hpYml0X2VudHJ5LVx1MDAzZWRzdC5kZXYgPSBkZXY7XG4tLVxubmV0L2lwdjYvcm91dGUuYy02NTA2LVx0XHRpbjZfZGV2X3B1dF9jbGVhcihcdTAwMjZuZXQtXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeS1cdTAwM2VydDZpX2lkZXYpO1xubmV0L2lwdjYvcm91dGUuYzo2NTA3OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L3JvdXRlLmMtNjUwOC1cdFx0aW42X2Rldl9wdXRfY2xlYXIoXHUwMDI2bmV0LVx1MDAzZWlwdjYuaXA2X3Byb2hpYml0X2VudHJ5LVx1MDAzZXJ0NmlfaWRldik7XG4tLVxubmV0L2lwdjYvcm91dGUuYz02Njc2PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcDZfcm91dGVfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNjcwMS1cbm5ldC9pcHY2L3JvdXRlLmM6NjcwMjojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3MDMtXHRuZXQtXHUwMDNlaXB2Ni5maWI2X2hhc19jdXN0b21fcnVsZXMgPSBmYWxzZTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3NDMtXG5uZXQvaXB2Ni9yb3V0ZS5jOjY3NDQ6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvcm91dGUuYy02NzQ1LW91dF9pcDZfcHJvaGliaXRfZW50cnk6XG4tLVxubmV0L2lwdjYvcm91dGUuYz02NzU4PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXA2X3JvdXRlX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3NjEtXHRrZnJlZShuZXQtXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeSk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjY3NjI6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvcm91dGUuYy02NzYzLVx0a2ZyZWUobmV0LVx1MDAzZWlwdjYuaXA2X3Byb2hpYml0X2VudHJ5KTtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTY4MzQ9dm9pZCBfX2luaXQgaXA2X3JvdXRlX2luaXRfc3BlY2lhbF9lbnRyaWVzKHZvaWQpXG4tLVxubmV0L2lwdjYvcm91dGUuYy02ODQxLVx0aW5pdF9uZXQuaXB2Ni5pcDZfbnVsbF9lbnRyeS1cdTAwM2VydDZpX2lkZXYgPSBpbjZfZGV2X2dldChpbml0X25ldC5sb29wYmFja19kZXYpO1xubmV0L2lwdjYvcm91dGUuYzo2ODQyOiAgI2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvcm91dGUuYy02ODQzLVx0aW5pdF9uZXQuaXB2Ni5pcDZfcHJvaGliaXRfZW50cnktXHUwMDNlZHN0LmRldiA9IGluaXRfbmV0Lmxvb3BiYWNrX2Rldjtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC92aXJ0aW9fbmV0L2NvbmZpZz0zPUNPTkZJR19JUFY2PXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQvY29uZmlnOjQ6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQvY29uZmlnLTUtQ09ORklHX05FVF9MM19NQVNURVJfREVWPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTQ0PUNPTkZJR19JUFY2X01ST1VURT15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjQ1OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnLTQ2LUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZz0xND1DT05GSUdfSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZzoxNTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZvcndhcmRpbmcvY29uZmlnLTE2LUNPTkZJR19JUFY2X1BJTVNNX1YyPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnPTEwPUNPTkZJR19JUFY2PXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc6MTE6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWctMTItQ09ORklHX0tBTExTWU1TPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZz0zNT1DT05GSUdfSVBWNj15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzozNjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldGZpbHRlci9jb25maWctMzctQ09ORklHX0lQVjZfVFVOTkVMPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGNwX2FvL2NvbmZpZz0xPUNPTkZJR19JUFY2PXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90Y3BfYW8vY29uZmlnOjI6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90Y3BfYW8vY29uZmlnLTMtQ09ORklHX05FVF9MM19NQVNURVJfREVWPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy93aXJlZ3VhcmQvcWVtdS9rZXJuZWwuY29uZmlnPTMyPUNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZzozMzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZy0zNC1DT05GSUdfVFRZPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxOTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTA2NQoJCQkJCQkJb3V0cHV0OiAyMTIKCQkJCQkJCXRob3VnaHRzOiA3MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgU2VsZWN0aW9uIGZvciBGSUIgUnVsZSBhbmQgVGFibGUgTG9ja2luZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBiZXN0IGZ1enogdGhpcyBwYXRjaC4gVGhlIGNvbmZpZ3MgdGhhdCBhcmUgcmVsZXZhbnQgaGVyZSBhcmUgYElQX01VTFRJUExFX1RBQkxFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AsIHNvIHdlJiMzOTtyZSBnb29kIHRoZXJlLiBUaGUgY29yZSBjaGFuZ2UgaXMgdG8gdGhlIGxvY2tpbmcgbWVjaGFuaXNtcyBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIG1vdmluZyBmcm9tIHRoZSBSVE5MIHRvIG1vcmUgZmluZS1ncmFpbmVkIGxvY2tpbmcgd2l0aCBtdXRleGVzIGFuZCBzcGlubG9ja3MuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgYW55dGhpbmcgdGhhdCBpbnRlcmFjdHMgd2l0aCByb3V0aW5nIHJ1bGVzIGFuZCB0YWJsZXMuCgpJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMuIFRoZXNlIGFyZSB0aGUgb25lcyB3aGVyZSB0aGUgbG9ja2luZyBjaGFuZ2VzIGFyZSBkaXJlY3RseSBpbXBsZW1lbnRlZC4gSSBpbml0aWFsbHkgdGhvdWdodCB0byBpbmNsdWRlIGBmaWJfZ2V0X3RhYmxlYCwgYnV0IGhvbGQgb24uIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB3aGV0aGVyIGl0IGlzIGNhbGxlZCBpbiBob3QgcGF0aHMsIHNpbmNlIHRoYXQgd291bGQgbWFrZSBpdCBtb3JlIGRpZmZpY3VsdCB0byBmdXp6IGVmZmVjdGl2ZWx5LiBBaCwgeWVzLCBpdCYjMzk7cyBjYWxsZWQgYnkgdGhlIGNvcmUgbG9va3VwIGZ1bmN0aW9ucyBsaWtlIGBmaWJfbG9va3VwYCBhbmQgYGlwX3JvdXRlX2lucHV0X25vcmVmYC4gTm90IGlkZWFsLiBMZXQmIzM5O3MgZXhjbHVkZSB0aGF0IGZvciBub3cuCgpTbywgdGhlIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGJlOiBgZmliX25ld3J1bGVgLCBgZmliX2RlbHJ1bGVgLCBgZmliX25ld190YWJsZWAsIGBmaWJfcnVsZXNfZXZlbnRgLCBgZmliNF9ydWxlX2NvbmZpZ3VyZWAsIGBmaWI0X3J1bGVfZGVsZXRlYCwgYGZpYjZfcnVsZV9jb25maWd1cmVgLCBhbmQgYGZpYjZfcnVsZV9kZWxldGVgLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHdoZXJlIHRob3NlIGFyZSBpbXBsZW1lbnRlZC4gYGZpYl9uZXdydWxlYCBhbmQgYGZpYl9kZWxydWxlYCBsaXZlIGluIGBuZXQvY29yZS9maWJfcnVsZXMuY2AuIGBmaWJfbmV3X3RhYmxlYCBpcyBpbiBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgLiBBbmQgYGZpYl9ydWxlc19ldmVudGAgaXMgYWxzbyBpbiBgbmV0L2NvcmUvZmliX3J1bGVzLmNgLgoKT2theSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGBJUF9NVUxUSVBMRV9UQUJMRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGFyZSB0aGUgY29ycmVjdCBjb25maWdzLCByaWdodD8gWWVwLCBjb25maXJtZWQuCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhciBub3c6IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZywgc28gd2Ugd2FudCB0byBoaXQgdGhlIG5ldyBsb2NraW5nIGNvZGUgZGlyZWN0bHkuIFRoZSBwcmltYXJ5IHdheSB0byB0cmlnZ2VyIHRoaXMgaXMgdGhyb3VnaCBuZXRsaW5rIG1lc3NhZ2VzIGxpa2UgYFJUTV9ORVdSVUxFYCBhbmQgYFJUTV9ERUxSVUxFYCBvciB0aHJvdWdoIG5ldGRldiBldmVudHMuIFRoZXNlIHRyaWdnZXIgdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMsIHNvIHRob3NlIGFyZSB3aGF0IHdlIHdhbnQgdG8gZnV6ei4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSBzaG91bGQgY2hlY2sgd2hldGhlciBgZmliNF9ydWxlX2RlbGV0ZWAgYW5kIGBmaWI2X3J1bGVfZGVsZXRlYCBhcmUgc3RhdGljLiBZZXMsIHRoZXkgYXJlIGluIHRoZSByZXNwZWN0aXZlIGZpbGVzIGBuZXQvaXB2NC9maWJfcnVsZXMuY2AgYW5kIGBuZXQvaXB2Ni9maWI2X3J1bGVzLmNgLiBMZXQmIzM5O3MgYWxzbyBkb3VibGUgY2hlY2sgYGZpYl9uZXdydWxlYCBhbmQgYGZpYl9kZWxydWxlYC4gWWVwLCBleHBvcnRlZCBvciBqdXN0IGdsb2JhbC4gQW5kIGBmaWJfbmV3X3RhYmxlYCBpcyBhbHNvIGV4cG9ydGVkLiBGaW5hbGx5LCBgZmliX3J1bGVzX2V2ZW50YCBpcyBhbHNvIHN0YXRpYy4KCkFscmlnaHQsIGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHNvbGlkIHRhcmdldCBsaXN0OiB0aGUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyBpbXBhY3RlZCBieSB0aGUgbG9ja2luZyBjaGFuZ2VzLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9NVUxUSVBMRV9UQUJMRVMmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmaWJfbmV3cnVsZSYjMzQ7LAogICAgJiMzNDtmaWJfZGVscnVsZSYjMzQ7LAogICAgJiMzNDtmaWJfbmV3X3RhYmxlJiMzNDssCiAgICAmIzM0O2ZpYl9ydWxlc19ldmVudCYjMzQ7LAogICAgJiMzNDtmaWI0X3J1bGVfY29uZmlndXJlJiMzNDssCiAgICAmIzM0O2ZpYjRfcnVsZV9kZWxldGUmIzM0OywKICAgICYjMzQ7ZmliNl9ydWxlX2NvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtmaWI2X3J1bGVfZGVsZXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cdTAwM2Vsb2NrIGFuZCBmaWJfdGFibGVfaGFzaF9sb2NrKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbmV0d29ya2luZyBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBSVE1fTkVXUlVMRSwgUlRNX0RFTFJVTEUpIGFuZCBuZXRkZXYgZXZlbnRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbW9kaWZpZWQgdG8gdXNlIHRoZSBuZXcgbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJUExFX1RBQkxFUyYjMzQ7LAogICAgJiMzNDtJUFY2X01VTFRJUExFX1RBQkxFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZpYl9uZXdydWxlJiMzNDssCiAgICAmIzM0O2ZpYl9kZWxydWxlJiMzNDssCiAgICAmIzM0O2ZpYl9uZXdfdGFibGUmIzM0OywKICAgICYjMzQ7ZmliX3J1bGVzX2V2ZW50JiMzNDssCiAgICAmIzM0O2ZpYjRfcnVsZV9jb25maWd1cmUmIzM0OywKICAgICYjMzQ7ZmliNF9ydWxlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDtmaWI2X3J1bGVfY29uZmlndXJlJiMzNDssCiAgICAmIzM0O2ZpYjZfcnVsZV9kZWxldGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIGZvciBGSUIgcnVsZXMgYW5kIHRhYmxlcywgcmVwbGFjaW5nIFJUTkwgd2l0aCBmaW5lci1ncmFpbmVkIG11dGV4ZXMgYW5kIHNwaW5sb2NrcyAob3BzLVx1MDAzZWxvY2sgYW5kIGZpYl90YWJsZV9oYXNoX2xvY2spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFJUTV9ORVdSVUxFLCBSVE1fREVMUlVMRSkgYW5kIG5ldGRldiBldmVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byB1c2UgdGhlIG5ldyBsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE5OjUwOjA3LjMwNjk4ODA2NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MzY1ODY0NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX01VTFRJUExFX1RBQkxFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWJfbmV3cnVsZVwiLFxuICAgIFwiZmliX2RlbHJ1bGVcIixcbiAgICBcImZpYl9uZXdfdGFibGVcIixcbiAgICBcImZpYl9ydWxlc19ldmVudFwiLFxuICAgIFwiZmliNF9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNF9ydWxlX2RlbGV0ZVwiLFxuICAgIFwiZmliNl9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNl9ydWxlX2RlbGV0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cXHUwMDNlbG9jayBhbmQgZmliX3RhYmxlX2hhc2hfbG9jaykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgUlRNX05FV1JVTEUsIFJUTV9ERUxSVUxFKSBhbmQgbmV0ZGV2IGV2ZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGxvY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxOTo1MDowNy4zMDY5OTI5NDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzU5MjM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM4NjUxOGM2MWNjNGM3ZGM0ZGFmZmQ3Y2MwOWEyMGRiOTkwNTIxNTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTk6NTA6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZmliX3J1bGVzLmggYi9pbmNsdWRlL25ldC9maWJfcnVsZXMuaFxcbmluZGV4IDdkZWUwYWU2MTZlMzIyLi5jNmI5NDc5MGZhODFlZSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oXFxuQEAgLTgyLDcgKzgyLDcgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMge1xcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBmaWJfcnVsZV9oZHIgKixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmxhdHRyICoqLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKik7XFxuLVxcdGludFxcdFxcdFxcdCgqZGVsZXRlKShzdHJ1Y3QgZmliX3J1bGUgKik7XFxuK1xcdHZvaWRcXHRcXHRcXHQoKmRlbGV0ZSkoc3RydWN0IGZpYl9ydWxlICopO1xcbiBcXHRpbnRcXHRcXHRcXHQoKmNvbXBhcmUpKHN0cnVjdCBmaWJfcnVsZSAqLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZmliX3J1bGVfaGRyICosXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBubGF0dHIgKiopO1xcbkBAIC05MywxMSArOTMsMTMgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMge1xcbiBcXHQvKiBDYWxsZWQgYWZ0ZXIgbW9kaWZpY2F0aW9ucyB0byB0aGUgcnVsZXMgc2V0LCBtdXN0IGZsdXNoXFxuIFxcdCAqIHRoZSByb3V0ZSBjYWNoZSBpZiBvbmUgZXhpc3RzLiAqL1xcbiBcXHR2b2lkXFx0XFx0XFx0KCpmbHVzaF9jYWNoZSkoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyk7XFxuK1xcdGJvb2xcXHRcXHRcXHQoKm5lZWRfcnRubCkoc3RydWN0IG5ldCAqbmV0KTtcXG4gXFxuIFxcdGludFxcdFxcdFxcdG5sZ3JvdXA7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWRcXHRydWxlc19saXN0O1xcbiBcXHRzdHJ1Y3QgbW9kdWxlXFx0XFx0Km93bmVyO1xcbiBcXHRzdHJ1Y3QgbmV0XFx0XFx0KmZyb19uZXQ7XFxuK1xcdHN0cnVjdCBtdXRleFxcdFxcdGxvY2s7XFxuIFxcdHN0cnVjdCByY3VfaGVhZFxcdFxcdHJjdTtcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX2ZpYi5oIGIvaW5jbHVkZS9uZXQvaXBfZmliLmhcXG5pbmRleCBjNjNhM2M0OTY3YWU2MS4uMGEzNTM1NWZiMGYzMzUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfZmliLmhcXG4rKysgYi9pbmNsdWRlL25ldC9pcF9maWIuaFxcbkBAIC0zMDIsNyArMzAyLDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxcbiBcXHRcXHRcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX0xPQ0FMX0lOREVYXSA6XFxuIFxcdFxcdFxcdTAwMjZuZXQtXFx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbVEFCTEVfTUFJTl9JTkRFWF07XFxuIFxcbi1cXHR0Yl9obGlzdCA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGhsaXN0X2ZpcnN0X3JjdShwdHIpKTtcXG4rXFx0LyogT25seSBmaWI0X3J1bGVzX2luaXQoKSBhZGRzIGZpYl90YWJsZS4gKi9cXG4rXFx0dGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGhsaXN0X2ZpcnN0X3JjdShwdHIpLCB0cnVlKTtcXG4gXFxuIFxcdHJldHVybiBobGlzdF9lbnRyeSh0Yl9obGlzdCwgc3RydWN0IGZpYl90YWJsZSwgdGJfaGxpc3QpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaCBiL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaFxcbmluZGV4IDZlMjdjNTY1MTRkZjU3Li41OTUwNjMyMDU1OGE5OSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmhcXG4rKysgYi9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmhcXG5AQCAtMTI3LDYgKzEyNyw3IEBAIHN0cnVjdCBuZXRuc19pcHY0IHtcXG4gXFx0YXRvbWljX3RcXHRcXHRmaWJfbnVtX3RjbGFzc2lkX3VzZXJzO1xcbiAjZW5kaWZcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWRcXHQqZmliX3RhYmxlX2hhc2g7XFxuK1xcdHNwaW5sb2NrX3RcXHRcXHRmaWJfdGFibGVfaGFzaF9sb2NrO1xcbiBcXHRzdHJ1Y3Qgc29ja1xcdFxcdCpmaWJubDtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWRcXHQqZmliX2luZm9faGFzaDtcXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0ZmliX2luZm9faGFzaF9iaXRzO1xcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWJfcnVsZXMuYyBiL25ldC9jb3JlL2ZpYl9ydWxlcy5jXFxuaW5kZXggY2YzNzRjMjA4NzMyNTguLjIyZTVlNWUxYTljNDRmIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2ZpYl9ydWxlcy5jXFxuKysrIGIvbmV0L2NvcmUvZmliX3J1bGVzLmNcXG5AQCAtNTEsNyArNTEsNiBAQCBib29sIGZpYl9ydWxlX21hdGNoYWxsKGNvbnN0IHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZV9tYXRjaGFsbCk7XFxuIFxcbiBpbnQgZmliX2RlZmF1bHRfcnVsZV9hZGQoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyxcXG4gXFx0XFx0XFx0IHUzMiBwcmVmLCB1MzIgdGFibGUpXFxuQEAgLTc4LDcgKzc3LDYgQEAgaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnItXFx1MDAzZWxpc3QsIFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QpO1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbi1FWFBPUlRfU1lNQk9MKGZpYl9kZWZhdWx0X3J1bGVfYWRkKTtcXG4gXFxuIHN0YXRpYyB1MzIgZmliX2RlZmF1bHRfcnVsZV9wcmVmKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMpXFxuIHtcXG5AQCAtMTcyLDYgKzE3MCw3IEBAIGZpYl9ydWxlc19yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqdG1wbCwgc3RydWN0IG5ldCAqbmV0KVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QpO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZvcHMtXFx1MDAzZWxvY2spO1xcbiBcXHRvcHMtXFx1MDAzZWZyb19uZXQgPSBuZXQ7XFxuIFxcbiBcXHRlcnIgPSBfX2ZpYl9ydWxlc19yZWdpc3RlcihvcHMpO1xcbkBAIC0xODIsNyArMTgxLDYgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcbiBcXHRyZXR1cm4gb3BzO1xcbiB9XFxuLUVYUE9SVF9TWU1CT0xfR1BMKGZpYl9ydWxlc19yZWdpc3Rlcik7XFxuIFxcbiBzdGF0aWMgdm9pZCBmaWJfcnVsZXNfY2xlYW51cF9vcHMoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcylcXG4ge1xcbkBAIC0yMDcsNyArMjA1LDYgQEAgdm9pZCBmaWJfcnVsZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKVxcbiBcXHRmaWJfcnVsZXNfY2xlYW51cF9vcHMob3BzKTtcXG4gXFx0a2ZyZWVfcmN1KG9wcywgcmN1KTtcXG4gfVxcbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfdW5yZWdpc3Rlcik7XFxuIFxcbiBzdGF0aWMgaW50IHVpZF9yYW5nZV9zZXQoc3RydWN0IGZpYl9rdWlkX3JhbmdlICpyYW5nZSlcXG4ge1xcbkBAIC0zNjMsNyArMzYwLDYgQEAgaW50IGZpYl9ydWxlc19sb29rdXAoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcywgc3RydWN0IGZsb3dpICpmbCxcXG4gXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2xvb2t1cCk7XFxuIFxcbiBzdGF0aWMgaW50IGNhbGxfZmliX3J1bGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4gXFx0XFx0XFx0XFx0ICBlbnVtIGZpYl9ldmVudF90eXBlIGV2ZW50X3R5cGUsXFxuQEAgLTM5MSw3ICszODcsNyBAQCBzdGF0aWMgaW50IGNhbGxfZmliX3J1bGVfbm90aWZpZXJzKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0XFx0LnJ1bGUgPSBydWxlLFxcbiBcXHR9O1xcbiBcXG4tXFx0QVNTRVJUX1JUTkxfTkVUKG5ldCk7XFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHQvKiBQYWlyZWQgd2l0aCBSRUFEX09OQ0UoKSBpbiBmaWJfcnVsZXNfc2VxKCkgKi9cXG4gXFx0V1JJVEVfT05DRShvcHMtXFx1MDAzZWZpYl9ydWxlc19zZXEsIG9wcy1cXHUwMDNlZmliX3J1bGVzX3NlcSArIDEpO1xcbkBAIC00MjMsNyArNDE5LDYgQEAgaW50IGZpYl9ydWxlc19kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgaW50IGZhbWlseSxcXG4gXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2R1bXApO1xcbiBcXG4gdW5zaWduZWQgaW50IGZpYl9ydWxlc19zZXFfcmVhZChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQsIGludCBmYW1pbHkpXFxuIHtcXG5AQCAtNDM5LDcgKzQzNCw2IEBAIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KVxcbiBcXG4gXFx0cmV0dXJuIGZpYl9ydWxlc19zZXE7XFxuIH1cXG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX3NlcV9yZWFkKTtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgZmliX3J1bGUgKnJ1bGVfZmluZChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBmaWJfcnVsZV9oZHIgKmZyaCxcXG5AQCAtNzQwLDEwICs3MzQsMTAgQEAgc3RhdGljIGludCBmaWJfbmwycnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXFxuLVxcdFxcdFxcdCAgICBzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxcbi1cXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tXFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4rc3RhdGljIGludCBmaWJfbmwycnVsZV9sb2NrZWQoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4ge1xcbiBcXHRpZiAoIXRiW0ZSQV9QUklPUklUWV0pXFxuIFxcdFxcdG5scnVsZS1cXHUwMDNlcHJlZiA9IGZpYl9kZWZhdWx0X3J1bGVfcHJlZihvcHMpO1xcbkBAIC03NTQsMTIgKzc0OCwxNCBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcbiBcXHRpZiAodGJbRlJBX0lJRk5BTUVdKSB7XFxuIFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcbi1cXHRcXHRkZXYgPSBfX2Rldl9nZXRfYnlfbmFtZShubHJ1bGUtXFx1MDAzZWZyX25ldCwgbmxydWxlLVxcdTAwM2VpaWZuYW1lKTtcXG4rXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtXFx1MDAzZWZyX25ldCwgbmxydWxlLVxcdTAwM2VpaWZuYW1lKTtcXG4gXFx0XFx0aWYgKGRldikge1xcbi1cXHRcXHRcXHRubHJ1bGUtXFx1MDAzZWlpZmluZGV4ID0gZGV2LVxcdTAwM2VpZmluZGV4O1xcbitcXHRcXHRcXHRubHJ1bGUtXFx1MDAzZWlpZmluZGV4ID0gUkVBRF9PTkNFKGRldi1cXHUwMDNlaWZpbmRleCk7XFxuIFxcdFxcdFxcdG5scnVsZS1cXHUwMDNlaWlmX2lzX2wzX21hc3RlciA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG5AQCAtNzY3LDEzICs3NjMsMTUgQEAgc3RhdGljIGludCBmaWJfbmwycnVsZV9ydG5sKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxcbiBcXHRpZiAodGJbRlJBX09JRk5BTUVdKSB7XFxuIFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcbi1cXHRcXHRkZXYgPSBfX2Rldl9nZXRfYnlfbmFtZShubHJ1bGUtXFx1MDAzZWZyX25ldCwgbmxydWxlLVxcdTAwM2VvaWZuYW1lKTtcXG4rXFx0XFx0ZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtXFx1MDAzZWZyX25ldCwgbmxydWxlLVxcdTAwM2VvaWZuYW1lKTtcXG4gXFx0XFx0aWYgKGRldikge1xcbi1cXHRcXHRcXHRubHJ1bGUtXFx1MDAzZW9pZmluZGV4ID0gZGV2LVxcdTAwM2VpZmluZGV4O1xcbitcXHRcXHRcXHRubHJ1bGUtXFx1MDAzZW9pZmluZGV4ID0gUkVBRF9PTkNFKGRldi1cXHUwMDNlaWZpbmRleCk7XFxuIFxcdFxcdFxcdG5scnVsZS1cXHUwMDNlb2lmX2lzX2wzX21hc3RlciA9IG5ldGlmX2lzX2wzX21hc3RlcihkZXYpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTg4Myw2ICs4ODEsNyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0c3RydWN0IG5sYXR0ciAqdGJbRlJBX01BWCArIDFdO1xcbiBcXHRib29sIHVzZXJfcHJpb3JpdHkgPSBmYWxzZTtcXG4gXFx0c3RydWN0IGZpYl9ydWxlX2hkciAqZnJoO1xcbitcXHRib29sIHVubG9ja19ydG5sID0gZmFsc2U7XFxuIFxcbiBcXHRmcmggPSBubG1zZ19wYXlsb2FkKG5saCwgc2l6ZW9mKCpmcmgpKTtcXG4gXFx0aWYgKCFmcmgpIHtcXG5AQCAtOTA4LDEwICs5MDcsMTMgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyb3V0O1xcbiBcXG4tXFx0aWYgKCFydG5sX2hlbGQpXFxuK1xcdGlmICghcnRubF9oZWxkIFxcdTAwMjZcXHUwMDI2IG9wcy1cXHUwMDNlbmVlZF9ydG5sIFxcdTAwMjZcXHUwMDI2IG9wcy1cXHUwMDNlbmVlZF9ydG5sKG5ldCkpIHtcXG4rXFx0XFx0dW5sb2NrX3J0bmwgPSB0cnVlO1xcbiBcXHRcXHRydG5sX25ldF9sb2NrKG5ldCk7XFxuK1xcdH1cXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4gXFxuLVxcdGVyciA9IGZpYl9ubDJydWxlX3J0bmwocnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcXG4rXFx0ZXJyID0gZmliX25sMnJ1bGVfbG9ja2VkKHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyb3V0X2ZyZWU7XFxuIFxcbkBAIC05NTksNyArOTYxLDcgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkociwgXFx1MDAyNm9wcy1cXHUwMDNlcnVsZXNfbGlzdCwgbGlzdCkge1xcbiBcXHRcXHRcXHRpZiAoci1cXHUwMDNlYWN0aW9uID09IEZSX0FDVF9HT1RPIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICByLVxcdTAwM2V0YXJnZXQgPT0gcnVsZS1cXHUwMDNlcHJlZiBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAgcnRubF9kZXJlZmVyZW5jZShyLVxcdTAwM2VjdGFyZ2V0KSA9PSBOVUxMKSB7XFxuK1xcdFxcdFxcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKHItXFx1MDAzZWN0YXJnZXQpKSB7XFxuIFxcdFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihyLVxcdTAwM2VjdGFyZ2V0LCBydWxlKTtcXG4gXFx0XFx0XFx0XFx0aWYgKC0tb3BzLVxcdTAwM2V1bnJlc29sdmVkX3J1bGVzID09IDApXFxuIFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbkBAIC05NzgsNyArOTgwLDggQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuIFxcbiBcXHRmaWJfcnVsZV9nZXQocnVsZSk7XFxuIFxcbi1cXHRpZiAoIXJ0bmxfaGVsZClcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHMtXFx1MDAzZWxvY2spO1xcbitcXHRpZiAodW5sb2NrX3J0bmwpXFxuIFxcdFxcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xcbiBcXG4gXFx0bm90aWZ5X3J1bGVfY2hhbmdlKFJUTV9ORVdSVUxFLCBydWxlLCBvcHMsIG5saCwgTkVUTElOS19DQihza2IpLnBvcnRpZCk7XFxuQEAgLTk4OCw3ICs5OTEsOCBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvdXRfZnJlZTpcXG4tXFx0aWYgKCFydG5sX2hlbGQpXFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4rXFx0aWYgKHVubG9ja19ydG5sKVxcbiBcXHRcXHRydG5sX25ldF91bmxvY2sobmV0KTtcXG4gXFx0a2ZyZWUocnVsZSk7XFxuIGVycm91dDpcXG5AQCAtMTAzNywxMCArMTA0MSw5IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycm91dDtcXG4gXFxuLVxcdGlmICghcnRubF9oZWxkKVxcbi1cXHRcXHRydG5sX25ldF9sb2NrKG5ldCk7XFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcbi1cXHRlcnIgPSBmaWJfbmwycnVsZV9ydG5sKG5scnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcXG4rXFx0ZXJyID0gZmliX25sMnJ1bGVfbG9ja2VkKG5scnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBlcnJvdXRfZnJlZTtcXG4gXFxuQEAgLTEwNTUsMTEgKzEwNTgsOCBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0XFx0Z290byBlcnJvdXRfZnJlZTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKG9wcy1cXHUwMDNlZGVsZXRlKSB7XFxuLVxcdFxcdGVyciA9IG9wcy1cXHUwMDNlZGVsZXRlKHJ1bGUpO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRnb3RvIGVycm91dF9mcmVlO1xcbi1cXHR9XFxuK1xcdGlmIChvcHMtXFx1MDAzZWRlbGV0ZSlcXG4rXFx0XFx0b3BzLVxcdTAwM2VkZWxldGUocnVsZSk7XFxuIFxcbiBcXHRpZiAocnVsZS1cXHUwMDNldHVuX2lkKVxcbiBcXHRcXHRpcF90dW5uZWxfdW5uZWVkX21ldGFkYXRhKCk7XFxuQEAgLTEwNjgsNyArMTA2OCw3IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbiBcXG4gXFx0aWYgKHJ1bGUtXFx1MDAzZWFjdGlvbiA9PSBGUl9BQ1RfR09UTykge1xcbiBcXHRcXHRvcHMtXFx1MDAzZW5yX2dvdG9fcnVsZXMtLTtcXG4tXFx0XFx0aWYgKHJ0bmxfZGVyZWZlcmVuY2UocnVsZS1cXHUwMDNlY3RhcmdldCkgPT0gTlVMTClcXG4rXFx0XFx0aWYgKCFyY3VfYWNjZXNzX3BvaW50ZXIocnVsZS1cXHUwMDNlY3RhcmdldCkpXFxuIFxcdFxcdFxcdG9wcy1cXHUwMDNldW5yZXNvbHZlZF9ydWxlcy0tO1xcbiBcXHR9XFxuIFxcbkBAIC0xMDg2LDcgKzEwODYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0XFx0aWYgKFxcdTAwMjZuLVxcdTAwM2VsaXN0ID09IFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QgfHwgbi1cXHUwMDNlcHJlZiAhPSBydWxlLVxcdTAwM2VwcmVmKVxcbiBcXHRcXHRcXHRuID0gTlVMTDtcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyLCBcXHUwMDI2b3BzLVxcdTAwM2VydWxlc19saXN0LCBsaXN0KSB7XFxuLVxcdFxcdFxcdGlmIChydG5sX2RlcmVmZXJlbmNlKHItXFx1MDAzZWN0YXJnZXQpICE9IHJ1bGUpXFxuK1xcdFxcdFxcdGlmIChyY3VfYWNjZXNzX3BvaW50ZXIoci1cXHUwMDNlY3RhcmdldCkgIT0gcnVsZSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihyLVxcdTAwM2VjdGFyZ2V0LCBuKTtcXG4gXFx0XFx0XFx0aWYgKCFuKVxcbkBAIC0xMDk2LDggKzEwOTYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFxuIFxcdGNhbGxfZmliX3J1bGVfbm90aWZpZXJzKG5ldCwgRklCX0VWRU5UX1JVTEVfREVMLCBydWxlLCBvcHMsIE5VTEwpO1xcbiBcXG4tXFx0aWYgKCFydG5sX2hlbGQpXFxuLVxcdFxcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHRub3RpZnlfcnVsZV9jaGFuZ2UoUlRNX0RFTFJVTEUsIHJ1bGUsIG9wcywgbmxoLCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcXG4gXFx0ZmliX3J1bGVfcHV0KHJ1bGUpO1xcbkBAIC0xMTA3LDggKzExMDYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvdXRfZnJlZTpcXG4tXFx0aWYgKCFydG5sX2hlbGQpXFxuLVxcdFxcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcdGtmcmVlKG5scnVsZSk7XFxuIGVycm91dDpcXG4gXFx0cnVsZXNfb3BzX3B1dChvcHMpO1xcbkBAIC0xNDAyLDI0ICsxNDAwLDMwIEBAIHN0YXRpYyBpbnQgZmliX3J1bGVzX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcywgdW5zaWduZWQgbG9uZyBldmVudCxcXG4gXFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChkZXYpO1xcbiBcXHRzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzO1xcbiBcXG4tXFx0QVNTRVJUX1JUTkwoKTtcXG4tXFxuIFxcdHN3aXRjaCAoZXZlbnQpIHtcXG4gXFx0Y2FzZSBORVRERVZfUkVHSVNURVI6XFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcXHUwMDI2bmV0LVxcdTAwM2VydWxlc19vcHMsIGxpc3QpXFxuK1xcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcXHUwMDI2bmV0LVxcdTAwM2VydWxlc19vcHMsIGxpc3QpIHtcXG4rXFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0XFx0YXR0YWNoX3J1bGVzKFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XFxuK1xcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG4gXFxuIFxcdGNhc2UgTkVUREVWX0NIQU5HRU5BTUU6XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcXHUwMDI2bmV0LVxcdTAwM2VydWxlc19vcHMsIGxpc3QpIHtcXG4rXFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3BzLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0XFx0ZGV0YWNoX3J1bGVzKFxcdTAwMjZvcHMtXFx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XFxuIFxcdFxcdFxcdGF0dGFjaF9ydWxlcyhcXHUwMDI2b3BzLVxcdTAwM2VydWxlc19saXN0LCBkZXYpO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIE5FVERFVl9VTlJFR0lTVEVSOlxcbi1cXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXFx1MDAyNm5ldC1cXHUwMDNlcnVsZXNfb3BzLCBsaXN0KVxcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXFx1MDAyNm5ldC1cXHUwMDNlcnVsZXNfb3BzLCBsaXN0KSB7XFxuK1xcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuIFxcdFxcdFxcdGRldGFjaF9ydWxlcyhcXHUwMDI2b3BzLVxcdTAwM2VydWxlc19saXN0LCBkZXYpO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wcy1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcXG5pbmRleCA0MjIxMjk3MGQ3MzU0MC4uNTRlYjcyNjk1MDkzZGEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcXG4rKysgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xcbkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBmaWI0X3J1bGVzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXG4gc3RydWN0IGZpYl90YWJsZSAqZmliX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcXG4ge1xcbi1cXHRzdHJ1Y3QgZmliX3RhYmxlICp0YiwgKmFsaWFzID0gTlVMTDtcXG4rXFx0c3RydWN0IGZpYl90YWJsZSAqdGIsICpuZXdfdGIsICphbGlhcyA9IE5VTEw7XFxuIFxcdHVuc2lnbmVkIGludCBoO1xcbiBcXG4gXFx0aWYgKGlkID09IDApXFxuQEAgLTg1LDE0ICs4NSwyNyBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxcbiBcXHRpZiAodGIpXFxuIFxcdFxcdHJldHVybiB0YjtcXG4gXFxuK1xcdGlmICghY2hlY2tfbmV0KG5ldCkpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4gXFx0aWYgKGlkID09IFJUX1RBQkxFX0xPQ0FMIFxcdTAwMjZcXHUwMDI2ICFuZXQtXFx1MDAzZWlwdjQuZmliX2hhc19jdXN0b21fcnVsZXMpXFxuIFxcdFxcdGFsaWFzID0gZmliX25ld190YWJsZShuZXQsIFJUX1RBQkxFX01BSU4pO1xcbiBcXG4tXFx0aWYgKGNoZWNrX25ldChuZXQpKVxcbi1cXHRcXHR0YiA9IGZpYl90cmllX3RhYmxlKGlkLCBhbGlhcyk7XFxuLVxcdGlmICghdGIpXFxuK1xcdG5ld190YiA9IGZpYl90cmllX3RhYmxlKGlkLCBhbGlhcyk7XFxuK1xcdGlmICghbmV3X3RiKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuK1xcdHNwaW5fbG9jayhcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xcbitcXG4rXFx0dGIgPSBmaWJfZ2V0X3RhYmxlKG5ldCwgaWQpO1xcbitcXHRpZiAodGIpIHtcXG4rXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaF9sb2NrKTtcXG4rXFx0XFx0ZmliX2ZyZWVfdGFibGUobmV3X3RiKTtcXG4rXFx0XFx0cmV0dXJuIHRiO1xcbitcXHR9XFxuK1xcbitcXHR0YiA9IG5ld190YjtcXG4rXFxuIFxcdHN3aXRjaCAoaWQpIHtcXG4gXFx0Y2FzZSBSVF9UQUJMRV9NQUlOOlxcbiBcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobmV0LVxcdTAwM2VpcHY0LmZpYl9tYWluLCB0Yik7XFxuQEAgLTEwNiwyOCArMTE5LDM1IEBAIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9uZXdfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuIFxcbiBcXHRoID0gaWQgXFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xcbiBcXHRobGlzdF9hZGRfaGVhZF9yY3UoXFx1MDAyNnRiLVxcdTAwM2V0Yl9obGlzdCwgXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXSk7XFxuK1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoX2xvY2spO1xcbitcXG4gXFx0cmV0dXJuIHRiO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGZpYl9uZXdfdGFibGUpO1xcbiBcXG4tLyogY2FsbGVyIG11c3QgaG9sZCBlaXRoZXIgcnRubCBvciByY3UgcmVhZCBsb2NrICovXFxuIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuIHtcXG4tXFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuK1xcdHN0cnVjdCBmaWJfdGFibGUgKnRiID0gTlVMTDtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7XFxuIFxcdHVuc2lnbmVkIGludCBoO1xcbiBcXG4gXFx0aWYgKGlkID09IDApXFxuIFxcdFxcdGlkID0gUlRfVEFCTEVfTUFJTjtcXG4gXFx0aCA9IGlkIFxcdTAwMjYgKEZJQl9UQUJMRV9IQVNIU1ogLSAxKTtcXG4tXFxuIFxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xcbi1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LFxcbi1cXHRcXHRcXHRcXHQgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSkge1xcbitcXG4rXFx0LyogZmliX3RhYmxlIGlzIG5vdCBkZXN0cm95ZWQgdW50aWwgaXBfZmliX25ldF9leGl0KClcXG4rXFx0ICogZXhjZXB0IGZvciB0aGUgbWVyZ2VkIG1haW4vbG9jYWwgdGFibGUuXFxuK1xcdCAqIGZpYl91bm1lcmdlKCkgaXMgY2FsbGVkIHVuZGVyIFJUTkwsIHNvIG90aGVyIHJlYWRlcnNcXG4rXFx0ICogdW5kZXIgUlROTCAoZS5nLiBmaWJfZmx1c2goKSwgZmliX2luZm9fbm90aWZ5X3VwZGF0ZSgpKVxcbitcXHQgKiBjYW4gc2FmZWx5IHRyYXZlcnNlIHRoZSBsaXN0IHdpdGggcmN1X2RlcmVmZXJlbmNlX3JhdygpLlxcbitcXHQgKi9cXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSlcXG4gXFx0XFx0aWYgKHRiLVxcdTAwM2V0Yl9pZCA9PSBpZClcXG4tXFx0XFx0XFx0cmV0dXJuIHRiO1xcbi1cXHR9XFxuLVxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdHJldHVybiB0YjtcXG4gfVxcbiAjZW5kaWYgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbiBcXG5AQCAtMTkwLDEwICsyMTAsOSBAQCB2b2lkIGZpYl9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcbiBcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCX1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxuIFxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4tXFx0XFx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcXG4gXFx0XFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuIFxcbi1cXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRiLCB0bXAsIGhlYWQsIHRiX2hsaXN0KVxcbitcXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKVxcbiBcXHRcXHRcXHRmbHVzaGVkICs9IGZpYl90YWJsZV9mbHVzaChuZXQsIHRiLCBmYWxzZSk7XFxuIFxcdH1cXG4gXFxuQEAgLTE1NjUsNiArMTU4NCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXHRuZXQtXFx1MDAzZWlwdjQuc3lzY3RsX2ZpYl9tdWx0aXBhdGhfaGFzaF9maWVsZHMgPVxcbiBcXHRcXHRGSUJfTVVMVElQQVRIX0hBU0hfRklFTERfREVGQVVMVF9NQVNLO1xcbiAjZW5kaWZcXG4rXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaF9sb2NrKTtcXG4gXFxuIFxcdC8qIEF2b2lkIGZhbHNlIHNoYXJpbmcgOiBVc2UgYXQgbGVhc3QgYSBmdWxsIGNhY2hlIGxpbmUgKi9cXG4gXFx0c2l6ZSA9IG1heF90KHNpemVfdCwgc2l6ZSwgTDFfQ0FDSEVfQllURVMpO1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfcnVsZXMuYyBiL25ldC9pcHY0L2ZpYl9ydWxlcy5jXFxuaW5kZXggZTA2OGE1YmFjZTczZjIuLjRlZGIwZGNhN2JlOGExIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2ZpYl9ydWxlcy5jXFxuKysrIGIvbmV0L2lwdjQvZmliX3J1bGVzLmNcXG5AQCAtMzAxLDEwICszMDEsMTIgQEAgc3RhdGljIGludCBmaWI0X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICAgIGZpYjRfbmwycnVsZV9kc2NwX21hc2sodGJbRlJBX0RTQ1BfTUFTS10sIHJ1bGU0LCBleHRhY2spIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byBlcnJvdXQ7XFxuIFxcbi1cXHQvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovXFxuLVxcdGVyciA9IGZpYl91bm1lcmdlKG5ldCk7XFxuLVxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gZXJyb3V0O1xcbitcXHRpZiAoIW5ldC1cXHUwMDNlaXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcykge1xcbitcXHRcXHQvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovXFxuK1xcdFxcdGVyciA9IGZpYl91bm1lcmdlKG5ldCk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdGdvdG8gZXJyb3V0O1xcbitcXHR9XFxuIFxcbiBcXHRpZiAocnVsZS1cXHUwMDNldGFibGUgPT0gUlRfVEFCTEVfVU5TUEVDIFxcdTAwMjZcXHUwMDI2ICFydWxlLVxcdTAwM2VsM21kZXYpIHtcXG4gXFx0XFx0aWYgKHJ1bGUtXFx1MDAzZWFjdGlvbiA9PSBGUl9BQ1RfVE9fVEJMKSB7XFxuQEAgLTM0OSw3ICszNTEsNyBAQCBzdGF0aWMgaW50IGZpYjRfcnVsZV9jb25maWd1cmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxcbitzdGF0aWMgdm9pZCBmaWI0X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBydWxlLVxcdTAwM2Vmcl9uZXQ7XFxuIFxcbkBAIC0zNjEsOCArMzYzLDYgQEAgc3RhdGljIGludCBmaWI0X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcXG4gXFx0aWYgKG5ldC1cXHUwMDNlaXB2NC5maWJfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSlcXG4gXFx0XFx0bmV0LVxcdTAwM2VpcHY0LmZpYl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdC0tO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbXBhcmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3QgZmliX3J1bGVfaGRyICpmcmgsXFxuQEAgLTQ2MCw2ICs0NjAsMTEgQEAgc3RhdGljIHZvaWQgZmliNF9ydWxlX2ZsdXNoX2NhY2hlKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMpXFxuIFxcdHJ0X2NhY2hlX2ZsdXNoKG9wcy1cXHUwMDNlZnJvX25ldCk7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGZpYjRfcnVsZV9uZWVkX3J0bmwoc3RydWN0IG5ldCAqbmV0KVxcbit7XFxuK1xcdHJldHVybiAhbmV0LVxcdTAwM2VpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgX19uZXRfaW5pdGNvbnN0IGZpYjRfcnVsZXNfb3BzX3RlbXBsYXRlID0ge1xcbiBcXHQuZmFtaWx5XFx0XFx0PSBBRl9JTkVULFxcbiBcXHQucnVsZV9zaXplXFx0PSBzaXplb2Yoc3RydWN0IGZpYjRfcnVsZSksXFxuQEAgLTQ3Myw2ICs0NzgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgX19uZXRfaW5pdGNvbnN0IGZpYjRfcnVsZXNfb3BzX3RlbXBsYXRlID0ge1xcbiBcXHQuZmlsbFxcdFxcdD0gZmliNF9ydWxlX2ZpbGwsXFxuIFxcdC5ubG1zZ19wYXlsb2FkXFx0PSBmaWI0X3J1bGVfbmxtc2dfcGF5bG9hZCxcXG4gXFx0LmZsdXNoX2NhY2hlXFx0PSBmaWI0X3J1bGVfZmx1c2hfY2FjaGUsXFxuK1xcdC5uZWVkX3J0bmxcXHQ9IGZpYjRfcnVsZV9uZWVkX3J0bmwsXFxuIFxcdC5ubGdyb3VwXFx0PSBSVE5MR1JQX0lQVjRfUlVMRSxcXG4gXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX3RyaWUuYyBiL25ldC9pcHY0L2ZpYl90cmllLmNcXG5pbmRleCBlMTFkYzg2Y2VkYTBiZS4uZDFkMzQyZDcxNDhlODIgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvZmliX3RyaWUuY1xcbisrKyBiL25ldC9pcHY0L2ZpYl90cmllLmNcXG5AQCAtMjEzNyw4ICsyMTM3LDcgQEAgdm9pZCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sX2luZm8gKmluZm8pXFxuIFxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXFx1MDAyNm5ldC1cXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcXG4gXFx0XFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XFxuIFxcbi1cXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LFxcbi1cXHRcXHRcXHRcXHRcXHQgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSlcXG4rXFx0XFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSlcXG4gXFx0XFx0XFx0X19maWJfaW5mb19ub3RpZnlfdXBkYXRlKG5ldCwgdGIsIGluZm8pO1xcbiBcXHR9XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jIGIvbmV0L2lwdjYvZmliNl9ydWxlcy5jXFxuaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjA0ZGFiOTMyOWQwY2Y1IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xcbisrKyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xcbkBAIC00ODAsMTUgKzQ4MCwxMyBAQCBzdGF0aWMgaW50IGZpYjZfcnVsZV9jb25maWd1cmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IGZpYjZfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxcbitzdGF0aWMgdm9pZCBmaWI2X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBydWxlLVxcdTAwM2Vmcl9uZXQ7XFxuIFxcbiBcXHRpZiAobmV0LVxcdTAwM2VpcHY2LmZpYjZfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSlcXG4gXFx0XFx0bmV0LVxcdTAwM2VpcHY2LmZpYjZfcnVsZXNfcmVxdWlyZV9mbGRpc3NlY3QtLTtcXG4tXFxuLVxcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGZpYjZfcnVsZV9jb21wYXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IGZpYl9ydWxlX2hkciAqZnJoLFxcbkBAIC02MzcsMjEgKzYzNSwxNCBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNl9ydWxlc19uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIFxcdGdvdG8gb3V0O1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGZpYjZfcnVsZXNfbmV0X2V4aXRfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2xpc3QpXFxuK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliNl9ydWxlc19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIHtcXG4tXFx0c3RydWN0IG5ldCAqbmV0O1xcbi1cXG4tXFx0cnRubF9sb2NrKCk7XFxuLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkobmV0LCBuZXRfbGlzdCwgZXhpdF9saXN0KSB7XFxuLVxcdFxcdGZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC1cXHUwMDNlaXB2Ni5maWI2X3J1bGVzX29wcyk7XFxuLVxcdFxcdGNvbmRfcmVzY2hlZCgpO1xcbi1cXHR9XFxuLVxcdHJ0bmxfdW5sb2NrKCk7XFxuK1xcdGZpYl9ydWxlc191bnJlZ2lzdGVyKG5ldC1cXHUwMDNlaXB2Ni5maWI2X3J1bGVzX29wcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZmliNl9ydWxlc19uZXRfb3BzID0ge1xcbiBcXHQuaW5pdCA9IGZpYjZfcnVsZXNfbmV0X2luaXQsXFxuLVxcdC5leGl0X2JhdGNoID0gZmliNl9ydWxlc19uZXRfZXhpdF9iYXRjaCxcXG4rXFx0LmV4aXQgPSBmaWI2X3J1bGVzX25ldF9leGl0LFxcbiB9O1xcbiBcXG4gaW50IF9faW5pdCBmaWI2X3J1bGVzX2luaXQodm9pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTk6NTA6MDcuNzg1MjU0MDY3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg4NzU4ODYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSVBMRV9UQUJMRVNcIixcbiAgICBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmliX25ld3J1bGVcIixcbiAgICBcImZpYl9kZWxydWxlXCIsXG4gICAgXCJmaWJfbmV3X3RhYmxlXCIsXG4gICAgXCJmaWJfcnVsZXNfZXZlbnRcIixcbiAgICBcImZpYjRfcnVsZV9jb25maWd1cmVcIixcbiAgICBcImZpYjRfcnVsZV9kZWxldGVcIixcbiAgICBcImZpYjZfcnVsZV9jb25maWd1cmVcIixcbiAgICBcImZpYjZfcnVsZV9kZWxldGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBtZWNoYW5pc20gZm9yIEZJQiBydWxlcyBhbmQgdGFibGVzLCByZXBsYWNpbmcgUlROTCB3aXRoIGZpbmVyLWdyYWluZWQgbXV0ZXhlcyBhbmQgc3BpbmxvY2tzIChvcHMtXFx1MDAzZWxvY2sgYW5kIGZpYl90YWJsZV9oYXNoX2xvY2spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFJUTV9ORVdSVUxFLCBSVE1fREVMUlVMRSkgYW5kIG5ldGRldiBldmVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byB1c2UgdGhlIG5ldyBsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjODY1MThjNjFjYzRjN2RjNGRhZmZkN2NjMDlhMjBkYjk5MDUyMTUwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTk6NTA6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaCBiL2luY2x1ZGUvbmV0L2ZpYl9ydWxlcy5oXG5pbmRleCA3ZGVlMGFlNjE2ZTMyMi4uYzZiOTQ3OTBmYTgxZWUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9maWJfcnVsZXMuaFxuKysrIGIvaW5jbHVkZS9uZXQvZmliX3J1bGVzLmhcbkBAIC04Miw3ICs4Miw3IEBAIHN0cnVjdCBmaWJfcnVsZXNfb3BzIHtcbiBcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZmliX3J1bGVfaGRyICosXG4gXHRcdFx0XHRcdCAgICAgc3RydWN0IG5sYXR0ciAqKixcbiBcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICopO1xuLVx0aW50XHRcdFx0KCpkZWxldGUpKHN0cnVjdCBmaWJfcnVsZSAqKTtcbitcdHZvaWRcdFx0XHQoKmRlbGV0ZSkoc3RydWN0IGZpYl9ydWxlICopO1xuIFx0aW50XHRcdFx0KCpjb21wYXJlKShzdHJ1Y3QgZmliX3J1bGUgKixcbiBcdFx0XHRcdFx0ICAgc3RydWN0IGZpYl9ydWxlX2hkciAqLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3QgbmxhdHRyICoqKTtcbkBAIC05MywxMSArOTMsMTMgQEAgc3RydWN0IGZpYl9ydWxlc19vcHMge1xuIFx0LyogQ2FsbGVkIGFmdGVyIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJ1bGVzIHNldCwgbXVzdCBmbHVzaFxuIFx0ICogdGhlIHJvdXRlIGNhY2hlIGlmIG9uZSBleGlzdHMuICovXG4gXHR2b2lkXHRcdFx0KCpmbHVzaF9jYWNoZSkoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyk7XG4rXHRib29sXHRcdFx0KCpuZWVkX3J0bmwpKHN0cnVjdCBuZXQgKm5ldCk7XG4gXG4gXHRpbnRcdFx0XHRubGdyb3VwO1xuIFx0c3RydWN0IGxpc3RfaGVhZFx0cnVsZXNfbGlzdDtcbiBcdHN0cnVjdCBtb2R1bGVcdFx0Km93bmVyO1xuIFx0c3RydWN0IG5ldFx0XHQqZnJvX25ldDtcbitcdHN0cnVjdCBtdXRleFx0XHRsb2NrO1xuIFx0c3RydWN0IHJjdV9oZWFkXHRcdHJjdTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX2ZpYi5oIGIvaW5jbHVkZS9uZXQvaXBfZmliLmhcbmluZGV4IGM2M2EzYzQ5NjdhZTYxLi4wYTM1MzU1ZmIwZjMzNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX2ZpYi5oXG4rKysgYi9pbmNsdWRlL25ldC9pcF9maWIuaFxuQEAgLTMwMiw3ICszMDIsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXG4gXHRcdFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX0xPQ0FMX0lOREVYXSA6XG4gXHRcdFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW1RBQkxFX01BSU5fSU5ERVhdO1xuIFxuLVx0dGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcnRubChobGlzdF9maXJzdF9yY3UocHRyKSk7XG4rXHQvKiBPbmx5IGZpYjRfcnVsZXNfaW5pdCgpIGFkZHMgZmliX3RhYmxlLiAqL1xuK1x0dGJfaGxpc3QgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGhsaXN0X2ZpcnN0X3JjdShwdHIpLCB0cnVlKTtcbiBcbiBcdHJldHVybiBobGlzdF9lbnRyeSh0Yl9obGlzdCwgc3RydWN0IGZpYl90YWJsZSwgdGJfaGxpc3QpO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmggYi9pbmNsdWRlL25ldC9uZXRucy9pcHY0LmhcbmluZGV4IDZlMjdjNTY1MTRkZjU3Li41OTUwNjMyMDU1OGE5OSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldG5zL2lwdjQuaFxuKysrIGIvaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oXG5AQCAtMTI3LDYgKzEyNyw3IEBAIHN0cnVjdCBuZXRuc19pcHY0IHtcbiBcdGF0b21pY190XHRcdGZpYl9udW1fdGNsYXNzaWRfdXNlcnM7XG4gI2VuZGlmXG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZFx0KmZpYl90YWJsZV9oYXNoO1xuK1x0c3BpbmxvY2tfdFx0XHRmaWJfdGFibGVfaGFzaF9sb2NrO1xuIFx0c3RydWN0IHNvY2tcdFx0KmZpYm5sO1xuIFx0c3RydWN0IGhsaXN0X2hlYWRcdCpmaWJfaW5mb19oYXNoO1xuIFx0dW5zaWduZWQgaW50XHRcdGZpYl9pbmZvX2hhc2hfYml0cztcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWJfcnVsZXMuYyBiL25ldC9jb3JlL2ZpYl9ydWxlcy5jXG5pbmRleCBjZjM3NGMyMDg3MzI1OC4uMjJlNWU1ZTFhOWM0NGYgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9maWJfcnVsZXMuY1xuKysrIGIvbmV0L2NvcmUvZmliX3J1bGVzLmNcbkBAIC01MSw3ICs1MSw2IEBAIGJvb2wgZmliX3J1bGVfbWF0Y2hhbGwoY29uc3Qgc3RydWN0IGZpYl9ydWxlICpydWxlKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVfbWF0Y2hhbGwpO1xuIFxuIGludCBmaWJfZGVmYXVsdF9ydWxlX2FkZChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLFxuIFx0XHRcdCB1MzIgcHJlZiwgdTMyIHRhYmxlKVxuQEAgLTc4LDcgKzc3LDYgQEAgaW50IGZpYl9kZWZhdWx0X3J1bGVfYWRkKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnItXHUwMDNlbGlzdCwgXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QpO1xuIFx0cmV0dXJuIDA7XG4gfVxuLUVYUE9SVF9TWU1CT0woZmliX2RlZmF1bHRfcnVsZV9hZGQpO1xuIFxuIHN0YXRpYyB1MzIgZmliX2RlZmF1bHRfcnVsZV9wcmVmKHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMpXG4ge1xuQEAgLTE3Miw2ICsxNzAsNyBAQCBmaWJfcnVsZXNfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpYl9ydWxlc19vcHMgKnRtcGwsIHN0cnVjdCBuZXQgKm5ldClcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCk7XG4rXHRtdXRleF9pbml0KFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcdG9wcy1cdTAwM2Vmcm9fbmV0ID0gbmV0O1xuIFxuIFx0ZXJyID0gX19maWJfcnVsZXNfcmVnaXN0ZXIob3BzKTtcbkBAIC0xODIsNyArMTgxLDYgQEAgZmliX3J1bGVzX3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzICp0bXBsLCBzdHJ1Y3QgbmV0ICpuZXQpXG4gXG4gXHRyZXR1cm4gb3BzO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfcmVnaXN0ZXIpO1xuIFxuIHN0YXRpYyB2b2lkIGZpYl9ydWxlc19jbGVhbnVwX29wcyhzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKVxuIHtcbkBAIC0yMDcsNyArMjA1LDYgQEAgdm9pZCBmaWJfcnVsZXNfdW5yZWdpc3RlcihzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzKVxuIFx0ZmliX3J1bGVzX2NsZWFudXBfb3BzKG9wcyk7XG4gXHRrZnJlZV9yY3Uob3BzLCByY3UpO1xuIH1cbi1FWFBPUlRfU1lNQk9MX0dQTChmaWJfcnVsZXNfdW5yZWdpc3Rlcik7XG4gXG4gc3RhdGljIGludCB1aWRfcmFuZ2Vfc2V0KHN0cnVjdCBmaWJfa3VpZF9yYW5nZSAqcmFuZ2UpXG4ge1xuQEAgLTM2Myw3ICszNjAsNiBAQCBpbnQgZmliX3J1bGVzX2xvb2t1cChzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzLCBzdHJ1Y3QgZmxvd2kgKmZsLFxuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2xvb2t1cCk7XG4gXG4gc3RhdGljIGludCBjYWxsX2ZpYl9ydWxlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4gXHRcdFx0XHQgIGVudW0gZmliX2V2ZW50X3R5cGUgZXZlbnRfdHlwZSxcbkBAIC0zOTEsNyArMzg3LDcgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9ydWxlX25vdGlmaWVycyhzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdC5ydWxlID0gcnVsZSxcbiBcdH07XG4gXG4tXHRBU1NFUlRfUlROTF9ORVQobmV0KTtcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFxuIFx0LyogUGFpcmVkIHdpdGggUkVBRF9PTkNFKCkgaW4gZmliX3J1bGVzX3NlcSgpICovXG4gXHRXUklURV9PTkNFKG9wcy1cdTAwM2VmaWJfcnVsZXNfc2VxLCBvcHMtXHUwMDNlZmliX3J1bGVzX3NlcSArIDEpO1xuQEAgLTQyMyw3ICs0MTksNiBAQCBpbnQgZmliX3J1bGVzX2R1bXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCBpbnQgZmFtaWx5LFxuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX2R1bXApO1xuIFxuIHVuc2lnbmVkIGludCBmaWJfcnVsZXNfc2VxX3JlYWQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBpbnQgZmFtaWx5KVxuIHtcbkBAIC00MzksNyArNDM0LDYgQEAgdW5zaWduZWQgaW50IGZpYl9ydWxlc19zZXFfcmVhZChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQsIGludCBmYW1pbHkpXG4gXG4gXHRyZXR1cm4gZmliX3J1bGVzX3NlcTtcbiB9XG4tRVhQT1JUX1NZTUJPTF9HUEwoZmliX3J1bGVzX3NlcV9yZWFkKTtcbiBcbiBzdGF0aWMgc3RydWN0IGZpYl9ydWxlICpydWxlX2ZpbmQoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyxcbiBcdFx0XHRcdCAgc3RydWN0IGZpYl9ydWxlX2hkciAqZnJoLFxuQEAgLTc0MCwxMCArNzM0LDEwIEBAIHN0YXRpYyBpbnQgZmliX25sMnJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZmliX25sMnJ1bGVfcnRubChzdHJ1Y3QgZmliX3J1bGUgKm5scnVsZSxcbi1cdFx0XHQgICAgc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcyxcbi1cdFx0XHQgICAgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi1cdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3N0YXRpYyBpbnQgZmliX25sMnJ1bGVfbG9ja2VkKHN0cnVjdCBmaWJfcnVsZSAqbmxydWxlLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBmaWJfcnVsZXNfb3BzICpvcHMsXG4rXHRcdFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSxcbitcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuIFx0aWYgKCF0YltGUkFfUFJJT1JJVFldKVxuIFx0XHRubHJ1bGUtXHUwMDNlcHJlZiA9IGZpYl9kZWZhdWx0X3J1bGVfcHJlZihvcHMpO1xuQEAgLTc1NCwxMiArNzQ4LDE0IEBAIHN0YXRpYyBpbnQgZmliX25sMnJ1bGVfcnRubChzdHJ1Y3QgZmliX3J1bGUgKm5scnVsZSxcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXG4gXHRpZiAodGJbRlJBX0lJRk5BTUVdKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG4tXHRcdGRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS1cdTAwM2Vmcl9uZXQsIG5scnVsZS1cdTAwM2VpaWZuYW1lKTtcbitcdFx0ZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtXHUwMDNlZnJfbmV0LCBubHJ1bGUtXHUwMDNlaWlmbmFtZSk7XG4gXHRcdGlmIChkZXYpIHtcbi1cdFx0XHRubHJ1bGUtXHUwMDNlaWlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbitcdFx0XHRubHJ1bGUtXHUwMDNlaWlmaW5kZXggPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWlmaW5kZXgpO1xuIFx0XHRcdG5scnVsZS1cdTAwM2VpaWZfaXNfbDNfbWFzdGVyID0gbmV0aWZfaXNfbDNfbWFzdGVyKGRldik7XG4gXHRcdH1cbiBcdH1cbkBAIC03NjcsMTMgKzc2MywxNSBAQCBzdGF0aWMgaW50IGZpYl9ubDJydWxlX3J0bmwoc3RydWN0IGZpYl9ydWxlICpubHJ1bGUsXG4gXHRpZiAodGJbRlJBX09JRk5BTUVdKSB7XG4gXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG4tXHRcdGRldiA9IF9fZGV2X2dldF9ieV9uYW1lKG5scnVsZS1cdTAwM2Vmcl9uZXQsIG5scnVsZS1cdTAwM2VvaWZuYW1lKTtcbitcdFx0ZGV2ID0gZGV2X2dldF9ieV9uYW1lX3JjdShubHJ1bGUtXHUwMDNlZnJfbmV0LCBubHJ1bGUtXHUwMDNlb2lmbmFtZSk7XG4gXHRcdGlmIChkZXYpIHtcbi1cdFx0XHRubHJ1bGUtXHUwMDNlb2lmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbitcdFx0XHRubHJ1bGUtXHUwMDNlb2lmaW5kZXggPSBSRUFEX09OQ0UoZGV2LVx1MDAzZWlmaW5kZXgpO1xuIFx0XHRcdG5scnVsZS1cdTAwM2VvaWZfaXNfbDNfbWFzdGVyID0gbmV0aWZfaXNfbDNfbWFzdGVyKGRldik7XG4gXHRcdH1cbiBcdH1cbiBcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTg4Myw2ICs4ODEsNyBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdHN0cnVjdCBubGF0dHIgKnRiW0ZSQV9NQVggKyAxXTtcbiBcdGJvb2wgdXNlcl9wcmlvcml0eSA9IGZhbHNlO1xuIFx0c3RydWN0IGZpYl9ydWxlX2hkciAqZnJoO1xuK1x0Ym9vbCB1bmxvY2tfcnRubCA9IGZhbHNlO1xuIFxuIFx0ZnJoID0gbmxtc2dfcGF5bG9hZChubGgsIHNpemVvZigqZnJoKSk7XG4gXHRpZiAoIWZyaCkge1xuQEAgLTkwOCwxMCArOTA3LDEzIEBAIGludCBmaWJfbmV3cnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJvdXQ7XG4gXG4tXHRpZiAoIXJ0bmxfaGVsZClcbitcdGlmICghcnRubF9oZWxkIFx1MDAyNlx1MDAyNiBvcHMtXHUwMDNlbmVlZF9ydG5sIFx1MDAyNlx1MDAyNiBvcHMtXHUwMDNlbmVlZF9ydG5sKG5ldCkpIHtcbitcdFx0dW5sb2NrX3J0bmwgPSB0cnVlO1xuIFx0XHRydG5sX25ldF9sb2NrKG5ldCk7XG4rXHR9XG4rXHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbi1cdGVyciA9IGZpYl9ubDJydWxlX3J0bmwocnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcbitcdGVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChydWxlLCBvcHMsIHRiLCBleHRhY2spO1xuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJvdXRfZnJlZTtcbiBcbkBAIC05NTksNyArOTYxLDcgQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkociwgXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QsIGxpc3QpIHtcbiBcdFx0XHRpZiAoci1cdTAwM2VhY3Rpb24gPT0gRlJfQUNUX0dPVE8gXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIHItXHUwMDNldGFyZ2V0ID09IHJ1bGUtXHUwMDNlcHJlZiBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgcnRubF9kZXJlZmVyZW5jZShyLVx1MDAzZWN0YXJnZXQpID09IE5VTEwpIHtcbitcdFx0XHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihyLVx1MDAzZWN0YXJnZXQpKSB7XG4gXHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoci1cdTAwM2VjdGFyZ2V0LCBydWxlKTtcbiBcdFx0XHRcdGlmICgtLW9wcy1cdTAwM2V1bnJlc29sdmVkX3J1bGVzID09IDApXG4gXHRcdFx0XHRcdGJyZWFrO1xuQEAgLTk3OCw3ICs5ODAsOCBAQCBpbnQgZmliX25ld3J1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcbiBcdGZpYl9ydWxlX2dldChydWxlKTtcbiBcbi1cdGlmICghcnRubF9oZWxkKVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbitcdGlmICh1bmxvY2tfcnRubClcbiBcdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4gXG4gXHRub3RpZnlfcnVsZV9jaGFuZ2UoUlRNX05FV1JVTEUsIHJ1bGUsIG9wcywgbmxoLCBORVRMSU5LX0NCKHNrYikucG9ydGlkKTtcbkBAIC05ODgsNyArOTkxLDggQEAgaW50IGZpYl9uZXdydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvdXRfZnJlZTpcbi1cdGlmICghcnRubF9oZWxkKVxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbitcdGlmICh1bmxvY2tfcnRubClcbiBcdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4gXHRrZnJlZShydWxlKTtcbiBlcnJvdXQ6XG5AQCAtMTAzNywxMCArMTA0MSw5IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJvdXQ7XG4gXG4tXHRpZiAoIXJ0bmxfaGVsZClcbi1cdFx0cnRubF9uZXRfbG9jayhuZXQpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4gXG4tXHRlcnIgPSBmaWJfbmwycnVsZV9ydG5sKG5scnVsZSwgb3BzLCB0YiwgZXh0YWNrKTtcbitcdGVyciA9IGZpYl9ubDJydWxlX2xvY2tlZChubHJ1bGUsIG9wcywgdGIsIGV4dGFjayk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycm91dF9mcmVlO1xuIFxuQEAgLTEwNTUsMTEgKzEwNTgsOCBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcdFx0Z290byBlcnJvdXRfZnJlZTtcbiBcdH1cbiBcbi1cdGlmIChvcHMtXHUwMDNlZGVsZXRlKSB7XG4tXHRcdGVyciA9IG9wcy1cdTAwM2VkZWxldGUocnVsZSk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBlcnJvdXRfZnJlZTtcbi1cdH1cbitcdGlmIChvcHMtXHUwMDNlZGVsZXRlKVxuK1x0XHRvcHMtXHUwMDNlZGVsZXRlKHJ1bGUpO1xuIFxuIFx0aWYgKHJ1bGUtXHUwMDNldHVuX2lkKVxuIFx0XHRpcF90dW5uZWxfdW5uZWVkX21ldGFkYXRhKCk7XG5AQCAtMTA2OCw3ICsxMDY4LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXG4gXHRpZiAocnVsZS1cdTAwM2VhY3Rpb24gPT0gRlJfQUNUX0dPVE8pIHtcbiBcdFx0b3BzLVx1MDAzZW5yX2dvdG9fcnVsZXMtLTtcbi1cdFx0aWYgKHJ0bmxfZGVyZWZlcmVuY2UocnVsZS1cdTAwM2VjdGFyZ2V0KSA9PSBOVUxMKVxuK1x0XHRpZiAoIXJjdV9hY2Nlc3NfcG9pbnRlcihydWxlLVx1MDAzZWN0YXJnZXQpKVxuIFx0XHRcdG9wcy1cdTAwM2V1bnJlc29sdmVkX3J1bGVzLS07XG4gXHR9XG4gXG5AQCAtMTA4Niw3ICsxMDg2LDcgQEAgaW50IGZpYl9kZWxydWxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4gXHRcdGlmIChcdTAwMjZuLVx1MDAzZWxpc3QgPT0gXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QgfHwgbi1cdTAwM2VwcmVmICE9IHJ1bGUtXHUwMDNlcHJlZilcbiBcdFx0XHRuID0gTlVMTDtcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShyLCBcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgbGlzdCkge1xuLVx0XHRcdGlmIChydG5sX2RlcmVmZXJlbmNlKHItXHUwMDNlY3RhcmdldCkgIT0gcnVsZSlcbitcdFx0XHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKHItXHUwMDNlY3RhcmdldCkgIT0gcnVsZSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihyLVx1MDAzZWN0YXJnZXQsIG4pO1xuIFx0XHRcdGlmICghbilcbkBAIC0xMDk2LDggKzEwOTYsNyBAQCBpbnQgZmliX2RlbHJ1bGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbiBcbiBcdGNhbGxfZmliX3J1bGVfbm90aWZpZXJzKG5ldCwgRklCX0VWRU5UX1JVTEVfREVMLCBydWxlLCBvcHMsIE5VTEwpO1xuIFxuLVx0aWYgKCFydG5sX2hlbGQpXG4tXHRcdHJ0bmxfbmV0X3VubG9jayhuZXQpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcbiBcdG5vdGlmeV9ydWxlX2NoYW5nZShSVE1fREVMUlVMRSwgcnVsZSwgb3BzLCBubGgsIE5FVExJTktfQ0Ioc2tiKS5wb3J0aWQpO1xuIFx0ZmliX3J1bGVfcHV0KHJ1bGUpO1xuQEAgLTExMDcsOCArMTEwNiw3IEBAIGludCBmaWJfZGVscnVsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyb3V0X2ZyZWU6XG4tXHRpZiAoIXJ0bmxfaGVsZClcbi1cdFx0cnRubF9uZXRfdW5sb2NrKG5ldCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0a2ZyZWUobmxydWxlKTtcbiBlcnJvdXQ6XG4gXHRydWxlc19vcHNfcHV0KG9wcyk7XG5AQCAtMTQwMiwyNCArMTQwMCwzMCBAQCBzdGF0aWMgaW50IGZpYl9ydWxlc19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGRldik7XG4gXHRzdHJ1Y3QgZmliX3J1bGVzX29wcyAqb3BzO1xuIFxuLVx0QVNTRVJUX1JUTkwoKTtcbi1cbiBcdHN3aXRjaCAoZXZlbnQpIHtcbiBcdGNhc2UgTkVUREVWX1JFR0lTVEVSOlxuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG9wcywgXHUwMDI2bmV0LVx1MDAzZXJ1bGVzX29wcywgbGlzdClcbitcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsIFx1MDAyNm5ldC1cdTAwM2VydWxlc19vcHMsIGxpc3QpIHtcbitcdFx0XHRtdXRleF9sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbiBcdFx0XHRhdHRhY2hfcnVsZXMoXHUwMDI2b3BzLVx1MDAzZXJ1bGVzX2xpc3QsIGRldik7XG4rXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wcy1cdTAwM2Vsb2NrKTtcbitcdFx0fVxuIFx0XHRicmVhaztcbiBcbiBcdGNhc2UgTkVUREVWX0NIQU5HRU5BTUU6XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcdTAwMjZuZXQtXHUwMDNlcnVsZXNfb3BzLCBsaXN0KSB7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4gXHRcdFx0ZGV0YWNoX3J1bGVzKFx1MDAyNm9wcy1cdTAwM2VydWxlc19saXN0LCBkZXYpO1xuIFx0XHRcdGF0dGFjaF9ydWxlcyhcdTAwMjZvcHMtXHUwMDNlcnVsZXNfbGlzdCwgZGV2KTtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2b3BzLVx1MDAzZWxvY2spO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBORVRERVZfVU5SRUdJU1RFUjpcbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShvcHMsIFx1MDAyNm5ldC1cdTAwM2VydWxlc19vcHMsIGxpc3QpXG4rXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkob3BzLCBcdTAwMjZuZXQtXHUwMDNlcnVsZXNfb3BzLCBsaXN0KSB7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4gXHRcdFx0ZGV0YWNoX3J1bGVzKFx1MDAyNm9wcy1cdTAwM2VydWxlc19saXN0LCBkZXYpO1xuK1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZvcHMtXHUwMDNlbG9jayk7XG4rXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMgYi9uZXQvaXB2NC9maWJfZnJvbnRlbmQuY1xuaW5kZXggNDIyMTI5NzBkNzM1NDAuLjU0ZWI3MjY5NTA5M2RhIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNcbisrKyBiL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jXG5AQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNF9ydWxlc19pbml0KHN0cnVjdCBuZXQgKm5ldClcbiBcbiBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuIHtcbi1cdHN0cnVjdCBmaWJfdGFibGUgKnRiLCAqYWxpYXMgPSBOVUxMO1xuK1x0c3RydWN0IGZpYl90YWJsZSAqdGIsICpuZXdfdGIsICphbGlhcyA9IE5VTEw7XG4gXHR1bnNpZ25lZCBpbnQgaDtcbiBcbiBcdGlmIChpZCA9PSAwKVxuQEAgLTg1LDE0ICs4NSwyNyBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuIFx0aWYgKHRiKVxuIFx0XHRyZXR1cm4gdGI7XG4gXG4rXHRpZiAoIWNoZWNrX25ldChuZXQpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbiBcdGlmIChpZCA9PSBSVF9UQUJMRV9MT0NBTCBcdTAwMjZcdTAwMjYgIW5ldC1cdTAwM2VpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzKVxuIFx0XHRhbGlhcyA9IGZpYl9uZXdfdGFibGUobmV0LCBSVF9UQUJMRV9NQUlOKTtcbiBcbi1cdGlmIChjaGVja19uZXQobmV0KSlcbi1cdFx0dGIgPSBmaWJfdHJpZV90YWJsZShpZCwgYWxpYXMpO1xuLVx0aWYgKCF0YilcbitcdG5ld190YiA9IGZpYl90cmllX3RhYmxlKGlkLCBhbGlhcyk7XG4rXHRpZiAoIW5ld190YilcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4rXHRzcGluX2xvY2soXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hfbG9jayk7XG4rXG4rXHR0YiA9IGZpYl9nZXRfdGFibGUobmV0LCBpZCk7XG4rXHRpZiAodGIpIHtcbitcdFx0c3Bpbl91bmxvY2soXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hfbG9jayk7XG4rXHRcdGZpYl9mcmVlX3RhYmxlKG5ld190Yik7XG4rXHRcdHJldHVybiB0YjtcbitcdH1cbitcbitcdHRiID0gbmV3X3RiO1xuK1xuIFx0c3dpdGNoIChpZCkge1xuIFx0Y2FzZSBSVF9UQUJMRV9NQUlOOlxuIFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobmV0LVx1MDAzZWlwdjQuZmliX21haW4sIHRiKTtcbkBAIC0xMDYsMjggKzExOSwzNSBAQCBzdHJ1Y3QgZmliX3RhYmxlICpmaWJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxuIFxuIFx0aCA9IGlkIFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xuIFx0aGxpc3RfYWRkX2hlYWRfcmN1KFx1MDAyNnRiLVx1MDAzZXRiX2hsaXN0LCBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXSk7XG4rXG4rXHRzcGluX3VubG9jayhcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaF9sb2NrKTtcbitcbiBcdHJldHVybiB0YjtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZmliX25ld190YWJsZSk7XG4gXG4tLyogY2FsbGVyIG11c3QgaG9sZCBlaXRoZXIgcnRubCBvciByY3UgcmVhZCBsb2NrICovXG4gc3RydWN0IGZpYl90YWJsZSAqZmliX2dldF90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcbiB7XG4tXHRzdHJ1Y3QgZmliX3RhYmxlICp0YjtcbitcdHN0cnVjdCBmaWJfdGFibGUgKnRiID0gTlVMTDtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuIFx0dW5zaWduZWQgaW50IGg7XG4gXG4gXHRpZiAoaWQgPT0gMClcbiBcdFx0aWQgPSBSVF9UQUJMRV9NQUlOO1xuIFx0aCA9IGlkIFx1MDAyNiAoRklCX1RBQkxFX0hBU0hTWiAtIDEpO1xuLVxuIFx0aGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY0LmZpYl90YWJsZV9oYXNoW2hdO1xuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCxcbi1cdFx0XHRcdCBsb2NrZGVwX3J0bmxfaXNfaGVsZCgpKSB7XG4rXG4rXHQvKiBmaWJfdGFibGUgaXMgbm90IGRlc3Ryb3llZCB1bnRpbCBpcF9maWJfbmV0X2V4aXQoKVxuK1x0ICogZXhjZXB0IGZvciB0aGUgbWVyZ2VkIG1haW4vbG9jYWwgdGFibGUuXG4rXHQgKiBmaWJfdW5tZXJnZSgpIGlzIGNhbGxlZCB1bmRlciBSVE5MLCBzbyBvdGhlciByZWFkZXJzXG4rXHQgKiB1bmRlciBSVE5MIChlLmcuIGZpYl9mbHVzaCgpLCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKCkpXG4rXHQgKiBjYW4gc2FmZWx5IHRyYXZlcnNlIHRoZSBsaXN0IHdpdGggcmN1X2RlcmVmZXJlbmNlX3JhdygpLlxuK1x0ICovXG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LCB0cnVlKVxuIFx0XHRpZiAodGItXHUwMDNldGJfaWQgPT0gaWQpXG4tXHRcdFx0cmV0dXJuIHRiO1xuLVx0fVxuLVx0cmV0dXJuIE5VTEw7XG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRyZXR1cm4gdGI7XG4gfVxuICNlbmRpZiAvKiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTICovXG4gXG5AQCAtMTkwLDEwICsyMTAsOSBAQCB2b2lkIGZpYl9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQpXG4gXG4gXHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUJfVEFCTEVfSEFTSFNaOyBoKyspIHtcbiBcdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2NC5maWJfdGFibGVfaGFzaFtoXTtcbi1cdFx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcbiBcdFx0c3RydWN0IGZpYl90YWJsZSAqdGI7XG4gXG4tXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGIsIHRtcCwgaGVhZCwgdGJfaGxpc3QpXG4rXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGJfaGxpc3QsIHRydWUpXG4gXHRcdFx0Zmx1c2hlZCArPSBmaWJfdGFibGVfZmx1c2gobmV0LCB0YiwgZmFsc2UpO1xuIFx0fVxuIFxuQEAgLTE1NjUsNiArMTU4NCw3IEBAIHN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF9maWJfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0bmV0LVx1MDAzZWlwdjQuc3lzY3RsX2ZpYl9tdWx0aXBhdGhfaGFzaF9maWVsZHMgPVxuIFx0XHRGSUJfTVVMVElQQVRIX0hBU0hfRklFTERfREVGQVVMVF9NQVNLO1xuICNlbmRpZlxuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hfbG9jayk7XG4gXG4gXHQvKiBBdm9pZCBmYWxzZSBzaGFyaW5nIDogVXNlIGF0IGxlYXN0IGEgZnVsbCBjYWNoZSBsaW5lICovXG4gXHRzaXplID0gbWF4X3Qoc2l6ZV90LCBzaXplLCBMMV9DQUNIRV9CWVRFUyk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX3J1bGVzLmMgYi9uZXQvaXB2NC9maWJfcnVsZXMuY1xuaW5kZXggZTA2OGE1YmFjZTczZjIuLjRlZGIwZGNhN2JlOGExIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZmliX3J1bGVzLmNcbisrKyBiL25ldC9pcHY0L2ZpYl9ydWxlcy5jXG5AQCAtMzAxLDEwICszMDEsMTIgQEAgc3RhdGljIGludCBmaWI0X3J1bGVfY29uZmlndXJlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAgICBmaWI0X25sMnJ1bGVfZHNjcF9tYXNrKHRiW0ZSQV9EU0NQX01BU0tdLCBydWxlNCwgZXh0YWNrKSBcdTAwM2MgMClcbiBcdFx0Z290byBlcnJvdXQ7XG4gXG4tXHQvKiBzcGxpdCBsb2NhbC9tYWluIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IHNwbGl0ICovXG4tXHRlcnIgPSBmaWJfdW5tZXJnZShuZXQpO1xuLVx0aWYgKGVycilcbi1cdFx0Z290byBlcnJvdXQ7XG4rXHRpZiAoIW5ldC1cdTAwM2VpcHY0LmZpYl9oYXNfY3VzdG9tX3J1bGVzKSB7XG4rXHRcdC8qIHNwbGl0IGxvY2FsL21haW4gaWYgdGhleSBhcmUgbm90IGFscmVhZHkgc3BsaXQgKi9cbitcdFx0ZXJyID0gZmliX3VubWVyZ2UobmV0KTtcbitcdFx0aWYgKGVycilcbitcdFx0XHRnb3RvIGVycm91dDtcbitcdH1cbiBcbiBcdGlmIChydWxlLVx1MDAzZXRhYmxlID09IFJUX1RBQkxFX1VOU1BFQyBcdTAwMjZcdTAwMjYgIXJ1bGUtXHUwMDNlbDNtZGV2KSB7XG4gXHRcdGlmIChydWxlLVx1MDAzZWFjdGlvbiA9PSBGUl9BQ1RfVE9fVEJMKSB7XG5AQCAtMzQ5LDcgKzM1MSw3IEBAIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbmZpZ3VyZShzdHJ1Y3QgZmliX3J1bGUgKnJ1bGUsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuK3N0YXRpYyB2b2lkIGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuIHtcbiBcdHN0cnVjdCBuZXQgKm5ldCA9IHJ1bGUtXHUwMDNlZnJfbmV0O1xuIFxuQEAgLTM2MSw4ICszNjMsNiBAQCBzdGF0aWMgaW50IGZpYjRfcnVsZV9kZWxldGUoc3RydWN0IGZpYl9ydWxlICpydWxlKVxuIFx0aWYgKG5ldC1cdTAwM2VpcHY0LmZpYl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdCBcdTAwMjZcdTAwMjZcbiBcdCAgICBmaWJfcnVsZV9yZXF1aXJlc19mbGRpc3NlY3QocnVsZSkpXG4gXHRcdG5ldC1cdTAwM2VpcHY0LmZpYl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdC0tO1xuLVxuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZmliNF9ydWxlX2NvbXBhcmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3QgZmliX3J1bGVfaGRyICpmcmgsXG5AQCAtNDYwLDYgKzQ2MCwxMSBAQCBzdGF0aWMgdm9pZCBmaWI0X3J1bGVfZmx1c2hfY2FjaGUoc3RydWN0IGZpYl9ydWxlc19vcHMgKm9wcylcbiBcdHJ0X2NhY2hlX2ZsdXNoKG9wcy1cdTAwM2Vmcm9fbmV0KTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgZmliNF9ydWxlX25lZWRfcnRubChzdHJ1Y3QgbmV0ICpuZXQpXG4re1xuK1x0cmV0dXJuICFuZXQtXHUwMDNlaXB2NC5maWJfaGFzX2N1c3RvbV9ydWxlcztcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBmaWJfcnVsZXNfb3BzIF9fbmV0X2luaXRjb25zdCBmaWI0X3J1bGVzX29wc190ZW1wbGF0ZSA9IHtcbiBcdC5mYW1pbHlcdFx0PSBBRl9JTkVULFxuIFx0LnJ1bGVfc2l6ZVx0PSBzaXplb2Yoc3RydWN0IGZpYjRfcnVsZSksXG5AQCAtNDczLDYgKzQ3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmliX3J1bGVzX29wcyBfX25ldF9pbml0Y29uc3QgZmliNF9ydWxlc19vcHNfdGVtcGxhdGUgPSB7XG4gXHQuZmlsbFx0XHQ9IGZpYjRfcnVsZV9maWxsLFxuIFx0Lm5sbXNnX3BheWxvYWRcdD0gZmliNF9ydWxlX25sbXNnX3BheWxvYWQsXG4gXHQuZmx1c2hfY2FjaGVcdD0gZmliNF9ydWxlX2ZsdXNoX2NhY2hlLFxuK1x0Lm5lZWRfcnRubFx0PSBmaWI0X3J1bGVfbmVlZF9ydG5sLFxuIFx0Lm5sZ3JvdXBcdD0gUlROTEdSUF9JUFY0X1JVTEUsXG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiB9O1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl90cmllLmMgYi9uZXQvaXB2NC9maWJfdHJpZS5jXG5pbmRleCBlMTFkYzg2Y2VkYTBiZS4uZDFkMzQyZDcxNDhlODIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfdHJpZS5jXG4rKysgYi9uZXQvaXB2NC9maWJfdHJpZS5jXG5AQCAtMjEzNyw4ICsyMTM3LDcgQEAgdm9pZCBmaWJfaW5mb19ub3RpZnlfdXBkYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sX2luZm8gKmluZm8pXG4gXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjQuZmliX3RhYmxlX2hhc2hbaF07XG4gXHRcdHN0cnVjdCBmaWJfdGFibGUgKnRiO1xuIFxuLVx0XHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiX2hsaXN0LFxuLVx0XHRcdFx0XHQgbG9ja2RlcF9ydG5sX2lzX2hlbGQoKSlcbitcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0Yl9obGlzdCwgdHJ1ZSlcbiBcdFx0XHRfX2ZpYl9pbmZvX25vdGlmeV91cGRhdGUobmV0LCB0YiwgaW5mbyk7XG4gXHR9XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2ZpYjZfcnVsZXMuYyBiL25ldC9pcHY2L2ZpYjZfcnVsZXMuY1xuaW5kZXggZTFiMmI0ZmE2ZTE4OTAuLjA0ZGFiOTMyOWQwY2Y1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvZmliNl9ydWxlcy5jXG4rKysgYi9uZXQvaXB2Ni9maWI2X3J1bGVzLmNcbkBAIC00ODAsMTUgKzQ4MCwxMyBAQCBzdGF0aWMgaW50IGZpYjZfcnVsZV9jb25maWd1cmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tc3RhdGljIGludCBmaWI2X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcbitzdGF0aWMgdm9pZCBmaWI2X3J1bGVfZGVsZXRlKHN0cnVjdCBmaWJfcnVsZSAqcnVsZSlcbiB7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQgPSBydWxlLVx1MDAzZWZyX25ldDtcbiBcbiBcdGlmIChuZXQtXHUwMDNlaXB2Ni5maWI2X3J1bGVzX3JlcXVpcmVfZmxkaXNzZWN0IFx1MDAyNlx1MDAyNlxuIFx0ICAgIGZpYl9ydWxlX3JlcXVpcmVzX2ZsZGlzc2VjdChydWxlKSlcbiBcdFx0bmV0LVx1MDAzZWlwdjYuZmliNl9ydWxlc19yZXF1aXJlX2ZsZGlzc2VjdC0tO1xuLVxuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZmliNl9ydWxlX2NvbXBhcmUoc3RydWN0IGZpYl9ydWxlICpydWxlLCBzdHJ1Y3QgZmliX3J1bGVfaGRyICpmcmgsXG5AQCAtNjM3LDIxICs2MzUsMTQgQEAgc3RhdGljIGludCBfX25ldF9pbml0IGZpYjZfcnVsZXNfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0Z290byBvdXQ7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliNl9ydWxlc19uZXRfZXhpdF9iYXRjaChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRfbGlzdClcbitzdGF0aWMgdm9pZCBfX25ldF9leGl0IGZpYjZfcnVsZXNfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxuIHtcbi1cdHN0cnVjdCBuZXQgKm5ldDtcbi1cbi1cdHJ0bmxfbG9jaygpO1xuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShuZXQsIG5ldF9saXN0LCBleGl0X2xpc3QpIHtcbi1cdFx0ZmliX3J1bGVzX3VucmVnaXN0ZXIobmV0LVx1MDAzZWlwdjYuZmliNl9ydWxlc19vcHMpO1xuLVx0XHRjb25kX3Jlc2NoZWQoKTtcbi1cdH1cbi1cdHJ0bmxfdW5sb2NrKCk7XG4rXHRmaWJfcnVsZXNfdW5yZWdpc3RlcihuZXQtXHUwMDNlaXB2Ni5maWI2X3J1bGVzX29wcyk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZmliNl9ydWxlc19uZXRfb3BzID0ge1xuIFx0LmluaXQgPSBmaWI2X3J1bGVzX25ldF9pbml0LFxuLVx0LmV4aXRfYmF0Y2ggPSBmaWI2X3J1bGVzX25ldF9leGl0X2JhdGNoLFxuK1x0LmV4aXQgPSBmaWI2X3J1bGVzX25ldF9leGl0LFxuIH07XG4gXG4gaW50IF9faW5pdCBmaWI2X3J1bGVzX2luaXQodm9pZClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE5OjUwOjA3Ljc4NTI1NTU5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNTA3NjI5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgcGFydCBkZWFsaW5nIHdpdGggYGZpYl9ydWxlc2AgYW5kIGBmaWJfdGFibGVgIGxvZ2ljLiBJdCdzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3IsIGFzIEkgY2FuIHNlZSBpdCdzIG1ha2luZyBzb21lIGZ1bmRhbWVudGFsIGNoYW5nZXMgdG8gaG93IHRoZXNlIHRhYmxlcyBhcmUgbWFuYWdlZC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhbHRlcmF0aW9uIG9mIGBmaWJfcnVsZXNfb3BzLVx1MDAzZWRlbGV0ZWAgdG8gcmV0dXJuIGB2b2lkYCBpbnN0ZWFkIG9mIGBpbnRgLiBUaGF0J3MgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2UgdG8gdGhlIGVycm9yIGhhbmRsaW5nIG1vZGVsLlxuXG5UaGUgcmVhbCBtZWF0IG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGxvY2tpbmcgc3RyYXRlZ3kuIEluc3RlYWQgb2YgcmVseWluZyBzb2xlbHkgb24gYHJ0bmxfbG9jaygpYCwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBgbXV0ZXhgIGxvY2sgd2l0aGluIGBmaWJfcnVsZXNfb3BzYCB0byBwcm90ZWN0IGBmaWJfcnVsZXNfbGlzdGAuIEl0IGFsc28gdGhyb3dzIGluIGEgYG5lZWRfcnRubGAgZmxhZyB0byBgZmliX3J1bGVzX29wc2Agd2hpY2ggd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UuIFRoaXMgZmluZS1ncmFpbmVkIGxvY2tpbmcgYXBwcm9hY2ggaXMgaW50ZXJlc3RpbmcuIFdlJ3JlIG1vdmluZyBhd2F5IGZyb20gdGhlIG1vcmUgY29hcnNlLWdyYWluZWQgUlROTCBsb2NrLCBpbmRpY2F0aW5nIGEgcG90ZW50aWFsIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBtYXliZSBhIG1vdmUgdG93YXJkcyBtb3JlIGNvbmN1cnJlbnQgYWNjZXNzLlxuXG5JIHNlZSB0aGF0IGBmaWJfbmV3cnVsZWAgYW5kIGBmaWJfZGVscnVsZWAgYXJlIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgYG9wcy1cdTAwM2Vsb2NrYCBpbnN0ZWFkIG9mIGBydG5sX2xvY2soKWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBTaW1pbGFybHksIGBmaWJfbmV3X3RhYmxlYCBpcyBub3cgdXNpbmcgYSBgZmliX3RhYmxlX2hhc2hfbG9ja2Agc3BpbmxvY2ssIHdoaWNoIEkgYXNzdW1lIGlzIGZvciBwcm90ZWN0aW5nIHRoZSBoYXNoIHRhYmxlJ3MgaW50ZWdyaXR5IGR1cmluZyB0YWJsZSBjcmVhdGlvbi4gYGZpYl9nZXRfdGFibGVgIGlzIHVzaW5nIGVpdGhlciBgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZGAgb3IgYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgd2l0aCBgdHJ1ZWAsIHdoaWNoIGlzIGRlZmluaXRlbHkgaW1wb3J0YW50LCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbnRleHQgZm9yIHRoaXMgdXNhZ2UsIHZlcmlmeWluZyBpdHMgdXNlIGNhc2Ugd2l0aCB0aGUgb3RoZXIgbG9ja3MgaW4gdGhpcyBwYXRjaC4gVGhlIGBmaWJfcnVsZXNfZXZlbnRgIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIGdhaW5pbmcgYSBsb2NrIHRvIHByb3RlY3QgYXR0YWNoaW5nIGFuZCBkZXRhY2hpbmcgcnVsZXM7IGxpa2VseSBjcml0aWNhbCBmb3IgYSBtdWx0aXRocmVhZGVkIGVudmlyb25tZW50LiBBbmQgdGhlIGBmaWI2X3J1bGVzX25ldF9leGl0X2JhdGNoYCBpcyBiZWluZyByZWZhY3RvcmVkIHRvIGBmaWI2X3J1bGVzX25ldF9leGl0YCB3aXRoIHRoZSByZW1vdmFsIG9mIGBydG5sX2xvY2soKWAsIHdoaWNoIGRlZmluaXRlbHkgY2hhbmdlcyB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIElQdjYgRklCIHJ1bGVzIG1hbmFnZW1lbnQuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHN0YW5kcG9pbnQsIHRoaXMgcGF0Y2ggaXMgYSBjb3JlIG5ldHdvcmtpbmcgY2hhbmdlLCBhbmQgdGhlIGludHJvZHVjdGlvbiBvZiBsb2NrbGVzcyBvciBmaW5lci1ncmFpbmVkIGxvY2tpbmcgZGVmaW5pdGVseSBhbHRlcnMgdGhlIGV4ZWN1dGlvbiBmbG93LCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEJlY2F1c2Ugb2YgdGhpcywgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gc3BlY2lmaWMgZnVuY3Rpb25zOiBgZmliX25ld3J1bGVgLCBgZmliX2RlbHJ1bGVgLCBgZmliX25ld190YWJsZWAsIGBmaWJfZ2V0X3RhYmxlYCwgYGZpYl9ydWxlc19ldmVudGAsIGFuZCB0aGUgSVB2NCBhbmQgSVB2NiBydWxlIGNvbmZpZ3VyYXRpb24gYW5kIGRlbGV0aW9uIGZ1bmN0aW9ucyAoYGZpYjRfcnVsZV9jb25maWd1cmVgLCBgZmliNF9ydWxlX2RlbGV0ZWAsIGBmaWI2X3J1bGVfY29uZmlndXJlYCwgYGZpYjZfcnVsZV9kZWxldGVgKS5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gVGhlIGBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTYCBhbmQgYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2AgYXJlIGdvaW5nIHRvIGJlIGtleSwgZXNwZWNpYWxseSBmb3IgdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIGNoYW5nZXMgaW4gYGZpYl9uZXdfdGFibGVgIGFuZCBgZmliX2dldF90YWJsZWAsIGFuZCBhbHNvIHRoZSBgZmliNl9ydWxlc19uZXRgIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBwcm9wZXJseSBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTA4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTk6NTA6MTUuOTM2MDIwMjQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODQ1MzgwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9NTM9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnOjU0OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy01NS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvaXhwNHh4X2RlZmNvbmZpZz0yND1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL2FybS9jb25maWdzL2l4cDR4eF9kZWZjb25maWc6MjU6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9hcm0vY29uZmlncy9peHA0eHhfZGVmY29uZmlnLTI2LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc9NTA9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc6NTE6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWctNTItQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3Fjb21fZGVmY29uZmlnPTM4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvcWNvbV9kZWZjb25maWc6Mzk6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9hcm0vY29uZmlncy9xY29tX2RlZmNvbmZpZy00MC1DT05GSUdfSVBfUk9VVEVfVkVSQk9TRT15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTExOT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjEyMDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEyMS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTM1PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTM2OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTM3LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWc9MTc9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWc6MTg6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWctMTktQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZzozMzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2dwcl9kZWZjb25maWc9MjQ9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZ3ByX2RlZmNvbmZpZzoyNTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9ncHJfZGVmY29uZmlnLTI2LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnPTM2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZzozNzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWctMzgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZz00NT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZzo0NjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZy00Ny1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9NTc9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo1ODpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTU5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTI5PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZzozMDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMzEtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTMzPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6MzQ6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy0zNS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWc9Mjg9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzoyOTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnLTMwLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZz0zMD1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnOjMxOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWctMzItQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnPTMxPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc6MzI6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZy0zMy1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnPTMyPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnLTM0LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc9Mjk9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc6MzA6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWctMzEtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MzI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTQ3PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjQ4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTQ5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcWlfbGI2MF9kZWZjb25maWc9MjU9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvcWlfbGI2MF9kZWZjb25maWc6MjY6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvcWlfbGI2MF9kZWZjb25maWctMjctQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9yYjUzMl9kZWZjb25maWc9MzA9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9taXBzL2NvbmZpZ3MvcmI1MzJfZGVmY29uZmlnOjMxOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JiNTMyX2RlZmNvbmZpZy0zMi1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3JzOTBfZGVmY29uZmlnPTQ3PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JzOTBfZGVmY29uZmlnOjQ4OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JzOTBfZGVmY29uZmlnLTQ5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvcnQzMDV4X2RlZmNvbmZpZz0zMT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy9ydDMwNXhfZGVmY29uZmlnOjMyOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3J0MzA1eF9kZWZjb25maWctMzMtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZz0zMz1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZzozNDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy94d2F5X2RlZmNvbmZpZy0zNS1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnPTQ2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnOjQ3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnLTQ4LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc9NDI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc6NDM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWctNDQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZz02MD1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZzo2MTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy02Mi1DT05GSUdfSVBfUElNU01fVjE9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZz04Nj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjg3OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctODgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTM4PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxMzk6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTE0MC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMjk9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjEzMDpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTMxLUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWc9MzI9Q09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUj15XFxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWc6MzM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9zaC9jb25maWdzL3NlNzcxMl9kZWZjb25maWctMzQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZzozMzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIxX2RlZmNvbmZpZy0zNC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnPTMzPUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnOjM0OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnLTM1LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3RpdGFuX2RlZmNvbmZpZz0zMj1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjMzOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWctMzQtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnPTY2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6Njc6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02OC1DT05GSUdfSVBfUk9VVEVfTVVMVElQQVRIPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZz02Nz1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6Njg6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTY5LUNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eVxcbi0tXFxuYXJjaC94dGVuc2EvY29uZmlncy9jb21tb25fZGVmY29uZmlnPTE2PUNPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9eVxcbmFyY2gveHRlbnNhL2NvbmZpZ3MvY29tbW9uX2RlZmNvbmZpZzoxNzpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3h0ZW5zYS9jb25maWdzL2NvbW1vbl9kZWZjb25maWctMTgtQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSD15XFxuLS1cXG5pbmNsdWRlL25ldC9pcF9maWIuaD0xNjY9dm9pZCBfX25ldF9leGl0IGZpYjRfc2VtYW50aWNzX2V4aXQoc3RydWN0IG5ldCAqbmV0KTtcXG5pbmNsdWRlL25ldC9pcF9maWIuaC0xNjctXFxuaW5jbHVkZS9uZXQvaXBfZmliLmg6MTY4OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxuaW5jbHVkZS9uZXQvaXBfZmliLmgtMTY5LXN0cnVjdCBmaWJfcnVsZTtcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTE4Nz1zdHJ1Y3QgZmliX3Jlc3VsdF9ubCB7XFxuLS1cXG5pbmNsdWRlL25ldC9pcF9maWIuaC0yMDEtXFxuaW5jbHVkZS9uZXQvaXBfZmliLmg6MjAyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxuaW5jbHVkZS9uZXQvaXBfZmliLmgtMjAzLSNkZWZpbmUgRklCX1RBQkxFX0hBU0hTWiAyNTZcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTI4OT12b2lkIGZpYl9mcmVlX3RhYmxlKHN0cnVjdCBmaWJfdGFibGUgKnRiKTtcXG5pbmNsdWRlL25ldC9pcF9maWIuaC0yOTAtXFxuaW5jbHVkZS9uZXQvaXBfZmliLmg6MjkxOiNpZm5kZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTI5Mi1cXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTM1Nz1zdGF0aWMgaW5saW5lIGJvb2wgZmliNF9ydWxlc19lYXJseV9mbG93X2Rpc3NlY3Qoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxuaW5jbHVkZS9uZXQvaXBfZmliLmgtMzYzLX1cXG5pbmNsdWRlL25ldC9pcF9maWIuaDozNjQ6I2Vsc2UgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTM2NS1pbnQgX19uZXRfaW5pdCBmaWI0X3J1bGVzX2luaXQoc3RydWN0IG5ldCAqbmV0KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTQxNz1zdGF0aWMgaW5saW5lIGJvb2wgZmliNF9ydWxlc19lYXJseV9mbG93X2Rpc3NlY3Qoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxuaW5jbHVkZS9uZXQvaXBfZmliLmgtNDM3LVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjQzODojZW5kaWYgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTQzOS1cXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oPTU5OD1zdGF0aWMgaW5saW5lIHZvaWQgZmliX2NvbWJpbmVfaXRhZyh1MzIgKml0YWcsIGNvbnN0IHN0cnVjdCBmaWJfcmVzdWx0ICpyZXMpXFxuLS1cXG5pbmNsdWRlL25ldC9pcF9maWIuaC02MDEtXFx0c3RydWN0IGZpYl9uaF9jb21tb24gKm5oYyA9IHJlcy1cXHUwMDNlbmhjO1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjYwMjojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTYwMy1cXHR1MzIgcnRhZztcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTYxMy1cXG5pbmNsdWRlL25ldC9pcF9maWIuaDo2MTQ6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcXG5pbmNsdWRlL25ldC9pcF9maWIuaC02MTUtXFx0cnRhZyA9IHJlcy1cXHUwMDNldGNsYXNzaWQ7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0Lmg9NTU9c3RydWN0IG5ldG5zX2lwdjQge1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTExNi1cXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRyYV9tdXRleDtcXG5pbmNsdWRlL25ldC9uZXRucy9pcHY0Lmg6MTE3OiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxuaW5jbHVkZS9uZXQvbmV0bnMvaXB2NC5oLTExOC1cXHRzdHJ1Y3QgZmliX3J1bGVzX29wc1xcdCpydWxlc19vcHM7XFxuLS1cXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yMC0jaWYgZGVmaW5lZChDT05GSUdfSVBWNikgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVMpXFxubmV0L2NvcmUvZmliX3J1bGVzLmM6MjE6I2lmZGVmIENPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yMi0jZGVmaW5lIElORElSRUNUX0NBTExfTVQoZiwgZjIsIGYxLCAuLi4pIFxcXFxcXG4tLVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTI2LSNlbmRpZlxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jOjI3OiNlbGlmIGRlZmluZWQoQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUylcXG5uZXQvY29yZS9maWJfcnVsZXMuYy0yOC0jZGVmaW5lIElORElSRUNUX0NBTExfTVQoZiwgZjIsIGYxLCAuLi4pIElORElSRUNUX0NBTExfMShmLCBmMSwgX19WQV9BUkdTX18pXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT0yMT1vYmotJChDT05GSUdfUFJPQ19GUykgKz0gcHJvYy5vXFxubmV0L2lwdjQvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUykgKz0gZmliX3J1bGVzLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0yMy1vYmotJChDT05GSUdfSVBfTVJPVVRFKSArPSBpcG1yLm9cXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUwLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjUxOiNpZm5kZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTUyLVxcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTI5PXN0cnVjdCBmaWJfdGFibGUgKmZpYl9nZXRfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTEtfVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1MjojZW5kaWYgLyogQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUyAqL1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1My1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNTQ9c3RhdGljIHZvaWQgZmliX3JlcGxhY2VfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliX3RhYmxlICpvbGQsXFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNTYte1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jOjE1NzojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE1OC1cXHRzd2l0Y2ggKG5ldy1cXHUwMDNldGJfaWQpIHtcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jPTE2MTA9c3RhdGljIHZvaWQgaXBfZmliX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2MTQtXFx0QVNTRVJUX1JUTkxfTkVUKG5ldCk7XFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTYxNTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2MTYtXFx0UkNVX0lOSVRfUE9JTlRFUihuZXQtXFx1MDAzZWlwdjQuZmliX21haW4sIE5VTEwpO1xcbi0tXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM9MTYzNz1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2NzAtXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmM6MTY3MTojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L2ZpYl9mcm9udGVuZC5jLTE2NzItXFx0ZmliNF9ydWxlc19leGl0KG5ldCk7XFxuLS1cXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYz0xNjkxPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZmliX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYy0xNjkyLXtcXG5uZXQvaXB2NC9maWJfZnJvbnRlbmQuYzoxNjkzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjQvZmliX2Zyb250ZW5kLmMtMTY5NC1cXHRmaWI0X3J1bGVzX2V4aXQobmV0KTtcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9MTU4ND1zdGF0aWMgdm9pZCBydF9zZXRfbmV4dGhvcChzdHJ1Y3QgcnRhYmxlICpydCwgX19iZTMyIGRhZGRyLFxcbi0tXFxubmV0L2lwdjQvcm91dGUuYy0xNjM1LSNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRFxcbm5ldC9pcHY0L3JvdXRlLmM6MTYzNjojaWZkZWYgQ09ORklHX0lQX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY0L3JvdXRlLmMtMTYzNy1cXHRzZXRfY2xhc3NfdGFnKHJ0LCByZXMtXFx1MDAzZXRjbGFzc2lkKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND03Mj1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6NzM6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTc0LUNPTkZJR19JUFY2X1NFRzZfTFdUVU5ORUw9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTQwPUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbDo0MTpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtNDItQ09ORklHX0lQVjZfU0VHNl9MV1RVTk5FTD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ9MzU9Q09ORklHX0lQX01VTFRJQ0FTVD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjM2OkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NC0zNy1DT05GSUdfSlVNUF9MQUJFTD15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTU3PUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6NTg6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC01OS1DT05GSUdfSVBWNl9TRUc2X0xXVFVOTkVMPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTEwOD1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDoxMDk6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMTEwLUNPTkZJR19JUF9QSU1TTV9WMT15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbj05NT1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbjo5NjpDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbi05Ny1DT05GSUdfSVBfTkZfRklMVEVSPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWc9NT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbXB0Y3AvY29uZmlnOjY6Q09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL2NvbmZpZy03LUNPTkZJR19JUF9ORl9GSUxURVI9bVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZz0zMT1DT05GSUdfSVBfQURWQU5DRURfUk9VVEVSPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy93aXJlZ3VhcmQvcWVtdS9rZXJuZWwuY29uZmlnOjMyOkNPTkZJR19JUF9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3dpcmVndWFyZC9xZW11L2tlcm5lbC5jb25maWctMzMtQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTk6NTA6MTguNTIwNTYzNzE1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4MTg5NTQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcywgYXMgaWYgSSdtIGRpcmVjdGx5IGV4cGVyaWVuY2luZyBpdDpcblxuKipFeGFtaW5pbmcgYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGZvY3VzLiBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciByb3V0aW5nLiBTcGVjaWZpY2FsbHksIEknbSBhbHJlYWR5IGVudmlzaW9uaW5nIHRoZSByb3V0aW5nIHRhYmxlIGluZnJhc3RydWN0dXJlIGFuZCBob3cgZW5hYmxpbmcgdGhpcyBvcHRpb24gY2hhbmdlcyB0aGluZ3Mgd2l0aGluIHRoZSBJUHY2IGNvbnRleHQuIElzIHRoaXMgYWJvdXQgcG9saWN5IHJvdXRpbmc/IFRyYWZmaWMgbWFuYWdlbWVudD8gVGhlIGFiaWxpdHkgdG8gc2VncmVnYXRlIHRyYWZmaWMgYmFzZWQgb24gZGlmZmVyZW50IHNvdXJjZSBvciBkZXN0aW5hdGlvbiBhZGRyZXNzIHByZWZpeGVzPyBJJ20gcGljdHVyaW5nIHRoZSBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIOKAkyB0aGUgcm91dGUgdGFibGVzLCB0aGUgRklCIChGb3J3YXJkaW5nIEluZm9ybWF0aW9uIEJhc2UpIGxvb2t1cHMsIHRoZSBpbnRlcmZhY2UgY29uZmlndXJhdGlvbnMuIEknbSB3b25kZXJpbmcgaWYgdGhpcyBpcyBhIHJlY2VudCBhZGRpdGlvbiwgb3IgYSBsb25nLXN0YW5kaW5nIGZlYXR1cmUgdGhhdCdzIGZpbmFsbHkgZ2V0dGluZyBzb21lIG1vcmUgYXR0ZW50aW9uLiBXaGF0IGFyZSB0aGUgY29tbW9uIHVzZSBjYXNlcyB3aGVyZSBtdWx0aXBsZSBJUHY2IHJvdXRpbmcgdGFibGVzIGJlY29tZSBlc3NlbnRpYWw/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbmV0d29yayBuYW1lc3BhY2VzLCBvciBwZXJoYXBzIHNvcGhpc3RpY2F0ZWQgdHJhZmZpYyBlbmdpbmVlcmluZyBzY2VuYXJpb3M/IEkgbmVlZCB0byBxdWlja2x5IHNjYW4gdGhlIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgZGVwZW5kZW5jaWVzIG9yIGNhdmVhdHMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHRpZWQgdG8gdGhpcyBvbmUsIGltcGFjdGluZyBpdHMgZnVuY3Rpb25hbGl0eT8gQW5kIHdoYXQgaXMgdGhlIHBlcmZvcm1hbmNlIGltcGFjdD8gVGhpcyBjb3VsZCBzaWduaWZpY2FudGx5IGFmZmVjdCB0aGUgb3ZlcmFsbCBwYWNrZXQgZm9yd2FyZGluZyByYXRlLiBPa2F5LCB0aW1lIHRvIHNlZSBpZiB0aGUgc291cmNlIGNvZGUgY29tbWVudHMgZ2l2ZSBtZSBhbnkgbW9yZSBpbnNpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ4NCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE5OjUwOjIzLjYwMjQ2MTA4OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc1NjYwMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNF9kZWZjb25maWc9NTA9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c0X2RlZmNvbmZpZy01MS0jIENPTkZJR19JUFY2X1NJVCBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnOjUyOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzRfZGVmY29uZmlnLTUzLUNPTkZJR19ORVRGSUxURVI9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTYxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWctNjItIyBDT05GSUdfSVBWNl9TSVQgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzo2MzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy02NC1DT05GSUdfTkVURklMVEVSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnPTY4PUNPTkZJR19JUFY2X1NJVD1tXFxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWc6Njk6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZy03MC1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZz0xNTA9Q09ORklHX0lQVjZfVFVOTkVMPW1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoxNTE6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0xNTItQ09ORklHX05FVF9EU0E9bVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy90ZWdyYV9kZWZjb25maWc9NTI9Q09ORklHX0lQVjZfVFVOTkVMPXlcXG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZzo1MzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvdGVncmFfZGVmY29uZmlnLTU0LUNPTkZJR19DQU49eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xNTg9Q09ORklHX0lORVQ2X0lQQ09NUD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxNTk6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTE2MC1DT05GSUdfSVBWNl9NUk9VVEU9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xNzQ9Q09ORklHX0lORVQ2X0lQQ09NUD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxNzU6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE3Ni1DT05GSUdfSVBWNl9NUk9VVEU9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWc9MjM9Q09ORklHX1RDUF9DT05HX0FEVkFOQ0VEPXlcXG5hcmNoL21pcHMvY29uZmlncy9iY200N3h4X2RlZmNvbmZpZzoyNDpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2JjbTQ3eHhfZGVmY29uZmlnLTI1LUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWc9NjA9Q09ORklHX0lQVjZfVFVOTkVMPW1cXG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnOjYxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZy02Mi1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnPTYzPUNPTkZJR19JUFY2X0dSRT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzo2NDpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWctNjUtQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc9NDU9Q09ORklHX0lQVjZfTUlQNj1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc6NDY6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZy00Ny1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZz00MT1DT05GSUdfSVBWNl9NSVA2PW1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZzo0MjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTQzLUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZz00MD1DT05GSUdfSVBWNl9NSVA2PW1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX3I0a19kZWZjb25maWc6NDE6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX3I0a19kZWZjb25maWctNDItQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9NDY9Q09ORklHX0lQVjZfVFVOTkVMPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo0NzpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTQ4LUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTQ1PUNPTkZJR19JUFY2X1RVTk5FTD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc6NDY6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy00Ny1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz00NT1DT05GSUdfSVBWNl9UVU5ORUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnOjQ2OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWctNDctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnPTUwPUNPTkZJR19JUFY2X1RVTk5FTD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjUxOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnLTUyLUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0zOD1DT05GSUdfSVBWNl9UVU5ORUw9bVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzozOTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZy00MC1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTExNT1DT05GSUdfSVBWNl9UVU5ORUw9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MTE2OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0xMTctQ09ORklHX0lQVjZfU1VCVFJFRVM9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTE3Mz1DT05GSUdfSVBWNl9HUkU9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxNzQ6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTc1LUNPTkZJR19JUFY2X1NVQlRSRUVTPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xNjQ9Q09ORklHX0lQVjZfR1JFPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTY1OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE2Ni1DT05GSUdfSVBWNl9TVUJUUkVFUz15XFxuLS1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMjQtXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oOjI1OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMjYtI2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAyNTZcXG4tLVxcbmluY2x1ZGUvbmV0L2lwNl9maWIuaD0zOTE9c3RydWN0IGZpYjZfdGFibGUge1xcbi0tXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTQwOC1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6NDA5OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtNDEwLSNkZWZpbmUgRklCNl9UQUJMRV9NSU5cXHRcXHQxXFxuLS1cXG5pbmNsdWRlL25ldC9pcDZfZmliLmg9NjYwPXN0YXRpYyBpbmxpbmUgc3RydWN0IHJ0Nl9pbmZvICpwb2xfbG9va3VwX2Z1bmMocG9sX2xvb2t1cF90IGxvb2t1cCxcXG4tLVxcbmluY2x1ZGUvbmV0L2lwNl9maWIuaC02NzQtXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oOjY3NTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTY3Ni1zdGF0aWMgaW5saW5lIGJvb2wgZmliNl9oYXNfY3VzdG9tX3J1bGVzKGNvbnN0IHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjYuaD02Nj1zdHJ1Y3QgbmV0bnNfaXB2NiB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy9pcHY2LmgtODctXFx0dW5zaWduZWQgY2hhclxcdFxcdGZsb3dsYWJlbF9oYXNfZXhjbDtcXG5pbmNsdWRlL25ldC9uZXRucy9pcHY2Lmg6ODg6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xcbmluY2x1ZGUvbmV0L25ldG5zL2lwdjYuaC04OS1cXHRib29sXFx0XFx0XFx0ZmliNl9oYXNfY3VzdG9tX3J1bGVzO1xcbi0tXFxubmV0L2NvcmUvZmliX3J1bGVzLmMtMTktXFxubmV0L2NvcmUvZmliX3J1bGVzLmM6MjA6I2lmIGRlZmluZWQoQ09ORklHX0lQVjYpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTKVxcbm5ldC9jb3JlL2ZpYl9ydWxlcy5jLTIxLSNpZmRlZiBDT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZT0yMD1pcHY2LSQoQ09ORklHX05FVEZJTFRFUikgKz0gbmV0ZmlsdGVyLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZToyMTppcHY2LSQoQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTKSArPSBmaWI2X3J1bGVzLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS0yMi1pcHY2LSQoQ09ORklHX1BST0NfRlMpICs9IHByb2Mub1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTIxMz1zdGF0aWMgdm9pZCBmaWI2X2xpbmtfdGFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl90YWJsZSAqdGIpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjMwLVxcbm5ldC9pcHY2L2lwNl9maWIuYzoyMzE6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yMzItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjQ2Mj1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUwNC1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjUwNTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1MDYtXFx0bmV0LVxcdTAwM2VpcHY2LmZpYjZfbG9jYWxfdGJsID0ga3phbGxvY19vYmooKm5ldC1cXHUwMDNlaXB2Ni5maWI2X2xvY2FsX3RibCk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUyMC1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjUyMTojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1MjItb3V0X2ZpYjZfbWFpbl90Ymw6XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTI5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0Nl9pbmZvIGlwNl9udWxsX2VudHJ5X3RlbXBsYXRlID0ge1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYy0zMDQtXFxubmV0L2lwdjYvcm91dGUuYzozMDU6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L3JvdXRlLmMtMzA2LVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz02NDgyPXN0YXRpYyBpbnQgaXA2X3JvdXRlX2Rldl9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NDk0LVxcdFxcdG5ldC1cXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeS1cXHUwMDNlcnQ2aV9pZGV2ID0gaW42X2Rldl9nZXQoZGV2KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjY0OTU6I2lmZGVmIENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L3JvdXRlLmMtNjQ5Ni1cXHRcXHRuZXQtXFx1MDAzZWlwdjYuaXA2X3Byb2hpYml0X2VudHJ5LVxcdTAwM2Vkc3QuZGV2ID0gZGV2O1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NTA2LVxcdFxcdGluNl9kZXZfcHV0X2NsZWFyKFxcdTAwMjZuZXQtXFx1MDAzZWlwdjYuaXA2X251bGxfZW50cnktXFx1MDAzZXJ0NmlfaWRldik7XFxubmV0L2lwdjYvcm91dGUuYzo2NTA3OiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9yb3V0ZS5jLTY1MDgtXFx0XFx0aW42X2Rldl9wdXRfY2xlYXIoXFx1MDAyNm5ldC1cXHUwMDNlaXB2Ni5pcDZfcHJvaGliaXRfZW50cnktXFx1MDAzZXJ0NmlfaWRldik7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTY2NzY9c3RhdGljIGludCBfX25ldF9pbml0IGlwNl9yb3V0ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3MDEtXFxubmV0L2lwdjYvcm91dGUuYzo2NzAyOiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3MDMtXFx0bmV0LVxcdTAwM2VpcHY2LmZpYjZfaGFzX2N1c3RvbV9ydWxlcyA9IGZhbHNlO1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NzQzLVxcbm5ldC9pcHY2L3JvdXRlLmM6Njc0NDojaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvcm91dGUuYy02NzQ1LW91dF9pcDZfcHJvaGliaXRfZW50cnk6XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTY3NTg9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBpcDZfcm91dGVfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02NzYxLVxcdGtmcmVlKG5ldC1cXHUwMDNlaXB2Ni5pcDZfbnVsbF9lbnRyeSk7XFxubmV0L2lwdjYvcm91dGUuYzo2NzYyOiNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9yb3V0ZS5jLTY3NjMtXFx0a2ZyZWUobmV0LVxcdTAwM2VpcHY2LmlwNl9wcm9oaWJpdF9lbnRyeSk7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTY4MzQ9dm9pZCBfX2luaXQgaXA2X3JvdXRlX2luaXRfc3BlY2lhbF9lbnRyaWVzKHZvaWQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTY4NDEtXFx0aW5pdF9uZXQuaXB2Ni5pcDZfbnVsbF9lbnRyeS1cXHUwMDNlcnQ2aV9pZGV2ID0gaW42X2Rldl9nZXQoaW5pdF9uZXQubG9vcGJhY2tfZGV2KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjY4NDI6ICAjaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvcm91dGUuYy02ODQzLVxcdGluaXRfbmV0LmlwdjYuaXA2X3Byb2hpYml0X2VudHJ5LVxcdTAwM2Vkc3QuZGV2ID0gaW5pdF9uZXQubG9vcGJhY2tfZGV2O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvdmlydGlvX25ldC9jb25maWc9Mz1DT05GSUdfSVBWNj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvdmlydGlvX25ldC9jb25maWc6NDpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQvY29uZmlnLTUtQ09ORklHX05FVF9MM19NQVNURVJfREVWPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWc9NDQ9Q09ORklHX0lQVjZfTVJPVVRFPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjQ1OkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZy00Ni1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZz0xND1DT05GSUdfSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWc6MTU6Q09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWctMTYtQ09ORklHX0lQVjZfUElNU01fVjI9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL2NvbmZpZz0xMD1DT05GSUdfSVBWNj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L21wdGNwL2NvbmZpZzoxMTpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC9jb25maWctMTItQ09ORklHX0tBTExTWU1TPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnPTM1PUNPTkZJR19JUFY2PXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzozNjpDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnLTM3LUNPTkZJR19JUFY2X1RVTk5FTD1tXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGNwX2FvL2NvbmZpZz0xPUNPTkZJR19JUFY2PXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGNwX2FvL2NvbmZpZzoyOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3RjcF9hby9jb25maWctMy1DT05GSUdfTkVUX0wzX01BU1RFUl9ERVY9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZz0zMj1DT05GSUdfSVBfTVVMVElQTEVfVEFCTEVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy93aXJlZ3VhcmQvcWVtdS9rZXJuZWwuY29uZmlnOjMzOkNPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1YXJkL3FlbXUva2VybmVsLmNvbmZpZy0zNC1DT05GSUdfVFRZPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTk6NTA6MjUuNjc4MTI1ODc4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5MTI4MDQ1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgU2VsZWN0aW9uIGZvciBGSUIgUnVsZSBhbmQgVGFibGUgTG9ja2luZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gYmVzdCBmdXp6IHRoaXMgcGF0Y2guIFRoZSBjb25maWdzIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUgYXJlIGBJUF9NVUxUSVBMRV9UQUJMRVNgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCBzbyB3ZSdyZSBnb29kIHRoZXJlLiBUaGUgY29yZSBjaGFuZ2UgaXMgdG8gdGhlIGxvY2tpbmcgbWVjaGFuaXNtcyBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIG1vdmluZyBmcm9tIHRoZSBSVE5MIHRvIG1vcmUgZmluZS1ncmFpbmVkIGxvY2tpbmcgd2l0aCBtdXRleGVzIGFuZCBzcGlubG9ja3MuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBwb3RlbnRpYWxseSBhZmZlY3RpbmcgYW55dGhpbmcgdGhhdCBpbnRlcmFjdHMgd2l0aCByb3V0aW5nIHJ1bGVzIGFuZCB0YWJsZXMuXG5cbkkgbmVlZCB0byBmb2N1cyBvbiB0aGUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIHRoZSBvbmVzIHdoZXJlIHRoZSBsb2NraW5nIGNoYW5nZXMgYXJlIGRpcmVjdGx5IGltcGxlbWVudGVkLiBJIGluaXRpYWxseSB0aG91Z2h0IHRvIGluY2x1ZGUgYGZpYl9nZXRfdGFibGVgLCBidXQgaG9sZCBvbi4gTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHdoZXRoZXIgaXQgaXMgY2FsbGVkIGluIGhvdCBwYXRocywgc2luY2UgdGhhdCB3b3VsZCBtYWtlIGl0IG1vcmUgZGlmZmljdWx0IHRvIGZ1enogZWZmZWN0aXZlbHkuIEFoLCB5ZXMsIGl0J3MgY2FsbGVkIGJ5IHRoZSBjb3JlIGxvb2t1cCBmdW5jdGlvbnMgbGlrZSBgZmliX2xvb2t1cGAgYW5kIGBpcF9yb3V0ZV9pbnB1dF9ub3JlZmAuIE5vdCBpZGVhbC4gTGV0J3MgZXhjbHVkZSB0aGF0IGZvciBub3cuXG5cblNvLCB0aGUgZm9jdXMgc3ltYm9scyBzaG91bGQgYmU6IGBmaWJfbmV3cnVsZWAsIGBmaWJfZGVscnVsZWAsIGBmaWJfbmV3X3RhYmxlYCwgYGZpYl9ydWxlc19ldmVudGAsIGBmaWI0X3J1bGVfY29uZmlndXJlYCwgYGZpYjRfcnVsZV9kZWxldGVgLCBgZmliNl9ydWxlX2NvbmZpZ3VyZWAsIGFuZCBgZmliNl9ydWxlX2RlbGV0ZWAuXG5cbk5vdywgbGV0J3MgdmVyaWZ5IHdoZXJlIHRob3NlIGFyZSBpbXBsZW1lbnRlZC4gYGZpYl9uZXdydWxlYCBhbmQgYGZpYl9kZWxydWxlYCBsaXZlIGluIGBuZXQvY29yZS9maWJfcnVsZXMuY2AuIGBmaWJfbmV3X3RhYmxlYCBpcyBpbiBgbmV0L2lwdjQvZmliX2Zyb250ZW5kLmNgLiBBbmQgYGZpYl9ydWxlc19ldmVudGAgaXMgYWxzbyBpbiBgbmV0L2NvcmUvZmliX3J1bGVzLmNgLlxuXG5Pa2F5LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYElQX01VTFRJUExFX1RBQkxFU2AgYW5kIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYXJlIHRoZSBjb3JyZWN0IGNvbmZpZ3MsIHJpZ2h0PyBZZXAsIGNvbmZpcm1lZC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXIgbm93OiB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcsIHNvIHdlIHdhbnQgdG8gaGl0IHRoZSBuZXcgbG9ja2luZyBjb2RlIGRpcmVjdGx5LiBUaGUgcHJpbWFyeSB3YXkgdG8gdHJpZ2dlciB0aGlzIGlzIHRocm91Z2ggbmV0bGluayBtZXNzYWdlcyBsaWtlIGBSVE1fTkVXUlVMRWAgYW5kIGBSVE1fREVMUlVMRWAgb3IgdGhyb3VnaCBuZXRkZXYgZXZlbnRzLiBUaGVzZSB0cmlnZ2VyIHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zLCBzbyB0aG9zZSBhcmUgd2hhdCB3ZSB3YW50IHRvIGZ1enouXG5cbk5vdywgbGV0J3MganVzdCBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgYGZpYjRfcnVsZV9kZWxldGVgIGFuZCBgZmliNl9ydWxlX2RlbGV0ZWAgYXJlIHN0YXRpYy4gWWVzLCB0aGV5IGFyZSBpbiB0aGUgcmVzcGVjdGl2ZSBmaWxlcyBgbmV0L2lwdjQvZmliX3J1bGVzLmNgIGFuZCBgbmV0L2lwdjYvZmliNl9ydWxlcy5jYC4gTGV0J3MgYWxzbyBkb3VibGUgY2hlY2sgYGZpYl9uZXdydWxlYCBhbmQgYGZpYl9kZWxydWxlYC4gWWVwLCBleHBvcnRlZCBvciBqdXN0IGdsb2JhbC4gQW5kIGBmaWJfbmV3X3RhYmxlYCBpcyBhbHNvIGV4cG9ydGVkLiBGaW5hbGx5LCBgZmliX3J1bGVzX2V2ZW50YCBpcyBhbHNvIHN0YXRpYy5cblxuQWxyaWdodCwgbG9va3MgbGlrZSB3ZSBoYXZlIGEgc29saWQgdGFyZ2V0IGxpc3Q6IHRoZSBjb250cm9sIHBhdGggZnVuY3Rpb25zIGltcGFjdGVkIGJ5IHRoZSBsb2NraW5nIGNoYW5nZXMuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwNjUsIk91dHB1dFRva2VucyI6MjEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDE5OjUwOjM2LjU5MDkzMzA4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5MDQ2NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX01VTFRJUExFX1RBQkxFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWJfbmV3cnVsZVwiLFxuICAgIFwiZmliX2RlbHJ1bGVcIixcbiAgICBcImZpYl9uZXdfdGFibGVcIixcbiAgICBcImZpYl9ydWxlc19ldmVudFwiLFxuICAgIFwiZmliNF9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNF9ydWxlX2RlbGV0ZVwiLFxuICAgIFwiZmliNl9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNl9ydWxlX2RlbGV0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cXHUwMDNlbG9jayBhbmQgZmliX3RhYmxlX2hhc2hfbG9jaykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgUlRNX05FV1JVTEUsIFJUTV9ERUxSVUxFKSBhbmQgbmV0ZGV2IGV2ZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGxvY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX01VTFRJUExFX1RBQkxFU1wiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmaWJfbmV3cnVsZVwiLFxuICAgIFwiZmliX2RlbHJ1bGVcIixcbiAgICBcImZpYl9uZXdfdGFibGVcIixcbiAgICBcImZpYl9ydWxlc19ldmVudFwiLFxuICAgIFwiZmliNF9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNF9ydWxlX2RlbGV0ZVwiLFxuICAgIFwiZmliNl9ydWxlX2NvbmZpZ3VyZVwiLFxuICAgIFwiZmliNl9ydWxlX2RlbGV0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIG1lY2hhbmlzbSBmb3IgRklCIHJ1bGVzIGFuZCB0YWJsZXMsIHJlcGxhY2luZyBSVE5MIHdpdGggZmluZXItZ3JhaW5lZCBtdXRleGVzIGFuZCBzcGlubG9ja3MgKG9wcy1cXHUwMDNlbG9jayBhbmQgZmliX3RhYmxlX2hhc2hfbG9jaykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgUlRNX05FV1JVTEUsIFJUTV9ERUxSVUxFKSBhbmQgbmV0ZGV2IGV2ZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGxvY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrbdhr[1] Phase: Succeeded StartedAt: 2026-06-29 19:52:18 +0000 UTC FinishedAt: 2026-06-29 19:52:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-29 19:52:18 +0000 UTC FinishedAt: 2026-06-29 19:52:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2] Phase: Succeeded StartedAt: 2026-06-29 19:52:18 +0000 UTC FinishedAt: 2026-06-29 23:48:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-29 19:52:18 +0000 UTC FinishedAt: 2026-06-29 23:48:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-29 19:52:18 +0000 UTC FinishedAt: 2026-06-29 19:52:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-29 19:52:18 +0000 UTC FinishedAt: 2026-06-29 19:52:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-convert-artifact-646012597/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-29 19:52:28 +0000 UTC FinishedAt: 2026-06-29 20:15:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-29 19:52:28 +0000 UTC FinishedAt: 2026-06-29 20:15:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2f1d2fa1-2e67-4576-a8f4-31eedc33886e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-convert-artifact-646012597/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3b6eaf57-c6fc-4c07-ba96-c65767cfeb15", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-2079267483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-29 19:52:28 +0000 UTC FinishedAt: 2026-06-29 20:15:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2f1d2fa1-2e67-4576-a8f4-31eedc33886e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-convert-artifact-646012597/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3b6eaf57-c6fc-4c07-ba96-c65767cfeb15", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-2079267483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-29 20:15:36 +0000 UTC FinishedAt: 2026-06-29 20:15:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-29 20:15:36 +0000 UTC FinishedAt: 2026-06-29 20:15:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-29 20:15:36 +0000 UTC FinishedAt: 2026-06-29 20:15:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-29 20:15:36 +0000 UTC FinishedAt: 2026-06-29 20:15:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-convert-artifact-3077018896/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-29 20:15:58 +0000 UTC FinishedAt: 2026-06-29 20:18:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-29 20:15:58 +0000 UTC FinishedAt: 2026-06-29 20:18:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3b6eaf57-c6fc-4c07-ba96-c65767cfeb15,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-2079267483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-29 20:18:13 +0000 UTC FinishedAt: 2026-06-29 20:18:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-29 20:18:13 +0000 UTC FinishedAt: 2026-06-29 20:18:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-29 20:18:13 +0000 UTC FinishedAt: 2026-06-29 20:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-29 20:18:13 +0000 UTC FinishedAt: 2026-06-29 20:40:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2f1d2fa1-2e67-4576-a8f4-31eedc33886e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-convert-artifact-3077018896/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "1ed98c8e-214f-4ce8-b798-9b21deeceace", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-3387789708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-29 20:18:13 +0000 UTC FinishedAt: 2026-06-29 20:39:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2f1d2fa1-2e67-4576-a8f4-31eedc33886e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-convert-artifact-3077018896/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "1ed98c8e-214f-4ce8-b798-9b21deeceace", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-3387789708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-29 20:40:49 +0000 UTC FinishedAt: 2026-06-29 20:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-29 20:40:49 +0000 UTC FinishedAt: 2026-06-29 20:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-29 20:40:49 +0000 UTC FinishedAt: 2026-06-29 20:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-29 20:40:49 +0000 UTC FinishedAt: 2026-06-29 20:42:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1ed98c8e-214f-4ce8-b798-9b21deeceace,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-3387789708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-29 20:43:07 +0000 UTC FinishedAt: 2026-06-29 23:48:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-29 20:43:07 +0000 UTC FinishedAt: 2026-06-29 23:48:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*3b6eaf57-c6fc-4c07-ba96-c65767cfeb15,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1ed98c8e-214f-4ce8-b798-9b21deeceace,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-2079267483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-3387789708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-29 20:43:07 +0000 UTC FinishedAt: 2026-06-29 20:43:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-29 20:43:07 +0000 UTC FinishedAt: 2026-06-29 20:43:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-convert-artifact-283339785/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-29 20:43:07 +0000 UTC FinishedAt: 2026-06-29 20:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-29 20:43:07 +0000 UTC FinishedAt: 2026-06-29 20:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-29 20:43:07 +0000 UTC FinishedAt: 2026-06-29 20:43:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-29 20:43:17 +0000 UTC FinishedAt: 2026-06-29 23:48:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbdhr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fib_newrule","fib_delrule","fib_new_table","fib_rules_event","fib4_rule_configure","fib4_rule_delete","fib6_rule_configure","fib6_rule_delete"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTIPLE_TABLES","IPV6_MULTIPLE_TABLES"],"series_id":"976a5565-78ae-4ce0-ad09-153164152e84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-29 20:43:17 +0000 UTC FinishedAt: 2026-06-29 23:48:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3b6eaf57-c6fc-4c07-ba96-c65767cfeb15,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1ed98c8e-214f-4ce8-b798-9b21deeceace,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-2079267483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-build-action-3387789708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbdhr/series-workflowrbdhr-convert-artifact-283339785/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}