Name: series-workflowf2lk9 Phase: Succeeded StartedAt: 2026-07-29 16:54:22 +0000 UTC FinishedAt: 2026-07-29 21:12:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[0] Phase: Succeeded StartedAt: 2026-07-29 16:54:22 +0000 UTC FinishedAt: 2026-07-29 17:00:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 16:54:22 +0000 UTC FinishedAt: 2026-07-29 17:00:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_CONFIGFS", "USB_CONFIGFS_F_UAC1", "USB_CONFIGFS_F_UAC2", "SND" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_CONFIGFS", "USB_CONFIGFS_F_UAC1", "USB_CONFIGFS_F_UAC2", "SND" ], "series_id": "625febe5-bbad-4322-8438-5dba7bbb8793" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "f_uac1_opts_c_srate_store", "f_uac1_opts_p_srate_store", "f_uac2_opts_c_srate_store", "f_uac2_opts_p_srate_store" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWNmZmMyY2Y0MWM2NmU1NjkwM2E0YzJhZjJlNGZhYTJlMTMyYzY3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDE2OjU4OjI4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuaW5kZXggODVjNTAyZTk4ZjU3Ny4uZjRiN2JiZDkzNGNhMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXG5AQCAtMTU5NCw2ICYjNDM7MTU5NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3QgZl91YWMxX29wdHMgKm9wdHMgPSB0b19mX3VhYzFfb3B0cyhpdGVtKTtcdFx0XFxcbiYjNDM7XHRjaGFyICpwYWdlX2FsbG9jID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1x0XHRcdFx0XHRcXFxuIFx0aW50IHJldCA9IC1FSU5WQUw7XHRcdFx0XHRcdFx0XFxcbiBcdGNoYXIgKnRva2VuO1x0XHRcdFx0XHRcdFx0XFxcbkBAIC0xNjA4LDcgJiM0MzsxNjA5LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuJiM0MztcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbiYjNDM7XHRpZiAoIXBhZ2VfYWxsb2MpIHtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0c3BsaXRfcGFnZSA9IHBhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4gXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwmIzM0OyxcJiMzNDspKSAhPSBOVUxMKSB7XHRcdFxcXG4gXHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuIFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG5AQCAtMTYxOSw3ICYjNDM7MTYyNSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHR9O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gZW5kOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRrZnJlZShzcGxpdF9wYWdlKTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGtmcmVlKHBhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcdFxcXG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbiBcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuaW5kZXggODk3Nzg3ZDA4MDNjMS4uMzM2YWVhZWM5YmEwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXG5AQCAtMjAxMiw2ICYjNDM7MjAxMiw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3QgZl91YWMyX29wdHMgKm9wdHMgPSB0b19mX3VhYzJfb3B0cyhpdGVtKTtcdFx0XFxcbiYjNDM7XHRjaGFyICpwYWdlX2FsbG9jID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1x0XHRcdFx0XHRcXFxuIFx0aW50IHJldCA9IC1FSU5WQUw7XHRcdFx0XHRcdFx0XFxcbiBcdGNoYXIgKnRva2VuO1x0XHRcdFx0XHRcdFx0XFxcbkBAIC0yMDI2LDcgJiM0MzsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuJiM0MztcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbiYjNDM7XHRpZiAoIXBhZ2VfYWxsb2MpIHtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0c3BsaXRfcGFnZSA9IHBhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4gXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwmIzM0OyxcJiMzNDspKSAhPSBOVUxMKSB7XHRcdFxcXG4gXHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuIFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG5AQCAtMjAzNyw3ICYjNDM7MjA0Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHR9O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gZW5kOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRrZnJlZShzcGxpdF9wYWdlKTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGtmcmVlKHBhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcdFxcXG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbiBcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VBQzEmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMiYjMzQ7LAogICAgJiMzNDtTTkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGZ1bmN0aW9ucy4gVGhlIGxlYWsgb2NjdXJyZWQgYmVjYXVzZSBgc3Ryc2VwYCBtb2RpZmllZCB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBga3N0cmR1cGAsIGNhdXNpbmcgYGtmcmVlYCB0byBiZSBjYWxsZWQgb24gYW4gaW52YWxpZCBvciBhZHZhbmNlZCBwb2ludGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBhIFVTQiBnYWRnZXQsIHdoaWNoIGlzIGZ1bGx5IHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVjZmZjMmNmNDFjNjZlNTY5MDNhNGMyYWYyZTRmYWEyZTEzMmM2N2MKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxNjo1ODoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYwppbmRleCA4NWM1MDJlOThmNTc3Li5mNGI3YmJkOTM0Y2EyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jCkBAIC0xNTk0LDYgJiM0MzsxNTk0LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCiAJCQkJCSAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbikJXAogewkJCQkJCQkJCVwKIAlzdHJ1Y3QgZl91YWMxX29wdHMgKm9wdHMgPSB0b19mX3VhYzFfb3B0cyhpdGVtKTsJCVwKJiM0MzsJY2hhciAqcGFnZV9hbGxvYyA9IE5VTEw7CQkJCQlcCiAJY2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7CQkJCQlcCiAJaW50IHJldCA9IC1FSU5WQUw7CQkJCQkJXAogCWNoYXIgKnRva2VuOwkJCQkJCQlcCkBAIC0xNjA4LDcgJiM0MzsxNjA5LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwJXAogCQkJCQkJCQkJXAogCWkgPSAwOwkJCQkJCQkJXAogCW1lbXNldChvcHRzLSZndDtuYW1lIyNzLCAweDAwLCBzaXplb2Yob3B0cy0mZ3Q7bmFtZSMjcykpOwkJXAotCXNwbGl0X3BhZ2UgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpOwkJCQlcCiYjNDM7CXBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpOwkJCQlcCiYjNDM7CWlmICghcGFnZV9hbGxvYykgewkJCQkJCVwKJiM0MzsJCXJldCA9IC1FTk9NRU07CQkJCQkJXAomIzQzOwkJZ290byBlbmQ7CQkJCQkJXAomIzQzOwl9CQkJCQkJCQlcCiYjNDM7CXNwbGl0X3BhZ2UgPSBwYWdlX2FsbG9jOwkJCQkJXAogCXdoaWxlICgodG9rZW4gPSBzdHJzZXAoJmFtcDtzcGxpdF9wYWdlLCAmIzM0OywmIzM0OykpICE9IE5VTEwpIHsJCVwKIAkJcmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCAmYW1wO251bSk7CQkJXAogCQlpZiAocmV0KQkJCQkJCVwKQEAgLTE2MTksNyAmIzQzOzE2MjUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIAl9OwkJCQkJCQkJXAogCQkJCQkJCQkJXAogZW5kOgkJCQkJCQkJCVwKLQlrZnJlZShzcGxpdF9wYWdlKTsJCQkJCQlcCiYjNDM7CWtmcmVlKHBhZ2VfYWxsb2MpOwkJCQkJCVwKIAltdXRleF91bmxvY2soJmFtcDtvcHRzLSZndDtsb2NrKTsJCQkJCVwKIAlyZXR1cm4gcmV0OwkJCQkJCQlcCiB9CQkJCQkJCQkJXApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jCmluZGV4IDg5Nzc4N2QwODAzYzEuLjMzNmFlYWVjOWJhMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMKQEAgLTIwMTIsNiAmIzQzOzIwMTIsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIAkJCQkJICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKQlcCiB7CQkJCQkJCQkJXAogCXN0cnVjdCBmX3VhYzJfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMl9vcHRzKGl0ZW0pOwkJXAomIzQzOwljaGFyICpwYWdlX2FsbG9jID0gTlVMTDsJCQkJCVwKIAljaGFyICpzcGxpdF9wYWdlID0gTlVMTDsJCQkJCVwKIAlpbnQgcmV0ID0gLUVJTlZBTDsJCQkJCQlcCiAJY2hhciAqdG9rZW47CQkJCQkJCVwKQEAgLTIwMjYsNyAmIzQzOzIwMjcsMTIgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCiAJCQkJCQkJCQlcCiAJaSA9IDA7CQkJCQkJCQlcCiAJbWVtc2V0KG9wdHMtJmd0O25hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLSZndDtuYW1lIyNzKSk7CQlcCi0Jc3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7CQkJCVwKJiM0MzsJcGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7CQkJCVwKJiM0MzsJaWYgKCFwYWdlX2FsbG9jKSB7CQkJCQkJXAomIzQzOwkJcmV0ID0gLUVOT01FTTsJCQkJCQlcCiYjNDM7CQlnb3RvIGVuZDsJCQkJCQlcCiYjNDM7CX0JCQkJCQkJCVwKJiM0MzsJc3BsaXRfcGFnZSA9IHBhZ2VfYWxsb2M7CQkJCQlcCiAJd2hpbGUgKCh0b2tlbiA9IHN0cnNlcCgmYW1wO3NwbGl0X3BhZ2UsICYjMzQ7LCYjMzQ7KSkgIT0gTlVMTCkgewkJXAogCQlyZXQgPSBrc3RydG91MzIodG9rZW4sIDAsICZhbXA7bnVtKTsJCQlcCiAJCWlmIChyZXQpCQkJCQkJXApAQCAtMjAzNyw3ICYjNDM7MjA0Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwJXAogCX07CQkJCQkJCQlcCiAJCQkJCQkJCQlcCiBlbmQ6CQkJCQkJCQkJXAotCWtmcmVlKHNwbGl0X3BhZ2UpOwkJCQkJCVwKJiM0MzsJa2ZyZWUocGFnZV9hbGxvYyk7CQkJCQkJXAogCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2xvY2spOwkJCQkJXAogCXJldHVybiByZXQ7CQkJCQkJCVwKIH0JCQkJCQkJCQlcCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRml4aW5nIGEgVVNCIEdhZGdldCBBdWRpbyBNZW1vcnkgTGVhayoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aGUgVVNCIGdhZGdldCBhdWRpbyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMsIHNwZWNpZmljYWxseSBpbiBgZl91YWMxLmNgIGFuZCBgZl91YWMyLmNgLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBsaWVzIHdpdGhpbiB0aGUgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBtYWNyb3MuIEl0IHNlZW1zIHRoYXQgdGhlIHVzZSBvZiBgc3Ryc2VwYCBpcyBjYXVzaW5nIGBzcGxpdF9wYWdlYCB0byBiZSBhZHZhbmNlZCBpbiBzdWNoIGEgd2F5IHRoYXQgdGhlIGZpbmFsIGBrZnJlZShzcGxpdF9wYWdlKWAgY2FsbCBkb2VzbiYjMzk7dCBhY3R1YWxseSBmcmVlIHRoZSBvcmlnaW5hbCBtZW1vcnkgYWxsb2NhdGlvbi4gUHJldHR5IGNsYXNzaWMgbWVtb3J5IGxlYWsgc2NlbmFyaW8uCgpUaGUgc29sdXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBpbnRyb2R1Y2UgYHBhZ2VfYWxsb2NgIHRvIGhvbGQgb250byB0aGUgaW5pdGlhbCwgYWxsb2NhdGVkIHBvaW50ZXIuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGZyZWUgdGhlIGNvcnJlY3QgbWVtb3J5IHJlZ2lvbiBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzLCBwcmV2ZW50aW5nIHRoZSBsZWFrLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2xlYW4gZml4IGZvciBhIGNvbmZpZ2ZzLXJlbGF0ZWQgbWVtb3J5IGxlYWsuIEl0JiMzOTtzIGxpa2VseSByZWFjaGFibGUgd2hlbiBhIHVzZXIgaXMgY29uZmlndXJpbmcgVVNCIGdhZGdldCBhdWRpbyBmdW5jdGlvbnMgdGhyb3VnaCBjb25maWdmcywgYm90aCBVQUMxIGFuZCBVQUMyLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgZm9yIFVBQzEgYW5kIFVBQzIgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgbW9yZSBmdWxseS4gSSYjMzk7bGwgc2VhcmNoIGZvciBgZl91YWMxLmNgIGFuZCBgZl91YWMyLmNgIGluIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlYCBvciBgS2NvbmZpZ2AgZmlsZXMgdG8gaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZfdWFjMVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfVVNCX1VfQVVESU8pXHQmIzQzOz0gdV9hdWRpby5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6Mzc6dXNiX2ZfdWFjMS15XHRcdFx0Oj0gZl91YWMxLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfVVNCX0ZfVUFDMSlcdCYjNDM7PSB1c2JfZl91YWMxLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS0zOS11c2JfZl91YWMxX2xlZ2FjeS15XHRcdDo9IGZfdWFjMV9sZWdhY3kubyB1X3VhYzFfbGVnYWN5Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQ5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBwcm9tcHQ6CgoqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgSW5xdWlyeSoqCgpIbW0sIGludGVyZXN0aW5nLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIHRhc2sgaGVyZSBpcyB0byBzdW1tYXJpemUgYSBzaW5nbGUsIHZlcnkgc3BlY2lmaWMgdGhvdWdodC4gVGhlIHByb21wdCBleHBsaWNpdGx5IGRpcmVjdHMgbWUgdG8gZW1ib2R5IHRoYXQgdGhvdWdodCBhcyBpZiBpdCB3ZXJlIG15IG93bi4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBhIHRlY2huaWNhbCBwcm9jZXNzLCBnaXZlbiB0aGUgbWVudGlvbiBvZiBhIGZpbGUsIHByb2JhYmx5IGFuIG9iamVjdCBmaWxlLiBUaGVyZWZvcmUsIHRoZSB0YXNrIGlzIGxpa2VseSB0byBwcm92aWRlIGEgc3VtbWFyeSByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcy4gVGhlIGZvY3VzIGFwcGVhcnMgdG8gYmUgb24gY29kZSBhbmQgYW5hbHlzaXMuIFNvLCB3aGF0JiMzOTtzIHRoZSB0aG91Z2h0IGFib3V0PyBJdCBpcyBhYm91dCBjaGVja2luZyBhbiBvYmplY3QgZmlsZS4gVGhlIHNwZWNpZmljIGZpbGUgaXMgYGZfdWFjMi5vYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX3VhYzJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU9NDA9b2JqLSQoQ09ORklHX1VTQl9GX1VBQzFfTEVHQUNZKVx0JiM0Mzs9IHVzYl9mX3VhYzFfbGVnYWN5Lm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0MTp1c2JfZl91YWMyLXlcdFx0XHQ6PSBmX3VhYzIub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19VU0JfRl9VQUMyKVx0JiM0Mzs9IHVzYl9mX3VhYzIub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQzLXVzYl9mX3V2Yy15XHRcdFx0Oj0gZl91dmMubyB1dmNfcXVldWUubyB1dmNfdjRsMi5vIHV2Y192aWRlby5vIHV2Y19jb25maWdmcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIFVTQiBBdWRpbyBDbGFzcyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYFVTQl9GX1VBQzFgIGFuZCBgVVNCX0ZfVUFDMmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCBVQUMxIGFuZCBVQUMyLCBtYWtlcyBzZW5zZS4mIzM0OyBCdXQgdGhlbiB0aGUgYWxhcm0gYmVsbHMgZ28gb2ZmLiBUaGVzZSBhcmUgdGhlIGtpbmQgb2YgbG93LWxldmVsIHNldHRpbmdzIHRoYXQgYXJlICp1c3VhbGx5KiBicm91Z2h0IGluIHZpYSBvdGhlciwgaGlnaGVyLWxldmVsIG9wdGlvbnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXkmIzM5O3JlIGFjdHVhbGx5IGJlaW5nIGNvbnRyb2xsZWQgZnJvbS4gVGhlIHNtYXJ0IG1vbmV5IHNheXMsIEkgc2hvdWxkIGdvIHN0cmFpZ2h0IHRvIHRoZSBLY29uZmlnIGZpbGVzLiBTbywgbGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgYW5kIGFsc28gdGhlIGxlZ2FjeSBkaXJlY3RvcnkgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBkcml2aW5nIHRoZXNlIHNldHRpbmdzLiBUaW1lIHRvIGdldCBkb3duIHRvIHRoZSByZWFsIG1lYXQgb2YgdGhlIG1hdHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0ZfVUFDMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTkyPWNvbmZpZyBVU0JfRl9GU1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5Njpjb25maWcgVVNCX0ZfVUFDMVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk3LVx0dHJpc3RhdGVcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5OTpjb25maWcgVVNCX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU3OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmUsIHVzaW5nIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIFVBQyBTZWxlY3Rpb24gQ3JpdGVyaWEqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGxvZ2ljIGJlaGluZCB3aGljaCBmbGFncywgc3BlY2lmaWNhbGx5IGBVU0JfRl9VQUMxYCBhbmQgYFVTQl9GX1VBQzJgLCB0cmlnZ2VyIGEgc2VsZWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgYXJlOiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgYW5kIGNvbmRpdGlvbnMgYXQgcGxheS4gSXMgdGhpcyBkcml2ZW4gYnkgZGV2aWNlIGNhcGFiaWxpdGllcyByZXBvcnRlZCBkdXJpbmcgZW51bWVyYXRpb24/IEFyZSB0aGVyZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGludm9sdmVkLCBwZXJoYXBzIHVzZXIgb3ZlcnJpZGVzIG9yIGRlZmF1bHRzPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBjb25kaXRpb25hbCBjaGVjaywgb3IgYSBtb3JlIGNvbXBsZXggZGVjaXNpb24gdHJlZSBiYXNlZCBvbiBtdWx0aXBsZSBmYWN0b3JzIGxpa2UgY2xhc3MgY29kZXMsIGludGVyZmFjZSBkZXNjcmlwdG9ycywgYW5kIGVuZHBvaW50IGNoYXJhY3RlcmlzdGljcz8gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGUgZGV2aWNlIGRyaXZlcnMgaW4gcXVlc3Rpb24gaXMga2V5IGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgY29kZSBwYXRocyB0aGF0ICpjb3VsZCogcG90ZW50aWFsbHkgbGVhZCB0byB0aGVzZSBmbGFncyBiZWluZyBzZXQuIFRoZW4sIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbmluZyAtIHdoYXQmIzM5O3MgdGhlIGRpZmZlcmVudGlhdGluZyBmYWN0b3IgdGhhdCBkcml2ZXMgVUFDMSB2ZXJzdXMgVUFDMiBzZWxlY3Rpb24/IEFyZSB0aGVyZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucz8gQ29tcGxpYW5jZSByZXF1aXJlbWVudHM/IEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWVzPyBJ4oCZbSBob3BpbmcgdG8gc2VlIGEgY2xlYW4sIGVhc2lseS1kaWdlc3RpYmxlIGNvbmRpdGlvbmFsLiBTb21ldGltZXMsIHlvdSBnZXQgbHVja3kuIEJ1dCBJJiMzOTttIHByZXBhcmVkIGZvciBhIG11bHRpLWxheWVyZWQgYXBwcm9hY2ggdG8gdW5kZXJzdGFuZCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1VBQzEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Ny1cdHNlbGVjdCBVU0JfVV9BVURJT1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzg4Olx0c2VsZWN0IFVTQl9GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4OS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zOTk9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA0LVx0c2VsZWN0IFNORF9QQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQwNTpcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA2LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz03NT1jb25maWcgVVNCX0FVRElPXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTc5LVx0c2VsZWN0IFNORF9QQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MDpcdHNlbGVjdCBVU0JfRl9VQUMxIGlmIChHQURHRVRfVUFDMSBcdTAwMjZcdTAwMjYgIUdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MTpcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWSBpZiAoR0FER0VUX1VBQzEgXHUwMDI2XHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy04Mi1cdHNlbGVjdCBVU0JfRl9VQUMyIGlmICFHQURHRVRfVUFDMVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjcwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gQ29uZmlnRlMgYW5kIFVBQyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ2ZzIG9wdGlvbnMgcmVsZXZhbnQgdG8gVVNCIEF1ZGlvIENsYXNzIChVQUMpIGRldmljZXMuIFNwZWNpZmljYWxseSwgSSBrbm93IHRoYXQgYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAgYXJlIHRoZSBrZXkgZmxhZ3MgdG8gY29uc2lkZXIgaW4gdGhpcyBjb250ZXh0LgoKTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgYmVnaW4gbXkgaW52ZXN0aWdhdGlvbiwgYXMgdGhlIG5ld2VyIHNwZWNpZmljYXRpb24gbGlrZWx5IGluY29ycG9yYXRlcyB0aGUgZmVhdHVyZXMgYW5kIGFkdmFudGFnZXMgdGhhdCBJIGFtIGxvb2tpbmcgZm9yLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zOTk9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjI2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBVU0IgR2FkZ2V0IEF1ZGlvKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjb3ZlciBhbGwgdGhlIGJhc2VzIGhlcmUuIEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSBib3RoIGBVU0JfQ09ORklHRlNgIGFuZCBgVVNCX0dBREdFVGAgaW4gdGhlIGFuYWx5c2lzLCB0byBiZSB0aG9yb3VnaC4gTm93LCBsZXQgbWUgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIHRoZSBhdWRpbyBnYWRnZXQgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhlIG9wdGlvbnMgYXJlIHN0b3JlZC4gSSBrbm93IHRoYXQgdGhlIG1hY3JvcyBgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFuZCBgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFyZSBrZXkgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHdheSB0aGV5IGFyZSBiZWluZyBpbXBsZW1lbnRlZC4gVGhlc2UgbG9vayBsaWtlIHRoZXkmIzM5O3JlIGdlbmVyYXRlZCBieSBhIG1hY3JvLCBzbyB0aGUgbmV4dCBzdGVwIGlzIHRvIGxvY2F0ZSB0aGUgbmFtZSBvZiB0aGF0IG1hY3JvIHRvIGdldCB0byB0aGUgcm9vdCBvZiB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX3VhYzFfb3B0c18uKl9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTUyOD1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU0MS1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1NDI6c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoXHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NDMtXHRcdFx0XHRcdCAgc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU3MT1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1OTItXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNTkzOnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU5NC1cdFx0XHRcdFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTYzNj1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NDgtXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjQ5OnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY1MC1cdFx0XHRcdFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVx0XFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQwNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgbWFjcm8gYW5kIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGguCgoqKkRlY29uc3RydWN0aW5nIHRoZSBNYWNybzogVW52ZWlsaW5nIHRoZSBHZW5lcmF0ZWQgRnVuY3Rpb25zKioKCkFscmlnaHQsIG15IGV4cGVydCBleWVzIGFyZSBvbiB0aGlzIG1hY3JvLiBNeSBwcmltYXJ5IG9iamVjdGl2ZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbnMgaXQgZ2VuZXJhdGVzLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBkaXNzZWN0IGl0cyBzdHJ1Y3R1cmUsIHRyYWNpbmcgdGhlIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGFuZCBsb29waW5nIGNvbnN0cnVjdHMgd2l0aGluIGl0LiBJIHdhbnQgdG8gaWRlbnRpZnkgYW55IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgb3IgaGlkZGVuIHBhcmFtZXRlcnMgdGhhdCBtaWdodCBiZSBnZW5lcmF0ZWQgaW4gdGhlIHByb2Nlc3MuIEkgYW0ga2VlbiB0byB1bmRlcnN0YW5kIHdoYXQgdHlwZXMgb2YgZnVuY3Rpb25zIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0gdGhpcyBtYWNybyB5aWVsZHMuIFRoaXMgaXMgdGhlIGNydWNpYWwgZm91bmRhdGlvbiBmb3IgbXkgZGVlcGVyIGV2YWx1YXRpb24uIEFmdGVyIGFsbCwgdW5kZXJzdGFuZGluZyB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG1hY3JvJiMzOTtzIHRydWUgY2FwYWJpbGl0aWVzIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1VBQzFfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTI1PXN0YXRpYyBjb25zdCBjaGFyICpib29sX2ZtdCA9IFwmIzM0OyV1XFxuXCYjMzQ7O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1MjYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTUyNzojZGVmaW5lIFVBQzFfQVRUUklCVVRFKHR5cGUsIG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTUyOC1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTYzMz1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2MzU6I2RlZmluZSBVQUMxX0FUVFJJQlVURV9TVFJJTkcobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjM2LXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTY2OT1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjcwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzE6VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3Mi1VQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzM6VUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc0OlVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzUtVUFDMV9SQVRFX0FUVFJJQlVURShwX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc2OlVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NzpVQUMxX0FUVFJJQlVURSh1MzIsIHJlcV9udW1iZXIpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3OTpVQUMxX0FUVFJJQlVURShib29sLCBwX211dGVfcHJlc2VudCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MDpVQUMxX0FUVFJJQlVURShib29sLCBwX3ZvbHVtZV9wcmVzZW50KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgxOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfbWluKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgyOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfbWF4KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgzOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfcmVzKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjg0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODU6VUFDMV9BVFRSSUJVVEUoYm9vbCwgY19tdXRlX3ByZXNlbnQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODY6VUFDMV9BVFRSSUJVVEUoYm9vbCwgY192b2x1bWVfcHJlc2VudCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4NzpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX21pbik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4ODpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX21heCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4OTpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX3Jlcyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY5MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjkxOlVBQzFfQVRUUklCVVRFX1NUUklORyhmdW5jdGlvbl9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTM6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKHBfaXRfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NDpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9pdF9jaF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk1OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX290X25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTY6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKHBfZnVfdm9sX25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2OTctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5ODpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19pdF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk5OlVBQzFfQVRUUklCVVRFX1NUUklORyhjX2l0X2NoX25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE3MDA6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfb3RfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTcwMTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19mdV92b2xfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTcwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA5NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBVQUMxIFJhdGUgQXR0cmlidXRlIElzc3VlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgVUFDMSByYXRlIGF0dHJpYnV0ZSBwcm9ibGVtLiBUaGUgbWFjcm8gaW4gcXVlc3Rpb24gaXMgbGlrZWx5IHNvbWV0aGluZyBsaWtlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCDigJMgdGhlIGtleSBpbmRpY2F0b3JzIGFyZSB0aGUgdXNlIG9mIGBvcHRzLSZndDtuYW1lIyNzYCBmb3IgbmFtZSBjb25jYXRlbmF0aW9uIGFuZCB0aGUgYGtzdHJ0b3UzMih0b2tlbiwgMCwgJmFtcDtudW0pYCBjYWxsLCB3aGljaCBzdWdnZXN0cyBwYXJzaW5nIGEgbnVtZXJpY2FsIHZhbHVlLiBSaWdodCwgdGhhdCBuYWlscyBpdCBkb3duIHByZXR0eSB3ZWxsLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBzZWUgdGhpcyBtYWNybyBpbiBhY3Rpb24uIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgd291bGQgYmUgaW4gYGZfdWFjMS5jYC4gTGV0JiMzOTtzIGFzc3VtZSBpdCYjMzk7cyBhcm91bmQgbGluZSAxNTk0IC0gdGhhdCBzb3VuZHMgYWJvdXQgcmlnaHQsIGdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBzaW1pbGFyIHN0cnVjdHVyZXMgaW4gdGhlIFVBQzEgZHJpdmVyLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGZpbmQuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYXR0cmlidXRlIGlzIGJlaW5nIGRlZmluZWQgb3IgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3B0cy1cdTAwM2VuYW1lIyNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTcxPXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4MC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFVBQ19NQVhfUkFURVM7IGkmIzQzOyYjNDM7KSB7XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1ODE6XHRcdGlmIChvcHRzLVx1MDAzZW5hbWUjI3NbaV0gPT0gMClcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4Mi1cdFx0XHRicmVhaztcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1ODMtXHRcdHJlc3VsdCAmIzQzOz0gc3ByaW50ZihwYWdlICYjNDM7IHN0cmxlbihwYWdlKSwgXCYjMzQ7JXUsXCYjMzQ7LFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1ODQ6XHRcdFx0XHRvcHRzLVx1MDAzZW5hbWUjI3NbaV0pO1x0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4NS1cdH1cdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU5Mz1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjEwLVx0aSA9IDA7XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTYxMTpcdG1lbXNldChvcHRzLVx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVx1MDAzZW5hbWUjI3MpKTtcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjEyLVx0cGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjIyLVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTYyMzpcdFx0b3B0cy1cdTAwM2VuYW1lIyNzW2kmIzQzOyYjNDM7XSA9IG51bTtcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYyNC1cdFx0cmV0ID0gbGVuO1x0XHRcdFx0XHRcdFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NjIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBNYWNybyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBgVUFDMV9SQVRFX0FUVFJJQlVURWAgbWFjcm8sIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyB1c2FnZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB0aGluZyBpcyBhY3R1YWxseSBlbXBsb3llZCB3aXRoaW4gdGhlIGNvZGUgYmFzZS4gV2hhdCBtb2R1bGVzIG9yIGZ1bmN0aW9ucyByZWx5IG9uIGl0PyBLbm93aW5nIGl0cyBjb250ZXh0IGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHJlYWxseSBhc3Nlc3MgaXRzIHB1cnBvc2Ugb3IgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gVGltZSB0byBzdGFydCBkaWdnaW5nIGZvciB0aG9zZSByZWZlcmVuY2VzLiBHb3R0YSBzZWUgd2hlcmUgdGhpcyBgVUFDMV9SQVRFX0FUVFJJQlVURWAgaXMgc2hvd2luZyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VUFDMV9SQVRFX0FUVFJJQlVURSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU2OD1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1NzA6I2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU3MS1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzE9VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3MjpVQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzMtVUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjc0PVVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzU6VUFDMV9SQVRFX0FUVFJJQlVURShwX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc2LVVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MzIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoqKkFuYWx5emluZyBHZW5lcmF0ZWQgRnVuY3Rpb24gTmFtZXMqKgoKQWxyaWdodCwgc28gSSYjMzk7dmUgYmVlbiBnaXZlbiB0aGVzZSBmdW5jdGlvbiBuYW1lczogYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgIGFuZCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAuIEltbWVkaWF0ZWx5LCBJIHNlZSBhIHBhdHRlcm4uIFRoZXNlIHNlZW0gcmVsYXRlZCB0byBVQUMxIChVU0IgQXVkaW8gQ2xhc3MgMSksIGFuZCB0aGVyZSYjMzk7cyBhIGNsZWFyIGRpc3RpbmN0aW9uIGJldHdlZW4gJiMzOTtjJiMzOTsgYW5kICYjMzk7cCYjMzk7LCBsaWtlbHkgaW5kaWNhdGluZyBlaXRoZXIgY2FwdHVyZSBhbmQgcGxheWJhY2ssIG9yIGNvbnRyb2wgYW5kIHBsYXliYWNrLiBBbmQgJiMzOTtzcmF0ZSYjMzk7IHN0cm9uZ2x5IHN1Z2dlc3RzIHNhbXBsaW5nIHJhdGUuIFRoZSAmIzM0O3N0b3JlJiMzNDsgcGFydCBpcyBmYWlybHkgc2VsZiBleHBsYW5hdG9yeSwgaXQgd291bGQgc2VlbSB0aGV5IGFyZSB3cml0aW5nIHNhbXBsZSByYXRlIHZhbHVlcy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0IHRoZXNlIGZ1bmN0aW9ucyBvcGVyYXRlIGluLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgaW4gYGZfdWFjMi5jYCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4gVGhhdCBhdHRyaWJ1dGUgZGVmaW5pdGlvbiBzaG91bGQgZ2l2ZSBtZSB0aGUgcmVsZXZhbnQgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBVQUMyIGNvbnRleHQsIGFuZCBob3BlZnVsbHksIHByb3ZpZGUgcG9pbnRlcnMgcmVsYXRlZCB0byB0aGUgVUFDMSBjb250ZXh0IGFzIHdlbGwuIEkmIzM5O20gc3VyZSB0aGVyZSYjMzk7cyBvdmVybGFwIGluIHRob3NlIGFyZWFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMyX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jLTE5ODctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MTk4ODojZGVmaW5lIFVBQzJfUkFURV9BVFRSSUJVVEUobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg5LXN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoyMDkzOlVBQzJfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMjA5NC1VQUMyX0FUVFJJQlVURSh1MzIsIHBfc3NpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0yMDk2PVVBQzJfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jOjIwOTc6VUFDMl9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKk5hdmlnYXRpbmcgdGhlIENvbmZpZ0ZTIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBJJiMzOTttIHRyYWNraW5nIHRoaXMuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlc2UgZ2VuZXJhdGVkIGZ1bmN0aW9ucywgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgIGFuZCBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWAuIFRoZXkmIzM5O3JlIHNwZWNpZmljYWxseSBzdG9yZSBjYWxsYmFja3MsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGxpbmtlZCBpbnRvIGEgQ29uZmlnRlMgc3RydWN0dXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBDb25maWdGUyBpcyBob3cgeW91IGV4cG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhpcyBzb3J0IG9mIGdhZGdldCBzZXR1cC4gQW5kIHNpbmNlIENvbmZpZ0ZTIGhhcyBhIGdvb2QgbGV2ZWwgb2Ygc3VwcG9ydCBpbiB2aXJ0dWFsaXplZCBzeXN0ZW1zLCB0aGF0IHNob3VsZCBleHRlbmQgdG8gdGhlIGNhbGxiYWNrcy4gVGhlIGNvcmUgY29uZmlnIG9wdGlvbnMgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlIGFyZSBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgYW5kIGBVU0JfQ09ORklHRlNfRl9VQUMyYCwgd2hpY2ggYXJlIGdvaW5nIHRvIGJlIGNyaXRpY2FsIGZvciB0aGUgc2V0dXAuCgpIYW5nIG9uIGEgc2VjLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgaGFzIGEgZGVwZW5kZW5jeSwgdGhhdCBuZWVkcyB0byBiZSBjbGFyaWZpZWQsIG5hbWVseSBgVVNCX0NPTkZJR0ZTYC4gSSBrbm93IHdoZXJlIEkgY2FuIGNvbmZpcm0gdGhpcywgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlIGFuZCB0YWtlIGEgbG9vay4gSSYjMzk7bGwgZ2V0IHRoZSBkZXRhaWxzIHJpZ2h0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE3MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0cywgZnJhbWVkIGFzIGEgY29uY2lzZSBzdW1tYXJ5IGZvciBhbiBleHBlcnQ6CgoqKkdhZGdldCBNb2RlICZhbXA7IENvbmZpZ0ZTIFZlcmlmaWNhdGlvbioqCgpSaWdodCwgc28gdG8gZ2V0IHRoaXMgVVNCIHRoaW5nIHJ1bm5pbmcsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBib3RoIGBVU0JfQ09ORklHRlNgIGFuZCBgVVNCX0dBREdFVGAgZW5hYmxlZC4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIHRob3VnaCwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYWxsIHRoZSBgVVNCX0dBREdFVGAgZGVwZW5kZW5jaWVzIGFyZSBwcm9wZXJseSBzZXQuIE5vIHBvaW50IGluIHdhc3RpbmcgdGltZSBpZiBzb21ldGhpbmcgZnVuZGFtZW50YWwgaXMgbWlzc2luZy4gTmVlZCB0byBtYWtlIHN1cmUgYWxsIHRoZSBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDc9aWYgVVNCX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2Mzpjb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Nzc6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRklMRVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5OTpjb25maWcgVVNCX0dBREdFVF9WQlVTX0RSQVdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEwMC1cdGludCBcJiMzNDtNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjExNjpjb25maWcgVVNCX0dBREdFVF9TVE9SQUdFX05VTV9CVUZGRVJTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHN0b3JhZ2UgcGlwZWxpbmUgYnVmZmVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNjI9Y29uZmlnIFVTQl9NQVNTX1NUT1JBR0Vcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjc4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI3OTpjb25maWcgVVNCX0dBREdFVF9UQVJHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTM0Nz1jb25maWcgVVNCX0VHMjBUXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3MC1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozNzE6Y29uZmlnIFVTQl9HQURHRVRfWElMSU5YXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IFVTQiBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMjIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgVVNCIEdhZGdldCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFVTQiBjb25maWd1cmF0aW9uLCBhbmQgZmlyc3QgdGhpbmcgSSYjMzk7bSBub3RpY2luZyBpcyB0aGF0IHRoZSBgVVNCX0dBREdFVGAgb3B0aW9uIGNsZWFybHkgaGluZ2VzIG9uIGBVU0JfU1VQUE9SVGAuIFRoYXQmIzM5O3Mgbm90IGVudGlyZWx5IHVuZXhwZWN0ZWQsIGJ1dCBnb29kIHRvIGNvbmZpcm0gcmlnaHQgb2ZmIHRoZSBiYXQuIEl0IHJlbWluZHMgbWUgdG8ga2VlcCBhIHNoYXJwIGV5ZSBvdXQgZm9yIHRoZXNlIGRlcGVuZGVuY2llcyDigJMgdGhleSBjYW4gdHJpcCB5b3UgdXAgbGF0ZXIgaWYgeW91JiMzOTtyZSBub3QgcGF5aW5nIGF0dGVudGlvbi4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgd2UmIzM5O3JlIGdvaW5nIHRvIHRlc3QgdGhlc2UgZ2FkZ2V0IGRyaXZlcnMuIFJlYWxpc3RpY2FsbHksIHdlJiMzOTtsbCBuZWVkIGEgd2F5IHRvIGVtdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBoYXJkd2FyZSDigJMgYSBzb3J0IG9mIGR1bW15IFVTQiBEZXZpY2UgQ29udHJvbGxlciwgb3IgVURDLiBMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB3aGF0IHdlIGhhdmUgYXZhaWxhYmxlLi4uQWgsIHllcywgcmlnaHQgaGVyZSEgYFVTQl9EVU1NWV9IQ0RgLiBQZXJmZWN0LiBUaGF0IHNob3VsZCBkbyB0aGUgdHJpY2suIExldCYjMzk7cyBzZWUgaG93IHRoaXMgaXMgY29uZmlndXJlZCBhbmQgd2hlcmUgd2UgYXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRFVNTVlfSENEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDIyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cdHRyaXN0YXRlIFwmIzM0O0R1bW15IEhDRCAoREVWRUxPUE1FTlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTE5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVTQiBHYWRnZXQgVGVzdGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBjb25maWd1cmUgdGhpcyBzZXR1cCBmb3IgdGVzdGluZyBVU0IgZ2FkZ2V0cy4gSSBrbm93IEkmIzM5O2xsIG5lZWQgYFVTQl9EVU1NWV9IQ0RgOyB0aGF0JiMzOTtzIGVzc2VudGlhbCBmb3Igc2ltdWxhdGluZyBhIFVTQiBob3N0IHdoZW4gSSBkb24mIzM5O3QgaGF2ZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgYXZhaWxhYmxlLiBNYWtlcyBzZW5zZS4KClRoZSBjb3JlIHNldCBvZiBjb25maWd1cmF0aW9ucyB0aGVuIGFyZTogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGFuZCBgVVNCX0NPTkZJR0ZTYC4gVGhvc2UgYXJlIHRoZSBmdW5kYW1lbnRhbHMuIEFuZCwgb2YgY291cnNlLCBJJiMzOTtsbCBuZWVkIHRoZSBhdWRpbyBnYWRnZXQgc3VwcG9ydCwgc28gSSYjMzk7bGwgZW5hYmxlIGJvdGggYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuCgpXYWl0IGEgbWludXRlLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgaXMgc2V0IHVwIHByb3Blcmx5LiBJdCBsb29rcyBsaWtlIGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQl9DT05GSUdGU2AsIHNvIEkgc2hvdWxkIGdvIGJhY2sgYW5kIGNvbmZpcm0gdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhbGwgYWNjb3VudGVkIGZvci4gSSYjMzk7bGwgcXVpY2tseSB2ZXJpZnkgdGhlIGRlcGVuZGVuY3kgY2hhaW4gZm9yIGBVU0JfQ09ORklHRlNfRl9VQUMxYCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNjk9Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDg4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgVVNCIEdhZGdldCBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgcGFydGljdWxhciBzdWJzeXN0ZW0mIzM5O3MgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzgxLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBsb29raW5nIGZvciBpcyB0byBkZXRlcm1pbmUgaWYgYW55IGRlcGVuZGVuY2llcyBhcmUgcHJlc2VudC4gSSB3YW50IHRvIHNlZSB3aGljaCBvdGhlciBvcHRpb25zLCBmZWF0dXJlcywgb3IgcHJlcmVxdWlzaXRlcyB0aGlzIGdhZGdldCBkcml2ZXIgbWlnaHQgcmVseSBvbi4gVW5kZXJzdGFuZGluZyB0aG9zZSBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdGhlIHZhcmlvdXMgcGllY2VzIG9mIHRoZSBwdXp6bGUgZml0IHRvZ2V0aGVyIHdpdGhpbiB0aGUgYnJvYWRlciBVU0IgZ2FkZ2V0IGZyYW1ld29yayBhbmQgdGhlIGtlcm5lbCYjMzk7cyBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIFRoaXMmIzM5O2xsIGhlbHAgcGlucG9pbnQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVsc2V3aGVyZSBpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNzU6XHRcdCAgY29tcG9zaXRlIGZ1bmN0aW9ucyBpbiB1c2VyIHNwYWNlIGluIHRoZSBzYW1lIHdheSBHYWRnZXRGU1xuIDM3NjpcdFx0ICBsZXRzIG9uZSBjcmVhdGUgVVNCIGdhZGdldHMgaW4gdXNlciBzcGFjZS4gIFRoaXMgYWxsb3dzIGNyZWF0aW9uXG4gMzc3Olx0XHQgIG9mIGNvbXBvc2l0ZSBnYWRnZXRzIHN1Y2ggdGhhdCBzb21lIG9mIHRoZSBmdW5jdGlvbnMgYXJlXG4gMzc4Olx0XHQgIGltcGxlbWVudGVkIGluIGtlcm5lbCBzcGFjZSAoZm9yIGluc3RhbmNlIEV0aGVybmV0LCBzZXJpYWwgb3JcbiAzNzk6XHRcdCAgbWFzcyBzdG9yYWdlKSBhbmQgb3RoZXIgYXJlIGltcGxlbWVudGVkIGluIHVzZXIgc3BhY2UuXG4gMzgwOlx0XG4gMzgxOlx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbiAzODI6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG4gMzgzOlx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDM4NDpcdFx0ZGVwZW5kcyBvbiBTTkRcbiAzODU6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gMzg2Olx0XHRzZWxlY3QgU05EX1BDTVxuIDM4NzpcdFx0c2VsZWN0IFVTQl9VX0FVRElPXG4gMzg4Olx0XHRzZWxlY3QgVVNCX0ZfVUFDMVxuIDM4OTpcdFx0aGVscFxuIDM5MDpcdFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxuIDM5MTpcdFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXG4gMzkyOlx0XHQgIFRoaXMgZHJpdmVyIGRvZXNuJiMzOTt0IGV4cGVjdCBhbnkgcmVhbCBBdWRpbyBjb2RlYyB0byBiZSBwcmVzZW50XG4gMzkzOlx0XHQgIG9uIHRoZSBkZXZpY2UgLSB0aGUgYXVkaW8gc3RyZWFtcyBhcmUgc2ltcGx5IHNpbmtlZCB0byBhbmRcbiAzOTQ6XHRcdCAgc291cmNlZCBmcm9tIGEgdmlydHVhbCBBTFNBIHNvdW5kIGNhcmQgY3JlYXRlZC4gVGhlIHVzZXItc3BhY2VcbiAzOTU6XHRcdCAgYXBwbGljYXRpb24gbWF5IGNob29zZSB0byBkbyB3aGF0ZXZlciBpdCB3YW50cyB3aXRoIHRoZSBkYXRhXG4gMzk2Olx0XHQgIHJlY2VpdmVkIGZyb20gdGhlIFVTQiBIb3N0IGFuZCBjaG9vc2UgdG8gcHJvdmlkZSB3aGF0ZXZlciBpdFxuIDM5NzpcdFx0ICB3YW50cyBhcyBhdWRpbyBkYXRhIHRvIHRoZSBVU0IgSG9zdC5cbiAzOTg6XHRcbiAzOTk6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbiA0MDA6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4gNDAxOlx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQwMjpcdFx0ZGVwZW5kcyBvbiBTTkRcbiA0MDM6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNDA0Olx0XHRzZWxlY3QgU05EX1BDTVxuIDQwNTpcdFx0c2VsZWN0IFVTQl9GX1VBQzFfTEVHQUNZXG4gNDA2Olx0XHRoZWxwXG4gNDA3Olx0XHQgIFRoaXMgQXVkaW8gZnVuY3Rpb24gaW1wbGVtZW50cyAxIEF1ZGlvQ29udHJvbCBpbnRlcmZhY2UsXG4gNDA4Olx0XHQgIDEgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIGVhY2ggZm9yIFVTQi1PVVQgYW5kIFVTQi1JTi5cbiA0MDk6XHRcdCAgVGhpcyBpcyBhIGxlZ2FjeSBkcml2ZXIgYW5kIHJlcXVpcmVzIGEgcmVhbCBBdWRpbyBjb2RlY1xuIDQxMDpcdFx0ICB0byBiZSBwcmVzZW50IG9uIHRoZSBkZXZpY2UuXG4gNDExOlx0XG4gNDEyOlx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbiA0MTM6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG4gNDE0Olx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQxNTpcdFx0ZGVwZW5kcyBvbiBTTkRcbiA0MTY6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNDE3Olx0XHRzZWxlY3QgU05EX1BDTVxuIDQxODpcdFx0c2VsZWN0IFVTQl9VX0FVRElPXG4gNDE5Olx0XHRzZWxlY3QgVVNCX0ZfVUFDMlxuIDQyMDpcdFx0aGVscFxuIDQyMTpcdFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCBVU0IgQXVkaW8gQ2xhc3NcbiA0MjI6XHRcdCAgc3BlY2lmaWNhdGlvbiAyLjAuIEl0IGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxuIDQyMzpcdFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXG4gNDI0Olx0XHQgIFRoaXMgZHJpdmVyIGRvZXNuJiMzOTt0IGV4cGVjdCBhbnkgcmVhbCBBdWRpbyBjb2RlYyB0byBiZSBwcmVzZW50XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMgaGVyZS4gVGhlIGtleSBkcml2ZXIgc2VlbXMgdG8gYmUgYFNORGAsIHNvIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBhcmUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgdGV4dCBtZW50aW9ucyB0aGVzZSBmdW5jdGlvbnM6IGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYCwgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgLCBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWAsIGFuZCBgZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZWAuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciByZWxldmFudCBhdHRyaWJ1dGVzLiBJIHNob3VsZCBsb29rIGZvciB1c2FnZXMgb2YgYFVBQzFfUkFURV9BVFRSSUJVVEVgIG9yIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4gSGFuZyBvbiwgSSYjMzk7dmUgYWxyZWFkeSBzY2FubmVkIGZvciB0aG9zZSB1c2FnZXMgYW5kIGZvdW5kIHRoZSBvbmVzIGFib3ZlOiBgY19zcmF0ZWAgYW5kIGBwX3NyYXRlYCBmb3IgYm90aCBVQUMxIGFuZCBVQUMyLiBTbywgdGhvc2UgZm91ciBmdW5jdGlvbnMgYXJlIHRoZSBvbmVzIGluIHF1ZXN0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIG1lYW5zIGNoZWNraW5nIGlmIHRoZXkgYXJlIG5vbi1zdGF0aWMgYW5kIG5vdCBpbmxpbmVkLiBUaGVzZSBhcmUgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggcmFpc2VzIGEgcmVkIGZsYWcgcGVyIHRoZSBndWlkZWxpbmVzLiBIb3dldmVyLCB0aGV5JiMzOTtyZSBiZWluZyB1c2VkIGFzIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGBDT05GSUdGU19BVFRSYCBtYWNyby4gVGhpcyBtYWNybyBjcmVhdGVzIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgIGFuZCBwb3B1bGF0ZXMgaXQgd2l0aCBwb2ludGVycyB0byB0aG9zZSBmdW5jdGlvbnMuIFNpbmNlIHRoZXkgYXJlIGJlaW5nIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGEgYHN0cnVjdGAsIHRoZSBjb21waWxlciAqY2Fubm90KiBpbmxpbmUgdGhlbS4gVGhleSAqbXVzdCogaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMuIFRoYXQmIzM5O3MgZ29vZC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBDT05GSUdGU19BVFRSYCBtYWNybyBpdHNlbGYgdG8gY29uZmlybSB0aGF0IGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZpbmUgQ09ORklHRlNfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvY29uZmlnZnMuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg9MTE1PXN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUge1xuLS1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMjItXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTIzOiNkZWZpbmUgQ09ORklHRlNfQVRUUl9QRVJNKF9wZngsIF9uYW1lLCBfcGVybSlcdFx0XFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMjQtc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgX3BmeCMjYXR0cl8jI19uYW1lID0ge1x0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTMxLVxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjEzMjojZGVmaW5lIENPTkZJR0ZTX0FUVFIoX3BmeCwgX25hbWUpIENPTkZJR0ZTX0FUVFJfUEVSTShcdFxcXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTMzLVx0XHRfcGZ4LCBfbmFtZSwgU19JUlVHTyB8IFNfSVdVU1JcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTM1LVxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjEzNjojZGVmaW5lIENPTkZJR0ZTX0FUVFJfUk8oX3BmeCwgX25hbWUpXHRcdFx0XFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzctc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgX3BmeCMjYXR0cl8jI19uYW1lID0ge1x0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTQzLVxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjE0NDojZGVmaW5lIENPTkZJR0ZTX0FUVFJfV08oX3BmeCwgX25hbWUpXHRcdFx0XFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xNDUtc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgX3BmeCMjYXR0cl8jI19uYW1lID0ge1x0XFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5NTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVQUMxL1VBQzIgQ29uZmlnZnMgU3RvcmUgQ2FsbGJhY2tzIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGUgbWFpbiBjb25jZXJuIGlzIHRoZXNlIGBzdG9yZWAgY2FsbGJhY2tzLCBzcGVjaWZpY2FsbHkgYmVjYXVzZSB0aGV5JiMzOTtyZSBmdW5jdGlvbiBwb2ludGVycywgbWVhbmluZyB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZC4gV2hpbGUgSSBpbml0aWFsbHkgdGhvdWdodCBhYm91dCBmaW5kaW5nIGEgbm9uLXN0YXRpYyBlbnRyeSBwb2ludCwgdGhhdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIHRoZSBtb3N0IGRpcmVjdCByb3V0ZSBoZXJlLiBJdCBsb29rcyBsaWtlIHRoZSBkYXRhIGZsb3cgaXMgdGhyb3VnaCBgY29uZmlnZnNfd3JpdGVfZmlsZWAgLSZndDsgYGNvbmZpZ2ZzX3dyaXRlX2l0ZXJgIC0mZ3Q7IGBmbHVzaF93cml0ZV9idWZmZXJgIC0mZ3Q7IGBhdHRyLSZndDtzdG9yZWAuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyB0aG9zZSBgc3RvcmVgIGNhbGxiYWNrcyBkaXJlY3RseS4KClRoZSBmdW5jdGlvbnMgaW4gcXVlc3Rpb24gYXJlOgoKKiAgIGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYAoqICAgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgCiogICBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWAKKiAgIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYAoKSSBkaWQgYSBxdWljayBjaGVjaywgYW5kIHRoZSBwYXRjaCBzZWVtcyB0byBleGNsdXNpdmVseSB0YXJnZXQgdGhlIGBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZWAgbWFjcm9zLCB3aGljaCBnZW5lcmF0ZSB0aGUgYHN0b3JlYCBmdW5jdGlvbnMgZm9yIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgLiAgU28sIG15IGluaXRpYWwgbGlzdCBpcyBjb3JyZWN0LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6CgoqICAgYFVTQl9HQURHRVRgCiogICBgVVNCX0RVTU1ZX0hDRGAKKiAgIGBVU0JfQ09ORklHRlNgCiogICBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAKKiAgIGBVU0JfQ09ORklHRlNfRl9VQUMyYAoqICAgYFNORGAgKHdoaWNoIGlzIHRoZSBtYWluIEFMU0EgY29uZmlnKQoKQW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJlOiBgVVNCX0RVTU1ZX0hDRGAgZGVwZW5kcyBvbiBgVVNCX0dBREdFVGAgYW5kIGBVU0JfU1VQUE9SVGAuIGBVU0JfQ09ORklHRlNgIGRlcGVuZHMgb24gYFVTQl9HQURHRVRgLiBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgYW5kIGBVU0JfQ09ORklHRlNfRl9VQUMyYCBib3RoIGRlcGVuZCBvbiBgVVNCX0NPTkZJR0ZTYCBhbmQgYFNORGAuIGBVU0JfU1VQUE9SVGAgaXMgdXN1YWxseSBlbmFibGVkLgoKU28gdGhlIGNvbXBsZXRlIHNldCBJIG5lZWQgdG8gY29uc2lkZXIgaXM6IGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VBQzFgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIGFuZCBgU05EYC4KCkkgcXVpY2tseSB2ZXJpZmllZCB0aGUgZXhhY3Qgc3ltYm9sIG5hbWVzLCB0byBtYWtlIHN1cmUuIFRoZSBtYWNybyBkZWZpbml0aW9uIGlzOgoKYGBgYwojZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSkJCQkJCVwKc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKCQkJCQkgY2hhciAqcGFnZSkJCQlcCi4uLgpzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKCQkJCQkgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pCVwKLi4uCmBgYAoKSXQgaXMgY2FsbGVkIHdpdGg6CgpgYGBjClVBQzFfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7ClVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7CmBgYAoKU28gaXQgaXMgaW5kZWVkOiBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAgYW5kIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYC4gVGhlIGBVQUMyYCBkZWZpbml0aW9ucyBhcmUgc2ltaWxhci4KClRoZSBwYXRjaCBpdHNlbGYgaXMgZml4aW5nIGEgbWVtb3J5IGxlYWsgaW4gdGhlc2UgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzLCBhZmZlY3RpbmcgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGZ1bmN0aW9ucy4gSXQgc2VlbXMgdGhlIGxlYWsgb2NjdXJyZWQgYmVjYXVzZSBgc3Ryc2VwYCB3YXMgbW9kaWZ5aW5nIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgc28gYGtmcmVlYCB3YXMgYmVpbmcgY2FsbGVkIG9uIGFuIGluY29ycmVjdCBwb2ludGVyLiBUaGUgcGF0Y2ggYWxsb2NhdGVzIGEgc2VwYXJhdGUgcG9pbnRlciB0byB0aGUgb3JpZ2luYWwgbWVtb3J5IGJsb2NrLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB0aHJvdWdoIGNvbmZpZ2ZzIHdoZW4gY29uZmlndXJpbmcgYSBVU0IgZ2FkZ2V0LCBhbmQgaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELgoKU28sIHRoaXMgaXMgYWJzb2x1dGVseSBmdXp6YWJsZS4gSSYjMzk7bGwgZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIEJlZm9yZSBJIG1vdmUgb24sIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIHRob3NlIG1hY3JvcyBhcmUgdXNlZCBlbHNld2hlcmUsIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMxX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU2OD1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1NzA6I2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU3MS1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzE9VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3MjpVQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzMtVUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjc0PVVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzU6VUFDMV9SQVRFX0FUVFJJQlVURShwX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc2LVVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTM2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbCBpbiB0aGUgZmllbGQgYW5kIHRoZSAmIzM0O3RleHQgYmVsb3cmIzM0OyByZWZlcnMgdG8gc29tZSB0ZWNobmljYWwgc3BlY2lmaWNhdGlvbiBvciBkaXNjdXNzaW9uIGFib3V0IGEgYFVBQzJfUkFURV9BVFRSSUJVVEVgIHdpdGhpbiBhIGxhcmdlciBhdWRpbyBzeXN0ZW0gY29udGV4dC4KCioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBVQUMyX1JBVEVfQVRUUklCVVRFYCoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhpcyBgVUFDMl9SQVRFX0FUVFJJQlVURWAuLi4gbXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBVQUMyIOKAkyBVU0IgQXVkaW8gQ2xhc3MgMi4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFib3V0IFVTQiBhdWRpbyBzdHJlYW1pbmcuJiMzNDsgSSYjMzk7bSBtZW50YWxseSBmaWxpbmcgdGhhdCB1bmRlciB0aGUgJiMzNDtoaWdoLXNwZWVkLCBnZW5lcmFsbHkgcmVsaWFibGUmIzM0OyBjYXRlZ29yeSwgYnV0IG9mIGNvdXJzZSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbnVhbmNlcy4gU3BlY2lmaWNhbGx5LCB0aGUgcmF0ZSBhdHRyaWJ1dGUuIEkmIzM5O20gaW1tZWRpYXRlbHkgd29uZGVyaW5nIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgZm9yIHNhbXBsZSByYXRlcywgYml0IGRlcHRocywgYW5kIHBvdGVudGlhbCBjbG9ja2luZyBpc3N1ZXMuIElzIHRoaXMgdGhlICpwcmVmZXJyZWQqIHJhdGUsIHRoZSAqc3VwcG9ydGVkKiByYXRlLCBvciBwZXJoYXBzIGEgKnJhbmdlKiBvZiBhY2NlcHRhYmxlIHJhdGVzPyBBbmQgaG93IGdyYW51bGFyIGlzIHRoZSBjb250cm9sPyBEb2VzIGl0IGp1c3Qgb2ZmZXIgYSBmZXcgcHJlc2V0IG9wdGlvbnMgKGxpa2UgNDQuMWtIeiwgNDhrSHosIDk2a0h6KSBvciBzb21ldGhpbmcgbW9yZSBmaW5lLWdyYWluZWQsIGFsbG93aW5nIGZvciBmcmFjdGlvbmFsIHJhdGVzIG9yIGV2ZW4gcG90ZW50aWFsbHkgdmFyaWFibGUgcmF0ZSBhZGp1c3RtZW50cz8gVGhhdCBsZXZlbCBvZiBjb250cm9sIGlzIGNydWNpYWwuCgpUaGVuLCBteSBtaW5kIHJhY2VzIHRvIHRoZSBwb3RlbnRpYWwgcHJvYmxlbXMuIENsb2NrIGRvbWFpbiBtaXNtYXRjaGVzIGFyZSAqYWx3YXlzKiBhIGNvbmNlcm4gd2l0aCBVU0IgYXVkaW8uIFNvLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGF1ZGlvIHF1YWxpdHkuIElzIHRoZSByYXRlIGF0dHJpYnV0ZSB0aGUgZGVmaW5pbmcgZmFjdG9yIG9yIGRvZXMgc29tZXRoaW5nIGVsc2UgZGV0ZXJtaW5lIHRoYXQ/IEppdHRlciBpcyB0aGUgYmlnIGJvZ2V5bWFuIGhlcmUuIERvZXMgdGhlIFVBQzIgaW1wbGVtZW50YXRpb24gcHJvdmlkZSBzdWZmaWNpZW50IGJ1ZmZlcmluZyBhbmQgYWRhcHRpdmUgY2xvY2tpbmcgdG8gbWl0aWdhdGUgaml0dGVyIGludHJvZHVjZWQgYnkgdGhlIFVTQiBidXMgaXRzZWxmPyBIb3cgZG9lcyB0aGlzIGF0dHJpYnV0ZSBpbnRlcmFjdCB3aXRoIHRoZSBob3N0IGNvbnRyb2xsZXIgYW5kIHRoZSBVU0IgYXVkaW8gZGV2aWNlPyBJZiB0aGUgcmF0ZXMgZG9uJiMzOTt0IG1hdGNoIG9yIGNhbm5vdCBiZSBzeW5jaHJvbml6ZWQsIEkgaW5zdGFudGx5IHRoaW5rIGFib3V0IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBwZW5hbHRpZXMgbGlrZSB0aGUgbmVlZCBmb3IgcmVzYW1wbGluZyBvciBhdWRpbyBkcm9wb3V0cywgYW5kIEkgd2FudCB0byBsb29rIGludG8gdGhhdC4KCkFsc28sIEkmIzM5O20gY29uc2lkZXJpbmcgdGhlICpwdXJwb3NlKiBvZiBzZXR0aW5nIHRoaXMgcmF0ZS4gSXMgaXQgZm9yIHRoZSBwbGF5YmFjayBkZXZpY2UsIHRoZSByZWNvcmRpbmcgZGV2aWNlLCBvciBib3RoPyBJcyB0aGlzIGF0dHJpYnV0ZSBzb2xlbHkgZm9yIFBDTSBhdWRpbywgb3IgZG9lcyBpdCBleHRlbmQgdG8gb3RoZXIgYXVkaW8gZm9ybWF0cz8gQXJlIHRoZXJlIGltcGxpY2F0aW9ucyBmb3IgcG93ZXIgY29uc3VtcHRpb24sIHBhcnRpY3VsYXJseSBpbiBiYXR0ZXJ5LXBvd2VyZWQgZGV2aWNlcz8gTXkgdGhvdWdodHMgYXJlIHRoYXQgdGhlc2UgZGV0YWlscywgYW5kIHRoZSBhc3NvY2lhdGVkIGltcGxlbWVudGF0aW9ucywgZGV0ZXJtaW5lIHRoZSBxdWFsaXR5IG9mIHRoZSBkZXZpY2UgYW5kIG11c3QgYmUgZXZhbHVhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMyX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MTk4Nj1DT05GSUdGU19BVFRSKGZfdWFjMl9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jOjE5ODg6I2RlZmluZSBVQUMyX1JBVEVfQVRUUklCVVRFKG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jPTIwOTI9VUFDMl9BVFRSSUJVVEUodTMyLCBwX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jLTIwOTQtVUFDMl9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoyMDk3OlVBQzJfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMjA5OC1VQUMyX0FUVFJJQlVURV9TWU5DKGNfc3luYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDQzCgkJCQkJCQlvdXRwdXQ6IDI0MAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UmIzM5O3ZlIGRlc2NyaWJlZDoKCioqQ2xlYXIgUGF0aCBGb3J3YXJkKioKClJpZ2h0LCB0aGF0JiMzOTtzIGl0LiBJdCYjMzk7cyBqdXN0IGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgIGZvciBib3RoLCBhcyBJIHN1c3BlY3RlZC4gTm8gbmVlZCB0byBvdmVyY29tcGxpY2F0ZSB0aGluZ3MgaGVyZS4gSSYjMzk7dmUgZ290IGV2ZXJ5dGhpbmcgSSBuZWVkIG5vdzsgYWxsIHRoZSByZWxldmFudCBkYXRhIHBvaW50cyBhcmUgcHJlc2VudC4gRXhjZWxsZW50LiBUaW1lIHRvIGV4ZWN1dGUgdGhlIHBsYW4uIEkmIzM5O2xsIG1ha2UgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYCBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMxJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VBQzImIzM0OywKICAgICYjMzQ7U05EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb25maWdmcyBzdG9yZSBjYWxsYmFja3MgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBmdW5jdGlvbnMuIFRoZSBsZWFrIG9jY3VycmVkIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZWQgdGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgYGtzdHJkdXBgLCBjYXVzaW5nIGBrZnJlZWAgdG8gYmUgY2FsbGVkIG9uIGFuIGludmFsaWQgb3IgYWR2YW5jZWQgcG9pbnRlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdmlhIGNvbmZpZ2ZzIHdoZW4gY29uZmlndXJpbmcgYSBVU0IgZ2FkZ2V0LCB3aGljaCBpcyBmdWxseSBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHRoZSBkdW1teSBIQ0QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6MjkuODUxOTA0MTU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE1MjgyNDQxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODoyOS44NTE5NDEyNjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxODExNTY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGVjZmZjMmNmNDFjNjZlNTY5MDNhNGMyYWYyZTRmYWEyZTEzMmM2N2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTY6NTg6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXFxuaW5kZXggODVjNTAyZTk4ZjU3Ny4uZjRiN2JiZDkzNGNhMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcXG5AQCAtMTU5NCw2ICsxNTk0LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVxcdFxcXFxcXG4ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbitcXHRjaGFyICpwYWdlX2FsbG9jID0gTlVMTDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aW50IHJldCA9IC1FSU5WQUw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRjaGFyICp0b2tlbjtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTE2MDgsNyArMTYwOSwxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGkgPSAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0bWVtc2V0KG9wdHMtXFx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVxcdTAwM2VuYW1lIyNzKSk7XFx0XFx0XFxcXFxcbi1cXHRzcGxpdF9wYWdlID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0aWYgKCFwYWdlX2FsbG9jKSB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyZXQgPSAtRU5PTUVNO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Z290byBlbmQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHR9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRzcGxpdF9wYWdlID0gcGFnZV9hbGxvYztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHdoaWxlICgodG9rZW4gPSBzdHJzZXAoXFx1MDAyNnNwbGl0X3BhZ2UsIFxcXCIsXFxcIikpICE9IE5VTEwpIHtcXHRcXHRcXFxcXFxuIFxcdFxcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXFx1MDAyNm51bSk7XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRpZiAocmV0KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMTYxOSw3ICsxNjI1LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0fTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gZW5kOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0a2ZyZWUoc3BsaXRfcGFnZSk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRrZnJlZShwYWdlX2FsbG9jKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlbG9jayk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXFxuaW5kZXggODk3Nzg3ZDA4MDNjMS4uMzM2YWVhZWM5YmEwMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcXG5AQCAtMjAxMiw2ICsyMDEyLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVxcdFxcXFxcXG4ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0c3RydWN0IGZfdWFjMl9vcHRzICpvcHRzID0gdG9fZl91YWMyX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbitcXHRjaGFyICpwYWdlX2FsbG9jID0gTlVMTDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aW50IHJldCA9IC1FSU5WQUw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRjaGFyICp0b2tlbjtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTIwMjYsNyArMjAyNywxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGkgPSAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0bWVtc2V0KG9wdHMtXFx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVxcdTAwM2VuYW1lIyNzKSk7XFx0XFx0XFxcXFxcbi1cXHRzcGxpdF9wYWdlID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0aWYgKCFwYWdlX2FsbG9jKSB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyZXQgPSAtRU5PTUVNO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Z290byBlbmQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHR9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRzcGxpdF9wYWdlID0gcGFnZV9hbGxvYztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHdoaWxlICgodG9rZW4gPSBzdHJzZXAoXFx1MDAyNnNwbGl0X3BhZ2UsIFxcXCIsXFxcIikpICE9IE5VTEwpIHtcXHRcXHRcXFxcXFxuIFxcdFxcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXFx1MDAyNm51bSk7XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRpZiAocmV0KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjAzNyw3ICsyMDQzLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0fTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gZW5kOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0a2ZyZWUoc3BsaXRfcGFnZSk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRrZnJlZShwYWdlX2FsbG9jKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlbG9jayk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6MzAuNjcwODk1NzExWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTA3MDkyNDM0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlY2ZmYzJjZjQxYzY2ZTU2OTAzYTRjMmFmMmU0ZmFhMmUxMzJjNjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTY6NTg6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcbmluZGV4IDg1YzUwMmU5OGY1NzcuLmY0YjdiYmQ5MzRjYTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuQEAgLTE1OTQsNiArMTU5NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3QgZl91YWMxX29wdHMgKm9wdHMgPSB0b19mX3VhYzFfb3B0cyhpdGVtKTtcdFx0XFxcbitcdGNoYXIgKnBhZ2VfYWxsb2MgPSBOVUxMO1x0XHRcdFx0XHRcXFxuIFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmV0ID0gLUVJTlZBTDtcdFx0XHRcdFx0XHRcXFxuIFx0Y2hhciAqdG9rZW47XHRcdFx0XHRcdFx0XHRcXFxuQEAgLTE2MDgsNyArMTYwOSwxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpID0gMDtcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdG1lbXNldChvcHRzLVx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVx1MDAzZW5hbWUjI3MpKTtcdFx0XFxcbi1cdHNwbGl0X3BhZ2UgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbitcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbitcdGlmICghcGFnZV9hbGxvYykge1x0XHRcdFx0XHRcdFxcXG4rXHRcdHJldCA9IC1FTk9NRU07XHRcdFx0XHRcdFx0XFxcbitcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbitcdH1cdFx0XHRcdFx0XHRcdFx0XFxcbitcdHNwbGl0X3BhZ2UgPSBwYWdlX2FsbG9jO1x0XHRcdFx0XHRcXFxuIFx0d2hpbGUgKCh0b2tlbiA9IHN0cnNlcChcdTAwMjZzcGxpdF9wYWdlLCBcIixcIikpICE9IE5VTEwpIHtcdFx0XFxcbiBcdFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcdTAwMjZudW0pO1x0XHRcdFxcXG4gXHRcdGlmIChyZXQpXHRcdFx0XHRcdFx0XFxcbkBAIC0xNjE5LDcgKzE2MjUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIFx0fTtcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIGVuZDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0a2ZyZWUoc3BsaXRfcGFnZSk7XHRcdFx0XHRcdFx0XFxcbitcdGtmcmVlKHBhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcdFxcXG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbiBcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuaW5kZXggODk3Nzg3ZDA4MDNjMS4uMzM2YWVhZWM5YmEwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXG5AQCAtMjAxMiw2ICsyMDEyLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiBcdFx0XHRcdFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBmX3VhYzJfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMl9vcHRzKGl0ZW0pO1x0XHRcXFxuK1x0Y2hhciAqcGFnZV9hbGxvYyA9IE5VTEw7XHRcdFx0XHRcdFxcXG4gXHRjaGFyICpzcGxpdF9wYWdlID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGludCByZXQgPSAtRUlOVkFMO1x0XHRcdFx0XHRcdFxcXG4gXHRjaGFyICp0b2tlbjtcdFx0XHRcdFx0XHRcdFxcXG5AQCAtMjAyNiw3ICsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuK1x0cGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuK1x0aWYgKCFwYWdlX2FsbG9jKSB7XHRcdFx0XHRcdFx0XFxcbitcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuK1x0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuK1x0fVx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0c3BsaXRfcGFnZSA9IHBhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4gXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwiLFwiKSkgIT0gTlVMTCkge1x0XHRcXFxuIFx0XHRyZXQgPSBrc3RydG91MzIodG9rZW4sIDAsIFx1MDAyNm51bSk7XHRcdFx0XFxcbiBcdFx0aWYgKHJldClcdFx0XHRcdFx0XHRcXFxuQEAgLTIwMzcsNyArMjA0Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHR9O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gZW5kOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRrZnJlZShzcGxpdF9wYWdlKTtcdFx0XHRcdFx0XHRcXFxuK1x0a2ZyZWUocGFnZV9hbGxvYyk7XHRcdFx0XHRcdFx0XFxcbiBcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWxvY2spO1x0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODozMC42NzA4OTcwNzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQ3NzI5NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpeGluZyBhIFVTQiBHYWRnZXQgQXVkaW8gTWVtb3J5IExlYWsqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aGUgVVNCIGdhZGdldCBhdWRpbyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMsIHNwZWNpZmljYWxseSBpbiBgZl91YWMxLmNgIGFuZCBgZl91YWMyLmNgLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBsaWVzIHdpdGhpbiB0aGUgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBtYWNyb3MuIEl0IHNlZW1zIHRoYXQgdGhlIHVzZSBvZiBgc3Ryc2VwYCBpcyBjYXVzaW5nIGBzcGxpdF9wYWdlYCB0byBiZSBhZHZhbmNlZCBpbiBzdWNoIGEgd2F5IHRoYXQgdGhlIGZpbmFsIGBrZnJlZShzcGxpdF9wYWdlKWAgY2FsbCBkb2Vzbid0IGFjdHVhbGx5IGZyZWUgdGhlIG9yaWdpbmFsIG1lbW9yeSBhbGxvY2F0aW9uLiBQcmV0dHkgY2xhc3NpYyBtZW1vcnkgbGVhayBzY2VuYXJpby5cblxuVGhlIHNvbHV0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZCDigJMgaW50cm9kdWNlIGBwYWdlX2FsbG9jYCB0byBob2xkIG9udG8gdGhlIGluaXRpYWwsIGFsbG9jYXRlZCBwb2ludGVyLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBmcmVlIHRoZSBjb3JyZWN0IG1lbW9yeSByZWdpb24gYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2VzcywgcHJldmVudGluZyB0aGUgbGVhay5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2xlYW4gZml4IGZvciBhIGNvbmZpZ2ZzLXJlbGF0ZWQgbWVtb3J5IGxlYWsuIEl0J3MgbGlrZWx5IHJlYWNoYWJsZSB3aGVuIGEgdXNlciBpcyBjb25maWd1cmluZyBVU0IgZ2FkZ2V0IGF1ZGlvIGZ1bmN0aW9ucyB0aHJvdWdoIGNvbmZpZ2ZzLCBib3RoIFVBQzEgYW5kIFVBQzIuIEkgc2hvdWxkIHByb2JhYmx5IGRpZyBpbnRvIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBmb3IgVUFDMSBhbmQgVUFDMiB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBtb3JlIGZ1bGx5LiBJJ2xsIHNlYXJjaCBmb3IgYGZfdWFjMS5jYCBhbmQgYGZfdWFjMi5jYCBpbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZWAgb3IgYEtjb25maWdgIGZpbGVzIHRvIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjM2LjExODYzMDU0MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ3NjM2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZl91YWMxXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19VU0JfVV9BVURJTylcXHQrPSB1X2F1ZGlvLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6Mzc6dXNiX2ZfdWFjMS15XFx0XFx0XFx0Oj0gZl91YWMxLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX1VTQl9GX1VBQzEpXFx0Kz0gdXNiX2ZfdWFjMS5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTM5LXVzYl9mX3VhYzFfbGVnYWN5LXlcXHRcXHQ6PSBmX3VhYzFfbGVnYWN5Lm8gdV91YWMxX2xlZ2FjeS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjM2LjI2MzQwMTEzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTM0NTEzOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgcHJvbXB0OlxuXG4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgSW5xdWlyeSoqXG5cbkhtbSwgaW50ZXJlc3RpbmcuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgdGFzayBoZXJlIGlzIHRvIHN1bW1hcml6ZSBhIHNpbmdsZSwgdmVyeSBzcGVjaWZpYyB0aG91Z2h0LiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgZGlyZWN0cyBtZSB0byBlbWJvZHkgdGhhdCB0aG91Z2h0IGFzIGlmIGl0IHdlcmUgbXkgb3duLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGEgdGVjaG5pY2FsIHByb2Nlc3MsIGdpdmVuIHRoZSBtZW50aW9uIG9mIGEgZmlsZSwgcHJvYmFibHkgYW4gb2JqZWN0IGZpbGUuIFRoZXJlZm9yZSwgdGhlIHRhc2sgaXMgbGlrZWx5IHRvIHByb3ZpZGUgYSBzdW1tYXJ5IHJlbGF0ZWQgdG8gdGhpcyBwcm9jZXNzLiBUaGUgZm9jdXMgYXBwZWFycyB0byBiZSBvbiBjb2RlIGFuZCBhbmFseXNpcy4gU28sIHdoYXQncyB0aGUgdGhvdWdodCBhYm91dD8gSXQgaXMgYWJvdXQgY2hlY2tpbmcgYW4gb2JqZWN0IGZpbGUuIFRoZSBzcGVjaWZpYyBmaWxlIGlzIGBmX3VhYzIub2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODozOS4yNTY4NTU5ODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MjU1NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZl91YWMyXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlPTQwPW9iai0kKENPTkZJR19VU0JfRl9VQUMxX0xFR0FDWSlcXHQrPSB1c2JfZl91YWMxX2xlZ2FjeS5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQxOnVzYl9mX3VhYzIteVxcdFxcdFxcdDo9IGZfdWFjMi5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19VU0JfRl9VQUMyKVxcdCs9IHVzYl9mX3VhYzIub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS00My11c2JfZl91dmMteVxcdFxcdFxcdDo9IGZfdXZjLm8gdXZjX3F1ZXVlLm8gdXZjX3Y0bDIubyB1dmNfdmlkZW8ubyB1dmNfY29uZmlnZnMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODozOS4zMDU1ODgzNTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM2MTU0ODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBVU0IgQXVkaW8gQ2xhc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgVVNCX0ZfVUFDMWAgYW5kIGBVU0JfRl9VQUMyYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIFVBQzEgYW5kIFVBQzIsIG1ha2VzIHNlbnNlLlwiIEJ1dCB0aGVuIHRoZSBhbGFybSBiZWxscyBnbyBvZmYuIFRoZXNlIGFyZSB0aGUga2luZCBvZiBsb3ctbGV2ZWwgc2V0dGluZ3MgdGhhdCBhcmUgKnVzdWFsbHkqIGJyb3VnaHQgaW4gdmlhIG90aGVyLCBoaWdoZXItbGV2ZWwgb3B0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhleSdyZSBhY3R1YWxseSBiZWluZyBjb250cm9sbGVkIGZyb20uIFRoZSBzbWFydCBtb25leSBzYXlzLCBJIHNob3VsZCBnbyBzdHJhaWdodCB0byB0aGUgS2NvbmZpZyBmaWxlcy4gU28sIGxldCdzIGNoZWNrIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgYW5kIGFsc28gdGhlIGxlZ2FjeSBkaXJlY3RvcnkgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBkcml2aW5nIHRoZXNlIHNldHRpbmdzLiBUaW1lIHRvIGdldCBkb3duIHRvIHRoZSByZWFsIG1lYXQgb2YgdGhlIG1hdHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEzMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjQzLjA0MTc0NjUwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTM4MDE2MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1VBQzFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xOTI9Y29uZmlnIFVTQl9GX0ZTXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTk2OmNvbmZpZyBVU0JfRl9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5OTpjb25maWcgVVNCX0ZfVUFDMV9MRUdBQ1lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6NDMuMzk1NTUzODk5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxNTExMTQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZSwgdXNpbmcgYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBVQUMgU2VsZWN0aW9uIENyaXRlcmlhKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgY29kZSBhbmQgZmlndXJlIG91dCB0aGUgZXhhY3QgbG9naWMgYmVoaW5kIHdoaWNoIGZsYWdzLCBzcGVjaWZpY2FsbHkgYFVTQl9GX1VBQzFgIGFuZCBgVVNCX0ZfVUFDMmAsIHRyaWdnZXIgYSBzZWxlY3Rpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0cyBhcmU6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25zdHJhaW50cyBhbmQgY29uZGl0aW9ucyBhdCBwbGF5LiBJcyB0aGlzIGRyaXZlbiBieSBkZXZpY2UgY2FwYWJpbGl0aWVzIHJlcG9ydGVkIGR1cmluZyBlbnVtZXJhdGlvbj8gQXJlIHRoZXJlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgaW52b2x2ZWQsIHBlcmhhcHMgdXNlciBvdmVycmlkZXMgb3IgZGVmYXVsdHM/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIGNvbmRpdGlvbmFsIGNoZWNrLCBvciBhIG1vcmUgY29tcGxleCBkZWNpc2lvbiB0cmVlIGJhc2VkIG9uIG11bHRpcGxlIGZhY3RvcnMgbGlrZSBjbGFzcyBjb2RlcywgaW50ZXJmYWNlIGRlc2NyaXB0b3JzLCBhbmQgZW5kcG9pbnQgY2hhcmFjdGVyaXN0aWNzPyBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRoZSBkZXZpY2UgZHJpdmVycyBpbiBxdWVzdGlvbiBpcyBrZXkgaGVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNvZGUgcGF0aHMgdGhhdCAqY291bGQqIHBvdGVudGlhbGx5IGxlYWQgdG8gdGhlc2UgZmxhZ3MgYmVpbmcgc2V0LiBUaGVuLCBJ4oCZbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFzb25pbmcgLSB3aGF0J3MgdGhlIGRpZmZlcmVudGlhdGluZyBmYWN0b3IgdGhhdCBkcml2ZXMgVUFDMSB2ZXJzdXMgVUFDMiBzZWxlY3Rpb24/IEFyZSB0aGVyZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucz8gQ29tcGxpYW5jZSByZXF1aXJlbWVudHM/IEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWVzPyBJ4oCZbSBob3BpbmcgdG8gc2VlIGEgY2xlYW4sIGVhc2lseS1kaWdlc3RpYmxlIGNvbmRpdGlvbmFsLiBTb21ldGltZXMsIHlvdSBnZXQgbHVja3kuIEJ1dCBJJ20gcHJlcGFyZWQgZm9yIGEgbXVsdGktbGF5ZXJlZCBhcHByb2FjaCB0byB1bmRlcnN0YW5kIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTc5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6NDguMjEwNjY4MDcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY2NjE3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFVTQl9GX1VBQzFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Ny1cXHRzZWxlY3QgVVNCX1VfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODg6XFx0c2VsZWN0IFVTQl9GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODktXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA0LVxcdHNlbGVjdCBTTkRfUENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDA1OlxcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NzU9Y29uZmlnIFVTQl9BVURJT1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTc5LVxcdHNlbGVjdCBTTkRfUENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjgwOlxcdHNlbGVjdCBVU0JfRl9VQUMxIGlmIChHQURHRVRfVUFDMSBcXHUwMDI2XFx1MDAyNiAhR0FER0VUX1VBQzFfTEVHQUNZKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MTpcXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1kgaWYgKEdBREdFVF9VQUMxIFxcdTAwMjZcXHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctODItXFx0c2VsZWN0IFVTQl9GX1VBQzIgaWYgIUdBREdFVF9VQUMxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjQ4LjM1NzMzNzAwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk1NjkxNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBDb25maWdGUyBhbmQgVUFDKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBmb2N1c2luZyBvbiB0aGUgY29uZmlnZnMgb3B0aW9ucyByZWxldmFudCB0byBVU0IgQXVkaW8gQ2xhc3MgKFVBQykgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIGtub3cgdGhhdCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgYW5kIGBVU0JfQ09ORklHRlNfRl9VQUMyYCBhcmUgdGhlIGtleSBmbGFncyB0byBjb25zaWRlciBpbiB0aGlzIGNvbnRleHQuXG5cbk15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byBkcmlsbCBkb3duIGludG8gYFVTQl9DT05GSUdGU19GX1VBQzJgLiBUaGF0J3Mgd2hlcmUgSSdsbCBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLCBhcyB0aGUgbmV3ZXIgc3BlY2lmaWNhdGlvbiBsaWtlbHkgaW5jb3Jwb3JhdGVzIHRoZSBmZWF0dXJlcyBhbmQgYWR2YW50YWdlcyB0aGF0IEkgYW0gbG9va2luZyBmb3IuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjcwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6NTEuOTUzMDMxODEzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzkwOTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM5OT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODo1Mi4wMDY5NDc2OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyODIzNTY4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGVja2luZyBDb25maWd1cmF0aW9uIE9wdGlvbnMgZm9yIFVTQiBHYWRnZXQgQXVkaW8qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY292ZXIgYWxsIHRoZSBiYXNlcyBoZXJlLiBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgYm90aCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFVTQl9HQURHRVRgIGluIHRoZSBhbmFseXNpcywgdG8gYmUgdGhvcm91Z2guIE5vdywgbGV0IG1lIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgYXVkaW8gZ2FkZ2V0IGNvbmZpZ3VyYXRpb24uIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhlIG9wdGlvbnMgYXJlIHN0b3JlZC4gSSBrbm93IHRoYXQgdGhlIG1hY3JvcyBgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFuZCBgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFyZSBrZXkgaGVyZS4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgd2F5IHRoZXkgYXJlIGJlaW5nIGltcGxlbWVudGVkLiBUaGVzZSBsb29rIGxpa2UgdGhleSdyZSBnZW5lcmF0ZWQgYnkgYSBtYWNybywgc28gdGhlIG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIG5hbWUgb2YgdGhhdCBtYWNybyB0byBnZXQgdG8gdGhlIHJvb3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYyNiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjU1LjYzNTE4NjcyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NDU4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZl91YWMxX29wdHNfLipfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTI4PXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coXFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NDEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNTQyOnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU0My1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU3MT1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU5Mi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1OTM6c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU5NC1cXHRcXHRcXHRcXHRcXHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2MzY9c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NDgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjQ5OnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NTAtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVxcdFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6NTUuNjgyMTM5NzU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzEzMDM0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIG1hY3JvIGFuZCBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGguXG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIE1hY3JvOiBVbnZlaWxpbmcgdGhlIEdlbmVyYXRlZCBGdW5jdGlvbnMqKlxuXG5BbHJpZ2h0LCBteSBleHBlcnQgZXllcyBhcmUgb24gdGhpcyBtYWNyby4gTXkgcHJpbWFyeSBvYmplY3RpdmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25zIGl0IGdlbmVyYXRlcy4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgYmVoYXZpb3IuIEknbGwgbmVlZCB0byBkaXNzZWN0IGl0cyBzdHJ1Y3R1cmUsIHRyYWNpbmcgdGhlIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGFuZCBsb29waW5nIGNvbnN0cnVjdHMgd2l0aGluIGl0LiBJIHdhbnQgdG8gaWRlbnRpZnkgYW55IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgb3IgaGlkZGVuIHBhcmFtZXRlcnMgdGhhdCBtaWdodCBiZSBnZW5lcmF0ZWQgaW4gdGhlIHByb2Nlc3MuIEkgYW0ga2VlbiB0byB1bmRlcnN0YW5kIHdoYXQgdHlwZXMgb2YgZnVuY3Rpb25zIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0gdGhpcyBtYWNybyB5aWVsZHMuIFRoaXMgaXMgdGhlIGNydWNpYWwgZm91bmRhdGlvbiBmb3IgbXkgZGVlcGVyIGV2YWx1YXRpb24uIEFmdGVyIGFsbCwgdW5kZXJzdGFuZGluZyB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG1hY3JvJ3MgdHJ1ZSBjYXBhYmlsaXRpZXMgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQwNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjU4LjYxMzQ0NjAzMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4MjE1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVUFDMV9BVFRSSUJVVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTI1PXN0YXRpYyBjb25zdCBjaGFyICpib29sX2ZtdCA9IFxcXCIldVxcXFxuXFxcIjtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTUyNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTUyNzojZGVmaW5lIFVBQzFfQVRUUklCVVRFKHR5cGUsIG5hbWUpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTI4LXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coXFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2MzM9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2MzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2MzU6I2RlZmluZSBVQUMxX0FUVFJJQlVURV9TVFJJTkcobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2MzYtc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2Njk9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzE6VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzItVUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3MzpVQUMxX0FUVFJJQlVURSh1MzIsIGNfc3NpemUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc0OlVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc1LVVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzY6VUFDMV9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NzpVQUMxX0FUVFJJQlVURSh1MzIsIHJlcV9udW1iZXIpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc5OlVBQzFfQVRUUklCVVRFKGJvb2wsIHBfbXV0ZV9wcmVzZW50KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MDpVQUMxX0FUVFJJQlVURShib29sLCBwX3ZvbHVtZV9wcmVzZW50KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MTpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX21pbik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODI6VUFDMV9BVFRSSUJVVEUoczE2LCBwX3ZvbHVtZV9tYXgpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgzOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfcmVzKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY4NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4NTpVQUMxX0FUVFJJQlVURShib29sLCBjX211dGVfcHJlc2VudCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODY6VUFDMV9BVFRSSUJVVEUoYm9vbCwgY192b2x1bWVfcHJlc2VudCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODc6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9taW4pO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg4OlVBQzFfQVRUUklCVVRFKHMxNiwgY192b2x1bWVfbWF4KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4OTpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX3Jlcyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2OTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTE6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGZ1bmN0aW9uX25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjkzOlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2l0X25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk0OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2l0X2NoX25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk1OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX290X25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk2OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2Z1X3ZvbF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY5Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5ODpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19pdF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5OTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19pdF9jaF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTcwMDpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19vdF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTcwMTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19mdV92b2xfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE3MDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjU4LjY2MDI3MjQ0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjE0NDg0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqRGVidWdnaW5nIGEgUG90ZW50aWFsIFVBQzEgUmF0ZSBBdHRyaWJ1dGUgSXNzdWUqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgVUFDMSByYXRlIGF0dHJpYnV0ZSBwcm9ibGVtLiBUaGUgbWFjcm8gaW4gcXVlc3Rpb24gaXMgbGlrZWx5IHNvbWV0aGluZyBsaWtlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCDigJMgdGhlIGtleSBpbmRpY2F0b3JzIGFyZSB0aGUgdXNlIG9mIGBvcHRzLVx1MDAzZW5hbWUjI3NgIGZvciBuYW1lIGNvbmNhdGVuYXRpb24gYW5kIHRoZSBga3N0cnRvdTMyKHRva2VuLCAwLCBcdTAwMjZudW0pYCBjYWxsLCB3aGljaCBzdWdnZXN0cyBwYXJzaW5nIGEgbnVtZXJpY2FsIHZhbHVlLiBSaWdodCwgdGhhdCBuYWlscyBpdCBkb3duIHByZXR0eSB3ZWxsLlxuXG5Ob3csIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gc2VlIHRoaXMgbWFjcm8gaW4gYWN0aW9uLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IHdvdWxkIGJlIGluIGBmX3VhYzEuY2AuIExldCdzIGFzc3VtZSBpdCdzIGFyb3VuZCBsaW5lIDE1OTQgLSB0aGF0IHNvdW5kcyBhYm91dCByaWdodCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgc3RydWN0dXJlcyBpbiB0aGUgVUFDMSBkcml2ZXIuIExldCdzIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLiBJJ20gZ3Vlc3NpbmcgdGhhdCdzIHdoZXJlIHRoZSBhdHRyaWJ1dGUgaXMgYmVpbmcgZGVmaW5lZCBvciB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDk1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MDIuMzIxNzI0MjM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTgzMTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvcHRzLVxcdTAwM2VuYW1lIyNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU3MT1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4MC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgVUFDX01BWF9SQVRFUzsgaSsrKSB7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNTgxOlxcdFxcdGlmIChvcHRzLVxcdTAwM2VuYW1lIyNzW2ldID09IDApXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTgyLVxcdFxcdFxcdGJyZWFrO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4My1cXHRcXHRyZXN1bHQgKz0gc3ByaW50ZihwYWdlICsgc3RybGVuKHBhZ2UpLCBcXFwiJXUsXFxcIixcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1ODQ6XFx0XFx0XFx0XFx0b3B0cy1cXHUwMDNlbmFtZSMjc1tpXSk7XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTg1LVxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU5Mz1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2MTAtXFx0aSA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjExOlxcdG1lbXNldChvcHRzLVxcdTAwM2VuYW1lIyNzLCAweDAwLCBzaXplb2Yob3B0cy1cXHUwMDNlbmFtZSMjcykpO1xcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYxMi1cXHRwYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYyMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2MjM6XFx0XFx0b3B0cy1cXHUwMDNlbmFtZSMjc1tpKytdID0gbnVtO1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYyNC1cXHRcXHRyZXQgPSBsZW47XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OTowMi4zNjc1NjIyNjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NDA0MDIzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgTWFjcm8qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBtYWNybywgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHVzYWdlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGVtcGxveWVkIHdpdGhpbiB0aGUgY29kZSBiYXNlLiBXaGF0IG1vZHVsZXMgb3IgZnVuY3Rpb25zIHJlbHkgb24gaXQ/IEtub3dpbmcgaXRzIGNvbnRleHQgaXMgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gcmVhbGx5IGFzc2VzcyBpdHMgcHVycG9zZSBvciBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRob3NlIHJlZmVyZW5jZXMuIEdvdHRhIHNlZSB3aGVyZSB0aGlzIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBpcyBzaG93aW5nIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTYyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MDUuNjIxNjA2MDAzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQxMDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJVQUMxX1JBVEVfQVRUUklCVVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU2OD1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU2OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU3MDojZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NzEtc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzE9VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzI6VUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3My1VQUMxX0FUVFJJQlVURSh1MzIsIGNfc3NpemUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjc0PVVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc1OlVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzYtVUFDMV9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MDUuNjY2MDIwMzkzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjAwMDIzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuKipBbmFseXppbmcgR2VuZXJhdGVkIEZ1bmN0aW9uIE5hbWVzKipcblxuQWxyaWdodCwgc28gSSd2ZSBiZWVuIGdpdmVuIHRoZXNlIGZ1bmN0aW9uIG5hbWVzOiBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAgYW5kIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYC4gSW1tZWRpYXRlbHksIEkgc2VlIGEgcGF0dGVybi4gVGhlc2Ugc2VlbSByZWxhdGVkIHRvIFVBQzEgKFVTQiBBdWRpbyBDbGFzcyAxKSwgYW5kIHRoZXJlJ3MgYSBjbGVhciBkaXN0aW5jdGlvbiBiZXR3ZWVuICdjJyBhbmQgJ3AnLCBsaWtlbHkgaW5kaWNhdGluZyBlaXRoZXIgY2FwdHVyZSBhbmQgcGxheWJhY2ssIG9yIGNvbnRyb2wgYW5kIHBsYXliYWNrLiBBbmQgJ3NyYXRlJyBzdHJvbmdseSBzdWdnZXN0cyBzYW1wbGluZyByYXRlLiBUaGUgXCJzdG9yZVwiIHBhcnQgaXMgZmFpcmx5IHNlbGYgZXhwbGFuYXRvcnksIGl0IHdvdWxkIHNlZW0gdGhleSBhcmUgd3JpdGluZyBzYW1wbGUgcmF0ZSB2YWx1ZXMuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0IHRoZXNlIGZ1bmN0aW9ucyBvcGVyYXRlIGluLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgaW4gYGZfdWFjMi5jYCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4gVGhhdCBhdHRyaWJ1dGUgZGVmaW5pdGlvbiBzaG91bGQgZ2l2ZSBtZSB0aGUgcmVsZXZhbnQgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBVQUMyIGNvbnRleHQsIGFuZCBob3BlZnVsbHksIHByb3ZpZGUgcG9pbnRlcnMgcmVsYXRlZCB0byB0aGUgVUFDMSBjb250ZXh0IGFzIHdlbGwuIEknbSBzdXJlIHRoZXJlJ3Mgb3ZlcmxhcCBpbiB0aG9zZSBhcmVhcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUzMiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjA5LjUyNjAyNjQ5MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MzUzNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVBQzJfUkFURV9BVFRSSUJVVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoxOTg4OiNkZWZpbmUgVUFDMl9SQVRFX0FUVFJJQlVURShuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk0LVVBQzJfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5NzpVQUMyX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MDkuNzcyMzg1OTc4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODgwODI5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipOYXZpZ2F0aW5nIHRoZSBDb25maWdGUyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBJJ20gdHJhY2tpbmcgdGhpcy4gV2UncmUgZGVhbGluZyB3aXRoIHRoZXNlIGdlbmVyYXRlZCBmdW5jdGlvbnMsIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLiBUaGV5J3JlIHNwZWNpZmljYWxseSBzdG9yZSBjYWxsYmFja3MsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkncmUgbGlua2VkIGludG8gYSBDb25maWdGUyBzdHJ1Y3R1cmUuIFRoYXQgbWFrZXMgc2Vuc2UsIENvbmZpZ0ZTIGlzIGhvdyB5b3UgZXhwb3NlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGlzIHNvcnQgb2YgZ2FkZ2V0IHNldHVwLiBBbmQgc2luY2UgQ29uZmlnRlMgaGFzIGEgZ29vZCBsZXZlbCBvZiBzdXBwb3J0IGluIHZpcnR1YWxpemVkIHN5c3RlbXMsIHRoYXQgc2hvdWxkIGV4dGVuZCB0byB0aGUgY2FsbGJhY2tzLiBUaGUgY29yZSBjb25maWcgb3B0aW9ucyB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZSBhcmUgYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIHdoaWNoIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCBmb3IgdGhlIHNldHVwLlxuXG5IYW5nIG9uIGEgc2VjLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgaGFzIGEgZGVwZW5kZW5jeSwgdGhhdCBuZWVkcyB0byBiZSBjbGFyaWZpZWQsIG5hbWVseSBgVVNCX0NPTkZJR0ZTYC4gSSBrbm93IHdoZXJlIEkgY2FuIGNvbmZpcm0gdGhpcywgbGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUgYW5kIHRha2UgYSBsb29rLiBJJ2xsIGdldCB0aGUgZGV0YWlscyByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MTQuMzYwNDcxNzc0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAzNzk5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9DT05GSUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMz1jb25maWcgVVNCX0ZfVENNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjI4OmNvbmZpZyBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjM5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0MS1cXHRib29sIFxcXCJHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDk6Y29uZmlnIFVTQl9DT05GSUdGU19BQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXFx0Ym9vbCBcXFwiQWJzdHJhY3QgQ29udHJvbCBNb2RlbCAoQ0RDIEFDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjU5OmNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNzAtXFx0Ym9vbCBcXFwiTmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODE6Y29uZmlnIFVTQl9DT05GSUdGU19FQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjkzOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDQtXFx0Ym9vbCBcXFwiUk5ESVNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzE5OmNvbmZpZyBVU0JfQ09ORklHRlNfRUVNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVxcdGJvb2wgXFxcIkV0aGVybmV0IEVtdWxhdGlvbiBNb2RlbCAoRUVNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzU6Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXFx0Ym9vbCBcXFwiUGhvbmV0IHByb3RvY29sXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0Ni1cXHRib29sIFxcXCJNYXNzIHN0b3JhZ2VcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU2OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9MQl9TU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cXHRib29sIFxcXCJMb29wYmFjayBhbmQgc291cmNlc2luayBmdW5jdGlvbiAoZm9yIHRlc3RpbmcpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzY4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM2OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXFx0Ym9vbCBcXFwiRnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgyLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozOTk6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMCAobGVnYWN5IGltcGxlbWVudGF0aW9uKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMi1cXHRib29sIFxcXCJNSURJIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESTJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXFx0Ym9vbCBcXFwiTUlESSAyLjAgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDU4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXFx0Ym9vbCBcXFwiSElEIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY5LVxcdGJvb2wgXFxcIlVTQiBXZWJjYW0gZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgyLVxcdGJvb2wgXFxcIlByaW50ZXIgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OToxNC40NzA4NTc1MzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcwNzgxMTUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0cywgZnJhbWVkIGFzIGEgY29uY2lzZSBzdW1tYXJ5IGZvciBhbiBleHBlcnQ6XG5cbioqR2FkZ2V0IE1vZGUgXHUwMDI2IENvbmZpZ0ZTIFZlcmlmaWNhdGlvbioqXG5cblJpZ2h0LCBzbyB0byBnZXQgdGhpcyBVU0IgdGhpbmcgcnVubmluZywgSSdtIGdvaW5nIHRvIG5lZWQgYm90aCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIEJlZm9yZSBJIGdvIHRvbyBkZWVwLCB0aG91Z2gsIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYWxsIHRoZSBgVVNCX0dBREdFVGAgZGVwZW5kZW5jaWVzIGFyZSBwcm9wZXJseSBzZXQuIE5vIHBvaW50IGluIHdhc3RpbmcgdGltZSBpZiBzb21ldGhpbmcgZnVuZGFtZW50YWwgaXMgbWlzc2luZy4gTmVlZCB0byBtYWtlIHN1cmUgYWxsIHRoZSBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjE3MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjIwLjE3ODY3MTU3OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk5MDM0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDc9aWYgVVNCX0dBREdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2Mzpjb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc3OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZJTEVTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzgtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo4ODpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyBpbiBkZWJ1Z2ZzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy05OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5OTpjb25maWcgVVNCX0dBREdFVF9WQlVTX0RSQVdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMDAtXFx0aW50IFxcXCJNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxMTY6Y29uZmlnIFVTQl9HQURHRVRfU1RPUkFHRV9OVU1fQlVGRkVSU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNy1cXHRpbnQgXFxcIk51bWJlciBvZiBzdG9yYWdlIHBpcGVsaW5lIGJ1ZmZlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTkwPWNvbmZpZyBVU0JfR19OQ01cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjIwNjpjb25maWcgVVNCX0dBREdFVEZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIwNy1cXHR0cmlzdGF0ZSBcXFwiR2FkZ2V0IEZpbGVzeXN0ZW1cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjYyPWNvbmZpZyBVU0JfTUFTU19TVE9SQUdFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjc4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNzk6Y29uZmlnIFVTQl9HQURHRVRfVEFSR0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4MC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljIE1vZHVsZVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zNDc9Y29uZmlnIFVTQl9FRzIwVFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MzcxOmNvbmZpZyBVU0JfR0FER0VUX1hJTElOWFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzItXFx0dHJpc3RhdGUgXFxcIlhpbGlueCBVU0IgRHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OToyMC4yMjg1ODAyODdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NDIxNzkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgVVNCIEdhZGdldCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBVU0IgY29uZmlndXJhdGlvbiwgYW5kIGZpcnN0IHRoaW5nIEknbSBub3RpY2luZyBpcyB0aGF0IHRoZSBgVVNCX0dBREdFVGAgb3B0aW9uIGNsZWFybHkgaGluZ2VzIG9uIGBVU0JfU1VQUE9SVGAuIFRoYXQncyBub3QgZW50aXJlbHkgdW5leHBlY3RlZCwgYnV0IGdvb2QgdG8gY29uZmlybSByaWdodCBvZmYgdGhlIGJhdC4gSXQgcmVtaW5kcyBtZSB0byBrZWVwIGEgc2hhcnAgZXllIG91dCBmb3IgdGhlc2UgZGVwZW5kZW5jaWVzIOKAkyB0aGV5IGNhbiB0cmlwIHlvdSB1cCBsYXRlciBpZiB5b3UncmUgbm90IHBheWluZyBhdHRlbnRpb24uXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB3ZSdyZSBnb2luZyB0byB0ZXN0IHRoZXNlIGdhZGdldCBkcml2ZXJzLiBSZWFsaXN0aWNhbGx5LCB3ZSdsbCBuZWVkIGEgd2F5IHRvIGVtdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBoYXJkd2FyZSDigJMgYSBzb3J0IG9mIGR1bW15IFVTQiBEZXZpY2UgQ29udHJvbGxlciwgb3IgVURDLiBMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB3aGF0IHdlIGhhdmUgYXZhaWxhYmxlLi4uQWgsIHllcywgcmlnaHQgaGVyZSEgYFVTQl9EVU1NWV9IQ0RgLiBQZXJmZWN0LiBUaGF0IHNob3VsZCBkbyB0aGUgdHJpY2suIExldCdzIHNlZSBob3cgdGhpcyBpcyBjb25maWd1cmVkIGFuZCB3aGVyZSB3ZSBhcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMjIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OToyMy43MDI4MDY4MTRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODI5NDU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0RVTU1ZX0hDRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVxcdHRyaXN0YXRlIFxcXCJEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MjMuOTMxMTA2NTRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1OTgyODUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVU0IgR2FkZ2V0IFRlc3RpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBjb25maWd1cmUgdGhpcyBzZXR1cCBmb3IgdGVzdGluZyBVU0IgZ2FkZ2V0cy4gSSBrbm93IEknbGwgbmVlZCBgVVNCX0RVTU1ZX0hDRGA7IHRoYXQncyBlc3NlbnRpYWwgZm9yIHNpbXVsYXRpbmcgYSBVU0IgaG9zdCB3aGVuIEkgZG9uJ3QgaGF2ZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgYXZhaWxhYmxlLiBNYWtlcyBzZW5zZS5cblxuVGhlIGNvcmUgc2V0IG9mIGNvbmZpZ3VyYXRpb25zIHRoZW4gYXJlOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYW5kIGBVU0JfQ09ORklHRlNgLiBUaG9zZSBhcmUgdGhlIGZ1bmRhbWVudGFscy4gQW5kLCBvZiBjb3Vyc2UsIEknbGwgbmVlZCB0aGUgYXVkaW8gZ2FkZ2V0IHN1cHBvcnQsIHNvIEknbGwgZW5hYmxlIGJvdGggYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuXG5cbldhaXQgYSBtaW51dGUsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBVU0JfQ09ORklHRlNfRl9VQUMxYCBpcyBzZXQgdXAgcHJvcGVybHkuIEl0IGxvb2tzIGxpa2UgaXQgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCX0NPTkZJR0ZTYCwgc28gSSBzaG91bGQgZ28gYmFjayBhbmQgY29uZmlybSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFsbCBhY2NvdW50ZWQgZm9yLiBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoZSBkZXBlbmRlbmN5IGNoYWluIGZvciBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzUxOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OToyOC40OTA5Mzg4OTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTM1MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzY5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9GU1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjI4LjU0Mjg3OTgxNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA4MDMzOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFVTQiBHYWRnZXQgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIHN1YnN5c3RlbSdzIGNvbmZpZ3VyYXRpb24sIEknbGwgemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzgxLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGxvb2tpbmcgZm9yIGlzIHRvIGRldGVybWluZSBpZiBhbnkgZGVwZW5kZW5jaWVzIGFyZSBwcmVzZW50LiBJIHdhbnQgdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMsIGZlYXR1cmVzLCBvciBwcmVyZXF1aXNpdGVzIHRoaXMgZ2FkZ2V0IGRyaXZlciBtaWdodCByZWx5IG9uLiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyB0aGUgdmFyaW91cyBwaWVjZXMgb2YgdGhlIHB1enpsZSBmaXQgdG9nZXRoZXIgd2l0aGluIHRoZSBicm9hZGVyIFVTQiBnYWRnZXQgZnJhbWV3b3JrIGFuZCB0aGUga2VybmVsJ3Mgb3ZlcmFsbCBjb25maWd1cmF0aW9uLiBUaGlzJ2xsIGhlbHAgcGlucG9pbnQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVsc2V3aGVyZSBpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDA4OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjMyLjA1MDkyMTE4MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjI4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzc1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzc1OlxcdFxcdCAgY29tcG9zaXRlIGZ1bmN0aW9ucyBpbiB1c2VyIHNwYWNlIGluIHRoZSBzYW1lIHdheSBHYWRnZXRGU1xcbiAzNzY6XFx0XFx0ICBsZXRzIG9uZSBjcmVhdGUgVVNCIGdhZGdldHMgaW4gdXNlciBzcGFjZS4gIFRoaXMgYWxsb3dzIGNyZWF0aW9uXFxuIDM3NzpcXHRcXHQgIG9mIGNvbXBvc2l0ZSBnYWRnZXRzIHN1Y2ggdGhhdCBzb21lIG9mIHRoZSBmdW5jdGlvbnMgYXJlXFxuIDM3ODpcXHRcXHQgIGltcGxlbWVudGVkIGluIGtlcm5lbCBzcGFjZSAoZm9yIGluc3RhbmNlIEV0aGVybmV0LCBzZXJpYWwgb3JcXG4gMzc5OlxcdFxcdCAgbWFzcyBzdG9yYWdlKSBhbmQgb3RoZXIgYXJlIGltcGxlbWVudGVkIGluIHVzZXIgc3BhY2UuXFxuIDM4MDpcXHRcXG4gMzgxOlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXFxuIDM4MjpcXHRcXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuIDM4MzpcXHRcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbiAzODQ6XFx0XFx0ZGVwZW5kcyBvbiBTTkRcXG4gMzg1OlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDM4NjpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiAzODc6XFx0XFx0c2VsZWN0IFVTQl9VX0FVRElPXFxuIDM4ODpcXHRcXHRzZWxlY3QgVVNCX0ZfVUFDMVxcbiAzODk6XFx0XFx0aGVscFxcbiAzOTA6XFx0XFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxcbiAzOTE6XFx0XFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXFxuIDM5MjpcXHRcXHQgIFRoaXMgZHJpdmVyIGRvZXNuJ3QgZXhwZWN0IGFueSByZWFsIEF1ZGlvIGNvZGVjIHRvIGJlIHByZXNlbnRcXG4gMzkzOlxcdFxcdCAgb24gdGhlIGRldmljZSAtIHRoZSBhdWRpbyBzdHJlYW1zIGFyZSBzaW1wbHkgc2lua2VkIHRvIGFuZFxcbiAzOTQ6XFx0XFx0ICBzb3VyY2VkIGZyb20gYSB2aXJ0dWFsIEFMU0Egc291bmQgY2FyZCBjcmVhdGVkLiBUaGUgdXNlci1zcGFjZVxcbiAzOTU6XFx0XFx0ICBhcHBsaWNhdGlvbiBtYXkgY2hvb3NlIHRvIGRvIHdoYXRldmVyIGl0IHdhbnRzIHdpdGggdGhlIGRhdGFcXG4gMzk2OlxcdFxcdCAgcmVjZWl2ZWQgZnJvbSB0aGUgVVNCIEhvc3QgYW5kIGNob29zZSB0byBwcm92aWRlIHdoYXRldmVyIGl0XFxuIDM5NzpcXHRcXHQgIHdhbnRzIGFzIGF1ZGlvIGRhdGEgdG8gdGhlIFVTQiBIb3N0LlxcbiAzOTg6XFx0XFxuIDM5OTpcXHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcXG4gNDAwOlxcdFxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMCAobGVnYWN5IGltcGxlbWVudGF0aW9uKVxcXCJcXG4gNDAxOlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQwMjpcXHRcXHRkZXBlbmRzIG9uIFNORFxcbiA0MDM6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gNDA0OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDQwNTpcXHRcXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1lcXG4gNDA2OlxcdFxcdGhlbHBcXG4gNDA3OlxcdFxcdCAgVGhpcyBBdWRpbyBmdW5jdGlvbiBpbXBsZW1lbnRzIDEgQXVkaW9Db250cm9sIGludGVyZmFjZSxcXG4gNDA4OlxcdFxcdCAgMSBBdWRpb1N0cmVhbWluZyBJbnRlcmZhY2UgZWFjaCBmb3IgVVNCLU9VVCBhbmQgVVNCLUlOLlxcbiA0MDk6XFx0XFx0ICBUaGlzIGlzIGEgbGVnYWN5IGRyaXZlciBhbmQgcmVxdWlyZXMgYSByZWFsIEF1ZGlvIGNvZGVjXFxuIDQxMDpcXHRcXHQgIHRvIGJlIHByZXNlbnQgb24gdGhlIGRldmljZS5cXG4gNDExOlxcdFxcbiA0MTI6XFx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG4gNDEzOlxcdFxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4gNDE0OlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQxNTpcXHRcXHRkZXBlbmRzIG9uIFNORFxcbiA0MTY6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gNDE3OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDQxODpcXHRcXHRzZWxlY3QgVVNCX1VfQVVESU9cXG4gNDE5OlxcdFxcdHNlbGVjdCBVU0JfRl9VQUMyXFxuIDQyMDpcXHRcXHRoZWxwXFxuIDQyMTpcXHRcXHQgIFRoaXMgQXVkaW8gZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIFVTQiBBdWRpbyBDbGFzc1xcbiA0MjI6XFx0XFx0ICBzcGVjaWZpY2F0aW9uIDIuMC4gSXQgaW1wbGVtZW50cyAxIEF1ZGlvQ29udHJvbCBpbnRlcmZhY2UsXFxuIDQyMzpcXHRcXHQgIDEgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIGVhY2ggZm9yIFVTQi1PVVQgYW5kIFVTQi1JTi5cXG4gNDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgZG9lc24ndCBleHBlY3QgYW55IHJlYWwgQXVkaW8gY29kZWMgdG8gYmUgcHJlc2VudFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OTozMi4wNTExODU4NjJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMzNjUxMjAxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRnVuY3Rpb24gSW1wbGVtZW50YXRpb25zKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBoZXJlLiBUaGUga2V5IGRyaXZlciBzZWVtcyB0byBiZSBgU05EYCwgc28gdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbnMgYXJlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIHRleHQgbWVudGlvbnMgdGhlc2UgZnVuY3Rpb25zOiBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciByZWxldmFudCBhdHRyaWJ1dGVzLiBJIHNob3VsZCBsb29rIGZvciB1c2FnZXMgb2YgYFVBQzFfUkFURV9BVFRSSUJVVEVgIG9yIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4gSGFuZyBvbiwgSSd2ZSBhbHJlYWR5IHNjYW5uZWQgZm9yIHRob3NlIHVzYWdlcyBhbmQgZm91bmQgdGhlIG9uZXMgYWJvdmU6IGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgIGZvciBib3RoIFVBQzEgYW5kIFVBQzIuIFNvLCB0aG9zZSBmb3VyIGZ1bmN0aW9ucyBhcmUgdGhlIG9uZXMgaW4gcXVlc3Rpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byB2ZXJpZnkgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCB3aGljaCBtZWFucyBjaGVja2luZyBpZiB0aGV5IGFyZSBub24tc3RhdGljIGFuZCBub3QgaW5saW5lZC4gVGhlc2UgYXJlIHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIHJhaXNlcyBhIHJlZCBmbGFnIHBlciB0aGUgZ3VpZGVsaW5lcy4gSG93ZXZlciwgdGhleSdyZSBiZWluZyB1c2VkIGFzIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGBDT05GSUdGU19BVFRSYCBtYWNyby4gVGhpcyBtYWNybyBjcmVhdGVzIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgIGFuZCBwb3B1bGF0ZXMgaXQgd2l0aCBwb2ludGVycyB0byB0aG9zZSBmdW5jdGlvbnMuIFNpbmNlIHRoZXkgYXJlIGJlaW5nIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGEgYHN0cnVjdGAsIHRoZSBjb21waWxlciAqY2Fubm90KiBpbmxpbmUgdGhlbS4gVGhleSAqbXVzdCogaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMuIFRoYXQncyBnb29kLiBOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgYENPTkZJR0ZTX0FUVFJgIG1hY3JvIGl0c2VsZiB0byBjb25maXJtIHRoYXQgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MzguMzg3NzAxNjg2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUwMTk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQ09ORklHRlNfQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9jb25maWdmcy5oPTExNT1zdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMjItXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjEyMzojZGVmaW5lIENPTkZJR0ZTX0FUVFJfUEVSTShfcGZ4LCBfbmFtZSwgX3Blcm0pXFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMjQtc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgX3BmeCMjYXR0cl8jI19uYW1lID0ge1xcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzEtXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjEzMjojZGVmaW5lIENPTkZJR0ZTX0FUVFIoX3BmeCwgX25hbWUpIENPTkZJR0ZTX0FUVFJfUEVSTShcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEzMy1cXHRcXHRfcGZ4LCBfbmFtZSwgU19JUlVHTyB8IFNfSVdVU1JcXHRcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTM1LVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxMzY6I2RlZmluZSBDT05GSUdGU19BVFRSX1JPKF9wZngsIF9uYW1lKVxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTM3LXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIF9wZngjI2F0dHJfIyNfbmFtZSA9IHtcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTQzLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxNDQ6I2RlZmluZSBDT05GSUdGU19BVFRSX1dPKF9wZngsIF9uYW1lKVxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTQ1LXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIF9wZngjI2F0dHJfIyNfbmFtZSA9IHtcXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjM4LjQzNDIxNDkxNloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDExODkxNDkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVBQzEvVUFDMiBDb25maWdmcyBTdG9yZSBDYWxsYmFja3MgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlIG1haW4gY29uY2VybiBpcyB0aGVzZSBgc3RvcmVgIGNhbGxiYWNrcywgc3BlY2lmaWNhbGx5IGJlY2F1c2UgdGhleSdyZSBmdW5jdGlvbiBwb2ludGVycywgbWVhbmluZyB0aGV5IGFyZW4ndCBpbmxpbmVkLiBXaGlsZSBJIGluaXRpYWxseSB0aG91Z2h0IGFib3V0IGZpbmRpbmcgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LCB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0aGUgbW9zdCBkaXJlY3Qgcm91dGUgaGVyZS4gSXQgbG9va3MgbGlrZSB0aGUgZGF0YSBmbG93IGlzIHRocm91Z2ggYGNvbmZpZ2ZzX3dyaXRlX2ZpbGVgIC1cdTAwM2UgYGNvbmZpZ2ZzX3dyaXRlX2l0ZXJgIC1cdTAwM2UgYGZsdXNoX3dyaXRlX2J1ZmZlcmAgLVx1MDAzZSBgYXR0ci1cdTAwM2VzdG9yZWAuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyB0aG9zZSBgc3RvcmVgIGNhbGxiYWNrcyBkaXJlY3RseS5cblxuVGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbiBhcmU6XG5cbiogICBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWBcbiogICBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWBcbiogICBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWBcbiogICBgZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZWBcblxuSSBkaWQgYSBxdWljayBjaGVjaywgYW5kIHRoZSBwYXRjaCBzZWVtcyB0byBleGNsdXNpdmVseSB0YXJnZXQgdGhlIGBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZWAgbWFjcm9zLCB3aGljaCBnZW5lcmF0ZSB0aGUgYHN0b3JlYCBmdW5jdGlvbnMgZm9yIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgLiAgU28sIG15IGluaXRpYWwgbGlzdCBpcyBjb3JyZWN0LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOlxuXG4qICAgYFVTQl9HQURHRVRgXG4qICAgYFVTQl9EVU1NWV9IQ0RgXG4qICAgYFVTQl9DT05GSUdGU2BcbiogICBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWBcbiogICBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmBcbiogICBgU05EYCAod2hpY2ggaXMgdGhlIG1haW4gQUxTQSBjb25maWcpXG5cbkFuZCB0aGUgZGVwZW5kZW5jaWVzIGFyZTogYFVTQl9EVU1NWV9IQ0RgIGRlcGVuZHMgb24gYFVTQl9HQURHRVRgIGFuZCBgVVNCX1NVUFBPUlRgLiBgVVNCX0NPTkZJR0ZTYCBkZXBlbmRzIG9uIGBVU0JfR0FER0VUYC4gYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAgYm90aCBkZXBlbmQgb24gYFVTQl9DT05GSUdGU2AgYW5kIGBTTkRgLiBgVVNCX1NVUFBPUlRgIGlzIHVzdWFsbHkgZW5hYmxlZC5cblxuU28gdGhlIGNvbXBsZXRlIHNldCBJIG5lZWQgdG8gY29uc2lkZXIgaXM6IGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VBQzFgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIGFuZCBgU05EYC5cblxuSSBxdWlja2x5IHZlcmlmaWVkIHRoZSBleGFjdCBzeW1ib2wgbmFtZXMsIHRvIG1ha2Ugc3VyZS4gVGhlIG1hY3JvIGRlZmluaXRpb24gaXM6XG5cbmBgYGNcbiNkZWZpbmUgVUFDMV9SQVRFX0FUVFJJQlVURShuYW1lKVx0XHRcdFx0XHRcXFxuc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuXHRcdFx0XHRcdCBjaGFyICpwYWdlKVx0XHRcdFxcXG4uLi5cbnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG5cdFx0XHRcdFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVx0XFxcbi4uLlxuYGBgXG5cbkl0IGlzIGNhbGxlZCB3aXRoOlxuXG5gYGBjXG5VQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xuVUFDMV9SQVRFX0FUVFJJQlVURShwX3NyYXRlKTtcbmBgYFxuXG5TbyBpdCBpcyBpbmRlZWQ6IGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYCBhbmQgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBUaGUgYFVBQzJgIGRlZmluaXRpb25zIGFyZSBzaW1pbGFyLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIGZpeGluZyBhIG1lbW9yeSBsZWFrIGluIHRoZXNlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcywgYWZmZWN0aW5nIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBmdW5jdGlvbnMuIEl0IHNlZW1zIHRoZSBsZWFrIG9jY3VycmVkIGJlY2F1c2UgYHN0cnNlcGAgd2FzIG1vZGlmeWluZyB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBga3N0cmR1cGAsIHNvIGBrZnJlZWAgd2FzIGJlaW5nIGNhbGxlZCBvbiBhbiBpbmNvcnJlY3QgcG9pbnRlci4gVGhlIHBhdGNoIGFsbG9jYXRlcyBhIHNlcGFyYXRlIHBvaW50ZXIgdG8gdGhlIG9yaWdpbmFsIG1lbW9yeSBibG9jay4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgYW5kIGlzIGZ1bGx5IHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC5cblxuU28sIHRoaXMgaXMgYWJzb2x1dGVseSBmdXp6YWJsZS4gSSdsbCBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLiAgQmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgdGhvc2UgbWFjcm9zIGFyZSB1c2VkIGVsc2V3aGVyZSwganVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyNTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6NTIuNTUzMTMyNzE4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTE4MTYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJVQUMxX1JBVEVfQVRUUklCVVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE1Njg9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NjktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1NzA6I2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTcxLXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjcxPVVBQzFfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjcyOlVBQzFfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzMtVUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTY3ND1VQUMxX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NTpVQUMxX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc2LVVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjUyLjYwNDMyMzUxN1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDA4NDY4MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGEgc2Vhc29uZWQgcHJvZmVzc2lvbmFsIGluIHRoZSBmaWVsZCBhbmQgdGhlIFwidGV4dCBiZWxvd1wiIHJlZmVycyB0byBzb21lIHRlY2huaWNhbCBzcGVjaWZpY2F0aW9uIG9yIGRpc2N1c3Npb24gYWJvdXQgYSBgVUFDMl9SQVRFX0FUVFJJQlVURWAgd2l0aGluIGEgbGFyZ2VyIGF1ZGlvIHN5c3RlbSBjb250ZXh0LlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBgVUFDMl9SQVRFX0FUVFJJQlVURWAqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGlzIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4uLiBteSBmaXJzdCB0aG91Z2h0IGlzLCBcIk9rYXksIFVBQzIg4oCTIFVTQiBBdWRpbyBDbGFzcyAyLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWJvdXQgVVNCIGF1ZGlvIHN0cmVhbWluZy5cIiBJJ20gbWVudGFsbHkgZmlsaW5nIHRoYXQgdW5kZXIgdGhlIFwiaGlnaC1zcGVlZCwgZ2VuZXJhbGx5IHJlbGlhYmxlXCIgY2F0ZWdvcnksIGJ1dCBvZiBjb3Vyc2UsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbnVhbmNlcy4gU3BlY2lmaWNhbGx5LCB0aGUgcmF0ZSBhdHRyaWJ1dGUuIEknbSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgaXRzIGltcGxpY2F0aW9ucyBmb3Igc2FtcGxlIHJhdGVzLCBiaXQgZGVwdGhzLCBhbmQgcG90ZW50aWFsIGNsb2NraW5nIGlzc3Vlcy4gSXMgdGhpcyB0aGUgKnByZWZlcnJlZCogcmF0ZSwgdGhlICpzdXBwb3J0ZWQqIHJhdGUsIG9yIHBlcmhhcHMgYSAqcmFuZ2UqIG9mIGFjY2VwdGFibGUgcmF0ZXM/IEFuZCBob3cgZ3JhbnVsYXIgaXMgdGhlIGNvbnRyb2w/IERvZXMgaXQganVzdCBvZmZlciBhIGZldyBwcmVzZXQgb3B0aW9ucyAobGlrZSA0NC4xa0h6LCA0OGtIeiwgOTZrSHopIG9yIHNvbWV0aGluZyBtb3JlIGZpbmUtZ3JhaW5lZCwgYWxsb3dpbmcgZm9yIGZyYWN0aW9uYWwgcmF0ZXMgb3IgZXZlbiBwb3RlbnRpYWxseSB2YXJpYWJsZSByYXRlIGFkanVzdG1lbnRzPyBUaGF0IGxldmVsIG9mIGNvbnRyb2wgaXMgY3J1Y2lhbC5cblxuVGhlbiwgbXkgbWluZCByYWNlcyB0byB0aGUgcG90ZW50aWFsIHByb2JsZW1zLiBDbG9jayBkb21haW4gbWlzbWF0Y2hlcyBhcmUgKmFsd2F5cyogYSBjb25jZXJuIHdpdGggVVNCIGF1ZGlvLiBTbywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGF1ZGlvIHF1YWxpdHkuIElzIHRoZSByYXRlIGF0dHJpYnV0ZSB0aGUgZGVmaW5pbmcgZmFjdG9yIG9yIGRvZXMgc29tZXRoaW5nIGVsc2UgZGV0ZXJtaW5lIHRoYXQ/IEppdHRlciBpcyB0aGUgYmlnIGJvZ2V5bWFuIGhlcmUuIERvZXMgdGhlIFVBQzIgaW1wbGVtZW50YXRpb24gcHJvdmlkZSBzdWZmaWNpZW50IGJ1ZmZlcmluZyBhbmQgYWRhcHRpdmUgY2xvY2tpbmcgdG8gbWl0aWdhdGUgaml0dGVyIGludHJvZHVjZWQgYnkgdGhlIFVTQiBidXMgaXRzZWxmPyBIb3cgZG9lcyB0aGlzIGF0dHJpYnV0ZSBpbnRlcmFjdCB3aXRoIHRoZSBob3N0IGNvbnRyb2xsZXIgYW5kIHRoZSBVU0IgYXVkaW8gZGV2aWNlPyBJZiB0aGUgcmF0ZXMgZG9uJ3QgbWF0Y2ggb3IgY2Fubm90IGJlIHN5bmNocm9uaXplZCwgSSBpbnN0YW50bHkgdGhpbmsgYWJvdXQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIHBlbmFsdGllcyBsaWtlIHRoZSBuZWVkIGZvciByZXNhbXBsaW5nIG9yIGF1ZGlvIGRyb3BvdXRzLCBhbmQgSSB3YW50IHRvIGxvb2sgaW50byB0aGF0LlxuXG5BbHNvLCBJJ20gY29uc2lkZXJpbmcgdGhlICpwdXJwb3NlKiBvZiBzZXR0aW5nIHRoaXMgcmF0ZS4gSXMgaXQgZm9yIHRoZSBwbGF5YmFjayBkZXZpY2UsIHRoZSByZWNvcmRpbmcgZGV2aWNlLCBvciBib3RoPyBJcyB0aGlzIGF0dHJpYnV0ZSBzb2xlbHkgZm9yIFBDTSBhdWRpbywgb3IgZG9lcyBpdCBleHRlbmQgdG8gb3RoZXIgYXVkaW8gZm9ybWF0cz8gQXJlIHRoZXJlIGltcGxpY2F0aW9ucyBmb3IgcG93ZXIgY29uc3VtcHRpb24sIHBhcnRpY3VsYXJseSBpbiBiYXR0ZXJ5LXBvd2VyZWQgZGV2aWNlcz8gTXkgdGhvdWdodHMgYXJlIHRoYXQgdGhlc2UgZGV0YWlscywgYW5kIHRoZSBhc3NvY2lhdGVkIGltcGxlbWVudGF0aW9ucywgZGV0ZXJtaW5lIHRoZSBxdWFsaXR5IG9mIHRoZSBkZXZpY2UgYW5kIG11c3QgYmUgZXZhbHVhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUzNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjU3LjAxMjc5Mzc3NloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1NTM4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVUFDMl9SQVRFX0FUVFJJQlVURVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoxOTg4OiNkZWZpbmUgVUFDMl9SQVRFX0FUVFJJQlVURShuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk0LVVBQzJfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5NzpVQUMyX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6NTcuMDYyMzUzNzM1WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMjUwNzcxNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91J3ZlIGRlc2NyaWJlZDpcblxuKipDbGVhciBQYXRoIEZvcndhcmQqKlxuXG5SaWdodCwgdGhhdCdzIGl0LiBJdCdzIGp1c3QgYGNfc3JhdGVgIGFuZCBgcF9zcmF0ZWAgZm9yIGJvdGgsIGFzIEkgc3VzcGVjdGVkLiBObyBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyBoZXJlLiBJJ3ZlIGdvdCBldmVyeXRoaW5nIEkgbmVlZCBub3c7IGFsbCB0aGUgcmVsZXZhbnQgZGF0YSBwb2ludHMgYXJlIHByZXNlbnQuIEV4Y2VsbGVudC4gVGltZSB0byBleGVjdXRlIHRoZSBwbGFuLiBJJ2xsIG1ha2UgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYCBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ0MywiT3V0cHV0VG9rZW5zIjoyNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNzowMDowMS4yODc0MzQxNjZaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjcwMDEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIixcbiAgICBcIlVTQl9DT05GSUdGU1wiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVUFDMVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVUFDMlwiLFxuICAgIFwiU05EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGZ1bmN0aW9ucy4gVGhlIGxlYWsgb2NjdXJyZWQgYmVjYXVzZSBgc3Ryc2VwYCBtb2RpZmllZCB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBga3N0cmR1cGAsIGNhdXNpbmcgYGtmcmVlYCB0byBiZSBjYWxsZWQgb24gYW4gaW52YWxpZCBvciBhZHZhbmNlZCBwb2ludGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBhIFVTQiBnYWRnZXQsIHdoaWNoIGlzIGZ1bGx5IHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 16:54:22 +0000 UTC FinishedAt: 2026-07-29 17:00:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_CONFIGFS", "USB_CONFIGFS_F_UAC1", "USB_CONFIGFS_F_UAC2", "SND" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_CONFIGFS", "USB_CONFIGFS_F_UAC1", "USB_CONFIGFS_F_UAC2", "SND" ], "series_id": "625febe5-bbad-4322-8438-5dba7bbb8793" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "f_uac1_opts_c_srate_store", "f_uac1_opts_p_srate_store", "f_uac2_opts_c_srate_store", "f_uac2_opts_p_srate_store" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWNmZmMyY2Y0MWM2NmU1NjkwM2E0YzJhZjJlNGZhYTJlMTMyYzY3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDE2OjU4OjI4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuaW5kZXggODVjNTAyZTk4ZjU3Ny4uZjRiN2JiZDkzNGNhMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXG5AQCAtMTU5NCw2ICYjNDM7MTU5NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3QgZl91YWMxX29wdHMgKm9wdHMgPSB0b19mX3VhYzFfb3B0cyhpdGVtKTtcdFx0XFxcbiYjNDM7XHRjaGFyICpwYWdlX2FsbG9jID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1x0XHRcdFx0XHRcXFxuIFx0aW50IHJldCA9IC1FSU5WQUw7XHRcdFx0XHRcdFx0XFxcbiBcdGNoYXIgKnRva2VuO1x0XHRcdFx0XHRcdFx0XFxcbkBAIC0xNjA4LDcgJiM0MzsxNjA5LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuJiM0MztcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbiYjNDM7XHRpZiAoIXBhZ2VfYWxsb2MpIHtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0c3BsaXRfcGFnZSA9IHBhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4gXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwmIzM0OyxcJiMzNDspKSAhPSBOVUxMKSB7XHRcdFxcXG4gXHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuIFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG5AQCAtMTYxOSw3ICYjNDM7MTYyNSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHR9O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gZW5kOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRrZnJlZShzcGxpdF9wYWdlKTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGtmcmVlKHBhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcdFxcXG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbiBcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuaW5kZXggODk3Nzg3ZDA4MDNjMS4uMzM2YWVhZWM5YmEwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXG5AQCAtMjAxMiw2ICYjNDM7MjAxMiw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3QgZl91YWMyX29wdHMgKm9wdHMgPSB0b19mX3VhYzJfb3B0cyhpdGVtKTtcdFx0XFxcbiYjNDM7XHRjaGFyICpwYWdlX2FsbG9jID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1x0XHRcdFx0XHRcXFxuIFx0aW50IHJldCA9IC1FSU5WQUw7XHRcdFx0XHRcdFx0XFxcbiBcdGNoYXIgKnRva2VuO1x0XHRcdFx0XHRcdFx0XFxcbkBAIC0yMDI2LDcgJiM0MzsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuJiM0MztcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbiYjNDM7XHRpZiAoIXBhZ2VfYWxsb2MpIHtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0c3BsaXRfcGFnZSA9IHBhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4gXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwmIzM0OyxcJiMzNDspKSAhPSBOVUxMKSB7XHRcdFxcXG4gXHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuIFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG5AQCAtMjAzNyw3ICYjNDM7MjA0Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHR9O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gZW5kOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRrZnJlZShzcGxpdF9wYWdlKTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGtmcmVlKHBhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcdFxcXG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbiBcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VBQzEmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMiYjMzQ7LAogICAgJiMzNDtTTkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGZ1bmN0aW9ucy4gVGhlIGxlYWsgb2NjdXJyZWQgYmVjYXVzZSBgc3Ryc2VwYCBtb2RpZmllZCB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBga3N0cmR1cGAsIGNhdXNpbmcgYGtmcmVlYCB0byBiZSBjYWxsZWQgb24gYW4gaW52YWxpZCBvciBhZHZhbmNlZCBwb2ludGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBhIFVTQiBnYWRnZXQsIHdoaWNoIGlzIGZ1bGx5IHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVjZmZjMmNmNDFjNjZlNTY5MDNhNGMyYWYyZTRmYWEyZTEzMmM2N2MKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxNjo1ODoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYwppbmRleCA4NWM1MDJlOThmNTc3Li5mNGI3YmJkOTM0Y2EyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jCkBAIC0xNTk0LDYgJiM0MzsxNTk0LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCiAJCQkJCSAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbikJXAogewkJCQkJCQkJCVwKIAlzdHJ1Y3QgZl91YWMxX29wdHMgKm9wdHMgPSB0b19mX3VhYzFfb3B0cyhpdGVtKTsJCVwKJiM0MzsJY2hhciAqcGFnZV9hbGxvYyA9IE5VTEw7CQkJCQlcCiAJY2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7CQkJCQlcCiAJaW50IHJldCA9IC1FSU5WQUw7CQkJCQkJXAogCWNoYXIgKnRva2VuOwkJCQkJCQlcCkBAIC0xNjA4LDcgJiM0MzsxNjA5LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwJXAogCQkJCQkJCQkJXAogCWkgPSAwOwkJCQkJCQkJXAogCW1lbXNldChvcHRzLSZndDtuYW1lIyNzLCAweDAwLCBzaXplb2Yob3B0cy0mZ3Q7bmFtZSMjcykpOwkJXAotCXNwbGl0X3BhZ2UgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpOwkJCQlcCiYjNDM7CXBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpOwkJCQlcCiYjNDM7CWlmICghcGFnZV9hbGxvYykgewkJCQkJCVwKJiM0MzsJCXJldCA9IC1FTk9NRU07CQkJCQkJXAomIzQzOwkJZ290byBlbmQ7CQkJCQkJXAomIzQzOwl9CQkJCQkJCQlcCiYjNDM7CXNwbGl0X3BhZ2UgPSBwYWdlX2FsbG9jOwkJCQkJXAogCXdoaWxlICgodG9rZW4gPSBzdHJzZXAoJmFtcDtzcGxpdF9wYWdlLCAmIzM0OywmIzM0OykpICE9IE5VTEwpIHsJCVwKIAkJcmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCAmYW1wO251bSk7CQkJXAogCQlpZiAocmV0KQkJCQkJCVwKQEAgLTE2MTksNyAmIzQzOzE2MjUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIAl9OwkJCQkJCQkJXAogCQkJCQkJCQkJXAogZW5kOgkJCQkJCQkJCVwKLQlrZnJlZShzcGxpdF9wYWdlKTsJCQkJCQlcCiYjNDM7CWtmcmVlKHBhZ2VfYWxsb2MpOwkJCQkJCVwKIAltdXRleF91bmxvY2soJmFtcDtvcHRzLSZndDtsb2NrKTsJCQkJCVwKIAlyZXR1cm4gcmV0OwkJCQkJCQlcCiB9CQkJCQkJCQkJXApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jCmluZGV4IDg5Nzc4N2QwODAzYzEuLjMzNmFlYWVjOWJhMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMKQEAgLTIwMTIsNiAmIzQzOzIwMTIsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIAkJCQkJICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKQlcCiB7CQkJCQkJCQkJXAogCXN0cnVjdCBmX3VhYzJfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMl9vcHRzKGl0ZW0pOwkJXAomIzQzOwljaGFyICpwYWdlX2FsbG9jID0gTlVMTDsJCQkJCVwKIAljaGFyICpzcGxpdF9wYWdlID0gTlVMTDsJCQkJCVwKIAlpbnQgcmV0ID0gLUVJTlZBTDsJCQkJCQlcCiAJY2hhciAqdG9rZW47CQkJCQkJCVwKQEAgLTIwMjYsNyAmIzQzOzIwMjcsMTIgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCiAJCQkJCQkJCQlcCiAJaSA9IDA7CQkJCQkJCQlcCiAJbWVtc2V0KG9wdHMtJmd0O25hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLSZndDtuYW1lIyNzKSk7CQlcCi0Jc3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7CQkJCVwKJiM0MzsJcGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7CQkJCVwKJiM0MzsJaWYgKCFwYWdlX2FsbG9jKSB7CQkJCQkJXAomIzQzOwkJcmV0ID0gLUVOT01FTTsJCQkJCQlcCiYjNDM7CQlnb3RvIGVuZDsJCQkJCQlcCiYjNDM7CX0JCQkJCQkJCVwKJiM0MzsJc3BsaXRfcGFnZSA9IHBhZ2VfYWxsb2M7CQkJCQlcCiAJd2hpbGUgKCh0b2tlbiA9IHN0cnNlcCgmYW1wO3NwbGl0X3BhZ2UsICYjMzQ7LCYjMzQ7KSkgIT0gTlVMTCkgewkJXAogCQlyZXQgPSBrc3RydG91MzIodG9rZW4sIDAsICZhbXA7bnVtKTsJCQlcCiAJCWlmIChyZXQpCQkJCQkJXApAQCAtMjAzNyw3ICYjNDM7MjA0Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwJXAogCX07CQkJCQkJCQlcCiAJCQkJCQkJCQlcCiBlbmQ6CQkJCQkJCQkJXAotCWtmcmVlKHNwbGl0X3BhZ2UpOwkJCQkJCVwKJiM0MzsJa2ZyZWUocGFnZV9hbGxvYyk7CQkJCQkJXAogCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2xvY2spOwkJCQkJXAogCXJldHVybiByZXQ7CQkJCQkJCVwKIH0JCQkJCQkJCQlcCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRml4aW5nIGEgVVNCIEdhZGdldCBBdWRpbyBNZW1vcnkgTGVhayoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aGUgVVNCIGdhZGdldCBhdWRpbyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMsIHNwZWNpZmljYWxseSBpbiBgZl91YWMxLmNgIGFuZCBgZl91YWMyLmNgLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBsaWVzIHdpdGhpbiB0aGUgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBtYWNyb3MuIEl0IHNlZW1zIHRoYXQgdGhlIHVzZSBvZiBgc3Ryc2VwYCBpcyBjYXVzaW5nIGBzcGxpdF9wYWdlYCB0byBiZSBhZHZhbmNlZCBpbiBzdWNoIGEgd2F5IHRoYXQgdGhlIGZpbmFsIGBrZnJlZShzcGxpdF9wYWdlKWAgY2FsbCBkb2VzbiYjMzk7dCBhY3R1YWxseSBmcmVlIHRoZSBvcmlnaW5hbCBtZW1vcnkgYWxsb2NhdGlvbi4gUHJldHR5IGNsYXNzaWMgbWVtb3J5IGxlYWsgc2NlbmFyaW8uCgpUaGUgc29sdXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBpbnRyb2R1Y2UgYHBhZ2VfYWxsb2NgIHRvIGhvbGQgb250byB0aGUgaW5pdGlhbCwgYWxsb2NhdGVkIHBvaW50ZXIuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGZyZWUgdGhlIGNvcnJlY3QgbWVtb3J5IHJlZ2lvbiBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzLCBwcmV2ZW50aW5nIHRoZSBsZWFrLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2xlYW4gZml4IGZvciBhIGNvbmZpZ2ZzLXJlbGF0ZWQgbWVtb3J5IGxlYWsuIEl0JiMzOTtzIGxpa2VseSByZWFjaGFibGUgd2hlbiBhIHVzZXIgaXMgY29uZmlndXJpbmcgVVNCIGdhZGdldCBhdWRpbyBmdW5jdGlvbnMgdGhyb3VnaCBjb25maWdmcywgYm90aCBVQUMxIGFuZCBVQUMyLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgZm9yIFVBQzEgYW5kIFVBQzIgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgbW9yZSBmdWxseS4gSSYjMzk7bGwgc2VhcmNoIGZvciBgZl91YWMxLmNgIGFuZCBgZl91YWMyLmNgIGluIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlYCBvciBgS2NvbmZpZ2AgZmlsZXMgdG8gaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZfdWFjMVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfVVNCX1VfQVVESU8pXHQmIzQzOz0gdV9hdWRpby5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6Mzc6dXNiX2ZfdWFjMS15XHRcdFx0Oj0gZl91YWMxLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfVVNCX0ZfVUFDMSlcdCYjNDM7PSB1c2JfZl91YWMxLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS0zOS11c2JfZl91YWMxX2xlZ2FjeS15XHRcdDo9IGZfdWFjMV9sZWdhY3kubyB1X3VhYzFfbGVnYWN5Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQ5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBwcm9tcHQ6CgoqKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgSW5xdWlyeSoqCgpIbW0sIGludGVyZXN0aW5nLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIHRhc2sgaGVyZSBpcyB0byBzdW1tYXJpemUgYSBzaW5nbGUsIHZlcnkgc3BlY2lmaWMgdGhvdWdodC4gVGhlIHByb21wdCBleHBsaWNpdGx5IGRpcmVjdHMgbWUgdG8gZW1ib2R5IHRoYXQgdGhvdWdodCBhcyBpZiBpdCB3ZXJlIG15IG93bi4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBhIHRlY2huaWNhbCBwcm9jZXNzLCBnaXZlbiB0aGUgbWVudGlvbiBvZiBhIGZpbGUsIHByb2JhYmx5IGFuIG9iamVjdCBmaWxlLiBUaGVyZWZvcmUsIHRoZSB0YXNrIGlzIGxpa2VseSB0byBwcm92aWRlIGEgc3VtbWFyeSByZWxhdGVkIHRvIHRoaXMgcHJvY2Vzcy4gVGhlIGZvY3VzIGFwcGVhcnMgdG8gYmUgb24gY29kZSBhbmQgYW5hbHlzaXMuIFNvLCB3aGF0JiMzOTtzIHRoZSB0aG91Z2h0IGFib3V0PyBJdCBpcyBhYm91dCBjaGVja2luZyBhbiBvYmplY3QgZmlsZS4gVGhlIHNwZWNpZmljIGZpbGUgaXMgYGZfdWFjMi5vYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX3VhYzJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU9NDA9b2JqLSQoQ09ORklHX1VTQl9GX1VBQzFfTEVHQUNZKVx0JiM0Mzs9IHVzYl9mX3VhYzFfbGVnYWN5Lm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0MTp1c2JfZl91YWMyLXlcdFx0XHQ6PSBmX3VhYzIub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19VU0JfRl9VQUMyKVx0JiM0Mzs9IHVzYl9mX3VhYzIub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTQzLXVzYl9mX3V2Yy15XHRcdFx0Oj0gZl91dmMubyB1dmNfcXVldWUubyB1dmNfdjRsMi5vIHV2Y192aWRlby5vIHV2Y19jb25maWdmcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzMQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIFVTQiBBdWRpbyBDbGFzcyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYFVTQl9GX1VBQzFgIGFuZCBgVVNCX0ZfVUFDMmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCBVQUMxIGFuZCBVQUMyLCBtYWtlcyBzZW5zZS4mIzM0OyBCdXQgdGhlbiB0aGUgYWxhcm0gYmVsbHMgZ28gb2ZmLiBUaGVzZSBhcmUgdGhlIGtpbmQgb2YgbG93LWxldmVsIHNldHRpbmdzIHRoYXQgYXJlICp1c3VhbGx5KiBicm91Z2h0IGluIHZpYSBvdGhlciwgaGlnaGVyLWxldmVsIG9wdGlvbnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZXkmIzM5O3JlIGFjdHVhbGx5IGJlaW5nIGNvbnRyb2xsZWQgZnJvbS4gVGhlIHNtYXJ0IG1vbmV5IHNheXMsIEkgc2hvdWxkIGdvIHN0cmFpZ2h0IHRvIHRoZSBLY29uZmlnIGZpbGVzLiBTbywgbGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgYW5kIGFsc28gdGhlIGxlZ2FjeSBkaXJlY3RvcnkgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBkcml2aW5nIHRoZXNlIHNldHRpbmdzLiBUaW1lIHRvIGdldCBkb3duIHRvIHRoZSByZWFsIG1lYXQgb2YgdGhlIG1hdHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0ZfVUFDMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTkyPWNvbmZpZyBVU0JfRl9GU1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5Njpjb25maWcgVVNCX0ZfVUFDMVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk3LVx0dHJpc3RhdGVcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5OTpjb25maWcgVVNCX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU3OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmUsIHVzaW5nIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIFVBQyBTZWxlY3Rpb24gQ3JpdGVyaWEqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGxvZ2ljIGJlaGluZCB3aGljaCBmbGFncywgc3BlY2lmaWNhbGx5IGBVU0JfRl9VQUMxYCBhbmQgYFVTQl9GX1VBQzJgLCB0cmlnZ2VyIGEgc2VsZWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodHMgYXJlOiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgYW5kIGNvbmRpdGlvbnMgYXQgcGxheS4gSXMgdGhpcyBkcml2ZW4gYnkgZGV2aWNlIGNhcGFiaWxpdGllcyByZXBvcnRlZCBkdXJpbmcgZW51bWVyYXRpb24/IEFyZSB0aGVyZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGludm9sdmVkLCBwZXJoYXBzIHVzZXIgb3ZlcnJpZGVzIG9yIGRlZmF1bHRzPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBjb25kaXRpb25hbCBjaGVjaywgb3IgYSBtb3JlIGNvbXBsZXggZGVjaXNpb24gdHJlZSBiYXNlZCBvbiBtdWx0aXBsZSBmYWN0b3JzIGxpa2UgY2xhc3MgY29kZXMsIGludGVyZmFjZSBkZXNjcmlwdG9ycywgYW5kIGVuZHBvaW50IGNoYXJhY3RlcmlzdGljcz8gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aGUgZGV2aWNlIGRyaXZlcnMgaW4gcXVlc3Rpb24gaXMga2V5IGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgY29kZSBwYXRocyB0aGF0ICpjb3VsZCogcG90ZW50aWFsbHkgbGVhZCB0byB0aGVzZSBmbGFncyBiZWluZyBzZXQuIFRoZW4sIEnigJlsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbmluZyAtIHdoYXQmIzM5O3MgdGhlIGRpZmZlcmVudGlhdGluZyBmYWN0b3IgdGhhdCBkcml2ZXMgVUFDMSB2ZXJzdXMgVUFDMiBzZWxlY3Rpb24/IEFyZSB0aGVyZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucz8gQ29tcGxpYW5jZSByZXF1aXJlbWVudHM/IEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWVzPyBJ4oCZbSBob3BpbmcgdG8gc2VlIGEgY2xlYW4sIGVhc2lseS1kaWdlc3RpYmxlIGNvbmRpdGlvbmFsLiBTb21ldGltZXMsIHlvdSBnZXQgbHVja3kuIEJ1dCBJJiMzOTttIHByZXBhcmVkIGZvciBhIG11bHRpLWxheWVyZWQgYXBwcm9hY2ggdG8gdW5kZXJzdGFuZCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1VBQzEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Ny1cdHNlbGVjdCBVU0JfVV9BVURJT1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzg4Olx0c2VsZWN0IFVTQl9GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4OS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zOTk9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA0LVx0c2VsZWN0IFNORF9QQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQwNTpcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA2LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz03NT1jb25maWcgVVNCX0FVRElPXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTc5LVx0c2VsZWN0IFNORF9QQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MDpcdHNlbGVjdCBVU0JfRl9VQUMxIGlmIChHQURHRVRfVUFDMSBcdTAwMjZcdTAwMjYgIUdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MTpcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWSBpZiAoR0FER0VUX1VBQzEgXHUwMDI2XHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy04Mi1cdHNlbGVjdCBVU0JfRl9VQUMyIGlmICFHQURHRVRfVUFDMVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjcwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gQ29uZmlnRlMgYW5kIFVBQyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ2ZzIG9wdGlvbnMgcmVsZXZhbnQgdG8gVVNCIEF1ZGlvIENsYXNzIChVQUMpIGRldmljZXMuIFNwZWNpZmljYWxseSwgSSBrbm93IHRoYXQgYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAgYXJlIHRoZSBrZXkgZmxhZ3MgdG8gY29uc2lkZXIgaW4gdGhpcyBjb250ZXh0LgoKTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgYmVnaW4gbXkgaW52ZXN0aWdhdGlvbiwgYXMgdGhlIG5ld2VyIHNwZWNpZmljYXRpb24gbGlrZWx5IGluY29ycG9yYXRlcyB0aGUgZmVhdHVyZXMgYW5kIGFkdmFudGFnZXMgdGhhdCBJIGFtIGxvb2tpbmcgZm9yLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zOTk9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjI2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBVU0IgR2FkZ2V0IEF1ZGlvKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjb3ZlciBhbGwgdGhlIGJhc2VzIGhlcmUuIEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSBib3RoIGBVU0JfQ09ORklHRlNgIGFuZCBgVVNCX0dBREdFVGAgaW4gdGhlIGFuYWx5c2lzLCB0byBiZSB0aG9yb3VnaC4gTm93LCBsZXQgbWUgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIHRoZSBhdWRpbyBnYWRnZXQgY29uZmlndXJhdGlvbi4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhlIG9wdGlvbnMgYXJlIHN0b3JlZC4gSSBrbm93IHRoYXQgdGhlIG1hY3JvcyBgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFuZCBgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFyZSBrZXkgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHdheSB0aGV5IGFyZSBiZWluZyBpbXBsZW1lbnRlZC4gVGhlc2UgbG9vayBsaWtlIHRoZXkmIzM5O3JlIGdlbmVyYXRlZCBieSBhIG1hY3JvLCBzbyB0aGUgbmV4dCBzdGVwIGlzIHRvIGxvY2F0ZSB0aGUgbmFtZSBvZiB0aGF0IG1hY3JvIHRvIGdldCB0byB0aGUgcm9vdCBvZiB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX3VhYzFfb3B0c18uKl9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTUyOD1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU0MS1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1NDI6c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoXHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NDMtXHRcdFx0XHRcdCAgc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU3MT1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1OTItXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNTkzOnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU5NC1cdFx0XHRcdFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTYzNj1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NDgtXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjQ5OnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY1MC1cdFx0XHRcdFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVx0XFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQwNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgbWFjcm8gYW5kIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGguCgoqKkRlY29uc3RydWN0aW5nIHRoZSBNYWNybzogVW52ZWlsaW5nIHRoZSBHZW5lcmF0ZWQgRnVuY3Rpb25zKioKCkFscmlnaHQsIG15IGV4cGVydCBleWVzIGFyZSBvbiB0aGlzIG1hY3JvLiBNeSBwcmltYXJ5IG9iamVjdGl2ZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbnMgaXQgZ2VuZXJhdGVzLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBkaXNzZWN0IGl0cyBzdHJ1Y3R1cmUsIHRyYWNpbmcgdGhlIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGFuZCBsb29waW5nIGNvbnN0cnVjdHMgd2l0aGluIGl0LiBJIHdhbnQgdG8gaWRlbnRpZnkgYW55IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgb3IgaGlkZGVuIHBhcmFtZXRlcnMgdGhhdCBtaWdodCBiZSBnZW5lcmF0ZWQgaW4gdGhlIHByb2Nlc3MuIEkgYW0ga2VlbiB0byB1bmRlcnN0YW5kIHdoYXQgdHlwZXMgb2YgZnVuY3Rpb25zIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0gdGhpcyBtYWNybyB5aWVsZHMuIFRoaXMgaXMgdGhlIGNydWNpYWwgZm91bmRhdGlvbiBmb3IgbXkgZGVlcGVyIGV2YWx1YXRpb24uIEFmdGVyIGFsbCwgdW5kZXJzdGFuZGluZyB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG1hY3JvJiMzOTtzIHRydWUgY2FwYWJpbGl0aWVzIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1VBQzFfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTI1PXN0YXRpYyBjb25zdCBjaGFyICpib29sX2ZtdCA9IFwmIzM0OyV1XFxuXCYjMzQ7O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1MjYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTUyNzojZGVmaW5lIFVBQzFfQVRUUklCVVRFKHR5cGUsIG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTUyOC1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTYzMz1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2MzU6I2RlZmluZSBVQUMxX0FUVFJJQlVURV9TVFJJTkcobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjM2LXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTY2OT1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjcwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzE6VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3Mi1VQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzM6VUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc0OlVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzUtVUFDMV9SQVRFX0FUVFJJQlVURShwX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc2OlVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NzpVQUMxX0FUVFJJQlVURSh1MzIsIHJlcV9udW1iZXIpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3OTpVQUMxX0FUVFJJQlVURShib29sLCBwX211dGVfcHJlc2VudCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MDpVQUMxX0FUVFJJQlVURShib29sLCBwX3ZvbHVtZV9wcmVzZW50KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgxOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfbWluKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgyOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfbWF4KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgzOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfcmVzKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjg0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODU6VUFDMV9BVFRSSUJVVEUoYm9vbCwgY19tdXRlX3ByZXNlbnQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODY6VUFDMV9BVFRSSUJVVEUoYm9vbCwgY192b2x1bWVfcHJlc2VudCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4NzpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX21pbik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4ODpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX21heCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4OTpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX3Jlcyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY5MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjkxOlVBQzFfQVRUUklCVVRFX1NUUklORyhmdW5jdGlvbl9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTM6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKHBfaXRfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NDpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9pdF9jaF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk1OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX290X25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTY6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKHBfZnVfdm9sX25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2OTctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5ODpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19pdF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk5OlVBQzFfQVRUUklCVVRFX1NUUklORyhjX2l0X2NoX25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE3MDA6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfb3RfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTcwMTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19mdV92b2xfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTcwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA5NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBVQUMxIFJhdGUgQXR0cmlidXRlIElzc3VlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgVUFDMSByYXRlIGF0dHJpYnV0ZSBwcm9ibGVtLiBUaGUgbWFjcm8gaW4gcXVlc3Rpb24gaXMgbGlrZWx5IHNvbWV0aGluZyBsaWtlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCDigJMgdGhlIGtleSBpbmRpY2F0b3JzIGFyZSB0aGUgdXNlIG9mIGBvcHRzLSZndDtuYW1lIyNzYCBmb3IgbmFtZSBjb25jYXRlbmF0aW9uIGFuZCB0aGUgYGtzdHJ0b3UzMih0b2tlbiwgMCwgJmFtcDtudW0pYCBjYWxsLCB3aGljaCBzdWdnZXN0cyBwYXJzaW5nIGEgbnVtZXJpY2FsIHZhbHVlLiBSaWdodCwgdGhhdCBuYWlscyBpdCBkb3duIHByZXR0eSB3ZWxsLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBzZWUgdGhpcyBtYWNybyBpbiBhY3Rpb24uIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgd291bGQgYmUgaW4gYGZfdWFjMS5jYC4gTGV0JiMzOTtzIGFzc3VtZSBpdCYjMzk7cyBhcm91bmQgbGluZSAxNTk0IC0gdGhhdCBzb3VuZHMgYWJvdXQgcmlnaHQsIGdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBzaW1pbGFyIHN0cnVjdHVyZXMgaW4gdGhlIFVBQzEgZHJpdmVyLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGZpbmQuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYXR0cmlidXRlIGlzIGJlaW5nIGRlZmluZWQgb3IgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3B0cy1cdTAwM2VuYW1lIyNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTcxPXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4MC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFVBQ19NQVhfUkFURVM7IGkmIzQzOyYjNDM7KSB7XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1ODE6XHRcdGlmIChvcHRzLVx1MDAzZW5hbWUjI3NbaV0gPT0gMClcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4Mi1cdFx0XHRicmVhaztcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1ODMtXHRcdHJlc3VsdCAmIzQzOz0gc3ByaW50ZihwYWdlICYjNDM7IHN0cmxlbihwYWdlKSwgXCYjMzQ7JXUsXCYjMzQ7LFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1ODQ6XHRcdFx0XHRvcHRzLVx1MDAzZW5hbWUjI3NbaV0pO1x0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4NS1cdH1cdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU5Mz1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjEwLVx0aSA9IDA7XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTYxMTpcdG1lbXNldChvcHRzLVx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVx1MDAzZW5hbWUjI3MpKTtcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjEyLVx0cGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjIyLVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTYyMzpcdFx0b3B0cy1cdTAwM2VuYW1lIyNzW2kmIzQzOyYjNDM7XSA9IG51bTtcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYyNC1cdFx0cmV0ID0gbGVuO1x0XHRcdFx0XHRcdFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NjIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBNYWNybyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBgVUFDMV9SQVRFX0FUVFJJQlVURWAgbWFjcm8sIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyB1c2FnZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB0aGluZyBpcyBhY3R1YWxseSBlbXBsb3llZCB3aXRoaW4gdGhlIGNvZGUgYmFzZS4gV2hhdCBtb2R1bGVzIG9yIGZ1bmN0aW9ucyByZWx5IG9uIGl0PyBLbm93aW5nIGl0cyBjb250ZXh0IGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHJlYWxseSBhc3Nlc3MgaXRzIHB1cnBvc2Ugb3IgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gVGltZSB0byBzdGFydCBkaWdnaW5nIGZvciB0aG9zZSByZWZlcmVuY2VzLiBHb3R0YSBzZWUgd2hlcmUgdGhpcyBgVUFDMV9SQVRFX0FUVFJJQlVURWAgaXMgc2hvd2luZyB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VUFDMV9SQVRFX0FUVFJJQlVURSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU2OD1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1NzA6I2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU3MS1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzE9VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3MjpVQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzMtVUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjc0PVVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzU6VUFDMV9SQVRFX0FUVFJJQlVURShwX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc2LVVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MzIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoqKkFuYWx5emluZyBHZW5lcmF0ZWQgRnVuY3Rpb24gTmFtZXMqKgoKQWxyaWdodCwgc28gSSYjMzk7dmUgYmVlbiBnaXZlbiB0aGVzZSBmdW5jdGlvbiBuYW1lczogYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgIGFuZCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAuIEltbWVkaWF0ZWx5LCBJIHNlZSBhIHBhdHRlcm4uIFRoZXNlIHNlZW0gcmVsYXRlZCB0byBVQUMxIChVU0IgQXVkaW8gQ2xhc3MgMSksIGFuZCB0aGVyZSYjMzk7cyBhIGNsZWFyIGRpc3RpbmN0aW9uIGJldHdlZW4gJiMzOTtjJiMzOTsgYW5kICYjMzk7cCYjMzk7LCBsaWtlbHkgaW5kaWNhdGluZyBlaXRoZXIgY2FwdHVyZSBhbmQgcGxheWJhY2ssIG9yIGNvbnRyb2wgYW5kIHBsYXliYWNrLiBBbmQgJiMzOTtzcmF0ZSYjMzk7IHN0cm9uZ2x5IHN1Z2dlc3RzIHNhbXBsaW5nIHJhdGUuIFRoZSAmIzM0O3N0b3JlJiMzNDsgcGFydCBpcyBmYWlybHkgc2VsZiBleHBsYW5hdG9yeSwgaXQgd291bGQgc2VlbSB0aGV5IGFyZSB3cml0aW5nIHNhbXBsZSByYXRlIHZhbHVlcy4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0IHRoZXNlIGZ1bmN0aW9ucyBvcGVyYXRlIGluLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgaW4gYGZfdWFjMi5jYCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4gVGhhdCBhdHRyaWJ1dGUgZGVmaW5pdGlvbiBzaG91bGQgZ2l2ZSBtZSB0aGUgcmVsZXZhbnQgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBVQUMyIGNvbnRleHQsIGFuZCBob3BlZnVsbHksIHByb3ZpZGUgcG9pbnRlcnMgcmVsYXRlZCB0byB0aGUgVUFDMSBjb250ZXh0IGFzIHdlbGwuIEkmIzM5O20gc3VyZSB0aGVyZSYjMzk7cyBvdmVybGFwIGluIHRob3NlIGFyZWFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMyX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jLTE5ODctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MTk4ODojZGVmaW5lIFVBQzJfUkFURV9BVFRSSUJVVEUobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg5LXN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoyMDkzOlVBQzJfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMjA5NC1VQUMyX0FUVFJJQlVURSh1MzIsIHBfc3NpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0yMDk2PVVBQzJfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jOjIwOTc6VUFDMl9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKk5hdmlnYXRpbmcgdGhlIENvbmZpZ0ZTIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBJJiMzOTttIHRyYWNraW5nIHRoaXMuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlc2UgZ2VuZXJhdGVkIGZ1bmN0aW9ucywgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgIGFuZCBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWAuIFRoZXkmIzM5O3JlIHNwZWNpZmljYWxseSBzdG9yZSBjYWxsYmFja3MsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGxpbmtlZCBpbnRvIGEgQ29uZmlnRlMgc3RydWN0dXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBDb25maWdGUyBpcyBob3cgeW91IGV4cG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhpcyBzb3J0IG9mIGdhZGdldCBzZXR1cC4gQW5kIHNpbmNlIENvbmZpZ0ZTIGhhcyBhIGdvb2QgbGV2ZWwgb2Ygc3VwcG9ydCBpbiB2aXJ0dWFsaXplZCBzeXN0ZW1zLCB0aGF0IHNob3VsZCBleHRlbmQgdG8gdGhlIGNhbGxiYWNrcy4gVGhlIGNvcmUgY29uZmlnIG9wdGlvbnMgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlIGFyZSBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgYW5kIGBVU0JfQ09ORklHRlNfRl9VQUMyYCwgd2hpY2ggYXJlIGdvaW5nIHRvIGJlIGNyaXRpY2FsIGZvciB0aGUgc2V0dXAuCgpIYW5nIG9uIGEgc2VjLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgaGFzIGEgZGVwZW5kZW5jeSwgdGhhdCBuZWVkcyB0byBiZSBjbGFyaWZpZWQsIG5hbWVseSBgVVNCX0NPTkZJR0ZTYC4gSSBrbm93IHdoZXJlIEkgY2FuIGNvbmZpcm0gdGhpcywgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlIGFuZCB0YWtlIGEgbG9vay4gSSYjMzk7bGwgZ2V0IHRoZSBkZXRhaWxzIHJpZ2h0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE3MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0cywgZnJhbWVkIGFzIGEgY29uY2lzZSBzdW1tYXJ5IGZvciBhbiBleHBlcnQ6CgoqKkdhZGdldCBNb2RlICZhbXA7IENvbmZpZ0ZTIFZlcmlmaWNhdGlvbioqCgpSaWdodCwgc28gdG8gZ2V0IHRoaXMgVVNCIHRoaW5nIHJ1bm5pbmcsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBib3RoIGBVU0JfQ09ORklHRlNgIGFuZCBgVVNCX0dBREdFVGAgZW5hYmxlZC4gQmVmb3JlIEkgZ28gdG9vIGRlZXAsIHRob3VnaCwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYWxsIHRoZSBgVVNCX0dBREdFVGAgZGVwZW5kZW5jaWVzIGFyZSBwcm9wZXJseSBzZXQuIE5vIHBvaW50IGluIHdhc3RpbmcgdGltZSBpZiBzb21ldGhpbmcgZnVuZGFtZW50YWwgaXMgbWlzc2luZy4gTmVlZCB0byBtYWtlIHN1cmUgYWxsIHRoZSBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDc9aWYgVVNCX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0OTpjb25maWcgVVNCX0dBREdFVF9ERUJVR1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXHRib29sIFwmIzM0O0RlYnVnZ2luZyBtZXNzYWdlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2Mzpjb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Nzc6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRklMRVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6ODg6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgaW4gZGVidWdmcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5OTpjb25maWcgVVNCX0dBREdFVF9WQlVTX0RSQVdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEwMC1cdGludCBcJiMzNDtNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjExNjpjb25maWcgVVNCX0dBREdFVF9TVE9SQUdFX05VTV9CVUZGRVJTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIHN0b3JhZ2UgcGlwZWxpbmUgYnVmZmVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNjI9Y29uZmlnIFVTQl9NQVNTX1NUT1JBR0Vcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjc4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI3OTpjb25maWcgVVNCX0dBREdFVF9UQVJHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTM0Nz1jb25maWcgVVNCX0VHMjBUXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3MC1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozNzE6Y29uZmlnIFVTQl9HQURHRVRfWElMSU5YXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzcyLVx0dHJpc3RhdGUgXCYjMzQ7WGlsaW54IFVTQiBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxMjIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgVVNCIEdhZGdldCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFVTQiBjb25maWd1cmF0aW9uLCBhbmQgZmlyc3QgdGhpbmcgSSYjMzk7bSBub3RpY2luZyBpcyB0aGF0IHRoZSBgVVNCX0dBREdFVGAgb3B0aW9uIGNsZWFybHkgaGluZ2VzIG9uIGBVU0JfU1VQUE9SVGAuIFRoYXQmIzM5O3Mgbm90IGVudGlyZWx5IHVuZXhwZWN0ZWQsIGJ1dCBnb29kIHRvIGNvbmZpcm0gcmlnaHQgb2ZmIHRoZSBiYXQuIEl0IHJlbWluZHMgbWUgdG8ga2VlcCBhIHNoYXJwIGV5ZSBvdXQgZm9yIHRoZXNlIGRlcGVuZGVuY2llcyDigJMgdGhleSBjYW4gdHJpcCB5b3UgdXAgbGF0ZXIgaWYgeW91JiMzOTtyZSBub3QgcGF5aW5nIGF0dGVudGlvbi4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgd2UmIzM5O3JlIGdvaW5nIHRvIHRlc3QgdGhlc2UgZ2FkZ2V0IGRyaXZlcnMuIFJlYWxpc3RpY2FsbHksIHdlJiMzOTtsbCBuZWVkIGEgd2F5IHRvIGVtdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBoYXJkd2FyZSDigJMgYSBzb3J0IG9mIGR1bW15IFVTQiBEZXZpY2UgQ29udHJvbGxlciwgb3IgVURDLiBMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB3aGF0IHdlIGhhdmUgYXZhaWxhYmxlLi4uQWgsIHllcywgcmlnaHQgaGVyZSEgYFVTQl9EVU1NWV9IQ0RgLiBQZXJmZWN0LiBUaGF0IHNob3VsZCBkbyB0aGUgdHJpY2suIExldCYjMzk7cyBzZWUgaG93IHRoaXMgaXMgY29uZmlndXJlZCBhbmQgd2hlcmUgd2UgYXJlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRFVNTVlfSENEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDIyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cdHRyaXN0YXRlIFwmIzM0O0R1bW15IEhDRCAoREVWRUxPUE1FTlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTE5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVTQiBHYWRnZXQgVGVzdGluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBjb25maWd1cmUgdGhpcyBzZXR1cCBmb3IgdGVzdGluZyBVU0IgZ2FkZ2V0cy4gSSBrbm93IEkmIzM5O2xsIG5lZWQgYFVTQl9EVU1NWV9IQ0RgOyB0aGF0JiMzOTtzIGVzc2VudGlhbCBmb3Igc2ltdWxhdGluZyBhIFVTQiBob3N0IHdoZW4gSSBkb24mIzM5O3QgaGF2ZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgYXZhaWxhYmxlLiBNYWtlcyBzZW5zZS4KClRoZSBjb3JlIHNldCBvZiBjb25maWd1cmF0aW9ucyB0aGVuIGFyZTogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGFuZCBgVVNCX0NPTkZJR0ZTYC4gVGhvc2UgYXJlIHRoZSBmdW5kYW1lbnRhbHMuIEFuZCwgb2YgY291cnNlLCBJJiMzOTtsbCBuZWVkIHRoZSBhdWRpbyBnYWRnZXQgc3VwcG9ydCwgc28gSSYjMzk7bGwgZW5hYmxlIGJvdGggYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuCgpXYWl0IGEgbWludXRlLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgaXMgc2V0IHVwIHByb3Blcmx5LiBJdCBsb29rcyBsaWtlIGl0IGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQl9DT05GSUdGU2AsIHNvIEkgc2hvdWxkIGdvIGJhY2sgYW5kIGNvbmZpcm0gdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhbGwgYWNjb3VudGVkIGZvci4gSSYjMzk7bGwgcXVpY2tseSB2ZXJpZnkgdGhlIGRlcGVuZGVuY3kgY2hhaW4gZm9yIGBVU0JfQ09ORklHRlNfRl9VQUMxYCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNjk9Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDg4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgVVNCIEdhZGdldCBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgcGFydGljdWxhciBzdWJzeXN0ZW0mIzM5O3MgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzgxLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBsb29raW5nIGZvciBpcyB0byBkZXRlcm1pbmUgaWYgYW55IGRlcGVuZGVuY2llcyBhcmUgcHJlc2VudC4gSSB3YW50IHRvIHNlZSB3aGljaCBvdGhlciBvcHRpb25zLCBmZWF0dXJlcywgb3IgcHJlcmVxdWlzaXRlcyB0aGlzIGdhZGdldCBkcml2ZXIgbWlnaHQgcmVseSBvbi4gVW5kZXJzdGFuZGluZyB0aG9zZSBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdGhlIHZhcmlvdXMgcGllY2VzIG9mIHRoZSBwdXp6bGUgZml0IHRvZ2V0aGVyIHdpdGhpbiB0aGUgYnJvYWRlciBVU0IgZ2FkZ2V0IGZyYW1ld29yayBhbmQgdGhlIGtlcm5lbCYjMzk7cyBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIFRoaXMmIzM5O2xsIGhlbHAgcGlucG9pbnQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVsc2V3aGVyZSBpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNzU6XHRcdCAgY29tcG9zaXRlIGZ1bmN0aW9ucyBpbiB1c2VyIHNwYWNlIGluIHRoZSBzYW1lIHdheSBHYWRnZXRGU1xuIDM3NjpcdFx0ICBsZXRzIG9uZSBjcmVhdGUgVVNCIGdhZGdldHMgaW4gdXNlciBzcGFjZS4gIFRoaXMgYWxsb3dzIGNyZWF0aW9uXG4gMzc3Olx0XHQgIG9mIGNvbXBvc2l0ZSBnYWRnZXRzIHN1Y2ggdGhhdCBzb21lIG9mIHRoZSBmdW5jdGlvbnMgYXJlXG4gMzc4Olx0XHQgIGltcGxlbWVudGVkIGluIGtlcm5lbCBzcGFjZSAoZm9yIGluc3RhbmNlIEV0aGVybmV0LCBzZXJpYWwgb3JcbiAzNzk6XHRcdCAgbWFzcyBzdG9yYWdlKSBhbmQgb3RoZXIgYXJlIGltcGxlbWVudGVkIGluIHVzZXIgc3BhY2UuXG4gMzgwOlx0XG4gMzgxOlx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbiAzODI6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG4gMzgzOlx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDM4NDpcdFx0ZGVwZW5kcyBvbiBTTkRcbiAzODU6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gMzg2Olx0XHRzZWxlY3QgU05EX1BDTVxuIDM4NzpcdFx0c2VsZWN0IFVTQl9VX0FVRElPXG4gMzg4Olx0XHRzZWxlY3QgVVNCX0ZfVUFDMVxuIDM4OTpcdFx0aGVscFxuIDM5MDpcdFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxuIDM5MTpcdFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXG4gMzkyOlx0XHQgIFRoaXMgZHJpdmVyIGRvZXNuJiMzOTt0IGV4cGVjdCBhbnkgcmVhbCBBdWRpbyBjb2RlYyB0byBiZSBwcmVzZW50XG4gMzkzOlx0XHQgIG9uIHRoZSBkZXZpY2UgLSB0aGUgYXVkaW8gc3RyZWFtcyBhcmUgc2ltcGx5IHNpbmtlZCB0byBhbmRcbiAzOTQ6XHRcdCAgc291cmNlZCBmcm9tIGEgdmlydHVhbCBBTFNBIHNvdW5kIGNhcmQgY3JlYXRlZC4gVGhlIHVzZXItc3BhY2VcbiAzOTU6XHRcdCAgYXBwbGljYXRpb24gbWF5IGNob29zZSB0byBkbyB3aGF0ZXZlciBpdCB3YW50cyB3aXRoIHRoZSBkYXRhXG4gMzk2Olx0XHQgIHJlY2VpdmVkIGZyb20gdGhlIFVTQiBIb3N0IGFuZCBjaG9vc2UgdG8gcHJvdmlkZSB3aGF0ZXZlciBpdFxuIDM5NzpcdFx0ICB3YW50cyBhcyBhdWRpbyBkYXRhIHRvIHRoZSBVU0IgSG9zdC5cbiAzOTg6XHRcbiAzOTk6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbiA0MDA6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4gNDAxOlx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQwMjpcdFx0ZGVwZW5kcyBvbiBTTkRcbiA0MDM6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNDA0Olx0XHRzZWxlY3QgU05EX1BDTVxuIDQwNTpcdFx0c2VsZWN0IFVTQl9GX1VBQzFfTEVHQUNZXG4gNDA2Olx0XHRoZWxwXG4gNDA3Olx0XHQgIFRoaXMgQXVkaW8gZnVuY3Rpb24gaW1wbGVtZW50cyAxIEF1ZGlvQ29udHJvbCBpbnRlcmZhY2UsXG4gNDA4Olx0XHQgIDEgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIGVhY2ggZm9yIFVTQi1PVVQgYW5kIFVTQi1JTi5cbiA0MDk6XHRcdCAgVGhpcyBpcyBhIGxlZ2FjeSBkcml2ZXIgYW5kIHJlcXVpcmVzIGEgcmVhbCBBdWRpbyBjb2RlY1xuIDQxMDpcdFx0ICB0byBiZSBwcmVzZW50IG9uIHRoZSBkZXZpY2UuXG4gNDExOlx0XG4gNDEyOlx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbiA0MTM6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG4gNDE0Olx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQxNTpcdFx0ZGVwZW5kcyBvbiBTTkRcbiA0MTY6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNDE3Olx0XHRzZWxlY3QgU05EX1BDTVxuIDQxODpcdFx0c2VsZWN0IFVTQl9VX0FVRElPXG4gNDE5Olx0XHRzZWxlY3QgVVNCX0ZfVUFDMlxuIDQyMDpcdFx0aGVscFxuIDQyMTpcdFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCBVU0IgQXVkaW8gQ2xhc3NcbiA0MjI6XHRcdCAgc3BlY2lmaWNhdGlvbiAyLjAuIEl0IGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxuIDQyMzpcdFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXG4gNDI0Olx0XHQgIFRoaXMgZHJpdmVyIGRvZXNuJiMzOTt0IGV4cGVjdCBhbnkgcmVhbCBBdWRpbyBjb2RlYyB0byBiZSBwcmVzZW50XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMgaGVyZS4gVGhlIGtleSBkcml2ZXIgc2VlbXMgdG8gYmUgYFNORGAsIHNvIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBhcmUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgdGV4dCBtZW50aW9ucyB0aGVzZSBmdW5jdGlvbnM6IGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYCwgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgLCBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWAsIGFuZCBgZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZWAuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciByZWxldmFudCBhdHRyaWJ1dGVzLiBJIHNob3VsZCBsb29rIGZvciB1c2FnZXMgb2YgYFVBQzFfUkFURV9BVFRSSUJVVEVgIG9yIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4gSGFuZyBvbiwgSSYjMzk7dmUgYWxyZWFkeSBzY2FubmVkIGZvciB0aG9zZSB1c2FnZXMgYW5kIGZvdW5kIHRoZSBvbmVzIGFib3ZlOiBgY19zcmF0ZWAgYW5kIGBwX3NyYXRlYCBmb3IgYm90aCBVQUMxIGFuZCBVQUMyLiBTbywgdGhvc2UgZm91ciBmdW5jdGlvbnMgYXJlIHRoZSBvbmVzIGluIHF1ZXN0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIG1lYW5zIGNoZWNraW5nIGlmIHRoZXkgYXJlIG5vbi1zdGF0aWMgYW5kIG5vdCBpbmxpbmVkLiBUaGVzZSBhcmUgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggcmFpc2VzIGEgcmVkIGZsYWcgcGVyIHRoZSBndWlkZWxpbmVzLiBIb3dldmVyLCB0aGV5JiMzOTtyZSBiZWluZyB1c2VkIGFzIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGBDT05GSUdGU19BVFRSYCBtYWNyby4gVGhpcyBtYWNybyBjcmVhdGVzIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgIGFuZCBwb3B1bGF0ZXMgaXQgd2l0aCBwb2ludGVycyB0byB0aG9zZSBmdW5jdGlvbnMuIFNpbmNlIHRoZXkgYXJlIGJlaW5nIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGEgYHN0cnVjdGAsIHRoZSBjb21waWxlciAqY2Fubm90KiBpbmxpbmUgdGhlbS4gVGhleSAqbXVzdCogaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMuIFRoYXQmIzM5O3MgZ29vZC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBDT05GSUdGU19BVFRSYCBtYWNybyBpdHNlbGYgdG8gY29uZmlybSB0aGF0IGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWZpbmUgQ09ORklHRlNfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvY29uZmlnZnMuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg9MTE1PXN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUge1xuLS1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMjItXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTIzOiNkZWZpbmUgQ09ORklHRlNfQVRUUl9QRVJNKF9wZngsIF9uYW1lLCBfcGVybSlcdFx0XFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMjQtc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgX3BmeCMjYXR0cl8jI19uYW1lID0ge1x0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTMxLVxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjEzMjojZGVmaW5lIENPTkZJR0ZTX0FUVFIoX3BmeCwgX25hbWUpIENPTkZJR0ZTX0FUVFJfUEVSTShcdFxcXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTMzLVx0XHRfcGZ4LCBfbmFtZSwgU19JUlVHTyB8IFNfSVdVU1JcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTM1LVxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjEzNjojZGVmaW5lIENPTkZJR0ZTX0FUVFJfUk8oX3BmeCwgX25hbWUpXHRcdFx0XFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzctc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgX3BmeCMjYXR0cl8jI19uYW1lID0ge1x0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTQzLVxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjE0NDojZGVmaW5lIENPTkZJR0ZTX0FUVFJfV08oX3BmeCwgX25hbWUpXHRcdFx0XFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xNDUtc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgX3BmeCMjYXR0cl8jI19uYW1lID0ge1x0XFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTY6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5NTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVQUMxL1VBQzIgQ29uZmlnZnMgU3RvcmUgQ2FsbGJhY2tzIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGUgbWFpbiBjb25jZXJuIGlzIHRoZXNlIGBzdG9yZWAgY2FsbGJhY2tzLCBzcGVjaWZpY2FsbHkgYmVjYXVzZSB0aGV5JiMzOTtyZSBmdW5jdGlvbiBwb2ludGVycywgbWVhbmluZyB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZC4gV2hpbGUgSSBpbml0aWFsbHkgdGhvdWdodCBhYm91dCBmaW5kaW5nIGEgbm9uLXN0YXRpYyBlbnRyeSBwb2ludCwgdGhhdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIHRoZSBtb3N0IGRpcmVjdCByb3V0ZSBoZXJlLiBJdCBsb29rcyBsaWtlIHRoZSBkYXRhIGZsb3cgaXMgdGhyb3VnaCBgY29uZmlnZnNfd3JpdGVfZmlsZWAgLSZndDsgYGNvbmZpZ2ZzX3dyaXRlX2l0ZXJgIC0mZ3Q7IGBmbHVzaF93cml0ZV9idWZmZXJgIC0mZ3Q7IGBhdHRyLSZndDtzdG9yZWAuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyB0aG9zZSBgc3RvcmVgIGNhbGxiYWNrcyBkaXJlY3RseS4KClRoZSBmdW5jdGlvbnMgaW4gcXVlc3Rpb24gYXJlOgoKKiAgIGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYAoqICAgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgCiogICBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWAKKiAgIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYAoKSSBkaWQgYSBxdWljayBjaGVjaywgYW5kIHRoZSBwYXRjaCBzZWVtcyB0byBleGNsdXNpdmVseSB0YXJnZXQgdGhlIGBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZWAgbWFjcm9zLCB3aGljaCBnZW5lcmF0ZSB0aGUgYHN0b3JlYCBmdW5jdGlvbnMgZm9yIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgLiAgU28sIG15IGluaXRpYWwgbGlzdCBpcyBjb3JyZWN0LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6CgoqICAgYFVTQl9HQURHRVRgCiogICBgVVNCX0RVTU1ZX0hDRGAKKiAgIGBVU0JfQ09ORklHRlNgCiogICBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAKKiAgIGBVU0JfQ09ORklHRlNfRl9VQUMyYAoqICAgYFNORGAgKHdoaWNoIGlzIHRoZSBtYWluIEFMU0EgY29uZmlnKQoKQW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJlOiBgVVNCX0RVTU1ZX0hDRGAgZGVwZW5kcyBvbiBgVVNCX0dBREdFVGAgYW5kIGBVU0JfU1VQUE9SVGAuIGBVU0JfQ09ORklHRlNgIGRlcGVuZHMgb24gYFVTQl9HQURHRVRgLiBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgYW5kIGBVU0JfQ09ORklHRlNfRl9VQUMyYCBib3RoIGRlcGVuZCBvbiBgVVNCX0NPTkZJR0ZTYCBhbmQgYFNORGAuIGBVU0JfU1VQUE9SVGAgaXMgdXN1YWxseSBlbmFibGVkLgoKU28gdGhlIGNvbXBsZXRlIHNldCBJIG5lZWQgdG8gY29uc2lkZXIgaXM6IGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VBQzFgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIGFuZCBgU05EYC4KCkkgcXVpY2tseSB2ZXJpZmllZCB0aGUgZXhhY3Qgc3ltYm9sIG5hbWVzLCB0byBtYWtlIHN1cmUuIFRoZSBtYWNybyBkZWZpbml0aW9uIGlzOgoKYGBgYwojZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSkJCQkJCVwKc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKCQkJCQkgY2hhciAqcGFnZSkJCQlcCi4uLgpzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKCQkJCQkgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pCVwKLi4uCmBgYAoKSXQgaXMgY2FsbGVkIHdpdGg6CgpgYGBjClVBQzFfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7ClVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7CmBgYAoKU28gaXQgaXMgaW5kZWVkOiBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAgYW5kIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYC4gVGhlIGBVQUMyYCBkZWZpbml0aW9ucyBhcmUgc2ltaWxhci4KClRoZSBwYXRjaCBpdHNlbGYgaXMgZml4aW5nIGEgbWVtb3J5IGxlYWsgaW4gdGhlc2UgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzLCBhZmZlY3RpbmcgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGZ1bmN0aW9ucy4gSXQgc2VlbXMgdGhlIGxlYWsgb2NjdXJyZWQgYmVjYXVzZSBgc3Ryc2VwYCB3YXMgbW9kaWZ5aW5nIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgc28gYGtmcmVlYCB3YXMgYmVpbmcgY2FsbGVkIG9uIGFuIGluY29ycmVjdCBwb2ludGVyLiBUaGUgcGF0Y2ggYWxsb2NhdGVzIGEgc2VwYXJhdGUgcG9pbnRlciB0byB0aGUgb3JpZ2luYWwgbWVtb3J5IGJsb2NrLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB0aHJvdWdoIGNvbmZpZ2ZzIHdoZW4gY29uZmlndXJpbmcgYSBVU0IgZ2FkZ2V0LCBhbmQgaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELgoKU28sIHRoaXMgaXMgYWJzb2x1dGVseSBmdXp6YWJsZS4gSSYjMzk7bGwgZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIEJlZm9yZSBJIG1vdmUgb24sIEkgc2hvdWxkIHF1aWNrbHkgdmVyaWZ5IGlmIHRob3NlIG1hY3JvcyBhcmUgdXNlZCBlbHNld2hlcmUsIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMxX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU2OD1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTY5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1NzA6I2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU3MS1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzE9VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3MjpVQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzMtVUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjc0PVVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzU6VUFDMV9SQVRFX0FUVFJJQlVURShwX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc2LVVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTM2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbCBpbiB0aGUgZmllbGQgYW5kIHRoZSAmIzM0O3RleHQgYmVsb3cmIzM0OyByZWZlcnMgdG8gc29tZSB0ZWNobmljYWwgc3BlY2lmaWNhdGlvbiBvciBkaXNjdXNzaW9uIGFib3V0IGEgYFVBQzJfUkFURV9BVFRSSUJVVEVgIHdpdGhpbiBhIGxhcmdlciBhdWRpbyBzeXN0ZW0gY29udGV4dC4KCioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBVQUMyX1JBVEVfQVRUUklCVVRFYCoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhpcyBgVUFDMl9SQVRFX0FUVFJJQlVURWAuLi4gbXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBVQUMyIOKAkyBVU0IgQXVkaW8gQ2xhc3MgMi4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGFib3V0IFVTQiBhdWRpbyBzdHJlYW1pbmcuJiMzNDsgSSYjMzk7bSBtZW50YWxseSBmaWxpbmcgdGhhdCB1bmRlciB0aGUgJiMzNDtoaWdoLXNwZWVkLCBnZW5lcmFsbHkgcmVsaWFibGUmIzM0OyBjYXRlZ29yeSwgYnV0IG9mIGNvdXJzZSwgSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbnVhbmNlcy4gU3BlY2lmaWNhbGx5LCB0aGUgcmF0ZSBhdHRyaWJ1dGUuIEkmIzM5O20gaW1tZWRpYXRlbHkgd29uZGVyaW5nIGFib3V0IGl0cyBpbXBsaWNhdGlvbnMgZm9yIHNhbXBsZSByYXRlcywgYml0IGRlcHRocywgYW5kIHBvdGVudGlhbCBjbG9ja2luZyBpc3N1ZXMuIElzIHRoaXMgdGhlICpwcmVmZXJyZWQqIHJhdGUsIHRoZSAqc3VwcG9ydGVkKiByYXRlLCBvciBwZXJoYXBzIGEgKnJhbmdlKiBvZiBhY2NlcHRhYmxlIHJhdGVzPyBBbmQgaG93IGdyYW51bGFyIGlzIHRoZSBjb250cm9sPyBEb2VzIGl0IGp1c3Qgb2ZmZXIgYSBmZXcgcHJlc2V0IG9wdGlvbnMgKGxpa2UgNDQuMWtIeiwgNDhrSHosIDk2a0h6KSBvciBzb21ldGhpbmcgbW9yZSBmaW5lLWdyYWluZWQsIGFsbG93aW5nIGZvciBmcmFjdGlvbmFsIHJhdGVzIG9yIGV2ZW4gcG90ZW50aWFsbHkgdmFyaWFibGUgcmF0ZSBhZGp1c3RtZW50cz8gVGhhdCBsZXZlbCBvZiBjb250cm9sIGlzIGNydWNpYWwuCgpUaGVuLCBteSBtaW5kIHJhY2VzIHRvIHRoZSBwb3RlbnRpYWwgcHJvYmxlbXMuIENsb2NrIGRvbWFpbiBtaXNtYXRjaGVzIGFyZSAqYWx3YXlzKiBhIGNvbmNlcm4gd2l0aCBVU0IgYXVkaW8uIFNvLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGF1ZGlvIHF1YWxpdHkuIElzIHRoZSByYXRlIGF0dHJpYnV0ZSB0aGUgZGVmaW5pbmcgZmFjdG9yIG9yIGRvZXMgc29tZXRoaW5nIGVsc2UgZGV0ZXJtaW5lIHRoYXQ/IEppdHRlciBpcyB0aGUgYmlnIGJvZ2V5bWFuIGhlcmUuIERvZXMgdGhlIFVBQzIgaW1wbGVtZW50YXRpb24gcHJvdmlkZSBzdWZmaWNpZW50IGJ1ZmZlcmluZyBhbmQgYWRhcHRpdmUgY2xvY2tpbmcgdG8gbWl0aWdhdGUgaml0dGVyIGludHJvZHVjZWQgYnkgdGhlIFVTQiBidXMgaXRzZWxmPyBIb3cgZG9lcyB0aGlzIGF0dHJpYnV0ZSBpbnRlcmFjdCB3aXRoIHRoZSBob3N0IGNvbnRyb2xsZXIgYW5kIHRoZSBVU0IgYXVkaW8gZGV2aWNlPyBJZiB0aGUgcmF0ZXMgZG9uJiMzOTt0IG1hdGNoIG9yIGNhbm5vdCBiZSBzeW5jaHJvbml6ZWQsIEkgaW5zdGFudGx5IHRoaW5rIGFib3V0IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBwZW5hbHRpZXMgbGlrZSB0aGUgbmVlZCBmb3IgcmVzYW1wbGluZyBvciBhdWRpbyBkcm9wb3V0cywgYW5kIEkgd2FudCB0byBsb29rIGludG8gdGhhdC4KCkFsc28sIEkmIzM5O20gY29uc2lkZXJpbmcgdGhlICpwdXJwb3NlKiBvZiBzZXR0aW5nIHRoaXMgcmF0ZS4gSXMgaXQgZm9yIHRoZSBwbGF5YmFjayBkZXZpY2UsIHRoZSByZWNvcmRpbmcgZGV2aWNlLCBvciBib3RoPyBJcyB0aGlzIGF0dHJpYnV0ZSBzb2xlbHkgZm9yIFBDTSBhdWRpbywgb3IgZG9lcyBpdCBleHRlbmQgdG8gb3RoZXIgYXVkaW8gZm9ybWF0cz8gQXJlIHRoZXJlIGltcGxpY2F0aW9ucyBmb3IgcG93ZXIgY29uc3VtcHRpb24sIHBhcnRpY3VsYXJseSBpbiBiYXR0ZXJ5LXBvd2VyZWQgZGV2aWNlcz8gTXkgdGhvdWdodHMgYXJlIHRoYXQgdGhlc2UgZGV0YWlscywgYW5kIHRoZSBhc3NvY2lhdGVkIGltcGxlbWVudGF0aW9ucywgZGV0ZXJtaW5lIHRoZSBxdWFsaXR5IG9mIHRoZSBkZXZpY2UgYW5kIG11c3QgYmUgZXZhbHVhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMyX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MTk4Nj1DT05GSUdGU19BVFRSKGZfdWFjMl9vcHRzXywgbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jOjE5ODg6I2RlZmluZSBVQUMyX1JBVEVfQVRUUklCVVRFKG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jPTIwOTI9VUFDMl9BVFRSSUJVVEUodTMyLCBwX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jLTIwOTQtVUFDMl9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoyMDk3OlVBQzJfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMjA5OC1VQUMyX0FUVFJJQlVURV9TWU5DKGNfc3luYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE2OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDQzCgkJCQkJCQlvdXRwdXQ6IDI0MAoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UmIzM5O3ZlIGRlc2NyaWJlZDoKCioqQ2xlYXIgUGF0aCBGb3J3YXJkKioKClJpZ2h0LCB0aGF0JiMzOTtzIGl0LiBJdCYjMzk7cyBqdXN0IGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgIGZvciBib3RoLCBhcyBJIHN1c3BlY3RlZC4gTm8gbmVlZCB0byBvdmVyY29tcGxpY2F0ZSB0aGluZ3MgaGVyZS4gSSYjMzk7dmUgZ290IGV2ZXJ5dGhpbmcgSSBuZWVkIG5vdzsgYWxsIHRoZSByZWxldmFudCBkYXRhIHBvaW50cyBhcmUgcHJlc2VudC4gRXhjZWxsZW50LiBUaW1lIHRvIGV4ZWN1dGUgdGhlIHBsYW4uIEkmIzM5O2xsIG1ha2UgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYCBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMxJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VBQzImIzM0OywKICAgICYjMzQ7U05EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb25maWdmcyBzdG9yZSBjYWxsYmFja3MgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBmdW5jdGlvbnMuIFRoZSBsZWFrIG9jY3VycmVkIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZWQgdGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgYGtzdHJkdXBgLCBjYXVzaW5nIGBrZnJlZWAgdG8gYmUgY2FsbGVkIG9uIGFuIGludmFsaWQgb3IgYWR2YW5jZWQgcG9pbnRlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdmlhIGNvbmZpZ2ZzIHdoZW4gY29uZmlndXJpbmcgYSBVU0IgZ2FkZ2V0LCB3aGljaCBpcyBmdWxseSBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHRoZSBkdW1teSBIQ0QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6MjkuODUxOTA0MTU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE1MjgyNDQxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODoyOS44NTE5NDEyNjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxODExNTY0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGVjZmZjMmNmNDFjNjZlNTY5MDNhNGMyYWYyZTRmYWEyZTEzMmM2N2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTY6NTg6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXFxuaW5kZXggODVjNTAyZTk4ZjU3Ny4uZjRiN2JiZDkzNGNhMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcXG5AQCAtMTU5NCw2ICsxNTk0LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVxcdFxcXFxcXG4ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbitcXHRjaGFyICpwYWdlX2FsbG9jID0gTlVMTDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aW50IHJldCA9IC1FSU5WQUw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRjaGFyICp0b2tlbjtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTE2MDgsNyArMTYwOSwxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGkgPSAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0bWVtc2V0KG9wdHMtXFx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVxcdTAwM2VuYW1lIyNzKSk7XFx0XFx0XFxcXFxcbi1cXHRzcGxpdF9wYWdlID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0aWYgKCFwYWdlX2FsbG9jKSB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyZXQgPSAtRU5PTUVNO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Z290byBlbmQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHR9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRzcGxpdF9wYWdlID0gcGFnZV9hbGxvYztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHdoaWxlICgodG9rZW4gPSBzdHJzZXAoXFx1MDAyNnNwbGl0X3BhZ2UsIFxcXCIsXFxcIikpICE9IE5VTEwpIHtcXHRcXHRcXFxcXFxuIFxcdFxcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXFx1MDAyNm51bSk7XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRpZiAocmV0KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMTYxOSw3ICsxNjI1LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0fTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gZW5kOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0a2ZyZWUoc3BsaXRfcGFnZSk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRrZnJlZShwYWdlX2FsbG9jKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlbG9jayk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXFxuaW5kZXggODk3Nzg3ZDA4MDNjMS4uMzM2YWVhZWM5YmEwMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcXG5AQCAtMjAxMiw2ICsyMDEyLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVxcdFxcXFxcXG4ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0c3RydWN0IGZfdWFjMl9vcHRzICpvcHRzID0gdG9fZl91YWMyX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbitcXHRjaGFyICpwYWdlX2FsbG9jID0gTlVMTDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aW50IHJldCA9IC1FSU5WQUw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRjaGFyICp0b2tlbjtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTIwMjYsNyArMjAyNywxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGkgPSAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0bWVtc2V0KG9wdHMtXFx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVxcdTAwM2VuYW1lIyNzKSk7XFx0XFx0XFxcXFxcbi1cXHRzcGxpdF9wYWdlID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0aWYgKCFwYWdlX2FsbG9jKSB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyZXQgPSAtRU5PTUVNO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Z290byBlbmQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHR9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRzcGxpdF9wYWdlID0gcGFnZV9hbGxvYztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHdoaWxlICgodG9rZW4gPSBzdHJzZXAoXFx1MDAyNnNwbGl0X3BhZ2UsIFxcXCIsXFxcIikpICE9IE5VTEwpIHtcXHRcXHRcXFxcXFxuIFxcdFxcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXFx1MDAyNm51bSk7XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRpZiAocmV0KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjAzNyw3ICsyMDQzLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0fTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gZW5kOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0a2ZyZWUoc3BsaXRfcGFnZSk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRrZnJlZShwYWdlX2FsbG9jKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlbG9jayk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6MzAuNjcwODk1NzExWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTA3MDkyNDM0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlY2ZmYzJjZjQxYzY2ZTU2OTAzYTRjMmFmMmU0ZmFhMmUxMzJjNjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTY6NTg6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcbmluZGV4IDg1YzUwMmU5OGY1NzcuLmY0YjdiYmQ5MzRjYTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuQEAgLTE1OTQsNiArMTU5NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3QgZl91YWMxX29wdHMgKm9wdHMgPSB0b19mX3VhYzFfb3B0cyhpdGVtKTtcdFx0XFxcbitcdGNoYXIgKnBhZ2VfYWxsb2MgPSBOVUxMO1x0XHRcdFx0XHRcXFxuIFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmV0ID0gLUVJTlZBTDtcdFx0XHRcdFx0XHRcXFxuIFx0Y2hhciAqdG9rZW47XHRcdFx0XHRcdFx0XHRcXFxuQEAgLTE2MDgsNyArMTYwOSwxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpID0gMDtcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdG1lbXNldChvcHRzLVx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVx1MDAzZW5hbWUjI3MpKTtcdFx0XFxcbi1cdHNwbGl0X3BhZ2UgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbitcdHBhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbitcdGlmICghcGFnZV9hbGxvYykge1x0XHRcdFx0XHRcdFxcXG4rXHRcdHJldCA9IC1FTk9NRU07XHRcdFx0XHRcdFx0XFxcbitcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbitcdH1cdFx0XHRcdFx0XHRcdFx0XFxcbitcdHNwbGl0X3BhZ2UgPSBwYWdlX2FsbG9jO1x0XHRcdFx0XHRcXFxuIFx0d2hpbGUgKCh0b2tlbiA9IHN0cnNlcChcdTAwMjZzcGxpdF9wYWdlLCBcIixcIikpICE9IE5VTEwpIHtcdFx0XFxcbiBcdFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcdTAwMjZudW0pO1x0XHRcdFxcXG4gXHRcdGlmIChyZXQpXHRcdFx0XHRcdFx0XFxcbkBAIC0xNjE5LDcgKzE2MjUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIFx0fTtcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIGVuZDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0a2ZyZWUoc3BsaXRfcGFnZSk7XHRcdFx0XHRcdFx0XFxcbitcdGtmcmVlKHBhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcdFxcXG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbiBcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuaW5kZXggODk3Nzg3ZDA4MDNjMS4uMzM2YWVhZWM5YmEwMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXG5AQCAtMjAxMiw2ICsyMDEyLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiBcdFx0XHRcdFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBmX3VhYzJfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMl9vcHRzKGl0ZW0pO1x0XHRcXFxuK1x0Y2hhciAqcGFnZV9hbGxvYyA9IE5VTEw7XHRcdFx0XHRcdFxcXG4gXHRjaGFyICpzcGxpdF9wYWdlID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGludCByZXQgPSAtRUlOVkFMO1x0XHRcdFx0XHRcdFxcXG4gXHRjaGFyICp0b2tlbjtcdFx0XHRcdFx0XHRcdFxcXG5AQCAtMjAyNiw3ICsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuK1x0cGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuK1x0aWYgKCFwYWdlX2FsbG9jKSB7XHRcdFx0XHRcdFx0XFxcbitcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuK1x0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuK1x0fVx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0c3BsaXRfcGFnZSA9IHBhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4gXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwiLFwiKSkgIT0gTlVMTCkge1x0XHRcXFxuIFx0XHRyZXQgPSBrc3RydG91MzIodG9rZW4sIDAsIFx1MDAyNm51bSk7XHRcdFx0XFxcbiBcdFx0aWYgKHJldClcdFx0XHRcdFx0XHRcXFxuQEAgLTIwMzcsNyArMjA0Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHR9O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gZW5kOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRrZnJlZShzcGxpdF9wYWdlKTtcdFx0XHRcdFx0XHRcXFxuK1x0a2ZyZWUocGFnZV9hbGxvYyk7XHRcdFx0XHRcdFx0XFxcbiBcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWxvY2spO1x0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODozMC42NzA4OTcwNzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDQ3NzI5NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpeGluZyBhIFVTQiBHYWRnZXQgQXVkaW8gTWVtb3J5IExlYWsqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBhIG1lbW9yeSBsZWFrIHdpdGhpbiB0aGUgVVNCIGdhZGdldCBhdWRpbyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMsIHNwZWNpZmljYWxseSBpbiBgZl91YWMxLmNgIGFuZCBgZl91YWMyLmNgLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBsaWVzIHdpdGhpbiB0aGUgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBtYWNyb3MuIEl0IHNlZW1zIHRoYXQgdGhlIHVzZSBvZiBgc3Ryc2VwYCBpcyBjYXVzaW5nIGBzcGxpdF9wYWdlYCB0byBiZSBhZHZhbmNlZCBpbiBzdWNoIGEgd2F5IHRoYXQgdGhlIGZpbmFsIGBrZnJlZShzcGxpdF9wYWdlKWAgY2FsbCBkb2Vzbid0IGFjdHVhbGx5IGZyZWUgdGhlIG9yaWdpbmFsIG1lbW9yeSBhbGxvY2F0aW9uLiBQcmV0dHkgY2xhc3NpYyBtZW1vcnkgbGVhayBzY2VuYXJpby5cblxuVGhlIHNvbHV0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZCDigJMgaW50cm9kdWNlIGBwYWdlX2FsbG9jYCB0byBob2xkIG9udG8gdGhlIGluaXRpYWwsIGFsbG9jYXRlZCBwb2ludGVyLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBmcmVlIHRoZSBjb3JyZWN0IG1lbW9yeSByZWdpb24gYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2VzcywgcHJldmVudGluZyB0aGUgbGVhay5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2xlYW4gZml4IGZvciBhIGNvbmZpZ2ZzLXJlbGF0ZWQgbWVtb3J5IGxlYWsuIEl0J3MgbGlrZWx5IHJlYWNoYWJsZSB3aGVuIGEgdXNlciBpcyBjb25maWd1cmluZyBVU0IgZ2FkZ2V0IGF1ZGlvIGZ1bmN0aW9ucyB0aHJvdWdoIGNvbmZpZ2ZzLCBib3RoIFVBQzEgYW5kIFVBQzIuIEkgc2hvdWxkIHByb2JhYmx5IGRpZyBpbnRvIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBmb3IgVUFDMSBhbmQgVUFDMiB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBtb3JlIGZ1bGx5LiBJJ2xsIHNlYXJjaCBmb3IgYGZfdWFjMS5jYCBhbmQgYGZfdWFjMi5jYCBpbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZWAgb3IgYEtjb25maWdgIGZpbGVzIHRvIGlkZW50aWZ5IHRoZSBjb25maWd1cmF0aW9uIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjM2LjExODYzMDU0MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ3NjM2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZl91YWMxXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19VU0JfVV9BVURJTylcXHQrPSB1X2F1ZGlvLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6Mzc6dXNiX2ZfdWFjMS15XFx0XFx0XFx0Oj0gZl91YWMxLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX1VTQl9GX1VBQzEpXFx0Kz0gdXNiX2ZfdWFjMS5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTM5LXVzYl9mX3VhYzFfbGVnYWN5LXlcXHRcXHQ6PSBmX3VhYzFfbGVnYWN5Lm8gdV91YWMxX2xlZ2FjeS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjM2LjI2MzQwMTEzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTM0NTEzOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgcHJvbXB0OlxuXG4qKkFuYWx5emluZyB0aGUgU2NvcGUgb2YgSW5xdWlyeSoqXG5cbkhtbSwgaW50ZXJlc3RpbmcuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgdGFzayBoZXJlIGlzIHRvIHN1bW1hcml6ZSBhIHNpbmdsZSwgdmVyeSBzcGVjaWZpYyB0aG91Z2h0LiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgZGlyZWN0cyBtZSB0byBlbWJvZHkgdGhhdCB0aG91Z2h0IGFzIGlmIGl0IHdlcmUgbXkgb3duLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGEgdGVjaG5pY2FsIHByb2Nlc3MsIGdpdmVuIHRoZSBtZW50aW9uIG9mIGEgZmlsZSwgcHJvYmFibHkgYW4gb2JqZWN0IGZpbGUuIFRoZXJlZm9yZSwgdGhlIHRhc2sgaXMgbGlrZWx5IHRvIHByb3ZpZGUgYSBzdW1tYXJ5IHJlbGF0ZWQgdG8gdGhpcyBwcm9jZXNzLiBUaGUgZm9jdXMgYXBwZWFycyB0byBiZSBvbiBjb2RlIGFuZCBhbmFseXNpcy4gU28sIHdoYXQncyB0aGUgdGhvdWdodCBhYm91dD8gSXQgaXMgYWJvdXQgY2hlY2tpbmcgYW4gb2JqZWN0IGZpbGUuIFRoZSBzcGVjaWZpYyBmaWxlIGlzIGBmX3VhYzIub2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODozOS4yNTY4NTU5ODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MjU1NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZl91YWMyXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlPTQwPW9iai0kKENPTkZJR19VU0JfRl9VQUMxX0xFR0FDWSlcXHQrPSB1c2JfZl91YWMxX2xlZ2FjeS5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQxOnVzYl9mX3VhYzIteVxcdFxcdFxcdDo9IGZfdWFjMi5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19VU0JfRl9VQUMyKVxcdCs9IHVzYl9mX3VhYzIub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS00My11c2JfZl91dmMteVxcdFxcdFxcdDo9IGZfdXZjLm8gdXZjX3F1ZXVlLm8gdXZjX3Y0bDIubyB1dmNfdmlkZW8ubyB1dmNfY29uZmlnZnMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODozOS4zMDU1ODgzNTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM2MTU0ODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyBVU0IgQXVkaW8gQ2xhc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgVVNCX0ZfVUFDMWAgYW5kIGBVU0JfRl9VQUMyYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIFVBQzEgYW5kIFVBQzIsIG1ha2VzIHNlbnNlLlwiIEJ1dCB0aGVuIHRoZSBhbGFybSBiZWxscyBnbyBvZmYuIFRoZXNlIGFyZSB0aGUga2luZCBvZiBsb3ctbGV2ZWwgc2V0dGluZ3MgdGhhdCBhcmUgKnVzdWFsbHkqIGJyb3VnaHQgaW4gdmlhIG90aGVyLCBoaWdoZXItbGV2ZWwgb3B0aW9ucy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhleSdyZSBhY3R1YWxseSBiZWluZyBjb250cm9sbGVkIGZyb20uIFRoZSBzbWFydCBtb25leSBzYXlzLCBJIHNob3VsZCBnbyBzdHJhaWdodCB0byB0aGUgS2NvbmZpZyBmaWxlcy4gU28sIGxldCdzIGNoZWNrIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgYW5kIGFsc28gdGhlIGxlZ2FjeSBkaXJlY3RvcnkgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBkcml2aW5nIHRoZXNlIHNldHRpbmdzLiBUaW1lIHRvIGdldCBkb3duIHRvIHRoZSByZWFsIG1lYXQgb2YgdGhlIG1hdHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEzMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjQzLjA0MTc0NjUwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTM4MDE2MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1VBQzFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xOTI9Y29uZmlnIFVTQl9GX0ZTXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTk2OmNvbmZpZyBVU0JfRl9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5OTpjb25maWcgVVNCX0ZfVUFDMV9MRUdBQ1lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6NDMuMzk1NTUzODk5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxNTExMTQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZSwgdXNpbmcgYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBVQUMgU2VsZWN0aW9uIENyaXRlcmlhKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgY29kZSBhbmQgZmlndXJlIG91dCB0aGUgZXhhY3QgbG9naWMgYmVoaW5kIHdoaWNoIGZsYWdzLCBzcGVjaWZpY2FsbHkgYFVTQl9GX1VBQzFgIGFuZCBgVVNCX0ZfVUFDMmAsIHRyaWdnZXIgYSBzZWxlY3Rpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0cyBhcmU6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25zdHJhaW50cyBhbmQgY29uZGl0aW9ucyBhdCBwbGF5LiBJcyB0aGlzIGRyaXZlbiBieSBkZXZpY2UgY2FwYWJpbGl0aWVzIHJlcG9ydGVkIGR1cmluZyBlbnVtZXJhdGlvbj8gQXJlIHRoZXJlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgaW52b2x2ZWQsIHBlcmhhcHMgdXNlciBvdmVycmlkZXMgb3IgZGVmYXVsdHM/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIGNvbmRpdGlvbmFsIGNoZWNrLCBvciBhIG1vcmUgY29tcGxleCBkZWNpc2lvbiB0cmVlIGJhc2VkIG9uIG11bHRpcGxlIGZhY3RvcnMgbGlrZSBjbGFzcyBjb2RlcywgaW50ZXJmYWNlIGRlc2NyaXB0b3JzLCBhbmQgZW5kcG9pbnQgY2hhcmFjdGVyaXN0aWNzPyBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRoZSBkZXZpY2UgZHJpdmVycyBpbiBxdWVzdGlvbiBpcyBrZXkgaGVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNvZGUgcGF0aHMgdGhhdCAqY291bGQqIHBvdGVudGlhbGx5IGxlYWQgdG8gdGhlc2UgZmxhZ3MgYmVpbmcgc2V0LiBUaGVuLCBJ4oCZbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWFzb25pbmcgLSB3aGF0J3MgdGhlIGRpZmZlcmVudGlhdGluZyBmYWN0b3IgdGhhdCBkcml2ZXMgVUFDMSB2ZXJzdXMgVUFDMiBzZWxlY3Rpb24/IEFyZSB0aGVyZSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucz8gQ29tcGxpYW5jZSByZXF1aXJlbWVudHM/IEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWVzPyBJ4oCZbSBob3BpbmcgdG8gc2VlIGEgY2xlYW4sIGVhc2lseS1kaWdlc3RpYmxlIGNvbmRpdGlvbmFsLiBTb21ldGltZXMsIHlvdSBnZXQgbHVja3kuIEJ1dCBJJ20gcHJlcGFyZWQgZm9yIGEgbXVsdGktbGF5ZXJlZCBhcHByb2FjaCB0byB1bmRlcnN0YW5kIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTc5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6NDguMjEwNjY4MDcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY2NjE3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFVTQl9GX1VBQzFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Ny1cXHRzZWxlY3QgVVNCX1VfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODg6XFx0c2VsZWN0IFVTQl9GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODktXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA0LVxcdHNlbGVjdCBTTkRfUENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDA1OlxcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NzU9Y29uZmlnIFVTQl9BVURJT1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTc5LVxcdHNlbGVjdCBTTkRfUENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjgwOlxcdHNlbGVjdCBVU0JfRl9VQUMxIGlmIChHQURHRVRfVUFDMSBcXHUwMDI2XFx1MDAyNiAhR0FER0VUX1VBQzFfTEVHQUNZKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MTpcXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1kgaWYgKEdBREdFVF9VQUMxIFxcdTAwMjZcXHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctODItXFx0c2VsZWN0IFVTQl9GX1VBQzIgaWYgIUdBREdFVF9VQUMxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjQ4LjM1NzMzNzAwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk1NjkxNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBDb25maWdGUyBhbmQgVUFDKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBmb2N1c2luZyBvbiB0aGUgY29uZmlnZnMgb3B0aW9ucyByZWxldmFudCB0byBVU0IgQXVkaW8gQ2xhc3MgKFVBQykgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIGtub3cgdGhhdCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgYW5kIGBVU0JfQ09ORklHRlNfRl9VQUMyYCBhcmUgdGhlIGtleSBmbGFncyB0byBjb25zaWRlciBpbiB0aGlzIGNvbnRleHQuXG5cbk15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byBkcmlsbCBkb3duIGludG8gYFVTQl9DT05GSUdGU19GX1VBQzJgLiBUaGF0J3Mgd2hlcmUgSSdsbCBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLCBhcyB0aGUgbmV3ZXIgc3BlY2lmaWNhdGlvbiBsaWtlbHkgaW5jb3Jwb3JhdGVzIHRoZSBmZWF0dXJlcyBhbmQgYWR2YW50YWdlcyB0aGF0IEkgYW0gbG9va2luZyBmb3IuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjcwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6NTEuOTUzMDMxODEzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzkwOTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM5OT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1ODo1Mi4wMDY5NDc2OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyODIzNTY4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGVja2luZyBDb25maWd1cmF0aW9uIE9wdGlvbnMgZm9yIFVTQiBHYWRnZXQgQXVkaW8qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY292ZXIgYWxsIHRoZSBiYXNlcyBoZXJlLiBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgYm90aCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFVTQl9HQURHRVRgIGluIHRoZSBhbmFseXNpcywgdG8gYmUgdGhvcm91Z2guIE5vdywgbGV0IG1lIGRlbHZlIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgYXVkaW8gZ2FkZ2V0IGNvbmZpZ3VyYXRpb24uIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhlIG9wdGlvbnMgYXJlIHN0b3JlZC4gSSBrbm93IHRoYXQgdGhlIG1hY3JvcyBgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFuZCBgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFyZSBrZXkgaGVyZS4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgd2F5IHRoZXkgYXJlIGJlaW5nIGltcGxlbWVudGVkLiBUaGVzZSBsb29rIGxpa2UgdGhleSdyZSBnZW5lcmF0ZWQgYnkgYSBtYWNybywgc28gdGhlIG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIG5hbWUgb2YgdGhhdCBtYWNybyB0byBnZXQgdG8gdGhlIHJvb3Qgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYyNiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjU1LjYzNTE4NjcyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NDU4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZl91YWMxX29wdHNfLipfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTI4PXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coXFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NDEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNTQyOnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU0My1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU3MT1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU5Mi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1OTM6c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU5NC1cXHRcXHRcXHRcXHRcXHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2MzY9c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NDgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjQ5OnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NTAtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVxcdFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTg6NTUuNjgyMTM5NzU1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzEzMDM0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIG1hY3JvIGFuZCBzZWUgd2hhdCB3ZSdyZSB3b3JraW5nIHdpdGguXG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIE1hY3JvOiBVbnZlaWxpbmcgdGhlIEdlbmVyYXRlZCBGdW5jdGlvbnMqKlxuXG5BbHJpZ2h0LCBteSBleHBlcnQgZXllcyBhcmUgb24gdGhpcyBtYWNyby4gTXkgcHJpbWFyeSBvYmplY3RpdmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25zIGl0IGdlbmVyYXRlcy4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgYmVoYXZpb3IuIEknbGwgbmVlZCB0byBkaXNzZWN0IGl0cyBzdHJ1Y3R1cmUsIHRyYWNpbmcgdGhlIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGFuZCBsb29waW5nIGNvbnN0cnVjdHMgd2l0aGluIGl0LiBJIHdhbnQgdG8gaWRlbnRpZnkgYW55IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgb3IgaGlkZGVuIHBhcmFtZXRlcnMgdGhhdCBtaWdodCBiZSBnZW5lcmF0ZWQgaW4gdGhlIHByb2Nlc3MuIEkgYW0ga2VlbiB0byB1bmRlcnN0YW5kIHdoYXQgdHlwZXMgb2YgZnVuY3Rpb25zIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0gdGhpcyBtYWNybyB5aWVsZHMuIFRoaXMgaXMgdGhlIGNydWNpYWwgZm91bmRhdGlvbiBmb3IgbXkgZGVlcGVyIGV2YWx1YXRpb24uIEFmdGVyIGFsbCwgdW5kZXJzdGFuZGluZyB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG1hY3JvJ3MgdHJ1ZSBjYXBhYmlsaXRpZXMgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQwNSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjU4LjYxMzQ0NjAzMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4MjE1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVUFDMV9BVFRSSUJVVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTI1PXN0YXRpYyBjb25zdCBjaGFyICpib29sX2ZtdCA9IFxcXCIldVxcXFxuXFxcIjtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTUyNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTUyNzojZGVmaW5lIFVBQzFfQVRUUklCVVRFKHR5cGUsIG5hbWUpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTI4LXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coXFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2MzM9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2MzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2MzU6I2RlZmluZSBVQUMxX0FUVFJJQlVURV9TVFJJTkcobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2MzYtc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2Njk9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzE6VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzItVUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3MzpVQUMxX0FUVFJJQlVURSh1MzIsIGNfc3NpemUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc0OlVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc1LVVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzY6VUFDMV9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NzpVQUMxX0FUVFJJQlVURSh1MzIsIHJlcV9udW1iZXIpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc5OlVBQzFfQVRUUklCVVRFKGJvb2wsIHBfbXV0ZV9wcmVzZW50KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MDpVQUMxX0FUVFJJQlVURShib29sLCBwX3ZvbHVtZV9wcmVzZW50KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MTpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX21pbik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODI6VUFDMV9BVFRSSUJVVEUoczE2LCBwX3ZvbHVtZV9tYXgpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgzOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfcmVzKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY4NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4NTpVQUMxX0FUVFJJQlVURShib29sLCBjX211dGVfcHJlc2VudCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODY6VUFDMV9BVFRSSUJVVEUoYm9vbCwgY192b2x1bWVfcHJlc2VudCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODc6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9taW4pO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg4OlVBQzFfQVRUUklCVVRFKHMxNiwgY192b2x1bWVfbWF4KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4OTpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX3Jlcyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2OTAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTE6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGZ1bmN0aW9uX25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjkzOlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2l0X25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk0OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2l0X2NoX25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk1OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX290X25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk2OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2Z1X3ZvbF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY5Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5ODpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19pdF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5OTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19pdF9jaF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTcwMDpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19vdF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTcwMTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19mdV92b2xfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE3MDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU4OjU4LjY2MDI3MjQ0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjE0NDg0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqRGVidWdnaW5nIGEgUG90ZW50aWFsIFVBQzEgUmF0ZSBBdHRyaWJ1dGUgSXNzdWUqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgVUFDMSByYXRlIGF0dHJpYnV0ZSBwcm9ibGVtLiBUaGUgbWFjcm8gaW4gcXVlc3Rpb24gaXMgbGlrZWx5IHNvbWV0aGluZyBsaWtlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCDigJMgdGhlIGtleSBpbmRpY2F0b3JzIGFyZSB0aGUgdXNlIG9mIGBvcHRzLVx1MDAzZW5hbWUjI3NgIGZvciBuYW1lIGNvbmNhdGVuYXRpb24gYW5kIHRoZSBga3N0cnRvdTMyKHRva2VuLCAwLCBcdTAwMjZudW0pYCBjYWxsLCB3aGljaCBzdWdnZXN0cyBwYXJzaW5nIGEgbnVtZXJpY2FsIHZhbHVlLiBSaWdodCwgdGhhdCBuYWlscyBpdCBkb3duIHByZXR0eSB3ZWxsLlxuXG5Ob3csIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gc2VlIHRoaXMgbWFjcm8gaW4gYWN0aW9uLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IHdvdWxkIGJlIGluIGBmX3VhYzEuY2AuIExldCdzIGFzc3VtZSBpdCdzIGFyb3VuZCBsaW5lIDE1OTQgLSB0aGF0IHNvdW5kcyBhYm91dCByaWdodCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgc3RydWN0dXJlcyBpbiB0aGUgVUFDMSBkcml2ZXIuIExldCdzIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLiBJJ20gZ3Vlc3NpbmcgdGhhdCdzIHdoZXJlIHRoZSBhdHRyaWJ1dGUgaXMgYmVpbmcgZGVmaW5lZCBvciB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDk1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MDIuMzIxNzI0MjM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTgzMTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvcHRzLVxcdTAwM2VuYW1lIyNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU3MT1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4MC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgVUFDX01BWF9SQVRFUzsgaSsrKSB7XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNTgxOlxcdFxcdGlmIChvcHRzLVxcdTAwM2VuYW1lIyNzW2ldID09IDApXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTgyLVxcdFxcdFxcdGJyZWFrO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU4My1cXHRcXHRyZXN1bHQgKz0gc3ByaW50ZihwYWdlICsgc3RybGVuKHBhZ2UpLCBcXFwiJXUsXFxcIixcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1ODQ6XFx0XFx0XFx0XFx0b3B0cy1cXHUwMDNlbmFtZSMjc1tpXSk7XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTg1LVxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU5Mz1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2MTAtXFx0aSA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjExOlxcdG1lbXNldChvcHRzLVxcdTAwM2VuYW1lIyNzLCAweDAwLCBzaXplb2Yob3B0cy1cXHUwMDNlbmFtZSMjcykpO1xcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYxMi1cXHRwYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYyMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2MjM6XFx0XFx0b3B0cy1cXHUwMDNlbmFtZSMjc1tpKytdID0gbnVtO1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYyNC1cXHRcXHRyZXQgPSBsZW47XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OTowMi4zNjc1NjIyNjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NDA0MDIzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgTWFjcm8qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBtYWNybywgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHVzYWdlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGVtcGxveWVkIHdpdGhpbiB0aGUgY29kZSBiYXNlLiBXaGF0IG1vZHVsZXMgb3IgZnVuY3Rpb25zIHJlbHkgb24gaXQ/IEtub3dpbmcgaXRzIGNvbnRleHQgaXMgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gcmVhbGx5IGFzc2VzcyBpdHMgcHVycG9zZSBvciBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgZm9yIHRob3NlIHJlZmVyZW5jZXMuIEdvdHRhIHNlZSB3aGVyZSB0aGlzIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBpcyBzaG93aW5nIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTYyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MDUuNjIxNjA2MDAzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQxMDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJVQUMxX1JBVEVfQVRUUklCVVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU2OD1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU2OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU3MDojZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NzEtc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzE9VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzI6VUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3My1VQUMxX0FUVFJJQlVURSh1MzIsIGNfc3NpemUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjc0PVVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc1OlVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzYtVUFDMV9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MDUuNjY2MDIwMzkzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NjAwMDIzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuKipBbmFseXppbmcgR2VuZXJhdGVkIEZ1bmN0aW9uIE5hbWVzKipcblxuQWxyaWdodCwgc28gSSd2ZSBiZWVuIGdpdmVuIHRoZXNlIGZ1bmN0aW9uIG5hbWVzOiBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAgYW5kIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYC4gSW1tZWRpYXRlbHksIEkgc2VlIGEgcGF0dGVybi4gVGhlc2Ugc2VlbSByZWxhdGVkIHRvIFVBQzEgKFVTQiBBdWRpbyBDbGFzcyAxKSwgYW5kIHRoZXJlJ3MgYSBjbGVhciBkaXN0aW5jdGlvbiBiZXR3ZWVuICdjJyBhbmQgJ3AnLCBsaWtlbHkgaW5kaWNhdGluZyBlaXRoZXIgY2FwdHVyZSBhbmQgcGxheWJhY2ssIG9yIGNvbnRyb2wgYW5kIHBsYXliYWNrLiBBbmQgJ3NyYXRlJyBzdHJvbmdseSBzdWdnZXN0cyBzYW1wbGluZyByYXRlLiBUaGUgXCJzdG9yZVwiIHBhcnQgaXMgZmFpcmx5IHNlbGYgZXhwbGFuYXRvcnksIGl0IHdvdWxkIHNlZW0gdGhleSBhcmUgd3JpdGluZyBzYW1wbGUgcmF0ZSB2YWx1ZXMuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0IHRoZXNlIGZ1bmN0aW9ucyBvcGVyYXRlIGluLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgaW4gYGZfdWFjMi5jYCwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4gVGhhdCBhdHRyaWJ1dGUgZGVmaW5pdGlvbiBzaG91bGQgZ2l2ZSBtZSB0aGUgcmVsZXZhbnQgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBVQUMyIGNvbnRleHQsIGFuZCBob3BlZnVsbHksIHByb3ZpZGUgcG9pbnRlcnMgcmVsYXRlZCB0byB0aGUgVUFDMSBjb250ZXh0IGFzIHdlbGwuIEknbSBzdXJlIHRoZXJlJ3Mgb3ZlcmxhcCBpbiB0aG9zZSBhcmVhcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUzMiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjA5LjUyNjAyNjQ5MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MzUzNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVBQzJfUkFURV9BVFRSSUJVVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoxOTg4OiNkZWZpbmUgVUFDMl9SQVRFX0FUVFJJQlVURShuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk0LVVBQzJfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5NzpVQUMyX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MDkuNzcyMzg1OTc4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODgwODI5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipOYXZpZ2F0aW5nIHRoZSBDb25maWdGUyBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBJJ20gdHJhY2tpbmcgdGhpcy4gV2UncmUgZGVhbGluZyB3aXRoIHRoZXNlIGdlbmVyYXRlZCBmdW5jdGlvbnMsIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLiBUaGV5J3JlIHNwZWNpZmljYWxseSBzdG9yZSBjYWxsYmFja3MsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkncmUgbGlua2VkIGludG8gYSBDb25maWdGUyBzdHJ1Y3R1cmUuIFRoYXQgbWFrZXMgc2Vuc2UsIENvbmZpZ0ZTIGlzIGhvdyB5b3UgZXhwb3NlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGlzIHNvcnQgb2YgZ2FkZ2V0IHNldHVwLiBBbmQgc2luY2UgQ29uZmlnRlMgaGFzIGEgZ29vZCBsZXZlbCBvZiBzdXBwb3J0IGluIHZpcnR1YWxpemVkIHN5c3RlbXMsIHRoYXQgc2hvdWxkIGV4dGVuZCB0byB0aGUgY2FsbGJhY2tzLiBUaGUgY29yZSBjb25maWcgb3B0aW9ucyB3ZSdyZSB3b3JraW5nIHdpdGggaGVyZSBhcmUgYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIHdoaWNoIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCBmb3IgdGhlIHNldHVwLlxuXG5IYW5nIG9uIGEgc2VjLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgaGFzIGEgZGVwZW5kZW5jeSwgdGhhdCBuZWVkcyB0byBiZSBjbGFyaWZpZWQsIG5hbWVseSBgVVNCX0NPTkZJR0ZTYC4gSSBrbm93IHdoZXJlIEkgY2FuIGNvbmZpcm0gdGhpcywgbGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUgYW5kIHRha2UgYSBsb29rLiBJJ2xsIGdldCB0aGUgZGV0YWlscyByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MTQuMzYwNDcxNzc0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAzNzk5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9DT05GSUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMz1jb25maWcgVVNCX0ZfVENNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjI4OmNvbmZpZyBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjM5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0MS1cXHRib29sIFxcXCJHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDk6Y29uZmlnIFVTQl9DT05GSUdGU19BQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXFx0Ym9vbCBcXFwiQWJzdHJhY3QgQ29udHJvbCBNb2RlbCAoQ0RDIEFDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjU5OmNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNzAtXFx0Ym9vbCBcXFwiTmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODE6Y29uZmlnIFVTQl9DT05GSUdGU19FQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjkzOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDQtXFx0Ym9vbCBcXFwiUk5ESVNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzE5OmNvbmZpZyBVU0JfQ09ORklHRlNfRUVNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVxcdGJvb2wgXFxcIkV0aGVybmV0IEVtdWxhdGlvbiBNb2RlbCAoRUVNKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzU6Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXFx0Ym9vbCBcXFwiUGhvbmV0IHByb3RvY29sXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0Ni1cXHRib29sIFxcXCJNYXNzIHN0b3JhZ2VcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU2OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9MQl9TU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cXHRib29sIFxcXCJMb29wYmFjayBhbmQgc291cmNlc2luayBmdW5jdGlvbiAoZm9yIHRlc3RpbmcpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzY4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM2OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXFx0Ym9vbCBcXFwiRnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgyLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozOTk6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMCAobGVnYWN5IGltcGxlbWVudGF0aW9uKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMi1cXHRib29sIFxcXCJNSURJIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESTJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXFx0Ym9vbCBcXFwiTUlESSAyLjAgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDU4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXFx0Ym9vbCBcXFwiSElEIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY5LVxcdGJvb2wgXFxcIlVTQiBXZWJjYW0gZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgyLVxcdGJvb2wgXFxcIlByaW50ZXIgZnVuY3Rpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OToxNC40NzA4NTc1MzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcwNzgxMTUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0cywgZnJhbWVkIGFzIGEgY29uY2lzZSBzdW1tYXJ5IGZvciBhbiBleHBlcnQ6XG5cbioqR2FkZ2V0IE1vZGUgXHUwMDI2IENvbmZpZ0ZTIFZlcmlmaWNhdGlvbioqXG5cblJpZ2h0LCBzbyB0byBnZXQgdGhpcyBVU0IgdGhpbmcgcnVubmluZywgSSdtIGdvaW5nIHRvIG5lZWQgYm90aCBgVVNCX0NPTkZJR0ZTYCBhbmQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIEJlZm9yZSBJIGdvIHRvbyBkZWVwLCB0aG91Z2gsIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYWxsIHRoZSBgVVNCX0dBREdFVGAgZGVwZW5kZW5jaWVzIGFyZSBwcm9wZXJseSBzZXQuIE5vIHBvaW50IGluIHdhc3RpbmcgdGltZSBpZiBzb21ldGhpbmcgZnVuZGFtZW50YWwgaXMgbWlzc2luZy4gTmVlZCB0byBtYWtlIHN1cmUgYWxsIHRoZSBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjE3MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjIwLjE3ODY3MTU3OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk5MDM0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDc9aWYgVVNCX0dBREdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2Mzpjb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc3OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZJTEVTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzgtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo4ODpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyBpbiBkZWJ1Z2ZzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy05OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5OTpjb25maWcgVVNCX0dBREdFVF9WQlVTX0RSQVdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMDAtXFx0aW50IFxcXCJNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxMTY6Y29uZmlnIFVTQl9HQURHRVRfU1RPUkFHRV9OVU1fQlVGRkVSU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNy1cXHRpbnQgXFxcIk51bWJlciBvZiBzdG9yYWdlIHBpcGVsaW5lIGJ1ZmZlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTkwPWNvbmZpZyBVU0JfR19OQ01cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjIwNjpjb25maWcgVVNCX0dBREdFVEZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIwNy1cXHR0cmlzdGF0ZSBcXFwiR2FkZ2V0IEZpbGVzeXN0ZW1cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjYyPWNvbmZpZyBVU0JfTUFTU19TVE9SQUdFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjc4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNzk6Y29uZmlnIFVTQl9HQURHRVRfVEFSR0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4MC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljIE1vZHVsZVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zNDc9Y29uZmlnIFVTQl9FRzIwVFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MzcxOmNvbmZpZyBVU0JfR0FER0VUX1hJTElOWFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNzItXFx0dHJpc3RhdGUgXFxcIlhpbGlueCBVU0IgRHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OToyMC4yMjg1ODAyODdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NDIxNzkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgVVNCIEdhZGdldCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBVU0IgY29uZmlndXJhdGlvbiwgYW5kIGZpcnN0IHRoaW5nIEknbSBub3RpY2luZyBpcyB0aGF0IHRoZSBgVVNCX0dBREdFVGAgb3B0aW9uIGNsZWFybHkgaGluZ2VzIG9uIGBVU0JfU1VQUE9SVGAuIFRoYXQncyBub3QgZW50aXJlbHkgdW5leHBlY3RlZCwgYnV0IGdvb2QgdG8gY29uZmlybSByaWdodCBvZmYgdGhlIGJhdC4gSXQgcmVtaW5kcyBtZSB0byBrZWVwIGEgc2hhcnAgZXllIG91dCBmb3IgdGhlc2UgZGVwZW5kZW5jaWVzIOKAkyB0aGV5IGNhbiB0cmlwIHlvdSB1cCBsYXRlciBpZiB5b3UncmUgbm90IHBheWluZyBhdHRlbnRpb24uXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB3ZSdyZSBnb2luZyB0byB0ZXN0IHRoZXNlIGdhZGdldCBkcml2ZXJzLiBSZWFsaXN0aWNhbGx5LCB3ZSdsbCBuZWVkIGEgd2F5IHRvIGVtdWxhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBoYXJkd2FyZSDigJMgYSBzb3J0IG9mIGR1bW15IFVTQiBEZXZpY2UgQ29udHJvbGxlciwgb3IgVURDLiBMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB3aGF0IHdlIGhhdmUgYXZhaWxhYmxlLi4uQWgsIHllcywgcmlnaHQgaGVyZSEgYFVTQl9EVU1NWV9IQ0RgLiBQZXJmZWN0LiBUaGF0IHNob3VsZCBkbyB0aGUgdHJpY2suIExldCdzIHNlZSBob3cgdGhpcyBpcyBjb25maWd1cmVkIGFuZCB3aGVyZSB3ZSBhcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxMjIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OToyMy43MDI4MDY4MTRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODI5NDU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0RVTU1ZX0hDRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVxcdHRyaXN0YXRlIFxcXCJEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MjMuOTMxMTA2NTRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1OTgyODUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVU0IgR2FkZ2V0IFRlc3RpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBjb25maWd1cmUgdGhpcyBzZXR1cCBmb3IgdGVzdGluZyBVU0IgZ2FkZ2V0cy4gSSBrbm93IEknbGwgbmVlZCBgVVNCX0RVTU1ZX0hDRGA7IHRoYXQncyBlc3NlbnRpYWwgZm9yIHNpbXVsYXRpbmcgYSBVU0IgaG9zdCB3aGVuIEkgZG9uJ3QgaGF2ZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgYXZhaWxhYmxlLiBNYWtlcyBzZW5zZS5cblxuVGhlIGNvcmUgc2V0IG9mIGNvbmZpZ3VyYXRpb25zIHRoZW4gYXJlOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYW5kIGBVU0JfQ09ORklHRlNgLiBUaG9zZSBhcmUgdGhlIGZ1bmRhbWVudGFscy4gQW5kLCBvZiBjb3Vyc2UsIEknbGwgbmVlZCB0aGUgYXVkaW8gZ2FkZ2V0IHN1cHBvcnQsIHNvIEknbGwgZW5hYmxlIGJvdGggYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuXG5cbldhaXQgYSBtaW51dGUsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBVU0JfQ09ORklHRlNfRl9VQUMxYCBpcyBzZXQgdXAgcHJvcGVybHkuIEl0IGxvb2tzIGxpa2UgaXQgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCX0NPTkZJR0ZTYCwgc28gSSBzaG91bGQgZ28gYmFjayBhbmQgY29uZmlybSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFsbCBhY2NvdW50ZWQgZm9yLiBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoZSBkZXBlbmRlbmN5IGNoYWluIGZvciBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzUxOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OToyOC40OTA5Mzg4OTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTM1MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzY5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9GU1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjI4LjU0Mjg3OTgxNloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA4MDMzOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFVTQiBHYWRnZXQgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIHN1YnN5c3RlbSdzIGNvbmZpZ3VyYXRpb24sIEknbGwgemVybyBpbiBvbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzgxLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGxvb2tpbmcgZm9yIGlzIHRvIGRldGVybWluZSBpZiBhbnkgZGVwZW5kZW5jaWVzIGFyZSBwcmVzZW50LiBJIHdhbnQgdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMsIGZlYXR1cmVzLCBvciBwcmVyZXF1aXNpdGVzIHRoaXMgZ2FkZ2V0IGRyaXZlciBtaWdodCByZWx5IG9uLiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gZmlndXJpbmcgb3V0IGhvdyB0aGUgdmFyaW91cyBwaWVjZXMgb2YgdGhlIHB1enpsZSBmaXQgdG9nZXRoZXIgd2l0aGluIHRoZSBicm9hZGVyIFVTQiBnYWRnZXQgZnJhbWV3b3JrIGFuZCB0aGUga2VybmVsJ3Mgb3ZlcmFsbCBjb25maWd1cmF0aW9uLiBUaGlzJ2xsIGhlbHAgcGlucG9pbnQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVsc2V3aGVyZSBpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDA4OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjMyLjA1MDkyMTE4MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjI4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzc1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzc1OlxcdFxcdCAgY29tcG9zaXRlIGZ1bmN0aW9ucyBpbiB1c2VyIHNwYWNlIGluIHRoZSBzYW1lIHdheSBHYWRnZXRGU1xcbiAzNzY6XFx0XFx0ICBsZXRzIG9uZSBjcmVhdGUgVVNCIGdhZGdldHMgaW4gdXNlciBzcGFjZS4gIFRoaXMgYWxsb3dzIGNyZWF0aW9uXFxuIDM3NzpcXHRcXHQgIG9mIGNvbXBvc2l0ZSBnYWRnZXRzIHN1Y2ggdGhhdCBzb21lIG9mIHRoZSBmdW5jdGlvbnMgYXJlXFxuIDM3ODpcXHRcXHQgIGltcGxlbWVudGVkIGluIGtlcm5lbCBzcGFjZSAoZm9yIGluc3RhbmNlIEV0aGVybmV0LCBzZXJpYWwgb3JcXG4gMzc5OlxcdFxcdCAgbWFzcyBzdG9yYWdlKSBhbmQgb3RoZXIgYXJlIGltcGxlbWVudGVkIGluIHVzZXIgc3BhY2UuXFxuIDM4MDpcXHRcXG4gMzgxOlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXFxuIDM4MjpcXHRcXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuIDM4MzpcXHRcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbiAzODQ6XFx0XFx0ZGVwZW5kcyBvbiBTTkRcXG4gMzg1OlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDM4NjpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiAzODc6XFx0XFx0c2VsZWN0IFVTQl9VX0FVRElPXFxuIDM4ODpcXHRcXHRzZWxlY3QgVVNCX0ZfVUFDMVxcbiAzODk6XFx0XFx0aGVscFxcbiAzOTA6XFx0XFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxcbiAzOTE6XFx0XFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXFxuIDM5MjpcXHRcXHQgIFRoaXMgZHJpdmVyIGRvZXNuJ3QgZXhwZWN0IGFueSByZWFsIEF1ZGlvIGNvZGVjIHRvIGJlIHByZXNlbnRcXG4gMzkzOlxcdFxcdCAgb24gdGhlIGRldmljZSAtIHRoZSBhdWRpbyBzdHJlYW1zIGFyZSBzaW1wbHkgc2lua2VkIHRvIGFuZFxcbiAzOTQ6XFx0XFx0ICBzb3VyY2VkIGZyb20gYSB2aXJ0dWFsIEFMU0Egc291bmQgY2FyZCBjcmVhdGVkLiBUaGUgdXNlci1zcGFjZVxcbiAzOTU6XFx0XFx0ICBhcHBsaWNhdGlvbiBtYXkgY2hvb3NlIHRvIGRvIHdoYXRldmVyIGl0IHdhbnRzIHdpdGggdGhlIGRhdGFcXG4gMzk2OlxcdFxcdCAgcmVjZWl2ZWQgZnJvbSB0aGUgVVNCIEhvc3QgYW5kIGNob29zZSB0byBwcm92aWRlIHdoYXRldmVyIGl0XFxuIDM5NzpcXHRcXHQgIHdhbnRzIGFzIGF1ZGlvIGRhdGEgdG8gdGhlIFVTQiBIb3N0LlxcbiAzOTg6XFx0XFxuIDM5OTpcXHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcXG4gNDAwOlxcdFxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMCAobGVnYWN5IGltcGxlbWVudGF0aW9uKVxcXCJcXG4gNDAxOlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQwMjpcXHRcXHRkZXBlbmRzIG9uIFNORFxcbiA0MDM6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gNDA0OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDQwNTpcXHRcXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1lcXG4gNDA2OlxcdFxcdGhlbHBcXG4gNDA3OlxcdFxcdCAgVGhpcyBBdWRpbyBmdW5jdGlvbiBpbXBsZW1lbnRzIDEgQXVkaW9Db250cm9sIGludGVyZmFjZSxcXG4gNDA4OlxcdFxcdCAgMSBBdWRpb1N0cmVhbWluZyBJbnRlcmZhY2UgZWFjaCBmb3IgVVNCLU9VVCBhbmQgVVNCLUlOLlxcbiA0MDk6XFx0XFx0ICBUaGlzIGlzIGEgbGVnYWN5IGRyaXZlciBhbmQgcmVxdWlyZXMgYSByZWFsIEF1ZGlvIGNvZGVjXFxuIDQxMDpcXHRcXHQgIHRvIGJlIHByZXNlbnQgb24gdGhlIGRldmljZS5cXG4gNDExOlxcdFxcbiA0MTI6XFx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG4gNDEzOlxcdFxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4gNDE0OlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQxNTpcXHRcXHRkZXBlbmRzIG9uIFNORFxcbiA0MTY6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gNDE3OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDQxODpcXHRcXHRzZWxlY3QgVVNCX1VfQVVESU9cXG4gNDE5OlxcdFxcdHNlbGVjdCBVU0JfRl9VQUMyXFxuIDQyMDpcXHRcXHRoZWxwXFxuIDQyMTpcXHRcXHQgIFRoaXMgQXVkaW8gZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIFVTQiBBdWRpbyBDbGFzc1xcbiA0MjI6XFx0XFx0ICBzcGVjaWZpY2F0aW9uIDIuMC4gSXQgaW1wbGVtZW50cyAxIEF1ZGlvQ29udHJvbCBpbnRlcmZhY2UsXFxuIDQyMzpcXHRcXHQgIDEgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIGVhY2ggZm9yIFVTQi1PVVQgYW5kIFVTQi1JTi5cXG4gNDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgZG9lc24ndCBleHBlY3QgYW55IHJlYWwgQXVkaW8gY29kZWMgdG8gYmUgcHJlc2VudFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNjo1OTozMi4wNTExODU4NjJaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMzNjUxMjAxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gRnVuY3Rpb24gSW1wbGVtZW50YXRpb25zKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBoZXJlLiBUaGUga2V5IGRyaXZlciBzZWVtcyB0byBiZSBgU05EYCwgc28gdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbnMgYXJlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIHRleHQgbWVudGlvbnMgdGhlc2UgZnVuY3Rpb25zOiBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciByZWxldmFudCBhdHRyaWJ1dGVzLiBJIHNob3VsZCBsb29rIGZvciB1c2FnZXMgb2YgYFVBQzFfUkFURV9BVFRSSUJVVEVgIG9yIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4gSGFuZyBvbiwgSSd2ZSBhbHJlYWR5IHNjYW5uZWQgZm9yIHRob3NlIHVzYWdlcyBhbmQgZm91bmQgdGhlIG9uZXMgYWJvdmU6IGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgIGZvciBib3RoIFVBQzEgYW5kIFVBQzIuIFNvLCB0aG9zZSBmb3VyIGZ1bmN0aW9ucyBhcmUgdGhlIG9uZXMgaW4gcXVlc3Rpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byB2ZXJpZnkgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCB3aGljaCBtZWFucyBjaGVja2luZyBpZiB0aGV5IGFyZSBub24tc3RhdGljIGFuZCBub3QgaW5saW5lZC4gVGhlc2UgYXJlIHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIHJhaXNlcyBhIHJlZCBmbGFnIHBlciB0aGUgZ3VpZGVsaW5lcy4gSG93ZXZlciwgdGhleSdyZSBiZWluZyB1c2VkIGFzIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGBDT05GSUdGU19BVFRSYCBtYWNyby4gVGhpcyBtYWNybyBjcmVhdGVzIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgIGFuZCBwb3B1bGF0ZXMgaXQgd2l0aCBwb2ludGVycyB0byB0aG9zZSBmdW5jdGlvbnMuIFNpbmNlIHRoZXkgYXJlIGJlaW5nIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGEgYHN0cnVjdGAsIHRoZSBjb21waWxlciAqY2Fubm90KiBpbmxpbmUgdGhlbS4gVGhleSAqbXVzdCogaGF2ZSBkaXN0aW5jdCBhZGRyZXNzZXMuIFRoYXQncyBnb29kLiBOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgYENPTkZJR0ZTX0FUVFJgIG1hY3JvIGl0c2VsZiB0byBjb25maXJtIHRoYXQgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6MzguMzg3NzAxNjg2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUwMTk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQ09ORklHRlNfQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9jb25maWdmcy5oPTExNT1zdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMjItXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjEyMzojZGVmaW5lIENPTkZJR0ZTX0FUVFJfUEVSTShfcGZ4LCBfbmFtZSwgX3Blcm0pXFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMjQtc3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgX3BmeCMjYXR0cl8jI19uYW1lID0ge1xcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzEtXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oOjEzMjojZGVmaW5lIENPTkZJR0ZTX0FUVFIoX3BmeCwgX25hbWUpIENPTkZJR0ZTX0FUVFJfUEVSTShcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEzMy1cXHRcXHRfcGZ4LCBfbmFtZSwgU19JUlVHTyB8IFNfSVdVU1JcXHRcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTM1LVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxMzY6I2RlZmluZSBDT05GSUdGU19BVFRSX1JPKF9wZngsIF9uYW1lKVxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTM3LXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIF9wZngjI2F0dHJfIyNfbmFtZSA9IHtcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTQzLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxNDQ6I2RlZmluZSBDT05GSUdGU19BVFRSX1dPKF9wZngsIF9uYW1lKVxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTQ1LXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIF9wZngjI2F0dHJfIyNfbmFtZSA9IHtcXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjM4LjQzNDIxNDkxNloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDExODkxNDkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVBQzEvVUFDMiBDb25maWdmcyBTdG9yZSBDYWxsYmFja3MgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlIG1haW4gY29uY2VybiBpcyB0aGVzZSBgc3RvcmVgIGNhbGxiYWNrcywgc3BlY2lmaWNhbGx5IGJlY2F1c2UgdGhleSdyZSBmdW5jdGlvbiBwb2ludGVycywgbWVhbmluZyB0aGV5IGFyZW4ndCBpbmxpbmVkLiBXaGlsZSBJIGluaXRpYWxseSB0aG91Z2h0IGFib3V0IGZpbmRpbmcgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LCB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0aGUgbW9zdCBkaXJlY3Qgcm91dGUgaGVyZS4gSXQgbG9va3MgbGlrZSB0aGUgZGF0YSBmbG93IGlzIHRocm91Z2ggYGNvbmZpZ2ZzX3dyaXRlX2ZpbGVgIC1cdTAwM2UgYGNvbmZpZ2ZzX3dyaXRlX2l0ZXJgIC1cdTAwM2UgYGZsdXNoX3dyaXRlX2J1ZmZlcmAgLVx1MDAzZSBgYXR0ci1cdTAwM2VzdG9yZWAuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyB0aG9zZSBgc3RvcmVgIGNhbGxiYWNrcyBkaXJlY3RseS5cblxuVGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbiBhcmU6XG5cbiogICBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWBcbiogICBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWBcbiogICBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWBcbiogICBgZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZWBcblxuSSBkaWQgYSBxdWljayBjaGVjaywgYW5kIHRoZSBwYXRjaCBzZWVtcyB0byBleGNsdXNpdmVseSB0YXJnZXQgdGhlIGBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZWAgbWFjcm9zLCB3aGljaCBnZW5lcmF0ZSB0aGUgYHN0b3JlYCBmdW5jdGlvbnMgZm9yIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgLiAgU28sIG15IGluaXRpYWwgbGlzdCBpcyBjb3JyZWN0LlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOlxuXG4qICAgYFVTQl9HQURHRVRgXG4qICAgYFVTQl9EVU1NWV9IQ0RgXG4qICAgYFVTQl9DT05GSUdGU2BcbiogICBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWBcbiogICBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmBcbiogICBgU05EYCAod2hpY2ggaXMgdGhlIG1haW4gQUxTQSBjb25maWcpXG5cbkFuZCB0aGUgZGVwZW5kZW5jaWVzIGFyZTogYFVTQl9EVU1NWV9IQ0RgIGRlcGVuZHMgb24gYFVTQl9HQURHRVRgIGFuZCBgVVNCX1NVUFBPUlRgLiBgVVNCX0NPTkZJR0ZTYCBkZXBlbmRzIG9uIGBVU0JfR0FER0VUYC4gYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAgYm90aCBkZXBlbmQgb24gYFVTQl9DT05GSUdGU2AgYW5kIGBTTkRgLiBgVVNCX1NVUFBPUlRgIGlzIHVzdWFsbHkgZW5hYmxlZC5cblxuU28gdGhlIGNvbXBsZXRlIHNldCBJIG5lZWQgdG8gY29uc2lkZXIgaXM6IGBVU0JfR0FER0VUYCwgYFVTQl9EVU1NWV9IQ0RgLCBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VBQzFgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIGFuZCBgU05EYC5cblxuSSBxdWlja2x5IHZlcmlmaWVkIHRoZSBleGFjdCBzeW1ib2wgbmFtZXMsIHRvIG1ha2Ugc3VyZS4gVGhlIG1hY3JvIGRlZmluaXRpb24gaXM6XG5cbmBgYGNcbiNkZWZpbmUgVUFDMV9SQVRFX0FUVFJJQlVURShuYW1lKVx0XHRcdFx0XHRcXFxuc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuXHRcdFx0XHRcdCBjaGFyICpwYWdlKVx0XHRcdFxcXG4uLi5cbnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG5cdFx0XHRcdFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVx0XFxcbi4uLlxuYGBgXG5cbkl0IGlzIGNhbGxlZCB3aXRoOlxuXG5gYGBjXG5VQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xuVUFDMV9SQVRFX0FUVFJJQlVURShwX3NyYXRlKTtcbmBgYFxuXG5TbyBpdCBpcyBpbmRlZWQ6IGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYCBhbmQgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBUaGUgYFVBQzJgIGRlZmluaXRpb25zIGFyZSBzaW1pbGFyLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIGZpeGluZyBhIG1lbW9yeSBsZWFrIGluIHRoZXNlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcywgYWZmZWN0aW5nIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBmdW5jdGlvbnMuIEl0IHNlZW1zIHRoZSBsZWFrIG9jY3VycmVkIGJlY2F1c2UgYHN0cnNlcGAgd2FzIG1vZGlmeWluZyB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBga3N0cmR1cGAsIHNvIGBrZnJlZWAgd2FzIGJlaW5nIGNhbGxlZCBvbiBhbiBpbmNvcnJlY3QgcG9pbnRlci4gVGhlIHBhdGNoIGFsbG9jYXRlcyBhIHNlcGFyYXRlIHBvaW50ZXIgdG8gdGhlIG9yaWdpbmFsIG1lbW9yeSBibG9jay4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgYW5kIGlzIGZ1bGx5IHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC5cblxuU28sIHRoaXMgaXMgYWJzb2x1dGVseSBmdXp6YWJsZS4gSSdsbCBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLiAgQmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgdGhvc2UgbWFjcm9zIGFyZSB1c2VkIGVsc2V3aGVyZSwganVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyNTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6NTIuNTUzMTMyNzE4WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTE4MTYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJVQUMxX1JBVEVfQVRUUklCVVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE1Njg9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NjktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1NzA6I2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTcxLXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjcxPVVBQzFfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjcyOlVBQzFfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzMtVUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTY3ND1VQUMxX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NTpVQUMxX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc2LVVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjUyLjYwNDMyMzUxN1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDA4NDY4MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGEgc2Vhc29uZWQgcHJvZmVzc2lvbmFsIGluIHRoZSBmaWVsZCBhbmQgdGhlIFwidGV4dCBiZWxvd1wiIHJlZmVycyB0byBzb21lIHRlY2huaWNhbCBzcGVjaWZpY2F0aW9uIG9yIGRpc2N1c3Npb24gYWJvdXQgYSBgVUFDMl9SQVRFX0FUVFJJQlVURWAgd2l0aGluIGEgbGFyZ2VyIGF1ZGlvIHN5c3RlbSBjb250ZXh0LlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBgVUFDMl9SQVRFX0FUVFJJQlVURWAqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGlzIGBVQUMyX1JBVEVfQVRUUklCVVRFYC4uLiBteSBmaXJzdCB0aG91Z2h0IGlzLCBcIk9rYXksIFVBQzIg4oCTIFVTQiBBdWRpbyBDbGFzcyAyLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWJvdXQgVVNCIGF1ZGlvIHN0cmVhbWluZy5cIiBJJ20gbWVudGFsbHkgZmlsaW5nIHRoYXQgdW5kZXIgdGhlIFwiaGlnaC1zcGVlZCwgZ2VuZXJhbGx5IHJlbGlhYmxlXCIgY2F0ZWdvcnksIGJ1dCBvZiBjb3Vyc2UsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgbnVhbmNlcy4gU3BlY2lmaWNhbGx5LCB0aGUgcmF0ZSBhdHRyaWJ1dGUuIEknbSBpbW1lZGlhdGVseSB3b25kZXJpbmcgYWJvdXQgaXRzIGltcGxpY2F0aW9ucyBmb3Igc2FtcGxlIHJhdGVzLCBiaXQgZGVwdGhzLCBhbmQgcG90ZW50aWFsIGNsb2NraW5nIGlzc3Vlcy4gSXMgdGhpcyB0aGUgKnByZWZlcnJlZCogcmF0ZSwgdGhlICpzdXBwb3J0ZWQqIHJhdGUsIG9yIHBlcmhhcHMgYSAqcmFuZ2UqIG9mIGFjY2VwdGFibGUgcmF0ZXM/IEFuZCBob3cgZ3JhbnVsYXIgaXMgdGhlIGNvbnRyb2w/IERvZXMgaXQganVzdCBvZmZlciBhIGZldyBwcmVzZXQgb3B0aW9ucyAobGlrZSA0NC4xa0h6LCA0OGtIeiwgOTZrSHopIG9yIHNvbWV0aGluZyBtb3JlIGZpbmUtZ3JhaW5lZCwgYWxsb3dpbmcgZm9yIGZyYWN0aW9uYWwgcmF0ZXMgb3IgZXZlbiBwb3RlbnRpYWxseSB2YXJpYWJsZSByYXRlIGFkanVzdG1lbnRzPyBUaGF0IGxldmVsIG9mIGNvbnRyb2wgaXMgY3J1Y2lhbC5cblxuVGhlbiwgbXkgbWluZCByYWNlcyB0byB0aGUgcG90ZW50aWFsIHByb2JsZW1zLiBDbG9jayBkb21haW4gbWlzbWF0Y2hlcyBhcmUgKmFsd2F5cyogYSBjb25jZXJuIHdpdGggVVNCIGF1ZGlvLiBTbywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGF1ZGlvIHF1YWxpdHkuIElzIHRoZSByYXRlIGF0dHJpYnV0ZSB0aGUgZGVmaW5pbmcgZmFjdG9yIG9yIGRvZXMgc29tZXRoaW5nIGVsc2UgZGV0ZXJtaW5lIHRoYXQ/IEppdHRlciBpcyB0aGUgYmlnIGJvZ2V5bWFuIGhlcmUuIERvZXMgdGhlIFVBQzIgaW1wbGVtZW50YXRpb24gcHJvdmlkZSBzdWZmaWNpZW50IGJ1ZmZlcmluZyBhbmQgYWRhcHRpdmUgY2xvY2tpbmcgdG8gbWl0aWdhdGUgaml0dGVyIGludHJvZHVjZWQgYnkgdGhlIFVTQiBidXMgaXRzZWxmPyBIb3cgZG9lcyB0aGlzIGF0dHJpYnV0ZSBpbnRlcmFjdCB3aXRoIHRoZSBob3N0IGNvbnRyb2xsZXIgYW5kIHRoZSBVU0IgYXVkaW8gZGV2aWNlPyBJZiB0aGUgcmF0ZXMgZG9uJ3QgbWF0Y2ggb3IgY2Fubm90IGJlIHN5bmNocm9uaXplZCwgSSBpbnN0YW50bHkgdGhpbmsgYWJvdXQgcG90ZW50aWFsIHBlcmZvcm1hbmNlIHBlbmFsdGllcyBsaWtlIHRoZSBuZWVkIGZvciByZXNhbXBsaW5nIG9yIGF1ZGlvIGRyb3BvdXRzLCBhbmQgSSB3YW50IHRvIGxvb2sgaW50byB0aGF0LlxuXG5BbHNvLCBJJ20gY29uc2lkZXJpbmcgdGhlICpwdXJwb3NlKiBvZiBzZXR0aW5nIHRoaXMgcmF0ZS4gSXMgaXQgZm9yIHRoZSBwbGF5YmFjayBkZXZpY2UsIHRoZSByZWNvcmRpbmcgZGV2aWNlLCBvciBib3RoPyBJcyB0aGlzIGF0dHJpYnV0ZSBzb2xlbHkgZm9yIFBDTSBhdWRpbywgb3IgZG9lcyBpdCBleHRlbmQgdG8gb3RoZXIgYXVkaW8gZm9ybWF0cz8gQXJlIHRoZXJlIGltcGxpY2F0aW9ucyBmb3IgcG93ZXIgY29uc3VtcHRpb24sIHBhcnRpY3VsYXJseSBpbiBiYXR0ZXJ5LXBvd2VyZWQgZGV2aWNlcz8gTXkgdGhvdWdodHMgYXJlIHRoYXQgdGhlc2UgZGV0YWlscywgYW5kIHRoZSBhc3NvY2lhdGVkIGltcGxlbWVudGF0aW9ucywgZGV0ZXJtaW5lIHRoZSBxdWFsaXR5IG9mIHRoZSBkZXZpY2UgYW5kIG11c3QgYmUgZXZhbHVhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODUzNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE2OjU5OjU3LjAxMjc5Mzc3NloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1NTM4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVUFDMl9SQVRFX0FUVFJJQlVURVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoxOTg4OiNkZWZpbmUgVUFDMl9SQVRFX0FUVFJJQlVURShuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk0LVVBQzJfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5NzpVQUMyX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTY6NTk6NTcuMDYyMzUzNzM1WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMjUwNzcxNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91J3ZlIGRlc2NyaWJlZDpcblxuKipDbGVhciBQYXRoIEZvcndhcmQqKlxuXG5SaWdodCwgdGhhdCdzIGl0LiBJdCdzIGp1c3QgYGNfc3JhdGVgIGFuZCBgcF9zcmF0ZWAgZm9yIGJvdGgsIGFzIEkgc3VzcGVjdGVkLiBObyBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyBoZXJlLiBJJ3ZlIGdvdCBldmVyeXRoaW5nIEkgbmVlZCBub3c7IGFsbCB0aGUgcmVsZXZhbnQgZGF0YSBwb2ludHMgYXJlIHByZXNlbnQuIEV4Y2VsbGVudC4gVGltZSB0byBleGVjdXRlIHRoZSBwbGFuLiBJJ2xsIG1ha2UgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYCBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ0MywiT3V0cHV0VG9rZW5zIjoyNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNzowMDowMS4yODc0MzQxNjZaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjcwMDEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZnVuY3Rpb25zLiBUaGUgbGVhayBvY2N1cnJlZCBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVkIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGBrc3RyZHVwYCwgY2F1c2luZyBga2ZyZWVgIHRvIGJlIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9yIGFkdmFuY2VkIHBvaW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2VyLXNwYWNlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIGEgVVNCIGdhZGdldCwgd2hpY2ggaXMgZnVsbHkgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIixcbiAgICBcIlVTQl9DT05GSUdGU1wiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVUFDMVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVUFDMlwiLFxuICAgIFwiU05EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGZ1bmN0aW9ucy4gVGhlIGxlYWsgb2NjdXJyZWQgYmVjYXVzZSBgc3Ryc2VwYCBtb2RpZmllZCB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBga3N0cmR1cGAsIGNhdXNpbmcgYGtmcmVlYCB0byBiZSBjYWxsZWQgb24gYW4gaW52YWxpZCBvciBhZHZhbmNlZCBwb2ludGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlci1zcGFjZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBhIFVTQiBnYWRnZXQsIHdoaWNoIGlzIGZ1bGx5IHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[1] Phase: Succeeded StartedAt: 2026-07-29 17:00:13 +0000 UTC FinishedAt: 2026-07-29 17:00:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 17:00:13 +0000 UTC FinishedAt: 2026-07-29 17:00:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2] Phase: Succeeded StartedAt: 2026-07-29 17:00:13 +0000 UTC FinishedAt: 2026-07-29 21:12:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 17:00:13 +0000 UTC FinishedAt: 2026-07-29 21:12:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 17:00:13 +0000 UTC FinishedAt: 2026-07-29 17:00:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 17:00:13 +0000 UTC FinishedAt: 2026-07-29 17:00:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf2lk9/series-workflowf2lk9-convert-artifact-4005294369/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 17:00:23 +0000 UTC FinishedAt: 2026-07-29 17:32:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 17:00:23 +0000 UTC FinishedAt: 2026-07-29 17:32:26 +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:*293d5bb4-90fc-4945-a039-ba3bdc63c33a,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-workflowf2lk9/series-workflowf2lk9-convert-artifact-4005294369/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": "9fe958c6-a974-43bb-b6ed-c09fa9aed3ca", "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-workflowf2lk9/series-workflowf2lk9-build-action-3476867151/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 17:00:23 +0000 UTC FinishedAt: 2026-07-29 17:32:16 +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:*293d5bb4-90fc-4945-a039-ba3bdc63c33a,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-workflowf2lk9/series-workflowf2lk9-convert-artifact-4005294369/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": "9fe958c6-a974-43bb-b6ed-c09fa9aed3ca", "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-workflowf2lk9/series-workflowf2lk9-build-action-3476867151/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 17:32:26 +0000 UTC FinishedAt: 2026-07-29 17:32:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 17:32:26 +0000 UTC FinishedAt: 2026-07-29 17:32:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 17:32:26 +0000 UTC FinishedAt: 2026-07-29 17:32:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 17:32:26 +0000 UTC FinishedAt: 2026-07-29 17:32:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf2lk9/series-workflowf2lk9-convert-artifact-3691432052/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 17:32:51 +0000 UTC FinishedAt: 2026-07-29 17:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 17:32:51 +0000 UTC FinishedAt: 2026-07-29 17:34:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9fe958c6-a974-43bb-b6ed-c09fa9aed3ca,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-workflowf2lk9/series-workflowf2lk9-build-action-3476867151/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-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 17:35:07 +0000 UTC FinishedAt: 2026-07-29 17:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 17:35:07 +0000 UTC FinishedAt: 2026-07-29 17:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 17:35:07 +0000 UTC FinishedAt: 2026-07-29 17:59:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 17:35:07 +0000 UTC FinishedAt: 2026-07-29 17:59:21 +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:*293d5bb4-90fc-4945-a039-ba3bdc63c33a,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-workflowf2lk9/series-workflowf2lk9-convert-artifact-3691432052/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": "4dd0eeaf-592d-408c-8c53-34fd236eaf76", "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-workflowf2lk9/series-workflowf2lk9-build-action-2420505920/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 17:35:07 +0000 UTC FinishedAt: 2026-07-29 17:59:11 +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:*293d5bb4-90fc-4945-a039-ba3bdc63c33a,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-workflowf2lk9/series-workflowf2lk9-convert-artifact-3691432052/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": "4dd0eeaf-592d-408c-8c53-34fd236eaf76", "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-workflowf2lk9/series-workflowf2lk9-build-action-2420505920/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 17:59:21 +0000 UTC FinishedAt: 2026-07-29 17:59:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 17:59:21 +0000 UTC FinishedAt: 2026-07-29 17:59:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 17:59:21 +0000 UTC FinishedAt: 2026-07-29 18:01:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 17:59:21 +0000 UTC FinishedAt: 2026-07-29 18:01:01 +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:*4dd0eeaf-592d-408c-8c53-34fd236eaf76,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-workflowf2lk9/series-workflowf2lk9-build-action-2420505920/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-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 18:01:11 +0000 UTC FinishedAt: 2026-07-29 21:12:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 18:01:11 +0000 UTC FinishedAt: 2026-07-29 21:12:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"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:*9fe958c6-a974-43bb-b6ed-c09fa9aed3ca,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4dd0eeaf-592d-408c-8c53-34fd236eaf76,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-workflowf2lk9/series-workflowf2lk9-build-action-3476867151/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-workflowf2lk9/series-workflowf2lk9-build-action-2420505920/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 18:01:11 +0000 UTC FinishedAt: 2026-07-29 18:01:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 18:01:11 +0000 UTC FinishedAt: 2026-07-29 18:01:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"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-workflowf2lk9/series-workflowf2lk9-convert-artifact-926068125/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 18:01:11 +0000 UTC FinishedAt: 2026-07-29 18:01:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 18:01:11 +0000 UTC FinishedAt: 2026-07-29 18:01:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 18:01:11 +0000 UTC FinishedAt: 2026-07-29 18:01:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 18:01:21 +0000 UTC FinishedAt: 2026-07-29 21:12:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf2lk9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"625febe5-bbad-4322-8438-5dba7bbb8793","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 18:01:21 +0000 UTC FinishedAt: 2026-07-29 21:12:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9fe958c6-a974-43bb-b6ed-c09fa9aed3ca,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4dd0eeaf-592d-408c-8c53-34fd236eaf76,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-workflowf2lk9/series-workflowf2lk9-build-action-3476867151/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-workflowf2lk9/series-workflowf2lk9-build-action-2420505920/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-workflowf2lk9/series-workflowf2lk9-convert-artifact-926068125/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,}