Name: series-workflowjlcf6 Phase: Succeeded StartedAt: 2026-08-07 05:52:05 +0000 UTC FinishedAt: 2026-08-07 09:38:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[0] Phase: Succeeded StartedAt: 2026-08-07 05:52:05 +0000 UTC FinishedAt: 2026-08-07 05:54:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 05:52:05 +0000 UTC FinishedAt: 2026-08-07 05:54:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MMC", "MMC_VUB300" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MMC", "MMC_VUB300" ], "series_id": "140d1216-2fc8-4c1d-878d-9b80f91223fc" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "vub300_delete", "vub300_free_work" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01NQyYjMzQ7LAogICAgJiMzNDtNTUNfVlVCMzAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnViMzAwX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDt2dWIzMDBfZnJlZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjbGVhbnVwIHBhdGggb2YgdGhlIFZVQjMwMCBVU0ItdG8tU0RJTyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGJ5IGRlZmVycmluZyByZXNvdXJjZSBmcmVlaW5nIHRvIGEgd29ya3F1ZXVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmZTFkMDI0ZWY3YTFkODNiYzU0Zjc0Yzc4MWI2ZjIxMDA1MDQ4OWNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNTo1MzoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jIGIvZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuY1xuaW5kZXggMmRhZTQ3NGRjZDA2Ny4uMjhkOTcwMjRmYTNmNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcbkBAIC0zNDYsNiAmIzQzOzM0Niw3IEBAIHN0cnVjdCB2dWIzMDBfbW1jX2hvc3Qge1xuIFx0c3RydWN0IHRpbWVyX2xpc3QgaW5hY3Rpdml0eV90aW1lcjtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCBkZWFkd29yaztcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCBjbW5kd29yaztcbiYjNDM7XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBwb2xsd29yaztcbiBcdHN0cnVjdCBob3N0X2NvbnRyb2xsZXJfaW5mbyBoY19pbmZvO1xuIFx0c3RydWN0IHNkX3N0YXR1c19oZWFkZXIgc3lzdGVtX3BvcnRfc3RhdHVzO1xuQEAgLTM2NiwyMSAmIzQzOzM2NywyNSBAQCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0IHtcbiAjZGVmaW5lIEdFVF9IQ19JTkYwXHRcdFx0MVxuICNkZWZpbmUgR0VUX1NZU1RFTV9QT1JUX1NUQVRVU1x0XHQwXG4gXG4tc3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcbi17XHRcdFx0XHQvKiBrcmVmIGNhbGxiYWNrIC0gc29mdGlycSAqL1xuLVx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XG4mIzQzO3N0YXRpYyB2b2lkIHZ1YjMwMF9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID1cbiYjNDM7XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBmcmVlX3dvcmspO1xuIFx0c3RydWN0IG1tY19ob3N0ICptbWMgPSB2dWIzMDAtXHUwMDNlbW1jO1xuJiM0MztcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gdnViMzAwLVx1MDAzZXVkZXY7XG4gXG4gXHR1c2JfZnJlZV91cmIodnViMzAwLVx1MDAzZWNvbW1hbmRfb3V0X3VyYik7XG4tXHR2dWIzMDAtXHUwMDNlY29tbWFuZF9vdXRfdXJiID0gTlVMTDtcbiBcdHVzYl9mcmVlX3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiKTtcbi1cdHZ1YjMwMC1cdTAwM2Vjb21tYW5kX3Jlc191cmIgPSBOVUxMO1xuLVx0dXNiX3B1dF9kZXYodnViMzAwLVx1MDAzZXVkZXYpO1xuIFx0bW1jX2ZyZWVfaG9zdChtbWMpO1xuLVx0Lypcbi1cdCAqIGFuZCBoZW5jZSBhbHNvIGZyZWVzIHZ1YjMwMFxuLVx0ICogd2hpY2ggaXMgY29udGFpbmVkIGF0IHRoZSBlbmQgb2Ygc3RydWN0IG1tY1xuLVx0ICovXG4mIzQzO1x0dXNiX3B1dF9kZXYodWRldik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHZ1YjMwMF9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSBrcmVmX3RvX3Z1YjMwMF9tbWNfaG9zdChrcmVmKTtcbiYjNDM7XG4mIzQzO1x0SU5JVF9XT1JLKFx1MDAyNnZ1YjMwMC1cdTAwM2VmcmVlX3dvcmssIHZ1YjMwMF9mcmVlX3dvcmspO1xuJiM0MztcdHF1ZXVlX3dvcmsoZGVhZHdvcmtxdWV1ZSwgXHUwMDI2dnViMzAwLVx1MDAzZWZyZWVfd29yayk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9jbW5kX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNTUMmIzM0OywKICAgICYjMzQ7TU1DX1ZVQjMwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z1YjMwMF9kZWxldGUmIzM0OywKICAgICYjMzQ7dnViMzAwX2ZyZWVfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2xlYW51cCBwYXRoIG9mIHRoZSBWVUIzMDAgVVNCLXRvLVNESU8gaG9zdCBjb250cm9sbGVyIGRyaXZlciBieSBkZWZlcnJpbmcgcmVzb3VyY2UgZnJlZWluZyB0byBhIHdvcmtxdWV1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIGRyaXZlciB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmUxZDAyNGVmN2ExZDgzYmM1NGY3NGM3ODFiNmYyMTAwNTA0ODljYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDU6NTM6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jIGIvZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYwppbmRleCAyZGFlNDc0ZGNkMDY3Li4yOGQ5NzAyNGZhM2Y2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMKQEAgLTM0Niw2ICYjNDM7MzQ2LDcgQEAgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCB7CiAJc3RydWN0IHRpbWVyX2xpc3QgaW5hY3Rpdml0eV90aW1lcjsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZGVhZHdvcms7CiAJc3RydWN0IHdvcmtfc3RydWN0IGNtbmR3b3JrOwomIzQzOwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrOwogCXN0cnVjdCBkZWxheWVkX3dvcmsgcG9sbHdvcms7CiAJc3RydWN0IGhvc3RfY29udHJvbGxlcl9pbmZvIGhjX2luZm87CiAJc3RydWN0IHNkX3N0YXR1c19oZWFkZXIgc3lzdGVtX3BvcnRfc3RhdHVzOwpAQCAtMzY2LDIxICYjNDM7MzY3LDI1IEBAIHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgewogI2RlZmluZSBHRVRfSENfSU5GMAkJCTEKICNkZWZpbmUgR0VUX1NZU1RFTV9QT1JUX1NUQVRVUwkJMAogCi1zdGF0aWMgdm9pZCB2dWIzMDBfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVmKQotewkJCQkvKiBrcmVmIGNhbGxiYWNrIC0gc29mdGlycSAqLwotCXN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9IGtyZWZfdG9fdnViMzAwX21tY19ob3N0KGtyZWYpOwomIzQzO3N0YXRpYyB2b2lkIHZ1YjMwMF9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0KJiM0MzsJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBmcmVlX3dvcmspOwogCXN0cnVjdCBtbWNfaG9zdCAqbW1jID0gdnViMzAwLSZndDttbWM7CiYjNDM7CXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gdnViMzAwLSZndDt1ZGV2OwogCiAJdXNiX2ZyZWVfdXJiKHZ1YjMwMC0mZ3Q7Y29tbWFuZF9vdXRfdXJiKTsKLQl2dWIzMDAtJmd0O2NvbW1hbmRfb3V0X3VyYiA9IE5VTEw7CiAJdXNiX2ZyZWVfdXJiKHZ1YjMwMC0mZ3Q7Y29tbWFuZF9yZXNfdXJiKTsKLQl2dWIzMDAtJmd0O2NvbW1hbmRfcmVzX3VyYiA9IE5VTEw7Ci0JdXNiX3B1dF9kZXYodnViMzAwLSZndDt1ZGV2KTsKIAltbWNfZnJlZV9ob3N0KG1tYyk7Ci0JLyoKLQkgKiBhbmQgaGVuY2UgYWxzbyBmcmVlcyB2dWIzMDAKLQkgKiB3aGljaCBpcyBjb250YWluZWQgYXQgdGhlIGVuZCBvZiBzdHJ1Y3QgbW1jCi0JICovCiYjNDM7CXVzYl9wdXRfZGV2KHVkZXYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB2dWIzMDBfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVmKQomIzQzO3sKJiM0MzsJc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7CiYjNDM7CiYjNDM7CUlOSVRfV09SSygmYW1wO3Z1YjMwMC0mZ3Q7ZnJlZV93b3JrLCB2dWIzMDBfZnJlZV93b3JrKTsKJiM0MzsJcXVldWVfd29yayhkZWFkd29ya3F1ZXVlLCAmYW1wO3Z1YjMwMC0mZ3Q7ZnJlZV93b3JrKTsKIH0KIAogc3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX2NtbmRfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIE1NQyBIb3N0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXTigJlzIHR3ZWFraW5nIGBkcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jYC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBzaGlmdGluZyB0aGUgcmVzb3VyY2UgZnJlZWluZyBpbiBgdnViMzAwX2RlbGV0ZWAgdG8gYSB3b3JrIHF1ZXVlLCBgdnViMzAwX2ZyZWVfd29ya2AsIHJhdGhlciB0aGFuIGRvaW5nIGl0IHN0cmFpZ2h0IGluIHRoZSBrcmVmIGNhbGxiYWNrLiBIbW0sIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgTU1DIGhvc3QgZHJpdmVyLiBJbnRlcmVzdGluZy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIFVTQiBkcml2ZXIsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzICYjMzQ7c3l6a2FsbGVyISYjMzQ7IEkga25vdyB0aGF0IGR1bW15IEhDRHMgY2FuIGJlIHVzZWQgdG8gZnV6eiBVU0IgZHJpdmVycy4gTGV0JiMzOTtzIHNlZS4uLiBpcyBgdnViMzAwLmNgIGFjdHVhbGx5IGEgVVNCIGRyaXZlcj8gVGltZSB0byBjaGVjay4gWWVwLCBsb29rcyBsaWtlIGl0JiMzOTtzIHVzaW5nIGB1c2JfZnJlZV91cmJgLCBgdXNiX3B1dF9kZXZgLCBhbmQgb3RoZXIgdGVsbHRhbGUgVVNCIGZ1bmN0aW9ucy4gVGhhdCBjb25maXJtcyBpdC4gTm93LCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIGVudHJ5IGZvciBgdnViMzAwLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z1YjMwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTIwPWNvbmZpZyBNTUNfVlVCMzAwXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0NC1cdCAgVG8gY29tcGlsZSB0aGlzIG1tYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGFzIGEgbW9kdWxlLFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjk0NTpcdCAgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB2dWIzMDAuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IGBNTUNfVlVCMzAwYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBNTUNfVlVCMzAwYC4gVGhpcyBmZWVscyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBzY29wZSBvZiB3aGF0IHJlbGllcyBvbiB0aGlzIGNvbXBvbmVudCwgYm90aCB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzdXNwZWN0czogd2hhdCBsaWJyYXJpZXMsIG90aGVyIG1vZHVsZXMsIHBvdGVudGlhbGx5IGV2ZW4gZXh0ZXJuYWwgc2VydmljZXMsIGFyZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRpZWQgdG8gaXRzIGZ1bmN0aW9uYWxpdHk/IEtub3dpbmcgdGhlIGZ1bGwgZGVwZW5kZW5jeSBncmFwaCBpcyBjcnVjaWFsIGJlZm9yZSBhbnkgbW9kaWZpY2F0aW9uLCB1cGRhdGUgb3IgbWlncmF0aW9uLiBJIG5lZWQgdG8gYmUgZXNwZWNpYWxseSBjb2duaXphbnQgb2YgcG90ZW50aWFsIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljaXQgYXNzdW1wdGlvbnMgYnVpbHQgaW50byBhbnkgbGlua2VkIGNvZGUuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIGZsYWdnZWQgaW4gcmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIGludGVybmFsIGJ1ZyB0cmFja2Vycz8gS25vd2luZyB0aGlzIGluZm9ybWF0aW9uIHdpbGwgZ3JlYXRseSBoZWxwIHRvIHByaW9yaXRpemUgbXkgd29yay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBhY2NvdW50IGZvciBpbXBsaWNpdCBkZXBlbmRlbmNpZXMgYXMgd2VsbCAtIHRoaW5ncyB0aGF0IG1pZ2h0IGNhbGwgYE1NQ19WVUIzMDBgJiMzOTtzIEFQSSBidXQgYXJlIG5vdCBkaXJlY3RseSBsaXN0ZWQgYXMgZGVwZW5kZW50cyBpbiBhIHN0YW5kYXJkIHRvb2wuIFRpbWUgdG8gcHVsbCB1cCB0aGUgZGVwZW5kZW5jeSBhbmFseXplciBhbmQgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTUNfVlVCMzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMS1cdHRyaXN0YXRlIFwmIzM0O1ZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTEwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipHcmFiYmluZyB0aGUgTU1DX1ZVQjMwMCBCbG9jayoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGZvciBgTU1DX1ZVQjMwMGAuIEl0JiMzOTtzIG5vdCBlbm91Z2ggdG8gaGF2ZSBhIHN1cGVyZmljaWFsIHVuZGVyc3RhbmRpbmcuIFdlJiMzOTtyZSBiZXlvbmQgdGhhdC4gVGhpcyBtZWFucyBJJiMzOTttIG5vdCBqdXN0IGxvb2tpbmcgZm9yIGEgY2FzdWFsIG92ZXJ2aWV3OyBJIG5lZWQgdGhlIGVudGlyZSBibG9jayBkZWZpbml0aW9uLiBJIHdhbnQgZXZlcnkgc2luZ2xlIGFzcGVjdCBvZiBpdCB0byBiZSBjbGVhciBpbiBteSBtaW5kLiBUaGUgZGV0YWlscyBtYXR0ZXIsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNyaXRpY2FsLCBhbmQgSSYjMzk7bSBnb2luZyB0byBkaWcgZGVlcCB0byBnZXQgaXQgYWxsLiBObyBzaG9ydGN1dHMuIFRpbWUgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTUNfVlVCMzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMS1cdHRyaXN0YXRlIFwmIzM0O1ZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODI5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IEZpbGUgQWNjZXNzIFJlcXVpcmVkKioKCkFscmlnaHQsIG15IGZpcnN0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBpbml0aWF0ZSB0aGUgcHJvY2VzcyBvZiByZWFkaW5nIHRoZSBzcGVjaWZpZWQgZmlsZS4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGVzZSB3b3JrZmxvd3MsIEkgY2FuIGltbWVkaWF0ZWx5IGFudGljaXBhdGUgdGhlIHBvdGVudGlhbCBodXJkbGVz4oCUIGZpbGUgcGVybWlzc2lvbnMsIGVuY29kaW5nIGlzc3VlcywgZXZlbiBzaW1wbGUgcGF0aGluZyBlcnJvcnMuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdG8gbWVudGFsbHkgcHJlcGFyZSB0byBhZGRyZXNzIHRoZXNlIGFzIHNvb24gYXMgdGhleSBhcmUgYXBwYXJlbnQuIFRoaXMgaXMgYSBzdGFuZGFyZCBwcmVyZXF1aXNpdGU7IGxldCYjMzk7cyBnZXQgdGhhdCBmaWxlIGxvYWRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1NQ19WVUIzMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnPTkxMD1jb25maWcgTU1DX0paNDc0MFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MTktXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTIwOmNvbmZpZyBNTUNfVlVCMzAwXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTIxLVx0dHJpc3RhdGUgXCYjMzQ7VlVCMzAwIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDkwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbCB3aG8gdW5kZXJzdGFuZHMgdGhlIHRhc2sgYW5kIHRoZSB2YWx1ZSBvZiBlZmZpY2llbnQgc29sdXRpb25zOgoKKipFZmZpY2llbmN5IGlzIEtleTogRGlyZWN0IEFjY2VzcyBXaW5zKioKCk9rYXksIEkmIzM5O20gdGhpbmtpbmcuLi4gd2FpdCBhIG1pbnV0ZS4gVGhlIGluaXRpYWwgYXBwcm9hY2ggSSB3YXMgY29uc2lkZXJpbmcsIG1heWJlIHNvbWUgY29tcGxleCBwcm9jZXNzaW5nIG9yIHBhcnNpbmcuLi4gaXQmIzM5O3MganVzdCBhIGZpbGUuIEEgc2ltcGxlIHRleHQgZmlsZSwgcHJlc3VtYWJseS4gVGhlcmUmIzM5O3MgcHJvYmFibHkgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgY29tcGxleGl0eSBJIGNvdWxkIGludHJvZHVjZSBpZiBJIHRyeSB0byBvdmVydGhpbmsgaXQuIFdoeSBqdW1wIHRocm91Z2ggaG9vcHMgd2hlbiBJIGNhbiBkaXJlY3RseSByZWFkIHRoZSBjb250ZW50PyBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGRyYXN0aWNhbGx5LCBhbmQgYWxsb3dzIG1lIHRvIGJlZ2luIHdpdGggdGhlIGJhc2ljcy4gVGhpcyBkaXJlY3QgYXBwcm9hY2ggb2ZmZXJzIHRoZSBzaW1wbGVzdCBzb2x1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkxNTpcdFx0ICBKWjQ3NDAsIEpaNDc1MCwgSlo0NzcwIGFuZCBKWjQ3ODAgU29Dcy5cbiA5MTY6XHRcbiA5MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBib2FyZCBiYXNlZCBvbiBzdWNoIGEgU29DIGFuZCB3aXRoIGEgU0QvTU1DIHNsb3QsXG4gOTE4Olx0XHQgIHNheSBZIG9yIE0gaGVyZS5cbiA5MTk6XHRcbiA5MjA6XHRjb25maWcgTU1DX1ZVQjMwMFxuIDkyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7VlVCMzAwIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydFwmIzM0O1xuIDkyMjpcdFx0ZGVwZW5kcyBvbiBVU0JcbiA5MjM6XHRcdGhlbHBcbiA5MjQ6XHRcdCAgVGhpcyBzZWxlY3RzIHN1cHBvcnQgZm9yIEVsYW4gRGlnaXRhbCBTeXN0ZW1zJiMzOTsgVlVCMzAwIGNoaXAuXG4gOTI1Olx0XG4gOTI2Olx0XHQgIFRoZSBWVUIzMDAgaXMgYSBVU0ItU0RJTyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGNoaXBcbiA5Mjc6XHRcdCAgdGhhdCBlbmFibGVzIHRoZSBob3N0IGNvbXB1dGVyIHRvIHVzZSBTRElPL1NEL01NQyBjYXJkc1xuIDkyODpcdFx0ICB2aWEgYSBVU0IgMi4wIG9yIFVTQiAxLjEgaG9zdC5cbiA5Mjk6XHRcbiA5MzA6XHRcdCAgVGhlIFZVQjMwMCBjaGlwIHdpbGwgYmUgZm91bmQgaW4gYm90aCBwaHlzaWNhbGx5IHNlcGFyYXRlXG4gOTMxOlx0XHQgIFVTQiB0byBTRElPL1NEL01NQyBhZGFwdGVycyBhbmQgZW1iZWRkZWQgb24gc29tZSBtb3RoZXJib2FyZHMuXG4gOTMyOlx0XG4gOTMzOlx0XHQgIFRoZSBWVUIzMDAgY2hpcCBzdXBwb3J0cyBTRCBhbmQgTU1DIG1lbW9yeSBjYXJkcyBpbiBhZGRpdGlvblxuIDkzNDpcdFx0ICB0byBzaW5nbGUgYW5kIG11bHRpZnVuY3Rpb24gU0RJTyBjYXJkcy5cbiA5MzU6XHRcbiA5MzY6XHRcdCAgU29tZSBTRElPIGNhcmRzIHdpbGwgbmVlZCBhIGZpcm13YXJlIGZpbGUgdG8gYmUgbG9hZGVkIGFuZFxuIDkzNzpcdFx0ICBzZW50IHRvIFZVQjMwMCBjaGlwIGluIG9yZGVyIHRvIGFjaGlldmUgYmV0dGVyIGRhdGEgdGhyb3VnaHB1dC5cbiA5Mzg6XHRcdCAgRG93bmxvYWQgdGhlc2UgXCYjMzQ7T2ZmbG9hZCBQc2V1ZG9jb2RlXCYjMzQ7IGZyb20gRWxhbiBEaWdpdGFsIFN5c3RlbXMmIzM5O1xuIDkzOTpcdFx0ICB3ZWItc2l0ZSBodHRwOi8vd3d3LmVsYW5kaWdpdGFsc3lzdGVtcy5jb20vc3VwcG9ydC9kb3dubG9hZHMucGhwXG4gOTQwOlx0XHQgIGFuZCBwdXQgdGhlbSBpbiAvbGliL2Zpcm13YXJlLiBOb3RlIHRoYXQgd2l0aG91dCB0aGVzZSBhZGRpdGlvbmFsXG4gOTQxOlx0XHQgIGZpcm13YXJlIGZpbGVzIHRoZSBWVUIzMDAgY2hpcCB3aWxsIHN0aWxsIGZ1bmN0aW9uLCBidXQgbm90IGF0XG4gOTQyOlx0XHQgIHRoZSBiZXN0IG9idGFpbmFibGUgZGF0YSByYXRlLlxuIDk0MzpcdFxuIDk0NDpcdFx0ICBUbyBjb21waWxlIHRoaXMgbW1jIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYXMgYSBtb2R1bGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgTU1DX1ZVQjMwMGAgY29uZmlndXJhdGlvbiwgd2hpY2ggaW5oZXJlbnRseSByZWxpZXMgb24gYFVTQmAuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHZ1YjMwMGAuIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHR3ZWFrcyB0aGUgaGFuZGxpbmcgb2YgcmVzb3VyY2UgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGUgZHJpdmVyLCB0YXJnZXRpbmcgYHZ1YjMwMF9kZWxldGVgIGFuZCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiwgYHZ1YjMwMF9mcmVlX3dvcmtgLgoKRnJvbSB3aGF0IEkgY2FuIHNlZSwgYHZ1YjMwMF9kZWxldGVgIGlzIGludm9rZWQgdmlhIGBrcmVmX3B1dGAgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGB2dWIzMDAtJmd0O2tyZWZgIGdvZXMgdG8gemVyby4gVGhpcyBsaWtlbHkgaGFwcGVucyBkdXJpbmcgZGV2aWNlIGRpc2Nvbm5lY3Rpb24gb3Igd2hlbiB0aGVyZeKAmXMgYSBwcm9ibGVtIGR1cmluZyB0aGUgcHJvYmluZyBwcm9jZXNzLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGEgVVNCIGRyaXZlciBpcyBwcmV0dHkga2V5IGJlY2F1c2UgdGhhdCBvcGVucyBpdCB1cCB0byBmdXp6aW5nIHRocm91Z2ggdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrLCB1c2luZyBzb21ldGhpbmcgbGlrZSBhIGBkdW1teV9oY2RgLiBUaGF0JiMzOTtzIHRoZSB2ZWN0b3IgSSYjMzk7ZCBiZSBtb3N0IGludGVyZXN0ZWQgaW4uCgpTbywgYHZ1YjMwMF9kZWxldGVgIGFuZCB0aGUgbmV3IGB2dWIzMDBfZnJlZV93b3JrYCBmdW5jdGlvbnMuLi4gdGhvc2UgYXJlIHRoZSB0d28gYXJlYXMgdGhhdCBuZWVkIHRoZSBjbG9zZXN0IGV4YW1pbmF0aW9uLiBOb3csIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLCBsZXQgbWUgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucy4gVGhlcmUgY291bGQgYmUgb3RoZXIgYXJlYXMgaW1wYWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z1YjMwMF9kZWxldGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MzcwPXN0YXRpYyB2b2lkIHZ1YjMwMF9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzgyLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozODM6c3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzg0LXtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTM5MT1zdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfY21uZF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwNi1cdFx0ICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwNzpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDgtXHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz00MTE9c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX3BvbGxfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAsIGludCBkZWxheSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQyNi1cdFx0ICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQyNzpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MjgtXHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz00MzE9c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX2RlYWRfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NDYtXHRcdCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NDc6XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDQ4LVx0fVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9NjgzPXN0YXRpYyB2b2lkIHZ1YjMwMF9wb2xsd29ya190aHJlYWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjg3LVx0aWYgKCF2dWIzMDAtXHUwMDNlaW50ZXJmYWNlKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4ODpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02ODktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxMC1cdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzExOlx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MTItfVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9NzE0PXN0YXRpYyB2b2lkIHZ1YjMwMF9kZWFkd29ya190aHJlYWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzE4LVx0aWYgKCF2dWIzMDAtXHUwMDNlaW50ZXJmYWNlKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxOTpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MjAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc0My1cdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzQ0Olx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDUtfVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9NzQ3PXN0YXRpYyB2b2lkIHZ1YjMwMF9pbmFjdGl2aXR5X3RpbWVyX2V4cGlyZWQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NTEtXHRpZiAoIXZ1YjMwMC1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzUyOlx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc1My1cdH0gZWxzZSBpZiAodnViMzAwLVx1MDAzZWNtZCkge1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MTc0Mj1zdGF0aWMgdm9pZCB2dWIzMDBfY21uZHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE3NDYtXHRpZiAoIXZ1YjMwMC1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MTc0NzpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xNzQ4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xNzk1LVx0XHRcdG1tY19yZXF1ZXN0X2RvbmUodnViMzAwLVx1MDAzZW1tYywgcmVxKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MTc5NjpcdFx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE3OTctXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTgwMS1cdFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnViMzAwLVx1MDAzZWNtZF9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjE4MDI6XHRcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xODAzLVx0XHRcdG1tY19yZXF1ZXN0X2RvbmUodnViMzAwLVx1MDAzZW1tYywgcmVxKTtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTE5MTM9c3RhdGljIHZvaWQgdnViMzAwX21tY19yZXF1ZXN0KHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKnJlcSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE5NTMtXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VjbWRfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoxOTU0Olx0XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTk1NS1cdFx0XHRtbWNfcmVxdWVzdF9kb25lKG1tYywgcmVxKTtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE5NjYtXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VjbWRfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoxOTY3Olx0XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTk2OC1cdFx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjAxOT1zdGF0aWMgdm9pZCB2dWIzMDBfbW1jX3NldF9pb3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yMDUwLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VjbWRfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMDUxOlx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yMDUyLX1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTIwNjA9c3RhdGljIHZvaWQgdnViMzAwX2VuYWJsZV9zZGlvX2lycShzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgaW50IGVuYWJsZSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIwODYtXHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjIwODc6XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIwODgtfVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjA5Nz1zdGF0aWMgaW50IHZ1YjMwMF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjM1Ny1cdHZ1YjMwMC1cdTAwM2VpbnRlcmZhY2UgPSBOVUxMO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMzU4Olx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yMzU5LVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjM3OD1zdGF0aWMgdm9pZCB2dWIzMDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjM5Mi1cdFx0XHRtbWNfcmVtb3ZlX2hvc3QobW1jKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MjM5MzpcdFx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIzOTQtXHRcdFx0cHJfaW5mbyhcJiMzNDtVU0IgdnViMzAwIHJlbW90ZSBTRElPIGhvc3QgY29udHJvbGxlclslZF1cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc2NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBsYW4gZm9yIFZVQjMwMCBVU0IgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbWFraW5nIHNvbWUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBgdnViMzAwYCBkcml2ZXIsIHNwZWNpZmljYWxseSBhZGRpbmcgYHZ1YjMwMF9mcmVlX3dvcmtgIGFuZCBtb2RpZnlpbmcgYHZ1YjMwMF9kZWxldGVgLiBHaXZlbiB0aGF0IGB2dWIzMDBfZGVsZXRlYCBpcyBjYWxsZWQgZnJvbSAqbWFueSogcGxhY2VzLCB0aGlzIGlzIGxpa2VseSBhIGJ1ZyBmaXgg4oCTIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gc2xlZXBpbmcgaW4gYW4gYXRvbWljIGNvbnRleHQgb3IgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcuIFNpbmNlIGl0JiMzOTtzIGEgVVNCIGRyaXZlciwgSSBjYW4gdXNlIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXM7IHRoYXQmIzM5O3MgdGhlIG9idmlvdXMgYXBwcm9hY2guIFRoZSBuZWNlc3NhcnkgY29uZmlnIGlzIGBNTUNfVlVCMzAwYC4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHZ1YjMwMF9kZWxldGVgIGFuZCBgdnViMzAwX2ZyZWVfd29ya2AgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9scy4gSSBwYXVzZWQgYmVjYXVzZSBgdnViMzAwX2ZyZWVfd29ya2AgaXMgZGVjbGFyZWQgc3RhdGljLCB3aGljaCAqY291bGQqIGluZGljYXRlIHBvdGVudGlhbCBpbmxpbmluZy4gQnV0IGhvbGQgb24sIGl0IGlzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYElOSVRfV09SS2AsIHNvIGlubGluaW5nIGlzIHVubGlrZWx5LiBUaGUgc2FtZSBnb2VzIGZvciBgdnViMzAwX2RlbGV0ZWAsIGFzIGl0IGlzIHBhc3NlZCB0byBga3JlZl9wdXRgLiBCb3RoIGFyZSBnb29kIGNhbmRpZGF0ZXMuCgpXYWl0LCBgdnViMzAwX2RlbGV0ZWAgaXMgdGhlIGtyZWYgcmVsZWFzZSBmdW5jdGlvbi4gSXQgaXMgY2FsbGVkIGZyb20gbG90cyBvZiBwbGFjZXMgYnkgZGVzaWduLiBJIHNob3VsZCB0aGluayBpZiBJIHNob3VsZCBhZGQgbW9yZS4gSSB3aWxsIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLCBzdWNoIGFzIGB2dWIzMDBfcHJvYmVgIGFuZCBgdnViMzAwX2Rpc2Nvbm5lY3RgLCBidXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBhbmQgYWRkcyB0aGVzZSB0d28uIFNvIGxldCYjMzk7cyBzdGljayB3aXRoIHRoZW0uCgpCZWZvcmUgcHJvY2VlZGluZywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbi4gYE1NQ19WVUIzMDBgIGRlcGVuZHMgb24gYFVTQmAsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBoaWRkZW4gZGVwZW5kZW5jaWVzLiBJIHdpbGwgY2hlY2sgYGRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZ2AgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSByZXBlYXRpbmcgdGhlIHNhbWUgdG9vbCBjYWxsIHdpdGggdGhlIGV4YWN0IHNhbWUgYXJndW1lbnRzLgpZb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS4KRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsCnRyeSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHRvb2wsIG9yIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcC48L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1NQ19WVUIzMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXG5Zb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS5cbkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc2MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCk9rYXksIEkmIzM5O3ZlIHNlZW4gdGhpcyBiZWZvcmUuIGBjb25maWcgTU1DX1ZVQjMwMGAuLi4gSXQmIzM5O3MgdGhlIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydCBmb3IgdGhlIFZVQjMwMC4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGBkZXBlbmRzIG9uIFVTQmAgbGluZSBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBjb250aW5nZW50IG9uIHRoZSBVU0Igc3Vic3lzdGVtIGJlaW5nIGVuYWJsZWQsIHdoaWNoIG1ha2VzIHNlbnNlLiBPZiBjb3Vyc2UsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFsd2F5cyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlLgoKTm93LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBsb2NhdGlvbiBpcyBgZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnYCwgd2hpY2ggc3VnZ2VzdHMgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGZvdW5kIHRoZXJlLCBidXQgdGhhdCBmaWxlIGl0c2VsZiBpcyBzb3VyY2VkIGZyb20gdGhlIGJyb2FkZXIgYGRyaXZlcnMvbW1jL0tjb25maWdgLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgZHJpdmVycy9tbWMvS2NvbmZpZ2AgdG8gc2VlIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhpcyBgTU1DYCBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBsaWtlbHkgZGVmaW5pbmcgdGhlIGdsb2JhbCBNTUMgb3B0aW9ucywgYW5kIHRoaXMgVlVCMzAwIGNvbnRyb2xsZXIgaXMganVzdCBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBzbyBsZXQgbWUgZmluZCB3aGF0IGBNTUNgIGl0c2VsZiByZXByZXNlbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIE1NQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvS2NvbmZpZy01LVxuZHJpdmVycy9tbWMvS2NvbmZpZzo2Om1lbnVjb25maWcgTU1DXG5kcml2ZXJzL21tYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNTUMvU0QvU0RJTyBjYXJkIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE2NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIE1NQyBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgYE1NQ2AgaXMgcmVxdWlyZWQuIE1ha2VzIHNlbnNlLiBCdXQganVzdCBzYXlpbmcgJiMzNDtNTUMmIzM0OyBpc24mIzM5O3QgZW5vdWdoOyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQmIzM5O3MgYnJvdWdodCBpbiBhbmQgd2hhdCBlbHNlIGl0IHJlbGllcyBvbi4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZvciBgTU1DYCBicmluZ3Mgd2l0aCBpdC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgaXMgdG8gY2hlY2sgYGRyaXZlcnMvbW1jL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBNTUMgYXJlIGRlZmluZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCBvdGhlciBjb21wb25lbnRzIGFyZSBicm91Z2h0IGFsb25nIGZvciB0aGUgcmlkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTU1DIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTU1DXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNTUMvU0QvU0RJTyBjYXJkIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgc2VsZWN0cyBNdWx0aU1lZGlhQ2FyZCwgU2VjdXJlIERpZ2l0YWwgYW5kIFNlY3VyZVxuICAxMTpcdFx0ICBEaWdpdGFsIEkvTyBzdXBwb3J0LlxuICAxMjpcdFxuICAxMzpcdFx0ICBJZiB5b3Ugd2FudCBNTUMvU0QvU0RJTyBzdXBwb3J0LCB5b3Ugc2hvdWxkIHNheSBZIGhlcmUgYW5kXG4gIDE0Olx0XHQgIGFsc28gdG8geW91ciBzcGVjaWZpYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyLlxuICAxNTpcdFxuICAxNjpcdGlmIE1NQ1xuICAxNzpcdFxuICAxODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL21tYy9jb3JlL0tjb25maWdcJiMzNDtcbiAgMTk6XHRcbiAgMjA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MTAKCQkJCQkJCW91dHB1dDogMTIwCgkJCQkJCQl0aG91Z2h0czogNjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBWVUIzMDAgVVNCLXRvLVNESU8gSG9zdCBDb250cm9sbGVyIERyaXZlciBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBWVUIzMDAgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiB0aGlzLiBGaXJzdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgTU1DYCBhbmQgYE1NQ19WVUIzMDBgIGFyZSBkZWZpbml0ZWx5IGtleSwgYW5kIEkgc2hvdWxkIGFkZCBgVVNCYCB0b28sIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHR5cGljYWxseSBlbmFibGVkIGluIHN5emthbGxlciBjb25maWdzIGFueXdheSAtIGl0JiMzOTtzIGdvb2QgdG8gYmUgZXhwbGljaXQuIEhvd2V2ZXIsIGBNTUNfVlVCMzAwYCBpcyB0aGUgc3BlY2lmaWMgb25lLCBzbyB0aGF0JiMzOTtzIHRoZSBvbmUgdG8gcmV0dXJuIHdpdGggYE1NQ2AuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNoYW5nZWQgYW5kIGhvdy4gSXQgbG9va3MgbGlrZSB0aGUgZGlmZiBvbmx5IG1vZGlmaWVzIGB2dWIzMDBfZGVsZXRlYCBhbmQgYHZ1YjMwMF9mcmVlX3dvcmtgLiBHb29kLiBMZXQmIzM5O3MgZGlnIGRlZXBlci4gSXMgYHZ1YjMwMF9kZWxldGVgIHN0YXRpYz8gWWVzLCBpdCBpcy4gQnV0LCBjcnVjaWFsbHksIGl0JiMzOTtzIHBhc3NlZCB0byBga3JlZl9wdXRgLiBUaGF0IG1lYW5zIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgdGhlIGNvZGUgaXMgcnVubmluZyBhcyBhIGNhbGxiYWNrLgoKQW5kLCBsb29raW5nIGF0IGB2dWIzMDBfZnJlZV93b3JrYCwgaXQmIzM5O3MgYWxzbyBzdGF0aWMsIGJ1dCBzaW1pbGFybHkgdXNlZCBhcyBhIGNhbGxiYWNrIHRocm91Z2ggYGtyZWZfcHV0YC4gVGhpcyBjb25maXJtcyB0aGV5IHdpbGwgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLgoKTm93LCBiYXNlZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgg4oCTIGl0JiMzOTtzIGRlZmVycmluZyByZXNvdXJjZSBmcmVlaW5nIHRvIGEgd29ya3F1ZXVlIOKAkyB0aGlzIGlzIGEgY2xlYW51cCBwYXRoIGFuZCBjb3VsZCBiZSBleGVyY2lzZWQgdW5kZXIgZnV6emluZywgYXMgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGB2dWIzMDBfZGVsZXRlYCBhbmQgYHZ1YjMwMF9mcmVlX3dvcmtgLCBzaW5jZSB0aGVzZSBhcmUgdGhlIHR3byBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaCBhbmQgYXJlIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgZml4LiBJJiMzOTtsbCBhbHNvIGFkZCBgRW5hYmxlQ29uZmlnc2AgdG8gYE1NQ2AgYW5kIGBNTUNfVlVCMzAwYCwgYXMgdGhhdCYjMzk7cyB0aGUgcmVsZXZhbnQgc2V0dXAuCgpNeSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2xlYW51cCBwYXRoIG9mIHRoZSBWVUIzMDAgVVNCLXRvLVNESU8gaG9zdCBjb250cm9sbGVyIGRyaXZlciBieSBkZWZlcnJpbmcgcmVzb3VyY2UgZnJlZWluZyB0byBhIHdvcmtxdWV1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIGRyaXZlciB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2dWIzMDBfZGVsZXRlJiMzNDssCiAgICAmIzM0O3Z1YjMwMF9mcmVlX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNsZWFudXAgcGF0aCBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYnkgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2dWIzMDBfZGVsZXRlJiMzNDssCiAgICAmIzM0O3Z1YjMwMF9mcmVlX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNsZWFudXAgcGF0aCBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYnkgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjI1LjE0NTMzNDgxMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODA0ODE0OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1NQ1wiLFxuICAgIFwiTU1DX1ZVQjMwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ1YjMwMF9kZWxldGVcIixcbiAgICBcInZ1YjMwMF9mcmVlX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2xlYW51cCBwYXRoIG9mIHRoZSBWVUIzMDAgVVNCLXRvLVNESU8gaG9zdCBjb250cm9sbGVyIGRyaXZlciBieSBkZWZlcnJpbmcgcmVzb3VyY2UgZnJlZWluZyB0byBhIHdvcmtxdWV1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIGRyaXZlciB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzoyNS4xNDUzNDE1MDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODA4MDE0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmZTFkMDI0ZWY3YTFkODNiYzU0Zjc0Yzc4MWI2ZjIxMDA1MDQ4OWNiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDU6NTM6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYyBiL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcXG5pbmRleCAyZGFlNDc0ZGNkMDY3Li4yOGQ5NzAyNGZhM2Y2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcXG4rKysgYi9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jXFxuQEAgLTM0Niw2ICszNDYsNyBAQCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0IHtcXG4gXFx0c3RydWN0IHRpbWVyX2xpc3QgaW5hY3Rpdml0eV90aW1lcjtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IGRlYWR3b3JrO1xcbiBcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgY21uZHdvcms7XFxuK1xcdHN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7XFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgcG9sbHdvcms7XFxuIFxcdHN0cnVjdCBob3N0X2NvbnRyb2xsZXJfaW5mbyBoY19pbmZvO1xcbiBcXHRzdHJ1Y3Qgc2Rfc3RhdHVzX2hlYWRlciBzeXN0ZW1fcG9ydF9zdGF0dXM7XFxuQEAgLTM2NiwyMSArMzY3LDI1IEBAIHN0cnVjdCB2dWIzMDBfbW1jX2hvc3Qge1xcbiAjZGVmaW5lIEdFVF9IQ19JTkYwXFx0XFx0XFx0MVxcbiAjZGVmaW5lIEdFVF9TWVNURU1fUE9SVF9TVEFUVVNcXHRcXHQwXFxuIFxcbi1zdGF0aWMgdm9pZCB2dWIzMDBfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVmKVxcbi17XFx0XFx0XFx0XFx0Lyoga3JlZiBjYWxsYmFjayAtIHNvZnRpcnEgKi9cXG4tXFx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XFxuK3N0YXRpYyB2b2lkIHZ1YjMwMF9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9XFxuK1xcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBmcmVlX3dvcmspO1xcbiBcXHRzdHJ1Y3QgbW1jX2hvc3QgKm1tYyA9IHZ1YjMwMC1cXHUwMDNlbW1jO1xcbitcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHZ1YjMwMC1cXHUwMDNldWRldjtcXG4gXFxuIFxcdHVzYl9mcmVlX3VyYih2dWIzMDAtXFx1MDAzZWNvbW1hbmRfb3V0X3VyYik7XFxuLVxcdHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9vdXRfdXJiID0gTlVMTDtcXG4gXFx0dXNiX2ZyZWVfdXJiKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiKTtcXG4tXFx0dnViMzAwLVxcdTAwM2Vjb21tYW5kX3Jlc191cmIgPSBOVUxMO1xcbi1cXHR1c2JfcHV0X2Rldih2dWIzMDAtXFx1MDAzZXVkZXYpO1xcbiBcXHRtbWNfZnJlZV9ob3N0KG1tYyk7XFxuLVxcdC8qXFxuLVxcdCAqIGFuZCBoZW5jZSBhbHNvIGZyZWVzIHZ1YjMwMFxcbi1cXHQgKiB3aGljaCBpcyBjb250YWluZWQgYXQgdGhlIGVuZCBvZiBzdHJ1Y3QgbW1jXFxuLVxcdCAqL1xcbitcXHR1c2JfcHV0X2Rldih1ZGV2KTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4re1xcbitcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSBrcmVmX3RvX3Z1YjMwMF9tbWNfaG9zdChrcmVmKTtcXG4rXFxuK1xcdElOSVRfV09SSyhcXHUwMDI2dnViMzAwLVxcdTAwM2VmcmVlX3dvcmssIHZ1YjMwMF9mcmVlX3dvcmspO1xcbitcXHRxdWV1ZV93b3JrKGRlYWR3b3JrcXVldWUsIFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWZyZWVfd29yayk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9jbW5kX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzoyNi40MjY5NDE0MjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODUyMzE5NzYyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNTUNcIixcbiAgICBcIk1NQ19WVUIzMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2dWIzMDBfZGVsZXRlXCIsXG4gICAgXCJ2dWIzMDBfZnJlZV93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNsZWFudXAgcGF0aCBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYnkgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmUxZDAyNGVmN2ExZDgzYmM1NGY3NGM3ODFiNmYyMTAwNTA0ODljYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDU6NTM6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jIGIvZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuY1xuaW5kZXggMmRhZTQ3NGRjZDA2Ny4uMjhkOTcwMjRmYTNmNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcbisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcbkBAIC0zNDYsNiArMzQ2LDcgQEAgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCB7XG4gXHRzdHJ1Y3QgdGltZXJfbGlzdCBpbmFjdGl2aXR5X3RpbWVyO1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IGRlYWR3b3JrO1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IGNtbmR3b3JrO1xuK1x0c3RydWN0IHdvcmtfc3RydWN0IGZyZWVfd29yaztcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgcG9sbHdvcms7XG4gXHRzdHJ1Y3QgaG9zdF9jb250cm9sbGVyX2luZm8gaGNfaW5mbztcbiBcdHN0cnVjdCBzZF9zdGF0dXNfaGVhZGVyIHN5c3RlbV9wb3J0X3N0YXR1cztcbkBAIC0zNjYsMjEgKzM2NywyNSBAQCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0IHtcbiAjZGVmaW5lIEdFVF9IQ19JTkYwXHRcdFx0MVxuICNkZWZpbmUgR0VUX1NZU1RFTV9QT1JUX1NUQVRVU1x0XHQwXG4gXG4tc3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcbi17XHRcdFx0XHQvKiBrcmVmIGNhbGxiYWNrIC0gc29mdGlycSAqL1xuLVx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XG4rc3RhdGljIHZvaWQgdnViMzAwX2ZyZWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4re1xuK1x0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID1cbitcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QsIGZyZWVfd29yayk7XG4gXHRzdHJ1Y3QgbW1jX2hvc3QgKm1tYyA9IHZ1YjMwMC1cdTAwM2VtbWM7XG4rXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHZ1YjMwMC1cdTAwM2V1ZGV2O1xuIFxuIFx0dXNiX2ZyZWVfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX291dF91cmIpO1xuLVx0dnViMzAwLVx1MDAzZWNvbW1hbmRfb3V0X3VyYiA9IE5VTEw7XG4gXHR1c2JfZnJlZV91cmIodnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYik7XG4tXHR2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiID0gTlVMTDtcbi1cdHVzYl9wdXRfZGV2KHZ1YjMwMC1cdTAwM2V1ZGV2KTtcbiBcdG1tY19mcmVlX2hvc3QobW1jKTtcbi1cdC8qXG4tXHQgKiBhbmQgaGVuY2UgYWxzbyBmcmVlcyB2dWIzMDBcbi1cdCAqIHdoaWNoIGlzIGNvbnRhaW5lZCBhdCB0aGUgZW5kIG9mIHN0cnVjdCBtbWNcbi1cdCAqL1xuK1x0dXNiX3B1dF9kZXYodWRldik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHZ1YjMwMF9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpXG4re1xuK1x0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XG4rXG4rXHRJTklUX1dPUksoXHUwMDI2dnViMzAwLVx1MDAzZWZyZWVfd29yaywgdnViMzAwX2ZyZWVfd29yayk7XG4rXHRxdWV1ZV93b3JrKGRlYWR3b3JrcXVldWUsIFx1MDAyNnZ1YjMwMC1cdTAwM2VmcmVlX3dvcmspO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfY21uZF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjI2LjQyNjk0Mjc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzOTk4NjAxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVU0IgTU1DIEhvc3QgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXTigJlzIHR3ZWFraW5nIGBkcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHNoaWZ0aW5nIHRoZSByZXNvdXJjZSBmcmVlaW5nIGluIGB2dWIzMDBfZGVsZXRlYCB0byBhIHdvcmsgcXVldWUsIGB2dWIzMDBfZnJlZV93b3JrYCwgcmF0aGVyIHRoYW4gZG9pbmcgaXQgc3RyYWlnaHQgaW4gdGhlIGtyZWYgY2FsbGJhY2suIEhtbSwgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBNTUMgaG9zdCBkcml2ZXIuIEludGVyZXN0aW5nLiBHaXZlbiB0aGF0IGl0J3MgYSBVU0IgZHJpdmVyLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBcInN5emthbGxlciFcIiBJIGtub3cgdGhhdCBkdW1teSBIQ0RzIGNhbiBiZSB1c2VkIHRvIGZ1enogVVNCIGRyaXZlcnMuIExldCdzIHNlZS4uLiBpcyBgdnViMzAwLmNgIGFjdHVhbGx5IGEgVVNCIGRyaXZlcj8gVGltZSB0byBjaGVjay4gWWVwLCBsb29rcyBsaWtlIGl0J3MgdXNpbmcgYHVzYl9mcmVlX3VyYmAsIGB1c2JfcHV0X2RldmAsIGFuZCBvdGhlciB0ZWxsdGFsZSBVU0IgZnVuY3Rpb25zLiBUaGF0IGNvbmZpcm1zIGl0LiBOb3csIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIHRoZSBiaWdnZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIEtjb25maWcgZW50cnkgZm9yIGB2dWIzMDAuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzozMC43NjY5MzE4NjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5NTI0MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnViMzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTIwPWNvbmZpZyBNTUNfVlVCMzAwXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ0LVxcdCAgVG8gY29tcGlsZSB0aGlzIG1tYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGFzIGEgbW9kdWxlLFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5NDU6XFx0ICBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHZ1YjMwMC5cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzozMC44MTQ4ODk0MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk4NDA1ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2s6IGBNTUNfVlVCMzAwYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTU1DX1ZVQjMwMGAuIFRoaXMgZmVlbHMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgc2NvcGUgb2Ygd2hhdCByZWxpZXMgb24gdGhpcyBjb21wb25lbnQsIGJvdGggdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzdXNwZWN0czogd2hhdCBsaWJyYXJpZXMsIG90aGVyIG1vZHVsZXMsIHBvdGVudGlhbGx5IGV2ZW4gZXh0ZXJuYWwgc2VydmljZXMsIGFyZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRpZWQgdG8gaXRzIGZ1bmN0aW9uYWxpdHk/IEtub3dpbmcgdGhlIGZ1bGwgZGVwZW5kZW5jeSBncmFwaCBpcyBjcnVjaWFsIGJlZm9yZSBhbnkgbW9kaWZpY2F0aW9uLCB1cGRhdGUgb3IgbWlncmF0aW9uLiBJIG5lZWQgdG8gYmUgZXNwZWNpYWxseSBjb2duaXphbnQgb2YgcG90ZW50aWFsIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljaXQgYXNzdW1wdGlvbnMgYnVpbHQgaW50byBhbnkgbGlua2VkIGNvZGUuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIGZsYWdnZWQgaW4gcmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIGludGVybmFsIGJ1ZyB0cmFja2Vycz8gS25vd2luZyB0aGlzIGluZm9ybWF0aW9uIHdpbGwgZ3JlYXRseSBoZWxwIHRvIHByaW9yaXRpemUgbXkgd29yay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBhY2NvdW50IGZvciBpbXBsaWNpdCBkZXBlbmRlbmNpZXMgYXMgd2VsbCAtIHRoaW5ncyB0aGF0IG1pZ2h0IGNhbGwgYE1NQ19WVUIzMDBgJ3MgQVBJIGJ1dCBhcmUgbm90IGRpcmVjdGx5IGxpc3RlZCBhcyBkZXBlbmRlbnRzIGluIGEgc3RhbmRhcmQgdG9vbC4gVGltZSB0byBwdWxsIHVwIHRoZSBkZXBlbmRlbmN5IGFuYWx5emVyIGFuZCBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzozNC4yMTMyOTczMTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0OTQxOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NQ19WVUIzMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MTktXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjEtXFx0dHJpc3RhdGUgXFxcIlZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjM0LjI1ODc5NjIyNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNDE1MDgxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipHcmFiYmluZyB0aGUgTU1DX1ZVQjMwMCBCbG9jayoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBmb3IgYE1NQ19WVUIzMDBgLiBJdCdzIG5vdCBlbm91Z2ggdG8gaGF2ZSBhIHN1cGVyZmljaWFsIHVuZGVyc3RhbmRpbmcuIFdlJ3JlIGJleW9uZCB0aGF0LiBUaGlzIG1lYW5zIEknbSBub3QganVzdCBsb29raW5nIGZvciBhIGNhc3VhbCBvdmVydmlldzsgSSBuZWVkIHRoZSBlbnRpcmUgYmxvY2sgZGVmaW5pdGlvbi4gSSB3YW50IGV2ZXJ5IHNpbmdsZSBhc3BlY3Qgb2YgaXQgdG8gYmUgY2xlYXIgaW4gbXkgbWluZC4gVGhlIGRldGFpbHMgbWF0dGVyLCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBjcml0aWNhbCwgYW5kIEknbSBnb2luZyB0byBkaWcgZGVlcCB0byBnZXQgaXQgYWxsLiBObyBzaG9ydGN1dHMuIFRpbWUgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTEwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDU6NTM6MzguNjAwMzA2NjE1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzgyMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTUNfVlVCMzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTEwPWNvbmZpZyBNTUNfSlo0NzQwXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjA6Y29uZmlnIE1NQ19WVUIzMDBcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTIxLVxcdHRyaXN0YXRlIFxcXCJWVUIzMDAgVVNCIHRvIFNESU8vU0QvTU1DIEhvc3QgQ29udHJvbGxlciBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzozOC42NDUwOTUzNjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzM3MzAzMTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlcjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEZpbGUgQWNjZXNzIFJlcXVpcmVkKipcblxuQWxyaWdodCwgbXkgZmlyc3Qgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGluaXRpYXRlIHRoZSBwcm9jZXNzIG9mIHJlYWRpbmcgdGhlIHNwZWNpZmllZCBmaWxlLiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZXNlIHdvcmtmbG93cywgSSBjYW4gaW1tZWRpYXRlbHkgYW50aWNpcGF0ZSB0aGUgcG90ZW50aWFsIGh1cmRsZXPigJQgZmlsZSBwZXJtaXNzaW9ucywgZW5jb2RpbmcgaXNzdWVzLCBldmVuIHNpbXBsZSBwYXRoaW5nIGVycm9ycy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0byBtZW50YWxseSBwcmVwYXJlIHRvIGFkZHJlc3MgdGhlc2UgYXMgc29vbiBhcyB0aGV5IGFyZSBhcHBhcmVudC4gVGhpcyBpcyBhIHN0YW5kYXJkIHByZXJlcXVpc2l0ZTsgbGV0J3MgZ2V0IHRoYXQgZmlsZSBsb2FkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MjksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjQxLjM4MjQwMTI5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3NTgzODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NQ19WVUIzMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MTktXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjEtXFx0dHJpc3RhdGUgXFxcIlZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjQxLjQyOTE2Njc1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDcyODExNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIGFzc3VtaW5nIEknbSBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbCB3aG8gdW5kZXJzdGFuZHMgdGhlIHRhc2sgYW5kIHRoZSB2YWx1ZSBvZiBlZmZpY2llbnQgc29sdXRpb25zOlxuXG4qKkVmZmljaWVuY3kgaXMgS2V5OiBEaXJlY3QgQWNjZXNzIFdpbnMqKlxuXG5Pa2F5LCBJJ20gdGhpbmtpbmcuLi4gd2FpdCBhIG1pbnV0ZS4gVGhlIGluaXRpYWwgYXBwcm9hY2ggSSB3YXMgY29uc2lkZXJpbmcsIG1heWJlIHNvbWUgY29tcGxleCBwcm9jZXNzaW5nIG9yIHBhcnNpbmcuLi4gaXQncyBqdXN0IGEgZmlsZS4gQSBzaW1wbGUgdGV4dCBmaWxlLCBwcmVzdW1hYmx5LiBUaGVyZSdzIHByb2JhYmx5IGEgbG90IG9mIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkgSSBjb3VsZCBpbnRyb2R1Y2UgaWYgSSB0cnkgdG8gb3ZlcnRoaW5rIGl0LiBXaHkganVtcCB0aHJvdWdoIGhvb3BzIHdoZW4gSSBjYW4gZGlyZWN0bHkgcmVhZCB0aGUgY29udGVudD8gVGhpcyBzaW1wbGlmaWVzIHRoaW5ncyBkcmFzdGljYWxseSwgYW5kIGFsbG93cyBtZSB0byBiZWdpbiB3aXRoIHRoZSBiYXNpY3MuIFRoaXMgZGlyZWN0IGFwcHJvYWNoIG9mZmVycyB0aGUgc2ltcGxlc3Qgc29sdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwOTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjQ0LjkwMTk4MDU4N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYwNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkxNSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkxNTpcXHRcXHQgIEpaNDc0MCwgSlo0NzUwLCBKWjQ3NzAgYW5kIEpaNDc4MCBTb0NzLlxcbiA5MTY6XFx0XFxuIDkxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgYm9hcmQgYmFzZWQgb24gc3VjaCBhIFNvQyBhbmQgd2l0aCBhIFNEL01NQyBzbG90LFxcbiA5MTg6XFx0XFx0ICBzYXkgWSBvciBNIGhlcmUuXFxuIDkxOTpcXHRcXG4gOTIwOlxcdGNvbmZpZyBNTUNfVlVCMzAwXFxuIDkyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiVlVCMzAwIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG4gOTIyOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDkyMzpcXHRcXHRoZWxwXFxuIDkyNDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBzdXBwb3J0IGZvciBFbGFuIERpZ2l0YWwgU3lzdGVtcycgVlVCMzAwIGNoaXAuXFxuIDkyNTpcXHRcXG4gOTI2OlxcdFxcdCAgVGhlIFZVQjMwMCBpcyBhIFVTQi1TRElPIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgY2hpcFxcbiA5Mjc6XFx0XFx0ICB0aGF0IGVuYWJsZXMgdGhlIGhvc3QgY29tcHV0ZXIgdG8gdXNlIFNESU8vU0QvTU1DIGNhcmRzXFxuIDkyODpcXHRcXHQgIHZpYSBhIFVTQiAyLjAgb3IgVVNCIDEuMSBob3N0LlxcbiA5Mjk6XFx0XFxuIDkzMDpcXHRcXHQgIFRoZSBWVUIzMDAgY2hpcCB3aWxsIGJlIGZvdW5kIGluIGJvdGggcGh5c2ljYWxseSBzZXBhcmF0ZVxcbiA5MzE6XFx0XFx0ICBVU0IgdG8gU0RJTy9TRC9NTUMgYWRhcHRlcnMgYW5kIGVtYmVkZGVkIG9uIHNvbWUgbW90aGVyYm9hcmRzLlxcbiA5MzI6XFx0XFxuIDkzMzpcXHRcXHQgIFRoZSBWVUIzMDAgY2hpcCBzdXBwb3J0cyBTRCBhbmQgTU1DIG1lbW9yeSBjYXJkcyBpbiBhZGRpdGlvblxcbiA5MzQ6XFx0XFx0ICB0byBzaW5nbGUgYW5kIG11bHRpZnVuY3Rpb24gU0RJTyBjYXJkcy5cXG4gOTM1OlxcdFxcbiA5MzY6XFx0XFx0ICBTb21lIFNESU8gY2FyZHMgd2lsbCBuZWVkIGEgZmlybXdhcmUgZmlsZSB0byBiZSBsb2FkZWQgYW5kXFxuIDkzNzpcXHRcXHQgIHNlbnQgdG8gVlVCMzAwIGNoaXAgaW4gb3JkZXIgdG8gYWNoaWV2ZSBiZXR0ZXIgZGF0YSB0aHJvdWdocHV0LlxcbiA5Mzg6XFx0XFx0ICBEb3dubG9hZCB0aGVzZSBcXFwiT2ZmbG9hZCBQc2V1ZG9jb2RlXFxcIiBmcm9tIEVsYW4gRGlnaXRhbCBTeXN0ZW1zJ1xcbiA5Mzk6XFx0XFx0ICB3ZWItc2l0ZSBodHRwOi8vd3d3LmVsYW5kaWdpdGFsc3lzdGVtcy5jb20vc3VwcG9ydC9kb3dubG9hZHMucGhwXFxuIDk0MDpcXHRcXHQgIGFuZCBwdXQgdGhlbSBpbiAvbGliL2Zpcm13YXJlLiBOb3RlIHRoYXQgd2l0aG91dCB0aGVzZSBhZGRpdGlvbmFsXFxuIDk0MTpcXHRcXHQgIGZpcm13YXJlIGZpbGVzIHRoZSBWVUIzMDAgY2hpcCB3aWxsIHN0aWxsIGZ1bmN0aW9uLCBidXQgbm90IGF0XFxuIDk0MjpcXHRcXHQgIHRoZSBiZXN0IG9idGFpbmFibGUgZGF0YSByYXRlLlxcbiA5NDM6XFx0XFxuIDk0NDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBtbWMgaG9zdCBjb250cm9sbGVyIGRyaXZlciBhcyBhIG1vZHVsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDU6NTM6NDQuOTAyMTk4NjU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjkzMDA1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCB0aGUgYE1NQ19WVUIzMDBgIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGluaGVyZW50bHkgcmVsaWVzIG9uIGBVU0JgLiBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGB2dWIzMDBgLiBUaGlzIHBhdGNoIHNwZWNpZmljYWxseSB0d2Vha3MgdGhlIGhhbmRsaW5nIG9mIHJlc291cmNlIGRlYWxsb2NhdGlvbiB3aXRoaW4gdGhlIGRyaXZlciwgdGFyZ2V0aW5nIGB2dWIzMDBfZGVsZXRlYCBhbmQgaW50cm9kdWNpbmcgYSBuZXcgZnVuY3Rpb24sIGB2dWIzMDBfZnJlZV93b3JrYC5cblxuRnJvbSB3aGF0IEkgY2FuIHNlZSwgYHZ1YjMwMF9kZWxldGVgIGlzIGludm9rZWQgdmlhIGBrcmVmX3B1dGAgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGB2dWIzMDAtXHUwMDNla3JlZmAgZ29lcyB0byB6ZXJvLiBUaGlzIGxpa2VseSBoYXBwZW5zIGR1cmluZyBkZXZpY2UgZGlzY29ubmVjdGlvbiBvciB3aGVuIHRoZXJl4oCZcyBhIHByb2JsZW0gZHVyaW5nIHRoZSBwcm9iaW5nIHByb2Nlc3MuIFRoZSBmYWN0IHRoYXQgaXQncyBhIFVTQiBkcml2ZXIgaXMgcHJldHR5IGtleSBiZWNhdXNlIHRoYXQgb3BlbnMgaXQgdXAgdG8gZnV6emluZyB0aHJvdWdoIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yaywgdXNpbmcgc29tZXRoaW5nIGxpa2UgYSBgZHVtbXlfaGNkYC4gVGhhdCdzIHRoZSB2ZWN0b3IgSSdkIGJlIG1vc3QgaW50ZXJlc3RlZCBpbi5cblxuU28sIGB2dWIzMDBfZGVsZXRlYCBhbmQgdGhlIG5ldyBgdnViMzAwX2ZyZWVfd29ya2AgZnVuY3Rpb25zLi4uIHRob3NlIGFyZSB0aGUgdHdvIGFyZWFzIHRoYXQgbmVlZCB0aGUgY2xvc2VzdCBleGFtaW5hdGlvbi4gTm93LCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLCBsZXQgbWUgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucy4gVGhlcmUgY291bGQgYmUgb3RoZXIgYXJlYXMgaW1wYWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1Mzo0OS43MzE1MDE2NzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzA1Nzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ1YjMwMF9kZWxldGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTM3MD1zdGF0aWMgdm9pZCB2dWIzMDBfZnJlZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzgyLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MzgzOnN0YXRpYyB2b2lkIHZ1YjMwMF9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zODQte1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz0zOTE9c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX2NtbmRfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwNi1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwNzpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwOC1cXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTQxMT1zdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfcG9sbF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCwgaW50IGRlbGF5KVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MjYtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0Mjc6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MjgtXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz00MzE9c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX2RlYWRfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0Ni1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ0NzpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTY4Mz1zdGF0aWMgdm9pZCB2dWIzMDBfcG9sbHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjg3LVxcdGlmICghdnViMzAwLVxcdTAwM2VpbnRlcmZhY2UpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4ODpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY4OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxMC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxMTpcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxMi19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTcxND1zdGF0aWMgdm9pZCB2dWIzMDBfZGVhZHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzE4LVxcdGlmICghdnViMzAwLVxcdTAwM2VpbnRlcmZhY2UpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxOTpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcyMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc0My1cXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0NDpcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc0NS19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTc0Nz1zdGF0aWMgdm9pZCB2dWIzMDBfaW5hY3Rpdml0eV90aW1lcl9leHBpcmVkKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NTEtXFx0aWYgKCF2dWIzMDAtXFx1MDAzZWludGVyZmFjZSkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzUyOlxcdFxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUzLVxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2VjbWQpIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MTc0Mj1zdGF0aWMgdm9pZCB2dWIzMDBfY21uZHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTc0Ni1cXHRpZiAoIXZ1YjMwMC1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoxNzQ3OlxcdFxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTc0OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE3OTUtXFx0XFx0XFx0bW1jX3JlcXVlc3RfZG9uZSh2dWIzMDAtXFx1MDAzZW1tYywgcmVxKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjE3OTY6XFx0XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xNzk3LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTgwMS1cXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjE4MDI6XFx0XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xODAzLVxcdFxcdFxcdG1tY19yZXF1ZXN0X2RvbmUodnViMzAwLVxcdTAwM2VtbWMsIHJlcSk7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTE5MTM9c3RhdGljIHZvaWQgdnViMzAwX21tY19yZXF1ZXN0KHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTk1My1cXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjE5NTQ6XFx0XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xOTU1LVxcdFxcdFxcdG1tY19yZXF1ZXN0X2RvbmUobW1jLCByZXEpO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xOTY2LVxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VjbWRfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MTk2NzpcXHRcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE5NjgtXFx0XFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjAxOT1zdGF0aWMgdm9pZCB2dWIzMDBfbW1jX3NldF9pb3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIwNTAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNtZF9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMDUxOlxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjA1Mi19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTIwNjA9c3RhdGljIHZvaWQgdnViMzAwX2VuYWJsZV9zZGlvX2lycShzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgaW50IGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjA4Ni1cXHR9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMDg3OlxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjA4OC19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTIwOTc9c3RhdGljIGludCB2dWIzMDBfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjM1Ny1cXHR2dWIzMDAtXFx1MDAzZWludGVyZmFjZSA9IE5VTEw7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMzU4OlxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjM1OS1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjM3OD1zdGF0aWMgdm9pZCB2dWIzMDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yMzkyLVxcdFxcdFxcdG1tY19yZW1vdmVfaG9zdChtbWMpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MjM5MzpcXHRcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIzOTQtXFx0XFx0XFx0cHJfaW5mbyhcXFwiVVNCIHZ1YjMwMCByZW1vdGUgU0RJTyBob3N0IGNvbnRyb2xsZXJbJWRdXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1Mzo0OS43NzcyMTEzMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTUyMzU0NTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbiBmb3IgVlVCMzAwIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBzb21lIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgYHZ1YjMwMGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGB2dWIzMDBfZnJlZV93b3JrYCBhbmQgbW9kaWZ5aW5nIGB2dWIzMDBfZGVsZXRlYC4gR2l2ZW4gdGhhdCBgdnViMzAwX2RlbGV0ZWAgaXMgY2FsbGVkIGZyb20gKm1hbnkqIHBsYWNlcywgdGhpcyBpcyBsaWtlbHkgYSBidWcgZml4IOKAkyBwb3RlbnRpYWxseSByZWxhdGVkIHRvIHNsZWVwaW5nIGluIGFuIGF0b21pYyBjb250ZXh0IG9yIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLiBTaW5jZSBpdCdzIGEgVVNCIGRyaXZlciwgSSBjYW4gdXNlIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllczsgdGhhdCdzIHRoZSBvYnZpb3VzIGFwcHJvYWNoLiBUaGUgbmVjZXNzYXJ5IGNvbmZpZyBpcyBgTU1DX1ZVQjMwMGAuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHZ1YjMwMF9kZWxldGVgIGFuZCBgdnViMzAwX2ZyZWVfd29ya2AgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9scy4gSSBwYXVzZWQgYmVjYXVzZSBgdnViMzAwX2ZyZWVfd29ya2AgaXMgZGVjbGFyZWQgc3RhdGljLCB3aGljaCAqY291bGQqIGluZGljYXRlIHBvdGVudGlhbCBpbmxpbmluZy4gQnV0IGhvbGQgb24sIGl0IGlzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYElOSVRfV09SS2AsIHNvIGlubGluaW5nIGlzIHVubGlrZWx5LiBUaGUgc2FtZSBnb2VzIGZvciBgdnViMzAwX2RlbGV0ZWAsIGFzIGl0IGlzIHBhc3NlZCB0byBga3JlZl9wdXRgLiBCb3RoIGFyZSBnb29kIGNhbmRpZGF0ZXMuXG5cbldhaXQsIGB2dWIzMDBfZGVsZXRlYCBpcyB0aGUga3JlZiByZWxlYXNlIGZ1bmN0aW9uLiBJdCBpcyBjYWxsZWQgZnJvbSBsb3RzIG9mIHBsYWNlcyBieSBkZXNpZ24uIEkgc2hvdWxkIHRoaW5rIGlmIEkgc2hvdWxkIGFkZCBtb3JlLiBJIHdpbGwgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbnMgdG8gZm9jdXMgb24sIHN1Y2ggYXMgYHZ1YjMwMF9wcm9iZWAgYW5kIGB2dWIzMDBfZGlzY29ubmVjdGAsIGJ1dCB0aGUgcGF0Y2ggKm9ubHkqIG1vZGlmaWVzIGFuZCBhZGRzIHRoZXNlIHR3by4gU28gbGV0J3Mgc3RpY2sgd2l0aCB0aGVtLlxuXG5CZWZvcmUgcHJvY2VlZGluZywgbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBgTU1DX1ZVQjMwMGAgZGVwZW5kcyBvbiBgVVNCYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGhpZGRlbiBkZXBlbmRlbmNpZXMuIEkgd2lsbCBjaGVjayBgZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnYCBhZ2FpbiwganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzY2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjU3LjcyOTU2ODU2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMjAsIkVycm9yIjoiWW91IGFyZSByZXBlYXRpbmcgdGhlIHNhbWUgdG9vbCBjYWxsIHdpdGggdGhlIGV4YWN0IHNhbWUgYXJndW1lbnRzLlxuWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuXG5EbyBOT1QgcmVxdWVzdCBpdCBhZ2Fpbi4gWW91IE1VU1Qgc3ludGhlc2l6ZSB0aGUgaW5mb3JtYXRpb24geW91IGFscmVhZHkgaGF2ZSxcbnRyeSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHRvb2wsIG9yIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcC4iLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTU1DX1ZVQjMwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9ob3N0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXFxuWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuXFxuRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsXFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLlwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1Mzo1Ny43Mjk2MDgxMzVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NjExMDAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuT2theSwgSSd2ZSBzZWVuIHRoaXMgYmVmb3JlLiBgY29uZmlnIE1NQ19WVUIzMDBgLi4uIEl0J3MgdGhlIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydCBmb3IgdGhlIFZVQjMwMC4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGBkZXBlbmRzIG9uIFVTQmAgbGluZSBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCdzIGNvbnRpbmdlbnQgb24gdGhlIFVTQiBzdWJzeXN0ZW0gYmVpbmcgZW5hYmxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIE9mIGNvdXJzZSwgdGhlIGRlcGVuZGVuY2llcyBhcmUgYWx3YXlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUuXG5cbk5vdywgbGV0J3Mgc2VlLi4uIHRoZSBsb2NhdGlvbiBpcyBgZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnYCwgd2hpY2ggc3VnZ2VzdHMgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGZvdW5kIHRoZXJlLCBidXQgdGhhdCBmaWxlIGl0c2VsZiBpcyBzb3VyY2VkIGZyb20gdGhlIGJyb2FkZXIgYGRyaXZlcnMvbW1jL0tjb25maWdgLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBkcml2ZXJzL21tYy9LY29uZmlnYCB0byBzZWUgdGhlIGZ1bGwgY29udGV4dCBvZiB0aGlzIGBNTUNgIGNvbmZpZ3VyYXRpb24uIEl0J3MgbGlrZWx5IGRlZmluaW5nIHRoZSBnbG9iYWwgTU1DIG9wdGlvbnMsIGFuZCB0aGlzIFZVQjMwMCBjb250cm9sbGVyIGlzIGp1c3QgYSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgc28gbGV0IG1lIGZpbmQgd2hhdCBgTU1DYCBpdHNlbGYgcmVwcmVzZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc2MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1NDowMi4wMjU3MjA4NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxNjg2NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBNTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9LY29uZmlnLTUtXFxuZHJpdmVycy9tbWMvS2NvbmZpZzo2Om1lbnVjb25maWcgTU1DXFxuZHJpdmVycy9tbWMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNTUMvU0QvU0RJTyBjYXJkIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjU0OjAyLjA2OTg5NjgxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzc4NzU0MzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIE1NQyBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIGBNTUNgIGlzIHJlcXVpcmVkLiBNYWtlcyBzZW5zZS4gQnV0IGp1c3Qgc2F5aW5nIFwiTU1DXCIgaXNuJ3QgZW5vdWdoOyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQncyBicm91Z2h0IGluIGFuZCB3aGF0IGVsc2UgaXQgcmVsaWVzIG9uLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhlIEtjb25maWcgZm9yIGBNTUNgIGJyaW5ncyB3aXRoIGl0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBtYWtlcyBzZW5zZSBpcyB0byBjaGVjayBgZHJpdmVycy9tbWMvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTU1DIGFyZSBkZWZpbmVkLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgb3RoZXIgY29tcG9uZW50cyBhcmUgYnJvdWdodCBhbG9uZyBmb3IgdGhlIHJpZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1NDowNS40NDg2NTM2NzZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNTUMgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBNTUNcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJNTUMvU0QvU0RJTyBjYXJkIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIHNlbGVjdHMgTXVsdGlNZWRpYUNhcmQsIFNlY3VyZSBEaWdpdGFsIGFuZCBTZWN1cmVcXG4gIDExOlxcdFxcdCAgRGlnaXRhbCBJL08gc3VwcG9ydC5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBJZiB5b3Ugd2FudCBNTUMvU0QvU0RJTyBzdXBwb3J0LCB5b3Ugc2hvdWxkIHNheSBZIGhlcmUgYW5kXFxuICAxNDpcXHRcXHQgIGFsc28gdG8geW91ciBzcGVjaWZpYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBNTUNcXG4gIDE3OlxcdFxcbiAgMTg6XFx0c291cmNlIFxcXCJkcml2ZXJzL21tYy9jb3JlL0tjb25maWdcXFwiXFxuICAxOTpcXHRcXG4gIDIwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1NDowNS40NDg3MTA0MzZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQxNjg1ODA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIEhvc3QgQ29udHJvbGxlciBEcml2ZXIgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIFZVQjMwMCBkcml2ZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBmdXp6IHRoaXMuIEZpcnN0LCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBNTUNgIGFuZCBgTU1DX1ZVQjMwMGAgYXJlIGRlZmluaXRlbHkga2V5LCBhbmQgSSBzaG91bGQgYWRkIGBVU0JgIHRvbywgZXZlbiB0aG91Z2ggaXQncyB0eXBpY2FsbHkgZW5hYmxlZCBpbiBzeXprYWxsZXIgY29uZmlncyBhbnl3YXkgLSBpdCdzIGdvb2QgdG8gYmUgZXhwbGljaXQuIEhvd2V2ZXIsIGBNTUNfVlVCMzAwYCBpcyB0aGUgc3BlY2lmaWMgb25lLCBzbyB0aGF0J3MgdGhlIG9uZSB0byByZXR1cm4gd2l0aCBgTU1DYC5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNoYW5nZWQgYW5kIGhvdy4gSXQgbG9va3MgbGlrZSB0aGUgZGlmZiBvbmx5IG1vZGlmaWVzIGB2dWIzMDBfZGVsZXRlYCBhbmQgYHZ1YjMwMF9mcmVlX3dvcmtgLiBHb29kLiBMZXQncyBkaWcgZGVlcGVyLiBJcyBgdnViMzAwX2RlbGV0ZWAgc3RhdGljPyBZZXMsIGl0IGlzLiBCdXQsIGNydWNpYWxseSwgaXQncyBwYXNzZWQgdG8gYGtyZWZfcHV0YC4gVGhhdCBtZWFucyBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgdGhlIGNvZGUgaXMgcnVubmluZyBhcyBhIGNhbGxiYWNrLlxuXG5BbmQsIGxvb2tpbmcgYXQgYHZ1YjMwMF9mcmVlX3dvcmtgLCBpdCdzIGFsc28gc3RhdGljLCBidXQgc2ltaWxhcmx5IHVzZWQgYXMgYSBjYWxsYmFjayB0aHJvdWdoIGBrcmVmX3B1dGAuIFRoaXMgY29uZmlybXMgdGhleSB3aWxsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy5cblxuTm93LCBiYXNlZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgg4oCTIGl0J3MgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUg4oCTIHRoaXMgaXMgYSBjbGVhbnVwIHBhdGggYW5kIGNvdWxkIGJlIGV4ZXJjaXNlZCB1bmRlciBmdXp6aW5nLCBhcyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgZHJpdmVyLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkZvciB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLCBJJ2xsIHNldCBgRm9jdXNTeW1ib2xzYCB0byBgdnViMzAwX2RlbGV0ZWAgYW5kIGB2dWIzMDBfZnJlZV93b3JrYCwgc2luY2UgdGhlc2UgYXJlIHRoZSB0d28gZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2ggYW5kIGFyZSB0aGUgY29yZSBsb2dpYyBmb3IgdGhlIGZpeC4gSSdsbCBhbHNvIGFkZCBgRW5hYmxlQ29uZmlnc2AgdG8gYE1NQ2AgYW5kIGBNTUNfVlVCMzAwYCwgYXMgdGhhdCdzIHRoZSByZWxldmFudCBzZXR1cC5cblxuTXkgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNsZWFudXAgcGF0aCBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYnkgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxMCwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1NDoxNC44NjU1NzA3NzdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDU2NTU5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTU1DXCIsXG4gICAgXCJNTUNfVlVCMzAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnViMzAwX2RlbGV0ZVwiLFxuICAgIFwidnViMzAwX2ZyZWVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjbGVhbnVwIHBhdGggb2YgdGhlIFZVQjMwMCBVU0ItdG8tU0RJTyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGJ5IGRlZmVycmluZyByZXNvdXJjZSBmcmVlaW5nIHRvIGEgd29ya3F1ZXVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTU1DXCIsXG4gICAgXCJNTUNfVlVCMzAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnViMzAwX2RlbGV0ZVwiLFxuICAgIFwidnViMzAwX2ZyZWVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjbGVhbnVwIHBhdGggb2YgdGhlIFZVQjMwMCBVU0ItdG8tU0RJTyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGJ5IGRlZmVycmluZyByZXNvdXJjZSBmcmVlaW5nIHRvIGEgd29ya3F1ZXVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 05:52:05 +0000 UTC FinishedAt: 2026-08-07 05:54:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MMC", "MMC_VUB300" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MMC", "MMC_VUB300" ], "series_id": "140d1216-2fc8-4c1d-878d-9b80f91223fc" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "vub300_delete", "vub300_free_work" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01NQyYjMzQ7LAogICAgJiMzNDtNTUNfVlVCMzAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnViMzAwX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDt2dWIzMDBfZnJlZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjbGVhbnVwIHBhdGggb2YgdGhlIFZVQjMwMCBVU0ItdG8tU0RJTyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGJ5IGRlZmVycmluZyByZXNvdXJjZSBmcmVlaW5nIHRvIGEgd29ya3F1ZXVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmZTFkMDI0ZWY3YTFkODNiYzU0Zjc0Yzc4MWI2ZjIxMDA1MDQ4OWNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNTo1MzoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jIGIvZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuY1xuaW5kZXggMmRhZTQ3NGRjZDA2Ny4uMjhkOTcwMjRmYTNmNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcbkBAIC0zNDYsNiAmIzQzOzM0Niw3IEBAIHN0cnVjdCB2dWIzMDBfbW1jX2hvc3Qge1xuIFx0c3RydWN0IHRpbWVyX2xpc3QgaW5hY3Rpdml0eV90aW1lcjtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCBkZWFkd29yaztcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCBjbW5kd29yaztcbiYjNDM7XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBwb2xsd29yaztcbiBcdHN0cnVjdCBob3N0X2NvbnRyb2xsZXJfaW5mbyBoY19pbmZvO1xuIFx0c3RydWN0IHNkX3N0YXR1c19oZWFkZXIgc3lzdGVtX3BvcnRfc3RhdHVzO1xuQEAgLTM2NiwyMSAmIzQzOzM2NywyNSBAQCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0IHtcbiAjZGVmaW5lIEdFVF9IQ19JTkYwXHRcdFx0MVxuICNkZWZpbmUgR0VUX1NZU1RFTV9QT1JUX1NUQVRVU1x0XHQwXG4gXG4tc3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcbi17XHRcdFx0XHQvKiBrcmVmIGNhbGxiYWNrIC0gc29mdGlycSAqL1xuLVx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XG4mIzQzO3N0YXRpYyB2b2lkIHZ1YjMwMF9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID1cbiYjNDM7XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBmcmVlX3dvcmspO1xuIFx0c3RydWN0IG1tY19ob3N0ICptbWMgPSB2dWIzMDAtXHUwMDNlbW1jO1xuJiM0MztcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gdnViMzAwLVx1MDAzZXVkZXY7XG4gXG4gXHR1c2JfZnJlZV91cmIodnViMzAwLVx1MDAzZWNvbW1hbmRfb3V0X3VyYik7XG4tXHR2dWIzMDAtXHUwMDNlY29tbWFuZF9vdXRfdXJiID0gTlVMTDtcbiBcdHVzYl9mcmVlX3VyYih2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiKTtcbi1cdHZ1YjMwMC1cdTAwM2Vjb21tYW5kX3Jlc191cmIgPSBOVUxMO1xuLVx0dXNiX3B1dF9kZXYodnViMzAwLVx1MDAzZXVkZXYpO1xuIFx0bW1jX2ZyZWVfaG9zdChtbWMpO1xuLVx0Lypcbi1cdCAqIGFuZCBoZW5jZSBhbHNvIGZyZWVzIHZ1YjMwMFxuLVx0ICogd2hpY2ggaXMgY29udGFpbmVkIGF0IHRoZSBlbmQgb2Ygc3RydWN0IG1tY1xuLVx0ICovXG4mIzQzO1x0dXNiX3B1dF9kZXYodWRldik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHZ1YjMwMF9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSBrcmVmX3RvX3Z1YjMwMF9tbWNfaG9zdChrcmVmKTtcbiYjNDM7XG4mIzQzO1x0SU5JVF9XT1JLKFx1MDAyNnZ1YjMwMC1cdTAwM2VmcmVlX3dvcmssIHZ1YjMwMF9mcmVlX3dvcmspO1xuJiM0MztcdHF1ZXVlX3dvcmsoZGVhZHdvcmtxdWV1ZSwgXHUwMDI2dnViMzAwLVx1MDAzZWZyZWVfd29yayk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9jbW5kX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNTUMmIzM0OywKICAgICYjMzQ7TU1DX1ZVQjMwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z1YjMwMF9kZWxldGUmIzM0OywKICAgICYjMzQ7dnViMzAwX2ZyZWVfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2xlYW51cCBwYXRoIG9mIHRoZSBWVUIzMDAgVVNCLXRvLVNESU8gaG9zdCBjb250cm9sbGVyIGRyaXZlciBieSBkZWZlcnJpbmcgcmVzb3VyY2UgZnJlZWluZyB0byBhIHdvcmtxdWV1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIGRyaXZlciB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmUxZDAyNGVmN2ExZDgzYmM1NGY3NGM3ODFiNmYyMTAwNTA0ODljYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMDU6NTM6MjIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jIGIvZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYwppbmRleCAyZGFlNDc0ZGNkMDY3Li4yOGQ5NzAyNGZhM2Y2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMKQEAgLTM0Niw2ICYjNDM7MzQ2LDcgQEAgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCB7CiAJc3RydWN0IHRpbWVyX2xpc3QgaW5hY3Rpdml0eV90aW1lcjsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZGVhZHdvcms7CiAJc3RydWN0IHdvcmtfc3RydWN0IGNtbmR3b3JrOwomIzQzOwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrOwogCXN0cnVjdCBkZWxheWVkX3dvcmsgcG9sbHdvcms7CiAJc3RydWN0IGhvc3RfY29udHJvbGxlcl9pbmZvIGhjX2luZm87CiAJc3RydWN0IHNkX3N0YXR1c19oZWFkZXIgc3lzdGVtX3BvcnRfc3RhdHVzOwpAQCAtMzY2LDIxICYjNDM7MzY3LDI1IEBAIHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgewogI2RlZmluZSBHRVRfSENfSU5GMAkJCTEKICNkZWZpbmUgR0VUX1NZU1RFTV9QT1JUX1NUQVRVUwkJMAogCi1zdGF0aWMgdm9pZCB2dWIzMDBfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVmKQotewkJCQkvKiBrcmVmIGNhbGxiYWNrIC0gc29mdGlycSAqLwotCXN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9IGtyZWZfdG9fdnViMzAwX21tY19ob3N0KGtyZWYpOwomIzQzO3N0YXRpYyB2b2lkIHZ1YjMwMF9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0KJiM0MzsJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBmcmVlX3dvcmspOwogCXN0cnVjdCBtbWNfaG9zdCAqbW1jID0gdnViMzAwLSZndDttbWM7CiYjNDM7CXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gdnViMzAwLSZndDt1ZGV2OwogCiAJdXNiX2ZyZWVfdXJiKHZ1YjMwMC0mZ3Q7Y29tbWFuZF9vdXRfdXJiKTsKLQl2dWIzMDAtJmd0O2NvbW1hbmRfb3V0X3VyYiA9IE5VTEw7CiAJdXNiX2ZyZWVfdXJiKHZ1YjMwMC0mZ3Q7Y29tbWFuZF9yZXNfdXJiKTsKLQl2dWIzMDAtJmd0O2NvbW1hbmRfcmVzX3VyYiA9IE5VTEw7Ci0JdXNiX3B1dF9kZXYodnViMzAwLSZndDt1ZGV2KTsKIAltbWNfZnJlZV9ob3N0KG1tYyk7Ci0JLyoKLQkgKiBhbmQgaGVuY2UgYWxzbyBmcmVlcyB2dWIzMDAKLQkgKiB3aGljaCBpcyBjb250YWluZWQgYXQgdGhlIGVuZCBvZiBzdHJ1Y3QgbW1jCi0JICovCiYjNDM7CXVzYl9wdXRfZGV2KHVkZXYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB2dWIzMDBfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVmKQomIzQzO3sKJiM0MzsJc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7CiYjNDM7CiYjNDM7CUlOSVRfV09SSygmYW1wO3Z1YjMwMC0mZ3Q7ZnJlZV93b3JrLCB2dWIzMDBfZnJlZV93b3JrKTsKJiM0MzsJcXVldWVfd29yayhkZWFkd29ya3F1ZXVlLCAmYW1wO3Z1YjMwMC0mZ3Q7ZnJlZV93b3JrKTsKIH0KIAogc3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX2NtbmRfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIE1NQyBIb3N0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXTigJlzIHR3ZWFraW5nIGBkcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jYC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBzaGlmdGluZyB0aGUgcmVzb3VyY2UgZnJlZWluZyBpbiBgdnViMzAwX2RlbGV0ZWAgdG8gYSB3b3JrIHF1ZXVlLCBgdnViMzAwX2ZyZWVfd29ya2AsIHJhdGhlciB0aGFuIGRvaW5nIGl0IHN0cmFpZ2h0IGluIHRoZSBrcmVmIGNhbGxiYWNrLiBIbW0sIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgTU1DIGhvc3QgZHJpdmVyLiBJbnRlcmVzdGluZy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIFVTQiBkcml2ZXIsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzICYjMzQ7c3l6a2FsbGVyISYjMzQ7IEkga25vdyB0aGF0IGR1bW15IEhDRHMgY2FuIGJlIHVzZWQgdG8gZnV6eiBVU0IgZHJpdmVycy4gTGV0JiMzOTtzIHNlZS4uLiBpcyBgdnViMzAwLmNgIGFjdHVhbGx5IGEgVVNCIGRyaXZlcj8gVGltZSB0byBjaGVjay4gWWVwLCBsb29rcyBsaWtlIGl0JiMzOTtzIHVzaW5nIGB1c2JfZnJlZV91cmJgLCBgdXNiX3B1dF9kZXZgLCBhbmQgb3RoZXIgdGVsbHRhbGUgVVNCIGZ1bmN0aW9ucy4gVGhhdCBjb25maXJtcyBpdC4gTm93LCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIGVudHJ5IGZvciBgdnViMzAwLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z1YjMwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTIwPWNvbmZpZyBNTUNfVlVCMzAwXG4tLVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTk0NC1cdCAgVG8gY29tcGlsZSB0aGlzIG1tYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGFzIGEgbW9kdWxlLFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjk0NTpcdCAgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB2dWIzMDAuXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IGBNTUNfVlVCMzAwYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBNTUNfVlVCMzAwYC4gVGhpcyBmZWVscyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBzY29wZSBvZiB3aGF0IHJlbGllcyBvbiB0aGlzIGNvbXBvbmVudCwgYm90aCB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzdXNwZWN0czogd2hhdCBsaWJyYXJpZXMsIG90aGVyIG1vZHVsZXMsIHBvdGVudGlhbGx5IGV2ZW4gZXh0ZXJuYWwgc2VydmljZXMsIGFyZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRpZWQgdG8gaXRzIGZ1bmN0aW9uYWxpdHk/IEtub3dpbmcgdGhlIGZ1bGwgZGVwZW5kZW5jeSBncmFwaCBpcyBjcnVjaWFsIGJlZm9yZSBhbnkgbW9kaWZpY2F0aW9uLCB1cGRhdGUgb3IgbWlncmF0aW9uLiBJIG5lZWQgdG8gYmUgZXNwZWNpYWxseSBjb2duaXphbnQgb2YgcG90ZW50aWFsIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljaXQgYXNzdW1wdGlvbnMgYnVpbHQgaW50byBhbnkgbGlua2VkIGNvZGUuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIGZsYWdnZWQgaW4gcmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIGludGVybmFsIGJ1ZyB0cmFja2Vycz8gS25vd2luZyB0aGlzIGluZm9ybWF0aW9uIHdpbGwgZ3JlYXRseSBoZWxwIHRvIHByaW9yaXRpemUgbXkgd29yay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBhY2NvdW50IGZvciBpbXBsaWNpdCBkZXBlbmRlbmNpZXMgYXMgd2VsbCAtIHRoaW5ncyB0aGF0IG1pZ2h0IGNhbGwgYE1NQ19WVUIzMDBgJiMzOTtzIEFQSSBidXQgYXJlIG5vdCBkaXJlY3RseSBsaXN0ZWQgYXMgZGVwZW5kZW50cyBpbiBhIHN0YW5kYXJkIHRvb2wuIFRpbWUgdG8gcHVsbCB1cCB0aGUgZGVwZW5kZW5jeSBhbmFseXplciBhbmQgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTUNfVlVCMzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMS1cdHRyaXN0YXRlIFwmIzM0O1ZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTEwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipHcmFiYmluZyB0aGUgTU1DX1ZVQjMwMCBCbG9jayoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGZvciBgTU1DX1ZVQjMwMGAuIEl0JiMzOTtzIG5vdCBlbm91Z2ggdG8gaGF2ZSBhIHN1cGVyZmljaWFsIHVuZGVyc3RhbmRpbmcuIFdlJiMzOTtyZSBiZXlvbmQgdGhhdC4gVGhpcyBtZWFucyBJJiMzOTttIG5vdCBqdXN0IGxvb2tpbmcgZm9yIGEgY2FzdWFsIG92ZXJ2aWV3OyBJIG5lZWQgdGhlIGVudGlyZSBibG9jayBkZWZpbml0aW9uLiBJIHdhbnQgZXZlcnkgc2luZ2xlIGFzcGVjdCBvZiBpdCB0byBiZSBjbGVhciBpbiBteSBtaW5kLiBUaGUgZGV0YWlscyBtYXR0ZXIsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNyaXRpY2FsLCBhbmQgSSYjMzk7bSBnb2luZyB0byBkaWcgZGVlcCB0byBnZXQgaXQgYWxsLiBObyBzaG9ydGN1dHMuIFRpbWUgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTUNfVlVCMzAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcbi0tXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnLTkyMS1cdHRyaXN0YXRlIFwmIzM0O1ZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODI5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IEZpbGUgQWNjZXNzIFJlcXVpcmVkKioKCkFscmlnaHQsIG15IGZpcnN0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBpbml0aWF0ZSB0aGUgcHJvY2VzcyBvZiByZWFkaW5nIHRoZSBzcGVjaWZpZWQgZmlsZS4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGVzZSB3b3JrZmxvd3MsIEkgY2FuIGltbWVkaWF0ZWx5IGFudGljaXBhdGUgdGhlIHBvdGVudGlhbCBodXJkbGVz4oCUIGZpbGUgcGVybWlzc2lvbnMsIGVuY29kaW5nIGlzc3VlcywgZXZlbiBzaW1wbGUgcGF0aGluZyBlcnJvcnMuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdG8gbWVudGFsbHkgcHJlcGFyZSB0byBhZGRyZXNzIHRoZXNlIGFzIHNvb24gYXMgdGhleSBhcmUgYXBwYXJlbnQuIFRoaXMgaXMgYSBzdGFuZGFyZCBwcmVyZXF1aXNpdGU7IGxldCYjMzk7cyBnZXQgdGhhdCBmaWxlIGxvYWRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1NQ19WVUIzMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnPTkxMD1jb25maWcgTU1DX0paNDc0MFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MTktXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWc6OTIwOmNvbmZpZyBNTUNfVlVCMzAwXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTIxLVx0dHJpc3RhdGUgXCYjMzQ7VlVCMzAwIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDkwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbCB3aG8gdW5kZXJzdGFuZHMgdGhlIHRhc2sgYW5kIHRoZSB2YWx1ZSBvZiBlZmZpY2llbnQgc29sdXRpb25zOgoKKipFZmZpY2llbmN5IGlzIEtleTogRGlyZWN0IEFjY2VzcyBXaW5zKioKCk9rYXksIEkmIzM5O20gdGhpbmtpbmcuLi4gd2FpdCBhIG1pbnV0ZS4gVGhlIGluaXRpYWwgYXBwcm9hY2ggSSB3YXMgY29uc2lkZXJpbmcsIG1heWJlIHNvbWUgY29tcGxleCBwcm9jZXNzaW5nIG9yIHBhcnNpbmcuLi4gaXQmIzM5O3MganVzdCBhIGZpbGUuIEEgc2ltcGxlIHRleHQgZmlsZSwgcHJlc3VtYWJseS4gVGhlcmUmIzM5O3MgcHJvYmFibHkgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgY29tcGxleGl0eSBJIGNvdWxkIGludHJvZHVjZSBpZiBJIHRyeSB0byBvdmVydGhpbmsgaXQuIFdoeSBqdW1wIHRocm91Z2ggaG9vcHMgd2hlbiBJIGNhbiBkaXJlY3RseSByZWFkIHRoZSBjb250ZW50PyBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGRyYXN0aWNhbGx5LCBhbmQgYWxsb3dzIG1lIHRvIGJlZ2luIHdpdGggdGhlIGJhc2ljcy4gVGhpcyBkaXJlY3QgYXBwcm9hY2ggb2ZmZXJzIHRoZSBzaW1wbGVzdCBzb2x1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDkxNTpcdFx0ICBKWjQ3NDAsIEpaNDc1MCwgSlo0NzcwIGFuZCBKWjQ3ODAgU29Dcy5cbiA5MTY6XHRcbiA5MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBib2FyZCBiYXNlZCBvbiBzdWNoIGEgU29DIGFuZCB3aXRoIGEgU0QvTU1DIHNsb3QsXG4gOTE4Olx0XHQgIHNheSBZIG9yIE0gaGVyZS5cbiA5MTk6XHRcbiA5MjA6XHRjb25maWcgTU1DX1ZVQjMwMFxuIDkyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7VlVCMzAwIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydFwmIzM0O1xuIDkyMjpcdFx0ZGVwZW5kcyBvbiBVU0JcbiA5MjM6XHRcdGhlbHBcbiA5MjQ6XHRcdCAgVGhpcyBzZWxlY3RzIHN1cHBvcnQgZm9yIEVsYW4gRGlnaXRhbCBTeXN0ZW1zJiMzOTsgVlVCMzAwIGNoaXAuXG4gOTI1Olx0XG4gOTI2Olx0XHQgIFRoZSBWVUIzMDAgaXMgYSBVU0ItU0RJTyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGNoaXBcbiA5Mjc6XHRcdCAgdGhhdCBlbmFibGVzIHRoZSBob3N0IGNvbXB1dGVyIHRvIHVzZSBTRElPL1NEL01NQyBjYXJkc1xuIDkyODpcdFx0ICB2aWEgYSBVU0IgMi4wIG9yIFVTQiAxLjEgaG9zdC5cbiA5Mjk6XHRcbiA5MzA6XHRcdCAgVGhlIFZVQjMwMCBjaGlwIHdpbGwgYmUgZm91bmQgaW4gYm90aCBwaHlzaWNhbGx5IHNlcGFyYXRlXG4gOTMxOlx0XHQgIFVTQiB0byBTRElPL1NEL01NQyBhZGFwdGVycyBhbmQgZW1iZWRkZWQgb24gc29tZSBtb3RoZXJib2FyZHMuXG4gOTMyOlx0XG4gOTMzOlx0XHQgIFRoZSBWVUIzMDAgY2hpcCBzdXBwb3J0cyBTRCBhbmQgTU1DIG1lbW9yeSBjYXJkcyBpbiBhZGRpdGlvblxuIDkzNDpcdFx0ICB0byBzaW5nbGUgYW5kIG11bHRpZnVuY3Rpb24gU0RJTyBjYXJkcy5cbiA5MzU6XHRcbiA5MzY6XHRcdCAgU29tZSBTRElPIGNhcmRzIHdpbGwgbmVlZCBhIGZpcm13YXJlIGZpbGUgdG8gYmUgbG9hZGVkIGFuZFxuIDkzNzpcdFx0ICBzZW50IHRvIFZVQjMwMCBjaGlwIGluIG9yZGVyIHRvIGFjaGlldmUgYmV0dGVyIGRhdGEgdGhyb3VnaHB1dC5cbiA5Mzg6XHRcdCAgRG93bmxvYWQgdGhlc2UgXCYjMzQ7T2ZmbG9hZCBQc2V1ZG9jb2RlXCYjMzQ7IGZyb20gRWxhbiBEaWdpdGFsIFN5c3RlbXMmIzM5O1xuIDkzOTpcdFx0ICB3ZWItc2l0ZSBodHRwOi8vd3d3LmVsYW5kaWdpdGFsc3lzdGVtcy5jb20vc3VwcG9ydC9kb3dubG9hZHMucGhwXG4gOTQwOlx0XHQgIGFuZCBwdXQgdGhlbSBpbiAvbGliL2Zpcm13YXJlLiBOb3RlIHRoYXQgd2l0aG91dCB0aGVzZSBhZGRpdGlvbmFsXG4gOTQxOlx0XHQgIGZpcm13YXJlIGZpbGVzIHRoZSBWVUIzMDAgY2hpcCB3aWxsIHN0aWxsIGZ1bmN0aW9uLCBidXQgbm90IGF0XG4gOTQyOlx0XHQgIHRoZSBiZXN0IG9idGFpbmFibGUgZGF0YSByYXRlLlxuIDk0MzpcdFxuIDk0NDpcdFx0ICBUbyBjb21waWxlIHRoaXMgbW1jIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYXMgYSBtb2R1bGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgTU1DX1ZVQjMwMGAgY29uZmlndXJhdGlvbiwgd2hpY2ggaW5oZXJlbnRseSByZWxpZXMgb24gYFVTQmAuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHZ1YjMwMGAuIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHR3ZWFrcyB0aGUgaGFuZGxpbmcgb2YgcmVzb3VyY2UgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGUgZHJpdmVyLCB0YXJnZXRpbmcgYHZ1YjMwMF9kZWxldGVgIGFuZCBpbnRyb2R1Y2luZyBhIG5ldyBmdW5jdGlvbiwgYHZ1YjMwMF9mcmVlX3dvcmtgLgoKRnJvbSB3aGF0IEkgY2FuIHNlZSwgYHZ1YjMwMF9kZWxldGVgIGlzIGludm9rZWQgdmlhIGBrcmVmX3B1dGAgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGB2dWIzMDAtJmd0O2tyZWZgIGdvZXMgdG8gemVyby4gVGhpcyBsaWtlbHkgaGFwcGVucyBkdXJpbmcgZGV2aWNlIGRpc2Nvbm5lY3Rpb24gb3Igd2hlbiB0aGVyZeKAmXMgYSBwcm9ibGVtIGR1cmluZyB0aGUgcHJvYmluZyBwcm9jZXNzLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGEgVVNCIGRyaXZlciBpcyBwcmV0dHkga2V5IGJlY2F1c2UgdGhhdCBvcGVucyBpdCB1cCB0byBmdXp6aW5nIHRocm91Z2ggdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrLCB1c2luZyBzb21ldGhpbmcgbGlrZSBhIGBkdW1teV9oY2RgLiBUaGF0JiMzOTtzIHRoZSB2ZWN0b3IgSSYjMzk7ZCBiZSBtb3N0IGludGVyZXN0ZWQgaW4uCgpTbywgYHZ1YjMwMF9kZWxldGVgIGFuZCB0aGUgbmV3IGB2dWIzMDBfZnJlZV93b3JrYCBmdW5jdGlvbnMuLi4gdGhvc2UgYXJlIHRoZSB0d28gYXJlYXMgdGhhdCBuZWVkIHRoZSBjbG9zZXN0IGV4YW1pbmF0aW9uLiBOb3csIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLCBsZXQgbWUgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucy4gVGhlcmUgY291bGQgYmUgb3RoZXIgYXJlYXMgaW1wYWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z1YjMwMF9kZWxldGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MzcwPXN0YXRpYyB2b2lkIHZ1YjMwMF9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzgyLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzozODM6c3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzg0LXtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTM5MT1zdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfY21uZF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwNi1cdFx0ICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwNzpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MDgtXHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz00MTE9c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX3BvbGxfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAsIGludCBkZWxheSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQyNi1cdFx0ICovXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQyNzpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MjgtXHR9XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz00MzE9c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX2RlYWRfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00NDYtXHRcdCAqL1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0NDc6XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNDQ4LVx0fVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9NjgzPXN0YXRpYyB2b2lkIHZ1YjMwMF9wb2xsd29ya190aHJlYWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjg3LVx0aWYgKCF2dWIzMDAtXHUwMDNlaW50ZXJmYWNlKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4ODpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy02ODktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxMC1cdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzExOlx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MTItfVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9NzE0PXN0YXRpYyB2b2lkIHZ1YjMwMF9kZWFkd29ya190aHJlYWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzE4LVx0aWYgKCF2dWIzMDAtXHUwMDNlaW50ZXJmYWNlKSB7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxOTpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03MjAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc0My1cdG11dGV4X3VubG9jayhcdTAwMjZ2dWIzMDAtXHUwMDNlY21kX211dGV4KTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzQ0Olx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NDUtfVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9NzQ3PXN0YXRpYyB2b2lkIHZ1YjMwMF9pbmFjdGl2aXR5X3RpbWVyX2V4cGlyZWQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NTEtXHRpZiAoIXZ1YjMwMC1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzUyOlx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc1My1cdH0gZWxzZSBpZiAodnViMzAwLVx1MDAzZWNtZCkge1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MTc0Mj1zdGF0aWMgdm9pZCB2dWIzMDBfY21uZHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE3NDYtXHRpZiAoIXZ1YjMwMC1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MTc0NzpcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xNzQ4LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xNzk1LVx0XHRcdG1tY19yZXF1ZXN0X2RvbmUodnViMzAwLVx1MDAzZW1tYywgcmVxKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MTc5NjpcdFx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE3OTctXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTgwMS1cdFx0XHRtdXRleF91bmxvY2soXHUwMDI2dnViMzAwLVx1MDAzZWNtZF9tdXRleCk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjE4MDI6XHRcdFx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xODAzLVx0XHRcdG1tY19yZXF1ZXN0X2RvbmUodnViMzAwLVx1MDAzZW1tYywgcmVxKTtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTE5MTM9c3RhdGljIHZvaWQgdnViMzAwX21tY19yZXF1ZXN0KHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKnJlcSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE5NTMtXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VjbWRfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoxOTU0Olx0XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTk1NS1cdFx0XHRtbWNfcmVxdWVzdF9kb25lKG1tYywgcmVxKTtcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE5NjYtXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VjbWRfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoxOTY3Olx0XHRcdGtyZWZfcHV0KFx1MDAyNnZ1YjMwMC1cdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTk2OC1cdFx0XHQvKlxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjAxOT1zdGF0aWMgdm9pZCB2dWIzMDBfbW1jX3NldF9pb3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpXG4tLVxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yMDUwLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZ1YjMwMC1cdTAwM2VjbWRfbXV0ZXgpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMDUxOlx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yMDUyLX1cbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTIwNjA9c3RhdGljIHZvaWQgdnViMzAwX2VuYWJsZV9zZGlvX2lycShzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgaW50IGVuYWJsZSlcbi0tXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIwODYtXHR9XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjIwODc6XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIwODgtfVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjA5Nz1zdGF0aWMgaW50IHZ1YjMwMF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjM1Ny1cdHZ1YjMwMC1cdTAwM2VpbnRlcmZhY2UgPSBOVUxMO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMzU4Olx0a3JlZl9wdXQoXHUwMDI2dnViMzAwLVx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yMzU5LVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjM3OD1zdGF0aWMgdm9pZCB2dWIzMDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjM5Mi1cdFx0XHRtbWNfcmVtb3ZlX2hvc3QobW1jKTtcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MjM5MzpcdFx0XHRrcmVmX3B1dChcdTAwMjZ2dWIzMDAtXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIzOTQtXHRcdFx0cHJfaW5mbyhcJiMzNDtVU0IgdnViMzAwIHJlbW90ZSBTRElPIGhvc3QgY29udHJvbGxlclslZF1cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc2NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBsYW4gZm9yIFZVQjMwMCBVU0IgRHJpdmVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbWFraW5nIHNvbWUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBgdnViMzAwYCBkcml2ZXIsIHNwZWNpZmljYWxseSBhZGRpbmcgYHZ1YjMwMF9mcmVlX3dvcmtgIGFuZCBtb2RpZnlpbmcgYHZ1YjMwMF9kZWxldGVgLiBHaXZlbiB0aGF0IGB2dWIzMDBfZGVsZXRlYCBpcyBjYWxsZWQgZnJvbSAqbWFueSogcGxhY2VzLCB0aGlzIGlzIGxpa2VseSBhIGJ1ZyBmaXgg4oCTIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gc2xlZXBpbmcgaW4gYW4gYXRvbWljIGNvbnRleHQgb3IgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGZ1enppbmcuIFNpbmNlIGl0JiMzOTtzIGEgVVNCIGRyaXZlciwgSSBjYW4gdXNlIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXM7IHRoYXQmIzM5O3MgdGhlIG9idmlvdXMgYXBwcm9hY2guIFRoZSBuZWNlc3NhcnkgY29uZmlnIGlzIGBNTUNfVlVCMzAwYC4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHZ1YjMwMF9kZWxldGVgIGFuZCBgdnViMzAwX2ZyZWVfd29ya2AgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9scy4gSSBwYXVzZWQgYmVjYXVzZSBgdnViMzAwX2ZyZWVfd29ya2AgaXMgZGVjbGFyZWQgc3RhdGljLCB3aGljaCAqY291bGQqIGluZGljYXRlIHBvdGVudGlhbCBpbmxpbmluZy4gQnV0IGhvbGQgb24sIGl0IGlzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYElOSVRfV09SS2AsIHNvIGlubGluaW5nIGlzIHVubGlrZWx5LiBUaGUgc2FtZSBnb2VzIGZvciBgdnViMzAwX2RlbGV0ZWAsIGFzIGl0IGlzIHBhc3NlZCB0byBga3JlZl9wdXRgLiBCb3RoIGFyZSBnb29kIGNhbmRpZGF0ZXMuCgpXYWl0LCBgdnViMzAwX2RlbGV0ZWAgaXMgdGhlIGtyZWYgcmVsZWFzZSBmdW5jdGlvbi4gSXQgaXMgY2FsbGVkIGZyb20gbG90cyBvZiBwbGFjZXMgYnkgZGVzaWduLiBJIHNob3VsZCB0aGluayBpZiBJIHNob3VsZCBhZGQgbW9yZS4gSSB3aWxsIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLCBzdWNoIGFzIGB2dWIzMDBfcHJvYmVgIGFuZCBgdnViMzAwX2Rpc2Nvbm5lY3RgLCBidXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBhbmQgYWRkcyB0aGVzZSB0d28uIFNvIGxldCYjMzk7cyBzdGljayB3aXRoIHRoZW0uCgpCZWZvcmUgcHJvY2VlZGluZywgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbi4gYE1NQ19WVUIzMDBgIGRlcGVuZHMgb24gYFVTQmAsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBoaWRkZW4gZGVwZW5kZW5jaWVzLiBJIHdpbGwgY2hlY2sgYGRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZ2AgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSByZXBlYXRpbmcgdGhlIHNhbWUgdG9vbCBjYWxsIHdpdGggdGhlIGV4YWN0IHNhbWUgYXJndW1lbnRzLgpZb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS4KRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsCnRyeSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHRvb2wsIG9yIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcC48L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1NQ19WVUIzMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9ob3N0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXG5Zb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS5cbkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODc2MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvbmZpZ3VyYXRpb24gT3B0aW9uKioKCk9rYXksIEkmIzM5O3ZlIHNlZW4gdGhpcyBiZWZvcmUuIGBjb25maWcgTU1DX1ZVQjMwMGAuLi4gSXQmIzM5O3MgdGhlIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydCBmb3IgdGhlIFZVQjMwMC4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGBkZXBlbmRzIG9uIFVTQmAgbGluZSBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBjb250aW5nZW50IG9uIHRoZSBVU0Igc3Vic3lzdGVtIGJlaW5nIGVuYWJsZWQsIHdoaWNoIG1ha2VzIHNlbnNlLiBPZiBjb3Vyc2UsIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFsd2F5cyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlLgoKTm93LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBsb2NhdGlvbiBpcyBgZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnYCwgd2hpY2ggc3VnZ2VzdHMgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGZvdW5kIHRoZXJlLCBidXQgdGhhdCBmaWxlIGl0c2VsZiBpcyBzb3VyY2VkIGZyb20gdGhlIGJyb2FkZXIgYGRyaXZlcnMvbW1jL0tjb25maWdgLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgZHJpdmVycy9tbWMvS2NvbmZpZ2AgdG8gc2VlIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhpcyBgTU1DYCBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBsaWtlbHkgZGVmaW5pbmcgdGhlIGdsb2JhbCBNTUMgb3B0aW9ucywgYW5kIHRoaXMgVlVCMzAwIGNvbnRyb2xsZXIgaXMganVzdCBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBzbyBsZXQgbWUgZmluZCB3aGF0IGBNTUNgIGl0c2VsZiByZXByZXNlbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIE1NQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbW1jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tbWMvS2NvbmZpZy01LVxuZHJpdmVycy9tbWMvS2NvbmZpZzo2Om1lbnVjb25maWcgTU1DXG5kcml2ZXJzL21tYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtNTUMvU0QvU0RJTyBjYXJkIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE2NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIE1NQyBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgYE1NQ2AgaXMgcmVxdWlyZWQuIE1ha2VzIHNlbnNlLiBCdXQganVzdCBzYXlpbmcgJiMzNDtNTUMmIzM0OyBpc24mIzM5O3QgZW5vdWdoOyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQmIzM5O3MgYnJvdWdodCBpbiBhbmQgd2hhdCBlbHNlIGl0IHJlbGllcyBvbi4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZvciBgTU1DYCBicmluZ3Mgd2l0aCBpdC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgaXMgdG8gY2hlY2sgYGRyaXZlcnMvbW1jL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBNTUMgYXJlIGRlZmluZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCBvdGhlciBjb21wb25lbnRzIGFyZSBicm91Z2h0IGFsb25nIGZvciB0aGUgcmlkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDU6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL21tYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTU1DIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTU1DXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNTUMvU0QvU0RJTyBjYXJkIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgc2VsZWN0cyBNdWx0aU1lZGlhQ2FyZCwgU2VjdXJlIERpZ2l0YWwgYW5kIFNlY3VyZVxuICAxMTpcdFx0ICBEaWdpdGFsIEkvTyBzdXBwb3J0LlxuICAxMjpcdFxuICAxMzpcdFx0ICBJZiB5b3Ugd2FudCBNTUMvU0QvU0RJTyBzdXBwb3J0LCB5b3Ugc2hvdWxkIHNheSBZIGhlcmUgYW5kXG4gIDE0Olx0XHQgIGFsc28gdG8geW91ciBzcGVjaWZpYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyLlxuICAxNTpcdFxuICAxNjpcdGlmIE1NQ1xuICAxNzpcdFxuICAxODpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL21tYy9jb3JlL0tjb25maWdcJiMzNDtcbiAgMTk6XHRcbiAgMjA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MTAKCQkJCQkJCW91dHB1dDogMTIwCgkJCQkJCQl0aG91Z2h0czogNjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBWVUIzMDAgVVNCLXRvLVNESU8gSG9zdCBDb250cm9sbGVyIERyaXZlciBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBWVUIzMDAgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiB0aGlzLiBGaXJzdCwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgTU1DYCBhbmQgYE1NQ19WVUIzMDBgIGFyZSBkZWZpbml0ZWx5IGtleSwgYW5kIEkgc2hvdWxkIGFkZCBgVVNCYCB0b28sIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHR5cGljYWxseSBlbmFibGVkIGluIHN5emthbGxlciBjb25maWdzIGFueXdheSAtIGl0JiMzOTtzIGdvb2QgdG8gYmUgZXhwbGljaXQuIEhvd2V2ZXIsIGBNTUNfVlVCMzAwYCBpcyB0aGUgc3BlY2lmaWMgb25lLCBzbyB0aGF0JiMzOTtzIHRoZSBvbmUgdG8gcmV0dXJuIHdpdGggYE1NQ2AuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNoYW5nZWQgYW5kIGhvdy4gSXQgbG9va3MgbGlrZSB0aGUgZGlmZiBvbmx5IG1vZGlmaWVzIGB2dWIzMDBfZGVsZXRlYCBhbmQgYHZ1YjMwMF9mcmVlX3dvcmtgLiBHb29kLiBMZXQmIzM5O3MgZGlnIGRlZXBlci4gSXMgYHZ1YjMwMF9kZWxldGVgIHN0YXRpYz8gWWVzLCBpdCBpcy4gQnV0LCBjcnVjaWFsbHksIGl0JiMzOTtzIHBhc3NlZCB0byBga3JlZl9wdXRgLiBUaGF0IG1lYW5zIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgdGhlIGNvZGUgaXMgcnVubmluZyBhcyBhIGNhbGxiYWNrLgoKQW5kLCBsb29raW5nIGF0IGB2dWIzMDBfZnJlZV93b3JrYCwgaXQmIzM5O3MgYWxzbyBzdGF0aWMsIGJ1dCBzaW1pbGFybHkgdXNlZCBhcyBhIGNhbGxiYWNrIHRocm91Z2ggYGtyZWZfcHV0YC4gVGhpcyBjb25maXJtcyB0aGV5IHdpbGwgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLgoKTm93LCBiYXNlZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgg4oCTIGl0JiMzOTtzIGRlZmVycmluZyByZXNvdXJjZSBmcmVlaW5nIHRvIGEgd29ya3F1ZXVlIOKAkyB0aGlzIGlzIGEgY2xlYW51cCBwYXRoIGFuZCBjb3VsZCBiZSBleGVyY2lzZWQgdW5kZXIgZnV6emluZywgYXMgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIuIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGB2dWIzMDBfZGVsZXRlYCBhbmQgYHZ1YjMwMF9mcmVlX3dvcmtgLCBzaW5jZSB0aGVzZSBhcmUgdGhlIHR3byBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaCBhbmQgYXJlIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgZml4LiBJJiMzOTtsbCBhbHNvIGFkZCBgRW5hYmxlQ29uZmlnc2AgdG8gYE1NQ2AgYW5kIGBNTUNfVlVCMzAwYCwgYXMgdGhhdCYjMzk7cyB0aGUgcmVsZXZhbnQgc2V0dXAuCgpNeSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2xlYW51cCBwYXRoIG9mIHRoZSBWVUIzMDAgVVNCLXRvLVNESU8gaG9zdCBjb250cm9sbGVyIGRyaXZlciBieSBkZWZlcnJpbmcgcmVzb3VyY2UgZnJlZWluZyB0byBhIHdvcmtxdWV1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIGRyaXZlciB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2dWIzMDBfZGVsZXRlJiMzNDssCiAgICAmIzM0O3Z1YjMwMF9mcmVlX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNsZWFudXAgcGF0aCBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYnkgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O01NQ19WVUIzMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2dWIzMDBfZGVsZXRlJiMzNDssCiAgICAmIzM0O3Z1YjMwMF9mcmVlX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNsZWFudXAgcGF0aCBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYnkgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjI1LjE0NTMzNDgxMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODA0ODE0OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1NQ1wiLFxuICAgIFwiTU1DX1ZVQjMwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ1YjMwMF9kZWxldGVcIixcbiAgICBcInZ1YjMwMF9mcmVlX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgY2xlYW51cCBwYXRoIG9mIHRoZSBWVUIzMDAgVVNCLXRvLVNESU8gaG9zdCBjb250cm9sbGVyIGRyaXZlciBieSBkZWZlcnJpbmcgcmVzb3VyY2UgZnJlZWluZyB0byBhIHdvcmtxdWV1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIGRyaXZlciB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzoyNS4xNDUzNDE1MDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODA4MDE0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmZTFkMDI0ZWY3YTFkODNiYzU0Zjc0Yzc4MWI2ZjIxMDA1MDQ4OWNiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDU6NTM6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYyBiL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcXG5pbmRleCAyZGFlNDc0ZGNkMDY3Li4yOGQ5NzAyNGZhM2Y2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcXG4rKysgYi9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jXFxuQEAgLTM0Niw2ICszNDYsNyBAQCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0IHtcXG4gXFx0c3RydWN0IHRpbWVyX2xpc3QgaW5hY3Rpdml0eV90aW1lcjtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IGRlYWR3b3JrO1xcbiBcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgY21uZHdvcms7XFxuK1xcdHN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7XFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgcG9sbHdvcms7XFxuIFxcdHN0cnVjdCBob3N0X2NvbnRyb2xsZXJfaW5mbyBoY19pbmZvO1xcbiBcXHRzdHJ1Y3Qgc2Rfc3RhdHVzX2hlYWRlciBzeXN0ZW1fcG9ydF9zdGF0dXM7XFxuQEAgLTM2NiwyMSArMzY3LDI1IEBAIHN0cnVjdCB2dWIzMDBfbW1jX2hvc3Qge1xcbiAjZGVmaW5lIEdFVF9IQ19JTkYwXFx0XFx0XFx0MVxcbiAjZGVmaW5lIEdFVF9TWVNURU1fUE9SVF9TVEFUVVNcXHRcXHQwXFxuIFxcbi1zdGF0aWMgdm9pZCB2dWIzMDBfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVmKVxcbi17XFx0XFx0XFx0XFx0Lyoga3JlZiBjYWxsYmFjayAtIHNvZnRpcnEgKi9cXG4tXFx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XFxuK3N0YXRpYyB2b2lkIHZ1YjMwMF9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCA9XFxuK1xcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0LCBmcmVlX3dvcmspO1xcbiBcXHRzdHJ1Y3QgbW1jX2hvc3QgKm1tYyA9IHZ1YjMwMC1cXHUwMDNlbW1jO1xcbitcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHZ1YjMwMC1cXHUwMDNldWRldjtcXG4gXFxuIFxcdHVzYl9mcmVlX3VyYih2dWIzMDAtXFx1MDAzZWNvbW1hbmRfb3V0X3VyYik7XFxuLVxcdHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9vdXRfdXJiID0gTlVMTDtcXG4gXFx0dXNiX2ZyZWVfdXJiKHZ1YjMwMC1cXHUwMDNlY29tbWFuZF9yZXNfdXJiKTtcXG4tXFx0dnViMzAwLVxcdTAwM2Vjb21tYW5kX3Jlc191cmIgPSBOVUxMO1xcbi1cXHR1c2JfcHV0X2Rldih2dWIzMDAtXFx1MDAzZXVkZXYpO1xcbiBcXHRtbWNfZnJlZV9ob3N0KG1tYyk7XFxuLVxcdC8qXFxuLVxcdCAqIGFuZCBoZW5jZSBhbHNvIGZyZWVzIHZ1YjMwMFxcbi1cXHQgKiB3aGljaCBpcyBjb250YWluZWQgYXQgdGhlIGVuZCBvZiBzdHJ1Y3QgbW1jXFxuLVxcdCAqL1xcbitcXHR1c2JfcHV0X2Rldih1ZGV2KTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4re1xcbitcXHRzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDAgPSBrcmVmX3RvX3Z1YjMwMF9tbWNfaG9zdChrcmVmKTtcXG4rXFxuK1xcdElOSVRfV09SSyhcXHUwMDI2dnViMzAwLVxcdTAwM2VmcmVlX3dvcmssIHZ1YjMwMF9mcmVlX3dvcmspO1xcbitcXHRxdWV1ZV93b3JrKGRlYWR3b3JrcXVldWUsIFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWZyZWVfd29yayk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHZ1YjMwMF9xdWV1ZV9jbW5kX3dvcmsoc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzoyNi40MjY5NDE0MjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODUyMzE5NzYyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNTUNcIixcbiAgICBcIk1NQ19WVUIzMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2dWIzMDBfZGVsZXRlXCIsXG4gICAgXCJ2dWIzMDBfZnJlZV93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNsZWFudXAgcGF0aCBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYnkgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmUxZDAyNGVmN2ExZDgzYmM1NGY3NGM3ODFiNmYyMTAwNTA0ODljYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDU6NTM6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jIGIvZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuY1xuaW5kZXggMmRhZTQ3NGRjZDA2Ny4uMjhkOTcwMjRmYTNmNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcbisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmNcbkBAIC0zNDYsNiArMzQ2LDcgQEAgc3RydWN0IHZ1YjMwMF9tbWNfaG9zdCB7XG4gXHRzdHJ1Y3QgdGltZXJfbGlzdCBpbmFjdGl2aXR5X3RpbWVyO1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IGRlYWR3b3JrO1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IGNtbmR3b3JrO1xuK1x0c3RydWN0IHdvcmtfc3RydWN0IGZyZWVfd29yaztcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgcG9sbHdvcms7XG4gXHRzdHJ1Y3QgaG9zdF9jb250cm9sbGVyX2luZm8gaGNfaW5mbztcbiBcdHN0cnVjdCBzZF9zdGF0dXNfaGVhZGVyIHN5c3RlbV9wb3J0X3N0YXR1cztcbkBAIC0zNjYsMjEgKzM2NywyNSBAQCBzdHJ1Y3QgdnViMzAwX21tY19ob3N0IHtcbiAjZGVmaW5lIEdFVF9IQ19JTkYwXHRcdFx0MVxuICNkZWZpbmUgR0VUX1NZU1RFTV9QT1JUX1NUQVRVU1x0XHQwXG4gXG4tc3RhdGljIHZvaWQgdnViMzAwX2RlbGV0ZShzdHJ1Y3Qga3JlZiAqa3JlZilcbi17XHRcdFx0XHQvKiBrcmVmIGNhbGxiYWNrIC0gc29mdGlycSAqL1xuLVx0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XG4rc3RhdGljIHZvaWQgdnViMzAwX2ZyZWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4re1xuK1x0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID1cbitcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QsIGZyZWVfd29yayk7XG4gXHRzdHJ1Y3QgbW1jX2hvc3QgKm1tYyA9IHZ1YjMwMC1cdTAwM2VtbWM7XG4rXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHZ1YjMwMC1cdTAwM2V1ZGV2O1xuIFxuIFx0dXNiX2ZyZWVfdXJiKHZ1YjMwMC1cdTAwM2Vjb21tYW5kX291dF91cmIpO1xuLVx0dnViMzAwLVx1MDAzZWNvbW1hbmRfb3V0X3VyYiA9IE5VTEw7XG4gXHR1c2JfZnJlZV91cmIodnViMzAwLVx1MDAzZWNvbW1hbmRfcmVzX3VyYik7XG4tXHR2dWIzMDAtXHUwMDNlY29tbWFuZF9yZXNfdXJiID0gTlVMTDtcbi1cdHVzYl9wdXRfZGV2KHZ1YjMwMC1cdTAwM2V1ZGV2KTtcbiBcdG1tY19mcmVlX2hvc3QobW1jKTtcbi1cdC8qXG4tXHQgKiBhbmQgaGVuY2UgYWxzbyBmcmVlcyB2dWIzMDBcbi1cdCAqIHdoaWNoIGlzIGNvbnRhaW5lZCBhdCB0aGUgZW5kIG9mIHN0cnVjdCBtbWNcbi1cdCAqL1xuK1x0dXNiX3B1dF9kZXYodWRldik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHZ1YjMwMF9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpXG4re1xuK1x0c3RydWN0IHZ1YjMwMF9tbWNfaG9zdCAqdnViMzAwID0ga3JlZl90b192dWIzMDBfbW1jX2hvc3Qoa3JlZik7XG4rXG4rXHRJTklUX1dPUksoXHUwMDI2dnViMzAwLVx1MDAzZWZyZWVfd29yaywgdnViMzAwX2ZyZWVfd29yayk7XG4rXHRxdWV1ZV93b3JrKGRlYWR3b3JrcXVldWUsIFx1MDAyNnZ1YjMwMC1cdTAwM2VmcmVlX3dvcmspO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfY21uZF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjI2LjQyNjk0Mjc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzOTk4NjAxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBVU0IgTU1DIEhvc3QgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXTigJlzIHR3ZWFraW5nIGBkcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHNoaWZ0aW5nIHRoZSByZXNvdXJjZSBmcmVlaW5nIGluIGB2dWIzMDBfZGVsZXRlYCB0byBhIHdvcmsgcXVldWUsIGB2dWIzMDBfZnJlZV93b3JrYCwgcmF0aGVyIHRoYW4gZG9pbmcgaXQgc3RyYWlnaHQgaW4gdGhlIGtyZWYgY2FsbGJhY2suIEhtbSwgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBNTUMgaG9zdCBkcml2ZXIuIEludGVyZXN0aW5nLiBHaXZlbiB0aGF0IGl0J3MgYSBVU0IgZHJpdmVyLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBcInN5emthbGxlciFcIiBJIGtub3cgdGhhdCBkdW1teSBIQ0RzIGNhbiBiZSB1c2VkIHRvIGZ1enogVVNCIGRyaXZlcnMuIExldCdzIHNlZS4uLiBpcyBgdnViMzAwLmNgIGFjdHVhbGx5IGEgVVNCIGRyaXZlcj8gVGltZSB0byBjaGVjay4gWWVwLCBsb29rcyBsaWtlIGl0J3MgdXNpbmcgYHVzYl9mcmVlX3VyYmAsIGB1c2JfcHV0X2RldmAsIGFuZCBvdGhlciB0ZWxsdGFsZSBVU0IgZnVuY3Rpb25zLiBUaGF0IGNvbmZpcm1zIGl0LiBOb3csIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIHRoZSBiaWdnZXIgcGljdHVyZSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIEtjb25maWcgZW50cnkgZm9yIGB2dWIzMDAuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzozMC43NjY5MzE4NjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5NTI0MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnViMzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTIwPWNvbmZpZyBNTUNfVlVCMzAwXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ0LVxcdCAgVG8gY29tcGlsZSB0aGlzIG1tYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGFzIGEgbW9kdWxlLFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5NDU6XFx0ICBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHZ1YjMwMC5cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzozMC44MTQ4ODk0MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk4NDA1ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2s6IGBNTUNfVlVCMzAwYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTU1DX1ZVQjMwMGAuIFRoaXMgZmVlbHMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgc2NvcGUgb2Ygd2hhdCByZWxpZXMgb24gdGhpcyBjb21wb25lbnQsIGJvdGggdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzdXNwZWN0czogd2hhdCBsaWJyYXJpZXMsIG90aGVyIG1vZHVsZXMsIHBvdGVudGlhbGx5IGV2ZW4gZXh0ZXJuYWwgc2VydmljZXMsIGFyZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRpZWQgdG8gaXRzIGZ1bmN0aW9uYWxpdHk/IEtub3dpbmcgdGhlIGZ1bGwgZGVwZW5kZW5jeSBncmFwaCBpcyBjcnVjaWFsIGJlZm9yZSBhbnkgbW9kaWZpY2F0aW9uLCB1cGRhdGUgb3IgbWlncmF0aW9uLiBJIG5lZWQgdG8gYmUgZXNwZWNpYWxseSBjb2duaXphbnQgb2YgcG90ZW50aWFsIGNpcmN1bGFyIGRlcGVuZGVuY2llcyBhbmQgaW1wbGljaXQgYXNzdW1wdGlvbnMgYnVpbHQgaW50byBhbnkgbGlua2VkIGNvZGUuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIGZsYWdnZWQgaW4gcmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIGludGVybmFsIGJ1ZyB0cmFja2Vycz8gS25vd2luZyB0aGlzIGluZm9ybWF0aW9uIHdpbGwgZ3JlYXRseSBoZWxwIHRvIHByaW9yaXRpemUgbXkgd29yay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBhY2NvdW50IGZvciBpbXBsaWNpdCBkZXBlbmRlbmNpZXMgYXMgd2VsbCAtIHRoaW5ncyB0aGF0IG1pZ2h0IGNhbGwgYE1NQ19WVUIzMDBgJ3MgQVBJIGJ1dCBhcmUgbm90IGRpcmVjdGx5IGxpc3RlZCBhcyBkZXBlbmRlbnRzIGluIGEgc3RhbmRhcmQgdG9vbC4gVGltZSB0byBwdWxsIHVwIHRoZSBkZXBlbmRlbmN5IGFuYWx5emVyIGFuZCBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzozNC4yMTMyOTczMTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU0OTQxOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NQ19WVUIzMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MTktXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjEtXFx0dHJpc3RhdGUgXFxcIlZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjM0LjI1ODc5NjIyNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNDE1MDgxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipHcmFiYmluZyB0aGUgTU1DX1ZVQjMwMCBCbG9jayoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBmb3IgYE1NQ19WVUIzMDBgLiBJdCdzIG5vdCBlbm91Z2ggdG8gaGF2ZSBhIHN1cGVyZmljaWFsIHVuZGVyc3RhbmRpbmcuIFdlJ3JlIGJleW9uZCB0aGF0LiBUaGlzIG1lYW5zIEknbSBub3QganVzdCBsb29raW5nIGZvciBhIGNhc3VhbCBvdmVydmlldzsgSSBuZWVkIHRoZSBlbnRpcmUgYmxvY2sgZGVmaW5pdGlvbi4gSSB3YW50IGV2ZXJ5IHNpbmdsZSBhc3BlY3Qgb2YgaXQgdG8gYmUgY2xlYXIgaW4gbXkgbWluZC4gVGhlIGRldGFpbHMgbWF0dGVyLCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBjcml0aWNhbCwgYW5kIEknbSBnb2luZyB0byBkaWcgZGVlcCB0byBnZXQgaXQgYWxsLiBObyBzaG9ydGN1dHMuIFRpbWUgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTEwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDU6NTM6MzguNjAwMzA2NjE1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzgyMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTUNfVlVCMzAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9ob3N0L0tjb25maWc9OTEwPWNvbmZpZyBNTUNfSlo0NzQwXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTE5LVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZzo5MjA6Y29uZmlnIE1NQ19WVUIzMDBcXG5kcml2ZXJzL21tYy9ob3N0L0tjb25maWctOTIxLVxcdHRyaXN0YXRlIFxcXCJWVUIzMDAgVVNCIHRvIFNESU8vU0QvTU1DIEhvc3QgQ29udHJvbGxlciBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1MzozOC42NDUwOTUzNjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzM3MzAzMTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlcjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IEZpbGUgQWNjZXNzIFJlcXVpcmVkKipcblxuQWxyaWdodCwgbXkgZmlyc3Qgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGluaXRpYXRlIHRoZSBwcm9jZXNzIG9mIHJlYWRpbmcgdGhlIHNwZWNpZmllZCBmaWxlLiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZXNlIHdvcmtmbG93cywgSSBjYW4gaW1tZWRpYXRlbHkgYW50aWNpcGF0ZSB0aGUgcG90ZW50aWFsIGh1cmRsZXPigJQgZmlsZSBwZXJtaXNzaW9ucywgZW5jb2RpbmcgaXNzdWVzLCBldmVuIHNpbXBsZSBwYXRoaW5nIGVycm9ycy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0byBtZW50YWxseSBwcmVwYXJlIHRvIGFkZHJlc3MgdGhlc2UgYXMgc29vbiBhcyB0aGV5IGFyZSBhcHBhcmVudC4gVGhpcyBpcyBhIHN0YW5kYXJkIHByZXJlcXVpc2l0ZTsgbGV0J3MgZ2V0IHRoYXQgZmlsZSBsb2FkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MjksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjQxLjM4MjQwMTI5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3NTgzODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NQ19WVUIzMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZz05MTA9Y29uZmlnIE1NQ19KWjQ3NDBcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MTktXFxuZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnOjkyMDpjb25maWcgTU1DX1ZVQjMwMFxcbmRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZy05MjEtXFx0dHJpc3RhdGUgXFxcIlZVQjMwMCBVU0IgdG8gU0RJTy9TRC9NTUMgSG9zdCBDb250cm9sbGVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjQxLjQyOTE2Njc1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDcyODExNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIGFzc3VtaW5nIEknbSBhIHNlYXNvbmVkIHByb2Zlc3Npb25hbCB3aG8gdW5kZXJzdGFuZHMgdGhlIHRhc2sgYW5kIHRoZSB2YWx1ZSBvZiBlZmZpY2llbnQgc29sdXRpb25zOlxuXG4qKkVmZmljaWVuY3kgaXMgS2V5OiBEaXJlY3QgQWNjZXNzIFdpbnMqKlxuXG5Pa2F5LCBJJ20gdGhpbmtpbmcuLi4gd2FpdCBhIG1pbnV0ZS4gVGhlIGluaXRpYWwgYXBwcm9hY2ggSSB3YXMgY29uc2lkZXJpbmcsIG1heWJlIHNvbWUgY29tcGxleCBwcm9jZXNzaW5nIG9yIHBhcnNpbmcuLi4gaXQncyBqdXN0IGEgZmlsZS4gQSBzaW1wbGUgdGV4dCBmaWxlLCBwcmVzdW1hYmx5LiBUaGVyZSdzIHByb2JhYmx5IGEgbG90IG9mIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkgSSBjb3VsZCBpbnRyb2R1Y2UgaWYgSSB0cnkgdG8gb3ZlcnRoaW5rIGl0LiBXaHkganVtcCB0aHJvdWdoIGhvb3BzIHdoZW4gSSBjYW4gZGlyZWN0bHkgcmVhZCB0aGUgY29udGVudD8gVGhpcyBzaW1wbGlmaWVzIHRoaW5ncyBkcmFzdGljYWxseSwgYW5kIGFsbG93cyBtZSB0byBiZWdpbiB3aXRoIHRoZSBiYXNpY3MuIFRoaXMgZGlyZWN0IGFwcHJvYWNoIG9mZmVycyB0aGUgc2ltcGxlc3Qgc29sdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwOTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjQ0LjkwMTk4MDU4N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYwNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkxNSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDkxNTpcXHRcXHQgIEpaNDc0MCwgSlo0NzUwLCBKWjQ3NzAgYW5kIEpaNDc4MCBTb0NzLlxcbiA5MTY6XFx0XFxuIDkxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgYm9hcmQgYmFzZWQgb24gc3VjaCBhIFNvQyBhbmQgd2l0aCBhIFNEL01NQyBzbG90LFxcbiA5MTg6XFx0XFx0ICBzYXkgWSBvciBNIGhlcmUuXFxuIDkxOTpcXHRcXG4gOTIwOlxcdGNvbmZpZyBNTUNfVlVCMzAwXFxuIDkyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiVlVCMzAwIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydFxcXCJcXG4gOTIyOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuIDkyMzpcXHRcXHRoZWxwXFxuIDkyNDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBzdXBwb3J0IGZvciBFbGFuIERpZ2l0YWwgU3lzdGVtcycgVlVCMzAwIGNoaXAuXFxuIDkyNTpcXHRcXG4gOTI2OlxcdFxcdCAgVGhlIFZVQjMwMCBpcyBhIFVTQi1TRElPIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgY2hpcFxcbiA5Mjc6XFx0XFx0ICB0aGF0IGVuYWJsZXMgdGhlIGhvc3QgY29tcHV0ZXIgdG8gdXNlIFNESU8vU0QvTU1DIGNhcmRzXFxuIDkyODpcXHRcXHQgIHZpYSBhIFVTQiAyLjAgb3IgVVNCIDEuMSBob3N0LlxcbiA5Mjk6XFx0XFxuIDkzMDpcXHRcXHQgIFRoZSBWVUIzMDAgY2hpcCB3aWxsIGJlIGZvdW5kIGluIGJvdGggcGh5c2ljYWxseSBzZXBhcmF0ZVxcbiA5MzE6XFx0XFx0ICBVU0IgdG8gU0RJTy9TRC9NTUMgYWRhcHRlcnMgYW5kIGVtYmVkZGVkIG9uIHNvbWUgbW90aGVyYm9hcmRzLlxcbiA5MzI6XFx0XFxuIDkzMzpcXHRcXHQgIFRoZSBWVUIzMDAgY2hpcCBzdXBwb3J0cyBTRCBhbmQgTU1DIG1lbW9yeSBjYXJkcyBpbiBhZGRpdGlvblxcbiA5MzQ6XFx0XFx0ICB0byBzaW5nbGUgYW5kIG11bHRpZnVuY3Rpb24gU0RJTyBjYXJkcy5cXG4gOTM1OlxcdFxcbiA5MzY6XFx0XFx0ICBTb21lIFNESU8gY2FyZHMgd2lsbCBuZWVkIGEgZmlybXdhcmUgZmlsZSB0byBiZSBsb2FkZWQgYW5kXFxuIDkzNzpcXHRcXHQgIHNlbnQgdG8gVlVCMzAwIGNoaXAgaW4gb3JkZXIgdG8gYWNoaWV2ZSBiZXR0ZXIgZGF0YSB0aHJvdWdocHV0LlxcbiA5Mzg6XFx0XFx0ICBEb3dubG9hZCB0aGVzZSBcXFwiT2ZmbG9hZCBQc2V1ZG9jb2RlXFxcIiBmcm9tIEVsYW4gRGlnaXRhbCBTeXN0ZW1zJ1xcbiA5Mzk6XFx0XFx0ICB3ZWItc2l0ZSBodHRwOi8vd3d3LmVsYW5kaWdpdGFsc3lzdGVtcy5jb20vc3VwcG9ydC9kb3dubG9hZHMucGhwXFxuIDk0MDpcXHRcXHQgIGFuZCBwdXQgdGhlbSBpbiAvbGliL2Zpcm13YXJlLiBOb3RlIHRoYXQgd2l0aG91dCB0aGVzZSBhZGRpdGlvbmFsXFxuIDk0MTpcXHRcXHQgIGZpcm13YXJlIGZpbGVzIHRoZSBWVUIzMDAgY2hpcCB3aWxsIHN0aWxsIGZ1bmN0aW9uLCBidXQgbm90IGF0XFxuIDk0MjpcXHRcXHQgIHRoZSBiZXN0IG9idGFpbmFibGUgZGF0YSByYXRlLlxcbiA5NDM6XFx0XFxuIDk0NDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBtbWMgaG9zdCBjb250cm9sbGVyIGRyaXZlciBhcyBhIG1vZHVsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDU6NTM6NDQuOTAyMTk4NjU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjkzMDA1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb3JlIG9mIGl0IHJldm9sdmVzIGFyb3VuZCB0aGUgYE1NQ19WVUIzMDBgIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGluaGVyZW50bHkgcmVsaWVzIG9uIGBVU0JgLiBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGB2dWIzMDBgLiBUaGlzIHBhdGNoIHNwZWNpZmljYWxseSB0d2Vha3MgdGhlIGhhbmRsaW5nIG9mIHJlc291cmNlIGRlYWxsb2NhdGlvbiB3aXRoaW4gdGhlIGRyaXZlciwgdGFyZ2V0aW5nIGB2dWIzMDBfZGVsZXRlYCBhbmQgaW50cm9kdWNpbmcgYSBuZXcgZnVuY3Rpb24sIGB2dWIzMDBfZnJlZV93b3JrYC5cblxuRnJvbSB3aGF0IEkgY2FuIHNlZSwgYHZ1YjMwMF9kZWxldGVgIGlzIGludm9rZWQgdmlhIGBrcmVmX3B1dGAgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGB2dWIzMDAtXHUwMDNla3JlZmAgZ29lcyB0byB6ZXJvLiBUaGlzIGxpa2VseSBoYXBwZW5zIGR1cmluZyBkZXZpY2UgZGlzY29ubmVjdGlvbiBvciB3aGVuIHRoZXJl4oCZcyBhIHByb2JsZW0gZHVyaW5nIHRoZSBwcm9iaW5nIHByb2Nlc3MuIFRoZSBmYWN0IHRoYXQgaXQncyBhIFVTQiBkcml2ZXIgaXMgcHJldHR5IGtleSBiZWNhdXNlIHRoYXQgb3BlbnMgaXQgdXAgdG8gZnV6emluZyB0aHJvdWdoIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yaywgdXNpbmcgc29tZXRoaW5nIGxpa2UgYSBgZHVtbXlfaGNkYC4gVGhhdCdzIHRoZSB2ZWN0b3IgSSdkIGJlIG1vc3QgaW50ZXJlc3RlZCBpbi5cblxuU28sIGB2dWIzMDBfZGVsZXRlYCBhbmQgdGhlIG5ldyBgdnViMzAwX2ZyZWVfd29ya2AgZnVuY3Rpb25zLi4uIHRob3NlIGFyZSB0aGUgdHdvIGFyZWFzIHRoYXQgbmVlZCB0aGUgY2xvc2VzdCBleGFtaW5hdGlvbi4gTm93LCBqdXN0IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLCBsZXQgbWUgc2NhbiBmb3IgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGZ1bmN0aW9ucy4gVGhlcmUgY291bGQgYmUgb3RoZXIgYXJlYXMgaW1wYWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1Mzo0OS43MzE1MDE2NzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzA1Nzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ1YjMwMF9kZWxldGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTM3MD1zdGF0aWMgdm9pZCB2dWIzMDBfZnJlZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMzgyLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MzgzOnN0YXRpYyB2b2lkIHZ1YjMwMF9kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0zODQte1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz0zOTE9c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX2NtbmRfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwNi1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQwNzpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQwOC1cXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTQxMT1zdGF0aWMgdm9pZCB2dWIzMDBfcXVldWVfcG9sbF93b3JrKHN0cnVjdCB2dWIzMDBfbW1jX2hvc3QgKnZ1YjMwMCwgaW50IGRlbGF5KVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MjYtXFx0XFx0ICovXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzo0Mjc6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy00MjgtXFx0fVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYz00MzE9c3RhdGljIHZvaWQgdnViMzAwX3F1ZXVlX2RlYWRfd29yayhzdHJ1Y3QgdnViMzAwX21tY19ob3N0ICp2dWIzMDApXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0Ni1cXHRcXHQgKi9cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjQ0NzpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTQ0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTY4Mz1zdGF0aWMgdm9pZCB2dWIzMDBfcG9sbHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNjg3LVxcdGlmICghdnViMzAwLVxcdTAwM2VpbnRlcmZhY2UpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjY4ODpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTY4OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxMC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxMTpcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcxMi19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTcxND1zdGF0aWMgdm9pZCB2dWIzMDBfZGVhZHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzE4LVxcdGlmICghdnViMzAwLVxcdTAwM2VpbnRlcmZhY2UpIHtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjcxOTpcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTcyMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc0My1cXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjc0NDpcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTc0NS19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTc0Nz1zdGF0aWMgdm9pZCB2dWIzMDBfaW5hY3Rpdml0eV90aW1lcl9leHBpcmVkKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy03NTEtXFx0aWYgKCF2dWIzMDAtXFx1MDAzZWludGVyZmFjZSkge1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6NzUyOlxcdFxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtNzUzLVxcdH0gZWxzZSBpZiAodnViMzAwLVxcdTAwM2VjbWQpIHtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MTc0Mj1zdGF0aWMgdm9pZCB2dWIzMDBfY21uZHdvcmtfdGhyZWFkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTc0Ni1cXHRpZiAoIXZ1YjMwMC1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoxNzQ3OlxcdFxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTc0OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE3OTUtXFx0XFx0XFx0bW1jX3JlcXVlc3RfZG9uZSh2dWIzMDAtXFx1MDAzZW1tYywgcmVxKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjE3OTY6XFx0XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xNzk3LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTgwMS1cXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjE4MDI6XFx0XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xODAzLVxcdFxcdFxcdG1tY19yZXF1ZXN0X2RvbmUodnViMzAwLVxcdTAwM2VtbWMsIHJlcSk7XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTE5MTM9c3RhdGljIHZvaWQgdnViMzAwX21tY19yZXF1ZXN0KHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMTk1My1cXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZ1YjMwMC1cXHUwMDNlY21kX211dGV4KTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jOjE5NTQ6XFx0XFx0XFx0a3JlZl9wdXQoXFx1MDAyNnZ1YjMwMC1cXHUwMDNla3JlZiwgdnViMzAwX2RlbGV0ZSk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xOTU1LVxcdFxcdFxcdG1tY19yZXF1ZXN0X2RvbmUobW1jLCByZXEpO1xcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0xOTY2LVxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dnViMzAwLVxcdTAwM2VjbWRfbXV0ZXgpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MTk2NzpcXHRcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTE5NjgtXFx0XFx0XFx0LypcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjAxOT1zdGF0aWMgdm9pZCB2dWIzMDBfbW1jX3NldF9pb3Moc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpXFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIwNTAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWNtZF9tdXRleCk7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMDUxOlxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjA1Mi19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTIwNjA9c3RhdGljIHZvaWQgdnViMzAwX2VuYWJsZV9zZGlvX2lycShzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgaW50IGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjA4Ni1cXHR9XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMDg3OlxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjA4OC19XFxuLS1cXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jPTIwOTc9c3RhdGljIGludCB2dWIzMDBfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjM1Ny1cXHR2dWIzMDAtXFx1MDAzZWludGVyZmFjZSA9IE5VTEw7XFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYzoyMzU4OlxcdGtyZWZfcHV0KFxcdTAwMjZ2dWIzMDAtXFx1MDAzZWtyZWYsIHZ1YjMwMF9kZWxldGUpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmMtMjM1OS1cXG4tLVxcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM9MjM3OD1zdGF0aWMgdm9pZCB2dWIzMDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9tbWMvaG9zdC92dWIzMDAuYy0yMzkyLVxcdFxcdFxcdG1tY19yZW1vdmVfaG9zdChtbWMpO1xcbmRyaXZlcnMvbW1jL2hvc3QvdnViMzAwLmM6MjM5MzpcXHRcXHRcXHRrcmVmX3B1dChcXHUwMDI2dnViMzAwLVxcdTAwM2VrcmVmLCB2dWIzMDBfZGVsZXRlKTtcXG5kcml2ZXJzL21tYy9ob3N0L3Z1YjMwMC5jLTIzOTQtXFx0XFx0XFx0cHJfaW5mbyhcXFwiVVNCIHZ1YjMwMCByZW1vdGUgU0RJTyBob3N0IGNvbnRyb2xsZXJbJWRdXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1Mzo0OS43NzcyMTEzMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTUyMzU0NTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbiBmb3IgVlVCMzAwIFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1ha2luZyBzb21lIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgYHZ1YjMwMGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGB2dWIzMDBfZnJlZV93b3JrYCBhbmQgbW9kaWZ5aW5nIGB2dWIzMDBfZGVsZXRlYC4gR2l2ZW4gdGhhdCBgdnViMzAwX2RlbGV0ZWAgaXMgY2FsbGVkIGZyb20gKm1hbnkqIHBsYWNlcywgdGhpcyBpcyBsaWtlbHkgYSBidWcgZml4IOKAkyBwb3RlbnRpYWxseSByZWxhdGVkIHRvIHNsZWVwaW5nIGluIGFuIGF0b21pYyBjb250ZXh0IG9yIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLiBTaW5jZSBpdCdzIGEgVVNCIGRyaXZlciwgSSBjYW4gdXNlIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllczsgdGhhdCdzIHRoZSBvYnZpb3VzIGFwcHJvYWNoLiBUaGUgbmVjZXNzYXJ5IGNvbmZpZyBpcyBgTU1DX1ZVQjMwMGAuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHZ1YjMwMF9kZWxldGVgIGFuZCBgdnViMzAwX2ZyZWVfd29ya2AgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9scy4gSSBwYXVzZWQgYmVjYXVzZSBgdnViMzAwX2ZyZWVfd29ya2AgaXMgZGVjbGFyZWQgc3RhdGljLCB3aGljaCAqY291bGQqIGluZGljYXRlIHBvdGVudGlhbCBpbmxpbmluZy4gQnV0IGhvbGQgb24sIGl0IGlzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYElOSVRfV09SS2AsIHNvIGlubGluaW5nIGlzIHVubGlrZWx5LiBUaGUgc2FtZSBnb2VzIGZvciBgdnViMzAwX2RlbGV0ZWAsIGFzIGl0IGlzIHBhc3NlZCB0byBga3JlZl9wdXRgLiBCb3RoIGFyZSBnb29kIGNhbmRpZGF0ZXMuXG5cbldhaXQsIGB2dWIzMDBfZGVsZXRlYCBpcyB0aGUga3JlZiByZWxlYXNlIGZ1bmN0aW9uLiBJdCBpcyBjYWxsZWQgZnJvbSBsb3RzIG9mIHBsYWNlcyBieSBkZXNpZ24uIEkgc2hvdWxkIHRoaW5rIGlmIEkgc2hvdWxkIGFkZCBtb3JlLiBJIHdpbGwgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbnMgdG8gZm9jdXMgb24sIHN1Y2ggYXMgYHZ1YjMwMF9wcm9iZWAgYW5kIGB2dWIzMDBfZGlzY29ubmVjdGAsIGJ1dCB0aGUgcGF0Y2ggKm9ubHkqIG1vZGlmaWVzIGFuZCBhZGRzIHRoZXNlIHR3by4gU28gbGV0J3Mgc3RpY2sgd2l0aCB0aGVtLlxuXG5CZWZvcmUgcHJvY2VlZGluZywgbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBgTU1DX1ZVQjMwMGAgZGVwZW5kcyBvbiBgVVNCYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGhpZGRlbiBkZXBlbmRlbmNpZXMuIEkgd2lsbCBjaGVjayBgZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnYCBhZ2FpbiwganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzY2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjUzOjU3LjcyOTU2ODU2NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMjAsIkVycm9yIjoiWW91IGFyZSByZXBlYXRpbmcgdGhlIHNhbWUgdG9vbCBjYWxsIHdpdGggdGhlIGV4YWN0IHNhbWUgYXJndW1lbnRzLlxuWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuXG5EbyBOT1QgcmVxdWVzdCBpdCBhZ2Fpbi4gWW91IE1VU1Qgc3ludGhlc2l6ZSB0aGUgaW5mb3JtYXRpb24geW91IGFscmVhZHkgaGF2ZSxcbnRyeSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHRvb2wsIG9yIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcC4iLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTU1DX1ZVQjMwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL21tYy9ob3N0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXFxuWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuXFxuRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsXFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLlwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1Mzo1Ny43Mjk2MDgxMzVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NjExMDAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuT2theSwgSSd2ZSBzZWVuIHRoaXMgYmVmb3JlLiBgY29uZmlnIE1NQ19WVUIzMDBgLi4uIEl0J3MgdGhlIFVTQiB0byBTRElPL1NEL01NQyBIb3N0IENvbnRyb2xsZXIgc3VwcG9ydCBmb3IgdGhlIFZVQjMwMC4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGBkZXBlbmRzIG9uIFVTQmAgbGluZSBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCdzIGNvbnRpbmdlbnQgb24gdGhlIFVTQiBzdWJzeXN0ZW0gYmVpbmcgZW5hYmxlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIE9mIGNvdXJzZSwgdGhlIGRlcGVuZGVuY2llcyBhcmUgYWx3YXlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUuXG5cbk5vdywgbGV0J3Mgc2VlLi4uIHRoZSBsb2NhdGlvbiBpcyBgZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnYCwgd2hpY2ggc3VnZ2VzdHMgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGZvdW5kIHRoZXJlLCBidXQgdGhhdCBmaWxlIGl0c2VsZiBpcyBzb3VyY2VkIGZyb20gdGhlIGJyb2FkZXIgYGRyaXZlcnMvbW1jL0tjb25maWdgLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBkcml2ZXJzL21tYy9LY29uZmlnYCB0byBzZWUgdGhlIGZ1bGwgY29udGV4dCBvZiB0aGlzIGBNTUNgIGNvbmZpZ3VyYXRpb24uIEl0J3MgbGlrZWx5IGRlZmluaW5nIHRoZSBnbG9iYWwgTU1DIG9wdGlvbnMsIGFuZCB0aGlzIFZVQjMwMCBjb250cm9sbGVyIGlzIGp1c3QgYSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgc28gbGV0IG1lIGZpbmQgd2hhdCBgTU1DYCBpdHNlbGYgcmVwcmVzZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc2MiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1NDowMi4wMjU3MjA4NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxNjg2NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWVudWNvbmZpZyBNTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9tbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21tYy9LY29uZmlnLTUtXFxuZHJpdmVycy9tbWMvS2NvbmZpZzo2Om1lbnVjb25maWcgTU1DXFxuZHJpdmVycy9tbWMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJNTUMvU0QvU0RJTyBjYXJkIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA1OjU0OjAyLjA2OTg5NjgxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzc4NzU0MzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIE1NQyBEZXBlbmRlbmNpZXMqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIGBNTUNgIGlzIHJlcXVpcmVkLiBNYWtlcyBzZW5zZS4gQnV0IGp1c3Qgc2F5aW5nIFwiTU1DXCIgaXNuJ3QgZW5vdWdoOyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQncyBicm91Z2h0IGluIGFuZCB3aGF0IGVsc2UgaXQgcmVsaWVzIG9uLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhlIEtjb25maWcgZm9yIGBNTUNgIGJyaW5ncyB3aXRoIGl0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBtYWtlcyBzZW5zZSBpcyB0byBjaGVjayBgZHJpdmVycy9tbWMvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTU1DIGFyZSBkZWZpbmVkLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgb3RoZXIgY29tcG9uZW50cyBhcmUgYnJvdWdodCBhbG9uZyBmb3IgdGhlIHJpZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1NDowNS40NDg2NTM2NzZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9tbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNTUMgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBNTUNcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJNTUMvU0QvU0RJTyBjYXJkIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIHNlbGVjdHMgTXVsdGlNZWRpYUNhcmQsIFNlY3VyZSBEaWdpdGFsIGFuZCBTZWN1cmVcXG4gIDExOlxcdFxcdCAgRGlnaXRhbCBJL08gc3VwcG9ydC5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBJZiB5b3Ugd2FudCBNTUMvU0QvU0RJTyBzdXBwb3J0LCB5b3Ugc2hvdWxkIHNheSBZIGhlcmUgYW5kXFxuICAxNDpcXHRcXHQgIGFsc28gdG8geW91ciBzcGVjaWZpYyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBNTUNcXG4gIDE3OlxcdFxcbiAgMTg6XFx0c291cmNlIFxcXCJkcml2ZXJzL21tYy9jb3JlL0tjb25maWdcXFwiXFxuICAxOTpcXHRcXG4gIDIwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1NDowNS40NDg3MTA0MzZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQxNjg1ODA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIEhvc3QgQ29udHJvbGxlciBEcml2ZXIgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIFZVQjMwMCBkcml2ZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBmdXp6IHRoaXMuIEZpcnN0LCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBNTUNgIGFuZCBgTU1DX1ZVQjMwMGAgYXJlIGRlZmluaXRlbHkga2V5LCBhbmQgSSBzaG91bGQgYWRkIGBVU0JgIHRvbywgZXZlbiB0aG91Z2ggaXQncyB0eXBpY2FsbHkgZW5hYmxlZCBpbiBzeXprYWxsZXIgY29uZmlncyBhbnl3YXkgLSBpdCdzIGdvb2QgdG8gYmUgZXhwbGljaXQuIEhvd2V2ZXIsIGBNTUNfVlVCMzAwYCBpcyB0aGUgc3BlY2lmaWMgb25lLCBzbyB0aGF0J3MgdGhlIG9uZSB0byByZXR1cm4gd2l0aCBgTU1DYC5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNoYW5nZWQgYW5kIGhvdy4gSXQgbG9va3MgbGlrZSB0aGUgZGlmZiBvbmx5IG1vZGlmaWVzIGB2dWIzMDBfZGVsZXRlYCBhbmQgYHZ1YjMwMF9mcmVlX3dvcmtgLiBHb29kLiBMZXQncyBkaWcgZGVlcGVyLiBJcyBgdnViMzAwX2RlbGV0ZWAgc3RhdGljPyBZZXMsIGl0IGlzLiBCdXQsIGNydWNpYWxseSwgaXQncyBwYXNzZWQgdG8gYGtyZWZfcHV0YC4gVGhhdCBtZWFucyBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgdGhlIGNvZGUgaXMgcnVubmluZyBhcyBhIGNhbGxiYWNrLlxuXG5BbmQsIGxvb2tpbmcgYXQgYHZ1YjMwMF9mcmVlX3dvcmtgLCBpdCdzIGFsc28gc3RhdGljLCBidXQgc2ltaWxhcmx5IHVzZWQgYXMgYSBjYWxsYmFjayB0aHJvdWdoIGBrcmVmX3B1dGAuIFRoaXMgY29uZmlybXMgdGhleSB3aWxsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy5cblxuTm93LCBiYXNlZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgg4oCTIGl0J3MgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUg4oCTIHRoaXMgaXMgYSBjbGVhbnVwIHBhdGggYW5kIGNvdWxkIGJlIGV4ZXJjaXNlZCB1bmRlciBmdXp6aW5nLCBhcyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgZHJpdmVyLiBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkZvciB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLCBJJ2xsIHNldCBgRm9jdXNTeW1ib2xzYCB0byBgdnViMzAwX2RlbGV0ZWAgYW5kIGB2dWIzMDBfZnJlZV93b3JrYCwgc2luY2UgdGhlc2UgYXJlIHRoZSB0d28gZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2ggYW5kIGFyZSB0aGUgY29yZSBsb2dpYyBmb3IgdGhlIGZpeC4gSSdsbCBhbHNvIGFkZCBgRW5hYmxlQ29uZmlnc2AgdG8gYE1NQ2AgYW5kIGBNTUNfVlVCMzAwYCwgYXMgdGhhdCdzIHRoZSByZWxldmFudCBzZXR1cC5cblxuTXkgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGNsZWFudXAgcGF0aCBvZiB0aGUgVlVCMzAwIFVTQi10by1TRElPIGhvc3QgY29udHJvbGxlciBkcml2ZXIgYnkgZGVmZXJyaW5nIHJlc291cmNlIGZyZWVpbmcgdG8gYSB3b3JrcXVldWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYxMCwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNTo1NDoxNC44NjU1NzA3NzdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDU2NTU5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTU1DXCIsXG4gICAgXCJNTUNfVlVCMzAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnViMzAwX2RlbGV0ZVwiLFxuICAgIFwidnViMzAwX2ZyZWVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjbGVhbnVwIHBhdGggb2YgdGhlIFZVQjMwMCBVU0ItdG8tU0RJTyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGJ5IGRlZmVycmluZyByZXNvdXJjZSBmcmVlaW5nIHRvIGEgd29ya3F1ZXVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTU1DXCIsXG4gICAgXCJNTUNfVlVCMzAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnViMzAwX2RlbGV0ZVwiLFxuICAgIFwidnViMzAwX2ZyZWVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBjbGVhbnVwIHBhdGggb2YgdGhlIFZVQjMwMCBVU0ItdG8tU0RJTyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGJ5IGRlZmVycmluZyByZXNvdXJjZSBmcmVlaW5nIHRvIGEgd29ya3F1ZXVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[1] Phase: Succeeded StartedAt: 2026-08-07 05:54:25 +0000 UTC FinishedAt: 2026-08-07 05:54:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 05:54:25 +0000 UTC FinishedAt: 2026-08-07 05:54:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2] Phase: Succeeded StartedAt: 2026-08-07 05:54:25 +0000 UTC FinishedAt: 2026-08-07 09:38:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 05:54:25 +0000 UTC FinishedAt: 2026-08-07 09:38:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 05:54:25 +0000 UTC FinishedAt: 2026-08-07 05:54:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 05:54:25 +0000 UTC FinishedAt: 2026-08-07 05:54:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowjlcf6/series-workflowjlcf6-convert-artifact-511148348/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 05:54:36 +0000 UTC FinishedAt: 2026-08-07 06:15:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 05:54:36 +0000 UTC FinishedAt: 2026-08-07 06:15:56 +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:*57fa5f9c-3a63-4849-8f2d-9cb72dbcbffe,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-workflowjlcf6/series-workflowjlcf6-convert-artifact-511148348/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": "9255e713-b03f-4016-958d-8f9ba079d8ed", "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-workflowjlcf6/series-workflowjlcf6-build-action-2856063594/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 05:54:36 +0000 UTC FinishedAt: 2026-08-07 06:15:46 +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:*57fa5f9c-3a63-4849-8f2d-9cb72dbcbffe,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-workflowjlcf6/series-workflowjlcf6-convert-artifact-511148348/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": "9255e713-b03f-4016-958d-8f9ba079d8ed", "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-workflowjlcf6/series-workflowjlcf6-build-action-2856063594/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 06:15:56 +0000 UTC FinishedAt: 2026-08-07 06:15:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 06:15:56 +0000 UTC FinishedAt: 2026-08-07 06:15:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 06:15:56 +0000 UTC FinishedAt: 2026-08-07 06:16:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 06:15:56 +0000 UTC FinishedAt: 2026-08-07 06:16:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowjlcf6/series-workflowjlcf6-convert-artifact-148413819/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 06:16:07 +0000 UTC FinishedAt: 2026-08-07 06:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 06:16:07 +0000 UTC FinishedAt: 2026-08-07 06:17:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9255e713-b03f-4016-958d-8f9ba079d8ed,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-workflowjlcf6/series-workflowjlcf6-build-action-2856063594/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-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 06:18:05 +0000 UTC FinishedAt: 2026-08-07 06:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 06:18:05 +0000 UTC FinishedAt: 2026-08-07 06:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 06:18:05 +0000 UTC FinishedAt: 2026-08-07 06:34:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 06:18:05 +0000 UTC FinishedAt: 2026-08-07 06:34:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*57fa5f9c-3a63-4849-8f2d-9cb72dbcbffe,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-workflowjlcf6/series-workflowjlcf6-convert-artifact-148413819/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": "d442fc79-5a3a-40d6-837c-e716f8565cbf", "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-workflowjlcf6/series-workflowjlcf6-build-action-1930891679/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 06:18:05 +0000 UTC FinishedAt: 2026-08-07 06:33:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*57fa5f9c-3a63-4849-8f2d-9cb72dbcbffe,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-workflowjlcf6/series-workflowjlcf6-convert-artifact-148413819/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": "d442fc79-5a3a-40d6-837c-e716f8565cbf", "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-workflowjlcf6/series-workflowjlcf6-build-action-1930891679/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 06:34:05 +0000 UTC FinishedAt: 2026-08-07 06:34:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 06:34:05 +0000 UTC FinishedAt: 2026-08-07 06:34:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 06:34:05 +0000 UTC FinishedAt: 2026-08-07 06:35:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 06:34:05 +0000 UTC FinishedAt: 2026-08-07 06:35:47 +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:*d442fc79-5a3a-40d6-837c-e716f8565cbf,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-workflowjlcf6/series-workflowjlcf6-build-action-1930891679/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-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 06:35:57 +0000 UTC FinishedAt: 2026-08-07 09:38:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 06:35:57 +0000 UTC FinishedAt: 2026-08-07 09:38:35 +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":["vub300_delete","vub300_free_work"],"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:*9255e713-b03f-4016-958d-8f9ba079d8ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d442fc79-5a3a-40d6-837c-e716f8565cbf,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-workflowjlcf6/series-workflowjlcf6-build-action-2856063594/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-workflowjlcf6/series-workflowjlcf6-build-action-1930891679/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 06:35:57 +0000 UTC FinishedAt: 2026-08-07 06:36:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 06:35:57 +0000 UTC FinishedAt: 2026-08-07 06:36:01 +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":["vub300_delete","vub300_free_work"],"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-workflowjlcf6/series-workflowjlcf6-convert-artifact-2028326260/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 06:35:57 +0000 UTC FinishedAt: 2026-08-07 06:35:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 06:35:57 +0000 UTC FinishedAt: 2026-08-07 06:35:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 06:35:57 +0000 UTC FinishedAt: 2026-08-07 06:35:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 06:36:07 +0000 UTC FinishedAt: 2026-08-07 09:38:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjlcf6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["vub300_delete","vub300_free_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["MMC","MMC_VUB300"],"series_id":"140d1216-2fc8-4c1d-878d-9b80f91223fc","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 06:36:07 +0000 UTC FinishedAt: 2026-08-07 09:38:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9255e713-b03f-4016-958d-8f9ba079d8ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d442fc79-5a3a-40d6-837c-e716f8565cbf,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-workflowjlcf6/series-workflowjlcf6-build-action-2856063594/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-workflowjlcf6/series-workflowjlcf6-build-action-1930891679/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-workflowjlcf6/series-workflowjlcf6-convert-artifact-2028326260/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,}