Name: series-workflows4p5r Phase: Succeeded StartedAt: 2026-06-26 17:33:53 +0000 UTC FinishedAt: 2026-06-26 21:40:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[0] Phase: Succeeded StartedAt: 2026-06-26 17:33:53 +0000 UTC FinishedAt: 2026-06-26 17:42:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 17:33:53 +0000 UTC FinishedAt: 2026-06-26 17:42:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a986fde914d88af47eb78fd29c5d1af7952c3500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a986fde914d88af47eb78fd29c5d1af7952c3500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "6528d41c-012e-441b-bb6e-662a556f965d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nci_core_init_rsp_packet_v1", "nci_core_init_rsp_packet_v2", "nci_core_init_rsp_packet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "65008893-2498-4786-b913-f2c474a7b34a" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MSYjMzQ7LAogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjImIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIE5DSSBjb3JlIGluaXQgcmVzcG9uc2UgcGFja2V0IHBhcnNpbmcuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgdmlydHVhbCBOQ0kgZGV2aWNlcywgc28gaXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyBjaGVja3MgY29ycmVjdGx5IHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB3aXRob3V0IGJyZWFraW5nIHZhbGlkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNTE2YzgxYjc0NDNjMGE0ODk0MGNlZmFmMWI2ODFlNjhjMTUyMjIxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMTc6NDE6NTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvcnNwLmMgYi9uZXQvbmZjL25jaS9yc3AuY1xuaW5kZXggOWVlYjg2MjgyNWM1ZmUuLjZiMmZhNmJkYmQxNGJkIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9uY2kvcnNwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbmNpL3JzcC5jXG5AQCAtNTAsMTEgJiM0Mzs1MCwyNSBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8yICpyc3BfMjtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3BfMSkpXG4mIzQzO1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4mIzQzO1xuIFx0cHJfZGVidWcoXCYjMzQ7c3RhdHVzIDB4JXhcXG5cJiMzNDssIHJzcF8xLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwXzEtXHUwMDNlc3RhdHVzICE9IE5DSV9TVEFUVVNfT0spXG4gXHRcdHJldHVybiByc3BfMS1cdTAwM2VzdGF0dXM7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tdIGFuZCB0aGUgdHJhaWxpbmcgbmNpX2NvcmVfaW5pdF9yc3BfMiBhcmVcbiYjNDM7XHQgKiBhZGRyZXNzZWQgdXNpbmcgdGhlIG9uLXdpcmUgKHVuY2xhbXBlZCkgaW50ZXJmYWNlIGNvdW50LCBzbyB0aGVcbiYjNDM7XHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSBhbnkgb2YgaXQgaXMgcGFyc2VkIG9yXG4mIzQzO1x0ICogc3RvcmVkIGludG8gQG5kZXYgLSBvdGhlcndpc2UgYSB0cnVuY2F0ZWQgcmVzcG9uc2Ugd291bGQgbGVhdmVcbiYjNDM7XHQgKiBuZGV2LVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyBob2xkaW5nIHRoZSB1bmNsYW1wZWQgY291bnQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqcnNwXzEpICYjNDM7XG4mIzQzO1x0ICAgIHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyAmIzQzOyBzaXplb2YoKnJzcF8yKSlcbiYjNDM7XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiYjNDM7XG4gXHRuZGV2LVx1MDAzZW5mY2NfZmVhdHVyZXMgPSBfX2xlMzJfdG9fY3B1KHJzcF8xLVx1MDAzZW5mY2NfZmVhdHVyZXMpO1xuIFx0bmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgPSByc3BfMS1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4gXG5AQCAtODgsOSAmIzQzOzEwMiwxMyBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIHtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF9uY2lfdmVyMiAqcnNwID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHU4ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlID0gcnNwLVx1MDAzZXN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzO1xuJiM0MztcdGNvbnN0IHU4ICplbmQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBza2ItXHUwMDNlbGVuO1xuIFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XG4gXHR1OCByZl9leHRlbnNpb25fY250ID0gMDtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3ApKVxuJiM0MztcdFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xuJiM0MztcbiBcdHByX2RlYnVnKFwmIzM0O3N0YXR1cyAleFxcblwmIzM0OywgcnNwLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwLVx1MDAzZXN0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKVxuQEAgLTEwNCwxMCAmIzQzOzEyMiwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG4gXG4gXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcdTAwM2MgbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcbi1cdFx0bmRldi1cdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4JiM0MzsmIzQzO10gPSAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHQvKiBvbmUgaW50ZXJmYWNlIGJ5dGUgJiM0Mzsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xuJiM0MztcdFx0aWYgKGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgXHUwMDNjIDIpXG4mIzQzO1x0XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiYjNDM7XHRcdG5kZXYtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCYjNDM7JiM0MztdID1cbiYjNDM7XHRcdFx0KnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UmIzQzOyYjNDM7O1xuIFxuLVx0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzICovXG4mIzQzO1x0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cbiBcdFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChyZl9leHRlbnNpb25fY250IFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxuJiM0MztcdFx0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4gXHRcdHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgJiM0Mzs9IHJmX2V4dGVuc2lvbl9jbnQ7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxJiMzNDssCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MiYjMzQ7LAogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXQgcGFyc2luZy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIE5DSSBkZXZpY2VzLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDUxNmM4MWI3NDQzYzBhNDg5NDBjZWZhZjFiNjgxZTY4YzE1MjIyMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDI2IDE3OjQxOjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvcnNwLmMgYi9uZXQvbmZjL25jaS9yc3AuYwppbmRleCA5ZWViODYyODI1YzVmZS4uNmIyZmE2YmRiZDE0YmQgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbmNpL3JzcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbmNpL3JzcC5jCkBAIC01MCwxMSAmIzQzOzUwLDI1IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsCiAJY29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItJmd0O2RhdGE7CiAJY29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzIgKnJzcF8yOwogCiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqcnNwXzEpKQomIzQzOwkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwomIzQzOwogCXByX2RlYnVnKCYjMzQ7c3RhdHVzIDB4JXhcbiYjMzQ7LCByc3BfMS0mZ3Q7c3RhdHVzKTsKIAogCWlmIChyc3BfMS0mZ3Q7c3RhdHVzICE9IE5DSV9TVEFUVVNfT0spCiAJCXJldHVybiByc3BfMS0mZ3Q7c3RhdHVzOwogCiYjNDM7CS8qCiYjNDM7CSAqIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW10gYW5kIHRoZSB0cmFpbGluZyBuY2lfY29yZV9pbml0X3JzcF8yIGFyZQomIzQzOwkgKiBhZGRyZXNzZWQgdXNpbmcgdGhlIG9uLXdpcmUgKHVuY2xhbXBlZCkgaW50ZXJmYWNlIGNvdW50LCBzbyB0aGUKJiM0MzsJICogcmVzcG9uc2UgbXVzdCBiZSBsb25nIGVub3VnaCBmb3IgYm90aCBiZWZvcmUgYW55IG9mIGl0IGlzIHBhcnNlZCBvcgomIzQzOwkgKiBzdG9yZWQgaW50byBAbmRldiAtIG90aGVyd2lzZSBhIHRydW5jYXRlZCByZXNwb25zZSB3b3VsZCBsZWF2ZQomIzQzOwkgKiBuZGV2LSZndDtudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgaG9sZGluZyB0aGUgdW5jbGFtcGVkIGNvdW50LgomIzQzOwkgKi8KJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgc2l6ZW9mKCpyc3BfMSkgJiM0MzsKJiM0MzsJICAgIHJzcF8xLSZndDtudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgJiM0Mzsgc2l6ZW9mKCpyc3BfMikpCiYjNDM7CQlyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7CiYjNDM7CiAJbmRldi0mZ3Q7bmZjY19mZWF0dXJlcyA9IF9fbGUzMl90b19jcHUocnNwXzEtJmd0O25mY2NfZmVhdHVyZXMpOwogCW5kZXYtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9IHJzcF8xLSZndDtudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7CiAKQEAgLTg4LDkgJiM0MzsxMDIsMTMgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MihzdHJ1Y3QgbmNpX2RldiAqbmRldiwKIHsKIAljb25zdCBzdHJ1Y3QgbmNpX2NvcmVfaW5pdF9yc3BfbmNpX3ZlcjIgKnJzcCA9ICh2b2lkICopc2tiLSZndDtkYXRhOwogCWNvbnN0IHU4ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlID0gcnNwLSZndDtzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlczsKJiM0MzsJY29uc3QgdTggKmVuZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKIAl1OCByZl9pbnRlcmZhY2VfaWR4ID0gMDsKIAl1OCByZl9leHRlbnNpb25fY250ID0gMDsKIAomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBzaXplb2YoKnJzcCkpCiYjNDM7CQlyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7CiYjNDM7CiAJcHJfZGVidWcoJiMzNDtzdGF0dXMgJXhcbiYjMzQ7LCByc3AtJmd0O3N0YXR1cyk7CiAKIAlpZiAocnNwLSZndDtzdGF0dXMgIT0gTkNJX1NUQVRVU19PSykKQEAgLTEwNCwxMCAmIzQzOzEyMiwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LAogCQkgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7CiAKIAl3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCAmbHQ7IG5kZXYtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcykgewotCQluZGV2LSZndDtzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4JiM0MzsmIzQzO10gPSAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7CiYjNDM7CQkvKiBvbmUgaW50ZXJmYWNlIGJ5dGUgJiM0Mzsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqLwomIzQzOwkJaWYgKGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgJmx0OyAyKQomIzQzOwkJCXJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjsKJiM0MzsJCW5kZXYtJmd0O3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW3JmX2ludGVyZmFjZV9pZHgmIzQzOyYjNDM7XSA9CiYjNDM7CQkJKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UmIzQzOyYjNDM7OwogCi0JCS8qIHNraXAgcmYgZXh0ZW5zaW9uIHBhcmFtZXRlcnMgKi8KJiM0MzsJCS8qIHNraXAgcmYgZXh0ZW5zaW9uIHBhcmFtZXRlcnMsIGJvdW5kZWQgYnkgdGhlIHBhY2tldCAqLwogCQlyZl9leHRlbnNpb25fY250ID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UmIzQzOyYjNDM7OwomIzQzOwkJaWYgKHJmX2V4dGVuc2lvbl9jbnQgJmd0OyBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKQomIzQzOwkJCXJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjsKIAkJc3VwcG9ydGVkX3JmX2ludGVyZmFjZSAmIzQzOz0gcmZfZXh0ZW5zaW9uX2NudDsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwNAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5GQyBOQ0kgQ29yZSBJbml0IFJlc3BvbnNlIFBhY2tldCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYG5ldC9uZmMvbmNpL3JzcC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpdCBhZGRzIHNvbWUgbGVuZ3RoIHZhbGlkYXRpb24gdG8gYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAgYW5kIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIE5DSSBjb3JlIGluaXQgcmVzcG9uc2UgcGFja2V0cywgd2hpY2ggaXMgYSBwcmV0dHkgY3J1Y2lhbCBwYXJ0IG9mIHRoZSBORkMgc3RhY2sgaW5pdGlhbGl6YXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBnaXZlbiB0aGF0IHRoaXMgaXMgZGlyZWN0bHkgaGFuZGxpbmcgcGFja2V0IHBhcnNpbmcsIHRoaXMgaXMgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLiBBbnkgaW5wdXQgdmFsaWRhdGlvbiBpc3N1ZXMgaGVyZSBjb3VsZCBiZSBleHBsb2l0YWJsZS4KClNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZWxldmFudCB0byBORkMgYW5kIE5DSSB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aGUgY29kZWJhc2UgYW5kIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IGNvbnRyb2wgY29tcGlsYXRpb24gb2YgYG5ldC9uZmMvbmNpL3JzcC5jYCwgYW5kIGJ5IGV4dGVuc2lvbiwgdGhlIGJlaGF2aW9yIG9mIHRoZXNlIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkZWZpbmVzIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyB0aGF0IGVuYWJsZSB0aGlzIGNvZGUgcGF0aCBzbyBJIGNhbiBlbnN1cmUgdGhlIGZ1enppbmcgdGFyZ2V0cyB0aGUgY29ycmVjdCBidWlsZCB2YXJpYW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9yc3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9yc3AuYz0yOD1zdGF0aWMgdm9pZCBuY2lfY29yZV9yZXNldF9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTQ2LVxubmV0L25mYy9uY2kvcnNwLmM6NDc6c3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcbm5ldC9uZmMvbmNpL3JzcC5jLTQ4LVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL25jaS9yc3AuYz0xNDg9c3RhdGljIHZvaWQgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTE1Mi1cdGlmICghKG5kZXYtXHUwMDNlbmNpX3ZlciBcdTAwMjYgTkNJX1ZFUl8yX01BU0spKVxubmV0L25mYy9uY2kvcnNwLmM6MTUzOlx0XHRzdGF0dXMgPSBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEobmRldiwgc2tiKTtcbm5ldC9uZmMvbmNpL3JzcC5jLTE1NC1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjgwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgTWFrZWZpbGUgZm9yIGBuZXQvbmZjL25jaS9gOgoKKipBbmFseXppbmcgdGhlIGBuZXQvbmZjL25jaS9gIE1ha2VmaWxlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L25mYy9uY2kvYCBkaXJlY3RvcnkgYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBNYWtlZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBORkMgTkNJIGNvbXBvbmVudC4gTXkgcHJpbWFyeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHJlbGV2YW50IHJ1bGVzLCB2YXJpYWJsZXMsIGFuZCBpbmNsdWRlIHBhdGhzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaG93IHRoZSBOQ0kgZHJpdmVyIGlzIGJ1aWx0LCB3aGF0IGhlYWRlciBmaWxlcyBpdCYjMzk7cyBpbmNsdWRpbmcsIHdoaWNoIHNvdXJjZSBmaWxlcyBhcmUgaW52b2x2ZWQsIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29tcGlsYXRpb24gZmxhZ3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLCBhbmQgaG93IGl0IGxpbmtzIHdpdGggb3RoZXIgbW9kdWxlcy4gQXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIHZlcnNpb25zPyBBbnkgY3Jvc3MtY29tcGlsYXRpb24gc2V0dGluZ3M/IEFueSBjdXN0b20gYnVpbGQgdGFyZ2V0cyBvciBpbnRlcm1lZGlhdGUgb2JqZWN0IGRpcmVjdG9yaWVzPyBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIHJlYWwgY29tcGxleGl0eSBsaWVzLiBJIGV4cGVjdCB0aGlzIHNob3VsZCBiZSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgeW91IG5ldmVyIGtub3cgdW50aWwgeW91IGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnNwLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9NYWtlZmlsZT02PW9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpLm9cbm5ldC9uZmMvbmNpL01ha2VmaWxlLTctXG5uZXQvbmZjL25jaS9NYWtlZmlsZTo4Om5jaS1vYmpzIDo9IGNvcmUubyBkYXRhLm8gbGliLm8gbnRmLm8gcnNwLm8gaGNpLm9cbm5ldC9uZmMvbmNpL01ha2VmaWxlLTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgRXhwbG9yYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdCBpcyBgQ09ORklHX05GQ19OQ0lgLiBSaWdodCwgSSBrbm93IHRoYXQgb25lLiBCdXQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXBseSBpbnRvIHRoaXMgc3BlY2lmaWMgc2V0dGluZywgSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZS4gSSBzaG91bGQgcXVpY2tseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gQXJlIHRoZXJlIGFueSBvdGhlciBORkMgc2V0dGluZ3MgZGVmaW5lZD8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcz8gTGV0JiMzOTtzIGNoZWNrLiBHb3R0YSBiZSB0aG9yb3VnaC4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gZ2V0IHR1bm5lbCB2aXNpb24gb24ganVzdCBvbmUgY29uZmlnIHdoZW4gdGhlcmUgbWlnaHQgYmUgc29tZXRoaW5nIGltcG9ydGFudCBjb25uZWN0ZWQgdG8gaXQsIG9yIHNvbWV0aGluZyBlbHNlIHJlbGF0ZWQgdG8gTkZDIHRoYXQgbmVlZHMgY29uc2lkZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19ORkNfTkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBORkMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LiBNeSBpbml0aWFsIGZvY3VzIGlzIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIE5GQyBzdWJzeXN0ZW0gYXJlIHByb2JhYmx5IGRlZmluZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGtub2JzLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0cy4gVGhlIHNwZWNpZmljcyBoZXJlIHdpbGwgZHJpdmUgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgaG93IHRoZSBkcml2ZXIgaXMgYnVpbHQsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSBmaW5kaW5nIGEgbGF5ZXJlZCBzdHJ1Y3R1cmUsIHNvIEkgY2FuIHNlZSB3aGF0IGlzIGNyaXRpY2FsLCBhbmQgd2hhdCBpcyBvcHRpb25hbC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5GQyBhbmQgc3BlY2lmaWNhbGx5IHRoZSBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgd2l0aGluIHRoaXMgcHJvamVjdC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBmb3IgYSBkaXJlY3Qgc2VhcmNoLiBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIG15IGtub3dsZWRnZSBvZiB0aGUgYnVpbGQgc3lzdGVtIGFuZCB0aGUgZXhwZWN0ZWQgbmFtaW5nIGNvbnZlbnRpb25zLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGVudGlyZSBwcm9qZWN0IHRyZWUgZm9yIHRoZSBzdHJpbmcgYGNvbmZpZyBORkNfTkNJYC4gVGhpcyBzaG91bGQsIGluIHRoZW9yeSwgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGRlZmNvbmZpZyBmcmFnbWVudHMsIG9yIEtjb25maWcgZW50cmllcyB3aGVyZSB0aGVzZSBvcHRpb25zIGFyZSBkZWZpbmVkIG9yIHVzZWQuIEhvcGVmdWxseSB0aGlzIHRhcmdldGVkIHNlYXJjaCB3aWxsIGJlIGVmZmljaWVudCwgYXZvaWRpbmcgdGhlIG5lZWQgdG8gbWFudWFsbHkgY3Jhd2wgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGJlIGFibGUgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgdXNhZ2Ugb2YgdGhpcyBzcGVjaWZpYyBORkMgY29udHJvbGxlciBpbnRlcmZhY2UuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX05DSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBUVFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUyNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgTkZDIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSB3YXMgbG9va2luZyBhdCBgbmV0L25mYy9uY2kvS2NvbmZpZ2AgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgSSByZWFsaXplZCBhIHN1YnRsZSBidXQgY3JpdGljYWwgZGlmZmVyZW5jZS4gSSBpbml0aWFsbHkgYXNzdW1lZCBpdCB3YXMgZ29pbmcgdG8gYmUgYENPTkZJR19ORkNfTkNJYCBiYXNlZCBvbiB0aGUgZmlsZSBwYXRoLCBidXQgaXQmIzM5O3MgYWN0dWFsbHkgYGNvbmZpZyBORkNfTkNJYCBpbiB0aGUgZmlsZS4gUmlnaHQsIHRoYXQgdW5kZXJzY29yZXMgdGhlIGltcG9ydGFuY2Ugb2YgYmVpbmcgcHJlY2lzZSB3aXRoIHRoZSBzeW50YXggaW4gdGhlc2UgS2NvbmZpZyBmaWxlcy4gVGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIHN5bWJvbCwgdGhlbiwgaXMgYE5GQ19OQ0lgLgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBhbGwgdGhlIGJhc2UgcmVxdWlyZW1lbnRzLiBJIHNob3VsZCBjaGVjayBpZiBgTkZDYCBpcyBhbHNvIGEgcmVxdWlyZWQgc3ltYm9sIGluIHRoaXMgc3BhY2UuIEFoLCB5ZXMsIGxvb2tpbmcgYXQgdGhlIGNvZGUgSSBjYW4gc2VlIHRoYXQgaXQgaXMsIHNvIGBORkNgIGlzIGVzc2VudGlhbC4KCkkgc2hvdWxkIHJ1biB0aHJvdWdoIHRoZSBgbmV0L25mYy9uY2kvS2NvbmZpZ2AgZmlsZSBhZ2FpbiBhbmQganVzdCB2ZXJpZnkgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHdoaWxlIEkmIzM5O20gYXQgaXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgZWxzZSByZWxhdGVkIHRvIGBORkNfTkNJYC4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeSB3aGVuIGRlYWxpbmcgd2l0aCB0aGVzZSBrZXJuZWwgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORkNfTkNJXG4gICAzOlx0XHRkZXBlbmRzIG9uIE5GQ1xuICAgNDpcdFx0dHJpc3RhdGUgXCYjMzQ7TkNJIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiAgIDU6XHRcdGRlZmF1bHQgblxuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgaXMgYSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJldHdlZW5cbiAgIDg6XHRcdCAgYW4gTkZDIENvbnRyb2xsZXIgKE5GQ0MpIGFuZCBhIERldmljZSBIb3N0IChESCkuXG4gICA5Olx0XG4gIDEwOlx0XHQgIFNheSBZIGhlcmUgdG8gY29tcGlsZSBOQ0kgc3VwcG9ydCBpbnRvIHRoZSBrZXJuZWwgb3Igc2F5IE0gdG9cbiAgMTE6XHRcdCAgY29tcGlsZSBpdCBhcyBtb2R1bGUgKG5jaSkuXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIE5GQ19OQ0lfU1BJXG4gIDE0Olx0XHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFNQSVxuICAxNTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7TkNJIG92ZXIgU1BJIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiAgMTc6XHRcdGRlZmF1bHQgblxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgaXMgYSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJldHdlZW5cbiAgMjA6XHRcdCAgYW4gTkZDIENvbnRyb2xsZXIgKE5GQ0MpIGFuZCBhIERldmljZSBIb3N0IChESCkuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIFNheSB5ZXMgaWYgeW91IHVzZSBhbiBOQ0kgZHJpdmVyIHRoYXQgcmVxdWlyZXMgU1BJIGxpbmsgbGF5ZXIuXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE5GQ19OQ0lfVUFSVFxuICAyNTpcdFx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBUVFlcbiAgMjY6XHRcdHRyaXN0YXRlIFwmIzM0O05DSSBvdmVyIFVBUlQgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuICAyNzpcdFx0ZGVmYXVsdCBuXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFNheSB5ZXMgaWYgeW91IHVzZSBhbiBOQ0kgZHJpdmVyIHRoYXQgcmVxdWlyZXMgVUFSVCBsaW5rIGxheWVyLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBORkMgSW5pdGlhbGl6YXRpb24gUmVzcG9uc2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9ucywgYE5GQ2AgYW5kIGBORkNfTkNJYC4gVGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIGRpc3NlY3QgaGVyZSBzZWVtIHRvIGJlIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgLCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYCwgYW5kIHBvdGVudGlhbGx5IHRoZSBiYXNlIGZ1bmN0aW9uLCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0YC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFllcywgaXQgaXMuIEFscmlnaHQsIHRoYXQgbWVhbnMgbXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldGAgZGVmaW5pdGlvbiwgYW5kIEkgbmVlZCB0byBjaGVjayBpdCBpbiBgbmV0L25mYy9uY2kvcnNwLmNgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiBob3cgdGhlc2UgaW5pdGlhbGl6YXRpb24gcmVzcG9uc2VzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoaW4gdGhlIE5DSSBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL3JzcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL3JzcC5jPTI4PXN0YXRpYyB2b2lkIG5jaV9jb3JlX3Jlc2V0X3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4tLVxubmV0L25mYy9uY2kvcnNwLmMtNDYtXG5uZXQvbmZjL25jaS9yc3AuYzo0NzpzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxubmV0L25mYy9uY2kvcnNwLmMtNDgtXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTk5LVxubmV0L25mYy9uY2kvcnNwLmM6MTAwOnN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG5uZXQvbmZjL25jaS9yc3AuYy0xMDEtXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTE0Ny1cbm5ldC9uZmMvbmNpL3JzcC5jOjE0ODpzdGF0aWMgdm9pZCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL25jaS9yc3AuYy0xNDkte1xuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTE1Mi1cdGlmICghKG5kZXYtXHUwMDNlbmNpX3ZlciBcdTAwMjYgTkNJX1ZFUl8yX01BU0spKVxubmV0L25mYy9uY2kvcnNwLmM6MTUzOlx0XHRzdGF0dXMgPSBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEobmRldiwgc2tiKTtcbm5ldC9uZmMvbmNpL3JzcC5jLTE1NC1cdGVsc2Vcbm5ldC9uZmMvbmNpL3JzcC5jOjE1NTpcdFx0c3RhdHVzID0gbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKG5kZXYsIHNrYik7XG5uZXQvbmZjL25jaS9yc3AuYy0xNTYtXG4tLVxubmV0L25mYy9uY2kvcnNwLmM9MzY5PXZvaWQgbmNpX3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9uY2kvcnNwLmMtMzk5LVx0Y2FzZSBOQ0lfT1BfQ09SRV9JTklUX1JTUDpcbm5ldC9uZmMvbmNpL3JzcC5jOjQwMDpcdFx0bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0KG5kZXYsIHNrYik7XG5uZXQvbmZjL25jaS9yc3AuYy00MDEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjU2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcG9pbnRpbmcgbWUgdG93YXJkcyBzb21lIGludGVyZXN0aW5nIGFyZWFzLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGJvdW5kcyBjaGVja2luZyB0byBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxYCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MmAsIHdoaWNoIGFyZSBjYWxsZWQgZnJvbSBgbmNpX3JzcF9wYWNrZXRgLiBHaXZlbiB0aGF0IHRoZXkmIzM5O3JlIHRvdWNoaW5nIHRoZXNlIGZ1bmN0aW9ucywgdGhhdCBzY3JlYW1zIGZ1enppbmcgdGFyZ2V0IHRvIG1lLiBNZW1vcnkgY29ycnVwdGlvbiBpcyBhIGxpa2VseSBhdmVudWUgb2YgYXR0YWNrIGdpdmVuIHRoZSBjb250ZXh0LgoKSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aG9zZSB0aHJlZSBzeW1ib2xzOiBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxYCwgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MmAsIGFuZCB0aGUgcGFyZW50LCBgbmNpX3JzcF9wYWNrZXRgLgoKTm93LCB0aGUgY29uZmlndXJhdGlvbi4uLiB0aGV5JiMzOTtyZSBtZW50aW9uaW5nIGBORkNfTkNJYC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLiBJcyBqdXN0IGBORkNfTkNJYCBlbm91Z2ggdG8gZ2V0IHRoZXNlIGZ1bmN0aW9ucyBidWlsdCBhbmQgcmVhY2hhYmxlPyBPciBkbyBJIG5lZWQgdG8gZW5hYmxlIGEgbW9yZSBzcGVjaWZpYyBOQ0kgdmFyaWFudCBsaWtlIGBORkNfTkNJX1NQSWAgb3IgYE5GQ19OQ0lfVUFSVGA/IE1heWJlIGV2ZW4gYE5GQ19WSVJUVUFMX05DSWA/IEkmIzM5O2QgYmV0dGVyIGNoZWNrIGZvciB0aGF0IHZpcnR1YWwgZHJpdmVyOyB2aXJ0dWFsIGRyaXZlcnMgY2FuIHNvbWV0aW1lcyBleHBvc2UgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBjb21wbGV0ZWx5IHRvIGVmZmVjdGl2ZWx5IHRhcmdldCB0aGUgZnV6emluZyBjYW1wYWlnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODc5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWc6NTM6XHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmZjL0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIE5GQ19OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTUtXHRoZWxwXG5kcml2ZXJzL25mYy9LY29uZmlnOjU2Olx0ICBOQ0kgdmlydHVhbCBkZXZpY2Ugc2ltdWxhdGVzIGEgTkNJIGRldmljZSB0byB0aGUgdXNlci5cbmRyaXZlcnMvbmZjL0tjb25maWc6NTc6XHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXG5kcml2ZXJzL25mYy9LY29uZmlnOjU4Olx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHZpcnR1YWwgTkNJIGRldmljZSBhbmRcbmRyaXZlcnMvbmZjL0tjb25maWctNTktXHQgIG1vZHVsZS5cbi0tXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXHQmIzQzOz0gc3QyMW5mY2EvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTkZDX1NUX05DSSlcdCYjNDM7PSBzdC1uY2kvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfTkZDX05YUF9OQ0kpXHQmIzQzOz0gbnhwLW5jaS9cbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19ORkNfUzNGV1JONSlcdCYjNDM7PSBzM2Z3cm41L1xuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX05GQ19TVDk1SEYpXHQmIzQzOz0gc3Q5NWhmL1xuZHJpdmVycy9uZmMvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX05GQ19WSVJUVUFMX05DSSlcdCYjNDM7PSB2aXJ0dWFsX25jaWRldi5vXG4tLVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWc9Mj1jb25maWcgTkZDX0ZEUFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIEZEUCBORkMgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBORkNfTkNJXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy01LVx0c2VsZWN0IENSQ19DQ0lUVFxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTgtXHQgIEludGVsIEZpZWxkcyBQZWFrIE5GQyBjb250cm9sbGVyIGNvcmUgZHJpdmVyLlxuZHJpdmVycy9uZmMvZmRwL0tjb25maWc6OTpcdCAgVGhpcyBpcyBhIGRyaXZlciBiYXNlZCBvbiB0aGUgTkNJIE5GQyBrZXJuZWwgbGF5ZXJzLlxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMTAtXG4tLVxuZHJpdmVycy9uZmMvZmRwL01ha2VmaWxlLTItI1xuZHJpdmVycy9uZmMvZmRwL01ha2VmaWxlOjM6IyBNYWtlZmlsZSBmb3IgRkRQIE5DSSBiYXNlZCBORkMgZHJpdmVyXG5kcml2ZXJzL25mYy9mZHAvTWFrZWZpbGUtNC0jXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIxLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjIyOiNkZWZpbmUgTkNJX0dFVF9WRVJTSU9OX1RJTUVPVVRcdFx0XHQ4MDAwXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MjM6I2RlZmluZSBOQ0lfUEFUQ0hfUkVRVUVTVF9USU1FT1VUXHRcdDgwMDBcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yNC0jZGVmaW5lIEZEUF9QQVRDSF9DT05OX0RFU1RcdFx0XHQweEMyXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTI2LVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjI3OiNkZWZpbmUgTkNJX1BBVENIX1RZUEVfUkFNXHRcdFx0MHgwMFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjI4OiNkZWZpbmUgTkNJX1BBVENIX1RZUEVfT1RQXHRcdFx0MHgwMVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjI5OiNkZWZpbmUgTkNJX1BBVENIX1RZUEVfRU9UXHRcdFx0MHhGRlxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTMwLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjMxOiNkZWZpbmUgTkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OXHRcdDB4QTBcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozMjojZGVmaW5lIE5DSV9QQVJBTV9JRF9GV19PVFBfVkVSU0lPTlx0XHQweEExXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzM6I2RlZmluZSBOQ0lfUEFSQU1fSURfT1RQX0xJTUlURURfVkVSU0lPTlx0MHhDNVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjM0OiNkZWZpbmUgTkNJX1BBUkFNX0lEX0tFWV9JTkRFWF9JRFx0XHQweEM2XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMzUtXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzY6I2RlZmluZSBOQ0lfR0lEX1BST1BcdFx0XHRcdDB4MEZcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozNzojZGVmaW5lIE5DSV9PUF9QUk9QX1BBVENIX09JRFx0XHRcdDB4MDhcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozODojZGVmaW5lIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSURcdFx0MHgyM1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM5LVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz02OD1zdGF0aWMgY29uc3QgdTggbmNpX2NvcmVfZ2V0X2NvbmZpZ19vdHBfcmFtX3ZlcnNpb25bNV0gPSB7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjktXHQweDA0LFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjcwOlx0TkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OLFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjcxOlx0TkNJX1BBUkFNX0lEX0ZXX09UUF9WRVJTSU9OLFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjcyOlx0TkNJX1BBUkFNX0lEX09UUF9MSU1JVEVEX1ZFUlNJT04sXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NzM6XHROQ0lfUEFSQU1fSURfS0VZX0lOREVYX0lEXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzQtfTtcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTAxPXN0YXRpYyBpbmxpbmUgaW50IGZkcF9uY2lfZ2V0X3ZlcnNpb25zKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTEwMi17XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTAzOlx0cmV0dXJuIG5jaV9jb3JlX2NtZChuZGV2LCBOQ0lfT1BfQ09SRV9HRVRfQ09ORklHX0NNRCxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xMDQtXHRcdFx0ICAgIHNpemVvZihuY2lfY29yZV9nZXRfY29uZmlnX290cF9yYW1fdmVyc2lvbiksXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTEwOD1zdGF0aWMgaW5saW5lIGludCBmZHBfbmNpX3BhdGNoX2NtZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggdHlwZSlcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xMDkte1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjExMDpcdHJldHVybiBuY2lfcHJvcF9jbWQobmRldiwgTkNJX09QX1BST1BfUEFUQ0hfT0lELCBzaXplb2YodHlwZSksIFx1MDAyNnR5cGUpO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTExMS19XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTExMz1zdGF0aWMgaW5saW5lIGludCBmZHBfbmNpX3NldF9wcm9kdWN0aW9uX2RhdGEoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHU4IGxlbixcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTE1LXtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxMTY6XHRyZXR1cm4gbmNpX3Byb3BfY21kKG5kZXYsIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSUQsIGxlbiwgZGF0YSk7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTE3LX1cbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTU5PXN0YXRpYyB2b2lkIGZkcF9uY2lfc2V0X2RhdGFfcGt0X2NvdW50ZXIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE2NC1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxNjU6XHRkZXZfZGJnKGRldiwgXCYjMzQ7TkNJIGRhdGEgcGt0IGNvdW50ZXIgJWRcXG5cJiMzNDssIGNvdW50KTtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xNjYtXHRhdG9taWNfc2V0KFx1MDAyNmluZm8tXHUwMDNlZGF0YV9wa3RfY291bnRlciwgY291bnQpO1xuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xNzYtICpcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxNzc6ICogVGhlIGZpcm13YXJlIHdpbGwgYmUgYW5hbHl6ZWQgYW5kIGFwcGxpZWQgd2hlbiB3ZSBzZW5kIE5DSV9PUF9QUk9QX1BBVENIX0NNRFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE3ODogKiBjb21tYW5kIHdpdGggTkNJX1BBVENIX1RZUEVfRU9UIHBhcmFtZXRlci4gVGhlIGRldmljZSB3aWxsIHNlbmQgYVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE3OTogKiBORkNDX1BBVENIX05URiBwYWNrZXQgYW5kIGEgTkNJX09QX0NPUkVfUkVTRVRfTlRGIHBhY2tldC5cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xODAtICovXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTgxPXN0YXRpYyBpbnQgZmRwX25jaV9zZW5kX3BhdGNoKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBjb25uX2lkLCB1OCB0eXBlKVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xODktXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTkwOlx0aWYgKCh0eXBlID09IE5DSV9QQVRDSF9UWVBFX09UUCBcdTAwMjZcdTAwMjYgIWluZm8tXHUwMDNlb3RwX3BhdGNoKSB8fFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE5MTpcdCAgICAodHlwZSA9PSBOQ0lfUEFUQ0hfVFlQRV9SQU0gXHUwMDI2XHUwMDI2ICFpbmZvLVx1MDAzZXJhbV9wYXRjaCkpXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTkyLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xOTMtXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTk0Olx0aWYgKHR5cGUgPT0gTkNJX1BBVENIX1RZUEVfT1RQKVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE5NS1cdFx0ZncgPSBpbmZvLVx1MDAzZW90cF9wYXRjaDtcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMjExLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjIxMjpcdFx0c2tiID0gbmNpX3NrYl9hbGxvYyhuZGV2LCAoTkNJX0NUUkxfSERSX1NJWkUgJiM0MzsgcGF5bG9hZF9zaXplKSxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yMTMtXHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIxOS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyMjA6XHRcdHNrYl9yZXNlcnZlKHNrYiwgTkNJX0NUUkxfSERSX1NJWkUpO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIyMS1cbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MzI0PXN0YXRpYyBpbnQgZmRwX25jaV9wYXRjaF9vdHAoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTMzOC1cdC8qIFBhdGNoIGluaXQgcmVxdWVzdCAqL1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjMzOTpcdHIgPSBmZHBfbmNpX3BhdGNoX2NtZChuZGV2LCBOQ0lfUEFUQ0hfVFlQRV9PVFApO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM0MC1cdGlmIChyKVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNDgtXHQvKiBTZW5kIHRoZSBwYXRjaCBvdmVyIHRoZSBkYXRhIGNvbm5lY3Rpb24gKi9cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozNDk6XHRyID0gZmRwX25jaV9zZW5kX3BhdGNoKG5kZXYsIGNvbm5faWQsIE5DSV9QQVRDSF9UWVBFX09UUCk7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMzUwLVx0aWYgKHIpXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM2NS1cdC8qIFBhdGNoIGZpbmlzaCBtZXNzYWdlICovXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzY2Olx0aWYgKGZkcF9uY2lfcGF0Y2hfY21kKG5kZXYsIE5DSV9QQVRDSF9UWVBFX0VPVCkpIHtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNjctXHRcdG5mY19lcnIoZGV2LCBcJiMzNDtPVFAgcGF0Y2ggZXJyb3IgMHgleFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTM5MD1zdGF0aWMgaW50IGZkcF9uY2lfcGF0Y2hfcmFtKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy00MDQtXHQvKiBQYXRjaCBpbml0IHJlcXVlc3QgKi9cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo0MDU6XHRyID0gZmRwX25jaV9wYXRjaF9jbWQobmRldiwgTkNJX1BBVENIX1RZUEVfUkFNKTtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy00MDYtXHRpZiAocilcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDE0LVx0LyogU2VuZCB0aGUgcGF0Y2ggb3ZlciB0aGUgZGF0YSBjb25uZWN0aW9uICovXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NDE1Olx0ciA9IGZkcF9uY2lfc2VuZF9wYXRjaChuZGV2LCBjb25uX2lkLCBOQ0lfUEFUQ0hfVFlQRV9SQU0pO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQxNi1cdGlmIChyKVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy00MzEtXHQvKiBQYXRjaCBmaW5pc2ggbWVzc2FnZSAqL1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjQzMjpcdGlmIChmZHBfbmNpX3BhdGNoX2NtZChuZGV2LCBOQ0lfUEFUQ0hfVFlQRV9FT1QpKSB7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDMzLVx0XHRuZmNfZXJyKGRldiwgXCYjMzQ7UkFNIHBhdGNoIGVycm9yIDB4JXhcXG5cJiMzNDssIHIpO1xuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz00NTY9c3RhdGljIGludCBmZHBfbmNpX3NldHVwKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQ1Ny17XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NDU4Olx0LyogRm9ybWF0OiB0b3RhbCBsZW5ndGggZm9sbG93ZWQgYnkgYW4gTkNJIHBhY2tldCAqL1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQ1OS1cdHN0cnVjdCBmZHBfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTYxNj1zdGF0aWMgaW50IGZkcF9uY2lfY29yZV9nZXRfY29uZmlnX3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTYyNC1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2MjU6XHRpZiAocnNwLVx1MDAzZXN0YXR1cyA9PSBOQ0lfU1RBVFVTX09LKSB7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjI2LVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02MzAtXHRcdFx0c3dpdGNoICgqcCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2MzE6XHRcdFx0Y2FzZSBOQ0lfUEFSQU1fSURfRldfUkFNX1ZFUlNJT046XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjMyLVx0XHRcdFx0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTYzNS1cdFx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjYzNjpcdFx0XHRjYXNlIE5DSV9QQVJBTV9JRF9GV19PVFBfVkVSU0lPTjpcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02MzctXHRcdFx0XHRwJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjQwLVx0XHRcdFx0YnJlYWs7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjQxOlx0XHRcdGNhc2UgTkNJX1BBUkFNX0lEX09UUF9MSU1JVEVEX1ZFUlNJT046XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjQyLVx0XHRcdFx0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY0NS1cdFx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjY0NjpcdFx0XHRjYXNlIE5DSV9QQVJBTV9JRF9LRVlfSU5ERVhfSUQ6XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjQ3LVx0XHRcdFx0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTY2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzIGZkcF9jb3JlX29wc1tdID0ge1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY2NC1cdHtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2NjU6XHRcdC5vcGNvZGUgPSBOQ0lfT1BfQ09SRV9HRVRfQ09ORklHX1JTUCxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NjYtXHRcdC5yc3AgPSBmZHBfbmNpX2NvcmVfZ2V0X2NvbmZpZ19yc3BfcGFja2V0LFxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NjgtXHR7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjY5Olx0XHQub3Bjb2RlID0gTkNJX09QX0NPUkVfUkVTRVRfTlRGLFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY3MC1cdFx0Lm50ZiA9IGZkcF9uY2lfY29yZV9yZXNldF9udGZfcGFja2V0LFxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz02NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfZHJpdmVyX29wcyBmZHBfcHJvcF9vcHNbXSA9IHtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NzUtXHR7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6Njc2Olx0XHQub3Bjb2RlID0gbmNpX29wY29kZV9wYWNrKE5DSV9HSURfUFJPUCwgTkNJX09QX1BST1BfUEFUQ0hfT0lEKSxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NzctXHRcdC5yc3AgPSBmZHBfbmNpX3Byb3BfcGF0Y2hfcnNwX3BhY2tldCxcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjgwLVx0e1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjY4MTpcdFx0Lm9wY29kZSA9IG5jaV9vcGNvZGVfcGFjayhOQ0lfR0lEX1BST1AsXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjgyOlx0XHRcdFx0XHQgIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSUQpLFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY4My1cdFx0LnJzcCA9IGZkcF9uY2lfcHJvcF9zZXRfcHJvZHVjdGlvbl9kYXRhX3JzcF9wYWNrZXQsXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTY5OT1pbnQgZmRwX25jaV9wcm9iZShzdHJ1Y3QgZmRwX2kyY19waHkgKnBoeSwgY29uc3Qgc3RydWN0IG5mY19waHlfb3BzICpwaHlfb3BzLFxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy03MjktXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NzMwOlx0QlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZmRwX3Byb3Bfb3BzKSBcdTAwM2UgTkNJX01BWF9QUk9QUklFVEFSWV9DTUQpO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTczMS1cdG5kZXYgPSBuY2lfYWxsb2NhdGVfZGV2aWNlKFx1MDAyNm5jaV9vcHMsIHByb3RvY29scywgdHhfaGVhZHJvb20sXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTc2Mj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjc2MzpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TkZDIE5DSSBkcml2ZXIgZm9yIEludGVsIEZpZWxkcyBQZWFrIE5GQyBjb250cm9sbGVyXCYjMzQ7KTtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy03NjQtTU9EVUxFX0FVVEhPUihcJiMzNDtSb2JlcnQgRG9sY2EgXHUwMDNjcm9iZXJ0LmRvbGNhQGludGVsLmNvbVx1MDAzZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTI4LVxuZHJpdmVycy9uZmMvZmRwL2kyYy5jOjI5OiNkZWZpbmUgRkRQX05DSV9JMkNfTUlOX1BBWUxPQURcdDVcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzozMDojZGVmaW5lIEZEUF9OQ0lfSTJDX01BWF9QQVlMT0FEXHQyNjFcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYy0zMS1cbi0tXG5kcml2ZXJzL25mYy9mZHAvaTJjLmM9MTI5PXN0YXRpYyBpbnQgZmRwX25jaV9pMmNfcmVhZChzdHJ1Y3QgZmRwX2kyY19waHkgKnBoeSwgc3RydWN0IHNrX2J1ZmYgKipza2IpXG4tLVxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTEzMS1cdGludCByLCBsZW47XG5kcml2ZXJzL25mYy9mZHAvaTJjLmM6MTMyOlx0dTggdG1wW0ZEUF9OQ0lfSTJDX01BWF9QQVlMT0FEXSwgbHJjLCBrO1xuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTEzMy1cdHUxNiBpO1xuLS1cbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYy0xNjktXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy9mZHAvaTJjLmM6MTcwOlx0XHRcdHBoeS1cdTAwM2VuZXh0X3JlYWRfc2l6ZSA9IEZEUF9OQ0lfSTJDX01JTl9QQVlMT0FEO1xuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTE3MS1cbi0tXG5kcml2ZXJzL25mYy9mZHAvaTJjLmM9Mjc4PXN0YXRpYyBpbnQgZmRwX25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMzAyLVx0cGh5LVx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XG5kcml2ZXJzL25mYy9mZHAvaTJjLmM6MzAzOlx0cGh5LVx1MDAzZW5leHRfcmVhZF9zaXplID0gRkRQX05DSV9JMkNfTUlOX1BBWUxPQUQ7XG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMzA0LVx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcbi0tXG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMzM1LVx0aWYgKHIgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzozMzY6XHRcdG5mY19lcnIoZGV2LCBcJiMzNDtOQ0kgcHJvYmluZyBlcnJvclxcblwmIzM0Oyk7XG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMzM3LVx0XHRyZXR1cm4gcjtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc9MTA9Y29uZmlnIE5GQ19NUlZMX1VTQlxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBORkMtb3Zlci1VU0IgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MTI6XHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFVTQlxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTEzLVx0c2VsZWN0IE5GQ19NUlZMXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnPTIzPWNvbmZpZyBORkNfTVJWTF9VQVJUXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE5GQy1vdmVyLVVBUlQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IE5GQ19OQ0lfVUFSVFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI2LVx0c2VsZWN0IE5GQ19NUlZMXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnPTQ2PWNvbmZpZyBORkNfTVJWTF9TUElcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgTkZDLW92ZXItU1BJIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjQ4Olx0ZGVwZW5kcyBvbiBORkNfTVJWTCBcdTAwMjZcdTAwMjYgTkZDX05DSV9TUElcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL01ha2VmaWxlLTItI1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9NYWtlZmlsZTozOiMgTWFrZWZpbGUgZm9yIE5GQ01SVkwgTkNJIGJhc2VkIE5GQyBkcml2ZXJcbmRyaXZlcnMvbmZjL25mY21ydmwvTWFrZWZpbGUtNC0jXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTctXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoxODojZGVmaW5lIE5DSV9PUF9QUk9QUklFVEFSWV9CT09UX0NNRFx0bmNpX29wY29kZV9wYWNrKE5DSV9HSURfUFJPUFJJRVRBUlksIFxcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoxOTpcdFx0XHRcdFx0XHRcdE5DSV9PUF9QUk9QX0JPT1RfQ01EKVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMjAtXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9NjU9c3RhdGljIGNvbnN0IHVpbnQ4X3QgbmNpX3BhdHRlcm5fY29yZV9jb25uX2NyZWRpdHNfbnRmW10gPSB7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzo2NjpcdDB4NjAsIDB4MDYsIDB4MDMsIDB4MDEsIE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMLCAweDAxXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy02Ny19O1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTczPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYWxsb2NfbGNfc2tiKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsIHVpbnQ4X3QgcGxlbilcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy03Ny1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjc4Olx0c2tiID0gbmNpX3NrYl9hbGxvYyhwcml2LVx1MDAzZW5kZXYsIChOQ0lfREFUQV9IRFJfU0laRSAmIzQzOyBwbGVuKSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy03OS1cdGlmICghc2tiKVxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTgxLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6ODI6XHRoZHIgPSBza2JfcHV0KHNrYiwgTkNJX0RBVEFfSERSX1NJWkUpO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6ODM6XHRoZHItXHUwMDNlY29ubl9pZCA9IE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtODQtXHRoZHItXHUwMDNlcmZ1ID0gMDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy04Ni1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjg3Olx0bmNpX210X3NldCgoX191OCAqKWhkciwgTkNJX01UX0RBVEFfUEtUKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjg4Olx0bmNpX3BiZl9zZXQoKF9fdTggKiloZHIsIE5DSV9QQkZfTEFTVCk7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy04OS1cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0xMzA9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX3Jlc2V0KHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTQxLVx0cHJpdi1cdTAwM2Vmd19kbmxkLnN0YXRlID0gU1RBVEVfSU5JVDtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE0MjpcdG5jaV9zZW5kX2NtZChwcml2LVx1MDAzZW5kZXYsIE5DSV9PUF9DT1JFX0lOSVRfQ01ELCAwLCBOVUxMKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE0My1cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0xNDc9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX2luaXQoc3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0xNjEtXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoxNjI6XHRuY2lfc2VuZF9jbWQocHJpdi1cdTAwM2VuZGV2LCBOQ0lfT1BfQ09SRV9TRVRfQ09ORklHX0NNRCwgMyAmIzQzOyBjbWQucGFyYW0ubGVuLFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTYzLVx0XHQgICAgIFx1MDAyNmNtZCk7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MTY5PXN0YXRpYyB2b2lkIGNyZWF0ZV9sYyhzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTcwLXtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE3MTpcdHVpbnQ4X3QgcGFyYW1bMl0gPSB7IE5DSV9DT1JFX0xDX1BST1BfRldfREwsIDB4MCB9O1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTcyLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTczLVx0cHJpdi1cdTAwM2Vmd19kbmxkLnN0YXRlID0gU1RBVEVfT1BFTl9MQztcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE3NDpcdG5jaV9zZW5kX2NtZChwcml2LVx1MDAzZW5kZXYsIE5DSV9PUF9DT1JFX0NPTk5fQ1JFQVRFX0NNRCwgMiwgcGFyYW0pO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTc1LX1cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0xNzc9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX3NldF9yZWZfY2xvY2soc3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yMTctXHRwcml2LVx1MDAzZWZ3X2RubGQuc3RhdGUgPSBTVEFURV9TRVRfSElfQ09ORklHO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MjE4Olx0bmNpX3NlbmRfY21kKHByaXYtXHUwMDNlbmRldiwgTkNJX09QX0NPUkVfU0VUX0NPTkZJR19DTUQsIDMgJiM0MzsgY21kLnBhcmFtLmxlbixcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTIxOS1cdFx0ICAgICBcdTAwMjZjbWQpO1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTI0OD1zdGF0aWMgaW50IHByb2Nlc3Nfc3RhdGVfZndfZG5sZChzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTI1OC1cdFx0ICogQ29tbWFuZCBmb3JtYXQ6XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoyNTk6XHRcdCAqIEIwLi4yOiBOQ0kgaGVhZGVyXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yNjAtXHRcdCAqIEIzICAgOiBIZWxwZXIgY29tbWFuZCAoMHhBNSlcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yNjUtXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoyNjY6XHRcdC8qIFJlbW92ZSBOQ0kgSERSICovXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yNjctXHRcdHNrYl9wdWxsKHNrYiwgMyk7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA2LVx0XHRcdC8qIEZXIExvYWRpbmcgaXMgZG9uZSAqL1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MzA3Olx0XHRcdHVpbnQ4X3QgY29ubl9pZCA9IE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA4LVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA5LVx0XHRcdHByaXYtXHUwMDNlZndfZG5sZC5zdGF0ZSA9IFNUQVRFX0NMT1NFX0xDO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MzEwOlx0XHRcdG5jaV9zZW5kX2NtZChwcml2LVx1MDAzZW5kZXYsIE5DSV9PUF9DT1JFX0NPTk5fQ0xPU0VfQ01ELFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzExLVx0XHRcdFx0ICAgICAxLCBcdTAwMjZjb25uX2lkKTtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0zNDk9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX2Nsb3NlX2xjKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzU2LVx0cHJpdi1cdTAwM2Vmd19kbmxkLnN0YXRlID0gU1RBVEVfQk9PVDtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjM1NzpcdG5jaV9zZW5kX2NtZChwcml2LVx1MDAzZW5kZXYsIE5DSV9PUF9QUk9QUklFVEFSWV9CT09UX0NNRCwgMCwgTlVMTCk7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0zNTgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0zOTE9c3RhdGljIHZvaWQgZndfZG5sZF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy00MDMtXHRcdG5mY19zZW5kX3RvX3Jhd19zb2NrKHByaXYtXHUwMDNlbmRldi1cdTAwM2VuZmNfZGV2LCBza2IsXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzo0MDQ6XHRcdFx0XHQgICAgIFJBV19QQVlMT0FEX05DSSwgTkZDX0RJUkVDVElPTl9SWCk7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy00MDUtXHRcdHN3aXRjaCAoZndfZG5sZC1cdTAwM2VzdGF0ZSkge1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oLTE0LVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmg6MTU6I2RlZmluZSBOQ0lfT1BfUFJPUF9CT09UX0NNRFx0XHQweDNBXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuaC0xNi1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oOjE3OiNkZWZpbmUgTkNJX0NPUkVfTENfUFJPUF9GV19ETFx0XHQweEZEXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuaDoxODojZGVmaW5lIE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMXHQweDAyXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuaC0xOS1cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jPTI1PXN0YXRpYyBpbnQgbmZjbXJ2bF9pMmNfcmVhZChzdHJ1Y3QgbmZjbXJ2bF9pMmNfZHJ2X2RhdGEgKmRydl9kYXRhLFxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtMzAtXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjMxOlx0LyogUmVhZCBOQ0kgaGVhZGVyIHRvIGtub3cgdGhlIHBheWxvYWQgc2l6ZSAqL1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYzozMjpcdHJldCA9IGkyY19tYXN0ZXJfcmVjdihkcnZfZGF0YS1cdTAwM2VpMmMsICh1OCAqKVx1MDAyNm5jaV9oZHIsIE5DSV9DVFJMX0hEUl9TSVpFKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6MzM6XHRpZiAocmV0ICE9IE5DSV9DVFJMX0hEUl9TSVpFKSB7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjM0Olx0XHRuZmNfZXJyKFx1MDAyNmRydl9kYXRhLVx1MDAzZWkyYy1cdTAwM2VkZXYsIFwmIzM0O2Nhbm5vdCByZWFkIE5DSSBoZWFkZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy0zNS1cdFx0cmV0dXJuIC1FQkFETVNHO1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtMzgtXHQqc2tiID0gbmNpX3NrYl9hbGxvYyhkcnZfZGF0YS1cdTAwM2Vwcml2LVx1MDAzZW5kZXYsXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjM5Olx0XHRcdCAgICAgbmNpX2hkci5wbGVuICYjNDM7IE5DSV9DVFJMX0hEUl9TSVpFLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtNDAtXHRpZiAoISpza2IpXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy00Mi1cbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6NDM6XHQvKiBDb3B5IE5DSSBoZWFkZXIgaW50byB0aGUgU0tCICovXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjQ0Olx0c2tiX3B1dF9kYXRhKCpza2IsIFx1MDAyNm5jaV9oZHIsIE5DSV9DVFJMX0hEUl9TSVpFKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtNDUtXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jLTQ2LVx0aWYgKG5jaV9oZHIucGxlbikge1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYzo0NzpcdFx0LyogUmVhZCB0aGUgTkNJIHBheWxvYWQgKi9cbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtNDgtXHRcdHJldCA9IGkyY19tYXN0ZXJfcmVjdihkcnZfZGF0YS1cdTAwM2VpMmMsXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9MTc9c3RhdGljIGludCBuZmNtcnZsX25jaV9vcGVuKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIxLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM6MjI6XHRpZiAodGVzdF9hbmRfc2V0X2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcdTAwMjZwcml2LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIzLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0zMC1cdGlmIChlcnIpXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzozMTpcdFx0Y2xlYXJfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMzItXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9MzY9c3RhdGljIGludCBuZmNtcnZsX25jaV9jbG9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0zOS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjQwOlx0aWYgKCF0ZXN0X2FuZF9jbGVhcl9iaXQoTkZDTVJWTF9OQ0lfUlVOTklORywgXHUwMDI2cHJpdi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy00MS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9OTI9c3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqbmZjbXJ2bF9uY2lfcmVnaXN0ZXJfZGV2KGVudW0gbmZjbXJ2bF9waHkgcGh5LFxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTEyNC1cdGlmIChwaHkgPT0gTkZDTVJWTF9QSFlfU1BJKSB7XG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoxMjU6XHRcdGhlYWRyb29tID0gTkNJX1NQSV9IRFJfTEVOO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTI2LVx0XHR0YWlscm9vbSA9IDE7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9MTk0PWludCBuZmNtcnZsX25jaV9yZWN2X2ZyYW1lKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTk4LVx0XHQgICAgc2tiLVx1MDAzZWRhdGFbMV0gPT0gTkZDTVJWTF9IQ0lfTkZDX0VWRU5UX0NPREUpIHtcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjE5OTpcdFx0XHQvKiBEYXRhIHBhY2tldCwgbGV0JiMzOTtzIGV4dHJhY3QgTkNJIHBheWxvYWQgKi9cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIwMC1cdFx0XHRza2JfcHVsbChza2IsIE5GQ01SVkxfSENJX0VWRU5UX0hFQURFUl9TSVpFKTtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0yMTItXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoyMTM6XHRpZiAodGVzdF9iaXQoTkZDTVJWTF9OQ0lfUlVOTklORywgXHUwMDI2cHJpdi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0yMTQtXHRcdG5jaV9yZWN2X2ZyYW1lKHByaXYtXHUwMDNlbmRldiwgc2tiKTtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaD0xMz1zdHJ1Y3QgZ3Bpb19kZXNjO1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oLTE1LS8qIERlZmluZSBwcml2YXRlIGZsYWdzOiAqL1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmg6MTY6I2RlZmluZSBORkNNUlZMX05DSV9SVU5OSU5HXHRcdFx0MVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMTctI2RlZmluZSBORkNNUlZMX1BIWV9FUlJPUlx0XHRcdDJcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaC0yNC0jZGVmaW5lIE5GQ01SVkxfR1BJT19QSU5fTkZDX0FDVElWRVx0XHQweEJcbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oOjI1OiNkZWZpbmUgTkZDTVJWTF9OQ0lfTUFYX0VWRU5UX1NJWkVcdFx0MjYwXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaC0yNi1cbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oLTI3LS8qXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaDoyODogKiBOQ0kgRlcgUGFyYW1ldGVyc1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMjktICovXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC91YXJ0LmM9MjM9c3RhdGljIHVuc2lnbmVkIGludCBicmVha19jb250cm9sO1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTI1LS8qXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYzoyNjogKiBORkNNUlZMIE5DSSBPUFNcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTI3LSAqL1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jPTY0PXN0YXRpYyBpbnQgbmZjbXJ2bF91YXJ0X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYy0xMDQtLypcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jOjEwNTogKiBOQ0kgVUFSVCBPUFNcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTEwNi0gKi9cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYz0xOTA9c3RhdGljIHN0cnVjdCBuY2lfdWFydCBuZmNtcnZsX25jaV91YXJ0ID0ge1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTE5Mi1cdC5uYW1lICAgPSBcJiMzNDtuZmNtcnZsX3VhcnRcJiMzNDssXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYzoxOTM6XHQuZHJpdmVyID0gTkNJX1VBUlRfRFJJVkVSX01BUlZFTEwsXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYy0xOTQtXHQub3BzXHQ9IHtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jPTU3PXN0YXRpYyB2b2lkIG5mY21ydmxfYnVsa19jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC91c2IuYy02NC1cbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6NjU6XHRpZiAoIXRlc3RfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFx1MDAyNmRydl9kYXRhLVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmMtNjYtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jPTEwMz1uZmNtcnZsX3N1Ym1pdF9idWxrX3VyYihzdHJ1Y3QgbmZjbXJ2bF91c2JfZHJ2X2RhdGEgKmRydl9kYXRhLCBnZnBfdCBtZW1fZmxhZ3MpXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC91c2IuYy0xMDctXHR1bnNpZ25lZCBpbnQgcGlwZTtcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6MTA4Olx0aW50IGVyciwgc2l6ZSA9IE5GQ01SVkxfTkNJX01BWF9FVkVOVF9TSVpFO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC91c2IuYy0xMDktXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC91c2IuYz00MDA9c3RhdGljIGludCBuZmNtcnZsX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTQwOS1cbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6NDEwOlx0aWYgKCF0ZXN0X2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcdTAwMjZkcnZfZGF0YS1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTQxMS1cdFx0Z290byBkb25lO1xuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OWFBfTkNJXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6MzpcdHRyaXN0YXRlIFwmIzM0O05YUC1OQ0kgTkZDIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIE5GQ19OQ0lcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy01LVx0aGVscFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjY6XHQgIEdlbmVyaWMgY29yZSBkcml2ZXIgZm9yIE5YUCBOQ0kgY2hpcHMgc3VjaCBhcyB0aGUgTlBDMTAwIChQTjU0NyksXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctNy1cdCAgTlBDMzAwIChQTjU0OCkgb3IgUE43MTUwIGZhbWlsaWVzLlxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjg6XHQgIFRoaXMgaXMgYSBkcml2ZXIgYmFzZWQgb24gdGhlIE5DSSBORkMga2VybmVsIGxheWVycyBhbmRcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy05LVx0ICB3aWxsIHRodXMgbm90IHdvcmsgd2l0aCBOWFAgbGlibmZjIGxpYnJhcnkuXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjE1OmNvbmZpZyBORkNfTlhQX05DSV9JMkNcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxNjpcdHRyaXN0YXRlIFwmIzM0O05YUC1OQ0kgSTJDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxNzpcdGRlcGVuZHMgb24gTkZDX05YUF9OQ0kgXHUwMDI2XHUwMDI2IEkyQ1xuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTE4LVx0aGVscFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjE5Olx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlIE5YUCBOQ0lcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0yMC1cdCAgY2hpcHMuXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZS0yLSNcbmRyaXZlcnMvbmZjL254cC1uY2kvTWFrZWZpbGU6MzojIE1ha2VmaWxlIGZvciBOWFAtTkNJIE5GQyBkcml2ZXJcbmRyaXZlcnMvbmZjL254cC1uY2kvTWFrZWZpbGUtNC0jXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZT03PW54cC1uY2lfaTJjLW9ianMgPSBpMmMub1xuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORkNfTlhQX05DSSkgJiM0Mzs9IG54cC1uY2kub1xuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZDX05YUF9OQ0lfSTJDKSAmIzQzOz0gbnhwLW5jaV9pMmMub1xuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTItLypcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjM6ICogR2VuZXJpYyBkcml2ZXIgZm9yIE5YUCBOQ0kgTkZDIGNoaXBzXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy00LSAqXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMjAtXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoyMTojZGVmaW5lIE5YUF9OQ0lfSERSX0xFTlx0NFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMjItXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoyMzojZGVmaW5lIE5YUF9OQ0lfTkZDX1BST1RPQ09MUyAoTkZDX1BST1RPX0pFV0VMX01BU0sgfCBcXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMjQtXHRcdFx0ICAgICAgIE5GQ19QUk9UT19NSUZBUkVfTUFTSyB8IFxcXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMzAtXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzozMTojZGVmaW5lIE5YUF9OQ0lfUkZfUExMX1VOTE9DS0VEX05URiBuY2lfb3Bjb2RlX3BhY2soTkNJX0dJRF9SRl9NR01ULCAweDIxKVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MzI6I2RlZmluZSBOWFBfTkNJX1JGX1RYTERPX0VSUk9SX05URiBuY2lfb3Bjb2RlX3BhY2soTkNJX0dJRF9SRl9NR01ULCAweDIzKVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMzMtXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0zND1zdGF0aWMgaW50IG54cF9uY2lfb3BlbihzdHJ1Y3QgbmNpX2RldiAqbmRldilcbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy00MC1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjQxOlx0aWYgKGluZm8tXHUwMDNlbW9kZSAhPSBOWFBfTkNJX01PREVfQ09MRCkge1xuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDItXHRcdHIgPSAtRUJVU1k7XG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDYtXHRpZiAoaW5mby1cdTAwM2VwaHlfb3BzLVx1MDAzZXNldF9tb2RlKVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6NDc6XHRcdHIgPSBpbmZvLVx1MDAzZXBoeV9vcHMtXHUwMDNlc2V0X21vZGUoaW5mby1cdTAwM2VwaHlfaWQsIE5YUF9OQ0lfTU9ERV9OQ0kpO1xuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDgtXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzo0OTpcdGluZm8tXHUwMDNlbW9kZSA9IE5YUF9OQ0lfTU9ERV9OQ0k7XG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy01MC1cbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz01Nj1zdGF0aWMgaW50IG54cF9uY2lfY2xvc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNjMtXHRpZiAoaW5mby1cdTAwM2VwaHlfb3BzLVx1MDAzZXNldF9tb2RlKVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6NjQ6XHRcdHIgPSBpbmZvLVx1MDAzZXBoeV9vcHMtXHUwMDNlc2V0X21vZGUoaW5mby1cdTAwM2VwaHlfaWQsIE5YUF9OQ0lfTU9ERV9DT0xEKTtcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTY1LVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6NjY6XHRpbmZvLVx1MDAzZW1vZGUgPSBOWFBfTkNJX01PREVfQ09MRDtcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTY3LVxuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jPTcyPXN0YXRpYyBpbnQgbnhwX25jaV9zZW5kKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTgxLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6ODI6XHRpZiAoaW5mby1cdTAwM2Vtb2RlICE9IE5YUF9OQ0lfTU9ERV9OQ0kpIHtcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTgzLVx0XHRrZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfZHJpdmVyX29wcyBueHBfbmNpX2NvcmVfb3BzW10gPSB7XG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0xMTYtXHR7XG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoxMTc6XHRcdC5vcGNvZGUgPSBOWFBfTkNJX1JGX1BMTF9VTkxPQ0tFRF9OVEYsXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0xMTgtXHRcdC5udGYgPSBueHBfbmNpX3JmX3BsbF91bmxvY2tlZF9udGYsXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMTIwLVx0e1xuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MTIxOlx0XHQub3Bjb2RlID0gTlhQX05DSV9SRl9UWExET19FUlJPUl9OVEYsXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0xMjItXHRcdC5udGYgPSBueHBfbmNpX3JmX3R4bGRvX2Vycm9yX250Zixcbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMzU9aW50IG54cF9uY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODg2NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5GQyBWaXJ0dWFsIE5DSSBEZXZpY2UgRHJpdmVyIC0gRnV6emluZyBQb3RlbnRpYWwhKioKCk9rYXksIHNvIEkmIzM5O3ZlIHN0dW1ibGVkIHVwb24gYE5GQ19WSVJUVUFMX05DSWAsIGFuZCBpdCBpbW1lZGlhdGVseSBjbGlja3M6IFRoaXMgaXMgYSB2aXJ0dWFsIE5DSSBkZXZpY2Ugc2ltdWxhdG9yIGRyaXZlciEgTXkgbWluZCBpcyBhbHJlYWR5IHJhY2luZyB3aXRoIHRoZSBpbXBsaWNhdGlvbnMuIEEgdmlydHVhbCBkZXZpY2UuLi4gdGhhdCBzY3JlYW1zICYjMzQ7ZnV6emluZyB0YXJnZXQmIzM0OyB0byBtZS4gVGhpbmsgb2YgdGhlIHBvdGVudGlhbCBmb3IgY3JhZnRpbmcgbWFsZm9ybWVkIE5GQyBjb21tYW5kcyBhbmQgb2JzZXJ2aW5nIHRoZSBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IuIFRoaXMgY291bGQgYmUgYSBnb2xkbWluZSBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyB0aGluZy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gSSYjMzk7bGwgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25mYy9LY29uZmlnYC4gVGltZSB0byBzZWUgaG93IHRoaXMgdmlydHVhbCBkcml2ZXIgaXMgY29uZmlndXJlZCwgYnVpbHQsIGFuZCBwb3RlbnRpYWxseSwgaWYgdGhlcmUgYXJlIGFueSBoaWRkZW4gbnVhbmNlcyB0byBpdHMgYWN0aXZhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwgdG8gZWZmZWN0aXZlbHkgbGV2ZXJhZ2UgaXQgZm9yIGZ1enppbmcuIFRoaXMgY291bGQgYmUgcmVhbGx5IHByb21pc2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBORkNfUE9SVDEwMFxuICA0MzpcdFx0dHJpc3RhdGUgXCYjMzQ7U29ueSBORkMgUG9ydC0xMDAgU2VyaWVzIFVTQiBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA0NDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgNDU6XHRcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbiAgNDY6XHRcdGhlbHBcbiAgNDc6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNvbnkgUG9ydC0xMDAgY2hpcCBiYXNlZCBVU0IgZGV2aWNlcyBzdWNoIGFzIHRoZVxuICA0ODpcdFx0ICBSQy1TMzgwIGRvbmdsZS5cbiAgNDk6XHRcbiAgNTA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNTE6XHRcbiAgNTI6XHRjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiAgNTQ6XHRcdGRlcGVuZHMgb24gTkZDX05DSVxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBOQ0kgdmlydHVhbCBkZXZpY2Ugc2ltdWxhdGVzIGEgTkNJIGRldmljZSB0byB0aGUgdXNlci5cbiAgNTc6XHRcdCAgSXQgY2FuIGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIE5DSSBtb2R1bGUgYW5kIGFwcGxpY2F0aW9ucy5cbiAgNTg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSB2aXJ0dWFsIE5DSSBkZXZpY2UgYW5kXG4gIDU5Olx0XHQgIG1vZHVsZS5cbiAgNjA6XHRcbiAgNjE6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjI6XHRcbiAgNjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZmMvZmRwL0tjb25maWdcJiMzNDtcbiAgNjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZ1wmIzM0O1xuICA2NTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnXCYjMzQ7XG4gIDY2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnXCYjMzQ7XG4gIDY3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZ1wmIzM0O1xuICA2ODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnXCYjMzQ7XG4gIDY5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTkxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgTkZDIFZpcnR1YWwgTkNJIGFuZCBpdHMgSW1wbGljYXRpb25zIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBORkNfVklSVFVBTF9OQ0lgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBoaW5nZXMgb24gYE5GQ19OQ0lgLiAgSWYgSSBlbmFibGUgYE5GQ19WSVJUVUFMX05DSWAsIHRoZSBzeXN0ZW0gaXMgc2V0IHVwIHRvIGFsbG93IHN5emthbGxlciB0byBjcmVhdGUgYW5kIHRlc3QsIGluIGEgdmlydHVhbCBzZXR0aW5nLCBOQ0kgZGV2aWNlcy4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IG9wZW5zIHVwIHRoZSBOQ0kgcHJvdG9jb2wgdG8gZnV6emluZywgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGlkZW50aWZ5aW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pY3Mgb2YgdGhpcyB2aXJ0dWFsIGRldmljZSBjcmVhdGlvbi4gSSBzaG91bGQgZGlnIGludG8gYGRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmNgIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIHRoaXMgdmlydHVhbGl6YXRpb24gbGF5ZXIgYW5kIHdoYXQgcG90ZW50aWFsIGludGVyZmFjZXMgYXJlIGV4cG9zZWQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnR1YWxfbmNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIzLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoyNDpzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2IHtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMjUtXHRzdHJ1Y3QgbmNpX2RldiAqbmRldjtcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTMxLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzozMjpzdGF0aWMgaW50IHZpcnR1YWxfbmNpX29wZW4oc3RydWN0IG5jaV9kZXYgKm5kZXYpXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTMzLXtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MzQ6XHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0zNS1cbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTM5LVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo0MDpzdGF0aWMgaW50IHZpcnR1YWxfbmNpX2Nsb3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy00MS17XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjQyOlx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtNDMtXG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy01Mi1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6NTM6c3RhdGljIGludCB2aXJ0dWFsX25jaV9zZW5kKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy01NC17XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjU1Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtNTYtXG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy03NS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6NzY6c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHZpcnR1YWxfbmNpX29wcyA9IHtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6Nzc6XHQub3BlbiA9IHZpcnR1YWxfbmNpX29wZW4sXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjc4Olx0LmNsb3NlID0gdmlydHVhbF9uY2lfY2xvc2UsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjc5Olx0LnNlbmQgPSB2aXJ0dWFsX25jaV9zZW5kXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTgwLX07XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTgxLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo4MjpzdGF0aWMgc3NpemVfdCB2aXJ0dWFsX25jaWRldl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04My1cdFx0XHRcdCAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04NC17XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjg1Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04Ni1cdHNpemVfdCBhY3R1YWxfbGVuO1xuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTEyLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxMTM6c3RhdGljIHNzaXplX3QgdmlydHVhbF9uY2lkZXZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTExNC1cdFx0XHRcdCAgICBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTE2LXtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTE3Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMTgtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTMyLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxMzM6c3RhdGljIGludCB2aXJ0dWFsX25jaWRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzQte1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzUtXHRpbnQgcmV0ID0gMDtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTM2Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldjtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTM3LVxuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTQwLVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTQxOlx0dmRldi1cdTAwM2VuZGV2ID0gbmNpX2FsbG9jYXRlX2RldmljZShcdTAwMjZ2aXJ0dWFsX25jaV9vcHMsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE0Mi1cdFx0VklSVFVBTF9ORkNfUFJPVE9DT0xTLCAwLCAwKTtcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2My1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTY0OnN0YXRpYyBpbnQgdmlydHVhbF9uY2lkZXZfY2xvc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2NS17XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE2NjpcdHN0cnVjdCB2aXJ0dWFsX25jaV9kZXYgKnZkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTY3LVxuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTc1LVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxNzY6c3RhdGljIGxvbmcgdmlydHVhbF9uY2lkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE3Ny1cdFx0XHRcdCB1bnNpZ25lZCBsb25nIGFyZylcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTc4LXtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTc5Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xODAtXHRjb25zdCBzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldiA9IHZkZXYtXHUwMDNlbmRldi1cdTAwM2VuZmNfZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkxLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTI6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmlydHVhbF9uY2lkZXZfZm9wcyA9IHtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkzLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NDpcdC5yZWFkID0gdmlydHVhbF9uY2lkZXZfcmVhZCxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk1Olx0LndyaXRlID0gdmlydHVhbF9uY2lkZXZfd3JpdGUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NjpcdC5vcGVuID0gdmlydHVhbF9uY2lkZXZfb3BlbixcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk3Olx0LnJlbGVhc2UgPSB2aXJ0dWFsX25jaWRldl9jbG9zZSxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk4Olx0LnVubG9ja2VkX2lvY3RsID0gdmlydHVhbF9uY2lkZXZfaW9jdGxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTk5LX07XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz0yMDE9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIG1pc2NkZXYgPSB7XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwMi1cdC5taW5vciA9IE1JU0NfRFlOQU1JQ19NSU5PUixcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MjAzOlx0Lm5hbWUgPSBcJiMzNDt2aXJ0dWFsX25jaVwmIzM0OyxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MjA0Olx0LmZvcHMgPSBcdTAwMjZ2aXJ0dWFsX25jaWRldl9mb3BzLFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0yMDUtXHQubW9kZSA9IDA2MDAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzAyCgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDQ3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBOQ0kgQ29yZSBJbml0IFJlc3BvbnNlIFBhY2tldCBQYXJzaW5nKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIHBsYW4uIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYm91bmRzIGNoZWNraW5nIGluIHRoZSBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nIGNvZGUuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIHZpcnR1YWwgTkNJIGRldmljZSwgYC9kZXYvdmlydHVhbF9uY2lgLCB3aGljaCBpcyBjcmVhdGVkIGJ5IGBORkNfVklSVFVBTF9OQ0lgLCBpcyB0aGUgZW50cnkgcG9pbnQuIFN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCBpdCwgd3JpdGUgZGF0YSwgYW5kIHRyaWdnZXIgYG5jaV9yZWN2X2ZyYW1lYC4gVGhhdCYjMzk7cyBwcmVjaXNlbHkgaG93IHRoZSBOQ0kgdGVzdHMgYXJlIHN0cnVjdHVyZWQuIFNvLCBlbmFibGluZyBgTkZDX1ZJUlRVQUxfTkNJYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGlzIHZpcnR1YWwgZGV2aWNlIGRpcmVjdGx5IGZlZWRzIGludG8gdGhlIHJlbGV2YW50IHBhcnNpbmcgbG9naWMuCgpJIGluaXRpYWxseSB0aG91Z2h0IHRoYXQgYE5GQ19WSVJUVUFMX05DSWAgbWlnaHQgYmUgc3VmZmljaWVudCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIGRlcGVuZGVuY2llcyByaWdodC4gSXQgZGVmaW5pdGVseSByZWxpZXMgb24gYE5GQ19OQ0lgLiBJdCBsb29rcyBsaWtlIGBORkNfTkNJYCBpbiB0dXJuIGRlcGVuZHMgb24gYE5GQ2AsIHNvIEkmIzM5O2xsIG5lZWQgYWxsIHRocmVlIGNvbmZpZ3MuCgpNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdDsgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgY2FuIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyB0aGF0IHRoZSBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgYXJlIHJlYWNoYWJsZS4gVGhlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAsIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldGAuIFRoZXNlIGFyZSBhbGwgcGFydCBvZiB0aGUgYm91bmRzIGNoZWNraW5nIGxvZ2ljLiBUaGlzIGNvZGUgaGFuZGxlcyBOQ0kgaW5pdGlhbGl6YXRpb24gcmVzcG9uc2VzLCBhbmQgdGhlIHZpcnR1YWwgZGV2aWNlIGFsbG93cyB1cyB0byBpbmplY3QgbWFsaWNpb3VzL3VuZXhwZWN0ZWQgcmVzcG9uc2VzLiBUaGUgZ29hbCBpcyB0byBlbnN1cmUgdGhlIG5ldyBjaGVja3Mgd29yayBjb3JyZWN0bHkgd2l0aG91dCBicmVha2luZyBsZWdpdGltYXRlIHBhY2tldHMuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCB0aGUgZnVuY3Rpb24gbmFtZXMgYW5kIGVuc3VyZWQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgb3IgZnVuY3Rpb25zIGluIHNjb3BlLiBUaGlzIHNob3VsZCBwcm92aWRlIHN1ZmZpY2llbnQgY292ZXJhZ2UgdG8gZGV0ZWN0IGFueSB2dWxuZXJhYmlsaXRpZXMuIE5vdywgaXQmIzM5O3MgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyJiMzNDssCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgTkNJIGRldmljZXMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd2l0aG91dCBicmVha2luZyB2YWxpZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyJiMzNDssCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgTkNJIGRldmljZXMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd2l0aG91dCBicmVha2luZyB2YWxpZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDE6NTkuMTI4MzM4NzczWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1Nzk1MDg3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MlwiLFxuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXQgcGFyc2luZy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIE5DSSBkZXZpY2VzLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDE6NTkuMTI4MzQzNDQzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYzMDY1NDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDUxNmM4MWI3NDQzYzBhNDg5NDBjZWZhZjFiNjgxZTY4YzE1MjIyMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAxNzo0MTo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9yc3AuYyBiL25ldC9uZmMvbmNpL3JzcC5jXFxuaW5kZXggOWVlYjg2MjgyNWM1ZmUuLjZiMmZhNmJkYmQxNGJkIDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbmNpL3JzcC5jXFxuKysrIGIvbmV0L25mYy9uY2kvcnNwLmNcXG5AQCAtNTAsMTEgKzUwLDI1IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuIFxcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8xICpyc3BfMSA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbiBcXHRjb25zdCBzdHJ1Y3QgbmNpX2NvcmVfaW5pdF9yc3BfMiAqcnNwXzI7XFxuIFxcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJzcF8xKSlcXG4rXFx0XFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xcbitcXG4gXFx0cHJfZGVidWcoXFxcInN0YXR1cyAweCV4XFxcXG5cXFwiLCByc3BfMS1cXHUwMDNlc3RhdHVzKTtcXG4gXFxuIFxcdGlmIChyc3BfMS1cXHUwMDNlc3RhdHVzICE9IE5DSV9TVEFUVVNfT0spXFxuIFxcdFxcdHJldHVybiByc3BfMS1cXHUwMDNlc3RhdHVzO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbXSBhbmQgdGhlIHRyYWlsaW5nIG5jaV9jb3JlX2luaXRfcnNwXzIgYXJlXFxuK1xcdCAqIGFkZHJlc3NlZCB1c2luZyB0aGUgb24td2lyZSAodW5jbGFtcGVkKSBpbnRlcmZhY2UgY291bnQsIHNvIHRoZVxcbitcXHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSBhbnkgb2YgaXQgaXMgcGFyc2VkIG9yXFxuK1xcdCAqIHN0b3JlZCBpbnRvIEBuZGV2IC0gb3RoZXJ3aXNlIGEgdHJ1bmNhdGVkIHJlc3BvbnNlIHdvdWxkIGxlYXZlXFxuK1xcdCAqIG5kZXYtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyBob2xkaW5nIHRoZSB1bmNsYW1wZWQgY291bnQuXFxuK1xcdCAqL1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJzcF8xKSArXFxuK1xcdCAgICByc3BfMS1cXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzICsgc2l6ZW9mKCpyc3BfMikpXFxuK1xcdFxcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcXG4rXFxuIFxcdG5kZXYtXFx1MDAzZW5mY2NfZmVhdHVyZXMgPSBfX2xlMzJfdG9fY3B1KHJzcF8xLVxcdTAwM2VuZmNjX2ZlYXR1cmVzKTtcXG4gXFx0bmRldi1cXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzID0gcnNwXzEtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcztcXG4gXFxuQEAgLTg4LDkgKzEwMiwxMyBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF9uY2lfdmVyMiAqcnNwID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuIFxcdGNvbnN0IHU4ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlID0gcnNwLVxcdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcztcXG4rXFx0Y29uc3QgdTggKmVuZCA9IHNrYi1cXHUwMDNlZGF0YSArIHNrYi1cXHUwMDNlbGVuO1xcbiBcXHR1OCByZl9pbnRlcmZhY2VfaWR4ID0gMDtcXG4gXFx0dTggcmZfZXh0ZW5zaW9uX2NudCA9IDA7XFxuIFxcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJzcCkpXFxuK1xcdFxcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcXG4rXFxuIFxcdHByX2RlYnVnKFxcXCJzdGF0dXMgJXhcXFxcblxcXCIsIHJzcC1cXHUwMDNlc3RhdHVzKTtcXG4gXFxuIFxcdGlmIChyc3AtXFx1MDAzZXN0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKVxcbkBAIC0xMDQsMTAgKzEyMiwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbiBcXHRcXHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XFxuIFxcbiBcXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcXHUwMDNjIG5kZXYtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcykge1xcbi1cXHRcXHRuZGV2LVxcdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4KytdID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcXG4rXFx0XFx0Lyogb25lIGludGVyZmFjZSBieXRlICsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xcbitcXHRcXHRpZiAoZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSBcXHUwMDNjIDIpXFxuK1xcdFxcdFxcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcXG4rXFx0XFx0bmRldi1cXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCsrXSA9XFxuK1xcdFxcdFxcdCpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XFxuIFxcbi1cXHRcXHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzICovXFxuK1xcdFxcdC8qIHNraXAgcmYgZXh0ZW5zaW9uIHBhcmFtZXRlcnMsIGJvdW5kZWQgYnkgdGhlIHBhY2tldCAqL1xcbiBcXHRcXHRyZl9leHRlbnNpb25fY250ID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcXG4rXFx0XFx0aWYgKHJmX2V4dGVuc2lvbl9jbnQgXFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxcbitcXHRcXHRcXHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XFxuIFxcdFxcdHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgKz0gcmZfZXh0ZW5zaW9uX2NudDtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MDAuMjk0MDk1ODQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQxMzczOTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19WSVJUVUFMX05DSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MVwiLFxuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyXCIsXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgTkNJIGRldmljZXMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd2l0aG91dCBicmVha2luZyB2YWxpZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA1MTZjODFiNzQ0M2MwYTQ4OTQwY2VmYWYxYjY4MWU2OGMxNTIyMjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAxNzo0MTo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbmNpL3JzcC5jIGIvbmV0L25mYy9uY2kvcnNwLmNcbmluZGV4IDllZWI4NjI4MjVjNWZlLi42YjJmYTZiZGJkMTRiZCAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbmNpL3JzcC5jXG4rKysgYi9uZXQvbmZjL25jaS9yc3AuY1xuQEAgLTUwLDExICs1MCwyNSBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8yICpyc3BfMjtcbiBcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKnJzcF8xKSlcbitcdFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xuK1xuIFx0cHJfZGVidWcoXCJzdGF0dXMgMHgleFxcblwiLCByc3BfMS1cdTAwM2VzdGF0dXMpO1xuIFxuIFx0aWYgKHJzcF8xLVx1MDAzZXN0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKVxuIFx0XHRyZXR1cm4gcnNwXzEtXHUwMDNlc3RhdHVzO1xuIFxuK1x0LypcbitcdCAqIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW10gYW5kIHRoZSB0cmFpbGluZyBuY2lfY29yZV9pbml0X3JzcF8yIGFyZVxuK1x0ICogYWRkcmVzc2VkIHVzaW5nIHRoZSBvbi13aXJlICh1bmNsYW1wZWQpIGludGVyZmFjZSBjb3VudCwgc28gdGhlXG4rXHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSBhbnkgb2YgaXQgaXMgcGFyc2VkIG9yXG4rXHQgKiBzdG9yZWQgaW50byBAbmRldiAtIG90aGVyd2lzZSBhIHRydW5jYXRlZCByZXNwb25zZSB3b3VsZCBsZWF2ZVxuK1x0ICogbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgaG9sZGluZyB0aGUgdW5jbGFtcGVkIGNvdW50LlxuK1x0ICovXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3BfMSkgK1xuK1x0ICAgIHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyArIHNpemVvZigqcnNwXzIpKVxuK1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXG4gXHRuZGV2LVx1MDAzZW5mY2NfZmVhdHVyZXMgPSBfX2xlMzJfdG9fY3B1KHJzcF8xLVx1MDAzZW5mY2NfZmVhdHVyZXMpO1xuIFx0bmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgPSByc3BfMS1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4gXG5AQCAtODgsOSArMTAyLDEzIEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwX25jaV92ZXIyICpyc3AgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0Y29uc3QgdTggKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgPSByc3AtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4rXHRjb25zdCB1OCAqZW5kID0gc2tiLVx1MDAzZWRhdGEgKyBza2ItXHUwMDNlbGVuO1xuIFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XG4gXHR1OCByZl9leHRlbnNpb25fY250ID0gMDtcbiBcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKnJzcCkpXG4rXHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbitcbiBcdHByX2RlYnVnKFwic3RhdHVzICV4XFxuXCIsIHJzcC1cdTAwM2VzdGF0dXMpO1xuIFxuIFx0aWYgKHJzcC1cdTAwM2VzdGF0dXMgIT0gTkNJX1NUQVRVU19PSylcbkBAIC0xMDQsMTAgKzEyMiwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG4gXG4gXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcdTAwM2MgbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcbi1cdFx0bmRldi1cdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4KytdID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcbitcdFx0Lyogb25lIGludGVyZmFjZSBieXRlICsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xuK1x0XHRpZiAoZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSBcdTAwM2MgMilcbitcdFx0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXHRcdG5kZXYtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCsrXSA9XG4rXHRcdFx0KnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcbiBcbi1cdFx0Lyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycyAqL1xuK1x0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cbiBcdFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XG4rXHRcdGlmIChyZl9leHRlbnNpb25fY250IFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxuK1x0XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiBcdFx0c3VwcG9ydGVkX3JmX2ludGVyZmFjZSArPSByZl9leHRlbnNpb25fY250O1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MDAuMjk0MDk4NTk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzMTU4ODY5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBOQ0kgQ29yZSBJbml0IFJlc3BvbnNlIFBhY2tldCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvbmZjL25jaS9yc3AuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaXQgYWRkcyBzb21lIGxlbmd0aCB2YWxpZGF0aW9uIHRvIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYC4gVGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMsIHdoaWNoIGlzIGEgcHJldHR5IGNydWNpYWwgcGFydCBvZiB0aGUgTkZDIHN0YWNrIGluaXRpYWxpemF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZ2l2ZW4gdGhhdCB0aGlzIGlzIGRpcmVjdGx5IGhhbmRsaW5nIHBhY2tldCBwYXJzaW5nLCB0aGlzIGlzIHByaW1lIHRlcnJpdG9yeSBmb3IgZnV6emluZy4gQW55IGlucHV0IHZhbGlkYXRpb24gaXNzdWVzIGhlcmUgY291bGQgYmUgZXhwbG9pdGFibGUuXG5cblNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZWxldmFudCB0byBORkMgYW5kIE5DSSB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRoZSBjb2RlYmFzZSBhbmQgaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgY29udHJvbCBjb21waWxhdGlvbiBvZiBgbmV0L25mYy9uY2kvcnNwLmNgLCBhbmQgYnkgZXh0ZW5zaW9uLCB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGRlZmluZXMgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoaXMgY29kZSBwYXRoIHNvIEkgY2FuIGVuc3VyZSB0aGUgZnV6emluZyB0YXJnZXRzIHRoZSBjb3JyZWN0IGJ1aWxkIHZhcmlhbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjA0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MDQuMzI1Njg5MDk1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzk3MzU5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9uY2kvcnNwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9uY2kvcnNwLmM9Mjg9c3RhdGljIHZvaWQgbmNpX2NvcmVfcmVzZXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4tLVxcbm5ldC9uZmMvbmNpL3JzcC5jLTQ2LVxcbm5ldC9uZmMvbmNpL3JzcC5jOjQ3OnN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxubmV0L25mYy9uY2kvcnNwLmMtNDgtXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbmNpL3JzcC5jPTE0OD1zdGF0aWMgdm9pZCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL25jaS9yc3AuYy0xNTItXFx0aWYgKCEobmRldi1cXHUwMDNlbmNpX3ZlciBcXHUwMDI2IE5DSV9WRVJfMl9NQVNLKSlcXG5uZXQvbmZjL25jaS9yc3AuYzoxNTM6XFx0XFx0c3RhdHVzID0gbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKG5kZXYsIHNrYik7XFxubmV0L25mYy9uY2kvcnNwLmMtMTU0LVxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MDQuNjI5NjY4ODM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyMjg3OTgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIE1ha2VmaWxlIGZvciBgbmV0L25mYy9uY2kvYDpcblxuKipBbmFseXppbmcgdGhlIGBuZXQvbmZjL25jaS9gIE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmZjL25jaS9gIGRpcmVjdG9yeSBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIHRoYXQgTWFrZWZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgTkZDIE5DSSBjb21wb25lbnQuIE15IHByaW1hcnkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSByZWxldmFudCBydWxlcywgdmFyaWFibGVzLCBhbmQgaW5jbHVkZSBwYXRocy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaG93IHRoZSBOQ0kgZHJpdmVyIGlzIGJ1aWx0LCB3aGF0IGhlYWRlciBmaWxlcyBpdCdzIGluY2x1ZGluZywgd2hpY2ggc291cmNlIGZpbGVzIGFyZSBpbnZvbHZlZCwgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb21waWxhdGlvbiBmbGFncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YsIGFuZCBob3cgaXQgbGlua3Mgd2l0aCBvdGhlciBtb2R1bGVzLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBvciBrZXJuZWwgdmVyc2lvbnM/IEFueSBjcm9zcy1jb21waWxhdGlvbiBzZXR0aW5ncz8gQW55IGN1c3RvbSBidWlsZCB0YXJnZXRzIG9yIGludGVybWVkaWF0ZSBvYmplY3QgZGlyZWN0b3JpZXM/IEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIHJlYWwgY29tcGxleGl0eSBsaWVzLiBJIGV4cGVjdCB0aGlzIHNob3VsZCBiZSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgeW91IG5ldmVyIGtub3cgdW50aWwgeW91IGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjowNy42NTI1NTEyOThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE0MTY3OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnNwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9uY2kvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9uY2kvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpLm9cXG5uZXQvbmZjL25jaS9NYWtlZmlsZS03LVxcbm5ldC9uZmMvbmNpL01ha2VmaWxlOjg6bmNpLW9ianMgOj0gY29yZS5vIGRhdGEubyBsaWIubyBudGYubyByc3AubyBoY2kub1xcbm5ldC9uZmMvbmNpL01ha2VmaWxlLTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjA3LjczMzk3MzQ0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Mzk4MzIwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgRXhwbG9yYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHdlJ3JlIGxvb2tpbmcgYXQgaXMgYENPTkZJR19ORkNfTkNJYC4gUmlnaHQsIEkga25vdyB0aGF0IG9uZS4gQnV0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwbHkgaW50byB0aGlzIHNwZWNpZmljIHNldHRpbmcsIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHBpY3R1cmUuIEkgc2hvdWxkIHF1aWNrbHkgc2NhbiBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEl0J3MgYWx3YXlzIGJlc3QgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gQXJlIHRoZXJlIGFueSBvdGhlciBORkMgc2V0dGluZ3MgZGVmaW5lZD8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcz8gTGV0J3MgY2hlY2suIEdvdHRhIGJlIHRob3JvdWdoLiBXZSBkb24ndCB3YW50IHRvIGdldCB0dW5uZWwgdmlzaW9uIG9uIGp1c3Qgb25lIGNvbmZpZyB3aGVuIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBpbXBvcnRhbnQgY29ubmVjdGVkIHRvIGl0LCBvciBzb21ldGhpbmcgZWxzZSByZWxhdGVkIHRvIE5GQyB0aGF0IG5lZWRzIGNvbnNpZGVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxMC40NzM4MDgwMjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTU2MTc1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTkZDX05DSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxMC42MjE3NzQ3MDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTgzMDA1NDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24uIExldCdzIHNlZSB3aGF0J3Mgd2hhdC4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0aGUgYG5ldC9uZmMvS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBORkMgc3Vic3lzdGVtIGFyZSBwcm9iYWJseSBkZWZpbmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBrbm9icywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdHMuIFRoZSBzcGVjaWZpY3MgaGVyZSB3aWxsIGRyaXZlIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGhvdyB0aGUgZHJpdmVyIGlzIGJ1aWx0LCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJIGFudGljaXBhdGUgZmluZGluZyBhIGxheWVyZWQgc3RydWN0dXJlLCBzbyBJIGNhbiBzZWUgd2hhdCBpcyBjcml0aWNhbCwgYW5kIHdoYXQgaXMgb3B0aW9uYWwuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGJlaGF2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxMy42MDQ3ODMyNjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2ODE1OTg5OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxMy45NzI5NTY0MDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc1MjgzMjUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5GQyBhbmQgc3BlY2lmaWNhbGx5IHRoZSBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgd2l0aGluIHRoaXMgcHJvamVjdC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBmb3IgYSBkaXJlY3Qgc2VhcmNoLiBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkga25vd2xlZGdlIG9mIHRoZSBidWlsZCBzeXN0ZW0gYW5kIHRoZSBleHBlY3RlZCBuYW1pbmcgY29udmVudGlvbnMuIEknbGwgc2VhcmNoIHRoZSBlbnRpcmUgcHJvamVjdCB0cmVlIGZvciB0aGUgc3RyaW5nIGBjb25maWcgTkZDX05DSWAuIFRoaXMgc2hvdWxkLCBpbiB0aGVvcnksIGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzLCBkZWZjb25maWcgZnJhZ21lbnRzLCBvciBLY29uZmlnIGVudHJpZXMgd2hlcmUgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCBvciB1c2VkLiBIb3BlZnVsbHkgdGhpcyB0YXJnZXRlZCBzZWFyY2ggd2lsbCBiZSBlZmZpY2llbnQsIGF2b2lkaW5nIHRoZSBuZWVkIHRvIG1hbnVhbGx5IGNyYXdsIHRoZSBlbnRpcmUgZGlyZWN0b3J5IHN0cnVjdHVyZS4gRnJvbSB0aGVyZSBJJ2xsIGJlIGFibGUgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgdXNhZ2Ugb2YgdGhpcyBzcGVjaWZpYyBORkMgY29udHJvbGxlciBpbnRlcmZhY2UuIExldCdzIHNlZSB3aGF0IHdlIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwOTcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxNi43MjU3OTIwODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTAxMTk2MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19OQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTQtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFNQSVxcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBUVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MTkuNjM1OTE3NDkyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMDIzMjAwMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIE5GQyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSB3YXMgbG9va2luZyBhdCBgbmV0L25mYy9uY2kvS2NvbmZpZ2AgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgSSByZWFsaXplZCBhIHN1YnRsZSBidXQgY3JpdGljYWwgZGlmZmVyZW5jZS4gSSBpbml0aWFsbHkgYXNzdW1lZCBpdCB3YXMgZ29pbmcgdG8gYmUgYENPTkZJR19ORkNfTkNJYCBiYXNlZCBvbiB0aGUgZmlsZSBwYXRoLCBidXQgaXQncyBhY3R1YWxseSBgY29uZmlnIE5GQ19OQ0lgIGluIHRoZSBmaWxlLiBSaWdodCwgdGhhdCB1bmRlcnNjb3JlcyB0aGUgaW1wb3J0YW5jZSBvZiBiZWluZyBwcmVjaXNlIHdpdGggdGhlIHN5bnRheCBpbiB0aGVzZSBLY29uZmlnIGZpbGVzLiBUaGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gc3ltYm9sLCB0aGVuLCBpcyBgTkZDX05DSWAuXG5cbk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBhbGwgdGhlIGJhc2UgcmVxdWlyZW1lbnRzLiBJIHNob3VsZCBjaGVjayBpZiBgTkZDYCBpcyBhbHNvIGEgcmVxdWlyZWQgc3ltYm9sIGluIHRoaXMgc3BhY2UuIEFoLCB5ZXMsIGxvb2tpbmcgYXQgdGhlIGNvZGUgSSBjYW4gc2VlIHRoYXQgaXQgaXMsIHNvIGBORkNgIGlzIGVzc2VudGlhbC5cblxuSSBzaG91bGQgcnVuIHRocm91Z2ggdGhlIGBuZXQvbmZjL25jaS9LY29uZmlnYCBmaWxlIGFnYWluIGFuZCBqdXN0IHZlcmlmeSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB3aGlsZSBJJ20gYXQgaXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gYE5GQ19OQ0lgLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5IHdoZW4gZGVhbGluZyB3aXRoIHRoZXNlIGtlcm5lbCBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTI0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjIzLjYzODIzOTkyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5GQ19OQ0lcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gTkZDXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiTkNJIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuICAgNTpcXHRcXHRkZWZhdWx0IG5cXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgTkNJIChORkMgQ29udHJvbGxlciBJbnRlcmZhY2UpIGlzIGEgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBiZXR3ZWVuXFxuICAgODpcXHRcXHQgIGFuIE5GQyBDb250cm9sbGVyIChORkNDKSBhbmQgYSBEZXZpY2UgSG9zdCAoREgpLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFNheSBZIGhlcmUgdG8gY29tcGlsZSBOQ0kgc3VwcG9ydCBpbnRvIHRoZSBrZXJuZWwgb3Igc2F5IE0gdG9cXG4gIDExOlxcdFxcdCAgY29tcGlsZSBpdCBhcyBtb2R1bGUgKG5jaSkuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBORkNfTkNJX1NQSVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFNQSVxcbiAgMTU6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIk5DSSBvdmVyIFNQSSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbiAgMTc6XFx0XFx0ZGVmYXVsdCBuXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIE5DSSAoTkZDIENvbnRyb2xsZXIgSW50ZXJmYWNlKSBpcyBhIGNvbW11bmljYXRpb24gcHJvdG9jb2wgYmV0d2VlblxcbiAgMjA6XFx0XFx0ICBhbiBORkMgQ29udHJvbGxlciAoTkZDQykgYW5kIGEgRGV2aWNlIEhvc3QgKERIKS5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0XFx0ICBTYXkgeWVzIGlmIHlvdSB1c2UgYW4gTkNJIGRyaXZlciB0aGF0IHJlcXVpcmVzIFNQSSBsaW5rIGxheWVyLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgTkZDX05DSV9VQVJUXFxuICAyNTpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiTkNJIG92ZXIgVUFSVCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbiAgMjc6XFx0XFx0ZGVmYXVsdCBuXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFNheSB5ZXMgaWYgeW91IHVzZSBhbiBOQ0kgZHJpdmVyIHRoYXQgcmVxdWlyZXMgVUFSVCBsaW5rIGxheWVyLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoyMy42MzgzMDEzMjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4MTI5MjA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTkZDIEluaXRpYWxpemF0aW9uIFJlc3BvbnNlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBgTkZDYCBhbmQgYE5GQ19OQ0lgLiBUaGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gZGlzc2VjdCBoZXJlIHNlZW0gdG8gYmUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAsIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBhbmQgcG90ZW50aWFsbHkgdGhlIGJhc2UgZnVuY3Rpb24sIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRgLiBMZXQncyBzZWUuLi4gSSdsbCBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFllcywgaXQgaXMuIEFscmlnaHQsIHRoYXQgbWVhbnMgbXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldGAgZGVmaW5pdGlvbiwgYW5kIEkgbmVlZCB0byBjaGVjayBpdCBpbiBgbmV0L25mYy9uY2kvcnNwLmNgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiBob3cgdGhlc2UgaW5pdGlhbGl6YXRpb24gcmVzcG9uc2VzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoaW4gdGhlIE5DSSBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMDYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoyNy40MTk1OTU2NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjk1Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9yc3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9yc3AuYz0yOD1zdGF0aWMgdm9pZCBuY2lfY29yZV9yZXNldF9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtNDYtXFxubmV0L25mYy9uY2kvcnNwLmM6NDc6c3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG5uZXQvbmZjL25jaS9yc3AuYy00OC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtOTktXFxubmV0L25mYy9uY2kvcnNwLmM6MTAwOnN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxubmV0L25mYy9uY2kvcnNwLmMtMTAxLVxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL25jaS9yc3AuYy0xNDctXFxubmV0L25mYy9uY2kvcnNwLmM6MTQ4OnN0YXRpYyB2b2lkIG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL25jaS9yc3AuYy0xNDkte1xcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtMTUyLVxcdGlmICghKG5kZXYtXFx1MDAzZW5jaV92ZXIgXFx1MDAyNiBOQ0lfVkVSXzJfTUFTSykpXFxubmV0L25mYy9uY2kvcnNwLmM6MTUzOlxcdFxcdHN0YXR1cyA9IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShuZGV2LCBza2IpO1xcbm5ldC9uZmMvbmNpL3JzcC5jLTE1NC1cXHRlbHNlXFxubmV0L25mYy9uY2kvcnNwLmM6MTU1OlxcdFxcdHN0YXR1cyA9IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MihuZGV2LCBza2IpO1xcbm5ldC9uZmMvbmNpL3JzcC5jLTE1Ni1cXG4tLVxcbm5ldC9uZmMvbmNpL3JzcC5jPTM2OT12b2lkIG5jaV9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtMzk5LVxcdGNhc2UgTkNJX09QX0NPUkVfSU5JVF9SU1A6XFxubmV0L25mYy9uY2kvcnNwLmM6NDAwOlxcdFxcdG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldChuZGV2LCBza2IpO1xcbm5ldC9uZmMvbmNpL3JzcC5jLTQwMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MjcuNTMzMjk4MDg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MjM0MTQ5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHBvaW50aW5nIG1lIHRvd2FyZHMgc29tZSBpbnRlcmVzdGluZyBhcmVhcy4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGJvdW5kcyBjaGVja2luZyB0byBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxYCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MmAsIHdoaWNoIGFyZSBjYWxsZWQgZnJvbSBgbmNpX3JzcF9wYWNrZXRgLiBHaXZlbiB0aGF0IHRoZXkncmUgdG91Y2hpbmcgdGhlc2UgZnVuY3Rpb25zLCB0aGF0IHNjcmVhbXMgZnV6emluZyB0YXJnZXQgdG8gbWUuIE1lbW9yeSBjb3JydXB0aW9uIGlzIGEgbGlrZWx5IGF2ZW51ZSBvZiBhdHRhY2sgZ2l2ZW4gdGhlIGNvbnRleHQuXG5cbkkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhvc2UgdGhyZWUgc3ltYm9sczogYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAsIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBhbmQgdGhlIHBhcmVudCwgYG5jaV9yc3BfcGFja2V0YC5cblxuTm93LCB0aGUgY29uZmlndXJhdGlvbi4uLiB0aGV5J3JlIG1lbnRpb25pbmcgYE5GQ19OQ0lgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBzdWZmaWNpZW50IHRvIGVuYWJsZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocy4gSXMganVzdCBgTkZDX05DSWAgZW5vdWdoIHRvIGdldCB0aGVzZSBmdW5jdGlvbnMgYnVpbHQgYW5kIHJlYWNoYWJsZT8gT3IgZG8gSSBuZWVkIHRvIGVuYWJsZSBhIG1vcmUgc3BlY2lmaWMgTkNJIHZhcmlhbnQgbGlrZSBgTkZDX05DSV9TUElgIG9yIGBORkNfTkNJX1VBUlRgPyBNYXliZSBldmVuIGBORkNfVklSVFVBTF9OQ0lgPyBJJ2QgYmV0dGVyIGNoZWNrIGZvciB0aGF0IHZpcnR1YWwgZHJpdmVyOyB2aXJ0dWFsIGRyaXZlcnMgY2FuIHNvbWV0aW1lcyBleHBvc2UgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBjb21wbGV0ZWx5IHRvIGVmZmVjdGl2ZWx5IHRhcmdldCB0aGUgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI1NiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjozMi40NTY3MTYzNjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyODI1MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5DSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODc5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnOjUzOlxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1NDpcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTU1LVxcdGhlbHBcXG5kcml2ZXJzL25mYy9LY29uZmlnOjU2OlxcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1NzpcXHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1ODpcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxcbmRyaXZlcnMvbmZjL0tjb25maWctNTktXFx0ICBtb2R1bGUuXFxuLS1cXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXFx0Kz0gc3QyMW5mY2EvXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0kpXFx0Kz0gc3QtbmNpL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORkNfTlhQX05DSSlcXHQrPSBueHAtbmNpL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19ORkNfUzNGV1JONSlcXHQrPSBzM2Z3cm41L1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlPTE5PW9iai0kKENPTkZJR19ORkNfU1Q5NUhGKVxcdCs9IHN0OTVoZi9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkZDX1ZJUlRVQUxfTkNJKVxcdCs9IHZpcnR1YWxfbmNpZGV2Lm9cXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnPTI9Y29uZmlnIE5GQ19GRFBcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBGRFAgTkZDIGRyaXZlclxcXCJcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gTkZDX05DSVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTUtXFx0c2VsZWN0IENSQ19DQ0lUVFxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctOC1cXHQgIEludGVsIEZpZWxkcyBQZWFrIE5GQyBjb250cm9sbGVyIGNvcmUgZHJpdmVyLlxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnOjk6XFx0ICBUaGlzIGlzIGEgZHJpdmVyIGJhc2VkIG9uIHRoZSBOQ0kgTkZDIGtlcm5lbCBsYXllcnMuXFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMTAtXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvTWFrZWZpbGUtMi0jXFxuZHJpdmVycy9uZmMvZmRwL01ha2VmaWxlOjM6IyBNYWtlZmlsZSBmb3IgRkRQIE5DSSBiYXNlZCBORkMgZHJpdmVyXFxuZHJpdmVycy9uZmMvZmRwL01ha2VmaWxlLTQtI1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIxLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyMjojZGVmaW5lIE5DSV9HRVRfVkVSU0lPTl9USU1FT1VUXFx0XFx0XFx0ODAwMFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyMzojZGVmaW5lIE5DSV9QQVRDSF9SRVFVRVNUX1RJTUVPVVRcXHRcXHQ4MDAwXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTI0LSNkZWZpbmUgRkRQX1BBVENIX0NPTk5fREVTVFxcdFxcdFxcdDB4QzJcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yNi1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6Mjc6I2RlZmluZSBOQ0lfUEFUQ0hfVFlQRV9SQU1cXHRcXHRcXHQweDAwXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjI4OiNkZWZpbmUgTkNJX1BBVENIX1RZUEVfT1RQXFx0XFx0XFx0MHgwMVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyOTojZGVmaW5lIE5DSV9QQVRDSF9UWVBFX0VPVFxcdFxcdFxcdDB4RkZcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMzAtXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjMxOiNkZWZpbmUgTkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OXFx0XFx0MHhBMFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozMjojZGVmaW5lIE5DSV9QQVJBTV9JRF9GV19PVFBfVkVSU0lPTlxcdFxcdDB4QTFcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzM6I2RlZmluZSBOQ0lfUEFSQU1fSURfT1RQX0xJTUlURURfVkVSU0lPTlxcdDB4QzVcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzQ6I2RlZmluZSBOQ0lfUEFSQU1fSURfS0VZX0lOREVYX0lEXFx0XFx0MHhDNlxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzY6I2RlZmluZSBOQ0lfR0lEX1BST1BcXHRcXHRcXHRcXHQweDBGXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjM3OiNkZWZpbmUgTkNJX09QX1BST1BfUEFUQ0hfT0lEXFx0XFx0XFx0MHgwOFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozODojZGVmaW5lIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSURcXHRcXHQweDIzXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM5LVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTY4PXN0YXRpYyBjb25zdCB1OCBuY2lfY29yZV9nZXRfY29uZmlnX290cF9yYW1fdmVyc2lvbls1XSA9IHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjktXFx0MHgwNCxcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NzA6XFx0TkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo3MTpcXHROQ0lfUEFSQU1fSURfRldfT1RQX1ZFUlNJT04sXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjcyOlxcdE5DSV9QQVJBTV9JRF9PVFBfTElNSVRFRF9WRVJTSU9OLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo3MzpcXHROQ0lfUEFSQU1fSURfS0VZX0lOREVYX0lEXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTc0LX07XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTAxPXN0YXRpYyBpbmxpbmUgaW50IGZkcF9uY2lfZ2V0X3ZlcnNpb25zKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xMDIte1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxMDM6XFx0cmV0dXJuIG5jaV9jb3JlX2NtZChuZGV2LCBOQ0lfT1BfQ09SRV9HRVRfQ09ORklHX0NNRCxcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTA0LVxcdFxcdFxcdCAgICBzaXplb2YobmNpX2NvcmVfZ2V0X2NvbmZpZ19vdHBfcmFtX3ZlcnNpb24pLFxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTEwOD1zdGF0aWMgaW5saW5lIGludCBmZHBfbmNpX3BhdGNoX2NtZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggdHlwZSlcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTA5LXtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTEwOlxcdHJldHVybiBuY2lfcHJvcF9jbWQobmRldiwgTkNJX09QX1BST1BfUEFUQ0hfT0lELCBzaXplb2YodHlwZSksIFxcdTAwMjZ0eXBlKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTExLX1cXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz0xMTM9c3RhdGljIGlubGluZSBpbnQgZmRwX25jaV9zZXRfcHJvZHVjdGlvbl9kYXRhKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBsZW4sXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTE1LXtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTE2OlxcdHJldHVybiBuY2lfcHJvcF9jbWQobmRldiwgTkNJX09QX1BST1BfU0VUX1BEQVRBX09JRCwgbGVuLCBkYXRhKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTE3LX1cXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz0xNTk9c3RhdGljIHZvaWQgZmRwX25jaV9zZXRfZGF0YV9wa3RfY291bnRlcihzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xNjQtXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE2NTpcXHRkZXZfZGJnKGRldiwgXFxcIk5DSSBkYXRhIHBrdCBjb3VudGVyICVkXFxcXG5cXFwiLCBjb3VudCk7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE2Ni1cXHRhdG9taWNfc2V0KFxcdTAwMjZpbmZvLVxcdTAwM2VkYXRhX3BrdF9jb3VudGVyLCBjb3VudCk7XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTc2LSAqXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE3NzogKiBUaGUgZmlybXdhcmUgd2lsbCBiZSBhbmFseXplZCBhbmQgYXBwbGllZCB3aGVuIHdlIHNlbmQgTkNJX09QX1BST1BfUEFUQ0hfQ01EXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE3ODogKiBjb21tYW5kIHdpdGggTkNJX1BBVENIX1RZUEVfRU9UIHBhcmFtZXRlci4gVGhlIGRldmljZSB3aWxsIHNlbmQgYVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxNzk6ICogTkZDQ19QQVRDSF9OVEYgcGFja2V0IGFuZCBhIE5DSV9PUF9DT1JFX1JFU0VUX05URiBwYWNrZXQuXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE4MC0gKi9cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTgxPXN0YXRpYyBpbnQgZmRwX25jaV9zZW5kX3BhdGNoKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBjb25uX2lkLCB1OCB0eXBlKVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE4OS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTkwOlxcdGlmICgodHlwZSA9PSBOQ0lfUEFUQ0hfVFlQRV9PVFAgXFx1MDAyNlxcdTAwMjYgIWluZm8tXFx1MDAzZW90cF9wYXRjaCkgfHxcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTkxOlxcdCAgICAodHlwZSA9PSBOQ0lfUEFUQ0hfVFlQRV9SQU0gXFx1MDAyNlxcdTAwMjYgIWluZm8tXFx1MDAzZXJhbV9wYXRjaCkpXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE5Mi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTkzLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxOTQ6XFx0aWYgKHR5cGUgPT0gTkNJX1BBVENIX1RZUEVfT1RQKVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xOTUtXFx0XFx0ZncgPSBpbmZvLVxcdTAwM2VvdHBfcGF0Y2g7XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMjExLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyMTI6XFx0XFx0c2tiID0gbmNpX3NrYl9hbGxvYyhuZGV2LCAoTkNJX0NUUkxfSERSX1NJWkUgKyBwYXlsb2FkX3NpemUpLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yMTMtXFx0XFx0XFx0XFx0ICAgIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIxOS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MjIwOlxcdFxcdHNrYl9yZXNlcnZlKHNrYiwgTkNJX0NUUkxfSERSX1NJWkUpO1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yMjEtXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MzI0PXN0YXRpYyBpbnQgZmRwX25jaV9wYXRjaF9vdHAoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMzM4LVxcdC8qIFBhdGNoIGluaXQgcmVxdWVzdCAqL1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozMzk6XFx0ciA9IGZkcF9uY2lfcGF0Y2hfY21kKG5kZXYsIE5DSV9QQVRDSF9UWVBFX09UUCk7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM0MC1cXHRpZiAocilcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNDgtXFx0LyogU2VuZCB0aGUgcGF0Y2ggb3ZlciB0aGUgZGF0YSBjb25uZWN0aW9uICovXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjM0OTpcXHRyID0gZmRwX25jaV9zZW5kX3BhdGNoKG5kZXYsIGNvbm5faWQsIE5DSV9QQVRDSF9UWVBFX09UUCk7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM1MC1cXHRpZiAocilcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNjUtXFx0LyogUGF0Y2ggZmluaXNoIG1lc3NhZ2UgKi9cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzY2OlxcdGlmIChmZHBfbmNpX3BhdGNoX2NtZChuZGV2LCBOQ0lfUEFUQ0hfVFlQRV9FT1QpKSB7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM2Ny1cXHRcXHRuZmNfZXJyKGRldiwgXFxcIk9UUCBwYXRjaCBlcnJvciAweCV4XFxcXG5cXFwiLCByKTtcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz0zOTA9c3RhdGljIGludCBmZHBfbmNpX3BhdGNoX3JhbShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy00MDQtXFx0LyogUGF0Y2ggaW5pdCByZXF1ZXN0ICovXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjQwNTpcXHRyID0gZmRwX25jaV9wYXRjaF9jbWQobmRldiwgTkNJX1BBVENIX1RZUEVfUkFNKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDA2LVxcdGlmIChyKVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQxNC1cXHQvKiBTZW5kIHRoZSBwYXRjaCBvdmVyIHRoZSBkYXRhIGNvbm5lY3Rpb24gKi9cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NDE1OlxcdHIgPSBmZHBfbmNpX3NlbmRfcGF0Y2gobmRldiwgY29ubl9pZCwgTkNJX1BBVENIX1RZUEVfUkFNKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDE2LVxcdGlmIChyKVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQzMS1cXHQvKiBQYXRjaCBmaW5pc2ggbWVzc2FnZSAqL1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo0MzI6XFx0aWYgKGZkcF9uY2lfcGF0Y2hfY21kKG5kZXYsIE5DSV9QQVRDSF9UWVBFX0VPVCkpIHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDMzLVxcdFxcdG5mY19lcnIoZGV2LCBcXFwiUkFNIHBhdGNoIGVycm9yIDB4JXhcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTQ1Nj1zdGF0aWMgaW50IGZkcF9uY2lfc2V0dXAoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQ1Ny17XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjQ1ODpcXHQvKiBGb3JtYXQ6IHRvdGFsIGxlbmd0aCBmb2xsb3dlZCBieSBhbiBOQ0kgcGFja2V0ICovXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQ1OS1cXHRzdHJ1Y3QgZmRwX25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTYxNj1zdGF0aWMgaW50IGZkcF9uY2lfY29yZV9nZXRfY29uZmlnX3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjI0LVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2MjU6XFx0aWYgKHJzcC1cXHUwMDNlc3RhdHVzID09IE5DSV9TVEFUVVNfT0spIHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjI2LVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTYzMC1cXHRcXHRcXHRzd2l0Y2ggKCpwKyspIHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjMxOlxcdFxcdFxcdGNhc2UgTkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OOlxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02MzItXFx0XFx0XFx0XFx0cCsrO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTYzNS1cXHRcXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjM2OlxcdFxcdFxcdGNhc2UgTkNJX1BBUkFNX0lEX0ZXX09UUF9WRVJTSU9OOlxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02MzctXFx0XFx0XFx0XFx0cCsrO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY0MC1cXHRcXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjQxOlxcdFxcdFxcdGNhc2UgTkNJX1BBUkFNX0lEX09UUF9MSU1JVEVEX1ZFUlNJT046XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY0Mi1cXHRcXHRcXHRcXHRwKys7XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjQ1LVxcdFxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2NDY6XFx0XFx0XFx0Y2FzZSBOQ0lfUEFSQU1fSURfS0VZX0lOREVYX0lEOlxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NDctXFx0XFx0XFx0XFx0cCsrO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTY2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzIGZkcF9jb3JlX29wc1tdID0ge1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NjQtXFx0e1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2NjU6XFx0XFx0Lm9wY29kZSA9IE5DSV9PUF9DT1JFX0dFVF9DT05GSUdfUlNQLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NjYtXFx0XFx0LnJzcCA9IGZkcF9uY2lfY29yZV9nZXRfY29uZmlnX3JzcF9wYWNrZXQsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjY4LVxcdHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjY5OlxcdFxcdC5vcGNvZGUgPSBOQ0lfT1BfQ09SRV9SRVNFVF9OVEYsXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY3MC1cXHRcXHQubnRmID0gZmRwX25jaV9jb3JlX3Jlc2V0X250Zl9wYWNrZXQsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9Njc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX2RyaXZlcl9vcHMgZmRwX3Byb3Bfb3BzW10gPSB7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY3NS1cXHR7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjY3NjpcXHRcXHQub3Bjb2RlID0gbmNpX29wY29kZV9wYWNrKE5DSV9HSURfUFJPUCwgTkNJX09QX1BST1BfUEFUQ0hfT0lEKSxcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjc3LVxcdFxcdC5yc3AgPSBmZHBfbmNpX3Byb3BfcGF0Y2hfcnNwX3BhY2tldCxcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02ODAtXFx0e1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2ODE6XFx0XFx0Lm9wY29kZSA9IG5jaV9vcGNvZGVfcGFjayhOQ0lfR0lEX1BST1AsXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjY4MjpcXHRcXHRcXHRcXHRcXHQgIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSUQpLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02ODMtXFx0XFx0LnJzcCA9IGZkcF9uY2lfcHJvcF9zZXRfcHJvZHVjdGlvbl9kYXRhX3JzcF9wYWNrZXQsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9Njk5PWludCBmZHBfbmNpX3Byb2JlKHN0cnVjdCBmZHBfaTJjX3BoeSAqcGh5LCBjb25zdCBzdHJ1Y3QgbmZjX3BoeV9vcHMgKnBoeV9vcHMsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzI5LVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo3MzA6XFx0QlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZmRwX3Byb3Bfb3BzKSBcXHUwMDNlIE5DSV9NQVhfUFJPUFJJRVRBUllfQ01EKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzMxLVxcdG5kZXYgPSBuY2lfYWxsb2NhdGVfZGV2aWNlKFxcdTAwMjZuY2lfb3BzLCBwcm90b2NvbHMsIHR4X2hlYWRyb29tLFxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTc2Mj1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjc2MzpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk5GQyBOQ0kgZHJpdmVyIGZvciBJbnRlbCBGaWVsZHMgUGVhayBORkMgY29udHJvbGxlclxcXCIpO1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy03NjQtTU9EVUxFX0FVVEhPUihcXFwiUm9iZXJ0IERvbGNhIFxcdTAwM2Nyb2JlcnQuZG9sY2FAaW50ZWwuY29tXFx1MDAzZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTI4LVxcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzoyOTojZGVmaW5lIEZEUF9OQ0lfSTJDX01JTl9QQVlMT0FEXFx0NVxcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzozMDojZGVmaW5lIEZEUF9OQ0lfSTJDX01BWF9QQVlMT0FEXFx0MjYxXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTMxLVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jPTEyOT1zdGF0aWMgaW50IGZkcF9uY2lfaTJjX3JlYWQoc3RydWN0IGZkcF9pMmNfcGh5ICpwaHksIHN0cnVjdCBza19idWZmICoqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTEzMS1cXHRpbnQgciwgbGVuO1xcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzoxMzI6XFx0dTggdG1wW0ZEUF9OQ0lfSTJDX01BWF9QQVlMT0FEXSwgbHJjLCBrO1xcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYy0xMzMtXFx0dTE2IGk7XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMTY5LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jOjE3MDpcXHRcXHRcXHRwaHktXFx1MDAzZW5leHRfcmVhZF9zaXplID0gRkRQX05DSV9JMkNfTUlOX1BBWUxPQUQ7XFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTE3MS1cXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYz0yNzg9c3RhdGljIGludCBmZHBfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTMwMi1cXHRwaHktXFx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jOjMwMzpcXHRwaHktXFx1MDAzZW5leHRfcmVhZF9zaXplID0gRkRQX05DSV9JMkNfTUlOX1BBWUxPQUQ7XFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTMwNC1cXHRpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBwaHkpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTMzNS1cXHRpZiAociBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25mYy9mZHAvaTJjLmM6MzM2OlxcdFxcdG5mY19lcnIoZGV2LCBcXFwiTkNJIHByb2JpbmcgZXJyb3JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYy0zMzctXFx0XFx0cmV0dXJuIHI7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc9MTA9Y29uZmlnIE5GQ19NUlZMX1VTQlxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBORkMtb3Zlci1VU0IgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoxMjpcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVVNCXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTEzLVxcdHNlbGVjdCBORkNfTVJWTFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnPTIzPWNvbmZpZyBORkNfTVJWTF9VQVJUXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE5GQy1vdmVyLVVBUlQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgTkZDX05DSV9VQVJUXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI2LVxcdHNlbGVjdCBORkNfTVJWTFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnPTQ2PWNvbmZpZyBORkNfTVJWTF9TUElcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItU1BJIGRyaXZlclxcXCJcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBORkNfTVJWTCBcXHUwMDI2XFx1MDAyNiBORkNfTkNJX1NQSVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL01ha2VmaWxlLTItI1xcbmRyaXZlcnMvbmZjL25mY21ydmwvTWFrZWZpbGU6MzojIE1ha2VmaWxlIGZvciBORkNNUlZMIE5DSSBiYXNlZCBORkMgZHJpdmVyXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9NYWtlZmlsZS00LSNcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE3LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE4OiNkZWZpbmUgTkNJX09QX1BST1BSSUVUQVJZX0JPT1RfQ01EXFx0bmNpX29wY29kZV9wYWNrKE5DSV9HSURfUFJPUFJJRVRBUlksIFxcXFxcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoxOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHROQ0lfT1BfUFJPUF9CT09UX0NNRClcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yMC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTY1PXN0YXRpYyBjb25zdCB1aW50OF90IG5jaV9wYXR0ZXJuX2NvcmVfY29ubl9jcmVkaXRzX250ZltdID0ge1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjY2OlxcdDB4NjAsIDB4MDYsIDB4MDMsIDB4MDEsIE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMLCAweDAxXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtNjctfTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTczPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYWxsb2NfbGNfc2tiKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsIHVpbnQ4X3QgcGxlbilcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTc3LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjc4OlxcdHNrYiA9IG5jaV9za2JfYWxsb2MocHJpdi1cXHUwMDNlbmRldiwgKE5DSV9EQVRBX0hEUl9TSVpFICsgcGxlbiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTc5LVxcdGlmICghc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtODEtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6ODI6XFx0aGRyID0gc2tiX3B1dChza2IsIE5DSV9EQVRBX0hEUl9TSVpFKTtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzo4MzpcXHRoZHItXFx1MDAzZWNvbm5faWQgPSBOQ0lfQ09SRV9MQ19DT05OSURfUFJPUF9GV19ETDtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy04NC1cXHRoZHItXFx1MDAzZXJmdSA9IDA7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy04Ni1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzo4NzpcXHRuY2lfbXRfc2V0KChfX3U4ICopaGRyLCBOQ0lfTVRfREFUQV9QS1QpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjg4OlxcdG5jaV9wYmZfc2V0KChfX3U4ICopaGRyLCBOQ0lfUEJGX0xBU1QpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTg5LVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MTMwPXN0YXRpYyBpbnQgcHJvY2Vzc19zdGF0ZV9yZXNldChzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTQxLVxcdHByaXYtXFx1MDAzZWZ3X2RubGQuc3RhdGUgPSBTVEFURV9JTklUO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE0MjpcXHRuY2lfc2VuZF9jbWQocHJpdi1cXHUwMDNlbmRldiwgTkNJX09QX0NPUkVfSU5JVF9DTUQsIDAsIE5VTEwpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE0My1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTE0Nz1zdGF0aWMgaW50IHByb2Nlc3Nfc3RhdGVfaW5pdChzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTYxLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE2MjpcXHRuY2lfc2VuZF9jbWQocHJpdi1cXHUwMDNlbmRldiwgTkNJX09QX0NPUkVfU0VUX0NPTkZJR19DTUQsIDMgKyBjbWQucGFyYW0ubGVuLFxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE2My1cXHRcXHQgICAgIFxcdTAwMjZjbWQpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MTY5PXN0YXRpYyB2b2lkIGNyZWF0ZV9sYyhzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE3MC17XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MTcxOlxcdHVpbnQ4X3QgcGFyYW1bMl0gPSB7IE5DSV9DT1JFX0xDX1BST1BfRldfREwsIDB4MCB9O1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE3Mi1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0xNzMtXFx0cHJpdi1cXHUwMDNlZndfZG5sZC5zdGF0ZSA9IFNUQVRFX09QRU5fTEM7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MTc0OlxcdG5jaV9zZW5kX2NtZChwcml2LVxcdTAwM2VuZGV2LCBOQ0lfT1BfQ09SRV9DT05OX0NSRUFURV9DTUQsIDIsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0xNzUtfVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MTc3PXN0YXRpYyBpbnQgcHJvY2Vzc19zdGF0ZV9zZXRfcmVmX2Nsb2NrKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yMTctXFx0cHJpdi1cXHUwMDNlZndfZG5sZC5zdGF0ZSA9IFNUQVRFX1NFVF9ISV9DT05GSUc7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MjE4OlxcdG5jaV9zZW5kX2NtZChwcml2LVxcdTAwM2VuZGV2LCBOQ0lfT1BfQ09SRV9TRVRfQ09ORklHX0NNRCwgMyArIGNtZC5wYXJhbS5sZW4sXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMjE5LVxcdFxcdCAgICAgXFx1MDAyNmNtZCk7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0yNDg9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX2Z3X2RubGQoc3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTI1OC1cXHRcXHQgKiBDb21tYW5kIGZvcm1hdDpcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoyNTk6XFx0XFx0ICogQjAuLjI6IE5DSSBoZWFkZXJcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yNjAtXFx0XFx0ICogQjMgICA6IEhlbHBlciBjb21tYW5kICgweEE1KVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMjY1LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjI2NjpcXHRcXHQvKiBSZW1vdmUgTkNJIEhEUiAqL1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTI2Ny1cXHRcXHRza2JfcHVsbChza2IsIDMpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA2LVxcdFxcdFxcdC8qIEZXIExvYWRpbmcgaXMgZG9uZSAqL1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjMwNzpcXHRcXHRcXHR1aW50OF90IGNvbm5faWQgPSBOQ0lfQ09SRV9MQ19DT05OSURfUFJPUF9GV19ETDtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0zMDgtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA5LVxcdFxcdFxcdHByaXYtXFx1MDAzZWZ3X2RubGQuc3RhdGUgPSBTVEFURV9DTE9TRV9MQztcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzozMTA6XFx0XFx0XFx0bmNpX3NlbmRfY21kKHByaXYtXFx1MDAzZW5kZXYsIE5DSV9PUF9DT1JFX0NPTk5fQ0xPU0VfQ01ELFxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTMxMS1cXHRcXHRcXHRcXHQgICAgIDEsIFxcdTAwMjZjb25uX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTM0OT1zdGF0aWMgaW50IHByb2Nlc3Nfc3RhdGVfY2xvc2VfbGMoc3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTM1Ni1cXHRwcml2LVxcdTAwM2Vmd19kbmxkLnN0YXRlID0gU1RBVEVfQk9PVDtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzozNTc6XFx0bmNpX3NlbmRfY21kKHByaXYtXFx1MDAzZW5kZXYsIE5DSV9PUF9QUk9QUklFVEFSWV9CT09UX0NNRCwgMCwgTlVMTCk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzU4LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MzkxPXN0YXRpYyB2b2lkIGZ3X2RubGRfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy00MDMtXFx0XFx0bmZjX3NlbmRfdG9fcmF3X3NvY2socHJpdi1cXHUwMDNlbmRldi1cXHUwMDNlbmZjX2Rldiwgc2tiLFxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjQwNDpcXHRcXHRcXHRcXHQgICAgIFJBV19QQVlMT0FEX05DSSwgTkZDX0RJUkVDVElPTl9SWCk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtNDA1LVxcdFxcdHN3aXRjaCAoZndfZG5sZC1cXHUwMDNlc3RhdGUpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oLTE0LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oOjE1OiNkZWZpbmUgTkNJX09QX1BST1BfQk9PVF9DTURcXHRcXHQweDNBXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmgtMTYtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmg6MTc6I2RlZmluZSBOQ0lfQ09SRV9MQ19QUk9QX0ZXX0RMXFx0XFx0MHhGRFxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oOjE4OiNkZWZpbmUgTkNJX0NPUkVfTENfQ09OTklEX1BST1BfRldfRExcXHQweDAyXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmgtMTktXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jPTI1PXN0YXRpYyBpbnQgbmZjbXJ2bF9pMmNfcmVhZChzdHJ1Y3QgbmZjbXJ2bF9pMmNfZHJ2X2RhdGEgKmRydl9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy0zMC1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjMxOlxcdC8qIFJlYWQgTkNJIGhlYWRlciB0byBrbm93IHRoZSBwYXlsb2FkIHNpemUgKi9cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjMyOlxcdHJldCA9IGkyY19tYXN0ZXJfcmVjdihkcnZfZGF0YS1cXHUwMDNlaTJjLCAodTggKilcXHUwMDI2bmNpX2hkciwgTkNJX0NUUkxfSERSX1NJWkUpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6MzM6XFx0aWYgKHJldCAhPSBOQ0lfQ1RSTF9IRFJfU0laRSkge1xcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6MzQ6XFx0XFx0bmZjX2VycihcXHUwMDI2ZHJ2X2RhdGEtXFx1MDAzZWkyYy1cXHUwMDNlZGV2LCBcXFwiY2Fubm90IHJlYWQgTkNJIGhlYWRlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy0zNS1cXHRcXHRyZXR1cm4gLUVCQURNU0c7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jLTM4LVxcdCpza2IgPSBuY2lfc2tiX2FsbG9jKGRydl9kYXRhLVxcdTAwM2Vwcml2LVxcdTAwM2VuZGV2LFxcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6Mzk6XFx0XFx0XFx0ICAgICBuY2lfaGRyLnBsZW4gKyBOQ0lfQ1RSTF9IRFJfU0laRSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy00MC1cXHRpZiAoISpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jLTQyLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6NDM6XFx0LyogQ29weSBOQ0kgaGVhZGVyIGludG8gdGhlIFNLQiAqL1xcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6NDQ6XFx0c2tiX3B1dF9kYXRhKCpza2IsIFxcdTAwMjZuY2lfaGRyLCBOQ0lfQ1RSTF9IRFJfU0laRSk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy00NS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jLTQ2LVxcdGlmIChuY2lfaGRyLnBsZW4pIHtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjQ3OlxcdFxcdC8qIFJlYWQgdGhlIE5DSSBwYXlsb2FkICovXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy00OC1cXHRcXHRyZXQgPSBpMmNfbWFzdGVyX3JlY3YoZHJ2X2RhdGEtXFx1MDAzZWkyYyxcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jPTE3PXN0YXRpYyBpbnQgbmZjbXJ2bF9uY2lfb3BlbihzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIxLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjIyOlxcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFxcdTAwMjZwcml2LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMjMtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0zMC1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjMxOlxcdFxcdGNsZWFyX2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTMyLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9MzY9c3RhdGljIGludCBuZmNtcnZsX25jaV9jbG9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTM5LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjQwOlxcdGlmICghdGVzdF9hbmRfY2xlYXJfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFxcdTAwMjZwcml2LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtNDEtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYz05Mj1zdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpuZmNtcnZsX25jaV9yZWdpc3Rlcl9kZXYoZW51bSBuZmNtcnZsX3BoeSBwaHksXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0xMjQtXFx0aWYgKHBoeSA9PSBORkNNUlZMX1BIWV9TUEkpIHtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoxMjU6XFx0XFx0aGVhZHJvb20gPSBOQ0lfU1BJX0hEUl9MRU47XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTI2LVxcdFxcdHRhaWxyb29tID0gMTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jPTE5ND1pbnQgbmZjbXJ2bF9uY2lfcmVjdl9mcmFtZShzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTk4LVxcdFxcdCAgICBza2ItXFx1MDAzZWRhdGFbMV0gPT0gTkZDTVJWTF9IQ0lfTkZDX0VWRU5UX0NPREUpIHtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoxOTk6XFx0XFx0XFx0LyogRGF0YSBwYWNrZXQsIGxldCdzIGV4dHJhY3QgTkNJIHBheWxvYWQgKi9cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0yMDAtXFx0XFx0XFx0c2tiX3B1bGwoc2tiLCBORkNNUlZMX0hDSV9FVkVOVF9IRUFERVJfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0yMTItXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM6MjEzOlxcdGlmICh0ZXN0X2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIxNC1cXHRcXHRuY2lfcmVjdl9mcmFtZShwcml2LVxcdTAwM2VuZGV2LCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmg9MTM9c3RydWN0IGdwaW9fZGVzYztcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oLTE1LS8qIERlZmluZSBwcml2YXRlIGZsYWdzOiAqL1xcbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oOjE2OiNkZWZpbmUgTkZDTVJWTF9OQ0lfUlVOTklOR1xcdFxcdFxcdDFcXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaC0xNy0jZGVmaW5lIE5GQ01SVkxfUEhZX0VSUk9SXFx0XFx0XFx0Mlxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMjQtI2RlZmluZSBORkNNUlZMX0dQSU9fUElOX05GQ19BQ1RJVkVcXHRcXHQweEJcXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaDoyNTojZGVmaW5lIE5GQ01SVkxfTkNJX01BWF9FVkVOVF9TSVpFXFx0XFx0MjYwXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMjYtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMjctLypcXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaDoyODogKiBOQ0kgRlcgUGFyYW1ldGVyc1xcbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oLTI5LSAqL1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC91YXJ0LmM9MjM9c3RhdGljIHVuc2lnbmVkIGludCBicmVha19jb250cm9sO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC91YXJ0LmMtMjUtLypcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYzoyNjogKiBORkNNUlZMIE5DSSBPUFNcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYy0yNy0gKi9cXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jPTY0PXN0YXRpYyBpbnQgbmZjbXJ2bF91YXJ0X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTEwNC0vKlxcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jOjEwNTogKiBOQ0kgVUFSVCBPUFNcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYy0xMDYtICovXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYz0xOTA9c3RhdGljIHN0cnVjdCBuY2lfdWFydCBuZmNtcnZsX25jaV91YXJ0ID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC91YXJ0LmMtMTkyLVxcdC5uYW1lICAgPSBcXFwibmZjbXJ2bF91YXJ0XFxcIixcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYzoxOTM6XFx0LmRyaXZlciA9IE5DSV9VQVJUX0RSSVZFUl9NQVJWRUxMLFxcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTE5NC1cXHQub3BzXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jPTU3PXN0YXRpYyB2b2lkIG5mY21ydmxfYnVsa19jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTY0LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6NjU6XFx0aWYgKCF0ZXN0X2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcXHUwMDI2ZHJ2X2RhdGEtXFx1MDAzZWZsYWdzKSlcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTY2LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM9MTAzPW5mY21ydmxfc3VibWl0X2J1bGtfdXJiKHN0cnVjdCBuZmNtcnZsX3VzYl9kcnZfZGF0YSAqZHJ2X2RhdGEsIGdmcF90IG1lbV9mbGFncylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmMtMTA3LVxcdHVuc2lnbmVkIGludCBwaXBlO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6MTA4OlxcdGludCBlcnIsIHNpemUgPSBORkNNUlZMX05DSV9NQVhfRVZFTlRfU0laRTtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTEwOS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM9NDAwPXN0YXRpYyBpbnQgbmZjbXJ2bF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTQwOS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jOjQxMDpcXHRpZiAoIXRlc3RfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFxcdTAwMjZkcnZfZGF0YS1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmMtNDExLVxcdFxcdGdvdG8gZG9uZTtcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTlhQX05DSVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzozOlxcdHRyaXN0YXRlIFxcXCJOWFAtTkNJIE5GQyBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBORkNfTkNJXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTUtXFx0aGVscFxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzo2OlxcdCAgR2VuZXJpYyBjb3JlIGRyaXZlciBmb3IgTlhQIE5DSSBjaGlwcyBzdWNoIGFzIHRoZSBOUEMxMDAgKFBONTQ3KSxcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctNy1cXHQgIE5QQzMwMCAoUE41NDgpIG9yIFBONzE1MCBmYW1pbGllcy5cXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6ODpcXHQgIFRoaXMgaXMgYSBkcml2ZXIgYmFzZWQgb24gdGhlIE5DSSBORkMga2VybmVsIGxheWVycyBhbmRcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctOS1cXHQgIHdpbGwgdGh1cyBub3Qgd29yayB3aXRoIE5YUCBsaWJuZmMgbGlicmFyeS5cXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6MTU6Y29uZmlnIE5GQ19OWFBfTkNJX0kyQ1xcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxNjpcXHR0cmlzdGF0ZSBcXFwiTlhQLU5DSSBJMkMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6MTc6XFx0ZGVwZW5kcyBvbiBORkNfTlhQX05DSSBcXHUwMDI2XFx1MDAyNiBJMkNcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMTgtXFx0aGVscFxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxOTpcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgYW4gSTJDIGludGVyZmFjZSB0byB0aGUgTlhQIE5DSVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0yMC1cXHQgIGNoaXBzLlxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZS0yLSNcXG5kcml2ZXJzL25mYy9ueHAtbmNpL01ha2VmaWxlOjM6IyBNYWtlZmlsZSBmb3IgTlhQLU5DSSBORkMgZHJpdmVyXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZS00LSNcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvTWFrZWZpbGU9Nz1ueHAtbmNpX2kyYy1vYmpzID0gaTJjLm9cXG5kcml2ZXJzL25mYy9ueHAtbmNpL01ha2VmaWxlLTgtXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORkNfTlhQX05DSSkgKz0gbnhwLW5jaS5vXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZDX05YUF9OQ0lfSTJDKSArPSBueHAtbmNpX2kyYy5vXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0yLS8qXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MzogKiBHZW5lcmljIGRyaXZlciBmb3IgTlhQIE5DSSBORkMgY2hpcHNcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy00LSAqXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0yMC1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoyMTojZGVmaW5lIE5YUF9OQ0lfSERSX0xFTlxcdDRcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0yMi1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoyMzojZGVmaW5lIE5YUF9OQ0lfTkZDX1BST1RPQ09MUyAoTkZDX1BST1RPX0pFV0VMX01BU0sgfCBcXFxcXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMjQtXFx0XFx0XFx0ICAgICAgIE5GQ19QUk9UT19NSUZBUkVfTUFTSyB8IFxcXFxcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTMwLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjMxOiNkZWZpbmUgTlhQX05DSV9SRl9QTExfVU5MT0NLRURfTlRGIG5jaV9vcGNvZGVfcGFjayhOQ0lfR0lEX1JGX01HTVQsIDB4MjEpXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MzI6I2RlZmluZSBOWFBfTkNJX1JGX1RYTERPX0VSUk9SX05URiBuY2lfb3Bjb2RlX3BhY2soTkNJX0dJRF9SRl9NR01ULCAweDIzKVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTMzLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jPTM0PXN0YXRpYyBpbnQgbnhwX25jaV9vcGVuKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDAtXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6NDE6XFx0aWYgKGluZm8tXFx1MDAzZW1vZGUgIT0gTlhQX05DSV9NT0RFX0NPTEQpIHtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy00Mi1cXHRcXHRyID0gLUVCVVNZO1xcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDYtXFx0aWYgKGluZm8tXFx1MDAzZXBoeV9vcHMtXFx1MDAzZXNldF9tb2RlKVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjQ3OlxcdFxcdHIgPSBpbmZvLVxcdTAwM2VwaHlfb3BzLVxcdTAwM2VzZXRfbW9kZShpbmZvLVxcdTAwM2VwaHlfaWQsIE5YUF9OQ0lfTU9ERV9OQ0kpO1xcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTQ4LVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjQ5OlxcdGluZm8tXFx1MDAzZW1vZGUgPSBOWFBfTkNJX01PREVfTkNJO1xcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTUwLVxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM9NTY9c3RhdGljIGludCBueHBfbmNpX2Nsb3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNjMtXFx0aWYgKGluZm8tXFx1MDAzZXBoeV9vcHMtXFx1MDAzZXNldF9tb2RlKVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjY0OlxcdFxcdHIgPSBpbmZvLVxcdTAwM2VwaHlfb3BzLVxcdTAwM2VzZXRfbW9kZShpbmZvLVxcdTAwM2VwaHlfaWQsIE5YUF9OQ0lfTU9ERV9DT0xEKTtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy02NS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzo2NjpcXHRpbmZvLVxcdTAwM2Vtb2RlID0gTlhQX05DSV9NT0RFX0NPTEQ7XFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNjctXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz03Mj1zdGF0aWMgaW50IG54cF9uY2lfc2VuZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTgxLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjgyOlxcdGlmIChpbmZvLVxcdTAwM2Vtb2RlICE9IE5YUF9OQ0lfTU9ERV9OQ0kpIHtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy04My1cXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jPTExNT1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzIG54cF9uY2lfY29yZV9vcHNbXSA9IHtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0xMTYtXFx0e1xcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjExNzpcXHRcXHQub3Bjb2RlID0gTlhQX05DSV9SRl9QTExfVU5MT0NLRURfTlRGLFxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTExOC1cXHRcXHQubnRmID0gbnhwX25jaV9yZl9wbGxfdW5sb2NrZWRfbnRmLFxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMTIwLVxcdHtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoxMjE6XFx0XFx0Lm9wY29kZSA9IE5YUF9OQ0lfUkZfVFhMRE9fRVJST1JfTlRGLFxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTEyMi1cXHRcXHQubnRmID0gbnhwX25jaV9yZl90eGxkb19lcnJvcl9udGYsXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMzU9aW50IG54cF9uY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjMyLjUzOTU0NzE3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTUzODA1MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5GQyBWaXJ0dWFsIE5DSSBEZXZpY2UgRHJpdmVyIC0gRnV6emluZyBQb3RlbnRpYWwhKipcblxuT2theSwgc28gSSd2ZSBzdHVtYmxlZCB1cG9uIGBORkNfVklSVFVBTF9OQ0lgLCBhbmQgaXQgaW1tZWRpYXRlbHkgY2xpY2tzOiBUaGlzIGlzIGEgdmlydHVhbCBOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXIhIE15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmcgd2l0aCB0aGUgaW1wbGljYXRpb25zLiBBIHZpcnR1YWwgZGV2aWNlLi4uIHRoYXQgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0XCIgdG8gbWUuIFRoaW5rIG9mIHRoZSBwb3RlbnRpYWwgZm9yIGNyYWZ0aW5nIG1hbGZvcm1lZCBORkMgY29tbWFuZHMgYW5kIG9ic2VydmluZyB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IuIFRoaXMgY291bGQgYmUgYSBnb2xkbWluZSBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHRoaW5nLiBMZXQncyBzdGFydCB3aXRoIHRoZSBiYXNpY3MuIEknbGwgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25mYy9LY29uZmlnYC4gVGltZSB0byBzZWUgaG93IHRoaXMgdmlydHVhbCBkcml2ZXIgaXMgY29uZmlndXJlZCwgYnVpbHQsIGFuZCBwb3RlbnRpYWxseSwgaWYgdGhlcmUgYXJlIGFueSBoaWRkZW4gbnVhbmNlcyB0byBpdHMgYWN0aXZhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwgdG8gZWZmZWN0aXZlbHkgbGV2ZXJhZ2UgaXQgZm9yIGZ1enppbmcuIFRoaXMgY291bGQgYmUgcmVhbGx5IHByb21pc2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTg4NjcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjozNi4wOTMzNTU4M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBORkNfUE9SVDEwMFxcbiAgNDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICA0NDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbiAgNDY6XFx0XFx0aGVscFxcbiAgNDc6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU29ueSBQb3J0LTEwMCBjaGlwIGJhc2VkIFVTQiBkZXZpY2VzIHN1Y2ggYXMgdGhlXFxuICA0ODpcXHRcXHQgIFJDLVMzODAgZG9uZ2xlLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXFxuICA1NzpcXHRcXHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXFxuICA1ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxcbiAgNTk6XFx0XFx0ICBtb2R1bGUuXFxuICA2MDpcXHRcXG4gIDYxOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDYyOlxcdFxcbiAgNjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25mYy9mZHAvS2NvbmZpZ1xcXCJcXG4gIDY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZ1xcXCJcXG4gIDY1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZ1xcXCJcXG4gIDY2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWdcXFwiXFxuICA2NzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZ1xcXCJcXG4gIDY4OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZ1xcXCJcXG4gIDY5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjM2LjA5MzQ3MDAxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzYyNDMzMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTkZDIFZpcnR1YWwgTkNJIGFuZCBpdHMgSW1wbGljYXRpb25zIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTkZDX1ZJUlRVQUxfTkNJYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBoaW5nZXMgb24gYE5GQ19OQ0lgLiAgSWYgSSBlbmFibGUgYE5GQ19WSVJUVUFMX05DSWAsIHRoZSBzeXN0ZW0gaXMgc2V0IHVwIHRvIGFsbG93IHN5emthbGxlciB0byBjcmVhdGUgYW5kIHRlc3QsIGluIGEgdmlydHVhbCBzZXR0aW5nLCBOQ0kgZGV2aWNlcy4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IG9wZW5zIHVwIHRoZSBOQ0kgcHJvdG9jb2wgdG8gZnV6emluZywgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGlkZW50aWZ5aW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pY3Mgb2YgdGhpcyB2aXJ0dWFsIGRldmljZSBjcmVhdGlvbi4gSSBzaG91bGQgZGlnIGludG8gYGRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmNgIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoZXkndmUgaW1wbGVtZW50ZWQgdGhpcyB2aXJ0dWFsaXphdGlvbiBsYXllciBhbmQgd2hhdCBwb3RlbnRpYWwgaW50ZXJmYWNlcyBhcmUgZXhwb3NlZCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1OTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjM5LjY2OTcxNzQxNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk0ODY2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydHVhbF9uY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIzLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MjQ6c3RydWN0IHZpcnR1YWxfbmNpX2RldiB7XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0yNS1cXHRzdHJ1Y3QgbmNpX2RldiAqbmRldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMzEtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzozMjpzdGF0aWMgaW50IHZpcnR1YWxfbmNpX29wZW4oc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0zMy17XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzozNDpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMzUtXFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTM5LVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6NDA6c3RhdGljIGludCB2aXJ0dWFsX25jaV9jbG9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTQxLXtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjQyOlxcdHN0cnVjdCB2aXJ0dWFsX25jaV9kZXYgKnZkZXYgPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy00My1cXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtNTItXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo1MzpzdGF0aWMgaW50IHZpcnR1YWxfbmNpX3NlbmQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy01NC17XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo1NTpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtNTYtXFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTc1LVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6NzY6c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHZpcnR1YWxfbmNpX29wcyA9IHtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjc3OlxcdC5vcGVuID0gdmlydHVhbF9uY2lfb3BlbixcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjc4OlxcdC5jbG9zZSA9IHZpcnR1YWxfbmNpX2Nsb3NlLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6Nzk6XFx0LnNlbmQgPSB2aXJ0dWFsX25jaV9zZW5kXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04MC19O1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtODEtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo4MjpzdGF0aWMgc3NpemVfdCB2aXJ0dWFsX25jaWRldl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtODMtXFx0XFx0XFx0XFx0ICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04NC17XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo4NTpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtODYtXFx0c2l6ZV90IGFjdHVhbF9sZW47XFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTExMi1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjExMzpzdGF0aWMgc3NpemVfdCB2aXJ0dWFsX25jaWRldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTExNC1cXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTE2LXtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjExNzpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTE4LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTEzMi1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjEzMzpzdGF0aWMgaW50IHZpcnR1YWxfbmNpZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzQte1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTM1LVxcdGludCByZXQgPSAwO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTM2OlxcdHN0cnVjdCB2aXJ0dWFsX25jaV9kZXYgKnZkZXY7XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzctXFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE0MC1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE0MTpcXHR2ZGV2LVxcdTAwM2VuZGV2ID0gbmNpX2FsbG9jYXRlX2RldmljZShcXHUwMDI2dmlydHVhbF9uY2lfb3BzLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTQyLVxcdFxcdFZJUlRVQUxfTkZDX1BST1RPQ09MUywgMCwgMCk7XFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2My1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE2NDpzdGF0aWMgaW50IHZpcnR1YWxfbmNpZGV2X2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTY1LXtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE2NjpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTY3LVxcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzUtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxNzY6c3RhdGljIGxvbmcgdmlydHVhbF9uY2lkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzctXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTc4LXtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE3OTpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTgwLVxcdGNvbnN0IHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2ID0gdmRldi1cXHUwMDNlbmRldi1cXHUwMDNlbmZjX2RldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkxLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHZpcnR1YWxfbmNpZGV2X2ZvcHMgPSB7XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xOTMtXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTQ6XFx0LnJlYWQgPSB2aXJ0dWFsX25jaWRldl9yZWFkLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk1OlxcdC53cml0ZSA9IHZpcnR1YWxfbmNpZGV2X3dyaXRlLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk2OlxcdC5vcGVuID0gdmlydHVhbF9uY2lkZXZfb3BlbixcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NzpcXHQucmVsZWFzZSA9IHZpcnR1YWxfbmNpZGV2X2Nsb3NlLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk4OlxcdC51bmxvY2tlZF9pb2N0bCA9IHZpcnR1YWxfbmNpZGV2X2lvY3RsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xOTktfTtcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM9MjAxPXN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSBtaXNjZGV2ID0ge1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMjAyLVxcdC5taW5vciA9IE1JU0NfRFlOQU1JQ19NSU5PUixcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjIwMzpcXHQubmFtZSA9IFxcXCJ2aXJ0dWFsX25jaVxcXCIsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoyMDQ6XFx0LmZvcHMgPSBcXHUwMDI2dmlydHVhbF9uY2lkZXZfZm9wcyxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwNS1cXHQubW9kZSA9IDA2MDAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjM5LjczOTIwOTc1MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Nzk5OTIyMTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIE5DSSBDb3JlIEluaXQgUmVzcG9uc2UgUGFja2V0IFBhcnNpbmcqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIHBsYW4uIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBib3VuZHMgY2hlY2tpbmcgaW4gdGhlIE5DSSBjb3JlIGluaXQgcmVzcG9uc2UgcGFja2V0IHBhcnNpbmcgY29kZS4gSXQgc2VlbXMgbGlrZSBpdCdzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSB2aXJ0dWFsIE5DSSBkZXZpY2UsIGAvZGV2L3ZpcnR1YWxfbmNpYCwgd2hpY2ggaXMgY3JlYXRlZCBieSBgTkZDX1ZJUlRVQUxfTkNJYCwgaXMgdGhlIGVudHJ5IHBvaW50LiBTeXprYWxsZXIgY2FuIGludGVyYWN0IHdpdGggaXQsIHdyaXRlIGRhdGEsIGFuZCB0cmlnZ2VyIGBuY2lfcmVjdl9mcmFtZWAuIFRoYXQncyBwcmVjaXNlbHkgaG93IHRoZSBOQ0kgdGVzdHMgYXJlIHN0cnVjdHVyZWQuIFNvLCBlbmFibGluZyBgTkZDX1ZJUlRVQUxfTkNJYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGlzIHZpcnR1YWwgZGV2aWNlIGRpcmVjdGx5IGZlZWRzIGludG8gdGhlIHJlbGV2YW50IHBhcnNpbmcgbG9naWMuXG5cbkkgaW5pdGlhbGx5IHRob3VnaHQgdGhhdCBgTkZDX1ZJUlRVQUxfTkNJYCBtaWdodCBiZSBzdWZmaWNpZW50LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgZGVwZW5kZW5jaWVzIHJpZ2h0LiBJdCBkZWZpbml0ZWx5IHJlbGllcyBvbiBgTkZDX05DSWAuIEl0IGxvb2tzIGxpa2UgYE5GQ19OQ0lgIGluIHR1cm4gZGVwZW5kcyBvbiBgTkZDYCwgc28gSSdsbCBuZWVkIGFsbCB0aHJlZSBjb25maWdzLlxuXG5NeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdDsgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgY2FuIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyB0aGF0IHRoZSBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgYXJlIHJlYWNoYWJsZS4gVGhlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAsIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldGAuIFRoZXNlIGFyZSBhbGwgcGFydCBvZiB0aGUgYm91bmRzIGNoZWNraW5nIGxvZ2ljLiBUaGlzIGNvZGUgaGFuZGxlcyBOQ0kgaW5pdGlhbGl6YXRpb24gcmVzcG9uc2VzLCBhbmQgdGhlIHZpcnR1YWwgZGV2aWNlIGFsbG93cyB1cyB0byBpbmplY3QgbWFsaWNpb3VzL3VuZXhwZWN0ZWQgcmVzcG9uc2VzLiBUaGUgZ29hbCBpcyB0byBlbnN1cmUgdGhlIG5ldyBjaGVja3Mgd29yayBjb3JyZWN0bHkgd2l0aG91dCBicmVha2luZyBsZWdpdGltYXRlIHBhY2tldHMuXG5cbkkndmUgZG91YmxlLWNoZWNrZWQgdGhlIGZ1bmN0aW9uIG5hbWVzIGFuZCBlbnN1cmVkIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgb3IgZnVuY3Rpb25zIGluIHNjb3BlLiBUaGlzIHNob3VsZCBwcm92aWRlIHN1ZmZpY2llbnQgY292ZXJhZ2UgdG8gZGV0ZWN0IGFueSB2dWxuZXJhYmlsaXRpZXMuIE5vdywgaXQncyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3MDIsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjQ3LjUzOTEzNDQ2MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODY5MzY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MlwiLFxuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXQgcGFyc2luZy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIE5DSSBkZXZpY2VzLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19WSVJUVUFMX05DSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MVwiLFxuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyXCIsXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgTkNJIGRldmljZXMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd2l0aG91dCBicmVha2luZyB2YWxpZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 17:33:53 +0000 UTC FinishedAt: 2026-06-26 17:42:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a986fde914d88af47eb78fd29c5d1af7952c3500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a986fde914d88af47eb78fd29c5d1af7952c3500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "6528d41c-012e-441b-bb6e-662a556f965d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nci_core_init_rsp_packet_v1", "nci_core_init_rsp_packet_v2", "nci_core_init_rsp_packet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "65008893-2498-4786-b913-f2c474a7b34a" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MSYjMzQ7LAogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjImIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIE5DSSBjb3JlIGluaXQgcmVzcG9uc2UgcGFja2V0IHBhcnNpbmcuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSB2aWEgdmlydHVhbCBOQ0kgZGV2aWNlcywgc28gaXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyBjaGVja3MgY29ycmVjdGx5IHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB3aXRob3V0IGJyZWFraW5nIHZhbGlkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNTE2YzgxYjc0NDNjMGE0ODk0MGNlZmFmMWI2ODFlNjhjMTUyMjIxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMTc6NDE6NTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvcnNwLmMgYi9uZXQvbmZjL25jaS9yc3AuY1xuaW5kZXggOWVlYjg2MjgyNWM1ZmUuLjZiMmZhNmJkYmQxNGJkIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9uY2kvcnNwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbmNpL3JzcC5jXG5AQCAtNTAsMTEgJiM0Mzs1MCwyNSBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8yICpyc3BfMjtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3BfMSkpXG4mIzQzO1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4mIzQzO1xuIFx0cHJfZGVidWcoXCYjMzQ7c3RhdHVzIDB4JXhcXG5cJiMzNDssIHJzcF8xLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwXzEtXHUwMDNlc3RhdHVzICE9IE5DSV9TVEFUVVNfT0spXG4gXHRcdHJldHVybiByc3BfMS1cdTAwM2VzdGF0dXM7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tdIGFuZCB0aGUgdHJhaWxpbmcgbmNpX2NvcmVfaW5pdF9yc3BfMiBhcmVcbiYjNDM7XHQgKiBhZGRyZXNzZWQgdXNpbmcgdGhlIG9uLXdpcmUgKHVuY2xhbXBlZCkgaW50ZXJmYWNlIGNvdW50LCBzbyB0aGVcbiYjNDM7XHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSBhbnkgb2YgaXQgaXMgcGFyc2VkIG9yXG4mIzQzO1x0ICogc3RvcmVkIGludG8gQG5kZXYgLSBvdGhlcndpc2UgYSB0cnVuY2F0ZWQgcmVzcG9uc2Ugd291bGQgbGVhdmVcbiYjNDM7XHQgKiBuZGV2LVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyBob2xkaW5nIHRoZSB1bmNsYW1wZWQgY291bnQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqcnNwXzEpICYjNDM7XG4mIzQzO1x0ICAgIHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyAmIzQzOyBzaXplb2YoKnJzcF8yKSlcbiYjNDM7XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiYjNDM7XG4gXHRuZGV2LVx1MDAzZW5mY2NfZmVhdHVyZXMgPSBfX2xlMzJfdG9fY3B1KHJzcF8xLVx1MDAzZW5mY2NfZmVhdHVyZXMpO1xuIFx0bmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgPSByc3BfMS1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4gXG5AQCAtODgsOSAmIzQzOzEwMiwxMyBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIHtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF9uY2lfdmVyMiAqcnNwID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHU4ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlID0gcnNwLVx1MDAzZXN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzO1xuJiM0MztcdGNvbnN0IHU4ICplbmQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBza2ItXHUwMDNlbGVuO1xuIFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XG4gXHR1OCByZl9leHRlbnNpb25fY250ID0gMDtcbiBcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3ApKVxuJiM0MztcdFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xuJiM0MztcbiBcdHByX2RlYnVnKFwmIzM0O3N0YXR1cyAleFxcblwmIzM0OywgcnNwLVx1MDAzZXN0YXR1cyk7XG4gXG4gXHRpZiAocnNwLVx1MDAzZXN0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKVxuQEAgLTEwNCwxMCAmIzQzOzEyMiwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG4gXG4gXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcdTAwM2MgbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcbi1cdFx0bmRldi1cdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4JiM0MzsmIzQzO10gPSAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHQvKiBvbmUgaW50ZXJmYWNlIGJ5dGUgJiM0Mzsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xuJiM0MztcdFx0aWYgKGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgXHUwMDNjIDIpXG4mIzQzO1x0XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiYjNDM7XHRcdG5kZXYtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCYjNDM7JiM0MztdID1cbiYjNDM7XHRcdFx0KnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UmIzQzOyYjNDM7O1xuIFxuLVx0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzICovXG4mIzQzO1x0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cbiBcdFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChyZl9leHRlbnNpb25fY250IFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxuJiM0MztcdFx0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4gXHRcdHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgJiM0Mzs9IHJmX2V4dGVuc2lvbl9jbnQ7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxJiMzNDssCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MiYjMzQ7LAogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXQgcGFyc2luZy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIE5DSSBkZXZpY2VzLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDUxNmM4MWI3NDQzYzBhNDg5NDBjZWZhZjFiNjgxZTY4YzE1MjIyMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDI2IDE3OjQxOjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9uY2kvcnNwLmMgYi9uZXQvbmZjL25jaS9yc3AuYwppbmRleCA5ZWViODYyODI1YzVmZS4uNmIyZmE2YmRiZDE0YmQgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbmNpL3JzcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbmNpL3JzcC5jCkBAIC01MCwxMSAmIzQzOzUwLDI1IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsCiAJY29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItJmd0O2RhdGE7CiAJY29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzIgKnJzcF8yOwogCiYjNDM7CWlmIChza2ItJmd0O2xlbiAmbHQ7IHNpemVvZigqcnNwXzEpKQomIzQzOwkJcmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SOwomIzQzOwogCXByX2RlYnVnKCYjMzQ7c3RhdHVzIDB4JXhcbiYjMzQ7LCByc3BfMS0mZ3Q7c3RhdHVzKTsKIAogCWlmIChyc3BfMS0mZ3Q7c3RhdHVzICE9IE5DSV9TVEFUVVNfT0spCiAJCXJldHVybiByc3BfMS0mZ3Q7c3RhdHVzOwogCiYjNDM7CS8qCiYjNDM7CSAqIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW10gYW5kIHRoZSB0cmFpbGluZyBuY2lfY29yZV9pbml0X3JzcF8yIGFyZQomIzQzOwkgKiBhZGRyZXNzZWQgdXNpbmcgdGhlIG9uLXdpcmUgKHVuY2xhbXBlZCkgaW50ZXJmYWNlIGNvdW50LCBzbyB0aGUKJiM0MzsJICogcmVzcG9uc2UgbXVzdCBiZSBsb25nIGVub3VnaCBmb3IgYm90aCBiZWZvcmUgYW55IG9mIGl0IGlzIHBhcnNlZCBvcgomIzQzOwkgKiBzdG9yZWQgaW50byBAbmRldiAtIG90aGVyd2lzZSBhIHRydW5jYXRlZCByZXNwb25zZSB3b3VsZCBsZWF2ZQomIzQzOwkgKiBuZGV2LSZndDtudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgaG9sZGluZyB0aGUgdW5jbGFtcGVkIGNvdW50LgomIzQzOwkgKi8KJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgc2l6ZW9mKCpyc3BfMSkgJiM0MzsKJiM0MzsJICAgIHJzcF8xLSZndDtudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgJiM0Mzsgc2l6ZW9mKCpyc3BfMikpCiYjNDM7CQlyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7CiYjNDM7CiAJbmRldi0mZ3Q7bmZjY19mZWF0dXJlcyA9IF9fbGUzMl90b19jcHUocnNwXzEtJmd0O25mY2NfZmVhdHVyZXMpOwogCW5kZXYtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyA9IHJzcF8xLSZndDtudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7CiAKQEAgLTg4LDkgJiM0MzsxMDIsMTMgQEAgc3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MihzdHJ1Y3QgbmNpX2RldiAqbmRldiwKIHsKIAljb25zdCBzdHJ1Y3QgbmNpX2NvcmVfaW5pdF9yc3BfbmNpX3ZlcjIgKnJzcCA9ICh2b2lkICopc2tiLSZndDtkYXRhOwogCWNvbnN0IHU4ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlID0gcnNwLSZndDtzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlczsKJiM0MzsJY29uc3QgdTggKmVuZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKIAl1OCByZl9pbnRlcmZhY2VfaWR4ID0gMDsKIAl1OCByZl9leHRlbnNpb25fY250ID0gMDsKIAomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBzaXplb2YoKnJzcCkpCiYjNDM7CQlyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7CiYjNDM7CiAJcHJfZGVidWcoJiMzNDtzdGF0dXMgJXhcbiYjMzQ7LCByc3AtJmd0O3N0YXR1cyk7CiAKIAlpZiAocnNwLSZndDtzdGF0dXMgIT0gTkNJX1NUQVRVU19PSykKQEAgLTEwNCwxMCAmIzQzOzEyMiwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LAogCQkgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7CiAKIAl3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCAmbHQ7IG5kZXYtJmd0O251bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcykgewotCQluZGV2LSZndDtzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4JiM0MzsmIzQzO10gPSAqc3VwcG9ydGVkX3JmX2ludGVyZmFjZSYjNDM7JiM0Mzs7CiYjNDM7CQkvKiBvbmUgaW50ZXJmYWNlIGJ5dGUgJiM0Mzsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqLwomIzQzOwkJaWYgKGVuZCAtIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgJmx0OyAyKQomIzQzOwkJCXJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjsKJiM0MzsJCW5kZXYtJmd0O3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW3JmX2ludGVyZmFjZV9pZHgmIzQzOyYjNDM7XSA9CiYjNDM7CQkJKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UmIzQzOyYjNDM7OwogCi0JCS8qIHNraXAgcmYgZXh0ZW5zaW9uIHBhcmFtZXRlcnMgKi8KJiM0MzsJCS8qIHNraXAgcmYgZXh0ZW5zaW9uIHBhcmFtZXRlcnMsIGJvdW5kZWQgYnkgdGhlIHBhY2tldCAqLwogCQlyZl9leHRlbnNpb25fY250ID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UmIzQzOyYjNDM7OwomIzQzOwkJaWYgKHJmX2V4dGVuc2lvbl9jbnQgJmd0OyBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKQomIzQzOwkJCXJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjsKIAkJc3VwcG9ydGVkX3JmX2ludGVyZmFjZSAmIzQzOz0gcmZfZXh0ZW5zaW9uX2NudDsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwNAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5GQyBOQ0kgQ29yZSBJbml0IFJlc3BvbnNlIFBhY2tldCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYG5ldC9uZmMvbmNpL3JzcC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpdCBhZGRzIHNvbWUgbGVuZ3RoIHZhbGlkYXRpb24gdG8gYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAgYW5kIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLiBUaGVzZSBmdW5jdGlvbnMgaGFuZGxlIE5DSSBjb3JlIGluaXQgcmVzcG9uc2UgcGFja2V0cywgd2hpY2ggaXMgYSBwcmV0dHkgY3J1Y2lhbCBwYXJ0IG9mIHRoZSBORkMgc3RhY2sgaW5pdGlhbGl6YXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBnaXZlbiB0aGF0IHRoaXMgaXMgZGlyZWN0bHkgaGFuZGxpbmcgcGFja2V0IHBhcnNpbmcsIHRoaXMgaXMgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLiBBbnkgaW5wdXQgdmFsaWRhdGlvbiBpc3N1ZXMgaGVyZSBjb3VsZCBiZSBleHBsb2l0YWJsZS4KClNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZWxldmFudCB0byBORkMgYW5kIE5DSSB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aGUgY29kZWJhc2UgYW5kIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IGNvbnRyb2wgY29tcGlsYXRpb24gb2YgYG5ldC9uZmMvbmNpL3JzcC5jYCwgYW5kIGJ5IGV4dGVuc2lvbiwgdGhlIGJlaGF2aW9yIG9mIHRoZXNlIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBkZWZpbmVzIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucyB0aGF0IGVuYWJsZSB0aGlzIGNvZGUgcGF0aCBzbyBJIGNhbiBlbnN1cmUgdGhlIGZ1enppbmcgdGFyZ2V0cyB0aGUgY29ycmVjdCBidWlsZCB2YXJpYW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9yc3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9yc3AuYz0yOD1zdGF0aWMgdm9pZCBuY2lfY29yZV9yZXNldF9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTQ2LVxubmV0L25mYy9uY2kvcnNwLmM6NDc6c3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcbm5ldC9uZmMvbmNpL3JzcC5jLTQ4LVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL25jaS9yc3AuYz0xNDg9c3RhdGljIHZvaWQgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTE1Mi1cdGlmICghKG5kZXYtXHUwMDNlbmNpX3ZlciBcdTAwMjYgTkNJX1ZFUl8yX01BU0spKVxubmV0L25mYy9uY2kvcnNwLmM6MTUzOlx0XHRzdGF0dXMgPSBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEobmRldiwgc2tiKTtcbm5ldC9uZmMvbmNpL3JzcC5jLTE1NC1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjgwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgTWFrZWZpbGUgZm9yIGBuZXQvbmZjL25jaS9gOgoKKipBbmFseXppbmcgdGhlIGBuZXQvbmZjL25jaS9gIE1ha2VmaWxlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L25mYy9uY2kvYCBkaXJlY3RvcnkgYW5kIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBNYWtlZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBORkMgTkNJIGNvbXBvbmVudC4gTXkgcHJpbWFyeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHJlbGV2YW50IHJ1bGVzLCB2YXJpYWJsZXMsIGFuZCBpbmNsdWRlIHBhdGhzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaG93IHRoZSBOQ0kgZHJpdmVyIGlzIGJ1aWx0LCB3aGF0IGhlYWRlciBmaWxlcyBpdCYjMzk7cyBpbmNsdWRpbmcsIHdoaWNoIHNvdXJjZSBmaWxlcyBhcmUgaW52b2x2ZWQsIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29tcGlsYXRpb24gZmxhZ3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLCBhbmQgaG93IGl0IGxpbmtzIHdpdGggb3RoZXIgbW9kdWxlcy4gQXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIHZlcnNpb25zPyBBbnkgY3Jvc3MtY29tcGlsYXRpb24gc2V0dGluZ3M/IEFueSBjdXN0b20gYnVpbGQgdGFyZ2V0cyBvciBpbnRlcm1lZGlhdGUgb2JqZWN0IGRpcmVjdG9yaWVzPyBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIHJlYWwgY29tcGxleGl0eSBsaWVzLiBJIGV4cGVjdCB0aGlzIHNob3VsZCBiZSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgeW91IG5ldmVyIGtub3cgdW50aWwgeW91IGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnNwLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9NYWtlZmlsZT02PW9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpLm9cbm5ldC9uZmMvbmNpL01ha2VmaWxlLTctXG5uZXQvbmZjL25jaS9NYWtlZmlsZTo4Om5jaS1vYmpzIDo9IGNvcmUubyBkYXRhLm8gbGliLm8gbnRmLm8gcnNwLm8gaGNpLm9cbm5ldC9uZmMvbmNpL01ha2VmaWxlLTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgRXhwbG9yYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdCBpcyBgQ09ORklHX05GQ19OQ0lgLiBSaWdodCwgSSBrbm93IHRoYXQgb25lLiBCdXQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXBseSBpbnRvIHRoaXMgc3BlY2lmaWMgc2V0dGluZywgSSBuZWVkIHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZS4gSSBzaG91bGQgcXVpY2tseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gQXJlIHRoZXJlIGFueSBvdGhlciBORkMgc2V0dGluZ3MgZGVmaW5lZD8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcz8gTGV0JiMzOTtzIGNoZWNrLiBHb3R0YSBiZSB0aG9yb3VnaC4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gZ2V0IHR1bm5lbCB2aXNpb24gb24ganVzdCBvbmUgY29uZmlnIHdoZW4gdGhlcmUgbWlnaHQgYmUgc29tZXRoaW5nIGltcG9ydGFudCBjb25uZWN0ZWQgdG8gaXQsIG9yIHNvbWV0aGluZyBlbHNlIHJlbGF0ZWQgdG8gTkZDIHRoYXQgbmVlZHMgY29uc2lkZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19ORkNfTkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBORkMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LiBNeSBpbml0aWFsIGZvY3VzIGlzIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIE5GQyBzdWJzeXN0ZW0gYXJlIHByb2JhYmx5IGRlZmluZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGtub2JzLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0cy4gVGhlIHNwZWNpZmljcyBoZXJlIHdpbGwgZHJpdmUgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgaG93IHRoZSBkcml2ZXIgaXMgYnVpbHQsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSBmaW5kaW5nIGEgbGF5ZXJlZCBzdHJ1Y3R1cmUsIHNvIEkgY2FuIHNlZSB3aGF0IGlzIGNyaXRpY2FsLCBhbmQgd2hhdCBpcyBvcHRpb25hbC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5GQyBhbmQgc3BlY2lmaWNhbGx5IHRoZSBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgd2l0aGluIHRoaXMgcHJvamVjdC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBmb3IgYSBkaXJlY3Qgc2VhcmNoLiBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIG15IGtub3dsZWRnZSBvZiB0aGUgYnVpbGQgc3lzdGVtIGFuZCB0aGUgZXhwZWN0ZWQgbmFtaW5nIGNvbnZlbnRpb25zLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGVudGlyZSBwcm9qZWN0IHRyZWUgZm9yIHRoZSBzdHJpbmcgYGNvbmZpZyBORkNfTkNJYC4gVGhpcyBzaG91bGQsIGluIHRoZW9yeSwgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGRlZmNvbmZpZyBmcmFnbWVudHMsIG9yIEtjb25maWcgZW50cmllcyB3aGVyZSB0aGVzZSBvcHRpb25zIGFyZSBkZWZpbmVkIG9yIHVzZWQuIEhvcGVmdWxseSB0aGlzIHRhcmdldGVkIHNlYXJjaCB3aWxsIGJlIGVmZmljaWVudCwgYXZvaWRpbmcgdGhlIG5lZWQgdG8gbWFudWFsbHkgY3Jhd2wgdGhlIGVudGlyZSBkaXJlY3Rvcnkgc3RydWN0dXJlLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGJlIGFibGUgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgdXNhZ2Ugb2YgdGhpcyBzcGVjaWZpYyBORkMgY29udHJvbGxlciBpbnRlcmZhY2UuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX05DSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL25jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OQ0lcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXG5uZXQvbmZjL25jaS9LY29uZmlnLTE0LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxubmV0L25mYy9uY2kvS2NvbmZpZzoyNDpjb25maWcgTkZDX05DSV9VQVJUXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBUVFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUyNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgTkZDIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSB3YXMgbG9va2luZyBhdCBgbmV0L25mYy9uY2kvS2NvbmZpZ2AgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgSSByZWFsaXplZCBhIHN1YnRsZSBidXQgY3JpdGljYWwgZGlmZmVyZW5jZS4gSSBpbml0aWFsbHkgYXNzdW1lZCBpdCB3YXMgZ29pbmcgdG8gYmUgYENPTkZJR19ORkNfTkNJYCBiYXNlZCBvbiB0aGUgZmlsZSBwYXRoLCBidXQgaXQmIzM5O3MgYWN0dWFsbHkgYGNvbmZpZyBORkNfTkNJYCBpbiB0aGUgZmlsZS4gUmlnaHQsIHRoYXQgdW5kZXJzY29yZXMgdGhlIGltcG9ydGFuY2Ugb2YgYmVpbmcgcHJlY2lzZSB3aXRoIHRoZSBzeW50YXggaW4gdGhlc2UgS2NvbmZpZyBmaWxlcy4gVGhlIGFjdHVhbCBjb25maWd1cmF0aW9uIHN5bWJvbCwgdGhlbiwgaXMgYE5GQ19OQ0lgLgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBhbGwgdGhlIGJhc2UgcmVxdWlyZW1lbnRzLiBJIHNob3VsZCBjaGVjayBpZiBgTkZDYCBpcyBhbHNvIGEgcmVxdWlyZWQgc3ltYm9sIGluIHRoaXMgc3BhY2UuIEFoLCB5ZXMsIGxvb2tpbmcgYXQgdGhlIGNvZGUgSSBjYW4gc2VlIHRoYXQgaXQgaXMsIHNvIGBORkNgIGlzIGVzc2VudGlhbC4KCkkgc2hvdWxkIHJ1biB0aHJvdWdoIHRoZSBgbmV0L25mYy9uY2kvS2NvbmZpZ2AgZmlsZSBhZ2FpbiBhbmQganVzdCB2ZXJpZnkgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHdoaWxlIEkmIzM5O20gYXQgaXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgZWxzZSByZWxhdGVkIHRvIGBORkNfTkNJYC4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeSB3aGVuIGRlYWxpbmcgd2l0aCB0aGVzZSBrZXJuZWwgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL25jaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORkNfTkNJXG4gICAzOlx0XHRkZXBlbmRzIG9uIE5GQ1xuICAgNDpcdFx0dHJpc3RhdGUgXCYjMzQ7TkNJIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiAgIDU6XHRcdGRlZmF1bHQgblxuICAgNjpcdFx0aGVscFxuICAgNzpcdFx0ICBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgaXMgYSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJldHdlZW5cbiAgIDg6XHRcdCAgYW4gTkZDIENvbnRyb2xsZXIgKE5GQ0MpIGFuZCBhIERldmljZSBIb3N0IChESCkuXG4gICA5Olx0XG4gIDEwOlx0XHQgIFNheSBZIGhlcmUgdG8gY29tcGlsZSBOQ0kgc3VwcG9ydCBpbnRvIHRoZSBrZXJuZWwgb3Igc2F5IE0gdG9cbiAgMTE6XHRcdCAgY29tcGlsZSBpdCBhcyBtb2R1bGUgKG5jaSkuXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIE5GQ19OQ0lfU1BJXG4gIDE0Olx0XHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFNQSVxuICAxNTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7TkNJIG92ZXIgU1BJIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiAgMTc6XHRcdGRlZmF1bHQgblxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgaXMgYSBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJldHdlZW5cbiAgMjA6XHRcdCAgYW4gTkZDIENvbnRyb2xsZXIgKE5GQ0MpIGFuZCBhIERldmljZSBIb3N0IChESCkuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIFNheSB5ZXMgaWYgeW91IHVzZSBhbiBOQ0kgZHJpdmVyIHRoYXQgcmVxdWlyZXMgU1BJIGxpbmsgbGF5ZXIuXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE5GQ19OQ0lfVUFSVFxuICAyNTpcdFx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBUVFlcbiAgMjY6XHRcdHRyaXN0YXRlIFwmIzM0O05DSSBvdmVyIFVBUlQgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuICAyNzpcdFx0ZGVmYXVsdCBuXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFNheSB5ZXMgaWYgeW91IHVzZSBhbiBOQ0kgZHJpdmVyIHRoYXQgcmVxdWlyZXMgVUFSVCBsaW5rIGxheWVyLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBORkMgSW5pdGlhbGl6YXRpb24gUmVzcG9uc2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9ucywgYE5GQ2AgYW5kIGBORkNfTkNJYC4gVGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIGRpc3NlY3QgaGVyZSBzZWVtIHRvIGJlIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgLCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYCwgYW5kIHBvdGVudGlhbGx5IHRoZSBiYXNlIGZ1bmN0aW9uLCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0YC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFllcywgaXQgaXMuIEFscmlnaHQsIHRoYXQgbWVhbnMgbXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldGAgZGVmaW5pdGlvbiwgYW5kIEkgbmVlZCB0byBjaGVjayBpdCBpbiBgbmV0L25mYy9uY2kvcnNwLmNgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiBob3cgdGhlc2UgaW5pdGlhbGl6YXRpb24gcmVzcG9uc2VzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoaW4gdGhlIE5DSSBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL3JzcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL3JzcC5jPTI4PXN0YXRpYyB2b2lkIG5jaV9jb3JlX3Jlc2V0X3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4tLVxubmV0L25mYy9uY2kvcnNwLmMtNDYtXG5uZXQvbmZjL25jaS9yc3AuYzo0NzpzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxubmV0L25mYy9uY2kvcnNwLmMtNDgtXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTk5LVxubmV0L25mYy9uY2kvcnNwLmM6MTAwOnN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG5uZXQvbmZjL25jaS9yc3AuYy0xMDEtXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTE0Ny1cbm5ldC9uZmMvbmNpL3JzcC5jOjE0ODpzdGF0aWMgdm9pZCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL25jaS9yc3AuYy0xNDkte1xuLS1cbm5ldC9uZmMvbmNpL3JzcC5jLTE1Mi1cdGlmICghKG5kZXYtXHUwMDNlbmNpX3ZlciBcdTAwMjYgTkNJX1ZFUl8yX01BU0spKVxubmV0L25mYy9uY2kvcnNwLmM6MTUzOlx0XHRzdGF0dXMgPSBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEobmRldiwgc2tiKTtcbm5ldC9uZmMvbmNpL3JzcC5jLTE1NC1cdGVsc2Vcbm5ldC9uZmMvbmNpL3JzcC5jOjE1NTpcdFx0c3RhdHVzID0gbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKG5kZXYsIHNrYik7XG5uZXQvbmZjL25jaS9yc3AuYy0xNTYtXG4tLVxubmV0L25mYy9uY2kvcnNwLmM9MzY5PXZvaWQgbmNpX3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9uY2kvcnNwLmMtMzk5LVx0Y2FzZSBOQ0lfT1BfQ09SRV9JTklUX1JTUDpcbm5ldC9uZmMvbmNpL3JzcC5jOjQwMDpcdFx0bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0KG5kZXYsIHNrYik7XG5uZXQvbmZjL25jaS9yc3AuYy00MDEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjU2CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcG9pbnRpbmcgbWUgdG93YXJkcyBzb21lIGludGVyZXN0aW5nIGFyZWFzLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGJvdW5kcyBjaGVja2luZyB0byBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxYCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MmAsIHdoaWNoIGFyZSBjYWxsZWQgZnJvbSBgbmNpX3JzcF9wYWNrZXRgLiBHaXZlbiB0aGF0IHRoZXkmIzM5O3JlIHRvdWNoaW5nIHRoZXNlIGZ1bmN0aW9ucywgdGhhdCBzY3JlYW1zIGZ1enppbmcgdGFyZ2V0IHRvIG1lLiBNZW1vcnkgY29ycnVwdGlvbiBpcyBhIGxpa2VseSBhdmVudWUgb2YgYXR0YWNrIGdpdmVuIHRoZSBjb250ZXh0LgoKSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aG9zZSB0aHJlZSBzeW1ib2xzOiBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxYCwgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MmAsIGFuZCB0aGUgcGFyZW50LCBgbmNpX3JzcF9wYWNrZXRgLgoKTm93LCB0aGUgY29uZmlndXJhdGlvbi4uLiB0aGV5JiMzOTtyZSBtZW50aW9uaW5nIGBORkNfTkNJYC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLiBJcyBqdXN0IGBORkNfTkNJYCBlbm91Z2ggdG8gZ2V0IHRoZXNlIGZ1bmN0aW9ucyBidWlsdCBhbmQgcmVhY2hhYmxlPyBPciBkbyBJIG5lZWQgdG8gZW5hYmxlIGEgbW9yZSBzcGVjaWZpYyBOQ0kgdmFyaWFudCBsaWtlIGBORkNfTkNJX1NQSWAgb3IgYE5GQ19OQ0lfVUFSVGA/IE1heWJlIGV2ZW4gYE5GQ19WSVJUVUFMX05DSWA/IEkmIzM5O2QgYmV0dGVyIGNoZWNrIGZvciB0aGF0IHZpcnR1YWwgZHJpdmVyOyB2aXJ0dWFsIGRyaXZlcnMgY2FuIHNvbWV0aW1lcyBleHBvc2UgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBjb21wbGV0ZWx5IHRvIGVmZmVjdGl2ZWx5IHRhcmdldCB0aGUgZnV6emluZyBjYW1wYWlnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODc5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNTEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWc6NTM6XHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmZjL0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIE5GQ19OQ0lcbmRyaXZlcnMvbmZjL0tjb25maWctNTUtXHRoZWxwXG5kcml2ZXJzL25mYy9LY29uZmlnOjU2Olx0ICBOQ0kgdmlydHVhbCBkZXZpY2Ugc2ltdWxhdGVzIGEgTkNJIGRldmljZSB0byB0aGUgdXNlci5cbmRyaXZlcnMvbmZjL0tjb25maWc6NTc6XHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXG5kcml2ZXJzL25mYy9LY29uZmlnOjU4Olx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHZpcnR1YWwgTkNJIGRldmljZSBhbmRcbmRyaXZlcnMvbmZjL0tjb25maWctNTktXHQgIG1vZHVsZS5cbi0tXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXHQmIzQzOz0gc3QyMW5mY2EvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTkZDX1NUX05DSSlcdCYjNDM7PSBzdC1uY2kvXG5kcml2ZXJzL25mYy9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfTkZDX05YUF9OQ0kpXHQmIzQzOz0gbnhwLW5jaS9cbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19ORkNfUzNGV1JONSlcdCYjNDM7PSBzM2Z3cm41L1xuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX05GQ19TVDk1SEYpXHQmIzQzOz0gc3Q5NWhmL1xuZHJpdmVycy9uZmMvTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX05GQ19WSVJUVUFMX05DSSlcdCYjNDM7PSB2aXJ0dWFsX25jaWRldi5vXG4tLVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWc9Mj1jb25maWcgTkZDX0ZEUFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIEZEUCBORkMgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBORkNfTkNJXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy01LVx0c2VsZWN0IENSQ19DQ0lUVFxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTgtXHQgIEludGVsIEZpZWxkcyBQZWFrIE5GQyBjb250cm9sbGVyIGNvcmUgZHJpdmVyLlxuZHJpdmVycy9uZmMvZmRwL0tjb25maWc6OTpcdCAgVGhpcyBpcyBhIGRyaXZlciBiYXNlZCBvbiB0aGUgTkNJIE5GQyBrZXJuZWwgbGF5ZXJzLlxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMTAtXG4tLVxuZHJpdmVycy9uZmMvZmRwL01ha2VmaWxlLTItI1xuZHJpdmVycy9uZmMvZmRwL01ha2VmaWxlOjM6IyBNYWtlZmlsZSBmb3IgRkRQIE5DSSBiYXNlZCBORkMgZHJpdmVyXG5kcml2ZXJzL25mYy9mZHAvTWFrZWZpbGUtNC0jXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIxLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjIyOiNkZWZpbmUgTkNJX0dFVF9WRVJTSU9OX1RJTUVPVVRcdFx0XHQ4MDAwXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MjM6I2RlZmluZSBOQ0lfUEFUQ0hfUkVRVUVTVF9USU1FT1VUXHRcdDgwMDBcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yNC0jZGVmaW5lIEZEUF9QQVRDSF9DT05OX0RFU1RcdFx0XHQweEMyXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTI2LVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjI3OiNkZWZpbmUgTkNJX1BBVENIX1RZUEVfUkFNXHRcdFx0MHgwMFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjI4OiNkZWZpbmUgTkNJX1BBVENIX1RZUEVfT1RQXHRcdFx0MHgwMVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjI5OiNkZWZpbmUgTkNJX1BBVENIX1RZUEVfRU9UXHRcdFx0MHhGRlxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTMwLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjMxOiNkZWZpbmUgTkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OXHRcdDB4QTBcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozMjojZGVmaW5lIE5DSV9QQVJBTV9JRF9GV19PVFBfVkVSU0lPTlx0XHQweEExXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzM6I2RlZmluZSBOQ0lfUEFSQU1fSURfT1RQX0xJTUlURURfVkVSU0lPTlx0MHhDNVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjM0OiNkZWZpbmUgTkNJX1BBUkFNX0lEX0tFWV9JTkRFWF9JRFx0XHQweEM2XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMzUtXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzY6I2RlZmluZSBOQ0lfR0lEX1BST1BcdFx0XHRcdDB4MEZcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozNzojZGVmaW5lIE5DSV9PUF9QUk9QX1BBVENIX09JRFx0XHRcdDB4MDhcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozODojZGVmaW5lIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSURcdFx0MHgyM1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM5LVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz02OD1zdGF0aWMgY29uc3QgdTggbmNpX2NvcmVfZ2V0X2NvbmZpZ19vdHBfcmFtX3ZlcnNpb25bNV0gPSB7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjktXHQweDA0LFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjcwOlx0TkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OLFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjcxOlx0TkNJX1BBUkFNX0lEX0ZXX09UUF9WRVJTSU9OLFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjcyOlx0TkNJX1BBUkFNX0lEX09UUF9MSU1JVEVEX1ZFUlNJT04sXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NzM6XHROQ0lfUEFSQU1fSURfS0VZX0lOREVYX0lEXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzQtfTtcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTAxPXN0YXRpYyBpbmxpbmUgaW50IGZkcF9uY2lfZ2V0X3ZlcnNpb25zKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTEwMi17XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTAzOlx0cmV0dXJuIG5jaV9jb3JlX2NtZChuZGV2LCBOQ0lfT1BfQ09SRV9HRVRfQ09ORklHX0NNRCxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xMDQtXHRcdFx0ICAgIHNpemVvZihuY2lfY29yZV9nZXRfY29uZmlnX290cF9yYW1fdmVyc2lvbiksXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTEwOD1zdGF0aWMgaW5saW5lIGludCBmZHBfbmNpX3BhdGNoX2NtZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggdHlwZSlcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xMDkte1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjExMDpcdHJldHVybiBuY2lfcHJvcF9jbWQobmRldiwgTkNJX09QX1BST1BfUEFUQ0hfT0lELCBzaXplb2YodHlwZSksIFx1MDAyNnR5cGUpO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTExMS19XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTExMz1zdGF0aWMgaW5saW5lIGludCBmZHBfbmNpX3NldF9wcm9kdWN0aW9uX2RhdGEoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHU4IGxlbixcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTE1LXtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxMTY6XHRyZXR1cm4gbmNpX3Byb3BfY21kKG5kZXYsIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSUQsIGxlbiwgZGF0YSk7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTE3LX1cbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTU5PXN0YXRpYyB2b2lkIGZkcF9uY2lfc2V0X2RhdGFfcGt0X2NvdW50ZXIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE2NC1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxNjU6XHRkZXZfZGJnKGRldiwgXCYjMzQ7TkNJIGRhdGEgcGt0IGNvdW50ZXIgJWRcXG5cJiMzNDssIGNvdW50KTtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xNjYtXHRhdG9taWNfc2V0KFx1MDAyNmluZm8tXHUwMDNlZGF0YV9wa3RfY291bnRlciwgY291bnQpO1xuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xNzYtICpcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxNzc6ICogVGhlIGZpcm13YXJlIHdpbGwgYmUgYW5hbHl6ZWQgYW5kIGFwcGxpZWQgd2hlbiB3ZSBzZW5kIE5DSV9PUF9QUk9QX1BBVENIX0NNRFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE3ODogKiBjb21tYW5kIHdpdGggTkNJX1BBVENIX1RZUEVfRU9UIHBhcmFtZXRlci4gVGhlIGRldmljZSB3aWxsIHNlbmQgYVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE3OTogKiBORkNDX1BBVENIX05URiBwYWNrZXQgYW5kIGEgTkNJX09QX0NPUkVfUkVTRVRfTlRGIHBhY2tldC5cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xODAtICovXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTgxPXN0YXRpYyBpbnQgZmRwX25jaV9zZW5kX3BhdGNoKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBjb25uX2lkLCB1OCB0eXBlKVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xODktXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTkwOlx0aWYgKCh0eXBlID09IE5DSV9QQVRDSF9UWVBFX09UUCBcdTAwMjZcdTAwMjYgIWluZm8tXHUwMDNlb3RwX3BhdGNoKSB8fFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE5MTpcdCAgICAodHlwZSA9PSBOQ0lfUEFUQ0hfVFlQRV9SQU0gXHUwMDI2XHUwMDI2ICFpbmZvLVx1MDAzZXJhbV9wYXRjaCkpXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTkyLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xOTMtXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTk0Olx0aWYgKHR5cGUgPT0gTkNJX1BBVENIX1RZUEVfT1RQKVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE5NS1cdFx0ZncgPSBpbmZvLVx1MDAzZW90cF9wYXRjaDtcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMjExLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjIxMjpcdFx0c2tiID0gbmNpX3NrYl9hbGxvYyhuZGV2LCAoTkNJX0NUUkxfSERSX1NJWkUgJiM0MzsgcGF5bG9hZF9zaXplKSxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yMTMtXHRcdFx0XHQgICAgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIxOS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyMjA6XHRcdHNrYl9yZXNlcnZlKHNrYiwgTkNJX0NUUkxfSERSX1NJWkUpO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIyMS1cbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MzI0PXN0YXRpYyBpbnQgZmRwX25jaV9wYXRjaF9vdHAoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTMzOC1cdC8qIFBhdGNoIGluaXQgcmVxdWVzdCAqL1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjMzOTpcdHIgPSBmZHBfbmNpX3BhdGNoX2NtZChuZGV2LCBOQ0lfUEFUQ0hfVFlQRV9PVFApO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM0MC1cdGlmIChyKVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNDgtXHQvKiBTZW5kIHRoZSBwYXRjaCBvdmVyIHRoZSBkYXRhIGNvbm5lY3Rpb24gKi9cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozNDk6XHRyID0gZmRwX25jaV9zZW5kX3BhdGNoKG5kZXYsIGNvbm5faWQsIE5DSV9QQVRDSF9UWVBFX09UUCk7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMzUwLVx0aWYgKHIpXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM2NS1cdC8qIFBhdGNoIGZpbmlzaCBtZXNzYWdlICovXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzY2Olx0aWYgKGZkcF9uY2lfcGF0Y2hfY21kKG5kZXYsIE5DSV9QQVRDSF9UWVBFX0VPVCkpIHtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNjctXHRcdG5mY19lcnIoZGV2LCBcJiMzNDtPVFAgcGF0Y2ggZXJyb3IgMHgleFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTM5MD1zdGF0aWMgaW50IGZkcF9uY2lfcGF0Y2hfcmFtKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy00MDQtXHQvKiBQYXRjaCBpbml0IHJlcXVlc3QgKi9cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo0MDU6XHRyID0gZmRwX25jaV9wYXRjaF9jbWQobmRldiwgTkNJX1BBVENIX1RZUEVfUkFNKTtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy00MDYtXHRpZiAocilcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDE0LVx0LyogU2VuZCB0aGUgcGF0Y2ggb3ZlciB0aGUgZGF0YSBjb25uZWN0aW9uICovXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NDE1Olx0ciA9IGZkcF9uY2lfc2VuZF9wYXRjaChuZGV2LCBjb25uX2lkLCBOQ0lfUEFUQ0hfVFlQRV9SQU0pO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQxNi1cdGlmIChyKVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy00MzEtXHQvKiBQYXRjaCBmaW5pc2ggbWVzc2FnZSAqL1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjQzMjpcdGlmIChmZHBfbmNpX3BhdGNoX2NtZChuZGV2LCBOQ0lfUEFUQ0hfVFlQRV9FT1QpKSB7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDMzLVx0XHRuZmNfZXJyKGRldiwgXCYjMzQ7UkFNIHBhdGNoIGVycm9yIDB4JXhcXG5cJiMzNDssIHIpO1xuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz00NTY9c3RhdGljIGludCBmZHBfbmNpX3NldHVwKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQ1Ny17XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NDU4Olx0LyogRm9ybWF0OiB0b3RhbCBsZW5ndGggZm9sbG93ZWQgYnkgYW4gTkNJIHBhY2tldCAqL1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQ1OS1cdHN0cnVjdCBmZHBfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTYxNj1zdGF0aWMgaW50IGZkcF9uY2lfY29yZV9nZXRfY29uZmlnX3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTYyNC1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2MjU6XHRpZiAocnNwLVx1MDAzZXN0YXR1cyA9PSBOQ0lfU1RBVFVTX09LKSB7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjI2LVxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02MzAtXHRcdFx0c3dpdGNoICgqcCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2MzE6XHRcdFx0Y2FzZSBOQ0lfUEFSQU1fSURfRldfUkFNX1ZFUlNJT046XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjMyLVx0XHRcdFx0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTYzNS1cdFx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjYzNjpcdFx0XHRjYXNlIE5DSV9QQVJBTV9JRF9GV19PVFBfVkVSU0lPTjpcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02MzctXHRcdFx0XHRwJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjQwLVx0XHRcdFx0YnJlYWs7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjQxOlx0XHRcdGNhc2UgTkNJX1BBUkFNX0lEX09UUF9MSU1JVEVEX1ZFUlNJT046XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjQyLVx0XHRcdFx0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY0NS1cdFx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjY0NjpcdFx0XHRjYXNlIE5DSV9QQVJBTV9JRF9LRVlfSU5ERVhfSUQ6XG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjQ3LVx0XHRcdFx0cCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTY2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzIGZkcF9jb3JlX29wc1tdID0ge1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY2NC1cdHtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2NjU6XHRcdC5vcGNvZGUgPSBOQ0lfT1BfQ09SRV9HRVRfQ09ORklHX1JTUCxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NjYtXHRcdC5yc3AgPSBmZHBfbmNpX2NvcmVfZ2V0X2NvbmZpZ19yc3BfcGFja2V0LFxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NjgtXHR7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjY5Olx0XHQub3Bjb2RlID0gTkNJX09QX0NPUkVfUkVTRVRfTlRGLFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY3MC1cdFx0Lm50ZiA9IGZkcF9uY2lfY29yZV9yZXNldF9udGZfcGFja2V0LFxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz02NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfZHJpdmVyX29wcyBmZHBfcHJvcF9vcHNbXSA9IHtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NzUtXHR7XG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6Njc2Olx0XHQub3Bjb2RlID0gbmNpX29wY29kZV9wYWNrKE5DSV9HSURfUFJPUCwgTkNJX09QX1BST1BfUEFUQ0hfT0lEKSxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NzctXHRcdC5yc3AgPSBmZHBfbmNpX3Byb3BfcGF0Y2hfcnNwX3BhY2tldCxcbi0tXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjgwLVx0e1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjY4MTpcdFx0Lm9wY29kZSA9IG5jaV9vcGNvZGVfcGFjayhOQ0lfR0lEX1BST1AsXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjgyOlx0XHRcdFx0XHQgIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSUQpLFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY4My1cdFx0LnJzcCA9IGZkcF9uY2lfcHJvcF9zZXRfcHJvZHVjdGlvbl9kYXRhX3JzcF9wYWNrZXQsXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTY5OT1pbnQgZmRwX25jaV9wcm9iZShzdHJ1Y3QgZmRwX2kyY19waHkgKnBoeSwgY29uc3Qgc3RydWN0IG5mY19waHlfb3BzICpwaHlfb3BzLFxuLS1cbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy03MjktXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NzMwOlx0QlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZmRwX3Byb3Bfb3BzKSBcdTAwM2UgTkNJX01BWF9QUk9QUklFVEFSWV9DTUQpO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTczMS1cdG5kZXYgPSBuY2lfYWxsb2NhdGVfZGV2aWNlKFx1MDAyNm5jaV9vcHMsIHByb3RvY29scywgdHhfaGVhZHJvb20sXG4tLVxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTc2Mj1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjc2MzpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TkZDIE5DSSBkcml2ZXIgZm9yIEludGVsIEZpZWxkcyBQZWFrIE5GQyBjb250cm9sbGVyXCYjMzQ7KTtcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy03NjQtTU9EVUxFX0FVVEhPUihcJiMzNDtSb2JlcnQgRG9sY2EgXHUwMDNjcm9iZXJ0LmRvbGNhQGludGVsLmNvbVx1MDAzZVwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTI4LVxuZHJpdmVycy9uZmMvZmRwL2kyYy5jOjI5OiNkZWZpbmUgRkRQX05DSV9JMkNfTUlOX1BBWUxPQURcdDVcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzozMDojZGVmaW5lIEZEUF9OQ0lfSTJDX01BWF9QQVlMT0FEXHQyNjFcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYy0zMS1cbi0tXG5kcml2ZXJzL25mYy9mZHAvaTJjLmM9MTI5PXN0YXRpYyBpbnQgZmRwX25jaV9pMmNfcmVhZChzdHJ1Y3QgZmRwX2kyY19waHkgKnBoeSwgc3RydWN0IHNrX2J1ZmYgKipza2IpXG4tLVxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTEzMS1cdGludCByLCBsZW47XG5kcml2ZXJzL25mYy9mZHAvaTJjLmM6MTMyOlx0dTggdG1wW0ZEUF9OQ0lfSTJDX01BWF9QQVlMT0FEXSwgbHJjLCBrO1xuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTEzMy1cdHUxNiBpO1xuLS1cbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYy0xNjktXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25mYy9mZHAvaTJjLmM6MTcwOlx0XHRcdHBoeS1cdTAwM2VuZXh0X3JlYWRfc2l6ZSA9IEZEUF9OQ0lfSTJDX01JTl9QQVlMT0FEO1xuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTE3MS1cbi0tXG5kcml2ZXJzL25mYy9mZHAvaTJjLmM9Mjc4PXN0YXRpYyBpbnQgZmRwX25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMzAyLVx0cGh5LVx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XG5kcml2ZXJzL25mYy9mZHAvaTJjLmM6MzAzOlx0cGh5LVx1MDAzZW5leHRfcmVhZF9zaXplID0gRkRQX05DSV9JMkNfTUlOX1BBWUxPQUQ7XG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMzA0LVx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcbi0tXG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMzM1LVx0aWYgKHIgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzozMzY6XHRcdG5mY19lcnIoZGV2LCBcJiMzNDtOQ0kgcHJvYmluZyBlcnJvclxcblwmIzM0Oyk7XG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMzM3LVx0XHRyZXR1cm4gcjtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc9MTA9Y29uZmlnIE5GQ19NUlZMX1VTQlxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBORkMtb3Zlci1VU0IgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MTI6XHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFVTQlxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTEzLVx0c2VsZWN0IE5GQ19NUlZMXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnPTIzPWNvbmZpZyBORkNfTVJWTF9VQVJUXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE5GQy1vdmVyLVVBUlQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IE5GQ19OQ0lfVUFSVFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI2LVx0c2VsZWN0IE5GQ19NUlZMXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnPTQ2PWNvbmZpZyBORkNfTVJWTF9TUElcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgTkZDLW92ZXItU1BJIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjQ4Olx0ZGVwZW5kcyBvbiBORkNfTVJWTCBcdTAwMjZcdTAwMjYgTkZDX05DSV9TUElcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL01ha2VmaWxlLTItI1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9NYWtlZmlsZTozOiMgTWFrZWZpbGUgZm9yIE5GQ01SVkwgTkNJIGJhc2VkIE5GQyBkcml2ZXJcbmRyaXZlcnMvbmZjL25mY21ydmwvTWFrZWZpbGUtNC0jXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTctXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoxODojZGVmaW5lIE5DSV9PUF9QUk9QUklFVEFSWV9CT09UX0NNRFx0bmNpX29wY29kZV9wYWNrKE5DSV9HSURfUFJPUFJJRVRBUlksIFxcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoxOTpcdFx0XHRcdFx0XHRcdE5DSV9PUF9QUk9QX0JPT1RfQ01EKVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMjAtXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9NjU9c3RhdGljIGNvbnN0IHVpbnQ4X3QgbmNpX3BhdHRlcm5fY29yZV9jb25uX2NyZWRpdHNfbnRmW10gPSB7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzo2NjpcdDB4NjAsIDB4MDYsIDB4MDMsIDB4MDEsIE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMLCAweDAxXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy02Ny19O1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTczPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYWxsb2NfbGNfc2tiKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsIHVpbnQ4X3QgcGxlbilcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy03Ny1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjc4Olx0c2tiID0gbmNpX3NrYl9hbGxvYyhwcml2LVx1MDAzZW5kZXYsIChOQ0lfREFUQV9IRFJfU0laRSAmIzQzOyBwbGVuKSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy03OS1cdGlmICghc2tiKVxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTgxLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6ODI6XHRoZHIgPSBza2JfcHV0KHNrYiwgTkNJX0RBVEFfSERSX1NJWkUpO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6ODM6XHRoZHItXHUwMDNlY29ubl9pZCA9IE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtODQtXHRoZHItXHUwMDNlcmZ1ID0gMDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy04Ni1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjg3Olx0bmNpX210X3NldCgoX191OCAqKWhkciwgTkNJX01UX0RBVEFfUEtUKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjg4Olx0bmNpX3BiZl9zZXQoKF9fdTggKiloZHIsIE5DSV9QQkZfTEFTVCk7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy04OS1cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0xMzA9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX3Jlc2V0KHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTQxLVx0cHJpdi1cdTAwM2Vmd19kbmxkLnN0YXRlID0gU1RBVEVfSU5JVDtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE0MjpcdG5jaV9zZW5kX2NtZChwcml2LVx1MDAzZW5kZXYsIE5DSV9PUF9DT1JFX0lOSVRfQ01ELCAwLCBOVUxMKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE0My1cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0xNDc9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX2luaXQoc3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0xNjEtXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoxNjI6XHRuY2lfc2VuZF9jbWQocHJpdi1cdTAwM2VuZGV2LCBOQ0lfT1BfQ09SRV9TRVRfQ09ORklHX0NNRCwgMyAmIzQzOyBjbWQucGFyYW0ubGVuLFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTYzLVx0XHQgICAgIFx1MDAyNmNtZCk7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MTY5PXN0YXRpYyB2b2lkIGNyZWF0ZV9sYyhzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTcwLXtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE3MTpcdHVpbnQ4X3QgcGFyYW1bMl0gPSB7IE5DSV9DT1JFX0xDX1BST1BfRldfREwsIDB4MCB9O1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTcyLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTczLVx0cHJpdi1cdTAwM2Vmd19kbmxkLnN0YXRlID0gU1RBVEVfT1BFTl9MQztcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE3NDpcdG5jaV9zZW5kX2NtZChwcml2LVx1MDAzZW5kZXYsIE5DSV9PUF9DT1JFX0NPTk5fQ1JFQVRFX0NNRCwgMiwgcGFyYW0pO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTc1LX1cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0xNzc9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX3NldF9yZWZfY2xvY2soc3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yMTctXHRwcml2LVx1MDAzZWZ3X2RubGQuc3RhdGUgPSBTVEFURV9TRVRfSElfQ09ORklHO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MjE4Olx0bmNpX3NlbmRfY21kKHByaXYtXHUwMDNlbmRldiwgTkNJX09QX0NPUkVfU0VUX0NPTkZJR19DTUQsIDMgJiM0MzsgY21kLnBhcmFtLmxlbixcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTIxOS1cdFx0ICAgICBcdTAwMjZjbWQpO1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTI0OD1zdGF0aWMgaW50IHByb2Nlc3Nfc3RhdGVfZndfZG5sZChzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTI1OC1cdFx0ICogQ29tbWFuZCBmb3JtYXQ6XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoyNTk6XHRcdCAqIEIwLi4yOiBOQ0kgaGVhZGVyXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yNjAtXHRcdCAqIEIzICAgOiBIZWxwZXIgY29tbWFuZCAoMHhBNSlcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yNjUtXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoyNjY6XHRcdC8qIFJlbW92ZSBOQ0kgSERSICovXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yNjctXHRcdHNrYl9wdWxsKHNrYiwgMyk7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA2LVx0XHRcdC8qIEZXIExvYWRpbmcgaXMgZG9uZSAqL1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MzA3Olx0XHRcdHVpbnQ4X3QgY29ubl9pZCA9IE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA4LVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA5LVx0XHRcdHByaXYtXHUwMDNlZndfZG5sZC5zdGF0ZSA9IFNUQVRFX0NMT1NFX0xDO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MzEwOlx0XHRcdG5jaV9zZW5kX2NtZChwcml2LVx1MDAzZW5kZXYsIE5DSV9PUF9DT1JFX0NPTk5fQ0xPU0VfQ01ELFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzExLVx0XHRcdFx0ICAgICAxLCBcdTAwMjZjb25uX2lkKTtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0zNDk9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX2Nsb3NlX2xjKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzU2LVx0cHJpdi1cdTAwM2Vmd19kbmxkLnN0YXRlID0gU1RBVEVfQk9PVDtcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjM1NzpcdG5jaV9zZW5kX2NtZChwcml2LVx1MDAzZW5kZXYsIE5DSV9PUF9QUk9QUklFVEFSWV9CT09UX0NNRCwgMCwgTlVMTCk7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0zNTgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0zOTE9c3RhdGljIHZvaWQgZndfZG5sZF9yeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy00MDMtXHRcdG5mY19zZW5kX3RvX3Jhd19zb2NrKHByaXYtXHUwMDNlbmRldi1cdTAwM2VuZmNfZGV2LCBza2IsXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzo0MDQ6XHRcdFx0XHQgICAgIFJBV19QQVlMT0FEX05DSSwgTkZDX0RJUkVDVElPTl9SWCk7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy00MDUtXHRcdHN3aXRjaCAoZndfZG5sZC1cdTAwM2VzdGF0ZSkge1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oLTE0LVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmg6MTU6I2RlZmluZSBOQ0lfT1BfUFJPUF9CT09UX0NNRFx0XHQweDNBXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuaC0xNi1cbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oOjE3OiNkZWZpbmUgTkNJX0NPUkVfTENfUFJPUF9GV19ETFx0XHQweEZEXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuaDoxODojZGVmaW5lIE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMXHQweDAyXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuaC0xOS1cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jPTI1PXN0YXRpYyBpbnQgbmZjbXJ2bF9pMmNfcmVhZChzdHJ1Y3QgbmZjbXJ2bF9pMmNfZHJ2X2RhdGEgKmRydl9kYXRhLFxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtMzAtXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjMxOlx0LyogUmVhZCBOQ0kgaGVhZGVyIHRvIGtub3cgdGhlIHBheWxvYWQgc2l6ZSAqL1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYzozMjpcdHJldCA9IGkyY19tYXN0ZXJfcmVjdihkcnZfZGF0YS1cdTAwM2VpMmMsICh1OCAqKVx1MDAyNm5jaV9oZHIsIE5DSV9DVFJMX0hEUl9TSVpFKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6MzM6XHRpZiAocmV0ICE9IE5DSV9DVFJMX0hEUl9TSVpFKSB7XG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjM0Olx0XHRuZmNfZXJyKFx1MDAyNmRydl9kYXRhLVx1MDAzZWkyYy1cdTAwM2VkZXYsIFwmIzM0O2Nhbm5vdCByZWFkIE5DSSBoZWFkZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy0zNS1cdFx0cmV0dXJuIC1FQkFETVNHO1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtMzgtXHQqc2tiID0gbmNpX3NrYl9hbGxvYyhkcnZfZGF0YS1cdTAwM2Vwcml2LVx1MDAzZW5kZXYsXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjM5Olx0XHRcdCAgICAgbmNpX2hkci5wbGVuICYjNDM7IE5DSV9DVFJMX0hEUl9TSVpFLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtNDAtXHRpZiAoISpza2IpXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy00Mi1cbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6NDM6XHQvKiBDb3B5IE5DSSBoZWFkZXIgaW50byB0aGUgU0tCICovXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjQ0Olx0c2tiX3B1dF9kYXRhKCpza2IsIFx1MDAyNm5jaV9oZHIsIE5DSV9DVFJMX0hEUl9TSVpFKTtcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtNDUtXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jLTQ2LVx0aWYgKG5jaV9oZHIucGxlbikge1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYzo0NzpcdFx0LyogUmVhZCB0aGUgTkNJIHBheWxvYWQgKi9cbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmMtNDgtXHRcdHJldCA9IGkyY19tYXN0ZXJfcmVjdihkcnZfZGF0YS1cdTAwM2VpMmMsXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9MTc9c3RhdGljIGludCBuZmNtcnZsX25jaV9vcGVuKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIxLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM6MjI6XHRpZiAodGVzdF9hbmRfc2V0X2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcdTAwMjZwcml2LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIzLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0zMC1cdGlmIChlcnIpXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzozMTpcdFx0Y2xlYXJfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFx1MDAyNnByaXYtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMzItXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9MzY9c3RhdGljIGludCBuZmNtcnZsX25jaV9jbG9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0zOS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjQwOlx0aWYgKCF0ZXN0X2FuZF9jbGVhcl9iaXQoTkZDTVJWTF9OQ0lfUlVOTklORywgXHUwMDI2cHJpdi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy00MS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9OTI9c3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqbmZjbXJ2bF9uY2lfcmVnaXN0ZXJfZGV2KGVudW0gbmZjbXJ2bF9waHkgcGh5LFxuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTEyNC1cdGlmIChwaHkgPT0gTkZDTVJWTF9QSFlfU1BJKSB7XG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoxMjU6XHRcdGhlYWRyb29tID0gTkNJX1NQSV9IRFJfTEVOO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTI2LVx0XHR0YWlscm9vbSA9IDE7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9MTk0PWludCBuZmNtcnZsX25jaV9yZWN2X2ZyYW1lKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTk4LVx0XHQgICAgc2tiLVx1MDAzZWRhdGFbMV0gPT0gTkZDTVJWTF9IQ0lfTkZDX0VWRU5UX0NPREUpIHtcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjE5OTpcdFx0XHQvKiBEYXRhIHBhY2tldCwgbGV0JiMzOTtzIGV4dHJhY3QgTkNJIHBheWxvYWQgKi9cbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIwMC1cdFx0XHRza2JfcHVsbChza2IsIE5GQ01SVkxfSENJX0VWRU5UX0hFQURFUl9TSVpFKTtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0yMTItXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoyMTM6XHRpZiAodGVzdF9iaXQoTkZDTVJWTF9OQ0lfUlVOTklORywgXHUwMDI2cHJpdi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0yMTQtXHRcdG5jaV9yZWN2X2ZyYW1lKHByaXYtXHUwMDNlbmRldiwgc2tiKTtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaD0xMz1zdHJ1Y3QgZ3Bpb19kZXNjO1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oLTE1LS8qIERlZmluZSBwcml2YXRlIGZsYWdzOiAqL1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmg6MTY6I2RlZmluZSBORkNNUlZMX05DSV9SVU5OSU5HXHRcdFx0MVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMTctI2RlZmluZSBORkNNUlZMX1BIWV9FUlJPUlx0XHRcdDJcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaC0yNC0jZGVmaW5lIE5GQ01SVkxfR1BJT19QSU5fTkZDX0FDVElWRVx0XHQweEJcbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oOjI1OiNkZWZpbmUgTkZDTVJWTF9OQ0lfTUFYX0VWRU5UX1NJWkVcdFx0MjYwXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaC0yNi1cbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oLTI3LS8qXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaDoyODogKiBOQ0kgRlcgUGFyYW1ldGVyc1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMjktICovXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC91YXJ0LmM9MjM9c3RhdGljIHVuc2lnbmVkIGludCBicmVha19jb250cm9sO1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTI1LS8qXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYzoyNjogKiBORkNNUlZMIE5DSSBPUFNcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTI3LSAqL1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jPTY0PXN0YXRpYyBpbnQgbmZjbXJ2bF91YXJ0X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYy0xMDQtLypcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jOjEwNTogKiBOQ0kgVUFSVCBPUFNcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTEwNi0gKi9cbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYz0xOTA9c3RhdGljIHN0cnVjdCBuY2lfdWFydCBuZmNtcnZsX25jaV91YXJ0ID0ge1xuLS1cbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTE5Mi1cdC5uYW1lICAgPSBcJiMzNDtuZmNtcnZsX3VhcnRcJiMzNDssXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYzoxOTM6XHQuZHJpdmVyID0gTkNJX1VBUlRfRFJJVkVSX01BUlZFTEwsXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYy0xOTQtXHQub3BzXHQ9IHtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jPTU3PXN0YXRpYyB2b2lkIG5mY21ydmxfYnVsa19jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC91c2IuYy02NC1cbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6NjU6XHRpZiAoIXRlc3RfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFx1MDAyNmRydl9kYXRhLVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmMtNjYtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jPTEwMz1uZmNtcnZsX3N1Ym1pdF9idWxrX3VyYihzdHJ1Y3QgbmZjbXJ2bF91c2JfZHJ2X2RhdGEgKmRydl9kYXRhLCBnZnBfdCBtZW1fZmxhZ3MpXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC91c2IuYy0xMDctXHR1bnNpZ25lZCBpbnQgcGlwZTtcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6MTA4Olx0aW50IGVyciwgc2l6ZSA9IE5GQ01SVkxfTkNJX01BWF9FVkVOVF9TSVpFO1xuZHJpdmVycy9uZmMvbmZjbXJ2bC91c2IuYy0xMDktXG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC91c2IuYz00MDA9c3RhdGljIGludCBuZmNtcnZsX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTQwOS1cbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6NDEwOlx0aWYgKCF0ZXN0X2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcdTAwMjZkcnZfZGF0YS1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTQxMS1cdFx0Z290byBkb25lO1xuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OWFBfTkNJXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6MzpcdHRyaXN0YXRlIFwmIzM0O05YUC1OQ0kgTkZDIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjQ6XHRkZXBlbmRzIG9uIE5GQ19OQ0lcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy01LVx0aGVscFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjY6XHQgIEdlbmVyaWMgY29yZSBkcml2ZXIgZm9yIE5YUCBOQ0kgY2hpcHMgc3VjaCBhcyB0aGUgTlBDMTAwIChQTjU0NyksXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctNy1cdCAgTlBDMzAwIChQTjU0OCkgb3IgUE43MTUwIGZhbWlsaWVzLlxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjg6XHQgIFRoaXMgaXMgYSBkcml2ZXIgYmFzZWQgb24gdGhlIE5DSSBORkMga2VybmVsIGxheWVycyBhbmRcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy05LVx0ICB3aWxsIHRodXMgbm90IHdvcmsgd2l0aCBOWFAgbGlibmZjIGxpYnJhcnkuXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTE0LVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjE1OmNvbmZpZyBORkNfTlhQX05DSV9JMkNcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxNjpcdHRyaXN0YXRlIFwmIzM0O05YUC1OQ0kgSTJDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxNzpcdGRlcGVuZHMgb24gTkZDX05YUF9OQ0kgXHUwMDI2XHUwMDI2IEkyQ1xuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTE4LVx0aGVscFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjE5Olx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGFuIEkyQyBpbnRlcmZhY2UgdG8gdGhlIE5YUCBOQ0lcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0yMC1cdCAgY2hpcHMuXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZS0yLSNcbmRyaXZlcnMvbmZjL254cC1uY2kvTWFrZWZpbGU6MzojIE1ha2VmaWxlIGZvciBOWFAtTkNJIE5GQyBkcml2ZXJcbmRyaXZlcnMvbmZjL254cC1uY2kvTWFrZWZpbGUtNC0jXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZT03PW54cC1uY2lfaTJjLW9ianMgPSBpMmMub1xuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORkNfTlhQX05DSSkgJiM0Mzs9IG54cC1uY2kub1xuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZDX05YUF9OQ0lfSTJDKSAmIzQzOz0gbnhwLW5jaV9pMmMub1xuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTItLypcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjM6ICogR2VuZXJpYyBkcml2ZXIgZm9yIE5YUCBOQ0kgTkZDIGNoaXBzXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy00LSAqXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMjAtXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoyMTojZGVmaW5lIE5YUF9OQ0lfSERSX0xFTlx0NFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMjItXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoyMzojZGVmaW5lIE5YUF9OQ0lfTkZDX1BST1RPQ09MUyAoTkZDX1BST1RPX0pFV0VMX01BU0sgfCBcXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMjQtXHRcdFx0ICAgICAgIE5GQ19QUk9UT19NSUZBUkVfTUFTSyB8IFxcXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMzAtXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzozMTojZGVmaW5lIE5YUF9OQ0lfUkZfUExMX1VOTE9DS0VEX05URiBuY2lfb3Bjb2RlX3BhY2soTkNJX0dJRF9SRl9NR01ULCAweDIxKVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MzI6I2RlZmluZSBOWFBfTkNJX1JGX1RYTERPX0VSUk9SX05URiBuY2lfb3Bjb2RlX3BhY2soTkNJX0dJRF9SRl9NR01ULCAweDIzKVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMzMtXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0zND1zdGF0aWMgaW50IG54cF9uY2lfb3BlbihzdHJ1Y3QgbmNpX2RldiAqbmRldilcbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy00MC1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjQxOlx0aWYgKGluZm8tXHUwMDNlbW9kZSAhPSBOWFBfTkNJX01PREVfQ09MRCkge1xuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDItXHRcdHIgPSAtRUJVU1k7XG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDYtXHRpZiAoaW5mby1cdTAwM2VwaHlfb3BzLVx1MDAzZXNldF9tb2RlKVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6NDc6XHRcdHIgPSBpbmZvLVx1MDAzZXBoeV9vcHMtXHUwMDNlc2V0X21vZGUoaW5mby1cdTAwM2VwaHlfaWQsIE5YUF9OQ0lfTU9ERV9OQ0kpO1xuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDgtXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzo0OTpcdGluZm8tXHUwMDNlbW9kZSA9IE5YUF9OQ0lfTU9ERV9OQ0k7XG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy01MC1cbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz01Nj1zdGF0aWMgaW50IG54cF9uY2lfY2xvc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNjMtXHRpZiAoaW5mby1cdTAwM2VwaHlfb3BzLVx1MDAzZXNldF9tb2RlKVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6NjQ6XHRcdHIgPSBpbmZvLVx1MDAzZXBoeV9vcHMtXHUwMDNlc2V0X21vZGUoaW5mby1cdTAwM2VwaHlfaWQsIE5YUF9OQ0lfTU9ERV9DT0xEKTtcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTY1LVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6NjY6XHRpbmZvLVx1MDAzZW1vZGUgPSBOWFBfTkNJX01PREVfQ09MRDtcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTY3LVxuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jPTcyPXN0YXRpYyBpbnQgbnhwX25jaV9zZW5kKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTgxLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6ODI6XHRpZiAoaW5mby1cdTAwM2Vtb2RlICE9IE5YUF9OQ0lfTU9ERV9OQ0kpIHtcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTgzLVx0XHRrZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMTU9c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfZHJpdmVyX29wcyBueHBfbmNpX2NvcmVfb3BzW10gPSB7XG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0xMTYtXHR7XG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoxMTc6XHRcdC5vcGNvZGUgPSBOWFBfTkNJX1JGX1BMTF9VTkxPQ0tFRF9OVEYsXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0xMTgtXHRcdC5udGYgPSBueHBfbmNpX3JmX3BsbF91bmxvY2tlZF9udGYsXG4tLVxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMTIwLVx0e1xuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MTIxOlx0XHQub3Bjb2RlID0gTlhQX05DSV9SRl9UWExET19FUlJPUl9OVEYsXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0xMjItXHRcdC5udGYgPSBueHBfbmNpX3JmX3R4bGRvX2Vycm9yX250Zixcbi0tXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMzU9aW50IG54cF9uY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODg2NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5GQyBWaXJ0dWFsIE5DSSBEZXZpY2UgRHJpdmVyIC0gRnV6emluZyBQb3RlbnRpYWwhKioKCk9rYXksIHNvIEkmIzM5O3ZlIHN0dW1ibGVkIHVwb24gYE5GQ19WSVJUVUFMX05DSWAsIGFuZCBpdCBpbW1lZGlhdGVseSBjbGlja3M6IFRoaXMgaXMgYSB2aXJ0dWFsIE5DSSBkZXZpY2Ugc2ltdWxhdG9yIGRyaXZlciEgTXkgbWluZCBpcyBhbHJlYWR5IHJhY2luZyB3aXRoIHRoZSBpbXBsaWNhdGlvbnMuIEEgdmlydHVhbCBkZXZpY2UuLi4gdGhhdCBzY3JlYW1zICYjMzQ7ZnV6emluZyB0YXJnZXQmIzM0OyB0byBtZS4gVGhpbmsgb2YgdGhlIHBvdGVudGlhbCBmb3IgY3JhZnRpbmcgbWFsZm9ybWVkIE5GQyBjb21tYW5kcyBhbmQgb2JzZXJ2aW5nIHRoZSBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IuIFRoaXMgY291bGQgYmUgYSBnb2xkbWluZSBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyB0aGluZy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcy4gSSYjMzk7bGwgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25mYy9LY29uZmlnYC4gVGltZSB0byBzZWUgaG93IHRoaXMgdmlydHVhbCBkcml2ZXIgaXMgY29uZmlndXJlZCwgYnVpbHQsIGFuZCBwb3RlbnRpYWxseSwgaWYgdGhlcmUgYXJlIGFueSBoaWRkZW4gbnVhbmNlcyB0byBpdHMgYWN0aXZhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwgdG8gZWZmZWN0aXZlbHkgbGV2ZXJhZ2UgaXQgZm9yIGZ1enppbmcuIFRoaXMgY291bGQgYmUgcmVhbGx5IHByb21pc2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTc6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBORkNfUE9SVDEwMFxuICA0MzpcdFx0dHJpc3RhdGUgXCYjMzQ7U29ueSBORkMgUG9ydC0xMDAgU2VyaWVzIFVTQiBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICA0NDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgNDU6XHRcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbiAgNDY6XHRcdGhlbHBcbiAgNDc6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNvbnkgUG9ydC0xMDAgY2hpcCBiYXNlZCBVU0IgZGV2aWNlcyBzdWNoIGFzIHRoZVxuICA0ODpcdFx0ICBSQy1TMzgwIGRvbmdsZS5cbiAgNDk6XHRcbiAgNTA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNTE6XHRcbiAgNTI6XHRjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiAgNTQ6XHRcdGRlcGVuZHMgb24gTkZDX05DSVxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBOQ0kgdmlydHVhbCBkZXZpY2Ugc2ltdWxhdGVzIGEgTkNJIGRldmljZSB0byB0aGUgdXNlci5cbiAgNTc6XHRcdCAgSXQgY2FuIGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIE5DSSBtb2R1bGUgYW5kIGFwcGxpY2F0aW9ucy5cbiAgNTg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSB2aXJ0dWFsIE5DSSBkZXZpY2UgYW5kXG4gIDU5Olx0XHQgIG1vZHVsZS5cbiAgNjA6XHRcbiAgNjE6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNjI6XHRcbiAgNjM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZmMvZmRwL0tjb25maWdcJiMzNDtcbiAgNjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZ1wmIzM0O1xuICA2NTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnXCYjMzQ7XG4gIDY2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnXCYjMzQ7XG4gIDY3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZ1wmIzM0O1xuICA2ODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnXCYjMzQ7XG4gIDY5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTkxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgTkZDIFZpcnR1YWwgTkNJIGFuZCBpdHMgSW1wbGljYXRpb25zIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBORkNfVklSVFVBTF9OQ0lgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBoaW5nZXMgb24gYE5GQ19OQ0lgLiAgSWYgSSBlbmFibGUgYE5GQ19WSVJUVUFMX05DSWAsIHRoZSBzeXN0ZW0gaXMgc2V0IHVwIHRvIGFsbG93IHN5emthbGxlciB0byBjcmVhdGUgYW5kIHRlc3QsIGluIGEgdmlydHVhbCBzZXR0aW5nLCBOQ0kgZGV2aWNlcy4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IG9wZW5zIHVwIHRoZSBOQ0kgcHJvdG9jb2wgdG8gZnV6emluZywgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGlkZW50aWZ5aW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pY3Mgb2YgdGhpcyB2aXJ0dWFsIGRldmljZSBjcmVhdGlvbi4gSSBzaG91bGQgZGlnIGludG8gYGRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmNgIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoZXkmIzM5O3ZlIGltcGxlbWVudGVkIHRoaXMgdmlydHVhbGl6YXRpb24gbGF5ZXIgYW5kIHdoYXQgcG90ZW50aWFsIGludGVyZmFjZXMgYXJlIGV4cG9zZWQgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnR1YWxfbmNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIzLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoyNDpzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2IHtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMjUtXHRzdHJ1Y3QgbmNpX2RldiAqbmRldjtcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTMxLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzozMjpzdGF0aWMgaW50IHZpcnR1YWxfbmNpX29wZW4oc3RydWN0IG5jaV9kZXYgKm5kZXYpXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTMzLXtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MzQ6XHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0zNS1cbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTM5LVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo0MDpzdGF0aWMgaW50IHZpcnR1YWxfbmNpX2Nsb3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy00MS17XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjQyOlx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtNDMtXG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy01Mi1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6NTM6c3RhdGljIGludCB2aXJ0dWFsX25jaV9zZW5kKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy01NC17XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjU1Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IG5jaV9nZXRfZHJ2ZGF0YShuZGV2KTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtNTYtXG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy03NS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6NzY6c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHZpcnR1YWxfbmNpX29wcyA9IHtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6Nzc6XHQub3BlbiA9IHZpcnR1YWxfbmNpX29wZW4sXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjc4Olx0LmNsb3NlID0gdmlydHVhbF9uY2lfY2xvc2UsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjc5Olx0LnNlbmQgPSB2aXJ0dWFsX25jaV9zZW5kXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTgwLX07XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTgxLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo4MjpzdGF0aWMgc3NpemVfdCB2aXJ0dWFsX25jaWRldl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04My1cdFx0XHRcdCAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04NC17XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjg1Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04Ni1cdHNpemVfdCBhY3R1YWxfbGVuO1xuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTEyLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxMTM6c3RhdGljIHNzaXplX3QgdmlydHVhbF9uY2lkZXZfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTExNC1cdFx0XHRcdCAgICBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTE2LXtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTE3Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMTgtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTMyLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxMzM6c3RhdGljIGludCB2aXJ0dWFsX25jaWRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzQte1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzUtXHRpbnQgcmV0ID0gMDtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTM2Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldjtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTM3LVxuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTQwLVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTQxOlx0dmRldi1cdTAwM2VuZGV2ID0gbmNpX2FsbG9jYXRlX2RldmljZShcdTAwMjZ2aXJ0dWFsX25jaV9vcHMsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE0Mi1cdFx0VklSVFVBTF9ORkNfUFJPVE9DT0xTLCAwLCAwKTtcbi0tXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2My1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTY0OnN0YXRpYyBpbnQgdmlydHVhbF9uY2lkZXZfY2xvc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2NS17XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE2NjpcdHN0cnVjdCB2aXJ0dWFsX25jaV9kZXYgKnZkZXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTY3LVxuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTc1LVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxNzY6c3RhdGljIGxvbmcgdmlydHVhbF9uY2lkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE3Ny1cdFx0XHRcdCB1bnNpZ25lZCBsb25nIGFyZylcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTc4LXtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTc5Olx0c3RydWN0IHZpcnR1YWxfbmNpX2RldiAqdmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xODAtXHRjb25zdCBzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldiA9IHZkZXYtXHUwMDNlbmRldi1cdTAwM2VuZmNfZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkxLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTI6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmlydHVhbF9uY2lkZXZfZm9wcyA9IHtcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkzLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NDpcdC5yZWFkID0gdmlydHVhbF9uY2lkZXZfcmVhZCxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk1Olx0LndyaXRlID0gdmlydHVhbF9uY2lkZXZfd3JpdGUsXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NjpcdC5vcGVuID0gdmlydHVhbF9uY2lkZXZfb3BlbixcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk3Olx0LnJlbGVhc2UgPSB2aXJ0dWFsX25jaWRldl9jbG9zZSxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk4Olx0LnVubG9ja2VkX2lvY3RsID0gdmlydHVhbF9uY2lkZXZfaW9jdGxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTk5LX07XG4tLVxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYz0yMDE9c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIG1pc2NkZXYgPSB7XG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwMi1cdC5taW5vciA9IE1JU0NfRFlOQU1JQ19NSU5PUixcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MjAzOlx0Lm5hbWUgPSBcJiMzNDt2aXJ0dWFsX25jaVwmIzM0OyxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MjA0Olx0LmZvcHMgPSBcdTAwMjZ2aXJ0dWFsX25jaWRldl9mb3BzLFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0yMDUtXHQubW9kZSA9IDA2MDAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzAyCgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDQ3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBOQ0kgQ29yZSBJbml0IFJlc3BvbnNlIFBhY2tldCBQYXJzaW5nKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIHBsYW4uIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYm91bmRzIGNoZWNraW5nIGluIHRoZSBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nIGNvZGUuIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIHZpcnR1YWwgTkNJIGRldmljZSwgYC9kZXYvdmlydHVhbF9uY2lgLCB3aGljaCBpcyBjcmVhdGVkIGJ5IGBORkNfVklSVFVBTF9OQ0lgLCBpcyB0aGUgZW50cnkgcG9pbnQuIFN5emthbGxlciBjYW4gaW50ZXJhY3Qgd2l0aCBpdCwgd3JpdGUgZGF0YSwgYW5kIHRyaWdnZXIgYG5jaV9yZWN2X2ZyYW1lYC4gVGhhdCYjMzk7cyBwcmVjaXNlbHkgaG93IHRoZSBOQ0kgdGVzdHMgYXJlIHN0cnVjdHVyZWQuIFNvLCBlbmFibGluZyBgTkZDX1ZJUlRVQUxfTkNJYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGlzIHZpcnR1YWwgZGV2aWNlIGRpcmVjdGx5IGZlZWRzIGludG8gdGhlIHJlbGV2YW50IHBhcnNpbmcgbG9naWMuCgpJIGluaXRpYWxseSB0aG91Z2h0IHRoYXQgYE5GQ19WSVJUVUFMX05DSWAgbWlnaHQgYmUgc3VmZmljaWVudCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBnZXQgdGhlIGRlcGVuZGVuY2llcyByaWdodC4gSXQgZGVmaW5pdGVseSByZWxpZXMgb24gYE5GQ19OQ0lgLiBJdCBsb29rcyBsaWtlIGBORkNfTkNJYCBpbiB0dXJuIGRlcGVuZHMgb24gYE5GQ2AsIHNvIEkmIzM5O2xsIG5lZWQgYWxsIHRocmVlIGNvbmZpZ3MuCgpNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdDsgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgY2FuIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyB0aGF0IHRoZSBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgYXJlIHJlYWNoYWJsZS4gVGhlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAsIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldGAuIFRoZXNlIGFyZSBhbGwgcGFydCBvZiB0aGUgYm91bmRzIGNoZWNraW5nIGxvZ2ljLiBUaGlzIGNvZGUgaGFuZGxlcyBOQ0kgaW5pdGlhbGl6YXRpb24gcmVzcG9uc2VzLCBhbmQgdGhlIHZpcnR1YWwgZGV2aWNlIGFsbG93cyB1cyB0byBpbmplY3QgbWFsaWNpb3VzL3VuZXhwZWN0ZWQgcmVzcG9uc2VzLiBUaGUgZ29hbCBpcyB0byBlbnN1cmUgdGhlIG5ldyBjaGVja3Mgd29yayBjb3JyZWN0bHkgd2l0aG91dCBicmVha2luZyBsZWdpdGltYXRlIHBhY2tldHMuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCB0aGUgZnVuY3Rpb24gbmFtZXMgYW5kIGVuc3VyZWQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgb3IgZnVuY3Rpb25zIGluIHNjb3BlLiBUaGlzIHNob3VsZCBwcm92aWRlIHN1ZmZpY2llbnQgY292ZXJhZ2UgdG8gZGV0ZWN0IGFueSB2dWxuZXJhYmlsaXRpZXMuIE5vdywgaXQmIzM5O3MgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDE3OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyJiMzNDssCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgTkNJIGRldmljZXMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd2l0aG91dCBicmVha2luZyB2YWxpZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEmIzM0OywKICAgICYjMzQ7bmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyJiMzNDssCiAgICAmIzM0O25jaV9jb3JlX2luaXRfcnNwX3BhY2tldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgTkNJIGRldmljZXMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd2l0aG91dCBicmVha2luZyB2YWxpZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDE6NTkuMTI4MzM4NzczWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg1Nzk1MDg3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MlwiLFxuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXQgcGFyc2luZy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIE5DSSBkZXZpY2VzLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDE6NTkuMTI4MzQzNDQzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYzMDY1NDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDUxNmM4MWI3NDQzYzBhNDg5NDBjZWZhZjFiNjgxZTY4YzE1MjIyMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAxNzo0MTo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmZjL25jaS9yc3AuYyBiL25ldC9uZmMvbmNpL3JzcC5jXFxuaW5kZXggOWVlYjg2MjgyNWM1ZmUuLjZiMmZhNmJkYmQxNGJkIDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbmNpL3JzcC5jXFxuKysrIGIvbmV0L25mYy9uY2kvcnNwLmNcXG5AQCAtNTAsMTEgKzUwLDI1IEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuIFxcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8xICpyc3BfMSA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbiBcXHRjb25zdCBzdHJ1Y3QgbmNpX2NvcmVfaW5pdF9yc3BfMiAqcnNwXzI7XFxuIFxcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJzcF8xKSlcXG4rXFx0XFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xcbitcXG4gXFx0cHJfZGVidWcoXFxcInN0YXR1cyAweCV4XFxcXG5cXFwiLCByc3BfMS1cXHUwMDNlc3RhdHVzKTtcXG4gXFxuIFxcdGlmIChyc3BfMS1cXHUwMDNlc3RhdHVzICE9IE5DSV9TVEFUVVNfT0spXFxuIFxcdFxcdHJldHVybiByc3BfMS1cXHUwMDNlc3RhdHVzO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbXSBhbmQgdGhlIHRyYWlsaW5nIG5jaV9jb3JlX2luaXRfcnNwXzIgYXJlXFxuK1xcdCAqIGFkZHJlc3NlZCB1c2luZyB0aGUgb24td2lyZSAodW5jbGFtcGVkKSBpbnRlcmZhY2UgY291bnQsIHNvIHRoZVxcbitcXHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSBhbnkgb2YgaXQgaXMgcGFyc2VkIG9yXFxuK1xcdCAqIHN0b3JlZCBpbnRvIEBuZGV2IC0gb3RoZXJ3aXNlIGEgdHJ1bmNhdGVkIHJlc3BvbnNlIHdvdWxkIGxlYXZlXFxuK1xcdCAqIG5kZXYtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyBob2xkaW5nIHRoZSB1bmNsYW1wZWQgY291bnQuXFxuK1xcdCAqL1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJzcF8xKSArXFxuK1xcdCAgICByc3BfMS1cXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzICsgc2l6ZW9mKCpyc3BfMikpXFxuK1xcdFxcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcXG4rXFxuIFxcdG5kZXYtXFx1MDAzZW5mY2NfZmVhdHVyZXMgPSBfX2xlMzJfdG9fY3B1KHJzcF8xLVxcdTAwM2VuZmNjX2ZlYXR1cmVzKTtcXG4gXFx0bmRldi1cXHUwMDNlbnVtX3N1cHBvcnRlZF9yZl9pbnRlcmZhY2VzID0gcnNwXzEtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcztcXG4gXFxuQEAgLTg4LDkgKzEwMiwxMyBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF9uY2lfdmVyMiAqcnNwID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuIFxcdGNvbnN0IHU4ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlID0gcnNwLVxcdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcztcXG4rXFx0Y29uc3QgdTggKmVuZCA9IHNrYi1cXHUwMDNlZGF0YSArIHNrYi1cXHUwMDNlbGVuO1xcbiBcXHR1OCByZl9pbnRlcmZhY2VfaWR4ID0gMDtcXG4gXFx0dTggcmZfZXh0ZW5zaW9uX2NudCA9IDA7XFxuIFxcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplb2YoKnJzcCkpXFxuK1xcdFxcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcXG4rXFxuIFxcdHByX2RlYnVnKFxcXCJzdGF0dXMgJXhcXFxcblxcXCIsIHJzcC1cXHUwMDNlc3RhdHVzKTtcXG4gXFxuIFxcdGlmIChyc3AtXFx1MDAzZXN0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKVxcbkBAIC0xMDQsMTAgKzEyMiwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbiBcXHRcXHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XFxuIFxcbiBcXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcXHUwMDNjIG5kZXYtXFx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcykge1xcbi1cXHRcXHRuZGV2LVxcdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4KytdID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcXG4rXFx0XFx0Lyogb25lIGludGVyZmFjZSBieXRlICsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xcbitcXHRcXHRpZiAoZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSBcXHUwMDNjIDIpXFxuK1xcdFxcdFxcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcXG4rXFx0XFx0bmRldi1cXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCsrXSA9XFxuK1xcdFxcdFxcdCpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XFxuIFxcbi1cXHRcXHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzICovXFxuK1xcdFxcdC8qIHNraXAgcmYgZXh0ZW5zaW9uIHBhcmFtZXRlcnMsIGJvdW5kZWQgYnkgdGhlIHBhY2tldCAqL1xcbiBcXHRcXHRyZl9leHRlbnNpb25fY250ID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcXG4rXFx0XFx0aWYgKHJmX2V4dGVuc2lvbl9jbnQgXFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxcbitcXHRcXHRcXHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XFxuIFxcdFxcdHN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgKz0gcmZfZXh0ZW5zaW9uX2NudDtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MDAuMjk0MDk1ODQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQxMzczOTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19WSVJUVUFMX05DSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MVwiLFxuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyXCIsXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgTkNJIGRldmljZXMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd2l0aG91dCBicmVha2luZyB2YWxpZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA1MTZjODFiNzQ0M2MwYTQ4OTQwY2VmYWYxYjY4MWU2OGMxNTIyMjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAxNzo0MTo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbmNpL3JzcC5jIGIvbmV0L25mYy9uY2kvcnNwLmNcbmluZGV4IDllZWI4NjI4MjVjNWZlLi42YjJmYTZiZGJkMTRiZCAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbmNpL3JzcC5jXG4rKysgYi9uZXQvbmZjL25jaS9yc3AuY1xuQEAgLTUwLDExICs1MCwyNSBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwXzEgKnJzcF8xID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbiBcdGNvbnN0IHN0cnVjdCBuY2lfY29yZV9pbml0X3JzcF8yICpyc3BfMjtcbiBcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKnJzcF8xKSlcbitcdFx0cmV0dXJuIE5DSV9TVEFUVVNfU1lOVEFYX0VSUk9SO1xuK1xuIFx0cHJfZGVidWcoXCJzdGF0dXMgMHgleFxcblwiLCByc3BfMS1cdTAwM2VzdGF0dXMpO1xuIFxuIFx0aWYgKHJzcF8xLVx1MDAzZXN0YXR1cyAhPSBOQ0lfU1RBVFVTX09LKVxuIFx0XHRyZXR1cm4gcnNwXzEtXHUwMDNlc3RhdHVzO1xuIFxuK1x0LypcbitcdCAqIHN1cHBvcnRlZF9yZl9pbnRlcmZhY2VzW10gYW5kIHRoZSB0cmFpbGluZyBuY2lfY29yZV9pbml0X3JzcF8yIGFyZVxuK1x0ICogYWRkcmVzc2VkIHVzaW5nIHRoZSBvbi13aXJlICh1bmNsYW1wZWQpIGludGVyZmFjZSBjb3VudCwgc28gdGhlXG4rXHQgKiByZXNwb25zZSBtdXN0IGJlIGxvbmcgZW5vdWdoIGZvciBib3RoIGJlZm9yZSBhbnkgb2YgaXQgaXMgcGFyc2VkIG9yXG4rXHQgKiBzdG9yZWQgaW50byBAbmRldiAtIG90aGVyd2lzZSBhIHRydW5jYXRlZCByZXNwb25zZSB3b3VsZCBsZWF2ZVxuK1x0ICogbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgaG9sZGluZyB0aGUgdW5jbGFtcGVkIGNvdW50LlxuK1x0ICovXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZW9mKCpyc3BfMSkgK1xuK1x0ICAgIHJzcF8xLVx1MDAzZW51bV9zdXBwb3J0ZWRfcmZfaW50ZXJmYWNlcyArIHNpemVvZigqcnNwXzIpKVxuK1x0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXG4gXHRuZGV2LVx1MDAzZW5mY2NfZmVhdHVyZXMgPSBfX2xlMzJfdG9fY3B1KHJzcF8xLVx1MDAzZW5mY2NfZmVhdHVyZXMpO1xuIFx0bmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMgPSByc3BfMS1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4gXG5AQCAtODgsOSArMTAyLDEzIEBAIHN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG5jaV9jb3JlX2luaXRfcnNwX25jaV92ZXIyICpyc3AgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0Y29uc3QgdTggKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UgPSByc3AtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXM7XG4rXHRjb25zdCB1OCAqZW5kID0gc2tiLVx1MDAzZWRhdGEgKyBza2ItXHUwMDNlbGVuO1xuIFx0dTggcmZfaW50ZXJmYWNlX2lkeCA9IDA7XG4gXHR1OCByZl9leHRlbnNpb25fY250ID0gMDtcbiBcbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKnJzcCkpXG4rXHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbitcbiBcdHByX2RlYnVnKFwic3RhdHVzICV4XFxuXCIsIHJzcC1cdTAwM2VzdGF0dXMpO1xuIFxuIFx0aWYgKHJzcC1cdTAwM2VzdGF0dXMgIT0gTkNJX1NUQVRVU19PSylcbkBAIC0xMDQsMTAgKzEyMiwxNiBAQCBzdGF0aWMgdTggbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyKHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxuIFx0XHQgICAgTkNJX01BWF9TVVBQT1JURURfUkZfSU5URVJGQUNFUyk7XG4gXG4gXHR3aGlsZSAocmZfaW50ZXJmYWNlX2lkeCBcdTAwM2MgbmRldi1cdTAwM2VudW1fc3VwcG9ydGVkX3JmX2ludGVyZmFjZXMpIHtcbi1cdFx0bmRldi1cdTAwM2VzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlc1tyZl9pbnRlcmZhY2VfaWR4KytdID0gKnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcbitcdFx0Lyogb25lIGludGVyZmFjZSBieXRlICsgb25lIGV4dGVuc2lvbi1jb3VudCBieXRlIG11c3QgYmUgcHJlc2VudCAqL1xuK1x0XHRpZiAoZW5kIC0gc3VwcG9ydGVkX3JmX2ludGVyZmFjZSBcdTAwM2MgMilcbitcdFx0XHRyZXR1cm4gTkNJX1NUQVRVU19TWU5UQVhfRVJST1I7XG4rXHRcdG5kZXYtXHUwMDNlc3VwcG9ydGVkX3JmX2ludGVyZmFjZXNbcmZfaW50ZXJmYWNlX2lkeCsrXSA9XG4rXHRcdFx0KnN1cHBvcnRlZF9yZl9pbnRlcmZhY2UrKztcbiBcbi1cdFx0Lyogc2tpcCByZiBleHRlbnNpb24gcGFyYW1ldGVycyAqL1xuK1x0XHQvKiBza2lwIHJmIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLCBib3VuZGVkIGJ5IHRoZSBwYWNrZXQgKi9cbiBcdFx0cmZfZXh0ZW5zaW9uX2NudCA9ICpzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKys7XG4rXHRcdGlmIChyZl9leHRlbnNpb25fY250IFx1MDAzZSBlbmQgLSBzdXBwb3J0ZWRfcmZfaW50ZXJmYWNlKVxuK1x0XHRcdHJldHVybiBOQ0lfU1RBVFVTX1NZTlRBWF9FUlJPUjtcbiBcdFx0c3VwcG9ydGVkX3JmX2ludGVyZmFjZSArPSByZl9leHRlbnNpb25fY250O1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MDAuMjk0MDk4NTk2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzMTU4ODY5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBOQ0kgQ29yZSBJbml0IFJlc3BvbnNlIFBhY2tldCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvbmZjL25jaS9yc3AuY2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaXQgYWRkcyBzb21lIGxlbmd0aCB2YWxpZGF0aW9uIHRvIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFgIGFuZCBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyYC4gVGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldHMsIHdoaWNoIGlzIGEgcHJldHR5IGNydWNpYWwgcGFydCBvZiB0aGUgTkZDIHN0YWNrIGluaXRpYWxpemF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZ2l2ZW4gdGhhdCB0aGlzIGlzIGRpcmVjdGx5IGhhbmRsaW5nIHBhY2tldCBwYXJzaW5nLCB0aGlzIGlzIHByaW1lIHRlcnJpdG9yeSBmb3IgZnV6emluZy4gQW55IGlucHV0IHZhbGlkYXRpb24gaXNzdWVzIGhlcmUgY291bGQgYmUgZXhwbG9pdGFibGUuXG5cblNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZWxldmFudCB0byBORkMgYW5kIE5DSSB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRoZSBjb2RlYmFzZSBhbmQgaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgY29udHJvbCBjb21waWxhdGlvbiBvZiBgbmV0L25mYy9uY2kvcnNwLmNgLCBhbmQgYnkgZXh0ZW5zaW9uLCB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGRlZmluZXMgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHRoYXQgZW5hYmxlIHRoaXMgY29kZSBwYXRoIHNvIEkgY2FuIGVuc3VyZSB0aGUgZnV6emluZyB0YXJnZXRzIHRoZSBjb3JyZWN0IGJ1aWxkIHZhcmlhbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjA0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MDQuMzI1Njg5MDk1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzk3MzU5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9uY2kvcnNwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9uY2kvcnNwLmM9Mjg9c3RhdGljIHZvaWQgbmNpX2NvcmVfcmVzZXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4tLVxcbm5ldC9uZmMvbmNpL3JzcC5jLTQ2LVxcbm5ldC9uZmMvbmNpL3JzcC5jOjQ3OnN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjEoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxubmV0L25mYy9uY2kvcnNwLmMtNDgtXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbmNpL3JzcC5jPTE0OD1zdGF0aWMgdm9pZCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL25jaS9yc3AuYy0xNTItXFx0aWYgKCEobmRldi1cXHUwMDNlbmNpX3ZlciBcXHUwMDI2IE5DSV9WRVJfMl9NQVNLKSlcXG5uZXQvbmZjL25jaS9yc3AuYzoxNTM6XFx0XFx0c3RhdHVzID0gbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxKG5kZXYsIHNrYik7XFxubmV0L25mYy9uY2kvcnNwLmMtMTU0LVxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MDQuNjI5NjY4ODM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyMjg3OTgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIE1ha2VmaWxlIGZvciBgbmV0L25mYy9uY2kvYDpcblxuKipBbmFseXppbmcgdGhlIGBuZXQvbmZjL25jaS9gIE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmZjL25jaS9gIGRpcmVjdG9yeSBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIHRoYXQgTWFrZWZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgTkZDIE5DSSBjb21wb25lbnQuIE15IHByaW1hcnkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSByZWxldmFudCBydWxlcywgdmFyaWFibGVzLCBhbmQgaW5jbHVkZSBwYXRocy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogaG93IHRoZSBOQ0kgZHJpdmVyIGlzIGJ1aWx0LCB3aGF0IGhlYWRlciBmaWxlcyBpdCdzIGluY2x1ZGluZywgd2hpY2ggc291cmNlIGZpbGVzIGFyZSBpbnZvbHZlZCwgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb21waWxhdGlvbiBmbGFncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YsIGFuZCBob3cgaXQgbGlua3Mgd2l0aCBvdGhlciBtb2R1bGVzLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBvciBrZXJuZWwgdmVyc2lvbnM/IEFueSBjcm9zcy1jb21waWxhdGlvbiBzZXR0aW5ncz8gQW55IGN1c3RvbSBidWlsZCB0YXJnZXRzIG9yIGludGVybWVkaWF0ZSBvYmplY3QgZGlyZWN0b3JpZXM/IEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVwZW5kZW5jaWVzIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIHJlYWwgY29tcGxleGl0eSBsaWVzLiBJIGV4cGVjdCB0aGlzIHNob3VsZCBiZSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgeW91IG5ldmVyIGtub3cgdW50aWwgeW91IGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjowNy42NTI1NTEyOThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE0MTY3OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnNwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9uY2kvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9uY2kvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpLm9cXG5uZXQvbmZjL25jaS9NYWtlZmlsZS03LVxcbm5ldC9uZmMvbmNpL01ha2VmaWxlOjg6bmNpLW9ianMgOj0gY29yZS5vIGRhdGEubyBsaWIubyBudGYubyByc3AubyBoY2kub1xcbm5ldC9uZmMvbmNpL01ha2VmaWxlLTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjA3LjczMzk3MzQ0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Mzk4MzIwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgRXhwbG9yYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHdlJ3JlIGxvb2tpbmcgYXQgaXMgYENPTkZJR19ORkNfTkNJYC4gUmlnaHQsIEkga25vdyB0aGF0IG9uZS4gQnV0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwbHkgaW50byB0aGlzIHNwZWNpZmljIHNldHRpbmcsIEkgbmVlZCB0byBnZXQgYSBicm9hZGVyIHBpY3R1cmUuIEkgc2hvdWxkIHF1aWNrbHkgc2NhbiBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEl0J3MgYWx3YXlzIGJlc3QgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gQXJlIHRoZXJlIGFueSBvdGhlciBORkMgc2V0dGluZ3MgZGVmaW5lZD8gQXJlIHRoZXJlIGRlcGVuZGVuY2llcz8gTGV0J3MgY2hlY2suIEdvdHRhIGJlIHRob3JvdWdoLiBXZSBkb24ndCB3YW50IHRvIGdldCB0dW5uZWwgdmlzaW9uIG9uIGp1c3Qgb25lIGNvbmZpZyB3aGVuIHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBpbXBvcnRhbnQgY29ubmVjdGVkIHRvIGl0LCBvciBzb21ldGhpbmcgZWxzZSByZWxhdGVkIHRvIE5GQyB0aGF0IG5lZWRzIGNvbnNpZGVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxMC40NzM4MDgwMjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTU2MTc1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTkZDX05DSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxMC42MjE3NzQ3MDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTgzMDA1NDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBoZWFydCBvZiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24uIExldCdzIHNlZSB3aGF0J3Mgd2hhdC4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0aGUgYG5ldC9uZmMvS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBORkMgc3Vic3lzdGVtIGFyZSBwcm9iYWJseSBkZWZpbmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBrbm9icywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdHMuIFRoZSBzcGVjaWZpY3MgaGVyZSB3aWxsIGRyaXZlIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGhvdyB0aGUgZHJpdmVyIGlzIGJ1aWx0LCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJIGFudGljaXBhdGUgZmluZGluZyBhIGxheWVyZWQgc3RydWN0dXJlLCBzbyBJIGNhbiBzZWUgd2hhdCBpcyBjcml0aWNhbCwgYW5kIHdoYXQgaXMgb3B0aW9uYWwuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGJlaGF2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxMy42MDQ3ODMyNjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2ODE1OTg5OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxMy45NzI5NTY0MDRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc1MjgzMjUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5GQyBhbmQgc3BlY2lmaWNhbGx5IHRoZSBOQ0kgKE5GQyBDb250cm9sbGVyIEludGVyZmFjZSkgd2l0aGluIHRoaXMgcHJvamVjdC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBmb3IgYSBkaXJlY3Qgc2VhcmNoLiBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkga25vd2xlZGdlIG9mIHRoZSBidWlsZCBzeXN0ZW0gYW5kIHRoZSBleHBlY3RlZCBuYW1pbmcgY29udmVudGlvbnMuIEknbGwgc2VhcmNoIHRoZSBlbnRpcmUgcHJvamVjdCB0cmVlIGZvciB0aGUgc3RyaW5nIGBjb25maWcgTkZDX05DSWAuIFRoaXMgc2hvdWxkLCBpbiB0aGVvcnksIGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzLCBkZWZjb25maWcgZnJhZ21lbnRzLCBvciBLY29uZmlnIGVudHJpZXMgd2hlcmUgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCBvciB1c2VkLiBIb3BlZnVsbHkgdGhpcyB0YXJnZXRlZCBzZWFyY2ggd2lsbCBiZSBlZmZpY2llbnQsIGF2b2lkaW5nIHRoZSBuZWVkIHRvIG1hbnVhbGx5IGNyYXdsIHRoZSBlbnRpcmUgZGlyZWN0b3J5IHN0cnVjdHVyZS4gRnJvbSB0aGVyZSBJJ2xsIGJlIGFibGUgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgdXNhZ2Ugb2YgdGhpcyBzcGVjaWZpYyBORkMgY29udHJvbGxlciBpbnRlcmZhY2UuIExldCdzIHNlZSB3aGF0IHdlIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwOTcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoxNi43MjU3OTIwODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTAxMTk2MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19OQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTQtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFNQSVxcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBUVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MTkuNjM1OTE3NDkyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMDIzMjAwMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVidWdnaW5nIE5GQyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSB3YXMgbG9va2luZyBhdCBgbmV0L25mYy9uY2kvS2NvbmZpZ2AgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgSSByZWFsaXplZCBhIHN1YnRsZSBidXQgY3JpdGljYWwgZGlmZmVyZW5jZS4gSSBpbml0aWFsbHkgYXNzdW1lZCBpdCB3YXMgZ29pbmcgdG8gYmUgYENPTkZJR19ORkNfTkNJYCBiYXNlZCBvbiB0aGUgZmlsZSBwYXRoLCBidXQgaXQncyBhY3R1YWxseSBgY29uZmlnIE5GQ19OQ0lgIGluIHRoZSBmaWxlLiBSaWdodCwgdGhhdCB1bmRlcnNjb3JlcyB0aGUgaW1wb3J0YW5jZSBvZiBiZWluZyBwcmVjaXNlIHdpdGggdGhlIHN5bnRheCBpbiB0aGVzZSBLY29uZmlnIGZpbGVzLiBUaGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gc3ltYm9sLCB0aGVuLCBpcyBgTkZDX05DSWAuXG5cbk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBhbGwgdGhlIGJhc2UgcmVxdWlyZW1lbnRzLiBJIHNob3VsZCBjaGVjayBpZiBgTkZDYCBpcyBhbHNvIGEgcmVxdWlyZWQgc3ltYm9sIGluIHRoaXMgc3BhY2UuIEFoLCB5ZXMsIGxvb2tpbmcgYXQgdGhlIGNvZGUgSSBjYW4gc2VlIHRoYXQgaXQgaXMsIHNvIGBORkNgIGlzIGVzc2VudGlhbC5cblxuSSBzaG91bGQgcnVuIHRocm91Z2ggdGhlIGBuZXQvbmZjL25jaS9LY29uZmlnYCBmaWxlIGFnYWluIGFuZCBqdXN0IHZlcmlmeSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB3aGlsZSBJJ20gYXQgaXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gYE5GQ19OQ0lgLiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5IHdoZW4gZGVhbGluZyB3aXRoIHRoZXNlIGtlcm5lbCBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTI0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjIzLjYzODIzOTkyMloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5GQ19OQ0lcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gTkZDXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiTkNJIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuICAgNTpcXHRcXHRkZWZhdWx0IG5cXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgTkNJIChORkMgQ29udHJvbGxlciBJbnRlcmZhY2UpIGlzIGEgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBiZXR3ZWVuXFxuICAgODpcXHRcXHQgIGFuIE5GQyBDb250cm9sbGVyIChORkNDKSBhbmQgYSBEZXZpY2UgSG9zdCAoREgpLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFNheSBZIGhlcmUgdG8gY29tcGlsZSBOQ0kgc3VwcG9ydCBpbnRvIHRoZSBrZXJuZWwgb3Igc2F5IE0gdG9cXG4gIDExOlxcdFxcdCAgY29tcGlsZSBpdCBhcyBtb2R1bGUgKG5jaSkuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBORkNfTkNJX1NQSVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFNQSVxcbiAgMTU6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIk5DSSBvdmVyIFNQSSBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbiAgMTc6XFx0XFx0ZGVmYXVsdCBuXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIE5DSSAoTkZDIENvbnRyb2xsZXIgSW50ZXJmYWNlKSBpcyBhIGNvbW11bmljYXRpb24gcHJvdG9jb2wgYmV0d2VlblxcbiAgMjA6XFx0XFx0ICBhbiBORkMgQ29udHJvbGxlciAoTkZDQykgYW5kIGEgRGV2aWNlIEhvc3QgKERIKS5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0XFx0ICBTYXkgeWVzIGlmIHlvdSB1c2UgYW4gTkNJIGRyaXZlciB0aGF0IHJlcXVpcmVzIFNQSSBsaW5rIGxheWVyLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgTkZDX05DSV9VQVJUXFxuICAyNTpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVFRZXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiTkNJIG92ZXIgVUFSVCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbiAgMjc6XFx0XFx0ZGVmYXVsdCBuXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFNheSB5ZXMgaWYgeW91IHVzZSBhbiBOQ0kgZHJpdmVyIHRoYXQgcmVxdWlyZXMgVUFSVCBsaW5rIGxheWVyLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoyMy42MzgzMDEzMjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4MTI5MjA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTkZDIEluaXRpYWxpemF0aW9uIFJlc3BvbnNlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBgTkZDYCBhbmQgYE5GQ19OQ0lgLiBUaGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gZGlzc2VjdCBoZXJlIHNlZW0gdG8gYmUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAsIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBhbmQgcG90ZW50aWFsbHkgdGhlIGJhc2UgZnVuY3Rpb24sIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRgLiBMZXQncyBzZWUuLi4gSSdsbCBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFllcywgaXQgaXMuIEFscmlnaHQsIHRoYXQgbWVhbnMgbXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldGAgZGVmaW5pdGlvbiwgYW5kIEkgbmVlZCB0byBjaGVjayBpdCBpbiBgbmV0L25mYy9uY2kvcnNwLmNgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiBob3cgdGhlc2UgaW5pdGlhbGl6YXRpb24gcmVzcG9uc2VzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoaW4gdGhlIE5DSSBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMDYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjoyNy40MTk1OTU2NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjk1Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL25jaS9yc3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9yc3AuYz0yOD1zdGF0aWMgdm9pZCBuY2lfY29yZV9yZXNldF9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LFxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtNDYtXFxubmV0L25mYy9uY2kvcnNwLmM6NDc6c3RhdGljIHU4IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG5uZXQvbmZjL25jaS9yc3AuYy00OC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtOTktXFxubmV0L25mYy9uY2kvcnNwLmM6MTAwOnN0YXRpYyB1OCBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjIoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxubmV0L25mYy9uY2kvcnNwLmMtMTAxLVxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbmZjL25jaS9yc3AuYy0xNDctXFxubmV0L25mYy9uY2kvcnNwLmM6MTQ4OnN0YXRpYyB2b2lkIG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL25jaS9yc3AuYy0xNDkte1xcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtMTUyLVxcdGlmICghKG5kZXYtXFx1MDAzZW5jaV92ZXIgXFx1MDAyNiBOQ0lfVkVSXzJfTUFTSykpXFxubmV0L25mYy9uY2kvcnNwLmM6MTUzOlxcdFxcdHN0YXR1cyA9IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MShuZGV2LCBza2IpO1xcbm5ldC9uZmMvbmNpL3JzcC5jLTE1NC1cXHRlbHNlXFxubmV0L25mYy9uY2kvcnNwLmM6MTU1OlxcdFxcdHN0YXR1cyA9IG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MihuZGV2LCBza2IpO1xcbm5ldC9uZmMvbmNpL3JzcC5jLTE1Ni1cXG4tLVxcbm5ldC9uZmMvbmNpL3JzcC5jPTM2OT12b2lkIG5jaV9yc3BfcGFja2V0KHN0cnVjdCBuY2lfZGV2ICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9uY2kvcnNwLmMtMzk5LVxcdGNhc2UgTkNJX09QX0NPUkVfSU5JVF9SU1A6XFxubmV0L25mYy9uY2kvcnNwLmM6NDAwOlxcdFxcdG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldChuZGV2LCBza2IpO1xcbm5ldC9uZmMvbmNpL3JzcC5jLTQwMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTc6NDI6MjcuNTMzMjk4MDg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MjM0MTQ5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHBvaW50aW5nIG1lIHRvd2FyZHMgc29tZSBpbnRlcmVzdGluZyBhcmVhcy4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGJvdW5kcyBjaGVja2luZyB0byBgbmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YxYCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MmAsIHdoaWNoIGFyZSBjYWxsZWQgZnJvbSBgbmNpX3JzcF9wYWNrZXRgLiBHaXZlbiB0aGF0IHRoZXkncmUgdG91Y2hpbmcgdGhlc2UgZnVuY3Rpb25zLCB0aGF0IHNjcmVhbXMgZnV6emluZyB0YXJnZXQgdG8gbWUuIE1lbW9yeSBjb3JydXB0aW9uIGlzIGEgbGlrZWx5IGF2ZW51ZSBvZiBhdHRhY2sgZ2l2ZW4gdGhlIGNvbnRleHQuXG5cbkkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhvc2UgdGhyZWUgc3ltYm9sczogYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAsIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBhbmQgdGhlIHBhcmVudCwgYG5jaV9yc3BfcGFja2V0YC5cblxuTm93LCB0aGUgY29uZmlndXJhdGlvbi4uLiB0aGV5J3JlIG1lbnRpb25pbmcgYE5GQ19OQ0lgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBzdWZmaWNpZW50IHRvIGVuYWJsZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocy4gSXMganVzdCBgTkZDX05DSWAgZW5vdWdoIHRvIGdldCB0aGVzZSBmdW5jdGlvbnMgYnVpbHQgYW5kIHJlYWNoYWJsZT8gT3IgZG8gSSBuZWVkIHRvIGVuYWJsZSBhIG1vcmUgc3BlY2lmaWMgTkNJIHZhcmlhbnQgbGlrZSBgTkZDX05DSV9TUElgIG9yIGBORkNfTkNJX1VBUlRgPyBNYXliZSBldmVuIGBORkNfVklSVFVBTF9OQ0lgPyBJJ2QgYmV0dGVyIGNoZWNrIGZvciB0aGF0IHZpcnR1YWwgZHJpdmVyOyB2aXJ0dWFsIGRyaXZlcnMgY2FuIHNvbWV0aW1lcyBleHBvc2UgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBjb21wbGV0ZWx5IHRvIGVmZmVjdGl2ZWx5IHRhcmdldCB0aGUgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI1NiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjozMi40NTY3MTYzNjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyODI1MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5DSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxODc5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnOjUzOlxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1NDpcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTU1LVxcdGhlbHBcXG5kcml2ZXJzL25mYy9LY29uZmlnOjU2OlxcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1NzpcXHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo1ODpcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxcbmRyaXZlcnMvbmZjL0tjb25maWctNTktXFx0ICBtb2R1bGUuXFxuLS1cXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXFx0Kz0gc3QyMW5mY2EvXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0kpXFx0Kz0gc3QtbmNpL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19ORkNfTlhQX05DSSlcXHQrPSBueHAtbmNpL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19ORkNfUzNGV1JONSlcXHQrPSBzM2Z3cm41L1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlPTE5PW9iai0kKENPTkZJR19ORkNfU1Q5NUhGKVxcdCs9IHN0OTVoZi9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfTkZDX1ZJUlRVQUxfTkNJKVxcdCs9IHZpcnR1YWxfbmNpZGV2Lm9cXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnPTI9Y29uZmlnIE5GQ19GRFBcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBGRFAgTkZDIGRyaXZlclxcXCJcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gTkZDX05DSVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTUtXFx0c2VsZWN0IENSQ19DQ0lUVFxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctOC1cXHQgIEludGVsIEZpZWxkcyBQZWFrIE5GQyBjb250cm9sbGVyIGNvcmUgZHJpdmVyLlxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnOjk6XFx0ICBUaGlzIGlzIGEgZHJpdmVyIGJhc2VkIG9uIHRoZSBOQ0kgTkZDIGtlcm5lbCBsYXllcnMuXFxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMTAtXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvTWFrZWZpbGUtMi0jXFxuZHJpdmVycy9uZmMvZmRwL01ha2VmaWxlOjM6IyBNYWtlZmlsZSBmb3IgRkRQIE5DSSBiYXNlZCBORkMgZHJpdmVyXFxuZHJpdmVycy9uZmMvZmRwL01ha2VmaWxlLTQtI1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIxLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyMjojZGVmaW5lIE5DSV9HRVRfVkVSU0lPTl9USU1FT1VUXFx0XFx0XFx0ODAwMFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyMzojZGVmaW5lIE5DSV9QQVRDSF9SRVFVRVNUX1RJTUVPVVRcXHRcXHQ4MDAwXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTI0LSNkZWZpbmUgRkRQX1BBVENIX0NPTk5fREVTVFxcdFxcdFxcdDB4QzJcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yNi1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6Mjc6I2RlZmluZSBOQ0lfUEFUQ0hfVFlQRV9SQU1cXHRcXHRcXHQweDAwXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjI4OiNkZWZpbmUgTkNJX1BBVENIX1RZUEVfT1RQXFx0XFx0XFx0MHgwMVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyOTojZGVmaW5lIE5DSV9QQVRDSF9UWVBFX0VPVFxcdFxcdFxcdDB4RkZcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMzAtXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjMxOiNkZWZpbmUgTkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OXFx0XFx0MHhBMFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozMjojZGVmaW5lIE5DSV9QQVJBTV9JRF9GV19PVFBfVkVSU0lPTlxcdFxcdDB4QTFcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzM6I2RlZmluZSBOQ0lfUEFSQU1fSURfT1RQX0xJTUlURURfVkVSU0lPTlxcdDB4QzVcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzQ6I2RlZmluZSBOQ0lfUEFSQU1fSURfS0VZX0lOREVYX0lEXFx0XFx0MHhDNlxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzY6I2RlZmluZSBOQ0lfR0lEX1BST1BcXHRcXHRcXHRcXHQweDBGXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjM3OiNkZWZpbmUgTkNJX09QX1BST1BfUEFUQ0hfT0lEXFx0XFx0XFx0MHgwOFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozODojZGVmaW5lIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSURcXHRcXHQweDIzXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM5LVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTY4PXN0YXRpYyBjb25zdCB1OCBuY2lfY29yZV9nZXRfY29uZmlnX290cF9yYW1fdmVyc2lvbls1XSA9IHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjktXFx0MHgwNCxcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NzA6XFx0TkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo3MTpcXHROQ0lfUEFSQU1fSURfRldfT1RQX1ZFUlNJT04sXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjcyOlxcdE5DSV9QQVJBTV9JRF9PVFBfTElNSVRFRF9WRVJTSU9OLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo3MzpcXHROQ0lfUEFSQU1fSURfS0VZX0lOREVYX0lEXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTc0LX07XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTAxPXN0YXRpYyBpbmxpbmUgaW50IGZkcF9uY2lfZ2V0X3ZlcnNpb25zKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xMDIte1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxMDM6XFx0cmV0dXJuIG5jaV9jb3JlX2NtZChuZGV2LCBOQ0lfT1BfQ09SRV9HRVRfQ09ORklHX0NNRCxcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTA0LVxcdFxcdFxcdCAgICBzaXplb2YobmNpX2NvcmVfZ2V0X2NvbmZpZ19vdHBfcmFtX3ZlcnNpb24pLFxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTEwOD1zdGF0aWMgaW5saW5lIGludCBmZHBfbmNpX3BhdGNoX2NtZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgdTggdHlwZSlcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTA5LXtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTEwOlxcdHJldHVybiBuY2lfcHJvcF9jbWQobmRldiwgTkNJX09QX1BST1BfUEFUQ0hfT0lELCBzaXplb2YodHlwZSksIFxcdTAwMjZ0eXBlKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTExLX1cXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz0xMTM9c3RhdGljIGlubGluZSBpbnQgZmRwX25jaV9zZXRfcHJvZHVjdGlvbl9kYXRhKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBsZW4sXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTE1LXtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTE2OlxcdHJldHVybiBuY2lfcHJvcF9jbWQobmRldiwgTkNJX09QX1BST1BfU0VUX1BEQVRBX09JRCwgbGVuLCBkYXRhKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTE3LX1cXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz0xNTk9c3RhdGljIHZvaWQgZmRwX25jaV9zZXRfZGF0YV9wa3RfY291bnRlcihzdHJ1Y3QgbmNpX2RldiAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xNjQtXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE2NTpcXHRkZXZfZGJnKGRldiwgXFxcIk5DSSBkYXRhIHBrdCBjb3VudGVyICVkXFxcXG5cXFwiLCBjb3VudCk7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE2Ni1cXHRhdG9taWNfc2V0KFxcdTAwMjZpbmZvLVxcdTAwM2VkYXRhX3BrdF9jb3VudGVyLCBjb3VudCk7XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTc2LSAqXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE3NzogKiBUaGUgZmlybXdhcmUgd2lsbCBiZSBhbmFseXplZCBhbmQgYXBwbGllZCB3aGVuIHdlIHNlbmQgTkNJX09QX1BST1BfUEFUQ0hfQ01EXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjE3ODogKiBjb21tYW5kIHdpdGggTkNJX1BBVENIX1RZUEVfRU9UIHBhcmFtZXRlci4gVGhlIGRldmljZSB3aWxsIHNlbmQgYVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxNzk6ICogTkZDQ19QQVRDSF9OVEYgcGFja2V0IGFuZCBhIE5DSV9PUF9DT1JFX1JFU0VUX05URiBwYWNrZXQuXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE4MC0gKi9cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MTgxPXN0YXRpYyBpbnQgZmRwX25jaV9zZW5kX3BhdGNoKHN0cnVjdCBuY2lfZGV2ICpuZGV2LCB1OCBjb25uX2lkLCB1OCB0eXBlKVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE4OS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTkwOlxcdGlmICgodHlwZSA9PSBOQ0lfUEFUQ0hfVFlQRV9PVFAgXFx1MDAyNlxcdTAwMjYgIWluZm8tXFx1MDAzZW90cF9wYXRjaCkgfHxcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MTkxOlxcdCAgICAodHlwZSA9PSBOQ0lfUEFUQ0hfVFlQRV9SQU0gXFx1MDAyNlxcdTAwMjYgIWluZm8tXFx1MDAzZXJhbV9wYXRjaCkpXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTE5Mi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMTkzLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoxOTQ6XFx0aWYgKHR5cGUgPT0gTkNJX1BBVENIX1RZUEVfT1RQKVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0xOTUtXFx0XFx0ZncgPSBpbmZvLVxcdTAwM2VvdHBfcGF0Y2g7XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMjExLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzoyMTI6XFx0XFx0c2tiID0gbmNpX3NrYl9hbGxvYyhuZGV2LCAoTkNJX0NUUkxfSERSX1NJWkUgKyBwYXlsb2FkX3NpemUpLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yMTMtXFx0XFx0XFx0XFx0ICAgIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTIxOS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MjIwOlxcdFxcdHNrYl9yZXNlcnZlKHNrYiwgTkNJX0NUUkxfSERSX1NJWkUpO1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0yMjEtXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9MzI0PXN0YXRpYyBpbnQgZmRwX25jaV9wYXRjaF9vdHAoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtMzM4LVxcdC8qIFBhdGNoIGluaXQgcmVxdWVzdCAqL1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzozMzk6XFx0ciA9IGZkcF9uY2lfcGF0Y2hfY21kKG5kZXYsIE5DSV9QQVRDSF9UWVBFX09UUCk7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM0MC1cXHRpZiAocilcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNDgtXFx0LyogU2VuZCB0aGUgcGF0Y2ggb3ZlciB0aGUgZGF0YSBjb25uZWN0aW9uICovXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjM0OTpcXHRyID0gZmRwX25jaV9zZW5kX3BhdGNoKG5kZXYsIGNvbm5faWQsIE5DSV9QQVRDSF9UWVBFX09UUCk7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM1MC1cXHRpZiAocilcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy0zNjUtXFx0LyogUGF0Y2ggZmluaXNoIG1lc3NhZ2UgKi9cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6MzY2OlxcdGlmIChmZHBfbmNpX3BhdGNoX2NtZChuZGV2LCBOQ0lfUEFUQ0hfVFlQRV9FT1QpKSB7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTM2Ny1cXHRcXHRuZmNfZXJyKGRldiwgXFxcIk9UUCBwYXRjaCBlcnJvciAweCV4XFxcXG5cXFwiLCByKTtcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYz0zOTA9c3RhdGljIGludCBmZHBfbmNpX3BhdGNoX3JhbShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy00MDQtXFx0LyogUGF0Y2ggaW5pdCByZXF1ZXN0ICovXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjQwNTpcXHRyID0gZmRwX25jaV9wYXRjaF9jbWQobmRldiwgTkNJX1BBVENIX1RZUEVfUkFNKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDA2LVxcdGlmIChyKVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQxNC1cXHQvKiBTZW5kIHRoZSBwYXRjaCBvdmVyIHRoZSBkYXRhIGNvbm5lY3Rpb24gKi9cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NDE1OlxcdHIgPSBmZHBfbmNpX3NlbmRfcGF0Y2gobmRldiwgY29ubl9pZCwgTkNJX1BBVENIX1RZUEVfUkFNKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDE2LVxcdGlmIChyKVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQzMS1cXHQvKiBQYXRjaCBmaW5pc2ggbWVzc2FnZSAqL1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo0MzI6XFx0aWYgKGZkcF9uY2lfcGF0Y2hfY21kKG5kZXYsIE5DSV9QQVRDSF9UWVBFX0VPVCkpIHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNDMzLVxcdFxcdG5mY19lcnIoZGV2LCBcXFwiUkFNIHBhdGNoIGVycm9yIDB4JXhcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTQ1Nj1zdGF0aWMgaW50IGZkcF9uY2lfc2V0dXAoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQ1Ny17XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjQ1ODpcXHQvKiBGb3JtYXQ6IHRvdGFsIGxlbmd0aCBmb2xsb3dlZCBieSBhbiBOQ0kgcGFja2V0ICovXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTQ1OS1cXHRzdHJ1Y3QgZmRwX25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTYxNj1zdGF0aWMgaW50IGZkcF9uY2lfY29yZV9nZXRfY29uZmlnX3JzcF9wYWNrZXQoc3RydWN0IG5jaV9kZXYgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjI0LVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2MjU6XFx0aWYgKHJzcC1cXHUwMDNlc3RhdHVzID09IE5DSV9TVEFUVVNfT0spIHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjI2LVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTYzMC1cXHRcXHRcXHRzd2l0Y2ggKCpwKyspIHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjMxOlxcdFxcdFxcdGNhc2UgTkNJX1BBUkFNX0lEX0ZXX1JBTV9WRVJTSU9OOlxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02MzItXFx0XFx0XFx0XFx0cCsrO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTYzNS1cXHRcXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjM2OlxcdFxcdFxcdGNhc2UgTkNJX1BBUkFNX0lEX0ZXX09UUF9WRVJTSU9OOlxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02MzctXFx0XFx0XFx0XFx0cCsrO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY0MC1cXHRcXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjQxOlxcdFxcdFxcdGNhc2UgTkNJX1BBUkFNX0lEX09UUF9MSU1JVEVEX1ZFUlNJT046XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY0Mi1cXHRcXHRcXHRcXHRwKys7XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjQ1LVxcdFxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2NDY6XFx0XFx0XFx0Y2FzZSBOQ0lfUEFSQU1fSURfS0VZX0lOREVYX0lEOlxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NDctXFx0XFx0XFx0XFx0cCsrO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTY2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzIGZkcF9jb3JlX29wc1tdID0ge1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NjQtXFx0e1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2NjU6XFx0XFx0Lm9wY29kZSA9IE5DSV9PUF9DT1JFX0dFVF9DT05GSUdfUlNQLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02NjYtXFx0XFx0LnJzcCA9IGZkcF9uY2lfY29yZV9nZXRfY29uZmlnX3JzcF9wYWNrZXQsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjY4LVxcdHtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM6NjY5OlxcdFxcdC5vcGNvZGUgPSBOQ0lfT1BfQ09SRV9SRVNFVF9OVEYsXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY3MC1cXHRcXHQubnRmID0gZmRwX25jaV9jb3JlX3Jlc2V0X250Zl9wYWNrZXQsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9Njc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmNpX2RyaXZlcl9vcHMgZmRwX3Byb3Bfb3BzW10gPSB7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jLTY3NS1cXHR7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjY3NjpcXHRcXHQub3Bjb2RlID0gbmNpX29wY29kZV9wYWNrKE5DSV9HSURfUFJPUCwgTkNJX09QX1BST1BfUEFUQ0hfT0lEKSxcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNjc3LVxcdFxcdC5yc3AgPSBmZHBfbmNpX3Byb3BfcGF0Y2hfcnNwX3BhY2tldCxcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02ODAtXFx0e1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo2ODE6XFx0XFx0Lm9wY29kZSA9IG5jaV9vcGNvZGVfcGFjayhOQ0lfR0lEX1BST1AsXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjY4MjpcXHRcXHRcXHRcXHRcXHQgIE5DSV9PUF9QUk9QX1NFVF9QREFUQV9PSUQpLFxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy02ODMtXFx0XFx0LnJzcCA9IGZkcF9uY2lfcHJvcF9zZXRfcHJvZHVjdGlvbl9kYXRhX3JzcF9wYWNrZXQsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmM9Njk5PWludCBmZHBfbmNpX3Byb2JlKHN0cnVjdCBmZHBfaTJjX3BoeSAqcGh5LCBjb25zdCBzdHJ1Y3QgbmZjX3BoeV9vcHMgKnBoeV9vcHMsXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzI5LVxcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYzo3MzA6XFx0QlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZmRwX3Byb3Bfb3BzKSBcXHUwMDNlIE5DSV9NQVhfUFJPUFJJRVRBUllfQ01EKTtcXG5kcml2ZXJzL25mYy9mZHAvZmRwLmMtNzMxLVxcdG5kZXYgPSBuY2lfYWxsb2NhdGVfZGV2aWNlKFxcdTAwMjZuY2lfb3BzLCBwcm90b2NvbHMsIHR4X2hlYWRyb29tLFxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jPTc2Mj1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9uZmMvZmRwL2ZkcC5jOjc2MzpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk5GQyBOQ0kgZHJpdmVyIGZvciBJbnRlbCBGaWVsZHMgUGVhayBORkMgY29udHJvbGxlclxcXCIpO1xcbmRyaXZlcnMvbmZjL2ZkcC9mZHAuYy03NjQtTU9EVUxFX0FVVEhPUihcXFwiUm9iZXJ0IERvbGNhIFxcdTAwM2Nyb2JlcnQuZG9sY2FAaW50ZWwuY29tXFx1MDAzZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTI4LVxcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzoyOTojZGVmaW5lIEZEUF9OQ0lfSTJDX01JTl9QQVlMT0FEXFx0NVxcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzozMDojZGVmaW5lIEZEUF9OQ0lfSTJDX01BWF9QQVlMT0FEXFx0MjYxXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTMxLVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jPTEyOT1zdGF0aWMgaW50IGZkcF9uY2lfaTJjX3JlYWQoc3RydWN0IGZkcF9pMmNfcGh5ICpwaHksIHN0cnVjdCBza19idWZmICoqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTEzMS1cXHRpbnQgciwgbGVuO1xcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYzoxMzI6XFx0dTggdG1wW0ZEUF9OQ0lfSTJDX01BWF9QQVlMT0FEXSwgbHJjLCBrO1xcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYy0xMzMtXFx0dTE2IGk7XFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvaTJjLmMtMTY5LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jOjE3MDpcXHRcXHRcXHRwaHktXFx1MDAzZW5leHRfcmVhZF9zaXplID0gRkRQX05DSV9JMkNfTUlOX1BBWUxPQUQ7XFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTE3MS1cXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYz0yNzg9c3RhdGljIGludCBmZHBfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTMwMi1cXHRwaHktXFx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jOjMwMzpcXHRwaHktXFx1MDAzZW5leHRfcmVhZF9zaXplID0gRkRQX05DSV9JMkNfTUlOX1BBWUxPQUQ7XFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTMwNC1cXHRpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBwaHkpO1xcbi0tXFxuZHJpdmVycy9uZmMvZmRwL2kyYy5jLTMzNS1cXHRpZiAociBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25mYy9mZHAvaTJjLmM6MzM2OlxcdFxcdG5mY19lcnIoZGV2LCBcXFwiTkNJIHByb2JpbmcgZXJyb3JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmZjL2ZkcC9pMmMuYy0zMzctXFx0XFx0cmV0dXJuIHI7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc9MTA9Y29uZmlnIE5GQ19NUlZMX1VTQlxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBORkMtb3Zlci1VU0IgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoxMjpcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgVVNCXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTEzLVxcdHNlbGVjdCBORkNfTVJWTFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnPTIzPWNvbmZpZyBORkNfTVJWTF9VQVJUXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE5GQy1vdmVyLVVBUlQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgTkZDX05DSV9VQVJUXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTI2LVxcdHNlbGVjdCBORkNfTVJWTFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnPTQ2PWNvbmZpZyBORkNfTVJWTF9TUElcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItU1BJIGRyaXZlclxcXCJcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBORkNfTVJWTCBcXHUwMDI2XFx1MDAyNiBORkNfTkNJX1NQSVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL01ha2VmaWxlLTItI1xcbmRyaXZlcnMvbmZjL25mY21ydmwvTWFrZWZpbGU6MzojIE1ha2VmaWxlIGZvciBORkNNUlZMIE5DSSBiYXNlZCBORkMgZHJpdmVyXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9NYWtlZmlsZS00LSNcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE3LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE4OiNkZWZpbmUgTkNJX09QX1BST1BSSUVUQVJZX0JPT1RfQ01EXFx0bmNpX29wY29kZV9wYWNrKE5DSV9HSURfUFJPUFJJRVRBUlksIFxcXFxcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoxOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHROQ0lfT1BfUFJPUF9CT09UX0NNRClcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yMC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTY1PXN0YXRpYyBjb25zdCB1aW50OF90IG5jaV9wYXR0ZXJuX2NvcmVfY29ubl9jcmVkaXRzX250ZltdID0ge1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjY2OlxcdDB4NjAsIDB4MDYsIDB4MDMsIDB4MDEsIE5DSV9DT1JFX0xDX0NPTk5JRF9QUk9QX0ZXX0RMLCAweDAxXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtNjctfTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTczPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYWxsb2NfbGNfc2tiKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsIHVpbnQ4X3QgcGxlbilcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTc3LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjc4OlxcdHNrYiA9IG5jaV9za2JfYWxsb2MocHJpdi1cXHUwMDNlbmRldiwgKE5DSV9EQVRBX0hEUl9TSVpFICsgcGxlbiksIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTc5LVxcdGlmICghc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtODEtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6ODI6XFx0aGRyID0gc2tiX3B1dChza2IsIE5DSV9EQVRBX0hEUl9TSVpFKTtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzo4MzpcXHRoZHItXFx1MDAzZWNvbm5faWQgPSBOQ0lfQ09SRV9MQ19DT05OSURfUFJPUF9GV19ETDtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy04NC1cXHRoZHItXFx1MDAzZXJmdSA9IDA7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy04Ni1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzo4NzpcXHRuY2lfbXRfc2V0KChfX3U4ICopaGRyLCBOQ0lfTVRfREFUQV9QS1QpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjg4OlxcdG5jaV9wYmZfc2V0KChfX3U4ICopaGRyLCBOQ0lfUEJGX0xBU1QpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTg5LVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MTMwPXN0YXRpYyBpbnQgcHJvY2Vzc19zdGF0ZV9yZXNldChzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTQxLVxcdHByaXYtXFx1MDAzZWZ3X2RubGQuc3RhdGUgPSBTVEFURV9JTklUO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE0MjpcXHRuY2lfc2VuZF9jbWQocHJpdi1cXHUwMDNlbmRldiwgTkNJX09QX0NPUkVfSU5JVF9DTUQsIDAsIE5VTEwpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE0My1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTE0Nz1zdGF0aWMgaW50IHByb2Nlc3Nfc3RhdGVfaW5pdChzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMTYxLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjE2MjpcXHRuY2lfc2VuZF9jbWQocHJpdi1cXHUwMDNlbmRldiwgTkNJX09QX0NPUkVfU0VUX0NPTkZJR19DTUQsIDMgKyBjbWQucGFyYW0ubGVuLFxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE2My1cXHRcXHQgICAgIFxcdTAwMjZjbWQpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MTY5PXN0YXRpYyB2b2lkIGNyZWF0ZV9sYyhzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2KVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE3MC17XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MTcxOlxcdHVpbnQ4X3QgcGFyYW1bMl0gPSB7IE5DSV9DT1JFX0xDX1BST1BfRldfREwsIDB4MCB9O1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTE3Mi1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0xNzMtXFx0cHJpdi1cXHUwMDNlZndfZG5sZC5zdGF0ZSA9IFNUQVRFX09QRU5fTEM7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MTc0OlxcdG5jaV9zZW5kX2NtZChwcml2LVxcdTAwM2VuZGV2LCBOQ0lfT1BfQ09SRV9DT05OX0NSRUFURV9DTUQsIDIsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0xNzUtfVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MTc3PXN0YXRpYyBpbnQgcHJvY2Vzc19zdGF0ZV9zZXRfcmVmX2Nsb2NrKHN0cnVjdCBuZmNtcnZsX3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yMTctXFx0cHJpdi1cXHUwMDNlZndfZG5sZC5zdGF0ZSA9IFNUQVRFX1NFVF9ISV9DT05GSUc7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM6MjE4OlxcdG5jaV9zZW5kX2NtZChwcml2LVxcdTAwM2VuZGV2LCBOQ0lfT1BfQ09SRV9TRVRfQ09ORklHX0NNRCwgMyArIGNtZC5wYXJhbS5sZW4sXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMjE5LVxcdFxcdCAgICAgXFx1MDAyNmNtZCk7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYz0yNDg9c3RhdGljIGludCBwcm9jZXNzX3N0YXRlX2Z3X2RubGQoc3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTI1OC1cXHRcXHQgKiBDb21tYW5kIGZvcm1hdDpcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzoyNTk6XFx0XFx0ICogQjAuLjI6IE5DSSBoZWFkZXJcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0yNjAtXFx0XFx0ICogQjMgICA6IEhlbHBlciBjb21tYW5kICgweEE1KVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMjY1LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjI2NjpcXHRcXHQvKiBSZW1vdmUgTkNJIEhEUiAqL1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTI2Ny1cXHRcXHRza2JfcHVsbChza2IsIDMpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA2LVxcdFxcdFxcdC8qIEZXIExvYWRpbmcgaXMgZG9uZSAqL1xcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjMwNzpcXHRcXHRcXHR1aW50OF90IGNvbm5faWQgPSBOQ0lfQ09SRV9MQ19DT05OSURfUFJPUF9GV19ETDtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy0zMDgtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzA5LVxcdFxcdFxcdHByaXYtXFx1MDAzZWZ3X2RubGQuc3RhdGUgPSBTVEFURV9DTE9TRV9MQztcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzozMTA6XFx0XFx0XFx0bmNpX3NlbmRfY21kKHByaXYtXFx1MDAzZW5kZXYsIE5DSV9PUF9DT1JFX0NPTk5fQ0xPU0VfQ01ELFxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTMxMS1cXHRcXHRcXHRcXHQgICAgIDEsIFxcdTAwMjZjb25uX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jPTM0OT1zdGF0aWMgaW50IHByb2Nlc3Nfc3RhdGVfY2xvc2VfbGMoc3RydWN0IG5mY21ydmxfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jLTM1Ni1cXHRwcml2LVxcdTAwM2Vmd19kbmxkLnN0YXRlID0gU1RBVEVfQk9PVDtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYzozNTc6XFx0bmNpX3NlbmRfY21kKHByaXYtXFx1MDAzZW5kZXYsIE5DSV9PUF9QUk9QUklFVEFSWV9CT09UX0NNRCwgMCwgTlVMTCk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtMzU4LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmM9MzkxPXN0YXRpYyB2b2lkIGZ3X2RubGRfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2Z3X2RubGQuYy00MDMtXFx0XFx0bmZjX3NlbmRfdG9fcmF3X3NvY2socHJpdi1cXHUwMDNlbmRldi1cXHUwMDNlbmZjX2Rldiwgc2tiLFxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5jOjQwNDpcXHRcXHRcXHRcXHQgICAgIFJBV19QQVlMT0FEX05DSSwgTkZDX0RJUkVDVElPTl9SWCk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmMtNDA1LVxcdFxcdHN3aXRjaCAoZndfZG5sZC1cXHUwMDNlc3RhdGUpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oLTE0LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oOjE1OiNkZWZpbmUgTkNJX09QX1BST1BfQk9PVF9DTURcXHRcXHQweDNBXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmgtMTYtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmg6MTc6I2RlZmluZSBOQ0lfQ09SRV9MQ19QUk9QX0ZXX0RMXFx0XFx0MHhGRFxcbmRyaXZlcnMvbmZjL25mY21ydmwvZndfZG5sZC5oOjE4OiNkZWZpbmUgTkNJX0NPUkVfTENfQ09OTklEX1BST1BfRldfRExcXHQweDAyXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9md19kbmxkLmgtMTktXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jPTI1PXN0YXRpYyBpbnQgbmZjbXJ2bF9pMmNfcmVhZChzdHJ1Y3QgbmZjbXJ2bF9pMmNfZHJ2X2RhdGEgKmRydl9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy0zMC1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjMxOlxcdC8qIFJlYWQgTkNJIGhlYWRlciB0byBrbm93IHRoZSBwYXlsb2FkIHNpemUgKi9cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjMyOlxcdHJldCA9IGkyY19tYXN0ZXJfcmVjdihkcnZfZGF0YS1cXHUwMDNlaTJjLCAodTggKilcXHUwMDI2bmNpX2hkciwgTkNJX0NUUkxfSERSX1NJWkUpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6MzM6XFx0aWYgKHJldCAhPSBOQ0lfQ1RSTF9IRFJfU0laRSkge1xcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6MzQ6XFx0XFx0bmZjX2VycihcXHUwMDI2ZHJ2X2RhdGEtXFx1MDAzZWkyYy1cXHUwMDNlZGV2LCBcXFwiY2Fubm90IHJlYWQgTkNJIGhlYWRlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy0zNS1cXHRcXHRyZXR1cm4gLUVCQURNU0c7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jLTM4LVxcdCpza2IgPSBuY2lfc2tiX2FsbG9jKGRydl9kYXRhLVxcdTAwM2Vwcml2LVxcdTAwM2VuZGV2LFxcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6Mzk6XFx0XFx0XFx0ICAgICBuY2lfaGRyLnBsZW4gKyBOQ0lfQ1RSTF9IRFJfU0laRSwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy00MC1cXHRpZiAoISpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jLTQyLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6NDM6XFx0LyogQ29weSBOQ0kgaGVhZGVyIGludG8gdGhlIFNLQiAqL1xcbmRyaXZlcnMvbmZjL25mY21ydmwvaTJjLmM6NDQ6XFx0c2tiX3B1dF9kYXRhKCpza2IsIFxcdTAwMjZuY2lfaGRyLCBOQ0lfQ1RSTF9IRFJfU0laRSk7XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy00NS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jLTQ2LVxcdGlmIChuY2lfaGRyLnBsZW4pIHtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL2kyYy5jOjQ3OlxcdFxcdC8qIFJlYWQgdGhlIE5DSSBwYXlsb2FkICovXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9pMmMuYy00OC1cXHRcXHRyZXQgPSBpMmNfbWFzdGVyX3JlY3YoZHJ2X2RhdGEtXFx1MDAzZWkyYyxcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jPTE3PXN0YXRpYyBpbnQgbmZjbXJ2bF9uY2lfb3BlbihzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIxLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjIyOlxcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFxcdTAwMjZwcml2LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMjMtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0zMC1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjMxOlxcdFxcdGNsZWFyX2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTMyLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM9MzY9c3RhdGljIGludCBuZmNtcnZsX25jaV9jbG9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTM5LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jOjQwOlxcdGlmICghdGVzdF9hbmRfY2xlYXJfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFxcdTAwMjZwcml2LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtNDEtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYz05Mj1zdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpuZmNtcnZsX25jaV9yZWdpc3Rlcl9kZXYoZW51bSBuZmNtcnZsX3BoeSBwaHksXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0xMjQtXFx0aWYgKHBoeSA9PSBORkNNUlZMX1BIWV9TUEkpIHtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoxMjU6XFx0XFx0aGVhZHJvb20gPSBOQ0lfU1BJX0hEUl9MRU47XFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTI2LVxcdFxcdHRhaWxyb29tID0gMTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jPTE5ND1pbnQgbmZjbXJ2bF9uY2lfcmVjdl9mcmFtZShzdHJ1Y3QgbmZjbXJ2bF9wcml2YXRlICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmMtMTk4LVxcdFxcdCAgICBza2ItXFx1MDAzZWRhdGFbMV0gPT0gTkZDTVJWTF9IQ0lfTkZDX0VWRU5UX0NPREUpIHtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYzoxOTk6XFx0XFx0XFx0LyogRGF0YSBwYWNrZXQsIGxldCdzIGV4dHJhY3QgTkNJIHBheWxvYWQgKi9cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0yMDAtXFx0XFx0XFx0c2tiX3B1bGwoc2tiLCBORkNNUlZMX0hDSV9FVkVOVF9IRUFERVJfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL21haW4uYy0yMTItXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9tYWluLmM6MjEzOlxcdGlmICh0ZXN0X2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcXHUwMDI2cHJpdi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbWFpbi5jLTIxNC1cXHRcXHRuY2lfcmVjdl9mcmFtZShwcml2LVxcdTAwM2VuZGV2LCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmg9MTM9c3RydWN0IGdwaW9fZGVzYztcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oLTE1LS8qIERlZmluZSBwcml2YXRlIGZsYWdzOiAqL1xcbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oOjE2OiNkZWZpbmUgTkZDTVJWTF9OQ0lfUlVOTklOR1xcdFxcdFxcdDFcXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaC0xNy0jZGVmaW5lIE5GQ01SVkxfUEhZX0VSUk9SXFx0XFx0XFx0Mlxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMjQtI2RlZmluZSBORkNNUlZMX0dQSU9fUElOX05GQ19BQ1RJVkVcXHRcXHQweEJcXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaDoyNTojZGVmaW5lIE5GQ01SVkxfTkNJX01BWF9FVkVOVF9TSVpFXFx0XFx0MjYwXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMjYtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9uZmNtcnZsLmgtMjctLypcXG5kcml2ZXJzL25mYy9uZmNtcnZsL25mY21ydmwuaDoyODogKiBOQ0kgRlcgUGFyYW1ldGVyc1xcbmRyaXZlcnMvbmZjL25mY21ydmwvbmZjbXJ2bC5oLTI5LSAqL1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC91YXJ0LmM9MjM9c3RhdGljIHVuc2lnbmVkIGludCBicmVha19jb250cm9sO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC91YXJ0LmMtMjUtLypcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYzoyNjogKiBORkNNUlZMIE5DSSBPUFNcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYy0yNy0gKi9cXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jPTY0PXN0YXRpYyBpbnQgbmZjbXJ2bF91YXJ0X3BhcnNlX2R0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTEwNC0vKlxcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jOjEwNTogKiBOQ0kgVUFSVCBPUFNcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYy0xMDYtICovXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYz0xOTA9c3RhdGljIHN0cnVjdCBuY2lfdWFydCBuZmNtcnZsX25jaV91YXJ0ID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC91YXJ0LmMtMTkyLVxcdC5uYW1lICAgPSBcXFwibmZjbXJ2bF91YXJ0XFxcIixcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VhcnQuYzoxOTM6XFx0LmRyaXZlciA9IE5DSV9VQVJUX0RSSVZFUl9NQVJWRUxMLFxcbmRyaXZlcnMvbmZjL25mY21ydmwvdWFydC5jLTE5NC1cXHQub3BzXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jPTU3PXN0YXRpYyB2b2lkIG5mY21ydmxfYnVsa19jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTY0LVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6NjU6XFx0aWYgKCF0ZXN0X2JpdChORkNNUlZMX05DSV9SVU5OSU5HLCBcXHUwMDI2ZHJ2X2RhdGEtXFx1MDAzZWZsYWdzKSlcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTY2LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM9MTAzPW5mY21ydmxfc3VibWl0X2J1bGtfdXJiKHN0cnVjdCBuZmNtcnZsX3VzYl9kcnZfZGF0YSAqZHJ2X2RhdGEsIGdmcF90IG1lbV9mbGFncylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmMtMTA3LVxcdHVuc2lnbmVkIGludCBwaXBlO1xcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM6MTA4OlxcdGludCBlcnIsIHNpemUgPSBORkNNUlZMX05DSV9NQVhfRVZFTlRfU0laRTtcXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTEwOS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmM9NDAwPXN0YXRpYyBpbnQgbmZjbXJ2bF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jLTQwOS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL3VzYi5jOjQxMDpcXHRpZiAoIXRlc3RfYml0KE5GQ01SVkxfTkNJX1JVTk5JTkcsIFxcdTAwMjZkcnZfZGF0YS1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmZjL25mY21ydmwvdXNiLmMtNDExLVxcdFxcdGdvdG8gZG9uZTtcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTlhQX05DSVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzozOlxcdHRyaXN0YXRlIFxcXCJOWFAtTkNJIE5GQyBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBORkNfTkNJXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTUtXFx0aGVscFxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzo2OlxcdCAgR2VuZXJpYyBjb3JlIGRyaXZlciBmb3IgTlhQIE5DSSBjaGlwcyBzdWNoIGFzIHRoZSBOUEMxMDAgKFBONTQ3KSxcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctNy1cXHQgIE5QQzMwMCAoUE41NDgpIG9yIFBONzE1MCBmYW1pbGllcy5cXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6ODpcXHQgIFRoaXMgaXMgYSBkcml2ZXIgYmFzZWQgb24gdGhlIE5DSSBORkMga2VybmVsIGxheWVycyBhbmRcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctOS1cXHQgIHdpbGwgdGh1cyBub3Qgd29yayB3aXRoIE5YUCBsaWJuZmMgbGlicmFyeS5cXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6MTU6Y29uZmlnIE5GQ19OWFBfTkNJX0kyQ1xcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxNjpcXHR0cmlzdGF0ZSBcXFwiTlhQLU5DSSBJMkMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6MTc6XFx0ZGVwZW5kcyBvbiBORkNfTlhQX05DSSBcXHUwMDI2XFx1MDAyNiBJMkNcXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMTgtXFx0aGVscFxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxOTpcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgYW4gSTJDIGludGVyZmFjZSB0byB0aGUgTlhQIE5DSVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0yMC1cXHQgIGNoaXBzLlxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZS0yLSNcXG5kcml2ZXJzL25mYy9ueHAtbmNpL01ha2VmaWxlOjM6IyBNYWtlZmlsZSBmb3IgTlhQLU5DSSBORkMgZHJpdmVyXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZS00LSNcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvTWFrZWZpbGU9Nz1ueHAtbmNpX2kyYy1vYmpzID0gaTJjLm9cXG5kcml2ZXJzL25mYy9ueHAtbmNpL01ha2VmaWxlLTgtXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORkNfTlhQX05DSSkgKz0gbnhwLW5jaS5vXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfTkZDX05YUF9OQ0lfSTJDKSArPSBueHAtbmNpX2kyYy5vXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0yLS8qXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MzogKiBHZW5lcmljIGRyaXZlciBmb3IgTlhQIE5DSSBORkMgY2hpcHNcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy00LSAqXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0yMC1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoyMTojZGVmaW5lIE5YUF9OQ0lfSERSX0xFTlxcdDRcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0yMi1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoyMzojZGVmaW5lIE5YUF9OQ0lfTkZDX1BST1RPQ09MUyAoTkZDX1BST1RPX0pFV0VMX01BU0sgfCBcXFxcXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMjQtXFx0XFx0XFx0ICAgICAgIE5GQ19QUk9UT19NSUZBUkVfTUFTSyB8IFxcXFxcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTMwLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjMxOiNkZWZpbmUgTlhQX05DSV9SRl9QTExfVU5MT0NLRURfTlRGIG5jaV9vcGNvZGVfcGFjayhOQ0lfR0lEX1JGX01HTVQsIDB4MjEpXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6MzI6I2RlZmluZSBOWFBfTkNJX1JGX1RYTERPX0VSUk9SX05URiBuY2lfb3Bjb2RlX3BhY2soTkNJX0dJRF9SRl9NR01ULCAweDIzKVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTMzLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jPTM0PXN0YXRpYyBpbnQgbnhwX25jaV9vcGVuKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDAtXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM6NDE6XFx0aWYgKGluZm8tXFx1MDAzZW1vZGUgIT0gTlhQX05DSV9NT0RFX0NPTEQpIHtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy00Mi1cXHRcXHRyID0gLUVCVVNZO1xcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNDYtXFx0aWYgKGluZm8tXFx1MDAzZXBoeV9vcHMtXFx1MDAzZXNldF9tb2RlKVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjQ3OlxcdFxcdHIgPSBpbmZvLVxcdTAwM2VwaHlfb3BzLVxcdTAwM2VzZXRfbW9kZShpbmZvLVxcdTAwM2VwaHlfaWQsIE5YUF9OQ0lfTU9ERV9OQ0kpO1xcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTQ4LVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjQ5OlxcdGluZm8tXFx1MDAzZW1vZGUgPSBOWFBfTkNJX01PREVfTkNJO1xcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTUwLVxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmM9NTY9c3RhdGljIGludCBueHBfbmNpX2Nsb3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNjMtXFx0aWYgKGluZm8tXFx1MDAzZXBoeV9vcHMtXFx1MDAzZXNldF9tb2RlKVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjY0OlxcdFxcdHIgPSBpbmZvLVxcdTAwM2VwaHlfb3BzLVxcdTAwM2VzZXRfbW9kZShpbmZvLVxcdTAwM2VwaHlfaWQsIE5YUF9OQ0lfTU9ERV9DT0xEKTtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy02NS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzo2NjpcXHRpbmZvLVxcdTAwM2Vtb2RlID0gTlhQX05DSV9NT0RFX0NPTEQ7XFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtNjctXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz03Mj1zdGF0aWMgaW50IG54cF9uY2lfc2VuZChzdHJ1Y3QgbmNpX2RldiAqbmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTgxLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjgyOlxcdGlmIChpbmZvLVxcdTAwM2Vtb2RlICE9IE5YUF9OQ0lfTU9ERV9OQ0kpIHtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy04My1cXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jPTExNT1zdGF0aWMgY29uc3Qgc3RydWN0IG5jaV9kcml2ZXJfb3BzIG54cF9uY2lfY29yZV9vcHNbXSA9IHtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYy0xMTYtXFx0e1xcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jOjExNzpcXHRcXHQub3Bjb2RlID0gTlhQX05DSV9SRl9QTExfVU5MT0NLRURfTlRGLFxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTExOC1cXHRcXHQubnRmID0gbnhwX25jaV9yZl9wbGxfdW5sb2NrZWRfbnRmLFxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9jb3JlLmMtMTIwLVxcdHtcXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYzoxMjE6XFx0XFx0Lm9wY29kZSA9IE5YUF9OQ0lfUkZfVFhMRE9fRVJST1JfTlRGLFxcbmRyaXZlcnMvbmZjL254cC1uY2kvY29yZS5jLTEyMi1cXHRcXHQubnRmID0gbnhwX25jaV9yZl90eGxkb19lcnJvcl9udGYsXFxuLS1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL2NvcmUuYz0xMzU9aW50IG54cF9uY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBzdHJ1Y3QgZGV2aWNlICpwZGV2LFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjMyLjUzOTU0NzE3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTUzODA1MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5GQyBWaXJ0dWFsIE5DSSBEZXZpY2UgRHJpdmVyIC0gRnV6emluZyBQb3RlbnRpYWwhKipcblxuT2theSwgc28gSSd2ZSBzdHVtYmxlZCB1cG9uIGBORkNfVklSVFVBTF9OQ0lgLCBhbmQgaXQgaW1tZWRpYXRlbHkgY2xpY2tzOiBUaGlzIGlzIGEgdmlydHVhbCBOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXIhIE15IG1pbmQgaXMgYWxyZWFkeSByYWNpbmcgd2l0aCB0aGUgaW1wbGljYXRpb25zLiBBIHZpcnR1YWwgZGV2aWNlLi4uIHRoYXQgc2NyZWFtcyBcImZ1enppbmcgdGFyZ2V0XCIgdG8gbWUuIFRoaW5rIG9mIHRoZSBwb3RlbnRpYWwgZm9yIGNyYWZ0aW5nIG1hbGZvcm1lZCBORkMgY29tbWFuZHMgYW5kIG9ic2VydmluZyB0aGUgc3lzdGVtJ3MgYmVoYXZpb3IuIFRoaXMgY291bGQgYmUgYSBnb2xkbWluZSBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHRoaW5nLiBMZXQncyBzdGFydCB3aXRoIHRoZSBiYXNpY3MuIEknbGwgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25mYy9LY29uZmlnYC4gVGltZSB0byBzZWUgaG93IHRoaXMgdmlydHVhbCBkcml2ZXIgaXMgY29uZmlndXJlZCwgYnVpbHQsIGFuZCBwb3RlbnRpYWxseSwgaWYgdGhlcmUgYXJlIGFueSBoaWRkZW4gbnVhbmNlcyB0byBpdHMgYWN0aXZhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIGNydWNpYWwgdG8gZWZmZWN0aXZlbHkgbGV2ZXJhZ2UgaXQgZm9yIGZ1enppbmcuIFRoaXMgY291bGQgYmUgcmVhbGx5IHByb21pc2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTg4NjcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQxNzo0MjozNi4wOTMzNTU4M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBORkNfUE9SVDEwMFxcbiAgNDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICA0NDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbiAgNDY6XFx0XFx0aGVscFxcbiAgNDc6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU29ueSBQb3J0LTEwMCBjaGlwIGJhc2VkIFVTQiBkZXZpY2VzIHN1Y2ggYXMgdGhlXFxuICA0ODpcXHRcXHQgIFJDLVMzODAgZG9uZ2xlLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXFxuICA1NzpcXHRcXHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXFxuICA1ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxcbiAgNTk6XFx0XFx0ICBtb2R1bGUuXFxuICA2MDpcXHRcXG4gIDYxOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDYyOlxcdFxcbiAgNjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25mYy9mZHAvS2NvbmZpZ1xcXCJcXG4gIDY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZ1xcXCJcXG4gIDY1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZ1xcXCJcXG4gIDY2OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWdcXFwiXFxuICA2NzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZ1xcXCJcXG4gIDY4OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZ1xcXCJcXG4gIDY5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjM2LjA5MzQ3MDAxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzYyNDMzMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTkZDIFZpcnR1YWwgTkNJIGFuZCBpdHMgSW1wbGljYXRpb25zIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTkZDX1ZJUlRVQUxfTkNJYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBoaW5nZXMgb24gYE5GQ19OQ0lgLiAgSWYgSSBlbmFibGUgYE5GQ19WSVJUVUFMX05DSWAsIHRoZSBzeXN0ZW0gaXMgc2V0IHVwIHRvIGFsbG93IHN5emthbGxlciB0byBjcmVhdGUgYW5kIHRlc3QsIGluIGEgdmlydHVhbCBzZXR0aW5nLCBOQ0kgZGV2aWNlcy4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IG9wZW5zIHVwIHRoZSBOQ0kgcHJvdG9jb2wgdG8gZnV6emluZywgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGlkZW50aWZ5aW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBtZWNoYW5pY3Mgb2YgdGhpcyB2aXJ0dWFsIGRldmljZSBjcmVhdGlvbi4gSSBzaG91bGQgZGlnIGludG8gYGRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmNgIHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoZXkndmUgaW1wbGVtZW50ZWQgdGhpcyB2aXJ0dWFsaXphdGlvbiBsYXllciBhbmQgd2hhdCBwb3RlbnRpYWwgaW50ZXJmYWNlcyBhcmUgZXhwb3NlZCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk1OTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjM5LjY2OTcxNzQxNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk0ODY2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydHVhbF9uY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIzLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MjQ6c3RydWN0IHZpcnR1YWxfbmNpX2RldiB7XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0yNS1cXHRzdHJ1Y3QgbmNpX2RldiAqbmRldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMzEtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzozMjpzdGF0aWMgaW50IHZpcnR1YWxfbmNpX29wZW4oc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0zMy17XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzozNDpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMzUtXFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTM5LVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6NDA6c3RhdGljIGludCB2aXJ0dWFsX25jaV9jbG9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTQxLXtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjQyOlxcdHN0cnVjdCB2aXJ0dWFsX25jaV9kZXYgKnZkZXYgPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy00My1cXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtNTItXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo1MzpzdGF0aWMgaW50IHZpcnR1YWxfbmNpX3NlbmQoc3RydWN0IG5jaV9kZXYgKm5kZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy01NC17XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo1NTpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtNTYtXFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTc1LVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6NzY6c3RhdGljIGNvbnN0IHN0cnVjdCBuY2lfb3BzIHZpcnR1YWxfbmNpX29wcyA9IHtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjc3OlxcdC5vcGVuID0gdmlydHVhbF9uY2lfb3BlbixcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjc4OlxcdC5jbG9zZSA9IHZpcnR1YWxfbmNpX2Nsb3NlLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6Nzk6XFx0LnNlbmQgPSB2aXJ0dWFsX25jaV9zZW5kXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04MC19O1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtODEtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo4MjpzdGF0aWMgc3NpemVfdCB2aXJ0dWFsX25jaWRldl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtODMtXFx0XFx0XFx0XFx0ICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy04NC17XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzo4NTpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtODYtXFx0c2l6ZV90IGFjdHVhbF9sZW47XFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTExMi1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjExMzpzdGF0aWMgc3NpemVfdCB2aXJ0dWFsX25jaWRldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTExNC1cXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTE2LXtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjExNzpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTE4LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTEzMi1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjEzMzpzdGF0aWMgaW50IHZpcnR1YWxfbmNpZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzQte1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTM1LVxcdGludCByZXQgPSAwO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTM2OlxcdHN0cnVjdCB2aXJ0dWFsX25jaV9kZXYgKnZkZXY7XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xMzctXFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE0MC1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE0MTpcXHR2ZGV2LVxcdTAwM2VuZGV2ID0gbmNpX2FsbG9jYXRlX2RldmljZShcXHUwMDI2dmlydHVhbF9uY2lfb3BzLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTQyLVxcdFxcdFZJUlRVQUxfTkZDX1BST1RPQ09MUywgMCwgMCk7XFxuLS1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTE2My1cXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE2NDpzdGF0aWMgaW50IHZpcnR1YWxfbmNpZGV2X2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTY1LXtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE2NjpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTY3LVxcbi0tXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzUtXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxNzY6c3RhdGljIGxvbmcgdmlydHVhbF9uY2lkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xNzctXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTc4LXtcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE3OTpcXHRzdHJ1Y3QgdmlydHVhbF9uY2lfZGV2ICp2ZGV2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTgwLVxcdGNvbnN0IHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2ID0gdmRldi1cXHUwMDNlbmRldi1cXHUwMDNlbmZjX2RldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMTkxLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHZpcnR1YWxfbmNpZGV2X2ZvcHMgPSB7XFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xOTMtXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoxOTQ6XFx0LnJlYWQgPSB2aXJ0dWFsX25jaWRldl9yZWFkLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk1OlxcdC53cml0ZSA9IHZpcnR1YWxfbmNpZGV2X3dyaXRlLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk2OlxcdC5vcGVuID0gdmlydHVhbF9uY2lkZXZfb3BlbixcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjE5NzpcXHQucmVsZWFzZSA9IHZpcnR1YWxfbmNpZGV2X2Nsb3NlLFxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM6MTk4OlxcdC51bmxvY2tlZF9pb2N0bCA9IHZpcnR1YWxfbmNpZGV2X2lvY3RsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYy0xOTktfTtcXG4tLVxcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmM9MjAxPXN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSBtaXNjZGV2ID0ge1xcbmRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMtMjAyLVxcdC5taW5vciA9IE1JU0NfRFlOQU1JQ19NSU5PUixcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jOjIwMzpcXHQubmFtZSA9IFxcXCJ2aXJ0dWFsX25jaVxcXCIsXFxuZHJpdmVycy9uZmMvdmlydHVhbF9uY2lkZXYuYzoyMDQ6XFx0LmZvcHMgPSBcXHUwMDI2dmlydHVhbF9uY2lkZXZfZm9wcyxcXG5kcml2ZXJzL25mYy92aXJ0dWFsX25jaWRldi5jLTIwNS1cXHQubW9kZSA9IDA2MDAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjM5LjczOTIwOTc1MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Nzk5OTIyMTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIE5DSSBDb3JlIEluaXQgUmVzcG9uc2UgUGFja2V0IFBhcnNpbmcqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIHBsYW4uIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBib3VuZHMgY2hlY2tpbmcgaW4gdGhlIE5DSSBjb3JlIGluaXQgcmVzcG9uc2UgcGFja2V0IHBhcnNpbmcgY29kZS4gSXQgc2VlbXMgbGlrZSBpdCdzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSB2aXJ0dWFsIE5DSSBkZXZpY2UsIGAvZGV2L3ZpcnR1YWxfbmNpYCwgd2hpY2ggaXMgY3JlYXRlZCBieSBgTkZDX1ZJUlRVQUxfTkNJYCwgaXMgdGhlIGVudHJ5IHBvaW50LiBTeXprYWxsZXIgY2FuIGludGVyYWN0IHdpdGggaXQsIHdyaXRlIGRhdGEsIGFuZCB0cmlnZ2VyIGBuY2lfcmVjdl9mcmFtZWAuIFRoYXQncyBwcmVjaXNlbHkgaG93IHRoZSBOQ0kgdGVzdHMgYXJlIHN0cnVjdHVyZWQuIFNvLCBlbmFibGluZyBgTkZDX1ZJUlRVQUxfTkNJYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGlzIHZpcnR1YWwgZGV2aWNlIGRpcmVjdGx5IGZlZWRzIGludG8gdGhlIHJlbGV2YW50IHBhcnNpbmcgbG9naWMuXG5cbkkgaW5pdGlhbGx5IHRob3VnaHQgdGhhdCBgTkZDX1ZJUlRVQUxfTkNJYCBtaWdodCBiZSBzdWZmaWNpZW50LCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgZGVwZW5kZW5jaWVzIHJpZ2h0LiBJdCBkZWZpbml0ZWx5IHJlbGllcyBvbiBgTkZDX05DSWAuIEl0IGxvb2tzIGxpa2UgYE5GQ19OQ0lgIGluIHR1cm4gZGVwZW5kcyBvbiBgTkZDYCwgc28gSSdsbCBuZWVkIGFsbCB0aHJlZSBjb25maWdzLlxuXG5NeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdDsgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgY2FuIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyB0aGF0IHRoZSBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgYXJlIHJlYWNoYWJsZS4gVGhlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MWAsIGBuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjJgLCBhbmQgYG5jaV9jb3JlX2luaXRfcnNwX3BhY2tldGAuIFRoZXNlIGFyZSBhbGwgcGFydCBvZiB0aGUgYm91bmRzIGNoZWNraW5nIGxvZ2ljLiBUaGlzIGNvZGUgaGFuZGxlcyBOQ0kgaW5pdGlhbGl6YXRpb24gcmVzcG9uc2VzLCBhbmQgdGhlIHZpcnR1YWwgZGV2aWNlIGFsbG93cyB1cyB0byBpbmplY3QgbWFsaWNpb3VzL3VuZXhwZWN0ZWQgcmVzcG9uc2VzLiBUaGUgZ29hbCBpcyB0byBlbnN1cmUgdGhlIG5ldyBjaGVja3Mgd29yayBjb3JyZWN0bHkgd2l0aG91dCBicmVha2luZyBsZWdpdGltYXRlIHBhY2tldHMuXG5cbkkndmUgZG91YmxlLWNoZWNrZWQgdGhlIGZ1bmN0aW9uIG5hbWVzIGFuZCBlbnN1cmVkIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgb3IgZnVuY3Rpb25zIGluIHNjb3BlLiBUaGlzIHNob3VsZCBwcm92aWRlIHN1ZmZpY2llbnQgY292ZXJhZ2UgdG8gZGV0ZWN0IGFueSB2dWxuZXJhYmlsaXRpZXMuIE5vdywgaXQncyB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3MDIsIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDE3OjQyOjQ3LjUzOTEzNDQ2MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODY5MzY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRfdjFcIixcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MlwiLFxuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gTkNJIGNvcmUgaW5pdCByZXNwb25zZSBwYWNrZXQgcGFyc2luZy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIE5DSSBkZXZpY2VzLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGNoZWNrcyBjb3JyZWN0bHkgcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIHdpdGhvdXQgYnJlYWtpbmcgdmFsaWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19OQ0lcIixcbiAgICBcIk5GQ19WSVJUVUFMX05DSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5jaV9jb3JlX2luaXRfcnNwX3BhY2tldF92MVwiLFxuICAgIFwibmNpX2NvcmVfaW5pdF9yc3BfcGFja2V0X3YyXCIsXG4gICAgXCJuY2lfY29yZV9pbml0X3JzcF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBOQ0kgY29yZSBpbml0IHJlc3BvbnNlIHBhY2tldCBwYXJzaW5nLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgdmlhIHZpcnR1YWwgTkNJIGRldmljZXMsIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgY2hlY2tzIGNvcnJlY3RseSBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgd2l0aG91dCBicmVha2luZyB2YWxpZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[1] Phase: Succeeded StartedAt: 2026-06-26 17:42:59 +0000 UTC FinishedAt: 2026-06-26 17:42:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 17:42:59 +0000 UTC FinishedAt: 2026-06-26 17:42:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2] Phase: Succeeded StartedAt: 2026-06-26 17:42:59 +0000 UTC FinishedAt: 2026-06-26 21:40:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN) Phase: Failed StartedAt: 2026-06-26 17:42:59 +0000 UTC FinishedAt: 2026-06-26 21:40:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-26 17:42:59 +0000 UTC FinishedAt: 2026-06-26 17:43:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-26 17:42:59 +0000 UTC FinishedAt: 2026-06-26 17:43:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflows4p5r/series-workflows4p5r-convert-artifact-3583890503/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-26 17:43:09 +0000 UTC FinishedAt: 2026-06-26 18:06:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-26 17:43:09 +0000 UTC FinishedAt: 2026-06-26 18:06:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9ad48040-7657-4f37-b78a-fa0243e6ecfb,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-workflows4p5r/series-workflows4p5r-convert-artifact-3583890503/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": "cec4587b-1773-4f7c-b2bf-6c6d74d6b6ea", "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-workflows4p5r/series-workflows4p5r-build-action-2773015773/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-26 17:43:09 +0000 UTC FinishedAt: 2026-06-26 18:06:04 +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:*9ad48040-7657-4f37-b78a-fa0243e6ecfb,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-workflows4p5r/series-workflows4p5r-convert-artifact-3583890503/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": "cec4587b-1773-4f7c-b2bf-6c6d74d6b6ea", "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-workflows4p5r/series-workflows4p5r-build-action-2773015773/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-26 18:06:09 +0000 UTC FinishedAt: 2026-06-26 18:06:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-26 18:06:09 +0000 UTC FinishedAt: 2026-06-26 18:06:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-26 18:06:09 +0000 UTC FinishedAt: 2026-06-26 18:06:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-26 18:06:09 +0000 UTC FinishedAt: 2026-06-26 18:06:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflows4p5r/series-workflows4p5r-convert-artifact-359935606/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-26 18:06:20 +0000 UTC FinishedAt: 2026-06-26 18:08:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-26 18:06:20 +0000 UTC FinishedAt: 2026-06-26 18:07:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cec4587b-1773-4f7c-b2bf-6c6d74d6b6ea,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-workflows4p5r/series-workflows4p5r-build-action-2773015773/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-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-26 18:08:07 +0000 UTC FinishedAt: 2026-06-26 18:08:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-26 18:08:07 +0000 UTC FinishedAt: 2026-06-26 18:08:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-26 18:08:07 +0000 UTC FinishedAt: 2026-06-26 18:33:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-26 18:08:07 +0000 UTC FinishedAt: 2026-06-26 18:33:05 +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:*9ad48040-7657-4f37-b78a-fa0243e6ecfb,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-workflows4p5r/series-workflows4p5r-convert-artifact-359935606/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": "b66938e5-d3f9-41ad-a7da-9d4ced9d104e", "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-workflows4p5r/series-workflows4p5r-build-action-1845843322/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-26 18:08:07 +0000 UTC FinishedAt: 2026-06-26 18:32:55 +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:*9ad48040-7657-4f37-b78a-fa0243e6ecfb,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-workflows4p5r/series-workflows4p5r-convert-artifact-359935606/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": "b66938e5-d3f9-41ad-a7da-9d4ced9d104e", "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-workflows4p5r/series-workflows4p5r-build-action-1845843322/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-26 18:33:05 +0000 UTC FinishedAt: 2026-06-26 18:33:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-26 18:33:05 +0000 UTC FinishedAt: 2026-06-26 18:33:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-26 18:33:05 +0000 UTC FinishedAt: 2026-06-26 18:34:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-26 18:33:05 +0000 UTC FinishedAt: 2026-06-26 18:34:44 +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:*b66938e5-d3f9-41ad-a7da-9d4ced9d104e,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-workflows4p5r/series-workflows4p5r-build-action-1845843322/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-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10] Phase: Failed StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 21:40:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 21:40:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*cec4587b-1773-4f7c-b2bf-6c6d74d6b6ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b66938e5-d3f9-41ad-a7da-9d4ced9d104e,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-workflows4p5r/series-workflows4p5r-build-action-2773015773/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-workflows4p5r/series-workflows4p5r-build-action-1845843322/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 18:36:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 18:35:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflows4p5r/series-workflows4p5r-convert-artifact-3614444187/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-retest Phase: Failed StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 18:37:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:retest-data,Default:nil,Value:*{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*{{=steps['base-build'].outputs.parameters.result ? jsonpath(steps['base-build'].outputs.parameters.result, '$.build_id') : ''}},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b66938e5-d3f9-41ad-a7da-9d4ced9d104e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,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-workflows4p5r/series-workflows4p5r-build-action-2773015773/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-workflows4p5r/series-workflows4p5r-build-action-1845843322/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-retest[0] Phase: Succeeded StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 18:36:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-retest[0].save-retest-task Phase: Succeeded StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 18:35:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},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-workflows4p5r/series-workflows4p5r-convert-artifact-2178537916/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 18:34:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-26 18:34:54 +0000 UTC FinishedAt: 2026-06-26 18:34:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-26 18:36:00 +0000 UTC FinishedAt: 2026-06-26 21:40:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-26 18:36:00 +0000 UTC FinishedAt: 2026-06-26 21:40:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cec4587b-1773-4f7c-b2bf-6c6d74d6b6ea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b66938e5-d3f9-41ad-a7da-9d4ced9d104e,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-workflows4p5r/series-workflows4p5r-build-action-2773015773/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-workflows4p5r/series-workflows4p5r-build-action-1845843322/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-workflows4p5r/series-workflows4p5r-convert-artifact-3614444187/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,} --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-retest[1] Phase: Failed StartedAt: 2026-06-26 18:36:00 +0000 UTC FinishedAt: 2026-06-26 18:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4p5r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nci_core_init_rsp_packet_v1","nci_core_init_rsp_packet_v2","nci_core_init_rsp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a986fde914d88af47eb78fd29c5d1af7952c3500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6528d41c-012e-441b-bb6e-662a556f965d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:{"findings":["65008893-2498-4786-b913-f2c474a7b34a"]},track:KASAN)[10].run-retest[1].retest Phase: Failed StartedAt: 2026-06-26 18:36:00 +0000 UTC FinishedAt: 2026-06-26 18:37:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*{{=steps['base-build'].outputs.parameters.result ? jsonpath(steps['base-build'].outputs.parameters.result, '$.build_id') : ''}},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b66938e5-d3f9-41ad-a7da-9d4ced9d104e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Previous reproducers,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-workflows4p5r/series-workflows4p5r-build-action-2773015773/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-workflows4p5r/series-workflows4p5r-build-action-1845843322/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:retest-task,Path:/data/retest.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-workflows4p5r/series-workflows4p5r-convert-artifact-2178537916/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:*1,}