Name: series-workflowqbdzf Phase: Succeeded StartedAt: 2026-07-09 01:06:56 +0000 UTC FinishedAt: 2026-07-09 06:18:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[0] Phase: Succeeded StartedAt: 2026-07-09 01:06:56 +0000 UTC FinishedAt: 2026-07-09 01:33:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 01:06:56 +0000 UTC FinishedAt: 2026-07-09 01:33:52 +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": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USERFAULTFD", "PROC_PAGE_MONITOR", "TRANSPARENT_HUGEPAGE", "HUGETLB_PAGE" ], "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": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USERFAULTFD", "PROC_PAGE_MONITOR", "TRANSPARENT_HUGEPAGE", "HUGETLB_PAGE" ], "series_id": "0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "pagemap_scan_pte_hole" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTRVJGQVVMVEZEJiMzNDssCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VtYXBfc2Nhbl9wdGVfaG9sZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFkMDNiMGM4NWI3ZDU0YjFjZjAzOTQ0OTAzNmU2ZDYxYWU4OWFjZTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDAxOjI4OjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL3Byb2MvdGFza19tbXUuYyBiL2ZzL3Byb2MvdGFza19tbXUuY1xuaW5kZXggZTQzMDJmY2YwMjI3ZDcuLjRiNjRiNGVkMDg0Y2VlIDEwMDY0NFxuLS0tIGEvZnMvcHJvYy90YXNrX21tdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9wcm9jL3Rhc2tfbW11LmNcbkBAIC0zMDUwLDEyICYjNDM7MzA1MCwzMyBAQCBzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIHtcbiBcdHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCA9IHdhbGstXHUwMDNlcHJpdmF0ZTtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gd2Fsay1cdTAwM2V2bWE7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBjYXRlZ29yaWVzO1xuIFx0aW50IHJldCwgZXJyO1xuIFxuLVx0aWYgKCF2bWEgfHwgIXBhZ2VtYXBfc2Nhbl9pc19pbnRlcmVzdGluZ19wYWdlKHAtXHUwMDNlY3VyX3ZtYV9jYXRlZ29yeSwgcCkpXG4mIzQzO1x0aWYgKCF2bWEpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBbiB1bnBvcHVsYXRlZCByYW5nZSB3aXRoIG5vIHBhZ2UgdGFibGUgLS0gZS5nLiBhIDJNQiBhbm9uIFRIUFxuJiM0MztcdCAqIGRyb3BwZWQgdmlhIE1BRFZfRE9OVE5FRUQsIHdoaWNoIHBhZ2VtYXBfcGFnZV9jYXRlZ29yeSgpIG5ldmVyIHNlZXNcbiYjNDM7XHQgKiAtLSByZWFkcyBhcyB3cml0dGVuIG9uIGEgdWZmZC13cCBWTUEsIG1hdGNoaW5nIHRoZSBwdGVfbm9uZSBjYXNlXG4mIzQzO1x0ICogdGhlcmUuIFJlcG9ydGluZyBpdCBhbHNvIGxldHMgdGhlIFBNX1NDQU5fV1BfTUFUQ0hJTkcgYXJtaW5nIGJlbG93XG4mIzQzO1x0ICogaW5zdGFsbCBtYXJrZXJzICh1ZmZkX3dwX3JhbmdlKCkgYWxsb2NhdGVzIHRoZSBwYWdlIHRhYmxlIHVuZGVyXG4mIzQzO1x0ICogV1BfVU5QT1BVTEFURUQpLCBzbyB0aGUgbmV4dCBzY2FuIHNlZXMgaXQgY2xlYW4gdW50aWwgcmUtd3JpdHRlbi5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIGh1Z2V0bGIgaXMgZXhjbHVkZWQ6IGFuIGFsbG9jYXRlZC1idXQtZW1wdHkgaHVnZSBlbnRyeSByZWFkcyBhc1xuJiM0MztcdCAqIG5vdC13cml0dGVuIHZpYSBwYWdlbWFwX2h1Z2V0bGJfY2F0ZWdvcnkoKSwgc28gcmVwb3J0aW5nIGFuXG4mIzQzO1x0ICogdW5hbGxvY2F0ZWQgaHVnZXRsYiBob2xlIGFzIHdyaXR0ZW4gaGVyZSB3b3VsZCBiZSBpbmNvbnNpc3RlbnRcbiYjNDM7XHQgKiB3aXRoaW4gdGhlIHNhbWUgVk1BLlxuJiM0MztcdCAqL1xuJiM0MztcdGNhdGVnb3JpZXMgPSBwLVx1MDAzZWN1cl92bWFfY2F0ZWdvcnk7XG4mIzQzO1x0aWYgKHVzZXJmYXVsdGZkX3dwKHZtYSkgXHUwMDI2XHUwMDI2ICFpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcbiYjNDM7XHRcdGNhdGVnb3JpZXMgfD0gUEFHRV9JU19XUklUVEVOO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhZ2VtYXBfc2Nhbl9pc19pbnRlcmVzdGluZ19wYWdlKGNhdGVnb3JpZXMsIHApKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdHJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQocC1cdTAwM2VjdXJfdm1hX2NhdGVnb3J5LCBwLCBhZGRyLCBcdTAwMjZlbmQpO1xuJiM0MztcdHJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQoY2F0ZWdvcmllcywgcCwgYWRkciwgXHUwMDI2ZW5kKTtcbiBcdGlmIChhZGRyID09IGVuZClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmNcbmluZGV4IGY5YmNmZjhlNzhmYWJiLi5hNGU4Y2M4YWVhNGI3YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jXG5AQCAtMjUsNiAmIzQzOzI1LDEwIEBAXG4gI2luY2x1ZGUgXCYjMzQ7a3NlbGZ0ZXN0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtodWdlcGFnZV9zZXR0aW5ncy5oXCYjMzQ7XG4gXG4mIzQzOyNpZm5kZWYgTUFEVl9DT0xMQVBTRVxuJiM0MzsjZGVmaW5lIE1BRFZfQ09MTEFQU0UgMjVcbiYjNDM7I2VuZGlmXG4mIzQzO1xuICNkZWZpbmUgUEFHRU1BUF9CSVRTX0FMTFx0XHQoUEFHRV9JU19XUEFMTE9XRUQgfCBQQUdFX0lTX1dSSVRURU4gfFx0XFxcbiBcdFx0XHRcdFx0IFBBR0VfSVNfRklMRSB8IFBBR0VfSVNfUFJFU0VOVCB8XHRcXFxuIFx0XHRcdFx0XHQgUEFHRV9JU19TV0FQUEVEIHwgUEFHRV9JU19QRk5aRVJPIHxcdFxcXG5AQCAtMTEwMiw2ICYjNDM7MTEwNiw1OSBAQCBzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF9zY2FuX3Rlc3Qodm9pZClcbiBcdG11bm1hcChtZW0sIG1lbV9zaXplKTtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIEEgMk1CIGFub24gVEhQIGRyb3BwZWQgd2l0aCBNQURWX0RPTlRORUVEIGxlYXZlcyBhIHBtZF9ub25lIGhvbGUgd2l0aCBub1xuJiM0MzsgKiBwYWdlIHRhYmxlLCB3aGljaCBwYWdlbWFwX3BhZ2VfY2F0ZWdvcnkoKSBuZXZlciBzZWVzLiBQQUdFTUFQX1NDQU4gbXVzdFxuJiM0MzsgKiBzdGlsbCByZXBvcnQgaXQgYXMgd3JpdHRlbiBvbiBhIHVmZmQtd3AgVk1BLCB2aWEgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlKCkuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF90aHBfaG9sZV90ZXN0KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRsb25nIG5wYWdlcywgd3JpdHRlbiA9IDAsIHJldCwgaTtcbiYjNDM7XHRzdHJ1Y3QgcGFnZV9yZWdpb24gcmVnaW9uc1sxNl07XG4mIzQzO1x0Y2hhciAqYXJlYSwgKm1lbTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFocGFnZV9zaXplKSB7XG4mIzQzO1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXCYjMzQ7JXMgVEhQIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1x0bnBhZ2VzID0gaHBhZ2Vfc2l6ZSAvIHBhZ2Vfc2l6ZTtcbiYjNDM7XG4mIzQzO1x0LyogR2V0IGEgUE1ELWFsaWduZWQgcmFuZ2Ugc28gdGhlIHJhbmdlIGNhbiBiZSBhIHNpbmdsZSBUSFAuICovXG4mIzQzO1x0YXJlYSA9IG1tYXAoTlVMTCwgMiAqIGhwYWdlX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4mIzQzO1x0XHQgICAgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTLCAtMSwgMCk7XG4mIzQzO1x0aWYgKGFyZWEgPT0gTUFQX0ZBSUxFRClcbiYjNDM7XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDslcyBtbWFwIGZhaWxlZFxcblwmIzM0OywgX19mdW5jX18pO1xuJiM0MztcdG1lbSA9IChjaGFyICopKCgodW5zaWduZWQgbG9uZylhcmVhICYjNDM7IGhwYWdlX3NpemUgLSAxKSBcdTAwMjYgfihocGFnZV9zaXplIC0gMSkpO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQobWVtLCAxLCBocGFnZV9zaXplKTtcbiYjNDM7XHRpZiAobWFkdmlzZShtZW0sIGhwYWdlX3NpemUsIE1BRFZfQ09MTEFQU0UpIHx8XG4mIzQzO1x0ICAgICFjaGVja19odWdlX2Fub24obWVtLCAxLCBocGFnZV9zaXplKSkge1xuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKFwmIzM0OyVzIGNvdWxkIG5vdCBmb3JtIGEgVEhQXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4mIzQzO1x0XHRtdW5tYXAoYXJlYSwgMiAqIGhwYWdlX3NpemUpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0d3BfaW5pdChtZW0sIGhwYWdlX3NpemUpO1xuJiM0MztcbiYjNDM7XHQvKiBEcm9wIHRoZSB3aG9sZSBQTUQ6IGl0IGlzIGNsZWFyZWQgdG8gYSBwbWRfbm9uZSBob2xlLiAqL1xuJiM0MztcdGlmIChtYWR2aXNlKG1lbSwgaHBhZ2Vfc2l6ZSwgTUFEVl9ET05UTkVFRCkpXG4mIzQzO1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7JXMgTUFEVl9ET05UTkVFRCBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcGFnZW1hcF9pb2N0bChtZW0sIGhwYWdlX3NpemUsIHJlZ2lvbnMsIDE2LCAwLCAwLFxuJiM0MztcdFx0XHQgICAgUEFHRV9JU19XUklUVEVOLCAwLCAwLCBQQUdFX0lTX1dSSVRURU4pO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7JXMgc2NhbiBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyByZXQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0d3JpdHRlbiAmIzQzOz0gTEVOKHJlZ2lvbnNbaV0pO1xuJiM0MztcbiYjNDM7XHRrc2Z0X3Rlc3RfcmVzdWx0KHdyaXR0ZW4gPT0gbnBhZ2VzLFxuJiM0MztcdFx0XHQgXCYjMzQ7JXMgcG1kLWhvbGUgcmVwb3J0ZWQgd3JpdHRlbiAoJWxkIG9mICVsZClcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBfX2Z1bmNfXywgd3JpdHRlbiwgbnBhZ2VzKTtcbiYjNDM7XG4mIzQzO1x0d3BfZnJlZShtZW0sIGhwYWdlX3NpemUpO1xuJiM0MztcdG11bm1hcChhcmVhLCAyICogaHBhZ2Vfc2l6ZSk7XG4mIzQzO31cbiYjNDM7XG4gaW50IHNhbml0eV90ZXN0cyh2b2lkKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1fc2l6ZSwgdmVjX3NpemU7XG5AQCAtMTYxMCw3ICYjNDM7MTY2Nyw3IEBAIGludCBtYWluKGludCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdCg0KSlcbiBcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7SHVnZVRMQiB0ZXN0IHdpbGwgYmUgc2tpcHBlZFxcblwmIzM0Oyk7XG4gXG4tXHRrc2Z0X3NldF9wbGFuKDExOCk7XG4mIzQzO1x0a3NmdF9zZXRfcGxhbigxMTkpO1xuIFxuIFx0cGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTtcbiBcdGhwYWdlX3NpemUgPSByZWFkX3BtZF9wYWdlc2l6ZSgpO1xuQEAgLTE3OTAsNiAmIzQzOzE4NDcsNyBAQCBpbnQgbWFpbihpbnQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0LyogMTguIFVucG9wdWxhdGVkIHB0ZSBzY2FuLXBhdGggY29uc2lzdGVuY3kgKi9cbiBcdHVucG9wdWxhdGVkX3NjYW5fdGVzdCgpO1xuJiM0MztcdHVucG9wdWxhdGVkX3RocF9ob2xlX3Rlc3QoKTtcbiBcbiBcdGNsb3NlKHBhZ2VtYXBfZmQpO1xuIFx0a3NmdF9maW5pc2hlZCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTRVJGQVVMVEZEJiMzNDssCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VtYXBfc2Nhbl9wdGVfaG9sZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWQwM2IwYzg1YjdkNTRiMWNmMDM5NDQ5MDM2ZTZkNjFhZTg5YWNlNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMDE6Mjg6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9wcm9jL3Rhc2tfbW11LmMKaW5kZXggZTQzMDJmY2YwMjI3ZDcuLjRiNjRiNGVkMDg0Y2VlIDEwMDY0NAotLS0gYS9mcy9wcm9jL3Rhc2tfbW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvcHJvYy90YXNrX21tdS5jCkBAIC0zMDUwLDEyICYjNDM7MzA1MCwzMyBAQCBzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLAogewogCXN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCA9IHdhbGstJmd0O3ByaXZhdGU7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB3YWxrLSZndDt2bWE7CiYjNDM7CXVuc2lnbmVkIGxvbmcgY2F0ZWdvcmllczsKIAlpbnQgcmV0LCBlcnI7CiAKLQlpZiAoIXZtYSB8fCAhcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UocC0mZ3Q7Y3VyX3ZtYV9jYXRlZ29yeSwgcCkpCiYjNDM7CWlmICghdm1hKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEFuIHVucG9wdWxhdGVkIHJhbmdlIHdpdGggbm8gcGFnZSB0YWJsZSAtLSBlLmcuIGEgMk1CIGFub24gVEhQCiYjNDM7CSAqIGRyb3BwZWQgdmlhIE1BRFZfRE9OVE5FRUQsIHdoaWNoIHBhZ2VtYXBfcGFnZV9jYXRlZ29yeSgpIG5ldmVyIHNlZXMKJiM0MzsJICogLS0gcmVhZHMgYXMgd3JpdHRlbiBvbiBhIHVmZmQtd3AgVk1BLCBtYXRjaGluZyB0aGUgcHRlX25vbmUgY2FzZQomIzQzOwkgKiB0aGVyZS4gUmVwb3J0aW5nIGl0IGFsc28gbGV0cyB0aGUgUE1fU0NBTl9XUF9NQVRDSElORyBhcm1pbmcgYmVsb3cKJiM0MzsJICogaW5zdGFsbCBtYXJrZXJzICh1ZmZkX3dwX3JhbmdlKCkgYWxsb2NhdGVzIHRoZSBwYWdlIHRhYmxlIHVuZGVyCiYjNDM7CSAqIFdQX1VOUE9QVUxBVEVEKSwgc28gdGhlIG5leHQgc2NhbiBzZWVzIGl0IGNsZWFuIHVudGlsIHJlLXdyaXR0ZW4uCiYjNDM7CSAqCiYjNDM7CSAqIGh1Z2V0bGIgaXMgZXhjbHVkZWQ6IGFuIGFsbG9jYXRlZC1idXQtZW1wdHkgaHVnZSBlbnRyeSByZWFkcyBhcwomIzQzOwkgKiBub3Qtd3JpdHRlbiB2aWEgcGFnZW1hcF9odWdldGxiX2NhdGVnb3J5KCksIHNvIHJlcG9ydGluZyBhbgomIzQzOwkgKiB1bmFsbG9jYXRlZCBodWdldGxiIGhvbGUgYXMgd3JpdHRlbiBoZXJlIHdvdWxkIGJlIGluY29uc2lzdGVudAomIzQzOwkgKiB3aXRoaW4gdGhlIHNhbWUgVk1BLgomIzQzOwkgKi8KJiM0MzsJY2F0ZWdvcmllcyA9IHAtJmd0O2N1cl92bWFfY2F0ZWdvcnk7CiYjNDM7CWlmICh1c2VyZmF1bHRmZF93cCh2bWEpICZhbXA7JmFtcDsgIWlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKQomIzQzOwkJY2F0ZWdvcmllcyB8PSBQQUdFX0lTX1dSSVRURU47CiYjNDM7CiYjNDM7CWlmICghcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UoY2F0ZWdvcmllcywgcCkpCiAJCXJldHVybiAwOwogCi0JcmV0ID0gcGFnZW1hcF9zY2FuX291dHB1dChwLSZndDtjdXJfdm1hX2NhdGVnb3J5LCBwLCBhZGRyLCAmYW1wO2VuZCk7CiYjNDM7CXJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQoY2F0ZWdvcmllcywgcCwgYWRkciwgJmFtcDtlbmQpOwogCWlmIChhZGRyID09IGVuZCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jCmluZGV4IGY5YmNmZjhlNzhmYWJiLi5hNGU4Y2M4YWVhNGI3YyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuYwpAQCAtMjUsNiAmIzQzOzI1LDEwIEBACiAjaW5jbHVkZSAmIzM0O2tzZWxmdGVzdC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aHVnZXBhZ2Vfc2V0dGluZ3MuaCYjMzQ7CiAKJiM0MzsjaWZuZGVmIE1BRFZfQ09MTEFQU0UKJiM0MzsjZGVmaW5lIE1BRFZfQ09MTEFQU0UgMjUKJiM0MzsjZW5kaWYKJiM0MzsKICNkZWZpbmUgUEFHRU1BUF9CSVRTX0FMTAkJKFBBR0VfSVNfV1BBTExPV0VEIHwgUEFHRV9JU19XUklUVEVOIHwJXAogCQkJCQkgUEFHRV9JU19GSUxFIHwgUEFHRV9JU19QUkVTRU5UIHwJXAogCQkJCQkgUEFHRV9JU19TV0FQUEVEIHwgUEFHRV9JU19QRk5aRVJPIHwJXApAQCAtMTEwMiw2ICYjNDM7MTEwNiw1OSBAQCBzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF9zY2FuX3Rlc3Qodm9pZCkKIAltdW5tYXAobWVtLCBtZW1fc2l6ZSk7CiB9CiAKJiM0MzsvKgomIzQzOyAqIEEgMk1CIGFub24gVEhQIGRyb3BwZWQgd2l0aCBNQURWX0RPTlRORUVEIGxlYXZlcyBhIHBtZF9ub25lIGhvbGUgd2l0aCBubwomIzQzOyAqIHBhZ2UgdGFibGUsIHdoaWNoIHBhZ2VtYXBfcGFnZV9jYXRlZ29yeSgpIG5ldmVyIHNlZXMuIFBBR0VNQVBfU0NBTiBtdXN0CiYjNDM7ICogc3RpbGwgcmVwb3J0IGl0IGFzIHdyaXR0ZW4gb24gYSB1ZmZkLXdwIFZNQSwgdmlhIHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSgpLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHVucG9wdWxhdGVkX3RocF9ob2xlX3Rlc3Qodm9pZCkKJiM0Mzt7CiYjNDM7CWxvbmcgbnBhZ2VzLCB3cml0dGVuID0gMCwgcmV0LCBpOwomIzQzOwlzdHJ1Y3QgcGFnZV9yZWdpb24gcmVnaW9uc1sxNl07CiYjNDM7CWNoYXIgKmFyZWEsICptZW07CiYjNDM7CiYjNDM7CWlmICghaHBhZ2Vfc2l6ZSkgewomIzQzOwkJa3NmdF90ZXN0X3Jlc3VsdF9za2lwKCYjMzQ7JXMgVEhQIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7LCBfX2Z1bmNfXyk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsJbnBhZ2VzID0gaHBhZ2Vfc2l6ZSAvIHBhZ2Vfc2l6ZTsKJiM0MzsKJiM0MzsJLyogR2V0IGEgUE1ELWFsaWduZWQgcmFuZ2Ugc28gdGhlIHJhbmdlIGNhbiBiZSBhIHNpbmdsZSBUSFAuICovCiYjNDM7CWFyZWEgPSBtbWFwKE5VTEwsIDIgKiBocGFnZV9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAomIzQzOwkJICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUywgLTEsIDApOwomIzQzOwlpZiAoYXJlYSA9PSBNQVBfRkFJTEVEKQomIzQzOwkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7JXMgbW1hcCBmYWlsZWRcbiYjMzQ7LCBfX2Z1bmNfXyk7CiYjNDM7CW1lbSA9IChjaGFyICopKCgodW5zaWduZWQgbG9uZylhcmVhICYjNDM7IGhwYWdlX3NpemUgLSAxKSAmYW1wOyB+KGhwYWdlX3NpemUgLSAxKSk7CiYjNDM7CiYjNDM7CW1lbXNldChtZW0sIDEsIGhwYWdlX3NpemUpOwomIzQzOwlpZiAobWFkdmlzZShtZW0sIGhwYWdlX3NpemUsIE1BRFZfQ09MTEFQU0UpIHx8CiYjNDM7CSAgICAhY2hlY2tfaHVnZV9hbm9uKG1lbSwgMSwgaHBhZ2Vfc2l6ZSkpIHsKJiM0MzsJCWtzZnRfdGVzdF9yZXN1bHRfc2tpcCgmIzM0OyVzIGNvdWxkIG5vdCBmb3JtIGEgVEhQXG4mIzM0OywgX19mdW5jX18pOwomIzQzOwkJbXVubWFwKGFyZWEsIDIgKiBocGFnZV9zaXplKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwl3cF9pbml0KG1lbSwgaHBhZ2Vfc2l6ZSk7CiYjNDM7CiYjNDM7CS8qIERyb3AgdGhlIHdob2xlIFBNRDogaXQgaXMgY2xlYXJlZCB0byBhIHBtZF9ub25lIGhvbGUuICovCiYjNDM7CWlmIChtYWR2aXNlKG1lbSwgaHBhZ2Vfc2l6ZSwgTUFEVl9ET05UTkVFRCkpCiYjNDM7CQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDslcyBNQURWX0RPTlRORUVEIGZhaWxlZFxuJiMzNDssIF9fZnVuY19fKTsKJiM0MzsKJiM0MzsJcmV0ID0gcGFnZW1hcF9pb2N0bChtZW0sIGhwYWdlX3NpemUsIHJlZ2lvbnMsIDE2LCAwLCAwLAomIzQzOwkJCSAgICBQQUdFX0lTX1dSSVRURU4sIDAsIDAsIFBBR0VfSVNfV1JJVFRFTik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7JXMgc2NhbiBmYWlsZWRcbiYjMzQ7LCBfX2Z1bmNfXyk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyByZXQ7IGkmIzQzOyYjNDM7KQomIzQzOwkJd3JpdHRlbiAmIzQzOz0gTEVOKHJlZ2lvbnNbaV0pOwomIzQzOwomIzQzOwlrc2Z0X3Rlc3RfcmVzdWx0KHdyaXR0ZW4gPT0gbnBhZ2VzLAomIzQzOwkJCSAmIzM0OyVzIHBtZC1ob2xlIHJlcG9ydGVkIHdyaXR0ZW4gKCVsZCBvZiAlbGQpXG4mIzM0OywKJiM0MzsJCQkgX19mdW5jX18sIHdyaXR0ZW4sIG5wYWdlcyk7CiYjNDM7CiYjNDM7CXdwX2ZyZWUobWVtLCBocGFnZV9zaXplKTsKJiM0MzsJbXVubWFwKGFyZWEsIDIgKiBocGFnZV9zaXplKTsKJiM0Mzt9CiYjNDM7CiBpbnQgc2FuaXR5X3Rlc3RzKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBsb25nIG1lbV9zaXplLCB2ZWNfc2l6ZTsKQEAgLTE2MTAsNyAmIzQzOzE2NjcsNyBAQCBpbnQgbWFpbihpbnQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgYXJnYywgY2hhciAqYXJndltdKQogCWlmICghaHVnZXRsYl9zZXR1cF9kZWZhdWx0KDQpKQogCQlrc2Z0X3ByaW50X21zZygmIzM0O0h1Z2VUTEIgdGVzdCB3aWxsIGJlIHNraXBwZWRcbiYjMzQ7KTsKIAotCWtzZnRfc2V0X3BsYW4oMTE4KTsKJiM0MzsJa3NmdF9zZXRfcGxhbigxMTkpOwogCiAJcGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKIAlocGFnZV9zaXplID0gcmVhZF9wbWRfcGFnZXNpemUoKTsKQEAgLTE3OTAsNiAmIzQzOzE4NDcsNyBAQCBpbnQgbWFpbihpbnQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgYXJnYywgY2hhciAqYXJndltdKQogCiAJLyogMTguIFVucG9wdWxhdGVkIHB0ZSBzY2FuLXBhdGggY29uc2lzdGVuY3kgKi8KIAl1bnBvcHVsYXRlZF9zY2FuX3Rlc3QoKTsKJiM0MzsJdW5wb3B1bGF0ZWRfdGhwX2hvbGVfdGVzdCgpOwogCiAJY2xvc2UocGFnZW1hcF9mZCk7CiAJa3NmdF9maW5pc2hlZCgpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYm90aCBgZnMvcHJvYy90YXNrX21tdS5jYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhbnl0aGluZyB0aGF0IGludGVyYWN0cyB3aXRoIGBwcm9jZnNgIGFuZCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGlzIHdvcnRoIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgd2hlbiBpdCYjMzk7cyBiZWluZyBtb2RpZmllZC4KClNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpbiBgZnMvcHJvYy90YXNrX21tdS5jYCBpcyB3aXRoaW4gYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAgZnVuY3Rpb24gaXMga2V5LiBGcm9tIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgdGhlIHBhdGNoIG1vZGlmaWVzIGhvdyB0aGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggdW5wb3B1bGF0ZWQgcmFuZ2VzLCBvciAmIzM0O2hvbGVzLCYjMzQ7IHdpdGhpbiBWaXJ0dWFsIE1lbW9yeSBBcmVhcyAoVk1BcykgdGhhdCBhcmUgd3JpdGUtcHJvdGVjdGVkIHRocm91Z2ggdXNlcmZhdWx0ZmQuIFRoZSBjb3JlIGxvZ2ljIGlzIHRoZSBhZGRpdGlvbiBvZiBgUEFHRV9JU19XUklUVEVOYCB0byB0aGUgYGNhdGVnb3JpZXNgIGlmIGB1c2VyZmF1bHRmZF93cCh2bWEpYCBpcyB0cnVlIGFuZCBpdCYjMzk7cyBub3QgYSBodWdldGxiIHBhZ2UuCgpMZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIGxvb2sgYXQgdGhlIGNvZGUsIHBhcnRpY3VsYXJseSB0aGF0IGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIGZ1bmN0aW9uIHNpZ25hdHVyZS4KYGBgYwpzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVwdGgsIHN0cnVjdCBtbV93YWxrICp3YWxrKQpgYGAKClJpZ2h0LCBzbyBpdCYjMzk7cyBjbGVhcmx5IHBhcnQgb2YgdGhlIHBhZ2VtYXAgc2NhbiBmdW5jdGlvbmFsaXR5LCBxdWl0ZSBsaWtlbHkgYWNjZXNzZWQgdGhyb3VnaCBhbiBgaW9jdGwoUEFHRU1BUF9TQ0FOKWAuIFNpbmNlIHRoaXMgaXMgYSBjb3JlIG1tL3Byb2NmcyBhcmVhLCB0aGlzIG1vZGlmaWNhdGlvbiBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJdCYjMzk7cyBwcmltZSB0ZXJyaXRvcnkgZm9yIGZ1enppbmcuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZvY3VzIHN5bWJvbHMuIENsZWFybHksIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIGlzIGEgcHJpbWFyeSBmb2N1cy4gSSYjMzk7bGwgYWxzbyB3YW50IHRvIGxvb2sgZm9yIHRoZSBhc3NvY2lhdGVkIGlvY3RsIGhhbmRsZXIsIHByb2JhYmx5IG5hbWVkIHNvbWV0aGluZyBsaWtlIGBkb19wYWdlbWFwX3NjYW5gIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbmQgbG9jYXRlIHRoZSBkZWZpbml0aW9uIGluIGBmcy9wcm9jL3Rhc2tfbW11LmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VtYXBfc2Nhbl9wdGVfaG9sZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Byb2MvdGFza19tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmM9MzA0MT1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2hvbGVfd3Aoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMwNDctXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzA0ODpzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuZnMvcHJvYy90YXNrX21tdS5jLTMwNDktXHRcdFx0XHQgaW50IGRlcHRoLCBzdHJ1Y3QgbW1fd2FsayAqd2Fsaylcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MzA5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIHBhZ2VtYXBfc2Nhbl9vcHMgPSB7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMwOTgtXHQucG1kX2VudHJ5ID0gcGFnZW1hcF9zY2FuX3BtZF9lbnRyeSxcbmZzL3Byb2MvdGFza19tbXUuYzozMDk5Olx0LnB0ZV9ob2xlID0gcGFnZW1hcF9zY2FuX3B0ZV9ob2xlLFxuZnMvcHJvYy90YXNrX21tdS5jLTMxMDAtXHQuaHVnZXRsYl9lbnRyeSA9IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2VudHJ5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NjMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRmluZGluZyB0aGUgSU9DVEwgSGFuZGxlcjogQSBRdWljayBTZWFyY2gqKgoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyBwcmV0dHkgY2xlYXI6IEkgbmVlZCB0byBsb2NhdGUgdGhlIGlvY3RsIGhhbmRsZXIuIEl04oCZcyB0aGUgZ2F0ZWtlZXBlciwgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgZ29pbmcgdG8gaW50ZXJwcmV0IGFuZCBkaXNwYXRjaCB0aGUgc3BlY2lmaWMgY29tbWFuZHMgSSYjMzk7bSB0aHJvd2luZyBhdCB0aGlzIGRldmljZSBvciBkcml2ZXIuIFdpdGhvdXQgaXQsIEkmIzM5O20ganVzdCBzaG91dGluZyBpbnRvIHRoZSB2b2lkLiBUaW1lIHRvIGdldCBkaWdnaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyBhbmQgdGVjaG5pcXVlcywgcHJvYmFibHkgc3RhcnRpbmcgd2l0aCBhIHF1aWNrIGdyZXAgb3Igc2ltaWxhciBzZWFyY2guIEkgbmVlZCB0byB6ZXJvIGluIG9uIHdoZXJlIHRoZSByZWxldmFudCBjb2RlIHJlc2lkZXMsIGFuZCB3aGVyZSB0aGUgaW9jdGwgcHJvY2Vzc2luZyBpcyBsaWtlbHkgaGFwcGVuaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBzZWFyY2ggdHVybnMgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZW1hcF9zY2FuX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Byb2MvdGFza19tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmM9MzA0OD1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0zMDk1LVxuZnMvcHJvYy90YXNrX21tdS5jOjMwOTY6c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwYWdlbWFwX3NjYW5fb3BzID0ge1xuZnMvcHJvYy90YXNrX21tdS5jLTMwOTctXHQudGVzdF93YWxrID0gcGFnZW1hcF9zY2FuX3Rlc3Rfd2Fsayxcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MzIwMD1zdGF0aWMgbG9uZyBkb19wYWdlbWFwX3NjYW4oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgdWFyZylcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzIzOC1cdFx0cmV0ID0gd2Fsa19wYWdlX3JhbmdlKG1tLCB3YWxrX3N0YXJ0LCBwLmFyZy5lbmQsXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzIzOTpcdFx0XHRcdCAgICAgIFx1MDAyNnBhZ2VtYXBfc2Nhbl9vcHMsIFx1MDAyNnApO1xuZnMvcHJvYy90YXNrX21tdS5jLTMyNDAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIGBkb19wYWdlbWFwX3NjYW5gIElPQ1RMIEhhbmRsZXIqKgoKQWxyaWdodCwgSSYjMzk7bSB0cmFjaW5nIHRoaXMgYGlvY3RsYCBoYW5kbGVyLCBgZG9fcGFnZW1hcF9zY2FuYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2VlIGlmIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgY29tZSBpbnRvIHBsYXkgaGVyZSwgcmlnaHQ/IFRoaXMgbG9va3MgbGlrZSBhIGRlZXAgZGl2ZSBpbnRvIG1lbW9yeSBtYW5hZ2VtZW50LgoKSG1tLCB0aGUgcHJlc2VuY2Ugb2YgYHVzZXJmYXVsdGZkX3dwKHZtYSlgIGltbWVkaWF0ZWx5IHNjcmVhbXMgYENPTkZJR19VU0VSRkFVTFRGRGAgdG8gbWUuIEdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkga25vdyB0aGF0IGNvbmZpZyBwcmV0dHkgd2VsbCDigJMgaXQmIzM5O3MgY3J1Y2lhbCBmb3IgdXNlcnNwYWNlIGZhdWx0IGhhbmRsaW5nLiAKCk5vdywgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBmcy9wcm9jL3Rhc2tfbW11LmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZG9fcGFnZW1hcF9zY2FuYCB0aGVyZSwgYW5kIHByb2JhYmx5IHNvbWUgcmVsYXRlZCBjb2RlLCBsaWtlbHkgaW5jbHVkaW5nIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgbWVhdCBvZiBob3cgdGhpcyBoYW5kbGVyIGFjdHVhbGx5IGludGVyYWN0cyB3aXRoIHBhZ2UgdGFibGVzLCBtZW1vcnkgcmVnaW9ucywgYW5kIHBvdGVudGlhbCBob2xlcyB3aXRoaW4gdGhlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IHNjZW5hcmlvcywgcGVyaGFwcyBkZWFsaW5nIHdpdGggc2hhcmVkIG1lbW9yeSwgY29weS1vbi13cml0ZSwgYW5kIG1heWJlIGV2ZW4gTlVNQSBjb25zaWRlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19wYWdlbWFwX3NjYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jPTMxNzM9c3RhdGljIGxvbmcgcGFnZW1hcF9zY2FuX2ZsdXNoX2J1ZmZlcihzdHJ1Y3QgcGFnZW1hcF9zY2FuX3ByaXZhdGUgKnApXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMxOTktXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzIwMDpzdGF0aWMgbG9uZyBkb19wYWdlbWFwX3NjYW4oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgdWFyZylcbmZzL3Byb2MvdGFza19tbXUuYy0zMjAxLXtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MzI3Mz1zdGF0aWMgbG9uZyBkb19wYWdlbWFwX2NtZChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCxcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzI3OS1cdGNhc2UgUEFHRU1BUF9TQ0FOOlxuZnMvcHJvYy90YXNrX21tdS5jOjMyODA6XHRcdHJldHVybiBkb19wYWdlbWFwX3NjYW4obW0sIGFyZyk7XG5mcy9wcm9jL3Rhc2tfbW11LmMtMzI4MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjUxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqQXNzZXNzaW5nIHRoZSBOZWNlc3NpdHkgb2YgQ09ORklHX1VTRVJGQVVMVEZEKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcsIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogZG8gd2UgKnJlYWxseSogbmVlZCBgQ09ORklHX1VTRVJGQVVMVEZEYD8gSXQmIzM5O3MgYSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byB1c2VyLXNwYWNlIGZhdWx0IGhhbmRsaW5nLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyBhY3R1YWxseSByZWxldmFudCBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBUaGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBhcmUgc3Vic3RhbnRpYWwsIGZyb20gcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgdG8gc2VjdXJpdHkgcmlza3MsIHNvIGZpZ3VyaW5nIG91dCBpZiBpdCYjMzk7cyByZXF1aXJlZCBpcyBwYXJhbW91bnQgYmVmb3JlIHByb2NlZWRpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGlmIHRoaXMgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgb3Igc29tZXRoaW5nIHRoYXQgY2FuIGJlIHNhZmVseSBkaXNhYmxlZCBvciBvbWl0dGVkLiBUaGUgZ29hbCBpcyB0byBrZWVwIHRoZSBzeXN0ZW0gbGVhbiBhbmQgZWZmaWNpZW50IHVubGVzcyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgdHJ1bHkgaW5kaXNwZW5zYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VVNFUkZBVUxURkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jPTExNjY9c3RhdGljIHZvaWQgc2hvd19zbWFwX3ZtYV9mbGFncyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMjM2LSNlbmRpZiAvKiBDT05GSUdfQVJDSF9IQVNfUEtFWVMgKi9cbmZzL3Byb2MvdGFza19tbXUuYzoxMjM3OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIzOC1cdFx0W2lsb2cyKFZNX1VGRkRfTUlOT1IpXVx0PSBcJiMzNDt1aVwmIzM0OyxcbmZzL3Byb2MvdGFza19tbXUuYzoxMjM5OiNlbmRpZiAvKiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SICovXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI0MC0jaWZkZWYgQ09ORklHX0FSQ0hfSEFTX1VTRVJfU0hBRE9XX1NUQUNLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNzAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUga25vd2xlZGdlYWJsZSBpbiB0aGUgZmllbGQ6CgoqKkxvY2F0aW5nIHRoZSBIZWFydCBvZiB0aGUgTWF0dGVyOiBFeGFtaW5pbmcgYHVzZXJmYXVsdGZkX3dwYCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYHVzZXJmYXVsdGZkX3dwYCBjb25zdHJ1Y3QuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdoZXJlICppcyogdGhpcyB0aGluZyBkZWZpbmVkPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgbG9jYXRpb24gd2l0aGluIHRoZSBjb2RlYmFzZS4gS25vd2luZyBpdHMgZGVmaW5pdGlvbiB3aWxsIGdpdmUgbWUgYSBjcml0aWNhbCBmb3VuZGF0aW9uIGZvciBhbmFseXppbmcgaXRzIHB1cnBvc2UsIGludGVyYWN0aW9ucywgYW5kIHBvdGVudGlhbCBpc3N1ZXMuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGludmVzdGlnYXRpb24sIHdoZXRoZXIgaXQmIzM5O3MgdW5kZXJzdGFuZGluZyBhIGJ1ZyByZXBvcnQsIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIG9yIHNpbXBseSBkZWVwZW5pbmcgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZS4gTG9jYXRpbmcgdGhlIGRlZmluaXRpb24gd2lsbCBiZSBjcnVjaWFsIGJlZm9yZSBJIGNhbiBkbyBhbnkga2luZCBvZiBjb2RlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2VyZmF1bHRmZF93cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW1faW5saW5lLmg9NTU1PXN0YXRpYyBpbmxpbmUgcHRlX21hcmtlciBjb3B5X3B0ZV9tYXJrZXIoXG4tLVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01NjItXHQvKiBPbmx5IGNvcHkgUFRFIG1hcmtlcnMgaWYgVUZGRCByZWdpc3RlciBtYXRjaGVzLiAqL1xuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaDo1NjM6XHRpZiAoKHNyY20gXHUwMDI2IFBURV9NQVJLRVJfVUZGRF9XUCkgXHUwMDI2XHUwMDI2IHVzZXJmYXVsdGZkX3dwKGRzdF92bWEpKVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01NjQtXHRcdGRzdG0gfD0gUFRFX01BUktFUl9VRkZEX1dQO1xuLS1cbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg9NTgyPXB0ZV9pbnN0YWxsX3VmZmRfd3BfaWZfbmVlZGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01OTMtXHQvKlxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaDo1OTQ6XHQgKiBOT1RFOiB1c2VyZmF1bHRmZF93cF91bnBvcHVsYXRlZCgpIGRvZXNuJiMzOTt0IG5lZWQgdGhpcyB3aG9sZVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01OTUtXHQgKiB0aGluZywgYmVjYXVzZSB3aGVuIHphcHBpbmcgZWl0aGVyIGl0IG1lYW5zIGl0JiMzOTtzIGRyb3BwaW5nIHRoZVxuLS1cbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmgtNTk4LVx0ICovXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oOjU5OTpcdGlmICh2bWFfaXNfYW5vbnltb3VzKHZtYSkgfHwgIXVzZXJmYXVsdGZkX3dwKHZtYSkpXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTYwMC1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTE5Nj1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfbWlzc2luZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yMDAtXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyMDE6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjAyLXtcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yMTE9c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3B0ZV93cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yMTMte1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjE0Olx0cmV0dXJuIHVzZXJmYXVsdGZkX3dwKHZtYSkgXHUwMDI2XHUwMDI2IHB0ZV91ZmZkX3dwKHB0ZSk7XG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yMTUtfVxuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTIxNz1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfaHVnZV9wbWRfd3Aoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjE5LXtcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjIyMDpcdHJldHVybiB1c2VyZmF1bHRmZF93cCh2bWEpIFx1MDAyNlx1MDAyNiBwbWRfdWZmZF93cChwbWQpO1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjIxLX1cbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yNTI9ZXh0ZXJuIHZvaWQgdXNlcmZhdWx0ZmRfdW5tYXBfY29tcGxldGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yNTMtXHRcdFx0XHQgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdWYpO1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjU0OmV4dGVybiBib29sIHVzZXJmYXVsdGZkX3dwX3VucG9wdWxhdGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTtcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjI1NTpleHRlcm4gYm9vbCB1c2VyZmF1bHRmZF93cF9hc3luYyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7XG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yNTYtXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyNTc6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwX3VzZV9tYXJrZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjU4LXtcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI1OS1cdC8qIE9ubHkgd3ItcHJvdGVjdCBtb2RlIHVzZXMgcHRlIG1hcmtlcnMgKi9cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjI2MDpcdGlmICghdXNlcmZhdWx0ZmRfd3Aodm1hKSlcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI2MS1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI3MC1cdCAqL1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjcxOlx0cmV0dXJuIHVzZXJmYXVsdGZkX3dwX3VucG9wdWxhdGVkKHZtYSk7XG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yNzItfVxuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTMxNj1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfbWlzc2luZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0zMjAtXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDozMjE6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMzIyLXtcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0zOTg9c3RhdGljIGlubGluZSBib29sIHVmZmRfZGlzYWJsZV9mYXVsdF9hcm91bmQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDAyLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6NDAzOnN0YXRpYyBpbmxpbmUgYm9vbCB1c2VyZmF1bHRmZF93cF91bnBvcHVsYXRlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQwNC17XG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDA3LVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6NDA4OnN0YXRpYyBpbmxpbmUgYm9vbCB1c2VyZmF1bHRmZF93cF9hc3luYyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQwOS17XG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg9NDEzPXN0YXRpYyBpbmxpbmUgYm9vbCB2bWFfaGFzX3VmZmRfd2l0aG91dF9ldmVudF9yZW1hcChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC00MTctXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDo0MTg6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwX3VzZV9tYXJrZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDE5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc0NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHVzZXJmYXVsdGZkX2suaCoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfVVNFUkZBVUxURkRgIGlzLCBpbiBmYWN0LCBlbmFibGVkLiBJdCYjMzk7cyBhbG1vc3Qgc2Vjb25kIG5hdHVyZSB0byBzdGFydCBoZXJlIHdoZW4gZGVhbGluZyB3aXRoIFVGRkQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGtlcm5lbCBpcyBldmVuIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aGlzLiBUaW1lIHRvIGNyYWNrIG9wZW4gYGluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oYCBhbmQgY29uZmlybSB0aGF0IHRoZSBwcmVyZXF1aXNpdGUgb3B0aW9ucyBhcmUgc2V0LiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgaWYgdGhlIGZlYXR1cmUgaXMgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoZWNrLCBidXQgYSBuZWNlc3Nhcnkgb25lIHRvIGVuc3VyZSBJJiMzOTttIGJhcmtpbmcgdXAgdGhlIHJpZ2h0IHRyZWUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGhlYWRlciBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19VU0VSRkFVTFRGRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTExLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MTI6I2lmZGVmIENPTkZJR19VU0VSRkFVTFRGRFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMTMtXG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg9Mjc4PXN0YXRpYyBpbmxpbmUgYm9vbCBwdGVfc3dwX3VmZmRfd3BfYW55KHB0ZV90IHB0ZSlcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yOTMtfVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6Mjk0OiNlbHNlIC8qIENPTkZJR19VU0VSRkFVTFRGRCAqL1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjk1LVxuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTQyNz1zdGF0aWMgaW5saW5lIGJvb2wgcHRlX3N3cF91ZmZkX3dwX2FueShwdGVfdCBwdGUpXG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDMwLX1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjQzMTojZW5kaWYgLyogQ09ORklHX1VTRVJGQVVMVEZEICovXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC00MzItI2VuZGlmIC8qIF9MSU5VWF9VU0VSRkFVTFRGRF9LX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0cywgcHV0dGluZyBteXNlbGYgaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBrZXJuZWwgY29kZSBpbnZlc3RpZ2F0aW9uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHdlIG5lZWQgYENPTkZJR19VU0VSRkFVTFRGRGAuIFRoYXQmIzM5O3MgYSBnaXZlbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGlzIGVuYWJsZWQuIE5vdywgd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBQQUdFTUFQX1NDQU5gPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBkZXBlbmRlbnQgb24gYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgbWFrZXMgaXQgdGljay4gTGV0IG1lIGZpbmQgd2hlcmUgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gSSBzaG91bGQgc3RhcnQgd2l0aCBgZnMvcHJvYy90YXNrX21tdS5jYCwgc2luY2UgdGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBwYWdlbWFwLXJlbGF0ZWQgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBgZG9fcGFnZW1hcF9zY2FuYCBhbmQgYGRvX3BhZ2VtYXBfY21kYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYWJvdXQgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIGxvb2sgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fcGFnZW1hcF9zY2FuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Byb2MvdGFza19tbXUuYz0zMTczPXN0YXRpYyBsb25nIHBhZ2VtYXBfc2Nhbl9mbHVzaF9idWZmZXIoc3RydWN0IHBhZ2VtYXBfc2Nhbl9wcml2YXRlICpwKVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0zMTk5LVxuZnMvcHJvYy90YXNrX21tdS5jOjMyMDA6c3RhdGljIGxvbmcgZG9fcGFnZW1hcF9zY2FuKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHVhcmcpXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzIwMS17XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTMyNzM9c3RhdGljIGxvbmcgZG9fcGFnZW1hcF9jbWQoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMyNzktXHRjYXNlIFBBR0VNQVBfU0NBTjpcbmZzL3Byb2MvdGFza19tbXUuYzozMjgwOlx0XHRyZXR1cm4gZG9fcGFnZW1hcF9zY2FuKG1tLCBhcmcpO1xuZnMvcHJvYy90YXNrX21tdS5jLTMyODEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MDQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipDaGVja2luZyBmb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgYGRvX3BhZ2VtYXBfc2NhbmAgZnVuY3Rpb24sIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiBpdCYjMzk7cyBwb3RlbnRpYWxseSBndWFyZGVkIGJ5IGFueSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY29tcGlsZWQsIG9yIGlmIGl0cyBpbmNsdXNpb24gaXMgZGVwZW5kZW50IG9uIHNvbWUgY29uZmlndXJhdGlvbiBmbGFnIG9yIHN5c3RlbSBkZWZpbml0aW9uLiBJZiBpdCAqaXMqIGNvbmRpdGlvbmFsLCBpdCB3aWxsIHNldmVyZWx5IGltcGFjdCBob3cgSSBpbnRlcnByZXQgaXRzIGJlaGF2aW9yLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgc3lzdGVtLCBhbmQgaWYgSSBjYW4gZXZlbiByZWx5IG9uIGl0cyBwcmVzZW5jZSBpbiBhbGwgc2NlbmFyaW9zLiBUaW1lIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGAjaWZkZWZgIG9yIHNpbWlsYXIgZGlyZWN0aXZlcyBzdXJyb3VuZGluZyBpdC4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aG9zZSBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Byb2MvdGFza19tbXUuYz05ND11bnNpZ25lZCBsb25nIHRhc2tfc3RhdG0oc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEwNi1cbmZzL3Byb2MvdGFza19tbXUuYzoxMDc6I2lmZGVmIENPTkZJR19OVU1BXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTA4LS8qXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTEyOD1zdGF0aWMgdm9pZCByZWxlYXNlX3Rhc2tfbWVtcG9saWN5KHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdilcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMyLVxuZnMvcHJvYy90YXNrX21tdS5jOjEzMzojaWZkZWYgQ09ORklHX1BFUl9WTUFfTE9DS1xuZnMvcHJvYy90YXNrX21tdS5jLTEzNC1cbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9NTQ1PXN0YXRpYyBpbnQgcGlkX21hcHNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtNTYyLVxuZnMvcHJvYy90YXNrX21tdS5jOjU2MzojaWZkZWYgQ09ORklHX1BFUl9WTUFfTE9DS1xuZnMvcHJvYy90YXNrX21tdS5jLTU2NC1cbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9ODYzPWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfbWFwc19vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYy04OTAtXG5mcy9wcm9jL3Rhc2tfbW11LmM6ODkxOiNpZmRlZiBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JcbmZzL3Byb2MvdGFza19tbXUuYy04OTItc3RydWN0IG1lbV9zaXplX3N0YXRzIHtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9OTQ3PXN0YXRpYyB2b2lkIHNtYXBzX2FjY291bnQoc3RydWN0IG1lbV9zaXplX3N0YXRzICptc3MsIHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMDIxLVxuZnMvcHJvYy90YXNrX21tdS5jOjEwMjI6I2lmZGVmIENPTkZJR19TSE1FTVxuZnMvcHJvYy90YXNrX21tdS5jLTEwMjMtc3RhdGljIGludCBzbWFwc19wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0xMDM5PXN0YXRpYyB2b2lkIHNtYXBzX3B0ZV9ob2xlX2xvb2t1cCh1bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCBtbV93YWxrICp3YWxrKVxuZnMvcHJvYy90YXNrX21tdS5jLTEwNDAte1xuZnMvcHJvYy90YXNrX21tdS5jOjEwNDE6I2lmZGVmIENPTkZJR19TSE1FTVxuZnMvcHJvYy90YXNrX21tdS5jLTEwNDItXHRpZiAod2Fsay1cdTAwM2VvcHMtXHUwMDNlcHRlX2hvbGUpIHtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTA0OT1zdGF0aWMgdm9pZCBzbWFwc19wdGVfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMDk0LVxuZnMvcHJvYy90YXNrX21tdS5jOjEwOTU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuZnMvcHJvYy90YXNrX21tdS5jLTEwOTYtc3RhdGljIHZvaWQgc21hcHNfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTE2Nj1zdGF0aWMgdm9pZCBzaG93X3NtYXBfdm1hX2ZsYWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEyMDgtXHRcdFtpbG9nMihWTV9ET05URFVNUCldXHQ9IFwmIzM0O2RkXCYjMzQ7LFxuZnMvcHJvYy90YXNrX21tdS5jOjEyMDk6I2lmZGVmIENPTkZJR19BUk02NF9CVElcbmZzL3Byb2MvdGFza19tbXUuYy0xMjEwLVx0XHRbaWxvZzIoVk1fQVJNNjRfQlRJKV1cdD0gXCYjMzQ7YnRcJiMzNDssXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIxMS0jZW5kaWZcbmZzL3Byb2MvdGFza19tbXUuYzoxMjEyOiNpZmRlZiBDT05GSUdfTUVNX1NPRlRfRElSVFlcbmZzL3Byb2MvdGFza19tbXUuYy0xMjEzLVx0XHRbaWxvZzIoVk1fU09GVERJUlRZKV1cdD0gXCYjMzQ7c2RcJiMzNDssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEyMjAtXHRcdFtpbG9nMihWTV9VRkZEX1dQKV1cdD0gXCYjMzQ7dXdcJiMzNDssXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIyMTojaWZkZWYgQ09ORklHX0FSTTY0X01URVxuZnMvcHJvYy90YXNrX21tdS5jLTEyMjItXHRcdFtpbG9nMihWTV9NVEUpXVx0XHQ9IFwmIzM0O210XCYjMzQ7LFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMjI0LSNlbmRpZlxuZnMvcHJvYy90YXNrX21tdS5jOjEyMjU6I2lmZGVmIENPTkZJR19BUkNIX0hBU19QS0VZU1xuZnMvcHJvYy90YXNrX21tdS5jLTEyMjYtXHRcdC8qIFRoZXNlIGNvbWUgb3V0IHZpYSBQcm90ZWN0aW9uS2V5OiAqL1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMjM2LSNlbmRpZiAvKiBDT05GSUdfQVJDSF9IQVNfUEtFWVMgKi9cbmZzL3Byb2MvdGFza19tbXUuYzoxMjM3OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIzOC1cdFx0W2lsb2cyKFZNX1VGRkRfTUlOT1IpXVx0PSBcJiMzNDt1aVwmIzM0OyxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjM5LSNlbmRpZiAvKiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SICovXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTI0MDojaWZkZWYgQ09ORklHX0FSQ0hfSEFTX1VTRVJfU0hBRE9XX1NUQUNLXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI0MS1cdFx0W2lsb2cyKFZNX1NIQURPV19TVEFDSyldID0gXCYjMzQ7c3NcJiMzNDssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEyNDUtI2VuZGlmXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTI0NjojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI0Ny1cdFx0W2lsb2cyKFZNX1NFQUxFRCldID0gXCYjMzQ7c2xcJiMzNDssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEyNjEtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTI2MjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuZnMvcHJvYy90YXNrX21tdS5jLTEyNjMtc3RhdGljIGludCBzbWFwc19odWdldGxiX3JhbmdlKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTEzMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBzbWFwc19zaG1lbV93YWxrX29wcyA9IHtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMxMy1cbmZzL3Byb2MvdGFza19tbXUuYzoxMzE0OiNpZmRlZiBDT05GSUdfUEVSX1ZNQV9MT0NLXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMxNS1cbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjAyMT1zdGF0aWMgcGFnZW1hcF9lbnRyeV90IHB0ZV90b19wYWdlbWFwX2VudHJ5KHN0cnVjdCBwYWdlbWFwcmVhZCAqcG0sXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTIwODYtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MjA4NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjA4OC1zdGF0aWMgaW50IHBhZ2VtYXBfcG1kX3JhbmdlX3RocChwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0yMTY2PXN0YXRpYyBpbnQgcGFnZW1hcF9wbWRfcmFuZ2UocG1kX3QgKnBtZHAsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTIxNzQtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MjE3NTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjE3Ni1cdHB0bCA9IHBtZF90cmFuc19odWdlX2xvY2socG1kcCwgdm1hKTtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjIwNy1cbmZzL3Byb2MvdGFza19tbXUuYzoyMjA4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjIwOS0vKiBUaGlzIGZ1bmN0aW9uIHdhbGtzIHdpdGhpbiBvbmUgaHVnZXRsYiBlbnRyeSBpbiB0aGUgc2luZ2xlIGNhbGwgKi9cbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjQ5MD1zdGF0aWMgdm9pZCBtYWtlX3VmZmRfd3BfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0yNTA3LVxuZnMvcHJvYy90YXNrX21tdS5jOjI1MDg6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuZnMvcHJvYy90YXNrX21tdS5jLTI1MDktc3RhdGljIHVuc2lnbmVkIGxvbmcgcGFnZW1hcF90aHBfY2F0ZWdvcnkoc3RydWN0IHBhZ2VtYXBfc2Nhbl9wcml2YXRlICpwLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0yNTU0PXN0YXRpYyB2b2lkIG1ha2VfdWZmZF93cF9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTI1NjktXG5mcy9wcm9jL3Rhc2tfbW11LmM6MjU3MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuZnMvcHJvYy90YXNrX21tdS5jLTI1NzEtc3RhdGljIHVuc2lnbmVkIGxvbmcgcGFnZW1hcF9odWdldGxiX2NhdGVnb3J5KHB0ZV90IHB0ZSlcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9Mjc4ND1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl90aHBfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjc4Ni17XG5mcy9wcm9jL3Rhc2tfbW11LmM6Mjc4NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjc4OC1cdHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCA9IHdhbGstXHUwMDNlcHJpdmF0ZTtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjgzNT1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjkzMi1cbmZzL3Byb2MvdGFza19tbXUuYzoyOTMzOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjkzNC1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2VudHJ5KHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0zMjg3PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMyOTYtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzI5NzojaWZkZWYgQ09ORklHX05VTUFcbmZzL3Byb2MvdGFza19tbXUuYy0zMjk4LVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0zMzQ4PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqY2FuX2dhdGhlcl9udW1hX3N0YXRzKHB0ZV90IHB0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMzNzAtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzM3MTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzM3Mi1zdGF0aWMgc3RydWN0IHBhZ2UgKmNhbl9nYXRoZXJfbnVtYV9zdGF0c19wbWQocG1kX3QgcG1kLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0zMzk3PXN0YXRpYyBpbnQgZ2F0aGVyX3B0ZV9zdGF0cyhwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTM0MDUtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzQwNjojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzQwNy1cdHB0bCA9IHBtZF90cmFuc19odWdlX2xvY2socG1kLCB2bWEpO1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0zNDM1LX1cbmZzL3Byb2MvdGFza19tbXUuYzozNDM2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzQzNy1zdGF0aWMgaW50IGdhdGhlcl9odWdldGxiX3N0YXRzKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTM0Njc9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBzaG93X251bWFfb3BzID0ge1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0zNDcyLVxuZnMvcHJvYy90YXNrX21tdS5jOjM0NzM6I2lmZGVmIENPTkZJR19QRVJfVk1BX0xPQ0tcbmZzL3Byb2MvdGFza19tbXUuYy0zNDc0LXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgc2hvd19udW1hX3ZtYV9sb2NrX29wcyA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NDgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipDaGVja2luZyB0aGUgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgYGRvX3BhZ2VtYXBfc2NhbmAqKgoKQWxyaWdodCwgc28gaXQgbG9va3MgbGlrZSBgZG9fcGFnZW1hcF9zY2FuYCBtaWdodCBub3QgYmUgZ3VhcmRlZCBieSBhbiBgI2lmZGVmYCBhcyBtdWNoIGFzIEkgaW5pdGlhbGx5IHRob3VnaHQsIG91dHNpZGUgb2YgbWF5YmUgYENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUmAsIGJ1dCB0aGF0JiMzOTtzIGp1c3QgYSBodW5jaCByaWdodCBub3cuIEkgbmVlZCB0byBiZSBzdXJlLiBUaW1lIHRvIHZlcmlmeSBpdHMgdXNhZ2UuIFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhhdCBpbmZvcm1hdGlvbiB3aWxsIGJlIGF0IHRoZSB2ZXJ5IHRvcCBvZiBgZnMvcHJvYy90YXNrX21tdS5jYCwgb3IgbWF5YmUgdGhlIGFzc29jaWF0ZWQgYGZzL3Byb2MvTWFrZWZpbGVgLiBJJiMzOTtsbCBzY2FuIHRocm91Z2ggdGhvc2UgZmlsZXMgYW5kIHF1aWNrbHkgY29uZmlybSBpZiB0aGVyZSYjMzk7cyBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gc3Vycm91bmRpbmcgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXRzZWxmLCBhbmQgaWYgc28sIHdoYXQgdGhlIHJlbGV2YW50IGNvbmZpZyBzeW1ib2wgaXMuIEtub3dpbmcgdGhpcyB3aWxsIGltbWVkaWF0ZWx5IGNsYXJpZnkgdGhlIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggdGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgb3IsIG1vcmUgaW50ZXJlc3RpbmdseSwgd2hlbiBpdCAqaXNuJiMzOTt0Ki4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGFza19tbXUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Byb2MvTWFrZWZpbGU9Nj1vYmoteSAgICYjNDM7PSBwcm9jLm9cbmZzL3Byb2MvTWFrZWZpbGUtNy1cbmZzL3Byb2MvTWFrZWZpbGU6ODpDRkxBR1NfdGFza19tbXUub1x0JiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxuZnMvcHJvYy9NYWtlZmlsZS05LXByb2MteVx0XHRcdDo9IG5vbW11Lm8gdGFza19ub21tdS5vXG5mcy9wcm9jL01ha2VmaWxlOjEwOnByb2MtJChDT05GSUdfTU1VKVx0Oj0gdGFza19tbXUub1xuZnMvcHJvYy9NYWtlZmlsZS0xMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBNYW5hZ2VtZW50IERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBpcyBkZWZpbml0ZWx5IGBDT05GSUdfTU1VYC4gVGhhdCYjMzk7cyBhIGdpdmVuLiBOb3csIEkmIzM5O20gY3VyaW91cyBhYm91dCBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQsIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgcGFnZW1hcCBmdW5jdGlvbmFsaXR5IGlzIGhvb2tlZCB1cC4gTXkgaW5zdGluY3QgaXMgdGhhdCBpdCYjMzk7cyBsaWtlbHkgaGFuZGxlZCB3aXRoaW4gdGhlIGBmcy9wcm9jYCBzdWJ0cmVlLCBtYXliZSBgZnMvcHJvYy9iYXNlLmNgLCBvciBzb21ldGhpbmcgY2xvc2VseSByZWxhdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZXMgdG8gcGlucG9pbnQgZXhhY3RseSBob3cgYW5kIHdoZXJlIGBwYWdlbWFwYCBpcyByZWdpc3RlcmVkIGFuZCB1dGlsaXplZC4gVGhhdCB3aWxsIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZW1hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Byb2MvYmFzZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Byb2MvYmFzZS5jPTMyODI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgdGdpZF9iYXNlX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzMyNC1cdFJFRyhcJiMzNDtzbWFwc19yb2xsdXBcJiMzNDssIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjMzMjU6XHRSRUcoXCYjMzQ7cGFnZW1hcFwmIzM0OywgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmMtMzMyNi0jZW5kaWZcbi0tXG5mcy9wcm9jL2Jhc2UuYz0zNjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNlX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzY3OS1cdFJFRyhcJiMzNDtzbWFwc19yb2xsdXBcJiMzNDssIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjM2ODA6XHRSRUcoXCYjMzQ7cGFnZW1hcFwmIzM0OywgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmMtMzY4MS0jZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MzcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdDoKCioqSW52ZXN0aWdhdGluZyBhIFByZXByb2Nlc3NvciBEaXJlY3RpdmUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBmbG93IGhlcmUuIFRoZSBpbW1lZGlhdGUgdGhpbmcgSSYjMzk7bSBmb2N1c2luZyBvbiBpcyB0aGUgYCNlbmRpZmAgZGlyZWN0aXZlIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBgUkVHKCYjMzQ7cGFnZW1hcCYjMzQ7KWAgbWFjcm8gY2FsbC4gSXQmIzM5O3MgYSBjbGFzc2ljIGRlYnVnZ2luZyBhcHByb2FjaCDigJMgc3RhcnQgYXQgYSBrbm93biBwb2ludCBhbmQgc2VlIHdoYXQgY29uZGl0aW9uYWxzIG9yIHByZXByb2Nlc3NvciBhY3Rpdml0eSBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGlzIHNwZWNpZmljIHJlZ2lzdGVyIGRlY2xhcmF0aW9uLiBJJiMzOTttIGFzc3VtaW5nIGAjZW5kaWZgIGlzIGNsb3Npbmcgb3V0IGEgYmxvY2sgb2YgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIE5vdyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hhdCB0aGUgY29uZGl0aW9uIHdhcyBhbmQgaWYgaXQmIzM5O3MgcmVsZXZhbnQgdG8gaG93IHRoZSBgcGFnZW1hcGAgcmVnaXN0ZXIgaXMgZGVmaW5lZCBvciB1c2VkLiBJcyB0aGlzIGJsb2NrIHBvdGVudGlhbGx5IGVuYWJsZWQgb3IgZGlzYWJsZWQgZGVwZW5kaW5nIG9uIGJ1aWxkIGZsYWdzLCB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBxdWljayBzY2FuIG9mIHRoZSBjb2RlIGJsb2NrIGFib3ZlIGAjZW5kaWZgIHdpbGwgaG9wZWZ1bGx5IHJldmVhbCB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGluIHF1ZXN0aW9uIGFuZCBJIGNhbiB0aGVuIGRldGVybWluZSB0aGUgaW1wYWN0IG9uIGBSRUcoJiMzNDtwYWdlbWFwJiMzNDspYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWZkZWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL2Jhc2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9wcm9jL2Jhc2UuYz00MDM9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfY21kbGluZV9vcHMgPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtNDA3LVxuZnMvcHJvYy9iYXNlLmM6NDA4OiNpZmRlZiBDT05GSUdfS0FMTFNZTVNcbmZzL3Byb2MvYmFzZS5jLTQwOS0vKlxuLS1cbmZzL3Byb2MvYmFzZS5jPTQ1Mj1zdGF0aWMgdm9pZCB1bmxvY2tfdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuLS1cbmZzL3Byb2MvYmFzZS5jLTQ1Ni1cbmZzL3Byb2MvYmFzZS5jOjQ1NzojaWZkZWYgQ09ORklHX1NUQUNLVFJBQ0VcbmZzL3Byb2MvYmFzZS5jLTQ1OC1cbi0tXG5mcy9wcm9jL2Jhc2UuYz00NjE9c3RhdGljIGludCBwcm9jX3BpZF9zdGFjayhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcbi0tXG5mcy9wcm9jL2Jhc2UuYy01MDQtXG5mcy9wcm9jL2Jhc2UuYzo1MDU6I2lmZGVmIENPTkZJR19TQ0hFRF9JTkZPXG5mcy9wcm9jL2Jhc2UuYy01MDYtLypcbi0tXG5mcy9wcm9jL2Jhc2UuYz01MDk9c3RhdGljIGludCBwcm9jX3BpZF9zY2hlZHN0YXQoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmMtNTIzLVxuZnMvcHJvYy9iYXNlLmM6NTI0OiNpZmRlZiBDT05GSUdfTEFURU5DWVRPUFxuZnMvcHJvYy9iYXNlLmMtNTI1LXN0YXRpYyBpbnQgbHN0YXRzX3Nob3dfcHJvYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuZnMvcHJvYy9iYXNlLmM9NjI5PXN0YXRpYyBpbnQgcHJvY19waWRfbGltaXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTY3MS1cbmZzL3Byb2MvYmFzZS5jOjY3MjojaWZkZWYgQ09ORklHX0hBVkVfQVJDSF9UUkFDRUhPT0tcbmZzL3Byb2MvYmFzZS5jLTY3My1zdGF0aWMgaW50IHByb2NfcGlkX3N5c2NhbGwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmM9MTI4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX29vbV9zY29yZV9hZGpfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYy0xMjkxLVxuZnMvcHJvYy9iYXNlLmM6MTI5MjojaWZkZWYgQ09ORklHX0FVRElUXG5mcy9wcm9jL2Jhc2UuYy0xMjkzLSNkZWZpbmUgVE1QQlVGTEVOIDExXG4tLVxuZnMvcHJvYy9iYXNlLmM9MTM3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3Nlc3Npb25pZF9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jLTEzODEtXG5mcy9wcm9jL2Jhc2UuYzoxMzgyOiNpZmRlZiBDT05GSUdfRkFVTFRfSU5KRUNUSU9OXG5mcy9wcm9jL2Jhc2UuYy0xMzgzLXN0YXRpYyBzc2l6ZV90IHByb2NfZmF1bHRfaW5qZWN0X3JlYWQoc3RydWN0IGZpbGUgKiBmaWxlLCBjaGFyIF9fdXNlciAqIGJ1Zixcbi0tXG5mcy9wcm9jL2Jhc2UuYz0xNTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NjaGVkX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMTUyNy1cbmZzL3Byb2MvYmFzZS5jOjE1Mjg6I2lmZGVmIENPTkZJR19TQ0hFRF9BVVRPR1JPVVBcbmZzL3Byb2MvYmFzZS5jLTE1MjktLypcbi0tXG5mcy9wcm9jL2Jhc2UuYz0xNTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NjaGVkX2F1dG9ncm91cF9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jLTE2MDEtXG5mcy9wcm9jL2Jhc2UuYzoxNjAyOiNpZmRlZiBDT05GSUdfVElNRV9OU1xuZnMvcHJvYy9iYXNlLmMtMTYwMy1zdGF0aWMgaW50IHRpbWVuc19vZmZzZXRzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuLS1cbmZzL3Byb2MvYmFzZS5jPTI3MTE9c3RhdGljIGludCBwcm9jX3BpZGVudF9yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0yNzM2LVxuZnMvcHJvYy9iYXNlLmM6MjczNzojaWZkZWYgQ09ORklHX1NFQ1VSSVRZXG5mcy9wcm9jL2Jhc2UuYy0yNzM4LXN0YXRpYyBpbnQgcHJvY19waWRfYXR0cl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL3Byb2MvYmFzZS5jPTI4NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfIyNMU00jI19hdHRyX2Rpcl9pbm9kZV9vcHMgPSB7IFxcXG4tLVxuZnMvcHJvYy9iYXNlLmMtMjg2MC1cbmZzL3Byb2MvYmFzZS5jOjI4NjE6I2lmZGVmIENPTkZJR19TRUNVUklUWV9TTUFDS1xuZnMvcHJvYy9iYXNlLmMtMjg2Mi1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSBzbWFja19hdHRyX2Rpcl9zdHVmZltdID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jPTI4NjU9TFNNX0RJUl9PUFMoc21hY2spO1xuLS1cbmZzL3Byb2MvYmFzZS5jLTI4NjctXG5mcy9wcm9jL2Jhc2UuYzoyODY4OiNpZmRlZiBDT05GSUdfU0VDVVJJVFlfQVBQQVJNT1JcbmZzL3Byb2MvYmFzZS5jLTI4Njktc3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgYXBwYXJtb3JfYXR0cl9kaXJfc3R1ZmZbXSA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYz0yODc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IGF0dHJfZGlyX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMjg4My1cdEFUVFIoTFNNX0lEX1VOREVGLCBcJiMzNDtzb2NrY3JlYXRlXCYjMzQ7LFx0MDY2NiksXG5mcy9wcm9jL2Jhc2UuYzoyODg0OiNpZmRlZiBDT05GSUdfU0VDVVJJVFlfU01BQ0tcbmZzL3Byb2MvYmFzZS5jLTI4ODUtXHRESVIoXCYjMzQ7c21hY2tcJiMzNDssXHRcdFx0MDU1NSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0yODg3LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6Mjg4ODojaWZkZWYgQ09ORklHX1NFQ1VSSVRZX0FQUEFSTU9SXG5mcy9wcm9jL2Jhc2UuYy0yODg5LVx0RElSKFwmIzM0O2FwcGFybW9yXCYjMzQ7LFx0XHRcdDA1NTUsXG4tLVxuZnMvcHJvYy9iYXNlLmM9MjkxND1zdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcHJvY19hdHRyX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jLTI5MjEtXG5mcy9wcm9jL2Jhc2UuYzoyOTIyOiNpZmRlZiBDT05GSUdfRUxGX0NPUkVcbmZzL3Byb2MvYmFzZS5jLTI5MjMtc3RhdGljIHNzaXplX3QgcHJvY19jb3JlZHVtcF9maWx0ZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5mcy9wcm9jL2Jhc2UuYz0yOTk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfY29yZWR1bXBfZmlsdGVyX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzAwMC1cbmZzL3Byb2MvYmFzZS5jOjMwMDE6I2lmZGVmIENPTkZJR19UQVNLX0lPX0FDQ09VTlRJTkdcbmZzL3Byb2MvYmFzZS5jLTMwMDItc3RhdGljIGludCBkb19pb19hY2NvdW50aW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IHNlcV9maWxlICptLCBpbnQgd2hvbGUpXG4tLVxuZnMvcHJvYy9iYXNlLmM9MzA1OT1zdGF0aWMgaW50IHByb2NfdGdpZF9pb19hY2NvdW50aW5nKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTMwNjUtXG5mcy9wcm9jL2Jhc2UuYzozMDY2OiNpZmRlZiBDT05GSUdfVVNFUl9OU1xuZnMvcHJvYy9iYXNlLmMtMzA2Ny1zdGF0aWMgaW50IHByb2NfaWRfbWFwX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZnMvcHJvYy9iYXNlLmM9MzE5OD1zdGF0aWMgaW50IHByb2NfcGlkX3BlcnNvbmFsaXR5KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTMyMDgtXG5mcy9wcm9jL2Jhc2UuYzozMjA5OiNpZmRlZiBDT05GSUdfTElWRVBBVENIXG5mcy9wcm9jL2Jhc2UuYy0zMjEwLXN0YXRpYyBpbnQgcHJvY19waWRfcGF0Y2hfc3RhdGUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzIxNy1cbmZzL3Byb2MvYmFzZS5jOjMyMTg6I2lmZGVmIENPTkZJR19LU01cbmZzL3Byb2MvYmFzZS5jLTMyMTktc3RhdGljIGludCBwcm9jX3BpZF9rc21fbWVyZ2luZ19wYWdlcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcbi0tXG5mcy9wcm9jL2Jhc2UuYz0zMjMyPXN0YXRpYyBpbnQgcHJvY19waWRfa3NtX3N0YXQoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzI2MC1cbmZzL3Byb2MvYmFzZS5jOjMyNjE6I2lmZGVmIENPTkZJR19LU1RBQ0tfRVJBU0VfTUVUUklDU1xuZnMvcHJvYy9iYXNlLmMtMzI2Mi1zdGF0aWMgaW50IHByb2Nfc3RhY2tfZGVwdGgoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmM9MzI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0Z2lkX2Jhc2Vfc3R1ZmZbXSA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMjg3LVx0RElSKFwmIzM0O25zXCYjMzQ7LFx0ICBTX0lSVVNSfFNfSVhVR08sIHByb2NfbnNfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfbnNfZGlyX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmM6MzI4ODojaWZkZWYgQ09ORklHX05FVFxuZnMvcHJvYy9iYXNlLmMtMzI4OS1cdERJUihcJiMzNDtuZXRcJiMzNDssICAgICAgICBTX0lSVUdPfFNfSVhVR08sIHByb2NfbmV0X2lub2RlX29wZXJhdGlvbnMsIHByb2NfbmV0X29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTMyOTYtXHRSRUcoXCYjMzQ7c2NoZWRcJiMzNDssICAgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3BpZF9zY2hlZF9vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjMyOTc6I2lmZGVmIENPTkZJR19TQ0hFRF9BVVRPR1JPVVBcbmZzL3Byb2MvYmFzZS5jLTMyOTgtXHRSRUcoXCYjMzQ7YXV0b2dyb3VwXCYjMzQ7LCAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3BpZF9zY2hlZF9hdXRvZ3JvdXBfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMjk5LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzMwMDojaWZkZWYgQ09ORklHX1RJTUVfTlNcbmZzL3Byb2MvYmFzZS5jLTMzMDEtXHRSRUcoXCYjMzQ7dGltZW5zX29mZnNldHNcJiMzNDssICBTX0lSVUdPfFNfSVdVU1IsIHByb2NfdGltZW5zX29mZnNldHNfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzMwMy1cdFJFRyhcJiMzNDtjb21tXCYjMzQ7LCAgICAgIFNfSVJVR098U19JV1VTUiwgcHJvY19waWRfc2V0X2NvbW1fb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozMzA0OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1RSQUNFSE9PS1xuZnMvcHJvYy9iYXNlLmMtMzMwNS1cdE9ORShcJiMzNDtzeXNjYWxsXCYjMzQ7LCAgICBTX0lSVVNSLCBwcm9jX3BpZF9zeXNjYWxsKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzEwLVx0UkVHKFwmIzM0O21hcHNcJiMzNDssICAgICAgIFNfSVJVR08sIHByb2NfcGlkX21hcHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozMzExOiNpZmRlZiBDT05GSUdfTlVNQVxuZnMvcHJvYy9iYXNlLmMtMzMxMi1cdFJFRyhcJiMzNDtudW1hX21hcHNcJiMzNDssICBTX0lSVUdPLCBwcm9jX3BpZF9udW1hX21hcHNfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzMyMC1cdFJFRyhcJiMzNDttb3VudHN0YXRzXCYjMzQ7LCBTX0lSVVNSLCBwcm9jX21vdW50c3RhdHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozMzIxOiNpZmRlZiBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JcbmZzL3Byb2MvYmFzZS5jLTMzMjItXHRSRUcoXCYjMzQ7Y2xlYXJfcmVmc1wmIzM0OywgU19JV1VTUiwgcHJvY19jbGVhcl9yZWZzX29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTMzMjYtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzI3OiNpZmRlZiBDT05GSUdfU0VDVVJJVFlcbmZzL3Byb2MvYmFzZS5jLTMzMjgtXHRESVIoXCYjMzQ7YXR0clwmIzM0OywgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX2F0dHJfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfYXR0cl9kaXJfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzI5LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzMzMDojaWZkZWYgQ09ORklHX0tBTExTWU1TXG5mcy9wcm9jL2Jhc2UuYy0zMzMxLVx0T05FKFwmIzM0O3djaGFuXCYjMzQ7LCAgICAgIFNfSVJVR08sIHByb2NfcGlkX3djaGFuKSxcbmZzL3Byb2MvYmFzZS5jLTMzMzItI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzMzOiNpZmRlZiBDT05GSUdfU1RBQ0tUUkFDRVxuZnMvcHJvYy9iYXNlLmMtMzMzNC1cdE9ORShcJiMzNDtzdGFja1wmIzM0OywgICAgICBTX0lSVVNSLCBwcm9jX3BpZF9zdGFjayksXG5mcy9wcm9jL2Jhc2UuYy0zMzM1LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzMzNjojaWZkZWYgQ09ORklHX1NDSEVEX0lORk9cbmZzL3Byb2MvYmFzZS5jLTMzMzctXHRPTkUoXCYjMzQ7c2NoZWRzdGF0XCYjMzQ7LCAgU19JUlVHTywgcHJvY19waWRfc2NoZWRzdGF0KSxcbmZzL3Byb2MvYmFzZS5jLTMzMzgtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzM5OiNpZmRlZiBDT05GSUdfTEFURU5DWVRPUFxuZnMvcHJvYy9iYXNlLmMtMzM0MC1cdFJFRyhcJiMzNDtsYXRlbmN5XCYjMzQ7LCAgU19JUlVHTywgcHJvY19sc3RhdHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzQxLSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM0MjojaWZkZWYgQ09ORklHX1BST0NfUElEX0NQVVNFVFxuZnMvcHJvYy9iYXNlLmMtMzM0My1cdE9ORShcJiMzNDtjcHVzZXRcJiMzNDssICAgICBTX0lSVUdPLCBwcm9jX2NwdXNldF9zaG93KSxcbmZzL3Byb2MvYmFzZS5jLTMzNDQtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzQ1OiNpZmRlZiBDT05GSUdfQ0dST1VQU1xuZnMvcHJvYy9iYXNlLmMtMzM0Ni1cdE9ORShcJiMzNDtjZ3JvdXBcJiMzNDssICBTX0lSVUdPLCBwcm9jX2Nncm91cF9zaG93KSxcbmZzL3Byb2MvYmFzZS5jLTMzNDctI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzQ4OiNpZmRlZiBDT05GSUdfUFJPQ19DUFVfUkVTQ1RSTFxuZnMvcHJvYy9iYXNlLmMtMzM0OS1cdE9ORShcJiMzNDtjcHVfcmVzY3RybF9ncm91cHNcJiMzNDssIFNfSVJVR08sIHByb2NfcmVzY3RybF9zaG93KSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzUzLVx0UkVHKFwmIzM0O29vbV9zY29yZV9hZGpcJiMzNDssIFNfSVJVR098U19JV1VTUiwgcHJvY19vb21fc2NvcmVfYWRqX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmM6MzM1NDojaWZkZWYgQ09ORklHX0FVRElUXG5mcy9wcm9jL2Jhc2UuYy0zMzU1LVx0UkVHKFwmIzM0O2xvZ2ludWlkXCYjMzQ7LCAgIFNfSVdVU1J8U19JUlVHTywgcHJvY19sb2dpbnVpZF9vcGVyYXRpb25zKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzU3LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM1ODojaWZkZWYgQ09ORklHX0ZBVUxUX0lOSkVDVElPTlxuZnMvcHJvYy9iYXNlLmMtMzM1OS1cdFJFRyhcJiMzNDttYWtlLWl0LWZhaWxcJiMzNDssIFNfSVJVR098U19JV1VTUiwgcHJvY19mYXVsdF9pbmplY3Rfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzM2MS0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjMzNjI6I2lmZGVmIENPTkZJR19FTEZfQ09SRVxuZnMvcHJvYy9iYXNlLmMtMzM2My1cdFJFRyhcJiMzNDtjb3JlZHVtcF9maWx0ZXJcJiMzNDssIFNfSVJVR098U19JV1VTUiwgcHJvY19jb3JlZHVtcF9maWx0ZXJfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzY0LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM2NTojaWZkZWYgQ09ORklHX1RBU0tfSU9fQUNDT1VOVElOR1xuZnMvcHJvYy9iYXNlLmMtMzM2Ni1cdE9ORShcJiMzNDtpb1wmIzM0OyxcdFNfSVJVU1IsIHByb2NfdGdpZF9pb19hY2NvdW50aW5nKSxcbmZzL3Byb2MvYmFzZS5jLTMzNjctI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzY4OiNpZmRlZiBDT05GSUdfVVNFUl9OU1xuZnMvcHJvYy9iYXNlLmMtMzM2OS1cdFJFRyhcJiMzNDt1aWRfbWFwXCYjMzQ7LCAgICBTX0lSVUdPfFNfSVdVU1IsIHByb2NfdWlkX21hcF9vcGVyYXRpb25zKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzc3LVx0UkVHKFwmIzM0O3RpbWVyc2xhY2tfbnNcJiMzNDssIFNfSVJVR098U19JV1VHTywgcHJvY19waWRfc2V0X3RpbWVyc2xhY2tfbnNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozMzc4OiNpZmRlZiBDT05GSUdfTElWRVBBVENIXG5mcy9wcm9jL2Jhc2UuYy0zMzc5LVx0T05FKFwmIzM0O3BhdGNoX3N0YXRlXCYjMzQ7LCAgU19JUlVTUiwgcHJvY19waWRfcGF0Y2hfc3RhdGUpLFxuZnMvcHJvYy9iYXNlLmMtMzM4MC0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjMzODE6I2lmZGVmIENPTkZJR19LU1RBQ0tfRVJBU0VfTUVUUklDU1xuZnMvcHJvYy9iYXNlLmMtMzM4Mi1cdE9ORShcJiMzNDtzdGFja19kZXB0aFwmIzM0OywgU19JUlVHTywgcHJvY19zdGFja19kZXB0aCksXG5mcy9wcm9jL2Jhc2UuYy0zMzgzLSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM4NDojaWZkZWYgQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTXG5mcy9wcm9jL2Jhc2UuYy0zMzg1LVx0T05FKFwmIzM0O2FyY2hfc3RhdHVzXCYjMzQ7LCBTX0lSVUdPLCBwcm9jX3BpZF9hcmNoX3N0YXR1cyksXG5mcy9wcm9jL2Jhc2UuYy0zMzg2LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM4NzojaWZkZWYgQ09ORklHX1NFQ0NPTVBfQ0FDSEVfREVCVUdcbmZzL3Byb2MvYmFzZS5jLTMzODgtXHRPTkUoXCYjMzQ7c2VjY29tcF9jYWNoZVwmIzM0OywgU19JUlVTUiwgcHJvY19waWRfc2VjY29tcF9jYWNoZSksXG5mcy9wcm9jL2Jhc2UuYy0zMzg5LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM5MDojaWZkZWYgQ09ORklHX0tTTVxuZnMvcHJvYy9iYXNlLmMtMzM5MS1cdE9ORShcJiMzNDtrc21fbWVyZ2luZ19wYWdlc1wmIzM0OywgIFNfSVJVU1IsIHByb2NfcGlkX2tzbV9tZXJnaW5nX3BhZ2VzKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYz0zNjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNlX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzY0NC1cdERJUihcJiMzNDtuc1wmIzM0OyxcdCBTX0lSVVNSfFNfSVhVR08sIHByb2NfbnNfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfbnNfZGlyX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmM6MzY0NTojaWZkZWYgQ09ORklHX05FVFxuZnMvcHJvYy9iYXNlLmMtMzY0Ni1cdERJUihcJiMzNDtuZXRcJiMzNDssICAgICAgICBTX0lSVUdPfFNfSVhVR08sIHByb2NfbmV0X2lub2RlX29wZXJhdGlvbnMsIHByb2NfbmV0X29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM2NTYtXHRcdFx0IFx1MDAyNnByb2NfcGlkX3NldF9jb21tX29wZXJhdGlvbnMsIHt9KSxcbmZzL3Byb2MvYmFzZS5jOjM2NTc6I2lmZGVmIENPTkZJR19IQVZFX0FSQ0hfVFJBQ0VIT09LXG5mcy9wcm9jL2Jhc2UuYy0zNjU4LVx0T05FKFwmIzM0O3N5c2NhbGxcJiMzNDssICAgU19JUlVTUiwgcHJvY19waWRfc3lzY2FsbCksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzY2My1cdFJFRyhcJiMzNDttYXBzXCYjMzQ7LCAgICAgIFNfSVJVR08sIHByb2NfcGlkX21hcHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNjY0OiNpZmRlZiBDT05GSUdfUFJPQ19DSElMRFJFTlxuZnMvcHJvYy9iYXNlLmMtMzY2NS1cdFJFRyhcJiMzNDtjaGlsZHJlblwmIzM0OywgIFNfSVJVR08sIHByb2NfdGlkX2NoaWxkcmVuX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmMtMzY2Ni0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM2Njc6I2lmZGVmIENPTkZJR19OVU1BXG5mcy9wcm9jL2Jhc2UuYy0zNjY4LVx0UkVHKFwmIzM0O251bWFfbWFwc1wmIzM0OywgU19JUlVHTywgcHJvY19waWRfbnVtYV9tYXBzX29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM2NzUtXHRSRUcoXCYjMzQ7bW91bnRpbmZvXCYjMzQ7LCAgU19JUlVHTywgcHJvY19tb3VudGluZm9fb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNjc2OiNpZmRlZiBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JcbmZzL3Byb2MvYmFzZS5jLTM2NzctXHRSRUcoXCYjMzQ7Y2xlYXJfcmVmc1wmIzM0OywgU19JV1VTUiwgcHJvY19jbGVhcl9yZWZzX29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM2ODEtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozNjgyOiNpZmRlZiBDT05GSUdfU0VDVVJJVFlcbmZzL3Byb2MvYmFzZS5jLTM2ODMtXHRESVIoXCYjMzQ7YXR0clwmIzM0OywgICAgICBTX0lSVUdPfFNfSVhVR08sIHByb2NfYXR0cl9kaXJfaW5vZGVfb3BlcmF0aW9ucywgcHJvY19hdHRyX2Rpcl9vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jLTM2ODQtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozNjg1OiNpZmRlZiBDT05GSUdfS0FMTFNZTVNcbmZzL3Byb2MvYmFzZS5jLTM2ODYtXHRPTkUoXCYjMzQ7d2NoYW5cJiMzNDssICAgICBTX0lSVUdPLCBwcm9jX3BpZF93Y2hhbiksXG5mcy9wcm9jL2Jhc2UuYy0zNjg3LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzY4ODojaWZkZWYgQ09ORklHX1NUQUNLVFJBQ0VcbmZzL3Byb2MvYmFzZS5jLTM2ODktXHRPTkUoXCYjMzQ7c3RhY2tcJiMzNDssICAgICAgU19JUlVTUiwgcHJvY19waWRfc3RhY2spLFxuZnMvcHJvYy9iYXNlLmMtMzY5MC0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM2OTE6I2lmZGVmIENPTkZJR19TQ0hFRF9JTkZPXG5mcy9wcm9jL2Jhc2UuYy0zNjkyLVx0T05FKFwmIzM0O3NjaGVkc3RhdFwmIzM0OywgU19JUlVHTywgcHJvY19waWRfc2NoZWRzdGF0KSxcbmZzL3Byb2MvYmFzZS5jLTM2OTMtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozNjk0OiNpZmRlZiBDT05GSUdfTEFURU5DWVRPUFxuZnMvcHJvYy9iYXNlLmMtMzY5NS1cdFJFRyhcJiMzNDtsYXRlbmN5XCYjMzQ7LCAgU19JUlVHTywgcHJvY19sc3RhdHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zNjk2LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzY5NzojaWZkZWYgQ09ORklHX1BST0NfUElEX0NQVVNFVFxuZnMvcHJvYy9iYXNlLmMtMzY5OC1cdE9ORShcJiMzNDtjcHVzZXRcJiMzNDssICAgIFNfSVJVR08sIHByb2NfY3B1c2V0X3Nob3cpLFxuZnMvcHJvYy9iYXNlLmMtMzY5OS0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM3MDA6I2lmZGVmIENPTkZJR19DR1JPVVBTXG5mcy9wcm9jL2Jhc2UuYy0zNzAxLVx0T05FKFwmIzM0O2Nncm91cFwmIzM0OywgIFNfSVJVR08sIHByb2NfY2dyb3VwX3Nob3cpLFxuZnMvcHJvYy9iYXNlLmMtMzcwMi0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM3MDM6I2lmZGVmIENPTkZJR19QUk9DX0NQVV9SRVNDVFJMXG5mcy9wcm9jL2Jhc2UuYy0zNzA0LVx0T05FKFwmIzM0O2NwdV9yZXNjdHJsX2dyb3Vwc1wmIzM0OywgU19JUlVHTywgcHJvY19yZXNjdHJsX3Nob3cpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM3MDgtXHRSRUcoXCYjMzQ7b29tX3Njb3JlX2FkalwmIzM0OywgU19JUlVHT3xTX0lXVVNSLCBwcm9jX29vbV9zY29yZV9hZGpfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNzA5OiNpZmRlZiBDT05GSUdfQVVESVRcbmZzL3Byb2MvYmFzZS5jLTM3MTAtXHRSRUcoXCYjMzQ7bG9naW51aWRcJiMzNDssICBTX0lXVVNSfFNfSVJVR08sIHByb2NfbG9naW51aWRfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzcxMi0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM3MTM6I2lmZGVmIENPTkZJR19GQVVMVF9JTkpFQ1RJT05cbmZzL3Byb2MvYmFzZS5jLTM3MTQtXHRSRUcoXCYjMzQ7bWFrZS1pdC1mYWlsXCYjMzQ7LCBTX0lSVUdPfFNfSVdVU1IsIHByb2NfZmF1bHRfaW5qZWN0X29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM3MTYtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozNzE3OiNpZmRlZiBDT05GSUdfVEFTS19JT19BQ0NPVU5USU5HXG5mcy9wcm9jL2Jhc2UuYy0zNzE4LVx0T05FKFwmIzM0O2lvXCYjMzQ7LFx0U19JUlVTUiwgcHJvY190aWRfaW9fYWNjb3VudGluZyksXG5mcy9wcm9jL2Jhc2UuYy0zNzE5LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzcyMDojaWZkZWYgQ09ORklHX1VTRVJfTlNcbmZzL3Byb2MvYmFzZS5jLTM3MjEtXHRSRUcoXCYjMzQ7dWlkX21hcFwmIzM0OywgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3VpZF9tYXBfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzcyNS0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM3MjY6I2lmZGVmIENPTkZJR19MSVZFUEFUQ0hcbmZzL3Byb2MvYmFzZS5jLTM3MjctXHRPTkUoXCYjMzQ7cGF0Y2hfc3RhdGVcJiMzNDssICBTX0lSVVNSLCBwcm9jX3BpZF9wYXRjaF9zdGF0ZSksXG5mcy9wcm9jL2Jhc2UuYy0zNzI4LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzcyOTojaWZkZWYgQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTXG5mcy9wcm9jL2Jhc2UuYy0zNzMwLVx0T05FKFwmIzM0O2FyY2hfc3RhdHVzXCYjMzQ7LCBTX0lSVUdPLCBwcm9jX3BpZF9hcmNoX3N0YXR1cyksXG5mcy9wcm9jL2Jhc2UuYy0zNzMxLSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzczMjojaWZkZWYgQ09ORklHX1NFQ0NPTVBfQ0FDSEVfREVCVUdcbmZzL3Byb2MvYmFzZS5jLTM3MzMtXHRPTkUoXCYjMzQ7c2VjY29tcF9jYWNoZVwmIzM0OywgU19JUlVTUiwgcHJvY19waWRfc2VjY29tcF9jYWNoZSksXG5mcy9wcm9jL2Jhc2UuYy0zNzM0LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzczNTojaWZkZWYgQ09ORklHX0tTTVxuZnMvcHJvYy9iYXNlLmMtMzczNi1cdE9ORShcJiMzNDtrc21fbWVyZ2luZ19wYWdlc1wmIzM0OywgIFNfSVJVU1IsIHByb2NfcGlkX2tzbV9tZXJnaW5nX3BhZ2VzKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQYWdlbWFwIFNjYW4gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoZSBpbnRlZ3JhdGlvbiBvZiBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYCB3aXRoIGBDT05GSUdfVVNFUkZBVUxURkRgLiAgSXQgbG9va3MgbGlrZSBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgZm9yIHRoZSBgcGFnZW1hcGAgZnVuY3Rpb25hbGl0eSB0byBiZSByZWdpc3RlcmVkLCBhbmQgYENPTkZJR19VU0VSRkFVTFRGRGAgaXMgb2J2aW91c2x5IGNydWNpYWwgZm9yIHRoZSBjb3JlIGNoYW5nZS4gIEkgYWxzbyBhbnRpY2lwYXRlIG5lZWRpbmcgYENPTkZJR19NTVVgLCB0aG91Z2ggdGhhdCYjMzk7cyBnZW5lcmFsbHkgYXNzdW1lZC4KCkxldCYjMzk7cyBxdWlja2x5IHJldmlldyB0aGUgY29kZSBjaGFuZ2VzLiBUaGUgbWFpbiBmb2N1cyBpcyBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYC4gVGhlIGNyaXRpY2FsIGNvbmRpdGlvbiBpcyBgdXNlcmZhdWx0ZmRfd3Aodm1hKWAgdG8gaGFuZGxlIHVucG9wdWxhdGVkIHJhbmdlcyBpbiBhIGB1c2VyZmF1bHRmZGAgd3JpdGUtcHJvdGVjdGVkIFZNQS4gIEkgc2VlIGEgY29tbWVudCBtZW50aW9uaW5nIGBNQURWX0RPTlRORUVEYCBhbmQgYE1BRFZfQ09MTEFQU0VgLCB3aGljaCBicmluZ3MgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgdG8gbWluZCwgYXMgd2UgYXJlIGxvb2tpbmcgYXQgYW5vbnltb3VzIFRIUCBwYWdlcyBkcm9wcGVkIHZpYSBgTUFEVl9ET05UTkVFRGAuIEhvd2V2ZXIsIHRoZSBjb2RlJiMzOTtzIGNvbW1lbnQgaW5kaWNhdGVzIHRoaXMgaXNuJiMzOTt0IFRIUCBzcGVjaWZpYywgYnV0IHJhdGhlciB0aGUgZ2VuZXJhbCBjYXNlIG9mIHVucG9wdWxhdGVkIG1lbW9yeSByZWdpb25zLCBsaWtlIGhvbGVzLiBUaGUgY2hlY2sgZm9yIGAhaXNfdm1faHVnZXRsYl9wYWdlKHZtYSlgIHNlZW1zIHRvIGV4cGxpY2l0bHkgZXhjbHVkZSBIdWdlVExCIHBhZ2VzLiAgSSBzaG91bGQgcXVpY2tseSBjb25maXJtIGlmIGBpc192bV9odWdldGxiX3BhZ2VgIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRvIGJlIHByZXNlbnQsIGp1c3QgdG8gYmUgc3VyZS4KClRoZSBwYXRjaCBtb2RpZmllcyBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYCB0byByZXBvcnQgdGhlc2UgdW5wb3B1bGF0ZWQgcmVnaW9ucyB3aXRoaW4gYHVzZXJmYXVsdGZkYCB3cml0ZS1wcm90ZWN0ZWQgVk1BcyBhcyAmIzM0O3dyaXR0ZW4mIzM0Oy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBwYWdlbWFwIGlvY3RsLiBJdCB3aWxsIGNoYW5nZSBob3cgYFBBR0VNQVBfU0NBTmAgd29ya3MuIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGFsdGVyaW5nIHRoZSB3YXkgbWVtb3J5IHN0YXRlIGlzIHJlcG9ydGVkLCBhbmQgaXQgaW50ZXJhY3RzIHdpdGggYSByZWxhdGl2ZWx5IGNvbXBsZXggcGFydCBvZiB0aGUga2VybmVsICh1c2VyZmF1bHRmZCwgbWVtb3J5IG1hbmFnZW1lbnQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwuCgpTbywgaW4gc3VtbWFyeToKCiogICAqKkNvbmZpZ3M6KiogYENPTkZJR19VU0VSRkFVTFRGRGAsIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgLCAoaW1wbGljaXRseSkgYENPTkZJR19NTVVgLCBhbmQgcG9zc2libHkgYENPTkZJR19IVUdFVExCX1BBR0VgLgoqICAgKipLZXkgRnVuY3Rpb246KiogYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAgLSB0aGlzIGlzIHRoZSBmb2NhbCBwb2ludC4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBob3cgdW5wb3B1bGF0ZWQgbWVtb3J5IHJlZ2lvbnMgYXJlIHRyZWF0ZWQgd2l0aGluIHdyaXRlLXByb3RlY3RlZCBWTUFzIG1hbmFnZWQgYnkgYHVzZXJmYXVsdGZkYCwgd2hpY2ggaXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBjcml0aWNhbCBmb3IgaGFuZGxpbmcgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBQQUdFTUFQX1NDQU5gIGlvY3RsLiBJdCBlbnN1cmVzIHRoYXQgdGhlIHNjYW4gcmVwb3J0cyBtZW1vcnkgcmVnaW9ucyB3aGljaCB3b3VsZCBjYXVzZSBhIHBhZ2UgZmF1bHQgYXMgJiMzNDt3cml0dGVuJiMzNDssIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciB1c2VyZmF1bHRmZC4gSSBzaG91bGQga2VlcCBhbiBleWUgb24gaG93IEh1Z2VUTEIgaXMgYmVpbmcgaGFuZGxlZCBhcyB3ZWxsLCBldmVuIGlmIHRoZSBjb2RlIGV4cGxpY2l0bHkgZXhjbHVkZXMgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX3ZtX2h1Z2V0bGJfcGFnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaHVnZXRsYi5oPTI1Mz1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl96YXBfYmVnaW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjU1LXtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI1NjpcdGlmIChpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI1Ny1cdFx0X19odWdldGxiX3phcF9iZWdpbih2bWEsIHN0YXJ0LCBlbmQpO1xuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTI2MD1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl96YXBfZW5kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI2Mi17XG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDoyNjM6XHRpZiAoaXNfdm1faHVnZXRsYl9wYWdlKHZtYSkpXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0yNjQtXHRcdF9faHVnZXRsYl96YXBfZW5kKHZtYSwgZGV0YWlscyk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oPTE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc192bWFfaHVnZXRsYl9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTIyLVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oOjIzOnN0YXRpYyBpbmxpbmUgYm9vbCBpc192bV9odWdldGxiX3BhZ2UoY29uc3Qgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgtMjQte1xuLS1cbmluY2x1ZGUvbGludXgvcm1hcC5oPTg4Nj1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV92bWFfbWFwcGVkX3dhbGtfZG9uZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcpXG4tLVxuaW5jbHVkZS9saW51eC9ybWFwLmgtODg4LVx0LyogSHVnZVRMQiBwdGUgaXMgc2V0IHRvIHRoZSByZWxldmFudCBwYWdlIHRhYmxlIGVudHJ5IHdpdGhvdXQgcHRlX21hcHBlZC4gKi9cbmluY2x1ZGUvbGludXgvcm1hcC5oOjg4OTpcdGlmIChwdm13LVx1MDAzZXB0ZSBcdTAwMjZcdTAwMjYgIWlzX3ZtX2h1Z2V0bGJfcGFnZShwdm13LVx1MDAzZXZtYSkpXG5pbmNsdWRlL2xpbnV4L3JtYXAuaC04OTAtXHRcdHB0ZV91bm1hcChwdm13LVx1MDAzZXB0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTYyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipOYXZpZ2F0aW5nIHRoZSBIdWdldGxiZnMgTGFuZHNjYXBlKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgZnVuY3Rpb24gb3IgbWFjcm8gb3Igd2hhdGV2ZXIgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gaXMgdHVja2VkIGF3YXkgaW4gYGluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaGAuICpUaGF0JiMzOTtzKiB1c3VhbGx5IHRoZSBmaXJzdCBwbGFjZSB0byBsb29rLiBOb3csIGtub3dpbmcgdGhlIGtlcm5lbCwgSSBiZXQgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGlzIGl0IGVuYWJsZWQgdGhyb3VnaCBgQ09ORklHX0hVR0VUTEJfUEFHRWA/IFRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgdGhlIGtleSB0byB3aGV0aGVyIGl0JiMzOTtzIGFjdHVhbGx5ICp0aGVyZSogaW4gdGhlIGtlcm5lbCB3ZSYjMzk7cmUgbG9va2luZyBhdC4gR290dGEgdmVyaWZ5IHRoYXQgY29uZmlnIHNldHRpbmcgYmVmb3JlIEkgZGlnIGFueSBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19IVUdFVExCX1BBR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTYtXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmg6NzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjYwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQ2hlY2tpbmcgdGhlIEh1Z2V0bGIgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCkhtbSwganVzdCBhIG1vbWVudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHkuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IGBpc192bV9odWdldGxiX3BhZ2VgIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfSFVHRVRMQl9QQUdFYC4gVG8gY29uZmlybSwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgdGhpcy4gVGhlIGxpa2VseSBwbGFjZSBmb3IgdGhpcyBzb3J0IG9mIGRlZmluaXRpb24gd291bGQgYmUgd2l0aGluIGBpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhgLiBMZXQgbWUgdGFrZSBhIGxvb2sgdGhlcmUgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNfdm1faHVnZXRsYl9wYWdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaD0xNj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1hX2h1Z2V0bGJfZmxhZ3MoY29uc3Qgdm1hX2ZsYWdzX3QgKmZsYWdzKVxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaC0yMi1cbmluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaDoyMzpzdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1faHVnZXRsYl9wYWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTI0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1NzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBvZiB0aGUgdGhvdWdodCBwcm9jZXNzIGRlc2NyaWJlZDoKCioqRGl2aW5nIGludG8gaHVnZXRsYl9pbmxpbmUuaCoqCgpPa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gYGluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmaWxlIHByb2JhYmx5IGhvdXNlcyB0aGUgY29yZSwgcGVyZm9ybWFuY2UtY3JpdGljYWwgaW5saW5lIGZ1bmN0aW9ucyByZWxhdGVkIHRvIEh1Z2VUTEIgbWFuYWdlbWVudC4gS25vd2luZyB0aGUga2VybmVsJiMzOTtzIEh1Z2VUTEIgaW1wbGVtZW50YXRpb24sIEkmIzM5O20gZXhwZWN0aW5nIGEgbWl4IG9mIHBhZ2UgdGFibGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLCBwb3RlbnRpYWxseSBzb21lIGxvY2stcmVsYXRlZCBvcGVyYXRpb25zIGlmIHRoZXkmIzM5O3JlIHBhcnRpY3VsYXJseSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUsIGFuZCBkZWZpbml0ZWx5IHNvbWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyBvciBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyBUTEIgbWFuYWdlbWVudCBmb3IgaHVnZSBwYWdlcy4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O2xsIGJlIGEgc3Ryb25nIGVtcGhhc2lzIG9uIG1pbmltaXppbmcgZnVuY3Rpb24gY2FsbCBvdmVyaGVhZCwgaGVuY2UgdGhlICYjMzQ7aW5saW5lJiMzNDsgZGVzaWduYXRpb24uIEkmIzM5O20ga2VlbiB0byBzZWUgaG93IHRoZXkmIzM5O3ZlIHN0cnVjdHVyZWQgdGhlIGNvZGUgdG8gYmFsYW5jZSBwZXJmb3JtYW5jZSB3aXRoIHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkgd2l0aGluIHRoaXMgY3JpdGljYWwgc2VjdGlvbiBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIGlmIG15IGluaXRpYWwgYXNzdW1wdGlvbnMgaG9sZCB3YXRlci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbiAgIDI6XHQjaWZuZGVmIF9MSU5VWF9IVUdFVExCX0lOTElORV9IXG4gICAzOlx0I2RlZmluZSBfTElOVVhfSFVHRVRMQl9JTkxJTkVfSFxuICAgNDpcdFxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2VcbiAgIDY6XHRcbiAgIDc6XHQjaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuICAgODpcdFxuICAgOTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc192bWFfaHVnZXRsYl9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXG4gIDEwOlx0e1xuICAxMTpcdFx0cmV0dXJuIHZtYV9mbGFnc190ZXN0KGZsYWdzLCBWTUFfSFVHRVRMQl9CSVQpO1xuICAxMjpcdH1cbiAgMTM6XHRcbiAgMTQ6XHQjZWxzZVxuICAxNTpcdFxuICAxNjpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc192bWFfaHVnZXRsYl9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXG4gIDE3Olx0e1xuICAxODpcdFx0cmV0dXJuIGZhbHNlO1xuICAxOTpcdH1cbiAgMjA6XHRcbiAgMjE6XHQjZW5kaWZcbiAgMjI6XHRcbiAgMjM6XHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1faHVnZXRsYl9wYWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuICAyNDpcdHtcbiAgMjU6XHRcdHJldHVybiBpc192bWFfaHVnZXRsYl9mbGFncyhcdTAwMjZ2bWEtXHUwMDNlZmxhZ3MpO1xuICAyNjpcdH1cbiAgMjc6XHRcbiAgMjg6XHQjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxOTEKCQkJCQkJCW91dHB1dDogMTQzCgkJCQkJCQl0aG91Z2h0czogMzAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIGZvciBVc2VyZmF1bHRmZCBhbmQgSHVnZSBQYWdlcyoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgYGlzX3ZtX2h1Z2V0bGJfcGFnZWAgaXMgYWx3YXlzIGRlZmluZWQsIHdoaWNoIGlzIGNvbnZlbmllbnQsIGJ1dCBpdCYjMzk7cyAqZWZmZWN0aXZlbHkqIGEgbm8tb3AgaWYgYENPTkZJR19IVUdFVExCX1BBR0VgIGlzbiYjMzk7dCBzZXQsIHNpbmNlIGl0IHJldHVybnMgYGZhbHNlYCBpbiB0aGF0IHNjZW5hcmlvLiBUaGlzIG1lYW5zIHRoYXQgd2UgZG9uJiMzOTt0ICpzdHJpY3RseSogbmVlZCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgdG8gY29tcGlsZSwgYnV0IGl0JiMzOTtzIGxpa2VseSB2ZXJ5IHJlbGV2YW50IGZvciB0ZXN0aW5nIHRoZSBzcGVjaWZpYyBodWdldGxiIGV4Y2x1c2lvbiBsb2dpYyDigJMgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgZXhwbGljaXQgY2hlY2sgYGlmICh1c2VyZmF1bHRmZF93cCh2bWEpICZhbXA7JmFtcDsgIWlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKWAuIFRvICpleGVyY2lzZSogdGhhdCBleGNsdXNpb24gcGF0aCwgd2UmIzM5O2QgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBlbmFibGVkLgoKVGhlIGB1bnBvcHVsYXRlZF90aHBfaG9sZV90ZXN0YCB0ZXN0IGNhc2UgdGhyb3dzIGFub3RoZXIgd3JlbmNoIGluIHRoZSB3b3JrcyBzaW5jZSBpdCYjMzk7cyB1c2luZyBUSFAtcmVsYXRlZCBmbGFncyAoYE1BRFZfQ09MTEFQU0VgLCBgTUFEVl9ET05UTkVFRGApLiBUaGVyZWZvcmUsIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGFsc28gY3JpdGljYWwgaGVyZS4gV2UmIzM5O3JlIG9idmlvdXNseSBub3QgdGFsa2luZyBhYm91dCBhIHNpbXBsZSB0ZXN0LgoKU28sIGxldCYjMzk7cyB0YWtlIHN0b2NrIG9mIHRoZSBjb25maWdzIHdlIG5lZWQgdG8gY29uc2lkZXI6CiogICBgVVNFUkZBVUxURkRgIOKAkyBvYnZpb3VzbHksIHRoZSBjb3JlIGZlYXR1cmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4KKiAgIGBQUk9DX1BBR0VfTU9OSVRPUmAg4oCTIGEgbGl0dGxlIGxlc3MgZXhwbGljaXQsIGJ1dCBwb3RlbnRpYWxseSByZWxldmFudCB0byBvYnNlcnZhYmlsaXR5LgoqICAgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCDigJMga2V5IGZvciB0aGUgVEhQLXJlbGF0ZWQgdGVzdCBjYXNlIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCiogICBgSFVHRVRMQl9QQUdFYCDigJMgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhlIGh1Z2V0bGIgZXhjbHVzaW9uIGxvZ2ljIHRvIGJlIHRlc3RlZC4KCkhtbSwgbGV0IG1lIGRvdWJsZSBjaGVjayBgTUFEVl9DT0xMQVBTRWAuIEl0JiMzOTtzIHByZXR0eSB0aWdodGx5IGNvdXBsZWQgdG8gVEhQLCBzbyBpdCBzaG91bGQgYmUgZW5hYmxlZCBieSBkZWZhdWx0LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgcGVlayBhdCBgZnMvcHJvYy90YXNrX21tdS5jYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IG90aGVyIGRlcGVuZGVuY3kuIEFoLCBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYC4gWWVzLCB0aGF0IGZ1bmN0aW9uIGhhcyBiZWVuIG1vZGlmaWVkLCBsaWtlbHkgdG8gc3VwcG9ydCB0aGUgY2hhbmdlcy4KClJpZ2h0LCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCBhIGhhbmRsZSBvbiB0aGUgcmVsYXRpb25zaGlwcyBoZXJlLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTRVJGQVVMVEZEJiMzNDssCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VtYXBfc2Nhbl9wdGVfaG9sZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNFUkZBVUxURkQmIzM0OywKICAgICYjMzQ7UFJPQ19QQUdFX01PTklUT1ImIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7SFVHRVRMQl9QQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFnZW1hcF9zY2FuX3B0ZV9ob2xlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQQUdFTUFQX1NDQU4gaW9jdGwgbG9naWMgaW4gcHJvY2ZzIHRvIGNvcnJlY3RseSByZXBvcnQgdW5wb3B1bGF0ZWQgcmFuZ2VzIChob2xlcykgaW4gdXNlcmZhdWx0ZmQgd3JpdGUtcHJvdGVjdGVkIFZNQXMgYXMgd3JpdHRlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUgdGhhdCBhZmZlY3RzIHVzZXItZmFjaW5nIEFQSXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjg6MjguMzU0MzQzNjM2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyNTIzMjI5ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTRVJGQVVMVEZEXCIsXG4gICAgXCJQUk9DX1BBR0VfTU9OSVRPUlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkhVR0VUTEJfUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2VtYXBfc2Nhbl9wdGVfaG9sZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQQUdFTUFQX1NDQU4gaW9jdGwgbG9naWMgaW4gcHJvY2ZzIHRvIGNvcnJlY3RseSByZXBvcnQgdW5wb3B1bGF0ZWQgcmFuZ2VzIChob2xlcykgaW4gdXNlcmZhdWx0ZmQgd3JpdGUtcHJvdGVjdGVkIFZNQXMgYXMgd3JpdHRlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUgdGhhdCBhZmZlY3RzIHVzZXItZmFjaW5nIEFQSXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyODoyOC4zNTQzNTA2NzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTUyMjQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFkMDNiMGM4NWI3ZDU0YjFjZjAzOTQ0OTAzNmU2ZDYxYWU4OWFjZTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgOSAwMToyODoyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9wcm9jL3Rhc2tfbW11LmNcXG5pbmRleCBlNDMwMmZjZjAyMjdkNy4uNGI2NGI0ZWQwODRjZWUgMTAwNjQ0XFxuLS0tIGEvZnMvcHJvYy90YXNrX21tdS5jXFxuKysrIGIvZnMvcHJvYy90YXNrX21tdS5jXFxuQEAgLTMwNTAsMTIgKzMwNTAsMzMgQEAgc3RhdGljIGludCBwYWdlbWFwX3NjYW5fcHRlX2hvbGUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcXG4ge1xcbiBcXHRzdHJ1Y3QgcGFnZW1hcF9zY2FuX3ByaXZhdGUgKnAgPSB3YWxrLVxcdTAwM2Vwcml2YXRlO1xcbiBcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHdhbGstXFx1MDAzZXZtYTtcXG4rXFx0dW5zaWduZWQgbG9uZyBjYXRlZ29yaWVzO1xcbiBcXHRpbnQgcmV0LCBlcnI7XFxuIFxcbi1cXHRpZiAoIXZtYSB8fCAhcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UocC1cXHUwMDNlY3VyX3ZtYV9jYXRlZ29yeSwgcCkpXFxuK1xcdGlmICghdm1hKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEFuIHVucG9wdWxhdGVkIHJhbmdlIHdpdGggbm8gcGFnZSB0YWJsZSAtLSBlLmcuIGEgMk1CIGFub24gVEhQXFxuK1xcdCAqIGRyb3BwZWQgdmlhIE1BRFZfRE9OVE5FRUQsIHdoaWNoIHBhZ2VtYXBfcGFnZV9jYXRlZ29yeSgpIG5ldmVyIHNlZXNcXG4rXFx0ICogLS0gcmVhZHMgYXMgd3JpdHRlbiBvbiBhIHVmZmQtd3AgVk1BLCBtYXRjaGluZyB0aGUgcHRlX25vbmUgY2FzZVxcbitcXHQgKiB0aGVyZS4gUmVwb3J0aW5nIGl0IGFsc28gbGV0cyB0aGUgUE1fU0NBTl9XUF9NQVRDSElORyBhcm1pbmcgYmVsb3dcXG4rXFx0ICogaW5zdGFsbCBtYXJrZXJzICh1ZmZkX3dwX3JhbmdlKCkgYWxsb2NhdGVzIHRoZSBwYWdlIHRhYmxlIHVuZGVyXFxuK1xcdCAqIFdQX1VOUE9QVUxBVEVEKSwgc28gdGhlIG5leHQgc2NhbiBzZWVzIGl0IGNsZWFuIHVudGlsIHJlLXdyaXR0ZW4uXFxuK1xcdCAqXFxuK1xcdCAqIGh1Z2V0bGIgaXMgZXhjbHVkZWQ6IGFuIGFsbG9jYXRlZC1idXQtZW1wdHkgaHVnZSBlbnRyeSByZWFkcyBhc1xcbitcXHQgKiBub3Qtd3JpdHRlbiB2aWEgcGFnZW1hcF9odWdldGxiX2NhdGVnb3J5KCksIHNvIHJlcG9ydGluZyBhblxcbitcXHQgKiB1bmFsbG9jYXRlZCBodWdldGxiIGhvbGUgYXMgd3JpdHRlbiBoZXJlIHdvdWxkIGJlIGluY29uc2lzdGVudFxcbitcXHQgKiB3aXRoaW4gdGhlIHNhbWUgVk1BLlxcbitcXHQgKi9cXG4rXFx0Y2F0ZWdvcmllcyA9IHAtXFx1MDAzZWN1cl92bWFfY2F0ZWdvcnk7XFxuK1xcdGlmICh1c2VyZmF1bHRmZF93cCh2bWEpIFxcdTAwMjZcXHUwMDI2ICFpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcXG4rXFx0XFx0Y2F0ZWdvcmllcyB8PSBQQUdFX0lTX1dSSVRURU47XFxuK1xcbitcXHRpZiAoIXBhZ2VtYXBfc2Nhbl9pc19pbnRlcmVzdGluZ19wYWdlKGNhdGVnb3JpZXMsIHApKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdHJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQocC1cXHUwMDNlY3VyX3ZtYV9jYXRlZ29yeSwgcCwgYWRkciwgXFx1MDAyNmVuZCk7XFxuK1xcdHJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQoY2F0ZWdvcmllcywgcCwgYWRkciwgXFx1MDAyNmVuZCk7XFxuIFxcdGlmIChhZGRyID09IGVuZClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuY1xcbmluZGV4IGY5YmNmZjhlNzhmYWJiLi5hNGU4Y2M4YWVhNGI3YyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmNcXG5AQCAtMjUsNiArMjUsMTAgQEBcXG4gI2luY2x1ZGUgXFxcImtzZWxmdGVzdC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaHVnZXBhZ2Vfc2V0dGluZ3MuaFxcXCJcXG4gXFxuKyNpZm5kZWYgTUFEVl9DT0xMQVBTRVxcbisjZGVmaW5lIE1BRFZfQ09MTEFQU0UgMjVcXG4rI2VuZGlmXFxuK1xcbiAjZGVmaW5lIFBBR0VNQVBfQklUU19BTExcXHRcXHQoUEFHRV9JU19XUEFMTE9XRUQgfCBQQUdFX0lTX1dSSVRURU4gfFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0IFBBR0VfSVNfRklMRSB8IFBBR0VfSVNfUFJFU0VOVCB8XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHQgUEFHRV9JU19TV0FQUEVEIHwgUEFHRV9JU19QRk5aRVJPIHxcXHRcXFxcXFxuQEAgLTExMDIsNiArMTEwNiw1OSBAQCBzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF9zY2FuX3Rlc3Qodm9pZClcXG4gXFx0bXVubWFwKG1lbSwgbWVtX3NpemUpO1xcbiB9XFxuIFxcbisvKlxcbisgKiBBIDJNQiBhbm9uIFRIUCBkcm9wcGVkIHdpdGggTUFEVl9ET05UTkVFRCBsZWF2ZXMgYSBwbWRfbm9uZSBob2xlIHdpdGggbm9cXG4rICogcGFnZSB0YWJsZSwgd2hpY2ggcGFnZW1hcF9wYWdlX2NhdGVnb3J5KCkgbmV2ZXIgc2Vlcy4gUEFHRU1BUF9TQ0FOIG11c3RcXG4rICogc3RpbGwgcmVwb3J0IGl0IGFzIHdyaXR0ZW4gb24gYSB1ZmZkLXdwIFZNQSwgdmlhIHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSgpLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgdW5wb3B1bGF0ZWRfdGhwX2hvbGVfdGVzdCh2b2lkKVxcbit7XFxuK1xcdGxvbmcgbnBhZ2VzLCB3cml0dGVuID0gMCwgcmV0LCBpO1xcbitcXHRzdHJ1Y3QgcGFnZV9yZWdpb24gcmVnaW9uc1sxNl07XFxuK1xcdGNoYXIgKmFyZWEsICptZW07XFxuK1xcbitcXHRpZiAoIWhwYWdlX3NpemUpIHtcXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKFxcXCIlcyBUSFAgbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFx0bnBhZ2VzID0gaHBhZ2Vfc2l6ZSAvIHBhZ2Vfc2l6ZTtcXG4rXFxuK1xcdC8qIEdldCBhIFBNRC1hbGlnbmVkIHJhbmdlIHNvIHRoZSByYW5nZSBjYW4gYmUgYSBzaW5nbGUgVEhQLiAqL1xcbitcXHRhcmVhID0gbW1hcChOVUxMLCAyICogaHBhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSxcXG4rXFx0XFx0ICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUywgLTEsIDApO1xcbitcXHRpZiAoYXJlYSA9PSBNQVBfRkFJTEVEKVxcbitcXHRcXHRrc2Z0X2V4aXRfZmFpbF9tc2coXFxcIiVzIG1tYXAgZmFpbGVkXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuK1xcdG1lbSA9IChjaGFyICopKCgodW5zaWduZWQgbG9uZylhcmVhICsgaHBhZ2Vfc2l6ZSAtIDEpIFxcdTAwMjYgfihocGFnZV9zaXplIC0gMSkpO1xcbitcXG4rXFx0bWVtc2V0KG1lbSwgMSwgaHBhZ2Vfc2l6ZSk7XFxuK1xcdGlmIChtYWR2aXNlKG1lbSwgaHBhZ2Vfc2l6ZSwgTUFEVl9DT0xMQVBTRSkgfHxcXG4rXFx0ICAgICFjaGVja19odWdlX2Fub24obWVtLCAxLCBocGFnZV9zaXplKSkge1xcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXFxcIiVzIGNvdWxkIG5vdCBmb3JtIGEgVEhQXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuK1xcdFxcdG11bm1hcChhcmVhLCAyICogaHBhZ2Vfc2l6ZSk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0d3BfaW5pdChtZW0sIGhwYWdlX3NpemUpO1xcbitcXG4rXFx0LyogRHJvcCB0aGUgd2hvbGUgUE1EOiBpdCBpcyBjbGVhcmVkIHRvIGEgcG1kX25vbmUgaG9sZS4gKi9cXG4rXFx0aWYgKG1hZHZpc2UobWVtLCBocGFnZV9zaXplLCBNQURWX0RPTlRORUVEKSlcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyBNQURWX0RPTlRORUVEIGZhaWxlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbitcXG4rXFx0cmV0ID0gcGFnZW1hcF9pb2N0bChtZW0sIGhwYWdlX3NpemUsIHJlZ2lvbnMsIDE2LCAwLCAwLFxcbitcXHRcXHRcXHQgICAgUEFHRV9JU19XUklUVEVOLCAwLCAwLCBQQUdFX0lTX1dSSVRURU4pO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyBzY2FuIGZhaWxlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcmV0OyBpKyspXFxuK1xcdFxcdHdyaXR0ZW4gKz0gTEVOKHJlZ2lvbnNbaV0pO1xcbitcXG4rXFx0a3NmdF90ZXN0X3Jlc3VsdCh3cml0dGVuID09IG5wYWdlcyxcXG4rXFx0XFx0XFx0IFxcXCIlcyBwbWQtaG9sZSByZXBvcnRlZCB3cml0dGVuICglbGQgb2YgJWxkKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IF9fZnVuY19fLCB3cml0dGVuLCBucGFnZXMpO1xcbitcXG4rXFx0d3BfZnJlZShtZW0sIGhwYWdlX3NpemUpO1xcbitcXHRtdW5tYXAoYXJlYSwgMiAqIGhwYWdlX3NpemUpO1xcbit9XFxuK1xcbiBpbnQgc2FuaXR5X3Rlc3RzKHZvaWQpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBsb25nIG1lbV9zaXplLCB2ZWNfc2l6ZTtcXG5AQCAtMTYxMCw3ICsxNjY3LDcgQEAgaW50IG1haW4oaW50IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0aWYgKCFodWdldGxiX3NldHVwX2RlZmF1bHQoNCkpXFxuIFxcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJIdWdlVExCIHRlc3Qgd2lsbCBiZSBza2lwcGVkXFxcXG5cXFwiKTtcXG4gXFxuLVxcdGtzZnRfc2V0X3BsYW4oMTE4KTtcXG4rXFx0a3NmdF9zZXRfcGxhbigxMTkpO1xcbiBcXG4gXFx0cGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTtcXG4gXFx0aHBhZ2Vfc2l6ZSA9IHJlYWRfcG1kX3BhZ2VzaXplKCk7XFxuQEAgLTE3OTAsNiArMTg0Nyw3IEBAIGludCBtYWluKGludCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcbiBcXHQvKiAxOC4gVW5wb3B1bGF0ZWQgcHRlIHNjYW4tcGF0aCBjb25zaXN0ZW5jeSAqL1xcbiBcXHR1bnBvcHVsYXRlZF9zY2FuX3Rlc3QoKTtcXG4rXFx0dW5wb3B1bGF0ZWRfdGhwX2hvbGVfdGVzdCgpO1xcbiBcXG4gXFx0Y2xvc2UocGFnZW1hcF9mZCk7XFxuIFxcdGtzZnRfZmluaXNoZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjg6MjkuMDgyOTQ4MjQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE3OTQ2MDg0NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNFUkZBVUxURkRcIixcbiAgICBcIlBST0NfUEFHRV9NT05JVE9SXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiSFVHRVRMQl9QQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFnZW1hcF9zY2FuX3B0ZV9ob2xlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBBR0VNQVBfU0NBTiBpb2N0bCBsb2dpYyBpbiBwcm9jZnMgdG8gY29ycmVjdGx5IHJlcG9ydCB1bnBvcHVsYXRlZCByYW5nZXMgKGhvbGVzKSBpbiB1c2VyZmF1bHRmZCB3cml0ZS1wcm90ZWN0ZWQgVk1BcyBhcyB3cml0dGVuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY29kZSB0aGF0IGFmZmVjdHMgdXNlci1mYWNpbmcgQVBJcyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWQwM2IwYzg1YjdkNTRiMWNmMDM5NDQ5MDM2ZTZkNjFhZTg5YWNlNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDE6Mjg6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9wcm9jL3Rhc2tfbW11LmNcbmluZGV4IGU0MzAyZmNmMDIyN2Q3Li40YjY0YjRlZDA4NGNlZSAxMDA2NDRcbi0tLSBhL2ZzL3Byb2MvdGFza19tbXUuY1xuKysrIGIvZnMvcHJvYy90YXNrX21tdS5jXG5AQCAtMzA1MCwxMiArMzA1MCwzMyBAQCBzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIHtcbiBcdHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCA9IHdhbGstXHUwMDNlcHJpdmF0ZTtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gd2Fsay1cdTAwM2V2bWE7XG4rXHR1bnNpZ25lZCBsb25nIGNhdGVnb3JpZXM7XG4gXHRpbnQgcmV0LCBlcnI7XG4gXG4tXHRpZiAoIXZtYSB8fCAhcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UocC1cdTAwM2VjdXJfdm1hX2NhdGVnb3J5LCBwKSlcbitcdGlmICghdm1hKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdC8qXG4rXHQgKiBBbiB1bnBvcHVsYXRlZCByYW5nZSB3aXRoIG5vIHBhZ2UgdGFibGUgLS0gZS5nLiBhIDJNQiBhbm9uIFRIUFxuK1x0ICogZHJvcHBlZCB2aWEgTUFEVl9ET05UTkVFRCwgd2hpY2ggcGFnZW1hcF9wYWdlX2NhdGVnb3J5KCkgbmV2ZXIgc2Vlc1xuK1x0ICogLS0gcmVhZHMgYXMgd3JpdHRlbiBvbiBhIHVmZmQtd3AgVk1BLCBtYXRjaGluZyB0aGUgcHRlX25vbmUgY2FzZVxuK1x0ICogdGhlcmUuIFJlcG9ydGluZyBpdCBhbHNvIGxldHMgdGhlIFBNX1NDQU5fV1BfTUFUQ0hJTkcgYXJtaW5nIGJlbG93XG4rXHQgKiBpbnN0YWxsIG1hcmtlcnMgKHVmZmRfd3BfcmFuZ2UoKSBhbGxvY2F0ZXMgdGhlIHBhZ2UgdGFibGUgdW5kZXJcbitcdCAqIFdQX1VOUE9QVUxBVEVEKSwgc28gdGhlIG5leHQgc2NhbiBzZWVzIGl0IGNsZWFuIHVudGlsIHJlLXdyaXR0ZW4uXG4rXHQgKlxuK1x0ICogaHVnZXRsYiBpcyBleGNsdWRlZDogYW4gYWxsb2NhdGVkLWJ1dC1lbXB0eSBodWdlIGVudHJ5IHJlYWRzIGFzXG4rXHQgKiBub3Qtd3JpdHRlbiB2aWEgcGFnZW1hcF9odWdldGxiX2NhdGVnb3J5KCksIHNvIHJlcG9ydGluZyBhblxuK1x0ICogdW5hbGxvY2F0ZWQgaHVnZXRsYiBob2xlIGFzIHdyaXR0ZW4gaGVyZSB3b3VsZCBiZSBpbmNvbnNpc3RlbnRcbitcdCAqIHdpdGhpbiB0aGUgc2FtZSBWTUEuXG4rXHQgKi9cbitcdGNhdGVnb3JpZXMgPSBwLVx1MDAzZWN1cl92bWFfY2F0ZWdvcnk7XG4rXHRpZiAodXNlcmZhdWx0ZmRfd3Aodm1hKSBcdTAwMjZcdTAwMjYgIWlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxuK1x0XHRjYXRlZ29yaWVzIHw9IFBBR0VfSVNfV1JJVFRFTjtcbitcbitcdGlmICghcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UoY2F0ZWdvcmllcywgcCkpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0cmV0ID0gcGFnZW1hcF9zY2FuX291dHB1dChwLVx1MDAzZWN1cl92bWFfY2F0ZWdvcnksIHAsIGFkZHIsIFx1MDAyNmVuZCk7XG4rXHRyZXQgPSBwYWdlbWFwX3NjYW5fb3V0cHV0KGNhdGVnb3JpZXMsIHAsIGFkZHIsIFx1MDAyNmVuZCk7XG4gXHRpZiAoYWRkciA9PSBlbmQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jXG5pbmRleCBmOWJjZmY4ZTc4ZmFiYi4uYTRlOGNjOGFlYTRiN2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuY1xuQEAgLTI1LDYgKzI1LDEwIEBAXG4gI2luY2x1ZGUgXCJrc2VsZnRlc3QuaFwiXG4gI2luY2x1ZGUgXCJodWdlcGFnZV9zZXR0aW5ncy5oXCJcbiBcbisjaWZuZGVmIE1BRFZfQ09MTEFQU0VcbisjZGVmaW5lIE1BRFZfQ09MTEFQU0UgMjVcbisjZW5kaWZcbitcbiAjZGVmaW5lIFBBR0VNQVBfQklUU19BTExcdFx0KFBBR0VfSVNfV1BBTExPV0VEIHwgUEFHRV9JU19XUklUVEVOIHxcdFxcXG4gXHRcdFx0XHRcdCBQQUdFX0lTX0ZJTEUgfCBQQUdFX0lTX1BSRVNFTlQgfFx0XFxcbiBcdFx0XHRcdFx0IFBBR0VfSVNfU1dBUFBFRCB8IFBBR0VfSVNfUEZOWkVSTyB8XHRcXFxuQEAgLTExMDIsNiArMTEwNiw1OSBAQCBzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF9zY2FuX3Rlc3Qodm9pZClcbiBcdG11bm1hcChtZW0sIG1lbV9zaXplKTtcbiB9XG4gXG4rLypcbisgKiBBIDJNQiBhbm9uIFRIUCBkcm9wcGVkIHdpdGggTUFEVl9ET05UTkVFRCBsZWF2ZXMgYSBwbWRfbm9uZSBob2xlIHdpdGggbm9cbisgKiBwYWdlIHRhYmxlLCB3aGljaCBwYWdlbWFwX3BhZ2VfY2F0ZWdvcnkoKSBuZXZlciBzZWVzLiBQQUdFTUFQX1NDQU4gbXVzdFxuKyAqIHN0aWxsIHJlcG9ydCBpdCBhcyB3cml0dGVuIG9uIGEgdWZmZC13cCBWTUEsIHZpYSBwYWdlbWFwX3NjYW5fcHRlX2hvbGUoKS5cbisgKi9cbitzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF90aHBfaG9sZV90ZXN0KHZvaWQpXG4re1xuK1x0bG9uZyBucGFnZXMsIHdyaXR0ZW4gPSAwLCByZXQsIGk7XG4rXHRzdHJ1Y3QgcGFnZV9yZWdpb24gcmVnaW9uc1sxNl07XG4rXHRjaGFyICphcmVhLCAqbWVtO1xuK1xuK1x0aWYgKCFocGFnZV9zaXplKSB7XG4rXHRcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcIiVzIFRIUCBub3Qgc3VwcG9ydGVkXFxuXCIsIF9fZnVuY19fKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1x0bnBhZ2VzID0gaHBhZ2Vfc2l6ZSAvIHBhZ2Vfc2l6ZTtcbitcbitcdC8qIEdldCBhIFBNRC1hbGlnbmVkIHJhbmdlIHNvIHRoZSByYW5nZSBjYW4gYmUgYSBzaW5nbGUgVEhQLiAqL1xuK1x0YXJlYSA9IG1tYXAoTlVMTCwgMiAqIGhwYWdlX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4rXHRcdCAgICBNQVBfUFJJVkFURSB8IE1BUF9BTk9OWU1PVVMsIC0xLCAwKTtcbitcdGlmIChhcmVhID09IE1BUF9GQUlMRUQpXG4rXHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIiVzIG1tYXAgZmFpbGVkXFxuXCIsIF9fZnVuY19fKTtcbitcdG1lbSA9IChjaGFyICopKCgodW5zaWduZWQgbG9uZylhcmVhICsgaHBhZ2Vfc2l6ZSAtIDEpIFx1MDAyNiB+KGhwYWdlX3NpemUgLSAxKSk7XG4rXG4rXHRtZW1zZXQobWVtLCAxLCBocGFnZV9zaXplKTtcbitcdGlmIChtYWR2aXNlKG1lbSwgaHBhZ2Vfc2l6ZSwgTUFEVl9DT0xMQVBTRSkgfHxcbitcdCAgICAhY2hlY2tfaHVnZV9hbm9uKG1lbSwgMSwgaHBhZ2Vfc2l6ZSkpIHtcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKFwiJXMgY291bGQgbm90IGZvcm0gYSBUSFBcXG5cIiwgX19mdW5jX18pO1xuK1x0XHRtdW5tYXAoYXJlYSwgMiAqIGhwYWdlX3NpemUpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHR3cF9pbml0KG1lbSwgaHBhZ2Vfc2l6ZSk7XG4rXG4rXHQvKiBEcm9wIHRoZSB3aG9sZSBQTUQ6IGl0IGlzIGNsZWFyZWQgdG8gYSBwbWRfbm9uZSBob2xlLiAqL1xuK1x0aWYgKG1hZHZpc2UobWVtLCBocGFnZV9zaXplLCBNQURWX0RPTlRORUVEKSlcbitcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiJXMgTUFEVl9ET05UTkVFRCBmYWlsZWRcXG5cIiwgX19mdW5jX18pO1xuK1xuK1x0cmV0ID0gcGFnZW1hcF9pb2N0bChtZW0sIGhwYWdlX3NpemUsIHJlZ2lvbnMsIDE2LCAwLCAwLFxuK1x0XHRcdCAgICBQQUdFX0lTX1dSSVRURU4sIDAsIDAsIFBBR0VfSVNfV1JJVFRFTik7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCIlcyBzY2FuIGZhaWxlZFxcblwiLCBfX2Z1bmNfXyk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyByZXQ7IGkrKylcbitcdFx0d3JpdHRlbiArPSBMRU4ocmVnaW9uc1tpXSk7XG4rXG4rXHRrc2Z0X3Rlc3RfcmVzdWx0KHdyaXR0ZW4gPT0gbnBhZ2VzLFxuK1x0XHRcdCBcIiVzIHBtZC1ob2xlIHJlcG9ydGVkIHdyaXR0ZW4gKCVsZCBvZiAlbGQpXFxuXCIsXG4rXHRcdFx0IF9fZnVuY19fLCB3cml0dGVuLCBucGFnZXMpO1xuK1xuK1x0d3BfZnJlZShtZW0sIGhwYWdlX3NpemUpO1xuK1x0bXVubWFwKGFyZWEsIDIgKiBocGFnZV9zaXplKTtcbit9XG4rXG4gaW50IHNhbml0eV90ZXN0cyh2b2lkKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1fc2l6ZSwgdmVjX3NpemU7XG5AQCAtMTYxMCw3ICsxNjY3LDcgQEAgaW50IG1haW4oaW50IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdGlmICghaHVnZXRsYl9zZXR1cF9kZWZhdWx0KDQpKVxuIFx0XHRrc2Z0X3ByaW50X21zZyhcIkh1Z2VUTEIgdGVzdCB3aWxsIGJlIHNraXBwZWRcXG5cIik7XG4gXG4tXHRrc2Z0X3NldF9wbGFuKDExOCk7XG4rXHRrc2Z0X3NldF9wbGFuKDExOSk7XG4gXG4gXHRwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpO1xuIFx0aHBhZ2Vfc2l6ZSA9IHJlYWRfcG1kX3BhZ2VzaXplKCk7XG5AQCAtMTc5MCw2ICsxODQ3LDcgQEAgaW50IG1haW4oaW50IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcbiBcdC8qIDE4LiBVbnBvcHVsYXRlZCBwdGUgc2Nhbi1wYXRoIGNvbnNpc3RlbmN5ICovXG4gXHR1bnBvcHVsYXRlZF9zY2FuX3Rlc3QoKTtcbitcdHVucG9wdWxhdGVkX3RocF9ob2xlX3Rlc3QoKTtcbiBcbiBcdGNsb3NlKHBhZ2VtYXBfZmQpO1xuIFx0a3NmdF9maW5pc2hlZCgpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjg6MjkuMDgyOTUwOTE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMzNjQ3MTUyMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBib3RoIGBmcy9wcm9jL3Rhc2tfbW11LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFueXRoaW5nIHRoYXQgaW50ZXJhY3RzIHdpdGggYHByb2Nmc2AgYW5kIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgaXMgd29ydGggYSBjbG9zZXIgbG9vaywgZXNwZWNpYWxseSB3aGVuIGl0J3MgYmVpbmcgbW9kaWZpZWQuXG5cblNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpbiBgZnMvcHJvYy90YXNrX21tdS5jYCBpcyB3aXRoaW4gYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAgZnVuY3Rpb24gaXMga2V5LiBGcm9tIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgdGhlIHBhdGNoIG1vZGlmaWVzIGhvdyB0aGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggdW5wb3B1bGF0ZWQgcmFuZ2VzLCBvciBcImhvbGVzLFwiIHdpdGhpbiBWaXJ0dWFsIE1lbW9yeSBBcmVhcyAoVk1BcykgdGhhdCBhcmUgd3JpdGUtcHJvdGVjdGVkIHRocm91Z2ggdXNlcmZhdWx0ZmQuIFRoZSBjb3JlIGxvZ2ljIGlzIHRoZSBhZGRpdGlvbiBvZiBgUEFHRV9JU19XUklUVEVOYCB0byB0aGUgYGNhdGVnb3JpZXNgIGlmIGB1c2VyZmF1bHRmZF93cCh2bWEpYCBpcyB0cnVlIGFuZCBpdCdzIG5vdCBhIGh1Z2V0bGIgcGFnZS5cblxuTGV0J3MgZGl2ZSBkZWVwZXIgYW5kIGxvb2sgYXQgdGhlIGNvZGUsIHBhcnRpY3VsYXJseSB0aGF0IGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbmBgYGNcbnN0YXRpYyBpbnQgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVwdGgsIHN0cnVjdCBtbV93YWxrICp3YWxrKVxuYGBgXG5cblJpZ2h0LCBzbyBpdCdzIGNsZWFybHkgcGFydCBvZiB0aGUgcGFnZW1hcCBzY2FuIGZ1bmN0aW9uYWxpdHksIHF1aXRlIGxpa2VseSBhY2Nlc3NlZCB0aHJvdWdoIGFuIGBpb2N0bChQQUdFTUFQX1NDQU4pYC4gU2luY2UgdGhpcyBpcyBhIGNvcmUgbW0vcHJvY2ZzIGFyZWEsIHRoaXMgbW9kaWZpY2F0aW9uIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIEl0J3MgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZvY3VzIHN5bWJvbHMuIENsZWFybHksIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIGlzIGEgcHJpbWFyeSBmb2N1cy4gSSdsbCBhbHNvIHdhbnQgdG8gbG9vayBmb3IgdGhlIGFzc29jaWF0ZWQgaW9jdGwgaGFuZGxlciwgcHJvYmFibHkgbmFtZWQgc29tZXRoaW5nIGxpa2UgYGRvX3BhZ2VtYXBfc2NhbmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBsb2NhdGUgdGhlIGRlZmluaXRpb24gaW4gYGZzL3Byb2MvdGFza19tbXUuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyODo1Mi40NDc2Njk4MTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzMzUxNjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VtYXBfc2Nhbl9wdGVfaG9sZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy90YXNrX21tdS5jPTMwNDE9c3RhdGljIGludCBwYWdlbWFwX3NjYW5faHVnZXRsYl9ob2xlX3dwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTMwNDctXFxuZnMvcHJvYy90YXNrX21tdS5jOjMwNDg6c3RhdGljIGludCBwYWdlbWFwX3NjYW5fcHRlX2hvbGUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzA0OS1cXHRcXHRcXHRcXHQgaW50IGRlcHRoLCBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0zMDk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgcGFnZW1hcF9zY2FuX29wcyA9IHtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMDk4LVxcdC5wbWRfZW50cnkgPSBwYWdlbWFwX3NjYW5fcG1kX2VudHJ5LFxcbmZzL3Byb2MvdGFza19tbXUuYzozMDk5OlxcdC5wdGVfaG9sZSA9IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSxcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzEwMC1cXHQuaHVnZXRsYl9lbnRyeSA9IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2VudHJ5LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyODo1Mi45MTEwNDM1OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMTQyMDA5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipGaW5kaW5nIHRoZSBJT0NUTCBIYW5kbGVyOiBBIFF1aWNrIFNlYXJjaCoqXG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgcHJldHR5IGNsZWFyOiBJIG5lZWQgdG8gbG9jYXRlIHRoZSBpb2N0bCBoYW5kbGVyLiBJdOKAmXMgdGhlIGdhdGVrZWVwZXIsIHRoZSBmdW5jdGlvbiB0aGF0J3MgZ29pbmcgdG8gaW50ZXJwcmV0IGFuZCBkaXNwYXRjaCB0aGUgc3BlY2lmaWMgY29tbWFuZHMgSSdtIHRocm93aW5nIGF0IHRoaXMgZGV2aWNlIG9yIGRyaXZlci4gV2l0aG91dCBpdCwgSSdtIGp1c3Qgc2hvdXRpbmcgaW50byB0aGUgdm9pZC4gVGltZSB0byBnZXQgZGlnZ2luZy4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyBhbmQgdGVjaG5pcXVlcywgcHJvYmFibHkgc3RhcnRpbmcgd2l0aCBhIHF1aWNrIGdyZXAgb3Igc2ltaWxhciBzZWFyY2guIEkgbmVlZCB0byB6ZXJvIGluIG9uIHdoZXJlIHRoZSByZWxldmFudCBjb2RlIHJlc2lkZXMsIGFuZCB3aGVyZSB0aGUgaW9jdGwgcHJvY2Vzc2luZyBpcyBsaWtlbHkgaGFwcGVuaW5nLiBMZXQncyBzZWUgd2hhdCB0aGF0IHNlYXJjaCB0dXJucyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU2MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjI4OjU3LjEyNTI0NzE0NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDAxMDExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlbWFwX3NjYW5fb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvdGFza19tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmM9MzA0OD1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTMwOTUtXFxuZnMvcHJvYy90YXNrX21tdS5jOjMwOTY6c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwYWdlbWFwX3NjYW5fb3BzID0ge1xcbmZzL3Byb2MvdGFza19tbXUuYy0zMDk3LVxcdC50ZXN0X3dhbGsgPSBwYWdlbWFwX3NjYW5fdGVzdF93YWxrLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTMyMDA9c3RhdGljIGxvbmcgZG9fcGFnZW1hcF9zY2FuKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHVhcmcpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzIzOC1cXHRcXHRyZXQgPSB3YWxrX3BhZ2VfcmFuZ2UobW0sIHdhbGtfc3RhcnQsIHAuYXJnLmVuZCxcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzIzOTpcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2cGFnZW1hcF9zY2FuX29wcywgXFx1MDAyNnApO1xcbmZzL3Byb2MvdGFza19tbXUuYy0zMjQwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyODo1Ny4yMTkyNjIyOTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTc0NTgzNjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgZG9fcGFnZW1hcF9zY2FuYCBJT0NUTCBIYW5kbGVyKipcblxuQWxyaWdodCwgSSdtIHRyYWNpbmcgdGhpcyBgaW9jdGxgIGhhbmRsZXIsIGBkb19wYWdlbWFwX3NjYW5gLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyBjb21lIGludG8gcGxheSBoZXJlLCByaWdodD8gVGhpcyBsb29rcyBsaWtlIGEgZGVlcCBkaXZlIGludG8gbWVtb3J5IG1hbmFnZW1lbnQuXG5cbkhtbSwgdGhlIHByZXNlbmNlIG9mIGB1c2VyZmF1bHRmZF93cCh2bWEpYCBpbW1lZGlhdGVseSBzY3JlYW1zIGBDT05GSUdfVVNFUkZBVUxURkRgIHRvIG1lLiBHb29kIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgdGhhdCBjb25maWcgcHJldHR5IHdlbGwg4oCTIGl0J3MgY3J1Y2lhbCBmb3IgdXNlcnNwYWNlIGZhdWx0IGhhbmRsaW5nLiBcblxuTm93LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgZnMvcHJvYy90YXNrX21tdS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRvX3BhZ2VtYXBfc2NhbmAgdGhlcmUsIGFuZCBwcm9iYWJseSBzb21lIHJlbGF0ZWQgY29kZSwgbGlrZWx5IGluY2x1ZGluZyBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYC4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIG1lYXQgb2YgaG93IHRoaXMgaGFuZGxlciBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCBwYWdlIHRhYmxlcywgbWVtb3J5IHJlZ2lvbnMsIGFuZCBwb3RlbnRpYWwgaG9sZXMgd2l0aGluIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuIEknbGwgYmUgbG9va2luZyBmb3IgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IHNjZW5hcmlvcywgcGVyaGFwcyBkZWFsaW5nIHdpdGggc2hhcmVkIG1lbW9yeSwgY29weS1vbi13cml0ZSwgYW5kIG1heWJlIGV2ZW4gTlVNQSBjb25zaWRlcmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjI5OjA0LjE5Mzg0NzYyM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2MjQ4MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fcGFnZW1hcF9zY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvdGFza19tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmM9MzE3Mz1zdGF0aWMgbG9uZyBwYWdlbWFwX3NjYW5fZmx1c2hfYnVmZmVyKHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcClcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMTk5LVxcbmZzL3Byb2MvdGFza19tbXUuYzozMjAwOnN0YXRpYyBsb25nIGRvX3BhZ2VtYXBfc2NhbihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyB1YXJnKVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMjAxLXtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0zMjczPXN0YXRpYyBsb25nIGRvX3BhZ2VtYXBfY21kKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTMyNzktXFx0Y2FzZSBQQUdFTUFQX1NDQU46XFxuZnMvcHJvYy90YXNrX21tdS5jOjMyODA6XFx0XFx0cmV0dXJuIGRvX3BhZ2VtYXBfc2NhbihtbSwgYXJnKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzI4MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjk6MDQuMzA5NDc2NjAxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1ODUwNTYwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqQXNzZXNzaW5nIHRoZSBOZWNlc3NpdHkgb2YgQ09ORklHX1VTRVJGQVVMVEZEKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nLCBhbmQgdGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6IGRvIHdlICpyZWFsbHkqIG5lZWQgYENPTkZJR19VU0VSRkFVTFRGRGA/IEl0J3MgYSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byB1c2VyLXNwYWNlIGZhdWx0IGhhbmRsaW5nLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGFjdHVhbGx5IHJlbGV2YW50IGluIHRoZSBjdXJyZW50IGNvbnRleHQuIFRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGFyZSBzdWJzdGFudGlhbCwgZnJvbSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyB0byBzZWN1cml0eSByaXNrcywgc28gZmlndXJpbmcgb3V0IGlmIGl0J3MgcmVxdWlyZWQgaXMgcGFyYW1vdW50IGJlZm9yZSBwcm9jZWVkaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpZiB0aGlzIGlzIGEgY3JpdGljYWwgY29tcG9uZW50IG9yIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBzYWZlbHkgZGlzYWJsZWQgb3Igb21pdHRlZC4gVGhlIGdvYWwgaXMgdG8ga2VlcCB0aGUgc3lzdGVtIGxlYW4gYW5kIGVmZmljaWVudCB1bmxlc3MgdGhpcyBjb25maWd1cmF0aW9uIGlzIHRydWx5IGluZGlzcGVuc2FibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyOTowNy4zNjc5ODQ2OTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTk0MzAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJVU0VSRkFVTFRGRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy90YXNrX21tdS5jPTExNjY9c3RhdGljIHZvaWQgc2hvd19zbWFwX3ZtYV9mbGFncyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMzYtI2VuZGlmIC8qIENPTkZJR19BUkNIX0hBU19QS0VZUyAqL1xcbmZzL3Byb2MvdGFza19tbXUuYzoxMjM3OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMzgtXFx0XFx0W2lsb2cyKFZNX1VGRkRfTUlOT1IpXVxcdD0gXFxcInVpXFxcIixcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIzOTojZW5kaWYgLyogQ09ORklHX0hBVkVfQVJDSF9VU0VSRkFVTFRGRF9NSU5PUiAqL1xcbmZzL3Byb2MvdGFza19tbXUuYy0xMjQwLSNpZmRlZiBDT05GSUdfQVJDSF9IQVNfVVNFUl9TSEFET1dfU1RBQ0tcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjk6MDcuODA3OTMyNDU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4OTUzMTY0NTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gdGhlIGZpZWxkOlxuXG4qKkxvY2F0aW5nIHRoZSBIZWFydCBvZiB0aGUgTWF0dGVyOiBFeGFtaW5pbmcgYHVzZXJmYXVsdGZkX3dwYCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGB1c2VyZmF1bHRmZF93cGAgY29uc3RydWN0LiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3aGVyZSAqaXMqIHRoaXMgdGhpbmcgZGVmaW5lZD8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGxvY2F0aW9uIHdpdGhpbiB0aGUgY29kZWJhc2UuIEtub3dpbmcgaXRzIGRlZmluaXRpb24gd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgZm91bmRhdGlvbiBmb3IgYW5hbHl6aW5nIGl0cyBwdXJwb3NlLCBpbnRlcmFjdGlvbnMsIGFuZCBwb3RlbnRpYWwgaXNzdWVzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGRlZXBlciBpbnZlc3RpZ2F0aW9uLCB3aGV0aGVyIGl0J3MgdW5kZXJzdGFuZGluZyBhIGJ1ZyByZXBvcnQsIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIG9yIHNpbXBseSBkZWVwZW5pbmcgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlLiBMb2NhdGluZyB0aGUgZGVmaW5pdGlvbiB3aWxsIGJlIGNydWNpYWwgYmVmb3JlIEkgY2FuIGRvIGFueSBraW5kIG9mIGNvZGUgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNzAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyOTo1Ni43NjEwOTkzNTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDQyODMxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNlcmZhdWx0ZmRfd3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaD01NTU9c3RhdGljIGlubGluZSBwdGVfbWFya2VyIGNvcHlfcHRlX21hcmtlcihcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmgtNTYyLVxcdC8qIE9ubHkgY29weSBQVEUgbWFya2VycyBpZiBVRkZEIHJlZ2lzdGVyIG1hdGNoZXMuICovXFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaDo1NjM6XFx0aWYgKChzcmNtIFxcdTAwMjYgUFRFX01BUktFUl9VRkZEX1dQKSBcXHUwMDI2XFx1MDAyNiB1c2VyZmF1bHRmZF93cChkc3Rfdm1hKSlcXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTU2NC1cXHRcXHRkc3RtIHw9IFBURV9NQVJLRVJfVUZGRF9XUDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg9NTgyPXB0ZV9pbnN0YWxsX3VmZmRfd3BfaWZfbmVlZGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTU5My1cXHQvKlxcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg6NTk0OlxcdCAqIE5PVEU6IHVzZXJmYXVsdGZkX3dwX3VucG9wdWxhdGVkKCkgZG9lc24ndCBuZWVkIHRoaXMgd2hvbGVcXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTU5NS1cXHQgKiB0aGluZywgYmVjYXVzZSB3aGVuIHphcHBpbmcgZWl0aGVyIGl0IG1lYW5zIGl0J3MgZHJvcHBpbmcgdGhlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTU5OC1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oOjU5OTpcXHRpZiAodm1hX2lzX2Fub255bW91cyh2bWEpIHx8ICF1c2VyZmF1bHRmZF93cCh2bWEpKVxcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmgtNjAwLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTE5Nj1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfbWlzc2luZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTIwMC1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyMDE6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTIwMi17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yMTE9c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3B0ZV93cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTIxMy17XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjE0OlxcdHJldHVybiB1c2VyZmF1bHRmZF93cCh2bWEpIFxcdTAwMjZcXHUwMDI2IHB0ZV91ZmZkX3dwKHB0ZSk7XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjE1LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTIxNz1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfaHVnZV9wbWRfd3Aoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yMTkte1xcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjIyMDpcXHRyZXR1cm4gdXNlcmZhdWx0ZmRfd3Aodm1hKSBcXHUwMDI2XFx1MDAyNiBwbWRfdWZmZF93cChwbWQpO1xcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTIyMS19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yNTI9ZXh0ZXJuIHZvaWQgdXNlcmZhdWx0ZmRfdW5tYXBfY29tcGxldGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjUzLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp1Zik7XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjU0OmV4dGVybiBib29sIHVzZXJmYXVsdGZkX3dwX3VucG9wdWxhdGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTtcXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyNTU6ZXh0ZXJuIGJvb2wgdXNlcmZhdWx0ZmRfd3BfYXN5bmMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI1Ni1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyNTc6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwX3VzZV9tYXJrZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI1OC17XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjU5LVxcdC8qIE9ubHkgd3ItcHJvdGVjdCBtb2RlIHVzZXMgcHRlIG1hcmtlcnMgKi9cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyNjA6XFx0aWYgKCF1c2VyZmF1bHRmZF93cCh2bWEpKVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI2MS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yNzAtXFx0ICovXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjcxOlxcdHJldHVybiB1c2VyZmF1bHRmZF93cF91bnBvcHVsYXRlZCh2bWEpO1xcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI3Mi19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0zMTY9c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX21pc3Npbmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0zMjAtXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MzIxOnN0YXRpYyBpbmxpbmUgYm9vbCB1c2VyZmF1bHRmZF93cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0zMjIte1xcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg9Mzk4PXN0YXRpYyBpbmxpbmUgYm9vbCB1ZmZkX2Rpc2FibGVfZmF1bHRfYXJvdW5kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDAyLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjQwMzpzdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfd3BfdW5wb3B1bGF0ZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDA0LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQwNy1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDo0MDg6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwX2FzeW5jKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQwOS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD00MTM9c3RhdGljIGlubGluZSBib29sIHZtYV9oYXNfdWZmZF93aXRob3V0X2V2ZW50X3JlbWFwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDE3LVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjQxODpzdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfd3BfdXNlX21hcmtlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDE5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjk6NTguNzA1Mzg3MjY3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMjM3Nzc0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHVzZXJmYXVsdGZkX2suaCoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGRvd24gdGhpcyBwYXRoLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19VU0VSRkFVTFRGRGAgaXMsIGluIGZhY3QsIGVuYWJsZWQuIEl0J3MgYWxtb3N0IHNlY29uZCBuYXR1cmUgdG8gc3RhcnQgaGVyZSB3aGVuIGRlYWxpbmcgd2l0aCBVRkZELiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBrZXJuZWwgaXMgZXZlbiBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhpcy4gVGltZSB0byBjcmFjayBvcGVuIGBpbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaGAgYW5kIGNvbmZpcm0gdGhhdCB0aGUgcHJlcmVxdWlzaXRlIG9wdGlvbnMgYXJlIHNldC4gTm8gcG9pbnQgaW4gd2FzdGluZyB0aW1lIGlmIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkIGF0IGNvbXBpbGUgdGltZS4gSXQncyBhIGZ1bmRhbWVudGFsIGNoZWNrLCBidXQgYSBuZWNlc3Nhcnkgb25lIHRvIGVuc3VyZSBJJ20gYmFya2luZyB1cCB0aGUgcmlnaHQgdHJlZS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBoZWFkZXIgZmlsZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzQ1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzA6MDguMDI5MTY3NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNjY0ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19VU0VSRkFVTFRGRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0xMS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoxMjojaWZkZWYgQ09ORklHX1VTRVJGQVVMVEZEXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMTMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yNzg9c3RhdGljIGlubGluZSBib29sIHB0ZV9zd3BfdWZmZF93cF9hbnkocHRlX3QgcHRlKVxcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjkzLX1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyOTQ6I2Vsc2UgLyogQ09ORklHX1VTRVJGQVVMVEZEICovXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjk1LVxcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg9NDI3PXN0YXRpYyBpbmxpbmUgYm9vbCBwdGVfc3dwX3VmZmRfd3BfYW55KHB0ZV90IHB0ZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQzMC19XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6NDMxOiNlbmRpZiAvKiBDT05GSUdfVVNFUkZBVUxURkQgKi9cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC00MzItI2VuZGlmIC8qIF9MSU5VWF9VU0VSRkFVTFRGRF9LX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzA6MDguMTExODM3NjQ5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4ODAyMjQyMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBpbml0aWFsIHRob3VnaHRzLCBwdXR0aW5nIG15c2VsZiBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGtlcm5lbCBjb2RlIGludmVzdGlnYXRpb246XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHdlIG5lZWQgYENPTkZJR19VU0VSRkFVTFRGRGAuIFRoYXQncyBhIGdpdmVuLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXMgZW5hYmxlZC4gTm93LCB3aGF0J3MgdGhlIGRlYWwgd2l0aCBgUEFHRU1BUF9TQ0FOYD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBkZXBlbmRlbnQgb24gYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBtYWtlcyBpdCB0aWNrLiBMZXQgbWUgZmluZCB3aGVyZSB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkLiBJIHNob3VsZCBzdGFydCB3aXRoIGBmcy9wcm9jL3Rhc2tfbW11LmNgLCBzaW5jZSB0aGF0J3Mgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgcGFnZW1hcC1yZWxhdGVkIG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBgZG9fcGFnZW1hcF9zY2FuYCBhbmQgYGRvX3BhZ2VtYXBfY21kYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYWJvdXQgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIGxvb2sgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI1NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMwOjI2LjkxNDA4MTg4NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3NzY5NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fcGFnZW1hcF9zY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvdGFza19tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmM9MzE3Mz1zdGF0aWMgbG9uZyBwYWdlbWFwX3NjYW5fZmx1c2hfYnVmZmVyKHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcClcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMTk5LVxcbmZzL3Byb2MvdGFza19tbXUuYzozMjAwOnN0YXRpYyBsb25nIGRvX3BhZ2VtYXBfc2NhbihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyB1YXJnKVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMjAxLXtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0zMjczPXN0YXRpYyBsb25nIGRvX3BhZ2VtYXBfY21kKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTMyNzktXFx0Y2FzZSBQQUdFTUFQX1NDQU46XFxuZnMvcHJvYy90YXNrX21tdS5jOjMyODA6XFx0XFx0cmV0dXJuIGRvX3BhZ2VtYXBfc2NhbihtbSwgYXJnKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzI4MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzA6MjcuMDEzODYzNTIyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjI0Mjk2MzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipDaGVja2luZyBmb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBgZG9fcGFnZW1hcF9zY2FuYCBmdW5jdGlvbiwgSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGl0J3MgcG90ZW50aWFsbHkgZ3VhcmRlZCBieSBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgYWx3YXlzIGNvbXBpbGVkLCBvciBpZiBpdHMgaW5jbHVzaW9uIGlzIGRlcGVuZGVudCBvbiBzb21lIGNvbmZpZ3VyYXRpb24gZmxhZyBvciBzeXN0ZW0gZGVmaW5pdGlvbi4gSWYgaXQgKmlzKiBjb25kaXRpb25hbCwgaXQgd2lsbCBzZXZlcmVseSBpbXBhY3QgaG93IEkgaW50ZXJwcmV0IGl0cyBiZWhhdmlvci4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIHN5c3RlbSwgYW5kIGlmIEkgY2FuIGV2ZW4gcmVseSBvbiBpdHMgcHJlc2VuY2UgaW4gYWxsIHNjZW5hcmlvcy4gVGltZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBgI2lmZGVmYCBvciBzaW1pbGFyIGRpcmVjdGl2ZXMgc3Vycm91bmRpbmcgaXQuIEknbGwgc2VhcmNoIGZvciB0aG9zZSBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMDo0Mi4yMzgxNjI0NDNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNjI2MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlmZGVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvdGFza19tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmM9OTQ9dW5zaWduZWQgbG9uZyB0YXNrX3N0YXRtKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEwNi1cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTA3OiNpZmRlZiBDT05GSUdfTlVNQVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDgtLypcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0xMjg9c3RhdGljIHZvaWQgcmVsZWFzZV90YXNrX21lbXBvbGljeShzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMyLVxcbmZzL3Byb2MvdGFza19tbXUuYzoxMzM6I2lmZGVmIENPTkZJR19QRVJfVk1BX0xPQ0tcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTM0LVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTU0NT1zdGF0aWMgaW50IHBpZF9tYXBzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtNTYyLVxcbmZzL3Byb2MvdGFza19tbXUuYzo1NjM6I2lmZGVmIENPTkZJR19QRVJfVk1BX0xPQ0tcXG5mcy9wcm9jL3Rhc2tfbW11LmMtNTY0LVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTg2Mz1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX21hcHNfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy04OTAtXFxuZnMvcHJvYy90YXNrX21tdS5jOjg5MTojaWZkZWYgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SXFxuZnMvcHJvYy90YXNrX21tdS5jLTg5Mi1zdHJ1Y3QgbWVtX3NpemVfc3RhdHMge1xcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTk0Nz1zdGF0aWMgdm9pZCBzbWFwc19hY2NvdW50KHN0cnVjdCBtZW1fc2l6ZV9zdGF0cyAqbXNzLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDIxLVxcbmZzL3Byb2MvdGFza19tbXUuYzoxMDIyOiNpZmRlZiBDT05GSUdfU0hNRU1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTAyMy1zdGF0aWMgaW50IHNtYXBzX3B0ZV9ob2xlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTAzOT1zdGF0aWMgdm9pZCBzbWFwc19wdGVfaG9sZV9sb29rdXAodW5zaWduZWQgbG9uZyBhZGRyLCBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTA0MC17XFxuZnMvcHJvYy90YXNrX21tdS5jOjEwNDE6I2lmZGVmIENPTkZJR19TSE1FTVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDQyLVxcdGlmICh3YWxrLVxcdTAwM2VvcHMtXFx1MDAzZXB0ZV9ob2xlKSB7XFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTA0OT1zdGF0aWMgdm9pZCBzbWFwc19wdGVfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEwOTQtXFxuZnMvcHJvYy90YXNrX21tdS5jOjEwOTU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDk2LXN0YXRpYyB2b2lkIHNtYXBzX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTE2Nj1zdGF0aWMgdm9pZCBzaG93X3NtYXBfdm1hX2ZsYWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIwOC1cXHRcXHRbaWxvZzIoVk1fRE9OVERVTVApXVxcdD0gXFxcImRkXFxcIixcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIwOTojaWZkZWYgQ09ORklHX0FSTTY0X0JUSVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjEwLVxcdFxcdFtpbG9nMihWTV9BUk02NF9CVEkpXVxcdD0gXFxcImJ0XFxcIixcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIxMS0jZW5kaWZcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIxMjojaWZkZWYgQ09ORklHX01FTV9TT0ZUX0RJUlRZXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMTMtXFx0XFx0W2lsb2cyKFZNX1NPRlRESVJUWSldXFx0PSBcXFwic2RcXFwiLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMjAtXFx0XFx0W2lsb2cyKFZNX1VGRkRfV1ApXVxcdD0gXFxcInV3XFxcIixcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIyMTojaWZkZWYgQ09ORklHX0FSTTY0X01URVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjIyLVxcdFxcdFtpbG9nMihWTV9NVEUpXVxcdFxcdD0gXFxcIm10XFxcIixcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjI0LSNlbmRpZlxcbmZzL3Byb2MvdGFza19tbXUuYzoxMjI1OiNpZmRlZiBDT05GSUdfQVJDSF9IQVNfUEtFWVNcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIyNi1cXHRcXHQvKiBUaGVzZSBjb21lIG91dCB2aWEgUHJvdGVjdGlvbktleTogKi9cXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjM2LSNlbmRpZiAvKiBDT05GSUdfQVJDSF9IQVNfUEtFWVMgKi9cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIzNzojaWZkZWYgQ09ORklHX0hBVkVfQVJDSF9VU0VSRkFVTFRGRF9NSU5PUlxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjM4LVxcdFxcdFtpbG9nMihWTV9VRkZEX01JTk9SKV1cXHQ9IFxcXCJ1aVxcXCIsXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMzktI2VuZGlmIC8qIENPTkZJR19IQVZFX0FSQ0hfVVNFUkZBVUxURkRfTUlOT1IgKi9cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTI0MDojaWZkZWYgQ09ORklHX0FSQ0hfSEFTX1VTRVJfU0hBRE9XX1NUQUNLXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyNDEtXFx0XFx0W2lsb2cyKFZNX1NIQURPV19TVEFDSyldID0gXFxcInNzXFxcIixcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjQ1LSNlbmRpZlxcbmZzL3Byb2MvdGFza19tbXUuYzoxMjQ2OiNpZmRlZiBDT05GSUdfNjRCSVRcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI0Ny1cXHRcXHRbaWxvZzIoVk1fU0VBTEVEKV0gPSBcXFwic2xcXFwiLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyNjEtXFxuZnMvcHJvYy90YXNrX21tdS5jOjEyNjI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI2My1zdGF0aWMgaW50IHNtYXBzX2h1Z2V0bGJfcmFuZ2UocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0xMzA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgc21hcHNfc2htZW1fd2Fsa19vcHMgPSB7XFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMxMy1cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTMxNDojaWZkZWYgQ09ORklHX1BFUl9WTUFfTE9DS1xcbmZzL3Byb2MvdGFza19tbXUuYy0xMzE1LVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTIwMjE9c3RhdGljIHBhZ2VtYXBfZW50cnlfdCBwdGVfdG9fcGFnZW1hcF9lbnRyeShzdHJ1Y3QgcGFnZW1hcHJlYWQgKnBtLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTIwODYtXFxuZnMvcHJvYy90YXNrX21tdS5jOjIwODc6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0yMDg4LXN0YXRpYyBpbnQgcGFnZW1hcF9wbWRfcmFuZ2VfdGhwKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjE2Nj1zdGF0aWMgaW50IHBhZ2VtYXBfcG1kX3JhbmdlKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTIxNzQtXFxuZnMvcHJvYy90YXNrX21tdS5jOjIxNzU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0yMTc2LVxcdHB0bCA9IHBtZF90cmFuc19odWdlX2xvY2socG1kcCwgdm1hKTtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0yMjA3LVxcbmZzL3Byb2MvdGFza19tbXUuYzoyMjA4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuZnMvcHJvYy90YXNrX21tdS5jLTIyMDktLyogVGhpcyBmdW5jdGlvbiB3YWxrcyB3aXRoaW4gb25lIGh1Z2V0bGIgZW50cnkgaW4gdGhlIHNpbmdsZSBjYWxsICovXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjQ5MD1zdGF0aWMgdm9pZCBtYWtlX3VmZmRfd3BfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTI1MDctXFxuZnMvcHJvYy90YXNrX21tdS5jOjI1MDg6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0yNTA5LXN0YXRpYyB1bnNpZ25lZCBsb25nIHBhZ2VtYXBfdGhwX2NhdGVnb3J5KHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0yNTU0PXN0YXRpYyB2b2lkIG1ha2VfdWZmZF93cF9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjU2OS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MjU3MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0yNTcxLXN0YXRpYyB1bnNpZ25lZCBsb25nIHBhZ2VtYXBfaHVnZXRsYl9jYXRlZ29yeShwdGVfdCBwdGUpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9Mjc4ND1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl90aHBfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0yNzg2LXtcXG5mcy9wcm9jL3Rhc2tfbW11LmM6Mjc4NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuZnMvcHJvYy90YXNrX21tdS5jLTI3ODgtXFx0c3RydWN0IHBhZ2VtYXBfc2Nhbl9wcml2YXRlICpwID0gd2Fsay1cXHUwMDNlcHJpdmF0ZTtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0yODM1PXN0YXRpYyBpbnQgcGFnZW1hcF9zY2FuX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTI5MzItXFxuZnMvcHJvYy90YXNrX21tdS5jOjI5MzM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjkzNC1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2VudHJ5KHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTMyODc9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3BhZ2VtYXBfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMjk2LVxcbmZzL3Byb2MvdGFza19tbXUuYzozMjk3OiNpZmRlZiBDT05GSUdfTlVNQVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMjk4LVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTMzNDg9c3RhdGljIHN0cnVjdCBwYWdlICpjYW5fZ2F0aGVyX251bWFfc3RhdHMocHRlX3QgcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMzcwLVxcbmZzL3Byb2MvdGFza19tbXUuYzozMzcxOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzM3Mi1zdGF0aWMgc3RydWN0IHBhZ2UgKmNhbl9nYXRoZXJfbnVtYV9zdGF0c19wbWQocG1kX3QgcG1kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTMzOTc9c3RhdGljIGludCBnYXRoZXJfcHRlX3N0YXRzKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zNDA1LVxcbmZzL3Byb2MvdGFza19tbXUuYzozNDA2OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzQwNy1cXHRwdGwgPSBwbWRfdHJhbnNfaHVnZV9sb2NrKHBtZCwgdm1hKTtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zNDM1LX1cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzQzNjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0zNDM3LXN0YXRpYyBpbnQgZ2F0aGVyX2h1Z2V0bGJfc3RhdHMocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0zNDY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgc2hvd19udW1hX29wcyA9IHtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zNDcyLVxcbmZzL3Byb2MvdGFza19tbXUuYzozNDczOiNpZmRlZiBDT05GSUdfUEVSX1ZNQV9MT0NLXFxuZnMvcHJvYy90YXNrX21tdS5jLTM0NzQtc3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBzaG93X251bWFfdm1hX2xvY2tfb3BzID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMDo0Mi4zMTk3OTgzOTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAxMTI1NzEwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkNoZWNraW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgZG9fcGFnZW1hcF9zY2FuYCoqXG5cbkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYGRvX3BhZ2VtYXBfc2NhbmAgbWlnaHQgbm90IGJlIGd1YXJkZWQgYnkgYW4gYCNpZmRlZmAgYXMgbXVjaCBhcyBJIGluaXRpYWxseSB0aG91Z2h0LCBvdXRzaWRlIG9mIG1heWJlIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgLCBidXQgdGhhdCdzIGp1c3QgYSBodW5jaCByaWdodCBub3cuIEkgbmVlZCB0byBiZSBzdXJlLiBUaW1lIHRvIHZlcmlmeSBpdHMgdXNhZ2UuIFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhhdCBpbmZvcm1hdGlvbiB3aWxsIGJlIGF0IHRoZSB2ZXJ5IHRvcCBvZiBgZnMvcHJvYy90YXNrX21tdS5jYCwgb3IgbWF5YmUgdGhlIGFzc29jaWF0ZWQgYGZzL3Byb2MvTWFrZWZpbGVgLiBJJ2xsIHNjYW4gdGhyb3VnaCB0aG9zZSBmaWxlcyBhbmQgcXVpY2tseSBjb25maXJtIGlmIHRoZXJlJ3MgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHN1cnJvdW5kaW5nIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGl0c2VsZiwgYW5kIGlmIHNvLCB3aGF0IHRoZSByZWxldmFudCBjb25maWcgc3ltYm9sIGlzLiBLbm93aW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBjbGFyaWZ5IHRoZSBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIG9yLCBtb3JlIGludGVyZXN0aW5nbHksIHdoZW4gaXQgKmlzbid0Ki5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NDgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMTowMi40MzIzNzM1NDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNjc4Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRhc2tfbW11XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy9NYWtlZmlsZT02PW9iai15ICAgKz0gcHJvYy5vXFxuZnMvcHJvYy9NYWtlZmlsZS03LVxcbmZzL3Byb2MvTWFrZWZpbGU6ODpDRkxBR1NfdGFza19tbXUub1xcdCs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxcbmZzL3Byb2MvTWFrZWZpbGUtOS1wcm9jLXlcXHRcXHRcXHQ6PSBub21tdS5vIHRhc2tfbm9tbXUub1xcbmZzL3Byb2MvTWFrZWZpbGU6MTA6cHJvYy0kKENPTkZJR19NTVUpXFx0Oj0gdGFza19tbXUub1xcbmZzL3Byb2MvTWFrZWZpbGUtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMxOjAyLjUyNTA1OTEyNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTg2MjI3NjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgTWFuYWdlbWVudCBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBpcyBkZWZpbml0ZWx5IGBDT05GSUdfTU1VYC4gVGhhdCdzIGEgZ2l2ZW4uIE5vdywgSSdtIGN1cmlvdXMgYWJvdXQgYENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIGludGVncmF0ZWQsIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgcGFnZW1hcCBmdW5jdGlvbmFsaXR5IGlzIGhvb2tlZCB1cC4gTXkgaW5zdGluY3QgaXMgdGhhdCBpdCdzIGxpa2VseSBoYW5kbGVkIHdpdGhpbiB0aGUgYGZzL3Byb2NgIHN1YnRyZWUsIG1heWJlIGBmcy9wcm9jL2Jhc2UuY2AsIG9yIHNvbWV0aGluZyBjbG9zZWx5IHJlbGF0ZWQuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIHRvIHBpbnBvaW50IGV4YWN0bHkgaG93IGFuZCB3aGVyZSBgcGFnZW1hcGAgaXMgcmVnaXN0ZXJlZCBhbmQgdXRpbGl6ZWQuIFRoYXQgd2lsbCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzUxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzE6MTguMzg3MzM4ODI1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTg4MTM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlbWFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvYmFzZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3Byb2MvYmFzZS5jPTMyODI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgdGdpZF9iYXNlX3N0dWZmW10gPSB7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zMzI0LVxcdFJFRyhcXFwic21hcHNfcm9sbHVwXFxcIiwgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjMzMjU6XFx0UkVHKFxcXCJwYWdlbWFwXFxcIiwgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTMzMjYtI2VuZGlmXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0zNjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNlX3N0dWZmW10gPSB7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zNjc5LVxcdFJFRyhcXFwic21hcHNfcm9sbHVwXFxcIiwgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjM2ODA6XFx0UkVHKFxcXCJwYWdlbWFwXFxcIiwgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTM2ODEtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMxOjE4LjQ2NzIyNTY2NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzE2NDI0NzQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIFByZXByb2Nlc3NvciBEaXJlY3RpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvZGUgZmxvdyBoZXJlLiBUaGUgaW1tZWRpYXRlIHRoaW5nIEknbSBmb2N1c2luZyBvbiBpcyB0aGUgYCNlbmRpZmAgZGlyZWN0aXZlIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBgUkVHKFwicGFnZW1hcFwiKWAgbWFjcm8gY2FsbC4gSXQncyBhIGNsYXNzaWMgZGVidWdnaW5nIGFwcHJvYWNoIOKAkyBzdGFydCBhdCBhIGtub3duIHBvaW50IGFuZCBzZWUgd2hhdCBjb25kaXRpb25hbHMgb3IgcHJlcHJvY2Vzc29yIGFjdGl2aXR5IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoaXMgc3BlY2lmaWMgcmVnaXN0ZXIgZGVjbGFyYXRpb24uIEknbSBhc3N1bWluZyBgI2VuZGlmYCBpcyBjbG9zaW5nIG91dCBhIGJsb2NrIG9mIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoYXQgdGhlIGNvbmRpdGlvbiB3YXMgYW5kIGlmIGl0J3MgcmVsZXZhbnQgdG8gaG93IHRoZSBgcGFnZW1hcGAgcmVnaXN0ZXIgaXMgZGVmaW5lZCBvciB1c2VkLiBJcyB0aGlzIGJsb2NrIHBvdGVudGlhbGx5IGVuYWJsZWQgb3IgZGlzYWJsZWQgZGVwZW5kaW5nIG9uIGJ1aWxkIGZsYWdzLCB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBxdWljayBzY2FuIG9mIHRoZSBjb2RlIGJsb2NrIGFib3ZlIGAjZW5kaWZgIHdpbGwgaG9wZWZ1bGx5IHJldmVhbCB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGluIHF1ZXN0aW9uIGFuZCBJIGNhbiB0aGVuIGRldGVybWluZSB0aGUgaW1wYWN0IG9uIGBSRUcoXCJwYWdlbWFwXCIpYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4MzcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMjo1MS42MzE0NzY3NDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTk0NzUyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL2Jhc2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL2Jhc2UuYz00MDM9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfY21kbGluZV9vcHMgPSB7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy00MDctXFxuZnMvcHJvYy9iYXNlLmM6NDA4OiNpZmRlZiBDT05GSUdfS0FMTFNZTVNcXG5mcy9wcm9jL2Jhc2UuYy00MDktLypcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTQ1Mj1zdGF0aWMgdm9pZCB1bmxvY2tfdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtNDU2LVxcbmZzL3Byb2MvYmFzZS5jOjQ1NzojaWZkZWYgQ09ORklHX1NUQUNLVFJBQ0VcXG5mcy9wcm9jL2Jhc2UuYy00NTgtXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz00NjE9c3RhdGljIGludCBwcm9jX3BpZF9zdGFjayhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTUwNC1cXG5mcy9wcm9jL2Jhc2UuYzo1MDU6I2lmZGVmIENPTkZJR19TQ0hFRF9JTkZPXFxuZnMvcHJvYy9iYXNlLmMtNTA2LS8qXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz01MDk9c3RhdGljIGludCBwcm9jX3BpZF9zY2hlZHN0YXQoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy01MjMtXFxuZnMvcHJvYy9iYXNlLmM6NTI0OiNpZmRlZiBDT05GSUdfTEFURU5DWVRPUFxcbmZzL3Byb2MvYmFzZS5jLTUyNS1zdGF0aWMgaW50IGxzdGF0c19zaG93X3Byb2Moc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9NjI5PXN0YXRpYyBpbnQgcHJvY19waWRfbGltaXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtNjcxLVxcbmZzL3Byb2MvYmFzZS5jOjY3MjojaWZkZWYgQ09ORklHX0hBVkVfQVJDSF9UUkFDRUhPT0tcXG5mcy9wcm9jL2Jhc2UuYy02NzMtc3RhdGljIGludCBwcm9jX3BpZF9zeXNjYWxsKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MTI4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX29vbV9zY29yZV9hZGpfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTEyOTEtXFxuZnMvcHJvYy9iYXNlLmM6MTI5MjojaWZkZWYgQ09ORklHX0FVRElUXFxuZnMvcHJvYy9iYXNlLmMtMTI5My0jZGVmaW5lIFRNUEJVRkxFTiAxMVxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MTM3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3Nlc3Npb25pZF9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMTM4MS1cXG5mcy9wcm9jL2Jhc2UuYzoxMzgyOiNpZmRlZiBDT05GSUdfRkFVTFRfSU5KRUNUSU9OXFxuZnMvcHJvYy9iYXNlLmMtMTM4My1zdGF0aWMgc3NpemVfdCBwcm9jX2ZhdWx0X2luamVjdF9yZWFkKHN0cnVjdCBmaWxlICogZmlsZSwgY2hhciBfX3VzZXIgKiBidWYsXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0xNTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NjaGVkX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0xNTI3LVxcbmZzL3Byb2MvYmFzZS5jOjE1Mjg6I2lmZGVmIENPTkZJR19TQ0hFRF9BVVRPR1JPVVBcXG5mcy9wcm9jL2Jhc2UuYy0xNTI5LS8qXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0xNTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NjaGVkX2F1dG9ncm91cF9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMTYwMS1cXG5mcy9wcm9jL2Jhc2UuYzoxNjAyOiNpZmRlZiBDT05GSUdfVElNRV9OU1xcbmZzL3Byb2MvYmFzZS5jLTE2MDMtc3RhdGljIGludCB0aW1lbnNfb2Zmc2V0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTI3MTE9c3RhdGljIGludCBwcm9jX3BpZGVudF9yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTI3MzYtXFxuZnMvcHJvYy9iYXNlLmM6MjczNzojaWZkZWYgQ09ORklHX1NFQ1VSSVRZXFxuZnMvcHJvYy9iYXNlLmMtMjczOC1zdGF0aWMgaW50IHByb2NfcGlkX2F0dHJfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTI4NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfIyNMU00jI19hdHRyX2Rpcl9pbm9kZV9vcHMgPSB7IFxcXFxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTI4NjAtXFxuZnMvcHJvYy9iYXNlLmM6Mjg2MTojaWZkZWYgQ09ORklHX1NFQ1VSSVRZX1NNQUNLXFxuZnMvcHJvYy9iYXNlLmMtMjg2Mi1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSBzbWFja19hdHRyX2Rpcl9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmM9Mjg2NT1MU01fRElSX09QUyhzbWFjayk7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0yODY3LVxcbmZzL3Byb2MvYmFzZS5jOjI4Njg6I2lmZGVmIENPTkZJR19TRUNVUklUWV9BUFBBUk1PUlxcbmZzL3Byb2MvYmFzZS5jLTI4Njktc3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgYXBwYXJtb3JfYXR0cl9kaXJfc3R1ZmZbXSA9IHtcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTI4Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgYXR0cl9kaXJfc3R1ZmZbXSA9IHtcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTI4ODMtXFx0QVRUUihMU01fSURfVU5ERUYsIFxcXCJzb2NrY3JlYXRlXFxcIixcXHQwNjY2KSxcXG5mcy9wcm9jL2Jhc2UuYzoyODg0OiNpZmRlZiBDT05GSUdfU0VDVVJJVFlfU01BQ0tcXG5mcy9wcm9jL2Jhc2UuYy0yODg1LVxcdERJUihcXFwic21hY2tcXFwiLFxcdFxcdFxcdDA1NTUsXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0yODg3LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjI4ODg6I2lmZGVmIENPTkZJR19TRUNVUklUWV9BUFBBUk1PUlxcbmZzL3Byb2MvYmFzZS5jLTI4ODktXFx0RElSKFxcXCJhcHBhcm1vclxcXCIsXFx0XFx0XFx0MDU1NSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTI5MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfYXR0cl9kaXJfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTI5MjEtXFxuZnMvcHJvYy9iYXNlLmM6MjkyMjojaWZkZWYgQ09ORklHX0VMRl9DT1JFXFxuZnMvcHJvYy9iYXNlLmMtMjkyMy1zdGF0aWMgc3NpemVfdCBwcm9jX2NvcmVkdW1wX2ZpbHRlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9Mjk5ND1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX2NvcmVkdW1wX2ZpbHRlcl9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzAwMC1cXG5mcy9wcm9jL2Jhc2UuYzozMDAxOiNpZmRlZiBDT05GSUdfVEFTS19JT19BQ0NPVU5USU5HXFxuZnMvcHJvYy9iYXNlLmMtMzAwMi1zdGF0aWMgaW50IGRvX2lvX2FjY291bnRpbmcoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGludCB3aG9sZSlcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTMwNTk9c3RhdGljIGludCBwcm9jX3RnaWRfaW9fYWNjb3VudGluZyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMwNjUtXFxuZnMvcHJvYy9iYXNlLmM6MzA2NjojaWZkZWYgQ09ORklHX1VTRVJfTlNcXG5mcy9wcm9jL2Jhc2UuYy0zMDY3LXN0YXRpYyBpbnQgcHJvY19pZF9tYXBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTMxOTg9c3RhdGljIGludCBwcm9jX3BpZF9wZXJzb25hbGl0eShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMyMDgtXFxuZnMvcHJvYy9iYXNlLmM6MzIwOTojaWZkZWYgQ09ORklHX0xJVkVQQVRDSFxcbmZzL3Byb2MvYmFzZS5jLTMyMTAtc3RhdGljIGludCBwcm9jX3BpZF9wYXRjaF9zdGF0ZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMyMTctXFxuZnMvcHJvYy9iYXNlLmM6MzIxODojaWZkZWYgQ09ORklHX0tTTVxcbmZzL3Byb2MvYmFzZS5jLTMyMTktc3RhdGljIGludCBwcm9jX3BpZF9rc21fbWVyZ2luZ19wYWdlcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTMyMzI9c3RhdGljIGludCBwcm9jX3BpZF9rc21fc3RhdChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMyNjAtXFxuZnMvcHJvYy9iYXNlLmM6MzI2MTojaWZkZWYgQ09ORklHX0tTVEFDS19FUkFTRV9NRVRSSUNTXFxuZnMvcHJvYy9iYXNlLmMtMzI2Mi1zdGF0aWMgaW50IHByb2Nfc3RhY2tfZGVwdGgoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzI4Ny1cXHRESVIoXFxcIm5zXFxcIixcXHQgIFNfSVJVU1J8U19JWFVHTywgcHJvY19uc19kaXJfaW5vZGVfb3BlcmF0aW9ucywgcHJvY19uc19kaXJfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzI4ODojaWZkZWYgQ09ORklHX05FVFxcbmZzL3Byb2MvYmFzZS5jLTMyODktXFx0RElSKFxcXCJuZXRcXFwiLCAgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX25ldF9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX25ldF9vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMyOTYtXFx0UkVHKFxcXCJzY2hlZFxcXCIsICAgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3BpZF9zY2hlZF9vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozMjk3OiNpZmRlZiBDT05GSUdfU0NIRURfQVVUT0dST1VQXFxuZnMvcHJvYy9iYXNlLmMtMzI5OC1cXHRSRUcoXFxcImF1dG9ncm91cFxcXCIsICBTX0lSVUdPfFNfSVdVU1IsIHByb2NfcGlkX3NjaGVkX2F1dG9ncm91cF9vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMjk5LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzMDA6I2lmZGVmIENPTkZJR19USU1FX05TXFxuZnMvcHJvYy9iYXNlLmMtMzMwMS1cXHRSRUcoXFxcInRpbWVuc19vZmZzZXRzXFxcIiwgIFNfSVJVR098U19JV1VTUiwgcHJvY190aW1lbnNfb2Zmc2V0c19vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMzMDMtXFx0UkVHKFxcXCJjb21tXFxcIiwgICAgICBTX0lSVUdPfFNfSVdVU1IsIHByb2NfcGlkX3NldF9jb21tX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjMzMDQ6I2lmZGVmIENPTkZJR19IQVZFX0FSQ0hfVFJBQ0VIT09LXFxuZnMvcHJvYy9iYXNlLmMtMzMwNS1cXHRPTkUoXFxcInN5c2NhbGxcXFwiLCAgICBTX0lSVVNSLCBwcm9jX3BpZF9zeXNjYWxsKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMzMTAtXFx0UkVHKFxcXCJtYXBzXFxcIiwgICAgICAgU19JUlVHTywgcHJvY19waWRfbWFwc19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozMzExOiNpZmRlZiBDT05GSUdfTlVNQVxcbmZzL3Byb2MvYmFzZS5jLTMzMTItXFx0UkVHKFxcXCJudW1hX21hcHNcXFwiLCAgU19JUlVHTywgcHJvY19waWRfbnVtYV9tYXBzX29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzMyMC1cXHRSRUcoXFxcIm1vdW50c3RhdHNcXFwiLCBTX0lSVVNSLCBwcm9jX21vdW50c3RhdHNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzMyMTojaWZkZWYgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SXFxuZnMvcHJvYy9iYXNlLmMtMzMyMi1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zMzI2LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzMjc6I2lmZGVmIENPTkZJR19TRUNVUklUWVxcbmZzL3Byb2MvYmFzZS5jLTMzMjgtXFx0RElSKFxcXCJhdHRyXFxcIiwgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX2F0dHJfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfYXR0cl9kaXJfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmMtMzMyOS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzMwOiNpZmRlZiBDT05GSUdfS0FMTFNZTVNcXG5mcy9wcm9jL2Jhc2UuYy0zMzMxLVxcdE9ORShcXFwid2NoYW5cXFwiLCAgICAgIFNfSVJVR08sIHByb2NfcGlkX3djaGFuKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzMyLSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzMzM6I2lmZGVmIENPTkZJR19TVEFDS1RSQUNFXFxuZnMvcHJvYy9iYXNlLmMtMzMzNC1cXHRPTkUoXFxcInN0YWNrXFxcIiwgICAgICBTX0lSVVNSLCBwcm9jX3BpZF9zdGFjayksXFxuZnMvcHJvYy9iYXNlLmMtMzMzNS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzM2OiNpZmRlZiBDT05GSUdfU0NIRURfSU5GT1xcbmZzL3Byb2MvYmFzZS5jLTMzMzctXFx0T05FKFxcXCJzY2hlZHN0YXRcXFwiLCAgU19JUlVHTywgcHJvY19waWRfc2NoZWRzdGF0KSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzM4LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzMzk6I2lmZGVmIENPTkZJR19MQVRFTkNZVE9QXFxuZnMvcHJvYy9iYXNlLmMtMzM0MC1cXHRSRUcoXFxcImxhdGVuY3lcXFwiLCAgU19JUlVHTywgcHJvY19sc3RhdHNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmMtMzM0MS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzQyOiNpZmRlZiBDT05GSUdfUFJPQ19QSURfQ1BVU0VUXFxuZnMvcHJvYy9iYXNlLmMtMzM0My1cXHRPTkUoXFxcImNwdXNldFxcXCIsICAgICBTX0lSVUdPLCBwcm9jX2NwdXNldF9zaG93KSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzQ0LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzNDU6I2lmZGVmIENPTkZJR19DR1JPVVBTXFxuZnMvcHJvYy9iYXNlLmMtMzM0Ni1cXHRPTkUoXFxcImNncm91cFxcXCIsICBTX0lSVUdPLCBwcm9jX2Nncm91cF9zaG93KSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzQ3LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzNDg6I2lmZGVmIENPTkZJR19QUk9DX0NQVV9SRVNDVFJMXFxuZnMvcHJvYy9iYXNlLmMtMzM0OS1cXHRPTkUoXFxcImNwdV9yZXNjdHJsX2dyb3Vwc1xcXCIsIFNfSVJVR08sIHByb2NfcmVzY3RybF9zaG93KSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMzNTMtXFx0UkVHKFxcXCJvb21fc2NvcmVfYWRqXFxcIiwgU19JUlVHT3xTX0lXVVNSLCBwcm9jX29vbV9zY29yZV9hZGpfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzM1NDojaWZkZWYgQ09ORklHX0FVRElUXFxuZnMvcHJvYy9iYXNlLmMtMzM1NS1cXHRSRUcoXFxcImxvZ2ludWlkXFxcIiwgICBTX0lXVVNSfFNfSVJVR08sIHByb2NfbG9naW51aWRfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zMzU3LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzNTg6I2lmZGVmIENPTkZJR19GQVVMVF9JTkpFQ1RJT05cXG5mcy9wcm9jL2Jhc2UuYy0zMzU5LVxcdFJFRyhcXFwibWFrZS1pdC1mYWlsXFxcIiwgU19JUlVHT3xTX0lXVVNSLCBwcm9jX2ZhdWx0X2luamVjdF9vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMzNjEtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzM2MjojaWZkZWYgQ09ORklHX0VMRl9DT1JFXFxuZnMvcHJvYy9iYXNlLmMtMzM2My1cXHRSRUcoXFxcImNvcmVkdW1wX2ZpbHRlclxcXCIsIFNfSVJVR098U19JV1VTUiwgcHJvY19jb3JlZHVtcF9maWx0ZXJfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmMtMzM2NC0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzY1OiNpZmRlZiBDT05GSUdfVEFTS19JT19BQ0NPVU5USU5HXFxuZnMvcHJvYy9iYXNlLmMtMzM2Ni1cXHRPTkUoXFxcImlvXFxcIixcXHRTX0lSVVNSLCBwcm9jX3RnaWRfaW9fYWNjb3VudGluZyksXFxuZnMvcHJvYy9iYXNlLmMtMzM2Ny0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzY4OiNpZmRlZiBDT05GSUdfVVNFUl9OU1xcbmZzL3Byb2MvYmFzZS5jLTMzNjktXFx0UkVHKFxcXCJ1aWRfbWFwXFxcIiwgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3VpZF9tYXBfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zMzc3LVxcdFJFRyhcXFwidGltZXJzbGFja19uc1xcXCIsIFNfSVJVR098U19JV1VHTywgcHJvY19waWRfc2V0X3RpbWVyc2xhY2tfbnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzM3ODojaWZkZWYgQ09ORklHX0xJVkVQQVRDSFxcbmZzL3Byb2MvYmFzZS5jLTMzNzktXFx0T05FKFxcXCJwYXRjaF9zdGF0ZVxcXCIsICBTX0lSVVNSLCBwcm9jX3BpZF9wYXRjaF9zdGF0ZSksXFxuZnMvcHJvYy9iYXNlLmMtMzM4MC0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzgxOiNpZmRlZiBDT05GSUdfS1NUQUNLX0VSQVNFX01FVFJJQ1NcXG5mcy9wcm9jL2Jhc2UuYy0zMzgyLVxcdE9ORShcXFwic3RhY2tfZGVwdGhcXFwiLCBTX0lSVUdPLCBwcm9jX3N0YWNrX2RlcHRoKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzgzLSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzODQ6I2lmZGVmIENPTkZJR19QUk9DX1BJRF9BUkNIX1NUQVRVU1xcbmZzL3Byb2MvYmFzZS5jLTMzODUtXFx0T05FKFxcXCJhcmNoX3N0YXR1c1xcXCIsIFNfSVJVR08sIHByb2NfcGlkX2FyY2hfc3RhdHVzKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzg2LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzODc6I2lmZGVmIENPTkZJR19TRUNDT01QX0NBQ0hFX0RFQlVHXFxuZnMvcHJvYy9iYXNlLmMtMzM4OC1cXHRPTkUoXFxcInNlY2NvbXBfY2FjaGVcXFwiLCBTX0lSVVNSLCBwcm9jX3BpZF9zZWNjb21wX2NhY2hlKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzg5LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzOTA6I2lmZGVmIENPTkZJR19LU01cXG5mcy9wcm9jL2Jhc2UuYy0zMzkxLVxcdE9ORShcXFwia3NtX21lcmdpbmdfcGFnZXNcXFwiLCAgU19JUlVTUiwgcHJvY19waWRfa3NtX21lcmdpbmdfcGFnZXMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MzY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0aWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY0NC1cXHRESVIoXFxcIm5zXFxcIixcXHQgU19JUlVTUnxTX0lYVUdPLCBwcm9jX25zX2Rpcl9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX25zX2Rpcl9vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozNjQ1OiNpZmRlZiBDT05GSUdfTkVUXFxuZnMvcHJvYy9iYXNlLmMtMzY0Ni1cXHRESVIoXFxcIm5ldFxcXCIsICAgICAgICBTX0lSVUdPfFNfSVhVR08sIHByb2NfbmV0X2lub2RlX29wZXJhdGlvbnMsIHByb2NfbmV0X29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY1Ni1cXHRcXHRcXHQgXFx1MDAyNnByb2NfcGlkX3NldF9jb21tX29wZXJhdGlvbnMsIHt9KSxcXG5mcy9wcm9jL2Jhc2UuYzozNjU3OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1RSQUNFSE9PS1xcbmZzL3Byb2MvYmFzZS5jLTM2NTgtXFx0T05FKFxcXCJzeXNjYWxsXFxcIiwgICBTX0lSVVNSLCBwcm9jX3BpZF9zeXNjYWxsKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTM2NjMtXFx0UkVHKFxcXCJtYXBzXFxcIiwgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9tYXBzX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjM2NjQ6I2lmZGVmIENPTkZJR19QUk9DX0NISUxEUkVOXFxuZnMvcHJvYy9iYXNlLmMtMzY2NS1cXHRSRUcoXFxcImNoaWxkcmVuXFxcIiwgIFNfSVJVR08sIHByb2NfdGlkX2NoaWxkcmVuX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTM2NjYtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzY2NzojaWZkZWYgQ09ORklHX05VTUFcXG5mcy9wcm9jL2Jhc2UuYy0zNjY4LVxcdFJFRyhcXFwibnVtYV9tYXBzXFxcIiwgU19JUlVHTywgcHJvY19waWRfbnVtYV9tYXBzX29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY3NS1cXHRSRUcoXFxcIm1vdW50aW5mb1xcXCIsICBTX0lSVUdPLCBwcm9jX21vdW50aW5mb19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozNjc2OiNpZmRlZiBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JcXG5mcy9wcm9jL2Jhc2UuYy0zNjc3LVxcdFJFRyhcXFwiY2xlYXJfcmVmc1xcXCIsIFNfSVdVU1IsIHByb2NfY2xlYXJfcmVmc19vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTM2ODEtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzY4MjojaWZkZWYgQ09ORklHX1NFQ1VSSVRZXFxuZnMvcHJvYy9iYXNlLmMtMzY4My1cXHRESVIoXFxcImF0dHJcXFwiLCAgICAgIFNfSVJVR098U19JWFVHTywgcHJvY19hdHRyX2Rpcl9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX2F0dHJfZGlyX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTM2ODQtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzY4NTojaWZkZWYgQ09ORklHX0tBTExTWU1TXFxuZnMvcHJvYy9iYXNlLmMtMzY4Ni1cXHRPTkUoXFxcIndjaGFuXFxcIiwgICAgIFNfSVJVR08sIHByb2NfcGlkX3djaGFuKSxcXG5mcy9wcm9jL2Jhc2UuYy0zNjg3LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjM2ODg6I2lmZGVmIENPTkZJR19TVEFDS1RSQUNFXFxuZnMvcHJvYy9iYXNlLmMtMzY4OS1cXHRPTkUoXFxcInN0YWNrXFxcIiwgICAgICBTX0lSVVNSLCBwcm9jX3BpZF9zdGFjayksXFxuZnMvcHJvYy9iYXNlLmMtMzY5MC0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozNjkxOiNpZmRlZiBDT05GSUdfU0NIRURfSU5GT1xcbmZzL3Byb2MvYmFzZS5jLTM2OTItXFx0T05FKFxcXCJzY2hlZHN0YXRcXFwiLCBTX0lSVUdPLCBwcm9jX3BpZF9zY2hlZHN0YXQpLFxcbmZzL3Byb2MvYmFzZS5jLTM2OTMtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzY5NDojaWZkZWYgQ09ORklHX0xBVEVOQ1lUT1BcXG5mcy9wcm9jL2Jhc2UuYy0zNjk1LVxcdFJFRyhcXFwibGF0ZW5jeVxcXCIsICBTX0lSVUdPLCBwcm9jX2xzdGF0c19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYy0zNjk2LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjM2OTc6I2lmZGVmIENPTkZJR19QUk9DX1BJRF9DUFVTRVRcXG5mcy9wcm9jL2Jhc2UuYy0zNjk4LVxcdE9ORShcXFwiY3B1c2V0XFxcIiwgICAgU19JUlVHTywgcHJvY19jcHVzZXRfc2hvdyksXFxuZnMvcHJvYy9iYXNlLmMtMzY5OS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozNzAwOiNpZmRlZiBDT05GSUdfQ0dST1VQU1xcbmZzL3Byb2MvYmFzZS5jLTM3MDEtXFx0T05FKFxcXCJjZ3JvdXBcXFwiLCAgU19JUlVHTywgcHJvY19jZ3JvdXBfc2hvdyksXFxuZnMvcHJvYy9iYXNlLmMtMzcwMi0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozNzAzOiNpZmRlZiBDT05GSUdfUFJPQ19DUFVfUkVTQ1RSTFxcbmZzL3Byb2MvYmFzZS5jLTM3MDQtXFx0T05FKFxcXCJjcHVfcmVzY3RybF9ncm91cHNcXFwiLCBTX0lSVUdPLCBwcm9jX3Jlc2N0cmxfc2hvdyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zNzA4LVxcdFJFRyhcXFwib29tX3Njb3JlX2FkalxcXCIsIFNfSVJVR098U19JV1VTUiwgcHJvY19vb21fc2NvcmVfYWRqX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjM3MDk6I2lmZGVmIENPTkZJR19BVURJVFxcbmZzL3Byb2MvYmFzZS5jLTM3MTAtXFx0UkVHKFxcXCJsb2dpbnVpZFxcXCIsICBTX0lXVVNSfFNfSVJVR08sIHByb2NfbG9naW51aWRfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zNzEyLSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjM3MTM6I2lmZGVmIENPTkZJR19GQVVMVF9JTkpFQ1RJT05cXG5mcy9wcm9jL2Jhc2UuYy0zNzE0LVxcdFJFRyhcXFwibWFrZS1pdC1mYWlsXFxcIiwgU19JUlVHT3xTX0lXVVNSLCBwcm9jX2ZhdWx0X2luamVjdF9vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTM3MTYtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzcxNzojaWZkZWYgQ09ORklHX1RBU0tfSU9fQUNDT1VOVElOR1xcbmZzL3Byb2MvYmFzZS5jLTM3MTgtXFx0T05FKFxcXCJpb1xcXCIsXFx0U19JUlVTUiwgcHJvY190aWRfaW9fYWNjb3VudGluZyksXFxuZnMvcHJvYy9iYXNlLmMtMzcxOS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozNzIwOiNpZmRlZiBDT05GSUdfVVNFUl9OU1xcbmZzL3Byb2MvYmFzZS5jLTM3MjEtXFx0UkVHKFxcXCJ1aWRfbWFwXFxcIiwgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3VpZF9tYXBfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zNzI1LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjM3MjY6I2lmZGVmIENPTkZJR19MSVZFUEFUQ0hcXG5mcy9wcm9jL2Jhc2UuYy0zNzI3LVxcdE9ORShcXFwicGF0Y2hfc3RhdGVcXFwiLCAgU19JUlVTUiwgcHJvY19waWRfcGF0Y2hfc3RhdGUpLFxcbmZzL3Byb2MvYmFzZS5jLTM3MjgtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzcyOTojaWZkZWYgQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTXFxuZnMvcHJvYy9iYXNlLmMtMzczMC1cXHRPTkUoXFxcImFyY2hfc3RhdHVzXFxcIiwgU19JUlVHTywgcHJvY19waWRfYXJjaF9zdGF0dXMpLFxcbmZzL3Byb2MvYmFzZS5jLTM3MzEtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzczMjojaWZkZWYgQ09ORklHX1NFQ0NPTVBfQ0FDSEVfREVCVUdcXG5mcy9wcm9jL2Jhc2UuYy0zNzMzLVxcdE9ORShcXFwic2VjY29tcF9jYWNoZVxcXCIsIFNfSVJVU1IsIHByb2NfcGlkX3NlY2NvbXBfY2FjaGUpLFxcbmZzL3Byb2MvYmFzZS5jLTM3MzQtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzczNTojaWZkZWYgQ09ORklHX0tTTVxcbmZzL3Byb2MvYmFzZS5jLTM3MzYtXFx0T05FKFxcXCJrc21fbWVyZ2luZ19wYWdlc1xcXCIsICBTX0lSVVNSLCBwcm9jX3BpZF9rc21fbWVyZ2luZ19wYWdlcyksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMyOjUxLjc4MzQzMzg1OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjkyMTk3MDcwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgUGFnZW1hcCBTY2FuIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhlIGludGVncmF0aW9uIG9mIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgIHdpdGggYENPTkZJR19VU0VSRkFVTFRGRGAuICBJdCBsb29rcyBsaWtlIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgIGlzIGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBwYWdlbWFwYCBmdW5jdGlvbmFsaXR5IHRvIGJlIHJlZ2lzdGVyZWQsIGFuZCBgQ09ORklHX1VTRVJGQVVMVEZEYCBpcyBvYnZpb3VzbHkgY3J1Y2lhbCBmb3IgdGhlIGNvcmUgY2hhbmdlLiAgSSBhbHNvIGFudGljaXBhdGUgbmVlZGluZyBgQ09ORklHX01NVWAsIHRob3VnaCB0aGF0J3MgZ2VuZXJhbGx5IGFzc3VtZWQuXG5cbkxldCdzIHF1aWNrbHkgcmV2aWV3IHRoZSBjb2RlIGNoYW5nZXMuIFRoZSBtYWluIGZvY3VzIGlzIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgLiBUaGUgY3JpdGljYWwgY29uZGl0aW9uIGlzIGB1c2VyZmF1bHRmZF93cCh2bWEpYCB0byBoYW5kbGUgdW5wb3B1bGF0ZWQgcmFuZ2VzIGluIGEgYHVzZXJmYXVsdGZkYCB3cml0ZS1wcm90ZWN0ZWQgVk1BLiAgSSBzZWUgYSBjb21tZW50IG1lbnRpb25pbmcgYE1BRFZfRE9OVE5FRURgIGFuZCBgTUFEVl9DT0xMQVBTRWAsIHdoaWNoIGJyaW5ncyBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCB0byBtaW5kLCBhcyB3ZSBhcmUgbG9va2luZyBhdCBhbm9ueW1vdXMgVEhQIHBhZ2VzIGRyb3BwZWQgdmlhIGBNQURWX0RPTlRORUVEYC4gSG93ZXZlciwgdGhlIGNvZGUncyBjb21tZW50IGluZGljYXRlcyB0aGlzIGlzbid0IFRIUCBzcGVjaWZpYywgYnV0IHJhdGhlciB0aGUgZ2VuZXJhbCBjYXNlIG9mIHVucG9wdWxhdGVkIG1lbW9yeSByZWdpb25zLCBsaWtlIGhvbGVzLiBUaGUgY2hlY2sgZm9yIGAhaXNfdm1faHVnZXRsYl9wYWdlKHZtYSlgIHNlZW1zIHRvIGV4cGxpY2l0bHkgZXhjbHVkZSBIdWdlVExCIHBhZ2VzLiAgSSBzaG91bGQgcXVpY2tseSBjb25maXJtIGlmIGBpc192bV9odWdldGxiX3BhZ2VgIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRvIGJlIHByZXNlbnQsIGp1c3QgdG8gYmUgc3VyZS5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIHRvIHJlcG9ydCB0aGVzZSB1bnBvcHVsYXRlZCByZWdpb25zIHdpdGhpbiBgdXNlcmZhdWx0ZmRgIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIFwid3JpdHRlblwiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHBhZ2VtYXAgaW9jdGwuIEl0IHdpbGwgY2hhbmdlIGhvdyBgUEFHRU1BUF9TQ0FOYCB3b3Jrcy4gSSdtIHRoaW5raW5nIHRoaXMgaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gdGhhdCBpdCdzIGFsdGVyaW5nIHRoZSB3YXkgbWVtb3J5IHN0YXRlIGlzIHJlcG9ydGVkLCBhbmQgaXQgaW50ZXJhY3RzIHdpdGggYSByZWxhdGl2ZWx5IGNvbXBsZXggcGFydCBvZiB0aGUga2VybmVsICh1c2VyZmF1bHRmZCwgbWVtb3J5IG1hbmFnZW1lbnQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwuXG5cblNvLCBpbiBzdW1tYXJ5OlxuXG4qICAgKipDb25maWdzOioqIGBDT05GSUdfVVNFUkZBVUxURkRgLCBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYCwgKGltcGxpY2l0bHkpIGBDT05GSUdfTU1VYCwgYW5kIHBvc3NpYmx5IGBDT05GSUdfSFVHRVRMQl9QQUdFYC5cbiogICAqKktleSBGdW5jdGlvbjoqKiBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYCAtIHRoaXMgaXMgdGhlIGZvY2FsIHBvaW50LlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBob3cgdW5wb3B1bGF0ZWQgbWVtb3J5IHJlZ2lvbnMgYXJlIHRyZWF0ZWQgd2l0aGluIHdyaXRlLXByb3RlY3RlZCBWTUFzIG1hbmFnZWQgYnkgYHVzZXJmYXVsdGZkYCwgd2hpY2ggaXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBjcml0aWNhbCBmb3IgaGFuZGxpbmcgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBQQUdFTUFQX1NDQU5gIGlvY3RsLiBJdCBlbnN1cmVzIHRoYXQgdGhlIHNjYW4gcmVwb3J0cyBtZW1vcnkgcmVnaW9ucyB3aGljaCB3b3VsZCBjYXVzZSBhIHBhZ2UgZmF1bHQgYXMgXCJ3cml0dGVuXCIsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciB1c2VyZmF1bHRmZC4gSSBzaG91bGQga2VlcCBhbiBleWUgb24gaG93IEh1Z2VUTEIgaXMgYmVpbmcgaGFuZGxlZCBhcyB3ZWxsLCBldmVuIGlmIHRoZSBjb2RlIGV4cGxpY2l0bHkgZXhjbHVkZXMgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzQ1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMzowNC43MDU0MDY4MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTExNDA2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc192bV9odWdldGxiX3BhZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdldGxiLmg9MjUzPXN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX3phcF9iZWdpbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI1NS17XFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MjU2OlxcdGlmIChpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0yNTctXFx0XFx0X19odWdldGxiX3phcF9iZWdpbih2bWEsIHN0YXJ0LCBlbmQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MjYwPXN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX3phcF9lbmQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0yNjIte1xcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI2MzpcXHRpZiAoaXNfdm1faHVnZXRsYl9wYWdlKHZtYSkpXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjY0LVxcdFxcdF9faHVnZXRsYl96YXBfZW5kKHZtYSwgZGV0YWlscyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmg9MTY9c3RhdGljIGlubGluZSBib29sIGlzX3ZtYV9odWdldGxiX2ZsYWdzKGNvbnN0IHZtYV9mbGFnc190ICpmbGFncylcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaC0yMi1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmg6MjM6c3RhdGljIGlubGluZSBib29sIGlzX3ZtX2h1Z2V0bGJfcGFnZShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgtMjQte1xcbi0tXFxuaW5jbHVkZS9saW51eC9ybWFwLmg9ODg2PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdlX3ZtYV9tYXBwZWRfd2Fsa19kb25lKHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdylcXG4tLVxcbmluY2x1ZGUvbGludXgvcm1hcC5oLTg4OC1cXHQvKiBIdWdlVExCIHB0ZSBpcyBzZXQgdG8gdGhlIHJlbGV2YW50IHBhZ2UgdGFibGUgZW50cnkgd2l0aG91dCBwdGVfbWFwcGVkLiAqL1xcbmluY2x1ZGUvbGludXgvcm1hcC5oOjg4OTpcXHRpZiAocHZtdy1cXHUwMDNlcHRlIFxcdTAwMjZcXHUwMDI2ICFpc192bV9odWdldGxiX3BhZ2UocHZtdy1cXHUwMDNldm1hKSlcXG5pbmNsdWRlL2xpbnV4L3JtYXAuaC04OTAtXFx0XFx0cHRlX3VubWFwKHB2bXctXFx1MDAzZXB0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMzOjA0LjkwMDUyNTQ5M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTU4OTU3NDMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKk5hdmlnYXRpbmcgdGhlIEh1Z2V0bGJmcyBMYW5kc2NhcGUqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLi4uIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgZnVuY3Rpb24gb3IgbWFjcm8gb3Igd2hhdGV2ZXIgd2UncmUgaW50ZXJlc3RlZCBpbiBpcyB0dWNrZWQgYXdheSBpbiBgaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oYC4gKlRoYXQncyogdXN1YWxseSB0aGUgZmlyc3QgcGxhY2UgdG8gbG9vay4gTm93LCBrbm93aW5nIHRoZSBrZXJuZWwsIEkgYmV0IGl0J3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGlzIGl0IGVuYWJsZWQgdGhyb3VnaCBgQ09ORklHX0hVR0VUTEJfUEFHRWA/IFRoYXQncyBnb2luZyB0byBiZSB0aGUga2V5IHRvIHdoZXRoZXIgaXQncyBhY3R1YWxseSAqdGhlcmUqIGluIHRoZSBrZXJuZWwgd2UncmUgbG9va2luZyBhdC4gR290dGEgdmVyaWZ5IHRoYXQgY29uZmlnIHNldHRpbmcgYmVmb3JlIEkgZGlnIGFueSBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTYyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzM6MTYuNDkwMTAyNDIxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjAzMTg3MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0hVR0VUTEJfUEFHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTYtXFxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oOjc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgtOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzM6MTYuOTEwNDI4MDI0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNTQwNTY2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkNoZWNraW5nIHRoZSBIdWdldGxiIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqXG5cbkhtbSwganVzdCBhIG1vbWVudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHkuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IGBpc192bV9odWdldGxiX3BhZ2VgIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfSFVHRVRMQl9QQUdFYC4gVG8gY29uZmlybSwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgdGhpcy4gVGhlIGxpa2VseSBwbGFjZSBmb3IgdGhpcyBzb3J0IG9mIGRlZmluaXRpb24gd291bGQgYmUgd2l0aGluIGBpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhgLiBMZXQgbWUgdGFrZSBhIGxvb2sgdGhlcmUgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyNjAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMzoyMy45NjQ0ODgxNTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTI0NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX3ZtX2h1Z2V0bGJfcGFnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oPTE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc192bWFfaHVnZXRsYl9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgtMjItXFxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oOjIzOnN0YXRpYyBpbmxpbmUgYm9vbCBpc192bV9odWdldGxiX3BhZ2UoY29uc3Qgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTI0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzM6MjQuMDMzNDE5NDYyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjIxODA0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBvZiB0aGUgdGhvdWdodCBwcm9jZXNzIGRlc2NyaWJlZDpcblxuKipEaXZpbmcgaW50byBodWdldGxiX2lubGluZS5oKipcblxuT2theSwgdGltZSB0byBjcmFjayBvcGVuIGBpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhgLiBJJ20gZ3Vlc3NpbmcgdGhpcyBmaWxlIHByb2JhYmx5IGhvdXNlcyB0aGUgY29yZSwgcGVyZm9ybWFuY2UtY3JpdGljYWwgaW5saW5lIGZ1bmN0aW9ucyByZWxhdGVkIHRvIEh1Z2VUTEIgbWFuYWdlbWVudC4gS25vd2luZyB0aGUga2VybmVsJ3MgSHVnZVRMQiBpbXBsZW1lbnRhdGlvbiwgSSdtIGV4cGVjdGluZyBhIG1peCBvZiBwYWdlIHRhYmxlIG1hbmlwdWxhdGlvbiByb3V0aW5lcywgcG90ZW50aWFsbHkgc29tZSBsb2NrLXJlbGF0ZWQgb3BlcmF0aW9ucyBpZiB0aGV5J3JlIHBhcnRpY3VsYXJseSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUsIGFuZCBkZWZpbml0ZWx5IHNvbWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyBvciBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHRoZSBoYXJkd2FyZSdzIFRMQiBtYW5hZ2VtZW50IGZvciBodWdlIHBhZ2VzLiBNeSBpbnR1aXRpb24gc2F5cyB0aGVyZSdsbCBiZSBhIHN0cm9uZyBlbXBoYXNpcyBvbiBtaW5pbWl6aW5nIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIGhlbmNlIHRoZSBcImlubGluZVwiIGRlc2lnbmF0aW9uLiBJJ20ga2VlbiB0byBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGUgY29kZSB0byBiYWxhbmNlIHBlcmZvcm1hbmNlIHdpdGggcmVhZGFiaWxpdHkgYW5kIG1haW50YWluYWJpbGl0eSB3aXRoaW4gdGhpcyBjcml0aWNhbCBzZWN0aW9uIG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzeXN0ZW0uIExldCdzIHNlZSBpZiBteSBpbml0aWFsIGFzc3VtcHRpb25zIGhvbGQgd2F0ZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU3NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMzOjI3LjM1NTYwMTg4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuICAgMjpcXHQjaWZuZGVmIF9MSU5VWF9IVUdFVExCX0lOTElORV9IXFxuICAgMzpcXHQjZGVmaW5lIF9MSU5VWF9IVUdFVExCX0lOTElORV9IXFxuICAgNDpcXHRcXG4gICA1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbiAgIDY6XFx0XFxuICAgNzpcXHQjaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbiAgIDg6XFx0XFxuICAgOTpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1hX2h1Z2V0bGJfZmxhZ3MoY29uc3Qgdm1hX2ZsYWdzX3QgKmZsYWdzKVxcbiAgMTA6XFx0e1xcbiAgMTE6XFx0XFx0cmV0dXJuIHZtYV9mbGFnc190ZXN0KGZsYWdzLCBWTUFfSFVHRVRMQl9CSVQpO1xcbiAgMTI6XFx0fVxcbiAgMTM6XFx0XFxuICAxNDpcXHQjZWxzZVxcbiAgMTU6XFx0XFxuICAxNjpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1hX2h1Z2V0bGJfZmxhZ3MoY29uc3Qgdm1hX2ZsYWdzX3QgKmZsYWdzKVxcbiAgMTc6XFx0e1xcbiAgMTg6XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAgMTk6XFx0fVxcbiAgMjA6XFx0XFxuICAyMTpcXHQjZW5kaWZcXG4gIDIyOlxcdFxcbiAgMjM6XFx0c3RhdGljIGlubGluZSBib29sIGlzX3ZtX2h1Z2V0bGJfcGFnZShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4gIDI0OlxcdHtcXG4gIDI1OlxcdFxcdHJldHVybiBpc192bWFfaHVnZXRsYl9mbGFncyhcXHUwMDI2dm1hLVxcdTAwM2VmbGFncyk7XFxuICAyNjpcXHR9XFxuICAyNzpcXHRcXG4gIDI4OlxcdCNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMzoyNy4zNTU2OTY2NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzM1OTIzOTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBmb3IgVXNlcmZhdWx0ZmQgYW5kIEh1Z2UgUGFnZXMqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgYGlzX3ZtX2h1Z2V0bGJfcGFnZWAgaXMgYWx3YXlzIGRlZmluZWQsIHdoaWNoIGlzIGNvbnZlbmllbnQsIGJ1dCBpdCdzICplZmZlY3RpdmVseSogYSBuby1vcCBpZiBgQ09ORklHX0hVR0VUTEJfUEFHRWAgaXNuJ3Qgc2V0LCBzaW5jZSBpdCByZXR1cm5zIGBmYWxzZWAgaW4gdGhhdCBzY2VuYXJpby4gVGhpcyBtZWFucyB0aGF0IHdlIGRvbid0ICpzdHJpY3RseSogbmVlZCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgdG8gY29tcGlsZSwgYnV0IGl0J3MgbGlrZWx5IHZlcnkgcmVsZXZhbnQgZm9yIHRlc3RpbmcgdGhlIHNwZWNpZmljIGh1Z2V0bGIgZXhjbHVzaW9uIGxvZ2ljIOKAkyBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBleHBsaWNpdCBjaGVjayBgaWYgKHVzZXJmYXVsdGZkX3dwKHZtYSkgXHUwMDI2XHUwMDI2ICFpc192bV9odWdldGxiX3BhZ2Uodm1hKSlgLiBUbyAqZXhlcmNpc2UqIHRoYXQgZXhjbHVzaW9uIHBhdGgsIHdlJ2QgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBlbmFibGVkLlxuXG5UaGUgYHVucG9wdWxhdGVkX3RocF9ob2xlX3Rlc3RgIHRlc3QgY2FzZSB0aHJvd3MgYW5vdGhlciB3cmVuY2ggaW4gdGhlIHdvcmtzIHNpbmNlIGl0J3MgdXNpbmcgVEhQLXJlbGF0ZWQgZmxhZ3MgKGBNQURWX0NPTExBUFNFYCwgYE1BRFZfRE9OVE5FRURgKS4gVGhlcmVmb3JlLCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBhbHNvIGNyaXRpY2FsIGhlcmUuIFdlJ3JlIG9idmlvdXNseSBub3QgdGFsa2luZyBhYm91dCBhIHNpbXBsZSB0ZXN0LlxuXG5TbywgbGV0J3MgdGFrZSBzdG9jayBvZiB0aGUgY29uZmlncyB3ZSBuZWVkIHRvIGNvbnNpZGVyOlxuKiAgIGBVU0VSRkFVTFRGRGAg4oCTIG9idmlvdXNseSwgdGhlIGNvcmUgZmVhdHVyZSB3ZSdyZSBkZWFsaW5nIHdpdGguXG4qICAgYFBST0NfUEFHRV9NT05JVE9SYCDigJMgYSBsaXR0bGUgbGVzcyBleHBsaWNpdCwgYnV0IHBvdGVudGlhbGx5IHJlbGV2YW50IHRvIG9ic2VydmFiaWxpdHkuXG4qICAgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCDigJMga2V5IGZvciB0aGUgVEhQLXJlbGF0ZWQgdGVzdCBjYXNlIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuXG4qICAgYEhVR0VUTEJfUEFHRWAg4oCTIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoZSBodWdldGxiIGV4Y2x1c2lvbiBsb2dpYyB0byBiZSB0ZXN0ZWQuXG5cbkhtbSwgbGV0IG1lIGRvdWJsZSBjaGVjayBgTUFEVl9DT0xMQVBTRWAuIEl0J3MgcHJldHR5IHRpZ2h0bHkgY291cGxlZCB0byBUSFAsIHNvIGl0IHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuIEknbGwgdGFrZSBhIHF1aWNrIHBlZWsgYXQgYGZzL3Byb2MvdGFza19tbXUuY2AgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IG90aGVyIGRlcGVuZGVuY3kuIEFoLCBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYC4gWWVzLCB0aGF0IGZ1bmN0aW9uIGhhcyBiZWVuIG1vZGlmaWVkLCBsaWtlbHkgdG8gc3VwcG9ydCB0aGUgY2hhbmdlcy5cblxuUmlnaHQsIEkgdGhpbmsgSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIHJlbGF0aW9uc2hpcHMgaGVyZS4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTkxLCJPdXRwdXRUb2tlbnMiOjE0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMzOjQwLjcxNDkzODA0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNjEyMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0VSRkFVTFRGRFwiLFxuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJIVUdFVExCX1BBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlbWFwX3NjYW5fcHRlX2hvbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0VSRkFVTFRGRFwiLFxuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJIVUdFVExCX1BBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlbWFwX3NjYW5fcHRlX2hvbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 01:06:56 +0000 UTC FinishedAt: 2026-07-09 01:33:42 +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": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USERFAULTFD", "PROC_PAGE_MONITOR", "TRANSPARENT_HUGEPAGE", "HUGETLB_PAGE" ], "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": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USERFAULTFD", "PROC_PAGE_MONITOR", "TRANSPARENT_HUGEPAGE", "HUGETLB_PAGE" ], "series_id": "0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "pagemap_scan_pte_hole" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTRVJGQVVMVEZEJiMzNDssCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VtYXBfc2Nhbl9wdGVfaG9sZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFkMDNiMGM4NWI3ZDU0YjFjZjAzOTQ0OTAzNmU2ZDYxYWU4OWFjZTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDAxOjI4OjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL3Byb2MvdGFza19tbXUuYyBiL2ZzL3Byb2MvdGFza19tbXUuY1xuaW5kZXggZTQzMDJmY2YwMjI3ZDcuLjRiNjRiNGVkMDg0Y2VlIDEwMDY0NFxuLS0tIGEvZnMvcHJvYy90YXNrX21tdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9wcm9jL3Rhc2tfbW11LmNcbkBAIC0zMDUwLDEyICYjNDM7MzA1MCwzMyBAQCBzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIHtcbiBcdHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCA9IHdhbGstXHUwMDNlcHJpdmF0ZTtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gd2Fsay1cdTAwM2V2bWE7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBjYXRlZ29yaWVzO1xuIFx0aW50IHJldCwgZXJyO1xuIFxuLVx0aWYgKCF2bWEgfHwgIXBhZ2VtYXBfc2Nhbl9pc19pbnRlcmVzdGluZ19wYWdlKHAtXHUwMDNlY3VyX3ZtYV9jYXRlZ29yeSwgcCkpXG4mIzQzO1x0aWYgKCF2bWEpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBbiB1bnBvcHVsYXRlZCByYW5nZSB3aXRoIG5vIHBhZ2UgdGFibGUgLS0gZS5nLiBhIDJNQiBhbm9uIFRIUFxuJiM0MztcdCAqIGRyb3BwZWQgdmlhIE1BRFZfRE9OVE5FRUQsIHdoaWNoIHBhZ2VtYXBfcGFnZV9jYXRlZ29yeSgpIG5ldmVyIHNlZXNcbiYjNDM7XHQgKiAtLSByZWFkcyBhcyB3cml0dGVuIG9uIGEgdWZmZC13cCBWTUEsIG1hdGNoaW5nIHRoZSBwdGVfbm9uZSBjYXNlXG4mIzQzO1x0ICogdGhlcmUuIFJlcG9ydGluZyBpdCBhbHNvIGxldHMgdGhlIFBNX1NDQU5fV1BfTUFUQ0hJTkcgYXJtaW5nIGJlbG93XG4mIzQzO1x0ICogaW5zdGFsbCBtYXJrZXJzICh1ZmZkX3dwX3JhbmdlKCkgYWxsb2NhdGVzIHRoZSBwYWdlIHRhYmxlIHVuZGVyXG4mIzQzO1x0ICogV1BfVU5QT1BVTEFURUQpLCBzbyB0aGUgbmV4dCBzY2FuIHNlZXMgaXQgY2xlYW4gdW50aWwgcmUtd3JpdHRlbi5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIGh1Z2V0bGIgaXMgZXhjbHVkZWQ6IGFuIGFsbG9jYXRlZC1idXQtZW1wdHkgaHVnZSBlbnRyeSByZWFkcyBhc1xuJiM0MztcdCAqIG5vdC13cml0dGVuIHZpYSBwYWdlbWFwX2h1Z2V0bGJfY2F0ZWdvcnkoKSwgc28gcmVwb3J0aW5nIGFuXG4mIzQzO1x0ICogdW5hbGxvY2F0ZWQgaHVnZXRsYiBob2xlIGFzIHdyaXR0ZW4gaGVyZSB3b3VsZCBiZSBpbmNvbnNpc3RlbnRcbiYjNDM7XHQgKiB3aXRoaW4gdGhlIHNhbWUgVk1BLlxuJiM0MztcdCAqL1xuJiM0MztcdGNhdGVnb3JpZXMgPSBwLVx1MDAzZWN1cl92bWFfY2F0ZWdvcnk7XG4mIzQzO1x0aWYgKHVzZXJmYXVsdGZkX3dwKHZtYSkgXHUwMDI2XHUwMDI2ICFpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcbiYjNDM7XHRcdGNhdGVnb3JpZXMgfD0gUEFHRV9JU19XUklUVEVOO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhZ2VtYXBfc2Nhbl9pc19pbnRlcmVzdGluZ19wYWdlKGNhdGVnb3JpZXMsIHApKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdHJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQocC1cdTAwM2VjdXJfdm1hX2NhdGVnb3J5LCBwLCBhZGRyLCBcdTAwMjZlbmQpO1xuJiM0MztcdHJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQoY2F0ZWdvcmllcywgcCwgYWRkciwgXHUwMDI2ZW5kKTtcbiBcdGlmIChhZGRyID09IGVuZClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmNcbmluZGV4IGY5YmNmZjhlNzhmYWJiLi5hNGU4Y2M4YWVhNGI3YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jXG5AQCAtMjUsNiAmIzQzOzI1LDEwIEBAXG4gI2luY2x1ZGUgXCYjMzQ7a3NlbGZ0ZXN0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtodWdlcGFnZV9zZXR0aW5ncy5oXCYjMzQ7XG4gXG4mIzQzOyNpZm5kZWYgTUFEVl9DT0xMQVBTRVxuJiM0MzsjZGVmaW5lIE1BRFZfQ09MTEFQU0UgMjVcbiYjNDM7I2VuZGlmXG4mIzQzO1xuICNkZWZpbmUgUEFHRU1BUF9CSVRTX0FMTFx0XHQoUEFHRV9JU19XUEFMTE9XRUQgfCBQQUdFX0lTX1dSSVRURU4gfFx0XFxcbiBcdFx0XHRcdFx0IFBBR0VfSVNfRklMRSB8IFBBR0VfSVNfUFJFU0VOVCB8XHRcXFxuIFx0XHRcdFx0XHQgUEFHRV9JU19TV0FQUEVEIHwgUEFHRV9JU19QRk5aRVJPIHxcdFxcXG5AQCAtMTEwMiw2ICYjNDM7MTEwNiw1OSBAQCBzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF9zY2FuX3Rlc3Qodm9pZClcbiBcdG11bm1hcChtZW0sIG1lbV9zaXplKTtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIEEgMk1CIGFub24gVEhQIGRyb3BwZWQgd2l0aCBNQURWX0RPTlRORUVEIGxlYXZlcyBhIHBtZF9ub25lIGhvbGUgd2l0aCBub1xuJiM0MzsgKiBwYWdlIHRhYmxlLCB3aGljaCBwYWdlbWFwX3BhZ2VfY2F0ZWdvcnkoKSBuZXZlciBzZWVzLiBQQUdFTUFQX1NDQU4gbXVzdFxuJiM0MzsgKiBzdGlsbCByZXBvcnQgaXQgYXMgd3JpdHRlbiBvbiBhIHVmZmQtd3AgVk1BLCB2aWEgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlKCkuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF90aHBfaG9sZV90ZXN0KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRsb25nIG5wYWdlcywgd3JpdHRlbiA9IDAsIHJldCwgaTtcbiYjNDM7XHRzdHJ1Y3QgcGFnZV9yZWdpb24gcmVnaW9uc1sxNl07XG4mIzQzO1x0Y2hhciAqYXJlYSwgKm1lbTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFocGFnZV9zaXplKSB7XG4mIzQzO1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXCYjMzQ7JXMgVEhQIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1x0bnBhZ2VzID0gaHBhZ2Vfc2l6ZSAvIHBhZ2Vfc2l6ZTtcbiYjNDM7XG4mIzQzO1x0LyogR2V0IGEgUE1ELWFsaWduZWQgcmFuZ2Ugc28gdGhlIHJhbmdlIGNhbiBiZSBhIHNpbmdsZSBUSFAuICovXG4mIzQzO1x0YXJlYSA9IG1tYXAoTlVMTCwgMiAqIGhwYWdlX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4mIzQzO1x0XHQgICAgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTLCAtMSwgMCk7XG4mIzQzO1x0aWYgKGFyZWEgPT0gTUFQX0ZBSUxFRClcbiYjNDM7XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDslcyBtbWFwIGZhaWxlZFxcblwmIzM0OywgX19mdW5jX18pO1xuJiM0MztcdG1lbSA9IChjaGFyICopKCgodW5zaWduZWQgbG9uZylhcmVhICYjNDM7IGhwYWdlX3NpemUgLSAxKSBcdTAwMjYgfihocGFnZV9zaXplIC0gMSkpO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQobWVtLCAxLCBocGFnZV9zaXplKTtcbiYjNDM7XHRpZiAobWFkdmlzZShtZW0sIGhwYWdlX3NpemUsIE1BRFZfQ09MTEFQU0UpIHx8XG4mIzQzO1x0ICAgICFjaGVja19odWdlX2Fub24obWVtLCAxLCBocGFnZV9zaXplKSkge1xuJiM0MztcdFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKFwmIzM0OyVzIGNvdWxkIG5vdCBmb3JtIGEgVEhQXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4mIzQzO1x0XHRtdW5tYXAoYXJlYSwgMiAqIGhwYWdlX3NpemUpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0d3BfaW5pdChtZW0sIGhwYWdlX3NpemUpO1xuJiM0MztcbiYjNDM7XHQvKiBEcm9wIHRoZSB3aG9sZSBQTUQ6IGl0IGlzIGNsZWFyZWQgdG8gYSBwbWRfbm9uZSBob2xlLiAqL1xuJiM0MztcdGlmIChtYWR2aXNlKG1lbSwgaHBhZ2Vfc2l6ZSwgTUFEVl9ET05UTkVFRCkpXG4mIzQzO1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7JXMgTUFEVl9ET05UTkVFRCBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcGFnZW1hcF9pb2N0bChtZW0sIGhwYWdlX3NpemUsIHJlZ2lvbnMsIDE2LCAwLCAwLFxuJiM0MztcdFx0XHQgICAgUEFHRV9JU19XUklUVEVOLCAwLCAwLCBQQUdFX0lTX1dSSVRURU4pO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7JXMgc2NhbiBmYWlsZWRcXG5cJiMzNDssIF9fZnVuY19fKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyByZXQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0d3JpdHRlbiAmIzQzOz0gTEVOKHJlZ2lvbnNbaV0pO1xuJiM0MztcbiYjNDM7XHRrc2Z0X3Rlc3RfcmVzdWx0KHdyaXR0ZW4gPT0gbnBhZ2VzLFxuJiM0MztcdFx0XHQgXCYjMzQ7JXMgcG1kLWhvbGUgcmVwb3J0ZWQgd3JpdHRlbiAoJWxkIG9mICVsZClcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBfX2Z1bmNfXywgd3JpdHRlbiwgbnBhZ2VzKTtcbiYjNDM7XG4mIzQzO1x0d3BfZnJlZShtZW0sIGhwYWdlX3NpemUpO1xuJiM0MztcdG11bm1hcChhcmVhLCAyICogaHBhZ2Vfc2l6ZSk7XG4mIzQzO31cbiYjNDM7XG4gaW50IHNhbml0eV90ZXN0cyh2b2lkKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1fc2l6ZSwgdmVjX3NpemU7XG5AQCAtMTYxMCw3ICYjNDM7MTY2Nyw3IEBAIGludCBtYWluKGludCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdCg0KSlcbiBcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7SHVnZVRMQiB0ZXN0IHdpbGwgYmUgc2tpcHBlZFxcblwmIzM0Oyk7XG4gXG4tXHRrc2Z0X3NldF9wbGFuKDExOCk7XG4mIzQzO1x0a3NmdF9zZXRfcGxhbigxMTkpO1xuIFxuIFx0cGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTtcbiBcdGhwYWdlX3NpemUgPSByZWFkX3BtZF9wYWdlc2l6ZSgpO1xuQEAgLTE3OTAsNiAmIzQzOzE4NDcsNyBAQCBpbnQgbWFpbihpbnQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0LyogMTguIFVucG9wdWxhdGVkIHB0ZSBzY2FuLXBhdGggY29uc2lzdGVuY3kgKi9cbiBcdHVucG9wdWxhdGVkX3NjYW5fdGVzdCgpO1xuJiM0MztcdHVucG9wdWxhdGVkX3RocF9ob2xlX3Rlc3QoKTtcbiBcbiBcdGNsb3NlKHBhZ2VtYXBfZmQpO1xuIFx0a3NmdF9maW5pc2hlZCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTRVJGQVVMVEZEJiMzNDssCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VtYXBfc2Nhbl9wdGVfaG9sZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWQwM2IwYzg1YjdkNTRiMWNmMDM5NDQ5MDM2ZTZkNjFhZTg5YWNlNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMDE6Mjg6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9wcm9jL3Rhc2tfbW11LmMKaW5kZXggZTQzMDJmY2YwMjI3ZDcuLjRiNjRiNGVkMDg0Y2VlIDEwMDY0NAotLS0gYS9mcy9wcm9jL3Rhc2tfbW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvcHJvYy90YXNrX21tdS5jCkBAIC0zMDUwLDEyICYjNDM7MzA1MCwzMyBAQCBzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLAogewogCXN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCA9IHdhbGstJmd0O3ByaXZhdGU7CiAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB3YWxrLSZndDt2bWE7CiYjNDM7CXVuc2lnbmVkIGxvbmcgY2F0ZWdvcmllczsKIAlpbnQgcmV0LCBlcnI7CiAKLQlpZiAoIXZtYSB8fCAhcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UocC0mZ3Q7Y3VyX3ZtYV9jYXRlZ29yeSwgcCkpCiYjNDM7CWlmICghdm1hKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEFuIHVucG9wdWxhdGVkIHJhbmdlIHdpdGggbm8gcGFnZSB0YWJsZSAtLSBlLmcuIGEgMk1CIGFub24gVEhQCiYjNDM7CSAqIGRyb3BwZWQgdmlhIE1BRFZfRE9OVE5FRUQsIHdoaWNoIHBhZ2VtYXBfcGFnZV9jYXRlZ29yeSgpIG5ldmVyIHNlZXMKJiM0MzsJICogLS0gcmVhZHMgYXMgd3JpdHRlbiBvbiBhIHVmZmQtd3AgVk1BLCBtYXRjaGluZyB0aGUgcHRlX25vbmUgY2FzZQomIzQzOwkgKiB0aGVyZS4gUmVwb3J0aW5nIGl0IGFsc28gbGV0cyB0aGUgUE1fU0NBTl9XUF9NQVRDSElORyBhcm1pbmcgYmVsb3cKJiM0MzsJICogaW5zdGFsbCBtYXJrZXJzICh1ZmZkX3dwX3JhbmdlKCkgYWxsb2NhdGVzIHRoZSBwYWdlIHRhYmxlIHVuZGVyCiYjNDM7CSAqIFdQX1VOUE9QVUxBVEVEKSwgc28gdGhlIG5leHQgc2NhbiBzZWVzIGl0IGNsZWFuIHVudGlsIHJlLXdyaXR0ZW4uCiYjNDM7CSAqCiYjNDM7CSAqIGh1Z2V0bGIgaXMgZXhjbHVkZWQ6IGFuIGFsbG9jYXRlZC1idXQtZW1wdHkgaHVnZSBlbnRyeSByZWFkcyBhcwomIzQzOwkgKiBub3Qtd3JpdHRlbiB2aWEgcGFnZW1hcF9odWdldGxiX2NhdGVnb3J5KCksIHNvIHJlcG9ydGluZyBhbgomIzQzOwkgKiB1bmFsbG9jYXRlZCBodWdldGxiIGhvbGUgYXMgd3JpdHRlbiBoZXJlIHdvdWxkIGJlIGluY29uc2lzdGVudAomIzQzOwkgKiB3aXRoaW4gdGhlIHNhbWUgVk1BLgomIzQzOwkgKi8KJiM0MzsJY2F0ZWdvcmllcyA9IHAtJmd0O2N1cl92bWFfY2F0ZWdvcnk7CiYjNDM7CWlmICh1c2VyZmF1bHRmZF93cCh2bWEpICZhbXA7JmFtcDsgIWlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKQomIzQzOwkJY2F0ZWdvcmllcyB8PSBQQUdFX0lTX1dSSVRURU47CiYjNDM7CiYjNDM7CWlmICghcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UoY2F0ZWdvcmllcywgcCkpCiAJCXJldHVybiAwOwogCi0JcmV0ID0gcGFnZW1hcF9zY2FuX291dHB1dChwLSZndDtjdXJfdm1hX2NhdGVnb3J5LCBwLCBhZGRyLCAmYW1wO2VuZCk7CiYjNDM7CXJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQoY2F0ZWdvcmllcywgcCwgYWRkciwgJmFtcDtlbmQpOwogCWlmIChhZGRyID09IGVuZCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jCmluZGV4IGY5YmNmZjhlNzhmYWJiLi5hNGU4Y2M4YWVhNGI3YyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuYwpAQCAtMjUsNiAmIzQzOzI1LDEwIEBACiAjaW5jbHVkZSAmIzM0O2tzZWxmdGVzdC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aHVnZXBhZ2Vfc2V0dGluZ3MuaCYjMzQ7CiAKJiM0MzsjaWZuZGVmIE1BRFZfQ09MTEFQU0UKJiM0MzsjZGVmaW5lIE1BRFZfQ09MTEFQU0UgMjUKJiM0MzsjZW5kaWYKJiM0MzsKICNkZWZpbmUgUEFHRU1BUF9CSVRTX0FMTAkJKFBBR0VfSVNfV1BBTExPV0VEIHwgUEFHRV9JU19XUklUVEVOIHwJXAogCQkJCQkgUEFHRV9JU19GSUxFIHwgUEFHRV9JU19QUkVTRU5UIHwJXAogCQkJCQkgUEFHRV9JU19TV0FQUEVEIHwgUEFHRV9JU19QRk5aRVJPIHwJXApAQCAtMTEwMiw2ICYjNDM7MTEwNiw1OSBAQCBzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF9zY2FuX3Rlc3Qodm9pZCkKIAltdW5tYXAobWVtLCBtZW1fc2l6ZSk7CiB9CiAKJiM0MzsvKgomIzQzOyAqIEEgMk1CIGFub24gVEhQIGRyb3BwZWQgd2l0aCBNQURWX0RPTlRORUVEIGxlYXZlcyBhIHBtZF9ub25lIGhvbGUgd2l0aCBubwomIzQzOyAqIHBhZ2UgdGFibGUsIHdoaWNoIHBhZ2VtYXBfcGFnZV9jYXRlZ29yeSgpIG5ldmVyIHNlZXMuIFBBR0VNQVBfU0NBTiBtdXN0CiYjNDM7ICogc3RpbGwgcmVwb3J0IGl0IGFzIHdyaXR0ZW4gb24gYSB1ZmZkLXdwIFZNQSwgdmlhIHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSgpLgomIzQzOyAqLwomIzQzO3N0YXRpYyB2b2lkIHVucG9wdWxhdGVkX3RocF9ob2xlX3Rlc3Qodm9pZCkKJiM0Mzt7CiYjNDM7CWxvbmcgbnBhZ2VzLCB3cml0dGVuID0gMCwgcmV0LCBpOwomIzQzOwlzdHJ1Y3QgcGFnZV9yZWdpb24gcmVnaW9uc1sxNl07CiYjNDM7CWNoYXIgKmFyZWEsICptZW07CiYjNDM7CiYjNDM7CWlmICghaHBhZ2Vfc2l6ZSkgewomIzQzOwkJa3NmdF90ZXN0X3Jlc3VsdF9za2lwKCYjMzQ7JXMgVEhQIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7LCBfX2Z1bmNfXyk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsJbnBhZ2VzID0gaHBhZ2Vfc2l6ZSAvIHBhZ2Vfc2l6ZTsKJiM0MzsKJiM0MzsJLyogR2V0IGEgUE1ELWFsaWduZWQgcmFuZ2Ugc28gdGhlIHJhbmdlIGNhbiBiZSBhIHNpbmdsZSBUSFAuICovCiYjNDM7CWFyZWEgPSBtbWFwKE5VTEwsIDIgKiBocGFnZV9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAomIzQzOwkJICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUywgLTEsIDApOwomIzQzOwlpZiAoYXJlYSA9PSBNQVBfRkFJTEVEKQomIzQzOwkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7JXMgbW1hcCBmYWlsZWRcbiYjMzQ7LCBfX2Z1bmNfXyk7CiYjNDM7CW1lbSA9IChjaGFyICopKCgodW5zaWduZWQgbG9uZylhcmVhICYjNDM7IGhwYWdlX3NpemUgLSAxKSAmYW1wOyB+KGhwYWdlX3NpemUgLSAxKSk7CiYjNDM7CiYjNDM7CW1lbXNldChtZW0sIDEsIGhwYWdlX3NpemUpOwomIzQzOwlpZiAobWFkdmlzZShtZW0sIGhwYWdlX3NpemUsIE1BRFZfQ09MTEFQU0UpIHx8CiYjNDM7CSAgICAhY2hlY2tfaHVnZV9hbm9uKG1lbSwgMSwgaHBhZ2Vfc2l6ZSkpIHsKJiM0MzsJCWtzZnRfdGVzdF9yZXN1bHRfc2tpcCgmIzM0OyVzIGNvdWxkIG5vdCBmb3JtIGEgVEhQXG4mIzM0OywgX19mdW5jX18pOwomIzQzOwkJbXVubWFwKGFyZWEsIDIgKiBocGFnZV9zaXplKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwl3cF9pbml0KG1lbSwgaHBhZ2Vfc2l6ZSk7CiYjNDM7CiYjNDM7CS8qIERyb3AgdGhlIHdob2xlIFBNRDogaXQgaXMgY2xlYXJlZCB0byBhIHBtZF9ub25lIGhvbGUuICovCiYjNDM7CWlmIChtYWR2aXNlKG1lbSwgaHBhZ2Vfc2l6ZSwgTUFEVl9ET05UTkVFRCkpCiYjNDM7CQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDslcyBNQURWX0RPTlRORUVEIGZhaWxlZFxuJiMzNDssIF9fZnVuY19fKTsKJiM0MzsKJiM0MzsJcmV0ID0gcGFnZW1hcF9pb2N0bChtZW0sIGhwYWdlX3NpemUsIHJlZ2lvbnMsIDE2LCAwLCAwLAomIzQzOwkJCSAgICBQQUdFX0lTX1dSSVRURU4sIDAsIDAsIFBBR0VfSVNfV1JJVFRFTik7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7JXMgc2NhbiBmYWlsZWRcbiYjMzQ7LCBfX2Z1bmNfXyk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyByZXQ7IGkmIzQzOyYjNDM7KQomIzQzOwkJd3JpdHRlbiAmIzQzOz0gTEVOKHJlZ2lvbnNbaV0pOwomIzQzOwomIzQzOwlrc2Z0X3Rlc3RfcmVzdWx0KHdyaXR0ZW4gPT0gbnBhZ2VzLAomIzQzOwkJCSAmIzM0OyVzIHBtZC1ob2xlIHJlcG9ydGVkIHdyaXR0ZW4gKCVsZCBvZiAlbGQpXG4mIzM0OywKJiM0MzsJCQkgX19mdW5jX18sIHdyaXR0ZW4sIG5wYWdlcyk7CiYjNDM7CiYjNDM7CXdwX2ZyZWUobWVtLCBocGFnZV9zaXplKTsKJiM0MzsJbXVubWFwKGFyZWEsIDIgKiBocGFnZV9zaXplKTsKJiM0Mzt9CiYjNDM7CiBpbnQgc2FuaXR5X3Rlc3RzKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyBsb25nIG1lbV9zaXplLCB2ZWNfc2l6ZTsKQEAgLTE2MTAsNyAmIzQzOzE2NjcsNyBAQCBpbnQgbWFpbihpbnQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgYXJnYywgY2hhciAqYXJndltdKQogCWlmICghaHVnZXRsYl9zZXR1cF9kZWZhdWx0KDQpKQogCQlrc2Z0X3ByaW50X21zZygmIzM0O0h1Z2VUTEIgdGVzdCB3aWxsIGJlIHNraXBwZWRcbiYjMzQ7KTsKIAotCWtzZnRfc2V0X3BsYW4oMTE4KTsKJiM0MzsJa3NmdF9zZXRfcGxhbigxMTkpOwogCiAJcGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKIAlocGFnZV9zaXplID0gcmVhZF9wbWRfcGFnZXNpemUoKTsKQEAgLTE3OTAsNiAmIzQzOzE4NDcsNyBAQCBpbnQgbWFpbihpbnQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgYXJnYywgY2hhciAqYXJndltdKQogCiAJLyogMTguIFVucG9wdWxhdGVkIHB0ZSBzY2FuLXBhdGggY29uc2lzdGVuY3kgKi8KIAl1bnBvcHVsYXRlZF9zY2FuX3Rlc3QoKTsKJiM0MzsJdW5wb3B1bGF0ZWRfdGhwX2hvbGVfdGVzdCgpOwogCiAJY2xvc2UocGFnZW1hcF9mZCk7CiAJa3NmdF9maW5pc2hlZCgpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYm90aCBgZnMvcHJvYy90YXNrX21tdS5jYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhbnl0aGluZyB0aGF0IGludGVyYWN0cyB3aXRoIGBwcm9jZnNgIGFuZCBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGlzIHdvcnRoIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgd2hlbiBpdCYjMzk7cyBiZWluZyBtb2RpZmllZC4KClNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpbiBgZnMvcHJvYy90YXNrX21tdS5jYCBpcyB3aXRoaW4gYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAgZnVuY3Rpb24gaXMga2V5LiBGcm9tIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgdGhlIHBhdGNoIG1vZGlmaWVzIGhvdyB0aGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggdW5wb3B1bGF0ZWQgcmFuZ2VzLCBvciAmIzM0O2hvbGVzLCYjMzQ7IHdpdGhpbiBWaXJ0dWFsIE1lbW9yeSBBcmVhcyAoVk1BcykgdGhhdCBhcmUgd3JpdGUtcHJvdGVjdGVkIHRocm91Z2ggdXNlcmZhdWx0ZmQuIFRoZSBjb3JlIGxvZ2ljIGlzIHRoZSBhZGRpdGlvbiBvZiBgUEFHRV9JU19XUklUVEVOYCB0byB0aGUgYGNhdGVnb3JpZXNgIGlmIGB1c2VyZmF1bHRmZF93cCh2bWEpYCBpcyB0cnVlIGFuZCBpdCYjMzk7cyBub3QgYSBodWdldGxiIHBhZ2UuCgpMZXQmIzM5O3MgZGl2ZSBkZWVwZXIgYW5kIGxvb2sgYXQgdGhlIGNvZGUsIHBhcnRpY3VsYXJseSB0aGF0IGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIGZ1bmN0aW9uIHNpZ25hdHVyZS4KYGBgYwpzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVwdGgsIHN0cnVjdCBtbV93YWxrICp3YWxrKQpgYGAKClJpZ2h0LCBzbyBpdCYjMzk7cyBjbGVhcmx5IHBhcnQgb2YgdGhlIHBhZ2VtYXAgc2NhbiBmdW5jdGlvbmFsaXR5LCBxdWl0ZSBsaWtlbHkgYWNjZXNzZWQgdGhyb3VnaCBhbiBgaW9jdGwoUEFHRU1BUF9TQ0FOKWAuIFNpbmNlIHRoaXMgaXMgYSBjb3JlIG1tL3Byb2NmcyBhcmVhLCB0aGlzIG1vZGlmaWNhdGlvbiBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJdCYjMzk7cyBwcmltZSB0ZXJyaXRvcnkgZm9yIGZ1enppbmcuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZvY3VzIHN5bWJvbHMuIENsZWFybHksIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIGlzIGEgcHJpbWFyeSBmb2N1cy4gSSYjMzk7bGwgYWxzbyB3YW50IHRvIGxvb2sgZm9yIHRoZSBhc3NvY2lhdGVkIGlvY3RsIGhhbmRsZXIsIHByb2JhYmx5IG5hbWVkIHNvbWV0aGluZyBsaWtlIGBkb19wYWdlbWFwX3NjYW5gIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbmQgbG9jYXRlIHRoZSBkZWZpbml0aW9uIGluIGBmcy9wcm9jL3Rhc2tfbW11LmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VtYXBfc2Nhbl9wdGVfaG9sZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Byb2MvdGFza19tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmM9MzA0MT1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2hvbGVfd3Aoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMwNDctXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzA0ODpzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuZnMvcHJvYy90YXNrX21tdS5jLTMwNDktXHRcdFx0XHQgaW50IGRlcHRoLCBzdHJ1Y3QgbW1fd2FsayAqd2Fsaylcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MzA5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIHBhZ2VtYXBfc2Nhbl9vcHMgPSB7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMwOTgtXHQucG1kX2VudHJ5ID0gcGFnZW1hcF9zY2FuX3BtZF9lbnRyeSxcbmZzL3Byb2MvdGFza19tbXUuYzozMDk5Olx0LnB0ZV9ob2xlID0gcGFnZW1hcF9zY2FuX3B0ZV9ob2xlLFxuZnMvcHJvYy90YXNrX21tdS5jLTMxMDAtXHQuaHVnZXRsYl9lbnRyeSA9IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2VudHJ5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NjMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRmluZGluZyB0aGUgSU9DVEwgSGFuZGxlcjogQSBRdWljayBTZWFyY2gqKgoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyBwcmV0dHkgY2xlYXI6IEkgbmVlZCB0byBsb2NhdGUgdGhlIGlvY3RsIGhhbmRsZXIuIEl04oCZcyB0aGUgZ2F0ZWtlZXBlciwgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgZ29pbmcgdG8gaW50ZXJwcmV0IGFuZCBkaXNwYXRjaCB0aGUgc3BlY2lmaWMgY29tbWFuZHMgSSYjMzk7bSB0aHJvd2luZyBhdCB0aGlzIGRldmljZSBvciBkcml2ZXIuIFdpdGhvdXQgaXQsIEkmIzM5O20ganVzdCBzaG91dGluZyBpbnRvIHRoZSB2b2lkLiBUaW1lIHRvIGdldCBkaWdnaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyBhbmQgdGVjaG5pcXVlcywgcHJvYmFibHkgc3RhcnRpbmcgd2l0aCBhIHF1aWNrIGdyZXAgb3Igc2ltaWxhciBzZWFyY2guIEkgbmVlZCB0byB6ZXJvIGluIG9uIHdoZXJlIHRoZSByZWxldmFudCBjb2RlIHJlc2lkZXMsIGFuZCB3aGVyZSB0aGUgaW9jdGwgcHJvY2Vzc2luZyBpcyBsaWtlbHkgaGFwcGVuaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBzZWFyY2ggdHVybnMgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZW1hcF9zY2FuX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Byb2MvdGFza19tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmM9MzA0OD1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0zMDk1LVxuZnMvcHJvYy90YXNrX21tdS5jOjMwOTY6c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwYWdlbWFwX3NjYW5fb3BzID0ge1xuZnMvcHJvYy90YXNrX21tdS5jLTMwOTctXHQudGVzdF93YWxrID0gcGFnZW1hcF9zY2FuX3Rlc3Rfd2Fsayxcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MzIwMD1zdGF0aWMgbG9uZyBkb19wYWdlbWFwX3NjYW4oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgdWFyZylcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzIzOC1cdFx0cmV0ID0gd2Fsa19wYWdlX3JhbmdlKG1tLCB3YWxrX3N0YXJ0LCBwLmFyZy5lbmQsXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzIzOTpcdFx0XHRcdCAgICAgIFx1MDAyNnBhZ2VtYXBfc2Nhbl9vcHMsIFx1MDAyNnApO1xuZnMvcHJvYy90YXNrX21tdS5jLTMyNDAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyOQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIGBkb19wYWdlbWFwX3NjYW5gIElPQ1RMIEhhbmRsZXIqKgoKQWxyaWdodCwgSSYjMzk7bSB0cmFjaW5nIHRoaXMgYGlvY3RsYCBoYW5kbGVyLCBgZG9fcGFnZW1hcF9zY2FuYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2VlIGlmIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgY29tZSBpbnRvIHBsYXkgaGVyZSwgcmlnaHQ/IFRoaXMgbG9va3MgbGlrZSBhIGRlZXAgZGl2ZSBpbnRvIG1lbW9yeSBtYW5hZ2VtZW50LgoKSG1tLCB0aGUgcHJlc2VuY2Ugb2YgYHVzZXJmYXVsdGZkX3dwKHZtYSlgIGltbWVkaWF0ZWx5IHNjcmVhbXMgYENPTkZJR19VU0VSRkFVTFRGRGAgdG8gbWUuIEdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkga25vdyB0aGF0IGNvbmZpZyBwcmV0dHkgd2VsbCDigJMgaXQmIzM5O3MgY3J1Y2lhbCBmb3IgdXNlcnNwYWNlIGZhdWx0IGhhbmRsaW5nLiAKCk5vdywgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbnRvIGBmcy9wcm9jL3Rhc2tfbW11LmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZG9fcGFnZW1hcF9zY2FuYCB0aGVyZSwgYW5kIHByb2JhYmx5IHNvbWUgcmVsYXRlZCBjb2RlLCBsaWtlbHkgaW5jbHVkaW5nIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgbWVhdCBvZiBob3cgdGhpcyBoYW5kbGVyIGFjdHVhbGx5IGludGVyYWN0cyB3aXRoIHBhZ2UgdGFibGVzLCBtZW1vcnkgcmVnaW9ucywgYW5kIHBvdGVudGlhbCBob2xlcyB3aXRoaW4gdGhlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IHNjZW5hcmlvcywgcGVyaGFwcyBkZWFsaW5nIHdpdGggc2hhcmVkIG1lbW9yeSwgY29weS1vbi13cml0ZSwgYW5kIG1heWJlIGV2ZW4gTlVNQSBjb25zaWRlcmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19wYWdlbWFwX3NjYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jPTMxNzM9c3RhdGljIGxvbmcgcGFnZW1hcF9zY2FuX2ZsdXNoX2J1ZmZlcihzdHJ1Y3QgcGFnZW1hcF9zY2FuX3ByaXZhdGUgKnApXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMxOTktXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzIwMDpzdGF0aWMgbG9uZyBkb19wYWdlbWFwX3NjYW4oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgdWFyZylcbmZzL3Byb2MvdGFza19tbXUuYy0zMjAxLXtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MzI3Mz1zdGF0aWMgbG9uZyBkb19wYWdlbWFwX2NtZChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCxcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzI3OS1cdGNhc2UgUEFHRU1BUF9TQ0FOOlxuZnMvcHJvYy90YXNrX21tdS5jOjMyODA6XHRcdHJldHVybiBkb19wYWdlbWFwX3NjYW4obW0sIGFyZyk7XG5mcy9wcm9jL3Rhc2tfbW11LmMtMzI4MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjUxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqQXNzZXNzaW5nIHRoZSBOZWNlc3NpdHkgb2YgQ09ORklHX1VTRVJGQVVMVEZEKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcsIGFuZCB0aGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogZG8gd2UgKnJlYWxseSogbmVlZCBgQ09ORklHX1VTRVJGQVVMVEZEYD8gSXQmIzM5O3MgYSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byB1c2VyLXNwYWNlIGZhdWx0IGhhbmRsaW5nLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyBhY3R1YWxseSByZWxldmFudCBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBUaGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBhcmUgc3Vic3RhbnRpYWwsIGZyb20gcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgdG8gc2VjdXJpdHkgcmlza3MsIHNvIGZpZ3VyaW5nIG91dCBpZiBpdCYjMzk7cyByZXF1aXJlZCBpcyBwYXJhbW91bnQgYmVmb3JlIHByb2NlZWRpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGlmIHRoaXMgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgb3Igc29tZXRoaW5nIHRoYXQgY2FuIGJlIHNhZmVseSBkaXNhYmxlZCBvciBvbWl0dGVkLiBUaGUgZ29hbCBpcyB0byBrZWVwIHRoZSBzeXN0ZW0gbGVhbiBhbmQgZWZmaWNpZW50IHVubGVzcyB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgdHJ1bHkgaW5kaXNwZW5zYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VVNFUkZBVUxURkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL3Rhc2tfbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jPTExNjY9c3RhdGljIHZvaWQgc2hvd19zbWFwX3ZtYV9mbGFncyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMjM2LSNlbmRpZiAvKiBDT05GSUdfQVJDSF9IQVNfUEtFWVMgKi9cbmZzL3Byb2MvdGFza19tbXUuYzoxMjM3OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIzOC1cdFx0W2lsb2cyKFZNX1VGRkRfTUlOT1IpXVx0PSBcJiMzNDt1aVwmIzM0OyxcbmZzL3Byb2MvdGFza19tbXUuYzoxMjM5OiNlbmRpZiAvKiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SICovXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI0MC0jaWZkZWYgQ09ORklHX0FSQ0hfSEFTX1VTRVJfU0hBRE9XX1NUQUNLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNzAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUga25vd2xlZGdlYWJsZSBpbiB0aGUgZmllbGQ6CgoqKkxvY2F0aW5nIHRoZSBIZWFydCBvZiB0aGUgTWF0dGVyOiBFeGFtaW5pbmcgYHVzZXJmYXVsdGZkX3dwYCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYHVzZXJmYXVsdGZkX3dwYCBjb25zdHJ1Y3QuIE15IGZpcnN0IHRob3VnaHQgaXM6IHdoZXJlICppcyogdGhpcyB0aGluZyBkZWZpbmVkPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgbG9jYXRpb24gd2l0aGluIHRoZSBjb2RlYmFzZS4gS25vd2luZyBpdHMgZGVmaW5pdGlvbiB3aWxsIGdpdmUgbWUgYSBjcml0aWNhbCBmb3VuZGF0aW9uIGZvciBhbmFseXppbmcgaXRzIHB1cnBvc2UsIGludGVyYWN0aW9ucywgYW5kIHBvdGVudGlhbCBpc3N1ZXMuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGludmVzdGlnYXRpb24sIHdoZXRoZXIgaXQmIzM5O3MgdW5kZXJzdGFuZGluZyBhIGJ1ZyByZXBvcnQsIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIG9yIHNpbXBseSBkZWVwZW5pbmcgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZS4gTG9jYXRpbmcgdGhlIGRlZmluaXRpb24gd2lsbCBiZSBjcnVjaWFsIGJlZm9yZSBJIGNhbiBkbyBhbnkga2luZCBvZiBjb2RlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2VyZmF1bHRmZF93cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbW1faW5saW5lLmg9NTU1PXN0YXRpYyBpbmxpbmUgcHRlX21hcmtlciBjb3B5X3B0ZV9tYXJrZXIoXG4tLVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01NjItXHQvKiBPbmx5IGNvcHkgUFRFIG1hcmtlcnMgaWYgVUZGRCByZWdpc3RlciBtYXRjaGVzLiAqL1xuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaDo1NjM6XHRpZiAoKHNyY20gXHUwMDI2IFBURV9NQVJLRVJfVUZGRF9XUCkgXHUwMDI2XHUwMDI2IHVzZXJmYXVsdGZkX3dwKGRzdF92bWEpKVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01NjQtXHRcdGRzdG0gfD0gUFRFX01BUktFUl9VRkZEX1dQO1xuLS1cbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg9NTgyPXB0ZV9pbnN0YWxsX3VmZmRfd3BfaWZfbmVlZGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01OTMtXHQvKlxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaDo1OTQ6XHQgKiBOT1RFOiB1c2VyZmF1bHRmZF93cF91bnBvcHVsYXRlZCgpIGRvZXNuJiMzOTt0IG5lZWQgdGhpcyB3aG9sZVxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaC01OTUtXHQgKiB0aGluZywgYmVjYXVzZSB3aGVuIHphcHBpbmcgZWl0aGVyIGl0IG1lYW5zIGl0JiMzOTtzIGRyb3BwaW5nIHRoZVxuLS1cbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmgtNTk4LVx0ICovXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oOjU5OTpcdGlmICh2bWFfaXNfYW5vbnltb3VzKHZtYSkgfHwgIXVzZXJmYXVsdGZkX3dwKHZtYSkpXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTYwMC1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTE5Nj1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfbWlzc2luZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yMDAtXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyMDE6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjAyLXtcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yMTE9c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3B0ZV93cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yMTMte1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjE0Olx0cmV0dXJuIHVzZXJmYXVsdGZkX3dwKHZtYSkgXHUwMDI2XHUwMDI2IHB0ZV91ZmZkX3dwKHB0ZSk7XG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yMTUtfVxuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTIxNz1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfaHVnZV9wbWRfd3Aoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjE5LXtcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjIyMDpcdHJldHVybiB1c2VyZmF1bHRmZF93cCh2bWEpIFx1MDAyNlx1MDAyNiBwbWRfdWZmZF93cChwbWQpO1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjIxLX1cbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yNTI9ZXh0ZXJuIHZvaWQgdXNlcmZhdWx0ZmRfdW5tYXBfY29tcGxldGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yNTMtXHRcdFx0XHQgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdWYpO1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjU0OmV4dGVybiBib29sIHVzZXJmYXVsdGZkX3dwX3VucG9wdWxhdGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTtcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjI1NTpleHRlcm4gYm9vbCB1c2VyZmF1bHRmZF93cF9hc3luYyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7XG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yNTYtXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyNTc6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwX3VzZV9tYXJrZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjU4LXtcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI1OS1cdC8qIE9ubHkgd3ItcHJvdGVjdCBtb2RlIHVzZXMgcHRlIG1hcmtlcnMgKi9cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjI2MDpcdGlmICghdXNlcmZhdWx0ZmRfd3Aodm1hKSlcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI2MS1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI3MC1cdCAqL1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjcxOlx0cmV0dXJuIHVzZXJmYXVsdGZkX3dwX3VucG9wdWxhdGVkKHZtYSk7XG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yNzItfVxuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTMxNj1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfbWlzc2luZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0zMjAtXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDozMjE6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMzIyLXtcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0zOTg9c3RhdGljIGlubGluZSBib29sIHVmZmRfZGlzYWJsZV9mYXVsdF9hcm91bmQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDAyLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6NDAzOnN0YXRpYyBpbmxpbmUgYm9vbCB1c2VyZmF1bHRmZF93cF91bnBvcHVsYXRlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQwNC17XG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDA3LVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6NDA4OnN0YXRpYyBpbmxpbmUgYm9vbCB1c2VyZmF1bHRmZF93cF9hc3luYyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQwOS17XG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg9NDEzPXN0YXRpYyBpbmxpbmUgYm9vbCB2bWFfaGFzX3VmZmRfd2l0aG91dF9ldmVudF9yZW1hcChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC00MTctXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDo0MTg6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwX3VzZV9tYXJrZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDE5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc0NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHVzZXJmYXVsdGZkX2suaCoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcGF0aCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfVVNFUkZBVUxURkRgIGlzLCBpbiBmYWN0LCBlbmFibGVkLiBJdCYjMzk7cyBhbG1vc3Qgc2Vjb25kIG5hdHVyZSB0byBzdGFydCBoZXJlIHdoZW4gZGVhbGluZyB3aXRoIFVGRkQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGtlcm5lbCBpcyBldmVuIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aGlzLiBUaW1lIHRvIGNyYWNrIG9wZW4gYGluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oYCBhbmQgY29uZmlybSB0aGF0IHRoZSBwcmVyZXF1aXNpdGUgb3B0aW9ucyBhcmUgc2V0LiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgaWYgdGhlIGZlYXR1cmUgaXMgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoZWNrLCBidXQgYSBuZWNlc3Nhcnkgb25lIHRvIGVuc3VyZSBJJiMzOTttIGJhcmtpbmcgdXAgdGhlIHJpZ2h0IHRyZWUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGhlYWRlciBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19VU0VSRkFVTFRGRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTExLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MTI6I2lmZGVmIENPTkZJR19VU0VSRkFVTFRGRFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMTMtXG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg9Mjc4PXN0YXRpYyBpbmxpbmUgYm9vbCBwdGVfc3dwX3VmZmRfd3BfYW55KHB0ZV90IHB0ZSlcbi0tXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yOTMtfVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6Mjk0OiNlbHNlIC8qIENPTkZJR19VU0VSRkFVTFRGRCAqL1xuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjk1LVxuLS1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTQyNz1zdGF0aWMgaW5saW5lIGJvb2wgcHRlX3N3cF91ZmZkX3dwX2FueShwdGVfdCBwdGUpXG4tLVxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDMwLX1cbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjQzMTojZW5kaWYgLyogQ09ORklHX1VTRVJGQVVMVEZEICovXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC00MzItI2VuZGlmIC8qIF9MSU5VWF9VU0VSRkFVTFRGRF9LX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0cywgcHV0dGluZyBteXNlbGYgaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBrZXJuZWwgY29kZSBpbnZlc3RpZ2F0aW9uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHdlIG5lZWQgYENPTkZJR19VU0VSRkFVTFRGRGAuIFRoYXQmIzM5O3MgYSBnaXZlbiwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGlzIGVuYWJsZWQuIE5vdywgd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGBQQUdFTUFQX1NDQU5gPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBkZXBlbmRlbnQgb24gYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgbWFrZXMgaXQgdGljay4gTGV0IG1lIGZpbmQgd2hlcmUgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gSSBzaG91bGQgc3RhcnQgd2l0aCBgZnMvcHJvYy90YXNrX21tdS5jYCwgc2luY2UgdGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBwYWdlbWFwLXJlbGF0ZWQgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBgZG9fcGFnZW1hcF9zY2FuYCBhbmQgYGRvX3BhZ2VtYXBfY21kYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYWJvdXQgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIGxvb2sgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fcGFnZW1hcF9zY2FuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Byb2MvdGFza19tbXUuYz0zMTczPXN0YXRpYyBsb25nIHBhZ2VtYXBfc2Nhbl9mbHVzaF9idWZmZXIoc3RydWN0IHBhZ2VtYXBfc2Nhbl9wcml2YXRlICpwKVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0zMTk5LVxuZnMvcHJvYy90YXNrX21tdS5jOjMyMDA6c3RhdGljIGxvbmcgZG9fcGFnZW1hcF9zY2FuKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHVhcmcpXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzIwMS17XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTMyNzM9c3RhdGljIGxvbmcgZG9fcGFnZW1hcF9jbWQoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMyNzktXHRjYXNlIFBBR0VNQVBfU0NBTjpcbmZzL3Byb2MvdGFza19tbXUuYzozMjgwOlx0XHRyZXR1cm4gZG9fcGFnZW1hcF9zY2FuKG1tLCBhcmcpO1xuZnMvcHJvYy90YXNrX21tdS5jLTMyODEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MDQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipDaGVja2luZyBmb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgYGRvX3BhZ2VtYXBfc2NhbmAgZnVuY3Rpb24sIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiBpdCYjMzk7cyBwb3RlbnRpYWxseSBndWFyZGVkIGJ5IGFueSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY29tcGlsZWQsIG9yIGlmIGl0cyBpbmNsdXNpb24gaXMgZGVwZW5kZW50IG9uIHNvbWUgY29uZmlndXJhdGlvbiBmbGFnIG9yIHN5c3RlbSBkZWZpbml0aW9uLiBJZiBpdCAqaXMqIGNvbmRpdGlvbmFsLCBpdCB3aWxsIHNldmVyZWx5IGltcGFjdCBob3cgSSBpbnRlcnByZXQgaXRzIGJlaGF2aW9yLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaW4gdGhlIG92ZXJhbGwgc3lzdGVtLCBhbmQgaWYgSSBjYW4gZXZlbiByZWx5IG9uIGl0cyBwcmVzZW5jZSBpbiBhbGwgc2NlbmFyaW9zLiBUaW1lIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGAjaWZkZWZgIG9yIHNpbWlsYXIgZGlyZWN0aXZlcyBzdXJyb3VuZGluZyBpdC4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aG9zZSBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvcHJvYy90YXNrX21tdS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Byb2MvdGFza19tbXUuYz05ND11bnNpZ25lZCBsb25nIHRhc2tfc3RhdG0oc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEwNi1cbmZzL3Byb2MvdGFza19tbXUuYzoxMDc6I2lmZGVmIENPTkZJR19OVU1BXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTA4LS8qXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTEyOD1zdGF0aWMgdm9pZCByZWxlYXNlX3Rhc2tfbWVtcG9saWN5KHN0cnVjdCBwcm9jX21hcHNfcHJpdmF0ZSAqcHJpdilcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMyLVxuZnMvcHJvYy90YXNrX21tdS5jOjEzMzojaWZkZWYgQ09ORklHX1BFUl9WTUFfTE9DS1xuZnMvcHJvYy90YXNrX21tdS5jLTEzNC1cbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9NTQ1PXN0YXRpYyBpbnQgcGlkX21hcHNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtNTYyLVxuZnMvcHJvYy90YXNrX21tdS5jOjU2MzojaWZkZWYgQ09ORklHX1BFUl9WTUFfTE9DS1xuZnMvcHJvYy90YXNrX21tdS5jLTU2NC1cbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9ODYzPWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfbWFwc19vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYy04OTAtXG5mcy9wcm9jL3Rhc2tfbW11LmM6ODkxOiNpZmRlZiBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JcbmZzL3Byb2MvdGFza19tbXUuYy04OTItc3RydWN0IG1lbV9zaXplX3N0YXRzIHtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9OTQ3PXN0YXRpYyB2b2lkIHNtYXBzX2FjY291bnQoc3RydWN0IG1lbV9zaXplX3N0YXRzICptc3MsIHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMDIxLVxuZnMvcHJvYy90YXNrX21tdS5jOjEwMjI6I2lmZGVmIENPTkZJR19TSE1FTVxuZnMvcHJvYy90YXNrX21tdS5jLTEwMjMtc3RhdGljIGludCBzbWFwc19wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0xMDM5PXN0YXRpYyB2b2lkIHNtYXBzX3B0ZV9ob2xlX2xvb2t1cCh1bnNpZ25lZCBsb25nIGFkZHIsIHN0cnVjdCBtbV93YWxrICp3YWxrKVxuZnMvcHJvYy90YXNrX21tdS5jLTEwNDAte1xuZnMvcHJvYy90YXNrX21tdS5jOjEwNDE6I2lmZGVmIENPTkZJR19TSE1FTVxuZnMvcHJvYy90YXNrX21tdS5jLTEwNDItXHRpZiAod2Fsay1cdTAwM2VvcHMtXHUwMDNlcHRlX2hvbGUpIHtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTA0OT1zdGF0aWMgdm9pZCBzbWFwc19wdGVfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMDk0LVxuZnMvcHJvYy90YXNrX21tdS5jOjEwOTU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuZnMvcHJvYy90YXNrX21tdS5jLTEwOTYtc3RhdGljIHZvaWQgc21hcHNfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTE2Nj1zdGF0aWMgdm9pZCBzaG93X3NtYXBfdm1hX2ZsYWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEyMDgtXHRcdFtpbG9nMihWTV9ET05URFVNUCldXHQ9IFwmIzM0O2RkXCYjMzQ7LFxuZnMvcHJvYy90YXNrX21tdS5jOjEyMDk6I2lmZGVmIENPTkZJR19BUk02NF9CVElcbmZzL3Byb2MvdGFza19tbXUuYy0xMjEwLVx0XHRbaWxvZzIoVk1fQVJNNjRfQlRJKV1cdD0gXCYjMzQ7YnRcJiMzNDssXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIxMS0jZW5kaWZcbmZzL3Byb2MvdGFza19tbXUuYzoxMjEyOiNpZmRlZiBDT05GSUdfTUVNX1NPRlRfRElSVFlcbmZzL3Byb2MvdGFza19tbXUuYy0xMjEzLVx0XHRbaWxvZzIoVk1fU09GVERJUlRZKV1cdD0gXCYjMzQ7c2RcJiMzNDssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEyMjAtXHRcdFtpbG9nMihWTV9VRkZEX1dQKV1cdD0gXCYjMzQ7dXdcJiMzNDssXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIyMTojaWZkZWYgQ09ORklHX0FSTTY0X01URVxuZnMvcHJvYy90YXNrX21tdS5jLTEyMjItXHRcdFtpbG9nMihWTV9NVEUpXVx0XHQ9IFwmIzM0O210XCYjMzQ7LFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMjI0LSNlbmRpZlxuZnMvcHJvYy90YXNrX21tdS5jOjEyMjU6I2lmZGVmIENPTkZJR19BUkNIX0hBU19QS0VZU1xuZnMvcHJvYy90YXNrX21tdS5jLTEyMjYtXHRcdC8qIFRoZXNlIGNvbWUgb3V0IHZpYSBQcm90ZWN0aW9uS2V5OiAqL1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0xMjM2LSNlbmRpZiAvKiBDT05GSUdfQVJDSF9IQVNfUEtFWVMgKi9cbmZzL3Byb2MvdGFza19tbXUuYzoxMjM3OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIzOC1cdFx0W2lsb2cyKFZNX1VGRkRfTUlOT1IpXVx0PSBcJiMzNDt1aVwmIzM0OyxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjM5LSNlbmRpZiAvKiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SICovXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTI0MDojaWZkZWYgQ09ORklHX0FSQ0hfSEFTX1VTRVJfU0hBRE9XX1NUQUNLXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI0MS1cdFx0W2lsb2cyKFZNX1NIQURPV19TVEFDSyldID0gXCYjMzQ7c3NcJiMzNDssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEyNDUtI2VuZGlmXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTI0NjojaWZkZWYgQ09ORklHXzY0QklUXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI0Ny1cdFx0W2lsb2cyKFZNX1NFQUxFRCldID0gXCYjMzQ7c2xcJiMzNDssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTEyNjEtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTI2MjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuZnMvcHJvYy90YXNrX21tdS5jLTEyNjMtc3RhdGljIGludCBzbWFwc19odWdldGxiX3JhbmdlKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTEzMDc9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBzbWFwc19zaG1lbV93YWxrX29wcyA9IHtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMxMy1cbmZzL3Byb2MvdGFza19tbXUuYzoxMzE0OiNpZmRlZiBDT05GSUdfUEVSX1ZNQV9MT0NLXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMxNS1cbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjAyMT1zdGF0aWMgcGFnZW1hcF9lbnRyeV90IHB0ZV90b19wYWdlbWFwX2VudHJ5KHN0cnVjdCBwYWdlbWFwcmVhZCAqcG0sXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTIwODYtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MjA4NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjA4OC1zdGF0aWMgaW50IHBhZ2VtYXBfcG1kX3JhbmdlX3RocChwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0yMTY2PXN0YXRpYyBpbnQgcGFnZW1hcF9wbWRfcmFuZ2UocG1kX3QgKnBtZHAsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTIxNzQtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MjE3NTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjE3Ni1cdHB0bCA9IHBtZF90cmFuc19odWdlX2xvY2socG1kcCwgdm1hKTtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjIwNy1cbmZzL3Byb2MvdGFza19tbXUuYzoyMjA4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjIwOS0vKiBUaGlzIGZ1bmN0aW9uIHdhbGtzIHdpdGhpbiBvbmUgaHVnZXRsYiBlbnRyeSBpbiB0aGUgc2luZ2xlIGNhbGwgKi9cbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjQ5MD1zdGF0aWMgdm9pZCBtYWtlX3VmZmRfd3BfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0yNTA3LVxuZnMvcHJvYy90YXNrX21tdS5jOjI1MDg6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuZnMvcHJvYy90YXNrX21tdS5jLTI1MDktc3RhdGljIHVuc2lnbmVkIGxvbmcgcGFnZW1hcF90aHBfY2F0ZWdvcnkoc3RydWN0IHBhZ2VtYXBfc2Nhbl9wcml2YXRlICpwLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0yNTU0PXN0YXRpYyB2b2lkIG1ha2VfdWZmZF93cF9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTI1NjktXG5mcy9wcm9jL3Rhc2tfbW11LmM6MjU3MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuZnMvcHJvYy90YXNrX21tdS5jLTI1NzEtc3RhdGljIHVuc2lnbmVkIGxvbmcgcGFnZW1hcF9odWdldGxiX2NhdGVnb3J5KHB0ZV90IHB0ZSlcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9Mjc4ND1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl90aHBfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjc4Ni17XG5mcy9wcm9jL3Rhc2tfbW11LmM6Mjc4NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjc4OC1cdHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCA9IHdhbGstXHUwMDNlcHJpdmF0ZTtcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjgzNT1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjkzMi1cbmZzL3Byb2MvdGFza19tbXUuYzoyOTMzOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjkzNC1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2VudHJ5KHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0zMjg3PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMyOTYtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzI5NzojaWZkZWYgQ09ORklHX05VTUFcbmZzL3Byb2MvdGFza19tbXUuYy0zMjk4LVxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0zMzQ4PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqY2FuX2dhdGhlcl9udW1hX3N0YXRzKHB0ZV90IHB0ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTMzNzAtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzM3MTojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzM3Mi1zdGF0aWMgc3RydWN0IHBhZ2UgKmNhbl9nYXRoZXJfbnVtYV9zdGF0c19wbWQocG1kX3QgcG1kLFxuLS1cbmZzL3Byb2MvdGFza19tbXUuYz0zMzk3PXN0YXRpYyBpbnQgZ2F0aGVyX3B0ZV9zdGF0cyhwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jLTM0MDUtXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzQwNjojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzQwNy1cdHB0bCA9IHBtZF90cmFuc19odWdlX2xvY2socG1kLCB2bWEpO1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0zNDM1LX1cbmZzL3Byb2MvdGFza19tbXUuYzozNDM2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzQzNy1zdGF0aWMgaW50IGdhdGhlcl9odWdldGxiX3N0YXRzKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXG4tLVxuZnMvcHJvYy90YXNrX21tdS5jPTM0Njc9c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBzaG93X251bWFfb3BzID0ge1xuLS1cbmZzL3Byb2MvdGFza19tbXUuYy0zNDcyLVxuZnMvcHJvYy90YXNrX21tdS5jOjM0NzM6I2lmZGVmIENPTkZJR19QRVJfVk1BX0xPQ0tcbmZzL3Byb2MvdGFza19tbXUuYy0zNDc0LXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgc2hvd19udW1hX3ZtYV9sb2NrX29wcyA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NDgKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipDaGVja2luZyB0aGUgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gb2YgYGRvX3BhZ2VtYXBfc2NhbmAqKgoKQWxyaWdodCwgc28gaXQgbG9va3MgbGlrZSBgZG9fcGFnZW1hcF9zY2FuYCBtaWdodCBub3QgYmUgZ3VhcmRlZCBieSBhbiBgI2lmZGVmYCBhcyBtdWNoIGFzIEkgaW5pdGlhbGx5IHRob3VnaHQsIG91dHNpZGUgb2YgbWF5YmUgYENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUmAsIGJ1dCB0aGF0JiMzOTtzIGp1c3QgYSBodW5jaCByaWdodCBub3cuIEkgbmVlZCB0byBiZSBzdXJlLiBUaW1lIHRvIHZlcmlmeSBpdHMgdXNhZ2UuIFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhhdCBpbmZvcm1hdGlvbiB3aWxsIGJlIGF0IHRoZSB2ZXJ5IHRvcCBvZiBgZnMvcHJvYy90YXNrX21tdS5jYCwgb3IgbWF5YmUgdGhlIGFzc29jaWF0ZWQgYGZzL3Byb2MvTWFrZWZpbGVgLiBJJiMzOTtsbCBzY2FuIHRocm91Z2ggdGhvc2UgZmlsZXMgYW5kIHF1aWNrbHkgY29uZmlybSBpZiB0aGVyZSYjMzk7cyBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gc3Vycm91bmRpbmcgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXRzZWxmLCBhbmQgaWYgc28sIHdoYXQgdGhlIHJlbGV2YW50IGNvbmZpZyBzeW1ib2wgaXMuIEtub3dpbmcgdGhpcyB3aWxsIGltbWVkaWF0ZWx5IGNsYXJpZnkgdGhlIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggdGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgb3IsIG1vcmUgaW50ZXJlc3RpbmdseSwgd2hlbiBpdCAqaXNuJiMzOTt0Ki4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGFza19tbXUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Byb2MvTWFrZWZpbGU9Nj1vYmoteSAgICYjNDM7PSBwcm9jLm9cbmZzL3Byb2MvTWFrZWZpbGUtNy1cbmZzL3Byb2MvTWFrZWZpbGU6ODpDRkxBR1NfdGFza19tbXUub1x0JiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxuZnMvcHJvYy9NYWtlZmlsZS05LXByb2MteVx0XHRcdDo9IG5vbW11Lm8gdGFza19ub21tdS5vXG5mcy9wcm9jL01ha2VmaWxlOjEwOnByb2MtJChDT05GSUdfTU1VKVx0Oj0gdGFza19tbXUub1xuZnMvcHJvYy9NYWtlZmlsZS0xMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNTEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBNYW5hZ2VtZW50IERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBpcyBkZWZpbml0ZWx5IGBDT05GSUdfTU1VYC4gVGhhdCYjMzk7cyBhIGdpdmVuLiBOb3csIEkmIzM5O20gY3VyaW91cyBhYm91dCBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQsIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgcGFnZW1hcCBmdW5jdGlvbmFsaXR5IGlzIGhvb2tlZCB1cC4gTXkgaW5zdGluY3QgaXMgdGhhdCBpdCYjMzk7cyBsaWtlbHkgaGFuZGxlZCB3aXRoaW4gdGhlIGBmcy9wcm9jYCBzdWJ0cmVlLCBtYXliZSBgZnMvcHJvYy9iYXNlLmNgLCBvciBzb21ldGhpbmcgY2xvc2VseSByZWxhdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZXMgdG8gcGlucG9pbnQgZXhhY3RseSBob3cgYW5kIHdoZXJlIGBwYWdlbWFwYCBpcyByZWdpc3RlcmVkIGFuZCB1dGlsaXplZC4gVGhhdCB3aWxsIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZW1hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL3Byb2MvYmFzZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL3Byb2MvYmFzZS5jPTMyODI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgdGdpZF9iYXNlX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzMyNC1cdFJFRyhcJiMzNDtzbWFwc19yb2xsdXBcJiMzNDssIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjMzMjU6XHRSRUcoXCYjMzQ7cGFnZW1hcFwmIzM0OywgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmMtMzMyNi0jZW5kaWZcbi0tXG5mcy9wcm9jL2Jhc2UuYz0zNjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNlX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzY3OS1cdFJFRyhcJiMzNDtzbWFwc19yb2xsdXBcJiMzNDssIFNfSVJVR08sIHByb2NfcGlkX3NtYXBzX3JvbGx1cF9vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjM2ODA6XHRSRUcoXCYjMzQ7cGFnZW1hcFwmIzM0OywgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmMtMzY4MS0jZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MzcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdDoKCioqSW52ZXN0aWdhdGluZyBhIFByZXByb2Nlc3NvciBEaXJlY3RpdmUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBmbG93IGhlcmUuIFRoZSBpbW1lZGlhdGUgdGhpbmcgSSYjMzk7bSBmb2N1c2luZyBvbiBpcyB0aGUgYCNlbmRpZmAgZGlyZWN0aXZlIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBgUkVHKCYjMzQ7cGFnZW1hcCYjMzQ7KWAgbWFjcm8gY2FsbC4gSXQmIzM5O3MgYSBjbGFzc2ljIGRlYnVnZ2luZyBhcHByb2FjaCDigJMgc3RhcnQgYXQgYSBrbm93biBwb2ludCBhbmQgc2VlIHdoYXQgY29uZGl0aW9uYWxzIG9yIHByZXByb2Nlc3NvciBhY3Rpdml0eSBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGlzIHNwZWNpZmljIHJlZ2lzdGVyIGRlY2xhcmF0aW9uLiBJJiMzOTttIGFzc3VtaW5nIGAjZW5kaWZgIGlzIGNsb3Npbmcgb3V0IGEgYmxvY2sgb2YgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIE5vdyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hhdCB0aGUgY29uZGl0aW9uIHdhcyBhbmQgaWYgaXQmIzM5O3MgcmVsZXZhbnQgdG8gaG93IHRoZSBgcGFnZW1hcGAgcmVnaXN0ZXIgaXMgZGVmaW5lZCBvciB1c2VkLiBJcyB0aGlzIGJsb2NrIHBvdGVudGlhbGx5IGVuYWJsZWQgb3IgZGlzYWJsZWQgZGVwZW5kaW5nIG9uIGJ1aWxkIGZsYWdzLCB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBxdWljayBzY2FuIG9mIHRoZSBjb2RlIGJsb2NrIGFib3ZlIGAjZW5kaWZgIHdpbGwgaG9wZWZ1bGx5IHJldmVhbCB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGluIHF1ZXN0aW9uIGFuZCBJIGNhbiB0aGVuIGRldGVybWluZSB0aGUgaW1wYWN0IG9uIGBSRUcoJiMzNDtwYWdlbWFwJiMzNDspYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWZkZWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9wcm9jL2Jhc2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9wcm9jL2Jhc2UuYz00MDM9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfY21kbGluZV9vcHMgPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtNDA3LVxuZnMvcHJvYy9iYXNlLmM6NDA4OiNpZmRlZiBDT05GSUdfS0FMTFNZTVNcbmZzL3Byb2MvYmFzZS5jLTQwOS0vKlxuLS1cbmZzL3Byb2MvYmFzZS5jPTQ1Mj1zdGF0aWMgdm9pZCB1bmxvY2tfdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxuLS1cbmZzL3Byb2MvYmFzZS5jLTQ1Ni1cbmZzL3Byb2MvYmFzZS5jOjQ1NzojaWZkZWYgQ09ORklHX1NUQUNLVFJBQ0VcbmZzL3Byb2MvYmFzZS5jLTQ1OC1cbi0tXG5mcy9wcm9jL2Jhc2UuYz00NjE9c3RhdGljIGludCBwcm9jX3BpZF9zdGFjayhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcbi0tXG5mcy9wcm9jL2Jhc2UuYy01MDQtXG5mcy9wcm9jL2Jhc2UuYzo1MDU6I2lmZGVmIENPTkZJR19TQ0hFRF9JTkZPXG5mcy9wcm9jL2Jhc2UuYy01MDYtLypcbi0tXG5mcy9wcm9jL2Jhc2UuYz01MDk9c3RhdGljIGludCBwcm9jX3BpZF9zY2hlZHN0YXQoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmMtNTIzLVxuZnMvcHJvYy9iYXNlLmM6NTI0OiNpZmRlZiBDT05GSUdfTEFURU5DWVRPUFxuZnMvcHJvYy9iYXNlLmMtNTI1LXN0YXRpYyBpbnQgbHN0YXRzX3Nob3dfcHJvYyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpXG4tLVxuZnMvcHJvYy9iYXNlLmM9NjI5PXN0YXRpYyBpbnQgcHJvY19waWRfbGltaXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTY3MS1cbmZzL3Byb2MvYmFzZS5jOjY3MjojaWZkZWYgQ09ORklHX0hBVkVfQVJDSF9UUkFDRUhPT0tcbmZzL3Byb2MvYmFzZS5jLTY3My1zdGF0aWMgaW50IHByb2NfcGlkX3N5c2NhbGwoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmM9MTI4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX29vbV9zY29yZV9hZGpfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYy0xMjkxLVxuZnMvcHJvYy9iYXNlLmM6MTI5MjojaWZkZWYgQ09ORklHX0FVRElUXG5mcy9wcm9jL2Jhc2UuYy0xMjkzLSNkZWZpbmUgVE1QQlVGTEVOIDExXG4tLVxuZnMvcHJvYy9iYXNlLmM9MTM3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3Nlc3Npb25pZF9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jLTEzODEtXG5mcy9wcm9jL2Jhc2UuYzoxMzgyOiNpZmRlZiBDT05GSUdfRkFVTFRfSU5KRUNUSU9OXG5mcy9wcm9jL2Jhc2UuYy0xMzgzLXN0YXRpYyBzc2l6ZV90IHByb2NfZmF1bHRfaW5qZWN0X3JlYWQoc3RydWN0IGZpbGUgKiBmaWxlLCBjaGFyIF9fdXNlciAqIGJ1Zixcbi0tXG5mcy9wcm9jL2Jhc2UuYz0xNTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NjaGVkX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMTUyNy1cbmZzL3Byb2MvYmFzZS5jOjE1Mjg6I2lmZGVmIENPTkZJR19TQ0hFRF9BVVRPR1JPVVBcbmZzL3Byb2MvYmFzZS5jLTE1MjktLypcbi0tXG5mcy9wcm9jL2Jhc2UuYz0xNTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NjaGVkX2F1dG9ncm91cF9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jLTE2MDEtXG5mcy9wcm9jL2Jhc2UuYzoxNjAyOiNpZmRlZiBDT05GSUdfVElNRV9OU1xuZnMvcHJvYy9iYXNlLmMtMTYwMy1zdGF0aWMgaW50IHRpbWVuc19vZmZzZXRzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxuLS1cbmZzL3Byb2MvYmFzZS5jPTI3MTE9c3RhdGljIGludCBwcm9jX3BpZGVudF9yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0yNzM2LVxuZnMvcHJvYy9iYXNlLmM6MjczNzojaWZkZWYgQ09ORklHX1NFQ1VSSVRZXG5mcy9wcm9jL2Jhc2UuYy0yNzM4LXN0YXRpYyBpbnQgcHJvY19waWRfYXR0cl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL3Byb2MvYmFzZS5jPTI4NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfIyNMU00jI19hdHRyX2Rpcl9pbm9kZV9vcHMgPSB7IFxcXG4tLVxuZnMvcHJvYy9iYXNlLmMtMjg2MC1cbmZzL3Byb2MvYmFzZS5jOjI4NjE6I2lmZGVmIENPTkZJR19TRUNVUklUWV9TTUFDS1xuZnMvcHJvYy9iYXNlLmMtMjg2Mi1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSBzbWFja19hdHRyX2Rpcl9zdHVmZltdID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jPTI4NjU9TFNNX0RJUl9PUFMoc21hY2spO1xuLS1cbmZzL3Byb2MvYmFzZS5jLTI4NjctXG5mcy9wcm9jL2Jhc2UuYzoyODY4OiNpZmRlZiBDT05GSUdfU0VDVVJJVFlfQVBQQVJNT1JcbmZzL3Byb2MvYmFzZS5jLTI4Njktc3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgYXBwYXJtb3JfYXR0cl9kaXJfc3R1ZmZbXSA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYz0yODc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IGF0dHJfZGlyX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMjg4My1cdEFUVFIoTFNNX0lEX1VOREVGLCBcJiMzNDtzb2NrY3JlYXRlXCYjMzQ7LFx0MDY2NiksXG5mcy9wcm9jL2Jhc2UuYzoyODg0OiNpZmRlZiBDT05GSUdfU0VDVVJJVFlfU01BQ0tcbmZzL3Byb2MvYmFzZS5jLTI4ODUtXHRESVIoXCYjMzQ7c21hY2tcJiMzNDssXHRcdFx0MDU1NSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0yODg3LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6Mjg4ODojaWZkZWYgQ09ORklHX1NFQ1VSSVRZX0FQUEFSTU9SXG5mcy9wcm9jL2Jhc2UuYy0yODg5LVx0RElSKFwmIzM0O2FwcGFybW9yXCYjMzQ7LFx0XHRcdDA1NTUsXG4tLVxuZnMvcHJvYy9iYXNlLmM9MjkxND1zdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcHJvY19hdHRyX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0ge1xuLS1cbmZzL3Byb2MvYmFzZS5jLTI5MjEtXG5mcy9wcm9jL2Jhc2UuYzoyOTIyOiNpZmRlZiBDT05GSUdfRUxGX0NPUkVcbmZzL3Byb2MvYmFzZS5jLTI5MjMtc3RhdGljIHNzaXplX3QgcHJvY19jb3JlZHVtcF9maWx0ZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5mcy9wcm9jL2Jhc2UuYz0yOTk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfY29yZWR1bXBfZmlsdGVyX29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzAwMC1cbmZzL3Byb2MvYmFzZS5jOjMwMDE6I2lmZGVmIENPTkZJR19UQVNLX0lPX0FDQ09VTlRJTkdcbmZzL3Byb2MvYmFzZS5jLTMwMDItc3RhdGljIGludCBkb19pb19hY2NvdW50aW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IHNlcV9maWxlICptLCBpbnQgd2hvbGUpXG4tLVxuZnMvcHJvYy9iYXNlLmM9MzA1OT1zdGF0aWMgaW50IHByb2NfdGdpZF9pb19hY2NvdW50aW5nKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTMwNjUtXG5mcy9wcm9jL2Jhc2UuYzozMDY2OiNpZmRlZiBDT05GSUdfVVNFUl9OU1xuZnMvcHJvYy9iYXNlLmMtMzA2Ny1zdGF0aWMgaW50IHByb2NfaWRfbWFwX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZnMvcHJvYy9iYXNlLmM9MzE5OD1zdGF0aWMgaW50IHByb2NfcGlkX3BlcnNvbmFsaXR5KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTMyMDgtXG5mcy9wcm9jL2Jhc2UuYzozMjA5OiNpZmRlZiBDT05GSUdfTElWRVBBVENIXG5mcy9wcm9jL2Jhc2UuYy0zMjEwLXN0YXRpYyBpbnQgcHJvY19waWRfcGF0Y2hfc3RhdGUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzIxNy1cbmZzL3Byb2MvYmFzZS5jOjMyMTg6I2lmZGVmIENPTkZJR19LU01cbmZzL3Byb2MvYmFzZS5jLTMyMTktc3RhdGljIGludCBwcm9jX3BpZF9rc21fbWVyZ2luZ19wYWdlcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcbi0tXG5mcy9wcm9jL2Jhc2UuYz0zMjMyPXN0YXRpYyBpbnQgcHJvY19waWRfa3NtX3N0YXQoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzI2MC1cbmZzL3Byb2MvYmFzZS5jOjMyNjE6I2lmZGVmIENPTkZJR19LU1RBQ0tfRVJBU0VfTUVUUklDU1xuZnMvcHJvYy9iYXNlLmMtMzI2Mi1zdGF0aWMgaW50IHByb2Nfc3RhY2tfZGVwdGgoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXG4tLVxuZnMvcHJvYy9iYXNlLmM9MzI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0Z2lkX2Jhc2Vfc3R1ZmZbXSA9IHtcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMjg3LVx0RElSKFwmIzM0O25zXCYjMzQ7LFx0ICBTX0lSVVNSfFNfSVhVR08sIHByb2NfbnNfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfbnNfZGlyX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmM6MzI4ODojaWZkZWYgQ09ORklHX05FVFxuZnMvcHJvYy9iYXNlLmMtMzI4OS1cdERJUihcJiMzNDtuZXRcJiMzNDssICAgICAgICBTX0lSVUdPfFNfSVhVR08sIHByb2NfbmV0X2lub2RlX29wZXJhdGlvbnMsIHByb2NfbmV0X29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTMyOTYtXHRSRUcoXCYjMzQ7c2NoZWRcJiMzNDssICAgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3BpZF9zY2hlZF9vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jOjMyOTc6I2lmZGVmIENPTkZJR19TQ0hFRF9BVVRPR1JPVVBcbmZzL3Byb2MvYmFzZS5jLTMyOTgtXHRSRUcoXCYjMzQ7YXV0b2dyb3VwXCYjMzQ7LCAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3BpZF9zY2hlZF9hdXRvZ3JvdXBfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMjk5LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzMwMDojaWZkZWYgQ09ORklHX1RJTUVfTlNcbmZzL3Byb2MvYmFzZS5jLTMzMDEtXHRSRUcoXCYjMzQ7dGltZW5zX29mZnNldHNcJiMzNDssICBTX0lSVUdPfFNfSVdVU1IsIHByb2NfdGltZW5zX29mZnNldHNfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzMwMy1cdFJFRyhcJiMzNDtjb21tXCYjMzQ7LCAgICAgIFNfSVJVR098U19JV1VTUiwgcHJvY19waWRfc2V0X2NvbW1fb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozMzA0OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1RSQUNFSE9PS1xuZnMvcHJvYy9iYXNlLmMtMzMwNS1cdE9ORShcJiMzNDtzeXNjYWxsXCYjMzQ7LCAgICBTX0lSVVNSLCBwcm9jX3BpZF9zeXNjYWxsKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzEwLVx0UkVHKFwmIzM0O21hcHNcJiMzNDssICAgICAgIFNfSVJVR08sIHByb2NfcGlkX21hcHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozMzExOiNpZmRlZiBDT05GSUdfTlVNQVxuZnMvcHJvYy9iYXNlLmMtMzMxMi1cdFJFRyhcJiMzNDtudW1hX21hcHNcJiMzNDssICBTX0lSVUdPLCBwcm9jX3BpZF9udW1hX21hcHNfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzMyMC1cdFJFRyhcJiMzNDttb3VudHN0YXRzXCYjMzQ7LCBTX0lSVVNSLCBwcm9jX21vdW50c3RhdHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozMzIxOiNpZmRlZiBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JcbmZzL3Byb2MvYmFzZS5jLTMzMjItXHRSRUcoXCYjMzQ7Y2xlYXJfcmVmc1wmIzM0OywgU19JV1VTUiwgcHJvY19jbGVhcl9yZWZzX29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTMzMjYtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzI3OiNpZmRlZiBDT05GSUdfU0VDVVJJVFlcbmZzL3Byb2MvYmFzZS5jLTMzMjgtXHRESVIoXCYjMzQ7YXR0clwmIzM0OywgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX2F0dHJfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfYXR0cl9kaXJfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzI5LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzMzMDojaWZkZWYgQ09ORklHX0tBTExTWU1TXG5mcy9wcm9jL2Jhc2UuYy0zMzMxLVx0T05FKFwmIzM0O3djaGFuXCYjMzQ7LCAgICAgIFNfSVJVR08sIHByb2NfcGlkX3djaGFuKSxcbmZzL3Byb2MvYmFzZS5jLTMzMzItI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzMzOiNpZmRlZiBDT05GSUdfU1RBQ0tUUkFDRVxuZnMvcHJvYy9iYXNlLmMtMzMzNC1cdE9ORShcJiMzNDtzdGFja1wmIzM0OywgICAgICBTX0lSVVNSLCBwcm9jX3BpZF9zdGFjayksXG5mcy9wcm9jL2Jhc2UuYy0zMzM1LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzMzNjojaWZkZWYgQ09ORklHX1NDSEVEX0lORk9cbmZzL3Byb2MvYmFzZS5jLTMzMzctXHRPTkUoXCYjMzQ7c2NoZWRzdGF0XCYjMzQ7LCAgU19JUlVHTywgcHJvY19waWRfc2NoZWRzdGF0KSxcbmZzL3Byb2MvYmFzZS5jLTMzMzgtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzM5OiNpZmRlZiBDT05GSUdfTEFURU5DWVRPUFxuZnMvcHJvYy9iYXNlLmMtMzM0MC1cdFJFRyhcJiMzNDtsYXRlbmN5XCYjMzQ7LCAgU19JUlVHTywgcHJvY19sc3RhdHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzQxLSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM0MjojaWZkZWYgQ09ORklHX1BST0NfUElEX0NQVVNFVFxuZnMvcHJvYy9iYXNlLmMtMzM0My1cdE9ORShcJiMzNDtjcHVzZXRcJiMzNDssICAgICBTX0lSVUdPLCBwcm9jX2NwdXNldF9zaG93KSxcbmZzL3Byb2MvYmFzZS5jLTMzNDQtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzQ1OiNpZmRlZiBDT05GSUdfQ0dST1VQU1xuZnMvcHJvYy9iYXNlLmMtMzM0Ni1cdE9ORShcJiMzNDtjZ3JvdXBcJiMzNDssICBTX0lSVUdPLCBwcm9jX2Nncm91cF9zaG93KSxcbmZzL3Byb2MvYmFzZS5jLTMzNDctI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzQ4OiNpZmRlZiBDT05GSUdfUFJPQ19DUFVfUkVTQ1RSTFxuZnMvcHJvYy9iYXNlLmMtMzM0OS1cdE9ORShcJiMzNDtjcHVfcmVzY3RybF9ncm91cHNcJiMzNDssIFNfSVJVR08sIHByb2NfcmVzY3RybF9zaG93KSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzUzLVx0UkVHKFwmIzM0O29vbV9zY29yZV9hZGpcJiMzNDssIFNfSVJVR098U19JV1VTUiwgcHJvY19vb21fc2NvcmVfYWRqX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmM6MzM1NDojaWZkZWYgQ09ORklHX0FVRElUXG5mcy9wcm9jL2Jhc2UuYy0zMzU1LVx0UkVHKFwmIzM0O2xvZ2ludWlkXCYjMzQ7LCAgIFNfSVdVU1J8U19JUlVHTywgcHJvY19sb2dpbnVpZF9vcGVyYXRpb25zKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzU3LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM1ODojaWZkZWYgQ09ORklHX0ZBVUxUX0lOSkVDVElPTlxuZnMvcHJvYy9iYXNlLmMtMzM1OS1cdFJFRyhcJiMzNDttYWtlLWl0LWZhaWxcJiMzNDssIFNfSVJVR098U19JV1VTUiwgcHJvY19mYXVsdF9pbmplY3Rfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzM2MS0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjMzNjI6I2lmZGVmIENPTkZJR19FTEZfQ09SRVxuZnMvcHJvYy9iYXNlLmMtMzM2My1cdFJFRyhcJiMzNDtjb3JlZHVtcF9maWx0ZXJcJiMzNDssIFNfSVJVR098U19JV1VTUiwgcHJvY19jb3JlZHVtcF9maWx0ZXJfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zMzY0LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM2NTojaWZkZWYgQ09ORklHX1RBU0tfSU9fQUNDT1VOVElOR1xuZnMvcHJvYy9iYXNlLmMtMzM2Ni1cdE9ORShcJiMzNDtpb1wmIzM0OyxcdFNfSVJVU1IsIHByb2NfdGdpZF9pb19hY2NvdW50aW5nKSxcbmZzL3Byb2MvYmFzZS5jLTMzNjctI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozMzY4OiNpZmRlZiBDT05GSUdfVVNFUl9OU1xuZnMvcHJvYy9iYXNlLmMtMzM2OS1cdFJFRyhcJiMzNDt1aWRfbWFwXCYjMzQ7LCAgICBTX0lSVUdPfFNfSVdVU1IsIHByb2NfdWlkX21hcF9vcGVyYXRpb25zKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYy0zMzc3LVx0UkVHKFwmIzM0O3RpbWVyc2xhY2tfbnNcJiMzNDssIFNfSVJVR098U19JV1VHTywgcHJvY19waWRfc2V0X3RpbWVyc2xhY2tfbnNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozMzc4OiNpZmRlZiBDT05GSUdfTElWRVBBVENIXG5mcy9wcm9jL2Jhc2UuYy0zMzc5LVx0T05FKFwmIzM0O3BhdGNoX3N0YXRlXCYjMzQ7LCAgU19JUlVTUiwgcHJvY19waWRfcGF0Y2hfc3RhdGUpLFxuZnMvcHJvYy9iYXNlLmMtMzM4MC0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjMzODE6I2lmZGVmIENPTkZJR19LU1RBQ0tfRVJBU0VfTUVUUklDU1xuZnMvcHJvYy9iYXNlLmMtMzM4Mi1cdE9ORShcJiMzNDtzdGFja19kZXB0aFwmIzM0OywgU19JUlVHTywgcHJvY19zdGFja19kZXB0aCksXG5mcy9wcm9jL2Jhc2UuYy0zMzgzLSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM4NDojaWZkZWYgQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTXG5mcy9wcm9jL2Jhc2UuYy0zMzg1LVx0T05FKFwmIzM0O2FyY2hfc3RhdHVzXCYjMzQ7LCBTX0lSVUdPLCBwcm9jX3BpZF9hcmNoX3N0YXR1cyksXG5mcy9wcm9jL2Jhc2UuYy0zMzg2LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM4NzojaWZkZWYgQ09ORklHX1NFQ0NPTVBfQ0FDSEVfREVCVUdcbmZzL3Byb2MvYmFzZS5jLTMzODgtXHRPTkUoXCYjMzQ7c2VjY29tcF9jYWNoZVwmIzM0OywgU19JUlVTUiwgcHJvY19waWRfc2VjY29tcF9jYWNoZSksXG5mcy9wcm9jL2Jhc2UuYy0zMzg5LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzM5MDojaWZkZWYgQ09ORklHX0tTTVxuZnMvcHJvYy9iYXNlLmMtMzM5MS1cdE9ORShcJiMzNDtrc21fbWVyZ2luZ19wYWdlc1wmIzM0OywgIFNfSVJVU1IsIHByb2NfcGlkX2tzbV9tZXJnaW5nX3BhZ2VzKSxcbi0tXG5mcy9wcm9jL2Jhc2UuYz0zNjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNlX3N0dWZmW10gPSB7XG4tLVxuZnMvcHJvYy9iYXNlLmMtMzY0NC1cdERJUihcJiMzNDtuc1wmIzM0OyxcdCBTX0lSVVNSfFNfSVhVR08sIHByb2NfbnNfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfbnNfZGlyX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmM6MzY0NTojaWZkZWYgQ09ORklHX05FVFxuZnMvcHJvYy9iYXNlLmMtMzY0Ni1cdERJUihcJiMzNDtuZXRcJiMzNDssICAgICAgICBTX0lSVUdPfFNfSVhVR08sIHByb2NfbmV0X2lub2RlX29wZXJhdGlvbnMsIHByb2NfbmV0X29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM2NTYtXHRcdFx0IFx1MDAyNnByb2NfcGlkX3NldF9jb21tX29wZXJhdGlvbnMsIHt9KSxcbmZzL3Byb2MvYmFzZS5jOjM2NTc6I2lmZGVmIENPTkZJR19IQVZFX0FSQ0hfVFJBQ0VIT09LXG5mcy9wcm9jL2Jhc2UuYy0zNjU4LVx0T05FKFwmIzM0O3N5c2NhbGxcJiMzNDssICAgU19JUlVTUiwgcHJvY19waWRfc3lzY2FsbCksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzY2My1cdFJFRyhcJiMzNDttYXBzXCYjMzQ7LCAgICAgIFNfSVJVR08sIHByb2NfcGlkX21hcHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNjY0OiNpZmRlZiBDT05GSUdfUFJPQ19DSElMRFJFTlxuZnMvcHJvYy9iYXNlLmMtMzY2NS1cdFJFRyhcJiMzNDtjaGlsZHJlblwmIzM0OywgIFNfSVJVR08sIHByb2NfdGlkX2NoaWxkcmVuX29wZXJhdGlvbnMpLFxuZnMvcHJvYy9iYXNlLmMtMzY2Ni0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM2Njc6I2lmZGVmIENPTkZJR19OVU1BXG5mcy9wcm9jL2Jhc2UuYy0zNjY4LVx0UkVHKFwmIzM0O251bWFfbWFwc1wmIzM0OywgU19JUlVHTywgcHJvY19waWRfbnVtYV9tYXBzX29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM2NzUtXHRSRUcoXCYjMzQ7bW91bnRpbmZvXCYjMzQ7LCAgU19JUlVHTywgcHJvY19tb3VudGluZm9fb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNjc2OiNpZmRlZiBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JcbmZzL3Byb2MvYmFzZS5jLTM2NzctXHRSRUcoXCYjMzQ7Y2xlYXJfcmVmc1wmIzM0OywgU19JV1VTUiwgcHJvY19jbGVhcl9yZWZzX29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM2ODEtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozNjgyOiNpZmRlZiBDT05GSUdfU0VDVVJJVFlcbmZzL3Byb2MvYmFzZS5jLTM2ODMtXHRESVIoXCYjMzQ7YXR0clwmIzM0OywgICAgICBTX0lSVUdPfFNfSVhVR08sIHByb2NfYXR0cl9kaXJfaW5vZGVfb3BlcmF0aW9ucywgcHJvY19hdHRyX2Rpcl9vcGVyYXRpb25zKSxcbmZzL3Byb2MvYmFzZS5jLTM2ODQtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozNjg1OiNpZmRlZiBDT05GSUdfS0FMTFNZTVNcbmZzL3Byb2MvYmFzZS5jLTM2ODYtXHRPTkUoXCYjMzQ7d2NoYW5cJiMzNDssICAgICBTX0lSVUdPLCBwcm9jX3BpZF93Y2hhbiksXG5mcy9wcm9jL2Jhc2UuYy0zNjg3LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzY4ODojaWZkZWYgQ09ORklHX1NUQUNLVFJBQ0VcbmZzL3Byb2MvYmFzZS5jLTM2ODktXHRPTkUoXCYjMzQ7c3RhY2tcJiMzNDssICAgICAgU19JUlVTUiwgcHJvY19waWRfc3RhY2spLFxuZnMvcHJvYy9iYXNlLmMtMzY5MC0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM2OTE6I2lmZGVmIENPTkZJR19TQ0hFRF9JTkZPXG5mcy9wcm9jL2Jhc2UuYy0zNjkyLVx0T05FKFwmIzM0O3NjaGVkc3RhdFwmIzM0OywgU19JUlVHTywgcHJvY19waWRfc2NoZWRzdGF0KSxcbmZzL3Byb2MvYmFzZS5jLTM2OTMtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozNjk0OiNpZmRlZiBDT05GSUdfTEFURU5DWVRPUFxuZnMvcHJvYy9iYXNlLmMtMzY5NS1cdFJFRyhcJiMzNDtsYXRlbmN5XCYjMzQ7LCAgU19JUlVHTywgcHJvY19sc3RhdHNfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYy0zNjk2LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzY5NzojaWZkZWYgQ09ORklHX1BST0NfUElEX0NQVVNFVFxuZnMvcHJvYy9iYXNlLmMtMzY5OC1cdE9ORShcJiMzNDtjcHVzZXRcJiMzNDssICAgIFNfSVJVR08sIHByb2NfY3B1c2V0X3Nob3cpLFxuZnMvcHJvYy9iYXNlLmMtMzY5OS0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM3MDA6I2lmZGVmIENPTkZJR19DR1JPVVBTXG5mcy9wcm9jL2Jhc2UuYy0zNzAxLVx0T05FKFwmIzM0O2Nncm91cFwmIzM0OywgIFNfSVJVR08sIHByb2NfY2dyb3VwX3Nob3cpLFxuZnMvcHJvYy9iYXNlLmMtMzcwMi0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM3MDM6I2lmZGVmIENPTkZJR19QUk9DX0NQVV9SRVNDVFJMXG5mcy9wcm9jL2Jhc2UuYy0zNzA0LVx0T05FKFwmIzM0O2NwdV9yZXNjdHJsX2dyb3Vwc1wmIzM0OywgU19JUlVHTywgcHJvY19yZXNjdHJsX3Nob3cpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM3MDgtXHRSRUcoXCYjMzQ7b29tX3Njb3JlX2FkalwmIzM0OywgU19JUlVHT3xTX0lXVVNSLCBwcm9jX29vbV9zY29yZV9hZGpfb3BlcmF0aW9ucyksXG5mcy9wcm9jL2Jhc2UuYzozNzA5OiNpZmRlZiBDT05GSUdfQVVESVRcbmZzL3Byb2MvYmFzZS5jLTM3MTAtXHRSRUcoXCYjMzQ7bG9naW51aWRcJiMzNDssICBTX0lXVVNSfFNfSVJVR08sIHByb2NfbG9naW51aWRfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzcxMi0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM3MTM6I2lmZGVmIENPTkZJR19GQVVMVF9JTkpFQ1RJT05cbmZzL3Byb2MvYmFzZS5jLTM3MTQtXHRSRUcoXCYjMzQ7bWFrZS1pdC1mYWlsXCYjMzQ7LCBTX0lSVUdPfFNfSVdVU1IsIHByb2NfZmF1bHRfaW5qZWN0X29wZXJhdGlvbnMpLFxuLS1cbmZzL3Byb2MvYmFzZS5jLTM3MTYtI2VuZGlmXG5mcy9wcm9jL2Jhc2UuYzozNzE3OiNpZmRlZiBDT05GSUdfVEFTS19JT19BQ0NPVU5USU5HXG5mcy9wcm9jL2Jhc2UuYy0zNzE4LVx0T05FKFwmIzM0O2lvXCYjMzQ7LFx0U19JUlVTUiwgcHJvY190aWRfaW9fYWNjb3VudGluZyksXG5mcy9wcm9jL2Jhc2UuYy0zNzE5LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzcyMDojaWZkZWYgQ09ORklHX1VTRVJfTlNcbmZzL3Byb2MvYmFzZS5jLTM3MjEtXHRSRUcoXCYjMzQ7dWlkX21hcFwmIzM0OywgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3VpZF9tYXBfb3BlcmF0aW9ucyksXG4tLVxuZnMvcHJvYy9iYXNlLmMtMzcyNS0jZW5kaWZcbmZzL3Byb2MvYmFzZS5jOjM3MjY6I2lmZGVmIENPTkZJR19MSVZFUEFUQ0hcbmZzL3Byb2MvYmFzZS5jLTM3MjctXHRPTkUoXCYjMzQ7cGF0Y2hfc3RhdGVcJiMzNDssICBTX0lSVVNSLCBwcm9jX3BpZF9wYXRjaF9zdGF0ZSksXG5mcy9wcm9jL2Jhc2UuYy0zNzI4LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzcyOTojaWZkZWYgQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTXG5mcy9wcm9jL2Jhc2UuYy0zNzMwLVx0T05FKFwmIzM0O2FyY2hfc3RhdHVzXCYjMzQ7LCBTX0lSVUdPLCBwcm9jX3BpZF9hcmNoX3N0YXR1cyksXG5mcy9wcm9jL2Jhc2UuYy0zNzMxLSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzczMjojaWZkZWYgQ09ORklHX1NFQ0NPTVBfQ0FDSEVfREVCVUdcbmZzL3Byb2MvYmFzZS5jLTM3MzMtXHRPTkUoXCYjMzQ7c2VjY29tcF9jYWNoZVwmIzM0OywgU19JUlVTUiwgcHJvY19waWRfc2VjY29tcF9jYWNoZSksXG5mcy9wcm9jL2Jhc2UuYy0zNzM0LSNlbmRpZlxuZnMvcHJvYy9iYXNlLmM6MzczNTojaWZkZWYgQ09ORklHX0tTTVxuZnMvcHJvYy9iYXNlLmMtMzczNi1cdE9ORShcJiMzNDtrc21fbWVyZ2luZ19wYWdlc1wmIzM0OywgIFNfSVJVU1IsIHByb2NfcGlkX2tzbV9tZXJnaW5nX3BhZ2VzKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3NDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQYWdlbWFwIFNjYW4gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoZSBpbnRlZ3JhdGlvbiBvZiBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYCB3aXRoIGBDT05GSUdfVVNFUkZBVUxURkRgLiAgSXQgbG9va3MgbGlrZSBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgZm9yIHRoZSBgcGFnZW1hcGAgZnVuY3Rpb25hbGl0eSB0byBiZSByZWdpc3RlcmVkLCBhbmQgYENPTkZJR19VU0VSRkFVTFRGRGAgaXMgb2J2aW91c2x5IGNydWNpYWwgZm9yIHRoZSBjb3JlIGNoYW5nZS4gIEkgYWxzbyBhbnRpY2lwYXRlIG5lZWRpbmcgYENPTkZJR19NTVVgLCB0aG91Z2ggdGhhdCYjMzk7cyBnZW5lcmFsbHkgYXNzdW1lZC4KCkxldCYjMzk7cyBxdWlja2x5IHJldmlldyB0aGUgY29kZSBjaGFuZ2VzLiBUaGUgbWFpbiBmb2N1cyBpcyBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYC4gVGhlIGNyaXRpY2FsIGNvbmRpdGlvbiBpcyBgdXNlcmZhdWx0ZmRfd3Aodm1hKWAgdG8gaGFuZGxlIHVucG9wdWxhdGVkIHJhbmdlcyBpbiBhIGB1c2VyZmF1bHRmZGAgd3JpdGUtcHJvdGVjdGVkIFZNQS4gIEkgc2VlIGEgY29tbWVudCBtZW50aW9uaW5nIGBNQURWX0RPTlRORUVEYCBhbmQgYE1BRFZfQ09MTEFQU0VgLCB3aGljaCBicmluZ3MgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgdG8gbWluZCwgYXMgd2UgYXJlIGxvb2tpbmcgYXQgYW5vbnltb3VzIFRIUCBwYWdlcyBkcm9wcGVkIHZpYSBgTUFEVl9ET05UTkVFRGAuIEhvd2V2ZXIsIHRoZSBjb2RlJiMzOTtzIGNvbW1lbnQgaW5kaWNhdGVzIHRoaXMgaXNuJiMzOTt0IFRIUCBzcGVjaWZpYywgYnV0IHJhdGhlciB0aGUgZ2VuZXJhbCBjYXNlIG9mIHVucG9wdWxhdGVkIG1lbW9yeSByZWdpb25zLCBsaWtlIGhvbGVzLiBUaGUgY2hlY2sgZm9yIGAhaXNfdm1faHVnZXRsYl9wYWdlKHZtYSlgIHNlZW1zIHRvIGV4cGxpY2l0bHkgZXhjbHVkZSBIdWdlVExCIHBhZ2VzLiAgSSBzaG91bGQgcXVpY2tseSBjb25maXJtIGlmIGBpc192bV9odWdldGxiX3BhZ2VgIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRvIGJlIHByZXNlbnQsIGp1c3QgdG8gYmUgc3VyZS4KClRoZSBwYXRjaCBtb2RpZmllcyBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYCB0byByZXBvcnQgdGhlc2UgdW5wb3B1bGF0ZWQgcmVnaW9ucyB3aXRoaW4gYHVzZXJmYXVsdGZkYCB3cml0ZS1wcm90ZWN0ZWQgVk1BcyBhcyAmIzM0O3dyaXR0ZW4mIzM0Oy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBwYWdlbWFwIGlvY3RsLiBJdCB3aWxsIGNoYW5nZSBob3cgYFBBR0VNQVBfU0NBTmAgd29ya3MuIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGFsdGVyaW5nIHRoZSB3YXkgbWVtb3J5IHN0YXRlIGlzIHJlcG9ydGVkLCBhbmQgaXQgaW50ZXJhY3RzIHdpdGggYSByZWxhdGl2ZWx5IGNvbXBsZXggcGFydCBvZiB0aGUga2VybmVsICh1c2VyZmF1bHRmZCwgbWVtb3J5IG1hbmFnZW1lbnQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwuCgpTbywgaW4gc3VtbWFyeToKCiogICAqKkNvbmZpZ3M6KiogYENPTkZJR19VU0VSRkFVTFRGRGAsIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgLCAoaW1wbGljaXRseSkgYENPTkZJR19NTVVgLCBhbmQgcG9zc2libHkgYENPTkZJR19IVUdFVExCX1BBR0VgLgoqICAgKipLZXkgRnVuY3Rpb246KiogYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAgLSB0aGlzIGlzIHRoZSBmb2NhbCBwb2ludC4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBob3cgdW5wb3B1bGF0ZWQgbWVtb3J5IHJlZ2lvbnMgYXJlIHRyZWF0ZWQgd2l0aGluIHdyaXRlLXByb3RlY3RlZCBWTUFzIG1hbmFnZWQgYnkgYHVzZXJmYXVsdGZkYCwgd2hpY2ggaXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBjcml0aWNhbCBmb3IgaGFuZGxpbmcgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBQQUdFTUFQX1NDQU5gIGlvY3RsLiBJdCBlbnN1cmVzIHRoYXQgdGhlIHNjYW4gcmVwb3J0cyBtZW1vcnkgcmVnaW9ucyB3aGljaCB3b3VsZCBjYXVzZSBhIHBhZ2UgZmF1bHQgYXMgJiMzNDt3cml0dGVuJiMzNDssIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciB1c2VyZmF1bHRmZC4gSSBzaG91bGQga2VlcCBhbiBleWUgb24gaG93IEh1Z2VUTEIgaXMgYmVpbmcgaGFuZGxlZCBhcyB3ZWxsLCBldmVuIGlmIHRoZSBjb2RlIGV4cGxpY2l0bHkgZXhjbHVkZXMgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX3ZtX2h1Z2V0bGJfcGFnZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaHVnZXRsYi5oPTI1Mz1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl96YXBfYmVnaW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjU1LXtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI1NjpcdGlmIChpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI1Ny1cdFx0X19odWdldGxiX3phcF9iZWdpbih2bWEsIHN0YXJ0LCBlbmQpO1xuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTI2MD1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl96YXBfZW5kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI2Mi17XG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDoyNjM6XHRpZiAoaXNfdm1faHVnZXRsYl9wYWdlKHZtYSkpXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0yNjQtXHRcdF9faHVnZXRsYl96YXBfZW5kKHZtYSwgZGV0YWlscyk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oPTE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc192bWFfaHVnZXRsYl9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTIyLVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oOjIzOnN0YXRpYyBpbmxpbmUgYm9vbCBpc192bV9odWdldGxiX3BhZ2UoY29uc3Qgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgtMjQte1xuLS1cbmluY2x1ZGUvbGludXgvcm1hcC5oPTg4Nj1zdGF0aWMgaW5saW5lIHZvaWQgcGFnZV92bWFfbWFwcGVkX3dhbGtfZG9uZShzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcpXG4tLVxuaW5jbHVkZS9saW51eC9ybWFwLmgtODg4LVx0LyogSHVnZVRMQiBwdGUgaXMgc2V0IHRvIHRoZSByZWxldmFudCBwYWdlIHRhYmxlIGVudHJ5IHdpdGhvdXQgcHRlX21hcHBlZC4gKi9cbmluY2x1ZGUvbGludXgvcm1hcC5oOjg4OTpcdGlmIChwdm13LVx1MDAzZXB0ZSBcdTAwMjZcdTAwMjYgIWlzX3ZtX2h1Z2V0bGJfcGFnZShwdm13LVx1MDAzZXZtYSkpXG5pbmNsdWRlL2xpbnV4L3JtYXAuaC04OTAtXHRcdHB0ZV91bm1hcChwdm13LVx1MDAzZXB0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTYyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipOYXZpZ2F0aW5nIHRoZSBIdWdldGxiZnMgTGFuZHNjYXBlKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgZnVuY3Rpb24gb3IgbWFjcm8gb3Igd2hhdGV2ZXIgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4gaXMgdHVja2VkIGF3YXkgaW4gYGluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaGAuICpUaGF0JiMzOTtzKiB1c3VhbGx5IHRoZSBmaXJzdCBwbGFjZSB0byBsb29rLiBOb3csIGtub3dpbmcgdGhlIGtlcm5lbCwgSSBiZXQgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGlzIGl0IGVuYWJsZWQgdGhyb3VnaCBgQ09ORklHX0hVR0VUTEJfUEFHRWA/IFRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgdGhlIGtleSB0byB3aGV0aGVyIGl0JiMzOTtzIGFjdHVhbGx5ICp0aGVyZSogaW4gdGhlIGtlcm5lbCB3ZSYjMzk7cmUgbG9va2luZyBhdC4gR290dGEgdmVyaWZ5IHRoYXQgY29uZmlnIHNldHRpbmcgYmVmb3JlIEkgZGlnIGFueSBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19IVUdFVExCX1BBR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTYtXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmg6NzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjYwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQ2hlY2tpbmcgdGhlIEh1Z2V0bGIgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCkhtbSwganVzdCBhIG1vbWVudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHkuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IGBpc192bV9odWdldGxiX3BhZ2VgIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfSFVHRVRMQl9QQUdFYC4gVG8gY29uZmlybSwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgdGhpcy4gVGhlIGxpa2VseSBwbGFjZSBmb3IgdGhpcyBzb3J0IG9mIGRlZmluaXRpb24gd291bGQgYmUgd2l0aGluIGBpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhgLiBMZXQgbWUgdGFrZSBhIGxvb2sgdGhlcmUgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNfdm1faHVnZXRsYl9wYWdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaD0xNj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1hX2h1Z2V0bGJfZmxhZ3MoY29uc3Qgdm1hX2ZsYWdzX3QgKmZsYWdzKVxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaC0yMi1cbmluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaDoyMzpzdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1faHVnZXRsYl9wYWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTI0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1NzQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBvZiB0aGUgdGhvdWdodCBwcm9jZXNzIGRlc2NyaWJlZDoKCioqRGl2aW5nIGludG8gaHVnZXRsYl9pbmxpbmUuaCoqCgpPa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gYGluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmaWxlIHByb2JhYmx5IGhvdXNlcyB0aGUgY29yZSwgcGVyZm9ybWFuY2UtY3JpdGljYWwgaW5saW5lIGZ1bmN0aW9ucyByZWxhdGVkIHRvIEh1Z2VUTEIgbWFuYWdlbWVudC4gS25vd2luZyB0aGUga2VybmVsJiMzOTtzIEh1Z2VUTEIgaW1wbGVtZW50YXRpb24sIEkmIzM5O20gZXhwZWN0aW5nIGEgbWl4IG9mIHBhZ2UgdGFibGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLCBwb3RlbnRpYWxseSBzb21lIGxvY2stcmVsYXRlZCBvcGVyYXRpb25zIGlmIHRoZXkmIzM5O3JlIHBhcnRpY3VsYXJseSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUsIGFuZCBkZWZpbml0ZWx5IHNvbWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyBvciBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHRoZSBoYXJkd2FyZSYjMzk7cyBUTEIgbWFuYWdlbWVudCBmb3IgaHVnZSBwYWdlcy4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O2xsIGJlIGEgc3Ryb25nIGVtcGhhc2lzIG9uIG1pbmltaXppbmcgZnVuY3Rpb24gY2FsbCBvdmVyaGVhZCwgaGVuY2UgdGhlICYjMzQ7aW5saW5lJiMzNDsgZGVzaWduYXRpb24uIEkmIzM5O20ga2VlbiB0byBzZWUgaG93IHRoZXkmIzM5O3ZlIHN0cnVjdHVyZWQgdGhlIGNvZGUgdG8gYmFsYW5jZSBwZXJmb3JtYW5jZSB3aXRoIHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkgd2l0aGluIHRoaXMgY3JpdGljYWwgc2VjdGlvbiBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIGlmIG15IGluaXRpYWwgYXNzdW1wdGlvbnMgaG9sZCB3YXRlci4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbiAgIDI6XHQjaWZuZGVmIF9MSU5VWF9IVUdFVExCX0lOTElORV9IXG4gICAzOlx0I2RlZmluZSBfTElOVVhfSFVHRVRMQl9JTkxJTkVfSFxuICAgNDpcdFxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21tLmhcdTAwM2VcbiAgIDY6XHRcbiAgIDc6XHQjaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuICAgODpcdFxuICAgOTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc192bWFfaHVnZXRsYl9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXG4gIDEwOlx0e1xuICAxMTpcdFx0cmV0dXJuIHZtYV9mbGFnc190ZXN0KGZsYWdzLCBWTUFfSFVHRVRMQl9CSVQpO1xuICAxMjpcdH1cbiAgMTM6XHRcbiAgMTQ6XHQjZWxzZVxuICAxNTpcdFxuICAxNjpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc192bWFfaHVnZXRsYl9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXG4gIDE3Olx0e1xuICAxODpcdFx0cmV0dXJuIGZhbHNlO1xuICAxOTpcdH1cbiAgMjA6XHRcbiAgMjE6XHQjZW5kaWZcbiAgMjI6XHRcbiAgMjM6XHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1faHVnZXRsYl9wYWdlKGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuICAyNDpcdHtcbiAgMjU6XHRcdHJldHVybiBpc192bWFfaHVnZXRsYl9mbGFncyhcdTAwMjZ2bWEtXHUwMDNlZmxhZ3MpO1xuICAyNjpcdH1cbiAgMjc6XHRcbiAgMjg6XHQjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxOTEKCQkJCQkJCW91dHB1dDogMTQzCgkJCQkJCQl0aG91Z2h0czogMzAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIGZvciBVc2VyZmF1bHRmZCBhbmQgSHVnZSBQYWdlcyoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgYGlzX3ZtX2h1Z2V0bGJfcGFnZWAgaXMgYWx3YXlzIGRlZmluZWQsIHdoaWNoIGlzIGNvbnZlbmllbnQsIGJ1dCBpdCYjMzk7cyAqZWZmZWN0aXZlbHkqIGEgbm8tb3AgaWYgYENPTkZJR19IVUdFVExCX1BBR0VgIGlzbiYjMzk7dCBzZXQsIHNpbmNlIGl0IHJldHVybnMgYGZhbHNlYCBpbiB0aGF0IHNjZW5hcmlvLiBUaGlzIG1lYW5zIHRoYXQgd2UgZG9uJiMzOTt0ICpzdHJpY3RseSogbmVlZCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgdG8gY29tcGlsZSwgYnV0IGl0JiMzOTtzIGxpa2VseSB2ZXJ5IHJlbGV2YW50IGZvciB0ZXN0aW5nIHRoZSBzcGVjaWZpYyBodWdldGxiIGV4Y2x1c2lvbiBsb2dpYyDigJMgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgZXhwbGljaXQgY2hlY2sgYGlmICh1c2VyZmF1bHRmZF93cCh2bWEpICZhbXA7JmFtcDsgIWlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKWAuIFRvICpleGVyY2lzZSogdGhhdCBleGNsdXNpb24gcGF0aCwgd2UmIzM5O2QgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBlbmFibGVkLgoKVGhlIGB1bnBvcHVsYXRlZF90aHBfaG9sZV90ZXN0YCB0ZXN0IGNhc2UgdGhyb3dzIGFub3RoZXIgd3JlbmNoIGluIHRoZSB3b3JrcyBzaW5jZSBpdCYjMzk7cyB1c2luZyBUSFAtcmVsYXRlZCBmbGFncyAoYE1BRFZfQ09MTEFQU0VgLCBgTUFEVl9ET05UTkVFRGApLiBUaGVyZWZvcmUsIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGlzIGFsc28gY3JpdGljYWwgaGVyZS4gV2UmIzM5O3JlIG9idmlvdXNseSBub3QgdGFsa2luZyBhYm91dCBhIHNpbXBsZSB0ZXN0LgoKU28sIGxldCYjMzk7cyB0YWtlIHN0b2NrIG9mIHRoZSBjb25maWdzIHdlIG5lZWQgdG8gY29uc2lkZXI6CiogICBgVVNFUkZBVUxURkRgIOKAkyBvYnZpb3VzbHksIHRoZSBjb3JlIGZlYXR1cmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4KKiAgIGBQUk9DX1BBR0VfTU9OSVRPUmAg4oCTIGEgbGl0dGxlIGxlc3MgZXhwbGljaXQsIGJ1dCBwb3RlbnRpYWxseSByZWxldmFudCB0byBvYnNlcnZhYmlsaXR5LgoqICAgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCDigJMga2V5IGZvciB0aGUgVEhQLXJlbGF0ZWQgdGVzdCBjYXNlIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCiogICBgSFVHRVRMQl9QQUdFYCDigJMgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhlIGh1Z2V0bGIgZXhjbHVzaW9uIGxvZ2ljIHRvIGJlIHRlc3RlZC4KCkhtbSwgbGV0IG1lIGRvdWJsZSBjaGVjayBgTUFEVl9DT0xMQVBTRWAuIEl0JiMzOTtzIHByZXR0eSB0aWdodGx5IGNvdXBsZWQgdG8gVEhQLCBzbyBpdCBzaG91bGQgYmUgZW5hYmxlZCBieSBkZWZhdWx0LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgcGVlayBhdCBgZnMvcHJvYy90YXNrX21tdS5jYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IG90aGVyIGRlcGVuZGVuY3kuIEFoLCBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYC4gWWVzLCB0aGF0IGZ1bmN0aW9uIGhhcyBiZWVuIG1vZGlmaWVkLCBsaWtlbHkgdG8gc3VwcG9ydCB0aGUgY2hhbmdlcy4KClJpZ2h0LCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCBhIGhhbmRsZSBvbiB0aGUgcmVsYXRpb25zaGlwcyBoZXJlLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTRVJGQVVMVEZEJiMzNDssCiAgICAmIzM0O1BST0NfUEFHRV9NT05JVE9SJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0hVR0VUTEJfUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VtYXBfc2Nhbl9wdGVfaG9sZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNFUkZBVUxURkQmIzM0OywKICAgICYjMzQ7UFJPQ19QQUdFX01PTklUT1ImIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7SFVHRVRMQl9QQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFnZW1hcF9zY2FuX3B0ZV9ob2xlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQQUdFTUFQX1NDQU4gaW9jdGwgbG9naWMgaW4gcHJvY2ZzIHRvIGNvcnJlY3RseSByZXBvcnQgdW5wb3B1bGF0ZWQgcmFuZ2VzIChob2xlcykgaW4gdXNlcmZhdWx0ZmQgd3JpdGUtcHJvdGVjdGVkIFZNQXMgYXMgd3JpdHRlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUgdGhhdCBhZmZlY3RzIHVzZXItZmFjaW5nIEFQSXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjg6MjguMzU0MzQzNjM2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyNTIzMjI5ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTRVJGQVVMVEZEXCIsXG4gICAgXCJQUk9DX1BBR0VfTU9OSVRPUlwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkhVR0VUTEJfUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2VtYXBfc2Nhbl9wdGVfaG9sZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBQQUdFTUFQX1NDQU4gaW9jdGwgbG9naWMgaW4gcHJvY2ZzIHRvIGNvcnJlY3RseSByZXBvcnQgdW5wb3B1bGF0ZWQgcmFuZ2VzIChob2xlcykgaW4gdXNlcmZhdWx0ZmQgd3JpdGUtcHJvdGVjdGVkIFZNQXMgYXMgd3JpdHRlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUgdGhhdCBhZmZlY3RzIHVzZXItZmFjaW5nIEFQSXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyODoyOC4zNTQzNTA2NzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTUyMjQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFkMDNiMGM4NWI3ZDU0YjFjZjAzOTQ0OTAzNmU2ZDYxYWU4OWFjZTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgOSAwMToyODoyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9wcm9jL3Rhc2tfbW11LmNcXG5pbmRleCBlNDMwMmZjZjAyMjdkNy4uNGI2NGI0ZWQwODRjZWUgMTAwNjQ0XFxuLS0tIGEvZnMvcHJvYy90YXNrX21tdS5jXFxuKysrIGIvZnMvcHJvYy90YXNrX21tdS5jXFxuQEAgLTMwNTAsMTIgKzMwNTAsMzMgQEAgc3RhdGljIGludCBwYWdlbWFwX3NjYW5fcHRlX2hvbGUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcXG4ge1xcbiBcXHRzdHJ1Y3QgcGFnZW1hcF9zY2FuX3ByaXZhdGUgKnAgPSB3YWxrLVxcdTAwM2Vwcml2YXRlO1xcbiBcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHdhbGstXFx1MDAzZXZtYTtcXG4rXFx0dW5zaWduZWQgbG9uZyBjYXRlZ29yaWVzO1xcbiBcXHRpbnQgcmV0LCBlcnI7XFxuIFxcbi1cXHRpZiAoIXZtYSB8fCAhcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UocC1cXHUwMDNlY3VyX3ZtYV9jYXRlZ29yeSwgcCkpXFxuK1xcdGlmICghdm1hKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEFuIHVucG9wdWxhdGVkIHJhbmdlIHdpdGggbm8gcGFnZSB0YWJsZSAtLSBlLmcuIGEgMk1CIGFub24gVEhQXFxuK1xcdCAqIGRyb3BwZWQgdmlhIE1BRFZfRE9OVE5FRUQsIHdoaWNoIHBhZ2VtYXBfcGFnZV9jYXRlZ29yeSgpIG5ldmVyIHNlZXNcXG4rXFx0ICogLS0gcmVhZHMgYXMgd3JpdHRlbiBvbiBhIHVmZmQtd3AgVk1BLCBtYXRjaGluZyB0aGUgcHRlX25vbmUgY2FzZVxcbitcXHQgKiB0aGVyZS4gUmVwb3J0aW5nIGl0IGFsc28gbGV0cyB0aGUgUE1fU0NBTl9XUF9NQVRDSElORyBhcm1pbmcgYmVsb3dcXG4rXFx0ICogaW5zdGFsbCBtYXJrZXJzICh1ZmZkX3dwX3JhbmdlKCkgYWxsb2NhdGVzIHRoZSBwYWdlIHRhYmxlIHVuZGVyXFxuK1xcdCAqIFdQX1VOUE9QVUxBVEVEKSwgc28gdGhlIG5leHQgc2NhbiBzZWVzIGl0IGNsZWFuIHVudGlsIHJlLXdyaXR0ZW4uXFxuK1xcdCAqXFxuK1xcdCAqIGh1Z2V0bGIgaXMgZXhjbHVkZWQ6IGFuIGFsbG9jYXRlZC1idXQtZW1wdHkgaHVnZSBlbnRyeSByZWFkcyBhc1xcbitcXHQgKiBub3Qtd3JpdHRlbiB2aWEgcGFnZW1hcF9odWdldGxiX2NhdGVnb3J5KCksIHNvIHJlcG9ydGluZyBhblxcbitcXHQgKiB1bmFsbG9jYXRlZCBodWdldGxiIGhvbGUgYXMgd3JpdHRlbiBoZXJlIHdvdWxkIGJlIGluY29uc2lzdGVudFxcbitcXHQgKiB3aXRoaW4gdGhlIHNhbWUgVk1BLlxcbitcXHQgKi9cXG4rXFx0Y2F0ZWdvcmllcyA9IHAtXFx1MDAzZWN1cl92bWFfY2F0ZWdvcnk7XFxuK1xcdGlmICh1c2VyZmF1bHRmZF93cCh2bWEpIFxcdTAwMjZcXHUwMDI2ICFpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcXG4rXFx0XFx0Y2F0ZWdvcmllcyB8PSBQQUdFX0lTX1dSSVRURU47XFxuK1xcbitcXHRpZiAoIXBhZ2VtYXBfc2Nhbl9pc19pbnRlcmVzdGluZ19wYWdlKGNhdGVnb3JpZXMsIHApKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdHJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQocC1cXHUwMDNlY3VyX3ZtYV9jYXRlZ29yeSwgcCwgYWRkciwgXFx1MDAyNmVuZCk7XFxuK1xcdHJldCA9IHBhZ2VtYXBfc2Nhbl9vdXRwdXQoY2F0ZWdvcmllcywgcCwgYWRkciwgXFx1MDAyNmVuZCk7XFxuIFxcdGlmIChhZGRyID09IGVuZClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuY1xcbmluZGV4IGY5YmNmZjhlNzhmYWJiLi5hNGU4Y2M4YWVhNGI3YyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmNcXG5AQCAtMjUsNiArMjUsMTAgQEBcXG4gI2luY2x1ZGUgXFxcImtzZWxmdGVzdC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaHVnZXBhZ2Vfc2V0dGluZ3MuaFxcXCJcXG4gXFxuKyNpZm5kZWYgTUFEVl9DT0xMQVBTRVxcbisjZGVmaW5lIE1BRFZfQ09MTEFQU0UgMjVcXG4rI2VuZGlmXFxuK1xcbiAjZGVmaW5lIFBBR0VNQVBfQklUU19BTExcXHRcXHQoUEFHRV9JU19XUEFMTE9XRUQgfCBQQUdFX0lTX1dSSVRURU4gfFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0IFBBR0VfSVNfRklMRSB8IFBBR0VfSVNfUFJFU0VOVCB8XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHQgUEFHRV9JU19TV0FQUEVEIHwgUEFHRV9JU19QRk5aRVJPIHxcXHRcXFxcXFxuQEAgLTExMDIsNiArMTEwNiw1OSBAQCBzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF9zY2FuX3Rlc3Qodm9pZClcXG4gXFx0bXVubWFwKG1lbSwgbWVtX3NpemUpO1xcbiB9XFxuIFxcbisvKlxcbisgKiBBIDJNQiBhbm9uIFRIUCBkcm9wcGVkIHdpdGggTUFEVl9ET05UTkVFRCBsZWF2ZXMgYSBwbWRfbm9uZSBob2xlIHdpdGggbm9cXG4rICogcGFnZSB0YWJsZSwgd2hpY2ggcGFnZW1hcF9wYWdlX2NhdGVnb3J5KCkgbmV2ZXIgc2Vlcy4gUEFHRU1BUF9TQ0FOIG11c3RcXG4rICogc3RpbGwgcmVwb3J0IGl0IGFzIHdyaXR0ZW4gb24gYSB1ZmZkLXdwIFZNQSwgdmlhIHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSgpLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgdW5wb3B1bGF0ZWRfdGhwX2hvbGVfdGVzdCh2b2lkKVxcbit7XFxuK1xcdGxvbmcgbnBhZ2VzLCB3cml0dGVuID0gMCwgcmV0LCBpO1xcbitcXHRzdHJ1Y3QgcGFnZV9yZWdpb24gcmVnaW9uc1sxNl07XFxuK1xcdGNoYXIgKmFyZWEsICptZW07XFxuK1xcbitcXHRpZiAoIWhwYWdlX3NpemUpIHtcXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKFxcXCIlcyBUSFAgbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFx0bnBhZ2VzID0gaHBhZ2Vfc2l6ZSAvIHBhZ2Vfc2l6ZTtcXG4rXFxuK1xcdC8qIEdldCBhIFBNRC1hbGlnbmVkIHJhbmdlIHNvIHRoZSByYW5nZSBjYW4gYmUgYSBzaW5nbGUgVEhQLiAqL1xcbitcXHRhcmVhID0gbW1hcChOVUxMLCAyICogaHBhZ2Vfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSxcXG4rXFx0XFx0ICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUywgLTEsIDApO1xcbitcXHRpZiAoYXJlYSA9PSBNQVBfRkFJTEVEKVxcbitcXHRcXHRrc2Z0X2V4aXRfZmFpbF9tc2coXFxcIiVzIG1tYXAgZmFpbGVkXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuK1xcdG1lbSA9IChjaGFyICopKCgodW5zaWduZWQgbG9uZylhcmVhICsgaHBhZ2Vfc2l6ZSAtIDEpIFxcdTAwMjYgfihocGFnZV9zaXplIC0gMSkpO1xcbitcXG4rXFx0bWVtc2V0KG1lbSwgMSwgaHBhZ2Vfc2l6ZSk7XFxuK1xcdGlmIChtYWR2aXNlKG1lbSwgaHBhZ2Vfc2l6ZSwgTUFEVl9DT0xMQVBTRSkgfHxcXG4rXFx0ICAgICFjaGVja19odWdlX2Fub24obWVtLCAxLCBocGFnZV9zaXplKSkge1xcbitcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXFxcIiVzIGNvdWxkIG5vdCBmb3JtIGEgVEhQXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuK1xcdFxcdG11bm1hcChhcmVhLCAyICogaHBhZ2Vfc2l6ZSk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0d3BfaW5pdChtZW0sIGhwYWdlX3NpemUpO1xcbitcXG4rXFx0LyogRHJvcCB0aGUgd2hvbGUgUE1EOiBpdCBpcyBjbGVhcmVkIHRvIGEgcG1kX25vbmUgaG9sZS4gKi9cXG4rXFx0aWYgKG1hZHZpc2UobWVtLCBocGFnZV9zaXplLCBNQURWX0RPTlRORUVEKSlcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyBNQURWX0RPTlRORUVEIGZhaWxlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbitcXG4rXFx0cmV0ID0gcGFnZW1hcF9pb2N0bChtZW0sIGhwYWdlX3NpemUsIHJlZ2lvbnMsIDE2LCAwLCAwLFxcbitcXHRcXHRcXHQgICAgUEFHRV9JU19XUklUVEVOLCAwLCAwLCBQQUdFX0lTX1dSSVRURU4pO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyBzY2FuIGZhaWxlZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcmV0OyBpKyspXFxuK1xcdFxcdHdyaXR0ZW4gKz0gTEVOKHJlZ2lvbnNbaV0pO1xcbitcXG4rXFx0a3NmdF90ZXN0X3Jlc3VsdCh3cml0dGVuID09IG5wYWdlcyxcXG4rXFx0XFx0XFx0IFxcXCIlcyBwbWQtaG9sZSByZXBvcnRlZCB3cml0dGVuICglbGQgb2YgJWxkKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IF9fZnVuY19fLCB3cml0dGVuLCBucGFnZXMpO1xcbitcXG4rXFx0d3BfZnJlZShtZW0sIGhwYWdlX3NpemUpO1xcbitcXHRtdW5tYXAoYXJlYSwgMiAqIGhwYWdlX3NpemUpO1xcbit9XFxuK1xcbiBpbnQgc2FuaXR5X3Rlc3RzKHZvaWQpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBsb25nIG1lbV9zaXplLCB2ZWNfc2l6ZTtcXG5AQCAtMTYxMCw3ICsxNjY3LDcgQEAgaW50IG1haW4oaW50IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0aWYgKCFodWdldGxiX3NldHVwX2RlZmF1bHQoNCkpXFxuIFxcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJIdWdlVExCIHRlc3Qgd2lsbCBiZSBza2lwcGVkXFxcXG5cXFwiKTtcXG4gXFxuLVxcdGtzZnRfc2V0X3BsYW4oMTE4KTtcXG4rXFx0a3NmdF9zZXRfcGxhbigxMTkpO1xcbiBcXG4gXFx0cGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTtcXG4gXFx0aHBhZ2Vfc2l6ZSA9IHJlYWRfcG1kX3BhZ2VzaXplKCk7XFxuQEAgLTE3OTAsNiArMTg0Nyw3IEBAIGludCBtYWluKGludCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcbiBcXHQvKiAxOC4gVW5wb3B1bGF0ZWQgcHRlIHNjYW4tcGF0aCBjb25zaXN0ZW5jeSAqL1xcbiBcXHR1bnBvcHVsYXRlZF9zY2FuX3Rlc3QoKTtcXG4rXFx0dW5wb3B1bGF0ZWRfdGhwX2hvbGVfdGVzdCgpO1xcbiBcXG4gXFx0Y2xvc2UocGFnZW1hcF9mZCk7XFxuIFxcdGtzZnRfZmluaXNoZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjg6MjkuMDgyOTQ4MjQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTE3OTQ2MDg0NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNFUkZBVUxURkRcIixcbiAgICBcIlBST0NfUEFHRV9NT05JVE9SXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiSFVHRVRMQl9QQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFnZW1hcF9zY2FuX3B0ZV9ob2xlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBBR0VNQVBfU0NBTiBpb2N0bCBsb2dpYyBpbiBwcm9jZnMgdG8gY29ycmVjdGx5IHJlcG9ydCB1bnBvcHVsYXRlZCByYW5nZXMgKGhvbGVzKSBpbiB1c2VyZmF1bHRmZCB3cml0ZS1wcm90ZWN0ZWQgVk1BcyBhcyB3cml0dGVuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY29kZSB0aGF0IGFmZmVjdHMgdXNlci1mYWNpbmcgQVBJcyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWQwM2IwYzg1YjdkNTRiMWNmMDM5NDQ5MDM2ZTZkNjFhZTg5YWNlNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDE6Mjg6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9wcm9jL3Rhc2tfbW11LmNcbmluZGV4IGU0MzAyZmNmMDIyN2Q3Li40YjY0YjRlZDA4NGNlZSAxMDA2NDRcbi0tLSBhL2ZzL3Byb2MvdGFza19tbXUuY1xuKysrIGIvZnMvcHJvYy90YXNrX21tdS5jXG5AQCAtMzA1MCwxMiArMzA1MCwzMyBAQCBzdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuIHtcbiBcdHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCA9IHdhbGstXHUwMDNlcHJpdmF0ZTtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gd2Fsay1cdTAwM2V2bWE7XG4rXHR1bnNpZ25lZCBsb25nIGNhdGVnb3JpZXM7XG4gXHRpbnQgcmV0LCBlcnI7XG4gXG4tXHRpZiAoIXZtYSB8fCAhcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UocC1cdTAwM2VjdXJfdm1hX2NhdGVnb3J5LCBwKSlcbitcdGlmICghdm1hKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdC8qXG4rXHQgKiBBbiB1bnBvcHVsYXRlZCByYW5nZSB3aXRoIG5vIHBhZ2UgdGFibGUgLS0gZS5nLiBhIDJNQiBhbm9uIFRIUFxuK1x0ICogZHJvcHBlZCB2aWEgTUFEVl9ET05UTkVFRCwgd2hpY2ggcGFnZW1hcF9wYWdlX2NhdGVnb3J5KCkgbmV2ZXIgc2Vlc1xuK1x0ICogLS0gcmVhZHMgYXMgd3JpdHRlbiBvbiBhIHVmZmQtd3AgVk1BLCBtYXRjaGluZyB0aGUgcHRlX25vbmUgY2FzZVxuK1x0ICogdGhlcmUuIFJlcG9ydGluZyBpdCBhbHNvIGxldHMgdGhlIFBNX1NDQU5fV1BfTUFUQ0hJTkcgYXJtaW5nIGJlbG93XG4rXHQgKiBpbnN0YWxsIG1hcmtlcnMgKHVmZmRfd3BfcmFuZ2UoKSBhbGxvY2F0ZXMgdGhlIHBhZ2UgdGFibGUgdW5kZXJcbitcdCAqIFdQX1VOUE9QVUxBVEVEKSwgc28gdGhlIG5leHQgc2NhbiBzZWVzIGl0IGNsZWFuIHVudGlsIHJlLXdyaXR0ZW4uXG4rXHQgKlxuK1x0ICogaHVnZXRsYiBpcyBleGNsdWRlZDogYW4gYWxsb2NhdGVkLWJ1dC1lbXB0eSBodWdlIGVudHJ5IHJlYWRzIGFzXG4rXHQgKiBub3Qtd3JpdHRlbiB2aWEgcGFnZW1hcF9odWdldGxiX2NhdGVnb3J5KCksIHNvIHJlcG9ydGluZyBhblxuK1x0ICogdW5hbGxvY2F0ZWQgaHVnZXRsYiBob2xlIGFzIHdyaXR0ZW4gaGVyZSB3b3VsZCBiZSBpbmNvbnNpc3RlbnRcbitcdCAqIHdpdGhpbiB0aGUgc2FtZSBWTUEuXG4rXHQgKi9cbitcdGNhdGVnb3JpZXMgPSBwLVx1MDAzZWN1cl92bWFfY2F0ZWdvcnk7XG4rXHRpZiAodXNlcmZhdWx0ZmRfd3Aodm1hKSBcdTAwMjZcdTAwMjYgIWlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxuK1x0XHRjYXRlZ29yaWVzIHw9IFBBR0VfSVNfV1JJVFRFTjtcbitcbitcdGlmICghcGFnZW1hcF9zY2FuX2lzX2ludGVyZXN0aW5nX3BhZ2UoY2F0ZWdvcmllcywgcCkpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0cmV0ID0gcGFnZW1hcF9zY2FuX291dHB1dChwLVx1MDAzZWN1cl92bWFfY2F0ZWdvcnksIHAsIGFkZHIsIFx1MDAyNmVuZCk7XG4rXHRyZXQgPSBwYWdlbWFwX3NjYW5fb3V0cHV0KGNhdGVnb3JpZXMsIHAsIGFkZHIsIFx1MDAyNmVuZCk7XG4gXHRpZiAoYWRkciA9PSBlbmQpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jXG5pbmRleCBmOWJjZmY4ZTc4ZmFiYi4uYTRlOGNjOGFlYTRiN2MgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9wYWdlbWFwX2lvY3RsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3BhZ2VtYXBfaW9jdGwuY1xuQEAgLTI1LDYgKzI1LDEwIEBAXG4gI2luY2x1ZGUgXCJrc2VsZnRlc3QuaFwiXG4gI2luY2x1ZGUgXCJodWdlcGFnZV9zZXR0aW5ncy5oXCJcbiBcbisjaWZuZGVmIE1BRFZfQ09MTEFQU0VcbisjZGVmaW5lIE1BRFZfQ09MTEFQU0UgMjVcbisjZW5kaWZcbitcbiAjZGVmaW5lIFBBR0VNQVBfQklUU19BTExcdFx0KFBBR0VfSVNfV1BBTExPV0VEIHwgUEFHRV9JU19XUklUVEVOIHxcdFxcXG4gXHRcdFx0XHRcdCBQQUdFX0lTX0ZJTEUgfCBQQUdFX0lTX1BSRVNFTlQgfFx0XFxcbiBcdFx0XHRcdFx0IFBBR0VfSVNfU1dBUFBFRCB8IFBBR0VfSVNfUEZOWkVSTyB8XHRcXFxuQEAgLTExMDIsNiArMTEwNiw1OSBAQCBzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF9zY2FuX3Rlc3Qodm9pZClcbiBcdG11bm1hcChtZW0sIG1lbV9zaXplKTtcbiB9XG4gXG4rLypcbisgKiBBIDJNQiBhbm9uIFRIUCBkcm9wcGVkIHdpdGggTUFEVl9ET05UTkVFRCBsZWF2ZXMgYSBwbWRfbm9uZSBob2xlIHdpdGggbm9cbisgKiBwYWdlIHRhYmxlLCB3aGljaCBwYWdlbWFwX3BhZ2VfY2F0ZWdvcnkoKSBuZXZlciBzZWVzLiBQQUdFTUFQX1NDQU4gbXVzdFxuKyAqIHN0aWxsIHJlcG9ydCBpdCBhcyB3cml0dGVuIG9uIGEgdWZmZC13cCBWTUEsIHZpYSBwYWdlbWFwX3NjYW5fcHRlX2hvbGUoKS5cbisgKi9cbitzdGF0aWMgdm9pZCB1bnBvcHVsYXRlZF90aHBfaG9sZV90ZXN0KHZvaWQpXG4re1xuK1x0bG9uZyBucGFnZXMsIHdyaXR0ZW4gPSAwLCByZXQsIGk7XG4rXHRzdHJ1Y3QgcGFnZV9yZWdpb24gcmVnaW9uc1sxNl07XG4rXHRjaGFyICphcmVhLCAqbWVtO1xuK1xuK1x0aWYgKCFocGFnZV9zaXplKSB7XG4rXHRcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcIiVzIFRIUCBub3Qgc3VwcG9ydGVkXFxuXCIsIF9fZnVuY19fKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1x0bnBhZ2VzID0gaHBhZ2Vfc2l6ZSAvIHBhZ2Vfc2l6ZTtcbitcbitcdC8qIEdldCBhIFBNRC1hbGlnbmVkIHJhbmdlIHNvIHRoZSByYW5nZSBjYW4gYmUgYSBzaW5nbGUgVEhQLiAqL1xuK1x0YXJlYSA9IG1tYXAoTlVMTCwgMiAqIGhwYWdlX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4rXHRcdCAgICBNQVBfUFJJVkFURSB8IE1BUF9BTk9OWU1PVVMsIC0xLCAwKTtcbitcdGlmIChhcmVhID09IE1BUF9GQUlMRUQpXG4rXHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIiVzIG1tYXAgZmFpbGVkXFxuXCIsIF9fZnVuY19fKTtcbitcdG1lbSA9IChjaGFyICopKCgodW5zaWduZWQgbG9uZylhcmVhICsgaHBhZ2Vfc2l6ZSAtIDEpIFx1MDAyNiB+KGhwYWdlX3NpemUgLSAxKSk7XG4rXG4rXHRtZW1zZXQobWVtLCAxLCBocGFnZV9zaXplKTtcbitcdGlmIChtYWR2aXNlKG1lbSwgaHBhZ2Vfc2l6ZSwgTUFEVl9DT0xMQVBTRSkgfHxcbitcdCAgICAhY2hlY2tfaHVnZV9hbm9uKG1lbSwgMSwgaHBhZ2Vfc2l6ZSkpIHtcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdF9za2lwKFwiJXMgY291bGQgbm90IGZvcm0gYSBUSFBcXG5cIiwgX19mdW5jX18pO1xuK1x0XHRtdW5tYXAoYXJlYSwgMiAqIGhwYWdlX3NpemUpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHR3cF9pbml0KG1lbSwgaHBhZ2Vfc2l6ZSk7XG4rXG4rXHQvKiBEcm9wIHRoZSB3aG9sZSBQTUQ6IGl0IGlzIGNsZWFyZWQgdG8gYSBwbWRfbm9uZSBob2xlLiAqL1xuK1x0aWYgKG1hZHZpc2UobWVtLCBocGFnZV9zaXplLCBNQURWX0RPTlRORUVEKSlcbitcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiJXMgTUFEVl9ET05UTkVFRCBmYWlsZWRcXG5cIiwgX19mdW5jX18pO1xuK1xuK1x0cmV0ID0gcGFnZW1hcF9pb2N0bChtZW0sIGhwYWdlX3NpemUsIHJlZ2lvbnMsIDE2LCAwLCAwLFxuK1x0XHRcdCAgICBQQUdFX0lTX1dSSVRURU4sIDAsIDAsIFBBR0VfSVNfV1JJVFRFTik7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCIlcyBzY2FuIGZhaWxlZFxcblwiLCBfX2Z1bmNfXyk7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyByZXQ7IGkrKylcbitcdFx0d3JpdHRlbiArPSBMRU4ocmVnaW9uc1tpXSk7XG4rXG4rXHRrc2Z0X3Rlc3RfcmVzdWx0KHdyaXR0ZW4gPT0gbnBhZ2VzLFxuK1x0XHRcdCBcIiVzIHBtZC1ob2xlIHJlcG9ydGVkIHdyaXR0ZW4gKCVsZCBvZiAlbGQpXFxuXCIsXG4rXHRcdFx0IF9fZnVuY19fLCB3cml0dGVuLCBucGFnZXMpO1xuK1xuK1x0d3BfZnJlZShtZW0sIGhwYWdlX3NpemUpO1xuK1x0bXVubWFwKGFyZWEsIDIgKiBocGFnZV9zaXplKTtcbit9XG4rXG4gaW50IHNhbml0eV90ZXN0cyh2b2lkKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1fc2l6ZSwgdmVjX3NpemU7XG5AQCAtMTYxMCw3ICsxNjY3LDcgQEAgaW50IG1haW4oaW50IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdGlmICghaHVnZXRsYl9zZXR1cF9kZWZhdWx0KDQpKVxuIFx0XHRrc2Z0X3ByaW50X21zZyhcIkh1Z2VUTEIgdGVzdCB3aWxsIGJlIHNraXBwZWRcXG5cIik7XG4gXG4tXHRrc2Z0X3NldF9wbGFuKDExOCk7XG4rXHRrc2Z0X3NldF9wbGFuKDExOSk7XG4gXG4gXHRwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpO1xuIFx0aHBhZ2Vfc2l6ZSA9IHJlYWRfcG1kX3BhZ2VzaXplKCk7XG5AQCAtMTc5MCw2ICsxODQ3LDcgQEAgaW50IG1haW4oaW50IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcbiBcdC8qIDE4LiBVbnBvcHVsYXRlZCBwdGUgc2Nhbi1wYXRoIGNvbnNpc3RlbmN5ICovXG4gXHR1bnBvcHVsYXRlZF9zY2FuX3Rlc3QoKTtcbitcdHVucG9wdWxhdGVkX3RocF9ob2xlX3Rlc3QoKTtcbiBcbiBcdGNsb3NlKHBhZ2VtYXBfZmQpO1xuIFx0a3NmdF9maW5pc2hlZCgpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjg6MjkuMDgyOTUwOTE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMzNjQ3MTUyMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBib3RoIGBmcy9wcm9jL3Rhc2tfbW11LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vcGFnZW1hcF9pb2N0bC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFueXRoaW5nIHRoYXQgaW50ZXJhY3RzIHdpdGggYHByb2Nmc2AgYW5kIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgaXMgd29ydGggYSBjbG9zZXIgbG9vaywgZXNwZWNpYWxseSB3aGVuIGl0J3MgYmVpbmcgbW9kaWZpZWQuXG5cblNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpbiBgZnMvcHJvYy90YXNrX21tdS5jYCBpcyB3aXRoaW4gYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgYHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZWAgZnVuY3Rpb24gaXMga2V5LiBGcm9tIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgdGhlIHBhdGNoIG1vZGlmaWVzIGhvdyB0aGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggdW5wb3B1bGF0ZWQgcmFuZ2VzLCBvciBcImhvbGVzLFwiIHdpdGhpbiBWaXJ0dWFsIE1lbW9yeSBBcmVhcyAoVk1BcykgdGhhdCBhcmUgd3JpdGUtcHJvdGVjdGVkIHRocm91Z2ggdXNlcmZhdWx0ZmQuIFRoZSBjb3JlIGxvZ2ljIGlzIHRoZSBhZGRpdGlvbiBvZiBgUEFHRV9JU19XUklUVEVOYCB0byB0aGUgYGNhdGVnb3JpZXNgIGlmIGB1c2VyZmF1bHRmZF93cCh2bWEpYCBpcyB0cnVlIGFuZCBpdCdzIG5vdCBhIGh1Z2V0bGIgcGFnZS5cblxuTGV0J3MgZGl2ZSBkZWVwZXIgYW5kIGxvb2sgYXQgdGhlIGNvZGUsIHBhcnRpY3VsYXJseSB0aGF0IGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbmBgYGNcbnN0YXRpYyBpbnQgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVwdGgsIHN0cnVjdCBtbV93YWxrICp3YWxrKVxuYGBgXG5cblJpZ2h0LCBzbyBpdCdzIGNsZWFybHkgcGFydCBvZiB0aGUgcGFnZW1hcCBzY2FuIGZ1bmN0aW9uYWxpdHksIHF1aXRlIGxpa2VseSBhY2Nlc3NlZCB0aHJvdWdoIGFuIGBpb2N0bChQQUdFTUFQX1NDQU4pYC4gU2luY2UgdGhpcyBpcyBhIGNvcmUgbW0vcHJvY2ZzIGFyZWEsIHRoaXMgbW9kaWZpY2F0aW9uIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIEl0J3MgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGZvY3VzIHN5bWJvbHMuIENsZWFybHksIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIGlzIGEgcHJpbWFyeSBmb2N1cy4gSSdsbCBhbHNvIHdhbnQgdG8gbG9vayBmb3IgdGhlIGFzc29jaWF0ZWQgaW9jdGwgaGFuZGxlciwgcHJvYmFibHkgbmFtZWQgc29tZXRoaW5nIGxpa2UgYGRvX3BhZ2VtYXBfc2NhbmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBsb2NhdGUgdGhlIGRlZmluaXRpb24gaW4gYGZzL3Byb2MvdGFza19tbXUuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyODo1Mi40NDc2Njk4MTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzMzUxNjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VtYXBfc2Nhbl9wdGVfaG9sZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy90YXNrX21tdS5jPTMwNDE9c3RhdGljIGludCBwYWdlbWFwX3NjYW5faHVnZXRsYl9ob2xlX3dwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTMwNDctXFxuZnMvcHJvYy90YXNrX21tdS5jOjMwNDg6c3RhdGljIGludCBwYWdlbWFwX3NjYW5fcHRlX2hvbGUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzA0OS1cXHRcXHRcXHRcXHQgaW50IGRlcHRoLCBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0zMDk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgcGFnZW1hcF9zY2FuX29wcyA9IHtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMDk4LVxcdC5wbWRfZW50cnkgPSBwYWdlbWFwX3NjYW5fcG1kX2VudHJ5LFxcbmZzL3Byb2MvdGFza19tbXUuYzozMDk5OlxcdC5wdGVfaG9sZSA9IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSxcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzEwMC1cXHQuaHVnZXRsYl9lbnRyeSA9IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2VudHJ5LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyODo1Mi45MTEwNDM1OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMTQyMDA5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipGaW5kaW5nIHRoZSBJT0NUTCBIYW5kbGVyOiBBIFF1aWNrIFNlYXJjaCoqXG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgcHJldHR5IGNsZWFyOiBJIG5lZWQgdG8gbG9jYXRlIHRoZSBpb2N0bCBoYW5kbGVyLiBJdOKAmXMgdGhlIGdhdGVrZWVwZXIsIHRoZSBmdW5jdGlvbiB0aGF0J3MgZ29pbmcgdG8gaW50ZXJwcmV0IGFuZCBkaXNwYXRjaCB0aGUgc3BlY2lmaWMgY29tbWFuZHMgSSdtIHRocm93aW5nIGF0IHRoaXMgZGV2aWNlIG9yIGRyaXZlci4gV2l0aG91dCBpdCwgSSdtIGp1c3Qgc2hvdXRpbmcgaW50byB0aGUgdm9pZC4gVGltZSB0byBnZXQgZGlnZ2luZy4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyBhbmQgdGVjaG5pcXVlcywgcHJvYmFibHkgc3RhcnRpbmcgd2l0aCBhIHF1aWNrIGdyZXAgb3Igc2ltaWxhciBzZWFyY2guIEkgbmVlZCB0byB6ZXJvIGluIG9uIHdoZXJlIHRoZSByZWxldmFudCBjb2RlIHJlc2lkZXMsIGFuZCB3aGVyZSB0aGUgaW9jdGwgcHJvY2Vzc2luZyBpcyBsaWtlbHkgaGFwcGVuaW5nLiBMZXQncyBzZWUgd2hhdCB0aGF0IHNlYXJjaCB0dXJucyB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU2MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjI4OjU3LjEyNTI0NzE0NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDAxMDExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlbWFwX3NjYW5fb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvdGFza19tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmM9MzA0OD1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9wdGVfaG9sZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTMwOTUtXFxuZnMvcHJvYy90YXNrX21tdS5jOjMwOTY6c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBwYWdlbWFwX3NjYW5fb3BzID0ge1xcbmZzL3Byb2MvdGFza19tbXUuYy0zMDk3LVxcdC50ZXN0X3dhbGsgPSBwYWdlbWFwX3NjYW5fdGVzdF93YWxrLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTMyMDA9c3RhdGljIGxvbmcgZG9fcGFnZW1hcF9zY2FuKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHVhcmcpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzIzOC1cXHRcXHRyZXQgPSB3YWxrX3BhZ2VfcmFuZ2UobW0sIHdhbGtfc3RhcnQsIHAuYXJnLmVuZCxcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzIzOTpcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2cGFnZW1hcF9zY2FuX29wcywgXFx1MDAyNnApO1xcbmZzL3Byb2MvdGFza19tbXUuYy0zMjQwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyODo1Ny4yMTkyNjIyOTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTc0NTgzNjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgZG9fcGFnZW1hcF9zY2FuYCBJT0NUTCBIYW5kbGVyKipcblxuQWxyaWdodCwgSSdtIHRyYWNpbmcgdGhpcyBgaW9jdGxgIGhhbmRsZXIsIGBkb19wYWdlbWFwX3NjYW5gLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzZWUgaWYgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyBjb21lIGludG8gcGxheSBoZXJlLCByaWdodD8gVGhpcyBsb29rcyBsaWtlIGEgZGVlcCBkaXZlIGludG8gbWVtb3J5IG1hbmFnZW1lbnQuXG5cbkhtbSwgdGhlIHByZXNlbmNlIG9mIGB1c2VyZmF1bHRmZF93cCh2bWEpYCBpbW1lZGlhdGVseSBzY3JlYW1zIGBDT05GSUdfVVNFUkZBVUxURkRgIHRvIG1lLiBHb29kIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgdGhhdCBjb25maWcgcHJldHR5IHdlbGwg4oCTIGl0J3MgY3J1Y2lhbCBmb3IgdXNlcnNwYWNlIGZhdWx0IGhhbmRsaW5nLiBcblxuTm93LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgZnMvcHJvYy90YXNrX21tdS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRvX3BhZ2VtYXBfc2NhbmAgdGhlcmUsIGFuZCBwcm9iYWJseSBzb21lIHJlbGF0ZWQgY29kZSwgbGlrZWx5IGluY2x1ZGluZyBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYC4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIG1lYXQgb2YgaG93IHRoaXMgaGFuZGxlciBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCBwYWdlIHRhYmxlcywgbWVtb3J5IHJlZ2lvbnMsIGFuZCBwb3RlbnRpYWwgaG9sZXMgd2l0aGluIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuIEknbGwgYmUgbG9va2luZyBmb3IgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IHNjZW5hcmlvcywgcGVyaGFwcyBkZWFsaW5nIHdpdGggc2hhcmVkIG1lbW9yeSwgY29weS1vbi13cml0ZSwgYW5kIG1heWJlIGV2ZW4gTlVNQSBjb25zaWRlcmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjI5OjA0LjE5Mzg0NzYyM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2MjQ4MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fcGFnZW1hcF9zY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvdGFza19tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmM9MzE3Mz1zdGF0aWMgbG9uZyBwYWdlbWFwX3NjYW5fZmx1c2hfYnVmZmVyKHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcClcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMTk5LVxcbmZzL3Byb2MvdGFza19tbXUuYzozMjAwOnN0YXRpYyBsb25nIGRvX3BhZ2VtYXBfc2NhbihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyB1YXJnKVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMjAxLXtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0zMjczPXN0YXRpYyBsb25nIGRvX3BhZ2VtYXBfY21kKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTMyNzktXFx0Y2FzZSBQQUdFTUFQX1NDQU46XFxuZnMvcHJvYy90YXNrX21tdS5jOjMyODA6XFx0XFx0cmV0dXJuIGRvX3BhZ2VtYXBfc2NhbihtbSwgYXJnKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzI4MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjk6MDQuMzA5NDc2NjAxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1ODUwNTYwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqQXNzZXNzaW5nIHRoZSBOZWNlc3NpdHkgb2YgQ09ORklHX1VTRVJGQVVMVEZEKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nLCBhbmQgdGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6IGRvIHdlICpyZWFsbHkqIG5lZWQgYENPTkZJR19VU0VSRkFVTFRGRGA/IEl0J3MgYSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byB1c2VyLXNwYWNlIGZhdWx0IGhhbmRsaW5nLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGFjdHVhbGx5IHJlbGV2YW50IGluIHRoZSBjdXJyZW50IGNvbnRleHQuIFRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGFyZSBzdWJzdGFudGlhbCwgZnJvbSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyB0byBzZWN1cml0eSByaXNrcywgc28gZmlndXJpbmcgb3V0IGlmIGl0J3MgcmVxdWlyZWQgaXMgcGFyYW1vdW50IGJlZm9yZSBwcm9jZWVkaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpZiB0aGlzIGlzIGEgY3JpdGljYWwgY29tcG9uZW50IG9yIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBzYWZlbHkgZGlzYWJsZWQgb3Igb21pdHRlZC4gVGhlIGdvYWwgaXMgdG8ga2VlcCB0aGUgc3lzdGVtIGxlYW4gYW5kIGVmZmljaWVudCB1bmxlc3MgdGhpcyBjb25maWd1cmF0aW9uIGlzIHRydWx5IGluZGlzcGVuc2FibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyOTowNy4zNjc5ODQ2OTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTk0MzAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJVU0VSRkFVTFRGRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy90YXNrX21tdS5jPTExNjY9c3RhdGljIHZvaWQgc2hvd19zbWFwX3ZtYV9mbGFncyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMzYtI2VuZGlmIC8qIENPTkZJR19BUkNIX0hBU19QS0VZUyAqL1xcbmZzL3Byb2MvdGFza19tbXUuYzoxMjM3OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1VTRVJGQVVMVEZEX01JTk9SXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMzgtXFx0XFx0W2lsb2cyKFZNX1VGRkRfTUlOT1IpXVxcdD0gXFxcInVpXFxcIixcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIzOTojZW5kaWYgLyogQ09ORklHX0hBVkVfQVJDSF9VU0VSRkFVTFRGRF9NSU5PUiAqL1xcbmZzL3Byb2MvdGFza19tbXUuYy0xMjQwLSNpZmRlZiBDT05GSUdfQVJDSF9IQVNfVVNFUl9TSEFET1dfU1RBQ0tcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjk6MDcuODA3OTMyNDU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4OTUzMTY0NTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gdGhlIGZpZWxkOlxuXG4qKkxvY2F0aW5nIHRoZSBIZWFydCBvZiB0aGUgTWF0dGVyOiBFeGFtaW5pbmcgYHVzZXJmYXVsdGZkX3dwYCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGB1c2VyZmF1bHRmZF93cGAgY29uc3RydWN0LiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3aGVyZSAqaXMqIHRoaXMgdGhpbmcgZGVmaW5lZD8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGxvY2F0aW9uIHdpdGhpbiB0aGUgY29kZWJhc2UuIEtub3dpbmcgaXRzIGRlZmluaXRpb24gd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgZm91bmRhdGlvbiBmb3IgYW5hbHl6aW5nIGl0cyBwdXJwb3NlLCBpbnRlcmFjdGlvbnMsIGFuZCBwb3RlbnRpYWwgaXNzdWVzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGRlZXBlciBpbnZlc3RpZ2F0aW9uLCB3aGV0aGVyIGl0J3MgdW5kZXJzdGFuZGluZyBhIGJ1ZyByZXBvcnQsIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIG9yIHNpbXBseSBkZWVwZW5pbmcgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlLiBMb2NhdGluZyB0aGUgZGVmaW5pdGlvbiB3aWxsIGJlIGNydWNpYWwgYmVmb3JlIEkgY2FuIGRvIGFueSBraW5kIG9mIGNvZGUgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNzAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMToyOTo1Ni43NjEwOTkzNTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDQyODMxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNlcmZhdWx0ZmRfd3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaD01NTU9c3RhdGljIGlubGluZSBwdGVfbWFya2VyIGNvcHlfcHRlX21hcmtlcihcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmgtNTYyLVxcdC8qIE9ubHkgY29weSBQVEUgbWFya2VycyBpZiBVRkZEIHJlZ2lzdGVyIG1hdGNoZXMuICovXFxuaW5jbHVkZS9saW51eC9tbV9pbmxpbmUuaDo1NjM6XFx0aWYgKChzcmNtIFxcdTAwMjYgUFRFX01BUktFUl9VRkZEX1dQKSBcXHUwMDI2XFx1MDAyNiB1c2VyZmF1bHRmZF93cChkc3Rfdm1hKSlcXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTU2NC1cXHRcXHRkc3RtIHw9IFBURV9NQVJLRVJfVUZGRF9XUDtcXG4tLVxcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg9NTgyPXB0ZV9pbnN0YWxsX3VmZmRfd3BfaWZfbmVlZGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTU5My1cXHQvKlxcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmg6NTk0OlxcdCAqIE5PVEU6IHVzZXJmYXVsdGZkX3dwX3VucG9wdWxhdGVkKCkgZG9lc24ndCBuZWVkIHRoaXMgd2hvbGVcXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTU5NS1cXHQgKiB0aGluZywgYmVjYXVzZSB3aGVuIHphcHBpbmcgZWl0aGVyIGl0IG1lYW5zIGl0J3MgZHJvcHBpbmcgdGhlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oLTU5OC1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oOjU5OTpcXHRpZiAodm1hX2lzX2Fub255bW91cyh2bWEpIHx8ICF1c2VyZmF1bHRmZF93cCh2bWEpKVxcbmluY2x1ZGUvbGludXgvbW1faW5saW5lLmgtNjAwLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTE5Nj1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfbWlzc2luZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTIwMC1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyMDE6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTIwMi17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yMTE9c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3B0ZV93cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTIxMy17XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjE0OlxcdHJldHVybiB1c2VyZmF1bHRmZF93cCh2bWEpIFxcdTAwMjZcXHUwMDI2IHB0ZV91ZmZkX3dwKHB0ZSk7XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjE1LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oPTIxNz1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfaHVnZV9wbWRfd3Aoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yMTkte1xcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjIyMDpcXHRyZXR1cm4gdXNlcmZhdWx0ZmRfd3Aodm1hKSBcXHUwMDI2XFx1MDAyNiBwbWRfdWZmZF93cChwbWQpO1xcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTIyMS19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yNTI9ZXh0ZXJuIHZvaWQgdXNlcmZhdWx0ZmRfdW5tYXBfY29tcGxldGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjUzLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp1Zik7XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjU0OmV4dGVybiBib29sIHVzZXJmYXVsdGZkX3dwX3VucG9wdWxhdGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTtcXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyNTU6ZXh0ZXJuIGJvb2wgdXNlcmZhdWx0ZmRfd3BfYXN5bmMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI1Ni1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyNTc6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwX3VzZV9tYXJrZXJzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI1OC17XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjU5LVxcdC8qIE9ubHkgd3ItcHJvdGVjdCBtb2RlIHVzZXMgcHRlIG1hcmtlcnMgKi9cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyNjA6XFx0aWYgKCF1c2VyZmF1bHRmZF93cCh2bWEpKVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI2MS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0yNzAtXFx0ICovXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MjcxOlxcdHJldHVybiB1c2VyZmF1bHRmZF93cF91bnBvcHVsYXRlZCh2bWEpO1xcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTI3Mi19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0zMTY9c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX21pc3Npbmcoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0zMjAtXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6MzIxOnN0YXRpYyBpbmxpbmUgYm9vbCB1c2VyZmF1bHRmZF93cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0zMjIte1xcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg9Mzk4PXN0YXRpYyBpbmxpbmUgYm9vbCB1ZmZkX2Rpc2FibGVfZmF1bHRfYXJvdW5kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDAyLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjQwMzpzdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfd3BfdW5wb3B1bGF0ZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDA0LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQwNy1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDo0MDg6c3RhdGljIGlubGluZSBib29sIHVzZXJmYXVsdGZkX3dwX2FzeW5jKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQwOS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD00MTM9c3RhdGljIGlubGluZSBib29sIHZtYV9oYXNfdWZmZF93aXRob3V0X2V2ZW50X3JlbWFwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDE3LVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oOjQxODpzdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfd3BfdXNlX21hcmtlcnMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtNDE5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6Mjk6NTguNzA1Mzg3MjY3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMjM3Nzc0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHVzZXJmYXVsdGZkX2suaCoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGRvd24gdGhpcyBwYXRoLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19VU0VSRkFVTFRGRGAgaXMsIGluIGZhY3QsIGVuYWJsZWQuIEl0J3MgYWxtb3N0IHNlY29uZCBuYXR1cmUgdG8gc3RhcnQgaGVyZSB3aGVuIGRlYWxpbmcgd2l0aCBVRkZELiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBrZXJuZWwgaXMgZXZlbiBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhpcy4gVGltZSB0byBjcmFjayBvcGVuIGBpbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaGAgYW5kIGNvbmZpcm0gdGhhdCB0aGUgcHJlcmVxdWlzaXRlIG9wdGlvbnMgYXJlIHNldC4gTm8gcG9pbnQgaW4gd2FzdGluZyB0aW1lIGlmIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkIGF0IGNvbXBpbGUgdGltZS4gSXQncyBhIGZ1bmRhbWVudGFsIGNoZWNrLCBidXQgYSBuZWNlc3Nhcnkgb25lIHRvIGVuc3VyZSBJJ20gYmFya2luZyB1cCB0aGUgcmlnaHQgdHJlZS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBoZWFkZXIgZmlsZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzQ1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzA6MDguMDI5MTY3NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNjY0ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19VU0VSRkFVTFRGRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC0xMS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoxMjojaWZkZWYgQ09ORklHX1VTRVJGQVVMVEZEXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMTMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaD0yNzg9c3RhdGljIGlubGluZSBib29sIHB0ZV9zd3BfdWZmZF93cF9hbnkocHRlX3QgcHRlKVxcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjkzLX1cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaDoyOTQ6I2Vsc2UgLyogQ09ORklHX1VTRVJGQVVMVEZEICovXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmgtMjk1LVxcbi0tXFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg9NDI3PXN0YXRpYyBpbmxpbmUgYm9vbCBwdGVfc3dwX3VmZmRfd3BfYW55KHB0ZV90IHB0ZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvdXNlcmZhdWx0ZmRfay5oLTQzMC19XFxuaW5jbHVkZS9saW51eC91c2VyZmF1bHRmZF9rLmg6NDMxOiNlbmRpZiAvKiBDT05GSUdfVVNFUkZBVUxURkQgKi9cXG5pbmNsdWRlL2xpbnV4L3VzZXJmYXVsdGZkX2suaC00MzItI2VuZGlmIC8qIF9MSU5VWF9VU0VSRkFVTFRGRF9LX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzA6MDguMTExODM3NjQ5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4ODAyMjQyMTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBpbml0aWFsIHRob3VnaHRzLCBwdXR0aW5nIG15c2VsZiBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGtlcm5lbCBjb2RlIGludmVzdGlnYXRpb246XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHdlIG5lZWQgYENPTkZJR19VU0VSRkFVTFRGRGAuIFRoYXQncyBhIGdpdmVuLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXMgZW5hYmxlZC4gTm93LCB3aGF0J3MgdGhlIGRlYWwgd2l0aCBgUEFHRU1BUF9TQ0FOYD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBkZXBlbmRlbnQgb24gYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBtYWtlcyBpdCB0aWNrLiBMZXQgbWUgZmluZCB3aGVyZSB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkLiBJIHNob3VsZCBzdGFydCB3aXRoIGBmcy9wcm9jL3Rhc2tfbW11LmNgLCBzaW5jZSB0aGF0J3Mgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgcGFnZW1hcC1yZWxhdGVkIG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBgZG9fcGFnZW1hcF9zY2FuYCBhbmQgYGRvX3BhZ2VtYXBfY21kYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYWJvdXQgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIGxvb2sgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI1NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMwOjI2LjkxNDA4MTg4NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3NzY5NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fcGFnZW1hcF9zY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvdGFza19tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmM9MzE3Mz1zdGF0aWMgbG9uZyBwYWdlbWFwX3NjYW5fZmx1c2hfYnVmZmVyKHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcClcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMTk5LVxcbmZzL3Byb2MvdGFza19tbXUuYzozMjAwOnN0YXRpYyBsb25nIGRvX3BhZ2VtYXBfc2NhbihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyB1YXJnKVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMjAxLXtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0zMjczPXN0YXRpYyBsb25nIGRvX3BhZ2VtYXBfY21kKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTMyNzktXFx0Y2FzZSBQQUdFTUFQX1NDQU46XFxuZnMvcHJvYy90YXNrX21tdS5jOjMyODA6XFx0XFx0cmV0dXJuIGRvX3BhZ2VtYXBfc2NhbihtbSwgYXJnKTtcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzI4MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzA6MjcuMDEzODYzNTIyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjI0Mjk2MzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipDaGVja2luZyBmb3IgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBgZG9fcGFnZW1hcF9zY2FuYCBmdW5jdGlvbiwgSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGl0J3MgcG90ZW50aWFsbHkgZ3VhcmRlZCBieSBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZnVuY3Rpb24gaXMgYWx3YXlzIGNvbXBpbGVkLCBvciBpZiBpdHMgaW5jbHVzaW9uIGlzIGRlcGVuZGVudCBvbiBzb21lIGNvbmZpZ3VyYXRpb24gZmxhZyBvciBzeXN0ZW0gZGVmaW5pdGlvbi4gSWYgaXQgKmlzKiBjb25kaXRpb25hbCwgaXQgd2lsbCBzZXZlcmVseSBpbXBhY3QgaG93IEkgaW50ZXJwcmV0IGl0cyBiZWhhdmlvci4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIHN5c3RlbSwgYW5kIGlmIEkgY2FuIGV2ZW4gcmVseSBvbiBpdHMgcHJlc2VuY2UgaW4gYWxsIHNjZW5hcmlvcy4gVGltZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBgI2lmZGVmYCBvciBzaW1pbGFyIGRpcmVjdGl2ZXMgc3Vycm91bmRpbmcgaXQuIEknbGwgc2VhcmNoIGZvciB0aG9zZSBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMDo0Mi4yMzgxNjI0NDNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNjI2MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlmZGVmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvdGFza19tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL3Rhc2tfbW11LmM9OTQ9dW5zaWduZWQgbG9uZyB0YXNrX3N0YXRtKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEwNi1cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTA3OiNpZmRlZiBDT05GSUdfTlVNQVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDgtLypcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0xMjg9c3RhdGljIHZvaWQgcmVsZWFzZV90YXNrX21lbXBvbGljeShzdHJ1Y3QgcHJvY19tYXBzX3ByaXZhdGUgKnByaXYpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMyLVxcbmZzL3Byb2MvdGFza19tbXUuYzoxMzM6I2lmZGVmIENPTkZJR19QRVJfVk1BX0xPQ0tcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTM0LVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTU0NT1zdGF0aWMgaW50IHBpZF9tYXBzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtNTYyLVxcbmZzL3Byb2MvdGFza19tbXUuYzo1NjM6I2lmZGVmIENPTkZJR19QRVJfVk1BX0xPQ0tcXG5mcy9wcm9jL3Rhc2tfbW11LmMtNTY0LVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTg2Mz1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX21hcHNfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy04OTAtXFxuZnMvcHJvYy90YXNrX21tdS5jOjg5MTojaWZkZWYgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SXFxuZnMvcHJvYy90YXNrX21tdS5jLTg5Mi1zdHJ1Y3QgbWVtX3NpemVfc3RhdHMge1xcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTk0Nz1zdGF0aWMgdm9pZCBzbWFwc19hY2NvdW50KHN0cnVjdCBtZW1fc2l6ZV9zdGF0cyAqbXNzLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDIxLVxcbmZzL3Byb2MvdGFza19tbXUuYzoxMDIyOiNpZmRlZiBDT05GSUdfU0hNRU1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTAyMy1zdGF0aWMgaW50IHNtYXBzX3B0ZV9ob2xlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTAzOT1zdGF0aWMgdm9pZCBzbWFwc19wdGVfaG9sZV9sb29rdXAodW5zaWduZWQgbG9uZyBhZGRyLCBzdHJ1Y3QgbW1fd2FsayAqd2FsaylcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTA0MC17XFxuZnMvcHJvYy90YXNrX21tdS5jOjEwNDE6I2lmZGVmIENPTkZJR19TSE1FTVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDQyLVxcdGlmICh3YWxrLVxcdTAwM2VvcHMtXFx1MDAzZXB0ZV9ob2xlKSB7XFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTA0OT1zdGF0aWMgdm9pZCBzbWFwc19wdGVfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEwOTQtXFxuZnMvcHJvYy90YXNrX21tdS5jOjEwOTU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMDk2LXN0YXRpYyB2b2lkIHNtYXBzX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MTE2Nj1zdGF0aWMgdm9pZCBzaG93X3NtYXBfdm1hX2ZsYWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIwOC1cXHRcXHRbaWxvZzIoVk1fRE9OVERVTVApXVxcdD0gXFxcImRkXFxcIixcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIwOTojaWZkZWYgQ09ORklHX0FSTTY0X0JUSVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjEwLVxcdFxcdFtpbG9nMihWTV9BUk02NF9CVEkpXVxcdD0gXFxcImJ0XFxcIixcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIxMS0jZW5kaWZcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIxMjojaWZkZWYgQ09ORklHX01FTV9TT0ZUX0RJUlRZXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMTMtXFx0XFx0W2lsb2cyKFZNX1NPRlRESVJUWSldXFx0PSBcXFwic2RcXFwiLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMjAtXFx0XFx0W2lsb2cyKFZNX1VGRkRfV1ApXVxcdD0gXFxcInV3XFxcIixcXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIyMTojaWZkZWYgQ09ORklHX0FSTTY0X01URVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjIyLVxcdFxcdFtpbG9nMihWTV9NVEUpXVxcdFxcdD0gXFxcIm10XFxcIixcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjI0LSNlbmRpZlxcbmZzL3Byb2MvdGFza19tbXUuYzoxMjI1OiNpZmRlZiBDT05GSUdfQVJDSF9IQVNfUEtFWVNcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTIyNi1cXHRcXHQvKiBUaGVzZSBjb21lIG91dCB2aWEgUHJvdGVjdGlvbktleTogKi9cXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjM2LSNlbmRpZiAvKiBDT05GSUdfQVJDSF9IQVNfUEtFWVMgKi9cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTIzNzojaWZkZWYgQ09ORklHX0hBVkVfQVJDSF9VU0VSRkFVTFRGRF9NSU5PUlxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjM4LVxcdFxcdFtpbG9nMihWTV9VRkZEX01JTk9SKV1cXHQ9IFxcXCJ1aVxcXCIsXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyMzktI2VuZGlmIC8qIENPTkZJR19IQVZFX0FSQ0hfVVNFUkZBVUxURkRfTUlOT1IgKi9cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTI0MDojaWZkZWYgQ09ORklHX0FSQ0hfSEFTX1VTRVJfU0hBRE9XX1NUQUNLXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyNDEtXFx0XFx0W2lsb2cyKFZNX1NIQURPV19TVEFDSyldID0gXFxcInNzXFxcIixcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0xMjQ1LSNlbmRpZlxcbmZzL3Byb2MvdGFza19tbXUuYzoxMjQ2OiNpZmRlZiBDT05GSUdfNjRCSVRcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI0Ny1cXHRcXHRbaWxvZzIoVk1fU0VBTEVEKV0gPSBcXFwic2xcXFwiLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTEyNjEtXFxuZnMvcHJvYy90YXNrX21tdS5jOjEyNjI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTI2My1zdGF0aWMgaW50IHNtYXBzX2h1Z2V0bGJfcmFuZ2UocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0xMzA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgc21hcHNfc2htZW1fd2Fsa19vcHMgPSB7XFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMTMxMy1cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MTMxNDojaWZkZWYgQ09ORklHX1BFUl9WTUFfTE9DS1xcbmZzL3Byb2MvdGFza19tbXUuYy0xMzE1LVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTIwMjE9c3RhdGljIHBhZ2VtYXBfZW50cnlfdCBwdGVfdG9fcGFnZW1hcF9lbnRyeShzdHJ1Y3QgcGFnZW1hcHJlYWQgKnBtLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTIwODYtXFxuZnMvcHJvYy90YXNrX21tdS5jOjIwODc6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0yMDg4LXN0YXRpYyBpbnQgcGFnZW1hcF9wbWRfcmFuZ2VfdGhwKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjE2Nj1zdGF0aWMgaW50IHBhZ2VtYXBfcG1kX3JhbmdlKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTIxNzQtXFxuZnMvcHJvYy90YXNrX21tdS5jOjIxNzU6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0yMTc2LVxcdHB0bCA9IHBtZF90cmFuc19odWdlX2xvY2socG1kcCwgdm1hKTtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0yMjA3LVxcbmZzL3Byb2MvdGFza19tbXUuYzoyMjA4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuZnMvcHJvYy90YXNrX21tdS5jLTIyMDktLyogVGhpcyBmdW5jdGlvbiB3YWxrcyB3aXRoaW4gb25lIGh1Z2V0bGIgZW50cnkgaW4gdGhlIHNpbmdsZSBjYWxsICovXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9MjQ5MD1zdGF0aWMgdm9pZCBtYWtlX3VmZmRfd3BfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTI1MDctXFxuZnMvcHJvYy90YXNrX21tdS5jOjI1MDg6I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0yNTA5LXN0YXRpYyB1bnNpZ25lZCBsb25nIHBhZ2VtYXBfdGhwX2NhdGVnb3J5KHN0cnVjdCBwYWdlbWFwX3NjYW5fcHJpdmF0ZSAqcCxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0yNTU0PXN0YXRpYyB2b2lkIG1ha2VfdWZmZF93cF9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjU2OS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MjU3MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0yNTcxLXN0YXRpYyB1bnNpZ25lZCBsb25nIHBhZ2VtYXBfaHVnZXRsYl9jYXRlZ29yeShwdGVfdCBwdGUpXFxuLS1cXG5mcy9wcm9jL3Rhc2tfbW11LmM9Mjc4ND1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl90aHBfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0yNzg2LXtcXG5mcy9wcm9jL3Rhc2tfbW11LmM6Mjc4NzojaWZkZWYgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFXFxuZnMvcHJvYy90YXNrX21tdS5jLTI3ODgtXFx0c3RydWN0IHBhZ2VtYXBfc2Nhbl9wcml2YXRlICpwID0gd2Fsay1cXHUwMDNlcHJpdmF0ZTtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0yODM1PXN0YXRpYyBpbnQgcGFnZW1hcF9zY2FuX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jLTI5MzItXFxuZnMvcHJvYy90YXNrX21tdS5jOjI5MzM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMjkzNC1zdGF0aWMgaW50IHBhZ2VtYXBfc2Nhbl9odWdldGxiX2VudHJ5KHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTMyODc9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3BhZ2VtYXBfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMjk2LVxcbmZzL3Byb2MvdGFza19tbXUuYzozMjk3OiNpZmRlZiBDT05GSUdfTlVNQVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMjk4LVxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTMzNDg9c3RhdGljIHN0cnVjdCBwYWdlICpjYW5fZ2F0aGVyX251bWFfc3RhdHMocHRlX3QgcHRlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zMzcwLVxcbmZzL3Byb2MvdGFza19tbXUuYzozMzcxOiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzM3Mi1zdGF0aWMgc3RydWN0IHBhZ2UgKmNhbl9nYXRoZXJfbnVtYV9zdGF0c19wbWQocG1kX3QgcG1kLFxcbi0tXFxuZnMvcHJvYy90YXNrX21tdS5jPTMzOTc9c3RhdGljIGludCBnYXRoZXJfcHRlX3N0YXRzKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zNDA1LVxcbmZzL3Byb2MvdGFza19tbXUuYzozNDA2OiNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG5mcy9wcm9jL3Rhc2tfbW11LmMtMzQwNy1cXHRwdGwgPSBwbWRfdHJhbnNfaHVnZV9sb2NrKHBtZCwgdm1hKTtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zNDM1LX1cXG5mcy9wcm9jL3Rhc2tfbW11LmM6MzQzNjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmZzL3Byb2MvdGFza19tbXUuYy0zNDM3LXN0YXRpYyBpbnQgZ2F0aGVyX2h1Z2V0bGJfc3RhdHMocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYz0zNDY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgc2hvd19udW1hX29wcyA9IHtcXG4tLVxcbmZzL3Byb2MvdGFza19tbXUuYy0zNDcyLVxcbmZzL3Byb2MvdGFza19tbXUuYzozNDczOiNpZmRlZiBDT05GSUdfUEVSX1ZNQV9MT0NLXFxuZnMvcHJvYy90YXNrX21tdS5jLTM0NzQtc3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBzaG93X251bWFfdm1hX2xvY2tfb3BzID0ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMDo0Mi4zMTk3OTgzOTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAxMTI1NzEwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkNoZWNraW5nIHRoZSBDb25kaXRpb25hbCBDb21waWxhdGlvbiBvZiBgZG9fcGFnZW1hcF9zY2FuYCoqXG5cbkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYGRvX3BhZ2VtYXBfc2NhbmAgbWlnaHQgbm90IGJlIGd1YXJkZWQgYnkgYW4gYCNpZmRlZmAgYXMgbXVjaCBhcyBJIGluaXRpYWxseSB0aG91Z2h0LCBvdXRzaWRlIG9mIG1heWJlIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgLCBidXQgdGhhdCdzIGp1c3QgYSBodW5jaCByaWdodCBub3cuIEkgbmVlZCB0byBiZSBzdXJlLiBUaW1lIHRvIHZlcmlmeSBpdHMgdXNhZ2UuIFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhhdCBpbmZvcm1hdGlvbiB3aWxsIGJlIGF0IHRoZSB2ZXJ5IHRvcCBvZiBgZnMvcHJvYy90YXNrX21tdS5jYCwgb3IgbWF5YmUgdGhlIGFzc29jaWF0ZWQgYGZzL3Byb2MvTWFrZWZpbGVgLiBJJ2xsIHNjYW4gdGhyb3VnaCB0aG9zZSBmaWxlcyBhbmQgcXVpY2tseSBjb25maXJtIGlmIHRoZXJlJ3MgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHN1cnJvdW5kaW5nIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGl0c2VsZiwgYW5kIGlmIHNvLCB3aGF0IHRoZSByZWxldmFudCBjb25maWcgc3ltYm9sIGlzLiBLbm93aW5nIHRoaXMgd2lsbCBpbW1lZGlhdGVseSBjbGFyaWZ5IHRoZSBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIG9yLCBtb3JlIGludGVyZXN0aW5nbHksIHdoZW4gaXQgKmlzbid0Ki5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NDgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMTowMi40MzIzNzM1NDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNjc4Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRhc2tfbW11XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvcHJvYy9NYWtlZmlsZT02PW9iai15ICAgKz0gcHJvYy5vXFxuZnMvcHJvYy9NYWtlZmlsZS03LVxcbmZzL3Byb2MvTWFrZWZpbGU6ODpDRkxBR1NfdGFza19tbXUub1xcdCs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxcbmZzL3Byb2MvTWFrZWZpbGUtOS1wcm9jLXlcXHRcXHRcXHQ6PSBub21tdS5vIHRhc2tfbm9tbXUub1xcbmZzL3Byb2MvTWFrZWZpbGU6MTA6cHJvYy0kKENPTkZJR19NTVUpXFx0Oj0gdGFza19tbXUub1xcbmZzL3Byb2MvTWFrZWZpbGUtMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMxOjAyLjUyNTA1OTEyNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTg2MjI3NjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgTWFuYWdlbWVudCBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBpcyBkZWZpbml0ZWx5IGBDT05GSUdfTU1VYC4gVGhhdCdzIGEgZ2l2ZW4uIE5vdywgSSdtIGN1cmlvdXMgYWJvdXQgYENPTkZJR19QUk9DX1BBR0VfTU9OSVRPUmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIGludGVncmF0ZWQsIHNwZWNpZmljYWxseSB3aGVyZSB0aGUgcGFnZW1hcCBmdW5jdGlvbmFsaXR5IGlzIGhvb2tlZCB1cC4gTXkgaW5zdGluY3QgaXMgdGhhdCBpdCdzIGxpa2VseSBoYW5kbGVkIHdpdGhpbiB0aGUgYGZzL3Byb2NgIHN1YnRyZWUsIG1heWJlIGBmcy9wcm9jL2Jhc2UuY2AsIG9yIHNvbWV0aGluZyBjbG9zZWx5IHJlbGF0ZWQuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIHRvIHBpbnBvaW50IGV4YWN0bHkgaG93IGFuZCB3aGVyZSBgcGFnZW1hcGAgaXMgcmVnaXN0ZXJlZCBhbmQgdXRpbGl6ZWQuIFRoYXQgd2lsbCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzUxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzE6MTguMzg3MzM4ODI1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTg4MTM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlbWFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL3Byb2MvYmFzZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3Byb2MvYmFzZS5jPTMyODI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgdGdpZF9iYXNlX3N0dWZmW10gPSB7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zMzI0LVxcdFJFRyhcXFwic21hcHNfcm9sbHVwXFxcIiwgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjMzMjU6XFx0UkVHKFxcXCJwYWdlbWFwXFxcIiwgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTMzMjYtI2VuZGlmXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0zNjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRpZF9iYXNlX3N0dWZmW10gPSB7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zNjc5LVxcdFJFRyhcXFwic21hcHNfcm9sbHVwXFxcIiwgU19JUlVHTywgcHJvY19waWRfc21hcHNfcm9sbHVwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjM2ODA6XFx0UkVHKFxcXCJwYWdlbWFwXFxcIiwgICAgU19JUlVTUiwgcHJvY19wYWdlbWFwX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTM2ODEtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMxOjE4LjQ2NzIyNTY2NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzE2NDI0NzQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQ6XG5cbioqSW52ZXN0aWdhdGluZyBhIFByZXByb2Nlc3NvciBEaXJlY3RpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvZGUgZmxvdyBoZXJlLiBUaGUgaW1tZWRpYXRlIHRoaW5nIEknbSBmb2N1c2luZyBvbiBpcyB0aGUgYCNlbmRpZmAgZGlyZWN0aXZlIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBgUkVHKFwicGFnZW1hcFwiKWAgbWFjcm8gY2FsbC4gSXQncyBhIGNsYXNzaWMgZGVidWdnaW5nIGFwcHJvYWNoIOKAkyBzdGFydCBhdCBhIGtub3duIHBvaW50IGFuZCBzZWUgd2hhdCBjb25kaXRpb25hbHMgb3IgcHJlcHJvY2Vzc29yIGFjdGl2aXR5IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoaXMgc3BlY2lmaWMgcmVnaXN0ZXIgZGVjbGFyYXRpb24uIEknbSBhc3N1bWluZyBgI2VuZGlmYCBpcyBjbG9zaW5nIG91dCBhIGJsb2NrIG9mIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoYXQgdGhlIGNvbmRpdGlvbiB3YXMgYW5kIGlmIGl0J3MgcmVsZXZhbnQgdG8gaG93IHRoZSBgcGFnZW1hcGAgcmVnaXN0ZXIgaXMgZGVmaW5lZCBvciB1c2VkLiBJcyB0aGlzIGJsb2NrIHBvdGVudGlhbGx5IGVuYWJsZWQgb3IgZGlzYWJsZWQgZGVwZW5kaW5nIG9uIGJ1aWxkIGZsYWdzLCB0YXJnZXQgYXJjaGl0ZWN0dXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBxdWljayBzY2FuIG9mIHRoZSBjb2RlIGJsb2NrIGFib3ZlIGAjZW5kaWZgIHdpbGwgaG9wZWZ1bGx5IHJldmVhbCB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGluIHF1ZXN0aW9uIGFuZCBJIGNhbiB0aGVuIGRldGVybWluZSB0aGUgaW1wYWN0IG9uIGBSRUcoXCJwYWdlbWFwXCIpYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4MzcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMjo1MS42MzE0NzY3NDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTk0NzUyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZmRlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9wcm9jL2Jhc2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9wcm9jL2Jhc2UuYz00MDM9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19waWRfY21kbGluZV9vcHMgPSB7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy00MDctXFxuZnMvcHJvYy9iYXNlLmM6NDA4OiNpZmRlZiBDT05GSUdfS0FMTFNZTVNcXG5mcy9wcm9jL2Jhc2UuYy00MDktLypcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTQ1Mj1zdGF0aWMgdm9pZCB1bmxvY2tfdHJhY2Uoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtNDU2LVxcbmZzL3Byb2MvYmFzZS5jOjQ1NzojaWZkZWYgQ09ORklHX1NUQUNLVFJBQ0VcXG5mcy9wcm9jL2Jhc2UuYy00NTgtXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz00NjE9c3RhdGljIGludCBwcm9jX3BpZF9zdGFjayhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTUwNC1cXG5mcy9wcm9jL2Jhc2UuYzo1MDU6I2lmZGVmIENPTkZJR19TQ0hFRF9JTkZPXFxuZnMvcHJvYy9iYXNlLmMtNTA2LS8qXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz01MDk9c3RhdGljIGludCBwcm9jX3BpZF9zY2hlZHN0YXQoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy01MjMtXFxuZnMvcHJvYy9iYXNlLmM6NTI0OiNpZmRlZiBDT05GSUdfTEFURU5DWVRPUFxcbmZzL3Byb2MvYmFzZS5jLTUyNS1zdGF0aWMgaW50IGxzdGF0c19zaG93X3Byb2Moc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KVxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9NjI5PXN0YXRpYyBpbnQgcHJvY19waWRfbGltaXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtNjcxLVxcbmZzL3Byb2MvYmFzZS5jOjY3MjojaWZkZWYgQ09ORklHX0hBVkVfQVJDSF9UUkFDRUhPT0tcXG5mcy9wcm9jL2Jhc2UuYy02NzMtc3RhdGljIGludCBwcm9jX3BpZF9zeXNjYWxsKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MTI4Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX29vbV9zY29yZV9hZGpfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTEyOTEtXFxuZnMvcHJvYy9iYXNlLmM6MTI5MjojaWZkZWYgQ09ORklHX0FVRElUXFxuZnMvcHJvYy9iYXNlLmMtMTI5My0jZGVmaW5lIFRNUEJVRkxFTiAxMVxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MTM3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX3Nlc3Npb25pZF9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMTM4MS1cXG5mcy9wcm9jL2Jhc2UuYzoxMzgyOiNpZmRlZiBDT05GSUdfRkFVTFRfSU5KRUNUSU9OXFxuZnMvcHJvYy9iYXNlLmMtMTM4My1zdGF0aWMgc3NpemVfdCBwcm9jX2ZhdWx0X2luamVjdF9yZWFkKHN0cnVjdCBmaWxlICogZmlsZSwgY2hhciBfX3VzZXIgKiBidWYsXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0xNTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NjaGVkX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0xNTI3LVxcbmZzL3Byb2MvYmFzZS5jOjE1Mjg6I2lmZGVmIENPTkZJR19TQ0hFRF9BVVRPR1JPVVBcXG5mcy9wcm9jL2Jhc2UuYy0xNTI5LS8qXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0xNTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfcGlkX3NjaGVkX2F1dG9ncm91cF9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMTYwMS1cXG5mcy9wcm9jL2Jhc2UuYzoxNjAyOiNpZmRlZiBDT05GSUdfVElNRV9OU1xcbmZzL3Byb2MvYmFzZS5jLTE2MDMtc3RhdGljIGludCB0aW1lbnNfb2Zmc2V0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdilcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTI3MTE9c3RhdGljIGludCBwcm9jX3BpZGVudF9yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTI3MzYtXFxuZnMvcHJvYy9iYXNlLmM6MjczNzojaWZkZWYgQ09ORklHX1NFQ1VSSVRZXFxuZnMvcHJvYy9iYXNlLmMtMjczOC1zdGF0aWMgaW50IHByb2NfcGlkX2F0dHJfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTI4NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfIyNMU00jI19hdHRyX2Rpcl9pbm9kZV9vcHMgPSB7IFxcXFxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTI4NjAtXFxuZnMvcHJvYy9iYXNlLmM6Mjg2MTojaWZkZWYgQ09ORklHX1NFQ1VSSVRZX1NNQUNLXFxuZnMvcHJvYy9iYXNlLmMtMjg2Mi1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSBzbWFja19hdHRyX2Rpcl9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmM9Mjg2NT1MU01fRElSX09QUyhzbWFjayk7XFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0yODY3LVxcbmZzL3Byb2MvYmFzZS5jOjI4Njg6I2lmZGVmIENPTkZJR19TRUNVUklUWV9BUFBBUk1PUlxcbmZzL3Byb2MvYmFzZS5jLTI4Njktc3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgYXBwYXJtb3JfYXR0cl9kaXJfc3R1ZmZbXSA9IHtcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTI4Nzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaWRfZW50cnkgYXR0cl9kaXJfc3R1ZmZbXSA9IHtcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTI4ODMtXFx0QVRUUihMU01fSURfVU5ERUYsIFxcXCJzb2NrY3JlYXRlXFxcIixcXHQwNjY2KSxcXG5mcy9wcm9jL2Jhc2UuYzoyODg0OiNpZmRlZiBDT05GSUdfU0VDVVJJVFlfU01BQ0tcXG5mcy9wcm9jL2Jhc2UuYy0yODg1LVxcdERJUihcXFwic21hY2tcXFwiLFxcdFxcdFxcdDA1NTUsXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0yODg3LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjI4ODg6I2lmZGVmIENPTkZJR19TRUNVUklUWV9BUFBBUk1PUlxcbmZzL3Byb2MvYmFzZS5jLTI4ODktXFx0RElSKFxcXCJhcHBhcm1vclxcXCIsXFx0XFx0XFx0MDU1NSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTI5MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfYXR0cl9kaXJfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTI5MjEtXFxuZnMvcHJvYy9iYXNlLmM6MjkyMjojaWZkZWYgQ09ORklHX0VMRl9DT1JFXFxuZnMvcHJvYy9iYXNlLmMtMjkyMy1zdGF0aWMgc3NpemVfdCBwcm9jX2NvcmVkdW1wX2ZpbHRlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9Mjk5ND1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX2NvcmVkdW1wX2ZpbHRlcl9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzAwMC1cXG5mcy9wcm9jL2Jhc2UuYzozMDAxOiNpZmRlZiBDT05GSUdfVEFTS19JT19BQ0NPVU5USU5HXFxuZnMvcHJvYy9iYXNlLmMtMzAwMi1zdGF0aWMgaW50IGRvX2lvX2FjY291bnRpbmcoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGludCB3aG9sZSlcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTMwNTk9c3RhdGljIGludCBwcm9jX3RnaWRfaW9fYWNjb3VudGluZyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMwNjUtXFxuZnMvcHJvYy9iYXNlLmM6MzA2NjojaWZkZWYgQ09ORklHX1VTRVJfTlNcXG5mcy9wcm9jL2Jhc2UuYy0zMDY3LXN0YXRpYyBpbnQgcHJvY19pZF9tYXBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTMxOTg9c3RhdGljIGludCBwcm9jX3BpZF9wZXJzb25hbGl0eShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMyMDgtXFxuZnMvcHJvYy9iYXNlLmM6MzIwOTojaWZkZWYgQ09ORklHX0xJVkVQQVRDSFxcbmZzL3Byb2MvYmFzZS5jLTMyMTAtc3RhdGljIGludCBwcm9jX3BpZF9wYXRjaF9zdGF0ZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMyMTctXFxuZnMvcHJvYy9iYXNlLmM6MzIxODojaWZkZWYgQ09ORklHX0tTTVxcbmZzL3Byb2MvYmFzZS5jLTMyMTktc3RhdGljIGludCBwcm9jX3BpZF9rc21fbWVyZ2luZ19wYWdlcyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jPTMyMzI9c3RhdGljIGludCBwcm9jX3BpZF9rc21fc3RhdChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMyNjAtXFxuZnMvcHJvYy9iYXNlLmM6MzI2MTojaWZkZWYgQ09ORklHX0tTVEFDS19FUkFTRV9NRVRSSUNTXFxuZnMvcHJvYy9iYXNlLmMtMzI2Mi1zdGF0aWMgaW50IHByb2Nfc3RhY2tfZGVwdGgoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGlkX2VudHJ5IHRnaWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzI4Ny1cXHRESVIoXFxcIm5zXFxcIixcXHQgIFNfSVJVU1J8U19JWFVHTywgcHJvY19uc19kaXJfaW5vZGVfb3BlcmF0aW9ucywgcHJvY19uc19kaXJfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzI4ODojaWZkZWYgQ09ORklHX05FVFxcbmZzL3Byb2MvYmFzZS5jLTMyODktXFx0RElSKFxcXCJuZXRcXFwiLCAgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX25ldF9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX25ldF9vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMyOTYtXFx0UkVHKFxcXCJzY2hlZFxcXCIsICAgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3BpZF9zY2hlZF9vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozMjk3OiNpZmRlZiBDT05GSUdfU0NIRURfQVVUT0dST1VQXFxuZnMvcHJvYy9iYXNlLmMtMzI5OC1cXHRSRUcoXFxcImF1dG9ncm91cFxcXCIsICBTX0lSVUdPfFNfSVdVU1IsIHByb2NfcGlkX3NjaGVkX2F1dG9ncm91cF9vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMjk5LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzMDA6I2lmZGVmIENPTkZJR19USU1FX05TXFxuZnMvcHJvYy9iYXNlLmMtMzMwMS1cXHRSRUcoXFxcInRpbWVuc19vZmZzZXRzXFxcIiwgIFNfSVJVR098U19JV1VTUiwgcHJvY190aW1lbnNfb2Zmc2V0c19vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMzMDMtXFx0UkVHKFxcXCJjb21tXFxcIiwgICAgICBTX0lSVUdPfFNfSVdVU1IsIHByb2NfcGlkX3NldF9jb21tX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjMzMDQ6I2lmZGVmIENPTkZJR19IQVZFX0FSQ0hfVFJBQ0VIT09LXFxuZnMvcHJvYy9iYXNlLmMtMzMwNS1cXHRPTkUoXFxcInN5c2NhbGxcXFwiLCAgICBTX0lSVVNSLCBwcm9jX3BpZF9zeXNjYWxsKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMzMTAtXFx0UkVHKFxcXCJtYXBzXFxcIiwgICAgICAgU19JUlVHTywgcHJvY19waWRfbWFwc19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozMzExOiNpZmRlZiBDT05GSUdfTlVNQVxcbmZzL3Byb2MvYmFzZS5jLTMzMTItXFx0UkVHKFxcXCJudW1hX21hcHNcXFwiLCAgU19JUlVHTywgcHJvY19waWRfbnVtYV9tYXBzX29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzMyMC1cXHRSRUcoXFxcIm1vdW50c3RhdHNcXFwiLCBTX0lSVVNSLCBwcm9jX21vdW50c3RhdHNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzMyMTojaWZkZWYgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SXFxuZnMvcHJvYy9iYXNlLmMtMzMyMi1cXHRSRUcoXFxcImNsZWFyX3JlZnNcXFwiLCBTX0lXVVNSLCBwcm9jX2NsZWFyX3JlZnNfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zMzI2LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzMjc6I2lmZGVmIENPTkZJR19TRUNVUklUWVxcbmZzL3Byb2MvYmFzZS5jLTMzMjgtXFx0RElSKFxcXCJhdHRyXFxcIiwgICAgICAgU19JUlVHT3xTX0lYVUdPLCBwcm9jX2F0dHJfZGlyX2lub2RlX29wZXJhdGlvbnMsIHByb2NfYXR0cl9kaXJfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmMtMzMyOS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzMwOiNpZmRlZiBDT05GSUdfS0FMTFNZTVNcXG5mcy9wcm9jL2Jhc2UuYy0zMzMxLVxcdE9ORShcXFwid2NoYW5cXFwiLCAgICAgIFNfSVJVR08sIHByb2NfcGlkX3djaGFuKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzMyLSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzMzM6I2lmZGVmIENPTkZJR19TVEFDS1RSQUNFXFxuZnMvcHJvYy9iYXNlLmMtMzMzNC1cXHRPTkUoXFxcInN0YWNrXFxcIiwgICAgICBTX0lSVVNSLCBwcm9jX3BpZF9zdGFjayksXFxuZnMvcHJvYy9iYXNlLmMtMzMzNS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzM2OiNpZmRlZiBDT05GSUdfU0NIRURfSU5GT1xcbmZzL3Byb2MvYmFzZS5jLTMzMzctXFx0T05FKFxcXCJzY2hlZHN0YXRcXFwiLCAgU19JUlVHTywgcHJvY19waWRfc2NoZWRzdGF0KSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzM4LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzMzk6I2lmZGVmIENPTkZJR19MQVRFTkNZVE9QXFxuZnMvcHJvYy9iYXNlLmMtMzM0MC1cXHRSRUcoXFxcImxhdGVuY3lcXFwiLCAgU19JUlVHTywgcHJvY19sc3RhdHNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmMtMzM0MS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzQyOiNpZmRlZiBDT05GSUdfUFJPQ19QSURfQ1BVU0VUXFxuZnMvcHJvYy9iYXNlLmMtMzM0My1cXHRPTkUoXFxcImNwdXNldFxcXCIsICAgICBTX0lSVUdPLCBwcm9jX2NwdXNldF9zaG93KSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzQ0LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzNDU6I2lmZGVmIENPTkZJR19DR1JPVVBTXFxuZnMvcHJvYy9iYXNlLmMtMzM0Ni1cXHRPTkUoXFxcImNncm91cFxcXCIsICBTX0lSVUdPLCBwcm9jX2Nncm91cF9zaG93KSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzQ3LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzNDg6I2lmZGVmIENPTkZJR19QUk9DX0NQVV9SRVNDVFJMXFxuZnMvcHJvYy9iYXNlLmMtMzM0OS1cXHRPTkUoXFxcImNwdV9yZXNjdHJsX2dyb3Vwc1xcXCIsIFNfSVJVR08sIHByb2NfcmVzY3RybF9zaG93KSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMzNTMtXFx0UkVHKFxcXCJvb21fc2NvcmVfYWRqXFxcIiwgU19JUlVHT3xTX0lXVVNSLCBwcm9jX29vbV9zY29yZV9hZGpfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzM1NDojaWZkZWYgQ09ORklHX0FVRElUXFxuZnMvcHJvYy9iYXNlLmMtMzM1NS1cXHRSRUcoXFxcImxvZ2ludWlkXFxcIiwgICBTX0lXVVNSfFNfSVJVR08sIHByb2NfbG9naW51aWRfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zMzU3LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzNTg6I2lmZGVmIENPTkZJR19GQVVMVF9JTkpFQ1RJT05cXG5mcy9wcm9jL2Jhc2UuYy0zMzU5LVxcdFJFRyhcXFwibWFrZS1pdC1mYWlsXFxcIiwgU19JUlVHT3xTX0lXVVNSLCBwcm9jX2ZhdWx0X2luamVjdF9vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTMzNjEtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzM2MjojaWZkZWYgQ09ORklHX0VMRl9DT1JFXFxuZnMvcHJvYy9iYXNlLmMtMzM2My1cXHRSRUcoXFxcImNvcmVkdW1wX2ZpbHRlclxcXCIsIFNfSVJVR098U19JV1VTUiwgcHJvY19jb3JlZHVtcF9maWx0ZXJfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmMtMzM2NC0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzY1OiNpZmRlZiBDT05GSUdfVEFTS19JT19BQ0NPVU5USU5HXFxuZnMvcHJvYy9iYXNlLmMtMzM2Ni1cXHRPTkUoXFxcImlvXFxcIixcXHRTX0lSVVNSLCBwcm9jX3RnaWRfaW9fYWNjb3VudGluZyksXFxuZnMvcHJvYy9iYXNlLmMtMzM2Ny0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzY4OiNpZmRlZiBDT05GSUdfVVNFUl9OU1xcbmZzL3Byb2MvYmFzZS5jLTMzNjktXFx0UkVHKFxcXCJ1aWRfbWFwXFxcIiwgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3VpZF9tYXBfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zMzc3LVxcdFJFRyhcXFwidGltZXJzbGFja19uc1xcXCIsIFNfSVJVR098U19JV1VHTywgcHJvY19waWRfc2V0X3RpbWVyc2xhY2tfbnNfb3BlcmF0aW9ucyksXFxuZnMvcHJvYy9iYXNlLmM6MzM3ODojaWZkZWYgQ09ORklHX0xJVkVQQVRDSFxcbmZzL3Byb2MvYmFzZS5jLTMzNzktXFx0T05FKFxcXCJwYXRjaF9zdGF0ZVxcXCIsICBTX0lSVVNSLCBwcm9jX3BpZF9wYXRjaF9zdGF0ZSksXFxuZnMvcHJvYy9iYXNlLmMtMzM4MC0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozMzgxOiNpZmRlZiBDT05GSUdfS1NUQUNLX0VSQVNFX01FVFJJQ1NcXG5mcy9wcm9jL2Jhc2UuYy0zMzgyLVxcdE9ORShcXFwic3RhY2tfZGVwdGhcXFwiLCBTX0lSVUdPLCBwcm9jX3N0YWNrX2RlcHRoKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzgzLSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzODQ6I2lmZGVmIENPTkZJR19QUk9DX1BJRF9BUkNIX1NUQVRVU1xcbmZzL3Byb2MvYmFzZS5jLTMzODUtXFx0T05FKFxcXCJhcmNoX3N0YXR1c1xcXCIsIFNfSVJVR08sIHByb2NfcGlkX2FyY2hfc3RhdHVzKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzg2LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzODc6I2lmZGVmIENPTkZJR19TRUNDT01QX0NBQ0hFX0RFQlVHXFxuZnMvcHJvYy9iYXNlLmMtMzM4OC1cXHRPTkUoXFxcInNlY2NvbXBfY2FjaGVcXFwiLCBTX0lSVVNSLCBwcm9jX3BpZF9zZWNjb21wX2NhY2hlKSxcXG5mcy9wcm9jL2Jhc2UuYy0zMzg5LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjMzOTA6I2lmZGVmIENPTkZJR19LU01cXG5mcy9wcm9jL2Jhc2UuYy0zMzkxLVxcdE9ORShcXFwia3NtX21lcmdpbmdfcGFnZXNcXFwiLCAgU19JUlVTUiwgcHJvY19waWRfa3NtX21lcmdpbmdfcGFnZXMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmM9MzY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IHBpZF9lbnRyeSB0aWRfYmFzZV9zdHVmZltdID0ge1xcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY0NC1cXHRESVIoXFxcIm5zXFxcIixcXHQgU19JUlVTUnxTX0lYVUdPLCBwcm9jX25zX2Rpcl9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX25zX2Rpcl9vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozNjQ1OiNpZmRlZiBDT05GSUdfTkVUXFxuZnMvcHJvYy9iYXNlLmMtMzY0Ni1cXHRESVIoXFxcIm5ldFxcXCIsICAgICAgICBTX0lSVUdPfFNfSVhVR08sIHByb2NfbmV0X2lub2RlX29wZXJhdGlvbnMsIHByb2NfbmV0X29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY1Ni1cXHRcXHRcXHQgXFx1MDAyNnByb2NfcGlkX3NldF9jb21tX29wZXJhdGlvbnMsIHt9KSxcXG5mcy9wcm9jL2Jhc2UuYzozNjU3OiNpZmRlZiBDT05GSUdfSEFWRV9BUkNIX1RSQUNFSE9PS1xcbmZzL3Byb2MvYmFzZS5jLTM2NTgtXFx0T05FKFxcXCJzeXNjYWxsXFxcIiwgICBTX0lSVVNSLCBwcm9jX3BpZF9zeXNjYWxsKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTM2NjMtXFx0UkVHKFxcXCJtYXBzXFxcIiwgICAgICBTX0lSVUdPLCBwcm9jX3BpZF9tYXBzX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjM2NjQ6I2lmZGVmIENPTkZJR19QUk9DX0NISUxEUkVOXFxuZnMvcHJvYy9iYXNlLmMtMzY2NS1cXHRSRUcoXFxcImNoaWxkcmVuXFxcIiwgIFNfSVJVR08sIHByb2NfdGlkX2NoaWxkcmVuX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTM2NjYtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzY2NzojaWZkZWYgQ09ORklHX05VTUFcXG5mcy9wcm9jL2Jhc2UuYy0zNjY4LVxcdFJFRyhcXFwibnVtYV9tYXBzXFxcIiwgU19JUlVHTywgcHJvY19waWRfbnVtYV9tYXBzX29wZXJhdGlvbnMpLFxcbi0tXFxuZnMvcHJvYy9iYXNlLmMtMzY3NS1cXHRSRUcoXFxcIm1vdW50aW5mb1xcXCIsICBTX0lSVUdPLCBwcm9jX21vdW50aW5mb19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYzozNjc2OiNpZmRlZiBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JcXG5mcy9wcm9jL2Jhc2UuYy0zNjc3LVxcdFJFRyhcXFwiY2xlYXJfcmVmc1xcXCIsIFNfSVdVU1IsIHByb2NfY2xlYXJfcmVmc19vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTM2ODEtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzY4MjojaWZkZWYgQ09ORklHX1NFQ1VSSVRZXFxuZnMvcHJvYy9iYXNlLmMtMzY4My1cXHRESVIoXFxcImF0dHJcXFwiLCAgICAgIFNfSVJVR098U19JWFVHTywgcHJvY19hdHRyX2Rpcl9pbm9kZV9vcGVyYXRpb25zLCBwcm9jX2F0dHJfZGlyX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jLTM2ODQtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzY4NTojaWZkZWYgQ09ORklHX0tBTExTWU1TXFxuZnMvcHJvYy9iYXNlLmMtMzY4Ni1cXHRPTkUoXFxcIndjaGFuXFxcIiwgICAgIFNfSVJVR08sIHByb2NfcGlkX3djaGFuKSxcXG5mcy9wcm9jL2Jhc2UuYy0zNjg3LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjM2ODg6I2lmZGVmIENPTkZJR19TVEFDS1RSQUNFXFxuZnMvcHJvYy9iYXNlLmMtMzY4OS1cXHRPTkUoXFxcInN0YWNrXFxcIiwgICAgICBTX0lSVVNSLCBwcm9jX3BpZF9zdGFjayksXFxuZnMvcHJvYy9iYXNlLmMtMzY5MC0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozNjkxOiNpZmRlZiBDT05GSUdfU0NIRURfSU5GT1xcbmZzL3Byb2MvYmFzZS5jLTM2OTItXFx0T05FKFxcXCJzY2hlZHN0YXRcXFwiLCBTX0lSVUdPLCBwcm9jX3BpZF9zY2hlZHN0YXQpLFxcbmZzL3Byb2MvYmFzZS5jLTM2OTMtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzY5NDojaWZkZWYgQ09ORklHX0xBVEVOQ1lUT1BcXG5mcy9wcm9jL2Jhc2UuYy0zNjk1LVxcdFJFRyhcXFwibGF0ZW5jeVxcXCIsICBTX0lSVUdPLCBwcm9jX2xzdGF0c19vcGVyYXRpb25zKSxcXG5mcy9wcm9jL2Jhc2UuYy0zNjk2LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjM2OTc6I2lmZGVmIENPTkZJR19QUk9DX1BJRF9DUFVTRVRcXG5mcy9wcm9jL2Jhc2UuYy0zNjk4LVxcdE9ORShcXFwiY3B1c2V0XFxcIiwgICAgU19JUlVHTywgcHJvY19jcHVzZXRfc2hvdyksXFxuZnMvcHJvYy9iYXNlLmMtMzY5OS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozNzAwOiNpZmRlZiBDT05GSUdfQ0dST1VQU1xcbmZzL3Byb2MvYmFzZS5jLTM3MDEtXFx0T05FKFxcXCJjZ3JvdXBcXFwiLCAgU19JUlVHTywgcHJvY19jZ3JvdXBfc2hvdyksXFxuZnMvcHJvYy9iYXNlLmMtMzcwMi0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozNzAzOiNpZmRlZiBDT05GSUdfUFJPQ19DUFVfUkVTQ1RSTFxcbmZzL3Byb2MvYmFzZS5jLTM3MDQtXFx0T05FKFxcXCJjcHVfcmVzY3RybF9ncm91cHNcXFwiLCBTX0lSVUdPLCBwcm9jX3Jlc2N0cmxfc2hvdyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zNzA4LVxcdFJFRyhcXFwib29tX3Njb3JlX2FkalxcXCIsIFNfSVJVR098U19JV1VTUiwgcHJvY19vb21fc2NvcmVfYWRqX29wZXJhdGlvbnMpLFxcbmZzL3Byb2MvYmFzZS5jOjM3MDk6I2lmZGVmIENPTkZJR19BVURJVFxcbmZzL3Byb2MvYmFzZS5jLTM3MTAtXFx0UkVHKFxcXCJsb2dpbnVpZFxcXCIsICBTX0lXVVNSfFNfSVJVR08sIHByb2NfbG9naW51aWRfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zNzEyLSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjM3MTM6I2lmZGVmIENPTkZJR19GQVVMVF9JTkpFQ1RJT05cXG5mcy9wcm9jL2Jhc2UuYy0zNzE0LVxcdFJFRyhcXFwibWFrZS1pdC1mYWlsXFxcIiwgU19JUlVHT3xTX0lXVVNSLCBwcm9jX2ZhdWx0X2luamVjdF9vcGVyYXRpb25zKSxcXG4tLVxcbmZzL3Byb2MvYmFzZS5jLTM3MTYtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzcxNzojaWZkZWYgQ09ORklHX1RBU0tfSU9fQUNDT1VOVElOR1xcbmZzL3Byb2MvYmFzZS5jLTM3MTgtXFx0T05FKFxcXCJpb1xcXCIsXFx0U19JUlVTUiwgcHJvY190aWRfaW9fYWNjb3VudGluZyksXFxuZnMvcHJvYy9iYXNlLmMtMzcxOS0jZW5kaWZcXG5mcy9wcm9jL2Jhc2UuYzozNzIwOiNpZmRlZiBDT05GSUdfVVNFUl9OU1xcbmZzL3Byb2MvYmFzZS5jLTM3MjEtXFx0UkVHKFxcXCJ1aWRfbWFwXFxcIiwgICAgU19JUlVHT3xTX0lXVVNSLCBwcm9jX3VpZF9tYXBfb3BlcmF0aW9ucyksXFxuLS1cXG5mcy9wcm9jL2Jhc2UuYy0zNzI1LSNlbmRpZlxcbmZzL3Byb2MvYmFzZS5jOjM3MjY6I2lmZGVmIENPTkZJR19MSVZFUEFUQ0hcXG5mcy9wcm9jL2Jhc2UuYy0zNzI3LVxcdE9ORShcXFwicGF0Y2hfc3RhdGVcXFwiLCAgU19JUlVTUiwgcHJvY19waWRfcGF0Y2hfc3RhdGUpLFxcbmZzL3Byb2MvYmFzZS5jLTM3MjgtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzcyOTojaWZkZWYgQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTXFxuZnMvcHJvYy9iYXNlLmMtMzczMC1cXHRPTkUoXFxcImFyY2hfc3RhdHVzXFxcIiwgU19JUlVHTywgcHJvY19waWRfYXJjaF9zdGF0dXMpLFxcbmZzL3Byb2MvYmFzZS5jLTM3MzEtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzczMjojaWZkZWYgQ09ORklHX1NFQ0NPTVBfQ0FDSEVfREVCVUdcXG5mcy9wcm9jL2Jhc2UuYy0zNzMzLVxcdE9ORShcXFwic2VjY29tcF9jYWNoZVxcXCIsIFNfSVJVU1IsIHByb2NfcGlkX3NlY2NvbXBfY2FjaGUpLFxcbmZzL3Byb2MvYmFzZS5jLTM3MzQtI2VuZGlmXFxuZnMvcHJvYy9iYXNlLmM6MzczNTojaWZkZWYgQ09ORklHX0tTTVxcbmZzL3Byb2MvYmFzZS5jLTM3MzYtXFx0T05FKFxcXCJrc21fbWVyZ2luZ19wYWdlc1xcXCIsICBTX0lSVVNSLCBwcm9jX3BpZF9rc21fbWVyZ2luZ19wYWdlcyksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMyOjUxLjc4MzQzMzg1OVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjkyMTk3MDcwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgUGFnZW1hcCBTY2FuIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhlIGludGVncmF0aW9uIG9mIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgIHdpdGggYENPTkZJR19VU0VSRkFVTFRGRGAuICBJdCBsb29rcyBsaWtlIGBDT05GSUdfUFJPQ19QQUdFX01PTklUT1JgIGlzIGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIGBwYWdlbWFwYCBmdW5jdGlvbmFsaXR5IHRvIGJlIHJlZ2lzdGVyZWQsIGFuZCBgQ09ORklHX1VTRVJGQVVMVEZEYCBpcyBvYnZpb3VzbHkgY3J1Y2lhbCBmb3IgdGhlIGNvcmUgY2hhbmdlLiAgSSBhbHNvIGFudGljaXBhdGUgbmVlZGluZyBgQ09ORklHX01NVWAsIHRob3VnaCB0aGF0J3MgZ2VuZXJhbGx5IGFzc3VtZWQuXG5cbkxldCdzIHF1aWNrbHkgcmV2aWV3IHRoZSBjb2RlIGNoYW5nZXMuIFRoZSBtYWluIGZvY3VzIGlzIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgLiBUaGUgY3JpdGljYWwgY29uZGl0aW9uIGlzIGB1c2VyZmF1bHRmZF93cCh2bWEpYCB0byBoYW5kbGUgdW5wb3B1bGF0ZWQgcmFuZ2VzIGluIGEgYHVzZXJmYXVsdGZkYCB3cml0ZS1wcm90ZWN0ZWQgVk1BLiAgSSBzZWUgYSBjb21tZW50IG1lbnRpb25pbmcgYE1BRFZfRE9OVE5FRURgIGFuZCBgTUFEVl9DT0xMQVBTRWAsIHdoaWNoIGJyaW5ncyBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCB0byBtaW5kLCBhcyB3ZSBhcmUgbG9va2luZyBhdCBhbm9ueW1vdXMgVEhQIHBhZ2VzIGRyb3BwZWQgdmlhIGBNQURWX0RPTlRORUVEYC4gSG93ZXZlciwgdGhlIGNvZGUncyBjb21tZW50IGluZGljYXRlcyB0aGlzIGlzbid0IFRIUCBzcGVjaWZpYywgYnV0IHJhdGhlciB0aGUgZ2VuZXJhbCBjYXNlIG9mIHVucG9wdWxhdGVkIG1lbW9yeSByZWdpb25zLCBsaWtlIGhvbGVzLiBUaGUgY2hlY2sgZm9yIGAhaXNfdm1faHVnZXRsYl9wYWdlKHZtYSlgIHNlZW1zIHRvIGV4cGxpY2l0bHkgZXhjbHVkZSBIdWdlVExCIHBhZ2VzLiAgSSBzaG91bGQgcXVpY2tseSBjb25maXJtIGlmIGBpc192bV9odWdldGxiX3BhZ2VgIHJlcXVpcmVzIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRvIGJlIHByZXNlbnQsIGp1c3QgdG8gYmUgc3VyZS5cblxuVGhlIHBhdGNoIG1vZGlmaWVzIGBwYWdlbWFwX3NjYW5fcHRlX2hvbGVgIHRvIHJlcG9ydCB0aGVzZSB1bnBvcHVsYXRlZCByZWdpb25zIHdpdGhpbiBgdXNlcmZhdWx0ZmRgIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIFwid3JpdHRlblwiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHBhZ2VtYXAgaW9jdGwuIEl0IHdpbGwgY2hhbmdlIGhvdyBgUEFHRU1BUF9TQ0FOYCB3b3Jrcy4gSSdtIHRoaW5raW5nIHRoaXMgaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gdGhhdCBpdCdzIGFsdGVyaW5nIHRoZSB3YXkgbWVtb3J5IHN0YXRlIGlzIHJlcG9ydGVkLCBhbmQgaXQgaW50ZXJhY3RzIHdpdGggYSByZWxhdGl2ZWx5IGNvbXBsZXggcGFydCBvZiB0aGUga2VybmVsICh1c2VyZmF1bHRmZCwgbWVtb3J5IG1hbmFnZW1lbnQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwuXG5cblNvLCBpbiBzdW1tYXJ5OlxuXG4qICAgKipDb25maWdzOioqIGBDT05GSUdfVVNFUkZBVUxURkRgLCBgQ09ORklHX1BST0NfUEFHRV9NT05JVE9SYCwgKGltcGxpY2l0bHkpIGBDT05GSUdfTU1VYCwgYW5kIHBvc3NpYmx5IGBDT05GSUdfSFVHRVRMQl9QQUdFYC5cbiogICAqKktleSBGdW5jdGlvbjoqKiBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYCAtIHRoaXMgaXMgdGhlIGZvY2FsIHBvaW50LlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBob3cgdW5wb3B1bGF0ZWQgbWVtb3J5IHJlZ2lvbnMgYXJlIHRyZWF0ZWQgd2l0aGluIHdyaXRlLXByb3RlY3RlZCBWTUFzIG1hbmFnZWQgYnkgYHVzZXJmYXVsdGZkYCwgd2hpY2ggaXMgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCBpcyBjcml0aWNhbCBmb3IgaGFuZGxpbmcgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBQQUdFTUFQX1NDQU5gIGlvY3RsLiBJdCBlbnN1cmVzIHRoYXQgdGhlIHNjYW4gcmVwb3J0cyBtZW1vcnkgcmVnaW9ucyB3aGljaCB3b3VsZCBjYXVzZSBhIHBhZ2UgZmF1bHQgYXMgXCJ3cml0dGVuXCIsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciB1c2VyZmF1bHRmZC4gSSBzaG91bGQga2VlcCBhbiBleWUgb24gaG93IEh1Z2VUTEIgaXMgYmVpbmcgaGFuZGxlZCBhcyB3ZWxsLCBldmVuIGlmIHRoZSBjb2RlIGV4cGxpY2l0bHkgZXhjbHVkZXMgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzQ1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMzowNC43MDU0MDY4MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTExNDA2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc192bV9odWdldGxiX3BhZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdldGxiLmg9MjUzPXN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX3phcF9iZWdpbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI1NS17XFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MjU2OlxcdGlmIChpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0yNTctXFx0XFx0X19odWdldGxiX3phcF9iZWdpbih2bWEsIHN0YXJ0LCBlbmQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MjYwPXN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX3phcF9lbmQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0yNjIte1xcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI2MzpcXHRpZiAoaXNfdm1faHVnZXRsYl9wYWdlKHZtYSkpXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjY0LVxcdFxcdF9faHVnZXRsYl96YXBfZW5kKHZtYSwgZGV0YWlscyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmg9MTY9c3RhdGljIGlubGluZSBib29sIGlzX3ZtYV9odWdldGxiX2ZsYWdzKGNvbnN0IHZtYV9mbGFnc190ICpmbGFncylcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaC0yMi1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmg6MjM6c3RhdGljIGlubGluZSBib29sIGlzX3ZtX2h1Z2V0bGJfcGFnZShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgtMjQte1xcbi0tXFxuaW5jbHVkZS9saW51eC9ybWFwLmg9ODg2PXN0YXRpYyBpbmxpbmUgdm9pZCBwYWdlX3ZtYV9tYXBwZWRfd2Fsa19kb25lKHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdylcXG4tLVxcbmluY2x1ZGUvbGludXgvcm1hcC5oLTg4OC1cXHQvKiBIdWdlVExCIHB0ZSBpcyBzZXQgdG8gdGhlIHJlbGV2YW50IHBhZ2UgdGFibGUgZW50cnkgd2l0aG91dCBwdGVfbWFwcGVkLiAqL1xcbmluY2x1ZGUvbGludXgvcm1hcC5oOjg4OTpcXHRpZiAocHZtdy1cXHUwMDNlcHRlIFxcdTAwMjZcXHUwMDI2ICFpc192bV9odWdldGxiX3BhZ2UocHZtdy1cXHUwMDNldm1hKSlcXG5pbmNsdWRlL2xpbnV4L3JtYXAuaC04OTAtXFx0XFx0cHRlX3VubWFwKHB2bXctXFx1MDAzZXB0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMzOjA0LjkwMDUyNTQ5M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTU4OTU3NDMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKk5hdmlnYXRpbmcgdGhlIEh1Z2V0bGJmcyBMYW5kc2NhcGUqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLi4uIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgZnVuY3Rpb24gb3IgbWFjcm8gb3Igd2hhdGV2ZXIgd2UncmUgaW50ZXJlc3RlZCBpbiBpcyB0dWNrZWQgYXdheSBpbiBgaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oYC4gKlRoYXQncyogdXN1YWxseSB0aGUgZmlyc3QgcGxhY2UgdG8gbG9vay4gTm93LCBrbm93aW5nIHRoZSBrZXJuZWwsIEkgYmV0IGl0J3MgY29uZGl0aW9uYWxseSBjb21waWxlZC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGlzIGl0IGVuYWJsZWQgdGhyb3VnaCBgQ09ORklHX0hVR0VUTEJfUEFHRWA/IFRoYXQncyBnb2luZyB0byBiZSB0aGUga2V5IHRvIHdoZXRoZXIgaXQncyBhY3R1YWxseSAqdGhlcmUqIGluIHRoZSBrZXJuZWwgd2UncmUgbG9va2luZyBhdC4gR290dGEgdmVyaWZ5IHRoYXQgY29uZmlnIHNldHRpbmcgYmVmb3JlIEkgZGlnIGFueSBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTYyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzM6MTYuNDkwMTAyNDIxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjAzMTg3MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0hVR0VUTEJfUEFHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTYtXFxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oOjc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgtOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzM6MTYuOTEwNDI4MDI0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNTQwNTY2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkNoZWNraW5nIHRoZSBIdWdldGxiIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqXG5cbkhtbSwganVzdCBhIG1vbWVudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHkuIE15IGluaXRpYWwgYXNzdW1wdGlvbiBpcyB0aGF0IGBpc192bV9odWdldGxiX3BhZ2VgIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfSFVHRVRMQl9QQUdFYC4gVG8gY29uZmlybSwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgdGhpcy4gVGhlIGxpa2VseSBwbGFjZSBmb3IgdGhpcyBzb3J0IG9mIGRlZmluaXRpb24gd291bGQgYmUgd2l0aGluIGBpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhgLiBMZXQgbWUgdGFrZSBhIGxvb2sgdGhlcmUgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyNjAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMzoyMy45NjQ0ODgxNTNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTI0NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX3ZtX2h1Z2V0bGJfcGFnZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oPTE2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc192bWFfaHVnZXRsYl9mbGFncyhjb25zdCB2bWFfZmxhZ3NfdCAqZmxhZ3MpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmgtMjItXFxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oOjIzOnN0YXRpYyBpbmxpbmUgYm9vbCBpc192bV9odWdldGxiX3BhZ2UoY29uc3Qgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuaW5jbHVkZS9saW51eC9odWdldGxiX2lubGluZS5oLTI0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MzM6MjQuMDMzNDE5NDYyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjIxODA0NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBvZiB0aGUgdGhvdWdodCBwcm9jZXNzIGRlc2NyaWJlZDpcblxuKipEaXZpbmcgaW50byBodWdldGxiX2lubGluZS5oKipcblxuT2theSwgdGltZSB0byBjcmFjayBvcGVuIGBpbmNsdWRlL2xpbnV4L2h1Z2V0bGJfaW5saW5lLmhgLiBJJ20gZ3Vlc3NpbmcgdGhpcyBmaWxlIHByb2JhYmx5IGhvdXNlcyB0aGUgY29yZSwgcGVyZm9ybWFuY2UtY3JpdGljYWwgaW5saW5lIGZ1bmN0aW9ucyByZWxhdGVkIHRvIEh1Z2VUTEIgbWFuYWdlbWVudC4gS25vd2luZyB0aGUga2VybmVsJ3MgSHVnZVRMQiBpbXBsZW1lbnRhdGlvbiwgSSdtIGV4cGVjdGluZyBhIG1peCBvZiBwYWdlIHRhYmxlIG1hbmlwdWxhdGlvbiByb3V0aW5lcywgcG90ZW50aWFsbHkgc29tZSBsb2NrLXJlbGF0ZWQgb3BlcmF0aW9ucyBpZiB0aGV5J3JlIHBhcnRpY3VsYXJseSBwZXJmb3JtYW5jZS1zZW5zaXRpdmUsIGFuZCBkZWZpbml0ZWx5IHNvbWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyBvciBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIHRoZSBoYXJkd2FyZSdzIFRMQiBtYW5hZ2VtZW50IGZvciBodWdlIHBhZ2VzLiBNeSBpbnR1aXRpb24gc2F5cyB0aGVyZSdsbCBiZSBhIHN0cm9uZyBlbXBoYXNpcyBvbiBtaW5pbWl6aW5nIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIGhlbmNlIHRoZSBcImlubGluZVwiIGRlc2lnbmF0aW9uLiBJJ20ga2VlbiB0byBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGUgY29kZSB0byBiYWxhbmNlIHBlcmZvcm1hbmNlIHdpdGggcmVhZGFiaWxpdHkgYW5kIG1haW50YWluYWJpbGl0eSB3aXRoaW4gdGhpcyBjcml0aWNhbCBzZWN0aW9uIG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzeXN0ZW0uIExldCdzIHNlZSBpZiBteSBpbml0aWFsIGFzc3VtcHRpb25zIGhvbGQgd2F0ZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU3NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMzOjI3LjM1NTYwMTg4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvaHVnZXRsYl9pbmxpbmUuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuICAgMjpcXHQjaWZuZGVmIF9MSU5VWF9IVUdFVExCX0lOTElORV9IXFxuICAgMzpcXHQjZGVmaW5lIF9MSU5VWF9IVUdFVExCX0lOTElORV9IXFxuICAgNDpcXHRcXG4gICA1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbiAgIDY6XFx0XFxuICAgNzpcXHQjaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbiAgIDg6XFx0XFxuICAgOTpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1hX2h1Z2V0bGJfZmxhZ3MoY29uc3Qgdm1hX2ZsYWdzX3QgKmZsYWdzKVxcbiAgMTA6XFx0e1xcbiAgMTE6XFx0XFx0cmV0dXJuIHZtYV9mbGFnc190ZXN0KGZsYWdzLCBWTUFfSFVHRVRMQl9CSVQpO1xcbiAgMTI6XFx0fVxcbiAgMTM6XFx0XFxuICAxNDpcXHQjZWxzZVxcbiAgMTU6XFx0XFxuICAxNjpcXHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfdm1hX2h1Z2V0bGJfZmxhZ3MoY29uc3Qgdm1hX2ZsYWdzX3QgKmZsYWdzKVxcbiAgMTc6XFx0e1xcbiAgMTg6XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAgMTk6XFx0fVxcbiAgMjA6XFx0XFxuICAyMTpcXHQjZW5kaWZcXG4gIDIyOlxcdFxcbiAgMjM6XFx0c3RhdGljIGlubGluZSBib29sIGlzX3ZtX2h1Z2V0bGJfcGFnZShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4gIDI0OlxcdHtcXG4gIDI1OlxcdFxcdHJldHVybiBpc192bWFfaHVnZXRsYl9mbGFncyhcXHUwMDI2dm1hLVxcdTAwM2VmbGFncyk7XFxuICAyNjpcXHR9XFxuICAyNzpcXHRcXG4gIDI4OlxcdCNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTozMzoyNy4zNTU2OTY2NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzM1OTIzOTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBmb3IgVXNlcmZhdWx0ZmQgYW5kIEh1Z2UgUGFnZXMqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgYGlzX3ZtX2h1Z2V0bGJfcGFnZWAgaXMgYWx3YXlzIGRlZmluZWQsIHdoaWNoIGlzIGNvbnZlbmllbnQsIGJ1dCBpdCdzICplZmZlY3RpdmVseSogYSBuby1vcCBpZiBgQ09ORklHX0hVR0VUTEJfUEFHRWAgaXNuJ3Qgc2V0LCBzaW5jZSBpdCByZXR1cm5zIGBmYWxzZWAgaW4gdGhhdCBzY2VuYXJpby4gVGhpcyBtZWFucyB0aGF0IHdlIGRvbid0ICpzdHJpY3RseSogbmVlZCBgQ09ORklHX0hVR0VUTEJfUEFHRWAgdG8gY29tcGlsZSwgYnV0IGl0J3MgbGlrZWx5IHZlcnkgcmVsZXZhbnQgZm9yIHRlc3RpbmcgdGhlIHNwZWNpZmljIGh1Z2V0bGIgZXhjbHVzaW9uIGxvZ2ljIOKAkyBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBleHBsaWNpdCBjaGVjayBgaWYgKHVzZXJmYXVsdGZkX3dwKHZtYSkgXHUwMDI2XHUwMDI2ICFpc192bV9odWdldGxiX3BhZ2Uodm1hKSlgLiBUbyAqZXhlcmNpc2UqIHRoYXQgZXhjbHVzaW9uIHBhdGgsIHdlJ2QgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBlbmFibGVkLlxuXG5UaGUgYHVucG9wdWxhdGVkX3RocF9ob2xlX3Rlc3RgIHRlc3QgY2FzZSB0aHJvd3MgYW5vdGhlciB3cmVuY2ggaW4gdGhlIHdvcmtzIHNpbmNlIGl0J3MgdXNpbmcgVEhQLXJlbGF0ZWQgZmxhZ3MgKGBNQURWX0NPTExBUFNFYCwgYE1BRFZfRE9OVE5FRURgKS4gVGhlcmVmb3JlLCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBhbHNvIGNyaXRpY2FsIGhlcmUuIFdlJ3JlIG9idmlvdXNseSBub3QgdGFsa2luZyBhYm91dCBhIHNpbXBsZSB0ZXN0LlxuXG5TbywgbGV0J3MgdGFrZSBzdG9jayBvZiB0aGUgY29uZmlncyB3ZSBuZWVkIHRvIGNvbnNpZGVyOlxuKiAgIGBVU0VSRkFVTFRGRGAg4oCTIG9idmlvdXNseSwgdGhlIGNvcmUgZmVhdHVyZSB3ZSdyZSBkZWFsaW5nIHdpdGguXG4qICAgYFBST0NfUEFHRV9NT05JVE9SYCDigJMgYSBsaXR0bGUgbGVzcyBleHBsaWNpdCwgYnV0IHBvdGVudGlhbGx5IHJlbGV2YW50IHRvIG9ic2VydmFiaWxpdHkuXG4qICAgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCDigJMga2V5IGZvciB0aGUgVEhQLXJlbGF0ZWQgdGVzdCBjYXNlIGFuZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuXG4qICAgYEhVR0VUTEJfUEFHRWAg4oCTIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoZSBodWdldGxiIGV4Y2x1c2lvbiBsb2dpYyB0byBiZSB0ZXN0ZWQuXG5cbkhtbSwgbGV0IG1lIGRvdWJsZSBjaGVjayBgTUFEVl9DT0xMQVBTRWAuIEl0J3MgcHJldHR5IHRpZ2h0bHkgY291cGxlZCB0byBUSFAsIHNvIGl0IHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuIEknbGwgdGFrZSBhIHF1aWNrIHBlZWsgYXQgYGZzL3Byb2MvdGFza19tbXUuY2AgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IG90aGVyIGRlcGVuZGVuY3kuIEFoLCBgcGFnZW1hcF9zY2FuX3B0ZV9ob2xlYC4gWWVzLCB0aGF0IGZ1bmN0aW9uIGhhcyBiZWVuIG1vZGlmaWVkLCBsaWtlbHkgdG8gc3VwcG9ydCB0aGUgY2hhbmdlcy5cblxuUmlnaHQsIEkgdGhpbmsgSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIHJlbGF0aW9uc2hpcHMgaGVyZS4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTkxLCJPdXRwdXRUb2tlbnMiOjE0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjMzOjQwLjcxNDkzODA0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNjEyMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0VSRkFVTFRGRFwiLFxuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJIVUdFVExCX1BBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlbWFwX3NjYW5fcHRlX2hvbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0VSRkFVTFRGRFwiLFxuICAgIFwiUFJPQ19QQUdFX01PTklUT1JcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJIVUdFVExCX1BBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlbWFwX3NjYW5fcHRlX2hvbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUEFHRU1BUF9TQ0FOIGlvY3RsIGxvZ2ljIGluIHByb2NmcyB0byBjb3JyZWN0bHkgcmVwb3J0IHVucG9wdWxhdGVkIHJhbmdlcyAoaG9sZXMpIGluIHVzZXJmYXVsdGZkIHdyaXRlLXByb3RlY3RlZCBWTUFzIGFzIHdyaXR0ZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIHRoYXQgYWZmZWN0cyB1c2VyLWZhY2luZyBBUElzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[1] Phase: Succeeded StartedAt: 2026-07-09 01:33:52 +0000 UTC FinishedAt: 2026-07-09 01:33:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 01:33:52 +0000 UTC FinishedAt: 2026-07-09 01:33:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2] Phase: Succeeded StartedAt: 2026-07-09 01:33:52 +0000 UTC FinishedAt: 2026-07-09 06:18:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 01:33:52 +0000 UTC FinishedAt: 2026-07-09 06:18:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 01:33:52 +0000 UTC FinishedAt: 2026-07-09 01:34:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 01:33:52 +0000 UTC FinishedAt: 2026-07-09 01:34:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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-workflowqbdzf/series-workflowqbdzf-convert-artifact-3494738021/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 01:34:13 +0000 UTC FinishedAt: 2026-07-09 02:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 01:34:13 +0000 UTC FinishedAt: 2026-07-09 02:22:22 +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:*1c5920ca-e278-4e47-a82c-37c8ce98a43b,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-workflowqbdzf/series-workflowqbdzf-convert-artifact-3494738021/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": "fe60ccae-3957-4206-ad91-300eabc38c5c", "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-workflowqbdzf/series-workflowqbdzf-build-action-4275074187/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 01:34:13 +0000 UTC FinishedAt: 2026-07-09 02:22:12 +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:*1c5920ca-e278-4e47-a82c-37c8ce98a43b,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-workflowqbdzf/series-workflowqbdzf-convert-artifact-3494738021/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": "fe60ccae-3957-4206-ad91-300eabc38c5c", "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-workflowqbdzf/series-workflowqbdzf-build-action-4275074187/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:22:22 +0000 UTC FinishedAt: 2026-07-09 02:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:22:22 +0000 UTC FinishedAt: 2026-07-09 02:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:22:22 +0000 UTC FinishedAt: 2026-07-09 02:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:22:22 +0000 UTC FinishedAt: 2026-07-09 02:22:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-workflowqbdzf/series-workflowqbdzf-convert-artifact-3311017280/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:22:32 +0000 UTC FinishedAt: 2026-07-09 02:24:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:22:32 +0000 UTC FinishedAt: 2026-07-09 02:24:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe60ccae-3957-4206-ad91-300eabc38c5c,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-workflowqbdzf/series-workflowqbdzf-build-action-4275074187/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-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:24:59 +0000 UTC FinishedAt: 2026-07-09 02:24:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:24:59 +0000 UTC FinishedAt: 2026-07-09 02:24:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:24:59 +0000 UTC FinishedAt: 2026-07-09 03:13:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:24:59 +0000 UTC FinishedAt: 2026-07-09 03:13:57 +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:*1c5920ca-e278-4e47-a82c-37c8ce98a43b,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-workflowqbdzf/series-workflowqbdzf-convert-artifact-3311017280/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": "0e5ca1b3-8718-4eb3-a952-bf737e9dfd8c", "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-workflowqbdzf/series-workflowqbdzf-build-action-334859004/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 02:24:59 +0000 UTC FinishedAt: 2026-07-09 03:13:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*1c5920ca-e278-4e47-a82c-37c8ce98a43b,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-workflowqbdzf/series-workflowqbdzf-convert-artifact-3311017280/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": "0e5ca1b3-8718-4eb3-a952-bf737e9dfd8c", "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-workflowqbdzf/series-workflowqbdzf-build-action-334859004/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:13:57 +0000 UTC FinishedAt: 2026-07-09 03:13:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:13:57 +0000 UTC FinishedAt: 2026-07-09 03:13:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:13:57 +0000 UTC FinishedAt: 2026-07-09 03:15:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:13:57 +0000 UTC FinishedAt: 2026-07-09 03:15:36 +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:*0e5ca1b3-8718-4eb3-a952-bf737e9dfd8c,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-workflowqbdzf/series-workflowqbdzf-build-action-334859004/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-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:15:47 +0000 UTC FinishedAt: 2026-07-09 03:15:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:15:47 +0000 UTC FinishedAt: 2026-07-09 03:15:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:15:48 +0000 UTC FinishedAt: 2026-07-09 06:18:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:15:48 +0000 UTC FinishedAt: 2026-07-09 06:18:33 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"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:*fe60ccae-3957-4206-ad91-300eabc38c5c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0e5ca1b3-8718-4eb3-a952-bf737e9dfd8c,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-workflowqbdzf/series-workflowqbdzf-build-action-4275074187/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-workflowqbdzf/series-workflowqbdzf-build-action-334859004/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:15:48 +0000 UTC FinishedAt: 2026-07-09 03:16:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:15:48 +0000 UTC FinishedAt: 2026-07-09 03:16:04 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"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-workflowqbdzf/series-workflowqbdzf-convert-artifact-1717694617/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:15:48 +0000 UTC FinishedAt: 2026-07-09 03:15:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:16:14 +0000 UTC FinishedAt: 2026-07-09 06:18:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqbdzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["pagemap_scan_pte_hole"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","enable_configs":["USERFAULTFD","PROC_PAGE_MONITOR","TRANSPARENT_HUGEPAGE","HUGETLB_PAGE"],"series_id":"0ac01acc-2e0a-4fe6-a1fe-e82587f5eee2","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-09 03:16:14 +0000 UTC FinishedAt: 2026-07-09 06:18:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe60ccae-3957-4206-ad91-300eabc38c5c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0e5ca1b3-8718-4eb3-a952-bf737e9dfd8c,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-workflowqbdzf/series-workflowqbdzf-build-action-4275074187/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-workflowqbdzf/series-workflowqbdzf-build-action-334859004/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-workflowqbdzf/series-workflowqbdzf-convert-artifact-1717694617/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,}