Name: series-workflowmdvss Phase: Succeeded StartedAt: 2026-07-10 13:25:35 +0000 UTC FinishedAt: 2026-07-10 18:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[0] Phase: Succeeded StartedAt: 2026-07-10 13:25:35 +0000 UTC FinishedAt: 2026-07-10 13:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 13:25:35 +0000 UTC FinishedAt: 2026-07-10 13:37:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "954157679ec34661c2e87e7eb796104a797c32db", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEBUG_KMEMLEAK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "954157679ec34661c2e87e7eb796104a797c32db", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEBUG_KMEMLEAK" ], "series_id": "64fb56f3-74db-42d3-ab0b-1c8c9f08d2db" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__kmemleak_scan", "kmemleak_scan" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFQlVHX0tNRU1MRUFLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19rbWVtbGVha19zY2FuJiMzNDssCiAgICAmIzM0O2ttZW1sZWFrX3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTM6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4M2YyOTY2MzI1Zjc2NTRiYjljZDk4YTc1YWNmZWI4M2M1Yjk4ZDUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTM6MzY6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va21lbWxlYWsuYyBiL21tL2ttZW1sZWFrLmNcbmluZGV4IDdjN2JhMTdjZTdhZjAwLi41MDViNWMzYTQyM2JjNCAxMDA2NDRcbi0tLSBhL21tL2ttZW1sZWFrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2ttZW1sZWFrLmNcbkBAIC0xNzUsNiAmIzQzOzE3NSw4IEBAIHN0cnVjdCBrbWVtbGVha19vYmplY3Qge1xuICNkZWZpbmUgT0JKRUNUX1BIWVNcdFx0KDEgXHUwMDNjXHUwMDNjIDQpXG4gLyogZmxhZyBzZXQgZm9yIHBlci1DUFUgcG9pbnRlcnMgKi9cbiAjZGVmaW5lIE9CSkVDVF9QRVJDUFVcdFx0KDEgXHUwMDNjXHUwMDNjIDUpXG4mIzQzOy8qIGZsYWcgc2V0IG9uIGFuIG9iamVjdCBsZWZ0IHVucmVmZXJlbmNlZCBieSB0aGUgZnVsbCBzY2FuLCBwZW5kaW5nIGNvbmZpcm1hdGlvbiAqL1xuJiM0MzsjZGVmaW5lIE9CSkVDVF9TVVNQRUNUXHRcdCgxIFx1MDAzY1x1MDAzYyA2KVxuIFxuIC8qIHNldCB3aGVuIF9fcmVtb3ZlX29iamVjdCgpIGNhbGxlZCAqL1xuICNkZWZpbmUgREVMU1RBVEVfUkVNT1ZFRFx0KDEgXHUwMDNjXHUwMDNjIDApXG5AQCAtMjM1LDYgJiM0MzsyMzcsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBqaWZmaWVzX21pbl9hZ2U7XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgamlmZmllc19sYXN0X3NjYW47XG4gLyogZGVsYXkgYmV0d2VlbiBhdXRvbWF0aWMgbWVtb3J5IHNjYW5uaW5ncyAqL1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfc2Nhbl93YWl0O1xuJiM0MzsvKiBudW1iZXIgb2Ygb2JqZWN0cyBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGR1cmluZyB0aGUgY3VycmVudCBzY2FuICovXG4mIzQzO3N0YXRpYyBpbnQgbnJfc3VzcGVjdHM7XG4gLyogZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgdGFzayBzdGFja3Mgc2Nhbm5pbmcgKi9cbiBzdGF0aWMgaW50IGttZW1sZWFrX3N0YWNrX3NjYW4gPSAxO1xuIC8qIHByb3RlY3RzIHRoZSBtZW1vcnkgc2Nhbm5pbmcsIHBhcmFtZXRlcnMgYW5kIGRlYnVnL2ttZW1sZWFrIGZpbGUgYWNjZXNzICovXG5AQCAtMTQzOSw2ICYjNDM7MTQ0MywxMSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcmVmcyhzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3QpXG4gXHQgKi9cbiBcdG9iamVjdC1cdTAwM2Vjb3VudCYjNDM7JiM0Mzs7XG4gXHRpZiAoY29sb3JfZ3JheShvYmplY3QpKSB7XG4mIzQzO1x0XHQvKiByZWZlcmVuY2VkIGFmdGVyIGFsbCwgbm8gbG9uZ2VyIGEgc3VzcGVjdCAqL1xuJiM0MztcdFx0aWYgKG9iamVjdC1cdTAwM2VmbGFncyBcdTAwMjYgT0JKRUNUX1NVU1BFQ1QpIHtcbiYjNDM7XHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfk9CSkVDVF9TVVNQRUNUO1xuJiM0MztcdFx0XHRucl9zdXNwZWN0cy0tO1xuJiM0MztcdFx0fVxuIFx0XHQvKiBwdXRfb2JqZWN0KCkgY2FsbGVkIHdoZW4gcmVtb3ZpbmcgZnJvbSBncmF5X2xpc3QgKi9cbiBcdFx0V0FSTl9PTighZ2V0X29iamVjdChvYmplY3QpKTtcbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZvYmplY3QtXHUwMDNlZ3JheV9saXN0LCBcdTAwMjZncmF5X2xpc3QpO1xuQEAgLTE3OTcsMTUgJiM0MzsxODA2LDE1IEBAIHN0YXRpYyB2b2lkIGRlZHVwX2ZsdXNoKHN0cnVjdCB4YXJyYXkgKmRlZHVwKVxuICAqIGtlcm5lbCYjMzk7cyBzdGFuZGFyZCBhbGxvY2F0b3JzLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlXG4gICogc2Nhbl9tdXRleCBoZWxkLlxuICAqL1xuLXN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbiYjNDM7c3RhdGljIGludCBfX2ttZW1sZWFrX3NjYW4oYm9vbCBmdWxsKVxuIHtcbiBcdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcbiBcdHN0cnVjdCB6b25lICp6b25lO1xuIFx0aW50IF9fbWF5YmVfdW51c2VkIGk7XG4tXHRzdHJ1Y3QgeGFycmF5IGRlZHVwO1xuLVx0aW50IG5ld19sZWFrcyA9IDA7XG4gXG4gXHRqaWZmaWVzX2xhc3Rfc2NhbiA9IGppZmZpZXM7XG4mIzQzO1x0aWYgKGZ1bGwpXG4mIzQzO1x0XHRucl9zdXNwZWN0cyA9IDA7XG4gXG4gXHQvKiBwcmVwYXJlIHRoZSBrbWVtbGVha19vYmplY3QmIzM5O3MgKi9cbiBcdHJjdV9yZWFkX2xvY2soKTtcbkBAIC0xODM1LDYgJiM0MzsxODQ0LDggQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFxuIFx0XHQvKiByZXNldCB0aGUgcmVmZXJlbmNlIGNvdW50ICh3aGl0ZW4gdGhlIG9iamVjdCkgKi9cbiBcdFx0b2JqZWN0LVx1MDAzZWNvdW50ID0gMDtcbiYjNDM7XHRcdGlmIChmdWxsKVxuJiM0MztcdFx0XHRvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+T0JKRUNUX1NVU1BFQ1Q7XG4gXHRcdGlmIChjb2xvcl9ncmF5KG9iamVjdCkgXHUwMDI2XHUwMDI2IGdldF9vYmplY3Qob2JqZWN0KSlcbiBcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm9iamVjdC1cdTAwM2VncmF5X2xpc3QsIFx1MDAyNmdyYXlfbGlzdCk7XG4gXG5AQCAtMTkwNCw2ICYjNDM7MTkxNSwxMCBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpXG4gXHQgKi9cbiBcdHNjYW5fZ3JheV9saXN0KCk7XG4gXG4mIzQzO1x0LyogYSBjb25maXJtYXRpb24gc2NhbiBkb2VzIG5vdCBsb29rIGZvciBtb2RpZmllZCBvYmplY3RzICovXG4mIzQzO1x0aWYgKCFmdWxsKVxuJiM0MztcdFx0cmV0dXJuIG5yX3N1c3BlY3RzO1xuJiM0MztcbiBcdC8qXG4gXHQgKiBDaGVjayBmb3IgbmV3IG9yIHVucmVmZXJlbmNlZCBvYmplY3RzIG1vZGlmaWVkIHNpbmNlIHRoZSBwcmV2aW91c1xuIFx0ICogc2NhbiBhbmQgY29sb3IgdGhlbSBncmF5IHVudGlsIHRoZSBuZXh0IHNjYW4uXG5AQCAtMTkyNiw2ICYjNDM7MTk0MSwxMSBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpXG4gXHRcdFx0LyogY29sb3IgaXQgZ3JheSB0ZW1wb3JhcmlseSAqL1xuIFx0XHRcdG9iamVjdC1cdTAwM2Vjb3VudCA9IG9iamVjdC1cdTAwM2VtaW5fY291bnQ7XG4gXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZvYmplY3QtXHUwMDNlZ3JheV9saXN0LCBcdTAwMjZncmF5X2xpc3QpO1xuJiM0MztcdFx0fSBlbHNlIGlmICh1bnJlZmVyZW5jZWRfb2JqZWN0KG9iamVjdCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICEob2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XG4mIzQzO1x0XHRcdC8qIGZsYWcgdGhlIG9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYnkgdGhpcyBzY2FuICovXG4mIzQzO1x0XHRcdG9iamVjdC1cdTAwM2VmbGFncyB8PSBPQkpFQ1RfU1VTUEVDVDtcbiYjNDM7XHRcdFx0bnJfc3VzcGVjdHMmIzQzOyYjNDM7O1xuIFx0XHR9XG4gXHRcdHJhd19zcGluX3VubG9ja19pcnEoXHUwMDI2b2JqZWN0LVx1MDAzZWxvY2spO1xuIFx0fVxuQEAgLTE5MzYsMTIgJiM0MzsxOTU2LDQyIEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbiBcdCAqL1xuIFx0c2Nhbl9ncmF5X2xpc3QoKTtcbiBcbiYjNDM7XHRyZXR1cm4gbnJfc3VzcGVjdHM7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFNjYW4gdGhlIG1lbW9yeSBhbmQgcmVwb3J0IHRoZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyBhcyBsZWFrcy4gTXVzdCBiZVxuJiM0MzsgKiBjYWxsZWQgd2l0aCB0aGUgc2Nhbl9tdXRleCBoZWxkLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0O1xuJiM0MztcdHN0cnVjdCB4YXJyYXkgZGVkdXA7XG4mIzQzO1x0aW50IG5ld19sZWFrcyA9IDA7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRnVsbCBzY2FuLiBPYmplY3RzIGxlZnQgdW5yZWZlcmVuY2VkIGFyZSBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGFuZFxuJiM0MztcdCAqIGNvdW50ZWQgaW4gdGhlIHJldHVybiB2YWx1ZTsgbm90aGluZyB0byBjb25maXJtIG9yIHJlcG9ydCBvdGhlcndpc2UuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFfX2ttZW1sZWFrX3NjYW4odHJ1ZSkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0LypcbiBcdCAqIElmIHNjYW5uaW5nIHdhcyBzdG9wcGVkIGRvIG5vdCByZXBvcnQgYW55IG5ldyB1bnJlZmVyZW5jZWQgb2JqZWN0cy5cbiBcdCAqL1xuIFx0aWYgKHNjYW5fc2hvdWxkX3N0b3AoKSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogQSBsaXZlIG9iamVjdCB3aG9zZSBvbmx5IHJlZmVyZW5jZSBpcyBtb3ZlZCBieSwgZm9yIGV4YW1wbGUsIGFcbiYjNDM7XHQgKiBjb25jdXJyZW50IFJDVSB1cGRhdGUgY2FuIGJlIG1pc3NlZCBmb3Igb25lIHNjYW4gYW5kIHJlcG9ydGVkIGFzIGFcbiYjNDM7XHQgKiB0cmFuc2llbnQgZmFsc2UgcG9zaXRpdmUuIFNjYW4gYWdhaW4gYW5kIG9ubHkgcmVwb3J0IHRoZSBvYmplY3RzXG4mIzQzO1x0ICogbGVmdCB1bnJlZmVyZW5jZWQgKHN0aWxsIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QpIGJ5IGJvdGggc2NhbnMuXG4mIzQzO1x0ICovXG4mIzQzO1x0X19rbWVtbGVha19zY2FuKGZhbHNlKTtcbiYjNDM7XHRpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdC8qXG4gXHQgKiBTY2FubmluZyByZXN1bHQgcmVwb3J0aW5nLiBXaGVuIHZlcmJvc2UgcHJpbnRpbmcgaXMgZW5hYmxlZCwgZGVkdXBlXG4gXHQgKiBieSBzdGFja2RlcG90IHRyYWNlX2hhbmRsZSBzbyBlYWNoIHVuaXF1ZSBiYWNrdHJhY2UgaXMgbG9nZ2VkIG9uY2VcbkBAIC0xOTY5LDYgJiM0MzsyMDE5LDcgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFx0XHR0cmFjZV9oYW5kbGUgPSAwO1xuIFx0XHRkZWR1cF9wcmludCA9IGZhbHNlO1xuIFx0XHRpZiAodW5yZWZlcmVuY2VkX29iamVjdChvYmplY3QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIChvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE9CSkVDVF9TVVNQRUNUKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICEob2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XG4gXHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIHw9IE9CSkVDVF9SRVBPUlRFRDtcbiBcdFx0XHRpZiAoa21lbWxlYWtfdmVyYm9zZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFQlVHX0tNRU1MRUFLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19rbWVtbGVha19zY2FuJiMzNDssCiAgICAmIzM0O2ttZW1sZWFrX3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgzZjI5NjYzMjVmNzY1NGJiOWNkOThhNzVhY2ZlYjgzYzViOThkNTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxMzozNjo1NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2ttZW1sZWFrLmMgYi9tbS9rbWVtbGVhay5jCmluZGV4IDdjN2JhMTdjZTdhZjAwLi41MDViNWMzYTQyM2JjNCAxMDA2NDQKLS0tIGEvbW0va21lbWxlYWsuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9rbWVtbGVhay5jCkBAIC0xNzUsNiAmIzQzOzE3NSw4IEBAIHN0cnVjdCBrbWVtbGVha19vYmplY3QgewogI2RlZmluZSBPQkpFQ1RfUEhZUwkJKDEgJmx0OyZsdDsgNCkKIC8qIGZsYWcgc2V0IGZvciBwZXItQ1BVIHBvaW50ZXJzICovCiAjZGVmaW5lIE9CSkVDVF9QRVJDUFUJCSgxICZsdDsmbHQ7IDUpCiYjNDM7LyogZmxhZyBzZXQgb24gYW4gb2JqZWN0IGxlZnQgdW5yZWZlcmVuY2VkIGJ5IHRoZSBmdWxsIHNjYW4sIHBlbmRpbmcgY29uZmlybWF0aW9uICovCiYjNDM7I2RlZmluZSBPQkpFQ1RfU1VTUEVDVAkJKDEgJmx0OyZsdDsgNikKIAogLyogc2V0IHdoZW4gX19yZW1vdmVfb2JqZWN0KCkgY2FsbGVkICovCiAjZGVmaW5lIERFTFNUQVRFX1JFTU9WRUQJKDEgJmx0OyZsdDsgMCkKQEAgLTIzNSw2ICYjNDM7MjM3LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgamlmZmllc19taW5fYWdlOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgamlmZmllc19sYXN0X3NjYW47CiAvKiBkZWxheSBiZXR3ZWVuIGF1dG9tYXRpYyBtZW1vcnkgc2Nhbm5pbmdzICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBqaWZmaWVzX3NjYW5fd2FpdDsKJiM0MzsvKiBudW1iZXIgb2Ygb2JqZWN0cyBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGR1cmluZyB0aGUgY3VycmVudCBzY2FuICovCiYjNDM7c3RhdGljIGludCBucl9zdXNwZWN0czsKIC8qIGVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHRhc2sgc3RhY2tzIHNjYW5uaW5nICovCiBzdGF0aWMgaW50IGttZW1sZWFrX3N0YWNrX3NjYW4gPSAxOwogLyogcHJvdGVjdHMgdGhlIG1lbW9yeSBzY2FubmluZywgcGFyYW1ldGVycyBhbmQgZGVidWcva21lbWxlYWsgZmlsZSBhY2Nlc3MgKi8KQEAgLTE0MzksNiAmIzQzOzE0NDMsMTEgQEAgc3RhdGljIHZvaWQgdXBkYXRlX3JlZnMoc3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0KQogCSAqLwogCW9iamVjdC0mZ3Q7Y291bnQmIzQzOyYjNDM7OwogCWlmIChjb2xvcl9ncmF5KG9iamVjdCkpIHsKJiM0MzsJCS8qIHJlZmVyZW5jZWQgYWZ0ZXIgYWxsLCBubyBsb25nZXIgYSBzdXNwZWN0ICovCiYjNDM7CQlpZiAob2JqZWN0LSZndDtmbGFncyAmYW1wOyBPQkpFQ1RfU1VTUEVDVCkgewomIzQzOwkJCW9iamVjdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5PQkpFQ1RfU1VTUEVDVDsKJiM0MzsJCQlucl9zdXNwZWN0cy0tOwomIzQzOwkJfQogCQkvKiBwdXRfb2JqZWN0KCkgY2FsbGVkIHdoZW4gcmVtb3ZpbmcgZnJvbSBncmF5X2xpc3QgKi8KIAkJV0FSTl9PTighZ2V0X29iamVjdChvYmplY3QpKTsKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO29iamVjdC0mZ3Q7Z3JheV9saXN0LCAmYW1wO2dyYXlfbGlzdCk7CkBAIC0xNzk3LDE1ICYjNDM7MTgwNiwxNSBAQCBzdGF0aWMgdm9pZCBkZWR1cF9mbHVzaChzdHJ1Y3QgeGFycmF5ICpkZWR1cCkKICAqIGtlcm5lbCYjMzk7cyBzdGFuZGFyZCBhbGxvY2F0b3JzLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlCiAgKiBzY2FuX211dGV4IGhlbGQuCiAgKi8KLXN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZCkKJiM0MztzdGF0aWMgaW50IF9fa21lbWxlYWtfc2Nhbihib29sIGZ1bGwpCiB7CiAJc3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0OwogCXN0cnVjdCB6b25lICp6b25lOwogCWludCBfX21heWJlX3VudXNlZCBpOwotCXN0cnVjdCB4YXJyYXkgZGVkdXA7Ci0JaW50IG5ld19sZWFrcyA9IDA7CiAKIAlqaWZmaWVzX2xhc3Rfc2NhbiA9IGppZmZpZXM7CiYjNDM7CWlmIChmdWxsKQomIzQzOwkJbnJfc3VzcGVjdHMgPSAwOwogCiAJLyogcHJlcGFyZSB0aGUga21lbWxlYWtfb2JqZWN0JiMzOTtzICovCiAJcmN1X3JlYWRfbG9jaygpOwpAQCAtMTgzNSw2ICYjNDM7MTg0NCw4IEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZCkKIAogCQkvKiByZXNldCB0aGUgcmVmZXJlbmNlIGNvdW50ICh3aGl0ZW4gdGhlIG9iamVjdCkgKi8KIAkJb2JqZWN0LSZndDtjb3VudCA9IDA7CiYjNDM7CQlpZiAoZnVsbCkKJiM0MzsJCQlvYmplY3QtJmd0O2ZsYWdzICZhbXA7PSB+T0JKRUNUX1NVU1BFQ1Q7CiAJCWlmIChjb2xvcl9ncmF5KG9iamVjdCkgJmFtcDsmYW1wOyBnZXRfb2JqZWN0KG9iamVjdCkpCiAJCQlsaXN0X2FkZF90YWlsKCZhbXA7b2JqZWN0LSZndDtncmF5X2xpc3QsICZhbXA7Z3JheV9saXN0KTsKIApAQCAtMTkwNCw2ICYjNDM7MTkxNSwxMCBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpCiAJICovCiAJc2Nhbl9ncmF5X2xpc3QoKTsKIAomIzQzOwkvKiBhIGNvbmZpcm1hdGlvbiBzY2FuIGRvZXMgbm90IGxvb2sgZm9yIG1vZGlmaWVkIG9iamVjdHMgKi8KJiM0MzsJaWYgKCFmdWxsKQomIzQzOwkJcmV0dXJuIG5yX3N1c3BlY3RzOwomIzQzOwogCS8qCiAJICogQ2hlY2sgZm9yIG5ldyBvciB1bnJlZmVyZW5jZWQgb2JqZWN0cyBtb2RpZmllZCBzaW5jZSB0aGUgcHJldmlvdXMKIAkgKiBzY2FuIGFuZCBjb2xvciB0aGVtIGdyYXkgdW50aWwgdGhlIG5leHQgc2Nhbi4KQEAgLTE5MjYsNiAmIzQzOzE5NDEsMTEgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKQogCQkJLyogY29sb3IgaXQgZ3JheSB0ZW1wb3JhcmlseSAqLwogCQkJb2JqZWN0LSZndDtjb3VudCA9IG9iamVjdC0mZ3Q7bWluX2NvdW50OwogCQkJbGlzdF9hZGRfdGFpbCgmYW1wO29iamVjdC0mZ3Q7Z3JheV9saXN0LCAmYW1wO2dyYXlfbGlzdCk7CiYjNDM7CQl9IGVsc2UgaWYgKHVucmVmZXJlbmNlZF9vYmplY3Qob2JqZWN0KSAmYW1wOyZhbXA7CiYjNDM7CQkJICAgIShvYmplY3QtJmd0O2ZsYWdzICZhbXA7IE9CSkVDVF9SRVBPUlRFRCkpIHsKJiM0MzsJCQkvKiBmbGFnIHRoZSBvYmplY3RzIGxlZnQgdW5yZWZlcmVuY2VkIGJ5IHRoaXMgc2NhbiAqLwomIzQzOwkJCW9iamVjdC0mZ3Q7ZmxhZ3MgfD0gT0JKRUNUX1NVU1BFQ1Q7CiYjNDM7CQkJbnJfc3VzcGVjdHMmIzQzOyYjNDM7OwogCQl9CiAJCXJhd19zcGluX3VubG9ja19pcnEoJmFtcDtvYmplY3QtJmd0O2xvY2spOwogCX0KQEAgLTE5MzYsMTIgJiM0MzsxOTU2LDQyIEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZCkKIAkgKi8KIAlzY2FuX2dyYXlfbGlzdCgpOwogCiYjNDM7CXJldHVybiBucl9zdXNwZWN0czsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBTY2FuIHRoZSBtZW1vcnkgYW5kIHJlcG9ydCB0aGUgdW5yZWZlcmVuY2VkIG9iamVjdHMgYXMgbGVha3MuIE11c3QgYmUKJiM0MzsgKiBjYWxsZWQgd2l0aCB0aGUgc2Nhbl9tdXRleCBoZWxkLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDsKJiM0MzsJc3RydWN0IHhhcnJheSBkZWR1cDsKJiM0MzsJaW50IG5ld19sZWFrcyA9IDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEZ1bGwgc2Nhbi4gT2JqZWN0cyBsZWZ0IHVucmVmZXJlbmNlZCBhcmUgZmxhZ2dlZCBPQkpFQ1RfU1VTUEVDVCBhbmQKJiM0MzsJICogY291bnRlZCBpbiB0aGUgcmV0dXJuIHZhbHVlOyBub3RoaW5nIHRvIGNvbmZpcm0gb3IgcmVwb3J0IG90aGVyd2lzZS4KJiM0MzsJICovCiYjNDM7CWlmICghX19rbWVtbGVha19zY2FuKHRydWUpKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCS8qCiAJICogSWYgc2Nhbm5pbmcgd2FzIHN0b3BwZWQgZG8gbm90IHJlcG9ydCBhbnkgbmV3IHVucmVmZXJlbmNlZCBvYmplY3RzLgogCSAqLwogCWlmIChzY2FuX3Nob3VsZF9zdG9wKCkpCiAJCXJldHVybjsKIAomIzQzOwkvKgomIzQzOwkgKiBBIGxpdmUgb2JqZWN0IHdob3NlIG9ubHkgcmVmZXJlbmNlIGlzIG1vdmVkIGJ5LCBmb3IgZXhhbXBsZSwgYQomIzQzOwkgKiBjb25jdXJyZW50IFJDVSB1cGRhdGUgY2FuIGJlIG1pc3NlZCBmb3Igb25lIHNjYW4gYW5kIHJlcG9ydGVkIGFzIGEKJiM0MzsJICogdHJhbnNpZW50IGZhbHNlIHBvc2l0aXZlLiBTY2FuIGFnYWluIGFuZCBvbmx5IHJlcG9ydCB0aGUgb2JqZWN0cwomIzQzOwkgKiBsZWZ0IHVucmVmZXJlbmNlZCAoc3RpbGwgZmxhZ2dlZCBPQkpFQ1RfU1VTUEVDVCkgYnkgYm90aCBzY2Fucy4KJiM0MzsJICovCiYjNDM7CV9fa21lbWxlYWtfc2NhbihmYWxzZSk7CiYjNDM7CWlmIChzY2FuX3Nob3VsZF9zdG9wKCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJLyoKIAkgKiBTY2FubmluZyByZXN1bHQgcmVwb3J0aW5nLiBXaGVuIHZlcmJvc2UgcHJpbnRpbmcgaXMgZW5hYmxlZCwgZGVkdXBlCiAJICogYnkgc3RhY2tkZXBvdCB0cmFjZV9oYW5kbGUgc28gZWFjaCB1bmlxdWUgYmFja3RyYWNlIGlzIGxvZ2dlZCBvbmNlCkBAIC0xOTY5LDYgJiM0MzsyMDE5LDcgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKQogCQl0cmFjZV9oYW5kbGUgPSAwOwogCQlkZWR1cF9wcmludCA9IGZhbHNlOwogCQlpZiAodW5yZWZlcmVuY2VkX29iamVjdChvYmplY3QpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAob2JqZWN0LSZndDtmbGFncyAmYW1wOyBPQkpFQ1RfU1VTUEVDVCkgJmFtcDsmYW1wOwogCQkgICAgIShvYmplY3QtJmd0O2ZsYWdzICZhbXA7IE9CSkVDVF9SRVBPUlRFRCkpIHsKIAkJCW9iamVjdC0mZ3Q7ZmxhZ3MgfD0gT0JKRUNUX1JFUE9SVEVEOwogCQkJaWYgKGttZW1sZWFrX3ZlcmJvc2UpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBLbWVtbGVhayBQYXRjaDogQSBDb25zaWRlcmVkIERlY2lzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgbGFuZGVkLCBtb2RpZnlpbmcgYG1tL2ttZW1sZWFrLmNgLiBJdCYjMzk7cyBpbnRyb2R1Y2luZyB0aGlzIGBPQkpFQ1RfU1VTUEVDVGAgZmxhZyBhbmQgdGhlIGBucl9zdXNwZWN0c2AgdmFyaWFibGUsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXQmIzM5O3MgY2hhbmdpbmcgaG93IHRoZSBga21lbWxlYWtfc2NhbmAgZnVuY3Rpb24gd29ya3MuIEl0IG5vdyBoYXMgdGhpcyB0d28tcGFzcyBzY2FuOiBhIGZ1bGwgc2NhbiBmaXJzdCwgYW5kIHRoZW4gYSBzZWNvbmQgcGFzcyBpZiBpdCBmaW5kcyBwb3RlbnRpYWwgc3VzcGVjdHMuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cga21lbWxlYWsgb3BlcmF0ZXMuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgd2hldGhlciB0aGlzIGRlc2VydmVzIGEgZnV6emluZyBjYW1wYWlnbi4gS21lbWxlYWsgaXMsIGF0IGl0cyBoZWFydCwgYSBkZWJ1Z2dpbmcgdG9vbCwgYSBkaWFnbm9zdGljIG1lY2hhbmlzbS4gSXQmIzM5O3MgbWVhbnQgdG8gYmUgcnVuIHBlcmlvZGljYWxseSBvciBtYW51YWxseSB0cmlnZ2VyZWQgdmlhIGRlYnVnZnMuIEZ1enppbmcgKmttZW1sZWFrIGl0c2VsZiogbWlnaHQgbm90IGJlIHRoZSBtb3N0IGZydWl0ZnVsIGFwcHJvYWNoIGZvciB1bmNvdmVyaW5nIGtlcm5lbCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlICYjMzQ7dHJhZGl0aW9uYWwmIzM0OyBzZW5zZS4gSSB3b3VsZG4mIzM5O3QgZXhwZWN0IHRvIGZpbmQgYSBtYXNzaXZlIHNlY3VyaXR5IGZsYXcgYnkgZnV6emluZyB0aGlzIG1vZHVsZSBkaXJlY3RseS4gQnV0LCB3YWl0LCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gY29yZSBrZXJuZWwgbG9naWMuIEl0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUgaXNzdWVzLgoKU28sIHdoaWxlIEkmIzM5O20gbm90IGV4cGVjdGluZyBhIG1hc3NpdmUgcGF5b2ZmIGluIHRlcm1zIG9mIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgSSBzaG91bGQgY29uc2lkZXIgaXQuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYSBkZWJ1Z2dpbmcgZmVhdHVyZSBtYWtlcyBtZSB3b25kZXIgaWYgZnV6emluZyBpcyB0aGUgcmlnaHQgdG9vbC4gSG93ZXZlciwgaXQmIzM5O3Mgc3RpbGwgcGFydCBvZiB0aGUgY29yZSBrZXJuZWwgY29kZSAoYG1tL2ttZW1sZWFrLmNgKSwgc28gaXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGRlZXBlciBkaXZlLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gYnVpbGQga21lbWxlYWs/IEFoLCB5ZXMsIGBDT05GSUdfREVCVUdfS01FTUxFQUtgIGlzIHJlcXVpcmVkLiBJIHNob3VsZCBjaGVjayBgbW0va21lbWxlYWsuY2AgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERUJVR19LTUVNTEVBSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnPTIyMj1jb25maWcgUFREVU1QX0RFQlVHRlNcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTIzNi1cbm1tL0tjb25maWcuZGVidWc6MjM3OmNvbmZpZyBIQVZFX0RFQlVHX0tNRU1MRUFLXG5tbS9LY29uZmlnLmRlYnVnLTIzOC1cdGJvb2xcbm1tL0tjb25maWcuZGVidWctMjM5LVxubW0vS2NvbmZpZy5kZWJ1ZzoyNDA6Y29uZmlnIERFQlVHX0tNRU1MRUFLXG5tbS9LY29uZmlnLmRlYnVnLTI0MS1cdGJvb2wgXCYjMzQ7S2VybmVsIG1lbW9yeSBsZWFrIGRldGVjdG9yXCYjMzQ7XG5tbS9LY29uZmlnLmRlYnVnOjI0MjpcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMIFx1MDAyNlx1MDAyNiBIQVZFX0RFQlVHX0tNRU1MRUFLXG5tbS9LY29uZmlnLmRlYnVnLTI0My1cdHNlbGVjdCBERUJVR19GU1xuLS1cbm1tL0tjb25maWcuZGVidWctMjQ3LVx0c2VsZWN0IFNUQUNLREVQT1Rcbm1tL0tjb25maWcuZGVidWc6MjQ4Olx0c2VsZWN0IFNUQUNLREVQT1RfQUxXQVlTX0lOSVQgaWYgIURFQlVHX0tNRU1MRUFLX0RFRkFVTFRfT0ZGXG5tbS9LY29uZmlnLmRlYnVnLTI0OS1cdGhlbHBcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTI2NC1cbm1tL0tjb25maWcuZGVidWc6MjY1OmNvbmZpZyBERUJVR19LTUVNTEVBS19NRU1fUE9PTF9TSVpFXG5tbS9LY29uZmlnLmRlYnVnLTI2Ni1cdGludCBcJiMzNDtLbWVtbGVhayBtZW1vcnkgcG9vbCBzaXplXCYjMzQ7XG5tbS9LY29uZmlnLmRlYnVnOjI2NzpcdGRlcGVuZHMgb24gREVCVUdfS01FTUxFQUtcbm1tL0tjb25maWcuZGVidWctMjY4LVx0cmFuZ2UgMjAwIDEwMDAwMDBcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTI3Ny1cbm1tL0tjb25maWcuZGVidWc6Mjc4OmNvbmZpZyBERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRlxubW0vS2NvbmZpZy5kZWJ1Zy0yNzktXHRib29sIFwmIzM0O0RlZmF1bHQga21lbWxlYWsgdG8gb2ZmXCYjMzQ7XG5tbS9LY29uZmlnLmRlYnVnOjI4MDpcdGRlcGVuZHMgb24gREVCVUdfS01FTUxFQUtcbm1tL0tjb25maWcuZGVidWctMjgxLVx0aGVscFxuLS1cbm1tL0tjb25maWcuZGVidWctMjg0LVxubW0vS2NvbmZpZy5kZWJ1ZzoyODU6Y29uZmlnIERFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTlxubW0vS2NvbmZpZy5kZWJ1Zy0yODYtXHRib29sIFwmIzM0O0VuYWJsZSBrbWVtbGVhayBhdXRvIHNjYW4gdGhyZWFkIG9uIGJvb3QgdXBcJiMzNDtcbm1tL0tjb25maWcuZGVidWctMjg3LVx0ZGVmYXVsdCB5XG5tbS9LY29uZmlnLmRlYnVnOjI4ODpcdGRlcGVuZHMgb24gREVCVUdfS01FTUxFQUtcbm1tL0tjb25maWcuZGVidWctMjg5LVx0aGVscFxuLS1cbm1tL0tjb25maWcuZGVidWctMjk5LVxubW0vS2NvbmZpZy5kZWJ1ZzozMDA6Y29uZmlnIERFQlVHX0tNRU1MRUFLX1ZFUkJPU0Vcbm1tL0tjb25maWcuZGVidWctMzAxLVx0Ym9vbCBcJiMzNDtEZWZhdWx0IGttZW1sZWFrIHRvIHZlcmJvc2UgbW9kZVwmIzM0O1xubW0vS2NvbmZpZy5kZWJ1ZzozMDI6XHRkZXBlbmRzIG9uIERFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTlxubW0vS2NvbmZpZy5kZWJ1Zy0zMDMtXHRoZWxwXG4tLVxubW0vTWFrZWZpbGU9MTEzPW9iai0kKENPTkZJR19IV1BPSVNPTl9JTkpFQ1QpICYjNDM7PSBod3BvaXNvbi1pbmplY3Qub1xubW0vTWFrZWZpbGU6MTE0Om9iai0kKENPTkZJR19ERUJVR19LTUVNTEVBSykgJiM0Mzs9IGttZW1sZWFrLm9cbm1tL01ha2VmaWxlLTExNS1vYmotJChDT05GSUdfREVCVUdfUk9EQVRBX1RFU1QpICYjNDM7PSByb2RhdGFfdGVzdC5vXG4tLVxubW0va21lbWxlYWsuYz0xOTk9c3RhdGljIExJU1RfSEVBRChncmF5X2xpc3QpO1xubW0va21lbWxlYWsuYy0yMDAtLyogbWVtb3J5IHBvb2wgYWxsb2NhdGlvbiAqL1xubW0va21lbWxlYWsuYzoyMDE6c3RhdGljIHN0cnVjdCBrbWVtbGVha19vYmplY3QgbWVtX3Bvb2xbQ09ORklHX0RFQlVHX0tNRU1MRUFLX01FTV9QT09MX1NJWkVdO1xubW0va21lbWxlYWsuYy0yMDItc3RhdGljIGludCBtZW1fcG9vbF9mcmVlX2NvdW50ID0gQVJSQVlfU0laRShtZW1fcG9vbCk7XG4tLVxubW0va21lbWxlYWsuYz0yNDk9c3RhdGljIGJvb2wga21lbWxlYWtfZm91bmRfbGVha3M7XG5tbS9rbWVtbGVhay5jLTI1MC1cbm1tL2ttZW1sZWFrLmM6MjUxOnN0YXRpYyBib29sIGttZW1sZWFrX3ZlcmJvc2UgPSBJU19FTkFCTEVEKENPTkZJR19ERUJVR19LTUVNTEVBS19WRVJCT1NFKTtcbm1tL2ttZW1sZWFrLmMtMjUyLW1vZHVsZV9wYXJhbV9uYW1lZCh2ZXJib3NlLCBrbWVtbGVha192ZXJib3NlLCBib29sLCAwNjAwKTtcbi0tXG5tbS9rbWVtbGVhay5jPTQ5MD1zdGF0aWMgc3RydWN0IGttZW1sZWFrX29iamVjdCAqbWVtX3Bvb2xfYWxsb2MoZ2ZwX3QgZ2ZwKVxuLS1cbm1tL2ttZW1sZWFrLmMtNTE1LVx0aWYgKHdhcm4pXG5tbS9rbWVtbGVhay5jOjUxNjpcdFx0cHJfd2Fybl9vbmNlKFwmIzM0O01lbW9yeSBwb29sIGVtcHR5LCBjb25zaWRlciBpbmNyZWFzaW5nIENPTkZJR19ERUJVR19LTUVNTEVBS19NRU1fUE9PTF9TSVpFXFxuXCYjMzQ7KTtcbm1tL2ttZW1sZWFrLmMtNTE3LVxuLS1cbm1tL2ttZW1sZWFrLmM9MjA2MT1zdGF0aWMgaW50IGttZW1sZWFrX3NjYW5fdGhyZWFkKHZvaWQgKmFyZylcbm1tL2ttZW1sZWFrLmMtMjA2Mi17XG5tbS9rbWVtbGVhay5jOjIwNjM6XHRzdGF0aWMgaW50IGZpcnN0X3J1biA9IElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTik7XG5tbS9rbWVtbGVhay5jLTIwNjQtXG4tLVxubW0va21lbWxlYWsuYz0yNDY2PXZvaWQgX19pbml0IGttZW1sZWFrX2luaXQodm9pZClcbm1tL2ttZW1sZWFrLmMtMjQ2Ny17XG5tbS9rbWVtbGVhay5jOjI0Njg6I2lmZGVmIENPTkZJR19ERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRlxubW0va21lbWxlYWsuYy0yNDY5LVx0aWYgKCFrbWVtbGVha19za2lwX2Rpc2FibGUpIHtcbi0tXG5tbS9rbWVtbGVhay5jPTI0OTk9c3RhdGljIGludCBfX2luaXQga21lbWxlYWtfbGF0ZV9pbml0KHZvaWQpXG4tLVxubW0va21lbWxlYWsuYy0yNTE1LVxubW0va21lbWxlYWsuYzoyNTE2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTikpIHtcbm1tL2ttZW1sZWFrLmMtMjUxNy1cdFx0bXV0ZXhfbG9jayhcdTAwMjZzY2FuX211dGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMzozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjI3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUga21lbWxlYWsgU2NhbiBNZWNoYW5pc20qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBga21lbWxlYWtfc2NhbmAgYW5kIGBfX2ttZW1sZWFrX3NjYW5gLiBSaWdodCwgdGhvc2UgYXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgdGhlIGtlcm5lbCBtZW1vcnkgbGVhayBkZXRlY3Rpb24uIEkga25vdyBga21lbWxlYWtfc2NhbmAgaXMgdGhlIGVudHJ5IHBvaW50LCBjYWxsZWQgZWl0aGVyIGJ5IHRoZSBga21lbWxlYWtfc2Nhbl90aHJlYWRgIG9yIHRocm91Z2ggZGVidWdmcywgc28gSSBleHBlY3QgdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSB3YXkgdGhlIHNjYW4gZ2V0cyB0cmlnZ2VyZWQuCgpUbyByZWFsbHkgZGlnIGluLCBJIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgYERFQlVHX0tNRU1MRUFLYCBhbmQgYERFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTmAgYXJlIGVuYWJsZWQuIEFoLCB3YWl0IGEgbWludXRlLCBxdWljayBjaGVjay4uLiB5ZWFoLCBgREVCVUdfS01FTUxFQUtfQVVUT19TQ0FOYCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaWYgYERFQlVHX0tNRU1MRUFLYCBpcywgc28gSSBkb24mIzM5O3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGF0LiBHb29kLCBsZXNzIHdvcmsgZm9yIG1lLgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYm90aCBga21lbWxlYWtfc2NhbmAgYW5kIGBfX2ttZW1sZWFrX3NjYW5gIGRpcmVjdGx5IGluIGBtbS9rbWVtbGVhay5jYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIG1hZ2ljIGhhcHBlbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBzY2FuIGlzIGJlaW5nIG1vZGlmaWVkLCB3aGF0IGNoYW5nZXMgYXJlIGJlaW5nIG1hZGUgdG8gdGhlIG1lbW9yeSBzY2FubmluZyBwcm9jZXNzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgc2lkZS1lZmZlY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrbWVtbGVha19zY2FuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0va21lbWxlYWsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rbWVtbGVhay5jLTExOC0vKiBzY2FubmluZyBhcmVhIGluc2lkZSBhIG1lbW9yeSBibG9jayAqL1xubW0va21lbWxlYWsuYzoxMTk6c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSB7XG5tbS9rbWVtbGVhay5jLTEyMC1cdHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7XG4tLVxubW0va21lbWxlYWsuYz01NDI9c3RhdGljIHZvaWQgZnJlZV9vYmplY3RfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KVxuLS1cbm1tL2ttZW1sZWFrLmMtNTQ0LVx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcbm1tL2ttZW1sZWFrLmM6NTQ1Olx0c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSAqYXJlYTtcbm1tL2ttZW1sZWFrLmMtNTQ2LVx0c3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0ID1cbi0tXG5tbS9rbWVtbGVhay5jPTk5Nz1zdGF0aWMgdm9pZCBhZGRfc2Nhbl9hcmVhKHVuc2lnbmVkIGxvbmcgcHRyLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKVxuLS1cbm1tL2ttZW1sZWFrLmMtMTAwMC1cdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcbm1tL2ttZW1sZWFrLmM6MTAwMTpcdHN0cnVjdCBrbWVtbGVha19zY2FuX2FyZWEgKmFyZWEgPSBOVUxMO1xubW0va21lbWxlYWsuYy0xMDAyLVx0dW5zaWduZWQgbG9uZyB1bnRhZ2dlZF9wdHI7XG4tLVxubW0va21lbWxlYWsuYz0xMzA4PUVYUE9SVF9TWU1CT0woa21lbWxlYWtfaWdub3JlKTtcbi0tXG5tbS9rbWVtbGVhay5jLTEzMTAtLyoqXG5tbS9rbWVtbGVhay5jOjEzMTE6ICoga21lbWxlYWtfc2Nhbl9hcmVhIC0gbGltaXQgdGhlIHJhbmdlIHRvIGJlIHNjYW5uZWQgaW4gYW4gYWxsb2NhdGVkIG9iamVjdFxubW0va21lbWxlYWsuYy0xMzEyLSAqIEBwdHI6XHRwb2ludGVyIHRvIGJlZ2lubmluZyBvciBpbnNpZGUgdGhlIG9iamVjdC4gVGhpcyBhbHNvXG4tLVxubW0va21lbWxlYWsuYy0xMzIwLSAqL1xubW0va21lbWxlYWsuYzoxMzIxOnZvaWQgX19yZWYga21lbWxlYWtfc2Nhbl9hcmVhKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcbm1tL2ttZW1sZWFrLmMtMTMyMi17XG4tLVxubW0va21lbWxlYWsuYy0xMzI3LX1cbm1tL2ttZW1sZWFrLmM6MTMyODpFWFBPUlRfU1lNQk9MKGttZW1sZWFrX3NjYW5fYXJlYSk7XG5tbS9rbWVtbGVhay5jLTEzMjktXG4tLVxubW0va21lbWxlYWsuYz0xNTg0PXN0YXRpYyB2b2lkIHNjYW5fb2JqZWN0KHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdClcbm1tL2ttZW1sZWFrLmMtMTU4NS17XG5tbS9rbWVtbGVhay5jOjE1ODY6XHRzdHJ1Y3Qga21lbWxlYWtfc2Nhbl9hcmVhICphcmVhO1xubW0va21lbWxlYWsuYy0xNTg3LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5tbS9rbWVtbGVhay5jPTE3ODQ9c3RhdGljIHZvaWQgZGVkdXBfZmx1c2goc3RydWN0IHhhcnJheSAqZGVkdXApXG4tLVxubW0va21lbWxlYWsuYy0xODA4LSAqL1xubW0va21lbWxlYWsuYzoxODA5OnN0YXRpYyBpbnQgX19rbWVtbGVha19zY2FuKGJvb2wgZnVsbClcbm1tL2ttZW1sZWFrLmMtMTgxMC17XG4tLVxubW0va21lbWxlYWsuYy0xOTY1LSAqL1xubW0va21lbWxlYWsuYzoxOTY2OnN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbm1tL2ttZW1sZWFrLmMtMTk2Ny17XG4tLVxubW0va21lbWxlYWsuYy0xOTc1LVx0ICovXG5tbS9rbWVtbGVhay5jOjE5NzY6XHRpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSlcbm1tL2ttZW1sZWFrLmMtMTk3Ny1cdFx0cmV0dXJuO1xuLS1cbm1tL2ttZW1sZWFrLmMtMTk5MC1cdCAqL1xubW0va21lbWxlYWsuYzoxOTkxOlx0X19rbWVtbGVha19zY2FuKGZhbHNlKTtcbm1tL2ttZW1sZWFrLmMtMTk5Mi1cdGlmIChzY2FuX3Nob3VsZF9zdG9wKCkpXG4tLVxubW0va21lbWxlYWsuYy0yMDYwLSAqL1xubW0va21lbWxlYWsuYzoyMDYxOnN0YXRpYyBpbnQga21lbWxlYWtfc2Nhbl90aHJlYWQodm9pZCAqYXJnKVxubW0va21lbWxlYWsuYy0yMDYyLXtcbi0tXG5tbS9rbWVtbGVhay5jLTIwODEtXHRcdG11dGV4X2xvY2soXHUwMDI2c2Nhbl9tdXRleCk7XG5tbS9rbWVtbGVhay5jOjIwODI6XHRcdGttZW1sZWFrX3NjYW4oKTtcbm1tL2ttZW1sZWFrLmMtMjA4My1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNjYW5fbXV0ZXgpO1xuLS1cbm1tL2ttZW1sZWFrLmM9MjA5OT1zdGF0aWMgdm9pZCBzdGFydF9zY2FuX3RocmVhZCh2b2lkKVxuLS1cbm1tL2ttZW1sZWFrLmMtMjEwMi1cdFx0cmV0dXJuO1xubW0va21lbWxlYWsuYzoyMTAzOlx0c2Nhbl90aHJlYWQgPSBrdGhyZWFkX3J1bihrbWVtbGVha19zY2FuX3RocmVhZCwgTlVMTCwgXCYjMzQ7a21lbWxlYWtcJiMzNDspO1xubW0va21lbWxlYWsuYy0yMTA0LVx0aWYgKElTX0VSUihzY2FuX3RocmVhZCkpIHtcbi0tXG5tbS9rbWVtbGVhay5jPTIyOTQ9c3RhdGljIHNzaXplX3Qga21lbWxlYWtfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5tbS9rbWVtbGVhay5jLTIzNTAtXHR9IGVsc2UgaWYgKHN0cm5jbXAoYnVmLCBcJiMzNDtzY2FuXCYjMzQ7LCA0KSA9PSAwKVxubW0va21lbWxlYWsuYzoyMzUxOlx0XHRrbWVtbGVha19zY2FuKCk7XG5tbS9rbWVtbGVhay5jLTIzNTItXHRlbHNlIGlmIChzdHJuY21wKGJ1ZiwgXCYjMzQ7ZHVtcD1cJiMzNDssIDUpID09IDApXG4tLVxubW0va21lbWxlYWsuYz0yNDAwPXN0YXRpYyB2b2lkIGttZW1sZWFrX2RvX2NsZWFudXAoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm1tL2ttZW1sZWFrLmMtMjQwNS1cdC8qXG5tbS9rbWVtbGVhay5jOjI0MDY6XHQgKiBPbmNlIGl0IGlzIG1hZGUgc3VyZSB0aGF0IGttZW1sZWFrX3NjYW4gaGFzIHN0b3BwZWQsIGl0IGlzIHNhZmUgdG8gbm9cbm1tL2ttZW1sZWFrLmMtMjQwNy1cdCAqIGxvbmdlciB0cmFjayBvYmplY3QgZnJlZWluZy4gT3JkZXJpbmcgb2YgdGhlIHNjYW4gdGhyZWFkIHN0b3BwaW5nIGFuZFxuLS1cbm1tL2ttZW1sZWFrLmM9MjQ2Nj12b2lkIF9faW5pdCBrbWVtbGVha19pbml0KHZvaWQpXG4tLVxubW0va21lbWxlYWsuYy0yNDgxLVx0b2JqZWN0X2NhY2hlID0gS01FTV9DQUNIRShrbWVtbGVha19vYmplY3QsIFNMQUJfTk9MRUFLVFJBQ0UpO1xubW0va21lbWxlYWsuYzoyNDgyOlx0c2Nhbl9hcmVhX2NhY2hlID0gS01FTV9DQUNIRShrbWVtbGVha19zY2FuX2FyZWEsIFNMQUJfTk9MRUFLVFJBQ0UpO1xubW0va21lbWxlYWsuYy0yNDgzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzgKCQkJCQkJCW91dHB1dDogOTkKCQkJCQkJCXRob3VnaHRzOiAxMDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgS21lbWxlYWs6IEEgVHdvLVBhc3MgQXBwcm9hY2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYGttZW1sZWFrYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEttZW1sZWFrIGlzIGEgZGVidWdnaW5nIHRvb2wsIHNvIHRyYWRpdGlvbmFsbHksIG9uZSBtaWdodCBub3QgcHJpb3JpdGl6ZSBpdCBmb3IgZnV6emluZyBpbiB0aGUgc2FtZSB3YXkgeW91IHdvdWxkIHdpdGggY29yZSBrZXJuZWwgc3Vic3lzdGVtcy4gSG93ZXZlciwgdGhlIHVzZSBvZiBTeXprYWxsZXImIzM5O3MgZGVidWdmcyBpbnRlcmZhY2UgdG8gdHJpZ2dlciBrbWVtbGVhayBzY2FucyBzaGlmdHMgdGhlIGVxdWF0aW9uLiBUaGF0IG1ha2VzIGZ1enppbmcgYSBkZWZpbml0ZSBwb3NzaWJpbGl0eS4KClRoZSBjb3JlIG9mIHRoZSBwYXRjaCBtb2RpZmllcyBga21lbWxlYWtfc2NhbmAgdG8gcGVyZm9ybSBhIHR3by1wYXNzIHNjYW4uIFRoaXMgdHdvLXBhc3MgYXBwcm9hY2ggaXMgY2xlYXJseSBhaW1lZCBhdCByZWR1Y2luZyBmYWxzZSBwb3NpdGl2ZXMuIE5vdywgSSBoYXZlIHRvIGNvbnNpZGVyOiBJcyBmb2N1c2luZyB0aGUgZnV6emluZyBvbiBga21lbWxlYWtfc2NhbmAgdGhlIHJpZ2h0IGFwcHJvYWNoPyBHaXZlbiB0aGF0IGBrbWVtbGVha19zY2FuYCBpcyBhIHJlbGF0aXZlbHkgaGVhdnkgb3BlcmF0aW9uLCByZXBlYXRlZGx5IHJ1bm5pbmcgaXQgaXNuJiMzOTt0IGlkZWFsLCBidXQgaXQgYXBwZWFycyB0byBiZSB0aGUgbW9zdCByZWxldmFudCBlbnRyeXBvaW50IGZvciB0aGlzIGNoYW5nZS4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4KClRoZSBpbXBvcnRhbnQgc3ltYm9scyB0byB0YXJnZXQgYXJlIGBfX2ttZW1sZWFrX3NjYW5gIGFuZCBga21lbWxlYWtfc2NhbmAsIGFzIHRoYXQgaXMgd2hlcmUgdGhlIGtleSBsb2dpYyByZXNpZGVzIGFuZCB3aGVyZSB0aGUgZnV6emluZyBlZmZvcnQgd2lsbCBoYXZlIHRoZSBiaWdnZXN0IGltcGFjdC4gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gaXMgYERFQlVHX0tNRU1MRUFLYC4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgY29uZmlnIEkgbmVlZCB0byBleHBsaWNpdGx5IGluY2x1ZGUsIGJ1dCBgREVCVUdfS01FTUxFQUtgIHNob3VsZCBiZSBlbm91Z2guCgpOb3csIHJlZ2FyZGluZyBwZXJmb3JtYW5jZSwgaXMgYGttZW1sZWFrX3NjYW5gIGEgaG90IHBhdGg/IE5vLCBpdCYjMzk7cyBhIGhlYXZ5IG9wZXJhdGlvbiwgYnV0IG5vdCBhIGhvdCBwYXRoIGluIHRoZSBzZW5zZSBvZiBiZWluZyBjYWxsZWQgb24gZXZlcnkgcGFja2V0IG9yIHN5c2NhbGwuIEl0JiMzOTtzIGNhbGxlZCB3aGVuIHRyaWdnZXJlZCBvciBwZXJpb2RpY2FsbHksIHNvIGZvY3VzaW5nIG9uIGl0IHNlZW1zIGFjY2VwdGFibGUuCgpJIGp1c3QgcmV2aWV3ZWQgdGhlIHBhdGNoIGFnYWluLgpgYGBjCkBAIC0xOTM2LDEyICYjNDM7MTk1Niw0MiBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpCiAJICovCiAJc2Nhbl9ncmF5X2xpc3QoKTsKIAomIzQzOwlyZXR1cm4gbnJfc3VzcGVjdHM7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogU2NhbiB0aGUgbWVtb3J5IGFuZCByZXBvcnQgdGhlIHVucmVmZXJlbmNlZCBvYmplY3RzIGFzIGxlYWtzLiBNdXN0IGJlCiYjNDM7ICogY2FsbGVkIHdpdGggdGhlIHNjYW5fbXV0ZXggaGVsZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3Q7CiYjNDM7CXN0cnVjdCB4YXJyYXkgZGVkdXA7CiYjNDM7CWludCBuZXdfbGVha3MgPSAwOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBGdWxsIHNjYW4uIE9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYXJlIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QgYW5kCiYjNDM7CSAqIGNvdW50ZWQgaW4gdGhlIHJldHVybiB2YWx1ZTsgbm90aGluZyB0byBjb25maXJtIG9yIHJlcG9ydCBvdGhlcndpc2UuCiYjNDM7CSAqLwomIzQzOwlpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAkvKgogCSAqIElmIHNjYW5uaW5nIHdhcyBzdG9wcGVkIGRvIG5vdCByZXBvcnQgYW55IG5ldyB1bnJlZmVyZW5jZWQgb2JqZWN0cy4KIAkgKi8KIAlpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKQogCQlyZXR1cm47CiAKJiM0MzsJLyoKJiM0MzsJICogQSBsaXZlIG9iamVjdCB3aG9zZSBvbmx5IHJlZmVyZW5jZSBpcyBtb3ZlZCBieSwgZm9yIGV4YW1wbGUsIGEKJiM0MzsJICogY29uY3VycmVudCBSQ1UgdXBkYXRlIGNhbiBiZSBtaXNzZWQgZm9yIG9uZSBzY2FuIGFuZCByZXBvcnRlZCBhcyBhCiYjNDM7CSAqIHRyYW5zaWVudCBmYWxzZSBwb3NpdGl2ZS4gU2NhbiBhZ2FpbiBhbmQgb25seSByZXBvcnQgdGhlIG9iamVjdHMKJiM0MzsJICogbGVmdCB1bnJlZmVyZW5jZWQgKHN0aWxsIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QpIGJ5IGJvdGggc2NhbnMuCiYjNDM7CSAqLwomIzQzOwlfX2ttZW1sZWFrX3NjYW4oZmFsc2UpOwomIzQzOwlpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKQomIzQzOwkJcmV0dXJuOwomIzQzOwogYGBgClRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuCkkgd2lsbCByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCkZvY3VzU3ltYm9sczogYF9fa21lbWxlYWtfc2NhbmAsIGBrbWVtbGVha19zY2FuYC4KRW5hYmxlQ29uZmlnczogYERFQlVHX0tNRU1MRUFLYC4KUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUga21lbWxlYWsgc2Nhbm5pbmcgbG9naWMgdG8gcGVyZm9ybSBhIHR3by1wYXNzIHNjYW4gdG8gcmVkdWNlIGZhbHNlIHBvc2l0aXZlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrbWVtbGVhayBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBkZWJ1Z2ZzIG9yIGF1dG8tc2Nhbi4mIzM0OwoKTGV0JiMzOTtzIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIG1vZGlmaWVkLgpgdXBkYXRlX3JlZnNgIGlzIG1vZGlmaWVkLgpgYGBjCkBAIC0xNDM5LDYgJiM0MzsxNDQzLDExIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWZzKHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdCkKIAkgKi8KIAlvYmplY3QtJmd0O2NvdW50JiM0MzsmIzQzOzsKIAlpZiAoY29sb3JfZ3JheShvYmplY3QpKSB7CiYjNDM7CQkvKiByZWZlcmVuY2VkIGFmdGVyIGFsbCwgbm8gbG9uZ2VyIGEgc3VzcGVjdCAqLwomIzQzOwkJaWYgKG9iamVjdC0mZ3Q7ZmxhZ3MgJmFtcDsgT0JKRUNUX1NVU1BFQ1QpIHsKJiM0MzsJCQlvYmplY3QtJmd0O2ZsYWdzICZhbXA7PSB+T0JKRUNUX1NVU1BFQ1Q7CiYjNDM7CQkJbnJfc3VzcGVjdHMtLTsKJiM0MzsJCX0KIAkJLyogcHV0X29iamVjdCgpIGNhbGxlZCB3aGVuIHJlbW92aW5nIGZyb20gZ3JheV9saXN0ICovCiAJCVdBUk5fT04oIWdldF9vYmplY3Qob2JqZWN0KSk7CiAJCWxpc3RfYWRkXwoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTM6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFQlVHX0tNRU1MRUFLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19rbWVtbGVha19zY2FuJiMzNDssCiAgICAmIzM0O2ttZW1sZWFrX3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFQlVHX0tNRU1MRUFLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19rbWVtbGVha19zY2FuJiMzNDssCiAgICAmIzM0O2ttZW1sZWFrX3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNjo1NS42MTg0NzAzODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTc5MTAzODYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJERUJVR19LTUVNTEVBS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fa21lbWxlYWtfc2NhblwiLFxuICAgIFwia21lbWxlYWtfc2NhblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrbWVtbGVhayBzY2FubmluZyBsb2dpYyB0byBwZXJmb3JtIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGttZW1sZWFrIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIGRlYnVnZnMgb3IgYXV0by1zY2FuLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNjo1NS42MTg0NzU3NjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNDMxODE2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDgzZjI5NjYzMjVmNzY1NGJiOWNkOThhNzVhY2ZlYjgzYzViOThkNTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTM6MzY6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0va21lbWxlYWsuYyBiL21tL2ttZW1sZWFrLmNcXG5pbmRleCA3YzdiYTE3Y2U3YWYwMC4uNTA1YjVjM2E0MjNiYzQgMTAwNjQ0XFxuLS0tIGEvbW0va21lbWxlYWsuY1xcbisrKyBiL21tL2ttZW1sZWFrLmNcXG5AQCAtMTc1LDYgKzE3NSw4IEBAIHN0cnVjdCBrbWVtbGVha19vYmplY3Qge1xcbiAjZGVmaW5lIE9CSkVDVF9QSFlTXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgNClcXG4gLyogZmxhZyBzZXQgZm9yIHBlci1DUFUgcG9pbnRlcnMgKi9cXG4gI2RlZmluZSBPQkpFQ1RfUEVSQ1BVXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgNSlcXG4rLyogZmxhZyBzZXQgb24gYW4gb2JqZWN0IGxlZnQgdW5yZWZlcmVuY2VkIGJ5IHRoZSBmdWxsIHNjYW4sIHBlbmRpbmcgY29uZmlybWF0aW9uICovXFxuKyNkZWZpbmUgT0JKRUNUX1NVU1BFQ1RcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyA2KVxcbiBcXG4gLyogc2V0IHdoZW4gX19yZW1vdmVfb2JqZWN0KCkgY2FsbGVkICovXFxuICNkZWZpbmUgREVMU1RBVEVfUkVNT1ZFRFxcdCgxIFxcdTAwM2NcXHUwMDNjIDApXFxuQEAgLTIzNSw2ICsyMzcsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBqaWZmaWVzX21pbl9hZ2U7XFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfbGFzdF9zY2FuO1xcbiAvKiBkZWxheSBiZXR3ZWVuIGF1dG9tYXRpYyBtZW1vcnkgc2Nhbm5pbmdzICovXFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfc2Nhbl93YWl0O1xcbisvKiBudW1iZXIgb2Ygb2JqZWN0cyBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGR1cmluZyB0aGUgY3VycmVudCBzY2FuICovXFxuK3N0YXRpYyBpbnQgbnJfc3VzcGVjdHM7XFxuIC8qIGVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHRhc2sgc3RhY2tzIHNjYW5uaW5nICovXFxuIHN0YXRpYyBpbnQga21lbWxlYWtfc3RhY2tfc2NhbiA9IDE7XFxuIC8qIHByb3RlY3RzIHRoZSBtZW1vcnkgc2Nhbm5pbmcsIHBhcmFtZXRlcnMgYW5kIGRlYnVnL2ttZW1sZWFrIGZpbGUgYWNjZXNzICovXFxuQEAgLTE0MzksNiArMTQ0MywxMSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcmVmcyhzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3QpXFxuIFxcdCAqL1xcbiBcXHRvYmplY3QtXFx1MDAzZWNvdW50Kys7XFxuIFxcdGlmIChjb2xvcl9ncmF5KG9iamVjdCkpIHtcXG4rXFx0XFx0LyogcmVmZXJlbmNlZCBhZnRlciBhbGwsIG5vIGxvbmdlciBhIHN1c3BlY3QgKi9cXG4rXFx0XFx0aWYgKG9iamVjdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBPQkpFQ1RfU1VTUEVDVCkge1xcbitcXHRcXHRcXHRvYmplY3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5PQkpFQ1RfU1VTUEVDVDtcXG4rXFx0XFx0XFx0bnJfc3VzcGVjdHMtLTtcXG4rXFx0XFx0fVxcbiBcXHRcXHQvKiBwdXRfb2JqZWN0KCkgY2FsbGVkIHdoZW4gcmVtb3ZpbmcgZnJvbSBncmF5X2xpc3QgKi9cXG4gXFx0XFx0V0FSTl9PTighZ2V0X29iamVjdChvYmplY3QpKTtcXG4gXFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2b2JqZWN0LVxcdTAwM2VncmF5X2xpc3QsIFxcdTAwMjZncmF5X2xpc3QpO1xcbkBAIC0xNzk3LDE1ICsxODA2LDE1IEBAIHN0YXRpYyB2b2lkIGRlZHVwX2ZsdXNoKHN0cnVjdCB4YXJyYXkgKmRlZHVwKVxcbiAgKiBrZXJuZWwncyBzdGFuZGFyZCBhbGxvY2F0b3JzLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlXFxuICAqIHNjYW5fbXV0ZXggaGVsZC5cXG4gICovXFxuLXN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcXG4rc3RhdGljIGludCBfX2ttZW1sZWFrX3NjYW4oYm9vbCBmdWxsKVxcbiB7XFxuIFxcdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcXG4gXFx0c3RydWN0IHpvbmUgKnpvbmU7XFxuIFxcdGludCBfX21heWJlX3VudXNlZCBpO1xcbi1cXHRzdHJ1Y3QgeGFycmF5IGRlZHVwO1xcbi1cXHRpbnQgbmV3X2xlYWtzID0gMDtcXG4gXFxuIFxcdGppZmZpZXNfbGFzdF9zY2FuID0gamlmZmllcztcXG4rXFx0aWYgKGZ1bGwpXFxuK1xcdFxcdG5yX3N1c3BlY3RzID0gMDtcXG4gXFxuIFxcdC8qIHByZXBhcmUgdGhlIGttZW1sZWFrX29iamVjdCdzICovXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG5AQCAtMTgzNSw2ICsxODQ0LDggQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxcbiBcXG4gXFx0XFx0LyogcmVzZXQgdGhlIHJlZmVyZW5jZSBjb3VudCAod2hpdGVuIHRoZSBvYmplY3QpICovXFxuIFxcdFxcdG9iamVjdC1cXHUwMDNlY291bnQgPSAwO1xcbitcXHRcXHRpZiAoZnVsbClcXG4rXFx0XFx0XFx0b2JqZWN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+T0JKRUNUX1NVU1BFQ1Q7XFxuIFxcdFxcdGlmIChjb2xvcl9ncmF5KG9iamVjdCkgXFx1MDAyNlxcdTAwMjYgZ2V0X29iamVjdChvYmplY3QpKVxcbiBcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZvYmplY3QtXFx1MDAzZWdyYXlfbGlzdCwgXFx1MDAyNmdyYXlfbGlzdCk7XFxuIFxcbkBAIC0xOTA0LDYgKzE5MTUsMTAgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxcbiBcXHQgKi9cXG4gXFx0c2Nhbl9ncmF5X2xpc3QoKTtcXG4gXFxuK1xcdC8qIGEgY29uZmlybWF0aW9uIHNjYW4gZG9lcyBub3QgbG9vayBmb3IgbW9kaWZpZWQgb2JqZWN0cyAqL1xcbitcXHRpZiAoIWZ1bGwpXFxuK1xcdFxcdHJldHVybiBucl9zdXNwZWN0cztcXG4rXFxuIFxcdC8qXFxuIFxcdCAqIENoZWNrIGZvciBuZXcgb3IgdW5yZWZlcmVuY2VkIG9iamVjdHMgbW9kaWZpZWQgc2luY2UgdGhlIHByZXZpb3VzXFxuIFxcdCAqIHNjYW4gYW5kIGNvbG9yIHRoZW0gZ3JheSB1bnRpbCB0aGUgbmV4dCBzY2FuLlxcbkBAIC0xOTI2LDYgKzE5NDEsMTEgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxcbiBcXHRcXHRcXHQvKiBjb2xvciBpdCBncmF5IHRlbXBvcmFyaWx5ICovXFxuIFxcdFxcdFxcdG9iamVjdC1cXHUwMDNlY291bnQgPSBvYmplY3QtXFx1MDAzZW1pbl9jb3VudDtcXG4gXFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2b2JqZWN0LVxcdTAwM2VncmF5X2xpc3QsIFxcdTAwMjZncmF5X2xpc3QpO1xcbitcXHRcXHR9IGVsc2UgaWYgKHVucmVmZXJlbmNlZF9vYmplY3Qob2JqZWN0KSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAhKG9iamVjdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XFxuK1xcdFxcdFxcdC8qIGZsYWcgdGhlIG9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYnkgdGhpcyBzY2FuICovXFxuK1xcdFxcdFxcdG9iamVjdC1cXHUwMDNlZmxhZ3MgfD0gT0JKRUNUX1NVU1BFQ1Q7XFxuK1xcdFxcdFxcdG5yX3N1c3BlY3RzKys7XFxuIFxcdFxcdH1cXG4gXFx0XFx0cmF3X3NwaW5fdW5sb2NrX2lycShcXHUwMDI2b2JqZWN0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0fVxcbkBAIC0xOTM2LDEyICsxOTU2LDQyIEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcXG4gXFx0ICovXFxuIFxcdHNjYW5fZ3JheV9saXN0KCk7XFxuIFxcbitcXHRyZXR1cm4gbnJfc3VzcGVjdHM7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFNjYW4gdGhlIG1lbW9yeSBhbmQgcmVwb3J0IHRoZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyBhcyBsZWFrcy4gTXVzdCBiZVxcbisgKiBjYWxsZWQgd2l0aCB0aGUgc2Nhbl9tdXRleCBoZWxkLlxcbisgKi9cXG4rc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcXG4rXFx0c3RydWN0IHhhcnJheSBkZWR1cDtcXG4rXFx0aW50IG5ld19sZWFrcyA9IDA7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBGdWxsIHNjYW4uIE9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYXJlIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QgYW5kXFxuK1xcdCAqIGNvdW50ZWQgaW4gdGhlIHJldHVybiB2YWx1ZTsgbm90aGluZyB0byBjb25maXJtIG9yIHJlcG9ydCBvdGhlcndpc2UuXFxuK1xcdCAqL1xcbitcXHRpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0LypcXG4gXFx0ICogSWYgc2Nhbm5pbmcgd2FzIHN0b3BwZWQgZG8gbm90IHJlcG9ydCBhbnkgbmV3IHVucmVmZXJlbmNlZCBvYmplY3RzLlxcbiBcXHQgKi9cXG4gXFx0aWYgKHNjYW5fc2hvdWxkX3N0b3AoKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogQSBsaXZlIG9iamVjdCB3aG9zZSBvbmx5IHJlZmVyZW5jZSBpcyBtb3ZlZCBieSwgZm9yIGV4YW1wbGUsIGFcXG4rXFx0ICogY29uY3VycmVudCBSQ1UgdXBkYXRlIGNhbiBiZSBtaXNzZWQgZm9yIG9uZSBzY2FuIGFuZCByZXBvcnRlZCBhcyBhXFxuK1xcdCAqIHRyYW5zaWVudCBmYWxzZSBwb3NpdGl2ZS4gU2NhbiBhZ2FpbiBhbmQgb25seSByZXBvcnQgdGhlIG9iamVjdHNcXG4rXFx0ICogbGVmdCB1bnJlZmVyZW5jZWQgKHN0aWxsIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QpIGJ5IGJvdGggc2NhbnMuXFxuK1xcdCAqL1xcbitcXHRfX2ttZW1sZWFrX3NjYW4oZmFsc2UpO1xcbitcXHRpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBTY2FubmluZyByZXN1bHQgcmVwb3J0aW5nLiBXaGVuIHZlcmJvc2UgcHJpbnRpbmcgaXMgZW5hYmxlZCwgZGVkdXBlXFxuIFxcdCAqIGJ5IHN0YWNrZGVwb3QgdHJhY2VfaGFuZGxlIHNvIGVhY2ggdW5pcXVlIGJhY2t0cmFjZSBpcyBsb2dnZWQgb25jZVxcbkBAIC0xOTY5LDYgKzIwMTksNyBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpXFxuIFxcdFxcdHRyYWNlX2hhbmRsZSA9IDA7XFxuIFxcdFxcdGRlZHVwX3ByaW50ID0gZmFsc2U7XFxuIFxcdFxcdGlmICh1bnJlZmVyZW5jZWRfb2JqZWN0KG9iamVjdCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIChvYmplY3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgT0JKRUNUX1NVU1BFQ1QpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAhKG9iamVjdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XFxuIFxcdFxcdFxcdG9iamVjdC1cXHUwMDNlZmxhZ3MgfD0gT0JKRUNUX1JFUE9SVEVEO1xcbiBcXHRcXHRcXHRpZiAoa21lbWxlYWtfdmVyYm9zZSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNjo1Ni4wMjM3NTYzMzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1Mzg1NzQyMjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRFQlVHX0tNRU1MRUFLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19rbWVtbGVha19zY2FuXCIsXG4gICAgXCJrbWVtbGVha19zY2FuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODNmMjk2NjMyNWY3NjU0YmI5Y2Q5OGE3NWFjZmViODNjNWI5OGQ1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDEzOjM2OjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va21lbWxlYWsuYyBiL21tL2ttZW1sZWFrLmNcbmluZGV4IDdjN2JhMTdjZTdhZjAwLi41MDViNWMzYTQyM2JjNCAxMDA2NDRcbi0tLSBhL21tL2ttZW1sZWFrLmNcbisrKyBiL21tL2ttZW1sZWFrLmNcbkBAIC0xNzUsNiArMTc1LDggQEAgc3RydWN0IGttZW1sZWFrX29iamVjdCB7XG4gI2RlZmluZSBPQkpFQ1RfUEhZU1x0XHQoMSBcdTAwM2NcdTAwM2MgNClcbiAvKiBmbGFnIHNldCBmb3IgcGVyLUNQVSBwb2ludGVycyAqL1xuICNkZWZpbmUgT0JKRUNUX1BFUkNQVVx0XHQoMSBcdTAwM2NcdTAwM2MgNSlcbisvKiBmbGFnIHNldCBvbiBhbiBvYmplY3QgbGVmdCB1bnJlZmVyZW5jZWQgYnkgdGhlIGZ1bGwgc2NhbiwgcGVuZGluZyBjb25maXJtYXRpb24gKi9cbisjZGVmaW5lIE9CSkVDVF9TVVNQRUNUXHRcdCgxIFx1MDAzY1x1MDAzYyA2KVxuIFxuIC8qIHNldCB3aGVuIF9fcmVtb3ZlX29iamVjdCgpIGNhbGxlZCAqL1xuICNkZWZpbmUgREVMU1RBVEVfUkVNT1ZFRFx0KDEgXHUwMDNjXHUwMDNjIDApXG5AQCAtMjM1LDYgKzIzNyw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfbWluX2FnZTtcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBqaWZmaWVzX2xhc3Rfc2NhbjtcbiAvKiBkZWxheSBiZXR3ZWVuIGF1dG9tYXRpYyBtZW1vcnkgc2Nhbm5pbmdzICovXG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgamlmZmllc19zY2FuX3dhaXQ7XG4rLyogbnVtYmVyIG9mIG9iamVjdHMgZmxhZ2dlZCBPQkpFQ1RfU1VTUEVDVCBkdXJpbmcgdGhlIGN1cnJlbnQgc2NhbiAqL1xuK3N0YXRpYyBpbnQgbnJfc3VzcGVjdHM7XG4gLyogZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgdGFzayBzdGFja3Mgc2Nhbm5pbmcgKi9cbiBzdGF0aWMgaW50IGttZW1sZWFrX3N0YWNrX3NjYW4gPSAxO1xuIC8qIHByb3RlY3RzIHRoZSBtZW1vcnkgc2Nhbm5pbmcsIHBhcmFtZXRlcnMgYW5kIGRlYnVnL2ttZW1sZWFrIGZpbGUgYWNjZXNzICovXG5AQCAtMTQzOSw2ICsxNDQzLDExIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWZzKHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdClcbiBcdCAqL1xuIFx0b2JqZWN0LVx1MDAzZWNvdW50Kys7XG4gXHRpZiAoY29sb3JfZ3JheShvYmplY3QpKSB7XG4rXHRcdC8qIHJlZmVyZW5jZWQgYWZ0ZXIgYWxsLCBubyBsb25nZXIgYSBzdXNwZWN0ICovXG4rXHRcdGlmIChvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE9CSkVDVF9TVVNQRUNUKSB7XG4rXHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfk9CSkVDVF9TVVNQRUNUO1xuK1x0XHRcdG5yX3N1c3BlY3RzLS07XG4rXHRcdH1cbiBcdFx0LyogcHV0X29iamVjdCgpIGNhbGxlZCB3aGVuIHJlbW92aW5nIGZyb20gZ3JheV9saXN0ICovXG4gXHRcdFdBUk5fT04oIWdldF9vYmplY3Qob2JqZWN0KSk7XG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2b2JqZWN0LVx1MDAzZWdyYXlfbGlzdCwgXHUwMDI2Z3JheV9saXN0KTtcbkBAIC0xNzk3LDE1ICsxODA2LDE1IEBAIHN0YXRpYyB2b2lkIGRlZHVwX2ZsdXNoKHN0cnVjdCB4YXJyYXkgKmRlZHVwKVxuICAqIGtlcm5lbCdzIHN0YW5kYXJkIGFsbG9jYXRvcnMuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGVcbiAgKiBzY2FuX211dGV4IGhlbGQuXG4gICovXG4tc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuK3N0YXRpYyBpbnQgX19rbWVtbGVha19zY2FuKGJvb2wgZnVsbClcbiB7XG4gXHRzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3Q7XG4gXHRzdHJ1Y3Qgem9uZSAqem9uZTtcbiBcdGludCBfX21heWJlX3VudXNlZCBpO1xuLVx0c3RydWN0IHhhcnJheSBkZWR1cDtcbi1cdGludCBuZXdfbGVha3MgPSAwO1xuIFxuIFx0amlmZmllc19sYXN0X3NjYW4gPSBqaWZmaWVzO1xuK1x0aWYgKGZ1bGwpXG4rXHRcdG5yX3N1c3BlY3RzID0gMDtcbiBcbiBcdC8qIHByZXBhcmUgdGhlIGttZW1sZWFrX29iamVjdCdzICovXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG5AQCAtMTgzNSw2ICsxODQ0LDggQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFxuIFx0XHQvKiByZXNldCB0aGUgcmVmZXJlbmNlIGNvdW50ICh3aGl0ZW4gdGhlIG9iamVjdCkgKi9cbiBcdFx0b2JqZWN0LVx1MDAzZWNvdW50ID0gMDtcbitcdFx0aWYgKGZ1bGwpXG4rXHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfk9CSkVDVF9TVVNQRUNUO1xuIFx0XHRpZiAoY29sb3JfZ3JheShvYmplY3QpIFx1MDAyNlx1MDAyNiBnZXRfb2JqZWN0KG9iamVjdCkpXG4gXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZvYmplY3QtXHUwMDNlZ3JheV9saXN0LCBcdTAwMjZncmF5X2xpc3QpO1xuIFxuQEAgLTE5MDQsNiArMTkxNSwxMCBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpXG4gXHQgKi9cbiBcdHNjYW5fZ3JheV9saXN0KCk7XG4gXG4rXHQvKiBhIGNvbmZpcm1hdGlvbiBzY2FuIGRvZXMgbm90IGxvb2sgZm9yIG1vZGlmaWVkIG9iamVjdHMgKi9cbitcdGlmICghZnVsbClcbitcdFx0cmV0dXJuIG5yX3N1c3BlY3RzO1xuK1xuIFx0LypcbiBcdCAqIENoZWNrIGZvciBuZXcgb3IgdW5yZWZlcmVuY2VkIG9iamVjdHMgbW9kaWZpZWQgc2luY2UgdGhlIHByZXZpb3VzXG4gXHQgKiBzY2FuIGFuZCBjb2xvciB0aGVtIGdyYXkgdW50aWwgdGhlIG5leHQgc2Nhbi5cbkBAIC0xOTI2LDYgKzE5NDEsMTEgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFx0XHRcdC8qIGNvbG9yIGl0IGdyYXkgdGVtcG9yYXJpbHkgKi9cbiBcdFx0XHRvYmplY3QtXHUwMDNlY291bnQgPSBvYmplY3QtXHUwMDNlbWluX2NvdW50O1xuIFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2b2JqZWN0LVx1MDAzZWdyYXlfbGlzdCwgXHUwMDI2Z3JheV9saXN0KTtcbitcdFx0fSBlbHNlIGlmICh1bnJlZmVyZW5jZWRfb2JqZWN0KG9iamVjdCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgIShvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE9CSkVDVF9SRVBPUlRFRCkpIHtcbitcdFx0XHQvKiBmbGFnIHRoZSBvYmplY3RzIGxlZnQgdW5yZWZlcmVuY2VkIGJ5IHRoaXMgc2NhbiAqL1xuK1x0XHRcdG9iamVjdC1cdTAwM2VmbGFncyB8PSBPQkpFQ1RfU1VTUEVDVDtcbitcdFx0XHRucl9zdXNwZWN0cysrO1xuIFx0XHR9XG4gXHRcdHJhd19zcGluX3VubG9ja19pcnEoXHUwMDI2b2JqZWN0LVx1MDAzZWxvY2spO1xuIFx0fVxuQEAgLTE5MzYsMTIgKzE5NTYsNDIgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFx0ICovXG4gXHRzY2FuX2dyYXlfbGlzdCgpO1xuIFxuK1x0cmV0dXJuIG5yX3N1c3BlY3RzO1xuK31cbitcbisvKlxuKyAqIFNjYW4gdGhlIG1lbW9yeSBhbmQgcmVwb3J0IHRoZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyBhcyBsZWFrcy4gTXVzdCBiZVxuKyAqIGNhbGxlZCB3aXRoIHRoZSBzY2FuX211dGV4IGhlbGQuXG4rICovXG4rc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuK3tcbitcdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcbitcdHN0cnVjdCB4YXJyYXkgZGVkdXA7XG4rXHRpbnQgbmV3X2xlYWtzID0gMDtcbitcbitcdC8qXG4rXHQgKiBGdWxsIHNjYW4uIE9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYXJlIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QgYW5kXG4rXHQgKiBjb3VudGVkIGluIHRoZSByZXR1cm4gdmFsdWU7IG5vdGhpbmcgdG8gY29uZmlybSBvciByZXBvcnQgb3RoZXJ3aXNlLlxuK1x0ICovXG4rXHRpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0LypcbiBcdCAqIElmIHNjYW5uaW5nIHdhcyBzdG9wcGVkIGRvIG5vdCByZXBvcnQgYW55IG5ldyB1bnJlZmVyZW5jZWQgb2JqZWN0cy5cbiBcdCAqL1xuIFx0aWYgKHNjYW5fc2hvdWxkX3N0b3AoKSlcbiBcdFx0cmV0dXJuO1xuIFxuK1x0LypcbitcdCAqIEEgbGl2ZSBvYmplY3Qgd2hvc2Ugb25seSByZWZlcmVuY2UgaXMgbW92ZWQgYnksIGZvciBleGFtcGxlLCBhXG4rXHQgKiBjb25jdXJyZW50IFJDVSB1cGRhdGUgY2FuIGJlIG1pc3NlZCBmb3Igb25lIHNjYW4gYW5kIHJlcG9ydGVkIGFzIGFcbitcdCAqIHRyYW5zaWVudCBmYWxzZSBwb3NpdGl2ZS4gU2NhbiBhZ2FpbiBhbmQgb25seSByZXBvcnQgdGhlIG9iamVjdHNcbitcdCAqIGxlZnQgdW5yZWZlcmVuY2VkIChzdGlsbCBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUKSBieSBib3RoIHNjYW5zLlxuK1x0ICovXG4rXHRfX2ttZW1sZWFrX3NjYW4oZmFsc2UpO1xuK1x0aWYgKHNjYW5fc2hvdWxkX3N0b3AoKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0LypcbiBcdCAqIFNjYW5uaW5nIHJlc3VsdCByZXBvcnRpbmcuIFdoZW4gdmVyYm9zZSBwcmludGluZyBpcyBlbmFibGVkLCBkZWR1cGVcbiBcdCAqIGJ5IHN0YWNrZGVwb3QgdHJhY2VfaGFuZGxlIHNvIGVhY2ggdW5pcXVlIGJhY2t0cmFjZSBpcyBsb2dnZWQgb25jZVxuQEAgLTE5NjksNiArMjAxOSw3IEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbiBcdFx0dHJhY2VfaGFuZGxlID0gMDtcbiBcdFx0ZGVkdXBfcHJpbnQgPSBmYWxzZTtcbiBcdFx0aWYgKHVucmVmZXJlbmNlZF9vYmplY3Qob2JqZWN0KSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIChvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE9CSkVDVF9TVVNQRUNUKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICEob2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XG4gXHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIHw9IE9CSkVDVF9SRVBPUlRFRDtcbiBcdFx0XHRpZiAoa21lbWxlYWtfdmVyYm9zZSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTM6MzY6NTYuMDIzNzU3OTI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc3ODcyNzk5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBLbWVtbGVhayBQYXRjaDogQSBDb25zaWRlcmVkIERlY2lzaW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgbGFuZGVkLCBtb2RpZnlpbmcgYG1tL2ttZW1sZWFrLmNgLiBJdCdzIGludHJvZHVjaW5nIHRoaXMgYE9CSkVDVF9TVVNQRUNUYCBmbGFnIGFuZCB0aGUgYG5yX3N1c3BlY3RzYCB2YXJpYWJsZSwgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBpdCdzIGNoYW5naW5nIGhvdyB0aGUgYGttZW1sZWFrX3NjYW5gIGZ1bmN0aW9uIHdvcmtzLiBJdCBub3cgaGFzIHRoaXMgdHdvLXBhc3Mgc2NhbjogYSBmdWxsIHNjYW4gZmlyc3QsIGFuZCB0aGVuIGEgc2Vjb25kIHBhc3MgaWYgaXQgZmluZHMgcG90ZW50aWFsIHN1c3BlY3RzLiBJdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cga21lbWxlYWsgb3BlcmF0ZXMuXG5cblRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB3aGV0aGVyIHRoaXMgZGVzZXJ2ZXMgYSBmdXp6aW5nIGNhbXBhaWduLiBLbWVtbGVhayBpcywgYXQgaXRzIGhlYXJ0LCBhIGRlYnVnZ2luZyB0b29sLCBhIGRpYWdub3N0aWMgbWVjaGFuaXNtLiBJdCdzIG1lYW50IHRvIGJlIHJ1biBwZXJpb2RpY2FsbHkgb3IgbWFudWFsbHkgdHJpZ2dlcmVkIHZpYSBkZWJ1Z2ZzLiBGdXp6aW5nICprbWVtbGVhayBpdHNlbGYqIG1pZ2h0IG5vdCBiZSB0aGUgbW9zdCBmcnVpdGZ1bCBhcHByb2FjaCBmb3IgdW5jb3ZlcmluZyBrZXJuZWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBcInRyYWRpdGlvbmFsXCIgc2Vuc2UuIEkgd291bGRuJ3QgZXhwZWN0IHRvIGZpbmQgYSBtYXNzaXZlIHNlY3VyaXR5IGZsYXcgYnkgZnV6emluZyB0aGlzIG1vZHVsZSBkaXJlY3RseS4gQnV0LCB3YWl0LCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gY29yZSBrZXJuZWwgbG9naWMuIEl0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUgaXNzdWVzLlxuXG5Tbywgd2hpbGUgSSdtIG5vdCBleHBlY3RpbmcgYSBtYXNzaXZlIHBheW9mZiBpbiB0ZXJtcyBvZiBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIEkgc2hvdWxkIGNvbnNpZGVyIGl0LiBUaGUgZmFjdCB0aGF0IGl0J3MgYSBkZWJ1Z2dpbmcgZmVhdHVyZSBtYWtlcyBtZSB3b25kZXIgaWYgZnV6emluZyBpcyB0aGUgcmlnaHQgdG9vbC4gSG93ZXZlciwgaXQncyBzdGlsbCBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCBjb2RlIChgbW0va21lbWxlYWsuY2ApLCBzbyBpdCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgZGVlcGVyIGRpdmUuXG5cbk5vdywgbGV0J3Mgc2VlLCB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gYnVpbGQga21lbWxlYWs/IEFoLCB5ZXMsIGBDT05GSUdfREVCVUdfS01FTUxFQUtgIGlzIHJlcXVpcmVkLiBJIHNob3VsZCBjaGVjayBgbW0va21lbWxlYWsuY2AgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIwMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjM3OjAxLjgwMjQ4ODEwNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzEzNjA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJERUJVR19LTUVNTEVBS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZy5kZWJ1Zz0yMjI9Y29uZmlnIFBURFVNUF9ERUJVR0ZTXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTIzNi1cXG5tbS9LY29uZmlnLmRlYnVnOjIzNzpjb25maWcgSEFWRV9ERUJVR19LTUVNTEVBS1xcbm1tL0tjb25maWcuZGVidWctMjM4LVxcdGJvb2xcXG5tbS9LY29uZmlnLmRlYnVnLTIzOS1cXG5tbS9LY29uZmlnLmRlYnVnOjI0MDpjb25maWcgREVCVUdfS01FTUxFQUtcXG5tbS9LY29uZmlnLmRlYnVnLTI0MS1cXHRib29sIFxcXCJLZXJuZWwgbWVtb3J5IGxlYWsgZGV0ZWN0b3JcXFwiXFxubW0vS2NvbmZpZy5kZWJ1ZzoyNDI6XFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUwgXFx1MDAyNlxcdTAwMjYgSEFWRV9ERUJVR19LTUVNTEVBS1xcbm1tL0tjb25maWcuZGVidWctMjQzLVxcdHNlbGVjdCBERUJVR19GU1xcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0yNDctXFx0c2VsZWN0IFNUQUNLREVQT1RcXG5tbS9LY29uZmlnLmRlYnVnOjI0ODpcXHRzZWxlY3QgU1RBQ0tERVBPVF9BTFdBWVNfSU5JVCBpZiAhREVCVUdfS01FTUxFQUtfREVGQVVMVF9PRkZcXG5tbS9LY29uZmlnLmRlYnVnLTI0OS1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTI2NC1cXG5tbS9LY29uZmlnLmRlYnVnOjI2NTpjb25maWcgREVCVUdfS01FTUxFQUtfTUVNX1BPT0xfU0laRVxcbm1tL0tjb25maWcuZGVidWctMjY2LVxcdGludCBcXFwiS21lbWxlYWsgbWVtb3J5IHBvb2wgc2l6ZVxcXCJcXG5tbS9LY29uZmlnLmRlYnVnOjI2NzpcXHRkZXBlbmRzIG9uIERFQlVHX0tNRU1MRUFLXFxubW0vS2NvbmZpZy5kZWJ1Zy0yNjgtXFx0cmFuZ2UgMjAwIDEwMDAwMDBcXG4tLVxcbm1tL0tjb25maWcuZGVidWctMjc3LVxcbm1tL0tjb25maWcuZGVidWc6Mjc4OmNvbmZpZyBERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRlxcbm1tL0tjb25maWcuZGVidWctMjc5LVxcdGJvb2wgXFxcIkRlZmF1bHQga21lbWxlYWsgdG8gb2ZmXFxcIlxcbm1tL0tjb25maWcuZGVidWc6MjgwOlxcdGRlcGVuZHMgb24gREVCVUdfS01FTUxFQUtcXG5tbS9LY29uZmlnLmRlYnVnLTI4MS1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTI4NC1cXG5tbS9LY29uZmlnLmRlYnVnOjI4NTpjb25maWcgREVCVUdfS01FTUxFQUtfQVVUT19TQ0FOXFxubW0vS2NvbmZpZy5kZWJ1Zy0yODYtXFx0Ym9vbCBcXFwiRW5hYmxlIGttZW1sZWFrIGF1dG8gc2NhbiB0aHJlYWQgb24gYm9vdCB1cFxcXCJcXG5tbS9LY29uZmlnLmRlYnVnLTI4Ny1cXHRkZWZhdWx0IHlcXG5tbS9LY29uZmlnLmRlYnVnOjI4ODpcXHRkZXBlbmRzIG9uIERFQlVHX0tNRU1MRUFLXFxubW0vS2NvbmZpZy5kZWJ1Zy0yODktXFx0aGVscFxcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0yOTktXFxubW0vS2NvbmZpZy5kZWJ1ZzozMDA6Y29uZmlnIERFQlVHX0tNRU1MRUFLX1ZFUkJPU0VcXG5tbS9LY29uZmlnLmRlYnVnLTMwMS1cXHRib29sIFxcXCJEZWZhdWx0IGttZW1sZWFrIHRvIHZlcmJvc2UgbW9kZVxcXCJcXG5tbS9LY29uZmlnLmRlYnVnOjMwMjpcXHRkZXBlbmRzIG9uIERFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTlxcbm1tL0tjb25maWcuZGVidWctMzAzLVxcdGhlbHBcXG4tLVxcbm1tL01ha2VmaWxlPTExMz1vYmotJChDT05GSUdfSFdQT0lTT05fSU5KRUNUKSArPSBod3BvaXNvbi1pbmplY3Qub1xcbm1tL01ha2VmaWxlOjExNDpvYmotJChDT05GSUdfREVCVUdfS01FTUxFQUspICs9IGttZW1sZWFrLm9cXG5tbS9NYWtlZmlsZS0xMTUtb2JqLSQoQ09ORklHX0RFQlVHX1JPREFUQV9URVNUKSArPSByb2RhdGFfdGVzdC5vXFxuLS1cXG5tbS9rbWVtbGVhay5jPTE5OT1zdGF0aWMgTElTVF9IRUFEKGdyYXlfbGlzdCk7XFxubW0va21lbWxlYWsuYy0yMDAtLyogbWVtb3J5IHBvb2wgYWxsb2NhdGlvbiAqL1xcbm1tL2ttZW1sZWFrLmM6MjAxOnN0YXRpYyBzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0IG1lbV9wb29sW0NPTkZJR19ERUJVR19LTUVNTEVBS19NRU1fUE9PTF9TSVpFXTtcXG5tbS9rbWVtbGVhay5jLTIwMi1zdGF0aWMgaW50IG1lbV9wb29sX2ZyZWVfY291bnQgPSBBUlJBWV9TSVpFKG1lbV9wb29sKTtcXG4tLVxcbm1tL2ttZW1sZWFrLmM9MjQ5PXN0YXRpYyBib29sIGttZW1sZWFrX2ZvdW5kX2xlYWtzO1xcbm1tL2ttZW1sZWFrLmMtMjUwLVxcbm1tL2ttZW1sZWFrLmM6MjUxOnN0YXRpYyBib29sIGttZW1sZWFrX3ZlcmJvc2UgPSBJU19FTkFCTEVEKENPTkZJR19ERUJVR19LTUVNTEVBS19WRVJCT1NFKTtcXG5tbS9rbWVtbGVhay5jLTI1Mi1tb2R1bGVfcGFyYW1fbmFtZWQodmVyYm9zZSwga21lbWxlYWtfdmVyYm9zZSwgYm9vbCwgMDYwMCk7XFxuLS1cXG5tbS9rbWVtbGVhay5jPTQ5MD1zdGF0aWMgc3RydWN0IGttZW1sZWFrX29iamVjdCAqbWVtX3Bvb2xfYWxsb2MoZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0va21lbWxlYWsuYy01MTUtXFx0aWYgKHdhcm4pXFxubW0va21lbWxlYWsuYzo1MTY6XFx0XFx0cHJfd2Fybl9vbmNlKFxcXCJNZW1vcnkgcG9vbCBlbXB0eSwgY29uc2lkZXIgaW5jcmVhc2luZyBDT05GSUdfREVCVUdfS01FTUxFQUtfTUVNX1BPT0xfU0laRVxcXFxuXFxcIik7XFxubW0va21lbWxlYWsuYy01MTctXFxuLS1cXG5tbS9rbWVtbGVhay5jPTIwNjE9c3RhdGljIGludCBrbWVtbGVha19zY2FuX3RocmVhZCh2b2lkICphcmcpXFxubW0va21lbWxlYWsuYy0yMDYyLXtcXG5tbS9rbWVtbGVhay5jOjIwNjM6XFx0c3RhdGljIGludCBmaXJzdF9ydW4gPSBJU19FTkFCTEVEKENPTkZJR19ERUJVR19LTUVNTEVBS19BVVRPX1NDQU4pO1xcbm1tL2ttZW1sZWFrLmMtMjA2NC1cXG4tLVxcbm1tL2ttZW1sZWFrLmM9MjQ2Nj12b2lkIF9faW5pdCBrbWVtbGVha19pbml0KHZvaWQpXFxubW0va21lbWxlYWsuYy0yNDY3LXtcXG5tbS9rbWVtbGVhay5jOjI0Njg6I2lmZGVmIENPTkZJR19ERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRlxcbm1tL2ttZW1sZWFrLmMtMjQ2OS1cXHRpZiAoIWttZW1sZWFrX3NraXBfZGlzYWJsZSkge1xcbi0tXFxubW0va21lbWxlYWsuYz0yNDk5PXN0YXRpYyBpbnQgX19pbml0IGttZW1sZWFrX2xhdGVfaW5pdCh2b2lkKVxcbi0tXFxubW0va21lbWxlYWsuYy0yNTE1LVxcbm1tL2ttZW1sZWFrLmM6MjUxNjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfREVCVUdfS01FTUxFQUtfQVVUT19TQ0FOKSkge1xcbm1tL2ttZW1sZWFrLmMtMjUxNy1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZzY2FuX211dGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTM6Mzc6MDEuODY1NjMwMzM0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2MDIyMzk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGttZW1sZWFrIFNjYW4gTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtb2RpZnlpbmcgYGttZW1sZWFrX3NjYW5gIGFuZCBgX19rbWVtbGVha19zY2FuYC4gUmlnaHQsIHRob3NlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgZm9yIHRoZSBrZXJuZWwgbWVtb3J5IGxlYWsgZGV0ZWN0aW9uLiBJIGtub3cgYGttZW1sZWFrX3NjYW5gIGlzIHRoZSBlbnRyeSBwb2ludCwgY2FsbGVkIGVpdGhlciBieSB0aGUgYGttZW1sZWFrX3NjYW5fdGhyZWFkYCBvciB0aHJvdWdoIGRlYnVnZnMsIHNvIEkgZXhwZWN0IHRoYXQncyB0aGUgcHJpbWFyeSB3YXkgdGhlIHNjYW4gZ2V0cyB0cmlnZ2VyZWQuXG5cblRvIHJlYWxseSBkaWcgaW4sIEkgc2hvdWxkIHByb2JhYmx5IG1ha2Ugc3VyZSBgREVCVUdfS01FTUxFQUtgIGFuZCBgREVCVUdfS01FTUxFQUtfQVVUT19TQ0FOYCBhcmUgZW5hYmxlZC4gQWgsIHdhaXQgYSBtaW51dGUsIHF1aWNrIGNoZWNrLi4uIHllYWgsIGBERUJVR19LTUVNTEVBS19BVVRPX1NDQU5gIGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpZiBgREVCVUdfS01FTUxFQUtgIGlzLCBzbyBJIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhhdC4gR29vZCwgbGVzcyB3b3JrIGZvciBtZS5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBib3RoIGBrbWVtbGVha19zY2FuYCBhbmQgYF9fa21lbWxlYWtfc2NhbmAgZGlyZWN0bHkgaW4gYG1tL2ttZW1sZWFrLmNgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBtYWdpYyBoYXBwZW5zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgc2NhbiBpcyBiZWluZyBtb2RpZmllZCwgd2hhdCBjaGFuZ2VzIGFyZSBiZWluZyBtYWRlIHRvIHRoZSBtZW1vcnkgc2Nhbm5pbmcgcHJvY2VzcywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIHNpZGUtZWZmZWN0cyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIyNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNzowNi4yMjU4NTYxMDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI5NjYwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia21lbWxlYWtfc2NhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9rbWVtbGVhay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2ttZW1sZWFrLmMtMTE4LS8qIHNjYW5uaW5nIGFyZWEgaW5zaWRlIGEgbWVtb3J5IGJsb2NrICovXFxubW0va21lbWxlYWsuYzoxMTk6c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSB7XFxubW0va21lbWxlYWsuYy0xMjAtXFx0c3RydWN0IGhsaXN0X25vZGUgbm9kZTtcXG4tLVxcbm1tL2ttZW1sZWFrLmM9NTQyPXN0YXRpYyB2b2lkIGZyZWVfb2JqZWN0X3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbm1tL2ttZW1sZWFrLmMtNTQ0LVxcdHN0cnVjdCBobGlzdF9ub2RlICp0bXA7XFxubW0va21lbWxlYWsuYzo1NDU6XFx0c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSAqYXJlYTtcXG5tbS9rbWVtbGVhay5jLTU0Ni1cXHRzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3QgPVxcbi0tXFxubW0va21lbWxlYWsuYz05OTc9c3RhdGljIHZvaWQgYWRkX3NjYW5fYXJlYSh1bnNpZ25lZCBsb25nIHB0ciwgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcXG4tLVxcbm1tL2ttZW1sZWFrLmMtMTAwMC1cXHRzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3Q7XFxubW0va21lbWxlYWsuYzoxMDAxOlxcdHN0cnVjdCBrbWVtbGVha19zY2FuX2FyZWEgKmFyZWEgPSBOVUxMO1xcbm1tL2ttZW1sZWFrLmMtMTAwMi1cXHR1bnNpZ25lZCBsb25nIHVudGFnZ2VkX3B0cjtcXG4tLVxcbm1tL2ttZW1sZWFrLmM9MTMwOD1FWFBPUlRfU1lNQk9MKGttZW1sZWFrX2lnbm9yZSk7XFxuLS1cXG5tbS9rbWVtbGVhay5jLTEzMTAtLyoqXFxubW0va21lbWxlYWsuYzoxMzExOiAqIGttZW1sZWFrX3NjYW5fYXJlYSAtIGxpbWl0IHRoZSByYW5nZSB0byBiZSBzY2FubmVkIGluIGFuIGFsbG9jYXRlZCBvYmplY3RcXG5tbS9rbWVtbGVhay5jLTEzMTItICogQHB0cjpcXHRwb2ludGVyIHRvIGJlZ2lubmluZyBvciBpbnNpZGUgdGhlIG9iamVjdC4gVGhpcyBhbHNvXFxuLS1cXG5tbS9rbWVtbGVhay5jLTEzMjAtICovXFxubW0va21lbWxlYWsuYzoxMzIxOnZvaWQgX19yZWYga21lbWxlYWtfc2Nhbl9hcmVhKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcXG5tbS9rbWVtbGVhay5jLTEzMjIte1xcbi0tXFxubW0va21lbWxlYWsuYy0xMzI3LX1cXG5tbS9rbWVtbGVhay5jOjEzMjg6RVhQT1JUX1NZTUJPTChrbWVtbGVha19zY2FuX2FyZWEpO1xcbm1tL2ttZW1sZWFrLmMtMTMyOS1cXG4tLVxcbm1tL2ttZW1sZWFrLmM9MTU4ND1zdGF0aWMgdm9pZCBzY2FuX29iamVjdChzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3QpXFxubW0va21lbWxlYWsuYy0xNTg1LXtcXG5tbS9rbWVtbGVhay5jOjE1ODY6XFx0c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSAqYXJlYTtcXG5tbS9rbWVtbGVhay5jLTE1ODctXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbm1tL2ttZW1sZWFrLmM9MTc4ND1zdGF0aWMgdm9pZCBkZWR1cF9mbHVzaChzdHJ1Y3QgeGFycmF5ICpkZWR1cClcXG4tLVxcbm1tL2ttZW1sZWFrLmMtMTgwOC0gKi9cXG5tbS9rbWVtbGVhay5jOjE4MDk6c3RhdGljIGludCBfX2ttZW1sZWFrX3NjYW4oYm9vbCBmdWxsKVxcbm1tL2ttZW1sZWFrLmMtMTgxMC17XFxuLS1cXG5tbS9rbWVtbGVhay5jLTE5NjUtICovXFxubW0va21lbWxlYWsuYzoxOTY2OnN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcXG5tbS9rbWVtbGVhay5jLTE5Njcte1xcbi0tXFxubW0va21lbWxlYWsuYy0xOTc1LVxcdCAqL1xcbm1tL2ttZW1sZWFrLmM6MTk3NjpcXHRpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSlcXG5tbS9rbWVtbGVhay5jLTE5NzctXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0va21lbWxlYWsuYy0xOTkwLVxcdCAqL1xcbm1tL2ttZW1sZWFrLmM6MTk5MTpcXHRfX2ttZW1sZWFrX3NjYW4oZmFsc2UpO1xcbm1tL2ttZW1sZWFrLmMtMTk5Mi1cXHRpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKVxcbi0tXFxubW0va21lbWxlYWsuYy0yMDYwLSAqL1xcbm1tL2ttZW1sZWFrLmM6MjA2MTpzdGF0aWMgaW50IGttZW1sZWFrX3NjYW5fdGhyZWFkKHZvaWQgKmFyZylcXG5tbS9rbWVtbGVhay5jLTIwNjIte1xcbi0tXFxubW0va21lbWxlYWsuYy0yMDgxLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnNjYW5fbXV0ZXgpO1xcbm1tL2ttZW1sZWFrLmM6MjA4MjpcXHRcXHRrbWVtbGVha19zY2FuKCk7XFxubW0va21lbWxlYWsuYy0yMDgzLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c2Nhbl9tdXRleCk7XFxuLS1cXG5tbS9rbWVtbGVhay5jPTIwOTk9c3RhdGljIHZvaWQgc3RhcnRfc2Nhbl90aHJlYWQodm9pZClcXG4tLVxcbm1tL2ttZW1sZWFrLmMtMjEwMi1cXHRcXHRyZXR1cm47XFxubW0va21lbWxlYWsuYzoyMTAzOlxcdHNjYW5fdGhyZWFkID0ga3RocmVhZF9ydW4oa21lbWxlYWtfc2Nhbl90aHJlYWQsIE5VTEwsIFxcXCJrbWVtbGVha1xcXCIpO1xcbm1tL2ttZW1sZWFrLmMtMjEwNC1cXHRpZiAoSVNfRVJSKHNjYW5fdGhyZWFkKSkge1xcbi0tXFxubW0va21lbWxlYWsuYz0yMjk0PXN0YXRpYyBzc2l6ZV90IGttZW1sZWFrX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5tbS9rbWVtbGVhay5jLTIzNTAtXFx0fSBlbHNlIGlmIChzdHJuY21wKGJ1ZiwgXFxcInNjYW5cXFwiLCA0KSA9PSAwKVxcbm1tL2ttZW1sZWFrLmM6MjM1MTpcXHRcXHRrbWVtbGVha19zY2FuKCk7XFxubW0va21lbWxlYWsuYy0yMzUyLVxcdGVsc2UgaWYgKHN0cm5jbXAoYnVmLCBcXFwiZHVtcD1cXFwiLCA1KSA9PSAwKVxcbi0tXFxubW0va21lbWxlYWsuYz0yNDAwPXN0YXRpYyB2b2lkIGttZW1sZWFrX2RvX2NsZWFudXAoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubW0va21lbWxlYWsuYy0yNDA1LVxcdC8qXFxubW0va21lbWxlYWsuYzoyNDA2OlxcdCAqIE9uY2UgaXQgaXMgbWFkZSBzdXJlIHRoYXQga21lbWxlYWtfc2NhbiBoYXMgc3RvcHBlZCwgaXQgaXMgc2FmZSB0byBub1xcbm1tL2ttZW1sZWFrLmMtMjQwNy1cXHQgKiBsb25nZXIgdHJhY2sgb2JqZWN0IGZyZWVpbmcuIE9yZGVyaW5nIG9mIHRoZSBzY2FuIHRocmVhZCBzdG9wcGluZyBhbmRcXG4tLVxcbm1tL2ttZW1sZWFrLmM9MjQ2Nj12b2lkIF9faW5pdCBrbWVtbGVha19pbml0KHZvaWQpXFxuLS1cXG5tbS9rbWVtbGVhay5jLTI0ODEtXFx0b2JqZWN0X2NhY2hlID0gS01FTV9DQUNIRShrbWVtbGVha19vYmplY3QsIFNMQUJfTk9MRUFLVFJBQ0UpO1xcbm1tL2ttZW1sZWFrLmM6MjQ4MjpcXHRzY2FuX2FyZWFfY2FjaGUgPSBLTUVNX0NBQ0hFKGttZW1sZWFrX3NjYW5fYXJlYSwgU0xBQl9OT0xFQUtUUkFDRSk7XFxubW0va21lbWxlYWsuYy0yNDgzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNzowNi4yODg4Mjk3ODhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTAzNjYxNDc5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEttZW1sZWFrOiBBIFR3by1QYXNzIEFwcHJvYWNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBga21lbWxlYWtgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gS21lbWxlYWsgaXMgYSBkZWJ1Z2dpbmcgdG9vbCwgc28gdHJhZGl0aW9uYWxseSwgb25lIG1pZ2h0IG5vdCBwcmlvcml0aXplIGl0IGZvciBmdXp6aW5nIGluIHRoZSBzYW1lIHdheSB5b3Ugd291bGQgd2l0aCBjb3JlIGtlcm5lbCBzdWJzeXN0ZW1zLiBIb3dldmVyLCB0aGUgdXNlIG9mIFN5emthbGxlcidzIGRlYnVnZnMgaW50ZXJmYWNlIHRvIHRyaWdnZXIga21lbWxlYWsgc2NhbnMgc2hpZnRzIHRoZSBlcXVhdGlvbi4gVGhhdCBtYWtlcyBmdXp6aW5nIGEgZGVmaW5pdGUgcG9zc2liaWxpdHkuXG5cblRoZSBjb3JlIG9mIHRoZSBwYXRjaCBtb2RpZmllcyBga21lbWxlYWtfc2NhbmAgdG8gcGVyZm9ybSBhIHR3by1wYXNzIHNjYW4uIFRoaXMgdHdvLXBhc3MgYXBwcm9hY2ggaXMgY2xlYXJseSBhaW1lZCBhdCByZWR1Y2luZyBmYWxzZSBwb3NpdGl2ZXMuIE5vdywgSSBoYXZlIHRvIGNvbnNpZGVyOiBJcyBmb2N1c2luZyB0aGUgZnV6emluZyBvbiBga21lbWxlYWtfc2NhbmAgdGhlIHJpZ2h0IGFwcHJvYWNoPyBHaXZlbiB0aGF0IGBrbWVtbGVha19zY2FuYCBpcyBhIHJlbGF0aXZlbHkgaGVhdnkgb3BlcmF0aW9uLCByZXBlYXRlZGx5IHJ1bm5pbmcgaXQgaXNuJ3QgaWRlYWwsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIHRoZSBtb3N0IHJlbGV2YW50IGVudHJ5cG9pbnQgZm9yIHRoaXMgY2hhbmdlLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cblRoZSBpbXBvcnRhbnQgc3ltYm9scyB0byB0YXJnZXQgYXJlIGBfX2ttZW1sZWFrX3NjYW5gIGFuZCBga21lbWxlYWtfc2NhbmAsIGFzIHRoYXQgaXMgd2hlcmUgdGhlIGtleSBsb2dpYyByZXNpZGVzIGFuZCB3aGVyZSB0aGUgZnV6emluZyBlZmZvcnQgd2lsbCBoYXZlIHRoZSBiaWdnZXN0IGltcGFjdC4gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gaXMgYERFQlVHX0tNRU1MRUFLYC4gSSdsbCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBvdGhlciBjb25maWcgSSBuZWVkIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSwgYnV0IGBERUJVR19LTUVNTEVBS2Agc2hvdWxkIGJlIGVub3VnaC5cblxuTm93LCByZWdhcmRpbmcgcGVyZm9ybWFuY2UsIGlzIGBrbWVtbGVha19zY2FuYCBhIGhvdCBwYXRoPyBObywgaXQncyBhIGhlYXZ5IG9wZXJhdGlvbiwgYnV0IG5vdCBhIGhvdCBwYXRoIGluIHRoZSBzZW5zZSBvZiBiZWluZyBjYWxsZWQgb24gZXZlcnkgcGFja2V0IG9yIHN5c2NhbGwuIEl0J3MgY2FsbGVkIHdoZW4gdHJpZ2dlcmVkIG9yIHBlcmlvZGljYWxseSwgc28gZm9jdXNpbmcgb24gaXQgc2VlbXMgYWNjZXB0YWJsZS5cblxuSSBqdXN0IHJldmlld2VkIHRoZSBwYXRjaCBhZ2Fpbi5cbmBgYGNcbkBAIC0xOTM2LDEyICsxOTU2LDQyIEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbiBcdCAqL1xuIFx0c2Nhbl9ncmF5X2xpc3QoKTtcbiBcbitcdHJldHVybiBucl9zdXNwZWN0cztcbit9XG4rXG4rLypcbisgKiBTY2FuIHRoZSBtZW1vcnkgYW5kIHJlcG9ydCB0aGUgdW5yZWZlcmVuY2VkIG9iamVjdHMgYXMgbGVha3MuIE11c3QgYmVcbisgKiBjYWxsZWQgd2l0aCB0aGUgc2Nhbl9tdXRleCBoZWxkLlxuKyAqL1xuK3N0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbit7XG4rXHRzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3Q7XG4rXHRzdHJ1Y3QgeGFycmF5IGRlZHVwO1xuK1x0aW50IG5ld19sZWFrcyA9IDA7XG4rXG4rXHQvKlxuK1x0ICogRnVsbCBzY2FuLiBPYmplY3RzIGxlZnQgdW5yZWZlcmVuY2VkIGFyZSBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGFuZFxuK1x0ICogY291bnRlZCBpbiB0aGUgcmV0dXJuIHZhbHVlOyBub3RoaW5nIHRvIGNvbmZpcm0gb3IgcmVwb3J0IG90aGVyd2lzZS5cbitcdCAqL1xuK1x0aWYgKCFfX2ttZW1sZWFrX3NjYW4odHJ1ZSkpXG4rXHRcdHJldHVybjtcbitcbiBcdC8qXG4gXHQgKiBJZiBzY2FubmluZyB3YXMgc3RvcHBlZCBkbyBub3QgcmVwb3J0IGFueSBuZXcgdW5yZWZlcmVuY2VkIG9iamVjdHMuXG4gXHQgKi9cbiBcdGlmIChzY2FuX3Nob3VsZF9zdG9wKCkpXG4gXHRcdHJldHVybjtcbiBcbitcdC8qXG4rXHQgKiBBIGxpdmUgb2JqZWN0IHdob3NlIG9ubHkgcmVmZXJlbmNlIGlzIG1vdmVkIGJ5LCBmb3IgZXhhbXBsZSwgYVxuK1x0ICogY29uY3VycmVudCBSQ1UgdXBkYXRlIGNhbiBiZSBtaXNzZWQgZm9yIG9uZSBzY2FuIGFuZCByZXBvcnRlZCBhcyBhXG4rXHQgKiB0cmFuc2llbnQgZmFsc2UgcG9zaXRpdmUuIFNjYW4gYWdhaW4gYW5kIG9ubHkgcmVwb3J0IHRoZSBvYmplY3RzXG4rXHQgKiBsZWZ0IHVucmVmZXJlbmNlZCAoc3RpbGwgZmxhZ2dlZCBPQkpFQ1RfU1VTUEVDVCkgYnkgYm90aCBzY2Fucy5cbitcdCAqL1xuK1x0X19rbWVtbGVha19zY2FuKGZhbHNlKTtcbitcdGlmIChzY2FuX3Nob3VsZF9zdG9wKCkpXG4rXHRcdHJldHVybjtcbitcbiBgYGBcblRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLlxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuSSB3aWxsIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cbkZvY3VzU3ltYm9sczogYF9fa21lbWxlYWtfc2NhbmAsIGBrbWVtbGVha19zY2FuYC5cbkVuYWJsZUNvbmZpZ3M6IGBERUJVR19LTUVNTEVBS2AuXG5SZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrbWVtbGVhayBzY2FubmluZyBsb2dpYyB0byBwZXJmb3JtIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGttZW1sZWFrIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIGRlYnVnZnMgb3IgYXV0by1zY2FuLlwiXG5cbkxldCdzIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIG1vZGlmaWVkLlxuYHVwZGF0ZV9yZWZzYCBpcyBtb2RpZmllZC5cbmBgYGNcbkBAIC0xNDM5LDYgKzE0NDMsMTEgQEAgc3RhdGljIHZvaWQgdXBkYXRlX3JlZnMoc3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0KVxuIFx0ICovXG4gXHRvYmplY3QtXHUwMDNlY291bnQrKztcbiBcdGlmIChjb2xvcl9ncmF5KG9iamVjdCkpIHtcbitcdFx0LyogcmVmZXJlbmNlZCBhZnRlciBhbGwsIG5vIGxvbmdlciBhIHN1c3BlY3QgKi9cbitcdFx0aWYgKG9iamVjdC1cdTAwM2VmbGFncyBcdTAwMjYgT0JKRUNUX1NVU1BFQ1QpIHtcbitcdFx0XHRvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+T0JKRUNUX1NVU1BFQ1Q7XG4rXHRcdFx0bnJfc3VzcGVjdHMtLTtcbitcdFx0fVxuIFx0XHQvKiBwdXRfb2JqZWN0KCkgY2FsbGVkIHdoZW4gcmVtb3ZpbmcgZnJvbSBncmF5X2xpc3QgKi9cbiBcdFx0V0FSTl9PTighZ2V0X29iamVjdChvYmplY3QpKTtcbiBcdFx0bGlzdF9hZGRfXG5cbiIsIklucHV0VG9rZW5zIjo3MTc4LCJPdXRwdXRUb2tlbnMiOjk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNzoyMS4zMjU0NDcwMTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MDQ2MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJERUJVR19LTUVNTEVBS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fa21lbWxlYWtfc2NhblwiLFxuICAgIFwia21lbWxlYWtfc2NhblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrbWVtbGVhayBzY2FubmluZyBsb2dpYyB0byBwZXJmb3JtIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGttZW1sZWFrIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIGRlYnVnZnMgb3IgYXV0by1zY2FuLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRFQlVHX0tNRU1MRUFLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19rbWVtbGVha19zY2FuXCIsXG4gICAgXCJrbWVtbGVha19zY2FuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmdvss[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 13:25:35 +0000 UTC FinishedAt: 2026-07-10 13:37:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "954157679ec34661c2e87e7eb796104a797c32db", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEBUG_KMEMLEAK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "954157679ec34661c2e87e7eb796104a797c32db", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEBUG_KMEMLEAK" ], "series_id": "64fb56f3-74db-42d3-ab0b-1c8c9f08d2db" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__kmemleak_scan", "kmemleak_scan" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFQlVHX0tNRU1MRUFLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19rbWVtbGVha19zY2FuJiMzNDssCiAgICAmIzM0O2ttZW1sZWFrX3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTM6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4M2YyOTY2MzI1Zjc2NTRiYjljZDk4YTc1YWNmZWI4M2M1Yjk4ZDUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTM6MzY6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va21lbWxlYWsuYyBiL21tL2ttZW1sZWFrLmNcbmluZGV4IDdjN2JhMTdjZTdhZjAwLi41MDViNWMzYTQyM2JjNCAxMDA2NDRcbi0tLSBhL21tL2ttZW1sZWFrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2ttZW1sZWFrLmNcbkBAIC0xNzUsNiAmIzQzOzE3NSw4IEBAIHN0cnVjdCBrbWVtbGVha19vYmplY3Qge1xuICNkZWZpbmUgT0JKRUNUX1BIWVNcdFx0KDEgXHUwMDNjXHUwMDNjIDQpXG4gLyogZmxhZyBzZXQgZm9yIHBlci1DUFUgcG9pbnRlcnMgKi9cbiAjZGVmaW5lIE9CSkVDVF9QRVJDUFVcdFx0KDEgXHUwMDNjXHUwMDNjIDUpXG4mIzQzOy8qIGZsYWcgc2V0IG9uIGFuIG9iamVjdCBsZWZ0IHVucmVmZXJlbmNlZCBieSB0aGUgZnVsbCBzY2FuLCBwZW5kaW5nIGNvbmZpcm1hdGlvbiAqL1xuJiM0MzsjZGVmaW5lIE9CSkVDVF9TVVNQRUNUXHRcdCgxIFx1MDAzY1x1MDAzYyA2KVxuIFxuIC8qIHNldCB3aGVuIF9fcmVtb3ZlX29iamVjdCgpIGNhbGxlZCAqL1xuICNkZWZpbmUgREVMU1RBVEVfUkVNT1ZFRFx0KDEgXHUwMDNjXHUwMDNjIDApXG5AQCAtMjM1LDYgJiM0MzsyMzcsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBqaWZmaWVzX21pbl9hZ2U7XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgamlmZmllc19sYXN0X3NjYW47XG4gLyogZGVsYXkgYmV0d2VlbiBhdXRvbWF0aWMgbWVtb3J5IHNjYW5uaW5ncyAqL1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfc2Nhbl93YWl0O1xuJiM0MzsvKiBudW1iZXIgb2Ygb2JqZWN0cyBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGR1cmluZyB0aGUgY3VycmVudCBzY2FuICovXG4mIzQzO3N0YXRpYyBpbnQgbnJfc3VzcGVjdHM7XG4gLyogZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgdGFzayBzdGFja3Mgc2Nhbm5pbmcgKi9cbiBzdGF0aWMgaW50IGttZW1sZWFrX3N0YWNrX3NjYW4gPSAxO1xuIC8qIHByb3RlY3RzIHRoZSBtZW1vcnkgc2Nhbm5pbmcsIHBhcmFtZXRlcnMgYW5kIGRlYnVnL2ttZW1sZWFrIGZpbGUgYWNjZXNzICovXG5AQCAtMTQzOSw2ICYjNDM7MTQ0MywxMSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcmVmcyhzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3QpXG4gXHQgKi9cbiBcdG9iamVjdC1cdTAwM2Vjb3VudCYjNDM7JiM0Mzs7XG4gXHRpZiAoY29sb3JfZ3JheShvYmplY3QpKSB7XG4mIzQzO1x0XHQvKiByZWZlcmVuY2VkIGFmdGVyIGFsbCwgbm8gbG9uZ2VyIGEgc3VzcGVjdCAqL1xuJiM0MztcdFx0aWYgKG9iamVjdC1cdTAwM2VmbGFncyBcdTAwMjYgT0JKRUNUX1NVU1BFQ1QpIHtcbiYjNDM7XHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfk9CSkVDVF9TVVNQRUNUO1xuJiM0MztcdFx0XHRucl9zdXNwZWN0cy0tO1xuJiM0MztcdFx0fVxuIFx0XHQvKiBwdXRfb2JqZWN0KCkgY2FsbGVkIHdoZW4gcmVtb3ZpbmcgZnJvbSBncmF5X2xpc3QgKi9cbiBcdFx0V0FSTl9PTighZ2V0X29iamVjdChvYmplY3QpKTtcbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZvYmplY3QtXHUwMDNlZ3JheV9saXN0LCBcdTAwMjZncmF5X2xpc3QpO1xuQEAgLTE3OTcsMTUgJiM0MzsxODA2LDE1IEBAIHN0YXRpYyB2b2lkIGRlZHVwX2ZsdXNoKHN0cnVjdCB4YXJyYXkgKmRlZHVwKVxuICAqIGtlcm5lbCYjMzk7cyBzdGFuZGFyZCBhbGxvY2F0b3JzLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlXG4gICogc2Nhbl9tdXRleCBoZWxkLlxuICAqL1xuLXN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbiYjNDM7c3RhdGljIGludCBfX2ttZW1sZWFrX3NjYW4oYm9vbCBmdWxsKVxuIHtcbiBcdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcbiBcdHN0cnVjdCB6b25lICp6b25lO1xuIFx0aW50IF9fbWF5YmVfdW51c2VkIGk7XG4tXHRzdHJ1Y3QgeGFycmF5IGRlZHVwO1xuLVx0aW50IG5ld19sZWFrcyA9IDA7XG4gXG4gXHRqaWZmaWVzX2xhc3Rfc2NhbiA9IGppZmZpZXM7XG4mIzQzO1x0aWYgKGZ1bGwpXG4mIzQzO1x0XHRucl9zdXNwZWN0cyA9IDA7XG4gXG4gXHQvKiBwcmVwYXJlIHRoZSBrbWVtbGVha19vYmplY3QmIzM5O3MgKi9cbiBcdHJjdV9yZWFkX2xvY2soKTtcbkBAIC0xODM1LDYgJiM0MzsxODQ0LDggQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFxuIFx0XHQvKiByZXNldCB0aGUgcmVmZXJlbmNlIGNvdW50ICh3aGl0ZW4gdGhlIG9iamVjdCkgKi9cbiBcdFx0b2JqZWN0LVx1MDAzZWNvdW50ID0gMDtcbiYjNDM7XHRcdGlmIChmdWxsKVxuJiM0MztcdFx0XHRvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+T0JKRUNUX1NVU1BFQ1Q7XG4gXHRcdGlmIChjb2xvcl9ncmF5KG9iamVjdCkgXHUwMDI2XHUwMDI2IGdldF9vYmplY3Qob2JqZWN0KSlcbiBcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm9iamVjdC1cdTAwM2VncmF5X2xpc3QsIFx1MDAyNmdyYXlfbGlzdCk7XG4gXG5AQCAtMTkwNCw2ICYjNDM7MTkxNSwxMCBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpXG4gXHQgKi9cbiBcdHNjYW5fZ3JheV9saXN0KCk7XG4gXG4mIzQzO1x0LyogYSBjb25maXJtYXRpb24gc2NhbiBkb2VzIG5vdCBsb29rIGZvciBtb2RpZmllZCBvYmplY3RzICovXG4mIzQzO1x0aWYgKCFmdWxsKVxuJiM0MztcdFx0cmV0dXJuIG5yX3N1c3BlY3RzO1xuJiM0MztcbiBcdC8qXG4gXHQgKiBDaGVjayBmb3IgbmV3IG9yIHVucmVmZXJlbmNlZCBvYmplY3RzIG1vZGlmaWVkIHNpbmNlIHRoZSBwcmV2aW91c1xuIFx0ICogc2NhbiBhbmQgY29sb3IgdGhlbSBncmF5IHVudGlsIHRoZSBuZXh0IHNjYW4uXG5AQCAtMTkyNiw2ICYjNDM7MTk0MSwxMSBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpXG4gXHRcdFx0LyogY29sb3IgaXQgZ3JheSB0ZW1wb3JhcmlseSAqL1xuIFx0XHRcdG9iamVjdC1cdTAwM2Vjb3VudCA9IG9iamVjdC1cdTAwM2VtaW5fY291bnQ7XG4gXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZvYmplY3QtXHUwMDNlZ3JheV9saXN0LCBcdTAwMjZncmF5X2xpc3QpO1xuJiM0MztcdFx0fSBlbHNlIGlmICh1bnJlZmVyZW5jZWRfb2JqZWN0KG9iamVjdCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICEob2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XG4mIzQzO1x0XHRcdC8qIGZsYWcgdGhlIG9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYnkgdGhpcyBzY2FuICovXG4mIzQzO1x0XHRcdG9iamVjdC1cdTAwM2VmbGFncyB8PSBPQkpFQ1RfU1VTUEVDVDtcbiYjNDM7XHRcdFx0bnJfc3VzcGVjdHMmIzQzOyYjNDM7O1xuIFx0XHR9XG4gXHRcdHJhd19zcGluX3VubG9ja19pcnEoXHUwMDI2b2JqZWN0LVx1MDAzZWxvY2spO1xuIFx0fVxuQEAgLTE5MzYsMTIgJiM0MzsxOTU2LDQyIEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbiBcdCAqL1xuIFx0c2Nhbl9ncmF5X2xpc3QoKTtcbiBcbiYjNDM7XHRyZXR1cm4gbnJfc3VzcGVjdHM7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFNjYW4gdGhlIG1lbW9yeSBhbmQgcmVwb3J0IHRoZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyBhcyBsZWFrcy4gTXVzdCBiZVxuJiM0MzsgKiBjYWxsZWQgd2l0aCB0aGUgc2Nhbl9tdXRleCBoZWxkLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0O1xuJiM0MztcdHN0cnVjdCB4YXJyYXkgZGVkdXA7XG4mIzQzO1x0aW50IG5ld19sZWFrcyA9IDA7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRnVsbCBzY2FuLiBPYmplY3RzIGxlZnQgdW5yZWZlcmVuY2VkIGFyZSBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGFuZFxuJiM0MztcdCAqIGNvdW50ZWQgaW4gdGhlIHJldHVybiB2YWx1ZTsgbm90aGluZyB0byBjb25maXJtIG9yIHJlcG9ydCBvdGhlcndpc2UuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCFfX2ttZW1sZWFrX3NjYW4odHJ1ZSkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0LypcbiBcdCAqIElmIHNjYW5uaW5nIHdhcyBzdG9wcGVkIGRvIG5vdCByZXBvcnQgYW55IG5ldyB1bnJlZmVyZW5jZWQgb2JqZWN0cy5cbiBcdCAqL1xuIFx0aWYgKHNjYW5fc2hvdWxkX3N0b3AoKSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogQSBsaXZlIG9iamVjdCB3aG9zZSBvbmx5IHJlZmVyZW5jZSBpcyBtb3ZlZCBieSwgZm9yIGV4YW1wbGUsIGFcbiYjNDM7XHQgKiBjb25jdXJyZW50IFJDVSB1cGRhdGUgY2FuIGJlIG1pc3NlZCBmb3Igb25lIHNjYW4gYW5kIHJlcG9ydGVkIGFzIGFcbiYjNDM7XHQgKiB0cmFuc2llbnQgZmFsc2UgcG9zaXRpdmUuIFNjYW4gYWdhaW4gYW5kIG9ubHkgcmVwb3J0IHRoZSBvYmplY3RzXG4mIzQzO1x0ICogbGVmdCB1bnJlZmVyZW5jZWQgKHN0aWxsIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QpIGJ5IGJvdGggc2NhbnMuXG4mIzQzO1x0ICovXG4mIzQzO1x0X19rbWVtbGVha19zY2FuKGZhbHNlKTtcbiYjNDM7XHRpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdC8qXG4gXHQgKiBTY2FubmluZyByZXN1bHQgcmVwb3J0aW5nLiBXaGVuIHZlcmJvc2UgcHJpbnRpbmcgaXMgZW5hYmxlZCwgZGVkdXBlXG4gXHQgKiBieSBzdGFja2RlcG90IHRyYWNlX2hhbmRsZSBzbyBlYWNoIHVuaXF1ZSBiYWNrdHJhY2UgaXMgbG9nZ2VkIG9uY2VcbkBAIC0xOTY5LDYgJiM0MzsyMDE5LDcgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFx0XHR0cmFjZV9oYW5kbGUgPSAwO1xuIFx0XHRkZWR1cF9wcmludCA9IGZhbHNlO1xuIFx0XHRpZiAodW5yZWZlcmVuY2VkX29iamVjdChvYmplY3QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIChvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE9CSkVDVF9TVVNQRUNUKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICEob2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XG4gXHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIHw9IE9CSkVDVF9SRVBPUlRFRDtcbiBcdFx0XHRpZiAoa21lbWxlYWtfdmVyYm9zZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFQlVHX0tNRU1MRUFLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19rbWVtbGVha19zY2FuJiMzNDssCiAgICAmIzM0O2ttZW1sZWFrX3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgzZjI5NjYzMjVmNzY1NGJiOWNkOThhNzVhY2ZlYjgzYzViOThkNTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxMzozNjo1NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2ttZW1sZWFrLmMgYi9tbS9rbWVtbGVhay5jCmluZGV4IDdjN2JhMTdjZTdhZjAwLi41MDViNWMzYTQyM2JjNCAxMDA2NDQKLS0tIGEvbW0va21lbWxlYWsuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9rbWVtbGVhay5jCkBAIC0xNzUsNiAmIzQzOzE3NSw4IEBAIHN0cnVjdCBrbWVtbGVha19vYmplY3QgewogI2RlZmluZSBPQkpFQ1RfUEhZUwkJKDEgJmx0OyZsdDsgNCkKIC8qIGZsYWcgc2V0IGZvciBwZXItQ1BVIHBvaW50ZXJzICovCiAjZGVmaW5lIE9CSkVDVF9QRVJDUFUJCSgxICZsdDsmbHQ7IDUpCiYjNDM7LyogZmxhZyBzZXQgb24gYW4gb2JqZWN0IGxlZnQgdW5yZWZlcmVuY2VkIGJ5IHRoZSBmdWxsIHNjYW4sIHBlbmRpbmcgY29uZmlybWF0aW9uICovCiYjNDM7I2RlZmluZSBPQkpFQ1RfU1VTUEVDVAkJKDEgJmx0OyZsdDsgNikKIAogLyogc2V0IHdoZW4gX19yZW1vdmVfb2JqZWN0KCkgY2FsbGVkICovCiAjZGVmaW5lIERFTFNUQVRFX1JFTU9WRUQJKDEgJmx0OyZsdDsgMCkKQEAgLTIzNSw2ICYjNDM7MjM3LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgamlmZmllc19taW5fYWdlOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgamlmZmllc19sYXN0X3NjYW47CiAvKiBkZWxheSBiZXR3ZWVuIGF1dG9tYXRpYyBtZW1vcnkgc2Nhbm5pbmdzICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBqaWZmaWVzX3NjYW5fd2FpdDsKJiM0MzsvKiBudW1iZXIgb2Ygb2JqZWN0cyBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGR1cmluZyB0aGUgY3VycmVudCBzY2FuICovCiYjNDM7c3RhdGljIGludCBucl9zdXNwZWN0czsKIC8qIGVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHRhc2sgc3RhY2tzIHNjYW5uaW5nICovCiBzdGF0aWMgaW50IGttZW1sZWFrX3N0YWNrX3NjYW4gPSAxOwogLyogcHJvdGVjdHMgdGhlIG1lbW9yeSBzY2FubmluZywgcGFyYW1ldGVycyBhbmQgZGVidWcva21lbWxlYWsgZmlsZSBhY2Nlc3MgKi8KQEAgLTE0MzksNiAmIzQzOzE0NDMsMTEgQEAgc3RhdGljIHZvaWQgdXBkYXRlX3JlZnMoc3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0KQogCSAqLwogCW9iamVjdC0mZ3Q7Y291bnQmIzQzOyYjNDM7OwogCWlmIChjb2xvcl9ncmF5KG9iamVjdCkpIHsKJiM0MzsJCS8qIHJlZmVyZW5jZWQgYWZ0ZXIgYWxsLCBubyBsb25nZXIgYSBzdXNwZWN0ICovCiYjNDM7CQlpZiAob2JqZWN0LSZndDtmbGFncyAmYW1wOyBPQkpFQ1RfU1VTUEVDVCkgewomIzQzOwkJCW9iamVjdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5PQkpFQ1RfU1VTUEVDVDsKJiM0MzsJCQlucl9zdXNwZWN0cy0tOwomIzQzOwkJfQogCQkvKiBwdXRfb2JqZWN0KCkgY2FsbGVkIHdoZW4gcmVtb3ZpbmcgZnJvbSBncmF5X2xpc3QgKi8KIAkJV0FSTl9PTighZ2V0X29iamVjdChvYmplY3QpKTsKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO29iamVjdC0mZ3Q7Z3JheV9saXN0LCAmYW1wO2dyYXlfbGlzdCk7CkBAIC0xNzk3LDE1ICYjNDM7MTgwNiwxNSBAQCBzdGF0aWMgdm9pZCBkZWR1cF9mbHVzaChzdHJ1Y3QgeGFycmF5ICpkZWR1cCkKICAqIGtlcm5lbCYjMzk7cyBzdGFuZGFyZCBhbGxvY2F0b3JzLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlCiAgKiBzY2FuX211dGV4IGhlbGQuCiAgKi8KLXN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZCkKJiM0MztzdGF0aWMgaW50IF9fa21lbWxlYWtfc2Nhbihib29sIGZ1bGwpCiB7CiAJc3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0OwogCXN0cnVjdCB6b25lICp6b25lOwogCWludCBfX21heWJlX3VudXNlZCBpOwotCXN0cnVjdCB4YXJyYXkgZGVkdXA7Ci0JaW50IG5ld19sZWFrcyA9IDA7CiAKIAlqaWZmaWVzX2xhc3Rfc2NhbiA9IGppZmZpZXM7CiYjNDM7CWlmIChmdWxsKQomIzQzOwkJbnJfc3VzcGVjdHMgPSAwOwogCiAJLyogcHJlcGFyZSB0aGUga21lbWxlYWtfb2JqZWN0JiMzOTtzICovCiAJcmN1X3JlYWRfbG9jaygpOwpAQCAtMTgzNSw2ICYjNDM7MTg0NCw4IEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZCkKIAogCQkvKiByZXNldCB0aGUgcmVmZXJlbmNlIGNvdW50ICh3aGl0ZW4gdGhlIG9iamVjdCkgKi8KIAkJb2JqZWN0LSZndDtjb3VudCA9IDA7CiYjNDM7CQlpZiAoZnVsbCkKJiM0MzsJCQlvYmplY3QtJmd0O2ZsYWdzICZhbXA7PSB+T0JKRUNUX1NVU1BFQ1Q7CiAJCWlmIChjb2xvcl9ncmF5KG9iamVjdCkgJmFtcDsmYW1wOyBnZXRfb2JqZWN0KG9iamVjdCkpCiAJCQlsaXN0X2FkZF90YWlsKCZhbXA7b2JqZWN0LSZndDtncmF5X2xpc3QsICZhbXA7Z3JheV9saXN0KTsKIApAQCAtMTkwNCw2ICYjNDM7MTkxNSwxMCBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpCiAJICovCiAJc2Nhbl9ncmF5X2xpc3QoKTsKIAomIzQzOwkvKiBhIGNvbmZpcm1hdGlvbiBzY2FuIGRvZXMgbm90IGxvb2sgZm9yIG1vZGlmaWVkIG9iamVjdHMgKi8KJiM0MzsJaWYgKCFmdWxsKQomIzQzOwkJcmV0dXJuIG5yX3N1c3BlY3RzOwomIzQzOwogCS8qCiAJICogQ2hlY2sgZm9yIG5ldyBvciB1bnJlZmVyZW5jZWQgb2JqZWN0cyBtb2RpZmllZCBzaW5jZSB0aGUgcHJldmlvdXMKIAkgKiBzY2FuIGFuZCBjb2xvciB0aGVtIGdyYXkgdW50aWwgdGhlIG5leHQgc2Nhbi4KQEAgLTE5MjYsNiAmIzQzOzE5NDEsMTEgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKQogCQkJLyogY29sb3IgaXQgZ3JheSB0ZW1wb3JhcmlseSAqLwogCQkJb2JqZWN0LSZndDtjb3VudCA9IG9iamVjdC0mZ3Q7bWluX2NvdW50OwogCQkJbGlzdF9hZGRfdGFpbCgmYW1wO29iamVjdC0mZ3Q7Z3JheV9saXN0LCAmYW1wO2dyYXlfbGlzdCk7CiYjNDM7CQl9IGVsc2UgaWYgKHVucmVmZXJlbmNlZF9vYmplY3Qob2JqZWN0KSAmYW1wOyZhbXA7CiYjNDM7CQkJICAgIShvYmplY3QtJmd0O2ZsYWdzICZhbXA7IE9CSkVDVF9SRVBPUlRFRCkpIHsKJiM0MzsJCQkvKiBmbGFnIHRoZSBvYmplY3RzIGxlZnQgdW5yZWZlcmVuY2VkIGJ5IHRoaXMgc2NhbiAqLwomIzQzOwkJCW9iamVjdC0mZ3Q7ZmxhZ3MgfD0gT0JKRUNUX1NVU1BFQ1Q7CiYjNDM7CQkJbnJfc3VzcGVjdHMmIzQzOyYjNDM7OwogCQl9CiAJCXJhd19zcGluX3VubG9ja19pcnEoJmFtcDtvYmplY3QtJmd0O2xvY2spOwogCX0KQEAgLTE5MzYsMTIgJiM0MzsxOTU2LDQyIEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZCkKIAkgKi8KIAlzY2FuX2dyYXlfbGlzdCgpOwogCiYjNDM7CXJldHVybiBucl9zdXNwZWN0czsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBTY2FuIHRoZSBtZW1vcnkgYW5kIHJlcG9ydCB0aGUgdW5yZWZlcmVuY2VkIG9iamVjdHMgYXMgbGVha3MuIE11c3QgYmUKJiM0MzsgKiBjYWxsZWQgd2l0aCB0aGUgc2Nhbl9tdXRleCBoZWxkLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDsKJiM0MzsJc3RydWN0IHhhcnJheSBkZWR1cDsKJiM0MzsJaW50IG5ld19sZWFrcyA9IDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEZ1bGwgc2Nhbi4gT2JqZWN0cyBsZWZ0IHVucmVmZXJlbmNlZCBhcmUgZmxhZ2dlZCBPQkpFQ1RfU1VTUEVDVCBhbmQKJiM0MzsJICogY291bnRlZCBpbiB0aGUgcmV0dXJuIHZhbHVlOyBub3RoaW5nIHRvIGNvbmZpcm0gb3IgcmVwb3J0IG90aGVyd2lzZS4KJiM0MzsJICovCiYjNDM7CWlmICghX19rbWVtbGVha19zY2FuKHRydWUpKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCS8qCiAJICogSWYgc2Nhbm5pbmcgd2FzIHN0b3BwZWQgZG8gbm90IHJlcG9ydCBhbnkgbmV3IHVucmVmZXJlbmNlZCBvYmplY3RzLgogCSAqLwogCWlmIChzY2FuX3Nob3VsZF9zdG9wKCkpCiAJCXJldHVybjsKIAomIzQzOwkvKgomIzQzOwkgKiBBIGxpdmUgb2JqZWN0IHdob3NlIG9ubHkgcmVmZXJlbmNlIGlzIG1vdmVkIGJ5LCBmb3IgZXhhbXBsZSwgYQomIzQzOwkgKiBjb25jdXJyZW50IFJDVSB1cGRhdGUgY2FuIGJlIG1pc3NlZCBmb3Igb25lIHNjYW4gYW5kIHJlcG9ydGVkIGFzIGEKJiM0MzsJICogdHJhbnNpZW50IGZhbHNlIHBvc2l0aXZlLiBTY2FuIGFnYWluIGFuZCBvbmx5IHJlcG9ydCB0aGUgb2JqZWN0cwomIzQzOwkgKiBsZWZ0IHVucmVmZXJlbmNlZCAoc3RpbGwgZmxhZ2dlZCBPQkpFQ1RfU1VTUEVDVCkgYnkgYm90aCBzY2Fucy4KJiM0MzsJICovCiYjNDM7CV9fa21lbWxlYWtfc2NhbihmYWxzZSk7CiYjNDM7CWlmIChzY2FuX3Nob3VsZF9zdG9wKCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJLyoKIAkgKiBTY2FubmluZyByZXN1bHQgcmVwb3J0aW5nLiBXaGVuIHZlcmJvc2UgcHJpbnRpbmcgaXMgZW5hYmxlZCwgZGVkdXBlCiAJICogYnkgc3RhY2tkZXBvdCB0cmFjZV9oYW5kbGUgc28gZWFjaCB1bmlxdWUgYmFja3RyYWNlIGlzIGxvZ2dlZCBvbmNlCkBAIC0xOTY5LDYgJiM0MzsyMDE5LDcgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKQogCQl0cmFjZV9oYW5kbGUgPSAwOwogCQlkZWR1cF9wcmludCA9IGZhbHNlOwogCQlpZiAodW5yZWZlcmVuY2VkX29iamVjdChvYmplY3QpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAob2JqZWN0LSZndDtmbGFncyAmYW1wOyBPQkpFQ1RfU1VTUEVDVCkgJmFtcDsmYW1wOwogCQkgICAgIShvYmplY3QtJmd0O2ZsYWdzICZhbXA7IE9CSkVDVF9SRVBPUlRFRCkpIHsKIAkJCW9iamVjdC0mZ3Q7ZmxhZ3MgfD0gT0JKRUNUX1JFUE9SVEVEOwogCQkJaWYgKGttZW1sZWFrX3ZlcmJvc2UpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTM6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIwMgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBLbWVtbGVhayBQYXRjaDogQSBDb25zaWRlcmVkIERlY2lzaW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgbGFuZGVkLCBtb2RpZnlpbmcgYG1tL2ttZW1sZWFrLmNgLiBJdCYjMzk7cyBpbnRyb2R1Y2luZyB0aGlzIGBPQkpFQ1RfU1VTUEVDVGAgZmxhZyBhbmQgdGhlIGBucl9zdXNwZWN0c2AgdmFyaWFibGUsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXQmIzM5O3MgY2hhbmdpbmcgaG93IHRoZSBga21lbWxlYWtfc2NhbmAgZnVuY3Rpb24gd29ya3MuIEl0IG5vdyBoYXMgdGhpcyB0d28tcGFzcyBzY2FuOiBhIGZ1bGwgc2NhbiBmaXJzdCwgYW5kIHRoZW4gYSBzZWNvbmQgcGFzcyBpZiBpdCBmaW5kcyBwb3RlbnRpYWwgc3VzcGVjdHMuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cga21lbWxlYWsgb3BlcmF0ZXMuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgd2hldGhlciB0aGlzIGRlc2VydmVzIGEgZnV6emluZyBjYW1wYWlnbi4gS21lbWxlYWsgaXMsIGF0IGl0cyBoZWFydCwgYSBkZWJ1Z2dpbmcgdG9vbCwgYSBkaWFnbm9zdGljIG1lY2hhbmlzbS4gSXQmIzM5O3MgbWVhbnQgdG8gYmUgcnVuIHBlcmlvZGljYWxseSBvciBtYW51YWxseSB0cmlnZ2VyZWQgdmlhIGRlYnVnZnMuIEZ1enppbmcgKmttZW1sZWFrIGl0c2VsZiogbWlnaHQgbm90IGJlIHRoZSBtb3N0IGZydWl0ZnVsIGFwcHJvYWNoIGZvciB1bmNvdmVyaW5nIGtlcm5lbCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlICYjMzQ7dHJhZGl0aW9uYWwmIzM0OyBzZW5zZS4gSSB3b3VsZG4mIzM5O3QgZXhwZWN0IHRvIGZpbmQgYSBtYXNzaXZlIHNlY3VyaXR5IGZsYXcgYnkgZnV6emluZyB0aGlzIG1vZHVsZSBkaXJlY3RseS4gQnV0LCB3YWl0LCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gY29yZSBrZXJuZWwgbG9naWMuIEl0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUgaXNzdWVzLgoKU28sIHdoaWxlIEkmIzM5O20gbm90IGV4cGVjdGluZyBhIG1hc3NpdmUgcGF5b2ZmIGluIHRlcm1zIG9mIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgSSBzaG91bGQgY29uc2lkZXIgaXQuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYSBkZWJ1Z2dpbmcgZmVhdHVyZSBtYWtlcyBtZSB3b25kZXIgaWYgZnV6emluZyBpcyB0aGUgcmlnaHQgdG9vbC4gSG93ZXZlciwgaXQmIzM5O3Mgc3RpbGwgcGFydCBvZiB0aGUgY29yZSBrZXJuZWwgY29kZSAoYG1tL2ttZW1sZWFrLmNgKSwgc28gaXQgZGVmaW5pdGVseSB3YXJyYW50cyBhIGRlZXBlciBkaXZlLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gYnVpbGQga21lbWxlYWs/IEFoLCB5ZXMsIGBDT05GSUdfREVCVUdfS01FTUxFQUtgIGlzIHJlcXVpcmVkLiBJIHNob3VsZCBjaGVjayBgbW0va21lbWxlYWsuY2AgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtERUJVR19LTUVNTEVBSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnLmRlYnVnPTIyMj1jb25maWcgUFREVU1QX0RFQlVHRlNcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTIzNi1cbm1tL0tjb25maWcuZGVidWc6MjM3OmNvbmZpZyBIQVZFX0RFQlVHX0tNRU1MRUFLXG5tbS9LY29uZmlnLmRlYnVnLTIzOC1cdGJvb2xcbm1tL0tjb25maWcuZGVidWctMjM5LVxubW0vS2NvbmZpZy5kZWJ1ZzoyNDA6Y29uZmlnIERFQlVHX0tNRU1MRUFLXG5tbS9LY29uZmlnLmRlYnVnLTI0MS1cdGJvb2wgXCYjMzQ7S2VybmVsIG1lbW9yeSBsZWFrIGRldGVjdG9yXCYjMzQ7XG5tbS9LY29uZmlnLmRlYnVnOjI0MjpcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMIFx1MDAyNlx1MDAyNiBIQVZFX0RFQlVHX0tNRU1MRUFLXG5tbS9LY29uZmlnLmRlYnVnLTI0My1cdHNlbGVjdCBERUJVR19GU1xuLS1cbm1tL0tjb25maWcuZGVidWctMjQ3LVx0c2VsZWN0IFNUQUNLREVQT1Rcbm1tL0tjb25maWcuZGVidWc6MjQ4Olx0c2VsZWN0IFNUQUNLREVQT1RfQUxXQVlTX0lOSVQgaWYgIURFQlVHX0tNRU1MRUFLX0RFRkFVTFRfT0ZGXG5tbS9LY29uZmlnLmRlYnVnLTI0OS1cdGhlbHBcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTI2NC1cbm1tL0tjb25maWcuZGVidWc6MjY1OmNvbmZpZyBERUJVR19LTUVNTEVBS19NRU1fUE9PTF9TSVpFXG5tbS9LY29uZmlnLmRlYnVnLTI2Ni1cdGludCBcJiMzNDtLbWVtbGVhayBtZW1vcnkgcG9vbCBzaXplXCYjMzQ7XG5tbS9LY29uZmlnLmRlYnVnOjI2NzpcdGRlcGVuZHMgb24gREVCVUdfS01FTUxFQUtcbm1tL0tjb25maWcuZGVidWctMjY4LVx0cmFuZ2UgMjAwIDEwMDAwMDBcbi0tXG5tbS9LY29uZmlnLmRlYnVnLTI3Ny1cbm1tL0tjb25maWcuZGVidWc6Mjc4OmNvbmZpZyBERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRlxubW0vS2NvbmZpZy5kZWJ1Zy0yNzktXHRib29sIFwmIzM0O0RlZmF1bHQga21lbWxlYWsgdG8gb2ZmXCYjMzQ7XG5tbS9LY29uZmlnLmRlYnVnOjI4MDpcdGRlcGVuZHMgb24gREVCVUdfS01FTUxFQUtcbm1tL0tjb25maWcuZGVidWctMjgxLVx0aGVscFxuLS1cbm1tL0tjb25maWcuZGVidWctMjg0LVxubW0vS2NvbmZpZy5kZWJ1ZzoyODU6Y29uZmlnIERFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTlxubW0vS2NvbmZpZy5kZWJ1Zy0yODYtXHRib29sIFwmIzM0O0VuYWJsZSBrbWVtbGVhayBhdXRvIHNjYW4gdGhyZWFkIG9uIGJvb3QgdXBcJiMzNDtcbm1tL0tjb25maWcuZGVidWctMjg3LVx0ZGVmYXVsdCB5XG5tbS9LY29uZmlnLmRlYnVnOjI4ODpcdGRlcGVuZHMgb24gREVCVUdfS01FTUxFQUtcbm1tL0tjb25maWcuZGVidWctMjg5LVx0aGVscFxuLS1cbm1tL0tjb25maWcuZGVidWctMjk5LVxubW0vS2NvbmZpZy5kZWJ1ZzozMDA6Y29uZmlnIERFQlVHX0tNRU1MRUFLX1ZFUkJPU0Vcbm1tL0tjb25maWcuZGVidWctMzAxLVx0Ym9vbCBcJiMzNDtEZWZhdWx0IGttZW1sZWFrIHRvIHZlcmJvc2UgbW9kZVwmIzM0O1xubW0vS2NvbmZpZy5kZWJ1ZzozMDI6XHRkZXBlbmRzIG9uIERFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTlxubW0vS2NvbmZpZy5kZWJ1Zy0zMDMtXHRoZWxwXG4tLVxubW0vTWFrZWZpbGU9MTEzPW9iai0kKENPTkZJR19IV1BPSVNPTl9JTkpFQ1QpICYjNDM7PSBod3BvaXNvbi1pbmplY3Qub1xubW0vTWFrZWZpbGU6MTE0Om9iai0kKENPTkZJR19ERUJVR19LTUVNTEVBSykgJiM0Mzs9IGttZW1sZWFrLm9cbm1tL01ha2VmaWxlLTExNS1vYmotJChDT05GSUdfREVCVUdfUk9EQVRBX1RFU1QpICYjNDM7PSByb2RhdGFfdGVzdC5vXG4tLVxubW0va21lbWxlYWsuYz0xOTk9c3RhdGljIExJU1RfSEVBRChncmF5X2xpc3QpO1xubW0va21lbWxlYWsuYy0yMDAtLyogbWVtb3J5IHBvb2wgYWxsb2NhdGlvbiAqL1xubW0va21lbWxlYWsuYzoyMDE6c3RhdGljIHN0cnVjdCBrbWVtbGVha19vYmplY3QgbWVtX3Bvb2xbQ09ORklHX0RFQlVHX0tNRU1MRUFLX01FTV9QT09MX1NJWkVdO1xubW0va21lbWxlYWsuYy0yMDItc3RhdGljIGludCBtZW1fcG9vbF9mcmVlX2NvdW50ID0gQVJSQVlfU0laRShtZW1fcG9vbCk7XG4tLVxubW0va21lbWxlYWsuYz0yNDk9c3RhdGljIGJvb2wga21lbWxlYWtfZm91bmRfbGVha3M7XG5tbS9rbWVtbGVhay5jLTI1MC1cbm1tL2ttZW1sZWFrLmM6MjUxOnN0YXRpYyBib29sIGttZW1sZWFrX3ZlcmJvc2UgPSBJU19FTkFCTEVEKENPTkZJR19ERUJVR19LTUVNTEVBS19WRVJCT1NFKTtcbm1tL2ttZW1sZWFrLmMtMjUyLW1vZHVsZV9wYXJhbV9uYW1lZCh2ZXJib3NlLCBrbWVtbGVha192ZXJib3NlLCBib29sLCAwNjAwKTtcbi0tXG5tbS9rbWVtbGVhay5jPTQ5MD1zdGF0aWMgc3RydWN0IGttZW1sZWFrX29iamVjdCAqbWVtX3Bvb2xfYWxsb2MoZ2ZwX3QgZ2ZwKVxuLS1cbm1tL2ttZW1sZWFrLmMtNTE1LVx0aWYgKHdhcm4pXG5tbS9rbWVtbGVhay5jOjUxNjpcdFx0cHJfd2Fybl9vbmNlKFwmIzM0O01lbW9yeSBwb29sIGVtcHR5LCBjb25zaWRlciBpbmNyZWFzaW5nIENPTkZJR19ERUJVR19LTUVNTEVBS19NRU1fUE9PTF9TSVpFXFxuXCYjMzQ7KTtcbm1tL2ttZW1sZWFrLmMtNTE3LVxuLS1cbm1tL2ttZW1sZWFrLmM9MjA2MT1zdGF0aWMgaW50IGttZW1sZWFrX3NjYW5fdGhyZWFkKHZvaWQgKmFyZylcbm1tL2ttZW1sZWFrLmMtMjA2Mi17XG5tbS9rbWVtbGVhay5jOjIwNjM6XHRzdGF0aWMgaW50IGZpcnN0X3J1biA9IElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTik7XG5tbS9rbWVtbGVhay5jLTIwNjQtXG4tLVxubW0va21lbWxlYWsuYz0yNDY2PXZvaWQgX19pbml0IGttZW1sZWFrX2luaXQodm9pZClcbm1tL2ttZW1sZWFrLmMtMjQ2Ny17XG5tbS9rbWVtbGVhay5jOjI0Njg6I2lmZGVmIENPTkZJR19ERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRlxubW0va21lbWxlYWsuYy0yNDY5LVx0aWYgKCFrbWVtbGVha19za2lwX2Rpc2FibGUpIHtcbi0tXG5tbS9rbWVtbGVhay5jPTI0OTk9c3RhdGljIGludCBfX2luaXQga21lbWxlYWtfbGF0ZV9pbml0KHZvaWQpXG4tLVxubW0va21lbWxlYWsuYy0yNTE1LVxubW0va21lbWxlYWsuYzoyNTE2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTikpIHtcbm1tL2ttZW1sZWFrLmMtMjUxNy1cdFx0bXV0ZXhfbG9jayhcdTAwMjZzY2FuX211dGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMzozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjI3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUga21lbWxlYWsgU2NhbiBNZWNoYW5pc20qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBga21lbWxlYWtfc2NhbmAgYW5kIGBfX2ttZW1sZWFrX3NjYW5gLiBSaWdodCwgdGhvc2UgYXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgdGhlIGtlcm5lbCBtZW1vcnkgbGVhayBkZXRlY3Rpb24uIEkga25vdyBga21lbWxlYWtfc2NhbmAgaXMgdGhlIGVudHJ5IHBvaW50LCBjYWxsZWQgZWl0aGVyIGJ5IHRoZSBga21lbWxlYWtfc2Nhbl90aHJlYWRgIG9yIHRocm91Z2ggZGVidWdmcywgc28gSSBleHBlY3QgdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSB3YXkgdGhlIHNjYW4gZ2V0cyB0cmlnZ2VyZWQuCgpUbyByZWFsbHkgZGlnIGluLCBJIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgYERFQlVHX0tNRU1MRUFLYCBhbmQgYERFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTmAgYXJlIGVuYWJsZWQuIEFoLCB3YWl0IGEgbWludXRlLCBxdWljayBjaGVjay4uLiB5ZWFoLCBgREVCVUdfS01FTUxFQUtfQVVUT19TQ0FOYCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaWYgYERFQlVHX0tNRU1MRUFLYCBpcywgc28gSSBkb24mIzM5O3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGF0LiBHb29kLCBsZXNzIHdvcmsgZm9yIG1lLgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYm90aCBga21lbWxlYWtfc2NhbmAgYW5kIGBfX2ttZW1sZWFrX3NjYW5gIGRpcmVjdGx5IGluIGBtbS9rbWVtbGVhay5jYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIG1hZ2ljIGhhcHBlbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBzY2FuIGlzIGJlaW5nIG1vZGlmaWVkLCB3aGF0IGNoYW5nZXMgYXJlIGJlaW5nIG1hZGUgdG8gdGhlIG1lbW9yeSBzY2FubmluZyBwcm9jZXNzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgc2lkZS1lZmZlY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrbWVtbGVha19zY2FuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0va21lbWxlYWsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9rbWVtbGVhay5jLTExOC0vKiBzY2FubmluZyBhcmVhIGluc2lkZSBhIG1lbW9yeSBibG9jayAqL1xubW0va21lbWxlYWsuYzoxMTk6c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSB7XG5tbS9rbWVtbGVhay5jLTEyMC1cdHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7XG4tLVxubW0va21lbWxlYWsuYz01NDI9c3RhdGljIHZvaWQgZnJlZV9vYmplY3RfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KVxuLS1cbm1tL2ttZW1sZWFrLmMtNTQ0LVx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcbm1tL2ttZW1sZWFrLmM6NTQ1Olx0c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSAqYXJlYTtcbm1tL2ttZW1sZWFrLmMtNTQ2LVx0c3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0ID1cbi0tXG5tbS9rbWVtbGVhay5jPTk5Nz1zdGF0aWMgdm9pZCBhZGRfc2Nhbl9hcmVhKHVuc2lnbmVkIGxvbmcgcHRyLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKVxuLS1cbm1tL2ttZW1sZWFrLmMtMTAwMC1cdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcbm1tL2ttZW1sZWFrLmM6MTAwMTpcdHN0cnVjdCBrbWVtbGVha19zY2FuX2FyZWEgKmFyZWEgPSBOVUxMO1xubW0va21lbWxlYWsuYy0xMDAyLVx0dW5zaWduZWQgbG9uZyB1bnRhZ2dlZF9wdHI7XG4tLVxubW0va21lbWxlYWsuYz0xMzA4PUVYUE9SVF9TWU1CT0woa21lbWxlYWtfaWdub3JlKTtcbi0tXG5tbS9rbWVtbGVhay5jLTEzMTAtLyoqXG5tbS9rbWVtbGVhay5jOjEzMTE6ICoga21lbWxlYWtfc2Nhbl9hcmVhIC0gbGltaXQgdGhlIHJhbmdlIHRvIGJlIHNjYW5uZWQgaW4gYW4gYWxsb2NhdGVkIG9iamVjdFxubW0va21lbWxlYWsuYy0xMzEyLSAqIEBwdHI6XHRwb2ludGVyIHRvIGJlZ2lubmluZyBvciBpbnNpZGUgdGhlIG9iamVjdC4gVGhpcyBhbHNvXG4tLVxubW0va21lbWxlYWsuYy0xMzIwLSAqL1xubW0va21lbWxlYWsuYzoxMzIxOnZvaWQgX19yZWYga21lbWxlYWtfc2Nhbl9hcmVhKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcbm1tL2ttZW1sZWFrLmMtMTMyMi17XG4tLVxubW0va21lbWxlYWsuYy0xMzI3LX1cbm1tL2ttZW1sZWFrLmM6MTMyODpFWFBPUlRfU1lNQk9MKGttZW1sZWFrX3NjYW5fYXJlYSk7XG5tbS9rbWVtbGVhay5jLTEzMjktXG4tLVxubW0va21lbWxlYWsuYz0xNTg0PXN0YXRpYyB2b2lkIHNjYW5fb2JqZWN0KHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdClcbm1tL2ttZW1sZWFrLmMtMTU4NS17XG5tbS9rbWVtbGVhay5jOjE1ODY6XHRzdHJ1Y3Qga21lbWxlYWtfc2Nhbl9hcmVhICphcmVhO1xubW0va21lbWxlYWsuYy0xNTg3LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5tbS9rbWVtbGVhay5jPTE3ODQ9c3RhdGljIHZvaWQgZGVkdXBfZmx1c2goc3RydWN0IHhhcnJheSAqZGVkdXApXG4tLVxubW0va21lbWxlYWsuYy0xODA4LSAqL1xubW0va21lbWxlYWsuYzoxODA5OnN0YXRpYyBpbnQgX19rbWVtbGVha19zY2FuKGJvb2wgZnVsbClcbm1tL2ttZW1sZWFrLmMtMTgxMC17XG4tLVxubW0va21lbWxlYWsuYy0xOTY1LSAqL1xubW0va21lbWxlYWsuYzoxOTY2OnN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbm1tL2ttZW1sZWFrLmMtMTk2Ny17XG4tLVxubW0va21lbWxlYWsuYy0xOTc1LVx0ICovXG5tbS9rbWVtbGVhay5jOjE5NzY6XHRpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSlcbm1tL2ttZW1sZWFrLmMtMTk3Ny1cdFx0cmV0dXJuO1xuLS1cbm1tL2ttZW1sZWFrLmMtMTk5MC1cdCAqL1xubW0va21lbWxlYWsuYzoxOTkxOlx0X19rbWVtbGVha19zY2FuKGZhbHNlKTtcbm1tL2ttZW1sZWFrLmMtMTk5Mi1cdGlmIChzY2FuX3Nob3VsZF9zdG9wKCkpXG4tLVxubW0va21lbWxlYWsuYy0yMDYwLSAqL1xubW0va21lbWxlYWsuYzoyMDYxOnN0YXRpYyBpbnQga21lbWxlYWtfc2Nhbl90aHJlYWQodm9pZCAqYXJnKVxubW0va21lbWxlYWsuYy0yMDYyLXtcbi0tXG5tbS9rbWVtbGVhay5jLTIwODEtXHRcdG11dGV4X2xvY2soXHUwMDI2c2Nhbl9tdXRleCk7XG5tbS9rbWVtbGVhay5jOjIwODI6XHRcdGttZW1sZWFrX3NjYW4oKTtcbm1tL2ttZW1sZWFrLmMtMjA4My1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNjYW5fbXV0ZXgpO1xuLS1cbm1tL2ttZW1sZWFrLmM9MjA5OT1zdGF0aWMgdm9pZCBzdGFydF9zY2FuX3RocmVhZCh2b2lkKVxuLS1cbm1tL2ttZW1sZWFrLmMtMjEwMi1cdFx0cmV0dXJuO1xubW0va21lbWxlYWsuYzoyMTAzOlx0c2Nhbl90aHJlYWQgPSBrdGhyZWFkX3J1bihrbWVtbGVha19zY2FuX3RocmVhZCwgTlVMTCwgXCYjMzQ7a21lbWxlYWtcJiMzNDspO1xubW0va21lbWxlYWsuYy0yMTA0LVx0aWYgKElTX0VSUihzY2FuX3RocmVhZCkpIHtcbi0tXG5tbS9rbWVtbGVhay5jPTIyOTQ9c3RhdGljIHNzaXplX3Qga21lbWxlYWtfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5tbS9rbWVtbGVhay5jLTIzNTAtXHR9IGVsc2UgaWYgKHN0cm5jbXAoYnVmLCBcJiMzNDtzY2FuXCYjMzQ7LCA0KSA9PSAwKVxubW0va21lbWxlYWsuYzoyMzUxOlx0XHRrbWVtbGVha19zY2FuKCk7XG5tbS9rbWVtbGVhay5jLTIzNTItXHRlbHNlIGlmIChzdHJuY21wKGJ1ZiwgXCYjMzQ7ZHVtcD1cJiMzNDssIDUpID09IDApXG4tLVxubW0va21lbWxlYWsuYz0yNDAwPXN0YXRpYyB2b2lkIGttZW1sZWFrX2RvX2NsZWFudXAoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm1tL2ttZW1sZWFrLmMtMjQwNS1cdC8qXG5tbS9rbWVtbGVhay5jOjI0MDY6XHQgKiBPbmNlIGl0IGlzIG1hZGUgc3VyZSB0aGF0IGttZW1sZWFrX3NjYW4gaGFzIHN0b3BwZWQsIGl0IGlzIHNhZmUgdG8gbm9cbm1tL2ttZW1sZWFrLmMtMjQwNy1cdCAqIGxvbmdlciB0cmFjayBvYmplY3QgZnJlZWluZy4gT3JkZXJpbmcgb2YgdGhlIHNjYW4gdGhyZWFkIHN0b3BwaW5nIGFuZFxuLS1cbm1tL2ttZW1sZWFrLmM9MjQ2Nj12b2lkIF9faW5pdCBrbWVtbGVha19pbml0KHZvaWQpXG4tLVxubW0va21lbWxlYWsuYy0yNDgxLVx0b2JqZWN0X2NhY2hlID0gS01FTV9DQUNIRShrbWVtbGVha19vYmplY3QsIFNMQUJfTk9MRUFLVFJBQ0UpO1xubW0va21lbWxlYWsuYzoyNDgyOlx0c2Nhbl9hcmVhX2NhY2hlID0gS01FTV9DQUNIRShrbWVtbGVha19zY2FuX2FyZWEsIFNMQUJfTk9MRUFLVFJBQ0UpO1xubW0va21lbWxlYWsuYy0yNDgzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEzOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzgKCQkJCQkJCW91dHB1dDogOTkKCQkJCQkJCXRob3VnaHRzOiAxMDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgS21lbWxlYWs6IEEgVHdvLVBhc3MgQXBwcm9hY2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYGttZW1sZWFrYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEttZW1sZWFrIGlzIGEgZGVidWdnaW5nIHRvb2wsIHNvIHRyYWRpdGlvbmFsbHksIG9uZSBtaWdodCBub3QgcHJpb3JpdGl6ZSBpdCBmb3IgZnV6emluZyBpbiB0aGUgc2FtZSB3YXkgeW91IHdvdWxkIHdpdGggY29yZSBrZXJuZWwgc3Vic3lzdGVtcy4gSG93ZXZlciwgdGhlIHVzZSBvZiBTeXprYWxsZXImIzM5O3MgZGVidWdmcyBpbnRlcmZhY2UgdG8gdHJpZ2dlciBrbWVtbGVhayBzY2FucyBzaGlmdHMgdGhlIGVxdWF0aW9uLiBUaGF0IG1ha2VzIGZ1enppbmcgYSBkZWZpbml0ZSBwb3NzaWJpbGl0eS4KClRoZSBjb3JlIG9mIHRoZSBwYXRjaCBtb2RpZmllcyBga21lbWxlYWtfc2NhbmAgdG8gcGVyZm9ybSBhIHR3by1wYXNzIHNjYW4uIFRoaXMgdHdvLXBhc3MgYXBwcm9hY2ggaXMgY2xlYXJseSBhaW1lZCBhdCByZWR1Y2luZyBmYWxzZSBwb3NpdGl2ZXMuIE5vdywgSSBoYXZlIHRvIGNvbnNpZGVyOiBJcyBmb2N1c2luZyB0aGUgZnV6emluZyBvbiBga21lbWxlYWtfc2NhbmAgdGhlIHJpZ2h0IGFwcHJvYWNoPyBHaXZlbiB0aGF0IGBrbWVtbGVha19zY2FuYCBpcyBhIHJlbGF0aXZlbHkgaGVhdnkgb3BlcmF0aW9uLCByZXBlYXRlZGx5IHJ1bm5pbmcgaXQgaXNuJiMzOTt0IGlkZWFsLCBidXQgaXQgYXBwZWFycyB0byBiZSB0aGUgbW9zdCByZWxldmFudCBlbnRyeXBvaW50IGZvciB0aGlzIGNoYW5nZS4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYC4KClRoZSBpbXBvcnRhbnQgc3ltYm9scyB0byB0YXJnZXQgYXJlIGBfX2ttZW1sZWFrX3NjYW5gIGFuZCBga21lbWxlYWtfc2NhbmAsIGFzIHRoYXQgaXMgd2hlcmUgdGhlIGtleSBsb2dpYyByZXNpZGVzIGFuZCB3aGVyZSB0aGUgZnV6emluZyBlZmZvcnQgd2lsbCBoYXZlIHRoZSBiaWdnZXN0IGltcGFjdC4gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gaXMgYERFQlVHX0tNRU1MRUFLYC4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgY29uZmlnIEkgbmVlZCB0byBleHBsaWNpdGx5IGluY2x1ZGUsIGJ1dCBgREVCVUdfS01FTUxFQUtgIHNob3VsZCBiZSBlbm91Z2guCgpOb3csIHJlZ2FyZGluZyBwZXJmb3JtYW5jZSwgaXMgYGttZW1sZWFrX3NjYW5gIGEgaG90IHBhdGg/IE5vLCBpdCYjMzk7cyBhIGhlYXZ5IG9wZXJhdGlvbiwgYnV0IG5vdCBhIGhvdCBwYXRoIGluIHRoZSBzZW5zZSBvZiBiZWluZyBjYWxsZWQgb24gZXZlcnkgcGFja2V0IG9yIHN5c2NhbGwuIEl0JiMzOTtzIGNhbGxlZCB3aGVuIHRyaWdnZXJlZCBvciBwZXJpb2RpY2FsbHksIHNvIGZvY3VzaW5nIG9uIGl0IHNlZW1zIGFjY2VwdGFibGUuCgpJIGp1c3QgcmV2aWV3ZWQgdGhlIHBhdGNoIGFnYWluLgpgYGBjCkBAIC0xOTM2LDEyICYjNDM7MTk1Niw0MiBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpCiAJICovCiAJc2Nhbl9ncmF5X2xpc3QoKTsKIAomIzQzOwlyZXR1cm4gbnJfc3VzcGVjdHM7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogU2NhbiB0aGUgbWVtb3J5IGFuZCByZXBvcnQgdGhlIHVucmVmZXJlbmNlZCBvYmplY3RzIGFzIGxlYWtzLiBNdXN0IGJlCiYjNDM7ICogY2FsbGVkIHdpdGggdGhlIHNjYW5fbXV0ZXggaGVsZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3Q7CiYjNDM7CXN0cnVjdCB4YXJyYXkgZGVkdXA7CiYjNDM7CWludCBuZXdfbGVha3MgPSAwOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBGdWxsIHNjYW4uIE9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYXJlIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QgYW5kCiYjNDM7CSAqIGNvdW50ZWQgaW4gdGhlIHJldHVybiB2YWx1ZTsgbm90aGluZyB0byBjb25maXJtIG9yIHJlcG9ydCBvdGhlcndpc2UuCiYjNDM7CSAqLwomIzQzOwlpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAkvKgogCSAqIElmIHNjYW5uaW5nIHdhcyBzdG9wcGVkIGRvIG5vdCByZXBvcnQgYW55IG5ldyB1bnJlZmVyZW5jZWQgb2JqZWN0cy4KIAkgKi8KIAlpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKQogCQlyZXR1cm47CiAKJiM0MzsJLyoKJiM0MzsJICogQSBsaXZlIG9iamVjdCB3aG9zZSBvbmx5IHJlZmVyZW5jZSBpcyBtb3ZlZCBieSwgZm9yIGV4YW1wbGUsIGEKJiM0MzsJICogY29uY3VycmVudCBSQ1UgdXBkYXRlIGNhbiBiZSBtaXNzZWQgZm9yIG9uZSBzY2FuIGFuZCByZXBvcnRlZCBhcyBhCiYjNDM7CSAqIHRyYW5zaWVudCBmYWxzZSBwb3NpdGl2ZS4gU2NhbiBhZ2FpbiBhbmQgb25seSByZXBvcnQgdGhlIG9iamVjdHMKJiM0MzsJICogbGVmdCB1bnJlZmVyZW5jZWQgKHN0aWxsIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QpIGJ5IGJvdGggc2NhbnMuCiYjNDM7CSAqLwomIzQzOwlfX2ttZW1sZWFrX3NjYW4oZmFsc2UpOwomIzQzOwlpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKQomIzQzOwkJcmV0dXJuOwomIzQzOwogYGBgClRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuCkkgd2lsbCByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCkZvY3VzU3ltYm9sczogYF9fa21lbWxlYWtfc2NhbmAsIGBrbWVtbGVha19zY2FuYC4KRW5hYmxlQ29uZmlnczogYERFQlVHX0tNRU1MRUFLYC4KUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUga21lbWxlYWsgc2Nhbm5pbmcgbG9naWMgdG8gcGVyZm9ybSBhIHR3by1wYXNzIHNjYW4gdG8gcmVkdWNlIGZhbHNlIHBvc2l0aXZlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrbWVtbGVhayBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBkZWJ1Z2ZzIG9yIGF1dG8tc2Nhbi4mIzM0OwoKTGV0JiMzOTtzIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIG1vZGlmaWVkLgpgdXBkYXRlX3JlZnNgIGlzIG1vZGlmaWVkLgpgYGBjCkBAIC0xNDM5LDYgJiM0MzsxNDQzLDExIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWZzKHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdCkKIAkgKi8KIAlvYmplY3QtJmd0O2NvdW50JiM0MzsmIzQzOzsKIAlpZiAoY29sb3JfZ3JheShvYmplY3QpKSB7CiYjNDM7CQkvKiByZWZlcmVuY2VkIGFmdGVyIGFsbCwgbm8gbG9uZ2VyIGEgc3VzcGVjdCAqLwomIzQzOwkJaWYgKG9iamVjdC0mZ3Q7ZmxhZ3MgJmFtcDsgT0JKRUNUX1NVU1BFQ1QpIHsKJiM0MzsJCQlvYmplY3QtJmd0O2ZsYWdzICZhbXA7PSB+T0JKRUNUX1NVU1BFQ1Q7CiYjNDM7CQkJbnJfc3VzcGVjdHMtLTsKJiM0MzsJCX0KIAkJLyogcHV0X29iamVjdCgpIGNhbGxlZCB3aGVuIHJlbW92aW5nIGZyb20gZ3JheV9saXN0ICovCiAJCVdBUk5fT04oIWdldF9vYmplY3Qob2JqZWN0KSk7CiAJCWxpc3RfYWRkXwoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTM6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFQlVHX0tNRU1MRUFLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19rbWVtbGVha19zY2FuJiMzNDssCiAgICAmIzM0O2ttZW1sZWFrX3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFQlVHX0tNRU1MRUFLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19rbWVtbGVha19zY2FuJiMzNDssCiAgICAmIzM0O2ttZW1sZWFrX3NjYW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNjo1NS42MTg0NzAzODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTc5MTAzODYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJERUJVR19LTUVNTEVBS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fa21lbWxlYWtfc2NhblwiLFxuICAgIFwia21lbWxlYWtfc2NhblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrbWVtbGVhayBzY2FubmluZyBsb2dpYyB0byBwZXJmb3JtIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGttZW1sZWFrIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIGRlYnVnZnMgb3IgYXV0by1zY2FuLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNjo1NS42MTg0NzU3NjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNDMxODE2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDgzZjI5NjYzMjVmNzY1NGJiOWNkOThhNzVhY2ZlYjgzYzViOThkNTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTM6MzY6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0va21lbWxlYWsuYyBiL21tL2ttZW1sZWFrLmNcXG5pbmRleCA3YzdiYTE3Y2U3YWYwMC4uNTA1YjVjM2E0MjNiYzQgMTAwNjQ0XFxuLS0tIGEvbW0va21lbWxlYWsuY1xcbisrKyBiL21tL2ttZW1sZWFrLmNcXG5AQCAtMTc1LDYgKzE3NSw4IEBAIHN0cnVjdCBrbWVtbGVha19vYmplY3Qge1xcbiAjZGVmaW5lIE9CSkVDVF9QSFlTXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgNClcXG4gLyogZmxhZyBzZXQgZm9yIHBlci1DUFUgcG9pbnRlcnMgKi9cXG4gI2RlZmluZSBPQkpFQ1RfUEVSQ1BVXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgNSlcXG4rLyogZmxhZyBzZXQgb24gYW4gb2JqZWN0IGxlZnQgdW5yZWZlcmVuY2VkIGJ5IHRoZSBmdWxsIHNjYW4sIHBlbmRpbmcgY29uZmlybWF0aW9uICovXFxuKyNkZWZpbmUgT0JKRUNUX1NVU1BFQ1RcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyA2KVxcbiBcXG4gLyogc2V0IHdoZW4gX19yZW1vdmVfb2JqZWN0KCkgY2FsbGVkICovXFxuICNkZWZpbmUgREVMU1RBVEVfUkVNT1ZFRFxcdCgxIFxcdTAwM2NcXHUwMDNjIDApXFxuQEAgLTIzNSw2ICsyMzcsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBqaWZmaWVzX21pbl9hZ2U7XFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfbGFzdF9zY2FuO1xcbiAvKiBkZWxheSBiZXR3ZWVuIGF1dG9tYXRpYyBtZW1vcnkgc2Nhbm5pbmdzICovXFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfc2Nhbl93YWl0O1xcbisvKiBudW1iZXIgb2Ygb2JqZWN0cyBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGR1cmluZyB0aGUgY3VycmVudCBzY2FuICovXFxuK3N0YXRpYyBpbnQgbnJfc3VzcGVjdHM7XFxuIC8qIGVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHRhc2sgc3RhY2tzIHNjYW5uaW5nICovXFxuIHN0YXRpYyBpbnQga21lbWxlYWtfc3RhY2tfc2NhbiA9IDE7XFxuIC8qIHByb3RlY3RzIHRoZSBtZW1vcnkgc2Nhbm5pbmcsIHBhcmFtZXRlcnMgYW5kIGRlYnVnL2ttZW1sZWFrIGZpbGUgYWNjZXNzICovXFxuQEAgLTE0MzksNiArMTQ0MywxMSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcmVmcyhzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3QpXFxuIFxcdCAqL1xcbiBcXHRvYmplY3QtXFx1MDAzZWNvdW50Kys7XFxuIFxcdGlmIChjb2xvcl9ncmF5KG9iamVjdCkpIHtcXG4rXFx0XFx0LyogcmVmZXJlbmNlZCBhZnRlciBhbGwsIG5vIGxvbmdlciBhIHN1c3BlY3QgKi9cXG4rXFx0XFx0aWYgKG9iamVjdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBPQkpFQ1RfU1VTUEVDVCkge1xcbitcXHRcXHRcXHRvYmplY3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5PQkpFQ1RfU1VTUEVDVDtcXG4rXFx0XFx0XFx0bnJfc3VzcGVjdHMtLTtcXG4rXFx0XFx0fVxcbiBcXHRcXHQvKiBwdXRfb2JqZWN0KCkgY2FsbGVkIHdoZW4gcmVtb3ZpbmcgZnJvbSBncmF5X2xpc3QgKi9cXG4gXFx0XFx0V0FSTl9PTighZ2V0X29iamVjdChvYmplY3QpKTtcXG4gXFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2b2JqZWN0LVxcdTAwM2VncmF5X2xpc3QsIFxcdTAwMjZncmF5X2xpc3QpO1xcbkBAIC0xNzk3LDE1ICsxODA2LDE1IEBAIHN0YXRpYyB2b2lkIGRlZHVwX2ZsdXNoKHN0cnVjdCB4YXJyYXkgKmRlZHVwKVxcbiAgKiBrZXJuZWwncyBzdGFuZGFyZCBhbGxvY2F0b3JzLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlXFxuICAqIHNjYW5fbXV0ZXggaGVsZC5cXG4gICovXFxuLXN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcXG4rc3RhdGljIGludCBfX2ttZW1sZWFrX3NjYW4oYm9vbCBmdWxsKVxcbiB7XFxuIFxcdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcXG4gXFx0c3RydWN0IHpvbmUgKnpvbmU7XFxuIFxcdGludCBfX21heWJlX3VudXNlZCBpO1xcbi1cXHRzdHJ1Y3QgeGFycmF5IGRlZHVwO1xcbi1cXHRpbnQgbmV3X2xlYWtzID0gMDtcXG4gXFxuIFxcdGppZmZpZXNfbGFzdF9zY2FuID0gamlmZmllcztcXG4rXFx0aWYgKGZ1bGwpXFxuK1xcdFxcdG5yX3N1c3BlY3RzID0gMDtcXG4gXFxuIFxcdC8qIHByZXBhcmUgdGhlIGttZW1sZWFrX29iamVjdCdzICovXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG5AQCAtMTgzNSw2ICsxODQ0LDggQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxcbiBcXG4gXFx0XFx0LyogcmVzZXQgdGhlIHJlZmVyZW5jZSBjb3VudCAod2hpdGVuIHRoZSBvYmplY3QpICovXFxuIFxcdFxcdG9iamVjdC1cXHUwMDNlY291bnQgPSAwO1xcbitcXHRcXHRpZiAoZnVsbClcXG4rXFx0XFx0XFx0b2JqZWN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+T0JKRUNUX1NVU1BFQ1Q7XFxuIFxcdFxcdGlmIChjb2xvcl9ncmF5KG9iamVjdCkgXFx1MDAyNlxcdTAwMjYgZ2V0X29iamVjdChvYmplY3QpKVxcbiBcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZvYmplY3QtXFx1MDAzZWdyYXlfbGlzdCwgXFx1MDAyNmdyYXlfbGlzdCk7XFxuIFxcbkBAIC0xOTA0LDYgKzE5MTUsMTAgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxcbiBcXHQgKi9cXG4gXFx0c2Nhbl9ncmF5X2xpc3QoKTtcXG4gXFxuK1xcdC8qIGEgY29uZmlybWF0aW9uIHNjYW4gZG9lcyBub3QgbG9vayBmb3IgbW9kaWZpZWQgb2JqZWN0cyAqL1xcbitcXHRpZiAoIWZ1bGwpXFxuK1xcdFxcdHJldHVybiBucl9zdXNwZWN0cztcXG4rXFxuIFxcdC8qXFxuIFxcdCAqIENoZWNrIGZvciBuZXcgb3IgdW5yZWZlcmVuY2VkIG9iamVjdHMgbW9kaWZpZWQgc2luY2UgdGhlIHByZXZpb3VzXFxuIFxcdCAqIHNjYW4gYW5kIGNvbG9yIHRoZW0gZ3JheSB1bnRpbCB0aGUgbmV4dCBzY2FuLlxcbkBAIC0xOTI2LDYgKzE5NDEsMTEgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxcbiBcXHRcXHRcXHQvKiBjb2xvciBpdCBncmF5IHRlbXBvcmFyaWx5ICovXFxuIFxcdFxcdFxcdG9iamVjdC1cXHUwMDNlY291bnQgPSBvYmplY3QtXFx1MDAzZW1pbl9jb3VudDtcXG4gXFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2b2JqZWN0LVxcdTAwM2VncmF5X2xpc3QsIFxcdTAwMjZncmF5X2xpc3QpO1xcbitcXHRcXHR9IGVsc2UgaWYgKHVucmVmZXJlbmNlZF9vYmplY3Qob2JqZWN0KSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAhKG9iamVjdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XFxuK1xcdFxcdFxcdC8qIGZsYWcgdGhlIG9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYnkgdGhpcyBzY2FuICovXFxuK1xcdFxcdFxcdG9iamVjdC1cXHUwMDNlZmxhZ3MgfD0gT0JKRUNUX1NVU1BFQ1Q7XFxuK1xcdFxcdFxcdG5yX3N1c3BlY3RzKys7XFxuIFxcdFxcdH1cXG4gXFx0XFx0cmF3X3NwaW5fdW5sb2NrX2lycShcXHUwMDI2b2JqZWN0LVxcdTAwM2Vsb2NrKTtcXG4gXFx0fVxcbkBAIC0xOTM2LDEyICsxOTU2LDQyIEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcXG4gXFx0ICovXFxuIFxcdHNjYW5fZ3JheV9saXN0KCk7XFxuIFxcbitcXHRyZXR1cm4gbnJfc3VzcGVjdHM7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFNjYW4gdGhlIG1lbW9yeSBhbmQgcmVwb3J0IHRoZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyBhcyBsZWFrcy4gTXVzdCBiZVxcbisgKiBjYWxsZWQgd2l0aCB0aGUgc2Nhbl9tdXRleCBoZWxkLlxcbisgKi9cXG4rc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcXG4rXFx0c3RydWN0IHhhcnJheSBkZWR1cDtcXG4rXFx0aW50IG5ld19sZWFrcyA9IDA7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBGdWxsIHNjYW4uIE9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYXJlIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QgYW5kXFxuK1xcdCAqIGNvdW50ZWQgaW4gdGhlIHJldHVybiB2YWx1ZTsgbm90aGluZyB0byBjb25maXJtIG9yIHJlcG9ydCBvdGhlcndpc2UuXFxuK1xcdCAqL1xcbitcXHRpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0LypcXG4gXFx0ICogSWYgc2Nhbm5pbmcgd2FzIHN0b3BwZWQgZG8gbm90IHJlcG9ydCBhbnkgbmV3IHVucmVmZXJlbmNlZCBvYmplY3RzLlxcbiBcXHQgKi9cXG4gXFx0aWYgKHNjYW5fc2hvdWxkX3N0b3AoKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogQSBsaXZlIG9iamVjdCB3aG9zZSBvbmx5IHJlZmVyZW5jZSBpcyBtb3ZlZCBieSwgZm9yIGV4YW1wbGUsIGFcXG4rXFx0ICogY29uY3VycmVudCBSQ1UgdXBkYXRlIGNhbiBiZSBtaXNzZWQgZm9yIG9uZSBzY2FuIGFuZCByZXBvcnRlZCBhcyBhXFxuK1xcdCAqIHRyYW5zaWVudCBmYWxzZSBwb3NpdGl2ZS4gU2NhbiBhZ2FpbiBhbmQgb25seSByZXBvcnQgdGhlIG9iamVjdHNcXG4rXFx0ICogbGVmdCB1bnJlZmVyZW5jZWQgKHN0aWxsIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QpIGJ5IGJvdGggc2NhbnMuXFxuK1xcdCAqL1xcbitcXHRfX2ttZW1sZWFrX3NjYW4oZmFsc2UpO1xcbitcXHRpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBTY2FubmluZyByZXN1bHQgcmVwb3J0aW5nLiBXaGVuIHZlcmJvc2UgcHJpbnRpbmcgaXMgZW5hYmxlZCwgZGVkdXBlXFxuIFxcdCAqIGJ5IHN0YWNrZGVwb3QgdHJhY2VfaGFuZGxlIHNvIGVhY2ggdW5pcXVlIGJhY2t0cmFjZSBpcyBsb2dnZWQgb25jZVxcbkBAIC0xOTY5LDYgKzIwMTksNyBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpXFxuIFxcdFxcdHRyYWNlX2hhbmRsZSA9IDA7XFxuIFxcdFxcdGRlZHVwX3ByaW50ID0gZmFsc2U7XFxuIFxcdFxcdGlmICh1bnJlZmVyZW5jZWRfb2JqZWN0KG9iamVjdCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIChvYmplY3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgT0JKRUNUX1NVU1BFQ1QpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAhKG9iamVjdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XFxuIFxcdFxcdFxcdG9iamVjdC1cXHUwMDNlZmxhZ3MgfD0gT0JKRUNUX1JFUE9SVEVEO1xcbiBcXHRcXHRcXHRpZiAoa21lbWxlYWtfdmVyYm9zZSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNjo1Ni4wMjM3NTYzMzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1Mzg1NzQyMjc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRFQlVHX0tNRU1MRUFLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19rbWVtbGVha19zY2FuXCIsXG4gICAgXCJrbWVtbGVha19zY2FuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODNmMjk2NjMyNWY3NjU0YmI5Y2Q5OGE3NWFjZmViODNjNWI5OGQ1MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDEzOjM2OjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va21lbWxlYWsuYyBiL21tL2ttZW1sZWFrLmNcbmluZGV4IDdjN2JhMTdjZTdhZjAwLi41MDViNWMzYTQyM2JjNCAxMDA2NDRcbi0tLSBhL21tL2ttZW1sZWFrLmNcbisrKyBiL21tL2ttZW1sZWFrLmNcbkBAIC0xNzUsNiArMTc1LDggQEAgc3RydWN0IGttZW1sZWFrX29iamVjdCB7XG4gI2RlZmluZSBPQkpFQ1RfUEhZU1x0XHQoMSBcdTAwM2NcdTAwM2MgNClcbiAvKiBmbGFnIHNldCBmb3IgcGVyLUNQVSBwb2ludGVycyAqL1xuICNkZWZpbmUgT0JKRUNUX1BFUkNQVVx0XHQoMSBcdTAwM2NcdTAwM2MgNSlcbisvKiBmbGFnIHNldCBvbiBhbiBvYmplY3QgbGVmdCB1bnJlZmVyZW5jZWQgYnkgdGhlIGZ1bGwgc2NhbiwgcGVuZGluZyBjb25maXJtYXRpb24gKi9cbisjZGVmaW5lIE9CSkVDVF9TVVNQRUNUXHRcdCgxIFx1MDAzY1x1MDAzYyA2KVxuIFxuIC8qIHNldCB3aGVuIF9fcmVtb3ZlX29iamVjdCgpIGNhbGxlZCAqL1xuICNkZWZpbmUgREVMU1RBVEVfUkVNT1ZFRFx0KDEgXHUwMDNjXHUwMDNjIDApXG5AQCAtMjM1LDYgKzIzNyw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNfbWluX2FnZTtcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBqaWZmaWVzX2xhc3Rfc2NhbjtcbiAvKiBkZWxheSBiZXR3ZWVuIGF1dG9tYXRpYyBtZW1vcnkgc2Nhbm5pbmdzICovXG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgamlmZmllc19zY2FuX3dhaXQ7XG4rLyogbnVtYmVyIG9mIG9iamVjdHMgZmxhZ2dlZCBPQkpFQ1RfU1VTUEVDVCBkdXJpbmcgdGhlIGN1cnJlbnQgc2NhbiAqL1xuK3N0YXRpYyBpbnQgbnJfc3VzcGVjdHM7XG4gLyogZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgdGFzayBzdGFja3Mgc2Nhbm5pbmcgKi9cbiBzdGF0aWMgaW50IGttZW1sZWFrX3N0YWNrX3NjYW4gPSAxO1xuIC8qIHByb3RlY3RzIHRoZSBtZW1vcnkgc2Nhbm5pbmcsIHBhcmFtZXRlcnMgYW5kIGRlYnVnL2ttZW1sZWFrIGZpbGUgYWNjZXNzICovXG5AQCAtMTQzOSw2ICsxNDQzLDExIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWZzKHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdClcbiBcdCAqL1xuIFx0b2JqZWN0LVx1MDAzZWNvdW50Kys7XG4gXHRpZiAoY29sb3JfZ3JheShvYmplY3QpKSB7XG4rXHRcdC8qIHJlZmVyZW5jZWQgYWZ0ZXIgYWxsLCBubyBsb25nZXIgYSBzdXNwZWN0ICovXG4rXHRcdGlmIChvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE9CSkVDVF9TVVNQRUNUKSB7XG4rXHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfk9CSkVDVF9TVVNQRUNUO1xuK1x0XHRcdG5yX3N1c3BlY3RzLS07XG4rXHRcdH1cbiBcdFx0LyogcHV0X29iamVjdCgpIGNhbGxlZCB3aGVuIHJlbW92aW5nIGZyb20gZ3JheV9saXN0ICovXG4gXHRcdFdBUk5fT04oIWdldF9vYmplY3Qob2JqZWN0KSk7XG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2b2JqZWN0LVx1MDAzZWdyYXlfbGlzdCwgXHUwMDI2Z3JheV9saXN0KTtcbkBAIC0xNzk3LDE1ICsxODA2LDE1IEBAIHN0YXRpYyB2b2lkIGRlZHVwX2ZsdXNoKHN0cnVjdCB4YXJyYXkgKmRlZHVwKVxuICAqIGtlcm5lbCdzIHN0YW5kYXJkIGFsbG9jYXRvcnMuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGVcbiAgKiBzY2FuX211dGV4IGhlbGQuXG4gICovXG4tc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuK3N0YXRpYyBpbnQgX19rbWVtbGVha19zY2FuKGJvb2wgZnVsbClcbiB7XG4gXHRzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3Q7XG4gXHRzdHJ1Y3Qgem9uZSAqem9uZTtcbiBcdGludCBfX21heWJlX3VudXNlZCBpO1xuLVx0c3RydWN0IHhhcnJheSBkZWR1cDtcbi1cdGludCBuZXdfbGVha3MgPSAwO1xuIFxuIFx0amlmZmllc19sYXN0X3NjYW4gPSBqaWZmaWVzO1xuK1x0aWYgKGZ1bGwpXG4rXHRcdG5yX3N1c3BlY3RzID0gMDtcbiBcbiBcdC8qIHByZXBhcmUgdGhlIGttZW1sZWFrX29iamVjdCdzICovXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG5AQCAtMTgzNSw2ICsxODQ0LDggQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFxuIFx0XHQvKiByZXNldCB0aGUgcmVmZXJlbmNlIGNvdW50ICh3aGl0ZW4gdGhlIG9iamVjdCkgKi9cbiBcdFx0b2JqZWN0LVx1MDAzZWNvdW50ID0gMDtcbitcdFx0aWYgKGZ1bGwpXG4rXHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfk9CSkVDVF9TVVNQRUNUO1xuIFx0XHRpZiAoY29sb3JfZ3JheShvYmplY3QpIFx1MDAyNlx1MDAyNiBnZXRfb2JqZWN0KG9iamVjdCkpXG4gXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZvYmplY3QtXHUwMDNlZ3JheV9saXN0LCBcdTAwMjZncmF5X2xpc3QpO1xuIFxuQEAgLTE5MDQsNiArMTkxNSwxMCBAQCBzdGF0aWMgdm9pZCBrbWVtbGVha19zY2FuKHZvaWQpXG4gXHQgKi9cbiBcdHNjYW5fZ3JheV9saXN0KCk7XG4gXG4rXHQvKiBhIGNvbmZpcm1hdGlvbiBzY2FuIGRvZXMgbm90IGxvb2sgZm9yIG1vZGlmaWVkIG9iamVjdHMgKi9cbitcdGlmICghZnVsbClcbitcdFx0cmV0dXJuIG5yX3N1c3BlY3RzO1xuK1xuIFx0LypcbiBcdCAqIENoZWNrIGZvciBuZXcgb3IgdW5yZWZlcmVuY2VkIG9iamVjdHMgbW9kaWZpZWQgc2luY2UgdGhlIHByZXZpb3VzXG4gXHQgKiBzY2FuIGFuZCBjb2xvciB0aGVtIGdyYXkgdW50aWwgdGhlIG5leHQgc2Nhbi5cbkBAIC0xOTI2LDYgKzE5NDEsMTEgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFx0XHRcdC8qIGNvbG9yIGl0IGdyYXkgdGVtcG9yYXJpbHkgKi9cbiBcdFx0XHRvYmplY3QtXHUwMDNlY291bnQgPSBvYmplY3QtXHUwMDNlbWluX2NvdW50O1xuIFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2b2JqZWN0LVx1MDAzZWdyYXlfbGlzdCwgXHUwMDI2Z3JheV9saXN0KTtcbitcdFx0fSBlbHNlIGlmICh1bnJlZmVyZW5jZWRfb2JqZWN0KG9iamVjdCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgIShvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE9CSkVDVF9SRVBPUlRFRCkpIHtcbitcdFx0XHQvKiBmbGFnIHRoZSBvYmplY3RzIGxlZnQgdW5yZWZlcmVuY2VkIGJ5IHRoaXMgc2NhbiAqL1xuK1x0XHRcdG9iamVjdC1cdTAwM2VmbGFncyB8PSBPQkpFQ1RfU1VTUEVDVDtcbitcdFx0XHRucl9zdXNwZWN0cysrO1xuIFx0XHR9XG4gXHRcdHJhd19zcGluX3VubG9ja19pcnEoXHUwMDI2b2JqZWN0LVx1MDAzZWxvY2spO1xuIFx0fVxuQEAgLTE5MzYsMTIgKzE5NTYsNDIgQEAgc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuIFx0ICovXG4gXHRzY2FuX2dyYXlfbGlzdCgpO1xuIFxuK1x0cmV0dXJuIG5yX3N1c3BlY3RzO1xuK31cbitcbisvKlxuKyAqIFNjYW4gdGhlIG1lbW9yeSBhbmQgcmVwb3J0IHRoZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyBhcyBsZWFrcy4gTXVzdCBiZVxuKyAqIGNhbGxlZCB3aXRoIHRoZSBzY2FuX211dGV4IGhlbGQuXG4rICovXG4rc3RhdGljIHZvaWQga21lbWxlYWtfc2Nhbih2b2lkKVxuK3tcbitcdHN0cnVjdCBrbWVtbGVha19vYmplY3QgKm9iamVjdDtcbitcdHN0cnVjdCB4YXJyYXkgZGVkdXA7XG4rXHRpbnQgbmV3X2xlYWtzID0gMDtcbitcbitcdC8qXG4rXHQgKiBGdWxsIHNjYW4uIE9iamVjdHMgbGVmdCB1bnJlZmVyZW5jZWQgYXJlIGZsYWdnZWQgT0JKRUNUX1NVU1BFQ1QgYW5kXG4rXHQgKiBjb3VudGVkIGluIHRoZSByZXR1cm4gdmFsdWU7IG5vdGhpbmcgdG8gY29uZmlybSBvciByZXBvcnQgb3RoZXJ3aXNlLlxuK1x0ICovXG4rXHRpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0LypcbiBcdCAqIElmIHNjYW5uaW5nIHdhcyBzdG9wcGVkIGRvIG5vdCByZXBvcnQgYW55IG5ldyB1bnJlZmVyZW5jZWQgb2JqZWN0cy5cbiBcdCAqL1xuIFx0aWYgKHNjYW5fc2hvdWxkX3N0b3AoKSlcbiBcdFx0cmV0dXJuO1xuIFxuK1x0LypcbitcdCAqIEEgbGl2ZSBvYmplY3Qgd2hvc2Ugb25seSByZWZlcmVuY2UgaXMgbW92ZWQgYnksIGZvciBleGFtcGxlLCBhXG4rXHQgKiBjb25jdXJyZW50IFJDVSB1cGRhdGUgY2FuIGJlIG1pc3NlZCBmb3Igb25lIHNjYW4gYW5kIHJlcG9ydGVkIGFzIGFcbitcdCAqIHRyYW5zaWVudCBmYWxzZSBwb3NpdGl2ZS4gU2NhbiBhZ2FpbiBhbmQgb25seSByZXBvcnQgdGhlIG9iamVjdHNcbitcdCAqIGxlZnQgdW5yZWZlcmVuY2VkIChzdGlsbCBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUKSBieSBib3RoIHNjYW5zLlxuK1x0ICovXG4rXHRfX2ttZW1sZWFrX3NjYW4oZmFsc2UpO1xuK1x0aWYgKHNjYW5fc2hvdWxkX3N0b3AoKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0LypcbiBcdCAqIFNjYW5uaW5nIHJlc3VsdCByZXBvcnRpbmcuIFdoZW4gdmVyYm9zZSBwcmludGluZyBpcyBlbmFibGVkLCBkZWR1cGVcbiBcdCAqIGJ5IHN0YWNrZGVwb3QgdHJhY2VfaGFuZGxlIHNvIGVhY2ggdW5pcXVlIGJhY2t0cmFjZSBpcyBsb2dnZWQgb25jZVxuQEAgLTE5NjksNiArMjAxOSw3IEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbiBcdFx0dHJhY2VfaGFuZGxlID0gMDtcbiBcdFx0ZGVkdXBfcHJpbnQgPSBmYWxzZTtcbiBcdFx0aWYgKHVucmVmZXJlbmNlZF9vYmplY3Qob2JqZWN0KSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIChvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE9CSkVDVF9TVVNQRUNUKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICEob2JqZWN0LVx1MDAzZWZsYWdzIFx1MDAyNiBPQkpFQ1RfUkVQT1JURUQpKSB7XG4gXHRcdFx0b2JqZWN0LVx1MDAzZWZsYWdzIHw9IE9CSkVDVF9SRVBPUlRFRDtcbiBcdFx0XHRpZiAoa21lbWxlYWtfdmVyYm9zZSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTM6MzY6NTYuMDIzNzU3OTI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc3ODcyNzk5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBLbWVtbGVhayBQYXRjaDogQSBDb25zaWRlcmVkIERlY2lzaW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgbGFuZGVkLCBtb2RpZnlpbmcgYG1tL2ttZW1sZWFrLmNgLiBJdCdzIGludHJvZHVjaW5nIHRoaXMgYE9CSkVDVF9TVVNQRUNUYCBmbGFnIGFuZCB0aGUgYG5yX3N1c3BlY3RzYCB2YXJpYWJsZSwgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBpdCdzIGNoYW5naW5nIGhvdyB0aGUgYGttZW1sZWFrX3NjYW5gIGZ1bmN0aW9uIHdvcmtzLiBJdCBub3cgaGFzIHRoaXMgdHdvLXBhc3Mgc2NhbjogYSBmdWxsIHNjYW4gZmlyc3QsIGFuZCB0aGVuIGEgc2Vjb25kIHBhc3MgaWYgaXQgZmluZHMgcG90ZW50aWFsIHN1c3BlY3RzLiBJdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cga21lbWxlYWsgb3BlcmF0ZXMuXG5cblRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCwgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB3aGV0aGVyIHRoaXMgZGVzZXJ2ZXMgYSBmdXp6aW5nIGNhbXBhaWduLiBLbWVtbGVhayBpcywgYXQgaXRzIGhlYXJ0LCBhIGRlYnVnZ2luZyB0b29sLCBhIGRpYWdub3N0aWMgbWVjaGFuaXNtLiBJdCdzIG1lYW50IHRvIGJlIHJ1biBwZXJpb2RpY2FsbHkgb3IgbWFudWFsbHkgdHJpZ2dlcmVkIHZpYSBkZWJ1Z2ZzLiBGdXp6aW5nICprbWVtbGVhayBpdHNlbGYqIG1pZ2h0IG5vdCBiZSB0aGUgbW9zdCBmcnVpdGZ1bCBhcHByb2FjaCBmb3IgdW5jb3ZlcmluZyBrZXJuZWwgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBcInRyYWRpdGlvbmFsXCIgc2Vuc2UuIEkgd291bGRuJ3QgZXhwZWN0IHRvIGZpbmQgYSBtYXNzaXZlIHNlY3VyaXR5IGZsYXcgYnkgZnV6emluZyB0aGlzIG1vZHVsZSBkaXJlY3RseS4gQnV0LCB3YWl0LCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gY29yZSBrZXJuZWwgbG9naWMuIEl0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGludHJvZHVjZSBzdWJ0bGUgaXNzdWVzLlxuXG5Tbywgd2hpbGUgSSdtIG5vdCBleHBlY3RpbmcgYSBtYXNzaXZlIHBheW9mZiBpbiB0ZXJtcyBvZiBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIEkgc2hvdWxkIGNvbnNpZGVyIGl0LiBUaGUgZmFjdCB0aGF0IGl0J3MgYSBkZWJ1Z2dpbmcgZmVhdHVyZSBtYWtlcyBtZSB3b25kZXIgaWYgZnV6emluZyBpcyB0aGUgcmlnaHQgdG9vbC4gSG93ZXZlciwgaXQncyBzdGlsbCBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCBjb2RlIChgbW0va21lbWxlYWsuY2ApLCBzbyBpdCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgZGVlcGVyIGRpdmUuXG5cbk5vdywgbGV0J3Mgc2VlLCB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gYnVpbGQga21lbWxlYWs/IEFoLCB5ZXMsIGBDT05GSUdfREVCVUdfS01FTUxFQUtgIGlzIHJlcXVpcmVkLiBJIHNob3VsZCBjaGVjayBgbW0va21lbWxlYWsuY2AgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIwMiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEzOjM3OjAxLjgwMjQ4ODEwNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzEzNjA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJERUJVR19LTUVNTEVBS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZy5kZWJ1Zz0yMjI9Y29uZmlnIFBURFVNUF9ERUJVR0ZTXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTIzNi1cXG5tbS9LY29uZmlnLmRlYnVnOjIzNzpjb25maWcgSEFWRV9ERUJVR19LTUVNTEVBS1xcbm1tL0tjb25maWcuZGVidWctMjM4LVxcdGJvb2xcXG5tbS9LY29uZmlnLmRlYnVnLTIzOS1cXG5tbS9LY29uZmlnLmRlYnVnOjI0MDpjb25maWcgREVCVUdfS01FTUxFQUtcXG5tbS9LY29uZmlnLmRlYnVnLTI0MS1cXHRib29sIFxcXCJLZXJuZWwgbWVtb3J5IGxlYWsgZGV0ZWN0b3JcXFwiXFxubW0vS2NvbmZpZy5kZWJ1ZzoyNDI6XFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUwgXFx1MDAyNlxcdTAwMjYgSEFWRV9ERUJVR19LTUVNTEVBS1xcbm1tL0tjb25maWcuZGVidWctMjQzLVxcdHNlbGVjdCBERUJVR19GU1xcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0yNDctXFx0c2VsZWN0IFNUQUNLREVQT1RcXG5tbS9LY29uZmlnLmRlYnVnOjI0ODpcXHRzZWxlY3QgU1RBQ0tERVBPVF9BTFdBWVNfSU5JVCBpZiAhREVCVUdfS01FTUxFQUtfREVGQVVMVF9PRkZcXG5tbS9LY29uZmlnLmRlYnVnLTI0OS1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTI2NC1cXG5tbS9LY29uZmlnLmRlYnVnOjI2NTpjb25maWcgREVCVUdfS01FTUxFQUtfTUVNX1BPT0xfU0laRVxcbm1tL0tjb25maWcuZGVidWctMjY2LVxcdGludCBcXFwiS21lbWxlYWsgbWVtb3J5IHBvb2wgc2l6ZVxcXCJcXG5tbS9LY29uZmlnLmRlYnVnOjI2NzpcXHRkZXBlbmRzIG9uIERFQlVHX0tNRU1MRUFLXFxubW0vS2NvbmZpZy5kZWJ1Zy0yNjgtXFx0cmFuZ2UgMjAwIDEwMDAwMDBcXG4tLVxcbm1tL0tjb25maWcuZGVidWctMjc3LVxcbm1tL0tjb25maWcuZGVidWc6Mjc4OmNvbmZpZyBERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRlxcbm1tL0tjb25maWcuZGVidWctMjc5LVxcdGJvb2wgXFxcIkRlZmF1bHQga21lbWxlYWsgdG8gb2ZmXFxcIlxcbm1tL0tjb25maWcuZGVidWc6MjgwOlxcdGRlcGVuZHMgb24gREVCVUdfS01FTUxFQUtcXG5tbS9LY29uZmlnLmRlYnVnLTI4MS1cXHRoZWxwXFxuLS1cXG5tbS9LY29uZmlnLmRlYnVnLTI4NC1cXG5tbS9LY29uZmlnLmRlYnVnOjI4NTpjb25maWcgREVCVUdfS01FTUxFQUtfQVVUT19TQ0FOXFxubW0vS2NvbmZpZy5kZWJ1Zy0yODYtXFx0Ym9vbCBcXFwiRW5hYmxlIGttZW1sZWFrIGF1dG8gc2NhbiB0aHJlYWQgb24gYm9vdCB1cFxcXCJcXG5tbS9LY29uZmlnLmRlYnVnLTI4Ny1cXHRkZWZhdWx0IHlcXG5tbS9LY29uZmlnLmRlYnVnOjI4ODpcXHRkZXBlbmRzIG9uIERFQlVHX0tNRU1MRUFLXFxubW0vS2NvbmZpZy5kZWJ1Zy0yODktXFx0aGVscFxcbi0tXFxubW0vS2NvbmZpZy5kZWJ1Zy0yOTktXFxubW0vS2NvbmZpZy5kZWJ1ZzozMDA6Y29uZmlnIERFQlVHX0tNRU1MRUFLX1ZFUkJPU0VcXG5tbS9LY29uZmlnLmRlYnVnLTMwMS1cXHRib29sIFxcXCJEZWZhdWx0IGttZW1sZWFrIHRvIHZlcmJvc2UgbW9kZVxcXCJcXG5tbS9LY29uZmlnLmRlYnVnOjMwMjpcXHRkZXBlbmRzIG9uIERFQlVHX0tNRU1MRUFLX0FVVE9fU0NBTlxcbm1tL0tjb25maWcuZGVidWctMzAzLVxcdGhlbHBcXG4tLVxcbm1tL01ha2VmaWxlPTExMz1vYmotJChDT05GSUdfSFdQT0lTT05fSU5KRUNUKSArPSBod3BvaXNvbi1pbmplY3Qub1xcbm1tL01ha2VmaWxlOjExNDpvYmotJChDT05GSUdfREVCVUdfS01FTUxFQUspICs9IGttZW1sZWFrLm9cXG5tbS9NYWtlZmlsZS0xMTUtb2JqLSQoQ09ORklHX0RFQlVHX1JPREFUQV9URVNUKSArPSByb2RhdGFfdGVzdC5vXFxuLS1cXG5tbS9rbWVtbGVhay5jPTE5OT1zdGF0aWMgTElTVF9IRUFEKGdyYXlfbGlzdCk7XFxubW0va21lbWxlYWsuYy0yMDAtLyogbWVtb3J5IHBvb2wgYWxsb2NhdGlvbiAqL1xcbm1tL2ttZW1sZWFrLmM6MjAxOnN0YXRpYyBzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0IG1lbV9wb29sW0NPTkZJR19ERUJVR19LTUVNTEVBS19NRU1fUE9PTF9TSVpFXTtcXG5tbS9rbWVtbGVhay5jLTIwMi1zdGF0aWMgaW50IG1lbV9wb29sX2ZyZWVfY291bnQgPSBBUlJBWV9TSVpFKG1lbV9wb29sKTtcXG4tLVxcbm1tL2ttZW1sZWFrLmM9MjQ5PXN0YXRpYyBib29sIGttZW1sZWFrX2ZvdW5kX2xlYWtzO1xcbm1tL2ttZW1sZWFrLmMtMjUwLVxcbm1tL2ttZW1sZWFrLmM6MjUxOnN0YXRpYyBib29sIGttZW1sZWFrX3ZlcmJvc2UgPSBJU19FTkFCTEVEKENPTkZJR19ERUJVR19LTUVNTEVBS19WRVJCT1NFKTtcXG5tbS9rbWVtbGVhay5jLTI1Mi1tb2R1bGVfcGFyYW1fbmFtZWQodmVyYm9zZSwga21lbWxlYWtfdmVyYm9zZSwgYm9vbCwgMDYwMCk7XFxuLS1cXG5tbS9rbWVtbGVhay5jPTQ5MD1zdGF0aWMgc3RydWN0IGttZW1sZWFrX29iamVjdCAqbWVtX3Bvb2xfYWxsb2MoZ2ZwX3QgZ2ZwKVxcbi0tXFxubW0va21lbWxlYWsuYy01MTUtXFx0aWYgKHdhcm4pXFxubW0va21lbWxlYWsuYzo1MTY6XFx0XFx0cHJfd2Fybl9vbmNlKFxcXCJNZW1vcnkgcG9vbCBlbXB0eSwgY29uc2lkZXIgaW5jcmVhc2luZyBDT05GSUdfREVCVUdfS01FTUxFQUtfTUVNX1BPT0xfU0laRVxcXFxuXFxcIik7XFxubW0va21lbWxlYWsuYy01MTctXFxuLS1cXG5tbS9rbWVtbGVhay5jPTIwNjE9c3RhdGljIGludCBrbWVtbGVha19zY2FuX3RocmVhZCh2b2lkICphcmcpXFxubW0va21lbWxlYWsuYy0yMDYyLXtcXG5tbS9rbWVtbGVhay5jOjIwNjM6XFx0c3RhdGljIGludCBmaXJzdF9ydW4gPSBJU19FTkFCTEVEKENPTkZJR19ERUJVR19LTUVNTEVBS19BVVRPX1NDQU4pO1xcbm1tL2ttZW1sZWFrLmMtMjA2NC1cXG4tLVxcbm1tL2ttZW1sZWFrLmM9MjQ2Nj12b2lkIF9faW5pdCBrbWVtbGVha19pbml0KHZvaWQpXFxubW0va21lbWxlYWsuYy0yNDY3LXtcXG5tbS9rbWVtbGVhay5jOjI0Njg6I2lmZGVmIENPTkZJR19ERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRlxcbm1tL2ttZW1sZWFrLmMtMjQ2OS1cXHRpZiAoIWttZW1sZWFrX3NraXBfZGlzYWJsZSkge1xcbi0tXFxubW0va21lbWxlYWsuYz0yNDk5PXN0YXRpYyBpbnQgX19pbml0IGttZW1sZWFrX2xhdGVfaW5pdCh2b2lkKVxcbi0tXFxubW0va21lbWxlYWsuYy0yNTE1LVxcbm1tL2ttZW1sZWFrLmM6MjUxNjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfREVCVUdfS01FTUxFQUtfQVVUT19TQ0FOKSkge1xcbm1tL2ttZW1sZWFrLmMtMjUxNy1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZzY2FuX211dGV4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTM6Mzc6MDEuODY1NjMwMzM0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2MDIyMzk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGttZW1sZWFrIFNjYW4gTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtb2RpZnlpbmcgYGttZW1sZWFrX3NjYW5gIGFuZCBgX19rbWVtbGVha19zY2FuYC4gUmlnaHQsIHRob3NlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgZm9yIHRoZSBrZXJuZWwgbWVtb3J5IGxlYWsgZGV0ZWN0aW9uLiBJIGtub3cgYGttZW1sZWFrX3NjYW5gIGlzIHRoZSBlbnRyeSBwb2ludCwgY2FsbGVkIGVpdGhlciBieSB0aGUgYGttZW1sZWFrX3NjYW5fdGhyZWFkYCBvciB0aHJvdWdoIGRlYnVnZnMsIHNvIEkgZXhwZWN0IHRoYXQncyB0aGUgcHJpbWFyeSB3YXkgdGhlIHNjYW4gZ2V0cyB0cmlnZ2VyZWQuXG5cblRvIHJlYWxseSBkaWcgaW4sIEkgc2hvdWxkIHByb2JhYmx5IG1ha2Ugc3VyZSBgREVCVUdfS01FTUxFQUtgIGFuZCBgREVCVUdfS01FTUxFQUtfQVVUT19TQ0FOYCBhcmUgZW5hYmxlZC4gQWgsIHdhaXQgYSBtaW51dGUsIHF1aWNrIGNoZWNrLi4uIHllYWgsIGBERUJVR19LTUVNTEVBS19BVVRPX1NDQU5gIGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpZiBgREVCVUdfS01FTUxFQUtgIGlzLCBzbyBJIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhhdC4gR29vZCwgbGVzcyB3b3JrIGZvciBtZS5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBib3RoIGBrbWVtbGVha19zY2FuYCBhbmQgYF9fa21lbWxlYWtfc2NhbmAgZGlyZWN0bHkgaW4gYG1tL2ttZW1sZWFrLmNgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBtYWdpYyBoYXBwZW5zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgc2NhbiBpcyBiZWluZyBtb2RpZmllZCwgd2hhdCBjaGFuZ2VzIGFyZSBiZWluZyBtYWRlIHRvIHRoZSBtZW1vcnkgc2Nhbm5pbmcgcHJvY2VzcywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIHNpZGUtZWZmZWN0cyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIyNywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNzowNi4yMjU4NTYxMDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI5NjYwNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia21lbWxlYWtfc2NhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9rbWVtbGVhay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2ttZW1sZWFrLmMtMTE4LS8qIHNjYW5uaW5nIGFyZWEgaW5zaWRlIGEgbWVtb3J5IGJsb2NrICovXFxubW0va21lbWxlYWsuYzoxMTk6c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSB7XFxubW0va21lbWxlYWsuYy0xMjAtXFx0c3RydWN0IGhsaXN0X25vZGUgbm9kZTtcXG4tLVxcbm1tL2ttZW1sZWFrLmM9NTQyPXN0YXRpYyB2b2lkIGZyZWVfb2JqZWN0X3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbm1tL2ttZW1sZWFrLmMtNTQ0LVxcdHN0cnVjdCBobGlzdF9ub2RlICp0bXA7XFxubW0va21lbWxlYWsuYzo1NDU6XFx0c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSAqYXJlYTtcXG5tbS9rbWVtbGVhay5jLTU0Ni1cXHRzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3QgPVxcbi0tXFxubW0va21lbWxlYWsuYz05OTc9c3RhdGljIHZvaWQgYWRkX3NjYW5fYXJlYSh1bnNpZ25lZCBsb25nIHB0ciwgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcXG4tLVxcbm1tL2ttZW1sZWFrLmMtMTAwMC1cXHRzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3Q7XFxubW0va21lbWxlYWsuYzoxMDAxOlxcdHN0cnVjdCBrbWVtbGVha19zY2FuX2FyZWEgKmFyZWEgPSBOVUxMO1xcbm1tL2ttZW1sZWFrLmMtMTAwMi1cXHR1bnNpZ25lZCBsb25nIHVudGFnZ2VkX3B0cjtcXG4tLVxcbm1tL2ttZW1sZWFrLmM9MTMwOD1FWFBPUlRfU1lNQk9MKGttZW1sZWFrX2lnbm9yZSk7XFxuLS1cXG5tbS9rbWVtbGVhay5jLTEzMTAtLyoqXFxubW0va21lbWxlYWsuYzoxMzExOiAqIGttZW1sZWFrX3NjYW5fYXJlYSAtIGxpbWl0IHRoZSByYW5nZSB0byBiZSBzY2FubmVkIGluIGFuIGFsbG9jYXRlZCBvYmplY3RcXG5tbS9rbWVtbGVhay5jLTEzMTItICogQHB0cjpcXHRwb2ludGVyIHRvIGJlZ2lubmluZyBvciBpbnNpZGUgdGhlIG9iamVjdC4gVGhpcyBhbHNvXFxuLS1cXG5tbS9rbWVtbGVhay5jLTEzMjAtICovXFxubW0va21lbWxlYWsuYzoxMzIxOnZvaWQgX19yZWYga21lbWxlYWtfc2Nhbl9hcmVhKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcXG5tbS9rbWVtbGVhay5jLTEzMjIte1xcbi0tXFxubW0va21lbWxlYWsuYy0xMzI3LX1cXG5tbS9rbWVtbGVhay5jOjEzMjg6RVhQT1JUX1NZTUJPTChrbWVtbGVha19zY2FuX2FyZWEpO1xcbm1tL2ttZW1sZWFrLmMtMTMyOS1cXG4tLVxcbm1tL2ttZW1sZWFrLmM9MTU4ND1zdGF0aWMgdm9pZCBzY2FuX29iamVjdChzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3QpXFxubW0va21lbWxlYWsuYy0xNTg1LXtcXG5tbS9rbWVtbGVhay5jOjE1ODY6XFx0c3RydWN0IGttZW1sZWFrX3NjYW5fYXJlYSAqYXJlYTtcXG5tbS9rbWVtbGVhay5jLTE1ODctXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbm1tL2ttZW1sZWFrLmM9MTc4ND1zdGF0aWMgdm9pZCBkZWR1cF9mbHVzaChzdHJ1Y3QgeGFycmF5ICpkZWR1cClcXG4tLVxcbm1tL2ttZW1sZWFrLmMtMTgwOC0gKi9cXG5tbS9rbWVtbGVhay5jOjE4MDk6c3RhdGljIGludCBfX2ttZW1sZWFrX3NjYW4oYm9vbCBmdWxsKVxcbm1tL2ttZW1sZWFrLmMtMTgxMC17XFxuLS1cXG5tbS9rbWVtbGVhay5jLTE5NjUtICovXFxubW0va21lbWxlYWsuYzoxOTY2OnN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcXG5tbS9rbWVtbGVhay5jLTE5Njcte1xcbi0tXFxubW0va21lbWxlYWsuYy0xOTc1LVxcdCAqL1xcbm1tL2ttZW1sZWFrLmM6MTk3NjpcXHRpZiAoIV9fa21lbWxlYWtfc2Nhbih0cnVlKSlcXG5tbS9rbWVtbGVhay5jLTE5NzctXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0va21lbWxlYWsuYy0xOTkwLVxcdCAqL1xcbm1tL2ttZW1sZWFrLmM6MTk5MTpcXHRfX2ttZW1sZWFrX3NjYW4oZmFsc2UpO1xcbm1tL2ttZW1sZWFrLmMtMTk5Mi1cXHRpZiAoc2Nhbl9zaG91bGRfc3RvcCgpKVxcbi0tXFxubW0va21lbWxlYWsuYy0yMDYwLSAqL1xcbm1tL2ttZW1sZWFrLmM6MjA2MTpzdGF0aWMgaW50IGttZW1sZWFrX3NjYW5fdGhyZWFkKHZvaWQgKmFyZylcXG5tbS9rbWVtbGVhay5jLTIwNjIte1xcbi0tXFxubW0va21lbWxlYWsuYy0yMDgxLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnNjYW5fbXV0ZXgpO1xcbm1tL2ttZW1sZWFrLmM6MjA4MjpcXHRcXHRrbWVtbGVha19zY2FuKCk7XFxubW0va21lbWxlYWsuYy0yMDgzLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c2Nhbl9tdXRleCk7XFxuLS1cXG5tbS9rbWVtbGVhay5jPTIwOTk9c3RhdGljIHZvaWQgc3RhcnRfc2Nhbl90aHJlYWQodm9pZClcXG4tLVxcbm1tL2ttZW1sZWFrLmMtMjEwMi1cXHRcXHRyZXR1cm47XFxubW0va21lbWxlYWsuYzoyMTAzOlxcdHNjYW5fdGhyZWFkID0ga3RocmVhZF9ydW4oa21lbWxlYWtfc2Nhbl90aHJlYWQsIE5VTEwsIFxcXCJrbWVtbGVha1xcXCIpO1xcbm1tL2ttZW1sZWFrLmMtMjEwNC1cXHRpZiAoSVNfRVJSKHNjYW5fdGhyZWFkKSkge1xcbi0tXFxubW0va21lbWxlYWsuYz0yMjk0PXN0YXRpYyBzc2l6ZV90IGttZW1sZWFrX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5tbS9rbWVtbGVhay5jLTIzNTAtXFx0fSBlbHNlIGlmIChzdHJuY21wKGJ1ZiwgXFxcInNjYW5cXFwiLCA0KSA9PSAwKVxcbm1tL2ttZW1sZWFrLmM6MjM1MTpcXHRcXHRrbWVtbGVha19zY2FuKCk7XFxubW0va21lbWxlYWsuYy0yMzUyLVxcdGVsc2UgaWYgKHN0cm5jbXAoYnVmLCBcXFwiZHVtcD1cXFwiLCA1KSA9PSAwKVxcbi0tXFxubW0va21lbWxlYWsuYz0yNDAwPXN0YXRpYyB2b2lkIGttZW1sZWFrX2RvX2NsZWFudXAoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubW0va21lbWxlYWsuYy0yNDA1LVxcdC8qXFxubW0va21lbWxlYWsuYzoyNDA2OlxcdCAqIE9uY2UgaXQgaXMgbWFkZSBzdXJlIHRoYXQga21lbWxlYWtfc2NhbiBoYXMgc3RvcHBlZCwgaXQgaXMgc2FmZSB0byBub1xcbm1tL2ttZW1sZWFrLmMtMjQwNy1cXHQgKiBsb25nZXIgdHJhY2sgb2JqZWN0IGZyZWVpbmcuIE9yZGVyaW5nIG9mIHRoZSBzY2FuIHRocmVhZCBzdG9wcGluZyBhbmRcXG4tLVxcbm1tL2ttZW1sZWFrLmM9MjQ2Nj12b2lkIF9faW5pdCBrbWVtbGVha19pbml0KHZvaWQpXFxuLS1cXG5tbS9rbWVtbGVhay5jLTI0ODEtXFx0b2JqZWN0X2NhY2hlID0gS01FTV9DQUNIRShrbWVtbGVha19vYmplY3QsIFNMQUJfTk9MRUFLVFJBQ0UpO1xcbm1tL2ttZW1sZWFrLmM6MjQ4MjpcXHRzY2FuX2FyZWFfY2FjaGUgPSBLTUVNX0NBQ0hFKGttZW1sZWFrX3NjYW5fYXJlYSwgU0xBQl9OT0xFQUtUUkFDRSk7XFxubW0va21lbWxlYWsuYy0yNDgzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNzowNi4yODg4Mjk3ODhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTAzNjYxNDc5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEttZW1sZWFrOiBBIFR3by1QYXNzIEFwcHJvYWNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBga21lbWxlYWtgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gS21lbWxlYWsgaXMgYSBkZWJ1Z2dpbmcgdG9vbCwgc28gdHJhZGl0aW9uYWxseSwgb25lIG1pZ2h0IG5vdCBwcmlvcml0aXplIGl0IGZvciBmdXp6aW5nIGluIHRoZSBzYW1lIHdheSB5b3Ugd291bGQgd2l0aCBjb3JlIGtlcm5lbCBzdWJzeXN0ZW1zLiBIb3dldmVyLCB0aGUgdXNlIG9mIFN5emthbGxlcidzIGRlYnVnZnMgaW50ZXJmYWNlIHRvIHRyaWdnZXIga21lbWxlYWsgc2NhbnMgc2hpZnRzIHRoZSBlcXVhdGlvbi4gVGhhdCBtYWtlcyBmdXp6aW5nIGEgZGVmaW5pdGUgcG9zc2liaWxpdHkuXG5cblRoZSBjb3JlIG9mIHRoZSBwYXRjaCBtb2RpZmllcyBga21lbWxlYWtfc2NhbmAgdG8gcGVyZm9ybSBhIHR3by1wYXNzIHNjYW4uIFRoaXMgdHdvLXBhc3MgYXBwcm9hY2ggaXMgY2xlYXJseSBhaW1lZCBhdCByZWR1Y2luZyBmYWxzZSBwb3NpdGl2ZXMuIE5vdywgSSBoYXZlIHRvIGNvbnNpZGVyOiBJcyBmb2N1c2luZyB0aGUgZnV6emluZyBvbiBga21lbWxlYWtfc2NhbmAgdGhlIHJpZ2h0IGFwcHJvYWNoPyBHaXZlbiB0aGF0IGBrbWVtbGVha19zY2FuYCBpcyBhIHJlbGF0aXZlbHkgaGVhdnkgb3BlcmF0aW9uLCByZXBlYXRlZGx5IHJ1bm5pbmcgaXQgaXNuJ3QgaWRlYWwsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIHRoZSBtb3N0IHJlbGV2YW50IGVudHJ5cG9pbnQgZm9yIHRoaXMgY2hhbmdlLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cblRoZSBpbXBvcnRhbnQgc3ltYm9scyB0byB0YXJnZXQgYXJlIGBfX2ttZW1sZWFrX3NjYW5gIGFuZCBga21lbWxlYWtfc2NhbmAsIGFzIHRoYXQgaXMgd2hlcmUgdGhlIGtleSBsb2dpYyByZXNpZGVzIGFuZCB3aGVyZSB0aGUgZnV6emluZyBlZmZvcnQgd2lsbCBoYXZlIHRoZSBiaWdnZXN0IGltcGFjdC4gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gaXMgYERFQlVHX0tNRU1MRUFLYC4gSSdsbCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBvdGhlciBjb25maWcgSSBuZWVkIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSwgYnV0IGBERUJVR19LTUVNTEVBS2Agc2hvdWxkIGJlIGVub3VnaC5cblxuTm93LCByZWdhcmRpbmcgcGVyZm9ybWFuY2UsIGlzIGBrbWVtbGVha19zY2FuYCBhIGhvdCBwYXRoPyBObywgaXQncyBhIGhlYXZ5IG9wZXJhdGlvbiwgYnV0IG5vdCBhIGhvdCBwYXRoIGluIHRoZSBzZW5zZSBvZiBiZWluZyBjYWxsZWQgb24gZXZlcnkgcGFja2V0IG9yIHN5c2NhbGwuIEl0J3MgY2FsbGVkIHdoZW4gdHJpZ2dlcmVkIG9yIHBlcmlvZGljYWxseSwgc28gZm9jdXNpbmcgb24gaXQgc2VlbXMgYWNjZXB0YWJsZS5cblxuSSBqdXN0IHJldmlld2VkIHRoZSBwYXRjaCBhZ2Fpbi5cbmBgYGNcbkBAIC0xOTM2LDEyICsxOTU2LDQyIEBAIHN0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbiBcdCAqL1xuIFx0c2Nhbl9ncmF5X2xpc3QoKTtcbiBcbitcdHJldHVybiBucl9zdXNwZWN0cztcbit9XG4rXG4rLypcbisgKiBTY2FuIHRoZSBtZW1vcnkgYW5kIHJlcG9ydCB0aGUgdW5yZWZlcmVuY2VkIG9iamVjdHMgYXMgbGVha3MuIE11c3QgYmVcbisgKiBjYWxsZWQgd2l0aCB0aGUgc2Nhbl9tdXRleCBoZWxkLlxuKyAqL1xuK3N0YXRpYyB2b2lkIGttZW1sZWFrX3NjYW4odm9pZClcbit7XG4rXHRzdHJ1Y3Qga21lbWxlYWtfb2JqZWN0ICpvYmplY3Q7XG4rXHRzdHJ1Y3QgeGFycmF5IGRlZHVwO1xuK1x0aW50IG5ld19sZWFrcyA9IDA7XG4rXG4rXHQvKlxuK1x0ICogRnVsbCBzY2FuLiBPYmplY3RzIGxlZnQgdW5yZWZlcmVuY2VkIGFyZSBmbGFnZ2VkIE9CSkVDVF9TVVNQRUNUIGFuZFxuK1x0ICogY291bnRlZCBpbiB0aGUgcmV0dXJuIHZhbHVlOyBub3RoaW5nIHRvIGNvbmZpcm0gb3IgcmVwb3J0IG90aGVyd2lzZS5cbitcdCAqL1xuK1x0aWYgKCFfX2ttZW1sZWFrX3NjYW4odHJ1ZSkpXG4rXHRcdHJldHVybjtcbitcbiBcdC8qXG4gXHQgKiBJZiBzY2FubmluZyB3YXMgc3RvcHBlZCBkbyBub3QgcmVwb3J0IGFueSBuZXcgdW5yZWZlcmVuY2VkIG9iamVjdHMuXG4gXHQgKi9cbiBcdGlmIChzY2FuX3Nob3VsZF9zdG9wKCkpXG4gXHRcdHJldHVybjtcbiBcbitcdC8qXG4rXHQgKiBBIGxpdmUgb2JqZWN0IHdob3NlIG9ubHkgcmVmZXJlbmNlIGlzIG1vdmVkIGJ5LCBmb3IgZXhhbXBsZSwgYVxuK1x0ICogY29uY3VycmVudCBSQ1UgdXBkYXRlIGNhbiBiZSBtaXNzZWQgZm9yIG9uZSBzY2FuIGFuZCByZXBvcnRlZCBhcyBhXG4rXHQgKiB0cmFuc2llbnQgZmFsc2UgcG9zaXRpdmUuIFNjYW4gYWdhaW4gYW5kIG9ubHkgcmVwb3J0IHRoZSBvYmplY3RzXG4rXHQgKiBsZWZ0IHVucmVmZXJlbmNlZCAoc3RpbGwgZmxhZ2dlZCBPQkpFQ1RfU1VTUEVDVCkgYnkgYm90aCBzY2Fucy5cbitcdCAqL1xuK1x0X19rbWVtbGVha19zY2FuKGZhbHNlKTtcbitcdGlmIChzY2FuX3Nob3VsZF9zdG9wKCkpXG4rXHRcdHJldHVybjtcbitcbiBgYGBcblRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLlxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuSSB3aWxsIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cbkZvY3VzU3ltYm9sczogYF9fa21lbWxlYWtfc2NhbmAsIGBrbWVtbGVha19zY2FuYC5cbkVuYWJsZUNvbmZpZ3M6IGBERUJVR19LTUVNTEVBS2AuXG5SZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrbWVtbGVhayBzY2FubmluZyBsb2dpYyB0byBwZXJmb3JtIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGttZW1sZWFrIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIGRlYnVnZnMgb3IgYXV0by1zY2FuLlwiXG5cbkxldCdzIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIG1vZGlmaWVkLlxuYHVwZGF0ZV9yZWZzYCBpcyBtb2RpZmllZC5cbmBgYGNcbkBAIC0xNDM5LDYgKzE0NDMsMTEgQEAgc3RhdGljIHZvaWQgdXBkYXRlX3JlZnMoc3RydWN0IGttZW1sZWFrX29iamVjdCAqb2JqZWN0KVxuIFx0ICovXG4gXHRvYmplY3QtXHUwMDNlY291bnQrKztcbiBcdGlmIChjb2xvcl9ncmF5KG9iamVjdCkpIHtcbitcdFx0LyogcmVmZXJlbmNlZCBhZnRlciBhbGwsIG5vIGxvbmdlciBhIHN1c3BlY3QgKi9cbitcdFx0aWYgKG9iamVjdC1cdTAwM2VmbGFncyBcdTAwMjYgT0JKRUNUX1NVU1BFQ1QpIHtcbitcdFx0XHRvYmplY3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+T0JKRUNUX1NVU1BFQ1Q7XG4rXHRcdFx0bnJfc3VzcGVjdHMtLTtcbitcdFx0fVxuIFx0XHQvKiBwdXRfb2JqZWN0KCkgY2FsbGVkIHdoZW4gcmVtb3ZpbmcgZnJvbSBncmF5X2xpc3QgKi9cbiBcdFx0V0FSTl9PTighZ2V0X29iamVjdChvYmplY3QpKTtcbiBcdFx0bGlzdF9hZGRfXG5cbiIsIklucHV0VG9rZW5zIjo3MTc4LCJPdXRwdXRUb2tlbnMiOjk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMzozNzoyMS4zMjU0NDcwMTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MDQ2MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJERUJVR19LTUVNTEVBS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fa21lbWxlYWtfc2NhblwiLFxuICAgIFwia21lbWxlYWtfc2NhblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBrbWVtbGVhayBzY2FubmluZyBsb2dpYyB0byBwZXJmb3JtIGEgdHdvLXBhc3Mgc2NhbiB0byByZWR1Y2UgZmFsc2UgcG9zaXRpdmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGttZW1sZWFrIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIGRlYnVnZnMgb3IgYXV0by1zY2FuLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRFQlVHX0tNRU1MRUFLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19rbWVtbGVha19zY2FuXCIsXG4gICAgXCJrbWVtbGVha19zY2FuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGttZW1sZWFrIHNjYW5uaW5nIGxvZ2ljIHRvIHBlcmZvcm0gYSB0d28tcGFzcyBzY2FuIHRvIHJlZHVjZSBmYWxzZSBwb3NpdGl2ZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga21lbWxlYWsgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgZGVidWdmcyBvciBhdXRvLXNjYW4uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmdvss[1] Phase: Succeeded StartedAt: 2026-07-10 13:37:33 +0000 UTC FinishedAt: 2026-07-10 13:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 13:37:33 +0000 UTC FinishedAt: 2026-07-10 13:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2] Phase: Succeeded StartedAt: 2026-07-10 13:37:33 +0000 UTC FinishedAt: 2026-07-10 18:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 13:37:33 +0000 UTC FinishedAt: 2026-07-10 18:35:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-10 13:37:33 +0000 UTC FinishedAt: 2026-07-10 13:37:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-10 13:37:33 +0000 UTC FinishedAt: 2026-07-10 13:37:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmdvss/series-workflowmdvss-convert-artifact-1914909577/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-10 13:37:43 +0000 UTC FinishedAt: 2026-07-10 14:24:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-10 13:37:43 +0000 UTC FinishedAt: 2026-07-10 14:24: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:*c5383d6a-d279-4a43-a82f-746a95a080c1,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-workflowmdvss/series-workflowmdvss-convert-artifact-1914909577/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": "dba739ed-9b21-463e-b22b-514ae074cd32", "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-workflowmdvss/series-workflowmdvss-build-action-1992027239/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-10 13:37:43 +0000 UTC FinishedAt: 2026-07-10 14:24:09 +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:*c5383d6a-d279-4a43-a82f-746a95a080c1,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-workflowmdvss/series-workflowmdvss-convert-artifact-1914909577/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": "dba739ed-9b21-463e-b22b-514ae074cd32", "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-workflowmdvss/series-workflowmdvss-build-action-1992027239/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-10 14:24:19 +0000 UTC FinishedAt: 2026-07-10 14:24:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-10 14:24:19 +0000 UTC FinishedAt: 2026-07-10 14:24:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-10 14:24:19 +0000 UTC FinishedAt: 2026-07-10 14:24:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-10 14:24:19 +0000 UTC FinishedAt: 2026-07-10 14:24:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmdvss/series-workflowmdvss-convert-artifact-3564885660/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-10 14:24:29 +0000 UTC FinishedAt: 2026-07-10 14:27:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-10 14:24:29 +0000 UTC FinishedAt: 2026-07-10 14:27:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dba739ed-9b21-463e-b22b-514ae074cd32,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-workflowmdvss/series-workflowmdvss-build-action-1992027239/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-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-10 14:27:34 +0000 UTC FinishedAt: 2026-07-10 14:27:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-10 14:27:34 +0000 UTC FinishedAt: 2026-07-10 14:27:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-10 14:27:34 +0000 UTC FinishedAt: 2026-07-10 15:28:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-10 14:27:34 +0000 UTC FinishedAt: 2026-07-10 15:28:27 +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:*c5383d6a-d279-4a43-a82f-746a95a080c1,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-workflowmdvss/series-workflowmdvss-convert-artifact-3564885660/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": "dc9fa50e-093d-4b5a-987e-f9d7388f900f", "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-workflowmdvss/series-workflowmdvss-build-action-1148287480/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-10 14:27:34 +0000 UTC FinishedAt: 2026-07-10 15:28:17 +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:*c5383d6a-d279-4a43-a82f-746a95a080c1,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-workflowmdvss/series-workflowmdvss-convert-artifact-3564885660/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": "dc9fa50e-093d-4b5a-987e-f9d7388f900f", "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-workflowmdvss/series-workflowmdvss-build-action-1148287480/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 15:28:27 +0000 UTC FinishedAt: 2026-07-10 15:28:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 15:28:27 +0000 UTC FinishedAt: 2026-07-10 15:28:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 15:28:27 +0000 UTC FinishedAt: 2026-07-10 15:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 15:28:27 +0000 UTC FinishedAt: 2026-07-10 15:31:03 +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:*dc9fa50e-093d-4b5a-987e-f9d7388f900f,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-workflowmdvss/series-workflowmdvss-build-action-1148287480/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-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 15:31:13 +0000 UTC FinishedAt: 2026-07-10 18:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 15:31:13 +0000 UTC FinishedAt: 2026-07-10 18:35:07 +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":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*dba739ed-9b21-463e-b22b-514ae074cd32,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dc9fa50e-093d-4b5a-987e-f9d7388f900f,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-workflowmdvss/series-workflowmdvss-build-action-1992027239/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-workflowmdvss/series-workflowmdvss-build-action-1148287480/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 15:31:13 +0000 UTC FinishedAt: 2026-07-10 15:31:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 15:31:13 +0000 UTC FinishedAt: 2026-07-10 15:31:20 +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":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmdvss/series-workflowmdvss-convert-artifact-2741319269/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 15:31:13 +0000 UTC FinishedAt: 2026-07-10 15:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 15:31:13 +0000 UTC FinishedAt: 2026-07-10 15:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 15:31:13 +0000 UTC FinishedAt: 2026-07-10 15:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 15:31:23 +0000 UTC FinishedAt: 2026-07-10 18:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdvss[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__kmemleak_scan","kmemleak_scan"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"954157679ec34661c2e87e7eb796104a797c32db","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEBUG_KMEMLEAK"],"series_id":"64fb56f3-74db-42d3-ab0b-1c8c9f08d2db","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 15:31:23 +0000 UTC FinishedAt: 2026-07-10 18:34:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dba739ed-9b21-463e-b22b-514ae074cd32,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dc9fa50e-093d-4b5a-987e-f9d7388f900f,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-workflowmdvss/series-workflowmdvss-build-action-1992027239/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-workflowmdvss/series-workflowmdvss-build-action-1148287480/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-workflowmdvss/series-workflowmdvss-convert-artifact-2741319269/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,}