Name: series-workflowccxrj Phase: Succeeded StartedAt: 2026-07-07 18:36:09 +0000 UTC FinishedAt: 2026-07-07 23:18:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[0] Phase: Succeeded StartedAt: 2026-07-07 18:36:09 +0000 UTC FinishedAt: 2026-07-07 18:55:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 18:36:09 +0000 UTC FinishedAt: 2026-07-07 18:55:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_EVENTS" ], "series_id": "16ee4a99-a1b3-4914-8db6-a899e95a8843" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ecache_work_evict_list", "ecache_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlY2FjaGVfd29ya19ldmljdF9saXN0JiMzNDssCiAgICAmIzM0O2VjYWNoZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGJ5IGNvcnJlY3RpbmcgdGhlIGFyZ3VtZW50cyB0byBgdGltZV9hZnRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE1ZTIxYmQwMzhmMzcyMGJmNTk0MzZmZGUwZWJjZDVhNzI0ZjVlOWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDE4OjU0OjAzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcbmluZGV4IDlkZjE1OTQ0OGI4OTc5Li5jYzhkOGU4NTE2OWZiMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xuQEAgLTc3LDcgJiM0Mzs3Nyw3IEBAIHN0YXRpYyBlbnVtIHJldHJ5X3N0YXRlIGVjYWNoZV93b3JrX2V2aWN0X2xpc3Qoc3RydWN0IG5mX2Nvbm50cmFja19uZXQgKmNuZXQpXG4gXHRcdGhsaXN0X251bGxzX2RlbF9yY3UoXHUwMDI2Y3QtXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9PUklHSU5BTF0uaG5ub2RlKTtcbiBcdFx0aGxpc3RfbnVsbHNfYWRkX2hlYWQoXHUwMDI2Y3QtXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9SRVBMWV0uaG5ub2RlLCBcdTAwMjZldmljdGVkX2xpc3QpO1xuIFxuLVx0XHRpZiAodGltZV9hZnRlcihzdG9wLCBqaWZmaWVzKSkge1xuJiM0MztcdFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcCkpIHtcbiBcdFx0XHRyZXQgPSBTVEFURV9SRVNUQVJUO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VjYWNoZV93b3JrX2V2aWN0X2xpc3QmIzM0OywKICAgICYjMzQ7ZWNhY2hlX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb29wIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiBpbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgYnkgY29ycmVjdGluZyB0aGUgYXJndW1lbnRzIHRvIGB0aW1lX2FmdGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV2ZW50IGNhY2hlIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNWUyMWJkMDM4ZjM3MjBiZjU5NDM2ZmRlMGViY2Q1YTcyNGY1ZTlkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAxODo1NDowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMKaW5kZXggOWRmMTU5NDQ4Yjg5NzkuLmNjOGQ4ZTg1MTY5ZmIzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYwpAQCAtNzcsNyAmIzQzOzc3LDcgQEAgc3RhdGljIGVudW0gcmV0cnlfc3RhdGUgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdChzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCAqY25ldCkKIAkJaGxpc3RfbnVsbHNfZGVsX3JjdSgmYW1wO2N0LSZndDt0dXBsZWhhc2hbSVBfQ1RfRElSX09SSUdJTkFMXS5obm5vZGUpOwogCQlobGlzdF9udWxsc19hZGRfaGVhZCgmYW1wO2N0LSZndDt0dXBsZWhhc2hbSVBfQ1RfRElSX1JFUExZXS5obm5vZGUsICZhbXA7ZXZpY3RlZF9saXN0KTsKIAotCQlpZiAodGltZV9hZnRlcihzdG9wLCBqaWZmaWVzKSkgewomIzQzOwkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcCkpIHsKIAkJCXJldCA9IFNUQVRFX1JFU1RBUlQ7CiAJCQlicmVhazsKIAkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODkzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25udHJhY2sgRWNhY2hlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGluIGBlY2FjaGVfd29ya19ldmljdF9saXN0YC4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb25kaXRpb25hbCB3aXRoaW4gdGhlIGxvb3A6IGl0IHNlZW1zIHRoZXkmIzM5O3ZlIGZsaXBwZWQgdGhlIGxvZ2ljIGZyb20gYHRpbWVfYWZ0ZXIoc3RvcCwgamlmZmllcylgIHRvIGB0aW1lX2FmdGVyKGppZmZpZXMsIHN0b3ApYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbiB0byB0aGUgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucz8gV2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIGlmIHRoaXMgaW50cm9kdWNlcyBhIGJ1Zy4KCkZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFNvLCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlbGV2YW50IGFuZCBleGFjdGx5IHdoYXQgYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGlzIHN1cHBvc2VkIHRvIGRvLiBBIHF1aWNrIHNjYW4gc2hvdWxkIGFsc28gcG9pbnQgbWUgdG8gYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGlzIG9uZS4gQ29udGV4dCBpcyBldmVyeXRoaW5nLiBJIGhhdmUgdG8gc2VlIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlY2FjaGVfd29ya19ldmljdF9saXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9NDg9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubl9wZXJuZXRfZWNhY2hlKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy01MC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjUxOnN0YXRpYyBlbnVtIHJldHJ5X3N0YXRlIGVjYWNoZV93b3JrX2V2aWN0X2xpc3Qoc3RydWN0IG5mX2Nvbm50cmFja19uZXQgKmNuZXQpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy01Mi17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9MTA2PXN0YXRpYyB2b2lkIGVjYWNoZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMTAtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMTE6XHRyZXQgPSBlY2FjaGVfd29ya19ldmljdF9saXN0KGNuZXQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMTEyLVx0c3dpdGNoIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBpbnRlcm5hbHM6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25uZWN0aW9uIFRyYWNraW5nIEV2aWN0aW9uIE1lY2hhbmlzbSoqCgpBbHJpZ2h0LCBzbyBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgaXMgZGVmaW5pdGVseSBiZWluZyBpbnZva2VkIGZyb20gYGVjYWNoZV93b3JrYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcmIzM5O3MgZXZpY3Rpb24gcHJvY2VzcywgYW5kIGl0JiMzOTtzIGJlaW5nIG1hbmFnZWQgdGhyb3VnaCB0aGUgd29ya3F1ZXVlLiBNYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBhc3luY2hyb25vdXMgcHJvY2Vzc2luZyB3aXRoaW4gdGhlIGtlcm5lbC4gTm93LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MgcmVsYXRlZCB0byBgbmZfY29ubnRyYWNrX2VjYWNoZS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBhbmQgdW5kZXJzdGFuZCBhbnkgZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbCBidWlsZC10aW1lIGZsYWdzIHRoYXQgbWlnaHQgYWZmZWN0IHRoaXMgY29kZSBwYXRoLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBpbmZvcm0gaG93IHRoZSBjb2RlIGlzIGNvbXBpbGVkLiBUaGlzIHdpbGwgbGV0IG1lIGtub3cgdGhlIGNvbnRleHQgb2YgdGhlIGJ1aWxkLiBHb29kLCB0aGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25udHJhY2tfZWNhY2hlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTI9bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19USU1FU1RBTVApICYjNDM7PSBuZl9jb25udHJhY2tfdGltZXN0YW1wLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMpICYjNDM7PSBuZl9jb25udHJhY2tfZWNhY2hlLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQtbmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFMpICYjNDM7PSBuZl9jb25udHJhY2tfbGFiZWxzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDAxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25uZWN0aW9uIFRyYWNraW5nIEV2ZW50cyoqCgpSaWdodCwgc28gYENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTYCBpcyBwb3BwaW5nIHVwIGFzIGEgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBpdGVtLiBNYWtlcyBzZW5zZSwgcHJvYmFibHkgcmVsYXRlZCB0byBzb21lIGtpbmQgb2YgY29ubmVjdGlvbiB0cmFja2luZyBtZWNoYW5pc20gSSYjMzk7bSB3b3JraW5nIHdpdGguIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcXVpY2tseSB2ZXJpZnkgaWYgdGhpcyBzcGVjaWZpYyBjb25maWcgaXRlbSBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBvcHRpb25zIGl0IHJlbGllcyBvbiB0byBiZSBidWlsdCBjb3JyZWN0bHkuIFRoaXMgd2lsbCBzYXZlIG1lIGZyb20gYSBsb3Qgb2YgaGVhZC1zY3JhdGNoaW5nIGxhdGVyIGlmIHRoZXJlIGFyZSBjYXNjYWRpbmcgYnVpbGQgZXJyb3JzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgc2F5IGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTE0OD1jb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25uZWN0aW9uIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYm9vbGVhbiBjb25maWcsIGBORl9DT05OVFJBQ0tgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgYmVoYXZpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaWcgaW50byBgZWNhY2hlX3dvcmtgIGFuZCBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAuIEkgc2VlIHRoYXQgYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBjYW4mIzM5O3QgdHJhY2UgaXQgZGlyZWN0bHkgZnJvbSBvdGhlciBtb2R1bGVzIGJlY2F1c2UgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLiBBbHJpZ2h0LCB0aGF0IGZvY3VzZXMgbWUgb24gZWl0aGVyIGBlY2FjaGVfd29ya2Agb3IgcGxhY2VzIHRoYXQgY2FsbCBpdC4gVGhlbiBJIHJlbWVtYmVyIHRoYXQgYGVjYWNoZV93b3JrYCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCBsaWtlbHkgaXNuJiMzOTt0IGNhbGxlZCBkaXJlY3RseSBieSBhIHN5c3RlbSBjYWxsLiBTbywgaW5zdGVhZCBvZiBsb29raW5nIGZvciB0aGUgZGlyZWN0IGNhbGwsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZ2V0cyBzY2hlZHVsZWQuIEkgbmVlZCB0byBmaW5kIHRoZSBjYWxscyB0byBpdCwgc28gSSBjYW4gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZWNhY2hlX3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz00OD1FWFBPUlRfU1lNQk9MX0dQTChuZl9jb25uX3Blcm5ldF9lY2FjaGUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTUwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6NTE6c3RhdGljIGVudW0gcmV0cnlfc3RhdGUgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdChzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCAqY25ldClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTUyLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMDUtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMDY6c3RhdGljIHZvaWQgZWNhY2hlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMTA3LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMTAtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMTE6XHRyZXQgPSBlY2FjaGVfd29ya19ldmljdF9saXN0KGNuZXQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMTEyLVx0c3dpdGNoIChyZXQpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0yOTQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubnRyYWNrX3VucmVnaXN0ZXJfbm90aWZpZXIpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMjk1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6Mjk2OnZvaWQgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrKHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZl9jdF9lY2FjaGVfc3RhdGUgc3RhdGUpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0yOTcte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jPTM2NT12b2lkIG5mX2Nvbm50cmFja19lY2FjaGVfcGVybmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTM3MC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjM3MTpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmNuZXQtXHUwMDNlZWNhY2hlLmR3b3JrLCBlY2FjaGVfd29yayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNzItXHRJTklUX0hMSVNUX05VTExTX0hFQUQoXHUwMDI2Y25ldC1cdTAwM2VlY2FjaGUuZHlpbmdfbGlzdCwgRFlJTkdfTlVMTFNfVkFMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrYC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgdHJhY2UgdGhpcyBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGl0cyBjYWxsIHNpdGVzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzeXN0ZW0uIEkgd2FudCB0byBzZWUgd2hhdCB0cmlnZ2VycyBpdCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsIGhlcmU7IGl0IGdpdmVzIG1lIGltbWVkaWF0ZSBpbnNpZ2h0IGludG8gdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCB3aGF0IGludGVyYWN0aW9ucyBhcmUgYXQgcGxheS4gTG9va2luZyBhdCB0aGUgY29kZSBhcm91bmQgdGhlIGNhbGxzIHdpbGwgaWxsdW1pbmF0ZSBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGNvbm50cmFjayBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19lY2FjaGVfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz02NjI9Ym9vbCBuZl9jdF9kZWxldGUoc3RydWN0IG5mX2Nvbm4gKmN0LCB1MzIgcG9ydGlkLCBpbnQgcmVwb3J0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy02ODktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM6NjkwOlx0XHRuZl9jb25udHJhY2tfZWNhY2hlX3dvcmsobmZfY3RfbmV0KGN0KSwgTkZDVF9FQ0FDSEVfREVTVFJPWV9GQUlMKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy02OTEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjk1LVx0aWYgKG5mX2Nvbm50cmFja19lY2FjaGVfZHdvcmtfcGVuZGluZyhuZXQpKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjY5NjpcdFx0bmZfY29ubnRyYWNrX2VjYWNoZV93b3JrKG5ldCwgTkZDVF9FQ0FDSEVfREVTVFJPWV9TRU5UKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy02OTctXHRuZl9jdF9kZWxldGVfZnJvbV9saXN0cyhjdCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9Mjk0PUVYUE9SVF9TWU1CT0xfR1BMKG5mX2Nvbm50cmFja191bnJlZ2lzdGVyX25vdGlmaWVyKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTI5NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjI5Njp2b2lkIG5mX2Nvbm50cmFja19lY2FjaGVfd29yayhzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZfY3RfZWNhY2hlX3N0YXRlIHN0YXRlKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMjk3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg1OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgRXZlbnQgU3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIGhvdyB0aGVzZSBjb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50cyBhcmUgbWFuYWdlZCwgc3BlY2lmaWNhbGx5IHRoZSBgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbmZfY3RfZGVsZXRlYCwgd2hpY2ggc3VnZ2VzdHMgYSBjbGVhbnVwIG9yIGV2aWN0aW9uIHByb2Nlc3MuIFRoZSBjcnVjaWFsIGZ1bmN0aW9uIHRvIGV4YW1pbmUgaGVyZSBpcyBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAsIGFuZCB0aGVuIGJ5IGV4dGVuc2lvbiwgYGVjYWNoZV93b3JrYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZWxhdGUuCgpUaGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbiBzZWVtcyB0byBiZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2AuIE5vdywgYSBxdWljayBzYW5pdHkgY2hlY2s6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCBhbG1vc3QgY2VydGFpbmx5IGRlcGVuZHMgb24gYE5GX0NPTk5UUkFDS2AsIHJpZ2h0PyBJdCB3b3VsZG7igJl0IG1ha2Ugc2Vuc2Ugb3RoZXJ3aXNlLiBKdXN0IG1ha2luZyBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy4KCkxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciByZWxhdGVkIG9wdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhpcyBiZWhhdmlvci4gR290dGEgZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNTA6XHRcdGRlcGVuZHMgb24gUFJPQ19GU1xuIDE1MTpcdFx0aGVscFxuIDE1MjpcdFx0VGhpcyBvcHRpb24gZW5hYmxlcyBmb3IgdGhlIGxpc3Qgb2Yga25vd24gY29ubnRyYWNrIGVudHJpZXNcbiAxNTM6XHRcdHRvIGJlIHNob3duIGluIHByb2NmcyB1bmRlciBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay4gVGhpc1xuIDE1NDpcdFx0aXMgY29uc2lkZXJlZCBvYnNvbGV0ZSBpbiBmYXZvciBvZiB1c2luZyB0aGUgY29ubnRyYWNrKDgpXG4gMTU1Olx0XHR0b29sIHdoaWNoIHVzZXMgTmV0bGluay5cbiAxNTY6XHRcbiAxNTc6XHRjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xuIDE1ODpcdFx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuIDE1OTpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiAxNjA6XHRcdGhlbHBcbiAxNjE6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgY29kZSB3aWxsXG4gMTYyOlx0XHQgIHByb3ZpZGUgYSBub3RpZmllciBjaGFpbiB0aGF0IGNhbiBiZSB1c2VkIGJ5IG90aGVyIGtlcm5lbCBjb2RlXG4gMTYzOlx0XHQgIHRvIGdldCBub3RpZmllZCBhYm91dCBjaGFuZ2VzIGluIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHN0YXRlLlxuIDE2NDpcdFxuIDE2NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBgTiYjMzk7LlxuIDE2NjpcdFxuIDE2NzpcdGNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxuIDE2ODpcdFx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQmIzM5O1xuIDE2OTpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU0NQoJCQkJCQkJb3V0cHV0OiAxMDIKCQkJCQkJCXRob3VnaHRzOiAyNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29ubnRyYWNrIEV2ZW50IENhY2hlIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGBORl9DT05OVFJBQ0tfRVZFTlRTYCBjb25maWd1cmF0aW9uIG9wdGlvbiDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGhlcmUuIFRoZSBmdW5jdGlvbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgKmlzKiBkZWZpbml0ZWx5IGJlaW5nIGNhbGxlZCBhbmQgb3BlcmF0aW5nIGFzIGV4cGVjdGVkLCB3aGljaCBpcyBnb29kLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHRhY2tsaW5nIGEgc3VidGxlLCBidXQgcG90ZW50aWFsbHkgbmFzdHksIGJ1Zy4KCkl0JiMzOTtzIHVzaW5nIGB0aW1lX2FmdGVyKHN0b3AsIGppZmZpZXMpYC4uLndhaXQsIGhhbmcgb24uIGB0aW1lX2FmdGVyKGEsIGIpYCByZXR1cm5zIHRydWUgKmlmKiBgYWAgaXMgbGF0ZXIgdGhhbiBgYmAuIFNvLCBgdGltZV9hZnRlcihzdG9wLCBqaWZmaWVzKWAgbWVhbnMgYHN0b3BgIGlzIGxhdGVyIHRoYW4gYGppZmZpZXNgLiBCdXQgSSB0aGluayB0aGUgKmludGVuZGVkKiBiZWhhdmlvciB3YXMgdG8gYnJlYWsgb3V0IG9mIHRoZSBsb29wIHdoZW4gdGhlIGFsbG90dGVkIHRpbWUgaGFkIGVsYXBzZWQsIHRoYXQgaXMsIHdoZW4gYGppZmZpZXNgIGlzIGdyZWF0ZXIgdGhhbiBgc3RvcGAuIFRoZXkgcmVhbGx5IHNob3VsZCBoYXZlIHVzZWQgYHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcClgIHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgZXhpdCBjb25kaXRpb24uCgpUaGlzIGlzIGEgY2xlYXItY3V0IGZ1bmN0aW9uYWwgZml4LiBJdCYjMzk7cyBjb3JyZWN0aW5nIHRoZSBsb29wIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiB3aXRoaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLCB3aGljaCBpcyBjcml0aWNhbCB0byB0aGUgZXZlbnQgY2FjaGUmIzM5O3MgaW50ZWdyaXR5LiBDaGFuZ2luZyB0aGUgYXJndW1lbnRzIGluIHRoYXQgY29tcGFyaXNvbiBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RzIHRoZSBsb2dpYyB0aGF0IGRldGVybWluZXMgaG93IGxvbmcgdGhlIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCB0YXNrIHJ1bnMuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggd2FycmFudHMgY2xvc2VyIGV4YW1pbmF0aW9uIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIG1hcmtpbmcgaXQgYXMgJiMzNDtXb3J0aEZ1enppbmc6IHRydWUuJiMzNDsgVGhlIGZvY2FsIHBvaW50cyBmb3IgZnV6emluZyB3aWxsIGJlIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCBhbmQsIHByb2JhYmx5IGluIHN1cHBvcnQsIGBlY2FjaGVfd29ya2AuIEFsc28sIHRvIGVuc3VyZSB0aGlzIHBhdGNoIGlzIGFjdGl2YXRlZCBJJiMzOTtsbCBzZXQgYEVuYWJsZUNvbmZpZ3M6IE5GX0NPTk5UUkFDS19FVkVOVFNgLiBUaGUgYFJlYXNvbmluZ2AgaXMgdGhhdCBpdCYjMzk7cyBhIGNyaXRpY2FsIGZpeCB0byBhIGxvb3AgdGVybWluYXRpb24gY29uZGl0aW9uIGluIHRoZSBjb25udHJhY2sgZXZlbnQgY2FjaGUgbG9naWMuIFRoaXMgY291bGQgZGVmaW5pdGVseSBpbnRyb2R1Y2UgaW50ZXJlc3RpbmcgYmVoYXZpb3JzIHVuZGVyIGxvYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0tfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZWNhY2hlX3dvcmtfZXZpY3RfbGlzdCYjMzQ7LAogICAgJiMzNDtlY2FjaGVfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvb3AgdGVybWluYXRpb24gY29uZGl0aW9uIGluIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCBieSBjb3JyZWN0aW5nIHRoZSBhcmd1bWVudHMgdG8gYHRpbWVfYWZ0ZXJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXZlbnQgY2FjaGUgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlY2FjaGVfd29ya19ldmljdF9saXN0JiMzNDssCiAgICAmIzM0O2VjYWNoZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGJ5IGNvcnJlY3RpbmcgdGhlIGFyZ3VtZW50cyB0byBgdGltZV9hZnRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjU0OjA1LjE3NjU2NzkzMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzkzODE0NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlY2FjaGVfd29ya19ldmljdF9saXN0XCIsXG4gICAgXCJlY2FjaGVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGJ5IGNvcnJlY3RpbmcgdGhlIGFyZ3VtZW50cyB0byBgdGltZV9hZnRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MDUuMTc2NTc0MjgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODUyNzgzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNWUyMWJkMDM4ZjM3MjBiZjU5NDM2ZmRlMGViY2Q1YTcyNGY1ZTlkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDcgMTg6NTQ6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xcbmluZGV4IDlkZjE1OTQ0OGI4OTc5Li5jYzhkOGU4NTE2OWZiMyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXFxuQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGVudW0gcmV0cnlfc3RhdGUgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdChzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCAqY25ldClcXG4gXFx0XFx0aGxpc3RfbnVsbHNfZGVsX3JjdShcXHUwMDI2Y3QtXFx1MDAzZXR1cGxlaGFzaFtJUF9DVF9ESVJfT1JJR0lOQUxdLmhubm9kZSk7XFxuIFxcdFxcdGhsaXN0X251bGxzX2FkZF9oZWFkKFxcdTAwMjZjdC1cXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9SRVBMWV0uaG5ub2RlLCBcXHUwMDI2ZXZpY3RlZF9saXN0KTtcXG4gXFxuLVxcdFxcdGlmICh0aW1lX2FmdGVyKHN0b3AsIGppZmZpZXMpKSB7XFxuK1xcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHN0b3ApKSB7XFxuIFxcdFxcdFxcdHJldCA9IFNUQVRFX1JFU1RBUlQ7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjU0OjA1Ljg2MjU4Nzk5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxMDc3ODQ1NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVjYWNoZV93b3JrX2V2aWN0X2xpc3RcIixcbiAgICBcImVjYWNoZV93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb29wIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiBpbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgYnkgY29ycmVjdGluZyB0aGUgYXJndW1lbnRzIHRvIGB0aW1lX2FmdGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV2ZW50IGNhY2hlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE1ZTIxYmQwMzhmMzcyMGJmNTk0MzZmZGUwZWJjZDVhNzI0ZjVlOWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDE4OjU0OjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xuaW5kZXggOWRmMTU5NDQ4Yjg5NzkuLmNjOGQ4ZTg1MTY5ZmIzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXG5AQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgZW51bSByZXRyeV9zdGF0ZSBlY2FjaGVfd29ya19ldmljdF9saXN0KHN0cnVjdCBuZl9jb25udHJhY2tfbmV0ICpjbmV0KVxuIFx0XHRobGlzdF9udWxsc19kZWxfcmN1KFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFtJUF9DVF9ESVJfT1JJR0lOQUxdLmhubm9kZSk7XG4gXHRcdGhsaXN0X251bGxzX2FkZF9oZWFkKFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFtJUF9DVF9ESVJfUkVQTFldLmhubm9kZSwgXHUwMDI2ZXZpY3RlZF9saXN0KTtcbiBcbi1cdFx0aWYgKHRpbWVfYWZ0ZXIoc3RvcCwgamlmZmllcykpIHtcbitcdFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcCkpIHtcbiBcdFx0XHRyZXQgPSBTVEFURV9SRVNUQVJUO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDowNS44NjI1ODk1NThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDc2MTU4NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25udHJhY2sgRWNhY2hlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBtb2RpZnlpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29uZGl0aW9uYWwgd2l0aGluIHRoZSBsb29wOiBpdCBzZWVtcyB0aGV5J3ZlIGZsaXBwZWQgdGhlIGxvZ2ljIGZyb20gYHRpbWVfYWZ0ZXIoc3RvcCwgamlmZmllcylgIHRvIGB0aW1lX2FmdGVyKGppZmZpZXMsIHN0b3ApYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbiB0byB0aGUgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucz8gV2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIGlmIHRoaXMgaW50cm9kdWNlcyBhIGJ1Zy5cblxuRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gU28sIEknbGwgZ28gc3RyYWlnaHQgdG8gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZWxldmFudCBhbmQgZXhhY3RseSB3aGF0IGBlY2FjaGVfd29ya19ldmljdF9saXN0YCBpcyBzdXBwb3NlZCB0byBkby4gQSBxdWljayBzY2FuIHNob3VsZCBhbHNvIHBvaW50IG1lIHRvIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhpcyBvbmUuIENvbnRleHQgaXMgZXZlcnl0aGluZy4gSSBoYXZlIHRvIHNlZSBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDoxMi45Mzg3NTAxNjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4MDAzMzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVjYWNoZV93b3JrX2V2aWN0X2xpc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9NDg9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubl9wZXJuZXRfZWNhY2hlKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTUwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjUxOnN0YXRpYyBlbnVtIHJldHJ5X3N0YXRlIGVjYWNoZV93b3JrX2V2aWN0X2xpc3Qoc3RydWN0IG5mX2Nvbm50cmFja19uZXQgKmNuZXQpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtNTIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9MTA2PXN0YXRpYyB2b2lkIGVjYWNoZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTExMC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMTE6XFx0cmV0ID0gZWNhY2hlX3dvcmtfZXZpY3RfbGlzdChjbmV0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMTItXFx0c3dpdGNoIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MTMuMTQ2NzYwMjY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzczMDM5OTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBpbnRlcm5hbHM6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbm5lY3Rpb24gVHJhY2tpbmcgRXZpY3Rpb24gTWVjaGFuaXNtKipcblxuQWxyaWdodCwgc28gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGlzIGRlZmluaXRlbHkgYmVpbmcgaW52b2tlZCBmcm9tIGBlY2FjaGVfd29ya2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nJ3MgZXZpY3Rpb24gcHJvY2VzcywgYW5kIGl0J3MgYmVpbmcgbWFuYWdlZCB0aHJvdWdoIHRoZSB3b3JrcXVldWUuIE1ha2VzIHNlbnNlLCB0aGF0J3MgYSBjb21tb24gcGF0dGVybiBmb3IgYXN5bmNocm9ub3VzIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBrZXJuZWwuIE5vdywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIHNob3VsZCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIHNldHRpbmdzIHJlbGF0ZWQgdG8gYG5mX2Nvbm50cmFja19lY2FjaGUuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHJlbGV2YW50IGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgYnVpbGQtdGltZSBmbGFncyB0aGF0IG1pZ2h0IGFmZmVjdCB0aGlzIGNvZGUgcGF0aC4gS25vd2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIHdpbGwgaW5mb3JtIGhvdyB0aGUgY29kZSBpcyBjb21waWxlZC4gVGhpcyB3aWxsIGxldCBtZSBrbm93IHRoZSBjb250ZXh0IG9mIHRoZSBidWlsZC4gR29vZCwgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDoxNi44NzcxNjI1NzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2NzEyMDM4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfZWNhY2hlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEyPW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfVElNRVNUQU1QKSArPSBuZl9jb25udHJhY2tfdGltZXN0YW1wLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEzOm5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTKSArPSBuZl9jb25udHJhY2tfZWNhY2hlLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0LW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTKSArPSBuZl9jb25udHJhY2tfbGFiZWxzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MTguNjQ0Mjg4MzI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxMjcxMDY3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbm5lY3Rpb24gVHJhY2tpbmcgRXZlbnRzKipcblxuUmlnaHQsIHNvIGBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU2AgaXMgcG9wcGluZyB1cCBhcyBhIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gaXRlbS4gTWFrZXMgc2Vuc2UsIHByb2JhYmx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWVjaGFuaXNtIEknbSB3b3JraW5nIHdpdGguIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcXVpY2tseSB2ZXJpZnkgaWYgdGhpcyBzcGVjaWZpYyBjb25maWcgaXRlbSBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBvcHRpb25zIGl0IHJlbGllcyBvbiB0byBiZSBidWlsdCBjb3JyZWN0bHkuIFRoaXMgd2lsbCBzYXZlIG1lIGZyb20gYSBsb3Qgb2YgaGVhZC1zY3JhdGNoaW5nIGxhdGVyIGlmIHRoZXJlIGFyZSBjYXNjYWRpbmcgYnVpbGQgZXJyb3JzLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyBzYXkgYWJvdXQgaXRzIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjU0OjIyLjg1NzAwMTM1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTM3NDI2NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xNDg9Y29uZmlnIE5GX0NPTk5UUkFDS19QUk9DRlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1Nzpjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjU0OjIzLjI3MDc0OTA5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzE5NjI5NTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29ubmVjdGlvbiBUcmFja2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBib29sZWFuIGNvbmZpZywgYE5GX0NPTk5UUkFDS2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIGJlaGF2aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGlnIGludG8gYGVjYWNoZV93b3JrYCBhbmQgYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLiBJIHNlZSB0aGF0IGBlY2FjaGVfd29ya19ldmljdF9saXN0YCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIEkgY2FuJ3QgdHJhY2UgaXQgZGlyZWN0bHkgZnJvbSBvdGhlciBtb2R1bGVzIGJlY2F1c2UgaXQncyBub3QgZXhwb3J0ZWQuIEFscmlnaHQsIHRoYXQgZm9jdXNlcyBtZSBvbiBlaXRoZXIgYGVjYWNoZV93b3JrYCBvciBwbGFjZXMgdGhhdCBjYWxsIGl0LiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBgZWNhY2hlX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0IGxpa2VseSBpc24ndCBjYWxsZWQgZGlyZWN0bHkgYnkgYSBzeXN0ZW0gY2FsbC4gU28sIGluc3RlYWQgb2YgbG9va2luZyBmb3IgdGhlIGRpcmVjdCBjYWxsLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGdldHMgc2NoZWR1bGVkLiBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbHMgdG8gaXQsIHNvIEkgY2FuIHVuZGVyc3RhbmQgaG93IGl0J3MgYmVpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI5OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDozNC41OTAzODA4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MTA4NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVjYWNoZV93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jPTQ4PUVYUE9SVF9TWU1CT0xfR1BMKG5mX2Nvbm5fcGVybmV0X2VjYWNoZSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy01MC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzo1MTpzdGF0aWMgZW51bSByZXRyeV9zdGF0ZSBlY2FjaGVfd29ya19ldmljdF9saXN0KHN0cnVjdCBuZl9jb25udHJhY2tfbmV0ICpjbmV0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTUyLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTEwNS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMDY6c3RhdGljIHZvaWQgZWNhY2hlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTEwNy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMTAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MTExOlxcdHJldCA9IGVjYWNoZV93b3JrX2V2aWN0X2xpc3QoY25ldCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMTEyLVxcdHN3aXRjaCAocmV0KSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0yOTQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubnRyYWNrX3VucmVnaXN0ZXJfbm90aWZpZXIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoyOTY6dm9pZCBuZl9jb25udHJhY2tfZWNhY2hlX3dvcmsoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mX2N0X2VjYWNoZV9zdGF0ZSBzdGF0ZSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0yOTcte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9MzY1PXZvaWQgbmZfY29ubnRyYWNrX2VjYWNoZV9wZXJuZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNzAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MzcxOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZjbmV0LVxcdTAwM2VlY2FjaGUuZHdvcmssIGVjYWNoZV93b3JrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNzItXFx0SU5JVF9ITElTVF9OVUxMU19IRUFEKFxcdTAwMjZjbmV0LVxcdTAwM2VlY2FjaGUuZHlpbmdfbGlzdCwgRFlJTkdfTlVMTFNfVkFMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MzUuMDY4NDk1MjI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTgyMzU4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGdvaW5nIG9uIHdpdGggYG5mX2Nvbm50cmFja19lY2FjaGVfd29ya2AuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgdHJhY2UgdGhpcyBmdW5jdGlvbi4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaXRzIGNhbGwgc2l0ZXMgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN5c3RlbS4gSSB3YW50IHRvIHNlZSB3aGF0IHRyaWdnZXJzIGl0IGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIGNydWNpYWwgaGVyZTsgaXQgZ2l2ZXMgbWUgaW1tZWRpYXRlIGluc2lnaHQgaW50byB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIHdoYXQgaW50ZXJhY3Rpb25zIGFyZSBhdCBwbGF5LiBMb29raW5nIGF0IHRoZSBjb2RlIGFyb3VuZCB0aGUgY2FsbHMgd2lsbCBpbGx1bWluYXRlIGhvdyBpdCdzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBjb25udHJhY2sgZnJhbWV3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjQzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MzguODY2NzMzMjQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzQwNDIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfZWNhY2hlX3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jPTY2Mj1ib29sIG5mX2N0X2RlbGV0ZShzdHJ1Y3QgbmZfY29ubiAqY3QsIHUzMiBwb3J0aWQsIGludCByZXBvcnQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjg5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzo2OTA6XFx0XFx0bmZfY29ubnRyYWNrX2VjYWNoZV93b3JrKG5mX2N0X25ldChjdCksIE5GQ1RfRUNBQ0hFX0RFU1RST1lfRkFJTCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTY5MS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjk1LVxcdGlmIChuZl9jb25udHJhY2tfZWNhY2hlX2R3b3JrX3BlbmRpbmcobmV0KSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM6Njk2OlxcdFxcdG5mX2Nvbm50cmFja19lY2FjaGVfd29yayhuZXQsIE5GQ1RfRUNBQ0hFX0RFU1RST1lfU0VOVCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTY5Ny1cXHRuZl9jdF9kZWxldGVfZnJvbV9saXN0cyhjdCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0yOTQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubnRyYWNrX3VucmVnaXN0ZXJfbm90aWZpZXIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoyOTY6dm9pZCBuZl9jb25udHJhY2tfZWNhY2hlX3dvcmsoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mX2N0X2VjYWNoZV9zdGF0ZSBzdGF0ZSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0yOTcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDozOC45NjAxNDM5OTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY3Njk3OTQwNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubnRyYWNrIEV2ZW50IFN5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IHRoZXNlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzIGFyZSBtYW5hZ2VkLCBzcGVjaWZpY2FsbHkgdGhlIGBuZl9jb25udHJhY2tfZWNhY2hlX3dvcmtgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIGZyb20gYG5mX2N0X2RlbGV0ZWAsIHdoaWNoIHN1Z2dlc3RzIGEgY2xlYW51cCBvciBldmljdGlvbiBwcm9jZXNzLiBUaGUgY3J1Y2lhbCBmdW5jdGlvbiB0byBleGFtaW5lIGhlcmUgaXMgYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLCBhbmQgdGhlbiBieSBleHRlbnNpb24sIGBlY2FjaGVfd29ya2AgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlLlxuXG5UaGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbiBzZWVtcyB0byBiZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2AuIE5vdywgYSBxdWljayBzYW5pdHkgY2hlY2s6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCBhbG1vc3QgY2VydGFpbmx5IGRlcGVuZHMgb24gYE5GX0NPTk5UUkFDS2AsIHJpZ2h0PyBJdCB3b3VsZG7igJl0IG1ha2Ugc2Vuc2Ugb3RoZXJ3aXNlLiBKdXN0IG1ha2luZyBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcuIEknbGwgbmVlZCB0byBsb29rIGF0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0aGF0IG1pZ2h0IGFmZmVjdCB0aGlzIGJlaGF2aW9yLiBHb3R0YSBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDo1NS43Mjk5NDAxNzdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxuIDE1MTpcXHRcXHRoZWxwXFxuIDE1MjpcXHRcXHRUaGlzIG9wdGlvbiBlbmFibGVzIGZvciB0aGUgbGlzdCBvZiBrbm93biBjb25udHJhY2sgZW50cmllc1xcbiAxNTM6XFx0XFx0dG8gYmUgc2hvd24gaW4gcHJvY2ZzIHVuZGVyIG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLiBUaGlzXFxuIDE1NDpcXHRcXHRpcyBjb25zaWRlcmVkIG9ic29sZXRlIGluIGZhdm9yIG9mIHVzaW5nIHRoZSBjb25udHJhY2soOClcXG4gMTU1OlxcdFxcdHRvb2wgd2hpY2ggdXNlcyBOZXRsaW5rLlxcbiAxNTY6XFx0XFxuIDE1NzpcXHRjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbiAxNTg6XFx0XFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuIDE1OTpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAxNjA6XFx0XFx0aGVscFxcbiAxNjE6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBjb2RlIHdpbGxcXG4gMTYyOlxcdFxcdCAgcHJvdmlkZSBhIG5vdGlmaWVyIGNoYWluIHRoYXQgY2FuIGJlIHVzZWQgYnkgb3RoZXIga2VybmVsIGNvZGVcXG4gMTYzOlxcdFxcdCAgdG8gZ2V0IG5vdGlmaWVkIGFib3V0IGNoYW5nZXMgaW4gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUuXFxuIDE2NDpcXHRcXG4gMTY1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgYE4nLlxcbiAxNjY6XFx0XFxuIDE2NzpcXHRjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVPVVRcXG4gMTY4OlxcdFxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQnXFxuIDE2OTpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDo1NS43MzAwNjY0MzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1MzUyMjE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb25udHJhY2sgRXZlbnQgQ2FjaGUgRml4KipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGBORl9DT05OVFJBQ0tfRVZFTlRTYCBjb25maWd1cmF0aW9uIG9wdGlvbiDigJMgdGhhdCdzIHRoZSBrZXkgaGVyZS4gVGhlIGZ1bmN0aW9uIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCAqaXMqIGRlZmluaXRlbHkgYmVpbmcgY2FsbGVkIGFuZCBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQsIHdoaWNoIGlzIGdvb2QuIFRoZSBwYXRjaCBpdHNlbGYgaXMgdGFja2xpbmcgYSBzdWJ0bGUsIGJ1dCBwb3RlbnRpYWxseSBuYXN0eSwgYnVnLlxuXG5JdCdzIHVzaW5nIGB0aW1lX2FmdGVyKHN0b3AsIGppZmZpZXMpYC4uLndhaXQsIGhhbmcgb24uIGB0aW1lX2FmdGVyKGEsIGIpYCByZXR1cm5zIHRydWUgKmlmKiBgYWAgaXMgbGF0ZXIgdGhhbiBgYmAuIFNvLCBgdGltZV9hZnRlcihzdG9wLCBqaWZmaWVzKWAgbWVhbnMgYHN0b3BgIGlzIGxhdGVyIHRoYW4gYGppZmZpZXNgLiBCdXQgSSB0aGluayB0aGUgKmludGVuZGVkKiBiZWhhdmlvciB3YXMgdG8gYnJlYWsgb3V0IG9mIHRoZSBsb29wIHdoZW4gdGhlIGFsbG90dGVkIHRpbWUgaGFkIGVsYXBzZWQsIHRoYXQgaXMsIHdoZW4gYGppZmZpZXNgIGlzIGdyZWF0ZXIgdGhhbiBgc3RvcGAuIFRoZXkgcmVhbGx5IHNob3VsZCBoYXZlIHVzZWQgYHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcClgIHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgZXhpdCBjb25kaXRpb24uXG5cblRoaXMgaXMgYSBjbGVhci1jdXQgZnVuY3Rpb25hbCBmaXguIEl0J3MgY29ycmVjdGluZyB0aGUgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gd2l0aGluIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCwgd2hpY2ggaXMgY3JpdGljYWwgdG8gdGhlIGV2ZW50IGNhY2hlJ3MgaW50ZWdyaXR5LiBDaGFuZ2luZyB0aGUgYXJndW1lbnRzIGluIHRoYXQgY29tcGFyaXNvbiBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RzIHRoZSBsb2dpYyB0aGF0IGRldGVybWluZXMgaG93IGxvbmcgdGhlIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCB0YXNrIHJ1bnMuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCB3YXJyYW50cyBjbG9zZXIgZXhhbWluYXRpb24gZm9yIGZ1enppbmcgcG90ZW50aWFsLiBTcGVjaWZpY2FsbHksIEknbSBtYXJraW5nIGl0IGFzIFwiV29ydGhGdXp6aW5nOiB0cnVlLlwiIFRoZSBmb2NhbCBwb2ludHMgZm9yIGZ1enppbmcgd2lsbCBiZSBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgYW5kLCBwcm9iYWJseSBpbiBzdXBwb3J0LCBgZWNhY2hlX3dvcmtgLiBBbHNvLCB0byBlbnN1cmUgdGhpcyBwYXRjaCBpcyBhY3RpdmF0ZWQgSSdsbCBzZXQgYEVuYWJsZUNvbmZpZ3M6IE5GX0NPTk5UUkFDS19FVkVOVFNgLiBUaGUgYFJlYXNvbmluZ2AgaXMgdGhhdCBpdCdzIGEgY3JpdGljYWwgZml4IHRvIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gdGhlIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy4gVGhpcyBjb3VsZCBkZWZpbml0ZWx5IGludHJvZHVjZSBpbnRlcmVzdGluZyBiZWhhdmlvcnMgdW5kZXIgbG9hZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU0NSwiT3V0cHV0VG9rZW5zIjoxMDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NTowMS44ODM1OTExNjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njc3NDA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVjYWNoZV93b3JrX2V2aWN0X2xpc3RcIixcbiAgICBcImVjYWNoZV93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb29wIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiBpbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgYnkgY29ycmVjdGluZyB0aGUgYXJndW1lbnRzIHRvIGB0aW1lX2FmdGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV2ZW50IGNhY2hlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlY2FjaGVfd29ya19ldmljdF9saXN0XCIsXG4gICAgXCJlY2FjaGVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGJ5IGNvcnJlY3RpbmcgdGhlIGFyZ3VtZW50cyB0byBgdGltZV9hZnRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 18:36:09 +0000 UTC FinishedAt: 2026-07-07 18:55:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_EVENTS" ], "series_id": "16ee4a99-a1b3-4914-8db6-a899e95a8843" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ecache_work_evict_list", "ecache_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlY2FjaGVfd29ya19ldmljdF9saXN0JiMzNDssCiAgICAmIzM0O2VjYWNoZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGJ5IGNvcnJlY3RpbmcgdGhlIGFyZ3VtZW50cyB0byBgdGltZV9hZnRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE1ZTIxYmQwMzhmMzcyMGJmNTk0MzZmZGUwZWJjZDVhNzI0ZjVlOWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDE4OjU0OjAzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcbmluZGV4IDlkZjE1OTQ0OGI4OTc5Li5jYzhkOGU4NTE2OWZiMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xuQEAgLTc3LDcgJiM0Mzs3Nyw3IEBAIHN0YXRpYyBlbnVtIHJldHJ5X3N0YXRlIGVjYWNoZV93b3JrX2V2aWN0X2xpc3Qoc3RydWN0IG5mX2Nvbm50cmFja19uZXQgKmNuZXQpXG4gXHRcdGhsaXN0X251bGxzX2RlbF9yY3UoXHUwMDI2Y3QtXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9PUklHSU5BTF0uaG5ub2RlKTtcbiBcdFx0aGxpc3RfbnVsbHNfYWRkX2hlYWQoXHUwMDI2Y3QtXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9SRVBMWV0uaG5ub2RlLCBcdTAwMjZldmljdGVkX2xpc3QpO1xuIFxuLVx0XHRpZiAodGltZV9hZnRlcihzdG9wLCBqaWZmaWVzKSkge1xuJiM0MztcdFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcCkpIHtcbiBcdFx0XHRyZXQgPSBTVEFURV9SRVNUQVJUO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VjYWNoZV93b3JrX2V2aWN0X2xpc3QmIzM0OywKICAgICYjMzQ7ZWNhY2hlX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb29wIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiBpbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgYnkgY29ycmVjdGluZyB0aGUgYXJndW1lbnRzIHRvIGB0aW1lX2FmdGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV2ZW50IGNhY2hlIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNWUyMWJkMDM4ZjM3MjBiZjU5NDM2ZmRlMGViY2Q1YTcyNGY1ZTlkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAxODo1NDowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMKaW5kZXggOWRmMTU5NDQ4Yjg5NzkuLmNjOGQ4ZTg1MTY5ZmIzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYwpAQCAtNzcsNyAmIzQzOzc3LDcgQEAgc3RhdGljIGVudW0gcmV0cnlfc3RhdGUgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdChzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCAqY25ldCkKIAkJaGxpc3RfbnVsbHNfZGVsX3JjdSgmYW1wO2N0LSZndDt0dXBsZWhhc2hbSVBfQ1RfRElSX09SSUdJTkFMXS5obm5vZGUpOwogCQlobGlzdF9udWxsc19hZGRfaGVhZCgmYW1wO2N0LSZndDt0dXBsZWhhc2hbSVBfQ1RfRElSX1JFUExZXS5obm5vZGUsICZhbXA7ZXZpY3RlZF9saXN0KTsKIAotCQlpZiAodGltZV9hZnRlcihzdG9wLCBqaWZmaWVzKSkgewomIzQzOwkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcCkpIHsKIAkJCXJldCA9IFNUQVRFX1JFU1RBUlQ7CiAJCQlicmVhazsKIAkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODkzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25udHJhY2sgRWNhY2hlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGluIGBlY2FjaGVfd29ya19ldmljdF9saXN0YC4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb25kaXRpb25hbCB3aXRoaW4gdGhlIGxvb3A6IGl0IHNlZW1zIHRoZXkmIzM5O3ZlIGZsaXBwZWQgdGhlIGxvZ2ljIGZyb20gYHRpbWVfYWZ0ZXIoc3RvcCwgamlmZmllcylgIHRvIGB0aW1lX2FmdGVyKGppZmZpZXMsIHN0b3ApYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbiB0byB0aGUgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucz8gV2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIGlmIHRoaXMgaW50cm9kdWNlcyBhIGJ1Zy4KCkZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFNvLCBJJiMzOTtsbCBnbyBzdHJhaWdodCB0byBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlbGV2YW50IGFuZCBleGFjdGx5IHdoYXQgYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGlzIHN1cHBvc2VkIHRvIGRvLiBBIHF1aWNrIHNjYW4gc2hvdWxkIGFsc28gcG9pbnQgbWUgdG8gYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGlzIG9uZS4gQ29udGV4dCBpcyBldmVyeXRoaW5nLiBJIGhhdmUgdG8gc2VlIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlY2FjaGVfd29ya19ldmljdF9saXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9NDg9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubl9wZXJuZXRfZWNhY2hlKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy01MC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjUxOnN0YXRpYyBlbnVtIHJldHJ5X3N0YXRlIGVjYWNoZV93b3JrX2V2aWN0X2xpc3Qoc3RydWN0IG5mX2Nvbm50cmFja19uZXQgKmNuZXQpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy01Mi17XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9MTA2PXN0YXRpYyB2b2lkIGVjYWNoZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMTAtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMTE6XHRyZXQgPSBlY2FjaGVfd29ya19ldmljdF9saXN0KGNuZXQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMTEyLVx0c3dpdGNoIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBpbnRlcm5hbHM6CgoqKkRpdmluZyBpbnRvIHRoZSBDb25uZWN0aW9uIFRyYWNraW5nIEV2aWN0aW9uIE1lY2hhbmlzbSoqCgpBbHJpZ2h0LCBzbyBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgaXMgZGVmaW5pdGVseSBiZWluZyBpbnZva2VkIGZyb20gYGVjYWNoZV93b3JrYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcmIzM5O3MgZXZpY3Rpb24gcHJvY2VzcywgYW5kIGl0JiMzOTtzIGJlaW5nIG1hbmFnZWQgdGhyb3VnaCB0aGUgd29ya3F1ZXVlLiBNYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBhc3luY2hyb25vdXMgcHJvY2Vzc2luZyB3aXRoaW4gdGhlIGtlcm5lbC4gTm93LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MgcmVsYXRlZCB0byBgbmZfY29ubnRyYWNrX2VjYWNoZS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBhbmQgdW5kZXJzdGFuZCBhbnkgZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbCBidWlsZC10aW1lIGZsYWdzIHRoYXQgbWlnaHQgYWZmZWN0IHRoaXMgY29kZSBwYXRoLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBpbmZvcm0gaG93IHRoZSBjb2RlIGlzIGNvbXBpbGVkLiBUaGlzIHdpbGwgbGV0IG1lIGtub3cgdGhlIGNvbnRleHQgb2YgdGhlIGJ1aWxkLiBHb29kLCB0aGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25udHJhY2tfZWNhY2hlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTI9bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19USU1FU1RBTVApICYjNDM7PSBuZl9jb25udHJhY2tfdGltZXN0YW1wLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTM6bmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFMpICYjNDM7PSBuZl9jb25udHJhY2tfZWNhY2hlLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQtbmZfY29ubnRyYWNrLSQoQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFMpICYjNDM7PSBuZl9jb25udHJhY2tfbGFiZWxzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxODo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDAxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25uZWN0aW9uIFRyYWNraW5nIEV2ZW50cyoqCgpSaWdodCwgc28gYENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTYCBpcyBwb3BwaW5nIHVwIGFzIGEgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBpdGVtLiBNYWtlcyBzZW5zZSwgcHJvYmFibHkgcmVsYXRlZCB0byBzb21lIGtpbmQgb2YgY29ubmVjdGlvbiB0cmFja2luZyBtZWNoYW5pc20gSSYjMzk7bSB3b3JraW5nIHdpdGguIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcXVpY2tseSB2ZXJpZnkgaWYgdGhpcyBzcGVjaWZpYyBjb25maWcgaXRlbSBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBvcHRpb25zIGl0IHJlbGllcyBvbiB0byBiZSBidWlsdCBjb3JyZWN0bHkuIFRoaXMgd2lsbCBzYXZlIG1lIGZyb20gYSBsb3Qgb2YgaGVhZC1zY3JhdGNoaW5nIGxhdGVyIGlmIHRoZXJlIGFyZSBjYXNjYWRpbmcgYnVpbGQgZXJyb3JzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgc2F5IGFib3V0IGl0cyBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTE0OD1jb25maWcgTkZfQ09OTlRSQUNLX1BST0NGU1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyOTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25uZWN0aW9uIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYm9vbGVhbiBjb25maWcsIGBORl9DT05OVFJBQ0tgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgYmVoYXZpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaWcgaW50byBgZWNhY2hlX3dvcmtgIGFuZCBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAuIEkgc2VlIHRoYXQgYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBjYW4mIzM5O3QgdHJhY2UgaXQgZGlyZWN0bHkgZnJvbSBvdGhlciBtb2R1bGVzIGJlY2F1c2UgaXQmIzM5O3Mgbm90IGV4cG9ydGVkLiBBbHJpZ2h0LCB0aGF0IGZvY3VzZXMgbWUgb24gZWl0aGVyIGBlY2FjaGVfd29ya2Agb3IgcGxhY2VzIHRoYXQgY2FsbCBpdC4gVGhlbiBJIHJlbWVtYmVyIHRoYXQgYGVjYWNoZV93b3JrYCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCBsaWtlbHkgaXNuJiMzOTt0IGNhbGxlZCBkaXJlY3RseSBieSBhIHN5c3RlbSBjYWxsLiBTbywgaW5zdGVhZCBvZiBsb29raW5nIGZvciB0aGUgZGlyZWN0IGNhbGwsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZ2V0cyBzY2hlZHVsZWQuIEkgbmVlZCB0byBmaW5kIHRoZSBjYWxscyB0byBpdCwgc28gSSBjYW4gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZWNhY2hlX3dvcmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz00OD1FWFBPUlRfU1lNQk9MX0dQTChuZl9jb25uX3Blcm5ldF9lY2FjaGUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTUwLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6NTE6c3RhdGljIGVudW0gcmV0cnlfc3RhdGUgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdChzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCAqY25ldClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTUyLXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMDUtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMDY6c3RhdGljIHZvaWQgZWNhY2hlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMTA3LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMTAtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMTE6XHRyZXQgPSBlY2FjaGVfd29ya19ldmljdF9saXN0KGNuZXQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMTEyLVx0c3dpdGNoIChyZXQpIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0yOTQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubnRyYWNrX3VucmVnaXN0ZXJfbm90aWZpZXIpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMjk1LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6Mjk2OnZvaWQgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrKHN0cnVjdCBuZXQgKm5ldCwgZW51bSBuZl9jdF9lY2FjaGVfc3RhdGUgc3RhdGUpXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0yOTcte1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jPTM2NT12b2lkIG5mX2Nvbm50cmFja19lY2FjaGVfcGVybmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTM3MC1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjM3MTpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmNuZXQtXHUwMDNlZWNhY2hlLmR3b3JrLCBlY2FjaGVfd29yayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNzItXHRJTklUX0hMSVNUX05VTExTX0hFQUQoXHUwMDI2Y25ldC1cdTAwM2VlY2FjaGUuZHlpbmdfbGlzdCwgRFlJTkdfTlVMTFNfVkFMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI0MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrYC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQmIzM5O3MgdHJhY2UgdGhpcyBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGl0cyBjYWxsIHNpdGVzIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzeXN0ZW0uIEkgd2FudCB0byBzZWUgd2hhdCB0cmlnZ2VycyBpdCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzdGFjayBpcyBjcnVjaWFsIGhlcmU7IGl0IGdpdmVzIG1lIGltbWVkaWF0ZSBpbnNpZ2h0IGludG8gdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCB3aGF0IGludGVyYWN0aW9ucyBhcmUgYXQgcGxheS4gTG9va2luZyBhdCB0aGUgY29kZSBhcm91bmQgdGhlIGNhbGxzIHdpbGwgaWxsdW1pbmF0ZSBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGNvbm50cmFjayBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm50cmFja19lY2FjaGVfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz02NjI9Ym9vbCBuZl9jdF9kZWxldGUoc3RydWN0IG5mX2Nvbm4gKmN0LCB1MzIgcG9ydGlkLCBpbnQgcmVwb3J0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy02ODktXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM6NjkwOlx0XHRuZl9jb25udHJhY2tfZWNhY2hlX3dvcmsobmZfY3RfbmV0KGN0KSwgTkZDVF9FQ0FDSEVfREVTVFJPWV9GQUlMKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy02OTEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjk1LVx0aWYgKG5mX2Nvbm50cmFja19lY2FjaGVfZHdvcmtfcGVuZGluZyhuZXQpKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjY5NjpcdFx0bmZfY29ubnRyYWNrX2VjYWNoZV93b3JrKG5ldCwgTkZDVF9FQ0FDSEVfREVTVFJPWV9TRU5UKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy02OTctXHRuZl9jdF9kZWxldGVfZnJvbV9saXN0cyhjdCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9Mjk0PUVYUE9SVF9TWU1CT0xfR1BMKG5mX2Nvbm50cmFja191bnJlZ2lzdGVyX25vdGlmaWVyKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTI5NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjI5Njp2b2lkIG5mX2Nvbm50cmFja19lY2FjaGVfd29yayhzdHJ1Y3QgbmV0ICpuZXQsIGVudW0gbmZfY3RfZWNhY2hlX3N0YXRlIHN0YXRlKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMjk3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg1OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGZpbHRlciBDb25udHJhY2sgRXZlbnQgU3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIGhvdyB0aGVzZSBjb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50cyBhcmUgbWFuYWdlZCwgc3BlY2lmaWNhbGx5IHRoZSBgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgbmZfY3RfZGVsZXRlYCwgd2hpY2ggc3VnZ2VzdHMgYSBjbGVhbnVwIG9yIGV2aWN0aW9uIHByb2Nlc3MuIFRoZSBjcnVjaWFsIGZ1bmN0aW9uIHRvIGV4YW1pbmUgaGVyZSBpcyBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAsIGFuZCB0aGVuIGJ5IGV4dGVuc2lvbiwgYGVjYWNoZV93b3JrYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZWxhdGUuCgpUaGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbiBzZWVtcyB0byBiZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2AuIE5vdywgYSBxdWljayBzYW5pdHkgY2hlY2s6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCBhbG1vc3QgY2VydGFpbmx5IGRlcGVuZHMgb24gYE5GX0NPTk5UUkFDS2AsIHJpZ2h0PyBJdCB3b3VsZG7igJl0IG1ha2Ugc2Vuc2Ugb3RoZXJ3aXNlLiBKdXN0IG1ha2luZyBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy4KCkxldCBtZSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciByZWxhdGVkIG9wdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhpcyBiZWhhdmlvci4gR290dGEgZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNTA6XHRcdGRlcGVuZHMgb24gUFJPQ19GU1xuIDE1MTpcdFx0aGVscFxuIDE1MjpcdFx0VGhpcyBvcHRpb24gZW5hYmxlcyBmb3IgdGhlIGxpc3Qgb2Yga25vd24gY29ubnRyYWNrIGVudHJpZXNcbiAxNTM6XHRcdHRvIGJlIHNob3duIGluIHByb2NmcyB1bmRlciBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFjay4gVGhpc1xuIDE1NDpcdFx0aXMgY29uc2lkZXJlZCBvYnNvbGV0ZSBpbiBmYXZvciBvZiB1c2luZyB0aGUgY29ubnRyYWNrKDgpXG4gMTU1Olx0XHR0b29sIHdoaWNoIHVzZXMgTmV0bGluay5cbiAxNTY6XHRcbiAxNTc6XHRjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xuIDE1ODpcdFx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuIDE1OTpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiAxNjA6XHRcdGhlbHBcbiAxNjE6XHRcdCAgSWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgY29kZSB3aWxsXG4gMTYyOlx0XHQgIHByb3ZpZGUgYSBub3RpZmllciBjaGFpbiB0aGF0IGNhbiBiZSB1c2VkIGJ5IG90aGVyIGtlcm5lbCBjb2RlXG4gMTYzOlx0XHQgIHRvIGdldCBub3RpZmllZCBhYm91dCBjaGFuZ2VzIGluIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIHN0YXRlLlxuIDE2NDpcdFxuIDE2NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBgTiYjMzk7LlxuIDE2NjpcdFxuIDE2NzpcdGNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxuIDE2ODpcdFx0Ym9vbCAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQmIzM5O1xuIDE2OTpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU0NQoJCQkJCQkJb3V0cHV0OiAxMDIKCQkJCQkJCXRob3VnaHRzOiAyNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29ubnRyYWNrIEV2ZW50IENhY2hlIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGBORl9DT05OVFJBQ0tfRVZFTlRTYCBjb25maWd1cmF0aW9uIG9wdGlvbiDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGhlcmUuIFRoZSBmdW5jdGlvbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgKmlzKiBkZWZpbml0ZWx5IGJlaW5nIGNhbGxlZCBhbmQgb3BlcmF0aW5nIGFzIGV4cGVjdGVkLCB3aGljaCBpcyBnb29kLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHRhY2tsaW5nIGEgc3VidGxlLCBidXQgcG90ZW50aWFsbHkgbmFzdHksIGJ1Zy4KCkl0JiMzOTtzIHVzaW5nIGB0aW1lX2FmdGVyKHN0b3AsIGppZmZpZXMpYC4uLndhaXQsIGhhbmcgb24uIGB0aW1lX2FmdGVyKGEsIGIpYCByZXR1cm5zIHRydWUgKmlmKiBgYWAgaXMgbGF0ZXIgdGhhbiBgYmAuIFNvLCBgdGltZV9hZnRlcihzdG9wLCBqaWZmaWVzKWAgbWVhbnMgYHN0b3BgIGlzIGxhdGVyIHRoYW4gYGppZmZpZXNgLiBCdXQgSSB0aGluayB0aGUgKmludGVuZGVkKiBiZWhhdmlvciB3YXMgdG8gYnJlYWsgb3V0IG9mIHRoZSBsb29wIHdoZW4gdGhlIGFsbG90dGVkIHRpbWUgaGFkIGVsYXBzZWQsIHRoYXQgaXMsIHdoZW4gYGppZmZpZXNgIGlzIGdyZWF0ZXIgdGhhbiBgc3RvcGAuIFRoZXkgcmVhbGx5IHNob3VsZCBoYXZlIHVzZWQgYHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcClgIHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgZXhpdCBjb25kaXRpb24uCgpUaGlzIGlzIGEgY2xlYXItY3V0IGZ1bmN0aW9uYWwgZml4LiBJdCYjMzk7cyBjb3JyZWN0aW5nIHRoZSBsb29wIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiB3aXRoaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLCB3aGljaCBpcyBjcml0aWNhbCB0byB0aGUgZXZlbnQgY2FjaGUmIzM5O3MgaW50ZWdyaXR5LiBDaGFuZ2luZyB0aGUgYXJndW1lbnRzIGluIHRoYXQgY29tcGFyaXNvbiBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RzIHRoZSBsb2dpYyB0aGF0IGRldGVybWluZXMgaG93IGxvbmcgdGhlIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCB0YXNrIHJ1bnMuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggd2FycmFudHMgY2xvc2VyIGV4YW1pbmF0aW9uIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIG1hcmtpbmcgaXQgYXMgJiMzNDtXb3J0aEZ1enppbmc6IHRydWUuJiMzNDsgVGhlIGZvY2FsIHBvaW50cyBmb3IgZnV6emluZyB3aWxsIGJlIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCBhbmQsIHByb2JhYmx5IGluIHN1cHBvcnQsIGBlY2FjaGVfd29ya2AuIEFsc28sIHRvIGVuc3VyZSB0aGlzIHBhdGNoIGlzIGFjdGl2YXRlZCBJJiMzOTtsbCBzZXQgYEVuYWJsZUNvbmZpZ3M6IE5GX0NPTk5UUkFDS19FVkVOVFNgLiBUaGUgYFJlYXNvbmluZ2AgaXMgdGhhdCBpdCYjMzk7cyBhIGNyaXRpY2FsIGZpeCB0byBhIGxvb3AgdGVybWluYXRpb24gY29uZGl0aW9uIGluIHRoZSBjb25udHJhY2sgZXZlbnQgY2FjaGUgbG9naWMuIFRoaXMgY291bGQgZGVmaW5pdGVseSBpbnRyb2R1Y2UgaW50ZXJlc3RpbmcgYmVoYXZpb3JzIHVuZGVyIGxvYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE4OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0tfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZWNhY2hlX3dvcmtfZXZpY3RfbGlzdCYjMzQ7LAogICAgJiMzNDtlY2FjaGVfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvb3AgdGVybWluYXRpb24gY29uZGl0aW9uIGluIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCBieSBjb3JyZWN0aW5nIHRoZSBhcmd1bWVudHMgdG8gYHRpbWVfYWZ0ZXJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZpbHRlciBjb25udHJhY2sgZXZlbnQgY2FjaGUgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlY2FjaGVfd29ya19ldmljdF9saXN0JiMzNDssCiAgICAmIzM0O2VjYWNoZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGJ5IGNvcnJlY3RpbmcgdGhlIGFyZ3VtZW50cyB0byBgdGltZV9hZnRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjU0OjA1LjE3NjU2NzkzMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzkzODE0NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlY2FjaGVfd29ya19ldmljdF9saXN0XCIsXG4gICAgXCJlY2FjaGVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGJ5IGNvcnJlY3RpbmcgdGhlIGFyZ3VtZW50cyB0byBgdGltZV9hZnRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MDUuMTc2NTc0MjgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODUyNzgzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNWUyMWJkMDM4ZjM3MjBiZjU5NDM2ZmRlMGViY2Q1YTcyNGY1ZTlkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDcgMTg6NTQ6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xcbmluZGV4IDlkZjE1OTQ0OGI4OTc5Li5jYzhkOGU4NTE2OWZiMyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXFxuQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGVudW0gcmV0cnlfc3RhdGUgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdChzdHJ1Y3QgbmZfY29ubnRyYWNrX25ldCAqY25ldClcXG4gXFx0XFx0aGxpc3RfbnVsbHNfZGVsX3JjdShcXHUwMDI2Y3QtXFx1MDAzZXR1cGxlaGFzaFtJUF9DVF9ESVJfT1JJR0lOQUxdLmhubm9kZSk7XFxuIFxcdFxcdGhsaXN0X251bGxzX2FkZF9oZWFkKFxcdTAwMjZjdC1cXHUwMDNldHVwbGVoYXNoW0lQX0NUX0RJUl9SRVBMWV0uaG5ub2RlLCBcXHUwMDI2ZXZpY3RlZF9saXN0KTtcXG4gXFxuLVxcdFxcdGlmICh0aW1lX2FmdGVyKHN0b3AsIGppZmZpZXMpKSB7XFxuK1xcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHN0b3ApKSB7XFxuIFxcdFxcdFxcdHJldCA9IFNUQVRFX1JFU1RBUlQ7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjU0OjA1Ljg2MjU4Nzk5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxMDc3ODQ1NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVjYWNoZV93b3JrX2V2aWN0X2xpc3RcIixcbiAgICBcImVjYWNoZV93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb29wIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiBpbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgYnkgY29ycmVjdGluZyB0aGUgYXJndW1lbnRzIHRvIGB0aW1lX2FmdGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV2ZW50IGNhY2hlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE1ZTIxYmQwMzhmMzcyMGJmNTk0MzZmZGUwZWJjZDVhNzI0ZjVlOWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDE4OjU0OjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuY1xuaW5kZXggOWRmMTU5NDQ4Yjg5NzkuLmNjOGQ4ZTg1MTY5ZmIzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXG5AQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgZW51bSByZXRyeV9zdGF0ZSBlY2FjaGVfd29ya19ldmljdF9saXN0KHN0cnVjdCBuZl9jb25udHJhY2tfbmV0ICpjbmV0KVxuIFx0XHRobGlzdF9udWxsc19kZWxfcmN1KFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFtJUF9DVF9ESVJfT1JJR0lOQUxdLmhubm9kZSk7XG4gXHRcdGhsaXN0X251bGxzX2FkZF9oZWFkKFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFtJUF9DVF9ESVJfUkVQTFldLmhubm9kZSwgXHUwMDI2ZXZpY3RlZF9saXN0KTtcbiBcbi1cdFx0aWYgKHRpbWVfYWZ0ZXIoc3RvcCwgamlmZmllcykpIHtcbitcdFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcCkpIHtcbiBcdFx0XHRyZXQgPSBTVEFURV9SRVNUQVJUO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDowNS44NjI1ODk1NThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDc2MTU4NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25udHJhY2sgRWNhY2hlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBtb2RpZnlpbmcgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29uZGl0aW9uYWwgd2l0aGluIHRoZSBsb29wOiBpdCBzZWVtcyB0aGV5J3ZlIGZsaXBwZWQgdGhlIGxvZ2ljIGZyb20gYHRpbWVfYWZ0ZXIoc3RvcCwgamlmZmllcylgIHRvIGB0aW1lX2FmdGVyKGppZmZpZXMsIHN0b3ApYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbiB0byB0aGUgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucz8gV2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIGlmIHRoaXMgaW50cm9kdWNlcyBhIGJ1Zy5cblxuRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gU28sIEknbGwgZ28gc3RyYWlnaHQgdG8gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZWxldmFudCBhbmQgZXhhY3RseSB3aGF0IGBlY2FjaGVfd29ya19ldmljdF9saXN0YCBpcyBzdXBwb3NlZCB0byBkby4gQSBxdWljayBzY2FuIHNob3VsZCBhbHNvIHBvaW50IG1lIHRvIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhpcyBvbmUuIENvbnRleHQgaXMgZXZlcnl0aGluZy4gSSBoYXZlIHRvIHNlZSBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDoxMi45Mzg3NTAxNjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4MDAzMzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVjYWNoZV93b3JrX2V2aWN0X2xpc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9NDg9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubl9wZXJuZXRfZWNhY2hlKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTUwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jOjUxOnN0YXRpYyBlbnVtIHJldHJ5X3N0YXRlIGVjYWNoZV93b3JrX2V2aWN0X2xpc3Qoc3RydWN0IG5mX2Nvbm50cmFja19uZXQgKmNuZXQpXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtNTIte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9MTA2PXN0YXRpYyB2b2lkIGVjYWNoZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTExMC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMTE6XFx0cmV0ID0gZWNhY2hlX3dvcmtfZXZpY3RfbGlzdChjbmV0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMTItXFx0c3dpdGNoIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MTMuMTQ2NzYwMjY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzczMDM5OTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBpbnRlcm5hbHM6XG5cbioqRGl2aW5nIGludG8gdGhlIENvbm5lY3Rpb24gVHJhY2tpbmcgRXZpY3Rpb24gTWVjaGFuaXNtKipcblxuQWxyaWdodCwgc28gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGlzIGRlZmluaXRlbHkgYmVpbmcgaW52b2tlZCBmcm9tIGBlY2FjaGVfd29ya2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nJ3MgZXZpY3Rpb24gcHJvY2VzcywgYW5kIGl0J3MgYmVpbmcgbWFuYWdlZCB0aHJvdWdoIHRoZSB3b3JrcXVldWUuIE1ha2VzIHNlbnNlLCB0aGF0J3MgYSBjb21tb24gcGF0dGVybiBmb3IgYXN5bmNocm9ub3VzIHByb2Nlc3Npbmcgd2l0aGluIHRoZSBrZXJuZWwuIE5vdywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIHNob3VsZCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIHNldHRpbmdzIHJlbGF0ZWQgdG8gYG5mX2Nvbm50cmFja19lY2FjaGUuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHJlbGV2YW50IGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYW5kIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgYnVpbGQtdGltZSBmbGFncyB0aGF0IG1pZ2h0IGFmZmVjdCB0aGlzIGNvZGUgcGF0aC4gS25vd2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIHdpbGwgaW5mb3JtIGhvdyB0aGUgY29kZSBpcyBjb21waWxlZC4gVGhpcyB3aWxsIGxldCBtZSBrbm93IHRoZSBjb250ZXh0IG9mIHRoZSBidWlsZC4gR29vZCwgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDoxNi44NzcxNjI1NzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2NzEyMDM4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfZWNhY2hlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEyPW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfVElNRVNUQU1QKSArPSBuZl9jb25udHJhY2tfdGltZXN0YW1wLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEzOm5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTKSArPSBuZl9jb25udHJhY2tfZWNhY2hlLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0LW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTKSArPSBuZl9jb25udHJhY2tfbGFiZWxzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MTguNjQ0Mjg4MzI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxMjcxMDY3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbm5lY3Rpb24gVHJhY2tpbmcgRXZlbnRzKipcblxuUmlnaHQsIHNvIGBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU2AgaXMgcG9wcGluZyB1cCBhcyBhIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gaXRlbS4gTWFrZXMgc2Vuc2UsIHByb2JhYmx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWVjaGFuaXNtIEknbSB3b3JraW5nIHdpdGguIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcXVpY2tseSB2ZXJpZnkgaWYgdGhpcyBzcGVjaWZpYyBjb25maWcgaXRlbSBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBvcHRpb25zIGl0IHJlbGllcyBvbiB0byBiZSBidWlsdCBjb3JyZWN0bHkuIFRoaXMgd2lsbCBzYXZlIG1lIGZyb20gYSBsb3Qgb2YgaGVhZC1zY3JhdGNoaW5nIGxhdGVyIGlmIHRoZXJlIGFyZSBjYXNjYWRpbmcgYnVpbGQgZXJyb3JzLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyBzYXkgYWJvdXQgaXRzIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjU0OjIyLjg1NzAwMTM1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTM3NDI2NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS19FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xNDg9Y29uZmlnIE5GX0NPTk5UUkFDS19QUk9DRlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1Nzpjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE4OjU0OjIzLjI3MDc0OTA5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzE5NjI5NTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29ubmVjdGlvbiBUcmFja2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBib29sZWFuIGNvbmZpZywgYE5GX0NPTk5UUkFDS2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIGJlaGF2aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGlnIGludG8gYGVjYWNoZV93b3JrYCBhbmQgYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLiBJIHNlZSB0aGF0IGBlY2FjaGVfd29ya19ldmljdF9saXN0YCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIEkgY2FuJ3QgdHJhY2UgaXQgZGlyZWN0bHkgZnJvbSBvdGhlciBtb2R1bGVzIGJlY2F1c2UgaXQncyBub3QgZXhwb3J0ZWQuIEFscmlnaHQsIHRoYXQgZm9jdXNlcyBtZSBvbiBlaXRoZXIgYGVjYWNoZV93b3JrYCBvciBwbGFjZXMgdGhhdCBjYWxsIGl0LiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBgZWNhY2hlX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0IGxpa2VseSBpc24ndCBjYWxsZWQgZGlyZWN0bHkgYnkgYSBzeXN0ZW0gY2FsbC4gU28sIGluc3RlYWQgb2YgbG9va2luZyBmb3IgdGhlIGRpcmVjdCBjYWxsLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGdldHMgc2NoZWR1bGVkLiBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbHMgdG8gaXQsIHNvIEkgY2FuIHVuZGVyc3RhbmQgaG93IGl0J3MgYmVpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI5OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDozNC41OTAzODA4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4MTA4NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVjYWNoZV93b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jPTQ4PUVYUE9SVF9TWU1CT0xfR1BMKG5mX2Nvbm5fcGVybmV0X2VjYWNoZSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy01MC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzo1MTpzdGF0aWMgZW51bSByZXRyeV9zdGF0ZSBlY2FjaGVfd29ya19ldmljdF9saXN0KHN0cnVjdCBuZl9jb25udHJhY2tfbmV0ICpjbmV0KVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTUyLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTEwNS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoxMDY6c3RhdGljIHZvaWQgZWNhY2hlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTEwNy17XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0xMTAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MTExOlxcdHJldCA9IGVjYWNoZV93b3JrX2V2aWN0X2xpc3QoY25ldCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmMtMTEyLVxcdHN3aXRjaCAocmV0KSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0yOTQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubnRyYWNrX3VucmVnaXN0ZXJfbm90aWZpZXIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoyOTY6dm9pZCBuZl9jb25udHJhY2tfZWNhY2hlX3dvcmsoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mX2N0X2VjYWNoZV9zdGF0ZSBzdGF0ZSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0yOTcte1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM9MzY1PXZvaWQgbmZfY29ubnRyYWNrX2VjYWNoZV9wZXJuZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNzAtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmM6MzcxOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZjbmV0LVxcdTAwM2VlY2FjaGUuZHdvcmssIGVjYWNoZV93b3JrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0zNzItXFx0SU5JVF9ITElTVF9OVUxMU19IRUFEKFxcdTAwMjZjbmV0LVxcdTAwM2VlY2FjaGUuZHlpbmdfbGlzdCwgRFlJTkdfTlVMTFNfVkFMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MzUuMDY4NDk1MjI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTgyMzU4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgbmZfY29ubnRyYWNrX2VjYWNoZV93b3JrYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIGdvaW5nIG9uIHdpdGggYG5mX2Nvbm50cmFja19lY2FjaGVfd29ya2AuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgdHJhY2UgdGhpcyBmdW5jdGlvbi4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaXRzIGNhbGwgc2l0ZXMgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN5c3RlbS4gSSB3YW50IHRvIHNlZSB3aGF0IHRyaWdnZXJzIGl0IGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIGNydWNpYWwgaGVyZTsgaXQgZ2l2ZXMgbWUgaW1tZWRpYXRlIGluc2lnaHQgaW50byB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIHdoYXQgaW50ZXJhY3Rpb25zIGFyZSBhdCBwbGF5LiBMb29raW5nIGF0IHRoZSBjb2RlIGFyb3VuZCB0aGUgY2FsbHMgd2lsbCBpbGx1bWluYXRlIGhvdyBpdCdzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBjb25udHJhY2sgZnJhbWV3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjQzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTg6NTQ6MzguODY2NzMzMjQ5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzQwNDIwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfZWNhY2hlX3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jPTY2Mj1ib29sIG5mX2N0X2RlbGV0ZShzdHJ1Y3QgbmZfY29ubiAqY3QsIHUzMiBwb3J0aWQsIGludCByZXBvcnQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjg5LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYzo2OTA6XFx0XFx0bmZfY29ubnRyYWNrX2VjYWNoZV93b3JrKG5mX2N0X25ldChjdCksIE5GQ1RfRUNBQ0hFX0RFU1RST1lfRkFJTCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTY5MS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtNjk1LVxcdGlmIChuZl9jb25udHJhY2tfZWNhY2hlX2R3b3JrX3BlbmRpbmcobmV0KSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM6Njk2OlxcdFxcdG5mX2Nvbm50cmFja19lY2FjaGVfd29yayhuZXQsIE5GQ1RfRUNBQ0hFX0RFU1RST1lfU0VOVCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTY5Ny1cXHRuZl9jdF9kZWxldGVfZnJvbV9saXN0cyhjdCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYz0yOTQ9RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubnRyYWNrX3VucmVnaXN0ZXJfbm90aWZpZXIpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2VjYWNoZS5jLTI5NS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYzoyOTY6dm9pZCBuZl9jb25udHJhY2tfZWNhY2hlX3dvcmsoc3RydWN0IG5ldCAqbmV0LCBlbnVtIG5mX2N0X2VjYWNoZV9zdGF0ZSBzdGF0ZSlcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19lY2FjaGUuYy0yOTcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDozOC45NjAxNDM5OTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY3Njk3OTQwNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXRmaWx0ZXIgQ29ubnRyYWNrIEV2ZW50IFN5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IHRoZXNlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZXZlbnRzIGFyZSBtYW5hZ2VkLCBzcGVjaWZpY2FsbHkgdGhlIGBuZl9jb25udHJhY2tfZWNhY2hlX3dvcmtgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIGZyb20gYG5mX2N0X2RlbGV0ZWAsIHdoaWNoIHN1Z2dlc3RzIGEgY2xlYW51cCBvciBldmljdGlvbiBwcm9jZXNzLiBUaGUgY3J1Y2lhbCBmdW5jdGlvbiB0byBleGFtaW5lIGhlcmUgaXMgYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgLCBhbmQgdGhlbiBieSBleHRlbnNpb24sIGBlY2FjaGVfd29ya2AgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlLlxuXG5UaGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbiBzZWVtcyB0byBiZSBgTkZfQ09OTlRSQUNLX0VWRU5UU2AuIE5vdywgYSBxdWljayBzYW5pdHkgY2hlY2s6IGBORl9DT05OVFJBQ0tfRVZFTlRTYCBhbG1vc3QgY2VydGFpbmx5IGRlcGVuZHMgb24gYE5GX0NPTk5UUkFDS2AsIHJpZ2h0PyBJdCB3b3VsZG7igJl0IG1ha2Ugc2Vuc2Ugb3RoZXJ3aXNlLiBKdXN0IG1ha2luZyBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcuIEknbGwgbmVlZCB0byBsb29rIGF0IGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0aGF0IG1pZ2h0IGFmZmVjdCB0aGlzIGJlaGF2aW9yLiBHb3R0YSBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDo1NS43Mjk5NDAxNzdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxuIDE1MTpcXHRcXHRoZWxwXFxuIDE1MjpcXHRcXHRUaGlzIG9wdGlvbiBlbmFibGVzIGZvciB0aGUgbGlzdCBvZiBrbm93biBjb25udHJhY2sgZW50cmllc1xcbiAxNTM6XFx0XFx0dG8gYmUgc2hvd24gaW4gcHJvY2ZzIHVuZGVyIG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLiBUaGlzXFxuIDE1NDpcXHRcXHRpcyBjb25zaWRlcmVkIG9ic29sZXRlIGluIGZhdm9yIG9mIHVzaW5nIHRoZSBjb25udHJhY2soOClcXG4gMTU1OlxcdFxcdHRvb2wgd2hpY2ggdXNlcyBOZXRsaW5rLlxcbiAxNTY6XFx0XFxuIDE1NzpcXHRjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbiAxNTg6XFx0XFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuIDE1OTpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAxNjA6XFx0XFx0aGVscFxcbiAxNjE6XFx0XFx0ICBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBjb2RlIHdpbGxcXG4gMTYyOlxcdFxcdCAgcHJvdmlkZSBhIG5vdGlmaWVyIGNoYWluIHRoYXQgY2FuIGJlIHVzZWQgYnkgb3RoZXIga2VybmVsIGNvZGVcXG4gMTYzOlxcdFxcdCAgdG8gZ2V0IG5vdGlmaWVkIGFib3V0IGNoYW5nZXMgaW4gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUuXFxuIDE2NDpcXHRcXG4gMTY1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgYE4nLlxcbiAxNjY6XFx0XFxuIDE2NzpcXHRjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVPVVRcXG4gMTY4OlxcdFxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQnXFxuIDE2OTpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NDo1NS43MzAwNjY0MzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1MzUyMjE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb25udHJhY2sgRXZlbnQgQ2FjaGUgRml4KipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGBORl9DT05OVFJBQ0tfRVZFTlRTYCBjb25maWd1cmF0aW9uIG9wdGlvbiDigJMgdGhhdCdzIHRoZSBrZXkgaGVyZS4gVGhlIGZ1bmN0aW9uIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCAqaXMqIGRlZmluaXRlbHkgYmVpbmcgY2FsbGVkIGFuZCBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQsIHdoaWNoIGlzIGdvb2QuIFRoZSBwYXRjaCBpdHNlbGYgaXMgdGFja2xpbmcgYSBzdWJ0bGUsIGJ1dCBwb3RlbnRpYWxseSBuYXN0eSwgYnVnLlxuXG5JdCdzIHVzaW5nIGB0aW1lX2FmdGVyKHN0b3AsIGppZmZpZXMpYC4uLndhaXQsIGhhbmcgb24uIGB0aW1lX2FmdGVyKGEsIGIpYCByZXR1cm5zIHRydWUgKmlmKiBgYWAgaXMgbGF0ZXIgdGhhbiBgYmAuIFNvLCBgdGltZV9hZnRlcihzdG9wLCBqaWZmaWVzKWAgbWVhbnMgYHN0b3BgIGlzIGxhdGVyIHRoYW4gYGppZmZpZXNgLiBCdXQgSSB0aGluayB0aGUgKmludGVuZGVkKiBiZWhhdmlvciB3YXMgdG8gYnJlYWsgb3V0IG9mIHRoZSBsb29wIHdoZW4gdGhlIGFsbG90dGVkIHRpbWUgaGFkIGVsYXBzZWQsIHRoYXQgaXMsIHdoZW4gYGppZmZpZXNgIGlzIGdyZWF0ZXIgdGhhbiBgc3RvcGAuIFRoZXkgcmVhbGx5IHNob3VsZCBoYXZlIHVzZWQgYHRpbWVfYWZ0ZXIoamlmZmllcywgc3RvcClgIHRvIGFjaGlldmUgdGhlIGRlc2lyZWQgZXhpdCBjb25kaXRpb24uXG5cblRoaXMgaXMgYSBjbGVhci1jdXQgZnVuY3Rpb25hbCBmaXguIEl0J3MgY29ycmVjdGluZyB0aGUgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gd2l0aGluIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCwgd2hpY2ggaXMgY3JpdGljYWwgdG8gdGhlIGV2ZW50IGNhY2hlJ3MgaW50ZWdyaXR5LiBDaGFuZ2luZyB0aGUgYXJndW1lbnRzIGluIHRoYXQgY29tcGFyaXNvbiBmdW5jdGlvbiBkaXJlY3RseSBpbXBhY3RzIHRoZSBsb2dpYyB0aGF0IGRldGVybWluZXMgaG93IGxvbmcgdGhlIGBlY2FjaGVfd29ya19ldmljdF9saXN0YCB0YXNrIHJ1bnMuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCB3YXJyYW50cyBjbG9zZXIgZXhhbWluYXRpb24gZm9yIGZ1enppbmcgcG90ZW50aWFsLiBTcGVjaWZpY2FsbHksIEknbSBtYXJraW5nIGl0IGFzIFwiV29ydGhGdXp6aW5nOiB0cnVlLlwiIFRoZSBmb2NhbCBwb2ludHMgZm9yIGZ1enppbmcgd2lsbCBiZSBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgYW5kLCBwcm9iYWJseSBpbiBzdXBwb3J0LCBgZWNhY2hlX3dvcmtgLiBBbHNvLCB0byBlbnN1cmUgdGhpcyBwYXRjaCBpcyBhY3RpdmF0ZWQgSSdsbCBzZXQgYEVuYWJsZUNvbmZpZ3M6IE5GX0NPTk5UUkFDS19FVkVOVFNgLiBUaGUgYFJlYXNvbmluZ2AgaXMgdGhhdCBpdCdzIGEgY3JpdGljYWwgZml4IHRvIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gdGhlIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy4gVGhpcyBjb3VsZCBkZWZpbml0ZWx5IGludHJvZHVjZSBpbnRlcmVzdGluZyBiZWhhdmlvcnMgdW5kZXIgbG9hZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU0NSwiT3V0cHV0VG9rZW5zIjoxMDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxODo1NTowMS44ODM1OTExNjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Njc3NDA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVjYWNoZV93b3JrX2V2aWN0X2xpc3RcIixcbiAgICBcImVjYWNoZV93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb29wIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiBpbiBgZWNhY2hlX3dvcmtfZXZpY3RfbGlzdGAgYnkgY29ycmVjdGluZyB0aGUgYXJndW1lbnRzIHRvIGB0aW1lX2FmdGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGV2ZW50IGNhY2hlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlY2FjaGVfd29ya19ldmljdF9saXN0XCIsXG4gICAgXCJlY2FjaGVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9vcCB0ZXJtaW5hdGlvbiBjb25kaXRpb24gaW4gYGVjYWNoZV93b3JrX2V2aWN0X2xpc3RgIGJ5IGNvcnJlY3RpbmcgdGhlIGFyZ3VtZW50cyB0byBgdGltZV9hZnRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZmlsdGVyIGNvbm50cmFjayBldmVudCBjYWNoZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[1] Phase: Succeeded StartedAt: 2026-07-07 18:55:13 +0000 UTC FinishedAt: 2026-07-07 18:55:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 18:55:13 +0000 UTC FinishedAt: 2026-07-07 18:55:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2] Phase: Succeeded StartedAt: 2026-07-07 18:55:13 +0000 UTC FinishedAt: 2026-07-07 23:18:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-07 18:55:13 +0000 UTC FinishedAt: 2026-07-07 23:18:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-07 18:55:13 +0000 UTC FinishedAt: 2026-07-07 18:55:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-07 18:55:13 +0000 UTC FinishedAt: 2026-07-07 18:55:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowccxrj/series-workflowccxrj-convert-artifact-3365776513/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-07 18:55:35 +0000 UTC FinishedAt: 2026-07-07 19:22:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-07 18:55:35 +0000 UTC FinishedAt: 2026-07-07 19:22:55 +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:*50feb093-408e-4317-9cdb-32708a874b32,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-workflowccxrj/series-workflowccxrj-convert-artifact-3365776513/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": "316f9e05-0688-4429-8492-149605212ff2", "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-workflowccxrj/series-workflowccxrj-build-action-1056246191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-07 18:55:35 +0000 UTC FinishedAt: 2026-07-07 19:21:47 +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:*50feb093-408e-4317-9cdb-32708a874b32,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-workflowccxrj/series-workflowccxrj-convert-artifact-3365776513/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": "316f9e05-0688-4429-8492-149605212ff2", "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-workflowccxrj/series-workflowccxrj-build-action-1056246191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-07 19:22:55 +0000 UTC FinishedAt: 2026-07-07 19:22:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-07 19:22:55 +0000 UTC FinishedAt: 2026-07-07 19:22:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-07 19:22:55 +0000 UTC FinishedAt: 2026-07-07 19:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-07 19:22:55 +0000 UTC FinishedAt: 2026-07-07 19:23:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowccxrj/series-workflowccxrj-convert-artifact-3781178196/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-07 19:23:15 +0000 UTC FinishedAt: 2026-07-07 19:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-07 19:23:15 +0000 UTC FinishedAt: 2026-07-07 19:25:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*316f9e05-0688-4429-8492-149605212ff2,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-workflowccxrj/series-workflowccxrj-build-action-1056246191/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-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-07 19:25:14 +0000 UTC FinishedAt: 2026-07-07 19:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-07 19:25:14 +0000 UTC FinishedAt: 2026-07-07 19:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-07 19:25:14 +0000 UTC FinishedAt: 2026-07-07 20:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-07 19:25:14 +0000 UTC FinishedAt: 2026-07-07 20:09:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*50feb093-408e-4317-9cdb-32708a874b32,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-workflowccxrj/series-workflowccxrj-convert-artifact-3781178196/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": "9f407e90-1c1c-4b9b-9662-c9ca159dd7a3", "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-workflowccxrj/series-workflowccxrj-build-action-3405293344/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-07 19:25:14 +0000 UTC FinishedAt: 2026-07-07 20:09:00 +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:*50feb093-408e-4317-9cdb-32708a874b32,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-workflowccxrj/series-workflowccxrj-convert-artifact-3781178196/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": "9f407e90-1c1c-4b9b-9662-c9ca159dd7a3", "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-workflowccxrj/series-workflowccxrj-build-action-3405293344/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-07 20:09:21 +0000 UTC FinishedAt: 2026-07-07 20:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-07 20:09:21 +0000 UTC FinishedAt: 2026-07-07 20:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-07 20:09:21 +0000 UTC FinishedAt: 2026-07-07 20:11:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-07 20:09:21 +0000 UTC FinishedAt: 2026-07-07 20:11:12 +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:*9f407e90-1c1c-4b9b-9662-c9ca159dd7a3,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-workflowccxrj/series-workflowccxrj-build-action-3405293344/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-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-07 20:11:22 +0000 UTC FinishedAt: 2026-07-07 23:18:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-07 20:11:22 +0000 UTC FinishedAt: 2026-07-07 23:18:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_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:*316f9e05-0688-4429-8492-149605212ff2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9f407e90-1c1c-4b9b-9662-c9ca159dd7a3,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-workflowccxrj/series-workflowccxrj-build-action-1056246191/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-workflowccxrj/series-workflowccxrj-build-action-3405293344/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-07 20:11:22 +0000 UTC FinishedAt: 2026-07-07 20:11:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-07 20:11:22 +0000 UTC FinishedAt: 2026-07-07 20:11:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_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-workflowccxrj/series-workflowccxrj-convert-artifact-340312701/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-07 20:11:22 +0000 UTC FinishedAt: 2026-07-07 20:11:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-07 20:11:22 +0000 UTC FinishedAt: 2026-07-07 20:11:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-07 20:11:22 +0000 UTC FinishedAt: 2026-07-07 20:11:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-07 20:11:32 +0000 UTC FinishedAt: 2026-07-07 23:18:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccxrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ecache_work_evict_list","ecache_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_EVENTS"],"series_id":"16ee4a99-a1b3-4914-8db6-a899e95a8843","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-07 20:11:32 +0000 UTC FinishedAt: 2026-07-07 23:17:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*316f9e05-0688-4429-8492-149605212ff2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9f407e90-1c1c-4b9b-9662-c9ca159dd7a3,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-workflowccxrj/series-workflowccxrj-build-action-1056246191/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-workflowccxrj/series-workflowccxrj-build-action-3405293344/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-workflowccxrj/series-workflowccxrj-convert-artifact-340312701/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,}