Name: series-workflowllwqs Phase: Succeeded StartedAt: 2026-07-27 19:27:05 +0000 UTC FinishedAt: 2026-07-28 00:41:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[0] Phase: Succeeded StartedAt: 2026-07-27 19:27:06 +0000 UTC FinishedAt: 2026-07-27 19:45:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 19:27:06 +0000 UTC FinishedAt: 2026-07-27 19:45:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "JFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "JFS_FS" ], "series_id": "d0a80ce1-2707-45d2-b7d6-154f28e67433" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "dbFree", "dbUpdatePMap", "dbAlloc", "dbAllocBottomUp" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0pGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RiRnJlZSYjMzQ7LAogICAgJiMzNDtkYlVwZGF0ZVBNYXAmIzM0OywKICAgICYjMzQ7ZGJBbGxvYyYjMzQ7LAogICAgJiMzNDtkYkFsbG9jQm90dG9tVXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MGFiY2Y5ZjdhOTUwODQ4MjQyNmFiMDA2ZmNiMjk3MmI4MzczM2ZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTk6NDQ6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19kbWFwLmMgYi9mcy9qZnMvamZzX2RtYXAuY1xuaW5kZXggYTg0MWNmMjFkYTdkZTYuLjA2MzU3MjQ1NmFjOWFjIDEwMDY0NFxuLS0tIGEvZnMvamZzL2pmc19kbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2pmcy9qZnNfZG1hcC5jXG5AQCAtOTgsNiAmIzQzOzk4LDkgQEAgc3RhdGljIGludCBibGtzdG9sMihzNjQgbmIpO1xuIHN0YXRpYyBpbnQgY250bHoodTMyIHZhbHVlKTtcbiBzdGF0aWMgaW50IGNudHR6KHUzMiB3b3JkKTtcbiBcbiYjNDM7c3RhdGljIGJvb2wgZGJfdmFsaWRhdGVfZG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjb25zdCBzdHJ1Y3QgZG1hcCAqZHAsXG4mIzQzO1x0XHRcdCAgICAgczY0IGV4cGVjdGVkX3N0YXJ0KTtcbiYjNDM7XG4gc3RhdGljIGludCBkYkFsbG9jRG1hcEJVKHN0cnVjdCBibWFwICogYm1wLCBzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sXG4gXHRcdFx0IGludCBuYmxvY2tzKTtcbiBzdGF0aWMgaW50IGRiSW5pdERtYXAoc3RydWN0IGRtYXAgKiBkcCwgczY0IGJsa25vLCBpbnQgbmJsb2Nrcyk7XG5AQCAtNDc2LDYgJiM0Mzs0NzksMTIgQEAgaW50IGRiRnJlZShzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxuIFx0XHR9XG4gXHRcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVx1MDAzZWRhdGE7XG4gXG4mIzQzO1x0XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4mIzQzO1x0XHRcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdC8qIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGJsb2NrcyB0byBiZSBmcmVlZCBmcm9tXG4gXHRcdCAqIHRoaXMgZG1hcC5cbiBcdFx0ICovXG5AQCAtNTY4LDYgJiM0Mzs1NzcsMTMgQEAgZGJVcGRhdGVQTWFwKHN0cnVjdCBpbm9kZSAqaXBibWFwLFxuIFx0XHRcdGlmIChtcCA9PSBOVUxMKVxuIFx0XHRcdFx0cmV0dXJuIC1FSU87XG4gXHRcdFx0bWV0YXBhZ2Vfd2FpdF9mb3JfaW8obXApO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwYm1hcC1cdTAwM2VpX3NiLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgKHN0cnVjdCBkbWFwICopbXAtXHUwMDNlZGF0YSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0XHRyZWxlYXNlX21ldGFwYWdlKG1wKTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4gXHRcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVx1MDAzZWRhdGE7XG4gXG5AQCAtODg2LDYgJiM0Mzs5MDIsMTEgQEAgaW50IGRiQWxsb2Moc3RydWN0IGlub2RlICppcCwgczY0IGhpbnQsIHM2NCBuYmxvY2tzLCBzNjQgKiByZXN1bHRzKVxuIFxuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuJiM0MztcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVx1MDAzZWlfc2IsIGRwLCBibGtubyBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4mIzQzO1x0XHRcdHJlbGVhc2VfbWV0YXBhZ2UobXApO1xuJiM0MztcdFx0XHRnb3RvIHJlYWRfdW5sb2NrO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0LyogZmlyc3QsIHRyeSB0byBzYXRpc2Z5IHRoZSBhbGxvY2F0aW9uIHJlcXVlc3Qgd2l0aCB0aGVcbiBcdFx0ICogYmxvY2tzIGJlZ2lubmluZyBhdCB0aGUgaGludC5cbiBcdFx0ICovXG5AQCAtMTExOCw2ICYjNDM7MTEzOSwxMiBAQCBzdGF0aWMgaW50IGRiRXh0ZW5kKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBibGtubywgczY0IG5ibG9ja3MsIHM2NCBhZGRuYmxvY2tzKVxuIFxuIFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbiYjNDM7XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGV4dGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdHJlbGVhc2VfbWV0YXBhZ2UobXApO1xuJiM0MztcdFx0SVJFQURfVU5MT0NLKGlwYm1hcCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogdHJ5IHRvIGFsbG9jYXRlIHRoZSBibG9ja3MgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZVxuIFx0ICogY3VycmVudCBhbGxvY2F0aW9uLlxuIFx0ICovXG5AQCAtMTkwMiw3ICYjNDM7MTkyOSw4IEBAIGRiQWxsb2NDdGwoc3RydWN0IGJtYXAgKiBibXAsIHM2NCBuYmxvY2tzLCBpbnQgbDJuYiwgczY0IGJsa25vLCBzNjQgKiByZXN1bHRzKVxuIFx0XHRcdHJldHVybiAtRUlPO1xuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuLVx0XHRpZiAoZHAtXHUwMDNldHJlZS5idWRtaW4gXHUwMDNjIDApIHtcbiYjNDM7XHRcdGlmIChkcC1cdTAwM2V0cmVlLmJ1ZG1pbiBcdTAwM2MgMCB8fFxuJiM0MztcdFx0ICAgICFkYl92YWxpZGF0ZV9kbWFwKGJtcC1cdTAwM2VkYl9pcGJtYXAtXHUwMDNlaV9zYiwgZHAsIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiBcdFx0XHRyZWxlYXNlX21ldGFwYWdlKG1wKTtcbiBcdFx0XHRyZXR1cm4gLUVJTztcbiBcdFx0fVxuQEAgLTE5MzYsNiAmIzQzOzE5NjQsMTIgQEAgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sIHM2NCAqIHJlc3VsdHMpXG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbiYjNDM7XHRcdGlmICghZGJfdmFsaWRhdGVfZG1hcChibXAtXHUwMDNlZGJfaXBibWFwLVx1MDAzZWlfc2IsIGRwLCBiIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4mIzQzO1x0XHRcdHJjID0gLUVJTztcbiYjNDM7XHRcdFx0Z290byBiYWNrb3V0O1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0LyogdGhlIGRtYXAgYmV0dGVyIGJlIGFsbCBmcmVlLlxuIFx0XHQgKi9cbiBcdFx0aWYgKGRwLVx1MDAzZXRyZWUuc3RyZWVbUk9PVF0gIT0gTDJCUEVSRE1BUCkge1xuQEAgLTE5OTMsNiAmIzQzOzIwMjcsMTEgQEAgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sIHM2NCAqIHJlc3VsdHMpXG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbiYjNDM7XHRcdGlmICghZGJfdmFsaWRhdGVfZG1hcChibXAtXHUwMDNlZGJfaXBibWFwLVx1MDAzZWlfc2IsIGRwLCBiIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0LyogZnJlZSB0aGUgYmxvY2tzIGlzIHRoaXMgZG1hcC5cbiBcdFx0ICovXG4gXHRcdGlmIChkYkZyZWVEbWFwKGJtcCwgZHAsIGIsIEJQRVJETUFQKSkge1xuQEAgLTIxMzQsNiAmIzQzOzIxNzMsMTggQEAgc3RhdGljIGludCBkYkFsbG9jRG1hcChzdHJ1Y3QgYm1hcCAqIGJtcCwgc3RydWN0IGRtYXAgKiBkcCwgczY0IGJsa25vLFxuIFx0cmV0dXJuIChyYyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBkYl92YWxpZGF0ZV9kbWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNvbnN0IHN0cnVjdCBkbWFwICpkcCxcbiYjNDM7XHRcdFx0ICAgICBzNjQgZXhwZWN0ZWRfc3RhcnQpXG4mIzQzO3tcbiYjNDM7XHRpZiAobGU2NF90b19jcHUoZHAtXHUwMDNlc3RhcnQpICE9IGV4cGVjdGVkX3N0YXJ0KSB7XG4mIzQzO1x0XHRqZnNfZXJyb3Ioc2IsIFwmIzM0O2NvcnJ1cHQgZG1hcCBwYWdlOiBzdGFydCAlbGxkIGV4cGVjdGVkICVsbGRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgKGxvbmcgbG9uZylsZTY0X3RvX2NwdShkcC1cdTAwM2VzdGFydCksXG4mIzQzO1x0XHRcdCAgKGxvbmcgbG9uZylleHBlY3RlZF9zdGFydCk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuIFxuIC8qXG4gICogTkFNRTpcdGRiRnJlZURtYXAoKVxuQEAgLTMzMDgsNiAmIzQzOzMzNTksMTIgQEAgaW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxuIFx0XHR9XG4gXHRcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVx1MDAzZWRhdGE7XG4gXG4mIzQzO1x0XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4mIzQzO1x0XHRcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdC8qIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGJsb2NrcyB0byBiZSBhbGxvY2F0ZWQgZnJvbVxuIFx0XHQgKiB0aGlzIGRtYXAuXG4gXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtKRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYkZyZWUmIzM0OywKICAgICYjMzQ7ZGJVcGRhdGVQTWFwJiMzNDssCiAgICAmIzM0O2RiQWxsb2MmIzM0OywKICAgICYjMzQ7ZGJBbGxvY0JvdHRvbVVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgZG1hcCBwYWdlcyBpbiBKRlMgdG8gcHJldmVudCBjb3JydXB0aW9uIHdoZW4gYWxsb2NhdGluZyBvciBmcmVlaW5nIGJsb2Nrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBKRlMgZmlsZXN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjBhYmNmOWY3YTk1MDg0ODI0MjZhYjAwNmZjYjI5NzJiODM3MzNmZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDE5OjQ0OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19kbWFwLmMgYi9mcy9qZnMvamZzX2RtYXAuYwppbmRleCBhODQxY2YyMWRhN2RlNi4uMDYzNTcyNDU2YWM5YWMgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9qZnNfZG1hcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2pmcy9qZnNfZG1hcC5jCkBAIC05OCw2ICYjNDM7OTgsOSBAQCBzdGF0aWMgaW50IGJsa3N0b2wyKHM2NCBuYik7CiBzdGF0aWMgaW50IGNudGx6KHUzMiB2YWx1ZSk7CiBzdGF0aWMgaW50IGNudHR6KHUzMiB3b3JkKTsKIAomIzQzO3N0YXRpYyBib29sIGRiX3ZhbGlkYXRlX2RtYXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY29uc3Qgc3RydWN0IGRtYXAgKmRwLAomIzQzOwkJCSAgICAgczY0IGV4cGVjdGVkX3N0YXJ0KTsKJiM0MzsKIHN0YXRpYyBpbnQgZGJBbGxvY0RtYXBCVShzdHJ1Y3QgYm1hcCAqIGJtcCwgc3RydWN0IGRtYXAgKiBkcCwgczY0IGJsa25vLAogCQkJIGludCBuYmxvY2tzKTsKIHN0YXRpYyBpbnQgZGJJbml0RG1hcChzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sIGludCBuYmxvY2tzKTsKQEAgLTQ3Niw2ICYjNDM7NDc5LDEyIEBAIGludCBkYkZyZWUoc3RydWN0IGlub2RlICppcCwgczY0IGJsa25vLCBzNjQgbmJsb2NrcykKIAkJfQogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIAomIzQzOwkJaWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLSZndDtpX3NiLCBkcCwgYmxrbm8gJmFtcDsgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7CiYjNDM7CQkJcmVsZWFzZV9tZXRhcGFnZShtcCk7CiYjNDM7CQkJSVJFQURfVU5MT0NLKGlwYm1hcCk7CiYjNDM7CQkJcmV0dXJuIC1FSU87CiYjNDM7CQl9CiYjNDM7CiAJCS8qIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGJsb2NrcyB0byBiZSBmcmVlZCBmcm9tCiAJCSAqIHRoaXMgZG1hcC4KIAkJICovCkBAIC01NjgsNiAmIzQzOzU3NywxMyBAQCBkYlVwZGF0ZVBNYXAoc3RydWN0IGlub2RlICppcGJtYXAsCiAJCQlpZiAobXAgPT0gTlVMTCkKIAkJCQlyZXR1cm4gLUVJTzsKIAkJCW1ldGFwYWdlX3dhaXRfZm9yX2lvKG1wKTsKJiM0MzsKJiM0MzsJCQlpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXBibWFwLSZndDtpX3NiLAomIzQzOwkJCQkJICAgICAgKHN0cnVjdCBkbWFwICopbXAtJmd0O2RhdGEsCiYjNDM7CQkJCQkgICAgICBibGtubyAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQkJcmVsZWFzZV9tZXRhcGFnZShtcCk7CiYjNDM7CQkJCXJldHVybiAtRUlPOwomIzQzOwkJCX0KIAkJfQogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIApAQCAtODg2LDYgJiM0Mzs5MDIsMTEgQEAgaW50IGRiQWxsb2Moc3RydWN0IGlub2RlICppcCwgczY0IGhpbnQsIHM2NCBuYmxvY2tzLCBzNjQgKiByZXN1bHRzKQogCiAJCWRwID0gKHN0cnVjdCBkbWFwICopIG1wLSZndDtkYXRhOwogCiYjNDM7CQlpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtJmd0O2lfc2IsIGRwLCBibGtubyAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQlyZWxlYXNlX21ldGFwYWdlKG1wKTsKJiM0MzsJCQlnb3RvIHJlYWRfdW5sb2NrOwomIzQzOwkJfQomIzQzOwogCQkvKiBmaXJzdCwgdHJ5IHRvIHNhdGlzZnkgdGhlIGFsbG9jYXRpb24gcmVxdWVzdCB3aXRoIHRoZQogCQkgKiBibG9ja3MgYmVnaW5uaW5nIGF0IHRoZSBoaW50LgogCQkgKi8KQEAgLTExMTgsNiAmIzQzOzExMzksMTIgQEAgc3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcykKIAogCWRwID0gKHN0cnVjdCBkbWFwICopIG1wLSZndDtkYXRhOwogCiYjNDM7CWlmICghZGJfdmFsaWRhdGVfZG1hcChpcC0mZ3Q7aV9zYiwgZHAsIGV4dGJsa25vICZhbXA7IH4oczY0KShCUEVSRE1BUCAtIDEpKSkgewomIzQzOwkJcmVsZWFzZV9tZXRhcGFnZShtcCk7CiYjNDM7CQlJUkVBRF9VTkxPQ0soaXBibWFwKTsKJiM0MzsJCXJldHVybiAtRUlPOwomIzQzOwl9CiYjNDM7CiAJLyogdHJ5IHRvIGFsbG9jYXRlIHRoZSBibG9ja3MgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZQogCSAqIGN1cnJlbnQgYWxsb2NhdGlvbi4KIAkgKi8KQEAgLTE5MDIsNyAmIzQzOzE5MjksOCBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cykKIAkJCXJldHVybiAtRUlPOwogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIAotCQlpZiAoZHAtJmd0O3RyZWUuYnVkbWluICZsdDsgMCkgewomIzQzOwkJaWYgKGRwLSZndDt0cmVlLmJ1ZG1pbiAmbHQ7IDAgfHwKJiM0MzsJCSAgICAhZGJfdmFsaWRhdGVfZG1hcChibXAtJmd0O2RiX2lwYm1hcC0mZ3Q7aV9zYiwgZHAsIGJsa25vICZhbXA7IH4oczY0KShCUEVSRE1BUCAtIDEpKSkgewogCQkJcmVsZWFzZV9tZXRhcGFnZShtcCk7CiAJCQlyZXR1cm4gLUVJTzsKIAkJfQpAQCAtMTkzNiw2ICYjNDM7MTk2NCwxMiBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cykKIAkJfQogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIAomIzQzOwkJaWYgKCFkYl92YWxpZGF0ZV9kbWFwKGJtcC0mZ3Q7ZGJfaXBibWFwLSZndDtpX3NiLCBkcCwgYiAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQlyZWxlYXNlX21ldGFwYWdlKG1wKTsKJiM0MzsJCQlyYyA9IC1FSU87CiYjNDM7CQkJZ290byBiYWNrb3V0OwomIzQzOwkJfQomIzQzOwogCQkvKiB0aGUgZG1hcCBiZXR0ZXIgYmUgYWxsIGZyZWUuCiAJCSAqLwogCQlpZiAoZHAtJmd0O3RyZWUuc3RyZWVbUk9PVF0gIT0gTDJCUEVSRE1BUCkgewpAQCAtMTk5Myw2ICYjNDM7MjAyNywxMSBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cykKIAkJfQogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIAomIzQzOwkJaWYgKCFkYl92YWxpZGF0ZV9kbWFwKGJtcC0mZ3Q7ZGJfaXBibWFwLSZndDtpX3NiLCBkcCwgYiAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQlyZWxlYXNlX21ldGFwYWdlKG1wKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKIAkJLyogZnJlZSB0aGUgYmxvY2tzIGlzIHRoaXMgZG1hcC4KIAkJICovCiAJCWlmIChkYkZyZWVEbWFwKGJtcCwgZHAsIGIsIEJQRVJETUFQKSkgewpAQCAtMjEzNCw2ICYjNDM7MjE3MywxOCBAQCBzdGF0aWMgaW50IGRiQWxsb2NEbWFwKHN0cnVjdCBibWFwICogYm1wLCBzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sCiAJcmV0dXJuIChyYyk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBkYl92YWxpZGF0ZV9kbWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNvbnN0IHN0cnVjdCBkbWFwICpkcCwKJiM0MzsJCQkgICAgIHM2NCBleHBlY3RlZF9zdGFydCkKJiM0Mzt7CiYjNDM7CWlmIChsZTY0X3RvX2NwdShkcC0mZ3Q7c3RhcnQpICE9IGV4cGVjdGVkX3N0YXJ0KSB7CiYjNDM7CQlqZnNfZXJyb3Ioc2IsICYjMzQ7Y29ycnVwdCBkbWFwIHBhZ2U6IHN0YXJ0ICVsbGQgZXhwZWN0ZWQgJWxsZFxuJiMzNDssCiYjNDM7CQkJICAobG9uZyBsb25nKWxlNjRfdG9fY3B1KGRwLSZndDtzdGFydCksCiYjNDM7CQkJICAobG9uZyBsb25nKWV4cGVjdGVkX3N0YXJ0KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiAKIC8qCiAgKiBOQU1FOglkYkZyZWVEbWFwKCkKQEAgLTMzMDgsNiAmIzQzOzMzNTksMTIgQEAgaW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKQogCQl9CiAJCWRwID0gKHN0cnVjdCBkbWFwICopIG1wLSZndDtkYXRhOwogCiYjNDM7CQlpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtJmd0O2lfc2IsIGRwLCBibGtubyAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQlyZWxlYXNlX21ldGFwYWdlKG1wKTsKJiM0MzsJCQlJUkVBRF9VTkxPQ0soaXBibWFwKTsKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCX0KJiM0MzsKIAkJLyogZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIGJlIGFsbG9jYXRlZCBmcm9tCiAJCSAqIHRoaXMgZG1hcC4KIAkJICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSkZTIEZpbGVzeXN0ZW0gUGF0Y2ggQW5hbHlzaXMgJmFtcDsgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBuZXcgZnVuY3Rpb24gY2FsbGVkIGBkYl92YWxpZGF0ZV9kbWFwYCBpbiBgZnMvamZzL2pmc19kbWFwLmNgLiBGcm9tIHdoYXQgSSBnYXRoZXIsIGl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbiBmb3IgdGhlIEpGUyBmaWxlc3lzdGVtLCBhaW1lZCBhdCBwcmV2ZW50aW5nIGNvcnJ1cHRpb24gb3IgcmVsYXRlZCBidWdzIGJ5IHZhbGlkYXRpbmcgYGRwLSZndDtzdGFydGAgYWdhaW5zdCBgZXhwZWN0ZWRfc3RhcnRgLiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGdvb2Qg4oCTIG1lYW5zIHdlJiMzOTtyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHByb2JsZW0uIE5vdywgSkZTLi4uIHRoYXQmIzM5O3MgYmVlbiBhcm91bmQgZm9yIGEgd2hpbGUsIHNvbGlkLCBidXQgaXQmIzM5O3MgYWx3YXlzIHdvcnRoIGEgdGhvcm91Z2ggbG9vay4KCkZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBuZXcgdmFsaWRhdGlvbiBpcyBiZWluZyBpbnRyb2R1Y2VkLiBMZXQmIzM5O3Mgc2VlLi4uIGl0JiMzOTtzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzIHdpdGhpbiBgamZzX2RtYXAuY2AgaXRzZWxmLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRob3NlIGNhbGwgc2l0ZXMgc28gSSBjYW4gbWFwIG91dCBpdHMgaW1wYWN0LiBPa2F5LCB0aGUgY2FsbHNpdGVzIGFyZSBgZGJGcmVlYCwgYGRiVXBkYXRlUE1hcGAsIGBkYkFsbG9jYCwgYGRiRXh0ZW5kYCwgYGRiQWxsb2NDdGxgIGFuZCBgZGJBbGxvY0JvdHRvbVVwYC4gQWxsIG9mIHRoZW0gc2VlbXMgdmVyeSBpbnRlcmVzdGluZyBhbmQgd29ydGggYSBkZWVwIGRpdmUuCgpOZXh0LCBJIG5lZWQgdG8ga25vdyBpZiBKRlMgaXMgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb3IgaWYgaXQgcmVxdWlyZXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmbGFncy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29uZmlnIG9wdGlvbiBpcyBgSkZTX0ZTYC4gUmlnaHQuIFNvLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIHdvcmtpbmcgd2l0aC4KCkkgc2hvdWxkIHZlcmlmeSB0aGF0IGFsbCB0aG9zZSBmdW5jdGlvbnMgYXJlIHZhbGlkIGFuZCB0aGF0IG5vdGhpbmcgd2VpcmQgaXMgZ29pbmcgb24gdGhlcmUuCgpGaW5hbGx5LCBqdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgYGZzL2pmcy9LY29uZmlnYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIG9yIGFueXRoaW5nIHRoYXQgbWlnaHQgY2hhbmdlIHRoZSB3YXkgdGhpcyB2YWxpZGF0aW9uIGJlaGF2ZXMgYmFzZWQgb24gb3RoZXIgc2V0dGluZ3MuIFRoaXMgaXMgYWxsIGdvb2QgaW5mb3JtYXRpb24gdGhhdCBJIGNhbiB1c2UgaW4gbXkgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSkZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvamZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvamZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2pmcy9LY29uZmlnOjI6Y29uZmlnIEpGU19GU1xuZnMvamZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0pGUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQW5hbHl6aW5nIHRoZSBKRlMgS2NvbmZpZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIEpGUyBmaWxlc3lzdGVtIHdpdGhpbiB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY3JhY2sgb3BlbiB0aGUgYGZzL2pmcy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCYjMzk7bGwgbGF5IG91dCBhbGwgdGhlIHJlcXVpcmVtZW50cywgdGhlIG90aGVyIGtlcm5lbCBmZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgSkZTIHRvIGZ1bmN0aW9uLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbC4gSSBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIHNvIEkgY2FuIHN0YXJ0IHRvIHdvcmsgb24gd2hhdGV2ZXIgdGhlIHBhcnRpY3VsYXIgcHJvYmxlbSBpcyB0aGF0IEkmIzM5O20gY3VycmVudGx5IHdvcmtpbmcgb24uIEdldHRpbmcgdGhlIGRlcGVuZGVuY2llcyByaWdodCBhdCB0aGUgc3RhcnQgd2lsbCBzYXZlIG1lIGEgdG9uIG9mIGRlYnVnZ2luZyB0aW1lIGxhdGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9qZnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBKRlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0pGUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNTpcdFx0c2VsZWN0IE5MU1xuICAgNjpcdFx0c2VsZWN0IE5MU19VQ1MyX1VUSUxTXG4gICA3Olx0XHRzZWxlY3QgQ1JDMzJcbiAgIDg6XHRcdHNlbGVjdCBMRUdBQ1lfRElSRUNUX0lPXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgaXMgYSBwb3J0IG9mIElCTSYjMzk7cyBKb3VybmFsZWQgRmlsZXN5c3RlbSAuICBNb3JlIGluZm9ybWF0aW9uIGlzXG4gIDExOlx0XHQgIGF2YWlsYWJsZSBpbiB0aGUgZmlsZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvamZzLnJzdFx1MDAzZS5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgSWYgeW91IGRvIG5vdCBpbnRlbmQgdG8gdXNlIHRoZSBKRlMgZmlsZXN5c3RlbSwgc2F5IE4uXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIEpGU19QT1NJWF9BQ0xcbiAgMTY6XHRcdGJvb2wgXCYjMzQ7SkZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4gIDE3Olx0XHRkZXBlbmRzIG9uIEpGU19GU1xuICAxODpcdFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuICAxOTpcdFx0aGVscFxuICAyMDpcdFx0ICBQb3NpeCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBwZXJtaXNzaW9ucyBmb3IgdXNlcnMgYW5kXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg1NwoJCQkJCQkJb3V0cHV0OiA2NQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBmaWxlIHN5c3RlbXMgYW5kIGtlcm5lbCBpbnRlcm5hbHM6CgoqKkRpdmluZyBpbnRvIEpGUyYjMzk7cyBEaXJlY3QgTWFwIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHRoZSBpbml0aWFsIGNsdWUgaXMgYEpGU19GU2AsIHdoaWNoIHRlbGxzIG1lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIHRoZSBKRlMgZmlsZXN5c3RlbS4gVGhhdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIGNvbnNpZGVyYWJseS4gTm93LCB0aGUgcmVhbCBtZWF0IG9mIHRoaXMgbGlrZWx5IGxpZXMgaW4gdGhlIGRpcmVjdCBtYXAgaW1wbGVtZW50YXRpb24sIHNvIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIGRlbHZlIGludG8gYGZzL2pmcy9qZnNfZG1hcC5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBtYW5hZ2luZyB0aGUgZGlyZWN0IGFsbG9jYXRpb24gbWFwIG9mIEpGUyBhcmUgbGlrZWx5IGRlZmluZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYmxvY2tzIGFyZSBtYXBwZWQgZGlyZWN0bHksIGFueSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMsIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBmcmFnbWVudGF0aW9uIHdpdGhpbiBKRlMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfHN0YXRpYykuKiAoZGJGcmVlfGRiVXBkYXRlUE1hcHxkYkFsbG9jfGRiRXh0ZW5kfGRiQWxsb2NDdGx8ZGJBbGxvY0JvdHRvbVVwKVxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2pmcy9qZnNfZG1hcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2pmcy9qZnNfZG1hcC5jPTgzPXN0YXRpYyBpbnQgZGJBbGxvY0FHKHN0cnVjdCBibWFwICogYm1wLCBpbnQgYWdubywgczY0IG5ibG9ja3MsIGludCBsMm5iLFxuZnMvamZzL2pmc19kbWFwLmMtODQtXHRcdCAgICAgczY0ICogcmVzdWx0cyk7XG5mcy9qZnMvamZzX2RtYXAuYzo4NTpzdGF0aWMgaW50IGRiQWxsb2NDdGwoc3RydWN0IGJtYXAgKiBibXAsIHM2NCBuYmxvY2tzLCBpbnQgbDJuYiwgczY0IGJsa25vLFxuZnMvamZzL2pmc19kbWFwLmMtODYtXHRcdCAgICAgIHM2NCAqIHJlc3VsdHMpO1xuZnMvamZzL2pmc19kbWFwLmM6ODc6c3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2Nrcyk7XG5mcy9qZnMvamZzX2RtYXAuYy04OC1zdGF0aWMgaW50IGRiRmluZEJpdHModTMyIHdvcmQsIGludCBsMm5iKTtcbi0tXG5mcy9qZnMvamZzX2RtYXAuYz0zNjY9aW50IGRiU3luYyhzdHJ1Y3QgaW5vZGUgKmlwYm1hcClcbi0tXG5mcy9qZnMvamZzX2RtYXAuYy00MzMtICovXG5mcy9qZnMvamZzX2RtYXAuYzo0MzQ6aW50IGRiRnJlZShzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxuZnMvamZzL2pmc19kbWFwLmMtNDM1LXtcbi0tXG5mcy9qZnMvamZzX2RtYXAuYz03MjA9aW50IGRiTmV4dEFHKHN0cnVjdCBpbm9kZSAqaXBibWFwKVxuLS1cbmZzL2pmcy9qZnNfZG1hcC5jLTgxNi0gKi9cbmZzL2pmcy9qZnNfZG1hcC5jOjgxNzppbnQgZGJBbGxvYyhzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgaGludCwgczY0IG5ibG9ja3MsIHM2NCAqIHJlc3VsdHMpXG5mcy9qZnMvamZzX2RtYXAuYy04MTgte1xuLS1cbmZzL2pmcy9qZnNfZG1hcC5jPTEwMzI9ZGJSZUFsbG9jKHN0cnVjdCBpbm9kZSAqaXAsXG4tLVxuZnMvamZzL2pmc19kbWFwLmMtMTA3OS0gKi9cbmZzL2pmcy9qZnNfZG1hcC5jOjEwODA6c3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcylcbmZzL2pmcy9qZnNfZG1hcC5jLTEwODEte1xuLS1cbmZzL2pmcy9qZnNfZG1hcC5jPTMyODE9c3RhdGljIGludCBibGtzdG9sMihzNjQgbmIpXG4tLVxuZnMvamZzL2pmc19kbWFwLmMtMzMyOC0gKi9cbmZzL2pmcy9qZnNfZG1hcC5jOjMzMjk6aW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxuZnMvamZzL2pmc19kbWFwLmMtMzMzMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgyMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWJ1Z2dpbmcgYSBNaXNzaW5nIEZ1bmN0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIE15IHJlZ2V4IGRpZG4mIzM5O3QgZmxhZyBgZGJVcGRhdGVQTWFwYC4gVGhhdCYjMzk7cy4uLiB1bnVzdWFsLiBJIHdhcyBjZXJ0YWluIGl0IHNob3VsZCBoYXZlIG1hdGNoZWQuIE9rYXksIG5vIHBhbmljLiBMZXQmIzM5O3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gSXQmIzM5O3MgdGltZSB0byBhY3R1YWxseSBzZWFyY2ggZm9yIHRoYXQgZnVuY3Rpb24gZGlyZWN0bHkuIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIGV2ZXJ5IGluc3RhbmNlIG9mIGl0LiBUaW1lIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGJVcGRhdGVQTWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvamZzL2pmc19kbWFwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvamZzL2pmc19kbWFwLmM9NDM0PWludCBkYkZyZWUoc3RydWN0IGlub2RlICppcCwgczY0IGJsa25vLCBzNjQgbmJsb2Nrcylcbi0tXG5mcy9qZnMvamZzX2RtYXAuYy01MTItLypcbmZzL2pmcy9qZnNfZG1hcC5jOjUxMzogKiBOQU1FOlx0ZGJVcGRhdGVQTWFwKClcbmZzL2pmcy9qZnNfZG1hcC5jLTUxNC0gKlxuLS1cbmZzL2pmcy9qZnNfZG1hcC5jPTUzMz1pbnRcbmZzL2pmcy9qZnNfZG1hcC5jOjUzNDpkYlVwZGF0ZVBNYXAoc3RydWN0IGlub2RlICppcGJtYXAsXG5mcy9qZnMvamZzX2RtYXAuYy01MzUtXHQgICAgIGludCBmcmVlLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzdHJ1Y3QgdGJsb2NrICogdGJsaylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE5MQoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiA0NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEpGUyBETWFwIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYW5seSBkZWZpbmluZyBhIGNoYW5nZSBpbnZvbHZpbmcgZG1hcCB2YWxpZGF0aW9uIGluIHRoZSBKRlMgZmlsZXN5c3RlbSwgZ29vZC4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgYWZmZWN0ZWQsIGFzIHRoZXkgd2lsbCBiZSB0aGUgZm9jdXMgb2YgdGhlIGZ1enppbmcgZWZmb3J0cy4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggaGlnaGxpZ2h0cyBzZXZlcmFsIGZ1bmN0aW9ucywgYW5kIEkmIzM5O3ZlIHN0YXJ0ZWQgYnkgY3JlYXRpbmcgYSBsaXN0IG9mIHRoZW06IGBkYkZyZWVgLCBgZGJVcGRhdGVQTWFwYCwgYGRiQWxsb2NgLCBgZGJFeHRlbmRgLCBgZGJBbGxvY0N0bGAsIGFuZCBgZGJBbGxvY0JvdHRvbVVwYC4KCk5vdywgSSYjMzk7bSBjaGVja2luZyB3aGljaCBhcmUgbm9uLXN0YXRpYyBhcyBJJiMzOTtsbCB3YW50IHRvIGZvY3VzIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBnZW5lcmFsbHkgYWNjZXNzaWJsZS4gQWZ0ZXIgcmV2aWV3aW5nLCBJJiMzOTttIGZpbmRpbmc6IGBkYkZyZWVgLCBgZGJVcGRhdGVQTWFwYCwgYGRiQWxsb2NgLCBhbmQgYGRiQWxsb2NCb3R0b21VcGAgYXJlIG5vbi1zdGF0aWMuIGBkYkV4dGVuZGAgYW5kIGBkYkFsbG9jQ3RsYCBhcmUgc3RhdGljLCBzbyBJIHdpbGwgbGlrZWx5IGV4Y2x1ZGUgdGhlc2UgZnJvbSBwcmltYXJ5IGZ1enppbmcgZWZmb3J0cywgYnV0IG1heSByZXZpc2l0IHRoZW0gbGF0ZXIgaWYgbmVlZGVkLiBJJiMzOTtsbCBub3RlIHRoYXQgYGRiRXh0ZW5kYCBpcyBjYWxsZWQgYnkgYGRiUmVBbGxvY2AgYW5kIGBkYkFsbG9jQ3RsYCBpcyBjYWxsZWQgYnkgYGRiQWxsb2NBR2AgYW5kIGBkYkFsbG9jQW55Q29udHJvbGAgYXMgdGhhdCBjb3VsZCBzdWdnZXN0IGFuIGludGVyZXN0aW5nIGZ1enppbmcgdGFyZ2V0LgoKSSYjMzk7bSBub3cgY3Jvc3MtcmVmZXJlbmNpbmcgdGhpcyBpbml0aWFsIGxpc3Qgd2l0aCB0aGUgcGF0Y2ggaXRzZWxmLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgYGZzL2pmcy9qZnNfZG1hcC5jYCBmaWxlLCBjb25maXJtaW5nIGl0IGZvY3VzZXMgb24gZG1hcCB2YWxpZGF0aW9uLiBUaGUgcGF0Y2ggYWRkcyBgZGJfdmFsaWRhdGVfZG1hcGAsIGFuZCBtb2RpZmllcyB0aGUgZnVuY3Rpb25zIEkmIzM5O3ZlIGlkZW50aWZpZWQgcHJldmlvdXNseS4gQmFzZWQgb24gdGhlIGZpbGUgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgYWx0ZXJlZCwgbXkgaW5pdGlhbCByZWFkIGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgLSB0aGlzIGlzIHJlbGF0ZWQgdG8gcHJldmVudGluZyBjb3JydXB0aW9uIGR1cmluZyBibG9jayBhbGxvY2F0aW9uL2ZyZWVpbmcgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGF0IHRoZSBmaWxlc3lzdGVtIGxldmVsLCBhbmQgc3VjaCBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGZ1enphYmxlLgoKR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBwYXRjaCBhbmQgbXkgdW5kZXJzdGFuZGluZywgSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb246IGBkYkZyZWVgLCBgZGJVcGRhdGVQTWFwYCwgYGRiQWxsb2NgLCBhbmQgYGRiQWxsb2NCb3R0b21VcGAsIHRoZXkgYXJlIGFsbCBub24tc3RhdGljLiBCYXNlZCBvbiB0aGUgY29kZSBjaGFuZ2VzIGFuZCByZWFzb25pbmcgcHJvdmlkZWQsIEkmIzM5O20gdGhpbmtpbmcgdGhlIEpGUyBmaWxlc3lzdGVtIGNvbmZpZywgYEpGU19GU2AsIHdpbGwgYmUgY3JpdGljYWwgdG8gZW5hYmxlIGFuZCB0ZXN0LiBTbywgSSB3aWxsIHNldCB0aG9zZSB2YWx1ZXMgaW4gdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb25zIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0pGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RiRnJlZSYjMzQ7LAogICAgJiMzNDtkYlVwZGF0ZVBNYXAmIzM0OywKICAgICYjMzQ7ZGJBbGxvYyYjMzQ7LAogICAgJiMzNDtkYkFsbG9jQm90dG9tVXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0pGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RiRnJlZSYjMzQ7LAogICAgJiMzNDtkYlVwZGF0ZVBNYXAmIzM0OywKICAgICYjMzQ7ZGJBbGxvYyYjMzQ7LAogICAgJiMzNDtkYkFsbG9jQm90dG9tVXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo0Ni4wNzg0MDgzMjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzczNDc2MjkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJKRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYkZyZWVcIixcbiAgICBcImRiVXBkYXRlUE1hcFwiLFxuICAgIFwiZGJBbGxvY1wiLFxuICAgIFwiZGJBbGxvY0JvdHRvbVVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ0OjQ2LjA3ODQxNzU0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAyNzgwNDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjBhYmNmOWY3YTk1MDg0ODI0MjZhYjAwNmZjYjI5NzJiODM3MzNmZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAxOTo0NDo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2RtYXAuYyBiL2ZzL2pmcy9qZnNfZG1hcC5jXFxuaW5kZXggYTg0MWNmMjFkYTdkZTYuLjA2MzU3MjQ1NmFjOWFjIDEwMDY0NFxcbi0tLSBhL2ZzL2pmcy9qZnNfZG1hcC5jXFxuKysrIGIvZnMvamZzL2pmc19kbWFwLmNcXG5AQCAtOTgsNiArOTgsOSBAQCBzdGF0aWMgaW50IGJsa3N0b2wyKHM2NCBuYik7XFxuIHN0YXRpYyBpbnQgY250bHoodTMyIHZhbHVlKTtcXG4gc3RhdGljIGludCBjbnR0eih1MzIgd29yZCk7XFxuIFxcbitzdGF0aWMgYm9vbCBkYl92YWxpZGF0ZV9kbWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNvbnN0IHN0cnVjdCBkbWFwICpkcCxcXG4rXFx0XFx0XFx0ICAgICBzNjQgZXhwZWN0ZWRfc3RhcnQpO1xcbitcXG4gc3RhdGljIGludCBkYkFsbG9jRG1hcEJVKHN0cnVjdCBibWFwICogYm1wLCBzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sXFxuIFxcdFxcdFxcdCBpbnQgbmJsb2Nrcyk7XFxuIHN0YXRpYyBpbnQgZGJJbml0RG1hcChzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sIGludCBuYmxvY2tzKTtcXG5AQCAtNDc2LDYgKzQ3OSwxMiBAQCBpbnQgZGJGcmVlKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBibGtubywgczY0IG5ibG9ja3MpXFxuIFxcdFxcdH1cXG4gXFx0XFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXFx1MDAzZWRhdGE7XFxuIFxcbitcXHRcXHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXFx1MDAzZWlfc2IsIGRwLCBibGtubyBcXHUwMDI2IH4oczY0KShCUEVSRE1BUCAtIDEpKSkge1xcbitcXHRcXHRcXHRyZWxlYXNlX21ldGFwYWdlKG1wKTtcXG4rXFx0XFx0XFx0SVJFQURfVU5MT0NLKGlwYm1hcCk7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHQvKiBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBibG9ja3MgdG8gYmUgZnJlZWQgZnJvbVxcbiBcXHRcXHQgKiB0aGlzIGRtYXAuXFxuIFxcdFxcdCAqL1xcbkBAIC01NjgsNiArNTc3LDEzIEBAIGRiVXBkYXRlUE1hcChzdHJ1Y3QgaW5vZGUgKmlwYm1hcCxcXG4gXFx0XFx0XFx0aWYgKG1wID09IE5VTEwpXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXHRcXHRcXHRtZXRhcGFnZV93YWl0X2Zvcl9pbyhtcCk7XFxuK1xcbitcXHRcXHRcXHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXBibWFwLVxcdTAwM2VpX3NiLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAoc3RydWN0IGRtYXAgKiltcC1cXHUwMDNlZGF0YSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgYmxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFx0XFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXFx1MDAzZWRhdGE7XFxuIFxcbkBAIC04ODYsNiArOTAyLDExIEBAIGludCBkYkFsbG9jKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBoaW50LCBzNjQgbmJsb2NrcywgczY0ICogcmVzdWx0cylcXG4gXFxuIFxcdFxcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVxcdTAwM2VkYXRhO1xcbiBcXG4rXFx0XFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVxcdTAwM2VpX3NiLCBkcCwgYmxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdFxcdGdvdG8gcmVhZF91bmxvY2s7XFxuK1xcdFxcdH1cXG4rXFxuIFxcdFxcdC8qIGZpcnN0LCB0cnkgdG8gc2F0aXNmeSB0aGUgYWxsb2NhdGlvbiByZXF1ZXN0IHdpdGggdGhlXFxuIFxcdFxcdCAqIGJsb2NrcyBiZWdpbm5pbmcgYXQgdGhlIGhpbnQuXFxuIFxcdFxcdCAqL1xcbkBAIC0xMTE4LDYgKzExMzksMTIgQEAgc3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcylcXG4gXFxuIFxcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVxcdTAwM2VkYXRhO1xcbiBcXG4rXFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVxcdTAwM2VpX3NiLCBkcCwgZXh0Ymxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0fVxcbitcXG4gXFx0LyogdHJ5IHRvIGFsbG9jYXRlIHRoZSBibG9ja3MgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZVxcbiBcXHQgKiBjdXJyZW50IGFsbG9jYXRpb24uXFxuIFxcdCAqL1xcbkBAIC0xOTAyLDcgKzE5MjksOCBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cylcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcdFxcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVxcdTAwM2VkYXRhO1xcbiBcXG4tXFx0XFx0aWYgKGRwLVxcdTAwM2V0cmVlLmJ1ZG1pbiBcXHUwMDNjIDApIHtcXG4rXFx0XFx0aWYgKGRwLVxcdTAwM2V0cmVlLmJ1ZG1pbiBcXHUwMDNjIDAgfHxcXG4rXFx0XFx0ICAgICFkYl92YWxpZGF0ZV9kbWFwKGJtcC1cXHUwMDNlZGJfaXBibWFwLVxcdTAwM2VpX3NiLCBkcCwgYmxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4gXFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXHRcXHR9XFxuQEAgLTE5MzYsNiArMTk2NCwxMiBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cylcXG4gXFx0XFx0fVxcbiBcXHRcXHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cXHUwMDNlZGF0YTtcXG4gXFxuK1xcdFxcdGlmICghZGJfdmFsaWRhdGVfZG1hcChibXAtXFx1MDAzZWRiX2lwYm1hcC1cXHUwMDNlaV9zYiwgZHAsIGIgXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdFxcdHJjID0gLUVJTztcXG4rXFx0XFx0XFx0Z290byBiYWNrb3V0O1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHQvKiB0aGUgZG1hcCBiZXR0ZXIgYmUgYWxsIGZyZWUuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoZHAtXFx1MDAzZXRyZWUuc3RyZWVbUk9PVF0gIT0gTDJCUEVSRE1BUCkge1xcbkBAIC0xOTkzLDYgKzIwMjcsMTEgQEAgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sIHM2NCAqIHJlc3VsdHMpXFxuIFxcdFxcdH1cXG4gXFx0XFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXFx1MDAzZWRhdGE7XFxuIFxcbitcXHRcXHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoYm1wLVxcdTAwM2VkYl9pcGJtYXAtXFx1MDAzZWlfc2IsIGRwLCBiIFxcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XFxuK1xcdFxcdFxcdHJlbGVhc2VfbWV0YXBhZ2UobXApO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0LyogZnJlZSB0aGUgYmxvY2tzIGlzIHRoaXMgZG1hcC5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChkYkZyZWVEbWFwKGJtcCwgZHAsIGIsIEJQRVJETUFQKSkge1xcbkBAIC0yMTM0LDYgKzIxNzMsMTggQEAgc3RhdGljIGludCBkYkFsbG9jRG1hcChzdHJ1Y3QgYm1hcCAqIGJtcCwgc3RydWN0IGRtYXAgKiBkcCwgczY0IGJsa25vLFxcbiBcXHRyZXR1cm4gKHJjKTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgZGJfdmFsaWRhdGVfZG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjb25zdCBzdHJ1Y3QgZG1hcCAqZHAsXFxuK1xcdFxcdFxcdCAgICAgczY0IGV4cGVjdGVkX3N0YXJ0KVxcbit7XFxuK1xcdGlmIChsZTY0X3RvX2NwdShkcC1cXHUwMDNlc3RhcnQpICE9IGV4cGVjdGVkX3N0YXJ0KSB7XFxuK1xcdFxcdGpmc19lcnJvcihzYiwgXFxcImNvcnJ1cHQgZG1hcCBwYWdlOiBzdGFydCAlbGxkIGV4cGVjdGVkICVsbGRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgKGxvbmcgbG9uZylsZTY0X3RvX2NwdShkcC1cXHUwMDNlc3RhcnQpLFxcbitcXHRcXHRcXHQgIChsb25nIGxvbmcpZXhwZWN0ZWRfc3RhcnQpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuIFxcbiAvKlxcbiAgKiBOQU1FOlxcdGRiRnJlZURtYXAoKVxcbkBAIC0zMzA4LDYgKzMzNTksMTIgQEAgaW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxcbiBcXHRcXHR9XFxuIFxcdFxcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVxcdTAwM2VkYXRhO1xcbiBcXG4rXFx0XFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVxcdTAwM2VpX3NiLCBkcCwgYmxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdFxcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0LyogZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIGJlIGFsbG9jYXRlZCBmcm9tXFxuIFxcdFxcdCAqIHRoaXMgZG1hcC5cXG4gXFx0XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ0OjQ2LjY4MjA3ODkwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIzMTMxMDgzMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkpGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRiRnJlZVwiLFxuICAgIFwiZGJVcGRhdGVQTWFwXCIsXG4gICAgXCJkYkFsbG9jXCIsXG4gICAgXCJkYkFsbG9jQm90dG9tVXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGRtYXAgcGFnZXMgaW4gSkZTIHRvIHByZXZlbnQgY29ycnVwdGlvbiB3aGVuIGFsbG9jYXRpbmcgb3IgZnJlZWluZyBibG9ja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSkZTIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjBhYmNmOWY3YTk1MDg0ODI0MjZhYjAwNmZjYjI5NzJiODM3MzNmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDE5OjQ0OjQ0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19kbWFwLmMgYi9mcy9qZnMvamZzX2RtYXAuY1xuaW5kZXggYTg0MWNmMjFkYTdkZTYuLjA2MzU3MjQ1NmFjOWFjIDEwMDY0NFxuLS0tIGEvZnMvamZzL2pmc19kbWFwLmNcbisrKyBiL2ZzL2pmcy9qZnNfZG1hcC5jXG5AQCAtOTgsNiArOTgsOSBAQCBzdGF0aWMgaW50IGJsa3N0b2wyKHM2NCBuYik7XG4gc3RhdGljIGludCBjbnRseih1MzIgdmFsdWUpO1xuIHN0YXRpYyBpbnQgY250dHoodTMyIHdvcmQpO1xuIFxuK3N0YXRpYyBib29sIGRiX3ZhbGlkYXRlX2RtYXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY29uc3Qgc3RydWN0IGRtYXAgKmRwLFxuK1x0XHRcdCAgICAgczY0IGV4cGVjdGVkX3N0YXJ0KTtcbitcbiBzdGF0aWMgaW50IGRiQWxsb2NEbWFwQlUoc3RydWN0IGJtYXAgKiBibXAsIHN0cnVjdCBkbWFwICogZHAsIHM2NCBibGtubyxcbiBcdFx0XHQgaW50IG5ibG9ja3MpO1xuIHN0YXRpYyBpbnQgZGJJbml0RG1hcChzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sIGludCBuYmxvY2tzKTtcbkBAIC00NzYsNiArNDc5LDEyIEBAIGludCBkYkZyZWUoc3RydWN0IGlub2RlICppcCwgczY0IGJsa25vLCBzNjQgbmJsb2NrcylcbiBcdFx0fVxuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuK1x0XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbitcdFx0XHRyZWxlYXNlX21ldGFwYWdlKG1wKTtcbitcdFx0XHRJUkVBRF9VTkxPQ0soaXBibWFwKTtcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0fVxuK1xuIFx0XHQvKiBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBibG9ja3MgdG8gYmUgZnJlZWQgZnJvbVxuIFx0XHQgKiB0aGlzIGRtYXAuXG4gXHRcdCAqL1xuQEAgLTU2OCw2ICs1NzcsMTMgQEAgZGJVcGRhdGVQTWFwKHN0cnVjdCBpbm9kZSAqaXBibWFwLFxuIFx0XHRcdGlmIChtcCA9PSBOVUxMKVxuIFx0XHRcdFx0cmV0dXJuIC1FSU87XG4gXHRcdFx0bWV0YXBhZ2Vfd2FpdF9mb3JfaW8obXApO1xuK1xuK1x0XHRcdGlmICghZGJfdmFsaWRhdGVfZG1hcChpcGJtYXAtXHUwMDNlaV9zYixcbitcdFx0XHRcdFx0ICAgICAgKHN0cnVjdCBkbWFwICopbXAtXHUwMDNlZGF0YSxcbitcdFx0XHRcdFx0ICAgICAgYmxrbm8gXHUwMDI2IH4oczY0KShCUEVSRE1BUCAtIDEpKSkge1xuK1x0XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0XHR9XG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbkBAIC04ODYsNiArOTAyLDExIEBAIGludCBkYkFsbG9jKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBoaW50LCBzNjQgbmJsb2NrcywgczY0ICogcmVzdWx0cylcbiBcbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbitcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVx1MDAzZWlfc2IsIGRwLCBibGtubyBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4rXHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdFx0Z290byByZWFkX3VubG9jaztcbitcdFx0fVxuK1xuIFx0XHQvKiBmaXJzdCwgdHJ5IHRvIHNhdGlzZnkgdGhlIGFsbG9jYXRpb24gcmVxdWVzdCB3aXRoIHRoZVxuIFx0XHQgKiBibG9ja3MgYmVnaW5uaW5nIGF0IHRoZSBoaW50LlxuIFx0XHQgKi9cbkBAIC0xMTE4LDYgKzExMzksMTIgQEAgc3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcylcbiBcbiBcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVx1MDAzZWRhdGE7XG4gXG4rXHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGV4dGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbitcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xuK1x0XHRyZXR1cm4gLUVJTztcbitcdH1cbitcbiBcdC8qIHRyeSB0byBhbGxvY2F0ZSB0aGUgYmxvY2tzIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGVcbiBcdCAqIGN1cnJlbnQgYWxsb2NhdGlvbi5cbiBcdCAqL1xuQEAgLTE5MDIsNyArMTkyOSw4IEBAIGRiQWxsb2NDdGwoc3RydWN0IGJtYXAgKiBibXAsIHM2NCBuYmxvY2tzLCBpbnQgbDJuYiwgczY0IGJsa25vLCBzNjQgKiByZXN1bHRzKVxuIFx0XHRcdHJldHVybiAtRUlPO1xuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuLVx0XHRpZiAoZHAtXHUwMDNldHJlZS5idWRtaW4gXHUwMDNjIDApIHtcbitcdFx0aWYgKGRwLVx1MDAzZXRyZWUuYnVkbWluIFx1MDAzYyAwIHx8XG4rXHRcdCAgICAhZGJfdmFsaWRhdGVfZG1hcChibXAtXHUwMDNlZGJfaXBibWFwLVx1MDAzZWlfc2IsIGRwLCBibGtubyBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4gXHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4gXHRcdFx0cmV0dXJuIC1FSU87XG4gXHRcdH1cbkBAIC0xOTM2LDYgKzE5NjQsMTIgQEAgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sIHM2NCAqIHJlc3VsdHMpXG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbitcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGJtcC1cdTAwM2VkYl9pcGJtYXAtXHUwMDNlaV9zYiwgZHAsIGIgXHUwMDI2IH4oczY0KShCUEVSRE1BUCAtIDEpKSkge1xuK1x0XHRcdHJlbGVhc2VfbWV0YXBhZ2UobXApO1xuK1x0XHRcdHJjID0gLUVJTztcbitcdFx0XHRnb3RvIGJhY2tvdXQ7XG4rXHRcdH1cbitcbiBcdFx0LyogdGhlIGRtYXAgYmV0dGVyIGJlIGFsbCBmcmVlLlxuIFx0XHQgKi9cbiBcdFx0aWYgKGRwLVx1MDAzZXRyZWUuc3RyZWVbUk9PVF0gIT0gTDJCUEVSRE1BUCkge1xuQEAgLTE5OTMsNiArMjAyNywxMSBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cylcbiBcdFx0fVxuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuK1x0XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoYm1wLVx1MDAzZWRiX2lwYm1hcC1cdTAwM2VpX3NiLCBkcCwgYiBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4rXHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbitcbiBcdFx0LyogZnJlZSB0aGUgYmxvY2tzIGlzIHRoaXMgZG1hcC5cbiBcdFx0ICovXG4gXHRcdGlmIChkYkZyZWVEbWFwKGJtcCwgZHAsIGIsIEJQRVJETUFQKSkge1xuQEAgLTIxMzQsNiArMjE3MywxOCBAQCBzdGF0aWMgaW50IGRiQWxsb2NEbWFwKHN0cnVjdCBibWFwICogYm1wLCBzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sXG4gXHRyZXR1cm4gKHJjKTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgZGJfdmFsaWRhdGVfZG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjb25zdCBzdHJ1Y3QgZG1hcCAqZHAsXG4rXHRcdFx0ICAgICBzNjQgZXhwZWN0ZWRfc3RhcnQpXG4re1xuK1x0aWYgKGxlNjRfdG9fY3B1KGRwLVx1MDAzZXN0YXJ0KSAhPSBleHBlY3RlZF9zdGFydCkge1xuK1x0XHRqZnNfZXJyb3Ioc2IsIFwiY29ycnVwdCBkbWFwIHBhZ2U6IHN0YXJ0ICVsbGQgZXhwZWN0ZWQgJWxsZFxcblwiLFxuK1x0XHRcdCAgKGxvbmcgbG9uZylsZTY0X3RvX2NwdShkcC1cdTAwM2VzdGFydCksXG4rXHRcdFx0ICAobG9uZyBsb25nKWV4cGVjdGVkX3N0YXJ0KTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuIFxuIC8qXG4gICogTkFNRTpcdGRiRnJlZURtYXAoKVxuQEAgLTMzMDgsNiArMzM1OSwxMiBAQCBpbnQgZGJBbGxvY0JvdHRvbVVwKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBibGtubywgczY0IG5ibG9ja3MpXG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbitcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVx1MDAzZWlfc2IsIGRwLCBibGtubyBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4rXHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdFx0SVJFQURfVU5MT0NLKGlwYm1hcCk7XG4rXHRcdFx0cmV0dXJuIC1FSU87XG4rXHRcdH1cbitcbiBcdFx0LyogZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIGJlIGFsbG9jYXRlZCBmcm9tXG4gXHRcdCAqIHRoaXMgZG1hcC5cbiBcdFx0ICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo0Ni42ODIwODA0MTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA5NzQ5OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkpGUyBGaWxlc3lzdGVtIFBhdGNoIEFuYWx5c2lzIFx1MDAyNiBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBuZXcgZnVuY3Rpb24gY2FsbGVkIGBkYl92YWxpZGF0ZV9kbWFwYCBpbiBgZnMvamZzL2pmc19kbWFwLmNgLiBGcm9tIHdoYXQgSSBnYXRoZXIsIGl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGFkZGl0aW9uIGZvciB0aGUgSkZTIGZpbGVzeXN0ZW0sIGFpbWVkIGF0IHByZXZlbnRpbmcgY29ycnVwdGlvbiBvciByZWxhdGVkIGJ1Z3MgYnkgdmFsaWRhdGluZyBgZHAtXHUwMDNlc3RhcnRgIGFnYWluc3QgYGV4cGVjdGVkX3N0YXJ0YC4gU2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBpcyBnb29kIOKAkyBtZWFucyB3ZSdyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHByb2JsZW0uIE5vdywgSkZTLi4uIHRoYXQncyBiZWVuIGFyb3VuZCBmb3IgYSB3aGlsZSwgc29saWQsIGJ1dCBpdCdzIGFsd2F5cyB3b3J0aCBhIHRob3JvdWdoIGxvb2suXG5cbkZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBuZXcgdmFsaWRhdGlvbiBpcyBiZWluZyBpbnRyb2R1Y2VkLiBMZXQncyBzZWUuLi4gaXQncyBjYWxsZWQgZnJvbSBzZXZlcmFsIHBsYWNlcyB3aXRoaW4gYGpmc19kbWFwLmNgIGl0c2VsZi4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aG9zZSBjYWxsIHNpdGVzIHNvIEkgY2FuIG1hcCBvdXQgaXRzIGltcGFjdC4gT2theSwgdGhlIGNhbGxzaXRlcyBhcmUgYGRiRnJlZWAsIGBkYlVwZGF0ZVBNYXBgLCBgZGJBbGxvY2AsIGBkYkV4dGVuZGAsIGBkYkFsbG9jQ3RsYCBhbmQgYGRiQWxsb2NCb3R0b21VcGAuIEFsbCBvZiB0aGVtIHNlZW1zIHZlcnkgaW50ZXJlc3RpbmcgYW5kIHdvcnRoIGEgZGVlcCBkaXZlLlxuXG5OZXh0LCBJIG5lZWQgdG8ga25vdyBpZiBKRlMgaXMgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb3IgaWYgaXQgcmVxdWlyZXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmbGFncy4gTGV0J3Mgc2VlLi4uIHRoZSBjb25maWcgb3B0aW9uIGlzIGBKRlNfRlNgLiBSaWdodC4gU28sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBlbmFibGVkIGluIHRoZSBjb25maWd1cmF0aW9uIEknbSB3b3JraW5nIHdpdGguXG5cbkkgc2hvdWxkIHZlcmlmeSB0aGF0IGFsbCB0aG9zZSBmdW5jdGlvbnMgYXJlIHZhbGlkIGFuZCB0aGF0IG5vdGhpbmcgd2VpcmQgaXMgZ29pbmcgb24gdGhlcmUuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBmcy9qZnMvS2NvbmZpZ2AuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIG9yIGFueXRoaW5nIHRoYXQgbWlnaHQgY2hhbmdlIHRoZSB3YXkgdGhpcyB2YWxpZGF0aW9uIGJlaGF2ZXMgYmFzZWQgb24gb3RoZXIgc2V0dGluZ3MuIFRoaXMgaXMgYWxsIGdvb2QgaW5mb3JtYXRpb24gdGhhdCBJIGNhbiB1c2UgaW4gbXkgZnV6emluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYyMiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ0OjUyLjI5MTgzNDI5OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjY4MjY4NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEpGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2pmcy9LY29uZmlnOjI6Y29uZmlnIEpGU19GU1xcbmZzL2pmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkpGUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ0OjUyLjY1ODY2ODA2OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjM4OTY4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqQW5hbHl6aW5nIHRoZSBKRlMgS2NvbmZpZyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgSkZTIGZpbGVzeXN0ZW0gd2l0aGluIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjcmFjayBvcGVuIHRoZSBgZnMvamZzL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgaXQnbGwgbGF5IG91dCBhbGwgdGhlIHJlcXVpcmVtZW50cywgdGhlIG90aGVyIGtlcm5lbCBmZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgSkZTIHRvIGZ1bmN0aW9uLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbC4gSSBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIHNvIEkgY2FuIHN0YXJ0IHRvIHdvcmsgb24gd2hhdGV2ZXIgdGhlIHBhcnRpY3VsYXIgcHJvYmxlbSBpcyB0aGF0IEknbSBjdXJyZW50bHkgd29ya2luZyBvbi4gR2V0dGluZyB0aGUgZGVwZW5kZW5jaWVzIHJpZ2h0IGF0IHRoZSBzdGFydCB3aWxsIHNhdmUgbWUgYSB0b24gb2YgZGVidWdnaW5nIHRpbWUgbGF0ZXIuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo1NS42MjI1NjgyMjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9qZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIEpGU19GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkpGUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4gICA1OlxcdFxcdHNlbGVjdCBOTFNcXG4gICA2OlxcdFxcdHNlbGVjdCBOTFNfVUNTMl9VVElMU1xcbiAgIDc6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAgODpcXHRcXHRzZWxlY3QgTEVHQUNZX0RJUkVDVF9JT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIGlzIGEgcG9ydCBvZiBJQk0ncyBKb3VybmFsZWQgRmlsZXN5c3RlbSAuICBNb3JlIGluZm9ybWF0aW9uIGlzXFxuICAxMTpcXHRcXHQgIGF2YWlsYWJsZSBpbiB0aGUgZmlsZSBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2pmcy5yc3RcXHUwMDNlLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIElmIHlvdSBkbyBub3QgaW50ZW5kIHRvIHVzZSB0aGUgSkZTIGZpbGVzeXN0ZW0sIHNheSBOLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgSkZTX1BPU0lYX0FDTFxcbiAgMTY6XFx0XFx0Ym9vbCBcXFwiSkZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgMTc6XFx0XFx0ZGVwZW5kcyBvbiBKRlNfRlNcXG4gIDE4OlxcdFxcdHNlbGVjdCBGU19QT1NJWF9BQ0xcXG4gIDE5OlxcdFxcdGhlbHBcXG4gIDIwOlxcdFxcdCAgUG9zaXggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgcGVybWlzc2lvbnMgZm9yIHVzZXJzIGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo1NS42MjI2NDk5NDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA1NjI0MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gZmlsZSBzeXN0ZW1zIGFuZCBrZXJuZWwgaW50ZXJuYWxzOlxuXG4qKkRpdmluZyBpbnRvIEpGUydzIERpcmVjdCBNYXAgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgaW5pdGlhbCBjbHVlIGlzIGBKRlNfRlNgLCB3aGljaCB0ZWxscyBtZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciB0aGUgSkZTIGZpbGVzeXN0ZW0uIFRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBjb25zaWRlcmFibHkuIE5vdywgdGhlIHJlYWwgbWVhdCBvZiB0aGlzIGxpa2VseSBsaWVzIGluIHRoZSBkaXJlY3QgbWFwIGltcGxlbWVudGF0aW9uLCBzbyBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIGRlbHZlIGludG8gYGZzL2pmcy9qZnNfZG1hcC5jYC4gVGhhdCdzIHdoZXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG1hbmFnaW5nIHRoZSBkaXJlY3QgYWxsb2NhdGlvbiBtYXAgb2YgSkZTIGFyZSBsaWtlbHkgZGVmaW5lZC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGJsb2NrcyBhcmUgbWFwcGVkIGRpcmVjdGx5LCBhbnkgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2Ugb3IgZnJhZ21lbnRhdGlvbiB3aXRoaW4gSkZTLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODU3LCJPdXRwdXRUb2tlbnMiOjY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo1OS4wMjgyNzY4NzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg1NDYyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxzdGF0aWMpLiogKGRiRnJlZXxkYlVwZGF0ZVBNYXB8ZGJBbGxvY3xkYkV4dGVuZHxkYkFsbG9jQ3RsfGRiQWxsb2NCb3R0b21VcClcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qZnMvamZzX2RtYXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qZnMvamZzX2RtYXAuYz04Mz1zdGF0aWMgaW50IGRiQWxsb2NBRyhzdHJ1Y3QgYm1hcCAqIGJtcCwgaW50IGFnbm8sIHM2NCBuYmxvY2tzLCBpbnQgbDJuYixcXG5mcy9qZnMvamZzX2RtYXAuYy04NC1cXHRcXHQgICAgIHM2NCAqIHJlc3VsdHMpO1xcbmZzL2pmcy9qZnNfZG1hcC5jOjg1OnN0YXRpYyBpbnQgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sXFxuZnMvamZzL2pmc19kbWFwLmMtODYtXFx0XFx0ICAgICAgczY0ICogcmVzdWx0cyk7XFxuZnMvamZzL2pmc19kbWFwLmM6ODc6c3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2Nrcyk7XFxuZnMvamZzL2pmc19kbWFwLmMtODgtc3RhdGljIGludCBkYkZpbmRCaXRzKHUzMiB3b3JkLCBpbnQgbDJuYik7XFxuLS1cXG5mcy9qZnMvamZzX2RtYXAuYz0zNjY9aW50IGRiU3luYyhzdHJ1Y3QgaW5vZGUgKmlwYm1hcClcXG4tLVxcbmZzL2pmcy9qZnNfZG1hcC5jLTQzMy0gKi9cXG5mcy9qZnMvamZzX2RtYXAuYzo0MzQ6aW50IGRiRnJlZShzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxcbmZzL2pmcy9qZnNfZG1hcC5jLTQzNS17XFxuLS1cXG5mcy9qZnMvamZzX2RtYXAuYz03MjA9aW50IGRiTmV4dEFHKHN0cnVjdCBpbm9kZSAqaXBibWFwKVxcbi0tXFxuZnMvamZzL2pmc19kbWFwLmMtODE2LSAqL1xcbmZzL2pmcy9qZnNfZG1hcC5jOjgxNzppbnQgZGJBbGxvYyhzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgaGludCwgczY0IG5ibG9ja3MsIHM2NCAqIHJlc3VsdHMpXFxuZnMvamZzL2pmc19kbWFwLmMtODE4LXtcXG4tLVxcbmZzL2pmcy9qZnNfZG1hcC5jPTEwMzI9ZGJSZUFsbG9jKHN0cnVjdCBpbm9kZSAqaXAsXFxuLS1cXG5mcy9qZnMvamZzX2RtYXAuYy0xMDc5LSAqL1xcbmZzL2pmcy9qZnNfZG1hcC5jOjEwODA6c3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcylcXG5mcy9qZnMvamZzX2RtYXAuYy0xMDgxLXtcXG4tLVxcbmZzL2pmcy9qZnNfZG1hcC5jPTMyODE9c3RhdGljIGludCBibGtzdG9sMihzNjQgbmIpXFxuLS1cXG5mcy9qZnMvamZzX2RtYXAuYy0zMzI4LSAqL1xcbmZzL2pmcy9qZnNfZG1hcC5jOjMzMjk6aW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxcbmZzL2pmcy9qZnNfZG1hcC5jLTMzMzAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo1OS4wOTY4Mjg4MTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzcwOTg0ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIGEgTWlzc2luZyBGdW5jdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIE15IHJlZ2V4IGRpZG4ndCBmbGFnIGBkYlVwZGF0ZVBNYXBgLiBUaGF0J3MuLi4gdW51c3VhbC4gSSB3YXMgY2VydGFpbiBpdCBzaG91bGQgaGF2ZSBtYXRjaGVkLiBPa2F5LCBubyBwYW5pYy4gTGV0J3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gSXQncyB0aW1lIHRvIGFjdHVhbGx5IHNlYXJjaCBmb3IgdGhhdCBmdW5jdGlvbiBkaXJlY3RseS4gSSdsbCBuZWVkIHRvIGxvY2F0ZSBldmVyeSBpbnN0YW5jZSBvZiBpdC4gVGltZSB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgyMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ1OjAxLjg2NzgxNjM0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1OTkxMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRiVXBkYXRlUE1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qZnMvamZzX2RtYXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qZnMvamZzX2RtYXAuYz00MzQ9aW50IGRiRnJlZShzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxcbi0tXFxuZnMvamZzL2pmc19kbWFwLmMtNTEyLS8qXFxuZnMvamZzL2pmc19kbWFwLmM6NTEzOiAqIE5BTUU6XFx0ZGJVcGRhdGVQTWFwKClcXG5mcy9qZnMvamZzX2RtYXAuYy01MTQtICpcXG4tLVxcbmZzL2pmcy9qZnNfZG1hcC5jPTUzMz1pbnRcXG5mcy9qZnMvamZzX2RtYXAuYzo1MzQ6ZGJVcGRhdGVQTWFwKHN0cnVjdCBpbm9kZSAqaXBibWFwLFxcbmZzL2pmcy9qZnNfZG1hcC5jLTUzNS1cXHQgICAgIGludCBmcmVlLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzdHJ1Y3QgdGJsb2NrICogdGJsaylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDU6MDIuMDUzODE2MDVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY2NTgwODcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSkZTIERNYXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFubHkgZGVmaW5pbmcgYSBjaGFuZ2UgaW52b2x2aW5nIGRtYXAgdmFsaWRhdGlvbiBpbiB0aGUgSkZTIGZpbGVzeXN0ZW0sIGdvb2QuIFRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgYWZmZWN0ZWQsIGFzIHRoZXkgd2lsbCBiZSB0aGUgZm9jdXMgb2YgdGhlIGZ1enppbmcgZWZmb3J0cy4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggaGlnaGxpZ2h0cyBzZXZlcmFsIGZ1bmN0aW9ucywgYW5kIEkndmUgc3RhcnRlZCBieSBjcmVhdGluZyBhIGxpc3Qgb2YgdGhlbTogYGRiRnJlZWAsIGBkYlVwZGF0ZVBNYXBgLCBgZGJBbGxvY2AsIGBkYkV4dGVuZGAsIGBkYkFsbG9jQ3RsYCwgYW5kIGBkYkFsbG9jQm90dG9tVXBgLlxuXG5Ob3csIEknbSBjaGVja2luZyB3aGljaCBhcmUgbm9uLXN0YXRpYyBhcyBJJ2xsIHdhbnQgdG8gZm9jdXMgb24gZnVuY3Rpb25zIHRoYXQgYXJlIGdlbmVyYWxseSBhY2Nlc3NpYmxlLiBBZnRlciByZXZpZXdpbmcsIEknbSBmaW5kaW5nOiBgZGJGcmVlYCwgYGRiVXBkYXRlUE1hcGAsIGBkYkFsbG9jYCwgYW5kIGBkYkFsbG9jQm90dG9tVXBgIGFyZSBub24tc3RhdGljLiBgZGJFeHRlbmRgIGFuZCBgZGJBbGxvY0N0bGAgYXJlIHN0YXRpYywgc28gSSB3aWxsIGxpa2VseSBleGNsdWRlIHRoZXNlIGZyb20gcHJpbWFyeSBmdXp6aW5nIGVmZm9ydHMsIGJ1dCBtYXkgcmV2aXNpdCB0aGVtIGxhdGVyIGlmIG5lZWRlZC4gSSdsbCBub3RlIHRoYXQgYGRiRXh0ZW5kYCBpcyBjYWxsZWQgYnkgYGRiUmVBbGxvY2AgYW5kIGBkYkFsbG9jQ3RsYCBpcyBjYWxsZWQgYnkgYGRiQWxsb2NBR2AgYW5kIGBkYkFsbG9jQW55Q29udHJvbGAgYXMgdGhhdCBjb3VsZCBzdWdnZXN0IGFuIGludGVyZXN0aW5nIGZ1enppbmcgdGFyZ2V0LlxuXG5JJ20gbm93IGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgaW5pdGlhbCBsaXN0IHdpdGggdGhlIHBhdGNoIGl0c2VsZi4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlIGBmcy9qZnMvamZzX2RtYXAuY2AgZmlsZSwgY29uZmlybWluZyBpdCBmb2N1c2VzIG9uIGRtYXAgdmFsaWRhdGlvbi4gVGhlIHBhdGNoIGFkZHMgYGRiX3ZhbGlkYXRlX2RtYXBgLCBhbmQgbW9kaWZpZXMgdGhlIGZ1bmN0aW9ucyBJJ3ZlIGlkZW50aWZpZWQgcHJldmlvdXNseS4gQmFzZWQgb24gdGhlIGZpbGUgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgYWx0ZXJlZCwgbXkgaW5pdGlhbCByZWFkIGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgLSB0aGlzIGlzIHJlbGF0ZWQgdG8gcHJldmVudGluZyBjb3JydXB0aW9uIGR1cmluZyBibG9jayBhbGxvY2F0aW9uL2ZyZWVpbmcgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGF0IHRoZSBmaWxlc3lzdGVtIGxldmVsLCBhbmQgc3VjaCBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGZ1enphYmxlLlxuXG5HaXZlbiB0aGUgc2NvcGUgb2YgdGhlIHBhdGNoIGFuZCBteSB1bmRlcnN0YW5kaW5nLCBJJ2xsIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uOiBgZGJGcmVlYCwgYGRiVXBkYXRlUE1hcGAsIGBkYkFsbG9jYCwgYW5kIGBkYkFsbG9jQm90dG9tVXBgLCB0aGV5IGFyZSBhbGwgbm9uLXN0YXRpYy4gQmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcyBhbmQgcmVhc29uaW5nIHByb3ZpZGVkLCBJJ20gdGhpbmtpbmcgdGhlIEpGUyBmaWxlc3lzdGVtIGNvbmZpZywgYEpGU19GU2AsIHdpbGwgYmUgY3JpdGljYWwgdG8gZW5hYmxlIGFuZCB0ZXN0LiBTbywgSSB3aWxsIHNldCB0aG9zZSB2YWx1ZXMgaW4gdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb25zIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5MSwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDU6MDkuNzE5NjI4MjYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM1Mjk3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkpGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRiRnJlZVwiLFxuICAgIFwiZGJVcGRhdGVQTWFwXCIsXG4gICAgXCJkYkFsbG9jXCIsXG4gICAgXCJkYkFsbG9jQm90dG9tVXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGRtYXAgcGFnZXMgaW4gSkZTIHRvIHByZXZlbnQgY29ycnVwdGlvbiB3aGVuIGFsbG9jYXRpbmcgb3IgZnJlZWluZyBibG9ja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSkZTIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJKRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYkZyZWVcIixcbiAgICBcImRiVXBkYXRlUE1hcFwiLFxuICAgIFwiZGJBbGxvY1wiLFxuICAgIFwiZGJBbGxvY0JvdHRvbVVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 19:27:06 +0000 UTC FinishedAt: 2026-07-27 19:45:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "JFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "JFS_FS" ], "series_id": "d0a80ce1-2707-45d2-b7d6-154f28e67433" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "dbFree", "dbUpdatePMap", "dbAlloc", "dbAllocBottomUp" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0pGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RiRnJlZSYjMzQ7LAogICAgJiMzNDtkYlVwZGF0ZVBNYXAmIzM0OywKICAgICYjMzQ7ZGJBbGxvYyYjMzQ7LAogICAgJiMzNDtkYkFsbG9jQm90dG9tVXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MGFiY2Y5ZjdhOTUwODQ4MjQyNmFiMDA2ZmNiMjk3MmI4MzczM2ZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTk6NDQ6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19kbWFwLmMgYi9mcy9qZnMvamZzX2RtYXAuY1xuaW5kZXggYTg0MWNmMjFkYTdkZTYuLjA2MzU3MjQ1NmFjOWFjIDEwMDY0NFxuLS0tIGEvZnMvamZzL2pmc19kbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2pmcy9qZnNfZG1hcC5jXG5AQCAtOTgsNiAmIzQzOzk4LDkgQEAgc3RhdGljIGludCBibGtzdG9sMihzNjQgbmIpO1xuIHN0YXRpYyBpbnQgY250bHoodTMyIHZhbHVlKTtcbiBzdGF0aWMgaW50IGNudHR6KHUzMiB3b3JkKTtcbiBcbiYjNDM7c3RhdGljIGJvb2wgZGJfdmFsaWRhdGVfZG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjb25zdCBzdHJ1Y3QgZG1hcCAqZHAsXG4mIzQzO1x0XHRcdCAgICAgczY0IGV4cGVjdGVkX3N0YXJ0KTtcbiYjNDM7XG4gc3RhdGljIGludCBkYkFsbG9jRG1hcEJVKHN0cnVjdCBibWFwICogYm1wLCBzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sXG4gXHRcdFx0IGludCBuYmxvY2tzKTtcbiBzdGF0aWMgaW50IGRiSW5pdERtYXAoc3RydWN0IGRtYXAgKiBkcCwgczY0IGJsa25vLCBpbnQgbmJsb2Nrcyk7XG5AQCAtNDc2LDYgJiM0Mzs0NzksMTIgQEAgaW50IGRiRnJlZShzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxuIFx0XHR9XG4gXHRcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVx1MDAzZWRhdGE7XG4gXG4mIzQzO1x0XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4mIzQzO1x0XHRcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdC8qIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGJsb2NrcyB0byBiZSBmcmVlZCBmcm9tXG4gXHRcdCAqIHRoaXMgZG1hcC5cbiBcdFx0ICovXG5AQCAtNTY4LDYgJiM0Mzs1NzcsMTMgQEAgZGJVcGRhdGVQTWFwKHN0cnVjdCBpbm9kZSAqaXBibWFwLFxuIFx0XHRcdGlmIChtcCA9PSBOVUxMKVxuIFx0XHRcdFx0cmV0dXJuIC1FSU87XG4gXHRcdFx0bWV0YXBhZ2Vfd2FpdF9mb3JfaW8obXApO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwYm1hcC1cdTAwM2VpX3NiLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgKHN0cnVjdCBkbWFwICopbXAtXHUwMDNlZGF0YSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0XHRyZWxlYXNlX21ldGFwYWdlKG1wKTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4gXHRcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVx1MDAzZWRhdGE7XG4gXG5AQCAtODg2LDYgJiM0Mzs5MDIsMTEgQEAgaW50IGRiQWxsb2Moc3RydWN0IGlub2RlICppcCwgczY0IGhpbnQsIHM2NCBuYmxvY2tzLCBzNjQgKiByZXN1bHRzKVxuIFxuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuJiM0MztcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVx1MDAzZWlfc2IsIGRwLCBibGtubyBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4mIzQzO1x0XHRcdHJlbGVhc2VfbWV0YXBhZ2UobXApO1xuJiM0MztcdFx0XHRnb3RvIHJlYWRfdW5sb2NrO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0LyogZmlyc3QsIHRyeSB0byBzYXRpc2Z5IHRoZSBhbGxvY2F0aW9uIHJlcXVlc3Qgd2l0aCB0aGVcbiBcdFx0ICogYmxvY2tzIGJlZ2lubmluZyBhdCB0aGUgaGludC5cbiBcdFx0ICovXG5AQCAtMTExOCw2ICYjNDM7MTEzOSwxMiBAQCBzdGF0aWMgaW50IGRiRXh0ZW5kKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBibGtubywgczY0IG5ibG9ja3MsIHM2NCBhZGRuYmxvY2tzKVxuIFxuIFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbiYjNDM7XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGV4dGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdHJlbGVhc2VfbWV0YXBhZ2UobXApO1xuJiM0MztcdFx0SVJFQURfVU5MT0NLKGlwYm1hcCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogdHJ5IHRvIGFsbG9jYXRlIHRoZSBibG9ja3MgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZVxuIFx0ICogY3VycmVudCBhbGxvY2F0aW9uLlxuIFx0ICovXG5AQCAtMTkwMiw3ICYjNDM7MTkyOSw4IEBAIGRiQWxsb2NDdGwoc3RydWN0IGJtYXAgKiBibXAsIHM2NCBuYmxvY2tzLCBpbnQgbDJuYiwgczY0IGJsa25vLCBzNjQgKiByZXN1bHRzKVxuIFx0XHRcdHJldHVybiAtRUlPO1xuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuLVx0XHRpZiAoZHAtXHUwMDNldHJlZS5idWRtaW4gXHUwMDNjIDApIHtcbiYjNDM7XHRcdGlmIChkcC1cdTAwM2V0cmVlLmJ1ZG1pbiBcdTAwM2MgMCB8fFxuJiM0MztcdFx0ICAgICFkYl92YWxpZGF0ZV9kbWFwKGJtcC1cdTAwM2VkYl9pcGJtYXAtXHUwMDNlaV9zYiwgZHAsIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiBcdFx0XHRyZWxlYXNlX21ldGFwYWdlKG1wKTtcbiBcdFx0XHRyZXR1cm4gLUVJTztcbiBcdFx0fVxuQEAgLTE5MzYsNiAmIzQzOzE5NjQsMTIgQEAgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sIHM2NCAqIHJlc3VsdHMpXG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbiYjNDM7XHRcdGlmICghZGJfdmFsaWRhdGVfZG1hcChibXAtXHUwMDNlZGJfaXBibWFwLVx1MDAzZWlfc2IsIGRwLCBiIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4mIzQzO1x0XHRcdHJjID0gLUVJTztcbiYjNDM7XHRcdFx0Z290byBiYWNrb3V0O1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0LyogdGhlIGRtYXAgYmV0dGVyIGJlIGFsbCBmcmVlLlxuIFx0XHQgKi9cbiBcdFx0aWYgKGRwLVx1MDAzZXRyZWUuc3RyZWVbUk9PVF0gIT0gTDJCUEVSRE1BUCkge1xuQEAgLTE5OTMsNiAmIzQzOzIwMjcsMTEgQEAgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sIHM2NCAqIHJlc3VsdHMpXG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbiYjNDM7XHRcdGlmICghZGJfdmFsaWRhdGVfZG1hcChibXAtXHUwMDNlZGJfaXBibWFwLVx1MDAzZWlfc2IsIGRwLCBiIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0LyogZnJlZSB0aGUgYmxvY2tzIGlzIHRoaXMgZG1hcC5cbiBcdFx0ICovXG4gXHRcdGlmIChkYkZyZWVEbWFwKGJtcCwgZHAsIGIsIEJQRVJETUFQKSkge1xuQEAgLTIxMzQsNiAmIzQzOzIxNzMsMTggQEAgc3RhdGljIGludCBkYkFsbG9jRG1hcChzdHJ1Y3QgYm1hcCAqIGJtcCwgc3RydWN0IGRtYXAgKiBkcCwgczY0IGJsa25vLFxuIFx0cmV0dXJuIChyYyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBkYl92YWxpZGF0ZV9kbWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNvbnN0IHN0cnVjdCBkbWFwICpkcCxcbiYjNDM7XHRcdFx0ICAgICBzNjQgZXhwZWN0ZWRfc3RhcnQpXG4mIzQzO3tcbiYjNDM7XHRpZiAobGU2NF90b19jcHUoZHAtXHUwMDNlc3RhcnQpICE9IGV4cGVjdGVkX3N0YXJ0KSB7XG4mIzQzO1x0XHRqZnNfZXJyb3Ioc2IsIFwmIzM0O2NvcnJ1cHQgZG1hcCBwYWdlOiBzdGFydCAlbGxkIGV4cGVjdGVkICVsbGRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgKGxvbmcgbG9uZylsZTY0X3RvX2NwdShkcC1cdTAwM2VzdGFydCksXG4mIzQzO1x0XHRcdCAgKGxvbmcgbG9uZylleHBlY3RlZF9zdGFydCk7XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuIFxuIC8qXG4gICogTkFNRTpcdGRiRnJlZURtYXAoKVxuQEAgLTMzMDgsNiAmIzQzOzMzNTksMTIgQEAgaW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxuIFx0XHR9XG4gXHRcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVx1MDAzZWRhdGE7XG4gXG4mIzQzO1x0XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbiYjNDM7XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4mIzQzO1x0XHRcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdC8qIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGJsb2NrcyB0byBiZSBhbGxvY2F0ZWQgZnJvbVxuIFx0XHQgKiB0aGlzIGRtYXAuXG4gXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtKRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYkZyZWUmIzM0OywKICAgICYjMzQ7ZGJVcGRhdGVQTWFwJiMzNDssCiAgICAmIzM0O2RiQWxsb2MmIzM0OywKICAgICYjMzQ7ZGJBbGxvY0JvdHRvbVVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgZG1hcCBwYWdlcyBpbiBKRlMgdG8gcHJldmVudCBjb3JydXB0aW9uIHdoZW4gYWxsb2NhdGluZyBvciBmcmVlaW5nIGJsb2Nrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBKRlMgZmlsZXN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjBhYmNmOWY3YTk1MDg0ODI0MjZhYjAwNmZjYjI5NzJiODM3MzNmZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDE5OjQ0OjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19kbWFwLmMgYi9mcy9qZnMvamZzX2RtYXAuYwppbmRleCBhODQxY2YyMWRhN2RlNi4uMDYzNTcyNDU2YWM5YWMgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9qZnNfZG1hcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2pmcy9qZnNfZG1hcC5jCkBAIC05OCw2ICYjNDM7OTgsOSBAQCBzdGF0aWMgaW50IGJsa3N0b2wyKHM2NCBuYik7CiBzdGF0aWMgaW50IGNudGx6KHUzMiB2YWx1ZSk7CiBzdGF0aWMgaW50IGNudHR6KHUzMiB3b3JkKTsKIAomIzQzO3N0YXRpYyBib29sIGRiX3ZhbGlkYXRlX2RtYXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY29uc3Qgc3RydWN0IGRtYXAgKmRwLAomIzQzOwkJCSAgICAgczY0IGV4cGVjdGVkX3N0YXJ0KTsKJiM0MzsKIHN0YXRpYyBpbnQgZGJBbGxvY0RtYXBCVShzdHJ1Y3QgYm1hcCAqIGJtcCwgc3RydWN0IGRtYXAgKiBkcCwgczY0IGJsa25vLAogCQkJIGludCBuYmxvY2tzKTsKIHN0YXRpYyBpbnQgZGJJbml0RG1hcChzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sIGludCBuYmxvY2tzKTsKQEAgLTQ3Niw2ICYjNDM7NDc5LDEyIEBAIGludCBkYkZyZWUoc3RydWN0IGlub2RlICppcCwgczY0IGJsa25vLCBzNjQgbmJsb2NrcykKIAkJfQogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIAomIzQzOwkJaWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLSZndDtpX3NiLCBkcCwgYmxrbm8gJmFtcDsgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7CiYjNDM7CQkJcmVsZWFzZV9tZXRhcGFnZShtcCk7CiYjNDM7CQkJSVJFQURfVU5MT0NLKGlwYm1hcCk7CiYjNDM7CQkJcmV0dXJuIC1FSU87CiYjNDM7CQl9CiYjNDM7CiAJCS8qIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGJsb2NrcyB0byBiZSBmcmVlZCBmcm9tCiAJCSAqIHRoaXMgZG1hcC4KIAkJICovCkBAIC01NjgsNiAmIzQzOzU3NywxMyBAQCBkYlVwZGF0ZVBNYXAoc3RydWN0IGlub2RlICppcGJtYXAsCiAJCQlpZiAobXAgPT0gTlVMTCkKIAkJCQlyZXR1cm4gLUVJTzsKIAkJCW1ldGFwYWdlX3dhaXRfZm9yX2lvKG1wKTsKJiM0MzsKJiM0MzsJCQlpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXBibWFwLSZndDtpX3NiLAomIzQzOwkJCQkJICAgICAgKHN0cnVjdCBkbWFwICopbXAtJmd0O2RhdGEsCiYjNDM7CQkJCQkgICAgICBibGtubyAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQkJcmVsZWFzZV9tZXRhcGFnZShtcCk7CiYjNDM7CQkJCXJldHVybiAtRUlPOwomIzQzOwkJCX0KIAkJfQogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIApAQCAtODg2LDYgJiM0Mzs5MDIsMTEgQEAgaW50IGRiQWxsb2Moc3RydWN0IGlub2RlICppcCwgczY0IGhpbnQsIHM2NCBuYmxvY2tzLCBzNjQgKiByZXN1bHRzKQogCiAJCWRwID0gKHN0cnVjdCBkbWFwICopIG1wLSZndDtkYXRhOwogCiYjNDM7CQlpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtJmd0O2lfc2IsIGRwLCBibGtubyAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQlyZWxlYXNlX21ldGFwYWdlKG1wKTsKJiM0MzsJCQlnb3RvIHJlYWRfdW5sb2NrOwomIzQzOwkJfQomIzQzOwogCQkvKiBmaXJzdCwgdHJ5IHRvIHNhdGlzZnkgdGhlIGFsbG9jYXRpb24gcmVxdWVzdCB3aXRoIHRoZQogCQkgKiBibG9ja3MgYmVnaW5uaW5nIGF0IHRoZSBoaW50LgogCQkgKi8KQEAgLTExMTgsNiAmIzQzOzExMzksMTIgQEAgc3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcykKIAogCWRwID0gKHN0cnVjdCBkbWFwICopIG1wLSZndDtkYXRhOwogCiYjNDM7CWlmICghZGJfdmFsaWRhdGVfZG1hcChpcC0mZ3Q7aV9zYiwgZHAsIGV4dGJsa25vICZhbXA7IH4oczY0KShCUEVSRE1BUCAtIDEpKSkgewomIzQzOwkJcmVsZWFzZV9tZXRhcGFnZShtcCk7CiYjNDM7CQlJUkVBRF9VTkxPQ0soaXBibWFwKTsKJiM0MzsJCXJldHVybiAtRUlPOwomIzQzOwl9CiYjNDM7CiAJLyogdHJ5IHRvIGFsbG9jYXRlIHRoZSBibG9ja3MgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZQogCSAqIGN1cnJlbnQgYWxsb2NhdGlvbi4KIAkgKi8KQEAgLTE5MDIsNyAmIzQzOzE5MjksOCBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cykKIAkJCXJldHVybiAtRUlPOwogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIAotCQlpZiAoZHAtJmd0O3RyZWUuYnVkbWluICZsdDsgMCkgewomIzQzOwkJaWYgKGRwLSZndDt0cmVlLmJ1ZG1pbiAmbHQ7IDAgfHwKJiM0MzsJCSAgICAhZGJfdmFsaWRhdGVfZG1hcChibXAtJmd0O2RiX2lwYm1hcC0mZ3Q7aV9zYiwgZHAsIGJsa25vICZhbXA7IH4oczY0KShCUEVSRE1BUCAtIDEpKSkgewogCQkJcmVsZWFzZV9tZXRhcGFnZShtcCk7CiAJCQlyZXR1cm4gLUVJTzsKIAkJfQpAQCAtMTkzNiw2ICYjNDM7MTk2NCwxMiBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cykKIAkJfQogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIAomIzQzOwkJaWYgKCFkYl92YWxpZGF0ZV9kbWFwKGJtcC0mZ3Q7ZGJfaXBibWFwLSZndDtpX3NiLCBkcCwgYiAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQlyZWxlYXNlX21ldGFwYWdlKG1wKTsKJiM0MzsJCQlyYyA9IC1FSU87CiYjNDM7CQkJZ290byBiYWNrb3V0OwomIzQzOwkJfQomIzQzOwogCQkvKiB0aGUgZG1hcCBiZXR0ZXIgYmUgYWxsIGZyZWUuCiAJCSAqLwogCQlpZiAoZHAtJmd0O3RyZWUuc3RyZWVbUk9PVF0gIT0gTDJCUEVSRE1BUCkgewpAQCAtMTk5Myw2ICYjNDM7MjAyNywxMSBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cykKIAkJfQogCQlkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC0mZ3Q7ZGF0YTsKIAomIzQzOwkJaWYgKCFkYl92YWxpZGF0ZV9kbWFwKGJtcC0mZ3Q7ZGJfaXBibWFwLSZndDtpX3NiLCBkcCwgYiAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQlyZWxlYXNlX21ldGFwYWdlKG1wKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKIAkJLyogZnJlZSB0aGUgYmxvY2tzIGlzIHRoaXMgZG1hcC4KIAkJICovCiAJCWlmIChkYkZyZWVEbWFwKGJtcCwgZHAsIGIsIEJQRVJETUFQKSkgewpAQCAtMjEzNCw2ICYjNDM7MjE3MywxOCBAQCBzdGF0aWMgaW50IGRiQWxsb2NEbWFwKHN0cnVjdCBibWFwICogYm1wLCBzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sCiAJcmV0dXJuIChyYyk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBkYl92YWxpZGF0ZV9kbWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNvbnN0IHN0cnVjdCBkbWFwICpkcCwKJiM0MzsJCQkgICAgIHM2NCBleHBlY3RlZF9zdGFydCkKJiM0Mzt7CiYjNDM7CWlmIChsZTY0X3RvX2NwdShkcC0mZ3Q7c3RhcnQpICE9IGV4cGVjdGVkX3N0YXJ0KSB7CiYjNDM7CQlqZnNfZXJyb3Ioc2IsICYjMzQ7Y29ycnVwdCBkbWFwIHBhZ2U6IHN0YXJ0ICVsbGQgZXhwZWN0ZWQgJWxsZFxuJiMzNDssCiYjNDM7CQkJICAobG9uZyBsb25nKWxlNjRfdG9fY3B1KGRwLSZndDtzdGFydCksCiYjNDM7CQkJICAobG9uZyBsb25nKWV4cGVjdGVkX3N0YXJ0KTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiAKIC8qCiAgKiBOQU1FOglkYkZyZWVEbWFwKCkKQEAgLTMzMDgsNiAmIzQzOzMzNTksMTIgQEAgaW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKQogCQl9CiAJCWRwID0gKHN0cnVjdCBkbWFwICopIG1wLSZndDtkYXRhOwogCiYjNDM7CQlpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtJmd0O2lfc2IsIGRwLCBibGtubyAmYW1wOyB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHsKJiM0MzsJCQlyZWxlYXNlX21ldGFwYWdlKG1wKTsKJiM0MzsJCQlJUkVBRF9VTkxPQ0soaXBibWFwKTsKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCX0KJiM0MzsKIAkJLyogZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIGJlIGFsbG9jYXRlZCBmcm9tCiAJCSAqIHRoaXMgZG1hcC4KIAkJICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSkZTIEZpbGVzeXN0ZW0gUGF0Y2ggQW5hbHlzaXMgJmFtcDsgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBuZXcgZnVuY3Rpb24gY2FsbGVkIGBkYl92YWxpZGF0ZV9kbWFwYCBpbiBgZnMvamZzL2pmc19kbWFwLmNgLiBGcm9tIHdoYXQgSSBnYXRoZXIsIGl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhZGRpdGlvbiBmb3IgdGhlIEpGUyBmaWxlc3lzdGVtLCBhaW1lZCBhdCBwcmV2ZW50aW5nIGNvcnJ1cHRpb24gb3IgcmVsYXRlZCBidWdzIGJ5IHZhbGlkYXRpbmcgYGRwLSZndDtzdGFydGAgYWdhaW5zdCBgZXhwZWN0ZWRfc3RhcnRgLiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGdvb2Qg4oCTIG1lYW5zIHdlJiMzOTtyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHByb2JsZW0uIE5vdywgSkZTLi4uIHRoYXQmIzM5O3MgYmVlbiBhcm91bmQgZm9yIGEgd2hpbGUsIHNvbGlkLCBidXQgaXQmIzM5O3MgYWx3YXlzIHdvcnRoIGEgdGhvcm91Z2ggbG9vay4KCkZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBuZXcgdmFsaWRhdGlvbiBpcyBiZWluZyBpbnRyb2R1Y2VkLiBMZXQmIzM5O3Mgc2VlLi4uIGl0JiMzOTtzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzIHdpdGhpbiBgamZzX2RtYXAuY2AgaXRzZWxmLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRob3NlIGNhbGwgc2l0ZXMgc28gSSBjYW4gbWFwIG91dCBpdHMgaW1wYWN0LiBPa2F5LCB0aGUgY2FsbHNpdGVzIGFyZSBgZGJGcmVlYCwgYGRiVXBkYXRlUE1hcGAsIGBkYkFsbG9jYCwgYGRiRXh0ZW5kYCwgYGRiQWxsb2NDdGxgIGFuZCBgZGJBbGxvY0JvdHRvbVVwYC4gQWxsIG9mIHRoZW0gc2VlbXMgdmVyeSBpbnRlcmVzdGluZyBhbmQgd29ydGggYSBkZWVwIGRpdmUuCgpOZXh0LCBJIG5lZWQgdG8ga25vdyBpZiBKRlMgaXMgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb3IgaWYgaXQgcmVxdWlyZXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmbGFncy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29uZmlnIG9wdGlvbiBpcyBgSkZTX0ZTYC4gUmlnaHQuIFNvLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIHdvcmtpbmcgd2l0aC4KCkkgc2hvdWxkIHZlcmlmeSB0aGF0IGFsbCB0aG9zZSBmdW5jdGlvbnMgYXJlIHZhbGlkIGFuZCB0aGF0IG5vdGhpbmcgd2VpcmQgaXMgZ29pbmcgb24gdGhlcmUuCgpGaW5hbGx5LCBqdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgYGZzL2pmcy9LY29uZmlnYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIG9yIGFueXRoaW5nIHRoYXQgbWlnaHQgY2hhbmdlIHRoZSB3YXkgdGhpcyB2YWxpZGF0aW9uIGJlaGF2ZXMgYmFzZWQgb24gb3RoZXIgc2V0dGluZ3MuIFRoaXMgaXMgYWxsIGdvb2QgaW5mb3JtYXRpb24gdGhhdCBJIGNhbiB1c2UgaW4gbXkgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSkZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvamZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvamZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2pmcy9LY29uZmlnOjI6Y29uZmlnIEpGU19GU1xuZnMvamZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0pGUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQW5hbHl6aW5nIHRoZSBKRlMgS2NvbmZpZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIEpGUyBmaWxlc3lzdGVtIHdpdGhpbiB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY3JhY2sgb3BlbiB0aGUgYGZzL2pmcy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCYjMzk7bGwgbGF5IG91dCBhbGwgdGhlIHJlcXVpcmVtZW50cywgdGhlIG90aGVyIGtlcm5lbCBmZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgSkZTIHRvIGZ1bmN0aW9uLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbC4gSSBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIHNvIEkgY2FuIHN0YXJ0IHRvIHdvcmsgb24gd2hhdGV2ZXIgdGhlIHBhcnRpY3VsYXIgcHJvYmxlbSBpcyB0aGF0IEkmIzM5O20gY3VycmVudGx5IHdvcmtpbmcgb24uIEdldHRpbmcgdGhlIGRlcGVuZGVuY2llcyByaWdodCBhdCB0aGUgc3RhcnQgd2lsbCBzYXZlIG1lIGEgdG9uIG9mIGRlYnVnZ2luZyB0aW1lIGxhdGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9qZnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBKRlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0pGUyBmaWxlc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNTpcdFx0c2VsZWN0IE5MU1xuICAgNjpcdFx0c2VsZWN0IE5MU19VQ1MyX1VUSUxTXG4gICA3Olx0XHRzZWxlY3QgQ1JDMzJcbiAgIDg6XHRcdHNlbGVjdCBMRUdBQ1lfRElSRUNUX0lPXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgaXMgYSBwb3J0IG9mIElCTSYjMzk7cyBKb3VybmFsZWQgRmlsZXN5c3RlbSAuICBNb3JlIGluZm9ybWF0aW9uIGlzXG4gIDExOlx0XHQgIGF2YWlsYWJsZSBpbiB0aGUgZmlsZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvamZzLnJzdFx1MDAzZS5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgSWYgeW91IGRvIG5vdCBpbnRlbmQgdG8gdXNlIHRoZSBKRlMgZmlsZXN5c3RlbSwgc2F5IE4uXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIEpGU19QT1NJWF9BQ0xcbiAgMTY6XHRcdGJvb2wgXCYjMzQ7SkZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4gIDE3Olx0XHRkZXBlbmRzIG9uIEpGU19GU1xuICAxODpcdFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxuICAxOTpcdFx0aGVscFxuICAyMDpcdFx0ICBQb3NpeCBBY2Nlc3MgQ29udHJvbCBMaXN0cyAoQUNMcykgc3VwcG9ydCBwZXJtaXNzaW9ucyBmb3IgdXNlcnMgYW5kXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg1NwoJCQkJCQkJb3V0cHV0OiA2NQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBmaWxlIHN5c3RlbXMgYW5kIGtlcm5lbCBpbnRlcm5hbHM6CgoqKkRpdmluZyBpbnRvIEpGUyYjMzk7cyBEaXJlY3QgTWFwIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHRoZSBpbml0aWFsIGNsdWUgaXMgYEpGU19GU2AsIHdoaWNoIHRlbGxzIG1lIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIHRoZSBKRlMgZmlsZXN5c3RlbS4gVGhhdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIGNvbnNpZGVyYWJseS4gTm93LCB0aGUgcmVhbCBtZWF0IG9mIHRoaXMgbGlrZWx5IGxpZXMgaW4gdGhlIGRpcmVjdCBtYXAgaW1wbGVtZW50YXRpb24sIHNvIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIGRlbHZlIGludG8gYGZzL2pmcy9qZnNfZG1hcC5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbnMgcmVsYXRlZCB0byBtYW5hZ2luZyB0aGUgZGlyZWN0IGFsbG9jYXRpb24gbWFwIG9mIEpGUyBhcmUgbGlrZWx5IGRlZmluZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYmxvY2tzIGFyZSBtYXBwZWQgZGlyZWN0bHksIGFueSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMsIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBmcmFnbWVudGF0aW9uIHdpdGhpbiBKRlMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxOTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfHN0YXRpYykuKiAoZGJGcmVlfGRiVXBkYXRlUE1hcHxkYkFsbG9jfGRiRXh0ZW5kfGRiQWxsb2NDdGx8ZGJBbGxvY0JvdHRvbVVwKVxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2pmcy9qZnNfZG1hcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2pmcy9qZnNfZG1hcC5jPTgzPXN0YXRpYyBpbnQgZGJBbGxvY0FHKHN0cnVjdCBibWFwICogYm1wLCBpbnQgYWdubywgczY0IG5ibG9ja3MsIGludCBsMm5iLFxuZnMvamZzL2pmc19kbWFwLmMtODQtXHRcdCAgICAgczY0ICogcmVzdWx0cyk7XG5mcy9qZnMvamZzX2RtYXAuYzo4NTpzdGF0aWMgaW50IGRiQWxsb2NDdGwoc3RydWN0IGJtYXAgKiBibXAsIHM2NCBuYmxvY2tzLCBpbnQgbDJuYiwgczY0IGJsa25vLFxuZnMvamZzL2pmc19kbWFwLmMtODYtXHRcdCAgICAgIHM2NCAqIHJlc3VsdHMpO1xuZnMvamZzL2pmc19kbWFwLmM6ODc6c3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2Nrcyk7XG5mcy9qZnMvamZzX2RtYXAuYy04OC1zdGF0aWMgaW50IGRiRmluZEJpdHModTMyIHdvcmQsIGludCBsMm5iKTtcbi0tXG5mcy9qZnMvamZzX2RtYXAuYz0zNjY9aW50IGRiU3luYyhzdHJ1Y3QgaW5vZGUgKmlwYm1hcClcbi0tXG5mcy9qZnMvamZzX2RtYXAuYy00MzMtICovXG5mcy9qZnMvamZzX2RtYXAuYzo0MzQ6aW50IGRiRnJlZShzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxuZnMvamZzL2pmc19kbWFwLmMtNDM1LXtcbi0tXG5mcy9qZnMvamZzX2RtYXAuYz03MjA9aW50IGRiTmV4dEFHKHN0cnVjdCBpbm9kZSAqaXBibWFwKVxuLS1cbmZzL2pmcy9qZnNfZG1hcC5jLTgxNi0gKi9cbmZzL2pmcy9qZnNfZG1hcC5jOjgxNzppbnQgZGJBbGxvYyhzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgaGludCwgczY0IG5ibG9ja3MsIHM2NCAqIHJlc3VsdHMpXG5mcy9qZnMvamZzX2RtYXAuYy04MTgte1xuLS1cbmZzL2pmcy9qZnNfZG1hcC5jPTEwMzI9ZGJSZUFsbG9jKHN0cnVjdCBpbm9kZSAqaXAsXG4tLVxuZnMvamZzL2pmc19kbWFwLmMtMTA3OS0gKi9cbmZzL2pmcy9qZnNfZG1hcC5jOjEwODA6c3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcylcbmZzL2pmcy9qZnNfZG1hcC5jLTEwODEte1xuLS1cbmZzL2pmcy9qZnNfZG1hcC5jPTMyODE9c3RhdGljIGludCBibGtzdG9sMihzNjQgbmIpXG4tLVxuZnMvamZzL2pmc19kbWFwLmMtMzMyOC0gKi9cbmZzL2pmcy9qZnNfZG1hcC5jOjMzMjk6aW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxuZnMvamZzL2pmc19kbWFwLmMtMzMzMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgyMAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWJ1Z2dpbmcgYSBNaXNzaW5nIEZ1bmN0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIE15IHJlZ2V4IGRpZG4mIzM5O3QgZmxhZyBgZGJVcGRhdGVQTWFwYC4gVGhhdCYjMzk7cy4uLiB1bnVzdWFsLiBJIHdhcyBjZXJ0YWluIGl0IHNob3VsZCBoYXZlIG1hdGNoZWQuIE9rYXksIG5vIHBhbmljLiBMZXQmIzM5O3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gSXQmIzM5O3MgdGltZSB0byBhY3R1YWxseSBzZWFyY2ggZm9yIHRoYXQgZnVuY3Rpb24gZGlyZWN0bHkuIEkmIzM5O2xsIG5lZWQgdG8gbG9jYXRlIGV2ZXJ5IGluc3RhbmNlIG9mIGl0LiBUaW1lIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGJVcGRhdGVQTWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvamZzL2pmc19kbWFwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvamZzL2pmc19kbWFwLmM9NDM0PWludCBkYkZyZWUoc3RydWN0IGlub2RlICppcCwgczY0IGJsa25vLCBzNjQgbmJsb2Nrcylcbi0tXG5mcy9qZnMvamZzX2RtYXAuYy01MTItLypcbmZzL2pmcy9qZnNfZG1hcC5jOjUxMzogKiBOQU1FOlx0ZGJVcGRhdGVQTWFwKClcbmZzL2pmcy9qZnNfZG1hcC5jLTUxNC0gKlxuLS1cbmZzL2pmcy9qZnNfZG1hcC5jPTUzMz1pbnRcbmZzL2pmcy9qZnNfZG1hcC5jOjUzNDpkYlVwZGF0ZVBNYXAoc3RydWN0IGlub2RlICppcGJtYXAsXG5mcy9qZnMvamZzX2RtYXAuYy01MzUtXHQgICAgIGludCBmcmVlLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzdHJ1Y3QgdGJsb2NrICogdGJsaylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE5MQoJCQkJCQkJb3V0cHV0OiAxMDQKCQkJCQkJCXRob3VnaHRzOiA0NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEpGUyBETWFwIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYW5seSBkZWZpbmluZyBhIGNoYW5nZSBpbnZvbHZpbmcgZG1hcCB2YWxpZGF0aW9uIGluIHRoZSBKRlMgZmlsZXN5c3RlbSwgZ29vZC4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgYWZmZWN0ZWQsIGFzIHRoZXkgd2lsbCBiZSB0aGUgZm9jdXMgb2YgdGhlIGZ1enppbmcgZWZmb3J0cy4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggaGlnaGxpZ2h0cyBzZXZlcmFsIGZ1bmN0aW9ucywgYW5kIEkmIzM5O3ZlIHN0YXJ0ZWQgYnkgY3JlYXRpbmcgYSBsaXN0IG9mIHRoZW06IGBkYkZyZWVgLCBgZGJVcGRhdGVQTWFwYCwgYGRiQWxsb2NgLCBgZGJFeHRlbmRgLCBgZGJBbGxvY0N0bGAsIGFuZCBgZGJBbGxvY0JvdHRvbVVwYC4KCk5vdywgSSYjMzk7bSBjaGVja2luZyB3aGljaCBhcmUgbm9uLXN0YXRpYyBhcyBJJiMzOTtsbCB3YW50IHRvIGZvY3VzIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBnZW5lcmFsbHkgYWNjZXNzaWJsZS4gQWZ0ZXIgcmV2aWV3aW5nLCBJJiMzOTttIGZpbmRpbmc6IGBkYkZyZWVgLCBgZGJVcGRhdGVQTWFwYCwgYGRiQWxsb2NgLCBhbmQgYGRiQWxsb2NCb3R0b21VcGAgYXJlIG5vbi1zdGF0aWMuIGBkYkV4dGVuZGAgYW5kIGBkYkFsbG9jQ3RsYCBhcmUgc3RhdGljLCBzbyBJIHdpbGwgbGlrZWx5IGV4Y2x1ZGUgdGhlc2UgZnJvbSBwcmltYXJ5IGZ1enppbmcgZWZmb3J0cywgYnV0IG1heSByZXZpc2l0IHRoZW0gbGF0ZXIgaWYgbmVlZGVkLiBJJiMzOTtsbCBub3RlIHRoYXQgYGRiRXh0ZW5kYCBpcyBjYWxsZWQgYnkgYGRiUmVBbGxvY2AgYW5kIGBkYkFsbG9jQ3RsYCBpcyBjYWxsZWQgYnkgYGRiQWxsb2NBR2AgYW5kIGBkYkFsbG9jQW55Q29udHJvbGAgYXMgdGhhdCBjb3VsZCBzdWdnZXN0IGFuIGludGVyZXN0aW5nIGZ1enppbmcgdGFyZ2V0LgoKSSYjMzk7bSBub3cgY3Jvc3MtcmVmZXJlbmNpbmcgdGhpcyBpbml0aWFsIGxpc3Qgd2l0aCB0aGUgcGF0Y2ggaXRzZWxmLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgYGZzL2pmcy9qZnNfZG1hcC5jYCBmaWxlLCBjb25maXJtaW5nIGl0IGZvY3VzZXMgb24gZG1hcCB2YWxpZGF0aW9uLiBUaGUgcGF0Y2ggYWRkcyBgZGJfdmFsaWRhdGVfZG1hcGAsIGFuZCBtb2RpZmllcyB0aGUgZnVuY3Rpb25zIEkmIzM5O3ZlIGlkZW50aWZpZWQgcHJldmlvdXNseS4gQmFzZWQgb24gdGhlIGZpbGUgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgYWx0ZXJlZCwgbXkgaW5pdGlhbCByZWFkIGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgLSB0aGlzIGlzIHJlbGF0ZWQgdG8gcHJldmVudGluZyBjb3JydXB0aW9uIGR1cmluZyBibG9jayBhbGxvY2F0aW9uL2ZyZWVpbmcgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGF0IHRoZSBmaWxlc3lzdGVtIGxldmVsLCBhbmQgc3VjaCBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGZ1enphYmxlLgoKR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBwYXRjaCBhbmQgbXkgdW5kZXJzdGFuZGluZywgSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb246IGBkYkZyZWVgLCBgZGJVcGRhdGVQTWFwYCwgYGRiQWxsb2NgLCBhbmQgYGRiQWxsb2NCb3R0b21VcGAsIHRoZXkgYXJlIGFsbCBub24tc3RhdGljLiBCYXNlZCBvbiB0aGUgY29kZSBjaGFuZ2VzIGFuZCByZWFzb25pbmcgcHJvdmlkZWQsIEkmIzM5O20gdGhpbmtpbmcgdGhlIEpGUyBmaWxlc3lzdGVtIGNvbmZpZywgYEpGU19GU2AsIHdpbGwgYmUgY3JpdGljYWwgdG8gZW5hYmxlIGFuZCB0ZXN0LiBTbywgSSB3aWxsIHNldCB0aG9zZSB2YWx1ZXMgaW4gdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb25zIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0pGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RiRnJlZSYjMzQ7LAogICAgJiMzNDtkYlVwZGF0ZVBNYXAmIzM0OywKICAgICYjMzQ7ZGJBbGxvYyYjMzQ7LAogICAgJiMzNDtkYkFsbG9jQm90dG9tVXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0pGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RiRnJlZSYjMzQ7LAogICAgJiMzNDtkYlVwZGF0ZVBNYXAmIzM0OywKICAgICYjMzQ7ZGJBbGxvYyYjMzQ7LAogICAgJiMzNDtkYkFsbG9jQm90dG9tVXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo0Ni4wNzg0MDgzMjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzczNDc2MjkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJKRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYkZyZWVcIixcbiAgICBcImRiVXBkYXRlUE1hcFwiLFxuICAgIFwiZGJBbGxvY1wiLFxuICAgIFwiZGJBbGxvY0JvdHRvbVVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ0OjQ2LjA3ODQxNzU0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAyNzgwNDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjBhYmNmOWY3YTk1MDg0ODI0MjZhYjAwNmZjYjI5NzJiODM3MzNmZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAxOTo0NDo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2RtYXAuYyBiL2ZzL2pmcy9qZnNfZG1hcC5jXFxuaW5kZXggYTg0MWNmMjFkYTdkZTYuLjA2MzU3MjQ1NmFjOWFjIDEwMDY0NFxcbi0tLSBhL2ZzL2pmcy9qZnNfZG1hcC5jXFxuKysrIGIvZnMvamZzL2pmc19kbWFwLmNcXG5AQCAtOTgsNiArOTgsOSBAQCBzdGF0aWMgaW50IGJsa3N0b2wyKHM2NCBuYik7XFxuIHN0YXRpYyBpbnQgY250bHoodTMyIHZhbHVlKTtcXG4gc3RhdGljIGludCBjbnR0eih1MzIgd29yZCk7XFxuIFxcbitzdGF0aWMgYm9vbCBkYl92YWxpZGF0ZV9kbWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGNvbnN0IHN0cnVjdCBkbWFwICpkcCxcXG4rXFx0XFx0XFx0ICAgICBzNjQgZXhwZWN0ZWRfc3RhcnQpO1xcbitcXG4gc3RhdGljIGludCBkYkFsbG9jRG1hcEJVKHN0cnVjdCBibWFwICogYm1wLCBzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sXFxuIFxcdFxcdFxcdCBpbnQgbmJsb2Nrcyk7XFxuIHN0YXRpYyBpbnQgZGJJbml0RG1hcChzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sIGludCBuYmxvY2tzKTtcXG5AQCAtNDc2LDYgKzQ3OSwxMiBAQCBpbnQgZGJGcmVlKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBibGtubywgczY0IG5ibG9ja3MpXFxuIFxcdFxcdH1cXG4gXFx0XFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXFx1MDAzZWRhdGE7XFxuIFxcbitcXHRcXHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXFx1MDAzZWlfc2IsIGRwLCBibGtubyBcXHUwMDI2IH4oczY0KShCUEVSRE1BUCAtIDEpKSkge1xcbitcXHRcXHRcXHRyZWxlYXNlX21ldGFwYWdlKG1wKTtcXG4rXFx0XFx0XFx0SVJFQURfVU5MT0NLKGlwYm1hcCk7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHQvKiBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBibG9ja3MgdG8gYmUgZnJlZWQgZnJvbVxcbiBcXHRcXHQgKiB0aGlzIGRtYXAuXFxuIFxcdFxcdCAqL1xcbkBAIC01NjgsNiArNTc3LDEzIEBAIGRiVXBkYXRlUE1hcChzdHJ1Y3QgaW5vZGUgKmlwYm1hcCxcXG4gXFx0XFx0XFx0aWYgKG1wID09IE5VTEwpXFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXHRcXHRcXHRtZXRhcGFnZV93YWl0X2Zvcl9pbyhtcCk7XFxuK1xcbitcXHRcXHRcXHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXBibWFwLVxcdTAwM2VpX3NiLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAoc3RydWN0IGRtYXAgKiltcC1cXHUwMDNlZGF0YSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgYmxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFx0XFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXFx1MDAzZWRhdGE7XFxuIFxcbkBAIC04ODYsNiArOTAyLDExIEBAIGludCBkYkFsbG9jKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBoaW50LCBzNjQgbmJsb2NrcywgczY0ICogcmVzdWx0cylcXG4gXFxuIFxcdFxcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVxcdTAwM2VkYXRhO1xcbiBcXG4rXFx0XFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVxcdTAwM2VpX3NiLCBkcCwgYmxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdFxcdGdvdG8gcmVhZF91bmxvY2s7XFxuK1xcdFxcdH1cXG4rXFxuIFxcdFxcdC8qIGZpcnN0LCB0cnkgdG8gc2F0aXNmeSB0aGUgYWxsb2NhdGlvbiByZXF1ZXN0IHdpdGggdGhlXFxuIFxcdFxcdCAqIGJsb2NrcyBiZWdpbm5pbmcgYXQgdGhlIGhpbnQuXFxuIFxcdFxcdCAqL1xcbkBAIC0xMTE4LDYgKzExMzksMTIgQEAgc3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcylcXG4gXFxuIFxcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVxcdTAwM2VkYXRhO1xcbiBcXG4rXFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVxcdTAwM2VpX3NiLCBkcCwgZXh0Ymxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0fVxcbitcXG4gXFx0LyogdHJ5IHRvIGFsbG9jYXRlIHRoZSBibG9ja3MgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZVxcbiBcXHQgKiBjdXJyZW50IGFsbG9jYXRpb24uXFxuIFxcdCAqL1xcbkBAIC0xOTAyLDcgKzE5MjksOCBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cylcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcdFxcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVxcdTAwM2VkYXRhO1xcbiBcXG4tXFx0XFx0aWYgKGRwLVxcdTAwM2V0cmVlLmJ1ZG1pbiBcXHUwMDNjIDApIHtcXG4rXFx0XFx0aWYgKGRwLVxcdTAwM2V0cmVlLmJ1ZG1pbiBcXHUwMDNjIDAgfHxcXG4rXFx0XFx0ICAgICFkYl92YWxpZGF0ZV9kbWFwKGJtcC1cXHUwMDNlZGJfaXBibWFwLVxcdTAwM2VpX3NiLCBkcCwgYmxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4gXFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXHRcXHR9XFxuQEAgLTE5MzYsNiArMTk2NCwxMiBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cylcXG4gXFx0XFx0fVxcbiBcXHRcXHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cXHUwMDNlZGF0YTtcXG4gXFxuK1xcdFxcdGlmICghZGJfdmFsaWRhdGVfZG1hcChibXAtXFx1MDAzZWRiX2lwYm1hcC1cXHUwMDNlaV9zYiwgZHAsIGIgXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdFxcdHJjID0gLUVJTztcXG4rXFx0XFx0XFx0Z290byBiYWNrb3V0O1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHQvKiB0aGUgZG1hcCBiZXR0ZXIgYmUgYWxsIGZyZWUuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoZHAtXFx1MDAzZXRyZWUuc3RyZWVbUk9PVF0gIT0gTDJCUEVSRE1BUCkge1xcbkBAIC0xOTkzLDYgKzIwMjcsMTEgQEAgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sIHM2NCAqIHJlc3VsdHMpXFxuIFxcdFxcdH1cXG4gXFx0XFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXFx1MDAzZWRhdGE7XFxuIFxcbitcXHRcXHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoYm1wLVxcdTAwM2VkYl9pcGJtYXAtXFx1MDAzZWlfc2IsIGRwLCBiIFxcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XFxuK1xcdFxcdFxcdHJlbGVhc2VfbWV0YXBhZ2UobXApO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0LyogZnJlZSB0aGUgYmxvY2tzIGlzIHRoaXMgZG1hcC5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChkYkZyZWVEbWFwKGJtcCwgZHAsIGIsIEJQRVJETUFQKSkge1xcbkBAIC0yMTM0LDYgKzIxNzMsMTggQEAgc3RhdGljIGludCBkYkFsbG9jRG1hcChzdHJ1Y3QgYm1hcCAqIGJtcCwgc3RydWN0IGRtYXAgKiBkcCwgczY0IGJsa25vLFxcbiBcXHRyZXR1cm4gKHJjKTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgZGJfdmFsaWRhdGVfZG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjb25zdCBzdHJ1Y3QgZG1hcCAqZHAsXFxuK1xcdFxcdFxcdCAgICAgczY0IGV4cGVjdGVkX3N0YXJ0KVxcbit7XFxuK1xcdGlmIChsZTY0X3RvX2NwdShkcC1cXHUwMDNlc3RhcnQpICE9IGV4cGVjdGVkX3N0YXJ0KSB7XFxuK1xcdFxcdGpmc19lcnJvcihzYiwgXFxcImNvcnJ1cHQgZG1hcCBwYWdlOiBzdGFydCAlbGxkIGV4cGVjdGVkICVsbGRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgKGxvbmcgbG9uZylsZTY0X3RvX2NwdShkcC1cXHUwMDNlc3RhcnQpLFxcbitcXHRcXHRcXHQgIChsb25nIGxvbmcpZXhwZWN0ZWRfc3RhcnQpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuIFxcbiAvKlxcbiAgKiBOQU1FOlxcdGRiRnJlZURtYXAoKVxcbkBAIC0zMzA4LDYgKzMzNTksMTIgQEAgaW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxcbiBcXHRcXHR9XFxuIFxcdFxcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVxcdTAwM2VkYXRhO1xcbiBcXG4rXFx0XFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVxcdTAwM2VpX3NiLCBkcCwgYmxrbm8gXFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcXG4rXFx0XFx0XFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XFxuK1xcdFxcdFxcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0LyogZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIGJlIGFsbG9jYXRlZCBmcm9tXFxuIFxcdFxcdCAqIHRoaXMgZG1hcC5cXG4gXFx0XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ0OjQ2LjY4MjA3ODkwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIzMTMxMDgzMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkpGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRiRnJlZVwiLFxuICAgIFwiZGJVcGRhdGVQTWFwXCIsXG4gICAgXCJkYkFsbG9jXCIsXG4gICAgXCJkYkFsbG9jQm90dG9tVXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGRtYXAgcGFnZXMgaW4gSkZTIHRvIHByZXZlbnQgY29ycnVwdGlvbiB3aGVuIGFsbG9jYXRpbmcgb3IgZnJlZWluZyBibG9ja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSkZTIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjBhYmNmOWY3YTk1MDg0ODI0MjZhYjAwNmZjYjI5NzJiODM3MzNmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDE5OjQ0OjQ0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19kbWFwLmMgYi9mcy9qZnMvamZzX2RtYXAuY1xuaW5kZXggYTg0MWNmMjFkYTdkZTYuLjA2MzU3MjQ1NmFjOWFjIDEwMDY0NFxuLS0tIGEvZnMvamZzL2pmc19kbWFwLmNcbisrKyBiL2ZzL2pmcy9qZnNfZG1hcC5jXG5AQCAtOTgsNiArOTgsOSBAQCBzdGF0aWMgaW50IGJsa3N0b2wyKHM2NCBuYik7XG4gc3RhdGljIGludCBjbnRseih1MzIgdmFsdWUpO1xuIHN0YXRpYyBpbnQgY250dHoodTMyIHdvcmQpO1xuIFxuK3N0YXRpYyBib29sIGRiX3ZhbGlkYXRlX2RtYXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY29uc3Qgc3RydWN0IGRtYXAgKmRwLFxuK1x0XHRcdCAgICAgczY0IGV4cGVjdGVkX3N0YXJ0KTtcbitcbiBzdGF0aWMgaW50IGRiQWxsb2NEbWFwQlUoc3RydWN0IGJtYXAgKiBibXAsIHN0cnVjdCBkbWFwICogZHAsIHM2NCBibGtubyxcbiBcdFx0XHQgaW50IG5ibG9ja3MpO1xuIHN0YXRpYyBpbnQgZGJJbml0RG1hcChzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sIGludCBuYmxvY2tzKTtcbkBAIC00NzYsNiArNDc5LDEyIEBAIGludCBkYkZyZWUoc3RydWN0IGlub2RlICppcCwgczY0IGJsa25vLCBzNjQgbmJsb2NrcylcbiBcdFx0fVxuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuK1x0XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbitcdFx0XHRyZWxlYXNlX21ldGFwYWdlKG1wKTtcbitcdFx0XHRJUkVBRF9VTkxPQ0soaXBibWFwKTtcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0fVxuK1xuIFx0XHQvKiBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBibG9ja3MgdG8gYmUgZnJlZWQgZnJvbVxuIFx0XHQgKiB0aGlzIGRtYXAuXG4gXHRcdCAqL1xuQEAgLTU2OCw2ICs1NzcsMTMgQEAgZGJVcGRhdGVQTWFwKHN0cnVjdCBpbm9kZSAqaXBibWFwLFxuIFx0XHRcdGlmIChtcCA9PSBOVUxMKVxuIFx0XHRcdFx0cmV0dXJuIC1FSU87XG4gXHRcdFx0bWV0YXBhZ2Vfd2FpdF9mb3JfaW8obXApO1xuK1xuK1x0XHRcdGlmICghZGJfdmFsaWRhdGVfZG1hcChpcGJtYXAtXHUwMDNlaV9zYixcbitcdFx0XHRcdFx0ICAgICAgKHN0cnVjdCBkbWFwICopbXAtXHUwMDNlZGF0YSxcbitcdFx0XHRcdFx0ICAgICAgYmxrbm8gXHUwMDI2IH4oczY0KShCUEVSRE1BUCAtIDEpKSkge1xuK1x0XHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0XHR9XG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbkBAIC04ODYsNiArOTAyLDExIEBAIGludCBkYkFsbG9jKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBoaW50LCBzNjQgbmJsb2NrcywgczY0ICogcmVzdWx0cylcbiBcbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbitcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVx1MDAzZWlfc2IsIGRwLCBibGtubyBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4rXHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdFx0Z290byByZWFkX3VubG9jaztcbitcdFx0fVxuK1xuIFx0XHQvKiBmaXJzdCwgdHJ5IHRvIHNhdGlzZnkgdGhlIGFsbG9jYXRpb24gcmVxdWVzdCB3aXRoIHRoZVxuIFx0XHQgKiBibG9ja3MgYmVnaW5uaW5nIGF0IHRoZSBoaW50LlxuIFx0XHQgKi9cbkBAIC0xMTE4LDYgKzExMzksMTIgQEAgc3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcylcbiBcbiBcdGRwID0gKHN0cnVjdCBkbWFwICopIG1wLVx1MDAzZWRhdGE7XG4gXG4rXHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoaXAtXHUwMDNlaV9zYiwgZHAsIGV4dGJsa25vIFx1MDAyNiB+KHM2NCkoQlBFUkRNQVAgLSAxKSkpIHtcbitcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdElSRUFEX1VOTE9DSyhpcGJtYXApO1xuK1x0XHRyZXR1cm4gLUVJTztcbitcdH1cbitcbiBcdC8qIHRyeSB0byBhbGxvY2F0ZSB0aGUgYmxvY2tzIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGVcbiBcdCAqIGN1cnJlbnQgYWxsb2NhdGlvbi5cbiBcdCAqL1xuQEAgLTE5MDIsNyArMTkyOSw4IEBAIGRiQWxsb2NDdGwoc3RydWN0IGJtYXAgKiBibXAsIHM2NCBuYmxvY2tzLCBpbnQgbDJuYiwgczY0IGJsa25vLCBzNjQgKiByZXN1bHRzKVxuIFx0XHRcdHJldHVybiAtRUlPO1xuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuLVx0XHRpZiAoZHAtXHUwMDNldHJlZS5idWRtaW4gXHUwMDNjIDApIHtcbitcdFx0aWYgKGRwLVx1MDAzZXRyZWUuYnVkbWluIFx1MDAzYyAwIHx8XG4rXHRcdCAgICAhZGJfdmFsaWRhdGVfZG1hcChibXAtXHUwMDNlZGJfaXBibWFwLVx1MDAzZWlfc2IsIGRwLCBibGtubyBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4gXHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4gXHRcdFx0cmV0dXJuIC1FSU87XG4gXHRcdH1cbkBAIC0xOTM2LDYgKzE5NjQsMTIgQEAgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sIHM2NCAqIHJlc3VsdHMpXG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbitcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGJtcC1cdTAwM2VkYl9pcGJtYXAtXHUwMDNlaV9zYiwgZHAsIGIgXHUwMDI2IH4oczY0KShCUEVSRE1BUCAtIDEpKSkge1xuK1x0XHRcdHJlbGVhc2VfbWV0YXBhZ2UobXApO1xuK1x0XHRcdHJjID0gLUVJTztcbitcdFx0XHRnb3RvIGJhY2tvdXQ7XG4rXHRcdH1cbitcbiBcdFx0LyogdGhlIGRtYXAgYmV0dGVyIGJlIGFsbCBmcmVlLlxuIFx0XHQgKi9cbiBcdFx0aWYgKGRwLVx1MDAzZXRyZWUuc3RyZWVbUk9PVF0gIT0gTDJCUEVSRE1BUCkge1xuQEAgLTE5OTMsNiArMjAyNywxMSBAQCBkYkFsbG9jQ3RsKHN0cnVjdCBibWFwICogYm1wLCBzNjQgbmJsb2NrcywgaW50IGwybmIsIHM2NCBibGtubywgczY0ICogcmVzdWx0cylcbiBcdFx0fVxuIFx0XHRkcCA9IChzdHJ1Y3QgZG1hcCAqKSBtcC1cdTAwM2VkYXRhO1xuIFxuK1x0XHRpZiAoIWRiX3ZhbGlkYXRlX2RtYXAoYm1wLVx1MDAzZWRiX2lwYm1hcC1cdTAwM2VpX3NiLCBkcCwgYiBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4rXHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbitcbiBcdFx0LyogZnJlZSB0aGUgYmxvY2tzIGlzIHRoaXMgZG1hcC5cbiBcdFx0ICovXG4gXHRcdGlmIChkYkZyZWVEbWFwKGJtcCwgZHAsIGIsIEJQRVJETUFQKSkge1xuQEAgLTIxMzQsNiArMjE3MywxOCBAQCBzdGF0aWMgaW50IGRiQWxsb2NEbWFwKHN0cnVjdCBibWFwICogYm1wLCBzdHJ1Y3QgZG1hcCAqIGRwLCBzNjQgYmxrbm8sXG4gXHRyZXR1cm4gKHJjKTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgZGJfdmFsaWRhdGVfZG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBjb25zdCBzdHJ1Y3QgZG1hcCAqZHAsXG4rXHRcdFx0ICAgICBzNjQgZXhwZWN0ZWRfc3RhcnQpXG4re1xuK1x0aWYgKGxlNjRfdG9fY3B1KGRwLVx1MDAzZXN0YXJ0KSAhPSBleHBlY3RlZF9zdGFydCkge1xuK1x0XHRqZnNfZXJyb3Ioc2IsIFwiY29ycnVwdCBkbWFwIHBhZ2U6IHN0YXJ0ICVsbGQgZXhwZWN0ZWQgJWxsZFxcblwiLFxuK1x0XHRcdCAgKGxvbmcgbG9uZylsZTY0X3RvX2NwdShkcC1cdTAwM2VzdGFydCksXG4rXHRcdFx0ICAobG9uZyBsb25nKWV4cGVjdGVkX3N0YXJ0KTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuIFxuIC8qXG4gICogTkFNRTpcdGRiRnJlZURtYXAoKVxuQEAgLTMzMDgsNiArMzM1OSwxMiBAQCBpbnQgZGJBbGxvY0JvdHRvbVVwKHN0cnVjdCBpbm9kZSAqaXAsIHM2NCBibGtubywgczY0IG5ibG9ja3MpXG4gXHRcdH1cbiBcdFx0ZHAgPSAoc3RydWN0IGRtYXAgKikgbXAtXHUwMDNlZGF0YTtcbiBcbitcdFx0aWYgKCFkYl92YWxpZGF0ZV9kbWFwKGlwLVx1MDAzZWlfc2IsIGRwLCBibGtubyBcdTAwMjYgfihzNjQpKEJQRVJETUFQIC0gMSkpKSB7XG4rXHRcdFx0cmVsZWFzZV9tZXRhcGFnZShtcCk7XG4rXHRcdFx0SVJFQURfVU5MT0NLKGlwYm1hcCk7XG4rXHRcdFx0cmV0dXJuIC1FSU87XG4rXHRcdH1cbitcbiBcdFx0LyogZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIGJlIGFsbG9jYXRlZCBmcm9tXG4gXHRcdCAqIHRoaXMgZG1hcC5cbiBcdFx0ICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo0Ni42ODIwODA0MTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA5NzQ5OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkpGUyBGaWxlc3lzdGVtIFBhdGNoIEFuYWx5c2lzIFx1MDAyNiBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBuZXcgZnVuY3Rpb24gY2FsbGVkIGBkYl92YWxpZGF0ZV9kbWFwYCBpbiBgZnMvamZzL2pmc19kbWFwLmNgLiBGcm9tIHdoYXQgSSBnYXRoZXIsIGl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGFkZGl0aW9uIGZvciB0aGUgSkZTIGZpbGVzeXN0ZW0sIGFpbWVkIGF0IHByZXZlbnRpbmcgY29ycnVwdGlvbiBvciByZWxhdGVkIGJ1Z3MgYnkgdmFsaWRhdGluZyBgZHAtXHUwMDNlc3RhcnRgIGFnYWluc3QgYGV4cGVjdGVkX3N0YXJ0YC4gU2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBpcyBnb29kIOKAkyBtZWFucyB3ZSdyZSBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHByb2JsZW0uIE5vdywgSkZTLi4uIHRoYXQncyBiZWVuIGFyb3VuZCBmb3IgYSB3aGlsZSwgc29saWQsIGJ1dCBpdCdzIGFsd2F5cyB3b3J0aCBhIHRob3JvdWdoIGxvb2suXG5cbkZpcnN0IHRoaW5ncyBmaXJzdDogSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBuZXcgdmFsaWRhdGlvbiBpcyBiZWluZyBpbnRyb2R1Y2VkLiBMZXQncyBzZWUuLi4gaXQncyBjYWxsZWQgZnJvbSBzZXZlcmFsIHBsYWNlcyB3aXRoaW4gYGpmc19kbWFwLmNgIGl0c2VsZi4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aG9zZSBjYWxsIHNpdGVzIHNvIEkgY2FuIG1hcCBvdXQgaXRzIGltcGFjdC4gT2theSwgdGhlIGNhbGxzaXRlcyBhcmUgYGRiRnJlZWAsIGBkYlVwZGF0ZVBNYXBgLCBgZGJBbGxvY2AsIGBkYkV4dGVuZGAsIGBkYkFsbG9jQ3RsYCBhbmQgYGRiQWxsb2NCb3R0b21VcGAuIEFsbCBvZiB0aGVtIHNlZW1zIHZlcnkgaW50ZXJlc3RpbmcgYW5kIHdvcnRoIGEgZGVlcCBkaXZlLlxuXG5OZXh0LCBJIG5lZWQgdG8ga25vdyBpZiBKRlMgaXMgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb3IgaWYgaXQgcmVxdWlyZXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmbGFncy4gTGV0J3Mgc2VlLi4uIHRoZSBjb25maWcgb3B0aW9uIGlzIGBKRlNfRlNgLiBSaWdodC4gU28sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBlbmFibGVkIGluIHRoZSBjb25maWd1cmF0aW9uIEknbSB3b3JraW5nIHdpdGguXG5cbkkgc2hvdWxkIHZlcmlmeSB0aGF0IGFsbCB0aG9zZSBmdW5jdGlvbnMgYXJlIHZhbGlkIGFuZCB0aGF0IG5vdGhpbmcgd2VpcmQgaXMgZ29pbmcgb24gdGhlcmUuXG5cbkZpbmFsbHksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGBmcy9qZnMvS2NvbmZpZ2AuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIG9yIGFueXRoaW5nIHRoYXQgbWlnaHQgY2hhbmdlIHRoZSB3YXkgdGhpcyB2YWxpZGF0aW9uIGJlaGF2ZXMgYmFzZWQgb24gb3RoZXIgc2V0dGluZ3MuIFRoaXMgaXMgYWxsIGdvb2QgaW5mb3JtYXRpb24gdGhhdCBJIGNhbiB1c2UgaW4gbXkgZnV6emluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYyMiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ0OjUyLjI5MTgzNDI5OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjY4MjY4NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEpGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2pmcy9LY29uZmlnOjI6Y29uZmlnIEpGU19GU1xcbmZzL2pmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkpGUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ0OjUyLjY1ODY2ODA2OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjM4OTY4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqQW5hbHl6aW5nIHRoZSBKRlMgS2NvbmZpZyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgSkZTIGZpbGVzeXN0ZW0gd2l0aGluIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjcmFjayBvcGVuIHRoZSBgZnMvamZzL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgaXQnbGwgbGF5IG91dCBhbGwgdGhlIHJlcXVpcmVtZW50cywgdGhlIG90aGVyIGtlcm5lbCBmZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgSkZTIHRvIGZ1bmN0aW9uLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbC4gSSBuZWVkIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHksIHNvIEkgY2FuIHN0YXJ0IHRvIHdvcmsgb24gd2hhdGV2ZXIgdGhlIHBhcnRpY3VsYXIgcHJvYmxlbSBpcyB0aGF0IEknbSBjdXJyZW50bHkgd29ya2luZyBvbi4gR2V0dGluZyB0aGUgZGVwZW5kZW5jaWVzIHJpZ2h0IGF0IHRoZSBzdGFydCB3aWxsIHNhdmUgbWUgYSB0b24gb2YgZGVidWdnaW5nIHRpbWUgbGF0ZXIuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo1NS42MjI1NjgyMjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9qZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIEpGU19GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkpGUyBmaWxlc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4gICA1OlxcdFxcdHNlbGVjdCBOTFNcXG4gICA2OlxcdFxcdHNlbGVjdCBOTFNfVUNTMl9VVElMU1xcbiAgIDc6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAgODpcXHRcXHRzZWxlY3QgTEVHQUNZX0RJUkVDVF9JT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIGlzIGEgcG9ydCBvZiBJQk0ncyBKb3VybmFsZWQgRmlsZXN5c3RlbSAuICBNb3JlIGluZm9ybWF0aW9uIGlzXFxuICAxMTpcXHRcXHQgIGF2YWlsYWJsZSBpbiB0aGUgZmlsZSBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2pmcy5yc3RcXHUwMDNlLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIElmIHlvdSBkbyBub3QgaW50ZW5kIHRvIHVzZSB0aGUgSkZTIGZpbGVzeXN0ZW0sIHNheSBOLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgSkZTX1BPU0lYX0FDTFxcbiAgMTY6XFx0XFx0Ym9vbCBcXFwiSkZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgMTc6XFx0XFx0ZGVwZW5kcyBvbiBKRlNfRlNcXG4gIDE4OlxcdFxcdHNlbGVjdCBGU19QT1NJWF9BQ0xcXG4gIDE5OlxcdFxcdGhlbHBcXG4gIDIwOlxcdFxcdCAgUG9zaXggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgcGVybWlzc2lvbnMgZm9yIHVzZXJzIGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo1NS42MjI2NDk5NDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA1NjI0MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gZmlsZSBzeXN0ZW1zIGFuZCBrZXJuZWwgaW50ZXJuYWxzOlxuXG4qKkRpdmluZyBpbnRvIEpGUydzIERpcmVjdCBNYXAgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgaW5pdGlhbCBjbHVlIGlzIGBKRlNfRlNgLCB3aGljaCB0ZWxscyBtZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciB0aGUgSkZTIGZpbGVzeXN0ZW0uIFRoYXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBjb25zaWRlcmFibHkuIE5vdywgdGhlIHJlYWwgbWVhdCBvZiB0aGlzIGxpa2VseSBsaWVzIGluIHRoZSBkaXJlY3QgbWFwIGltcGxlbWVudGF0aW9uLCBzbyBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIGRlbHZlIGludG8gYGZzL2pmcy9qZnNfZG1hcC5jYC4gVGhhdCdzIHdoZXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIG1hbmFnaW5nIHRoZSBkaXJlY3QgYWxsb2NhdGlvbiBtYXAgb2YgSkZTIGFyZSBsaWtlbHkgZGVmaW5lZC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGJsb2NrcyBhcmUgbWFwcGVkIGRpcmVjdGx5LCBhbnkgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3IgcGVyZm9ybWFuY2Ugb3IgZnJhZ21lbnRhdGlvbiB3aXRoaW4gSkZTLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODU3LCJPdXRwdXRUb2tlbnMiOjY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo1OS4wMjgyNzY4NzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg1NDYyNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxzdGF0aWMpLiogKGRiRnJlZXxkYlVwZGF0ZVBNYXB8ZGJBbGxvY3xkYkV4dGVuZHxkYkFsbG9jQ3RsfGRiQWxsb2NCb3R0b21VcClcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qZnMvamZzX2RtYXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qZnMvamZzX2RtYXAuYz04Mz1zdGF0aWMgaW50IGRiQWxsb2NBRyhzdHJ1Y3QgYm1hcCAqIGJtcCwgaW50IGFnbm8sIHM2NCBuYmxvY2tzLCBpbnQgbDJuYixcXG5mcy9qZnMvamZzX2RtYXAuYy04NC1cXHRcXHQgICAgIHM2NCAqIHJlc3VsdHMpO1xcbmZzL2pmcy9qZnNfZG1hcC5jOjg1OnN0YXRpYyBpbnQgZGJBbGxvY0N0bChzdHJ1Y3QgYm1hcCAqIGJtcCwgczY0IG5ibG9ja3MsIGludCBsMm5iLCBzNjQgYmxrbm8sXFxuZnMvamZzL2pmc19kbWFwLmMtODYtXFx0XFx0ICAgICAgczY0ICogcmVzdWx0cyk7XFxuZnMvamZzL2pmc19kbWFwLmM6ODc6c3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2Nrcyk7XFxuZnMvamZzL2pmc19kbWFwLmMtODgtc3RhdGljIGludCBkYkZpbmRCaXRzKHUzMiB3b3JkLCBpbnQgbDJuYik7XFxuLS1cXG5mcy9qZnMvamZzX2RtYXAuYz0zNjY9aW50IGRiU3luYyhzdHJ1Y3QgaW5vZGUgKmlwYm1hcClcXG4tLVxcbmZzL2pmcy9qZnNfZG1hcC5jLTQzMy0gKi9cXG5mcy9qZnMvamZzX2RtYXAuYzo0MzQ6aW50IGRiRnJlZShzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxcbmZzL2pmcy9qZnNfZG1hcC5jLTQzNS17XFxuLS1cXG5mcy9qZnMvamZzX2RtYXAuYz03MjA9aW50IGRiTmV4dEFHKHN0cnVjdCBpbm9kZSAqaXBibWFwKVxcbi0tXFxuZnMvamZzL2pmc19kbWFwLmMtODE2LSAqL1xcbmZzL2pmcy9qZnNfZG1hcC5jOjgxNzppbnQgZGJBbGxvYyhzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgaGludCwgczY0IG5ibG9ja3MsIHM2NCAqIHJlc3VsdHMpXFxuZnMvamZzL2pmc19kbWFwLmMtODE4LXtcXG4tLVxcbmZzL2pmcy9qZnNfZG1hcC5jPTEwMzI9ZGJSZUFsbG9jKHN0cnVjdCBpbm9kZSAqaXAsXFxuLS1cXG5mcy9qZnMvamZzX2RtYXAuYy0xMDc5LSAqL1xcbmZzL2pmcy9qZnNfZG1hcC5jOjEwODA6c3RhdGljIGludCBkYkV4dGVuZChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzNjQgYWRkbmJsb2NrcylcXG5mcy9qZnMvamZzX2RtYXAuYy0xMDgxLXtcXG4tLVxcbmZzL2pmcy9qZnNfZG1hcC5jPTMyODE9c3RhdGljIGludCBibGtzdG9sMihzNjQgbmIpXFxuLS1cXG5mcy9qZnMvamZzX2RtYXAuYy0zMzI4LSAqL1xcbmZzL2pmcy9qZnNfZG1hcC5jOjMzMjk6aW50IGRiQWxsb2NCb3R0b21VcChzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxcbmZzL2pmcy9qZnNfZG1hcC5jLTMzMzAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxOTo0NDo1OS4wOTY4Mjg4MTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzcwOTg0ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIGEgTWlzc2luZyBGdW5jdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIE15IHJlZ2V4IGRpZG4ndCBmbGFnIGBkYlVwZGF0ZVBNYXBgLiBUaGF0J3MuLi4gdW51c3VhbC4gSSB3YXMgY2VydGFpbiBpdCBzaG91bGQgaGF2ZSBtYXRjaGVkLiBPa2F5LCBubyBwYW5pYy4gTGV0J3Mgbm90IGFzc3VtZSBhbnl0aGluZy4gSXQncyB0aW1lIHRvIGFjdHVhbGx5IHNlYXJjaCBmb3IgdGhhdCBmdW5jdGlvbiBkaXJlY3RseS4gSSdsbCBuZWVkIHRvIGxvY2F0ZSBldmVyeSBpbnN0YW5jZSBvZiBpdC4gVGltZSB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgyMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE5OjQ1OjAxLjg2NzgxNjM0NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1OTkxMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRiVXBkYXRlUE1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9qZnMvamZzX2RtYXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9qZnMvamZzX2RtYXAuYz00MzQ9aW50IGRiRnJlZShzdHJ1Y3QgaW5vZGUgKmlwLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzKVxcbi0tXFxuZnMvamZzL2pmc19kbWFwLmMtNTEyLS8qXFxuZnMvamZzL2pmc19kbWFwLmM6NTEzOiAqIE5BTUU6XFx0ZGJVcGRhdGVQTWFwKClcXG5mcy9qZnMvamZzX2RtYXAuYy01MTQtICpcXG4tLVxcbmZzL2pmcy9qZnNfZG1hcC5jPTUzMz1pbnRcXG5mcy9qZnMvamZzX2RtYXAuYzo1MzQ6ZGJVcGRhdGVQTWFwKHN0cnVjdCBpbm9kZSAqaXBibWFwLFxcbmZzL2pmcy9qZnNfZG1hcC5jLTUzNS1cXHQgICAgIGludCBmcmVlLCBzNjQgYmxrbm8sIHM2NCBuYmxvY2tzLCBzdHJ1Y3QgdGJsb2NrICogdGJsaylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDU6MDIuMDUzODE2MDVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY2NTgwODcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSkZTIERNYXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFubHkgZGVmaW5pbmcgYSBjaGFuZ2UgaW52b2x2aW5nIGRtYXAgdmFsaWRhdGlvbiBpbiB0aGUgSkZTIGZpbGVzeXN0ZW0sIGdvb2QuIFRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgaWRlbnRpZnlpbmcgdGhlIGtleSBmdW5jdGlvbnMgYWZmZWN0ZWQsIGFzIHRoZXkgd2lsbCBiZSB0aGUgZm9jdXMgb2YgdGhlIGZ1enppbmcgZWZmb3J0cy4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggaGlnaGxpZ2h0cyBzZXZlcmFsIGZ1bmN0aW9ucywgYW5kIEkndmUgc3RhcnRlZCBieSBjcmVhdGluZyBhIGxpc3Qgb2YgdGhlbTogYGRiRnJlZWAsIGBkYlVwZGF0ZVBNYXBgLCBgZGJBbGxvY2AsIGBkYkV4dGVuZGAsIGBkYkFsbG9jQ3RsYCwgYW5kIGBkYkFsbG9jQm90dG9tVXBgLlxuXG5Ob3csIEknbSBjaGVja2luZyB3aGljaCBhcmUgbm9uLXN0YXRpYyBhcyBJJ2xsIHdhbnQgdG8gZm9jdXMgb24gZnVuY3Rpb25zIHRoYXQgYXJlIGdlbmVyYWxseSBhY2Nlc3NpYmxlLiBBZnRlciByZXZpZXdpbmcsIEknbSBmaW5kaW5nOiBgZGJGcmVlYCwgYGRiVXBkYXRlUE1hcGAsIGBkYkFsbG9jYCwgYW5kIGBkYkFsbG9jQm90dG9tVXBgIGFyZSBub24tc3RhdGljLiBgZGJFeHRlbmRgIGFuZCBgZGJBbGxvY0N0bGAgYXJlIHN0YXRpYywgc28gSSB3aWxsIGxpa2VseSBleGNsdWRlIHRoZXNlIGZyb20gcHJpbWFyeSBmdXp6aW5nIGVmZm9ydHMsIGJ1dCBtYXkgcmV2aXNpdCB0aGVtIGxhdGVyIGlmIG5lZWRlZC4gSSdsbCBub3RlIHRoYXQgYGRiRXh0ZW5kYCBpcyBjYWxsZWQgYnkgYGRiUmVBbGxvY2AgYW5kIGBkYkFsbG9jQ3RsYCBpcyBjYWxsZWQgYnkgYGRiQWxsb2NBR2AgYW5kIGBkYkFsbG9jQW55Q29udHJvbGAgYXMgdGhhdCBjb3VsZCBzdWdnZXN0IGFuIGludGVyZXN0aW5nIGZ1enppbmcgdGFyZ2V0LlxuXG5JJ20gbm93IGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgaW5pdGlhbCBsaXN0IHdpdGggdGhlIHBhdGNoIGl0c2VsZi4gVGhlIHBhdGNoIHRvdWNoZXMgdGhlIGBmcy9qZnMvamZzX2RtYXAuY2AgZmlsZSwgY29uZmlybWluZyBpdCBmb2N1c2VzIG9uIGRtYXAgdmFsaWRhdGlvbi4gVGhlIHBhdGNoIGFkZHMgYGRiX3ZhbGlkYXRlX2RtYXBgLCBhbmQgbW9kaWZpZXMgdGhlIGZ1bmN0aW9ucyBJJ3ZlIGlkZW50aWZpZWQgcHJldmlvdXNseS4gQmFzZWQgb24gdGhlIGZpbGUgYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgYWx0ZXJlZCwgbXkgaW5pdGlhbCByZWFkIGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgLSB0aGlzIGlzIHJlbGF0ZWQgdG8gcHJldmVudGluZyBjb3JydXB0aW9uIGR1cmluZyBibG9jayBhbGxvY2F0aW9uL2ZyZWVpbmcgb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGF0IHRoZSBmaWxlc3lzdGVtIGxldmVsLCBhbmQgc3VjaCBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGZ1enphYmxlLlxuXG5HaXZlbiB0aGUgc2NvcGUgb2YgdGhlIHBhdGNoIGFuZCBteSB1bmRlcnN0YW5kaW5nLCBJJ2xsIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uOiBgZGJGcmVlYCwgYGRiVXBkYXRlUE1hcGAsIGBkYkFsbG9jYCwgYW5kIGBkYkFsbG9jQm90dG9tVXBgLCB0aGV5IGFyZSBhbGwgbm9uLXN0YXRpYy4gQmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcyBhbmQgcmVhc29uaW5nIHByb3ZpZGVkLCBJJ20gdGhpbmtpbmcgdGhlIEpGUyBmaWxlc3lzdGVtIGNvbmZpZywgYEpGU19GU2AsIHdpbGwgYmUgY3JpdGljYWwgdG8gZW5hYmxlIGFuZCB0ZXN0LiBTbywgSSB3aWxsIHNldCB0aG9zZSB2YWx1ZXMgaW4gdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb25zIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5MSwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTk6NDU6MDkuNzE5NjI4MjYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM1Mjk3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkpGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRiRnJlZVwiLFxuICAgIFwiZGJVcGRhdGVQTWFwXCIsXG4gICAgXCJkYkFsbG9jXCIsXG4gICAgXCJkYkFsbG9jQm90dG9tVXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIGRtYXAgcGFnZXMgaW4gSkZTIHRvIHByZXZlbnQgY29ycnVwdGlvbiB3aGVuIGFsbG9jYXRpbmcgb3IgZnJlZWluZyBibG9ja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSkZTIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJKRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkYkZyZWVcIixcbiAgICBcImRiVXBkYXRlUE1hcFwiLFxuICAgIFwiZGJBbGxvY1wiLFxuICAgIFwiZGJBbGxvY0JvdHRvbVVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBkbWFwIHBhZ2VzIGluIEpGUyB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hlbiBhbGxvY2F0aW5nIG9yIGZyZWVpbmcgYmxvY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEpGUyBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[1] Phase: Succeeded StartedAt: 2026-07-27 19:45:20 +0000 UTC FinishedAt: 2026-07-27 19:45:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 19:45:20 +0000 UTC FinishedAt: 2026-07-27 19:45:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2] Phase: Succeeded StartedAt: 2026-07-27 19:45:20 +0000 UTC FinishedAt: 2026-07-28 00:41:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 19:45:20 +0000 UTC FinishedAt: 2026-07-28 00:41:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 19:45:20 +0000 UTC FinishedAt: 2026-07-27 19:45:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 19:45:20 +0000 UTC FinishedAt: 2026-07-27 19:45:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowllwqs/series-workflowllwqs-convert-artifact-4292546066/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 19:45:53 +0000 UTC FinishedAt: 2026-07-27 20:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 19:45:53 +0000 UTC FinishedAt: 2026-07-27 20:32:35 +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:*7749fbbd-edf8-42f1-8f2e-c138ef9dc547,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-workflowllwqs/series-workflowllwqs-convert-artifact-4292546066/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": "d72f6f75-7813-402f-add8-2da1a5480e44", "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-workflowllwqs/series-workflowllwqs-build-action-2415234960/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 19:45:53 +0000 UTC FinishedAt: 2026-07-27 20:29:19 +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:*7749fbbd-edf8-42f1-8f2e-c138ef9dc547,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-workflowllwqs/series-workflowllwqs-convert-artifact-4292546066/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": "d72f6f75-7813-402f-add8-2da1a5480e44", "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-workflowllwqs/series-workflowllwqs-build-action-2415234960/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 20:32:35 +0000 UTC FinishedAt: 2026-07-27 20:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 20:32:35 +0000 UTC FinishedAt: 2026-07-27 20:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 20:32:35 +0000 UTC FinishedAt: 2026-07-27 20:32:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 20:32:35 +0000 UTC FinishedAt: 2026-07-27 20:32:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowllwqs/series-workflowllwqs-convert-artifact-3404662317/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 20:32:56 +0000 UTC FinishedAt: 2026-07-27 20:35:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 20:32:56 +0000 UTC FinishedAt: 2026-07-27 20:35:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d72f6f75-7813-402f-add8-2da1a5480e44,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-workflowllwqs/series-workflowllwqs-build-action-2415234960/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-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 20:35:14 +0000 UTC FinishedAt: 2026-07-27 20:35:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 20:35:14 +0000 UTC FinishedAt: 2026-07-27 20:35:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 20:35:14 +0000 UTC FinishedAt: 2026-07-27 21:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 20:35:14 +0000 UTC FinishedAt: 2026-07-27 21:28:43 +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:*7749fbbd-edf8-42f1-8f2e-c138ef9dc547,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-workflowllwqs/series-workflowllwqs-convert-artifact-3404662317/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": "098f2a66-1ba7-4ab6-8c93-26196c924f3b", "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-workflowllwqs/series-workflowllwqs-build-action-3157478025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 20:35:14 +0000 UTC FinishedAt: 2026-07-27 21:28:33 +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:*7749fbbd-edf8-42f1-8f2e-c138ef9dc547,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-workflowllwqs/series-workflowllwqs-convert-artifact-3404662317/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": "098f2a66-1ba7-4ab6-8c93-26196c924f3b", "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-workflowllwqs/series-workflowllwqs-build-action-3157478025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 21:28:43 +0000 UTC FinishedAt: 2026-07-27 21:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 21:28:43 +0000 UTC FinishedAt: 2026-07-27 21:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 21:28:43 +0000 UTC FinishedAt: 2026-07-27 21:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 21:28:43 +0000 UTC FinishedAt: 2026-07-27 21:30:41 +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:*098f2a66-1ba7-4ab6-8c93-26196c924f3b,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-workflowllwqs/series-workflowllwqs-build-action-3157478025/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-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 21:30:51 +0000 UTC FinishedAt: 2026-07-28 00:41:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 21:30:51 +0000 UTC FinishedAt: 2026-07-28 00:41:00 +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":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d72f6f75-7813-402f-add8-2da1a5480e44,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*098f2a66-1ba7-4ab6-8c93-26196c924f3b,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-workflowllwqs/series-workflowllwqs-build-action-2415234960/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-workflowllwqs/series-workflowllwqs-build-action-3157478025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 21:30:51 +0000 UTC FinishedAt: 2026-07-27 21:31:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 21:30:51 +0000 UTC FinishedAt: 2026-07-27 21:30:58 +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":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowllwqs/series-workflowllwqs-convert-artifact-559293586/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 21:30:51 +0000 UTC FinishedAt: 2026-07-27 21:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 21:30:51 +0000 UTC FinishedAt: 2026-07-27 21:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 21:30:51 +0000 UTC FinishedAt: 2026-07-27 21:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 21:31:01 +0000 UTC FinishedAt: 2026-07-28 00:41:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowllwqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["dbFree","dbUpdatePMap","dbAlloc","dbAllocBottomUp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["JFS_FS"],"series_id":"d0a80ce1-2707-45d2-b7d6-154f28e67433","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 21:31:01 +0000 UTC FinishedAt: 2026-07-28 00:40:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d72f6f75-7813-402f-add8-2da1a5480e44,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*098f2a66-1ba7-4ab6-8c93-26196c924f3b,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-workflowllwqs/series-workflowllwqs-build-action-2415234960/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-workflowllwqs/series-workflowllwqs-build-action-3157478025/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-workflowllwqs/series-workflowllwqs-convert-artifact-559293586/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,}