Name: series-workflowfwwhh Phase: Succeeded StartedAt: 2026-07-14 21:03:16 +0000 UTC FinishedAt: 2026-07-15 02:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[0] Phase: Succeeded StartedAt: 2026-07-14 21:03:16 +0000 UTC FinishedAt: 2026-07-14 21:49:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 21:03:16 +0000 UTC FinishedAt: 2026-07-14 21:49:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "2fc4daf5c4774d70254201aaa5a9d50cae52af5e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NUMA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "2fc4daf5c4774d70254201aaa5a9d50cae52af5e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NUMA" ], "series_id": "72979bbf-9733-4301-9675-1ee76d4898f4" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "node_reclaim" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05VTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtub2RlX3JlY2xhaW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMTo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGViODY2M2M2Njg1ZTBkMzZjMjg2NmUzMTkxY2FkYWU2YjkzOWQ4YjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMTo0ODo0OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaFxuaW5kZXggODc0YmU5NGNmMjU3MGUuLmYyNjQyM2RlNGNhMjg3IDEwMDY0NFxuLS0tIGEvbW0vaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaW50ZXJuYWwuaFxuQEAgLTEwOTgsMjMgJiM0MzsxMDk4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9sb2NhbCh2b2lkKSB7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgbWxvY2tfZHJhaW5fcmVtb3RlKGludCBjcHUpIHsgfVxuICNlbmRpZiAvKiAhQ09ORklHX01NVSAqL1xuIFxuLSNkZWZpbmUgTk9ERV9SRUNMQUlNX05PU0NBTlx0LTJcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9GVUxMXHQtMVxuLSNkZWZpbmUgTk9ERV9SRUNMQUlNX1NPTUVcdDBcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9TVUNDRVNTXHQxXG4tXG4gI2lmZGVmIENPTkZJR19OVU1BXG4gZXh0ZXJuIGludCBub2RlX3JlY2xhaW1fbW9kZTtcbiBcbi1leHRlcm4gaW50IG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKiwgZ2ZwX3QsIHVuc2lnbmVkIGludCk7XG4mIzQzO2V4dGVybiB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxuJiM0MztcdFx0XHRcdCAgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcik7XG4gZXh0ZXJuIGludCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzayk7XG4gI2Vsc2VcbiAjZGVmaW5lIG5vZGVfcmVjbGFpbV9tb2RlIDBcbiBcbi1zdGF0aWMgaW5saW5lIGludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgbWFzayxcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBvcmRlcilcbiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxuJiM0MztcdFx0XHRcdFx0IGdmcF90IG1hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcbiB7XG4tXHRyZXR1cm4gTk9ERV9SRUNMQUlNX05PU0NBTjtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gc3RhdGljIGlubGluZSBpbnQgZmluZF9uZXh0X2Jlc3Rfbm9kZShpbnQgbm9kZSwgbm9kZW1hc2tfdCAqdXNlZF9ub2RlX21hc2spXG4ge1xuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xuaW5kZXggOWM5N2E4NmRhMmI5ZjEuLmFmNjM1NTgzOTEzNDU5IDEwMDY0NFxuLS0tIGEvbW0vcGFnZV9hbGxvYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmNcbkBAIC0zOTA4LDggJiM0MzszOTA4LDYgQEAgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXG4gXHRcdGlmICghem9uZV93YXRlcm1hcmtfZmFzdCh6b25lLCBvcmRlciwgbWFyayxcbiBcdFx0XHRcdCAgICAgICBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzLFxuIFx0XHRcdFx0ICAgICAgIGdmcF9tYXNrKSkge1xuLVx0XHRcdGludCByZXQ7XG4tXG4gXHRcdFx0aWYgKGNvbmRfYWNjZXB0X21lbW9yeSh6b25lLCBvcmRlciwgYWxsb2NfZmxhZ3MpKVxuIFx0XHRcdFx0Z290byB0cnlfdGhpc196b25lO1xuIFxuQEAgLTM5MzAsMjIgJiM0MzszOTI4LDEzIEBAIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxuIFx0XHRcdCAgICAhem9uZV9hbGxvd3NfcmVjbGFpbSh6b25lbGlzdF96b25lKGFjLVx1MDAzZXByZWZlcnJlZF96b25lcmVmKSwgem9uZSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0XHRyZXQgPSBub2RlX3JlY2xhaW0oem9uZS1cdTAwM2V6b25lX3BnZGF0LCBnZnBfbWFzaywgb3JkZXIpO1xuLVx0XHRcdHN3aXRjaCAocmV0KSB7XG4tXHRcdFx0Y2FzZSBOT0RFX1JFQ0xBSU1fTk9TQ0FOOlxuLVx0XHRcdFx0LyogZGlkIG5vdCBzY2FuICovXG4tXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRjYXNlIE5PREVfUkVDTEFJTV9GVUxMOlxuLVx0XHRcdFx0Lyogc2Nhbm5lZCBidXQgdW5yZWNsYWltYWJsZSAqL1xuJiM0MztcdFx0XHRpZiAoIW5vZGVfcmVjbGFpbSh6b25lLVx1MDAzZXpvbmVfcGdkYXQsIGdmcF9tYXNrLCBvcmRlcikpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRkZWZhdWx0OlxuLVx0XHRcdFx0LyogZGlkIHdlIHJlY2xhaW0gZW5vdWdoICovXG4tXHRcdFx0XHRpZiAoem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssXG4tXHRcdFx0XHRcdGFjLVx1MDAzZWhpZ2hlc3Rfem9uZWlkeCwgYWxsb2NfZmxhZ3MpKVxuLVx0XHRcdFx0XHRnb3RvIHRyeV90aGlzX3pvbmU7XG4gXG4mIzQzO1x0XHRcdC8qIGRpZCB3ZSByZWNsYWltIGVub3VnaCAqL1xuJiM0MztcdFx0XHRpZiAoIXpvbmVfd2F0ZXJtYXJrX29rKHpvbmUsIG9yZGVyLCBtYXJrLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGFjLVx1MDAzZWhpZ2hlc3Rfem9uZWlkeCwgYWxsb2NfZmxhZ3MpKVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0fVxuIFx0XHR9XG4gXG4gdHJ5X3RoaXNfem9uZTpcbmRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBiL21tL3Ztc2Nhbi5jXG5pbmRleCA0MzU3YTQ0ZWU4NzY3Ny4uYjdlZjAzMmU3OGEwYmQgMTAwNjQ0XG4tLS0gYS9tbS92bXNjYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vdm1zY2FuLmNcbkBAIC03NzY4LDkgJiM0Mzs3NzY4LDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19ub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRyZXR1cm4gc2MtXHUwMDNlbnJfcmVjbGFpbWVkO1xuIH1cbiBcbi1pbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4mIzQzO3Vuc2lnbmVkIGxvbmcgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4ge1xuLVx0aW50IHJldDtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHJldDtcbiBcdC8qIE1pbmltdW0gcGFnZXMgbmVlZGVkIGluIG9yZGVyIHRvIHN0YXkgb24gbm9kZSAqL1xuIFx0Y29uc3QgdW5zaWduZWQgbG9uZyBucl9wYWdlcyA9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0c3RydWN0IHNjYW5fY29udHJvbCBzYyA9IHtcbkBAIC03Nzk3LDEzICYjNDM7Nzc5NywxMyBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHRpZiAobm9kZV9wYWdlY2FjaGVfcmVjbGFpbWFibGUocGdkYXQpIFx1MDAzYz0gcGdkYXQtXHUwMDNlbWluX3VubWFwcGVkX3BhZ2VzIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG5vZGVfcGFnZV9zdGF0ZV9wYWdlcyhwZ2RhdCwgTlJfU0xBQl9SRUNMQUlNQUJMRV9CKSBcdTAwM2M9XG4gXHQgICAgcGdkYXQtXHUwMDNlbWluX3NsYWJfcGFnZXMpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fRlVMTDtcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuIFx0LypcbiBcdCAqIERvIG5vdCBzY2FuIGlmIHRoZSBhbGxvY2F0aW9uIHNob3VsZCBub3QgYmUgZGVsYXllZC5cbiBcdCAqL1xuIFx0aWYgKCFnZnBmbGFnc19hbGxvd19ibG9ja2luZyhnZnBfbWFzaykgfHwgKGN1cnJlbnQtXHUwMDNlZmxhZ3MgXHUwMDI2IFBGX01FTUFMTE9DKSlcbi1cdFx0cmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiBcbiBcdC8qXG4gXHQgKiBPbmx5IHJ1biBub2RlIHJlY2xhaW0gb24gdGhlIGxvY2FsIG5vZGUgb3Igb24gbm9kZXMgdGhhdCBkbyBub3RcbkBAIC03ODEyLDE1ICYjNDM7NzgxMiwxNSBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHQgKiBhcyB3aWRlIGFzIHBvc3NpYmxlLlxuIFx0ICovXG4gXHRpZiAobm9kZV9zdGF0ZShwZ2RhdC1cdTAwM2Vub2RlX2lkLCBOX0NQVSkgXHUwMDI2XHUwMDI2IHBnZGF0LVx1MDAzZW5vZGVfaWQgIT0gbnVtYV9ub2RlX2lkKCkpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4gXHRpZiAodGVzdF9hbmRfc2V0X2JpdF9sb2NrKFBHREFUX1JFQ0xBSU1fTE9DS0VELCBcdTAwMjZwZ2RhdC1cdTAwM2VmbGFncykpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4tXHRyZXQgPSBfX25vZGVfcmVjbGFpbShwZ2RhdCwgZ2ZwX21hc2ssIG5yX3BhZ2VzLCBcdTAwMjZzYykgXHUwMDNlPSBucl9wYWdlcztcbiYjNDM7XHRyZXQgPSBfX25vZGVfcmVjbGFpbShwZ2RhdCwgZ2ZwX21hc2ssIG5yX3BhZ2VzLCBcdTAwMjZzYyk7XG4gXHRjbGVhcl9iaXRfdW5sb2NrKFBHREFUX1JFQ0xBSU1fTE9DS0VELCBcdTAwMjZwZ2RhdC1cdTAwM2VmbGFncyk7XG4gXG4tXHRpZiAocmV0KVxuJiM0MztcdGlmIChyZXQgXHUwMDNlPSBucl9wYWdlcylcbiBcdFx0Y291bnRfdm1fZXZlbnQoUEdTQ0FOX1pPTkVfUkVDTEFJTV9TVUNDRVNTKTtcbiBcdGVsc2VcbiBcdFx0Y291bnRfdm1fZXZlbnQoUEdTQ0FOX1pPTkVfUkVDTEFJTV9GQUlMRUQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05VTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtub2RlX3JlY2xhaW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWI4NjYzYzY2ODVlMGQzNmMyODY2ZTMxOTFjYWRhZTZiOTM5ZDhiNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDIxOjQ4OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vaW50ZXJuYWwuaCBiL21tL2ludGVybmFsLmgKaW5kZXggODc0YmU5NGNmMjU3MGUuLmYyNjQyM2RlNGNhMjg3IDEwMDY0NAotLS0gYS9tbS9pbnRlcm5hbC5oCiYjNDM7JiM0MzsmIzQzOyBiL21tL2ludGVybmFsLmgKQEAgLTEwOTgsMjMgJiM0MzsxMDk4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9sb2NhbCh2b2lkKSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9yZW1vdGUoaW50IGNwdSkgeyB9CiAjZW5kaWYgLyogIUNPTkZJR19NTVUgKi8KIAotI2RlZmluZSBOT0RFX1JFQ0xBSU1fTk9TQ0FOCS0yCi0jZGVmaW5lIE5PREVfUkVDTEFJTV9GVUxMCS0xCi0jZGVmaW5lIE5PREVfUkVDTEFJTV9TT01FCTAKLSNkZWZpbmUgTk9ERV9SRUNMQUlNX1NVQ0NFU1MJMQotCiAjaWZkZWYgQ09ORklHX05VTUEKIGV4dGVybiBpbnQgbm9kZV9yZWNsYWltX21vZGU7CiAKLWV4dGVybiBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqLCBnZnBfdCwgdW5zaWduZWQgaW50KTsKJiM0MztleHRlcm4gdW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwKJiM0MzsJCQkJICBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKIGV4dGVybiBpbnQgZmluZF9uZXh0X2Jlc3Rfbm9kZShpbnQgbm9kZSwgbm9kZW1hc2tfdCAqdXNlZF9ub2RlX21hc2spOwogI2Vsc2UKICNkZWZpbmUgbm9kZV9yZWNsYWltX21vZGUgMAogCi1zdGF0aWMgaW5saW5lIGludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgbWFzaywKLQkJCQl1bnNpZ25lZCBpbnQgb3JkZXIpCiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LAomIzQzOwkJCQkJIGdmcF90IG1hc2ssIHVuc2lnbmVkIGludCBvcmRlcikKIHsKLQlyZXR1cm4gTk9ERV9SRUNMQUlNX05PU0NBTjsKJiM0MzsJcmV0dXJuIDA7CiB9CiBzdGF0aWMgaW5saW5lIGludCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzaykKIHsKZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuYwppbmRleCA5Yzk3YTg2ZGEyYjlmMS4uYWY2MzU1ODM5MTM0NTkgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmMKQEAgLTM5MDgsOCAmIzQzOzM5MDgsNiBAQCBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsIGludCBhbGxvY19mbGFncywKIAkJaWYgKCF6b25lX3dhdGVybWFya19mYXN0KHpvbmUsIG9yZGVyLCBtYXJrLAogCQkJCSAgICAgICBhYy0mZ3Q7aGlnaGVzdF96b25laWR4LCBhbGxvY19mbGFncywKIAkJCQkgICAgICAgZ2ZwX21hc2spKSB7Ci0JCQlpbnQgcmV0OwotCiAJCQlpZiAoY29uZF9hY2NlcHRfbWVtb3J5KHpvbmUsIG9yZGVyLCBhbGxvY19mbGFncykpCiAJCQkJZ290byB0cnlfdGhpc196b25lOwogCkBAIC0zOTMwLDIyICYjNDM7MzkyOCwxMyBAQCBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsIGludCBhbGxvY19mbGFncywKIAkJCSAgICAhem9uZV9hbGxvd3NfcmVjbGFpbSh6b25lbGlzdF96b25lKGFjLSZndDtwcmVmZXJyZWRfem9uZXJlZiksIHpvbmUpKQogCQkJCWNvbnRpbnVlOwogCi0JCQlyZXQgPSBub2RlX3JlY2xhaW0oem9uZS0mZ3Q7em9uZV9wZ2RhdCwgZ2ZwX21hc2ssIG9yZGVyKTsKLQkJCXN3aXRjaCAocmV0KSB7Ci0JCQljYXNlIE5PREVfUkVDTEFJTV9OT1NDQU46Ci0JCQkJLyogZGlkIG5vdCBzY2FuICovCi0JCQkJY29udGludWU7Ci0JCQljYXNlIE5PREVfUkVDTEFJTV9GVUxMOgotCQkJCS8qIHNjYW5uZWQgYnV0IHVucmVjbGFpbWFibGUgKi8KJiM0MzsJCQlpZiAoIW5vZGVfcmVjbGFpbSh6b25lLSZndDt6b25lX3BnZGF0LCBnZnBfbWFzaywgb3JkZXIpKQogCQkJCWNvbnRpbnVlOwotCQkJZGVmYXVsdDoKLQkJCQkvKiBkaWQgd2UgcmVjbGFpbSBlbm91Z2ggKi8KLQkJCQlpZiAoem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssCi0JCQkJCWFjLSZndDtoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzKSkKLQkJCQkJZ290byB0cnlfdGhpc196b25lOwogCiYjNDM7CQkJLyogZGlkIHdlIHJlY2xhaW0gZW5vdWdoICovCiYjNDM7CQkJaWYgKCF6b25lX3dhdGVybWFya19vayh6b25lLCBvcmRlciwgbWFyaywKJiM0MzsJCQkJCSAgICAgICBhYy0mZ3Q7aGlnaGVzdF96b25laWR4LCBhbGxvY19mbGFncykpCiAJCQkJY29udGludWU7Ci0JCQl9CiAJCX0KIAogdHJ5X3RoaXNfem9uZToKZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggNDM1N2E0NGVlODc2NzcuLmI3ZWYwMzJlNzhhMGJkIDEwMDY0NAotLS0gYS9tbS92bXNjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uYwpAQCAtNzc2OCw5ICYjNDM7Nzc2OCw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9fbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLAogCXJldHVybiBzYy0mZ3Q7bnJfcmVjbGFpbWVkOwogfQogCi1pbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiYjNDM7dW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikKIHsKLQlpbnQgcmV0OwomIzQzOwl1bnNpZ25lZCBsb25nIHJldDsKIAkvKiBNaW5pbXVtIHBhZ2VzIG5lZWRlZCBpbiBvcmRlciB0byBzdGF5IG9uIG5vZGUgKi8KIAljb25zdCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzID0gMSAmbHQ7Jmx0OyBvcmRlcjsKIAlzdHJ1Y3Qgc2Nhbl9jb250cm9sIHNjID0gewpAQCAtNzc5NywxMyAmIzQzOzc3OTcsMTMgQEAgaW50IG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKQogCWlmIChub2RlX3BhZ2VjYWNoZV9yZWNsYWltYWJsZShwZ2RhdCkgJmx0Oz0gcGdkYXQtJmd0O21pbl91bm1hcHBlZF9wYWdlcyAmYW1wOyZhbXA7CiAJICAgIG5vZGVfcGFnZV9zdGF0ZV9wYWdlcyhwZ2RhdCwgTlJfU0xBQl9SRUNMQUlNQUJMRV9CKSAmbHQ7PQogCSAgICBwZ2RhdC0mZ3Q7bWluX3NsYWJfcGFnZXMpCi0JCXJldHVybiBOT0RFX1JFQ0xBSU1fRlVMTDsKJiM0MzsJCXJldHVybiAwOwogCiAJLyoKIAkgKiBEbyBub3Qgc2NhbiBpZiB0aGUgYWxsb2NhdGlvbiBzaG91bGQgbm90IGJlIGRlbGF5ZWQuCiAJICovCiAJaWYgKCFnZnBmbGFnc19hbGxvd19ibG9ja2luZyhnZnBfbWFzaykgfHwgKGN1cnJlbnQtJmd0O2ZsYWdzICZhbXA7IFBGX01FTUFMTE9DKSkKLQkJcmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47CiYjNDM7CQlyZXR1cm4gMDsKIAogCS8qCiAJICogT25seSBydW4gbm9kZSByZWNsYWltIG9uIHRoZSBsb2NhbCBub2RlIG9yIG9uIG5vZGVzIHRoYXQgZG8gbm90CkBAIC03ODEyLDE1ICYjNDM7NzgxMiwxNSBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiAJICogYXMgd2lkZSBhcyBwb3NzaWJsZS4KIAkgKi8KIAlpZiAobm9kZV9zdGF0ZShwZ2RhdC0mZ3Q7bm9kZV9pZCwgTl9DUFUpICZhbXA7JmFtcDsgcGdkYXQtJmd0O25vZGVfaWQgIT0gbnVtYV9ub2RlX2lkKCkpCi0JCXJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOOwomIzQzOwkJcmV0dXJuIDA7CiAKIAlpZiAodGVzdF9hbmRfc2V0X2JpdF9sb2NrKFBHREFUX1JFQ0xBSU1fTE9DS0VELCAmYW1wO3BnZGF0LSZndDtmbGFncykpCi0JCXJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOOwomIzQzOwkJcmV0dXJuIDA7CiAKLQlyZXQgPSBfX25vZGVfcmVjbGFpbShwZ2RhdCwgZ2ZwX21hc2ssIG5yX3BhZ2VzLCAmYW1wO3NjKSAmZ3Q7PSBucl9wYWdlczsKJiM0MzsJcmV0ID0gX19ub2RlX3JlY2xhaW0ocGdkYXQsIGdmcF9tYXNrLCBucl9wYWdlcywgJmFtcDtzYyk7CiAJY2xlYXJfYml0X3VubG9jayhQR0RBVF9SRUNMQUlNX0xPQ0tFRCwgJmFtcDtwZ2RhdC0mZ3Q7ZmxhZ3MpOwogCi0JaWYgKHJldCkKJiM0MzsJaWYgKHJldCAmZ3Q7PSBucl9wYWdlcykKIAkJY291bnRfdm1fZXZlbnQoUEdTQ0FOX1pPTkVfUkVDTEFJTV9TVUNDRVNTKTsKIAllbHNlCiAJCWNvdW50X3ZtX2V2ZW50KFBHU0NBTl9aT05FX1JFQ0xBSU1fRkFJTEVEKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDc2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBub2RlX3JlY2xhaW1gIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQsIGFsYmVpdCBzaWduaWZpY2FudCwgY2hhbmdlIHRvIGhvdyBgbm9kZV9yZWNsYWltYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBOVU1BIG1lbW9yeSBtYW5hZ2VtZW50IGZyYW1ld29yay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLCBjaGFuZ2luZyB0aGUgcmV0dXJuIHNlbWFudGljcyB0byBiZSBtb3JlIGV4cGxpY2l0LiBQcmV2aW91c2x5LCBgbm9kZV9yZWNsYWltYCByZXR1cm5lZCBhbiBpbnRlZ2VyIHVzaW5nIGEgc2V0IG9mIG1hY3JvcyAoYE5PREVfUkVDTEFJTV8qYCkuIE5vdywgaXQmIzM5O3MgcmV0dXJuaW5nIGFuIGB1bnNpZ25lZCBsb25nYCByZXByZXNlbnRpbmcgdGhlICpudW1iZXIqIG9mIHJlY2xhaW1lZCBwYWdlcywgb3IgemVybyBpZiBubyBwYWdlcyB3ZXJlIHJlY2xhaW1lZCBvciBpZiB0aGUgc2NhbiB3YXNuJiMzOTt0IHBlcmZvcm1lZC4KCkxldCYjMzk7cyBsb29rIGF0IGBtbS9wYWdlX2FsbG9jLmNgIHdoZXJlIHRoZSBpbXBhY3QgaXMgbW9zdCBldmlkZW50LiBUaGUgb2xkIGNvZGUgdXNlZCBhIGBzd2l0Y2hgIHN0YXRlbWVudCBiYXNlZCBvbiB0aGUgYE5PREVfUkVDTEFJTV8qYCBtYWNybyB2YWx1ZXMgdG8gZGV0ZXJtaW5lIHRoZSBuZXh0IGNvdXJzZSBvZiBhY3Rpb24uICBJIHNlZSBpdCBwcmV2aW91c2x5IGNoZWNrZWQgaWYgYHJldGAgd2FzIGBOT0RFX1JFQ0xBSU1fU09NRWAgd2hpY2ggbWVhbnMgaXQgcmVjbGFpbWVkIHNvbWV0aGluZywgYnV0IG5vdCBlbm91Z2gsIGFuZCB0aGUgY29kZSBwcm9jZWVkZWQgdG8gY2hlY2sgYHpvbmVfd2F0ZXJtYXJrX29rYC4KCk5vdywgdGhlIGNvZGUgdXNlcyBhIHNpbXBsZSBgaWZgIHN0YXRlbWVudCwgYGlmICghbm9kZV9yZWNsYWltKC4uLikpIGNvbnRpbnVlO2AuICBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaGVyZSBpcyB0aGUgY2hhbmdlIGluIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBhICYjMzQ7ZmFpbHVyZSYjMzQ7LiBQcmV2aW91c2x5LCBhIHJldHVybiBvZiAwIGZyb20gYG5vZGVfcmVjbGFpbWAgaW1wbGllZCBzb21lIHBhZ2VzICptaWdodCogaGF2ZSBiZWVuIHJlY2xhaW1lZCwgYnV0IG5vdywgemVybyBtZWFucyAmIzM0O25vdGhpbmcgcmVjbGFpbWVkIG9yIG5vdCBzY2FubmVkLiYjMzQ7ICBUaGlzIGZ1bmRhbWVudGFsbHkgY2hhbmdlcyB0aGUgY29udHJvbCBmbG93LCBza2lwcGluZyB0aGUgd2F0ZXJtYXJrIGNoZWNrIGluIHRoZSBldmVudCBvZiB6ZXJvIHBhZ2VzIHJlY2xhaW1lZC4gSXQgbWVhbnMgaWYgYF9fbm9kZV9yZWNsYWltYCB3aGljaCBpcyB0aGUgY29kZSBkb2luZyB0aGUgYWN0dWFsIHdvcmssIHJlY2xhaW1zIHplcm8gcGFnZXMsIHdlJiMzOTtsbCBza2lwIGZ1cnRoZXIgYWxsb2NhdGlvbiB3b3JrLCB3aGljaCBpcyBuZXcuIFRoaXMgaXMgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBhbHRlcmF0aW9uIHRvIHRoZSBwYWdlIGFsbG9jYXRpb24gcGF0aCwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB3aGF0IHRob3NlIGltcGFjdHMgYXJlLgoKVGhlIGFmZmVjdGVkIGNvZGUgaXMgaW4gYG1tL3Ztc2Nhbi5jYCBhbmQgaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19OVU1BYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUuIFNvLCBpdCYjMzk7cyBwcmV0dHkgZm9jdXNlZCBpbiBpdHMgc2NvcGUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBub2RlX3JlY2xhaW1gIGFuZCBvdGhlciBmdW5jdGlvbnMgbGlrZSBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMuCgpHaXZlbiB0aGUgY2hhbmdlIHRvIHJldHVybiBzZW1hbnRpY3MgYW5kIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBJJiMzOTtkIHNheSB0aGlzIGlzIGRlZmluaXRlbHkgYSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkmIzM5O2xsIGZsYWcgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4gTXkga2V5IGZvY3VzIHN5bWJvbHMgd2lsbCBiZSBgbm9kZV9yZWNsYWltYCBhbmQgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZyB0byBrZWVwIGluIG1pbmQgaXMgYE5VTUFgLiBUaW1lIHRvIGRpZyBkZWVwZXIgaW50byBgbW0vdm1zY2FuLmNgIGFuZCB2ZXJpZnkgYWxsIGFzc3VtcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O151bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS92bXNjYW4uYz03NzI4PXN0YXRpYyB1bnNpZ25lZCBsb25nIF9fbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL3Ztc2Nhbi5jLTc3NzAtXG5tbS92bXNjYW4uYzo3NzcxOnVuc2lnbmVkIGxvbmcgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG5tbS92bXNjYW4uYy03NzcyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODEwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb2RlIGxvY2F0aW9ucywgdGhpbmtpbmcgYWJvdXQgdGhlbSBmcm9tIG15IG93biBleHBlcmllbmNlOgoKKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwmIzM5O3MgTWVtb3J5IE1hbmFnZW1lbnQgTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIHR3byBmdW5jdGlvbnMuLi4gYG5vZGVfcmVjbGFpbWAg4oCTIGFoIHllcywgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGluIGBtbS92bXNjYW4uY2AuIEl0JiMzOTtzIGEgY2xhc3NpYyBsb2NhdGlvbiwgZGVhbGluZyB3aXRoIHRoZSByZWNsYW1hdGlvbiBwYXJ0IG9mIHRoZSB2aXJ0dWFsIG1lbW9yeSBzY2FuLiBUaGUgbm9kZSBsZXZlbCByZWNsYW1hdGlvbiwgYWx3YXlzIGEgdHJpY2t5IGFyZWEsIGJ1dCB0aGF0IG1ha2VzIHNlbnNlLiBJdCYjMzk7cyB3aGVyZSB0aGUga2VybmVsIHRyaWVzIHRvIGZyZWUgdXAgcGFnZXMgZnJvbSBhIHNwZWNpZmljIE5VTUEgbm9kZSwgZ2V0dGluZyBpdHMgd29yayBjdXQgb3V0IGZvciBpdC4KCk5vdywgZm9yIGBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0YCwgdGhhdCBvbmXigJlzIGFsd2F5cyBiZWVuIG1vcmUgc3RyYWlnaHRmb3J3YXJkLiBJIGNhbiByZWNhbGwgbG9va2luZyBhdCBpdCBpbiBgbW0vcGFnZV9hbGxvYy5jYCwgZXhhY3RseSB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGl0LiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBwYWdlIGFsbG9jYXRpb24gc3lzdGVtLiBUaGUgd29ya2hvcnNlIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlIGZyZWUgbGlzdHMsIHRoZSBidWRkeSBzeXN0ZW0sIGFuZCBzbyBvbi4gSXTigJlzIHRoZSBnYXRla2VlcGVyLCBkZWNpZGluZyB3aGF0IHBhZ2UgdG8gZ2l2ZSB3aGVuIHRoZSBzeXN0ZW0gbmVlZHMgbW9yZSBtZW1vcnksIG9yIHB1bGxpbmcgYW4gdW5yZWZlcmVuY2VkIHBhZ2UgZnJvbSB0aGUgZnJlZSBsaXN0cy4gR29vZCB0byBrZWVwIHRob3NlIGxvY2F0aW9ucyBzdHJhaWdodCBpbiBteSBoZWFkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBzdHJ1Y3QgcGFnZSBcXCouKmdldF9wYWdlX2Zyb21fZnJlZWxpc3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTmF2aWdhdGluZyB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIFRoZSBoaW50IGlzIGl0JiMzOTtzIGluIGBtbS9wYWdlX2FsbG9jLmNgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBHaXZlbiBteSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCBhcmNoaXRlY3R1cmUsIEkgY2FuIGNvbmZpZGVudGx5IHN1cm1pc2UgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNlbnRyYWwgdG8gaGFuZGxpbmcgdGhlIGFsbG9jYXRpb24gb2YgcGh5c2ljYWwgcGFnZXMgZnJvbSB0aGUgZnJlZSBsaXN0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIGV4YWN0bHkgaG93IHRoaXMgY3J1Y2lhbCBwcm9jZXNzIHdvcmtzLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdlX2FsbG9jLmM9MzEzPURFRklORV9TVEFUSUNfS0VZX1RSVUUoZGVmZXJyZWRfcGFnZXMpO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zMTYtICogZGVmZXJyZWRfZ3Jvd196b25lKCkgaXMgX19pbml0LCBidXQgaXQgaXMgY2FsbGVkIGZyb21cbm1tL3BhZ2VfYWxsb2MuYzozMTc6ICogZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCgpIGR1cmluZyBlYXJseSBib290IHVudGlsIGRlZmVycmVkX3BhZ2VzIHBlcm1hbmVudGx5XG5tbS9wYWdlX2FsbG9jLmMtMzE4LSAqIGRpc2FibGVzIHRoaXMgY2FsbC4gVGhpcyBpcyB3aHkgd2UgaGF2ZSByZWZkYXRhIHdyYXBwZXIgdG8gYXZvaWQgd2FybmluZyxcbi0tXG5tbS9wYWdlX2FsbG9jLmM9Mzc4Nz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBhbGxvY19mbGFnc19jbWEoZ2ZwX3QgZ2ZwX21hc2spXG4tLVxubW0vcGFnZV9hbGxvYy5jLTM3OTYtLypcbm1tL3BhZ2VfYWxsb2MuYzozNzk3OiAqIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QgZ29lcyB0aHJvdWdoIHRoZSB6b25lbGlzdCB0cnlpbmcgdG8gYWxsb2NhdGVcbm1tL3BhZ2VfYWxsb2MuYy0zNzk4LSAqIGEgcGFnZS5cbi0tXG5tbS9wYWdlX2FsbG9jLmM9MzgwMD1zdGF0aWMgc3RydWN0IHBhZ2UgKlxubW0vcGFnZV9hbGxvYy5jOjM4MDE6Z2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXG5tbS9wYWdlX2FsbG9jLmMtMzgwMi1cdFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgYWxsb2NfY29udGV4dCAqYWMpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTQwMjY9X19hbGxvY19wYWdlc19jcHVzZXRfZmFsbGJhY2soZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDAzMS1cbm1tL3BhZ2VfYWxsb2MuYzo0MDMyOlx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLFxubW0vcGFnZV9hbGxvYy5jLTQwMzMtXHRcdFx0YWxsb2NfZmxhZ3N8QUxMT0NfQ1BVU0VULCBhYyk7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTQwMzgtXHRpZiAoIXBhZ2UpXG5tbS9wYWdlX2FsbG9jLmM6NDAzOTpcdFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLFxubW0vcGFnZV9hbGxvYy5jLTQwNDAtXHRcdFx0XHRhbGxvY19mbGFncywgYWMpO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz00MDQ1PV9fYWxsb2NfcGFnZXNfbWF5X29vbShnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00MDc1LVx0ICovXG5tbS9wYWdlX2FsbG9jLmM6NDA3NjpcdHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KChnZnBfbWFzayB8IF9fR0ZQX0hBUkRXQUxMKSBcdTAwMjZcbm1tL3BhZ2VfYWxsb2MuYy00MDc3LVx0XHRcdFx0ICAgICAgfl9fR0ZQX0RJUkVDVF9SRUNMQUlNLCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDE0MD1fX2FsbG9jX3BhZ2VzX2RpcmVjdF9jb21wYWN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTQxNzYtXHRpZiAoIXBhZ2UpXG5tbS9wYWdlX2FsbG9jLmM6NDE3NzpcdFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xubW0vcGFnZV9hbGxvYy5jLTQxNzgtXG4tLVxubW0vcGFnZV9hbGxvYy5jPTQ0MTY9X19hbGxvY19wYWdlc19kaXJlY3RfcmVjbGFpbShnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00NDI5LXJldHJ5OlxubW0vcGFnZV9hbGxvYy5jOjQ0MzA6XHRwYWdlID0gZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfbWFzaywgb3JkZXIsIGFsbG9jX2ZsYWdzLCBhYyk7XG5tbS9wYWdlX2FsbG9jLmMtNDQzMS1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDczMT1fX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTQ4MzAtXHQgKi9cbm1tL3BhZ2VfYWxsb2MuYzo0ODMxOlx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xubW0vcGFnZV9hbGxvYy5jLTQ4MzItXHRpZiAocGFnZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NTMzMD1zdHJ1Y3QgcGFnZSAqX19hbGxvY19mcm96ZW5fcGFnZXNfbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MzgyLVx0LyogRmlyc3QgYWxsb2NhdGlvbiBhdHRlbXB0IChvciwgZm9yIG5vbG9jaywgb25seSBhdHRlbXB0KSAqL1xubW0vcGFnZV9hbGxvYy5jOjUzODM6XHRwYWdlID0gZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChhbGxvY19nZnAsIG9yZGVyLCBmYXN0cGF0aF9hbGxvY19mbGFncywgXHUwMDI2YWMpO1xubW0vcGFnZV9hbGxvYy5jLTUzODQtXHRpZiAobGlrZWx5KHBhZ2UpIHx8IChhbGxvY19mbGFncyBcdTAwMjYgQUxMT0NfTk9MT0NLKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDMyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipPcHRpbWl6aW5nIFN5bWJvbCBMaXN0aW5nIGZvciBQZXJmb3JtYW5jZSoqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byByZWZpbmUgdGhlIHN5bWJvbCBsaXN0aW5nIGZvciBhbmFseXNpcy4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIGF2b2lkaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBlc3BlY2lhbGx5IGluIGEgZnVuY3Rpb24gbGlrZSBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0JiMzOTtzIGEga25vd24gaG90IHBhdGgsIHNvIEkgbmVlZCB0byBiZSAqdmVyeSogY2FyZWZ1bCBhYm91dCBpbmNsdWRpbmcgaXQgaW4gYEZvY3VzU3ltYm9sc2AuIFRoYXQga2luZCBvZiBmdW5jdGlvbiB3aWxsIHNrZXcgYW55IHByb2ZpbGluZyBJJiMzOTttIGRvaW5nIGFuZCBhZGQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQgdG8gdGhlIGZvY3VzIGNhbGN1bGF0aW9ucywgZXNwZWNpYWxseSBpZiBJJiMzOTttIHRyeWluZyB0byBpZGVudGlmeSBhcmVhcyB0aGF0IHdpbGwgbW9zdCBiZW5lZml0IGZyb20gb3B0aW1pemF0aW9uLgoKU28sIEkgd29uJiMzOTt0IGxpc3QgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgbm8tZ28uIEluc3RlYWQsIEkmIzM5O2xsIGZvY3VzIG9uIGxpc3RpbmcgYG5vZGVfcmVjbGFpbWAsIGFzIGl0IHNlZW1zIGEgaGlnaGVyLWxldmVsIGZ1bmN0aW9uIGFuZCBwcm9iYWJseSBjYWxscyB0aGUgZm9ybWVyIGFzIHBhcnQgb2YgaXRzIG9wZXJhdGlvbi4gSXQmIzM5O3MgYSBtb3JlIGFwcHJvcHJpYXRlIGxldmVsIG9mIGFic3RyYWN0aW9uIGZvciB0aGUga2luZCBvZiBwcm9maWxpbmcgSSYjMzk7bSBsaWtlbHkgaW50ZXJlc3RlZCBpbi4KCk5vdywgSSBhbHNvIG5lZWQgdG8gY2hlY2sgaWYgYG5vZGVfcmVjbGFpbWAgaXMgc3BlY2lmaWNhbGx5IHdpdGhpbiBhIE5VTUEgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCYjMzk7cyBjb3JyZWN0bHkgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIGBDT05GSUdfTlVNQWAgb3B0aW9uLiBUaGlzIGlzIGVzc2VudGlhbCBjb250ZXh0LCBhcyB0aGUgYmVoYXZpb3Igb2YgYG5vZGVfcmVjbGFpbWAgd2lsbCBiZSBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBpZiBOVU1BIGlzIGVuYWJsZWQuIFRoaXMgd2lsbCBpbmZvcm0gaG93IEkgaW50ZXJwcmV0IGFueSBwcm9maWxpbmcgZGF0YSBJJiMzOTttIGFibGUgdG8gZ2F0aGVyLCBhbmQgSSBtaWdodCBuZWVkIHRvIGFkanVzdCBteSB0ZWNobmlxdWVzIGlmIE5VTUEgaXMgZGlzYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14jaWZkZWYgQ09ORklHX05VTUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS92bXNjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS92bXNjYW4uYz03NjE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIHZtc2Nhbl9zeXNjdGxfdGFibGVbXSA9IHtcbi0tXG5tbS92bXNjYW4uYy03NjI4LVx0fSxcbm1tL3Ztc2Nhbi5jOjc2Mjk6I2lmZGVmIENPTkZJR19OVU1BXG5tbS92bXNjYW4uYy03NjMwLVx0e1xuLS1cbm1tL3Ztc2Nhbi5jPTc2NTE9bW9kdWxlX2luaXQoa3N3YXBkX2luaXQpXG5tbS92bXNjYW4uYy03NjUyLVxubW0vdm1zY2FuLmM6NzY1MzojaWZkZWYgQ09ORklHX05VTUFcbm1tL3Ztc2Nhbi5jLTc2NTQtLypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAwNQoJCQkJCQkJb3V0cHV0OiA4OAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldDogTm9kZSBSZWNsYWltIHdpdGggTlVNQSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIHNwb3R0ZWQgYSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG5vZGVfcmVjbGFpbWAsIGFuZCB0aGUgY3J1Y2lhbCBkZXRhaWwgaGVyZSBpcyB0aGF0IGBub2RlX3JlY2xhaW1gIGlzIGNvbmZpZ3VyZWQgdW5kZXIgYENPTkZJR19OVU1BYC4gVGhpcyBpcyBpbW1lZGlhdGVseSByZWxldmFudCB0byBteSB3b3JrLgoKVGhlIHBhdGNoIGl0c2VsZiBkaWdzIGludG8gdGhlIGd1dHMgb2YgdGhlIHBhZ2UgYWxsb2NhdG9yIGFuZCB0aGUgbm9kZSByZWNsYWltIGxvZ2ljLiBNb3JlIHNwZWNpZmljYWxseSwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgYG5vZGVfcmVjbGFpbWAgYW5kLCBjcnVjaWFsbHksIGhvdyB0aGF0IHJldHVybiB2YWx1ZSBpcyBpbnRlcnByZXRlZCBhbmQgYWN0ZWQgdXBvbiB3aXRoaW4gYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBUaGF0JiMzOTtzIHNpZ25pZmljYW50LiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgdGhlIHJlc3VsdHMgb2Ygbm9kZSByZWNsYWltLCBhIGNyaXRpY2FsIGNvbXBvbmVudCBvZiBtZW1vcnkgbWFuYWdlbWVudCwgZXNwZWNpYWxseSBpbiBOVU1BIHN5c3RlbXMuCgpUaGUgY2hhbmdlcyBpbnZvbHZlIGFsdGVyaW5nIGhvdyB0aGUgcGFnZSBhbGxvY2F0b3IgaGFuZGxlcyBhbmQgdXNlcyB0aGUgcmVzdWx0cyBvZiBhdHRlbXB0aW5nIG5vZGUgcmVjbGFpbS4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIGNvcmUgbWVtb3J5IGZ1bmN0aW9uYWxpdHkuIEdpdmVuIHRoaXMgbGV2ZWwgb2YgY2hhbmdlLCBhbmQgZXNwZWNpYWxseSB0aGUgaW50ZXJwbGF5IHdpdGggYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLCBJJiMzOTttIGdvaW5nIHRvIGZsYWcgdGhpcyBhcyBhIGRlZmluaXRlIGZ1enppbmcgdGFyZ2V0LiBJdCBoYXMgdGhlIHBvdGVudGlhbCB0byBleHBvc2Ugc3VidGxlIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MgdGhhdCBjb3VsZCBsZWFkIHRvIGNyYXNoZXMsIGxlYWtzLCBvciBldmVuIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05VTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtub2RlX3JlY2xhaW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlVNQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25vZGVfcmVjbGFpbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcmV0dXJuIHR5cGUgYW5kIGxvZ2ljIG9mIGBub2RlX3JlY2xhaW1gIGFuZCBpdHMgY2FsbGVyIGBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0YC4gSXQgY2hhbmdlcyBob3cgdGhlIHBhZ2UgYWxsb2NhdG9yIGhhbmRsZXMgbm9kZSByZWNsYWltIHJlc3VsdHMsIHdoaWNoIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbmFsaXR5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDg6NTAuMjg1Mzc2NTU4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2ODI5MDQ2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlVNQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5vZGVfcmVjbGFpbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByZXR1cm4gdHlwZSBhbmQgbG9naWMgb2YgYG5vZGVfcmVjbGFpbWAgYW5kIGl0cyBjYWxsZXIgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBJdCBjaGFuZ2VzIGhvdyB0aGUgcGFnZSBhbGxvY2F0b3IgaGFuZGxlcyBub2RlIHJlY2xhaW0gcmVzdWx0cywgd2hpY2ggaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjQ4OjUwLjI4NTM4MzgyOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc0ODQxNTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWI4NjYzYzY2ODVlMGQzNmMyODY2ZTMxOTFjYWRhZTZiOTM5ZDhiNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMTo0ODo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaFxcbmluZGV4IDg3NGJlOTRjZjI1NzBlLi5mMjY0MjNkZTRjYTI4NyAxMDA2NDRcXG4tLS0gYS9tbS9pbnRlcm5hbC5oXFxuKysrIGIvbW0vaW50ZXJuYWwuaFxcbkBAIC0xMDk4LDIzICsxMDk4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9sb2NhbCh2b2lkKSB7IH1cXG4gc3RhdGljIGlubGluZSB2b2lkIG1sb2NrX2RyYWluX3JlbW90ZShpbnQgY3B1KSB7IH1cXG4gI2VuZGlmIC8qICFDT05GSUdfTU1VICovXFxuIFxcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9OT1NDQU5cXHQtMlxcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9GVUxMXFx0LTFcXG4tI2RlZmluZSBOT0RFX1JFQ0xBSU1fU09NRVxcdDBcXG4tI2RlZmluZSBOT0RFX1JFQ0xBSU1fU1VDQ0VTU1xcdDFcXG4tXFxuICNpZmRlZiBDT05GSUdfTlVNQVxcbiBleHRlcm4gaW50IG5vZGVfcmVjbGFpbV9tb2RlO1xcbiBcXG4tZXh0ZXJuIGludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICosIGdmcF90LCB1bnNpZ25lZCBpbnQpO1xcbitleHRlcm4gdW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcXG4rXFx0XFx0XFx0XFx0ICBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTtcXG4gZXh0ZXJuIGludCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzayk7XFxuICNlbHNlXFxuICNkZWZpbmUgbm9kZV9yZWNsYWltX21vZGUgMFxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IG1hc2ssXFxuLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBvcmRlcilcXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxcbitcXHRcXHRcXHRcXHRcXHQgZ2ZwX3QgbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKVxcbiB7XFxuLVxcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBzdGF0aWMgaW5saW5lIGludCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzaylcXG4ge1xcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcXG5pbmRleCA5Yzk3YTg2ZGEyYjlmMS4uYWY2MzU1ODM5MTM0NTkgMTAwNjQ0XFxuLS0tIGEvbW0vcGFnZV9hbGxvYy5jXFxuKysrIGIvbW0vcGFnZV9hbGxvYy5jXFxuQEAgLTM5MDgsOCArMzkwOCw2IEBAIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxcbiBcXHRcXHRpZiAoIXpvbmVfd2F0ZXJtYXJrX2Zhc3Qoem9uZSwgb3JkZXIsIG1hcmssXFxuIFxcdFxcdFxcdFxcdCAgICAgICBhYy1cXHUwMDNlaGlnaGVzdF96b25laWR4LCBhbGxvY19mbGFncyxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIGdmcF9tYXNrKSkge1xcbi1cXHRcXHRcXHRpbnQgcmV0O1xcbi1cXG4gXFx0XFx0XFx0aWYgKGNvbmRfYWNjZXB0X21lbW9yeSh6b25lLCBvcmRlciwgYWxsb2NfZmxhZ3MpKVxcbiBcXHRcXHRcXHRcXHRnb3RvIHRyeV90aGlzX3pvbmU7XFxuIFxcbkBAIC0zOTMwLDIyICszOTI4LDEzIEBAIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxcbiBcXHRcXHRcXHQgICAgIXpvbmVfYWxsb3dzX3JlY2xhaW0oem9uZWxpc3Rfem9uZShhYy1cXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYpLCB6b25lKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbi1cXHRcXHRcXHRyZXQgPSBub2RlX3JlY2xhaW0oem9uZS1cXHUwMDNlem9uZV9wZ2RhdCwgZ2ZwX21hc2ssIG9yZGVyKTtcXG4tXFx0XFx0XFx0c3dpdGNoIChyZXQpIHtcXG4tXFx0XFx0XFx0Y2FzZSBOT0RFX1JFQ0xBSU1fTk9TQ0FOOlxcbi1cXHRcXHRcXHRcXHQvKiBkaWQgbm90IHNjYW4gKi9cXG4tXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdGNhc2UgTk9ERV9SRUNMQUlNX0ZVTEw6XFxuLVxcdFxcdFxcdFxcdC8qIHNjYW5uZWQgYnV0IHVucmVjbGFpbWFibGUgKi9cXG4rXFx0XFx0XFx0aWYgKCFub2RlX3JlY2xhaW0oem9uZS1cXHUwMDNlem9uZV9wZ2RhdCwgZ2ZwX21hc2ssIG9yZGVyKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdGRlZmF1bHQ6XFxuLVxcdFxcdFxcdFxcdC8qIGRpZCB3ZSByZWNsYWltIGVub3VnaCAqL1xcbi1cXHRcXHRcXHRcXHRpZiAoem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssXFxuLVxcdFxcdFxcdFxcdFxcdGFjLVxcdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzKSlcXG4tXFx0XFx0XFx0XFx0XFx0Z290byB0cnlfdGhpc196b25lO1xcbiBcXG4rXFx0XFx0XFx0LyogZGlkIHdlIHJlY2xhaW0gZW5vdWdoICovXFxuK1xcdFxcdFxcdGlmICghem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBhYy1cXHUwMDNlaGlnaGVzdF96b25laWR4LCBhbGxvY19mbGFncykpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuIHRyeV90aGlzX3pvbmU6XFxuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcXG5pbmRleCA0MzU3YTQ0ZWU4NzY3Ny4uYjdlZjAzMmU3OGEwYmQgMTAwNjQ0XFxuLS0tIGEvbW0vdm1zY2FuLmNcXG4rKysgYi9tbS92bXNjYW4uY1xcbkBAIC03NzY4LDkgKzc3NjgsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX25vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBnZnBfdCBnZnBfbWFzayxcXG4gXFx0cmV0dXJuIHNjLVxcdTAwM2Vucl9yZWNsYWltZWQ7XFxuIH1cXG4gXFxuLWludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcXG4rdW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbitcXHR1bnNpZ25lZCBsb25nIHJldDtcXG4gXFx0LyogTWluaW11bSBwYWdlcyBuZWVkZWQgaW4gb3JkZXIgdG8gc3RheSBvbiBub2RlICovXFxuIFxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMgPSAxIFxcdTAwM2NcXHUwMDNjIG9yZGVyO1xcbiBcXHRzdHJ1Y3Qgc2Nhbl9jb250cm9sIHNjID0ge1xcbkBAIC03Nzk3LDEzICs3Nzk3LDEzIEBAIGludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcXG4gXFx0aWYgKG5vZGVfcGFnZWNhY2hlX3JlY2xhaW1hYmxlKHBnZGF0KSBcXHUwMDNjPSBwZ2RhdC1cXHUwMDNlbWluX3VubWFwcGVkX3BhZ2VzIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBub2RlX3BhZ2Vfc3RhdGVfcGFnZXMocGdkYXQsIE5SX1NMQUJfUkVDTEFJTUFCTEVfQikgXFx1MDAzYz1cXG4gXFx0ICAgIHBnZGF0LVxcdTAwM2VtaW5fc2xhYl9wYWdlcylcXG4tXFx0XFx0cmV0dXJuIE5PREVfUkVDTEFJTV9GVUxMO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIERvIG5vdCBzY2FuIGlmIHRoZSBhbGxvY2F0aW9uIHNob3VsZCBub3QgYmUgZGVsYXllZC5cXG4gXFx0ICovXFxuIFxcdGlmICghZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoZ2ZwX21hc2spIHx8IChjdXJyZW50LVxcdTAwM2VmbGFncyBcXHUwMDI2IFBGX01FTUFMTE9DKSlcXG4tXFx0XFx0cmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogT25seSBydW4gbm9kZSByZWNsYWltIG9uIHRoZSBsb2NhbCBub2RlIG9yIG9uIG5vZGVzIHRoYXQgZG8gbm90XFxuQEAgLTc4MTIsMTUgKzc4MTIsMTUgQEAgaW50IG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKVxcbiBcXHQgKiBhcyB3aWRlIGFzIHBvc3NpYmxlLlxcbiBcXHQgKi9cXG4gXFx0aWYgKG5vZGVfc3RhdGUocGdkYXQtXFx1MDAzZW5vZGVfaWQsIE5fQ1BVKSBcXHUwMDI2XFx1MDAyNiBwZ2RhdC1cXHUwMDNlbm9kZV9pZCAhPSBudW1hX25vZGVfaWQoKSlcXG4tXFx0XFx0cmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0aWYgKHRlc3RfYW5kX3NldF9iaXRfbG9jayhQR0RBVF9SRUNMQUlNX0xPQ0tFRCwgXFx1MDAyNnBnZGF0LVxcdTAwM2VmbGFncykpXFxuLVxcdFxcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdHJldCA9IF9fbm9kZV9yZWNsYWltKHBnZGF0LCBnZnBfbWFzaywgbnJfcGFnZXMsIFxcdTAwMjZzYykgXFx1MDAzZT0gbnJfcGFnZXM7XFxuK1xcdHJldCA9IF9fbm9kZV9yZWNsYWltKHBnZGF0LCBnZnBfbWFzaywgbnJfcGFnZXMsIFxcdTAwMjZzYyk7XFxuIFxcdGNsZWFyX2JpdF91bmxvY2soUEdEQVRfUkVDTEFJTV9MT0NLRUQsIFxcdTAwMjZwZ2RhdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXG4tXFx0aWYgKHJldClcXG4rXFx0aWYgKHJldCBcXHUwMDNlPSBucl9wYWdlcylcXG4gXFx0XFx0Y291bnRfdm1fZXZlbnQoUEdTQ0FOX1pPTkVfUkVDTEFJTV9TVUNDRVNTKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRjb3VudF92bV9ldmVudChQR1NDQU5fWk9ORV9SRUNMQUlNX0ZBSUxFRCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjQ4OjUwLjk2MjIwNDkyNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMDYwNjQ1ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlVNQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5vZGVfcmVjbGFpbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByZXR1cm4gdHlwZSBhbmQgbG9naWMgb2YgYG5vZGVfcmVjbGFpbWAgYW5kIGl0cyBjYWxsZXIgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBJdCBjaGFuZ2VzIGhvdyB0aGUgcGFnZSBhbGxvY2F0b3IgaGFuZGxlcyBub2RlIHJlY2xhaW0gcmVzdWx0cywgd2hpY2ggaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWI4NjYzYzY2ODVlMGQzNmMyODY2ZTMxOTFjYWRhZTZiOTM5ZDhiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIxOjQ4OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaW50ZXJuYWwuaCBiL21tL2ludGVybmFsLmhcbmluZGV4IDg3NGJlOTRjZjI1NzBlLi5mMjY0MjNkZTRjYTI4NyAxMDA2NDRcbi0tLSBhL21tL2ludGVybmFsLmhcbisrKyBiL21tL2ludGVybmFsLmhcbkBAIC0xMDk4LDIzICsxMDk4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9sb2NhbCh2b2lkKSB7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgbWxvY2tfZHJhaW5fcmVtb3RlKGludCBjcHUpIHsgfVxuICNlbmRpZiAvKiAhQ09ORklHX01NVSAqL1xuIFxuLSNkZWZpbmUgTk9ERV9SRUNMQUlNX05PU0NBTlx0LTJcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9GVUxMXHQtMVxuLSNkZWZpbmUgTk9ERV9SRUNMQUlNX1NPTUVcdDBcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9TVUNDRVNTXHQxXG4tXG4gI2lmZGVmIENPTkZJR19OVU1BXG4gZXh0ZXJuIGludCBub2RlX3JlY2xhaW1fbW9kZTtcbiBcbi1leHRlcm4gaW50IG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKiwgZ2ZwX3QsIHVuc2lnbmVkIGludCk7XG4rZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsXG4rXHRcdFx0XHQgIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpO1xuIGV4dGVybiBpbnQgZmluZF9uZXh0X2Jlc3Rfbm9kZShpbnQgbm9kZSwgbm9kZW1hc2tfdCAqdXNlZF9ub2RlX21hc2spO1xuICNlbHNlXG4gI2RlZmluZSBub2RlX3JlY2xhaW1fbW9kZSAwXG4gXG4tc3RhdGljIGlubGluZSBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IG1hc2ssXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgb3JkZXIpXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxuK1x0XHRcdFx0XHQgZ2ZwX3QgbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKVxuIHtcbi1cdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xuK1x0cmV0dXJuIDA7XG4gfVxuIHN0YXRpYyBpbmxpbmUgaW50IGZpbmRfbmV4dF9iZXN0X25vZGUoaW50IG5vZGUsIG5vZGVtYXNrX3QgKnVzZWRfbm9kZV9tYXNrKVxuIHtcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcbmluZGV4IDljOTdhODZkYTJiOWYxLi5hZjYzNTU4MzkxMzQ1OSAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xuKysrIGIvbW0vcGFnZV9hbGxvYy5jXG5AQCAtMzkwOCw4ICszOTA4LDYgQEAgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXG4gXHRcdGlmICghem9uZV93YXRlcm1hcmtfZmFzdCh6b25lLCBvcmRlciwgbWFyayxcbiBcdFx0XHRcdCAgICAgICBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzLFxuIFx0XHRcdFx0ICAgICAgIGdmcF9tYXNrKSkge1xuLVx0XHRcdGludCByZXQ7XG4tXG4gXHRcdFx0aWYgKGNvbmRfYWNjZXB0X21lbW9yeSh6b25lLCBvcmRlciwgYWxsb2NfZmxhZ3MpKVxuIFx0XHRcdFx0Z290byB0cnlfdGhpc196b25lO1xuIFxuQEAgLTM5MzAsMjIgKzM5MjgsMTMgQEAgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXG4gXHRcdFx0ICAgICF6b25lX2FsbG93c19yZWNsYWltKHpvbmVsaXN0X3pvbmUoYWMtXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYpLCB6b25lKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRcdHJldCA9IG5vZGVfcmVjbGFpbSh6b25lLVx1MDAzZXpvbmVfcGdkYXQsIGdmcF9tYXNrLCBvcmRlcik7XG4tXHRcdFx0c3dpdGNoIChyZXQpIHtcbi1cdFx0XHRjYXNlIE5PREVfUkVDTEFJTV9OT1NDQU46XG4tXHRcdFx0XHQvKiBkaWQgbm90IHNjYW4gKi9cbi1cdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdGNhc2UgTk9ERV9SRUNMQUlNX0ZVTEw6XG4tXHRcdFx0XHQvKiBzY2FubmVkIGJ1dCB1bnJlY2xhaW1hYmxlICovXG4rXHRcdFx0aWYgKCFub2RlX3JlY2xhaW0oem9uZS1cdTAwM2V6b25lX3BnZGF0LCBnZnBfbWFzaywgb3JkZXIpKVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0ZGVmYXVsdDpcbi1cdFx0XHRcdC8qIGRpZCB3ZSByZWNsYWltIGVub3VnaCAqL1xuLVx0XHRcdFx0aWYgKHpvbmVfd2F0ZXJtYXJrX29rKHpvbmUsIG9yZGVyLCBtYXJrLFxuLVx0XHRcdFx0XHRhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzKSlcbi1cdFx0XHRcdFx0Z290byB0cnlfdGhpc196b25lO1xuIFxuK1x0XHRcdC8qIGRpZCB3ZSByZWNsYWltIGVub3VnaCAqL1xuK1x0XHRcdGlmICghem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssXG4rXHRcdFx0XHRcdCAgICAgICBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdH1cbiBcdFx0fVxuIFxuIHRyeV90aGlzX3pvbmU6XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggNDM1N2E0NGVlODc2NzcuLmI3ZWYwMzJlNzhhMGJkIDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbisrKyBiL21tL3Ztc2Nhbi5jXG5AQCAtNzc2OCw5ICs3NzY4LDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19ub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRyZXR1cm4gc2MtXHUwMDNlbnJfcmVjbGFpbWVkO1xuIH1cbiBcbi1pbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4rdW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcbiB7XG4tXHRpbnQgcmV0O1xuK1x0dW5zaWduZWQgbG9uZyByZXQ7XG4gXHQvKiBNaW5pbXVtIHBhZ2VzIG5lZWRlZCBpbiBvcmRlciB0byBzdGF5IG9uIG5vZGUgKi9cbiBcdGNvbnN0IHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMgPSAxIFx1MDAzY1x1MDAzYyBvcmRlcjtcbiBcdHN0cnVjdCBzY2FuX2NvbnRyb2wgc2MgPSB7XG5AQCAtNzc5NywxMyArNzc5NywxMyBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHRpZiAobm9kZV9wYWdlY2FjaGVfcmVjbGFpbWFibGUocGdkYXQpIFx1MDAzYz0gcGdkYXQtXHUwMDNlbWluX3VubWFwcGVkX3BhZ2VzIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG5vZGVfcGFnZV9zdGF0ZV9wYWdlcyhwZ2RhdCwgTlJfU0xBQl9SRUNMQUlNQUJMRV9CKSBcdTAwM2M9XG4gXHQgICAgcGdkYXQtXHUwMDNlbWluX3NsYWJfcGFnZXMpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fRlVMTDtcbitcdFx0cmV0dXJuIDA7XG4gXG4gXHQvKlxuIFx0ICogRG8gbm90IHNjYW4gaWYgdGhlIGFsbG9jYXRpb24gc2hvdWxkIG5vdCBiZSBkZWxheWVkLlxuIFx0ICovXG4gXHRpZiAoIWdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGdmcF9tYXNrKSB8fCAoY3VycmVudC1cdTAwM2VmbGFncyBcdTAwMjYgUEZfTUVNQUxMT0MpKVxuLVx0XHRyZXR1cm4gTk9ERV9SRUNMQUlNX05PU0NBTjtcbitcdFx0cmV0dXJuIDA7XG4gXG4gXHQvKlxuIFx0ICogT25seSBydW4gbm9kZSByZWNsYWltIG9uIHRoZSBsb2NhbCBub2RlIG9yIG9uIG5vZGVzIHRoYXQgZG8gbm90XG5AQCAtNzgxMiwxNSArNzgxMiwxNSBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHQgKiBhcyB3aWRlIGFzIHBvc3NpYmxlLlxuIFx0ICovXG4gXHRpZiAobm9kZV9zdGF0ZShwZ2RhdC1cdTAwM2Vub2RlX2lkLCBOX0NQVSkgXHUwMDI2XHUwMDI2IHBnZGF0LVx1MDAzZW5vZGVfaWQgIT0gbnVtYV9ub2RlX2lkKCkpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xuK1x0XHRyZXR1cm4gMDtcbiBcbiBcdGlmICh0ZXN0X2FuZF9zZXRfYml0X2xvY2soUEdEQVRfUkVDTEFJTV9MT0NLRUQsIFx1MDAyNnBnZGF0LVx1MDAzZWZsYWdzKSlcbi1cdFx0cmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47XG4rXHRcdHJldHVybiAwO1xuIFxuLVx0cmV0ID0gX19ub2RlX3JlY2xhaW0ocGdkYXQsIGdmcF9tYXNrLCBucl9wYWdlcywgXHUwMDI2c2MpIFx1MDAzZT0gbnJfcGFnZXM7XG4rXHRyZXQgPSBfX25vZGVfcmVjbGFpbShwZ2RhdCwgZ2ZwX21hc2ssIG5yX3BhZ2VzLCBcdTAwMjZzYyk7XG4gXHRjbGVhcl9iaXRfdW5sb2NrKFBHREFUX1JFQ0xBSU1fTE9DS0VELCBcdTAwMjZwZ2RhdC1cdTAwM2VmbGFncyk7XG4gXG4tXHRpZiAocmV0KVxuK1x0aWYgKHJldCBcdTAwM2U9IG5yX3BhZ2VzKVxuIFx0XHRjb3VudF92bV9ldmVudChQR1NDQU5fWk9ORV9SRUNMQUlNX1NVQ0NFU1MpO1xuIFx0ZWxzZVxuIFx0XHRjb3VudF92bV9ldmVudChQR1NDQU5fWk9ORV9SRUNMQUlNX0ZBSUxFRCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMTo0ODo1MC45NjIyMDY5MTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDcyNDYxNDQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBub2RlX3JlY2xhaW1gIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCwgYWxiZWl0IHNpZ25pZmljYW50LCBjaGFuZ2UgdG8gaG93IGBub2RlX3JlY2xhaW1gIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIE5VTUEgbWVtb3J5IG1hbmFnZW1lbnQgZnJhbWV3b3JrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgcmVmYWN0b3JpbmcsIGNoYW5naW5nIHRoZSByZXR1cm4gc2VtYW50aWNzIHRvIGJlIG1vcmUgZXhwbGljaXQuIFByZXZpb3VzbHksIGBub2RlX3JlY2xhaW1gIHJldHVybmVkIGFuIGludGVnZXIgdXNpbmcgYSBzZXQgb2YgbWFjcm9zIChgTk9ERV9SRUNMQUlNXypgKS4gTm93LCBpdCdzIHJldHVybmluZyBhbiBgdW5zaWduZWQgbG9uZ2AgcmVwcmVzZW50aW5nIHRoZSAqbnVtYmVyKiBvZiByZWNsYWltZWQgcGFnZXMsIG9yIHplcm8gaWYgbm8gcGFnZXMgd2VyZSByZWNsYWltZWQgb3IgaWYgdGhlIHNjYW4gd2Fzbid0IHBlcmZvcm1lZC5cblxuTGV0J3MgbG9vayBhdCBgbW0vcGFnZV9hbGxvYy5jYCB3aGVyZSB0aGUgaW1wYWN0IGlzIG1vc3QgZXZpZGVudC4gVGhlIG9sZCBjb2RlIHVzZWQgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgYmFzZWQgb24gdGhlIGBOT0RFX1JFQ0xBSU1fKmAgbWFjcm8gdmFsdWVzIHRvIGRldGVybWluZSB0aGUgbmV4dCBjb3Vyc2Ugb2YgYWN0aW9uLiAgSSBzZWUgaXQgcHJldmlvdXNseSBjaGVja2VkIGlmIGByZXRgIHdhcyBgTk9ERV9SRUNMQUlNX1NPTUVgIHdoaWNoIG1lYW5zIGl0IHJlY2xhaW1lZCBzb21ldGhpbmcsIGJ1dCBub3QgZW5vdWdoLCBhbmQgdGhlIGNvZGUgcHJvY2VlZGVkIHRvIGNoZWNrIGB6b25lX3dhdGVybWFya19va2AuXG5cbk5vdywgdGhlIGNvZGUgdXNlcyBhIHNpbXBsZSBgaWZgIHN0YXRlbWVudCwgYGlmICghbm9kZV9yZWNsYWltKC4uLikpIGNvbnRpbnVlO2AuICBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaGVyZSBpcyB0aGUgY2hhbmdlIGluIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBhIFwiZmFpbHVyZVwiLiBQcmV2aW91c2x5LCBhIHJldHVybiBvZiAwIGZyb20gYG5vZGVfcmVjbGFpbWAgaW1wbGllZCBzb21lIHBhZ2VzICptaWdodCogaGF2ZSBiZWVuIHJlY2xhaW1lZCwgYnV0IG5vdywgemVybyBtZWFucyBcIm5vdGhpbmcgcmVjbGFpbWVkIG9yIG5vdCBzY2FubmVkLlwiICBUaGlzIGZ1bmRhbWVudGFsbHkgY2hhbmdlcyB0aGUgY29udHJvbCBmbG93LCBza2lwcGluZyB0aGUgd2F0ZXJtYXJrIGNoZWNrIGluIHRoZSBldmVudCBvZiB6ZXJvIHBhZ2VzIHJlY2xhaW1lZC4gSXQgbWVhbnMgaWYgYF9fbm9kZV9yZWNsYWltYCB3aGljaCBpcyB0aGUgY29kZSBkb2luZyB0aGUgYWN0dWFsIHdvcmssIHJlY2xhaW1zIHplcm8gcGFnZXMsIHdlJ2xsIHNraXAgZnVydGhlciBhbGxvY2F0aW9uIHdvcmssIHdoaWNoIGlzIG5ldy4gVGhpcyBpcyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGFsdGVyYXRpb24gdG8gdGhlIHBhZ2UgYWxsb2NhdGlvbiBwYXRoLCBhbmQgSSdsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCB0aG9zZSBpbXBhY3RzIGFyZS5cblxuVGhlIGFmZmVjdGVkIGNvZGUgaXMgaW4gYG1tL3Ztc2Nhbi5jYCBhbmQgaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19OVU1BYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZS4gU28sIGl0J3MgcHJldHR5IGZvY3VzZWQgaW4gaXRzIHNjb3BlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBub2RlX3JlY2xhaW1gIGFuZCBvdGhlciBmdW5jdGlvbnMgbGlrZSBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMuXG5cbkdpdmVuIHRoZSBjaGFuZ2UgdG8gcmV0dXJuIHNlbWFudGljcyBhbmQgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbmF0dXJlIG9mIHRoaXMgcGF0Y2gsIEknZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IGEgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJJ2xsIGZsYWcgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4gTXkga2V5IGZvY3VzIHN5bWJvbHMgd2lsbCBiZSBgbm9kZV9yZWNsYWltYCBhbmQgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZyB0byBrZWVwIGluIG1pbmQgaXMgYE5VTUFgLiBUaW1lIHRvIGRpZyBkZWVwZXIgaW50byBgbW0vdm1zY2FuLmNgIGFuZCB2ZXJpZnkgYWxsIGFzc3VtcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQ1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzY4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MDEuNjg2ODI0MDMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjE4NjIyNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnVuc2lnbmVkIGxvbmcgbm9kZV9yZWNsYWltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTc3Mjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19ub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS92bXNjYW4uYy03NzcwLVxcbm1tL3Ztc2Nhbi5jOjc3NzE6dW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcXG5tbS92bXNjYW4uYy03NzcyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MDcuMjQ4NjkxNDIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1OTc3NTA2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29kZSBsb2NhdGlvbnMsIHRoaW5raW5nIGFib3V0IHRoZW0gZnJvbSBteSBvd24gZXhwZXJpZW5jZTpcblxuKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwncyBNZW1vcnkgTWFuYWdlbWVudCBMYW5kc2NhcGUqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIHR3byBmdW5jdGlvbnMuLi4gYG5vZGVfcmVjbGFpbWAg4oCTIGFoIHllcywgdGhhdCdzIGRlZmluaXRlbHkgaW4gYG1tL3Ztc2Nhbi5jYC4gSXQncyBhIGNsYXNzaWMgbG9jYXRpb24sIGRlYWxpbmcgd2l0aCB0aGUgcmVjbGFtYXRpb24gcGFydCBvZiB0aGUgdmlydHVhbCBtZW1vcnkgc2Nhbi4gVGhlIG5vZGUgbGV2ZWwgcmVjbGFtYXRpb24sIGFsd2F5cyBhIHRyaWNreSBhcmVhLCBidXQgdGhhdCBtYWtlcyBzZW5zZS4gSXQncyB3aGVyZSB0aGUga2VybmVsIHRyaWVzIHRvIGZyZWUgdXAgcGFnZXMgZnJvbSBhIHNwZWNpZmljIE5VTUEgbm9kZSwgZ2V0dGluZyBpdHMgd29yayBjdXQgb3V0IGZvciBpdC5cblxuTm93LCBmb3IgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLCB0aGF0IG9uZeKAmXMgYWx3YXlzIGJlZW4gbW9yZSBzdHJhaWdodGZvcndhcmQuIEkgY2FuIHJlY2FsbCBsb29raW5nIGF0IGl0IGluIGBtbS9wYWdlX2FsbG9jLmNgLCBleGFjdGx5IHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBpdC4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBwYWdlIGFsbG9jYXRpb24gc3lzdGVtLiBUaGUgd29ya2hvcnNlIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlIGZyZWUgbGlzdHMsIHRoZSBidWRkeSBzeXN0ZW0sIGFuZCBzbyBvbi4gSXTigJlzIHRoZSBnYXRla2VlcGVyLCBkZWNpZGluZyB3aGF0IHBhZ2UgdG8gZ2l2ZSB3aGVuIHRoZSBzeXN0ZW0gbmVlZHMgbW9yZSBtZW1vcnksIG9yIHB1bGxpbmcgYW4gdW5yZWZlcmVuY2VkIHBhZ2UgZnJvbSB0aGUgZnJlZSBsaXN0cy4gR29vZCB0byBrZWVwIHRob3NlIGxvY2F0aW9ucyBzdHJhaWdodCBpbiBteSBoZWFkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODEwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MTAuNTA4NDY4NDI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxODUzNTAzMDcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgc3RydWN0IHBhZ2UgXFxcXCouKmdldF9wYWdlX2Zyb21fZnJlZWxpc3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjQ5OjE1LjY5MzgzMDQyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTkxNjI4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipOYXZpZ2F0aW5nIHRoZSBNZW1vcnkgTWFuYWdlbWVudCBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBUaGUgaGludCBpcyBpdCdzIGluIGBtbS9wYWdlX2FsbG9jLmNgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBHaXZlbiBteSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCdzIG1lbW9yeSBtYW5hZ2VtZW50IGFyY2hpdGVjdHVyZSwgSSBjYW4gY29uZmlkZW50bHkgc3VybWlzZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2VudHJhbCB0byBoYW5kbGluZyB0aGUgYWxsb2NhdGlvbiBvZiBwaHlzaWNhbCBwYWdlcyBmcm9tIHRoZSBmcmVlIGxpc3QuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgZXhhY3RseSBob3cgdGhpcyBjcnVjaWFsIHByb2Nlc3Mgd29ya3MuIExldCdzIGdldCB0byB0aGUgc3BlY2lmaWNzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MTguOTUyOTk1NzU0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTQwMDU1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9wYWdlX2FsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9hbGxvYy5jPTMxMz1ERUZJTkVfU1RBVElDX0tFWV9UUlVFKGRlZmVycmVkX3BhZ2VzKTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0zMTYtICogZGVmZXJyZWRfZ3Jvd196b25lKCkgaXMgX19pbml0LCBidXQgaXQgaXMgY2FsbGVkIGZyb21cXG5tbS9wYWdlX2FsbG9jLmM6MzE3OiAqIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoKSBkdXJpbmcgZWFybHkgYm9vdCB1bnRpbCBkZWZlcnJlZF9wYWdlcyBwZXJtYW5lbnRseVxcbm1tL3BhZ2VfYWxsb2MuYy0zMTgtICogZGlzYWJsZXMgdGhpcyBjYWxsLiBUaGlzIGlzIHdoeSB3ZSBoYXZlIHJlZmRhdGEgd3JhcHBlciB0byBhdm9pZCB3YXJuaW5nLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTM3ODc9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYWxsb2NfZmxhZ3NfY21hKGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTM3OTYtLypcXG5tbS9wYWdlX2FsbG9jLmM6Mzc5NzogKiBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0IGdvZXMgdGhyb3VnaCB0aGUgem9uZWxpc3QgdHJ5aW5nIHRvIGFsbG9jYXRlXFxubW0vcGFnZV9hbGxvYy5jLTM3OTgtICogYSBwYWdlLlxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTM4MDA9c3RhdGljIHN0cnVjdCBwYWdlICpcXG5tbS9wYWdlX2FsbG9jLmM6MzgwMTpnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsIGludCBhbGxvY19mbGFncyxcXG5tbS9wYWdlX2FsbG9jLmMtMzgwMi1cXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYWxsb2NfY29udGV4dCAqYWMpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NDAyNj1fX2FsbG9jX3BhZ2VzX2NwdXNldF9mYWxsYmFjayhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQwMzEtXFxubW0vcGFnZV9hbGxvYy5jOjQwMzI6XFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLFxcbm1tL3BhZ2VfYWxsb2MuYy00MDMzLVxcdFxcdFxcdGFsbG9jX2ZsYWdzfEFMTE9DX0NQVVNFVCwgYWMpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQwMzgtXFx0aWYgKCFwYWdlKVxcbm1tL3BhZ2VfYWxsb2MuYzo0MDM5OlxcdFxcdHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF9tYXNrLCBvcmRlcixcXG5tbS9wYWdlX2FsbG9jLmMtNDA0MC1cXHRcXHRcXHRcXHRhbGxvY19mbGFncywgYWMpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQwNDU9X19hbGxvY19wYWdlc19tYXlfb29tKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNDA3NS1cXHQgKi9cXG5tbS9wYWdlX2FsbG9jLmM6NDA3NjpcXHRwYWdlID0gZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCgoZ2ZwX21hc2sgfCBfX0dGUF9IQVJEV0FMTCkgXFx1MDAyNlxcbm1tL3BhZ2VfYWxsb2MuYy00MDc3LVxcdFxcdFxcdFxcdCAgICAgIH5fX0dGUF9ESVJFQ1RfUkVDTEFJTSwgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NDE0MD1fX2FsbG9jX3BhZ2VzX2RpcmVjdF9jb21wYWN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNDE3Ni1cXHRpZiAoIXBhZ2UpXFxubW0vcGFnZV9hbGxvYy5jOjQxNzc6XFx0XFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xcbm1tL3BhZ2VfYWxsb2MuYy00MTc4LVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ0MTY9X19hbGxvY19wYWdlc19kaXJlY3RfcmVjbGFpbShnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ0MjktcmV0cnk6XFxubW0vcGFnZV9hbGxvYy5jOjQ0MzA6XFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xcbm1tL3BhZ2VfYWxsb2MuYy00NDMxLVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MzE9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ4MzAtXFx0ICovXFxubW0vcGFnZV9hbGxvYy5jOjQ4MzE6XFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xcbm1tL3BhZ2VfYWxsb2MuYy00ODMyLVxcdGlmIChwYWdlKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTUzMzA9c3RydWN0IHBhZ2UgKl9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy01MzgyLVxcdC8qIEZpcnN0IGFsbG9jYXRpb24gYXR0ZW1wdCAob3IsIGZvciBub2xvY2ssIG9ubHkgYXR0ZW1wdCkgKi9cXG5tbS9wYWdlX2FsbG9jLmM6NTM4MzpcXHRwYWdlID0gZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChhbGxvY19nZnAsIG9yZGVyLCBmYXN0cGF0aF9hbGxvY19mbGFncywgXFx1MDAyNmFjKTtcXG5tbS9wYWdlX2FsbG9jLmMtNTM4NC1cXHRpZiAobGlrZWx5KHBhZ2UpIHx8IChhbGxvY19mbGFncyBcXHUwMDI2IEFMTE9DX05PTE9DSykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjQ5OjIwLjY2NzAwNzEwNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MzY1MDE0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCB3ZXJlIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqT3B0aW1pemluZyBTeW1ib2wgTGlzdGluZyBmb3IgUGVyZm9ybWFuY2UqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIHJlZmluZSB0aGUgc3ltYm9sIGxpc3RpbmcgZm9yIGFuYWx5c2lzLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgYXZvaWRpbmcgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGVzcGVjaWFsbHkgaW4gYSBmdW5jdGlvbiBsaWtlIGBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0YC4gSXQncyBhIGtub3duIGhvdCBwYXRoLCBzbyBJIG5lZWQgdG8gYmUgKnZlcnkqIGNhcmVmdWwgYWJvdXQgaW5jbHVkaW5nIGl0IGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0IGtpbmQgb2YgZnVuY3Rpb24gd2lsbCBza2V3IGFueSBwcm9maWxpbmcgSSdtIGRvaW5nIGFuZCBhZGQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQgdG8gdGhlIGZvY3VzIGNhbGN1bGF0aW9ucywgZXNwZWNpYWxseSBpZiBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5IGFyZWFzIHRoYXQgd2lsbCBtb3N0IGJlbmVmaXQgZnJvbSBvcHRpbWl6YXRpb24uXG5cblNvLCBJIHdvbid0IGxpc3QgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBUaGF0J3MgYSBkZWZpbml0ZSBuby1nby4gSW5zdGVhZCwgSSdsbCBmb2N1cyBvbiBsaXN0aW5nIGBub2RlX3JlY2xhaW1gLCBhcyBpdCBzZWVtcyBhIGhpZ2hlci1sZXZlbCBmdW5jdGlvbiBhbmQgcHJvYmFibHkgY2FsbHMgdGhlIGZvcm1lciBhcyBwYXJ0IG9mIGl0cyBvcGVyYXRpb24uIEl0J3MgYSBtb3JlIGFwcHJvcHJpYXRlIGxldmVsIG9mIGFic3RyYWN0aW9uIGZvciB0aGUga2luZCBvZiBwcm9maWxpbmcgSSdtIGxpa2VseSBpbnRlcmVzdGVkIGluLlxuXG5Ob3csIEkgYWxzbyBuZWVkIHRvIGNoZWNrIGlmIGBub2RlX3JlY2xhaW1gIGlzIHNwZWNpZmljYWxseSB3aXRoaW4gYSBOVU1BIGNvbnRleHQuIEknbGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIGNvcnJlY3RseSB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgYENPTkZJR19OVU1BYCBvcHRpb24uIFRoaXMgaXMgZXNzZW50aWFsIGNvbnRleHQsIGFzIHRoZSBiZWhhdmlvciBvZiBgbm9kZV9yZWNsYWltYCB3aWxsIGJlIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGlmIE5VTUEgaXMgZW5hYmxlZC4gVGhpcyB3aWxsIGluZm9ybSBob3cgSSBpbnRlcnByZXQgYW55IHByb2ZpbGluZyBkYXRhIEknbSBhYmxlIHRvIGdhdGhlciwgYW5kIEkgbWlnaHQgbmVlZCB0byBhZGp1c3QgbXkgdGVjaG5pcXVlcyBpZiBOVU1BIGlzIGRpc2FibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDMyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MjcuMjAzNTEwNjE4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg4MDM1MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4jaWZkZWYgQ09ORklHX05VTUFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9NzYxOT1zdGF0aWMgY29uc3Qgc3RydWN0IGN0bF90YWJsZSB2bXNjYW5fc3lzY3RsX3RhYmxlW10gPSB7XFxuLS1cXG5tbS92bXNjYW4uYy03NjI4LVxcdH0sXFxubW0vdm1zY2FuLmM6NzYyOTojaWZkZWYgQ09ORklHX05VTUFcXG5tbS92bXNjYW4uYy03NjMwLVxcdHtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTc2NTE9bW9kdWxlX2luaXQoa3N3YXBkX2luaXQpXFxubW0vdm1zY2FuLmMtNzY1Mi1cXG5tbS92bXNjYW4uYzo3NjUzOiNpZmRlZiBDT05GSUdfTlVNQVxcbm1tL3Ztc2Nhbi5jLTc2NTQtLypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MjkuMDkxNTUyMzg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NTk3MTA2NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQ6IE5vZGUgUmVjbGFpbSB3aXRoIE5VTUEgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBhIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNwZWNpZmljYWxseSB0b3VjaGVzIGBub2RlX3JlY2xhaW1gLCBhbmQgdGhlIGNydWNpYWwgZGV0YWlsIGhlcmUgaXMgdGhhdCBgbm9kZV9yZWNsYWltYCBpcyBjb25maWd1cmVkIHVuZGVyIGBDT05GSUdfTlVNQWAuIFRoaXMgaXMgaW1tZWRpYXRlbHkgcmVsZXZhbnQgdG8gbXkgd29yay5cblxuVGhlIHBhdGNoIGl0c2VsZiBkaWdzIGludG8gdGhlIGd1dHMgb2YgdGhlIHBhZ2UgYWxsb2NhdG9yIGFuZCB0aGUgbm9kZSByZWNsYWltIGxvZ2ljLiBNb3JlIHNwZWNpZmljYWxseSwgaXQncyBtZXNzaW5nIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiBgbm9kZV9yZWNsYWltYCBhbmQsIGNydWNpYWxseSwgaG93IHRoYXQgcmV0dXJuIHZhbHVlIGlzIGludGVycHJldGVkIGFuZCBhY3RlZCB1cG9uIHdpdGhpbiBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIFRoYXQncyBzaWduaWZpY2FudC4gV2UncmUgdGFsa2luZyBhYm91dCBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgdGhlIHJlc3VsdHMgb2Ygbm9kZSByZWNsYWltLCBhIGNyaXRpY2FsIGNvbXBvbmVudCBvZiBtZW1vcnkgbWFuYWdlbWVudCwgZXNwZWNpYWxseSBpbiBOVU1BIHN5c3RlbXMuXG5cblRoZSBjaGFuZ2VzIGludm9sdmUgYWx0ZXJpbmcgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIGFuZCB1c2VzIHRoZSByZXN1bHRzIG9mIGF0dGVtcHRpbmcgbm9kZSByZWNsYWltLiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgY29yZSBtZW1vcnkgZnVuY3Rpb25hbGl0eS4gR2l2ZW4gdGhpcyBsZXZlbCBvZiBjaGFuZ2UsIGFuZCBlc3BlY2lhbGx5IHRoZSBpbnRlcnBsYXkgd2l0aCBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAsIEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgYSBkZWZpbml0ZSBmdXp6aW5nIHRhcmdldC4gSXQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZXhwb3NlIHN1YnRsZSBtZW1vcnkgbWFuYWdlbWVudCBidWdzIHRoYXQgY291bGQgbGVhZCB0byBjcmFzaGVzLCBsZWFrcywgb3IgZXZlbiBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMDUsIk91dHB1dFRva2VucyI6ODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MzQuNzUxMjY1MTY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2OTk3Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVU1BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibm9kZV9yZWNsYWltXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVU1BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibm9kZV9yZWNsYWltXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 21:03:16 +0000 UTC FinishedAt: 2026-07-14 21:49:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "2fc4daf5c4774d70254201aaa5a9d50cae52af5e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NUMA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "2fc4daf5c4774d70254201aaa5a9d50cae52af5e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NUMA" ], "series_id": "72979bbf-9733-4301-9675-1ee76d4898f4" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "node_reclaim" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05VTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtub2RlX3JlY2xhaW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMTo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGViODY2M2M2Njg1ZTBkMzZjMjg2NmUzMTkxY2FkYWU2YjkzOWQ4YjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMTo0ODo0OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaFxuaW5kZXggODc0YmU5NGNmMjU3MGUuLmYyNjQyM2RlNGNhMjg3IDEwMDY0NFxuLS0tIGEvbW0vaW50ZXJuYWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaW50ZXJuYWwuaFxuQEAgLTEwOTgsMjMgJiM0MzsxMDk4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9sb2NhbCh2b2lkKSB7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgbWxvY2tfZHJhaW5fcmVtb3RlKGludCBjcHUpIHsgfVxuICNlbmRpZiAvKiAhQ09ORklHX01NVSAqL1xuIFxuLSNkZWZpbmUgTk9ERV9SRUNMQUlNX05PU0NBTlx0LTJcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9GVUxMXHQtMVxuLSNkZWZpbmUgTk9ERV9SRUNMQUlNX1NPTUVcdDBcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9TVUNDRVNTXHQxXG4tXG4gI2lmZGVmIENPTkZJR19OVU1BXG4gZXh0ZXJuIGludCBub2RlX3JlY2xhaW1fbW9kZTtcbiBcbi1leHRlcm4gaW50IG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKiwgZ2ZwX3QsIHVuc2lnbmVkIGludCk7XG4mIzQzO2V4dGVybiB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxuJiM0MztcdFx0XHRcdCAgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcik7XG4gZXh0ZXJuIGludCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzayk7XG4gI2Vsc2VcbiAjZGVmaW5lIG5vZGVfcmVjbGFpbV9tb2RlIDBcbiBcbi1zdGF0aWMgaW5saW5lIGludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgbWFzayxcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBvcmRlcilcbiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxuJiM0MztcdFx0XHRcdFx0IGdmcF90IG1hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcbiB7XG4tXHRyZXR1cm4gTk9ERV9SRUNMQUlNX05PU0NBTjtcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gc3RhdGljIGlubGluZSBpbnQgZmluZF9uZXh0X2Jlc3Rfbm9kZShpbnQgbm9kZSwgbm9kZW1hc2tfdCAqdXNlZF9ub2RlX21hc2spXG4ge1xuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xuaW5kZXggOWM5N2E4NmRhMmI5ZjEuLmFmNjM1NTgzOTEzNDU5IDEwMDY0NFxuLS0tIGEvbW0vcGFnZV9hbGxvYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmNcbkBAIC0zOTA4LDggJiM0MzszOTA4LDYgQEAgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXG4gXHRcdGlmICghem9uZV93YXRlcm1hcmtfZmFzdCh6b25lLCBvcmRlciwgbWFyayxcbiBcdFx0XHRcdCAgICAgICBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzLFxuIFx0XHRcdFx0ICAgICAgIGdmcF9tYXNrKSkge1xuLVx0XHRcdGludCByZXQ7XG4tXG4gXHRcdFx0aWYgKGNvbmRfYWNjZXB0X21lbW9yeSh6b25lLCBvcmRlciwgYWxsb2NfZmxhZ3MpKVxuIFx0XHRcdFx0Z290byB0cnlfdGhpc196b25lO1xuIFxuQEAgLTM5MzAsMjIgJiM0MzszOTI4LDEzIEBAIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxuIFx0XHRcdCAgICAhem9uZV9hbGxvd3NfcmVjbGFpbSh6b25lbGlzdF96b25lKGFjLVx1MDAzZXByZWZlcnJlZF96b25lcmVmKSwgem9uZSkpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0XHRyZXQgPSBub2RlX3JlY2xhaW0oem9uZS1cdTAwM2V6b25lX3BnZGF0LCBnZnBfbWFzaywgb3JkZXIpO1xuLVx0XHRcdHN3aXRjaCAocmV0KSB7XG4tXHRcdFx0Y2FzZSBOT0RFX1JFQ0xBSU1fTk9TQ0FOOlxuLVx0XHRcdFx0LyogZGlkIG5vdCBzY2FuICovXG4tXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRjYXNlIE5PREVfUkVDTEFJTV9GVUxMOlxuLVx0XHRcdFx0Lyogc2Nhbm5lZCBidXQgdW5yZWNsYWltYWJsZSAqL1xuJiM0MztcdFx0XHRpZiAoIW5vZGVfcmVjbGFpbSh6b25lLVx1MDAzZXpvbmVfcGdkYXQsIGdmcF9tYXNrLCBvcmRlcikpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRkZWZhdWx0OlxuLVx0XHRcdFx0LyogZGlkIHdlIHJlY2xhaW0gZW5vdWdoICovXG4tXHRcdFx0XHRpZiAoem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssXG4tXHRcdFx0XHRcdGFjLVx1MDAzZWhpZ2hlc3Rfem9uZWlkeCwgYWxsb2NfZmxhZ3MpKVxuLVx0XHRcdFx0XHRnb3RvIHRyeV90aGlzX3pvbmU7XG4gXG4mIzQzO1x0XHRcdC8qIGRpZCB3ZSByZWNsYWltIGVub3VnaCAqL1xuJiM0MztcdFx0XHRpZiAoIXpvbmVfd2F0ZXJtYXJrX29rKHpvbmUsIG9yZGVyLCBtYXJrLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGFjLVx1MDAzZWhpZ2hlc3Rfem9uZWlkeCwgYWxsb2NfZmxhZ3MpKVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0fVxuIFx0XHR9XG4gXG4gdHJ5X3RoaXNfem9uZTpcbmRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBiL21tL3Ztc2Nhbi5jXG5pbmRleCA0MzU3YTQ0ZWU4NzY3Ny4uYjdlZjAzMmU3OGEwYmQgMTAwNjQ0XG4tLS0gYS9tbS92bXNjYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vdm1zY2FuLmNcbkBAIC03NzY4LDkgJiM0Mzs3NzY4LDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19ub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRyZXR1cm4gc2MtXHUwMDNlbnJfcmVjbGFpbWVkO1xuIH1cbiBcbi1pbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4mIzQzO3Vuc2lnbmVkIGxvbmcgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4ge1xuLVx0aW50IHJldDtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHJldDtcbiBcdC8qIE1pbmltdW0gcGFnZXMgbmVlZGVkIGluIG9yZGVyIHRvIHN0YXkgb24gbm9kZSAqL1xuIFx0Y29uc3QgdW5zaWduZWQgbG9uZyBucl9wYWdlcyA9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0c3RydWN0IHNjYW5fY29udHJvbCBzYyA9IHtcbkBAIC03Nzk3LDEzICYjNDM7Nzc5NywxMyBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHRpZiAobm9kZV9wYWdlY2FjaGVfcmVjbGFpbWFibGUocGdkYXQpIFx1MDAzYz0gcGdkYXQtXHUwMDNlbWluX3VubWFwcGVkX3BhZ2VzIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG5vZGVfcGFnZV9zdGF0ZV9wYWdlcyhwZ2RhdCwgTlJfU0xBQl9SRUNMQUlNQUJMRV9CKSBcdTAwM2M9XG4gXHQgICAgcGdkYXQtXHUwMDNlbWluX3NsYWJfcGFnZXMpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fRlVMTDtcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuIFx0LypcbiBcdCAqIERvIG5vdCBzY2FuIGlmIHRoZSBhbGxvY2F0aW9uIHNob3VsZCBub3QgYmUgZGVsYXllZC5cbiBcdCAqL1xuIFx0aWYgKCFnZnBmbGFnc19hbGxvd19ibG9ja2luZyhnZnBfbWFzaykgfHwgKGN1cnJlbnQtXHUwMDNlZmxhZ3MgXHUwMDI2IFBGX01FTUFMTE9DKSlcbi1cdFx0cmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiBcbiBcdC8qXG4gXHQgKiBPbmx5IHJ1biBub2RlIHJlY2xhaW0gb24gdGhlIGxvY2FsIG5vZGUgb3Igb24gbm9kZXMgdGhhdCBkbyBub3RcbkBAIC03ODEyLDE1ICYjNDM7NzgxMiwxNSBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHQgKiBhcyB3aWRlIGFzIHBvc3NpYmxlLlxuIFx0ICovXG4gXHRpZiAobm9kZV9zdGF0ZShwZ2RhdC1cdTAwM2Vub2RlX2lkLCBOX0NQVSkgXHUwMDI2XHUwMDI2IHBnZGF0LVx1MDAzZW5vZGVfaWQgIT0gbnVtYV9ub2RlX2lkKCkpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4gXHRpZiAodGVzdF9hbmRfc2V0X2JpdF9sb2NrKFBHREFUX1JFQ0xBSU1fTE9DS0VELCBcdTAwMjZwZ2RhdC1cdTAwM2VmbGFncykpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4tXHRyZXQgPSBfX25vZGVfcmVjbGFpbShwZ2RhdCwgZ2ZwX21hc2ssIG5yX3BhZ2VzLCBcdTAwMjZzYykgXHUwMDNlPSBucl9wYWdlcztcbiYjNDM7XHRyZXQgPSBfX25vZGVfcmVjbGFpbShwZ2RhdCwgZ2ZwX21hc2ssIG5yX3BhZ2VzLCBcdTAwMjZzYyk7XG4gXHRjbGVhcl9iaXRfdW5sb2NrKFBHREFUX1JFQ0xBSU1fTE9DS0VELCBcdTAwMjZwZ2RhdC1cdTAwM2VmbGFncyk7XG4gXG4tXHRpZiAocmV0KVxuJiM0MztcdGlmIChyZXQgXHUwMDNlPSBucl9wYWdlcylcbiBcdFx0Y291bnRfdm1fZXZlbnQoUEdTQ0FOX1pPTkVfUkVDTEFJTV9TVUNDRVNTKTtcbiBcdGVsc2VcbiBcdFx0Y291bnRfdm1fZXZlbnQoUEdTQ0FOX1pPTkVfUkVDTEFJTV9GQUlMRUQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05VTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtub2RlX3JlY2xhaW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWI4NjYzYzY2ODVlMGQzNmMyODY2ZTMxOTFjYWRhZTZiOTM5ZDhiNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDIxOjQ4OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vaW50ZXJuYWwuaCBiL21tL2ludGVybmFsLmgKaW5kZXggODc0YmU5NGNmMjU3MGUuLmYyNjQyM2RlNGNhMjg3IDEwMDY0NAotLS0gYS9tbS9pbnRlcm5hbC5oCiYjNDM7JiM0MzsmIzQzOyBiL21tL2ludGVybmFsLmgKQEAgLTEwOTgsMjMgJiM0MzsxMDk4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9sb2NhbCh2b2lkKSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9yZW1vdGUoaW50IGNwdSkgeyB9CiAjZW5kaWYgLyogIUNPTkZJR19NTVUgKi8KIAotI2RlZmluZSBOT0RFX1JFQ0xBSU1fTk9TQ0FOCS0yCi0jZGVmaW5lIE5PREVfUkVDTEFJTV9GVUxMCS0xCi0jZGVmaW5lIE5PREVfUkVDTEFJTV9TT01FCTAKLSNkZWZpbmUgTk9ERV9SRUNMQUlNX1NVQ0NFU1MJMQotCiAjaWZkZWYgQ09ORklHX05VTUEKIGV4dGVybiBpbnQgbm9kZV9yZWNsYWltX21vZGU7CiAKLWV4dGVybiBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqLCBnZnBfdCwgdW5zaWduZWQgaW50KTsKJiM0MztleHRlcm4gdW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwKJiM0MzsJCQkJICBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKIGV4dGVybiBpbnQgZmluZF9uZXh0X2Jlc3Rfbm9kZShpbnQgbm9kZSwgbm9kZW1hc2tfdCAqdXNlZF9ub2RlX21hc2spOwogI2Vsc2UKICNkZWZpbmUgbm9kZV9yZWNsYWltX21vZGUgMAogCi1zdGF0aWMgaW5saW5lIGludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgbWFzaywKLQkJCQl1bnNpZ25lZCBpbnQgb3JkZXIpCiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LAomIzQzOwkJCQkJIGdmcF90IG1hc2ssIHVuc2lnbmVkIGludCBvcmRlcikKIHsKLQlyZXR1cm4gTk9ERV9SRUNMQUlNX05PU0NBTjsKJiM0MzsJcmV0dXJuIDA7CiB9CiBzdGF0aWMgaW5saW5lIGludCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzaykKIHsKZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuYwppbmRleCA5Yzk3YTg2ZGEyYjlmMS4uYWY2MzU1ODM5MTM0NTkgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmMKQEAgLTM5MDgsOCAmIzQzOzM5MDgsNiBAQCBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsIGludCBhbGxvY19mbGFncywKIAkJaWYgKCF6b25lX3dhdGVybWFya19mYXN0KHpvbmUsIG9yZGVyLCBtYXJrLAogCQkJCSAgICAgICBhYy0mZ3Q7aGlnaGVzdF96b25laWR4LCBhbGxvY19mbGFncywKIAkJCQkgICAgICAgZ2ZwX21hc2spKSB7Ci0JCQlpbnQgcmV0OwotCiAJCQlpZiAoY29uZF9hY2NlcHRfbWVtb3J5KHpvbmUsIG9yZGVyLCBhbGxvY19mbGFncykpCiAJCQkJZ290byB0cnlfdGhpc196b25lOwogCkBAIC0zOTMwLDIyICYjNDM7MzkyOCwxMyBAQCBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsIGludCBhbGxvY19mbGFncywKIAkJCSAgICAhem9uZV9hbGxvd3NfcmVjbGFpbSh6b25lbGlzdF96b25lKGFjLSZndDtwcmVmZXJyZWRfem9uZXJlZiksIHpvbmUpKQogCQkJCWNvbnRpbnVlOwogCi0JCQlyZXQgPSBub2RlX3JlY2xhaW0oem9uZS0mZ3Q7em9uZV9wZ2RhdCwgZ2ZwX21hc2ssIG9yZGVyKTsKLQkJCXN3aXRjaCAocmV0KSB7Ci0JCQljYXNlIE5PREVfUkVDTEFJTV9OT1NDQU46Ci0JCQkJLyogZGlkIG5vdCBzY2FuICovCi0JCQkJY29udGludWU7Ci0JCQljYXNlIE5PREVfUkVDTEFJTV9GVUxMOgotCQkJCS8qIHNjYW5uZWQgYnV0IHVucmVjbGFpbWFibGUgKi8KJiM0MzsJCQlpZiAoIW5vZGVfcmVjbGFpbSh6b25lLSZndDt6b25lX3BnZGF0LCBnZnBfbWFzaywgb3JkZXIpKQogCQkJCWNvbnRpbnVlOwotCQkJZGVmYXVsdDoKLQkJCQkvKiBkaWQgd2UgcmVjbGFpbSBlbm91Z2ggKi8KLQkJCQlpZiAoem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssCi0JCQkJCWFjLSZndDtoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzKSkKLQkJCQkJZ290byB0cnlfdGhpc196b25lOwogCiYjNDM7CQkJLyogZGlkIHdlIHJlY2xhaW0gZW5vdWdoICovCiYjNDM7CQkJaWYgKCF6b25lX3dhdGVybWFya19vayh6b25lLCBvcmRlciwgbWFyaywKJiM0MzsJCQkJCSAgICAgICBhYy0mZ3Q7aGlnaGVzdF96b25laWR4LCBhbGxvY19mbGFncykpCiAJCQkJY29udGludWU7Ci0JCQl9CiAJCX0KIAogdHJ5X3RoaXNfem9uZToKZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggNDM1N2E0NGVlODc2NzcuLmI3ZWYwMzJlNzhhMGJkIDEwMDY0NAotLS0gYS9tbS92bXNjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uYwpAQCAtNzc2OCw5ICYjNDM7Nzc2OCw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9fbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLAogCXJldHVybiBzYy0mZ3Q7bnJfcmVjbGFpbWVkOwogfQogCi1pbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiYjNDM7dW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikKIHsKLQlpbnQgcmV0OwomIzQzOwl1bnNpZ25lZCBsb25nIHJldDsKIAkvKiBNaW5pbXVtIHBhZ2VzIG5lZWRlZCBpbiBvcmRlciB0byBzdGF5IG9uIG5vZGUgKi8KIAljb25zdCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzID0gMSAmbHQ7Jmx0OyBvcmRlcjsKIAlzdHJ1Y3Qgc2Nhbl9jb250cm9sIHNjID0gewpAQCAtNzc5NywxMyAmIzQzOzc3OTcsMTMgQEAgaW50IG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKQogCWlmIChub2RlX3BhZ2VjYWNoZV9yZWNsYWltYWJsZShwZ2RhdCkgJmx0Oz0gcGdkYXQtJmd0O21pbl91bm1hcHBlZF9wYWdlcyAmYW1wOyZhbXA7CiAJICAgIG5vZGVfcGFnZV9zdGF0ZV9wYWdlcyhwZ2RhdCwgTlJfU0xBQl9SRUNMQUlNQUJMRV9CKSAmbHQ7PQogCSAgICBwZ2RhdC0mZ3Q7bWluX3NsYWJfcGFnZXMpCi0JCXJldHVybiBOT0RFX1JFQ0xBSU1fRlVMTDsKJiM0MzsJCXJldHVybiAwOwogCiAJLyoKIAkgKiBEbyBub3Qgc2NhbiBpZiB0aGUgYWxsb2NhdGlvbiBzaG91bGQgbm90IGJlIGRlbGF5ZWQuCiAJICovCiAJaWYgKCFnZnBmbGFnc19hbGxvd19ibG9ja2luZyhnZnBfbWFzaykgfHwgKGN1cnJlbnQtJmd0O2ZsYWdzICZhbXA7IFBGX01FTUFMTE9DKSkKLQkJcmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47CiYjNDM7CQlyZXR1cm4gMDsKIAogCS8qCiAJICogT25seSBydW4gbm9kZSByZWNsYWltIG9uIHRoZSBsb2NhbCBub2RlIG9yIG9uIG5vZGVzIHRoYXQgZG8gbm90CkBAIC03ODEyLDE1ICYjNDM7NzgxMiwxNSBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiAJICogYXMgd2lkZSBhcyBwb3NzaWJsZS4KIAkgKi8KIAlpZiAobm9kZV9zdGF0ZShwZ2RhdC0mZ3Q7bm9kZV9pZCwgTl9DUFUpICZhbXA7JmFtcDsgcGdkYXQtJmd0O25vZGVfaWQgIT0gbnVtYV9ub2RlX2lkKCkpCi0JCXJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOOwomIzQzOwkJcmV0dXJuIDA7CiAKIAlpZiAodGVzdF9hbmRfc2V0X2JpdF9sb2NrKFBHREFUX1JFQ0xBSU1fTE9DS0VELCAmYW1wO3BnZGF0LSZndDtmbGFncykpCi0JCXJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOOwomIzQzOwkJcmV0dXJuIDA7CiAKLQlyZXQgPSBfX25vZGVfcmVjbGFpbShwZ2RhdCwgZ2ZwX21hc2ssIG5yX3BhZ2VzLCAmYW1wO3NjKSAmZ3Q7PSBucl9wYWdlczsKJiM0MzsJcmV0ID0gX19ub2RlX3JlY2xhaW0ocGdkYXQsIGdmcF9tYXNrLCBucl9wYWdlcywgJmFtcDtzYyk7CiAJY2xlYXJfYml0X3VubG9jayhQR0RBVF9SRUNMQUlNX0xPQ0tFRCwgJmFtcDtwZ2RhdC0mZ3Q7ZmxhZ3MpOwogCi0JaWYgKHJldCkKJiM0MzsJaWYgKHJldCAmZ3Q7PSBucl9wYWdlcykKIAkJY291bnRfdm1fZXZlbnQoUEdTQ0FOX1pPTkVfUkVDTEFJTV9TVUNDRVNTKTsKIAllbHNlCiAJCWNvdW50X3ZtX2V2ZW50KFBHU0NBTl9aT05FX1JFQ0xBSU1fRkFJTEVEKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDc2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBub2RlX3JlY2xhaW1gIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQsIGFsYmVpdCBzaWduaWZpY2FudCwgY2hhbmdlIHRvIGhvdyBgbm9kZV9yZWNsYWltYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBOVU1BIG1lbW9yeSBtYW5hZ2VtZW50IGZyYW1ld29yay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLCBjaGFuZ2luZyB0aGUgcmV0dXJuIHNlbWFudGljcyB0byBiZSBtb3JlIGV4cGxpY2l0LiBQcmV2aW91c2x5LCBgbm9kZV9yZWNsYWltYCByZXR1cm5lZCBhbiBpbnRlZ2VyIHVzaW5nIGEgc2V0IG9mIG1hY3JvcyAoYE5PREVfUkVDTEFJTV8qYCkuIE5vdywgaXQmIzM5O3MgcmV0dXJuaW5nIGFuIGB1bnNpZ25lZCBsb25nYCByZXByZXNlbnRpbmcgdGhlICpudW1iZXIqIG9mIHJlY2xhaW1lZCBwYWdlcywgb3IgemVybyBpZiBubyBwYWdlcyB3ZXJlIHJlY2xhaW1lZCBvciBpZiB0aGUgc2NhbiB3YXNuJiMzOTt0IHBlcmZvcm1lZC4KCkxldCYjMzk7cyBsb29rIGF0IGBtbS9wYWdlX2FsbG9jLmNgIHdoZXJlIHRoZSBpbXBhY3QgaXMgbW9zdCBldmlkZW50LiBUaGUgb2xkIGNvZGUgdXNlZCBhIGBzd2l0Y2hgIHN0YXRlbWVudCBiYXNlZCBvbiB0aGUgYE5PREVfUkVDTEFJTV8qYCBtYWNybyB2YWx1ZXMgdG8gZGV0ZXJtaW5lIHRoZSBuZXh0IGNvdXJzZSBvZiBhY3Rpb24uICBJIHNlZSBpdCBwcmV2aW91c2x5IGNoZWNrZWQgaWYgYHJldGAgd2FzIGBOT0RFX1JFQ0xBSU1fU09NRWAgd2hpY2ggbWVhbnMgaXQgcmVjbGFpbWVkIHNvbWV0aGluZywgYnV0IG5vdCBlbm91Z2gsIGFuZCB0aGUgY29kZSBwcm9jZWVkZWQgdG8gY2hlY2sgYHpvbmVfd2F0ZXJtYXJrX29rYC4KCk5vdywgdGhlIGNvZGUgdXNlcyBhIHNpbXBsZSBgaWZgIHN0YXRlbWVudCwgYGlmICghbm9kZV9yZWNsYWltKC4uLikpIGNvbnRpbnVlO2AuICBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaGVyZSBpcyB0aGUgY2hhbmdlIGluIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBhICYjMzQ7ZmFpbHVyZSYjMzQ7LiBQcmV2aW91c2x5LCBhIHJldHVybiBvZiAwIGZyb20gYG5vZGVfcmVjbGFpbWAgaW1wbGllZCBzb21lIHBhZ2VzICptaWdodCogaGF2ZSBiZWVuIHJlY2xhaW1lZCwgYnV0IG5vdywgemVybyBtZWFucyAmIzM0O25vdGhpbmcgcmVjbGFpbWVkIG9yIG5vdCBzY2FubmVkLiYjMzQ7ICBUaGlzIGZ1bmRhbWVudGFsbHkgY2hhbmdlcyB0aGUgY29udHJvbCBmbG93LCBza2lwcGluZyB0aGUgd2F0ZXJtYXJrIGNoZWNrIGluIHRoZSBldmVudCBvZiB6ZXJvIHBhZ2VzIHJlY2xhaW1lZC4gSXQgbWVhbnMgaWYgYF9fbm9kZV9yZWNsYWltYCB3aGljaCBpcyB0aGUgY29kZSBkb2luZyB0aGUgYWN0dWFsIHdvcmssIHJlY2xhaW1zIHplcm8gcGFnZXMsIHdlJiMzOTtsbCBza2lwIGZ1cnRoZXIgYWxsb2NhdGlvbiB3b3JrLCB3aGljaCBpcyBuZXcuIFRoaXMgaXMgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBhbHRlcmF0aW9uIHRvIHRoZSBwYWdlIGFsbG9jYXRpb24gcGF0aCwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB3aGF0IHRob3NlIGltcGFjdHMgYXJlLgoKVGhlIGFmZmVjdGVkIGNvZGUgaXMgaW4gYG1tL3Ztc2Nhbi5jYCBhbmQgaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19OVU1BYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUuIFNvLCBpdCYjMzk7cyBwcmV0dHkgZm9jdXNlZCBpbiBpdHMgc2NvcGUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBub2RlX3JlY2xhaW1gIGFuZCBvdGhlciBmdW5jdGlvbnMgbGlrZSBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMuCgpHaXZlbiB0aGUgY2hhbmdlIHRvIHJldHVybiBzZW1hbnRpY3MgYW5kIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBJJiMzOTtkIHNheSB0aGlzIGlzIGRlZmluaXRlbHkgYSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkmIzM5O2xsIGZsYWcgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4gTXkga2V5IGZvY3VzIHN5bWJvbHMgd2lsbCBiZSBgbm9kZV9yZWNsYWltYCBhbmQgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZyB0byBrZWVwIGluIG1pbmQgaXMgYE5VTUFgLiBUaW1lIHRvIGRpZyBkZWVwZXIgaW50byBgbW0vdm1zY2FuLmNgIGFuZCB2ZXJpZnkgYWxsIGFzc3VtcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O151bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS92bXNjYW4uYz03NzI4PXN0YXRpYyB1bnNpZ25lZCBsb25nIF9fbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL3Ztc2Nhbi5jLTc3NzAtXG5tbS92bXNjYW4uYzo3NzcxOnVuc2lnbmVkIGxvbmcgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG5tbS92bXNjYW4uYy03NzcyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODEwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb2RlIGxvY2F0aW9ucywgdGhpbmtpbmcgYWJvdXQgdGhlbSBmcm9tIG15IG93biBleHBlcmllbmNlOgoKKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwmIzM5O3MgTWVtb3J5IE1hbmFnZW1lbnQgTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIHR3byBmdW5jdGlvbnMuLi4gYG5vZGVfcmVjbGFpbWAg4oCTIGFoIHllcywgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGluIGBtbS92bXNjYW4uY2AuIEl0JiMzOTtzIGEgY2xhc3NpYyBsb2NhdGlvbiwgZGVhbGluZyB3aXRoIHRoZSByZWNsYW1hdGlvbiBwYXJ0IG9mIHRoZSB2aXJ0dWFsIG1lbW9yeSBzY2FuLiBUaGUgbm9kZSBsZXZlbCByZWNsYW1hdGlvbiwgYWx3YXlzIGEgdHJpY2t5IGFyZWEsIGJ1dCB0aGF0IG1ha2VzIHNlbnNlLiBJdCYjMzk7cyB3aGVyZSB0aGUga2VybmVsIHRyaWVzIHRvIGZyZWUgdXAgcGFnZXMgZnJvbSBhIHNwZWNpZmljIE5VTUEgbm9kZSwgZ2V0dGluZyBpdHMgd29yayBjdXQgb3V0IGZvciBpdC4KCk5vdywgZm9yIGBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0YCwgdGhhdCBvbmXigJlzIGFsd2F5cyBiZWVuIG1vcmUgc3RyYWlnaHRmb3J3YXJkLiBJIGNhbiByZWNhbGwgbG9va2luZyBhdCBpdCBpbiBgbW0vcGFnZV9hbGxvYy5jYCwgZXhhY3RseSB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGl0LiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBwYWdlIGFsbG9jYXRpb24gc3lzdGVtLiBUaGUgd29ya2hvcnNlIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlIGZyZWUgbGlzdHMsIHRoZSBidWRkeSBzeXN0ZW0sIGFuZCBzbyBvbi4gSXTigJlzIHRoZSBnYXRla2VlcGVyLCBkZWNpZGluZyB3aGF0IHBhZ2UgdG8gZ2l2ZSB3aGVuIHRoZSBzeXN0ZW0gbmVlZHMgbW9yZSBtZW1vcnksIG9yIHB1bGxpbmcgYW4gdW5yZWZlcmVuY2VkIHBhZ2UgZnJvbSB0aGUgZnJlZSBsaXN0cy4gR29vZCB0byBrZWVwIHRob3NlIGxvY2F0aW9ucyBzdHJhaWdodCBpbiBteSBoZWFkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBzdHJ1Y3QgcGFnZSBcXCouKmdldF9wYWdlX2Zyb21fZnJlZWxpc3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTmF2aWdhdGluZyB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIFRoZSBoaW50IGlzIGl0JiMzOTtzIGluIGBtbS9wYWdlX2FsbG9jLmNgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBHaXZlbiBteSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCBhcmNoaXRlY3R1cmUsIEkgY2FuIGNvbmZpZGVudGx5IHN1cm1pc2UgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNlbnRyYWwgdG8gaGFuZGxpbmcgdGhlIGFsbG9jYXRpb24gb2YgcGh5c2ljYWwgcGFnZXMgZnJvbSB0aGUgZnJlZSBsaXN0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgc2VlIGV4YWN0bHkgaG93IHRoaXMgY3J1Y2lhbCBwcm9jZXNzIHdvcmtzLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3MhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9wYWdlX2FsbG9jLmM9MzEzPURFRklORV9TVEFUSUNfS0VZX1RSVUUoZGVmZXJyZWRfcGFnZXMpO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zMTYtICogZGVmZXJyZWRfZ3Jvd196b25lKCkgaXMgX19pbml0LCBidXQgaXQgaXMgY2FsbGVkIGZyb21cbm1tL3BhZ2VfYWxsb2MuYzozMTc6ICogZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCgpIGR1cmluZyBlYXJseSBib290IHVudGlsIGRlZmVycmVkX3BhZ2VzIHBlcm1hbmVudGx5XG5tbS9wYWdlX2FsbG9jLmMtMzE4LSAqIGRpc2FibGVzIHRoaXMgY2FsbC4gVGhpcyBpcyB3aHkgd2UgaGF2ZSByZWZkYXRhIHdyYXBwZXIgdG8gYXZvaWQgd2FybmluZyxcbi0tXG5tbS9wYWdlX2FsbG9jLmM9Mzc4Nz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBhbGxvY19mbGFnc19jbWEoZ2ZwX3QgZ2ZwX21hc2spXG4tLVxubW0vcGFnZV9hbGxvYy5jLTM3OTYtLypcbm1tL3BhZ2VfYWxsb2MuYzozNzk3OiAqIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QgZ29lcyB0aHJvdWdoIHRoZSB6b25lbGlzdCB0cnlpbmcgdG8gYWxsb2NhdGVcbm1tL3BhZ2VfYWxsb2MuYy0zNzk4LSAqIGEgcGFnZS5cbi0tXG5tbS9wYWdlX2FsbG9jLmM9MzgwMD1zdGF0aWMgc3RydWN0IHBhZ2UgKlxubW0vcGFnZV9hbGxvYy5jOjM4MDE6Z2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXG5tbS9wYWdlX2FsbG9jLmMtMzgwMi1cdFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgYWxsb2NfY29udGV4dCAqYWMpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTQwMjY9X19hbGxvY19wYWdlc19jcHVzZXRfZmFsbGJhY2soZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDAzMS1cbm1tL3BhZ2VfYWxsb2MuYzo0MDMyOlx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLFxubW0vcGFnZV9hbGxvYy5jLTQwMzMtXHRcdFx0YWxsb2NfZmxhZ3N8QUxMT0NfQ1BVU0VULCBhYyk7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTQwMzgtXHRpZiAoIXBhZ2UpXG5tbS9wYWdlX2FsbG9jLmM6NDAzOTpcdFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLFxubW0vcGFnZV9hbGxvYy5jLTQwNDAtXHRcdFx0XHRhbGxvY19mbGFncywgYWMpO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz00MDQ1PV9fYWxsb2NfcGFnZXNfbWF5X29vbShnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00MDc1LVx0ICovXG5tbS9wYWdlX2FsbG9jLmM6NDA3NjpcdHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KChnZnBfbWFzayB8IF9fR0ZQX0hBUkRXQUxMKSBcdTAwMjZcbm1tL3BhZ2VfYWxsb2MuYy00MDc3LVx0XHRcdFx0ICAgICAgfl9fR0ZQX0RJUkVDVF9SRUNMQUlNLCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDE0MD1fX2FsbG9jX3BhZ2VzX2RpcmVjdF9jb21wYWN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTQxNzYtXHRpZiAoIXBhZ2UpXG5tbS9wYWdlX2FsbG9jLmM6NDE3NzpcdFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xubW0vcGFnZV9hbGxvYy5jLTQxNzgtXG4tLVxubW0vcGFnZV9hbGxvYy5jPTQ0MTY9X19hbGxvY19wYWdlc19kaXJlY3RfcmVjbGFpbShnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00NDI5LXJldHJ5OlxubW0vcGFnZV9hbGxvYy5jOjQ0MzA6XHRwYWdlID0gZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfbWFzaywgb3JkZXIsIGFsbG9jX2ZsYWdzLCBhYyk7XG5tbS9wYWdlX2FsbG9jLmMtNDQzMS1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDczMT1fX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTQ4MzAtXHQgKi9cbm1tL3BhZ2VfYWxsb2MuYzo0ODMxOlx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xubW0vcGFnZV9hbGxvYy5jLTQ4MzItXHRpZiAocGFnZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NTMzMD1zdHJ1Y3QgcGFnZSAqX19hbGxvY19mcm96ZW5fcGFnZXNfbm9wcm9mKGdmcF90IGdmcCwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MzgyLVx0LyogRmlyc3QgYWxsb2NhdGlvbiBhdHRlbXB0IChvciwgZm9yIG5vbG9jaywgb25seSBhdHRlbXB0KSAqL1xubW0vcGFnZV9hbGxvYy5jOjUzODM6XHRwYWdlID0gZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChhbGxvY19nZnAsIG9yZGVyLCBmYXN0cGF0aF9hbGxvY19mbGFncywgXHUwMDI2YWMpO1xubW0vcGFnZV9hbGxvYy5jLTUzODQtXHRpZiAobGlrZWx5KHBhZ2UpIHx8IChhbGxvY19mbGFncyBcdTAwMjYgQUxMT0NfTk9MT0NLKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDMyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQgd2VyZSBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipPcHRpbWl6aW5nIFN5bWJvbCBMaXN0aW5nIGZvciBQZXJmb3JtYW5jZSoqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byByZWZpbmUgdGhlIHN5bWJvbCBsaXN0aW5nIGZvciBhbmFseXNpcy4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIGF2b2lkaW5nIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBlc3BlY2lhbGx5IGluIGEgZnVuY3Rpb24gbGlrZSBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0JiMzOTtzIGEga25vd24gaG90IHBhdGgsIHNvIEkgbmVlZCB0byBiZSAqdmVyeSogY2FyZWZ1bCBhYm91dCBpbmNsdWRpbmcgaXQgaW4gYEZvY3VzU3ltYm9sc2AuIFRoYXQga2luZCBvZiBmdW5jdGlvbiB3aWxsIHNrZXcgYW55IHByb2ZpbGluZyBJJiMzOTttIGRvaW5nIGFuZCBhZGQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQgdG8gdGhlIGZvY3VzIGNhbGN1bGF0aW9ucywgZXNwZWNpYWxseSBpZiBJJiMzOTttIHRyeWluZyB0byBpZGVudGlmeSBhcmVhcyB0aGF0IHdpbGwgbW9zdCBiZW5lZml0IGZyb20gb3B0aW1pemF0aW9uLgoKU28sIEkgd29uJiMzOTt0IGxpc3QgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgbm8tZ28uIEluc3RlYWQsIEkmIzM5O2xsIGZvY3VzIG9uIGxpc3RpbmcgYG5vZGVfcmVjbGFpbWAsIGFzIGl0IHNlZW1zIGEgaGlnaGVyLWxldmVsIGZ1bmN0aW9uIGFuZCBwcm9iYWJseSBjYWxscyB0aGUgZm9ybWVyIGFzIHBhcnQgb2YgaXRzIG9wZXJhdGlvbi4gSXQmIzM5O3MgYSBtb3JlIGFwcHJvcHJpYXRlIGxldmVsIG9mIGFic3RyYWN0aW9uIGZvciB0aGUga2luZCBvZiBwcm9maWxpbmcgSSYjMzk7bSBsaWtlbHkgaW50ZXJlc3RlZCBpbi4KCk5vdywgSSBhbHNvIG5lZWQgdG8gY2hlY2sgaWYgYG5vZGVfcmVjbGFpbWAgaXMgc3BlY2lmaWNhbGx5IHdpdGhpbiBhIE5VTUEgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCYjMzk7cyBjb3JyZWN0bHkgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIGBDT05GSUdfTlVNQWAgb3B0aW9uLiBUaGlzIGlzIGVzc2VudGlhbCBjb250ZXh0LCBhcyB0aGUgYmVoYXZpb3Igb2YgYG5vZGVfcmVjbGFpbWAgd2lsbCBiZSBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBpZiBOVU1BIGlzIGVuYWJsZWQuIFRoaXMgd2lsbCBpbmZvcm0gaG93IEkgaW50ZXJwcmV0IGFueSBwcm9maWxpbmcgZGF0YSBJJiMzOTttIGFibGUgdG8gZ2F0aGVyLCBhbmQgSSBtaWdodCBuZWVkIHRvIGFkanVzdCBteSB0ZWNobmlxdWVzIGlmIE5VTUEgaXMgZGlzYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14jaWZkZWYgQ09ORklHX05VTUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS92bXNjYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS92bXNjYW4uYz03NjE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIHZtc2Nhbl9zeXNjdGxfdGFibGVbXSA9IHtcbi0tXG5tbS92bXNjYW4uYy03NjI4LVx0fSxcbm1tL3Ztc2Nhbi5jOjc2Mjk6I2lmZGVmIENPTkZJR19OVU1BXG5tbS92bXNjYW4uYy03NjMwLVx0e1xuLS1cbm1tL3Ztc2Nhbi5jPTc2NTE9bW9kdWxlX2luaXQoa3N3YXBkX2luaXQpXG5tbS92bXNjYW4uYy03NjUyLVxubW0vdm1zY2FuLmM6NzY1MzojaWZkZWYgQ09ORklHX05VTUFcbm1tL3Ztc2Nhbi5jLTc2NTQtLypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAwNQoJCQkJCQkJb3V0cHV0OiA4OAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldDogTm9kZSBSZWNsYWltIHdpdGggTlVNQSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIHNwb3R0ZWQgYSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG5vZGVfcmVjbGFpbWAsIGFuZCB0aGUgY3J1Y2lhbCBkZXRhaWwgaGVyZSBpcyB0aGF0IGBub2RlX3JlY2xhaW1gIGlzIGNvbmZpZ3VyZWQgdW5kZXIgYENPTkZJR19OVU1BYC4gVGhpcyBpcyBpbW1lZGlhdGVseSByZWxldmFudCB0byBteSB3b3JrLgoKVGhlIHBhdGNoIGl0c2VsZiBkaWdzIGludG8gdGhlIGd1dHMgb2YgdGhlIHBhZ2UgYWxsb2NhdG9yIGFuZCB0aGUgbm9kZSByZWNsYWltIGxvZ2ljLiBNb3JlIHNwZWNpZmljYWxseSwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgYG5vZGVfcmVjbGFpbWAgYW5kLCBjcnVjaWFsbHksIGhvdyB0aGF0IHJldHVybiB2YWx1ZSBpcyBpbnRlcnByZXRlZCBhbmQgYWN0ZWQgdXBvbiB3aXRoaW4gYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBUaGF0JiMzOTtzIHNpZ25pZmljYW50LiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgdGhlIHJlc3VsdHMgb2Ygbm9kZSByZWNsYWltLCBhIGNyaXRpY2FsIGNvbXBvbmVudCBvZiBtZW1vcnkgbWFuYWdlbWVudCwgZXNwZWNpYWxseSBpbiBOVU1BIHN5c3RlbXMuCgpUaGUgY2hhbmdlcyBpbnZvbHZlIGFsdGVyaW5nIGhvdyB0aGUgcGFnZSBhbGxvY2F0b3IgaGFuZGxlcyBhbmQgdXNlcyB0aGUgcmVzdWx0cyBvZiBhdHRlbXB0aW5nIG5vZGUgcmVjbGFpbS4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIGNvcmUgbWVtb3J5IGZ1bmN0aW9uYWxpdHkuIEdpdmVuIHRoaXMgbGV2ZWwgb2YgY2hhbmdlLCBhbmQgZXNwZWNpYWxseSB0aGUgaW50ZXJwbGF5IHdpdGggYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLCBJJiMzOTttIGdvaW5nIHRvIGZsYWcgdGhpcyBhcyBhIGRlZmluaXRlIGZ1enppbmcgdGFyZ2V0LiBJdCBoYXMgdGhlIHBvdGVudGlhbCB0byBleHBvc2Ugc3VidGxlIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MgdGhhdCBjb3VsZCBsZWFkIHRvIGNyYXNoZXMsIGxlYWtzLCBvciBldmVuIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjE6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05VTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtub2RlX3JlY2xhaW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlVNQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25vZGVfcmVjbGFpbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcmV0dXJuIHR5cGUgYW5kIGxvZ2ljIG9mIGBub2RlX3JlY2xhaW1gIGFuZCBpdHMgY2FsbGVyIGBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0YC4gSXQgY2hhbmdlcyBob3cgdGhlIHBhZ2UgYWxsb2NhdG9yIGhhbmRsZXMgbm9kZSByZWNsYWltIHJlc3VsdHMsIHdoaWNoIGlzIGEgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbmFsaXR5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDg6NTAuMjg1Mzc2NTU4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2ODI5MDQ2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlVNQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5vZGVfcmVjbGFpbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByZXR1cm4gdHlwZSBhbmQgbG9naWMgb2YgYG5vZGVfcmVjbGFpbWAgYW5kIGl0cyBjYWxsZXIgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBJdCBjaGFuZ2VzIGhvdyB0aGUgcGFnZSBhbGxvY2F0b3IgaGFuZGxlcyBub2RlIHJlY2xhaW0gcmVzdWx0cywgd2hpY2ggaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjQ4OjUwLjI4NTM4MzgyOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc0ODQxNTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWI4NjYzYzY2ODVlMGQzNmMyODY2ZTMxOTFjYWRhZTZiOTM5ZDhiNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMTo0ODo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaFxcbmluZGV4IDg3NGJlOTRjZjI1NzBlLi5mMjY0MjNkZTRjYTI4NyAxMDA2NDRcXG4tLS0gYS9tbS9pbnRlcm5hbC5oXFxuKysrIGIvbW0vaW50ZXJuYWwuaFxcbkBAIC0xMDk4LDIzICsxMDk4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9sb2NhbCh2b2lkKSB7IH1cXG4gc3RhdGljIGlubGluZSB2b2lkIG1sb2NrX2RyYWluX3JlbW90ZShpbnQgY3B1KSB7IH1cXG4gI2VuZGlmIC8qICFDT05GSUdfTU1VICovXFxuIFxcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9OT1NDQU5cXHQtMlxcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9GVUxMXFx0LTFcXG4tI2RlZmluZSBOT0RFX1JFQ0xBSU1fU09NRVxcdDBcXG4tI2RlZmluZSBOT0RFX1JFQ0xBSU1fU1VDQ0VTU1xcdDFcXG4tXFxuICNpZmRlZiBDT05GSUdfTlVNQVxcbiBleHRlcm4gaW50IG5vZGVfcmVjbGFpbV9tb2RlO1xcbiBcXG4tZXh0ZXJuIGludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICosIGdmcF90LCB1bnNpZ25lZCBpbnQpO1xcbitleHRlcm4gdW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcXG4rXFx0XFx0XFx0XFx0ICBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTtcXG4gZXh0ZXJuIGludCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzayk7XFxuICNlbHNlXFxuICNkZWZpbmUgbm9kZV9yZWNsYWltX21vZGUgMFxcbiBcXG4tc3RhdGljIGlubGluZSBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IG1hc2ssXFxuLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBvcmRlcilcXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxcbitcXHRcXHRcXHRcXHRcXHQgZ2ZwX3QgbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKVxcbiB7XFxuLVxcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBzdGF0aWMgaW5saW5lIGludCBmaW5kX25leHRfYmVzdF9ub2RlKGludCBub2RlLCBub2RlbWFza190ICp1c2VkX25vZGVfbWFzaylcXG4ge1xcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcXG5pbmRleCA5Yzk3YTg2ZGEyYjlmMS4uYWY2MzU1ODM5MTM0NTkgMTAwNjQ0XFxuLS0tIGEvbW0vcGFnZV9hbGxvYy5jXFxuKysrIGIvbW0vcGFnZV9hbGxvYy5jXFxuQEAgLTM5MDgsOCArMzkwOCw2IEBAIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxcbiBcXHRcXHRpZiAoIXpvbmVfd2F0ZXJtYXJrX2Zhc3Qoem9uZSwgb3JkZXIsIG1hcmssXFxuIFxcdFxcdFxcdFxcdCAgICAgICBhYy1cXHUwMDNlaGlnaGVzdF96b25laWR4LCBhbGxvY19mbGFncyxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIGdmcF9tYXNrKSkge1xcbi1cXHRcXHRcXHRpbnQgcmV0O1xcbi1cXG4gXFx0XFx0XFx0aWYgKGNvbmRfYWNjZXB0X21lbW9yeSh6b25lLCBvcmRlciwgYWxsb2NfZmxhZ3MpKVxcbiBcXHRcXHRcXHRcXHRnb3RvIHRyeV90aGlzX3pvbmU7XFxuIFxcbkBAIC0zOTMwLDIyICszOTI4LDEzIEBAIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlciwgaW50IGFsbG9jX2ZsYWdzLFxcbiBcXHRcXHRcXHQgICAgIXpvbmVfYWxsb3dzX3JlY2xhaW0oem9uZWxpc3Rfem9uZShhYy1cXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYpLCB6b25lKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbi1cXHRcXHRcXHRyZXQgPSBub2RlX3JlY2xhaW0oem9uZS1cXHUwMDNlem9uZV9wZ2RhdCwgZ2ZwX21hc2ssIG9yZGVyKTtcXG4tXFx0XFx0XFx0c3dpdGNoIChyZXQpIHtcXG4tXFx0XFx0XFx0Y2FzZSBOT0RFX1JFQ0xBSU1fTk9TQ0FOOlxcbi1cXHRcXHRcXHRcXHQvKiBkaWQgbm90IHNjYW4gKi9cXG4tXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdGNhc2UgTk9ERV9SRUNMQUlNX0ZVTEw6XFxuLVxcdFxcdFxcdFxcdC8qIHNjYW5uZWQgYnV0IHVucmVjbGFpbWFibGUgKi9cXG4rXFx0XFx0XFx0aWYgKCFub2RlX3JlY2xhaW0oem9uZS1cXHUwMDNlem9uZV9wZ2RhdCwgZ2ZwX21hc2ssIG9yZGVyKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdGRlZmF1bHQ6XFxuLVxcdFxcdFxcdFxcdC8qIGRpZCB3ZSByZWNsYWltIGVub3VnaCAqL1xcbi1cXHRcXHRcXHRcXHRpZiAoem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssXFxuLVxcdFxcdFxcdFxcdFxcdGFjLVxcdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzKSlcXG4tXFx0XFx0XFx0XFx0XFx0Z290byB0cnlfdGhpc196b25lO1xcbiBcXG4rXFx0XFx0XFx0LyogZGlkIHdlIHJlY2xhaW0gZW5vdWdoICovXFxuK1xcdFxcdFxcdGlmICghem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBhYy1cXHUwMDNlaGlnaGVzdF96b25laWR4LCBhbGxvY19mbGFncykpXFxuIFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuIHRyeV90aGlzX3pvbmU6XFxuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcXG5pbmRleCA0MzU3YTQ0ZWU4NzY3Ny4uYjdlZjAzMmU3OGEwYmQgMTAwNjQ0XFxuLS0tIGEvbW0vdm1zY2FuLmNcXG4rKysgYi9tbS92bXNjYW4uY1xcbkBAIC03NzY4LDkgKzc3NjgsOSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX25vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBnZnBfdCBnZnBfbWFzayxcXG4gXFx0cmV0dXJuIHNjLVxcdTAwM2Vucl9yZWNsYWltZWQ7XFxuIH1cXG4gXFxuLWludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcXG4rdW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbitcXHR1bnNpZ25lZCBsb25nIHJldDtcXG4gXFx0LyogTWluaW11bSBwYWdlcyBuZWVkZWQgaW4gb3JkZXIgdG8gc3RheSBvbiBub2RlICovXFxuIFxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMgPSAxIFxcdTAwM2NcXHUwMDNjIG9yZGVyO1xcbiBcXHRzdHJ1Y3Qgc2Nhbl9jb250cm9sIHNjID0ge1xcbkBAIC03Nzk3LDEzICs3Nzk3LDEzIEBAIGludCBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcXG4gXFx0aWYgKG5vZGVfcGFnZWNhY2hlX3JlY2xhaW1hYmxlKHBnZGF0KSBcXHUwMDNjPSBwZ2RhdC1cXHUwMDNlbWluX3VubWFwcGVkX3BhZ2VzIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBub2RlX3BhZ2Vfc3RhdGVfcGFnZXMocGdkYXQsIE5SX1NMQUJfUkVDTEFJTUFCTEVfQikgXFx1MDAzYz1cXG4gXFx0ICAgIHBnZGF0LVxcdTAwM2VtaW5fc2xhYl9wYWdlcylcXG4tXFx0XFx0cmV0dXJuIE5PREVfUkVDTEFJTV9GVUxMO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIERvIG5vdCBzY2FuIGlmIHRoZSBhbGxvY2F0aW9uIHNob3VsZCBub3QgYmUgZGVsYXllZC5cXG4gXFx0ICovXFxuIFxcdGlmICghZ2ZwZmxhZ3NfYWxsb3dfYmxvY2tpbmcoZ2ZwX21hc2spIHx8IChjdXJyZW50LVxcdTAwM2VmbGFncyBcXHUwMDI2IFBGX01FTUFMTE9DKSlcXG4tXFx0XFx0cmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogT25seSBydW4gbm9kZSByZWNsYWltIG9uIHRoZSBsb2NhbCBub2RlIG9yIG9uIG5vZGVzIHRoYXQgZG8gbm90XFxuQEAgLTc4MTIsMTUgKzc4MTIsMTUgQEAgaW50IG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKVxcbiBcXHQgKiBhcyB3aWRlIGFzIHBvc3NpYmxlLlxcbiBcXHQgKi9cXG4gXFx0aWYgKG5vZGVfc3RhdGUocGdkYXQtXFx1MDAzZW5vZGVfaWQsIE5fQ1BVKSBcXHUwMDI2XFx1MDAyNiBwZ2RhdC1cXHUwMDNlbm9kZV9pZCAhPSBudW1hX25vZGVfaWQoKSlcXG4tXFx0XFx0cmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0aWYgKHRlc3RfYW5kX3NldF9iaXRfbG9jayhQR0RBVF9SRUNMQUlNX0xPQ0tFRCwgXFx1MDAyNnBnZGF0LVxcdTAwM2VmbGFncykpXFxuLVxcdFxcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdHJldCA9IF9fbm9kZV9yZWNsYWltKHBnZGF0LCBnZnBfbWFzaywgbnJfcGFnZXMsIFxcdTAwMjZzYykgXFx1MDAzZT0gbnJfcGFnZXM7XFxuK1xcdHJldCA9IF9fbm9kZV9yZWNsYWltKHBnZGF0LCBnZnBfbWFzaywgbnJfcGFnZXMsIFxcdTAwMjZzYyk7XFxuIFxcdGNsZWFyX2JpdF91bmxvY2soUEdEQVRfUkVDTEFJTV9MT0NLRUQsIFxcdTAwMjZwZ2RhdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXG4tXFx0aWYgKHJldClcXG4rXFx0aWYgKHJldCBcXHUwMDNlPSBucl9wYWdlcylcXG4gXFx0XFx0Y291bnRfdm1fZXZlbnQoUEdTQ0FOX1pPTkVfUkVDTEFJTV9TVUNDRVNTKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRjb3VudF92bV9ldmVudChQR1NDQU5fWk9ORV9SRUNMQUlNX0ZBSUxFRCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjQ4OjUwLjk2MjIwNDkyNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMDYwNjQ1ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlVNQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5vZGVfcmVjbGFpbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSByZXR1cm4gdHlwZSBhbmQgbG9naWMgb2YgYG5vZGVfcmVjbGFpbWAgYW5kIGl0cyBjYWxsZXIgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBJdCBjaGFuZ2VzIGhvdyB0aGUgcGFnZSBhbGxvY2F0b3IgaGFuZGxlcyBub2RlIHJlY2xhaW0gcmVzdWx0cywgd2hpY2ggaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWI4NjYzYzY2ODVlMGQzNmMyODY2ZTMxOTFjYWRhZTZiOTM5ZDhiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIxOjQ4OjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaW50ZXJuYWwuaCBiL21tL2ludGVybmFsLmhcbmluZGV4IDg3NGJlOTRjZjI1NzBlLi5mMjY0MjNkZTRjYTI4NyAxMDA2NDRcbi0tLSBhL21tL2ludGVybmFsLmhcbisrKyBiL21tL2ludGVybmFsLmhcbkBAIC0xMDk4LDIzICsxMDk4LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtbG9ja19kcmFpbl9sb2NhbCh2b2lkKSB7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgbWxvY2tfZHJhaW5fcmVtb3RlKGludCBjcHUpIHsgfVxuICNlbmRpZiAvKiAhQ09ORklHX01NVSAqL1xuIFxuLSNkZWZpbmUgTk9ERV9SRUNMQUlNX05PU0NBTlx0LTJcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9GVUxMXHQtMVxuLSNkZWZpbmUgTk9ERV9SRUNMQUlNX1NPTUVcdDBcbi0jZGVmaW5lIE5PREVfUkVDTEFJTV9TVUNDRVNTXHQxXG4tXG4gI2lmZGVmIENPTkZJR19OVU1BXG4gZXh0ZXJuIGludCBub2RlX3JlY2xhaW1fbW9kZTtcbiBcbi1leHRlcm4gaW50IG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKiwgZ2ZwX3QsIHVuc2lnbmVkIGludCk7XG4rZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsXG4rXHRcdFx0XHQgIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpO1xuIGV4dGVybiBpbnQgZmluZF9uZXh0X2Jlc3Rfbm9kZShpbnQgbm9kZSwgbm9kZW1hc2tfdCAqdXNlZF9ub2RlX21hc2spO1xuICNlbHNlXG4gI2RlZmluZSBub2RlX3JlY2xhaW1fbW9kZSAwXG4gXG4tc3RhdGljIGlubGluZSBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IG1hc2ssXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgb3JkZXIpXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIG5vZGVfcmVjbGFpbShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LFxuK1x0XHRcdFx0XHQgZ2ZwX3QgbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKVxuIHtcbi1cdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xuK1x0cmV0dXJuIDA7XG4gfVxuIHN0YXRpYyBpbmxpbmUgaW50IGZpbmRfbmV4dF9iZXN0X25vZGUoaW50IG5vZGUsIG5vZGVtYXNrX3QgKnVzZWRfbm9kZV9tYXNrKVxuIHtcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcbmluZGV4IDljOTdhODZkYTJiOWYxLi5hZjYzNTU4MzkxMzQ1OSAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xuKysrIGIvbW0vcGFnZV9hbGxvYy5jXG5AQCAtMzkwOCw4ICszOTA4LDYgQEAgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXG4gXHRcdGlmICghem9uZV93YXRlcm1hcmtfZmFzdCh6b25lLCBvcmRlciwgbWFyayxcbiBcdFx0XHRcdCAgICAgICBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzLFxuIFx0XHRcdFx0ICAgICAgIGdmcF9tYXNrKSkge1xuLVx0XHRcdGludCByZXQ7XG4tXG4gXHRcdFx0aWYgKGNvbmRfYWNjZXB0X21lbW9yeSh6b25lLCBvcmRlciwgYWxsb2NfZmxhZ3MpKVxuIFx0XHRcdFx0Z290byB0cnlfdGhpc196b25lO1xuIFxuQEAgLTM5MzAsMjIgKzM5MjgsMTMgQEAgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgYWxsb2NfZmxhZ3MsXG4gXHRcdFx0ICAgICF6b25lX2FsbG93c19yZWNsYWltKHpvbmVsaXN0X3pvbmUoYWMtXHUwMDNlcHJlZmVycmVkX3pvbmVyZWYpLCB6b25lKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRcdHJldCA9IG5vZGVfcmVjbGFpbSh6b25lLVx1MDAzZXpvbmVfcGdkYXQsIGdmcF9tYXNrLCBvcmRlcik7XG4tXHRcdFx0c3dpdGNoIChyZXQpIHtcbi1cdFx0XHRjYXNlIE5PREVfUkVDTEFJTV9OT1NDQU46XG4tXHRcdFx0XHQvKiBkaWQgbm90IHNjYW4gKi9cbi1cdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdGNhc2UgTk9ERV9SRUNMQUlNX0ZVTEw6XG4tXHRcdFx0XHQvKiBzY2FubmVkIGJ1dCB1bnJlY2xhaW1hYmxlICovXG4rXHRcdFx0aWYgKCFub2RlX3JlY2xhaW0oem9uZS1cdTAwM2V6b25lX3BnZGF0LCBnZnBfbWFzaywgb3JkZXIpKVxuIFx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0ZGVmYXVsdDpcbi1cdFx0XHRcdC8qIGRpZCB3ZSByZWNsYWltIGVub3VnaCAqL1xuLVx0XHRcdFx0aWYgKHpvbmVfd2F0ZXJtYXJrX29rKHpvbmUsIG9yZGVyLCBtYXJrLFxuLVx0XHRcdFx0XHRhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzKSlcbi1cdFx0XHRcdFx0Z290byB0cnlfdGhpc196b25lO1xuIFxuK1x0XHRcdC8qIGRpZCB3ZSByZWNsYWltIGVub3VnaCAqL1xuK1x0XHRcdGlmICghem9uZV93YXRlcm1hcmtfb2soem9uZSwgb3JkZXIsIG1hcmssXG4rXHRcdFx0XHRcdCAgICAgICBhYy1cdTAwM2VoaWdoZXN0X3pvbmVpZHgsIGFsbG9jX2ZsYWdzKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdH1cbiBcdFx0fVxuIFxuIHRyeV90aGlzX3pvbmU6XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggNDM1N2E0NGVlODc2NzcuLmI3ZWYwMzJlNzhhMGJkIDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbisrKyBiL21tL3Ztc2Nhbi5jXG5AQCAtNzc2OCw5ICs3NzY4LDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19ub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRyZXR1cm4gc2MtXHUwMDNlbnJfcmVjbGFpbWVkO1xuIH1cbiBcbi1pbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4rdW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcbiB7XG4tXHRpbnQgcmV0O1xuK1x0dW5zaWduZWQgbG9uZyByZXQ7XG4gXHQvKiBNaW5pbXVtIHBhZ2VzIG5lZWRlZCBpbiBvcmRlciB0byBzdGF5IG9uIG5vZGUgKi9cbiBcdGNvbnN0IHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMgPSAxIFx1MDAzY1x1MDAzYyBvcmRlcjtcbiBcdHN0cnVjdCBzY2FuX2NvbnRyb2wgc2MgPSB7XG5AQCAtNzc5NywxMyArNzc5NywxMyBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHRpZiAobm9kZV9wYWdlY2FjaGVfcmVjbGFpbWFibGUocGdkYXQpIFx1MDAzYz0gcGdkYXQtXHUwMDNlbWluX3VubWFwcGVkX3BhZ2VzIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG5vZGVfcGFnZV9zdGF0ZV9wYWdlcyhwZ2RhdCwgTlJfU0xBQl9SRUNMQUlNQUJMRV9CKSBcdTAwM2M9XG4gXHQgICAgcGdkYXQtXHUwMDNlbWluX3NsYWJfcGFnZXMpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fRlVMTDtcbitcdFx0cmV0dXJuIDA7XG4gXG4gXHQvKlxuIFx0ICogRG8gbm90IHNjYW4gaWYgdGhlIGFsbG9jYXRpb24gc2hvdWxkIG5vdCBiZSBkZWxheWVkLlxuIFx0ICovXG4gXHRpZiAoIWdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGdmcF9tYXNrKSB8fCAoY3VycmVudC1cdTAwM2VmbGFncyBcdTAwMjYgUEZfTUVNQUxMT0MpKVxuLVx0XHRyZXR1cm4gTk9ERV9SRUNMQUlNX05PU0NBTjtcbitcdFx0cmV0dXJuIDA7XG4gXG4gXHQvKlxuIFx0ICogT25seSBydW4gbm9kZSByZWNsYWltIG9uIHRoZSBsb2NhbCBub2RlIG9yIG9uIG5vZGVzIHRoYXQgZG8gbm90XG5AQCAtNzgxMiwxNSArNzgxMiwxNSBAQCBpbnQgbm9kZV9yZWNsYWltKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG4gXHQgKiBhcyB3aWRlIGFzIHBvc3NpYmxlLlxuIFx0ICovXG4gXHRpZiAobm9kZV9zdGF0ZShwZ2RhdC1cdTAwM2Vub2RlX2lkLCBOX0NQVSkgXHUwMDI2XHUwMDI2IHBnZGF0LVx1MDAzZW5vZGVfaWQgIT0gbnVtYV9ub2RlX2lkKCkpXG4tXHRcdHJldHVybiBOT0RFX1JFQ0xBSU1fTk9TQ0FOO1xuK1x0XHRyZXR1cm4gMDtcbiBcbiBcdGlmICh0ZXN0X2FuZF9zZXRfYml0X2xvY2soUEdEQVRfUkVDTEFJTV9MT0NLRUQsIFx1MDAyNnBnZGF0LVx1MDAzZWZsYWdzKSlcbi1cdFx0cmV0dXJuIE5PREVfUkVDTEFJTV9OT1NDQU47XG4rXHRcdHJldHVybiAwO1xuIFxuLVx0cmV0ID0gX19ub2RlX3JlY2xhaW0ocGdkYXQsIGdmcF9tYXNrLCBucl9wYWdlcywgXHUwMDI2c2MpIFx1MDAzZT0gbnJfcGFnZXM7XG4rXHRyZXQgPSBfX25vZGVfcmVjbGFpbShwZ2RhdCwgZ2ZwX21hc2ssIG5yX3BhZ2VzLCBcdTAwMjZzYyk7XG4gXHRjbGVhcl9iaXRfdW5sb2NrKFBHREFUX1JFQ0xBSU1fTE9DS0VELCBcdTAwMjZwZ2RhdC1cdTAwM2VmbGFncyk7XG4gXG4tXHRpZiAocmV0KVxuK1x0aWYgKHJldCBcdTAwM2U9IG5yX3BhZ2VzKVxuIFx0XHRjb3VudF92bV9ldmVudChQR1NDQU5fWk9ORV9SRUNMQUlNX1NVQ0NFU1MpO1xuIFx0ZWxzZVxuIFx0XHRjb3VudF92bV9ldmVudChQR1NDQU5fWk9ORV9SRUNMQUlNX0ZBSUxFRCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMTo0ODo1MC45NjIyMDY5MTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDcyNDYxNDQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBub2RlX3JlY2xhaW1gIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCwgYWxiZWl0IHNpZ25pZmljYW50LCBjaGFuZ2UgdG8gaG93IGBub2RlX3JlY2xhaW1gIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIE5VTUEgbWVtb3J5IG1hbmFnZW1lbnQgZnJhbWV3b3JrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgcmVmYWN0b3JpbmcsIGNoYW5naW5nIHRoZSByZXR1cm4gc2VtYW50aWNzIHRvIGJlIG1vcmUgZXhwbGljaXQuIFByZXZpb3VzbHksIGBub2RlX3JlY2xhaW1gIHJldHVybmVkIGFuIGludGVnZXIgdXNpbmcgYSBzZXQgb2YgbWFjcm9zIChgTk9ERV9SRUNMQUlNXypgKS4gTm93LCBpdCdzIHJldHVybmluZyBhbiBgdW5zaWduZWQgbG9uZ2AgcmVwcmVzZW50aW5nIHRoZSAqbnVtYmVyKiBvZiByZWNsYWltZWQgcGFnZXMsIG9yIHplcm8gaWYgbm8gcGFnZXMgd2VyZSByZWNsYWltZWQgb3IgaWYgdGhlIHNjYW4gd2Fzbid0IHBlcmZvcm1lZC5cblxuTGV0J3MgbG9vayBhdCBgbW0vcGFnZV9hbGxvYy5jYCB3aGVyZSB0aGUgaW1wYWN0IGlzIG1vc3QgZXZpZGVudC4gVGhlIG9sZCBjb2RlIHVzZWQgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgYmFzZWQgb24gdGhlIGBOT0RFX1JFQ0xBSU1fKmAgbWFjcm8gdmFsdWVzIHRvIGRldGVybWluZSB0aGUgbmV4dCBjb3Vyc2Ugb2YgYWN0aW9uLiAgSSBzZWUgaXQgcHJldmlvdXNseSBjaGVja2VkIGlmIGByZXRgIHdhcyBgTk9ERV9SRUNMQUlNX1NPTUVgIHdoaWNoIG1lYW5zIGl0IHJlY2xhaW1lZCBzb21ldGhpbmcsIGJ1dCBub3QgZW5vdWdoLCBhbmQgdGhlIGNvZGUgcHJvY2VlZGVkIHRvIGNoZWNrIGB6b25lX3dhdGVybWFya19va2AuXG5cbk5vdywgdGhlIGNvZGUgdXNlcyBhIHNpbXBsZSBgaWZgIHN0YXRlbWVudCwgYGlmICghbm9kZV9yZWNsYWltKC4uLikpIGNvbnRpbnVlO2AuICBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaGVyZSBpcyB0aGUgY2hhbmdlIGluIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBhIFwiZmFpbHVyZVwiLiBQcmV2aW91c2x5LCBhIHJldHVybiBvZiAwIGZyb20gYG5vZGVfcmVjbGFpbWAgaW1wbGllZCBzb21lIHBhZ2VzICptaWdodCogaGF2ZSBiZWVuIHJlY2xhaW1lZCwgYnV0IG5vdywgemVybyBtZWFucyBcIm5vdGhpbmcgcmVjbGFpbWVkIG9yIG5vdCBzY2FubmVkLlwiICBUaGlzIGZ1bmRhbWVudGFsbHkgY2hhbmdlcyB0aGUgY29udHJvbCBmbG93LCBza2lwcGluZyB0aGUgd2F0ZXJtYXJrIGNoZWNrIGluIHRoZSBldmVudCBvZiB6ZXJvIHBhZ2VzIHJlY2xhaW1lZC4gSXQgbWVhbnMgaWYgYF9fbm9kZV9yZWNsYWltYCB3aGljaCBpcyB0aGUgY29kZSBkb2luZyB0aGUgYWN0dWFsIHdvcmssIHJlY2xhaW1zIHplcm8gcGFnZXMsIHdlJ2xsIHNraXAgZnVydGhlciBhbGxvY2F0aW9uIHdvcmssIHdoaWNoIGlzIG5ldy4gVGhpcyBpcyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGFsdGVyYXRpb24gdG8gdGhlIHBhZ2UgYWxsb2NhdGlvbiBwYXRoLCBhbmQgSSdsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCB0aG9zZSBpbXBhY3RzIGFyZS5cblxuVGhlIGFmZmVjdGVkIGNvZGUgaXMgaW4gYG1tL3Ztc2Nhbi5jYCBhbmQgaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19OVU1BYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGZ1bmN0aW9uJ3MgbmFtZS4gU28sIGl0J3MgcHJldHR5IGZvY3VzZWQgaW4gaXRzIHNjb3BlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBub2RlX3JlY2xhaW1gIGFuZCBvdGhlciBmdW5jdGlvbnMgbGlrZSBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAgdG8gZnVsbHkgZ3Jhc3AgdGhlIHJhbWlmaWNhdGlvbnMuXG5cbkdpdmVuIHRoZSBjaGFuZ2UgdG8gcmV0dXJuIHNlbWFudGljcyBhbmQgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbmF0dXJlIG9mIHRoaXMgcGF0Y2gsIEknZCBzYXkgdGhpcyBpcyBkZWZpbml0ZWx5IGEgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJJ2xsIGZsYWcgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4gTXkga2V5IGZvY3VzIHN5bWJvbHMgd2lsbCBiZSBgbm9kZV9yZWNsYWltYCBhbmQgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZyB0byBrZWVwIGluIG1pbmQgaXMgYE5VTUFgLiBUaW1lIHRvIGRpZyBkZWVwZXIgaW50byBgbW0vdm1zY2FuLmNgIGFuZCB2ZXJpZnkgYWxsIGFzc3VtcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQ1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzY4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MDEuNjg2ODI0MDMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjE4NjIyNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnVuc2lnbmVkIGxvbmcgbm9kZV9yZWNsYWltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTc3Mjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19ub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS92bXNjYW4uYy03NzcwLVxcbm1tL3Ztc2Nhbi5jOjc3NzE6dW5zaWduZWQgbG9uZyBub2RlX3JlY2xhaW0oc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcilcXG5tbS92bXNjYW4uYy03NzcyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MDcuMjQ4NjkxNDIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1OTc3NTA2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29kZSBsb2NhdGlvbnMsIHRoaW5raW5nIGFib3V0IHRoZW0gZnJvbSBteSBvd24gZXhwZXJpZW5jZTpcblxuKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwncyBNZW1vcnkgTWFuYWdlbWVudCBMYW5kc2NhcGUqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIHR3byBmdW5jdGlvbnMuLi4gYG5vZGVfcmVjbGFpbWAg4oCTIGFoIHllcywgdGhhdCdzIGRlZmluaXRlbHkgaW4gYG1tL3Ztc2Nhbi5jYC4gSXQncyBhIGNsYXNzaWMgbG9jYXRpb24sIGRlYWxpbmcgd2l0aCB0aGUgcmVjbGFtYXRpb24gcGFydCBvZiB0aGUgdmlydHVhbCBtZW1vcnkgc2Nhbi4gVGhlIG5vZGUgbGV2ZWwgcmVjbGFtYXRpb24sIGFsd2F5cyBhIHRyaWNreSBhcmVhLCBidXQgdGhhdCBtYWtlcyBzZW5zZS4gSXQncyB3aGVyZSB0aGUga2VybmVsIHRyaWVzIHRvIGZyZWUgdXAgcGFnZXMgZnJvbSBhIHNwZWNpZmljIE5VTUEgbm9kZSwgZ2V0dGluZyBpdHMgd29yayBjdXQgb3V0IGZvciBpdC5cblxuTm93LCBmb3IgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLCB0aGF0IG9uZeKAmXMgYWx3YXlzIGJlZW4gbW9yZSBzdHJhaWdodGZvcndhcmQuIEkgY2FuIHJlY2FsbCBsb29raW5nIGF0IGl0IGluIGBtbS9wYWdlX2FsbG9jLmNgLCBleGFjdGx5IHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBpdC4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBwYWdlIGFsbG9jYXRpb24gc3lzdGVtLiBUaGUgd29ya2hvcnNlIHRoYXQgaW50ZXJhY3RzIHdpdGggdGhlIGZyZWUgbGlzdHMsIHRoZSBidWRkeSBzeXN0ZW0sIGFuZCBzbyBvbi4gSXTigJlzIHRoZSBnYXRla2VlcGVyLCBkZWNpZGluZyB3aGF0IHBhZ2UgdG8gZ2l2ZSB3aGVuIHRoZSBzeXN0ZW0gbmVlZHMgbW9yZSBtZW1vcnksIG9yIHB1bGxpbmcgYW4gdW5yZWZlcmVuY2VkIHBhZ2UgZnJvbSB0aGUgZnJlZSBsaXN0cy4gR29vZCB0byBrZWVwIHRob3NlIGxvY2F0aW9ucyBzdHJhaWdodCBpbiBteSBoZWFkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODEwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MTAuNTA4NDY4NDI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxODUzNTAzMDcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgc3RydWN0IHBhZ2UgXFxcXCouKmdldF9wYWdlX2Zyb21fZnJlZWxpc3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjQ5OjE1LjY5MzgzMDQyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTkxNjI4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipOYXZpZ2F0aW5nIHRoZSBNZW1vcnkgTWFuYWdlbWVudCBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBUaGUgaGludCBpcyBpdCdzIGluIGBtbS9wYWdlX2FsbG9jLmNgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBHaXZlbiBteSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCdzIG1lbW9yeSBtYW5hZ2VtZW50IGFyY2hpdGVjdHVyZSwgSSBjYW4gY29uZmlkZW50bHkgc3VybWlzZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2VudHJhbCB0byBoYW5kbGluZyB0aGUgYWxsb2NhdGlvbiBvZiBwaHlzaWNhbCBwYWdlcyBmcm9tIHRoZSBmcmVlIGxpc3QuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgZXhhY3RseSBob3cgdGhpcyBjcnVjaWFsIHByb2Nlc3Mgd29ya3MuIExldCdzIGdldCB0byB0aGUgc3BlY2lmaWNzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MTguOTUyOTk1NzU0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTQwMDU1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9wYWdlX2FsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9hbGxvYy5jPTMxMz1ERUZJTkVfU1RBVElDX0tFWV9UUlVFKGRlZmVycmVkX3BhZ2VzKTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0zMTYtICogZGVmZXJyZWRfZ3Jvd196b25lKCkgaXMgX19pbml0LCBidXQgaXQgaXMgY2FsbGVkIGZyb21cXG5tbS9wYWdlX2FsbG9jLmM6MzE3OiAqIGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoKSBkdXJpbmcgZWFybHkgYm9vdCB1bnRpbCBkZWZlcnJlZF9wYWdlcyBwZXJtYW5lbnRseVxcbm1tL3BhZ2VfYWxsb2MuYy0zMTgtICogZGlzYWJsZXMgdGhpcyBjYWxsLiBUaGlzIGlzIHdoeSB3ZSBoYXZlIHJlZmRhdGEgd3JhcHBlciB0byBhdm9pZCB3YXJuaW5nLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTM3ODc9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYWxsb2NfZmxhZ3NfY21hKGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTM3OTYtLypcXG5tbS9wYWdlX2FsbG9jLmM6Mzc5NzogKiBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0IGdvZXMgdGhyb3VnaCB0aGUgem9uZWxpc3QgdHJ5aW5nIHRvIGFsbG9jYXRlXFxubW0vcGFnZV9hbGxvYy5jLTM3OTgtICogYSBwYWdlLlxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTM4MDA9c3RhdGljIHN0cnVjdCBwYWdlICpcXG5tbS9wYWdlX2FsbG9jLmM6MzgwMTpnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsIGludCBhbGxvY19mbGFncyxcXG5tbS9wYWdlX2FsbG9jLmMtMzgwMi1cXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYWxsb2NfY29udGV4dCAqYWMpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NDAyNj1fX2FsbG9jX3BhZ2VzX2NwdXNldF9mYWxsYmFjayhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQwMzEtXFxubW0vcGFnZV9hbGxvYy5jOjQwMzI6XFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLFxcbm1tL3BhZ2VfYWxsb2MuYy00MDMzLVxcdFxcdFxcdGFsbG9jX2ZsYWdzfEFMTE9DX0NQVVNFVCwgYWMpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQwMzgtXFx0aWYgKCFwYWdlKVxcbm1tL3BhZ2VfYWxsb2MuYzo0MDM5OlxcdFxcdHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0KGdmcF9tYXNrLCBvcmRlcixcXG5tbS9wYWdlX2FsbG9jLmMtNDA0MC1cXHRcXHRcXHRcXHRhbGxvY19mbGFncywgYWMpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQwNDU9X19hbGxvY19wYWdlc19tYXlfb29tKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNDA3NS1cXHQgKi9cXG5tbS9wYWdlX2FsbG9jLmM6NDA3NjpcXHRwYWdlID0gZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdCgoZ2ZwX21hc2sgfCBfX0dGUF9IQVJEV0FMTCkgXFx1MDAyNlxcbm1tL3BhZ2VfYWxsb2MuYy00MDc3LVxcdFxcdFxcdFxcdCAgICAgIH5fX0dGUF9ESVJFQ1RfUkVDTEFJTSwgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NDE0MD1fX2FsbG9jX3BhZ2VzX2RpcmVjdF9jb21wYWN0KGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNDE3Ni1cXHRpZiAoIXBhZ2UpXFxubW0vcGFnZV9hbGxvYy5jOjQxNzc6XFx0XFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xcbm1tL3BhZ2VfYWxsb2MuYy00MTc4LVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ0MTY9X19hbGxvY19wYWdlc19kaXJlY3RfcmVjbGFpbShnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ0MjktcmV0cnk6XFxubW0vcGFnZV9hbGxvYy5jOjQ0MzA6XFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xcbm1tL3BhZ2VfYWxsb2MuYy00NDMxLVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MzE9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ4MzAtXFx0ICovXFxubW0vcGFnZV9hbGxvYy5jOjQ4MzE6XFx0cGFnZSA9IGdldF9wYWdlX2Zyb21fZnJlZWxpc3QoZ2ZwX21hc2ssIG9yZGVyLCBhbGxvY19mbGFncywgYWMpO1xcbm1tL3BhZ2VfYWxsb2MuYy00ODMyLVxcdGlmIChwYWdlKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTUzMzA9c3RydWN0IHBhZ2UgKl9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy01MzgyLVxcdC8qIEZpcnN0IGFsbG9jYXRpb24gYXR0ZW1wdCAob3IsIGZvciBub2xvY2ssIG9ubHkgYXR0ZW1wdCkgKi9cXG5tbS9wYWdlX2FsbG9jLmM6NTM4MzpcXHRwYWdlID0gZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdChhbGxvY19nZnAsIG9yZGVyLCBmYXN0cGF0aF9hbGxvY19mbGFncywgXFx1MDAyNmFjKTtcXG5tbS9wYWdlX2FsbG9jLmMtNTM4NC1cXHRpZiAobGlrZWx5KHBhZ2UpIHx8IChhbGxvY19mbGFncyBcXHUwMDI2IEFMTE9DX05PTE9DSykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIxOjQ5OjIwLjY2NzAwNzEwNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MzY1MDE0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCB3ZXJlIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqT3B0aW1pemluZyBTeW1ib2wgTGlzdGluZyBmb3IgUGVyZm9ybWFuY2UqKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIHJlZmluZSB0aGUgc3ltYm9sIGxpc3RpbmcgZm9yIGFuYWx5c2lzLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgYXZvaWRpbmcgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGVzcGVjaWFsbHkgaW4gYSBmdW5jdGlvbiBsaWtlIGBnZXRfcGFnZV9mcm9tX2ZyZWVsaXN0YC4gSXQncyBhIGtub3duIGhvdCBwYXRoLCBzbyBJIG5lZWQgdG8gYmUgKnZlcnkqIGNhcmVmdWwgYWJvdXQgaW5jbHVkaW5nIGl0IGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0IGtpbmQgb2YgZnVuY3Rpb24gd2lsbCBza2V3IGFueSBwcm9maWxpbmcgSSdtIGRvaW5nIGFuZCBhZGQgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQgdG8gdGhlIGZvY3VzIGNhbGN1bGF0aW9ucywgZXNwZWNpYWxseSBpZiBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5IGFyZWFzIHRoYXQgd2lsbCBtb3N0IGJlbmVmaXQgZnJvbSBvcHRpbWl6YXRpb24uXG5cblNvLCBJIHdvbid0IGxpc3QgYGdldF9wYWdlX2Zyb21fZnJlZWxpc3RgLiBUaGF0J3MgYSBkZWZpbml0ZSBuby1nby4gSW5zdGVhZCwgSSdsbCBmb2N1cyBvbiBsaXN0aW5nIGBub2RlX3JlY2xhaW1gLCBhcyBpdCBzZWVtcyBhIGhpZ2hlci1sZXZlbCBmdW5jdGlvbiBhbmQgcHJvYmFibHkgY2FsbHMgdGhlIGZvcm1lciBhcyBwYXJ0IG9mIGl0cyBvcGVyYXRpb24uIEl0J3MgYSBtb3JlIGFwcHJvcHJpYXRlIGxldmVsIG9mIGFic3RyYWN0aW9uIGZvciB0aGUga2luZCBvZiBwcm9maWxpbmcgSSdtIGxpa2VseSBpbnRlcmVzdGVkIGluLlxuXG5Ob3csIEkgYWxzbyBuZWVkIHRvIGNoZWNrIGlmIGBub2RlX3JlY2xhaW1gIGlzIHNwZWNpZmljYWxseSB3aXRoaW4gYSBOVU1BIGNvbnRleHQuIEknbGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIGNvcnJlY3RseSB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgYENPTkZJR19OVU1BYCBvcHRpb24uIFRoaXMgaXMgZXNzZW50aWFsIGNvbnRleHQsIGFzIHRoZSBiZWhhdmlvciBvZiBgbm9kZV9yZWNsYWltYCB3aWxsIGJlIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGlmIE5VTUEgaXMgZW5hYmxlZC4gVGhpcyB3aWxsIGluZm9ybSBob3cgSSBpbnRlcnByZXQgYW55IHByb2ZpbGluZyBkYXRhIEknbSBhYmxlIHRvIGdhdGhlciwgYW5kIEkgbWlnaHQgbmVlZCB0byBhZGp1c3QgbXkgdGVjaG5pcXVlcyBpZiBOVU1BIGlzIGRpc2FibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDMyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MjcuMjAzNTEwNjE4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg4MDM1MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4jaWZkZWYgQ09ORklHX05VTUFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vdm1zY2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vdm1zY2FuLmM9NzYxOT1zdGF0aWMgY29uc3Qgc3RydWN0IGN0bF90YWJsZSB2bXNjYW5fc3lzY3RsX3RhYmxlW10gPSB7XFxuLS1cXG5tbS92bXNjYW4uYy03NjI4LVxcdH0sXFxubW0vdm1zY2FuLmM6NzYyOTojaWZkZWYgQ09ORklHX05VTUFcXG5tbS92bXNjYW4uYy03NjMwLVxcdHtcXG4tLVxcbm1tL3Ztc2Nhbi5jPTc2NTE9bW9kdWxlX2luaXQoa3N3YXBkX2luaXQpXFxubW0vdm1zY2FuLmMtNzY1Mi1cXG5tbS92bXNjYW4uYzo3NjUzOiNpZmRlZiBDT05GSUdfTlVNQVxcbm1tL3Ztc2Nhbi5jLTc2NTQtLypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MjkuMDkxNTUyMzg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NTk3MTA2NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQ6IE5vZGUgUmVjbGFpbSB3aXRoIE5VTUEgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBhIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNwZWNpZmljYWxseSB0b3VjaGVzIGBub2RlX3JlY2xhaW1gLCBhbmQgdGhlIGNydWNpYWwgZGV0YWlsIGhlcmUgaXMgdGhhdCBgbm9kZV9yZWNsYWltYCBpcyBjb25maWd1cmVkIHVuZGVyIGBDT05GSUdfTlVNQWAuIFRoaXMgaXMgaW1tZWRpYXRlbHkgcmVsZXZhbnQgdG8gbXkgd29yay5cblxuVGhlIHBhdGNoIGl0c2VsZiBkaWdzIGludG8gdGhlIGd1dHMgb2YgdGhlIHBhZ2UgYWxsb2NhdG9yIGFuZCB0aGUgbm9kZSByZWNsYWltIGxvZ2ljLiBNb3JlIHNwZWNpZmljYWxseSwgaXQncyBtZXNzaW5nIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiBgbm9kZV9yZWNsYWltYCBhbmQsIGNydWNpYWxseSwgaG93IHRoYXQgcmV0dXJuIHZhbHVlIGlzIGludGVycHJldGVkIGFuZCBhY3RlZCB1cG9uIHdpdGhpbiBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIFRoYXQncyBzaWduaWZpY2FudC4gV2UncmUgdGFsa2luZyBhYm91dCBmdW5kYW1lbnRhbCBjaGFuZ2VzIHRvIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgdGhlIHJlc3VsdHMgb2Ygbm9kZSByZWNsYWltLCBhIGNyaXRpY2FsIGNvbXBvbmVudCBvZiBtZW1vcnkgbWFuYWdlbWVudCwgZXNwZWNpYWxseSBpbiBOVU1BIHN5c3RlbXMuXG5cblRoZSBjaGFuZ2VzIGludm9sdmUgYWx0ZXJpbmcgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIGFuZCB1c2VzIHRoZSByZXN1bHRzIG9mIGF0dGVtcHRpbmcgbm9kZSByZWNsYWltLiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgY29yZSBtZW1vcnkgZnVuY3Rpb25hbGl0eS4gR2l2ZW4gdGhpcyBsZXZlbCBvZiBjaGFuZ2UsIGFuZCBlc3BlY2lhbGx5IHRoZSBpbnRlcnBsYXkgd2l0aCBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAsIEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgYSBkZWZpbml0ZSBmdXp6aW5nIHRhcmdldC4gSXQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZXhwb3NlIHN1YnRsZSBtZW1vcnkgbWFuYWdlbWVudCBidWdzIHRoYXQgY291bGQgbGVhZCB0byBjcmFzaGVzLCBsZWFrcywgb3IgZXZlbiBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMDUsIk91dHB1dFRva2VucyI6ODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjE6NDk6MzQuNzUxMjY1MTY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2OTk3Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVU1BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibm9kZV9yZWNsYWltXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVU1BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibm9kZV9yZWNsYWltXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHJldHVybiB0eXBlIGFuZCBsb2dpYyBvZiBgbm9kZV9yZWNsYWltYCBhbmQgaXRzIGNhbGxlciBgZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdGAuIEl0IGNoYW5nZXMgaG93IHRoZSBwYWdlIGFsbG9jYXRvciBoYW5kbGVzIG5vZGUgcmVjbGFpbSByZXN1bHRzLCB3aGljaCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[1] Phase: Succeeded StartedAt: 2026-07-14 21:49:47 +0000 UTC FinishedAt: 2026-07-14 21:49:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 21:49:47 +0000 UTC FinishedAt: 2026-07-14 21:49:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2] Phase: Succeeded StartedAt: 2026-07-14 21:49:47 +0000 UTC FinishedAt: 2026-07-15 02:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 21:49:47 +0000 UTC FinishedAt: 2026-07-15 02:20:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 21:49:47 +0000 UTC FinishedAt: 2026-07-14 21:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 21:49:47 +0000 UTC FinishedAt: 2026-07-14 21:50:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowfwwhh/series-workflowfwwhh-convert-artifact-1118460549/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 21:50:19 +0000 UTC FinishedAt: 2026-07-14 22:21:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 21:50:19 +0000 UTC FinishedAt: 2026-07-14 22:21:56 +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:*17ace951-9cd9-4a2f-9ed0-7ef4c6cfeaad,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-workflowfwwhh/series-workflowfwwhh-convert-artifact-1118460549/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": "16244d7c-2d15-4f05-a68a-65a820554dcd", "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-workflowfwwhh/series-workflowfwwhh-build-action-862524971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 21:50:19 +0000 UTC FinishedAt: 2026-07-14 22:21:46 +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:*17ace951-9cd9-4a2f-9ed0-7ef4c6cfeaad,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-workflowfwwhh/series-workflowfwwhh-convert-artifact-1118460549/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": "16244d7c-2d15-4f05-a68a-65a820554dcd", "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-workflowfwwhh/series-workflowfwwhh-build-action-862524971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 22:21:56 +0000 UTC FinishedAt: 2026-07-14 22:21:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 22:21:56 +0000 UTC FinishedAt: 2026-07-14 22:21:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 22:21:56 +0000 UTC FinishedAt: 2026-07-14 22:22:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 22:21:56 +0000 UTC FinishedAt: 2026-07-14 22:22:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowfwwhh/series-workflowfwwhh-convert-artifact-182326624/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 22:22:17 +0000 UTC FinishedAt: 2026-07-14 22:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 22:22:17 +0000 UTC FinishedAt: 2026-07-14 22:24:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16244d7c-2d15-4f05-a68a-65a820554dcd,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-workflowfwwhh/series-workflowfwwhh-build-action-862524971/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-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 22:24:30 +0000 UTC FinishedAt: 2026-07-14 22:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 22:24:30 +0000 UTC FinishedAt: 2026-07-14 22:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 22:24:30 +0000 UTC FinishedAt: 2026-07-14 23:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 22:24:30 +0000 UTC FinishedAt: 2026-07-14 23:17:02 +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:*17ace951-9cd9-4a2f-9ed0-7ef4c6cfeaad,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-workflowfwwhh/series-workflowfwwhh-convert-artifact-182326624/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": "bbabb15f-cc73-4e6f-b922-d95f7313a57d", "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-workflowfwwhh/series-workflowfwwhh-build-action-1699775004/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 22:24:30 +0000 UTC FinishedAt: 2026-07-14 23:16:52 +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:*17ace951-9cd9-4a2f-9ed0-7ef4c6cfeaad,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-workflowfwwhh/series-workflowfwwhh-convert-artifact-182326624/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": "bbabb15f-cc73-4e6f-b922-d95f7313a57d", "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-workflowfwwhh/series-workflowfwwhh-build-action-1699775004/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 23:17:02 +0000 UTC FinishedAt: 2026-07-14 23:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 23:17:02 +0000 UTC FinishedAt: 2026-07-14 23:17:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 23:17:02 +0000 UTC FinishedAt: 2026-07-14 23:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 23:17:02 +0000 UTC FinishedAt: 2026-07-14 23:19:05 +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:*bbabb15f-cc73-4e6f-b922-d95f7313a57d,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-workflowfwwhh/series-workflowfwwhh-build-action-1699775004/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-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 23:19:14 +0000 UTC FinishedAt: 2026-07-15 02:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 23:19:14 +0000 UTC FinishedAt: 2026-07-15 02:20:35 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},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:*16244d7c-2d15-4f05-a68a-65a820554dcd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bbabb15f-cc73-4e6f-b922-d95f7313a57d,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-workflowfwwhh/series-workflowfwwhh-build-action-862524971/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-workflowfwwhh/series-workflowfwwhh-build-action-1699775004/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 23:19:14 +0000 UTC FinishedAt: 2026-07-14 23:19:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 23:19:14 +0000 UTC FinishedAt: 2026-07-14 23:19:19 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},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-workflowfwwhh/series-workflowfwwhh-convert-artifact-2603574713/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 23:19:14 +0000 UTC FinishedAt: 2026-07-14 23:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 23:19:14 +0000 UTC FinishedAt: 2026-07-14 23:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 23:19:14 +0000 UTC FinishedAt: 2026-07-14 23:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 23:19:24 +0000 UTC FinishedAt: 2026-07-15 02:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfwwhh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["node_reclaim"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"2fc4daf5c4774d70254201aaa5a9d50cae52af5e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NUMA"],"series_id":"72979bbf-9733-4301-9675-1ee76d4898f4","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 23:19:24 +0000 UTC FinishedAt: 2026-07-15 02:20:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16244d7c-2d15-4f05-a68a-65a820554dcd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bbabb15f-cc73-4e6f-b922-d95f7313a57d,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-workflowfwwhh/series-workflowfwwhh-build-action-862524971/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-workflowfwwhh/series-workflowfwwhh-build-action-1699775004/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-workflowfwwhh/series-workflowfwwhh-convert-artifact-2603574713/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,}