Name: series-workflowr7mtp Phase: Succeeded StartedAt: 2026-07-01 21:27:43 +0000 UTC FinishedAt: 2026-07-02 02:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[0] Phase: Succeeded StartedAt: 2026-07-01 21:27:43 +0000 UTC FinishedAt: 2026-07-01 21:44:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 21:27:43 +0000 UTC FinishedAt: 2026-07-01 21:44:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "595893e78396f69f45253a470d785236ea71e539", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_FAILURE", "TRANSPARENT_HUGEPAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "595893e78396f69f45253a470d785236ea71e539", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_FAILURE", "TRANSPARENT_HUGEPAGE" ], "series_id": "ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__split_folio_to_order", "__split_unmapped_folio", "split_huge_page_to_list_to_order" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9GQUlMVVJFJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zcGxpdF9mb2xpb190b19vcmRlciYjMzQ7LAogICAgJiMzNDtfX3NwbGl0X3VubWFwcGVkX2ZvbGlvJiMzNDssCiAgICAmIzM0O3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCB3aGVyZSBgZm9saW9fc2V0X2hhc19od3BvaXNvbmVkYCB3YXMgY2FsbGVkIGJlZm9yZSB0aGUgbmV3IGZvbGlvIHdhcyBwcm9wZXJseSBpbml0aWFsaXplZCBhcyBhIGhlYWQgZm9saW8sIGNhdXNpbmcgYGZvbGlvX2ZsYWdzKClgIHRvIHRyaXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHJlbGF0ZWQgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBmZTEwZmE2YTk5OGU1MTIwMDZiMDhhYzllZWUwZTA5MDAzNzZhM2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDIxOjQzOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXG5pbmRleCAyYmNjYjBhNTNhMGE2MC4uZWU3ZWNiM2I0NWM2ZjggMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtMzU4NywxMCAmIzQzOzM1ODcsNiBAQCBzdGF0aWMgdm9pZCBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBvbGRfb3JkZXIsXG4gXHRcdFx0XHQgKDFMIFx1MDAzY1x1MDAzYyBQR19kcm9wYmVoaW5kKSB8XG4gXHRcdFx0XHQgTFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykpO1xuIFxuLVx0XHRpZiAoaGFuZGxlX2h3cG9pc29uIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChuZXdfaGVhZCwgbmV3X25yX3BhZ2VzKSlcbi1cdFx0XHRmb2xpb19zZXRfaGFzX2h3cG9pc29uZWQobmV3X2ZvbGlvKTtcbi1cbiBcdFx0bmV3X2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0XHRuZXdfZm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleCAmIzQzOyBpO1xuIFxuQEAgLTM2MTIsNiAmIzQzOzM2MDgsMTggQEAgc3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxuIFx0XHRcdGZvbGlvX3NldF9sYXJnZV9ybWFwcGFibGUobmV3X2ZvbGlvKTtcbiBcdFx0fVxuIFxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFBHX2hhc19od3BvaXNvbmVkIGlzIGEgRk9MSU9fU0VDT05EX1BBR0UgZmxhZywgc28gaXQgY2FuIG9ubHlcbiYjNDM7XHRcdCAqIGJlIHNldCBvbmNlIEBuZXdfZm9saW8gaXMgYSByZWFsIChoZWFkKSBmb2xpby4gIERlZmVyIHNldHRpbmdcbiYjNDM7XHRcdCAqIGl0IHVudGlsIGFmdGVyIGNsZWFyX2NvbXBvdW5kX2hlYWQoKS9wcmVwX2NvbXBvdW5kX3BhZ2UoKSBoYXZlXG4mIzQzO1x0XHQgKiB0dXJuZWQgQG5ld19oZWFkIGZyb20gYSB0YWlsIHBhZ2UgaW50byBhIHByb3BlciBmb2xpbyBoZWFkO1xuJiM0MztcdFx0ICogb3RoZXJ3aXNlIGZvbGlvX2ZsYWdzKCkgdHJpcHMgb24gKHBhZ2UtXHUwMDNlY29tcG91bmRfaW5mbyBcdTAwMjYgMSkuXG4mIzQzO1x0XHQgKiBoYW5kbGVfaHdwb2lzb24gaW1wbGllcyBuZXdfb3JkZXIgIT0gMC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGhhbmRsZV9od3BvaXNvbiBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICBwYWdlX3JhbmdlX2hhc19od3BvaXNvbmVkKG5ld19oZWFkLCBuZXdfbnJfcGFnZXMpKVxuJiM0MztcdFx0XHRmb2xpb19zZXRfaGFzX2h3cG9pc29uZWQobmV3X2ZvbGlvKTtcbiYjNDM7XG4gXHRcdGlmIChmb2xpb190ZXN0X3lvdW5nKGZvbGlvKSlcbiBcdFx0XHRmb2xpb19zZXRfeW91bmcobmV3X2ZvbGlvKTtcbiBcdFx0aWYgKGZvbGlvX3Rlc3RfaWRsZShmb2xpbykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNT1JZX0ZBSUxVUkUmIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDssCiAgICAmIzM0O19fc3BsaXRfdW5tYXBwZWRfZm9saW8mIzM0OywKICAgICYjMzQ7c3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIHdoZXJlIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIHdhcyBjYWxsZWQgYmVmb3JlIHRoZSBuZXcgZm9saW8gd2FzIHByb3Blcmx5IGluaXRpYWxpemVkIGFzIGEgaGVhZCBmb2xpbywgY2F1c2luZyBgZm9saW9fZmxhZ3MoKWAgdG8gdHJpcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgcmVsYXRlZCB0byB0cmFuc3BhcmVudCBodWdlcGFnZXMgYW5kIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwZmUxMGZhNmE5OThlNTEyMDA2YjA4YWM5ZWVlMGUwOTAwMzc2YTNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAyMTo0MzoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jCmluZGV4IDJiY2NiMGE1M2EwYTYwLi5lZTdlY2IzYjQ1YzZmOCAxMDA2NDQKLS0tIGEvbW0vaHVnZV9tZW1vcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jCkBAIC0zNTg3LDEwICYjNDM7MzU4Nyw2IEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlciwKIAkJCQkgKDFMICZsdDsmbHQ7IFBHX2Ryb3BiZWhpbmQpIHwKIAkJCQkgTFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykpOwogCi0JCWlmIChoYW5kbGVfaHdwb2lzb24gJmFtcDsmYW1wOwotCQkgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChuZXdfaGVhZCwgbmV3X25yX3BhZ2VzKSkKLQkJCWZvbGlvX3NldF9oYXNfaHdwb2lzb25lZChuZXdfZm9saW8pOwotCiAJCW5ld19mb2xpby0mZ3Q7bWFwcGluZyA9IGZvbGlvLSZndDttYXBwaW5nOwogCQluZXdfZm9saW8tJmd0O2luZGV4ID0gZm9saW8tJmd0O2luZGV4ICYjNDM7IGk7CiAKQEAgLTM2MTIsNiAmIzQzOzM2MDgsMTggQEAgc3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLAogCQkJZm9saW9fc2V0X2xhcmdlX3JtYXBwYWJsZShuZXdfZm9saW8pOwogCQl9CiAKJiM0MzsJCS8qCiYjNDM7CQkgKiBQR19oYXNfaHdwb2lzb25lZCBpcyBhIEZPTElPX1NFQ09ORF9QQUdFIGZsYWcsIHNvIGl0IGNhbiBvbmx5CiYjNDM7CQkgKiBiZSBzZXQgb25jZSBAbmV3X2ZvbGlvIGlzIGEgcmVhbCAoaGVhZCkgZm9saW8uICBEZWZlciBzZXR0aW5nCiYjNDM7CQkgKiBpdCB1bnRpbCBhZnRlciBjbGVhcl9jb21wb3VuZF9oZWFkKCkvcHJlcF9jb21wb3VuZF9wYWdlKCkgaGF2ZQomIzQzOwkJICogdHVybmVkIEBuZXdfaGVhZCBmcm9tIGEgdGFpbCBwYWdlIGludG8gYSBwcm9wZXIgZm9saW8gaGVhZDsKJiM0MzsJCSAqIG90aGVyd2lzZSBmb2xpb19mbGFncygpIHRyaXBzIG9uIChwYWdlLSZndDtjb21wb3VuZF9pbmZvICZhbXA7IDEpLgomIzQzOwkJICogaGFuZGxlX2h3cG9pc29uIGltcGxpZXMgbmV3X29yZGVyICE9IDAuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChoYW5kbGVfaHdwb2lzb24gJmFtcDsmYW1wOwomIzQzOwkJICAgIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQobmV3X2hlYWQsIG5ld19ucl9wYWdlcykpCiYjNDM7CQkJZm9saW9fc2V0X2hhc19od3BvaXNvbmVkKG5ld19mb2xpbyk7CiYjNDM7CiAJCWlmIChmb2xpb190ZXN0X3lvdW5nKGZvbGlvKSkKIAkJCWZvbGlvX3NldF95b3VuZyhuZXdfZm9saW8pOwogCQlpZiAoZm9saW9fdGVzdF9pZGxlKGZvbGlvKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEh1Z2UgTWVtb3J5IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcGxheWluZyB3aXRoIGBtbS9odWdlX21lbW9yeS5jYCwgc3BlY2lmaWNhbGx5IGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgKndoeSogaXQmIzM5O3MgbW92aW5nIHRoZSBzZXR0aW5nIG9mIGBQR19oYXNfaHdwb2lzb25lZGAuIEl0IGxvb2tzIGxpa2UgdGhlIGtleSBpcyB0aGF0IGBQR19oYXNfaHdwb2lzb25lZGAgaXMgYSBgRk9MSU9fU0VDT05EX1BBR0VgIGZsYWcuIFNvLCBpdCBjYW4mIzM5O3QgYmUgc2V0IHVudGlsIHRoZSBgQG5ld19mb2xpb2AgKmlzKiBhIHByb3BlciAmIzM0O2hlYWQmIzM0OyBmb2xpby4gTWFrZXMgc2Vuc2UuCgpUaGUgY29tbWVudCBmbGFncyB0aGF0IHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgd2FzIGxlYWRpbmcgdG8gcHJvYmxlbXMgd2l0aCBgZm9saW9fZmxhZ3MoKWAsIGFuZCB0aGF0IGl0IHdhcyB0cmlwcGluZyBvdmVyIGAocGFnZS0mZ3Q7Y29tcG91bmRfaW5mbyAmYW1wOyAxKWAuIFRoYXQmIzM5O3MgbGlrZWx5IGJlY2F1c2UgYGNsZWFyX2NvbXBvdW5kX2hlYWQoKWAgb3IgYHByZXBfY29tcG91bmRfcGFnZSgpYCBoYWRuJiMzOTt0IGJlZW4gaW52b2tlZCB5ZXQsIGhlbmNlIHRoZSBjb21wb3VuZCBwYWdlIHN0cnVjdHVyZXMgaGFkbiYjMzk7dCBiZWVuIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSB3ZSB3ZXJlIGNoZWNraW5nIHRoZSBmbGFnLiBJdCBmZWVscyBsaWtlIGEgcmFjZSBjb25kaXRpb24gb3IgYW4gaW5pdGlhbGl6YXRpb24gdGltaW5nIGlzc3VlLgoKVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCBpdHNlbGYgYW5kIHNlZSB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgaGVyZSB0byBncmFzcCB0aGUgcHJlY2lzZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zcGxpdF9mb2xpb190b19vcmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYz0zNTE1PXN0YXRpYyBib29sIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQoc3RydWN0IHBhZ2UgKnBhZ2UsIGxvbmcgbnJfcGFnZXMpXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zNTI2LSAqL1xubW0vaHVnZV9tZW1vcnkuYzozNTI3OnN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbm1tL2h1Z2VfbWVtb3J5LmMtMzUyOC1cdFx0aW50IG5ld19vcmRlcilcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM2NjQtICogMS4gdW5pZm9ybSBzcGxpdDogQHhhcyBpcyBzcGxpdCB3aXRoIG5vIGV4cGVjdGF0aW9uIG9mIGZhaWx1cmUgYW5kIGEgc2luZ2xlXG5tbS9odWdlX21lbW9yeS5jOjM2NjU6ICogICAgX19zcGxpdF9mb2xpb190b19vcmRlcigpIGlzIGNhbGxlZCB0byBzcGxpdCB0aGUgQGZvbGlvIGludG8gQG5ld19vcmRlclxubW0vaHVnZV9tZW1vcnkuYy0zNjY2LSAqICAgIGFsb25nIHdpdGggc3RhdHMgdXBkYXRlLlxubW0vaHVnZV9tZW1vcnkuYy0zNjY3LSAqIDIuIG5vbi11bmlmb3JtIHNwbGl0OiBmb2xpb19vcmRlciAtIEBuZXdfb3JkZXIgY2FsbHMgdG9cbm1tL2h1Z2VfbWVtb3J5LmM6MzY2ODogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgYXJlIGV4cGVjdGVkIHRvIGJlIG1hZGUgaW4gYSBmb3IgbG9vcCB0byBzcGxpdFxubW0vaHVnZV9tZW1vcnkuYy0zNjY5LSAqICAgIHRoZSBAZm9saW8gdG8gb25lIGxvd2VyIG9yZGVyIGF0IGEgdGltZS4gVGhlIGZvbGlvIGNvbnRhaW5pbmcgQHNwbGl0X2F0XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zNjgxPXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzcyNi1cdFx0cGdhbGxvY190YWdfc3BsaXQoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xubW0vaHVnZV9tZW1vcnkuYzozNzI3Olx0XHRfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCBvbGRfb3JkZXIsIHNwbGl0X29yZGVyKTtcbm1tL2h1Z2VfbWVtb3J5LmMtMzcyOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDUxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBNZW1vcnkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBgX19zcGxpdF9mb2xpb190b19vcmRlcmAuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIG15IGV5ZWJyb3dzLiBJIGtub3cgdGhhdCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAuIFRoYXQgc2VxdWVuY2Ugb2YgZnVuY3Rpb24gY2FsbHMgc2NyZWFtcyBjb3JlIGtlcm5lbCBsb2dpYywgZGVhbGluZyB3aXRoIGh1Z2UgbWVtb3J5IGFuZCBwYWdlIHNwbGl0dGluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IGluIGEgY3JpdGljYWwgYXJlYS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgY291bGQgYmUgYSBnb29kIGFyZWEgZm9yIGZ1enppbmcuCgpUaGUgdGV4dCBhbHNvIG1lbnRpb25zIHRoaXMgaXMgYSBmaXggcmVsYXRlZCB0byBod3BvaXNvbi4gVGhpcyBzZWVtcyBsaWtlIGEgdmFsaWQgYXJlYSB0byBmb2N1cyBvbi4KClNvLCBpcyBpdCB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdCB0b3VjaGVzIGZ1bmRhbWVudGFsIGZ1bmN0aW9uYWxpdHksIGFuZCBhIGJ1ZyByZWxhdGVkIHRvIGh3cG9pc29uIGlzIHBvdGVudGlhbGx5IHNldmVyZS4gVGhlIHBhdGNoIGlzIGZ1bmN0aW9uLWJhc2VkIGFuZCB0aGF0IG1lYW5zIGl0IGhhcyByZWFsIHdvcmxkIHZhbHVlLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUga2V5IGZ1bmN0aW9uczogYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgLCBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AsIGFuZCBgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgLiBJJiMzOTtsbCB3YW50IHRvIGtlZXAgYW4gZXllIG9uIHRoZXNlLiBBbmQganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG1tL2h1Z2VfbWVtb3J5LmNgIGp1c3QgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodWdlX21lbW9yeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTEwMD1vYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgJiM0Mzs9IG1pZ3JhdGVfZGV2aWNlLm9cbm1tL01ha2VmaWxlOjEwMTpvYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICYjNDM7PSBodWdlX21lbW9yeS5vIGtodWdlcGFnZWQub1xubW0vTWFrZWZpbGUtMTAyLW9iai0kKENPTkZJR19QQUdFX0NPVU5URVIpICYjNDM7PSBwYWdlX2NvdW50ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBLZXJuZWwgTWVtb3J5IE1hbmFnZW1lbnQgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRoZSBuZWVkIGZvciBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBjbGVhci4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW50ZXJwbGF5IHdpdGggb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIHBhcnRpY3VsYXJseSBhcm91bmQgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IGBoYW5kbGVfaHdwb2lzb25gIG1pZ2h0IGludGVyYWN0IHdpdGggYENPTkZJR19NRU1PUllfRkFJTFVSRWAuIGBoYW5kbGVfaHdwb2lzb25gIGlzIHRoZSByb3V0aW5lIHRoYXQgZGVhbHMgd2l0aCBoYXJkd2FyZSBtZW1vcnkgZXJyb3JzLCBhbmQgdGhlc2UgY291bGQgZGVmaW5pdGVseSBpbXBhY3QgaHVnZXBhZ2UgaGFuZGxpbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjb25zZXF1ZW5jZXMgb2YgdGhlc2UgdHdvIGZlYXR1cmVzIHdvcmtpbmcgdG9nZXRoZXIuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzLCBlZGdlIGNhc2VzLCBvciBvcHRpbWl6YXRpb25zIHRvIGJlIGF3YXJlIG9mPyBUaGlzIHdpbGwgaGVscCBtZSBwbGFuIGFuZCB0cm91Ymxlc2hvb3QgYW55IGlzc3VlcyB0aGF0IGFyaXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhbmRsZV9od3BvaXNvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYz0zNTI3PXN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM1MzAtXHQvKiBTY2FuIHBvaXNvbmVkIHBhZ2VzIHdoZW4gc3BsaXQgYSBwb2lzb25lZCBmb2xpbyB0byBsYXJnZSBmb2xpb3MgKi9cbm1tL2h1Z2VfbWVtb3J5LmM6MzUzMTpcdGNvbnN0IGJvb2wgaGFuZGxlX2h3cG9pc29uID0gZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZChmb2xpbykgXHUwMDI2XHUwMDI2IG5ld19vcmRlcjtcbm1tL2h1Z2VfbWVtb3J5LmMtMzUzMi1cdGxvbmcgbmV3X25yX3BhZ2VzID0gMSBcdTAwM2NcdTAwM2MgbmV3X29yZGVyO1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzUzOC1cdC8qIENoZWNrIGZpcnN0IG5ld19ucl9wYWdlcyBzaW5jZSB0aGUgbG9vcCBiZWxvdyBza2lwcyB0aGVtICovXG5tbS9odWdlX21lbW9yeS5jOjM1Mzk6XHRpZiAoaGFuZGxlX2h3cG9pc29uIFx1MDAyNlx1MDAyNlxubW0vaHVnZV9tZW1vcnkuYy0zNTQwLVx0ICAgIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQoZm9saW9fcGFnZShmb2xpbywgMCksIG5ld19ucl9wYWdlcykpXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zNjE2LVx0XHQgKiBvdGhlcndpc2UgZm9saW9fZmxhZ3MoKSB0cmlwcyBvbiAocGFnZS1cdTAwM2Vjb21wb3VuZF9pbmZvIFx1MDAyNiAxKS5cbm1tL2h1Z2VfbWVtb3J5LmM6MzYxNzpcdFx0ICogaGFuZGxlX2h3cG9pc29uIGltcGxpZXMgbmV3X29yZGVyICE9IDAuXG5tbS9odWdlX21lbW9yeS5jLTM2MTgtXHRcdCAqL1xubW0vaHVnZV9tZW1vcnkuYzozNjE5Olx0XHRpZiAoaGFuZGxlX2h3cG9pc29uIFx1MDAyNlx1MDAyNlxubW0vaHVnZV9tZW1vcnkuYy0zNjIwLVx0XHQgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChuZXdfaGVhZCwgbmV3X25yX3BhZ2VzKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjA5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBmb2xpb190ZXN0X2hhc19od3BvaXNvbmVkYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZGAgYW5kIG15IGJyYWluIGltbWVkaWF0ZWx5IG1ha2VzIHRoZSBhc3NvY2lhdGlvbiDigJMgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHJlbGF0ZWQgdG8gaGFyZHdhcmUgcG9pc29uaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgaGFyZHdhcmUgcG9pc29uaW5nIGRldGVjdGlvbiBvciBoYW5kbGluZy4gVGhlIG5leHQgbG9naWNhbCBzdGVwLCBiZWZvcmUgSSBkaWcgaW50byBhbnkgaGlnaGVyLWxldmVsIGNvZGUsIGlzIHRvIGZpbmQgdGhlIGZ1bmN0aW9uJiMzOTtzIGRlZmluaXRpb24uIExldCBtZSBxdWlja2x5IHRyYWNrIGRvd24gd2hlcmUgYGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWRgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gdGhlIGNvZGViYXNlLiBVbmRlcnN0YW5kaW5nIHRoZSBmdW5jdGlvbiYjMzk7cyBzaWduYXR1cmUgYW5kIGltcGxlbWVudGF0aW9uIHdpbGwgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbmFsIGNvbnRleHQgSSBuZWVkIHRvIHByb2NlZWQgd2l0aCBteSBpbnZlc3RpZ2F0aW9uIGFuZCBmb3JtIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oPTEwNzI9c3RhdGljIGlubGluZSBib29sIGZvbGlvX2NvbnRhaW5faHdwb2lzb25lZF9wYWdlKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTA3NC1cdHJldHVybiBmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSB8fFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTA3NTpcdCAgICAoZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWQoZm9saW8pKTtcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTgwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgSGFyZHdhcmUgUG9pc29uaW5nIENvbmNlcm4qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIGZ1bmN0aW9uYWxpdHkuIE15IGltbWVkaWF0ZSBmaXJzdCBzdG9wLCBhcyBhbHdheXMsIGlzIHRoZSBkZWZpbml0aXZlIHNvdXJjZTogYGluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oYC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSBleGFjdGx5IGhvdyBpdCYjMzk7cyBkZWZpbmVkLCB3aGF0IHRoZSB1bmRlcmx5aW5nIGJpdHMgcmVwcmVzZW50LCBhbmQgY3J1Y2lhbGx5LCBob3cgdGhpcyByZWxhdGVzIHRvIG90aGVyIHJlbGV2YW50IGZvbGlvIGZsYWdzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBgaHdwb2lzb25lZGAgc3RhdGUgYW5kIHRoaW5ncyBsaWtlIHRoZSBwYWdlIHN0YXRlIChlLmcuLCBgUEdfaHdwb2lzb25gLCBgUEdfZXJyb3JgLCBldGMuKSB0byBnZXQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB3aG9sZSBwaWN0dXJlLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhpcyBmbGFnIGlzIG1hbmlwdWxhdGVkIGFuZCBjaGVja2VkIGFjcm9zcyB0aGUgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fc2V0X2hhc19od3BvaXNvbmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODM3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6CgoqKldoZXJlJiMzOTtzIFRoYXQgRnVuY3Rpb24/KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkgc2VlIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgLiBOb3csIEkmIzM5O20gcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIGZvbGlvL3BhZ2UgbWFuYWdlbWVudCBpbiB0aGUga2VybmVsLCBidXQgZm9yIHRoZSBsaWZlIG9mIG1lLCBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSByZWNhbGwgd2hlcmUgdGhhdCBzcGVjaWZpYyBmdW5jdGlvbiBpcyBkZWZpbmVkLiBJIGtub3cgdGhlcmUmIzM5O3MgYSB3aG9sZSBmYW1pbHkgb2YgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcG9pc29uaW5nLCBzbyBJJiMzOTttIGxpa2VseSBtaXNyZW1lbWJlcmluZyBvciBwZXJoYXBzIGl0JiMzOTtzIGRlZmluZWQgaW4gYSBoZWFkZXIgZmlsZSBvciBwZXJoYXBzIGl0IGlzIGRlZmluZWQgaW4gYSBuZXcgc2V0IG9mIHNvdXJjZSBjb2RlLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaXRzIG9yaWdpbiB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGlzIGN1cnJlbnQgY29udGV4dC4gVGhlIGltcGxpY2F0aW9ucyBvZiBoYXJkd2FyZSBwb2lzb25pbmcgYXJlIHNpZ25pZmljYW50LiBJJiMzOTtsbCBuZWVkIHRvIGdvIGZpbmQgd2hlcmUgdGhlIGRlZmluaXRpb24gaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fc2V0X2hhc19od3BvaXNvbmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDY4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCBJJiMzOTttIHRoZSBvbmUgaGF2aW5nIHRoZSB0aG91Z2h0cywgYW5kIGdlYXJlZCB0b3dhcmRzIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWFjcm8tR2VuZXJhdGVkIEluc2lnaHQqKgoKUmlnaHQsIHRha2luZyBhIGxvb2sgYXQgdGhpcywgdGhlIHN0cnVjdHVyZSBpbW1lZGlhdGVseSBmZWVscyBmYW1pbGlhci4gVGhlIHBhdHRlcm4uLi4geWVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IG1hY3JvLWdlbmVyYXRlZC4gSSBjYW4gc2VlIHRoZSBoYWxsbWFya3M6IHRoZSBjb25zaXN0ZW50IHJlcGV0aXRpb24sIHRoZSBzcGVjaWZpYyBhcnJhbmdlbWVudCBvZiBlbGVtZW50cywgdGhlIHdheSBjZXJ0YWluIGNhbGN1bGF0aW9ucyBzZWVtIHRvIGhhdmUgYmVlbiBwcmUtY29tcHV0ZWQuIE5vdCBtYW51YWxseSBjb25zdHJ1Y3RlZCwgZm9yIHN1cmUuIFRoaXMgc2NyZWFtcyBhdXRvbWF0ZWQgZ2VuZXJhdGlvbi4gTm93LCB0aGUga2V5IGlzIHVuZGVyc3RhbmRpbmcgKndoaWNoKiBtYWNyb3Mgd2VyZSB1c2VkIGFuZCB3aGF0IHRoZWlyIHB1cnBvc2Ugd2FzLiBUaGF0IHdpbGwgdW5sb2NrIHRoZSBrZXkgdG8gcmV2ZXJzZS1lbmdpbmVlcmluZyB0aGUgaW50ZW5kZWQgbG9naWMgYW5kIHNlZWluZyB3aGVyZSB0aGVyZSBtaWdodCBiZSBpbnRlcmVzdGluZyBpbXBsaWNhdGlvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGdlbmVyYXRlZCBvdXRwdXQgbW9yZSBjbG9zZWx5IHRvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBtYWNybyBjYWxscyBvciB0ZW1wbGF0ZXMg4oCTIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZGVlcGVyIGFuYWx5c2lzLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gd29yayBvdXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSB1bmRlcmx5aW5nIGRhdGFzZXQsIHRvbywgc2luY2UgdGhhdCBpbmZvcm1hdGlvbiBpcyBsaWtlbHkgdG8gYmUgaGlnaGx5IHJlbGV2YW50IHRvIGFuIGV4cGVydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzX2h3cG9pc29uZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD05Mz1lbnVtIHBhZ2VmbGFncyB7XG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTkxLVx0LyogQXQgbGVhc3Qgb25lIHBhZ2UgaW4gdGhpcyBmb2xpbyBoYXMgdGhlIGh3cG9pc29uIGZsYWcgc2V0ICovXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxOTI6XHRQR19oYXNfaHdwb2lzb25lZCA9IFBHX2FjdGl2ZSxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTE5My1cdFBHX2xhcmdlX3JtYXBwYWJsZSA9IFBHX3dvcmtpbmdzZXQsIC8qIGFub24gb3IgZmlsZS1iYWNrZWQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD04Nzc9Rk9MSU9fRkxBR19GQUxTRShwYXJ0aWFsbHlfbWFwcGVkKVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTg4OC0gKi9cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjg4OTpGT0xJT19GTEFHKGhhc19od3BvaXNvbmVkLCBGT0xJT19TRUNPTkRfUEFHRSlcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTg5MC0jZWxzZVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6ODkxOkZPTElPX0ZMQUdfRkFMU0UoaGFzX2h3cG9pc29uZWQpXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04OTItI2VuZGlmXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTA3Mj1zdGF0aWMgaW5saW5lIGJvb2wgZm9saW9fY29udGFpbl9od3BvaXNvbmVkX3BhZ2Uoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMDc0LVx0cmV0dXJuIGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pIHx8XG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxMDc1Olx0ICAgIChmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZChmb2xpbykpO1xuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTA3Ni19XG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTE1ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgX19DbGVhclBhZ2VBbm9uRXhjbHVzaXZlKHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTExOTMtI2RlZmluZSBQQUdFX0ZMQUdTX1NFQ09ORFx0XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxMTk0Olx0KDB4ZmZVTCAvKiBvcmRlciAqL1x0XHR8IDFVTCBcdTAwM2NcdTAwM2MgUEdfaGFzX2h3cG9pc29uZWQgfFx0XFxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTExOTUtXHQgMVVMIFx1MDAzY1x1MDAzYyBQR19sYXJnZV9ybWFwcGFibGVcdHwgMVVMIFx1MDAzY1x1MDAzYyBQR19wYXJ0aWFsbHlfbWFwcGVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODUwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgI2Vsc2VgIHNjZW5hcmlvIGludm9sdmluZyBgRk9MSU9fRkxBRyhoYXNfaHdwb2lzb25lZCwgRk9MSU9fU0VDT05EX1BBR0UpYC4gTXkgZXhwZXJ0IGludHVpdGlvbiBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGhhbmRsaW5nIGEgcG90ZW50aWFsIGhhcmR3YXJlIGVycm9yIGRldGVjdGVkIG9uIGEgc2Vjb25kIHBhZ2Ugd2l0aGluIGEgZm9saW8gc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgd2hlbiB0aGlzIGZsYWcgaXNuJiMzOTt0IHNldC4gSXMgdGhpcyBhbiAmIzM0O2Vsc2UmIzM0OyBjbGF1c2UgdG8gYSBjaGVjaz8gSWYgc28sIHdoYXQgY2hlY2s/IEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgKmltcGxpY2F0aW9uKiBvZiB0aGlzIGBGT0xJT19TRUNPTkRfUEFHRWAgY29udGV4dC4gRG9lcyBpdCBtZWFuIGEgc3BlY2lmaWMgcGFnZSB3aXRoaW4gYSBsYXJnZXIgc3RydWN0dXJlLCBhbmQgaWYgc28sIHdoYXQgaXMgdGhhdCBsYXJnZXIgc3RydWN0dXJlIGFuZCBob3cgaXMgaXQgdXNlZCBieSB0aGUgT1M/IFRoZSBgI2Vsc2VgIGNvbmRpdGlvbiBoZXJlIG11c3QgZGVmaW5lIHdoYXQgdG8gZG8gaWYgdGhlIGhhcmR3YXJlIHBvaXNvbmluZyBpc24mIzM5O3Qgc3BlY2lmaWNhbGx5IGZsYWdnZWQgZm9yIHRoYXQgc2Vjb25kIHBhZ2UuIERvZXMgaXQgaW1wbHkgYXNzdW1pbmcgaXQmIzM5O3MgKm5vdCogcG9pc29uZWQ/IElzIHRoZXJlIGEgZGVmYXVsdCBiZWhhdmlvciBlc3RhYmxpc2hlZCBzb21ld2hlcmUgZWxzZSBpbiB0aGUgY29kZWJhc2U/IEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgdG8gZmFjdG9yIGluPyBJcyB0aGVyZSBhIGZhbGxiYWNrIG1lY2hhbmlzbSB0byB0cmlnZ2VyIGluIHRoaXMgYCNlbHNlYCBzaXR1YXRpb24/IEkgYWxzbyB3YW50IHRvIGNoZWNrIG90aGVyIHBsYWNlcyB3aGVyZSB0aGlzIEZPTElPX0ZMQUcgaXMgdXRpbGl6ZWQuIEhvdyBkb2VzIHRoZSBjb2RlIGhhbmRsZSBwYWdlcyB0aGF0ICphcmUqIGZsYWdnZWQgYXMgaGF2aW5nIGhhcmR3YXJlIHBvaXNvbmluZz8gTWF5YmUgSSB3aWxsIGJlIGFibGUgdG8gZm9ybSBhIG1vcmUgY29tcGxldGUgbWVudGFsIG1vZGVsIG9mIHdoYXQgdGhlIGAjZWxzZWAgYmxvY2sgaXMgdXNlZCBmb3Igd2l0aGluIHRoZSBjb250ZXh0IG9mIGhhcmR3YXJlIGZhaWx1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc19od3BvaXNvbmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9OTM9ZW51bSBwYWdlZmxhZ3Mge1xuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTE5MS1cdC8qIEF0IGxlYXN0IG9uZSBwYWdlIGluIHRoaXMgZm9saW8gaGFzIHRoZSBod3BvaXNvbiBmbGFnIHNldCAqL1xuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTkyOlx0UEdfaGFzX2h3cG9pc29uZWQgPSBQR19hY3RpdmUsXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xOTMtXHRQR19sYXJnZV9ybWFwcGFibGUgPSBQR193b3JraW5nc2V0LCAvKiBhbm9uIG9yIGZpbGUtYmFja2VkICovXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9ODc3PUZPTElPX0ZMQUdfRkFMU0UocGFydGlhbGx5X21hcHBlZClcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04ODgtICovXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDo4ODk6Rk9MSU9fRkxBRyhoYXNfaHdwb2lzb25lZCwgRk9MSU9fU0VDT05EX1BBR0UpXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04OTAtI2Vsc2VcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjg5MTpGT0xJT19GTEFHX0ZBTFNFKGhhc19od3BvaXNvbmVkKVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtODkyLSNlbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oPTEwNzI9c3RhdGljIGlubGluZSBib29sIGZvbGlvX2NvbnRhaW5faHdwb2lzb25lZF9wYWdlKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTA3NC1cdHJldHVybiBmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSB8fFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTA3NTpcdCAgICAoZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWQoZm9saW8pKTtcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzYtfVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oPTExNTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIF9fQ2xlYXJQYWdlQW5vbkV4Y2x1c2l2ZShzdHJ1Y3QgcGFnZSAqcGFnZSlcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMTkzLSNkZWZpbmUgUEFHRV9GTEFHU19TRUNPTkRcdFx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTE5NDpcdCgweGZmVUwgLyogb3JkZXIgKi9cdFx0fCAxVUwgXHUwMDNjXHUwMDNjIFBHX2hhc19od3BvaXNvbmVkIHxcdFxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMTk1LVx0IDFVTCBcdTAwM2NcdTAwM2MgUEdfbGFyZ2Vfcm1hcHBhYmxlXHR8IDFVTCBcdTAwM2NcdTAwM2MgUEdfcGFydGlhbGx5X21hcHBlZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcyMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gUGFnZSBGbGFncyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCB3aGVyZSYjMzk7cyB0aGUgYmVzdCBwbGFjZSB0byBkaWcgaW50byB0aGUgZ3V0cyBvZiBwYWdlIGZsYWdzPyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBzcGVjaWZpYyBkZXRhaWxzLiBSaWdodCwgaXQmIzM5O3MgcHJvYmFibHkgYmVzdCB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmhgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgODg5LiBUaGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlIG1vcmUgY3J1Y2lhbCBkZWZpbml0aW9ucyBhbmQgbWF5YmUgc29tZSBvZiB0aGUgY29yZSBtYWNyb3MgYXJlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmbGFncyBhcmUgdXNlZCBpbiByZWxhdGlvbiB0byB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRldGFpbHMgdGhhdCBhcmUgYWxtb3N0IGNlcnRhaW5seSB0b3VjaGVkIG9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4NzA6XHRcdEJVR19PTighUGFnZUhlYWQocGFnZSkpO1xuIDg3MTpcdFx0Q2xlYXJQYWdlSGVhZChwYWdlKTtcbiA4NzI6XHR9XG4gODczOlx0Rk9MSU9fRkxBRyhsYXJnZV9ybWFwcGFibGUsIEZPTElPX1NFQ09ORF9QQUdFKVxuIDg3NDpcdEZPTElPX0ZMQUcocGFydGlhbGx5X21hcHBlZCwgRk9MSU9fU0VDT05EX1BBR0UpXG4gODc1Olx0I2Vsc2VcbiA4NzY6XHRGT0xJT19GTEFHX0ZBTFNFKGxhcmdlX3JtYXBwYWJsZSlcbiA4Nzc6XHRGT0xJT19GTEFHX0ZBTFNFKHBhcnRpYWxseV9tYXBwZWQpXG4gODc4Olx0I2VuZGlmXG4gODc5Olx0XG4gODgwOlx0I2RlZmluZSBQR19oZWFkX21hc2sgKCgxVUwgXHUwMDNjXHUwMDNjIFBHX2hlYWQpKVxuIDg4MTpcdFxuIDg4MjpcdCNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKVxuIDg4MzpcdC8qXG4gODg0Olx0ICogUGFnZUhhc0hXUG9pc29uZWQgaW5kaWNhdGVzIHRoYXQgYXQgbGVhc3Qgb25lIHN1YnBhZ2UgaXMgaHdwb2lzb25lZCBpbiB0aGVcbiA4ODU6XHQgKiBjb21wb3VuZCBwYWdlLlxuIDg4NjpcdCAqXG4gODg3Olx0ICogVGhpcyBmbGFnIGlzIHNldCBieSBod3BvaXNvbiBoYW5kbGVyLiAgQ2xlYXJlZCBieSBUSFAgc3BsaXQgb3IgZnJlZSBwYWdlLlxuIDg4ODpcdCAqL1xuIDg4OTpcdEZPTElPX0ZMQUcoaGFzX2h3cG9pc29uZWQsIEZPTElPX1NFQ09ORF9QQUdFKVxuIDg5MDpcdCNlbHNlXG4gODkxOlx0Rk9MSU9fRkxBR19GQUxTRShoYXNfaHdwb2lzb25lZClcbiA4OTI6XHQjZW5kaWZcbiA4OTM6XHRcbiA4OTQ6XHQvKlxuIDg5NTpcdCAqIEZvciBwYWdlcyB0aGF0IGRvIG5vdCB1c2UgbWFwY291bnQsIHBhZ2VfdHlwZSBtYXkgYmUgdXNlZC5cbiA4OTY6XHQgKiBUaGUgbG93IDI0IGJpdHMgb2YgcGFnZXR5cGUgbWF5IGJlIHVzZWQgZm9yIHlvdXIgb3duIHB1cnBvc2VzLCBhcyBsb25nXG4gODk3Olx0ICogYXMgeW91IGFyZSBjYXJlZnVsIHRvIG5vdCBhZmZlY3QgdGhlIHRvcCA4IGJpdHMuICBUaGUgbG93IGJpdHMgb2ZcbiA4OTg6XHQgKiBwYWdldHlwZSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdoZW4geW91IGNsZWFyIHRoZSBwYWdlX3R5cGUgZnJvbSB0aGUgcGFnZS5cbiA4OTk6XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQzNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGb2xpbyBTcGxpdHRpbmcgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYENPTkZJR19NRU1PUllfRkFJTFVSRWAgYW5kIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFyZSBlc3NlbnRpYWwgZm9yIHRoaXMgdG8gZXZlbiBiZSByZWxldmFudC4gVGhlIGNvcmUgaXNzdWUgc2VlbXMgdG8gYmUgd2l0aGluIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYC4gSXQgYXBwZWFycyB3ZSB3ZXJlIGNhbGxpbmcgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgcHJlbWF0dXJlbHkuICBTcGVjaWZpY2FsbHksIHRoaXMgaGFwcGVuZWQgYmVmb3JlIHdlJiMzOTtkIGZ1bGx5IGluaXRpYWxpemVkIHRoZSBuZXcgZm9saW8mIzM5O3Mgc3RydWN0dXJlIHdpdGggYGNsZWFyX2NvbXBvdW5kX2hlYWQoKWAgYW5kIGBwcmVwX2NvbXBvdW5kX3BhZ2UoKWAsIGVzc2VudGlhbGx5IHRyYW5zZm9ybWluZyB0aGUgdGFpbCBwYWdlIGludG8gdGhlIGxlZ2l0aW1hdGUgZm9saW8gaGVhZC4KClRoaXMgaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgYnVnIGluIG1lbW9yeSBtYW5hZ2VtZW50LCBkaXJlY3RseSBpbXBhY3RpbmcgaG93IHdlIGhhbmRsZSB0cmFuc3BhcmVudCBodWdlcGFnZXMgYW5kIG1lbW9yeSBmYWlsdXJlIHNjZW5hcmlvcy4gIFRoZSBmaXggaGVyZSBpcyAqZnVuY3Rpb25hbGx5KiBjaGFuZ2luZyBob3cgZm9saW9zIGFyZSBoYW5kbGVkIGR1cmluZyBzcGxpdHRpbmcuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2UgaXMgaW1wbGljYXRlZCBieSB0aGlzIGNoYW5nZS4gSG1tLCByaWdodCwgYENPTkZJR19NRU1PUllfRkFJTFVSRWAgaXMgZGVmaW5pdGVseSBuZWVkZWQgYmVjYXVzZSBvZiB0aGF0IGBGT0xJT19GTEFHKGhhc19od3BvaXNvbmVkLCBGT0xJT19TRUNPTkRfUEFHRSlgIHVzYWdlLiBBbmQgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY2xlYXJseSBuZWVkZWQsIGJlY2F1c2Ugb2YgdGhlIGludm9sdmVtZW50IG9mIGBtbS9odWdlX21lbW9yeS5jYC4gSSYjMzk7bGwgZ28gY2hlY2sgYG1tL2h1Z2VfbWVtb3J5LmNgIG9uZSBtb3JlIHRpbWUuIEVzcGVjaWFsbHkgdG8gc2VlIHRoZSBmdWxsIGNvbnRleHQgb2YgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgLiBJJiMzOTtsbCBhbHNvIGJlIGtlZXBpbmcgYW4gZXllIG9uIGBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvYCBhbmQgYHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCwgdG8gc2VlIGhvdyB0aGV5IGludGVyYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdlX21lbW9yeS5jPTM1MTU9c3RhdGljIGJvb2wgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChzdHJ1Y3QgcGFnZSAqcGFnZSwgbG9uZyBucl9wYWdlcylcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM1MjYtICovXG5tbS9odWdlX21lbW9yeS5jOjM1Mjc6c3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxubW0vaHVnZV9tZW1vcnkuYy0zNTI4LVx0XHRpbnQgbmV3X29yZGVyKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzY2NC0gKiAxLiB1bmlmb3JtIHNwbGl0OiBAeGFzIGlzIHNwbGl0IHdpdGggbm8gZXhwZWN0YXRpb24gb2YgZmFpbHVyZSBhbmQgYSBzaW5nbGVcbm1tL2h1Z2VfbWVtb3J5LmM6MzY2NTogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgaXMgY2FsbGVkIHRvIHNwbGl0IHRoZSBAZm9saW8gaW50byBAbmV3X29yZGVyXG5tbS9odWdlX21lbW9yeS5jLTM2NjYtICogICAgYWxvbmcgd2l0aCBzdGF0cyB1cGRhdGUuXG5tbS9odWdlX21lbW9yeS5jLTM2NjctICogMi4gbm9uLXVuaWZvcm0gc3BsaXQ6IGZvbGlvX29yZGVyIC0gQG5ld19vcmRlciBjYWxscyB0b1xubW0vaHVnZV9tZW1vcnkuYzozNjY4OiAqICAgIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBhcmUgZXhwZWN0ZWQgdG8gYmUgbWFkZSBpbiBhIGZvciBsb29wIHRvIHNwbGl0XG5tbS9odWdlX21lbW9yeS5jLTM2NjktICogICAgdGhlIEBmb2xpbyB0byBvbmUgbG93ZXIgb3JkZXIgYXQgYSB0aW1lLiBUaGUgZm9saW8gY29udGFpbmluZyBAc3BsaXRfYXRcbi0tXG5tbS9odWdlX21lbW9yeS5jPTM2ODE9c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zNzI2LVx0XHRwZ2FsbG9jX3RhZ19zcGxpdChmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XG5tbS9odWdlX21lbW9yeS5jOjM3Mjc6XHRcdF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xubW0vaHVnZV9tZW1vcnkuYy0zNzI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTc2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkgc2VlIHRoYXQgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIGlzIGJlaW5nIGNhbGxlZCBieSBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcXVlc3Rpb24gaW4gbXkgbWluZDogQXJlIHRoZXNlIGZ1bmN0aW9ucyBhbHdheXMgYXZhaWxhYmxlLCBvciBhcmUgdGhleSBjb25kaXRpb25hbD8gTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgc2NhbiBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AgdG8gc2VlIGlmIGl0JiMzOTtzIHdyYXBwZWQgd2l0aGluIGFueSBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBlbnRpcmUgY2h1bmsgb2YgbG9naWMgaXMgY29tcGlsZWQgb25seSB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHdpbGwgaW5mbHVlbmNlIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGFuZCB3aGVuIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCBpcyB1dGlsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zcGxpdF91bm1hcHBlZF9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYz0zNTI3PXN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM2NDAtLyoqXG5tbS9odWdlX21lbW9yeS5jOjM2NDE6ICogX19zcGxpdF91bm1hcHBlZF9mb2xpbygpIC0gc3BsaXRzIGFuIHVubWFwcGVkIEBmb2xpbyB0byBsb3dlciBvcmRlciBmb2xpb3MgaW5cbm1tL2h1Z2VfbWVtb3J5LmMtMzY0Mi0gKiB0d28gd2F5czogdW5pZm9ybSBzcGxpdCBvciBub24tdW5pZm9ybSBzcGxpdC5cbi0tXG5tbS9odWdlX21lbW9yeS5jLTM2ODAtICovXG5tbS9odWdlX21lbW9yeS5jOjM2ODE6c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXG5tbS9odWdlX21lbW9yeS5jLTM2ODItXHRcdHN0cnVjdCBwYWdlICpzcGxpdF9hdCwgc3RydWN0IHhhX3N0YXRlICp4YXMsXG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zODA4PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zODgxLVxubW0vaHVnZV9tZW1vcnkuYzozODgyOlx0XHRyZXQgPSBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X2F0LCB4YXMsXG5tbS9odWdlX21lbW9yeS5jLTM4ODMtXHRcdFx0XHRcdCAgICAgbWFwcGluZywgc3BsaXRfdHlwZSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zOTcxLSAqXG5tbS9odWdlX21lbW9yeS5jOjM5NzI6ICogSXQgY2FsbHMgX19zcGxpdF91bm1hcHBlZF9mb2xpbygpIHRvIHBlcmZvcm0gdW5pZm9ybSBhbmQgbm9uLXVuaWZvcm0gc3BsaXQuXG5tbS9odWdlX21lbW9yeS5jLTM5NzMtICogSXQgaXMgaW4gY2hhcmdlIG9mIGNoZWNraW5nIHdoZXRoZXIgdGhlIHNwbGl0IGlzIHN1cHBvcnRlZCBvciBub3QgYW5kXG5tbS9odWdlX21lbW9yeS5jOjM5NzQ6ICogcHJlcGFyaW5nIEBmb2xpbyBmb3IgX19zcGxpdF91bm1hcHBlZF9mb2xpbygpLlxubW0vaHVnZV9tZW1vcnkuYy0zOTc1LSAqXG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zOTg0PXN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDA2Ni1cdFx0Lypcbm1tL2h1Z2VfbWVtb3J5LmM6NDA2NzpcdFx0ICpfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKCkgbWF5IG5lZWQgdG8gdHJpbSBvZmYgcGFnZXMgYmV5b25kXG5tbS9odWdlX21lbW9yeS5jLTQwNjgtXHRcdCAqIEVPRjogYnV0IG9uIDMyLWJpdCwgaV9zaXplX3JlYWQoKSB0YWtlcyBhbiBpcnEtdW5zYWZlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNTgKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBLZXJuZWwgQ29kZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIG1lbW9yeS1yZWxhdGVkIGlzc3VlLCBhbmQgbXkgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgdG8gYG1tL2h1Z2VfbWVtb3J5LmNgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgb2J2aW91cyBwbGFjZSB0byBmaW5kIGNvZGUgZGVhbGluZyB3aXRoIGh1Z2UgcGFnZXMuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFRoZSBmYWN0IHRoYXQgdGhpcyBmaWxlIGlzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBlbmFibGVkIGlzIGNyaXRpY2FsIGNvbnRleHQuIFRoYXQgaW5zdGFudGx5IHRlbGxzIG1lIHRoYXQgd2hhdGV2ZXImIzM5O3MgaGFwcGVuaW5nIGlzIHJlbGF0ZWQgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzLiBUbyBiZSBzcGVjaWZpYywgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYXMgd2VsbCBhcyBgTUVNT1JZX0ZBSUxVUkVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgdHdvIGNvbmZpZ3MuIExldCYjMzk7cyBjYWxsIGl0OiBzZXQtcmVzdWx0cywgdGhlIHByb2JsZW0gaXMgcmVzb2x2ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7LAogICAgJiMzNDtUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fc3BsaXRfZm9saW9fdG9fb3JkZXImIzM0OywKICAgICYjMzQ7X19zcGxpdF91bm1hcHBlZF9mb2xpbyYjMzQ7LAogICAgJiMzNDtzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgd2hlcmUgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBmb2xpbyB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXMgYSBoZWFkIGZvbGlvLCBjYXVzaW5nIGBmb2xpb19mbGFncygpYCB0byB0cmlwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9GQUlMVVJFJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zcGxpdF9mb2xpb190b19vcmRlciYjMzQ7LAogICAgJiMzNDtfX3NwbGl0X3VubWFwcGVkX2ZvbGlvJiMzNDssCiAgICAmIzM0O3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCB3aGVyZSBgZm9saW9fc2V0X2hhc19od3BvaXNvbmVkYCB3YXMgY2FsbGVkIGJlZm9yZSB0aGUgbmV3IGZvbGlvIHdhcyBwcm9wZXJseSBpbml0aWFsaXplZCBhcyBhIGhlYWQgZm9saW8sIGNhdXNpbmcgYGZvbGlvX2ZsYWdzKClgIHRvIHRyaXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHJlbGF0ZWQgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjE4LjMwNDUyNzIwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MDg0MTMzMzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTU9SWV9GQUlMVVJFXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3BsaXRfZm9saW9fdG9fb3JkZXJcIixcbiAgICBcIl9fc3BsaXRfdW5tYXBwZWRfZm9saW9cIixcbiAgICBcInNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIHdoZXJlIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIHdhcyBjYWxsZWQgYmVmb3JlIHRoZSBuZXcgZm9saW8gd2FzIHByb3Blcmx5IGluaXRpYWxpemVkIGFzIGEgaGVhZCBmb2xpbywgY2F1c2luZyBgZm9saW9fZmxhZ3MoKWAgdG8gdHJpcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgcmVsYXRlZCB0byB0cmFuc3BhcmVudCBodWdlcGFnZXMgYW5kIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0MzoxOC4zMDQ1MzcwNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MzI2OTI2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBmZTEwZmE2YTk5OGU1MTIwMDZiMDhhYzllZWUwZTA5MDAzNzZhM2ZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAyMTo0MzoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuY1xcbmluZGV4IDJiY2NiMGE1M2EwYTYwLi5lZTdlY2IzYjQ1YzZmOCAxMDA2NDRcXG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXFxuKysrIGIvbW0vaHVnZV9tZW1vcnkuY1xcbkBAIC0zNTg3LDEwICszNTg3LDYgQEAgc3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxcbiBcXHRcXHRcXHRcXHQgKDFMIFxcdTAwM2NcXHUwMDNjIFBHX2Ryb3BiZWhpbmQpIHxcXG4gXFx0XFx0XFx0XFx0IExSVV9HRU5fTUFTSyB8IExSVV9SRUZTX01BU0spKTtcXG4gXFxuLVxcdFxcdGlmIChoYW5kbGVfaHdwb2lzb24gXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQobmV3X2hlYWQsIG5ld19ucl9wYWdlcykpXFxuLVxcdFxcdFxcdGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZChuZXdfZm9saW8pO1xcbi1cXG4gXFx0XFx0bmV3X2ZvbGlvLVxcdTAwM2VtYXBwaW5nID0gZm9saW8tXFx1MDAzZW1hcHBpbmc7XFxuIFxcdFxcdG5ld19mb2xpby1cXHUwMDNlaW5kZXggPSBmb2xpby1cXHUwMDNlaW5kZXggKyBpO1xcbiBcXG5AQCAtMzYxMiw2ICszNjA4LDE4IEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG4gXFx0XFx0XFx0Zm9saW9fc2V0X2xhcmdlX3JtYXBwYWJsZShuZXdfZm9saW8pO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBQR19oYXNfaHdwb2lzb25lZCBpcyBhIEZPTElPX1NFQ09ORF9QQUdFIGZsYWcsIHNvIGl0IGNhbiBvbmx5XFxuK1xcdFxcdCAqIGJlIHNldCBvbmNlIEBuZXdfZm9saW8gaXMgYSByZWFsIChoZWFkKSBmb2xpby4gIERlZmVyIHNldHRpbmdcXG4rXFx0XFx0ICogaXQgdW50aWwgYWZ0ZXIgY2xlYXJfY29tcG91bmRfaGVhZCgpL3ByZXBfY29tcG91bmRfcGFnZSgpIGhhdmVcXG4rXFx0XFx0ICogdHVybmVkIEBuZXdfaGVhZCBmcm9tIGEgdGFpbCBwYWdlIGludG8gYSBwcm9wZXIgZm9saW8gaGVhZDtcXG4rXFx0XFx0ICogb3RoZXJ3aXNlIGZvbGlvX2ZsYWdzKCkgdHJpcHMgb24gKHBhZ2UtXFx1MDAzZWNvbXBvdW5kX2luZm8gXFx1MDAyNiAxKS5cXG4rXFx0XFx0ICogaGFuZGxlX2h3cG9pc29uIGltcGxpZXMgbmV3X29yZGVyICE9IDAuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoaGFuZGxlX2h3cG9pc29uIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBwYWdlX3JhbmdlX2hhc19od3BvaXNvbmVkKG5ld19oZWFkLCBuZXdfbnJfcGFnZXMpKVxcbitcXHRcXHRcXHRmb2xpb19zZXRfaGFzX2h3cG9pc29uZWQobmV3X2ZvbGlvKTtcXG4rXFxuIFxcdFxcdGlmIChmb2xpb190ZXN0X3lvdW5nKGZvbGlvKSlcXG4gXFx0XFx0XFx0Zm9saW9fc2V0X3lvdW5nKG5ld19mb2xpbyk7XFxuIFxcdFxcdGlmIChmb2xpb190ZXN0X2lkbGUoZm9saW8pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0MzoxOS4wNzg3NTA0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzMDk4OTMyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiX19zcGxpdF91bm1hcHBlZF9mb2xpb1wiLFxuICAgIFwic3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgd2hlcmUgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBmb2xpbyB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXMgYSBoZWFkIGZvbGlvLCBjYXVzaW5nIGBmb2xpb19mbGFncygpYCB0byB0cmlwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGZlMTBmYTZhOTk4ZTUxMjAwNmIwOGFjOWVlZTBlMDkwMDM3NmEzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjE6NDM6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuY1xuaW5kZXggMmJjY2IwYTUzYTBhNjAuLmVlN2VjYjNiNDVjNmY4IDEwMDY0NFxuLS0tIGEvbW0vaHVnZV9tZW1vcnkuY1xuKysrIGIvbW0vaHVnZV9tZW1vcnkuY1xuQEAgLTM1ODcsMTAgKzM1ODcsNiBAQCBzdGF0aWMgdm9pZCBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBvbGRfb3JkZXIsXG4gXHRcdFx0XHQgKDFMIFx1MDAzY1x1MDAzYyBQR19kcm9wYmVoaW5kKSB8XG4gXHRcdFx0XHQgTFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykpO1xuIFxuLVx0XHRpZiAoaGFuZGxlX2h3cG9pc29uIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChuZXdfaGVhZCwgbmV3X25yX3BhZ2VzKSlcbi1cdFx0XHRmb2xpb19zZXRfaGFzX2h3cG9pc29uZWQobmV3X2ZvbGlvKTtcbi1cbiBcdFx0bmV3X2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0XHRuZXdfZm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleCArIGk7XG4gXG5AQCAtMzYxMiw2ICszNjA4LDE4IEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbiBcdFx0XHRmb2xpb19zZXRfbGFyZ2Vfcm1hcHBhYmxlKG5ld19mb2xpbyk7XG4gXHRcdH1cbiBcbitcdFx0LypcbitcdFx0ICogUEdfaGFzX2h3cG9pc29uZWQgaXMgYSBGT0xJT19TRUNPTkRfUEFHRSBmbGFnLCBzbyBpdCBjYW4gb25seVxuK1x0XHQgKiBiZSBzZXQgb25jZSBAbmV3X2ZvbGlvIGlzIGEgcmVhbCAoaGVhZCkgZm9saW8uICBEZWZlciBzZXR0aW5nXG4rXHRcdCAqIGl0IHVudGlsIGFmdGVyIGNsZWFyX2NvbXBvdW5kX2hlYWQoKS9wcmVwX2NvbXBvdW5kX3BhZ2UoKSBoYXZlXG4rXHRcdCAqIHR1cm5lZCBAbmV3X2hlYWQgZnJvbSBhIHRhaWwgcGFnZSBpbnRvIGEgcHJvcGVyIGZvbGlvIGhlYWQ7XG4rXHRcdCAqIG90aGVyd2lzZSBmb2xpb19mbGFncygpIHRyaXBzIG9uIChwYWdlLVx1MDAzZWNvbXBvdW5kX2luZm8gXHUwMDI2IDEpLlxuK1x0XHQgKiBoYW5kbGVfaHdwb2lzb24gaW1wbGllcyBuZXdfb3JkZXIgIT0gMC5cbitcdFx0ICovXG4rXHRcdGlmIChoYW5kbGVfaHdwb2lzb24gXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBwYWdlX3JhbmdlX2hhc19od3BvaXNvbmVkKG5ld19oZWFkLCBuZXdfbnJfcGFnZXMpKVxuK1x0XHRcdGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZChuZXdfZm9saW8pO1xuK1xuIFx0XHRpZiAoZm9saW9fdGVzdF95b3VuZyhmb2xpbykpXG4gXHRcdFx0Zm9saW9fc2V0X3lvdW5nKG5ld19mb2xpbyk7XG4gXHRcdGlmIChmb2xpb190ZXN0X2lkbGUoZm9saW8pKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6MTkuMDc4NzUxOTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDUxMDIzMjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSHVnZSBNZW1vcnkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHBsYXlpbmcgd2l0aCBgbW0vaHVnZV9tZW1vcnkuY2AsIHNwZWNpZmljYWxseSBgX19zcGxpdF9mb2xpb190b19vcmRlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0ICp3aHkqIGl0J3MgbW92aW5nIHRoZSBzZXR0aW5nIG9mIGBQR19oYXNfaHdwb2lzb25lZGAuIEl0IGxvb2tzIGxpa2UgdGhlIGtleSBpcyB0aGF0IGBQR19oYXNfaHdwb2lzb25lZGAgaXMgYSBgRk9MSU9fU0VDT05EX1BBR0VgIGZsYWcuIFNvLCBpdCBjYW4ndCBiZSBzZXQgdW50aWwgdGhlIGBAbmV3X2ZvbGlvYCAqaXMqIGEgcHJvcGVyIFwiaGVhZFwiIGZvbGlvLiBNYWtlcyBzZW5zZS5cblxuVGhlIGNvbW1lbnQgZmxhZ3MgdGhhdCB0aGUgcHJldmlvdXMgcGxhY2VtZW50IHdhcyBsZWFkaW5nIHRvIHByb2JsZW1zIHdpdGggYGZvbGlvX2ZsYWdzKClgLCBhbmQgdGhhdCBpdCB3YXMgdHJpcHBpbmcgb3ZlciBgKHBhZ2UtXHUwMDNlY29tcG91bmRfaW5mbyBcdTAwMjYgMSlgLiBUaGF0J3MgbGlrZWx5IGJlY2F1c2UgYGNsZWFyX2NvbXBvdW5kX2hlYWQoKWAgb3IgYHByZXBfY29tcG91bmRfcGFnZSgpYCBoYWRuJ3QgYmVlbiBpbnZva2VkIHlldCwgaGVuY2UgdGhlIGNvbXBvdW5kIHBhZ2Ugc3RydWN0dXJlcyBoYWRuJ3QgYmVlbiBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgZmxhZy4gSXQgZmVlbHMgbGlrZSBhIHJhY2UgY29uZGl0aW9uIG9yIGFuIGluaXRpYWxpemF0aW9uIHRpbWluZyBpc3N1ZS5cblxuVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCBpdHNlbGYgYW5kIHNlZSB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gTGV0J3Mgc3RhcnQgd2l0aCB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBoZXJlIHRvIGdyYXNwIHRoZSBwcmVjaXNlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjIzLjEyOTc3OTM0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ1MzY3NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9odWdlX21lbW9yeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2VfbWVtb3J5LmM9MzUxNT1zdGF0aWMgYm9vbCBwYWdlX3JhbmdlX2hhc19od3BvaXNvbmVkKHN0cnVjdCBwYWdlICpwYWdlLCBsb25nIG5yX3BhZ2VzKVxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zNTI2LSAqL1xcbm1tL2h1Z2VfbWVtb3J5LmM6MzUyNzpzdGF0aWMgdm9pZCBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBvbGRfb3JkZXIsXFxubW0vaHVnZV9tZW1vcnkuYy0zNTI4LVxcdFxcdGludCBuZXdfb3JkZXIpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM2NjQtICogMS4gdW5pZm9ybSBzcGxpdDogQHhhcyBpcyBzcGxpdCB3aXRoIG5vIGV4cGVjdGF0aW9uIG9mIGZhaWx1cmUgYW5kIGEgc2luZ2xlXFxubW0vaHVnZV9tZW1vcnkuYzozNjY1OiAqICAgIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBpcyBjYWxsZWQgdG8gc3BsaXQgdGhlIEBmb2xpbyBpbnRvIEBuZXdfb3JkZXJcXG5tbS9odWdlX21lbW9yeS5jLTM2NjYtICogICAgYWxvbmcgd2l0aCBzdGF0cyB1cGRhdGUuXFxubW0vaHVnZV9tZW1vcnkuYy0zNjY3LSAqIDIuIG5vbi11bmlmb3JtIHNwbGl0OiBmb2xpb19vcmRlciAtIEBuZXdfb3JkZXIgY2FsbHMgdG9cXG5tbS9odWdlX21lbW9yeS5jOjM2Njg6ICogICAgX19zcGxpdF9mb2xpb190b19vcmRlcigpIGFyZSBleHBlY3RlZCB0byBiZSBtYWRlIGluIGEgZm9yIGxvb3AgdG8gc3BsaXRcXG5tbS9odWdlX21lbW9yeS5jLTM2NjktICogICAgdGhlIEBmb2xpbyB0byBvbmUgbG93ZXIgb3JkZXIgYXQgYSB0aW1lLiBUaGUgZm9saW8gY29udGFpbmluZyBAc3BsaXRfYXRcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MzY4MT1zdGF0aWMgaW50IF9fc3BsaXRfdW5tYXBwZWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5ld19vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzcyNi1cXHRcXHRwZ2FsbG9jX3RhZ19zcGxpdChmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XFxubW0vaHVnZV9tZW1vcnkuYzozNzI3OlxcdFxcdF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xcbm1tL2h1Z2VfbWVtb3J5LmMtMzcyOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6MjMuMjY0MzI0MjAyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzNDI2OTU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgTWVtb3J5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtb2RpZnlpbmcgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBteSBleWVicm93cy4gSSBrbm93IHRoYXQgZnVuY3Rpb24sIGFuZCBpdCdzIGNhbGxlZCBieSBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAuIFRoYXQgc2VxdWVuY2Ugb2YgZnVuY3Rpb24gY2FsbHMgc2NyZWFtcyBjb3JlIGtlcm5lbCBsb2dpYywgZGVhbGluZyB3aXRoIGh1Z2UgbWVtb3J5IGFuZCBwYWdlIHNwbGl0dGluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IGluIGEgY3JpdGljYWwgYXJlYS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgY291bGQgYmUgYSBnb29kIGFyZWEgZm9yIGZ1enppbmcuXG5cblRoZSB0ZXh0IGFsc28gbWVudGlvbnMgdGhpcyBpcyBhIGZpeCByZWxhdGVkIHRvIGh3cG9pc29uLiBUaGlzIHNlZW1zIGxpa2UgYSB2YWxpZCBhcmVhIHRvIGZvY3VzIG9uLlxuXG5TbywgaXMgaXQgd29ydGggZnV6emluZz8gQWJzb2x1dGVseS4gSXQgdG91Y2hlcyBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsaXR5LCBhbmQgYSBidWcgcmVsYXRlZCB0byBod3BvaXNvbiBpcyBwb3RlbnRpYWxseSBzZXZlcmUuIFRoZSBwYXRjaCBpcyBmdW5jdGlvbi1iYXNlZCBhbmQgdGhhdCBtZWFucyBpdCBoYXMgcmVhbCB3b3JsZCB2YWx1ZS5cblxuTGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgZnVuY3Rpb25zOiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAsIGBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvYCwgYW5kIGBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAuIEknbGwgd2FudCB0byBrZWVwIGFuIGV5ZSBvbiB0aGVzZS4gQW5kIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG1tL2h1Z2VfbWVtb3J5LmNgIGp1c3QgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0MzoyNy40OTg1OTYwNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNjU5MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh1Z2VfbWVtb3J5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTEwMD1vYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgKz0gbWlncmF0ZV9kZXZpY2Uub1xcbm1tL01ha2VmaWxlOjEwMTpvYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXFxubW0vTWFrZWZpbGUtMTAyLW9iai0kKENPTkZJR19QQUdFX0NPVU5URVIpICs9IHBhZ2VfY291bnRlci5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjI3LjY4MjI2MzI2MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjM0NTI4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEtlcm5lbCBNZW1vcnkgTWFuYWdlbWVudCBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCB0aGUgbmVlZCBmb3IgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY2xlYXIuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGludGVycGxheSB3aXRoIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLCBwYXJ0aWN1bGFybHkgYXJvdW5kIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IGBoYW5kbGVfaHdwb2lzb25gIG1pZ2h0IGludGVyYWN0IHdpdGggYENPTkZJR19NRU1PUllfRkFJTFVSRWAuIGBoYW5kbGVfaHdwb2lzb25gIGlzIHRoZSByb3V0aW5lIHRoYXQgZGVhbHMgd2l0aCBoYXJkd2FyZSBtZW1vcnkgZXJyb3JzLCBhbmQgdGhlc2UgY291bGQgZGVmaW5pdGVseSBpbXBhY3QgaHVnZXBhZ2UgaGFuZGxpbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjb25zZXF1ZW5jZXMgb2YgdGhlc2UgdHdvIGZlYXR1cmVzIHdvcmtpbmcgdG9nZXRoZXIuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzLCBlZGdlIGNhc2VzLCBvciBvcHRpbWl6YXRpb25zIHRvIGJlIGF3YXJlIG9mPyBUaGlzIHdpbGwgaGVscCBtZSBwbGFuIGFuZCB0cm91Ymxlc2hvb3QgYW55IGlzc3VlcyB0aGF0IGFyaXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6MzEuNTA1NzE4OTE4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDU2MjUwNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFuZGxlX2h3cG9pc29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2h1Z2VfbWVtb3J5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz0zNTI3PXN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzUzMC1cXHQvKiBTY2FuIHBvaXNvbmVkIHBhZ2VzIHdoZW4gc3BsaXQgYSBwb2lzb25lZCBmb2xpbyB0byBsYXJnZSBmb2xpb3MgKi9cXG5tbS9odWdlX21lbW9yeS5jOjM1MzE6XFx0Y29uc3QgYm9vbCBoYW5kbGVfaHdwb2lzb24gPSBmb2xpb190ZXN0X2hhc19od3BvaXNvbmVkKGZvbGlvKSBcXHUwMDI2XFx1MDAyNiBuZXdfb3JkZXI7XFxubW0vaHVnZV9tZW1vcnkuYy0zNTMyLVxcdGxvbmcgbmV3X25yX3BhZ2VzID0gMSBcXHUwMDNjXFx1MDAzYyBuZXdfb3JkZXI7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM1MzgtXFx0LyogQ2hlY2sgZmlyc3QgbmV3X25yX3BhZ2VzIHNpbmNlIHRoZSBsb29wIGJlbG93IHNraXBzIHRoZW0gKi9cXG5tbS9odWdlX21lbW9yeS5jOjM1Mzk6XFx0aWYgKGhhbmRsZV9od3BvaXNvbiBcXHUwMDI2XFx1MDAyNlxcbm1tL2h1Z2VfbWVtb3J5LmMtMzU0MC1cXHQgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChmb2xpb19wYWdlKGZvbGlvLCAwKSwgbmV3X25yX3BhZ2VzKSlcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzYxNi1cXHRcXHQgKiBvdGhlcndpc2UgZm9saW9fZmxhZ3MoKSB0cmlwcyBvbiAocGFnZS1cXHUwMDNlY29tcG91bmRfaW5mbyBcXHUwMDI2IDEpLlxcbm1tL2h1Z2VfbWVtb3J5LmM6MzYxNzpcXHRcXHQgKiBoYW5kbGVfaHdwb2lzb24gaW1wbGllcyBuZXdfb3JkZXIgIT0gMC5cXG5tbS9odWdlX21lbW9yeS5jLTM2MTgtXFx0XFx0ICovXFxubW0vaHVnZV9tZW1vcnkuYzozNjE5OlxcdFxcdGlmIChoYW5kbGVfaHdwb2lzb24gXFx1MDAyNlxcdTAwMjZcXG5tbS9odWdlX21lbW9yeS5jLTM2MjAtXFx0XFx0ICAgIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQobmV3X2hlYWQsIG5ld19ucl9wYWdlcykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjMzLjUxMTM1MDMxMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NzU0ODMzOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSBgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZGAgYW5kIG15IGJyYWluIGltbWVkaWF0ZWx5IG1ha2VzIHRoZSBhc3NvY2lhdGlvbiDigJMgdGhhdCdzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBoYXJkd2FyZSBwb2lzb25pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBoYXJkd2FyZSBwb2lzb25pbmcgZGV0ZWN0aW9uIG9yIGhhbmRsaW5nLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGJlZm9yZSBJIGRpZyBpbnRvIGFueSBoaWdoZXItbGV2ZWwgY29kZSwgaXMgdG8gZmluZCB0aGUgZnVuY3Rpb24ncyBkZWZpbml0aW9uLiBMZXQgbWUgcXVpY2tseSB0cmFjayBkb3duIHdoZXJlIGBmb2xpb190ZXN0X2hhc19od3BvaXNvbmVkYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBjb2RlYmFzZS4gVW5kZXJzdGFuZGluZyB0aGUgZnVuY3Rpb24ncyBzaWduYXR1cmUgYW5kIGltcGxlbWVudGF0aW9uIHdpbGwgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbmFsIGNvbnRleHQgSSBuZWVkIHRvIHByb2NlZWQgd2l0aCBteSBpbnZlc3RpZ2F0aW9uIGFuZCBmb3JtIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjM2LjI4NjgzODI0MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM3OTA5Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTA3Mj1zdGF0aWMgaW5saW5lIGJvb2wgZm9saW9fY29udGFpbl9od3BvaXNvbmVkX3BhZ2Uoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzQtXFx0cmV0dXJuIGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pIHx8XFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTA3NTpcXHQgICAgKGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWQoZm9saW8pKTtcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMDc2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6MzcuMDI0NzU0NTU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDg2Njg3MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIEhhcmR3YXJlIFBvaXNvbmluZyBDb25jZXJuKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIGZ1bmN0aW9uYWxpdHkuIE15IGltbWVkaWF0ZSBmaXJzdCBzdG9wLCBhcyBhbHdheXMsIGlzIHRoZSBkZWZpbml0aXZlIHNvdXJjZTogYGluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oYC4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdmVyaWZ5IGV4YWN0bHkgaG93IGl0J3MgZGVmaW5lZCwgd2hhdCB0aGUgdW5kZXJseWluZyBiaXRzIHJlcHJlc2VudCwgYW5kIGNydWNpYWxseSwgaG93IHRoaXMgcmVsYXRlcyB0byBvdGhlciByZWxldmFudCBmb2xpbyBmbGFncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYGh3cG9pc29uZWRgIHN0YXRlIGFuZCB0aGluZ3MgbGlrZSB0aGUgcGFnZSBzdGF0ZSAoZS5nLiwgYFBHX2h3cG9pc29uYCwgYFBHX2Vycm9yYCwgZXRjLikgdG8gZ2V0IGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgd2hvbGUgcGljdHVyZS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhpcyBmbGFnIGlzIG1hbmlwdWxhdGVkIGFuZCBjaGVja2VkIGFjcm9zcyB0aGUgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0MC4xMzM0Mjc0ODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NjAyMzYzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm9saW9fc2V0X2hhc19od3BvaXNvbmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0MC4zODk0NjAxNDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY0MDMwNzIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKldoZXJlJ3MgVGhhdCBGdW5jdGlvbj8qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkgc2VlIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgLiBOb3csIEknbSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgZm9saW8vcGFnZSBtYW5hZ2VtZW50IGluIHRoZSBrZXJuZWwsIGJ1dCBmb3IgdGhlIGxpZmUgb2YgbWUsIEkgY2FuJ3QgaW1tZWRpYXRlbHkgcmVjYWxsIHdoZXJlIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24gaXMgZGVmaW5lZC4gSSBrbm93IHRoZXJlJ3MgYSB3aG9sZSBmYW1pbHkgb2YgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcG9pc29uaW5nLCBzbyBJJ20gbGlrZWx5IG1pc3JlbWVtYmVyaW5nIG9yIHBlcmhhcHMgaXQncyBkZWZpbmVkIGluIGEgaGVhZGVyIGZpbGUgb3IgcGVyaGFwcyBpdCBpcyBkZWZpbmVkIGluIGEgbmV3IHNldCBvZiBzb3VyY2UgY29kZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGl0cyBvcmlnaW4gdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhpcyBjdXJyZW50IGNvbnRleHQuIFRoZSBpbXBsaWNhdGlvbnMgb2YgaGFyZHdhcmUgcG9pc29uaW5nIGFyZSBzaWduaWZpY2FudC4gSSdsbCBuZWVkIHRvIGdvIGZpbmQgd2hlcmUgdGhlIGRlZmluaXRpb24gaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MzcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0My4wMjk3NzIxODNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0OTU3NDEwOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm9saW9fc2V0X2hhc19od3BvaXNvbmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0My44NzkzNTUzMjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0NTI1NTM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBleHByZXNzZWQgYXMgdGhvdWdoIEknbSB0aGUgb25lIGhhdmluZyB0aGUgdGhvdWdodHMsIGFuZCBnZWFyZWQgdG93YXJkcyBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWFjcm8tR2VuZXJhdGVkIEluc2lnaHQqKlxuXG5SaWdodCwgdGFraW5nIGEgbG9vayBhdCB0aGlzLCB0aGUgc3RydWN0dXJlIGltbWVkaWF0ZWx5IGZlZWxzIGZhbWlsaWFyLiBUaGUgcGF0dGVybi4uLiB5ZXMsIGl0J3MgZGVmaW5pdGVseSBtYWNyby1nZW5lcmF0ZWQuIEkgY2FuIHNlZSB0aGUgaGFsbG1hcmtzOiB0aGUgY29uc2lzdGVudCByZXBldGl0aW9uLCB0aGUgc3BlY2lmaWMgYXJyYW5nZW1lbnQgb2YgZWxlbWVudHMsIHRoZSB3YXkgY2VydGFpbiBjYWxjdWxhdGlvbnMgc2VlbSB0byBoYXZlIGJlZW4gcHJlLWNvbXB1dGVkLiBOb3QgbWFudWFsbHkgY29uc3RydWN0ZWQsIGZvciBzdXJlLiBUaGlzIHNjcmVhbXMgYXV0b21hdGVkIGdlbmVyYXRpb24uIE5vdywgdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nICp3aGljaCogbWFjcm9zIHdlcmUgdXNlZCBhbmQgd2hhdCB0aGVpciBwdXJwb3NlIHdhcy4gVGhhdCB3aWxsIHVubG9jayB0aGUga2V5IHRvIHJldmVyc2UtZW5naW5lZXJpbmcgdGhlIGludGVuZGVkIGxvZ2ljIGFuZCBzZWVpbmcgd2hlcmUgdGhlcmUgbWlnaHQgYmUgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IG1vcmUgY2xvc2VseSB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgbWFjcm8gY2FsbHMgb3IgdGVtcGxhdGVzIOKAkyB0aGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGRlZXBlciBhbmFseXNpcy4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gd29yayBvdXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSB1bmRlcmx5aW5nIGRhdGFzZXQsIHRvbywgc2luY2UgdGhhdCBpbmZvcm1hdGlvbiBpcyBsaWtlbHkgdG8gYmUgaGlnaGx5IHJlbGV2YW50IHRvIGFuIGV4cGVydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6NDYuOTI0NjEzMzE0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE2NjA0NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFzX2h3cG9pc29uZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9OTM9ZW51bSBwYWdlZmxhZ3Mge1xcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTkxLVxcdC8qIEF0IGxlYXN0IG9uZSBwYWdlIGluIHRoaXMgZm9saW8gaGFzIHRoZSBod3BvaXNvbiBmbGFnIHNldCAqL1xcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjE5MjpcXHRQR19oYXNfaHdwb2lzb25lZCA9IFBHX2FjdGl2ZSxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xOTMtXFx0UEdfbGFyZ2Vfcm1hcHBhYmxlID0gUEdfd29ya2luZ3NldCwgLyogYW5vbiBvciBmaWxlLWJhY2tlZCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9ODc3PUZPTElPX0ZMQUdfRkFMU0UocGFydGlhbGx5X21hcHBlZClcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTg4OC0gKi9cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDo4ODk6Rk9MSU9fRkxBRyhoYXNfaHdwb2lzb25lZCwgRk9MSU9fU0VDT05EX1BBR0UpXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtODkwLSNlbHNlXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6ODkxOkZPTElPX0ZMQUdfRkFMU0UoaGFzX2h3cG9pc29uZWQpXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtODkyLSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTA3Mj1zdGF0aWMgaW5saW5lIGJvb2wgZm9saW9fY29udGFpbl9od3BvaXNvbmVkX3BhZ2Uoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzQtXFx0cmV0dXJuIGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pIHx8XFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTA3NTpcXHQgICAgKGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWQoZm9saW8pKTtcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMDc2LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oPTExNTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIF9fQ2xlYXJQYWdlQW5vbkV4Y2x1c2l2ZShzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTExOTMtI2RlZmluZSBQQUdFX0ZMQUdTX1NFQ09ORFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxMTk0OlxcdCgweGZmVUwgLyogb3JkZXIgKi9cXHRcXHR8IDFVTCBcXHUwMDNjXFx1MDAzYyBQR19oYXNfaHdwb2lzb25lZCB8XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTExOTUtXFx0IDFVTCBcXHUwMDNjXFx1MDAzYyBQR19sYXJnZV9ybWFwcGFibGVcXHR8IDFVTCBcXHUwMDNjXFx1MDAzYyBQR19wYXJ0aWFsbHlfbWFwcGVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0Ny4xMDYyODUxOTZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMjU4MjY5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYCNlbHNlYCBzY2VuYXJpbyBpbnZvbHZpbmcgYEZPTElPX0ZMQUcoaGFzX2h3cG9pc29uZWQsIEZPTElPX1NFQ09ORF9QQUdFKWAuIE15IGV4cGVydCBpbnR1aXRpb24gaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBoYW5kbGluZyBhIHBvdGVudGlhbCBoYXJkd2FyZSBlcnJvciBkZXRlY3RlZCBvbiBhIHNlY29uZCBwYWdlIHdpdGhpbiBhIGZvbGlvIHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIHdoZW4gdGhpcyBmbGFnIGlzbid0IHNldC4gSXMgdGhpcyBhbiBcImVsc2VcIiBjbGF1c2UgdG8gYSBjaGVjaz8gSWYgc28sIHdoYXQgY2hlY2s/IEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSAqaW1wbGljYXRpb24qIG9mIHRoaXMgYEZPTElPX1NFQ09ORF9QQUdFYCBjb250ZXh0LiBEb2VzIGl0IG1lYW4gYSBzcGVjaWZpYyBwYWdlIHdpdGhpbiBhIGxhcmdlciBzdHJ1Y3R1cmUsIGFuZCBpZiBzbywgd2hhdCBpcyB0aGF0IGxhcmdlciBzdHJ1Y3R1cmUgYW5kIGhvdyBpcyBpdCB1c2VkIGJ5IHRoZSBPUz8gVGhlIGAjZWxzZWAgY29uZGl0aW9uIGhlcmUgbXVzdCBkZWZpbmUgd2hhdCB0byBkbyBpZiB0aGUgaGFyZHdhcmUgcG9pc29uaW5nIGlzbid0IHNwZWNpZmljYWxseSBmbGFnZ2VkIGZvciB0aGF0IHNlY29uZCBwYWdlLiBEb2VzIGl0IGltcGx5IGFzc3VtaW5nIGl0J3MgKm5vdCogcG9pc29uZWQ/IElzIHRoZXJlIGEgZGVmYXVsdCBiZWhhdmlvciBlc3RhYmxpc2hlZCBzb21ld2hlcmUgZWxzZSBpbiB0aGUgY29kZWJhc2U/IEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgdG8gZmFjdG9yIGluPyBJcyB0aGVyZSBhIGZhbGxiYWNrIG1lY2hhbmlzbSB0byB0cmlnZ2VyIGluIHRoaXMgYCNlbHNlYCBzaXR1YXRpb24/IEkgYWxzbyB3YW50IHRvIGNoZWNrIG90aGVyIHBsYWNlcyB3aGVyZSB0aGlzIEZPTElPX0ZMQUcgaXMgdXRpbGl6ZWQuIEhvdyBkb2VzIHRoZSBjb2RlIGhhbmRsZSBwYWdlcyB0aGF0ICphcmUqIGZsYWdnZWQgYXMgaGF2aW5nIGhhcmR3YXJlIHBvaXNvbmluZz8gTWF5YmUgSSB3aWxsIGJlIGFibGUgdG8gZm9ybSBhIG1vcmUgY29tcGxldGUgbWVudGFsIG1vZGVsIG9mIHdoYXQgdGhlIGAjZWxzZWAgYmxvY2sgaXMgdXNlZCBmb3Igd2l0aGluIHRoZSBjb250ZXh0IG9mIGhhcmR3YXJlIGZhaWx1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo1MC41Mzg4NzA0ODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODYyNDcwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNfaHdwb2lzb25lZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD05Mz1lbnVtIHBhZ2VmbGFncyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xOTEtXFx0LyogQXQgbGVhc3Qgb25lIHBhZ2UgaW4gdGhpcyBmb2xpbyBoYXMgdGhlIGh3cG9pc29uIGZsYWcgc2V0ICovXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTkyOlxcdFBHX2hhc19od3BvaXNvbmVkID0gUEdfYWN0aXZlLFxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTE5My1cXHRQR19sYXJnZV9ybWFwcGFibGUgPSBQR193b3JraW5nc2V0LCAvKiBhbm9uIG9yIGZpbGUtYmFja2VkICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD04Nzc9Rk9MSU9fRkxBR19GQUxTRShwYXJ0aWFsbHlfbWFwcGVkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtODg4LSAqL1xcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjg4OTpGT0xJT19GTEFHKGhhc19od3BvaXNvbmVkLCBGT0xJT19TRUNPTkRfUEFHRSlcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04OTAtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDo4OTE6Rk9MSU9fRkxBR19GQUxTRShoYXNfaHdwb2lzb25lZClcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04OTItI2VuZGlmXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD0xMDcyPXN0YXRpYyBpbmxpbmUgYm9vbCBmb2xpb19jb250YWluX2h3cG9pc29uZWRfcGFnZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTA3NC1cXHRyZXR1cm4gZm9saW9fdGVzdF9od3BvaXNvbihmb2xpbykgfHxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxMDc1OlxcdCAgICAoZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZChmb2xpbykpO1xcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTE1ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgX19DbGVhclBhZ2VBbm9uRXhjbHVzaXZlKHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTE5My0jZGVmaW5lIFBBR0VfRkxBR1NfU0VDT05EXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjExOTQ6XFx0KDB4ZmZVTCAvKiBvcmRlciAqL1xcdFxcdHwgMVVMIFxcdTAwM2NcXHUwMDNjIFBHX2hhc19od3BvaXNvbmVkIHxcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTE5NS1cXHQgMVVMIFxcdTAwM2NcXHUwMDNjIFBHX2xhcmdlX3JtYXBwYWJsZVxcdHwgMVVMIFxcdTAwM2NcXHUwMDNjIFBHX3BhcnRpYWxseV9tYXBwZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjUwLjc4NzUwODU5N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTc2MjY0Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIFBhZ2UgRmxhZ3MqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIHdoZXJlJ3MgdGhlIGJlc3QgcGxhY2UgdG8gZGlnIGludG8gdGhlIGd1dHMgb2YgcGFnZSBmbGFncz8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgc3BlY2lmaWMgZGV0YWlscy4gUmlnaHQsIGl0J3MgcHJvYmFibHkgYmVzdCB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQncyBzdGFydCB3aXRoIGBpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaGAsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4ODkuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBtb3JlIGNydWNpYWwgZGVmaW5pdGlvbnMgYW5kIG1heWJlIHNvbWUgb2YgdGhlIGNvcmUgbWFjcm9zIGFyZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmbGFncyBhcmUgdXNlZCBpbiByZWxhdGlvbiB0byB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRldGFpbHMgdGhhdCBhcmUgYWxtb3N0IGNlcnRhaW5seSB0b3VjaGVkIG9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzIyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6NTMuNzYzNzc2NDE2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA4NzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4NzA6XFx0XFx0QlVHX09OKCFQYWdlSGVhZChwYWdlKSk7XFxuIDg3MTpcXHRcXHRDbGVhclBhZ2VIZWFkKHBhZ2UpO1xcbiA4NzI6XFx0fVxcbiA4NzM6XFx0Rk9MSU9fRkxBRyhsYXJnZV9ybWFwcGFibGUsIEZPTElPX1NFQ09ORF9QQUdFKVxcbiA4NzQ6XFx0Rk9MSU9fRkxBRyhwYXJ0aWFsbHlfbWFwcGVkLCBGT0xJT19TRUNPTkRfUEFHRSlcXG4gODc1OlxcdCNlbHNlXFxuIDg3NjpcXHRGT0xJT19GTEFHX0ZBTFNFKGxhcmdlX3JtYXBwYWJsZSlcXG4gODc3OlxcdEZPTElPX0ZMQUdfRkFMU0UocGFydGlhbGx5X21hcHBlZClcXG4gODc4OlxcdCNlbmRpZlxcbiA4Nzk6XFx0XFxuIDg4MDpcXHQjZGVmaW5lIFBHX2hlYWRfbWFzayAoKDFVTCBcXHUwMDNjXFx1MDAzYyBQR19oZWFkKSlcXG4gODgxOlxcdFxcbiA4ODI6XFx0I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSlcXG4gODgzOlxcdC8qXFxuIDg4NDpcXHQgKiBQYWdlSGFzSFdQb2lzb25lZCBpbmRpY2F0ZXMgdGhhdCBhdCBsZWFzdCBvbmUgc3VicGFnZSBpcyBod3BvaXNvbmVkIGluIHRoZVxcbiA4ODU6XFx0ICogY29tcG91bmQgcGFnZS5cXG4gODg2OlxcdCAqXFxuIDg4NzpcXHQgKiBUaGlzIGZsYWcgaXMgc2V0IGJ5IGh3cG9pc29uIGhhbmRsZXIuICBDbGVhcmVkIGJ5IFRIUCBzcGxpdCBvciBmcmVlIHBhZ2UuXFxuIDg4ODpcXHQgKi9cXG4gODg5OlxcdEZPTElPX0ZMQUcoaGFzX2h3cG9pc29uZWQsIEZPTElPX1NFQ09ORF9QQUdFKVxcbiA4OTA6XFx0I2Vsc2VcXG4gODkxOlxcdEZPTElPX0ZMQUdfRkFMU0UoaGFzX2h3cG9pc29uZWQpXFxuIDg5MjpcXHQjZW5kaWZcXG4gODkzOlxcdFxcbiA4OTQ6XFx0LypcXG4gODk1OlxcdCAqIEZvciBwYWdlcyB0aGF0IGRvIG5vdCB1c2UgbWFwY291bnQsIHBhZ2VfdHlwZSBtYXkgYmUgdXNlZC5cXG4gODk2OlxcdCAqIFRoZSBsb3cgMjQgYml0cyBvZiBwYWdldHlwZSBtYXkgYmUgdXNlZCBmb3IgeW91ciBvd24gcHVycG9zZXMsIGFzIGxvbmdcXG4gODk3OlxcdCAqIGFzIHlvdSBhcmUgY2FyZWZ1bCB0byBub3QgYWZmZWN0IHRoZSB0b3AgOCBiaXRzLiAgVGhlIGxvdyBiaXRzIG9mXFxuIDg5ODpcXHQgKiBwYWdldHlwZSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdoZW4geW91IGNsZWFyIHRoZSBwYWdlX3R5cGUgZnJvbSB0aGUgcGFnZS5cXG4gODk5OlxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo1My43NjM5NjE3NTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2NzY2MTg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGb2xpbyBTcGxpdHRpbmcgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGBDT05GSUdfTUVNT1JZX0ZBSUxVUkVgIGFuZCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBhcmUgZXNzZW50aWFsIGZvciB0aGlzIHRvIGV2ZW4gYmUgcmVsZXZhbnQuIFRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIGJlIHdpdGhpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAuIEl0IGFwcGVhcnMgd2Ugd2VyZSBjYWxsaW5nIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIHByZW1hdHVyZWx5LiAgU3BlY2lmaWNhbGx5LCB0aGlzIGhhcHBlbmVkIGJlZm9yZSB3ZSdkIGZ1bGx5IGluaXRpYWxpemVkIHRoZSBuZXcgZm9saW8ncyBzdHJ1Y3R1cmUgd2l0aCBgY2xlYXJfY29tcG91bmRfaGVhZCgpYCBhbmQgYHByZXBfY29tcG91bmRfcGFnZSgpYCwgZXNzZW50aWFsbHkgdHJhbnNmb3JtaW5nIHRoZSB0YWlsIHBhZ2UgaW50byB0aGUgbGVnaXRpbWF0ZSBmb2xpbyBoZWFkLlxuXG5UaGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIGJ1ZyBpbiBtZW1vcnkgbWFuYWdlbWVudCwgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyB3ZSBoYW5kbGUgdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIGFuZCBtZW1vcnkgZmFpbHVyZSBzY2VuYXJpb3MuICBUaGUgZml4IGhlcmUgaXMgKmZ1bmN0aW9uYWxseSogY2hhbmdpbmcgaG93IGZvbGlvcyBhcmUgaGFuZGxlZCBkdXJpbmcgc3BsaXR0aW5nLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2UgaXMgaW1wbGljYXRlZCBieSB0aGlzIGNoYW5nZS4gSG1tLCByaWdodCwgYENPTkZJR19NRU1PUllfRkFJTFVSRWAgaXMgZGVmaW5pdGVseSBuZWVkZWQgYmVjYXVzZSBvZiB0aGF0IGBGT0xJT19GTEFHKGhhc19od3BvaXNvbmVkLCBGT0xJT19TRUNPTkRfUEFHRSlgIHVzYWdlLiBBbmQgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY2xlYXJseSBuZWVkZWQsIGJlY2F1c2Ugb2YgdGhlIGludm9sdmVtZW50IG9mIGBtbS9odWdlX21lbW9yeS5jYC4gSSdsbCBnbyBjaGVjayBgbW0vaHVnZV9tZW1vcnkuY2Agb25lIG1vcmUgdGltZS4gRXNwZWNpYWxseSB0byBzZWUgdGhlIGZ1bGwgY29udGV4dCBvZiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAuIEknbGwgYWxzbyBiZSBrZWVwaW5nIGFuIGV5ZSBvbiBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AgYW5kIGBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAsIHRvIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQzNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjU5LjMzMTYyNzM1M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY0OTExNjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc3BsaXRfZm9saW9fdG9fb3JkZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vaHVnZV9tZW1vcnkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9odWdlX21lbW9yeS5jPTM1MTU9c3RhdGljIGJvb2wgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChzdHJ1Y3QgcGFnZSAqcGFnZSwgbG9uZyBucl9wYWdlcylcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzUyNi0gKi9cXG5tbS9odWdlX21lbW9yeS5jOjM1Mjc6c3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxcbm1tL2h1Z2VfbWVtb3J5LmMtMzUyOC1cXHRcXHRpbnQgbmV3X29yZGVyKVxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zNjY0LSAqIDEuIHVuaWZvcm0gc3BsaXQ6IEB4YXMgaXMgc3BsaXQgd2l0aCBubyBleHBlY3RhdGlvbiBvZiBmYWlsdXJlIGFuZCBhIHNpbmdsZVxcbm1tL2h1Z2VfbWVtb3J5LmM6MzY2NTogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgaXMgY2FsbGVkIHRvIHNwbGl0IHRoZSBAZm9saW8gaW50byBAbmV3X29yZGVyXFxubW0vaHVnZV9tZW1vcnkuYy0zNjY2LSAqICAgIGFsb25nIHdpdGggc3RhdHMgdXBkYXRlLlxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY2Ny0gKiAyLiBub24tdW5pZm9ybSBzcGxpdDogZm9saW9fb3JkZXIgLSBAbmV3X29yZGVyIGNhbGxzIHRvXFxubW0vaHVnZV9tZW1vcnkuYzozNjY4OiAqICAgIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBhcmUgZXhwZWN0ZWQgdG8gYmUgbWFkZSBpbiBhIGZvciBsb29wIHRvIHNwbGl0XFxubW0vaHVnZV9tZW1vcnkuYy0zNjY5LSAqICAgIHRoZSBAZm9saW8gdG8gb25lIGxvd2VyIG9yZGVyIGF0IGEgdGltZS4gVGhlIGZvbGlvIGNvbnRhaW5pbmcgQHNwbGl0X2F0XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTM2ODE9c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM3MjYtXFx0XFx0cGdhbGxvY190YWdfc3BsaXQoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6MzcyNzpcXHRcXHRfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCBvbGRfb3JkZXIsIHNwbGl0X29yZGVyKTtcXG5tbS9odWdlX21lbW9yeS5jLTM3MjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjU5Ljk5NjU0NTU2OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjk2MDQzOTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgdGhhdCBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgaXMgYmVpbmcgY2FsbGVkIGJ5IGBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvYC4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbiBpbiBteSBtaW5kOiBBcmUgdGhlc2UgZnVuY3Rpb25zIGFsd2F5cyBhdmFpbGFibGUsIG9yIGFyZSB0aGV5IGNvbmRpdGlvbmFsPyBNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBzY2FuIGBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvYCB0byBzZWUgaWYgaXQncyB3cmFwcGVkIHdpdGhpbiBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZW50aXJlIGNodW5rIG9mIGxvZ2ljIGlzIGNvbXBpbGVkIG9ubHkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucyBvciBjb25maWd1cmF0aW9ucy4gVGhpcyB3aWxsIGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhbmQgd2hlbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgaXMgdXRpbGl6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1NzYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0NDowMi42OTI1OTI4MTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTU3NzA0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3NwbGl0X3VubWFwcGVkX2ZvbGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2h1Z2VfbWVtb3J5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz0zNTI3PXN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY0MC0vKipcXG5tbS9odWdlX21lbW9yeS5jOjM2NDE6ICogX19zcGxpdF91bm1hcHBlZF9mb2xpbygpIC0gc3BsaXRzIGFuIHVubWFwcGVkIEBmb2xpbyB0byBsb3dlciBvcmRlciBmb2xpb3MgaW5cXG5tbS9odWdlX21lbW9yeS5jLTM2NDItICogdHdvIHdheXM6IHVuaWZvcm0gc3BsaXQgb3Igbm9uLXVuaWZvcm0gc3BsaXQuXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM2ODAtICovXFxubW0vaHVnZV9tZW1vcnkuYzozNjgxOnN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY4Mi1cXHRcXHRzdHJ1Y3QgcGFnZSAqc3BsaXRfYXQsIHN0cnVjdCB4YV9zdGF0ZSAqeGFzLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zODA4PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM4ODEtXFxubW0vaHVnZV9tZW1vcnkuYzozODgyOlxcdFxcdHJldCA9IF9fc3BsaXRfdW5tYXBwZWRfZm9saW8oZm9saW8sIG5ld19vcmRlciwgc3BsaXRfYXQsIHhhcyxcXG5tbS9odWdlX21lbW9yeS5jLTM4ODMtXFx0XFx0XFx0XFx0XFx0ICAgICBtYXBwaW5nLCBzcGxpdF90eXBlKTtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzk3MS0gKlxcbm1tL2h1Z2VfbWVtb3J5LmM6Mzk3MjogKiBJdCBjYWxscyBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKCkgdG8gcGVyZm9ybSB1bmlmb3JtIGFuZCBub24tdW5pZm9ybSBzcGxpdC5cXG5tbS9odWdlX21lbW9yeS5jLTM5NzMtICogSXQgaXMgaW4gY2hhcmdlIG9mIGNoZWNraW5nIHdoZXRoZXIgdGhlIHNwbGl0IGlzIHN1cHBvcnRlZCBvciBub3QgYW5kXFxubW0vaHVnZV9tZW1vcnkuYzozOTc0OiAqIHByZXBhcmluZyBAZm9saW8gZm9yIF9fc3BsaXRfdW5tYXBwZWRfZm9saW8oKS5cXG5tbS9odWdlX21lbW9yeS5jLTM5NzUtICpcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9Mzk4ND1zdGF0aWMgaW50IF9fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDA2Ni1cXHRcXHQvKlxcbm1tL2h1Z2VfbWVtb3J5LmM6NDA2NzpcXHRcXHQgKl9fc3BsaXRfdW5tYXBwZWRfZm9saW8oKSBtYXkgbmVlZCB0byB0cmltIG9mZiBwYWdlcyBiZXlvbmRcXG5tbS9odWdlX21lbW9yeS5jLTQwNjgtXFx0XFx0ICogRU9GOiBidXQgb24gMzItYml0LCBpX3NpemVfcmVhZCgpIHRha2VzIGFuIGlycS11bnNhZmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDQ6MDIuOTMyMTc1MjYyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTAxODkzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgS2VybmVsIENvZGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIGxvb2tpbmcgYXQgYSBtZW1vcnktcmVsYXRlZCBpc3N1ZSwgYW5kIG15IGluaXRpYWwgaW5zdGluY3QgcG9pbnRzIHRvIGBtbS9odWdlX21lbW9yeS5jYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgb2J2aW91cyBwbGFjZSB0byBmaW5kIGNvZGUgZGVhbGluZyB3aXRoIGh1Z2UgcGFnZXMuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFRoZSBmYWN0IHRoYXQgdGhpcyBmaWxlIGlzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBlbmFibGVkIGlzIGNyaXRpY2FsIGNvbnRleHQuIFRoYXQgaW5zdGFudGx5IHRlbGxzIG1lIHRoYXQgd2hhdGV2ZXIncyBoYXBwZW5pbmcgaXMgcmVsYXRlZCB0byB0cmFuc3BhcmVudCBodWdlcGFnZXMuIFRvIGJlIHNwZWNpZmljLCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhcyB3ZWxsIGFzIGBNRU1PUllfRkFJTFVSRWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZSB0d28gY29uZmlncy4gTGV0J3MgY2FsbCBpdDogc2V0LXJlc3VsdHMsIHRoZSBwcm9ibGVtIGlzIHJlc29sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzU4LCJPdXRwdXRUb2tlbnMiOjE1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQ0OjA3LjEyMjM2NzczM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjI2NzA2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiX19zcGxpdF91bm1hcHBlZF9mb2xpb1wiLFxuICAgIFwic3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgd2hlcmUgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBmb2xpbyB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXMgYSBoZWFkIGZvbGlvLCBjYXVzaW5nIGBmb2xpb19mbGFncygpYCB0byB0cmlwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiX19zcGxpdF91bm1hcHBlZF9mb2xpb1wiLFxuICAgIFwic3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgd2hlcmUgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBmb2xpbyB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXMgYSBoZWFkIGZvbGlvLCBjYXVzaW5nIGBmb2xpb19mbGFncygpYCB0byB0cmlwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 21:27:43 +0000 UTC FinishedAt: 2026-07-01 21:44:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "595893e78396f69f45253a470d785236ea71e539", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_FAILURE", "TRANSPARENT_HUGEPAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "595893e78396f69f45253a470d785236ea71e539", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_FAILURE", "TRANSPARENT_HUGEPAGE" ], "series_id": "ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "__split_folio_to_order", "__split_unmapped_folio", "split_huge_page_to_list_to_order" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9GQUlMVVJFJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zcGxpdF9mb2xpb190b19vcmRlciYjMzQ7LAogICAgJiMzNDtfX3NwbGl0X3VubWFwcGVkX2ZvbGlvJiMzNDssCiAgICAmIzM0O3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCB3aGVyZSBgZm9saW9fc2V0X2hhc19od3BvaXNvbmVkYCB3YXMgY2FsbGVkIGJlZm9yZSB0aGUgbmV3IGZvbGlvIHdhcyBwcm9wZXJseSBpbml0aWFsaXplZCBhcyBhIGhlYWQgZm9saW8sIGNhdXNpbmcgYGZvbGlvX2ZsYWdzKClgIHRvIHRyaXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHJlbGF0ZWQgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBmZTEwZmE2YTk5OGU1MTIwMDZiMDhhYzllZWUwZTA5MDAzNzZhM2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDIxOjQzOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXG5pbmRleCAyYmNjYjBhNTNhMGE2MC4uZWU3ZWNiM2I0NWM2ZjggMTAwNjQ0XG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jXG5AQCAtMzU4NywxMCAmIzQzOzM1ODcsNiBAQCBzdGF0aWMgdm9pZCBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBvbGRfb3JkZXIsXG4gXHRcdFx0XHQgKDFMIFx1MDAzY1x1MDAzYyBQR19kcm9wYmVoaW5kKSB8XG4gXHRcdFx0XHQgTFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykpO1xuIFxuLVx0XHRpZiAoaGFuZGxlX2h3cG9pc29uIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChuZXdfaGVhZCwgbmV3X25yX3BhZ2VzKSlcbi1cdFx0XHRmb2xpb19zZXRfaGFzX2h3cG9pc29uZWQobmV3X2ZvbGlvKTtcbi1cbiBcdFx0bmV3X2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0XHRuZXdfZm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleCAmIzQzOyBpO1xuIFxuQEAgLTM2MTIsNiAmIzQzOzM2MDgsMTggQEAgc3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxuIFx0XHRcdGZvbGlvX3NldF9sYXJnZV9ybWFwcGFibGUobmV3X2ZvbGlvKTtcbiBcdFx0fVxuIFxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFBHX2hhc19od3BvaXNvbmVkIGlzIGEgRk9MSU9fU0VDT05EX1BBR0UgZmxhZywgc28gaXQgY2FuIG9ubHlcbiYjNDM7XHRcdCAqIGJlIHNldCBvbmNlIEBuZXdfZm9saW8gaXMgYSByZWFsIChoZWFkKSBmb2xpby4gIERlZmVyIHNldHRpbmdcbiYjNDM7XHRcdCAqIGl0IHVudGlsIGFmdGVyIGNsZWFyX2NvbXBvdW5kX2hlYWQoKS9wcmVwX2NvbXBvdW5kX3BhZ2UoKSBoYXZlXG4mIzQzO1x0XHQgKiB0dXJuZWQgQG5ld19oZWFkIGZyb20gYSB0YWlsIHBhZ2UgaW50byBhIHByb3BlciBmb2xpbyBoZWFkO1xuJiM0MztcdFx0ICogb3RoZXJ3aXNlIGZvbGlvX2ZsYWdzKCkgdHJpcHMgb24gKHBhZ2UtXHUwMDNlY29tcG91bmRfaW5mbyBcdTAwMjYgMSkuXG4mIzQzO1x0XHQgKiBoYW5kbGVfaHdwb2lzb24gaW1wbGllcyBuZXdfb3JkZXIgIT0gMC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGhhbmRsZV9od3BvaXNvbiBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICBwYWdlX3JhbmdlX2hhc19od3BvaXNvbmVkKG5ld19oZWFkLCBuZXdfbnJfcGFnZXMpKVxuJiM0MztcdFx0XHRmb2xpb19zZXRfaGFzX2h3cG9pc29uZWQobmV3X2ZvbGlvKTtcbiYjNDM7XG4gXHRcdGlmIChmb2xpb190ZXN0X3lvdW5nKGZvbGlvKSlcbiBcdFx0XHRmb2xpb19zZXRfeW91bmcobmV3X2ZvbGlvKTtcbiBcdFx0aWYgKGZvbGlvX3Rlc3RfaWRsZShmb2xpbykpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNT1JZX0ZBSUxVUkUmIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDssCiAgICAmIzM0O19fc3BsaXRfdW5tYXBwZWRfZm9saW8mIzM0OywKICAgICYjMzQ7c3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIHdoZXJlIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIHdhcyBjYWxsZWQgYmVmb3JlIHRoZSBuZXcgZm9saW8gd2FzIHByb3Blcmx5IGluaXRpYWxpemVkIGFzIGEgaGVhZCBmb2xpbywgY2F1c2luZyBgZm9saW9fZmxhZ3MoKWAgdG8gdHJpcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgcmVsYXRlZCB0byB0cmFuc3BhcmVudCBodWdlcGFnZXMgYW5kIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwZmUxMGZhNmE5OThlNTEyMDA2YjA4YWM5ZWVlMGUwOTAwMzc2YTNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAyMTo0MzoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jCmluZGV4IDJiY2NiMGE1M2EwYTYwLi5lZTdlY2IzYjQ1YzZmOCAxMDA2NDQKLS0tIGEvbW0vaHVnZV9tZW1vcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdlX21lbW9yeS5jCkBAIC0zNTg3LDEwICYjNDM7MzU4Nyw2IEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlciwKIAkJCQkgKDFMICZsdDsmbHQ7IFBHX2Ryb3BiZWhpbmQpIHwKIAkJCQkgTFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykpOwogCi0JCWlmIChoYW5kbGVfaHdwb2lzb24gJmFtcDsmYW1wOwotCQkgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChuZXdfaGVhZCwgbmV3X25yX3BhZ2VzKSkKLQkJCWZvbGlvX3NldF9oYXNfaHdwb2lzb25lZChuZXdfZm9saW8pOwotCiAJCW5ld19mb2xpby0mZ3Q7bWFwcGluZyA9IGZvbGlvLSZndDttYXBwaW5nOwogCQluZXdfZm9saW8tJmd0O2luZGV4ID0gZm9saW8tJmd0O2luZGV4ICYjNDM7IGk7CiAKQEAgLTM2MTIsNiAmIzQzOzM2MDgsMTggQEAgc3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLAogCQkJZm9saW9fc2V0X2xhcmdlX3JtYXBwYWJsZShuZXdfZm9saW8pOwogCQl9CiAKJiM0MzsJCS8qCiYjNDM7CQkgKiBQR19oYXNfaHdwb2lzb25lZCBpcyBhIEZPTElPX1NFQ09ORF9QQUdFIGZsYWcsIHNvIGl0IGNhbiBvbmx5CiYjNDM7CQkgKiBiZSBzZXQgb25jZSBAbmV3X2ZvbGlvIGlzIGEgcmVhbCAoaGVhZCkgZm9saW8uICBEZWZlciBzZXR0aW5nCiYjNDM7CQkgKiBpdCB1bnRpbCBhZnRlciBjbGVhcl9jb21wb3VuZF9oZWFkKCkvcHJlcF9jb21wb3VuZF9wYWdlKCkgaGF2ZQomIzQzOwkJICogdHVybmVkIEBuZXdfaGVhZCBmcm9tIGEgdGFpbCBwYWdlIGludG8gYSBwcm9wZXIgZm9saW8gaGVhZDsKJiM0MzsJCSAqIG90aGVyd2lzZSBmb2xpb19mbGFncygpIHRyaXBzIG9uIChwYWdlLSZndDtjb21wb3VuZF9pbmZvICZhbXA7IDEpLgomIzQzOwkJICogaGFuZGxlX2h3cG9pc29uIGltcGxpZXMgbmV3X29yZGVyICE9IDAuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChoYW5kbGVfaHdwb2lzb24gJmFtcDsmYW1wOwomIzQzOwkJICAgIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQobmV3X2hlYWQsIG5ld19ucl9wYWdlcykpCiYjNDM7CQkJZm9saW9fc2V0X2hhc19od3BvaXNvbmVkKG5ld19mb2xpbyk7CiYjNDM7CiAJCWlmIChmb2xpb190ZXN0X3lvdW5nKGZvbGlvKSkKIAkJCWZvbGlvX3NldF95b3VuZyhuZXdfZm9saW8pOwogCQlpZiAoZm9saW9fdGVzdF9pZGxlKGZvbGlvKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEh1Z2UgTWVtb3J5IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcGxheWluZyB3aXRoIGBtbS9odWdlX21lbW9yeS5jYCwgc3BlY2lmaWNhbGx5IGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgKndoeSogaXQmIzM5O3MgbW92aW5nIHRoZSBzZXR0aW5nIG9mIGBQR19oYXNfaHdwb2lzb25lZGAuIEl0IGxvb2tzIGxpa2UgdGhlIGtleSBpcyB0aGF0IGBQR19oYXNfaHdwb2lzb25lZGAgaXMgYSBgRk9MSU9fU0VDT05EX1BBR0VgIGZsYWcuIFNvLCBpdCBjYW4mIzM5O3QgYmUgc2V0IHVudGlsIHRoZSBgQG5ld19mb2xpb2AgKmlzKiBhIHByb3BlciAmIzM0O2hlYWQmIzM0OyBmb2xpby4gTWFrZXMgc2Vuc2UuCgpUaGUgY29tbWVudCBmbGFncyB0aGF0IHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgd2FzIGxlYWRpbmcgdG8gcHJvYmxlbXMgd2l0aCBgZm9saW9fZmxhZ3MoKWAsIGFuZCB0aGF0IGl0IHdhcyB0cmlwcGluZyBvdmVyIGAocGFnZS0mZ3Q7Y29tcG91bmRfaW5mbyAmYW1wOyAxKWAuIFRoYXQmIzM5O3MgbGlrZWx5IGJlY2F1c2UgYGNsZWFyX2NvbXBvdW5kX2hlYWQoKWAgb3IgYHByZXBfY29tcG91bmRfcGFnZSgpYCBoYWRuJiMzOTt0IGJlZW4gaW52b2tlZCB5ZXQsIGhlbmNlIHRoZSBjb21wb3VuZCBwYWdlIHN0cnVjdHVyZXMgaGFkbiYjMzk7dCBiZWVuIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSB3ZSB3ZXJlIGNoZWNraW5nIHRoZSBmbGFnLiBJdCBmZWVscyBsaWtlIGEgcmFjZSBjb25kaXRpb24gb3IgYW4gaW5pdGlhbGl6YXRpb24gdGltaW5nIGlzc3VlLgoKVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCBpdHNlbGYgYW5kIHNlZSB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgaGVyZSB0byBncmFzcCB0aGUgcHJlY2lzZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zcGxpdF9mb2xpb190b19vcmRlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYz0zNTE1PXN0YXRpYyBib29sIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQoc3RydWN0IHBhZ2UgKnBhZ2UsIGxvbmcgbnJfcGFnZXMpXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zNTI2LSAqL1xubW0vaHVnZV9tZW1vcnkuYzozNTI3OnN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbm1tL2h1Z2VfbWVtb3J5LmMtMzUyOC1cdFx0aW50IG5ld19vcmRlcilcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM2NjQtICogMS4gdW5pZm9ybSBzcGxpdDogQHhhcyBpcyBzcGxpdCB3aXRoIG5vIGV4cGVjdGF0aW9uIG9mIGZhaWx1cmUgYW5kIGEgc2luZ2xlXG5tbS9odWdlX21lbW9yeS5jOjM2NjU6ICogICAgX19zcGxpdF9mb2xpb190b19vcmRlcigpIGlzIGNhbGxlZCB0byBzcGxpdCB0aGUgQGZvbGlvIGludG8gQG5ld19vcmRlclxubW0vaHVnZV9tZW1vcnkuYy0zNjY2LSAqICAgIGFsb25nIHdpdGggc3RhdHMgdXBkYXRlLlxubW0vaHVnZV9tZW1vcnkuYy0zNjY3LSAqIDIuIG5vbi11bmlmb3JtIHNwbGl0OiBmb2xpb19vcmRlciAtIEBuZXdfb3JkZXIgY2FsbHMgdG9cbm1tL2h1Z2VfbWVtb3J5LmM6MzY2ODogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgYXJlIGV4cGVjdGVkIHRvIGJlIG1hZGUgaW4gYSBmb3IgbG9vcCB0byBzcGxpdFxubW0vaHVnZV9tZW1vcnkuYy0zNjY5LSAqICAgIHRoZSBAZm9saW8gdG8gb25lIGxvd2VyIG9yZGVyIGF0IGEgdGltZS4gVGhlIGZvbGlvIGNvbnRhaW5pbmcgQHNwbGl0X2F0XG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zNjgxPXN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzcyNi1cdFx0cGdhbGxvY190YWdfc3BsaXQoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xubW0vaHVnZV9tZW1vcnkuYzozNzI3Olx0XHRfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCBvbGRfb3JkZXIsIHNwbGl0X29yZGVyKTtcbm1tL2h1Z2VfbWVtb3J5LmMtMzcyOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDUxCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBNZW1vcnkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1vZGlmeWluZyBgX19zcGxpdF9mb2xpb190b19vcmRlcmAuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIG15IGV5ZWJyb3dzLiBJIGtub3cgdGhhdCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAuIFRoYXQgc2VxdWVuY2Ugb2YgZnVuY3Rpb24gY2FsbHMgc2NyZWFtcyBjb3JlIGtlcm5lbCBsb2dpYywgZGVhbGluZyB3aXRoIGh1Z2UgbWVtb3J5IGFuZCBwYWdlIHNwbGl0dGluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IGluIGEgY3JpdGljYWwgYXJlYS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgY291bGQgYmUgYSBnb29kIGFyZWEgZm9yIGZ1enppbmcuCgpUaGUgdGV4dCBhbHNvIG1lbnRpb25zIHRoaXMgaXMgYSBmaXggcmVsYXRlZCB0byBod3BvaXNvbi4gVGhpcyBzZWVtcyBsaWtlIGEgdmFsaWQgYXJlYSB0byBmb2N1cyBvbi4KClNvLCBpcyBpdCB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdCB0b3VjaGVzIGZ1bmRhbWVudGFsIGZ1bmN0aW9uYWxpdHksIGFuZCBhIGJ1ZyByZWxhdGVkIHRvIGh3cG9pc29uIGlzIHBvdGVudGlhbGx5IHNldmVyZS4gVGhlIHBhdGNoIGlzIGZ1bmN0aW9uLWJhc2VkIGFuZCB0aGF0IG1lYW5zIGl0IGhhcyByZWFsIHdvcmxkIHZhbHVlLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUga2V5IGZ1bmN0aW9uczogYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgLCBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AsIGFuZCBgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJgLiBJJiMzOTtsbCB3YW50IHRvIGtlZXAgYW4gZXllIG9uIHRoZXNlLiBBbmQganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG1tL2h1Z2VfbWVtb3J5LmNgIGp1c3QgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodWdlX21lbW9yeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTEwMD1vYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgJiM0Mzs9IG1pZ3JhdGVfZGV2aWNlLm9cbm1tL01ha2VmaWxlOjEwMTpvYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICYjNDM7PSBodWdlX21lbW9yeS5vIGtodWdlcGFnZWQub1xubW0vTWFrZWZpbGUtMTAyLW9iai0kKENPTkZJR19QQUdFX0NPVU5URVIpICYjNDM7PSBwYWdlX2NvdW50ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBLZXJuZWwgTWVtb3J5IE1hbmFnZW1lbnQgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRoZSBuZWVkIGZvciBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBjbGVhci4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW50ZXJwbGF5IHdpdGggb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIHBhcnRpY3VsYXJseSBhcm91bmQgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IGBoYW5kbGVfaHdwb2lzb25gIG1pZ2h0IGludGVyYWN0IHdpdGggYENPTkZJR19NRU1PUllfRkFJTFVSRWAuIGBoYW5kbGVfaHdwb2lzb25gIGlzIHRoZSByb3V0aW5lIHRoYXQgZGVhbHMgd2l0aCBoYXJkd2FyZSBtZW1vcnkgZXJyb3JzLCBhbmQgdGhlc2UgY291bGQgZGVmaW5pdGVseSBpbXBhY3QgaHVnZXBhZ2UgaGFuZGxpbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjb25zZXF1ZW5jZXMgb2YgdGhlc2UgdHdvIGZlYXR1cmVzIHdvcmtpbmcgdG9nZXRoZXIuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzLCBlZGdlIGNhc2VzLCBvciBvcHRpbWl6YXRpb25zIHRvIGJlIGF3YXJlIG9mPyBUaGlzIHdpbGwgaGVscCBtZSBwbGFuIGFuZCB0cm91Ymxlc2hvb3QgYW55IGlzc3VlcyB0aGF0IGFyaXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhbmRsZV9od3BvaXNvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYz0zNTI3PXN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM1MzAtXHQvKiBTY2FuIHBvaXNvbmVkIHBhZ2VzIHdoZW4gc3BsaXQgYSBwb2lzb25lZCBmb2xpbyB0byBsYXJnZSBmb2xpb3MgKi9cbm1tL2h1Z2VfbWVtb3J5LmM6MzUzMTpcdGNvbnN0IGJvb2wgaGFuZGxlX2h3cG9pc29uID0gZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZChmb2xpbykgXHUwMDI2XHUwMDI2IG5ld19vcmRlcjtcbm1tL2h1Z2VfbWVtb3J5LmMtMzUzMi1cdGxvbmcgbmV3X25yX3BhZ2VzID0gMSBcdTAwM2NcdTAwM2MgbmV3X29yZGVyO1xuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzUzOC1cdC8qIENoZWNrIGZpcnN0IG5ld19ucl9wYWdlcyBzaW5jZSB0aGUgbG9vcCBiZWxvdyBza2lwcyB0aGVtICovXG5tbS9odWdlX21lbW9yeS5jOjM1Mzk6XHRpZiAoaGFuZGxlX2h3cG9pc29uIFx1MDAyNlx1MDAyNlxubW0vaHVnZV9tZW1vcnkuYy0zNTQwLVx0ICAgIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQoZm9saW9fcGFnZShmb2xpbywgMCksIG5ld19ucl9wYWdlcykpXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zNjE2LVx0XHQgKiBvdGhlcndpc2UgZm9saW9fZmxhZ3MoKSB0cmlwcyBvbiAocGFnZS1cdTAwM2Vjb21wb3VuZF9pbmZvIFx1MDAyNiAxKS5cbm1tL2h1Z2VfbWVtb3J5LmM6MzYxNzpcdFx0ICogaGFuZGxlX2h3cG9pc29uIGltcGxpZXMgbmV3X29yZGVyICE9IDAuXG5tbS9odWdlX21lbW9yeS5jLTM2MTgtXHRcdCAqL1xubW0vaHVnZV9tZW1vcnkuYzozNjE5Olx0XHRpZiAoaGFuZGxlX2h3cG9pc29uIFx1MDAyNlx1MDAyNlxubW0vaHVnZV9tZW1vcnkuYy0zNjIwLVx0XHQgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChuZXdfaGVhZCwgbmV3X25yX3BhZ2VzKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjA5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBmb2xpb190ZXN0X2hhc19od3BvaXNvbmVkYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZGAgYW5kIG15IGJyYWluIGltbWVkaWF0ZWx5IG1ha2VzIHRoZSBhc3NvY2lhdGlvbiDigJMgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHJlbGF0ZWQgdG8gaGFyZHdhcmUgcG9pc29uaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgaGFyZHdhcmUgcG9pc29uaW5nIGRldGVjdGlvbiBvciBoYW5kbGluZy4gVGhlIG5leHQgbG9naWNhbCBzdGVwLCBiZWZvcmUgSSBkaWcgaW50byBhbnkgaGlnaGVyLWxldmVsIGNvZGUsIGlzIHRvIGZpbmQgdGhlIGZ1bmN0aW9uJiMzOTtzIGRlZmluaXRpb24uIExldCBtZSBxdWlja2x5IHRyYWNrIGRvd24gd2hlcmUgYGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWRgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gdGhlIGNvZGViYXNlLiBVbmRlcnN0YW5kaW5nIHRoZSBmdW5jdGlvbiYjMzk7cyBzaWduYXR1cmUgYW5kIGltcGxlbWVudGF0aW9uIHdpbGwgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbmFsIGNvbnRleHQgSSBuZWVkIHRvIHByb2NlZWQgd2l0aCBteSBpbnZlc3RpZ2F0aW9uIGFuZCBmb3JtIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oPTEwNzI9c3RhdGljIGlubGluZSBib29sIGZvbGlvX2NvbnRhaW5faHdwb2lzb25lZF9wYWdlKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTA3NC1cdHJldHVybiBmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSB8fFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTA3NTpcdCAgICAoZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWQoZm9saW8pKTtcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTgwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgSGFyZHdhcmUgUG9pc29uaW5nIENvbmNlcm4qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIGZ1bmN0aW9uYWxpdHkuIE15IGltbWVkaWF0ZSBmaXJzdCBzdG9wLCBhcyBhbHdheXMsIGlzIHRoZSBkZWZpbml0aXZlIHNvdXJjZTogYGluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oYC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSBleGFjdGx5IGhvdyBpdCYjMzk7cyBkZWZpbmVkLCB3aGF0IHRoZSB1bmRlcmx5aW5nIGJpdHMgcmVwcmVzZW50LCBhbmQgY3J1Y2lhbGx5LCBob3cgdGhpcyByZWxhdGVzIHRvIG90aGVyIHJlbGV2YW50IGZvbGlvIGZsYWdzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBgaHdwb2lzb25lZGAgc3RhdGUgYW5kIHRoaW5ncyBsaWtlIHRoZSBwYWdlIHN0YXRlIChlLmcuLCBgUEdfaHdwb2lzb25gLCBgUEdfZXJyb3JgLCBldGMuKSB0byBnZXQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB3aG9sZSBwaWN0dXJlLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhpcyBmbGFnIGlzIG1hbmlwdWxhdGVkIGFuZCBjaGVja2VkIGFjcm9zcyB0aGUgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fc2V0X2hhc19od3BvaXNvbmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODM3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6CgoqKldoZXJlJiMzOTtzIFRoYXQgRnVuY3Rpb24/KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkgc2VlIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgLiBOb3csIEkmIzM5O20gcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIGZvbGlvL3BhZ2UgbWFuYWdlbWVudCBpbiB0aGUga2VybmVsLCBidXQgZm9yIHRoZSBsaWZlIG9mIG1lLCBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSByZWNhbGwgd2hlcmUgdGhhdCBzcGVjaWZpYyBmdW5jdGlvbiBpcyBkZWZpbmVkLiBJIGtub3cgdGhlcmUmIzM5O3MgYSB3aG9sZSBmYW1pbHkgb2YgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcG9pc29uaW5nLCBzbyBJJiMzOTttIGxpa2VseSBtaXNyZW1lbWJlcmluZyBvciBwZXJoYXBzIGl0JiMzOTtzIGRlZmluZWQgaW4gYSBoZWFkZXIgZmlsZSBvciBwZXJoYXBzIGl0IGlzIGRlZmluZWQgaW4gYSBuZXcgc2V0IG9mIHNvdXJjZSBjb2RlLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaXRzIG9yaWdpbiB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGlzIGN1cnJlbnQgY29udGV4dC4gVGhlIGltcGxpY2F0aW9ucyBvZiBoYXJkd2FyZSBwb2lzb25pbmcgYXJlIHNpZ25pZmljYW50LiBJJiMzOTtsbCBuZWVkIHRvIGdvIGZpbmQgd2hlcmUgdGhlIGRlZmluaXRpb24gaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm9saW9fc2V0X2hhc19od3BvaXNvbmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDY4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZXhwcmVzc2VkIGFzIHRob3VnaCBJJiMzOTttIHRoZSBvbmUgaGF2aW5nIHRoZSB0aG91Z2h0cywgYW5kIGdlYXJlZCB0b3dhcmRzIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWFjcm8tR2VuZXJhdGVkIEluc2lnaHQqKgoKUmlnaHQsIHRha2luZyBhIGxvb2sgYXQgdGhpcywgdGhlIHN0cnVjdHVyZSBpbW1lZGlhdGVseSBmZWVscyBmYW1pbGlhci4gVGhlIHBhdHRlcm4uLi4geWVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IG1hY3JvLWdlbmVyYXRlZC4gSSBjYW4gc2VlIHRoZSBoYWxsbWFya3M6IHRoZSBjb25zaXN0ZW50IHJlcGV0aXRpb24sIHRoZSBzcGVjaWZpYyBhcnJhbmdlbWVudCBvZiBlbGVtZW50cywgdGhlIHdheSBjZXJ0YWluIGNhbGN1bGF0aW9ucyBzZWVtIHRvIGhhdmUgYmVlbiBwcmUtY29tcHV0ZWQuIE5vdCBtYW51YWxseSBjb25zdHJ1Y3RlZCwgZm9yIHN1cmUuIFRoaXMgc2NyZWFtcyBhdXRvbWF0ZWQgZ2VuZXJhdGlvbi4gTm93LCB0aGUga2V5IGlzIHVuZGVyc3RhbmRpbmcgKndoaWNoKiBtYWNyb3Mgd2VyZSB1c2VkIGFuZCB3aGF0IHRoZWlyIHB1cnBvc2Ugd2FzLiBUaGF0IHdpbGwgdW5sb2NrIHRoZSBrZXkgdG8gcmV2ZXJzZS1lbmdpbmVlcmluZyB0aGUgaW50ZW5kZWQgbG9naWMgYW5kIHNlZWluZyB3aGVyZSB0aGVyZSBtaWdodCBiZSBpbnRlcmVzdGluZyBpbXBsaWNhdGlvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGdlbmVyYXRlZCBvdXRwdXQgbW9yZSBjbG9zZWx5IHRvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBtYWNybyBjYWxscyBvciB0ZW1wbGF0ZXMg4oCTIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZGVlcGVyIGFuYWx5c2lzLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gd29yayBvdXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSB1bmRlcmx5aW5nIGRhdGFzZXQsIHRvbywgc2luY2UgdGhhdCBpbmZvcm1hdGlvbiBpcyBsaWtlbHkgdG8gYmUgaGlnaGx5IHJlbGV2YW50IHRvIGFuIGV4cGVydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzX2h3cG9pc29uZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD05Mz1lbnVtIHBhZ2VmbGFncyB7XG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTkxLVx0LyogQXQgbGVhc3Qgb25lIHBhZ2UgaW4gdGhpcyBmb2xpbyBoYXMgdGhlIGh3cG9pc29uIGZsYWcgc2V0ICovXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxOTI6XHRQR19oYXNfaHdwb2lzb25lZCA9IFBHX2FjdGl2ZSxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTE5My1cdFBHX2xhcmdlX3JtYXBwYWJsZSA9IFBHX3dvcmtpbmdzZXQsIC8qIGFub24gb3IgZmlsZS1iYWNrZWQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD04Nzc9Rk9MSU9fRkxBR19GQUxTRShwYXJ0aWFsbHlfbWFwcGVkKVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTg4OC0gKi9cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjg4OTpGT0xJT19GTEFHKGhhc19od3BvaXNvbmVkLCBGT0xJT19TRUNPTkRfUEFHRSlcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTg5MC0jZWxzZVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6ODkxOkZPTElPX0ZMQUdfRkFMU0UoaGFzX2h3cG9pc29uZWQpXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04OTItI2VuZGlmXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTA3Mj1zdGF0aWMgaW5saW5lIGJvb2wgZm9saW9fY29udGFpbl9od3BvaXNvbmVkX3BhZ2Uoc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMDc0LVx0cmV0dXJuIGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pIHx8XG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxMDc1Olx0ICAgIChmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSBcdTAwMjZcdTAwMjYgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZChmb2xpbykpO1xuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTA3Ni19XG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTE1ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgX19DbGVhclBhZ2VBbm9uRXhjbHVzaXZlKHN0cnVjdCBwYWdlICpwYWdlKVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTExOTMtI2RlZmluZSBQQUdFX0ZMQUdTX1NFQ09ORFx0XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxMTk0Olx0KDB4ZmZVTCAvKiBvcmRlciAqL1x0XHR8IDFVTCBcdTAwM2NcdTAwM2MgUEdfaGFzX2h3cG9pc29uZWQgfFx0XFxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTExOTUtXHQgMVVMIFx1MDAzY1x1MDAzYyBQR19sYXJnZV9ybWFwcGFibGVcdHwgMVVMIFx1MDAzY1x1MDAzYyBQR19wYXJ0aWFsbHlfbWFwcGVkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODUwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgI2Vsc2VgIHNjZW5hcmlvIGludm9sdmluZyBgRk9MSU9fRkxBRyhoYXNfaHdwb2lzb25lZCwgRk9MSU9fU0VDT05EX1BBR0UpYC4gTXkgZXhwZXJ0IGludHVpdGlvbiBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGhhbmRsaW5nIGEgcG90ZW50aWFsIGhhcmR3YXJlIGVycm9yIGRldGVjdGVkIG9uIGEgc2Vjb25kIHBhZ2Ugd2l0aGluIGEgZm9saW8gc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgd2hlbiB0aGlzIGZsYWcgaXNuJiMzOTt0IHNldC4gSXMgdGhpcyBhbiAmIzM0O2Vsc2UmIzM0OyBjbGF1c2UgdG8gYSBjaGVjaz8gSWYgc28sIHdoYXQgY2hlY2s/IEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgKmltcGxpY2F0aW9uKiBvZiB0aGlzIGBGT0xJT19TRUNPTkRfUEFHRWAgY29udGV4dC4gRG9lcyBpdCBtZWFuIGEgc3BlY2lmaWMgcGFnZSB3aXRoaW4gYSBsYXJnZXIgc3RydWN0dXJlLCBhbmQgaWYgc28sIHdoYXQgaXMgdGhhdCBsYXJnZXIgc3RydWN0dXJlIGFuZCBob3cgaXMgaXQgdXNlZCBieSB0aGUgT1M/IFRoZSBgI2Vsc2VgIGNvbmRpdGlvbiBoZXJlIG11c3QgZGVmaW5lIHdoYXQgdG8gZG8gaWYgdGhlIGhhcmR3YXJlIHBvaXNvbmluZyBpc24mIzM5O3Qgc3BlY2lmaWNhbGx5IGZsYWdnZWQgZm9yIHRoYXQgc2Vjb25kIHBhZ2UuIERvZXMgaXQgaW1wbHkgYXNzdW1pbmcgaXQmIzM5O3MgKm5vdCogcG9pc29uZWQ/IElzIHRoZXJlIGEgZGVmYXVsdCBiZWhhdmlvciBlc3RhYmxpc2hlZCBzb21ld2hlcmUgZWxzZSBpbiB0aGUgY29kZWJhc2U/IEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgdG8gZmFjdG9yIGluPyBJcyB0aGVyZSBhIGZhbGxiYWNrIG1lY2hhbmlzbSB0byB0cmlnZ2VyIGluIHRoaXMgYCNlbHNlYCBzaXR1YXRpb24/IEkgYWxzbyB3YW50IHRvIGNoZWNrIG90aGVyIHBsYWNlcyB3aGVyZSB0aGlzIEZPTElPX0ZMQUcgaXMgdXRpbGl6ZWQuIEhvdyBkb2VzIHRoZSBjb2RlIGhhbmRsZSBwYWdlcyB0aGF0ICphcmUqIGZsYWdnZWQgYXMgaGF2aW5nIGhhcmR3YXJlIHBvaXNvbmluZz8gTWF5YmUgSSB3aWxsIGJlIGFibGUgdG8gZm9ybSBhIG1vcmUgY29tcGxldGUgbWVudGFsIG1vZGVsIG9mIHdoYXQgdGhlIGAjZWxzZWAgYmxvY2sgaXMgdXNlZCBmb3Igd2l0aGluIHRoZSBjb250ZXh0IG9mIGhhcmR3YXJlIGZhaWx1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hhc19od3BvaXNvbmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9OTM9ZW51bSBwYWdlZmxhZ3Mge1xuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTE5MS1cdC8qIEF0IGxlYXN0IG9uZSBwYWdlIGluIHRoaXMgZm9saW8gaGFzIHRoZSBod3BvaXNvbiBmbGFnIHNldCAqL1xuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTkyOlx0UEdfaGFzX2h3cG9pc29uZWQgPSBQR19hY3RpdmUsXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xOTMtXHRQR19sYXJnZV9ybWFwcGFibGUgPSBQR193b3JraW5nc2V0LCAvKiBhbm9uIG9yIGZpbGUtYmFja2VkICovXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9ODc3PUZPTElPX0ZMQUdfRkFMU0UocGFydGlhbGx5X21hcHBlZClcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04ODgtICovXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDo4ODk6Rk9MSU9fRkxBRyhoYXNfaHdwb2lzb25lZCwgRk9MSU9fU0VDT05EX1BBR0UpXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04OTAtI2Vsc2VcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjg5MTpGT0xJT19GTEFHX0ZBTFNFKGhhc19od3BvaXNvbmVkKVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtODkyLSNlbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oPTEwNzI9c3RhdGljIGlubGluZSBib29sIGZvbGlvX2NvbnRhaW5faHdwb2lzb25lZF9wYWdlKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTA3NC1cdHJldHVybiBmb2xpb190ZXN0X2h3cG9pc29uKGZvbGlvKSB8fFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTA3NTpcdCAgICAoZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWQoZm9saW8pKTtcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzYtfVxuLS1cbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oPTExNTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIF9fQ2xlYXJQYWdlQW5vbkV4Y2x1c2l2ZShzdHJ1Y3QgcGFnZSAqcGFnZSlcbi0tXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMTkzLSNkZWZpbmUgUEFHRV9GTEFHU19TRUNPTkRcdFx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTE5NDpcdCgweGZmVUwgLyogb3JkZXIgKi9cdFx0fCAxVUwgXHUwMDNjXHUwMDNjIFBHX2hhc19od3BvaXNvbmVkIHxcdFxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMTk1LVx0IDFVTCBcdTAwM2NcdTAwM2MgUEdfbGFyZ2Vfcm1hcHBhYmxlXHR8IDFVTCBcdTAwM2NcdTAwM2MgUEdfcGFydGlhbGx5X21hcHBlZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcyMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gUGFnZSBGbGFncyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCB3aGVyZSYjMzk7cyB0aGUgYmVzdCBwbGFjZSB0byBkaWcgaW50byB0aGUgZ3V0cyBvZiBwYWdlIGZsYWdzPyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBzcGVjaWZpYyBkZXRhaWxzLiBSaWdodCwgaXQmIzM5O3MgcHJvYmFibHkgYmVzdCB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmhgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgODg5LiBUaGF0JiMzOTtzIHVzdWFsbHkgd2hlcmUgdGhlIG1vcmUgY3J1Y2lhbCBkZWZpbml0aW9ucyBhbmQgbWF5YmUgc29tZSBvZiB0aGUgY29yZSBtYWNyb3MgYXJlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmbGFncyBhcmUgdXNlZCBpbiByZWxhdGlvbiB0byB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRldGFpbHMgdGhhdCBhcmUgYWxtb3N0IGNlcnRhaW5seSB0b3VjaGVkIG9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4NzA6XHRcdEJVR19PTighUGFnZUhlYWQocGFnZSkpO1xuIDg3MTpcdFx0Q2xlYXJQYWdlSGVhZChwYWdlKTtcbiA4NzI6XHR9XG4gODczOlx0Rk9MSU9fRkxBRyhsYXJnZV9ybWFwcGFibGUsIEZPTElPX1NFQ09ORF9QQUdFKVxuIDg3NDpcdEZPTElPX0ZMQUcocGFydGlhbGx5X21hcHBlZCwgRk9MSU9fU0VDT05EX1BBR0UpXG4gODc1Olx0I2Vsc2VcbiA4NzY6XHRGT0xJT19GTEFHX0ZBTFNFKGxhcmdlX3JtYXBwYWJsZSlcbiA4Nzc6XHRGT0xJT19GTEFHX0ZBTFNFKHBhcnRpYWxseV9tYXBwZWQpXG4gODc4Olx0I2VuZGlmXG4gODc5Olx0XG4gODgwOlx0I2RlZmluZSBQR19oZWFkX21hc2sgKCgxVUwgXHUwMDNjXHUwMDNjIFBHX2hlYWQpKVxuIDg4MTpcdFxuIDg4MjpcdCNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKVxuIDg4MzpcdC8qXG4gODg0Olx0ICogUGFnZUhhc0hXUG9pc29uZWQgaW5kaWNhdGVzIHRoYXQgYXQgbGVhc3Qgb25lIHN1YnBhZ2UgaXMgaHdwb2lzb25lZCBpbiB0aGVcbiA4ODU6XHQgKiBjb21wb3VuZCBwYWdlLlxuIDg4NjpcdCAqXG4gODg3Olx0ICogVGhpcyBmbGFnIGlzIHNldCBieSBod3BvaXNvbiBoYW5kbGVyLiAgQ2xlYXJlZCBieSBUSFAgc3BsaXQgb3IgZnJlZSBwYWdlLlxuIDg4ODpcdCAqL1xuIDg4OTpcdEZPTElPX0ZMQUcoaGFzX2h3cG9pc29uZWQsIEZPTElPX1NFQ09ORF9QQUdFKVxuIDg5MDpcdCNlbHNlXG4gODkxOlx0Rk9MSU9fRkxBR19GQUxTRShoYXNfaHdwb2lzb25lZClcbiA4OTI6XHQjZW5kaWZcbiA4OTM6XHRcbiA4OTQ6XHQvKlxuIDg5NTpcdCAqIEZvciBwYWdlcyB0aGF0IGRvIG5vdCB1c2UgbWFwY291bnQsIHBhZ2VfdHlwZSBtYXkgYmUgdXNlZC5cbiA4OTY6XHQgKiBUaGUgbG93IDI0IGJpdHMgb2YgcGFnZXR5cGUgbWF5IGJlIHVzZWQgZm9yIHlvdXIgb3duIHB1cnBvc2VzLCBhcyBsb25nXG4gODk3Olx0ICogYXMgeW91IGFyZSBjYXJlZnVsIHRvIG5vdCBhZmZlY3QgdGhlIHRvcCA4IGJpdHMuICBUaGUgbG93IGJpdHMgb2ZcbiA4OTg6XHQgKiBwYWdldHlwZSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdoZW4geW91IGNsZWFyIHRoZSBwYWdlX3R5cGUgZnJvbSB0aGUgcGFnZS5cbiA4OTk6XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQzNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGb2xpbyBTcGxpdHRpbmcgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYENPTkZJR19NRU1PUllfRkFJTFVSRWAgYW5kIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFyZSBlc3NlbnRpYWwgZm9yIHRoaXMgdG8gZXZlbiBiZSByZWxldmFudC4gVGhlIGNvcmUgaXNzdWUgc2VlbXMgdG8gYmUgd2l0aGluIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYC4gSXQgYXBwZWFycyB3ZSB3ZXJlIGNhbGxpbmcgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgcHJlbWF0dXJlbHkuICBTcGVjaWZpY2FsbHksIHRoaXMgaGFwcGVuZWQgYmVmb3JlIHdlJiMzOTtkIGZ1bGx5IGluaXRpYWxpemVkIHRoZSBuZXcgZm9saW8mIzM5O3Mgc3RydWN0dXJlIHdpdGggYGNsZWFyX2NvbXBvdW5kX2hlYWQoKWAgYW5kIGBwcmVwX2NvbXBvdW5kX3BhZ2UoKWAsIGVzc2VudGlhbGx5IHRyYW5zZm9ybWluZyB0aGUgdGFpbCBwYWdlIGludG8gdGhlIGxlZ2l0aW1hdGUgZm9saW8gaGVhZC4KClRoaXMgaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgYnVnIGluIG1lbW9yeSBtYW5hZ2VtZW50LCBkaXJlY3RseSBpbXBhY3RpbmcgaG93IHdlIGhhbmRsZSB0cmFuc3BhcmVudCBodWdlcGFnZXMgYW5kIG1lbW9yeSBmYWlsdXJlIHNjZW5hcmlvcy4gIFRoZSBmaXggaGVyZSBpcyAqZnVuY3Rpb25hbGx5KiBjaGFuZ2luZyBob3cgZm9saW9zIGFyZSBoYW5kbGVkIGR1cmluZyBzcGxpdHRpbmcuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2UgaXMgaW1wbGljYXRlZCBieSB0aGlzIGNoYW5nZS4gSG1tLCByaWdodCwgYENPTkZJR19NRU1PUllfRkFJTFVSRWAgaXMgZGVmaW5pdGVseSBuZWVkZWQgYmVjYXVzZSBvZiB0aGF0IGBGT0xJT19GTEFHKGhhc19od3BvaXNvbmVkLCBGT0xJT19TRUNPTkRfUEFHRSlgIHVzYWdlLiBBbmQgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY2xlYXJseSBuZWVkZWQsIGJlY2F1c2Ugb2YgdGhlIGludm9sdmVtZW50IG9mIGBtbS9odWdlX21lbW9yeS5jYC4gSSYjMzk7bGwgZ28gY2hlY2sgYG1tL2h1Z2VfbWVtb3J5LmNgIG9uZSBtb3JlIHRpbWUuIEVzcGVjaWFsbHkgdG8gc2VlIHRoZSBmdWxsIGNvbnRleHQgb2YgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgLiBJJiMzOTtsbCBhbHNvIGJlIGtlZXBpbmcgYW4gZXllIG9uIGBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvYCBhbmQgYHNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyYCwgdG8gc2VlIGhvdyB0aGV5IGludGVyYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3NwbGl0X2ZvbGlvX3RvX29yZGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdlX21lbW9yeS5jPTM1MTU9c3RhdGljIGJvb2wgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChzdHJ1Y3QgcGFnZSAqcGFnZSwgbG9uZyBucl9wYWdlcylcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM1MjYtICovXG5tbS9odWdlX21lbW9yeS5jOjM1Mjc6c3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxubW0vaHVnZV9tZW1vcnkuYy0zNTI4LVx0XHRpbnQgbmV3X29yZGVyKVxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtMzY2NC0gKiAxLiB1bmlmb3JtIHNwbGl0OiBAeGFzIGlzIHNwbGl0IHdpdGggbm8gZXhwZWN0YXRpb24gb2YgZmFpbHVyZSBhbmQgYSBzaW5nbGVcbm1tL2h1Z2VfbWVtb3J5LmM6MzY2NTogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgaXMgY2FsbGVkIHRvIHNwbGl0IHRoZSBAZm9saW8gaW50byBAbmV3X29yZGVyXG5tbS9odWdlX21lbW9yeS5jLTM2NjYtICogICAgYWxvbmcgd2l0aCBzdGF0cyB1cGRhdGUuXG5tbS9odWdlX21lbW9yeS5jLTM2NjctICogMi4gbm9uLXVuaWZvcm0gc3BsaXQ6IGZvbGlvX29yZGVyIC0gQG5ld19vcmRlciBjYWxscyB0b1xubW0vaHVnZV9tZW1vcnkuYzozNjY4OiAqICAgIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBhcmUgZXhwZWN0ZWQgdG8gYmUgbWFkZSBpbiBhIGZvciBsb29wIHRvIHNwbGl0XG5tbS9odWdlX21lbW9yeS5jLTM2NjktICogICAgdGhlIEBmb2xpbyB0byBvbmUgbG93ZXIgb3JkZXIgYXQgYSB0aW1lLiBUaGUgZm9saW8gY29udGFpbmluZyBAc3BsaXRfYXRcbi0tXG5tbS9odWdlX21lbW9yeS5jPTM2ODE9c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zNzI2LVx0XHRwZ2FsbG9jX3RhZ19zcGxpdChmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XG5tbS9odWdlX21lbW9yeS5jOjM3Mjc6XHRcdF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xubW0vaHVnZV9tZW1vcnkuYy0zNzI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAyMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTc2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkgc2VlIHRoYXQgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIGlzIGJlaW5nIGNhbGxlZCBieSBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcXVlc3Rpb24gaW4gbXkgbWluZDogQXJlIHRoZXNlIGZ1bmN0aW9ucyBhbHdheXMgYXZhaWxhYmxlLCBvciBhcmUgdGhleSBjb25kaXRpb25hbD8gTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgc2NhbiBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AgdG8gc2VlIGlmIGl0JiMzOTtzIHdyYXBwZWQgd2l0aGluIGFueSBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBlbnRpcmUgY2h1bmsgb2YgbG9naWMgaXMgY29tcGlsZWQgb25seSB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHdpbGwgaW5mbHVlbmNlIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGFuZCB3aGVuIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCBpcyB1dGlsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zcGxpdF91bm1hcHBlZF9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2VfbWVtb3J5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaHVnZV9tZW1vcnkuYz0zNTI3PXN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbi0tXG5tbS9odWdlX21lbW9yeS5jLTM2NDAtLyoqXG5tbS9odWdlX21lbW9yeS5jOjM2NDE6ICogX19zcGxpdF91bm1hcHBlZF9mb2xpbygpIC0gc3BsaXRzIGFuIHVubWFwcGVkIEBmb2xpbyB0byBsb3dlciBvcmRlciBmb2xpb3MgaW5cbm1tL2h1Z2VfbWVtb3J5LmMtMzY0Mi0gKiB0d28gd2F5czogdW5pZm9ybSBzcGxpdCBvciBub24tdW5pZm9ybSBzcGxpdC5cbi0tXG5tbS9odWdlX21lbW9yeS5jLTM2ODAtICovXG5tbS9odWdlX21lbW9yeS5jOjM2ODE6c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXG5tbS9odWdlX21lbW9yeS5jLTM2ODItXHRcdHN0cnVjdCBwYWdlICpzcGxpdF9hdCwgc3RydWN0IHhhX3N0YXRlICp4YXMsXG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zODA4PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zODgxLVxubW0vaHVnZV9tZW1vcnkuYzozODgyOlx0XHRyZXQgPSBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKGZvbGlvLCBuZXdfb3JkZXIsIHNwbGl0X2F0LCB4YXMsXG5tbS9odWdlX21lbW9yeS5jLTM4ODMtXHRcdFx0XHRcdCAgICAgbWFwcGluZywgc3BsaXRfdHlwZSk7XG4tLVxubW0vaHVnZV9tZW1vcnkuYy0zOTcxLSAqXG5tbS9odWdlX21lbW9yeS5jOjM5NzI6ICogSXQgY2FsbHMgX19zcGxpdF91bm1hcHBlZF9mb2xpbygpIHRvIHBlcmZvcm0gdW5pZm9ybSBhbmQgbm9uLXVuaWZvcm0gc3BsaXQuXG5tbS9odWdlX21lbW9yeS5jLTM5NzMtICogSXQgaXMgaW4gY2hhcmdlIG9mIGNoZWNraW5nIHdoZXRoZXIgdGhlIHNwbGl0IGlzIHN1cHBvcnRlZCBvciBub3QgYW5kXG5tbS9odWdlX21lbW9yeS5jOjM5NzQ6ICogcHJlcGFyaW5nIEBmb2xpbyBmb3IgX19zcGxpdF91bm1hcHBlZF9mb2xpbygpLlxubW0vaHVnZV9tZW1vcnkuYy0zOTc1LSAqXG4tLVxubW0vaHVnZV9tZW1vcnkuYz0zOTg0PXN0YXRpYyBpbnQgX19mb2xpb19zcGxpdChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgbmV3X29yZGVyLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNDA2Ni1cdFx0Lypcbm1tL2h1Z2VfbWVtb3J5LmM6NDA2NzpcdFx0ICpfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKCkgbWF5IG5lZWQgdG8gdHJpbSBvZmYgcGFnZXMgYmV5b25kXG5tbS9odWdlX21lbW9yeS5jLTQwNjgtXHRcdCAqIEVPRjogYnV0IG9uIDMyLWJpdCwgaV9zaXplX3JlYWQoKSB0YWtlcyBhbiBpcnEtdW5zYWZlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNTgKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBLZXJuZWwgQ29kZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIG1lbW9yeS1yZWxhdGVkIGlzc3VlLCBhbmQgbXkgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgdG8gYG1tL2h1Z2VfbWVtb3J5LmNgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCYjMzk7cyB0aGUgb2J2aW91cyBwbGFjZSB0byBmaW5kIGNvZGUgZGVhbGluZyB3aXRoIGh1Z2UgcGFnZXMuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFRoZSBmYWN0IHRoYXQgdGhpcyBmaWxlIGlzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBlbmFibGVkIGlzIGNyaXRpY2FsIGNvbnRleHQuIFRoYXQgaW5zdGFudGx5IHRlbGxzIG1lIHRoYXQgd2hhdGV2ZXImIzM5O3MgaGFwcGVuaW5nIGlzIHJlbGF0ZWQgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzLiBUbyBiZSBzcGVjaWZpYywgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYXMgd2VsbCBhcyBgTUVNT1JZX0ZBSUxVUkVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgdHdvIGNvbmZpZ3MuIExldCYjMzk7cyBjYWxsIGl0OiBzZXQtcmVzdWx0cywgdGhlIHByb2JsZW0gaXMgcmVzb2x2ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1PUllfRkFJTFVSRSYjMzQ7LAogICAgJiMzNDtUUkFOU1BBUkVOVF9IVUdFUEFHRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fc3BsaXRfZm9saW9fdG9fb3JkZXImIzM0OywKICAgICYjMzQ7X19zcGxpdF91bm1hcHBlZF9mb2xpbyYjMzQ7LAogICAgJiMzNDtzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgd2hlcmUgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBmb2xpbyB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXMgYSBoZWFkIGZvbGlvLCBjYXVzaW5nIGBmb2xpb19mbGFncygpYCB0byB0cmlwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9GQUlMVVJFJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zcGxpdF9mb2xpb190b19vcmRlciYjMzQ7LAogICAgJiMzNDtfX3NwbGl0X3VubWFwcGVkX2ZvbGlvJiMzNDssCiAgICAmIzM0O3NwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCB3aGVyZSBgZm9saW9fc2V0X2hhc19od3BvaXNvbmVkYCB3YXMgY2FsbGVkIGJlZm9yZSB0aGUgbmV3IGZvbGlvIHdhcyBwcm9wZXJseSBpbml0aWFsaXplZCBhcyBhIGhlYWQgZm9saW8sIGNhdXNpbmcgYGZvbGlvX2ZsYWdzKClgIHRvIHRyaXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHJlbGF0ZWQgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIGFuZCBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjE4LjMwNDUyNzIwNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MDg0MTMzMzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTU9SWV9GQUlMVVJFXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3BsaXRfZm9saW9fdG9fb3JkZXJcIixcbiAgICBcIl9fc3BsaXRfdW5tYXBwZWRfZm9saW9cIixcbiAgICBcInNwbGl0X2h1Z2VfcGFnZV90b19saXN0X3RvX29yZGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgIHdoZXJlIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIHdhcyBjYWxsZWQgYmVmb3JlIHRoZSBuZXcgZm9saW8gd2FzIHByb3Blcmx5IGluaXRpYWxpemVkIGFzIGEgaGVhZCBmb2xpbywgY2F1c2luZyBgZm9saW9fZmxhZ3MoKWAgdG8gdHJpcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgcmVsYXRlZCB0byB0cmFuc3BhcmVudCBodWdlcGFnZXMgYW5kIG1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0MzoxOC4zMDQ1MzcwNDVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MzI2OTI2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBmZTEwZmE2YTk5OGU1MTIwMDZiMDhhYzllZWUwZTA5MDAzNzZhM2ZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAyMTo0MzoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuY1xcbmluZGV4IDJiY2NiMGE1M2EwYTYwLi5lZTdlY2IzYjQ1YzZmOCAxMDA2NDRcXG4tLS0gYS9tbS9odWdlX21lbW9yeS5jXFxuKysrIGIvbW0vaHVnZV9tZW1vcnkuY1xcbkBAIC0zNTg3LDEwICszNTg3LDYgQEAgc3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxcbiBcXHRcXHRcXHRcXHQgKDFMIFxcdTAwM2NcXHUwMDNjIFBHX2Ryb3BiZWhpbmQpIHxcXG4gXFx0XFx0XFx0XFx0IExSVV9HRU5fTUFTSyB8IExSVV9SRUZTX01BU0spKTtcXG4gXFxuLVxcdFxcdGlmIChoYW5kbGVfaHdwb2lzb24gXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQobmV3X2hlYWQsIG5ld19ucl9wYWdlcykpXFxuLVxcdFxcdFxcdGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZChuZXdfZm9saW8pO1xcbi1cXG4gXFx0XFx0bmV3X2ZvbGlvLVxcdTAwM2VtYXBwaW5nID0gZm9saW8tXFx1MDAzZW1hcHBpbmc7XFxuIFxcdFxcdG5ld19mb2xpby1cXHUwMDNlaW5kZXggPSBmb2xpby1cXHUwMDNlaW5kZXggKyBpO1xcbiBcXG5AQCAtMzYxMiw2ICszNjA4LDE4IEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG4gXFx0XFx0XFx0Zm9saW9fc2V0X2xhcmdlX3JtYXBwYWJsZShuZXdfZm9saW8pO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBQR19oYXNfaHdwb2lzb25lZCBpcyBhIEZPTElPX1NFQ09ORF9QQUdFIGZsYWcsIHNvIGl0IGNhbiBvbmx5XFxuK1xcdFxcdCAqIGJlIHNldCBvbmNlIEBuZXdfZm9saW8gaXMgYSByZWFsIChoZWFkKSBmb2xpby4gIERlZmVyIHNldHRpbmdcXG4rXFx0XFx0ICogaXQgdW50aWwgYWZ0ZXIgY2xlYXJfY29tcG91bmRfaGVhZCgpL3ByZXBfY29tcG91bmRfcGFnZSgpIGhhdmVcXG4rXFx0XFx0ICogdHVybmVkIEBuZXdfaGVhZCBmcm9tIGEgdGFpbCBwYWdlIGludG8gYSBwcm9wZXIgZm9saW8gaGVhZDtcXG4rXFx0XFx0ICogb3RoZXJ3aXNlIGZvbGlvX2ZsYWdzKCkgdHJpcHMgb24gKHBhZ2UtXFx1MDAzZWNvbXBvdW5kX2luZm8gXFx1MDAyNiAxKS5cXG4rXFx0XFx0ICogaGFuZGxlX2h3cG9pc29uIGltcGxpZXMgbmV3X29yZGVyICE9IDAuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoaGFuZGxlX2h3cG9pc29uIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBwYWdlX3JhbmdlX2hhc19od3BvaXNvbmVkKG5ld19oZWFkLCBuZXdfbnJfcGFnZXMpKVxcbitcXHRcXHRcXHRmb2xpb19zZXRfaGFzX2h3cG9pc29uZWQobmV3X2ZvbGlvKTtcXG4rXFxuIFxcdFxcdGlmIChmb2xpb190ZXN0X3lvdW5nKGZvbGlvKSlcXG4gXFx0XFx0XFx0Zm9saW9fc2V0X3lvdW5nKG5ld19mb2xpbyk7XFxuIFxcdFxcdGlmIChmb2xpb190ZXN0X2lkbGUoZm9saW8pKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0MzoxOS4wNzg3NTA0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzMDk4OTMyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiX19zcGxpdF91bm1hcHBlZF9mb2xpb1wiLFxuICAgIFwic3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgd2hlcmUgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBmb2xpbyB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXMgYSBoZWFkIGZvbGlvLCBjYXVzaW5nIGBmb2xpb19mbGFncygpYCB0byB0cmlwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGZlMTBmYTZhOTk4ZTUxMjAwNmIwOGFjOWVlZTBlMDkwMDM3NmEzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMjE6NDM6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuY1xuaW5kZXggMmJjY2IwYTUzYTBhNjAuLmVlN2VjYjNiNDVjNmY4IDEwMDY0NFxuLS0tIGEvbW0vaHVnZV9tZW1vcnkuY1xuKysrIGIvbW0vaHVnZV9tZW1vcnkuY1xuQEAgLTM1ODcsMTAgKzM1ODcsNiBAQCBzdGF0aWMgdm9pZCBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBvbGRfb3JkZXIsXG4gXHRcdFx0XHQgKDFMIFx1MDAzY1x1MDAzYyBQR19kcm9wYmVoaW5kKSB8XG4gXHRcdFx0XHQgTFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSykpO1xuIFxuLVx0XHRpZiAoaGFuZGxlX2h3cG9pc29uIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChuZXdfaGVhZCwgbmV3X25yX3BhZ2VzKSlcbi1cdFx0XHRmb2xpb19zZXRfaGFzX2h3cG9pc29uZWQobmV3X2ZvbGlvKTtcbi1cbiBcdFx0bmV3X2ZvbGlvLVx1MDAzZW1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0XHRuZXdfZm9saW8tXHUwMDNlaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleCArIGk7XG4gXG5AQCAtMzYxMiw2ICszNjA4LDE4IEBAIHN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcbiBcdFx0XHRmb2xpb19zZXRfbGFyZ2Vfcm1hcHBhYmxlKG5ld19mb2xpbyk7XG4gXHRcdH1cbiBcbitcdFx0LypcbitcdFx0ICogUEdfaGFzX2h3cG9pc29uZWQgaXMgYSBGT0xJT19TRUNPTkRfUEFHRSBmbGFnLCBzbyBpdCBjYW4gb25seVxuK1x0XHQgKiBiZSBzZXQgb25jZSBAbmV3X2ZvbGlvIGlzIGEgcmVhbCAoaGVhZCkgZm9saW8uICBEZWZlciBzZXR0aW5nXG4rXHRcdCAqIGl0IHVudGlsIGFmdGVyIGNsZWFyX2NvbXBvdW5kX2hlYWQoKS9wcmVwX2NvbXBvdW5kX3BhZ2UoKSBoYXZlXG4rXHRcdCAqIHR1cm5lZCBAbmV3X2hlYWQgZnJvbSBhIHRhaWwgcGFnZSBpbnRvIGEgcHJvcGVyIGZvbGlvIGhlYWQ7XG4rXHRcdCAqIG90aGVyd2lzZSBmb2xpb19mbGFncygpIHRyaXBzIG9uIChwYWdlLVx1MDAzZWNvbXBvdW5kX2luZm8gXHUwMDI2IDEpLlxuK1x0XHQgKiBoYW5kbGVfaHdwb2lzb24gaW1wbGllcyBuZXdfb3JkZXIgIT0gMC5cbitcdFx0ICovXG4rXHRcdGlmIChoYW5kbGVfaHdwb2lzb24gXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBwYWdlX3JhbmdlX2hhc19od3BvaXNvbmVkKG5ld19oZWFkLCBuZXdfbnJfcGFnZXMpKVxuK1x0XHRcdGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZChuZXdfZm9saW8pO1xuK1xuIFx0XHRpZiAoZm9saW9fdGVzdF95b3VuZyhmb2xpbykpXG4gXHRcdFx0Zm9saW9fc2V0X3lvdW5nKG5ld19mb2xpbyk7XG4gXHRcdGlmIChmb2xpb190ZXN0X2lkbGUoZm9saW8pKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6MTkuMDc4NzUxOTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDUxMDIzMjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSHVnZSBNZW1vcnkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHBsYXlpbmcgd2l0aCBgbW0vaHVnZV9tZW1vcnkuY2AsIHNwZWNpZmljYWxseSBgX19zcGxpdF9mb2xpb190b19vcmRlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0ICp3aHkqIGl0J3MgbW92aW5nIHRoZSBzZXR0aW5nIG9mIGBQR19oYXNfaHdwb2lzb25lZGAuIEl0IGxvb2tzIGxpa2UgdGhlIGtleSBpcyB0aGF0IGBQR19oYXNfaHdwb2lzb25lZGAgaXMgYSBgRk9MSU9fU0VDT05EX1BBR0VgIGZsYWcuIFNvLCBpdCBjYW4ndCBiZSBzZXQgdW50aWwgdGhlIGBAbmV3X2ZvbGlvYCAqaXMqIGEgcHJvcGVyIFwiaGVhZFwiIGZvbGlvLiBNYWtlcyBzZW5zZS5cblxuVGhlIGNvbW1lbnQgZmxhZ3MgdGhhdCB0aGUgcHJldmlvdXMgcGxhY2VtZW50IHdhcyBsZWFkaW5nIHRvIHByb2JsZW1zIHdpdGggYGZvbGlvX2ZsYWdzKClgLCBhbmQgdGhhdCBpdCB3YXMgdHJpcHBpbmcgb3ZlciBgKHBhZ2UtXHUwMDNlY29tcG91bmRfaW5mbyBcdTAwMjYgMSlgLiBUaGF0J3MgbGlrZWx5IGJlY2F1c2UgYGNsZWFyX2NvbXBvdW5kX2hlYWQoKWAgb3IgYHByZXBfY29tcG91bmRfcGFnZSgpYCBoYWRuJ3QgYmVlbiBpbnZva2VkIHlldCwgaGVuY2UgdGhlIGNvbXBvdW5kIHBhZ2Ugc3RydWN0dXJlcyBoYWRuJ3QgYmVlbiBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgZmxhZy4gSXQgZmVlbHMgbGlrZSBhIHJhY2UgY29uZGl0aW9uIG9yIGFuIGluaXRpYWxpemF0aW9uIHRpbWluZyBpc3N1ZS5cblxuVG8gY29uZmlybSB0aGlzLCBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyYCBpdHNlbGYgYW5kIHNlZSB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gTGV0J3Mgc3RhcnQgd2l0aCB0aGF0IGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBoZXJlIHRvIGdyYXNwIHRoZSBwcmVjaXNlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjIzLjEyOTc3OTM0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ1MzY3NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9odWdlX21lbW9yeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2VfbWVtb3J5LmM9MzUxNT1zdGF0aWMgYm9vbCBwYWdlX3JhbmdlX2hhc19od3BvaXNvbmVkKHN0cnVjdCBwYWdlICpwYWdlLCBsb25nIG5yX3BhZ2VzKVxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zNTI2LSAqL1xcbm1tL2h1Z2VfbWVtb3J5LmM6MzUyNzpzdGF0aWMgdm9pZCBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBvbGRfb3JkZXIsXFxubW0vaHVnZV9tZW1vcnkuYy0zNTI4LVxcdFxcdGludCBuZXdfb3JkZXIpXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM2NjQtICogMS4gdW5pZm9ybSBzcGxpdDogQHhhcyBpcyBzcGxpdCB3aXRoIG5vIGV4cGVjdGF0aW9uIG9mIGZhaWx1cmUgYW5kIGEgc2luZ2xlXFxubW0vaHVnZV9tZW1vcnkuYzozNjY1OiAqICAgIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBpcyBjYWxsZWQgdG8gc3BsaXQgdGhlIEBmb2xpbyBpbnRvIEBuZXdfb3JkZXJcXG5tbS9odWdlX21lbW9yeS5jLTM2NjYtICogICAgYWxvbmcgd2l0aCBzdGF0cyB1cGRhdGUuXFxubW0vaHVnZV9tZW1vcnkuYy0zNjY3LSAqIDIuIG5vbi11bmlmb3JtIHNwbGl0OiBmb2xpb19vcmRlciAtIEBuZXdfb3JkZXIgY2FsbHMgdG9cXG5tbS9odWdlX21lbW9yeS5jOjM2Njg6ICogICAgX19zcGxpdF9mb2xpb190b19vcmRlcigpIGFyZSBleHBlY3RlZCB0byBiZSBtYWRlIGluIGEgZm9yIGxvb3AgdG8gc3BsaXRcXG5tbS9odWdlX21lbW9yeS5jLTM2NjktICogICAgdGhlIEBmb2xpbyB0byBvbmUgbG93ZXIgb3JkZXIgYXQgYSB0aW1lLiBUaGUgZm9saW8gY29udGFpbmluZyBAc3BsaXRfYXRcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9MzY4MT1zdGF0aWMgaW50IF9fc3BsaXRfdW5tYXBwZWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5ld19vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzcyNi1cXHRcXHRwZ2FsbG9jX3RhZ19zcGxpdChmb2xpbywgb2xkX29yZGVyLCBzcGxpdF9vcmRlcik7XFxubW0vaHVnZV9tZW1vcnkuYzozNzI3OlxcdFxcdF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xcbm1tL2h1Z2VfbWVtb3J5LmMtMzcyOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6MjMuMjY0MzI0MjAyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzNDI2OTU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgTWVtb3J5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtb2RpZnlpbmcgYF9fc3BsaXRfZm9saW9fdG9fb3JkZXJgLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBteSBleWVicm93cy4gSSBrbm93IHRoYXQgZnVuY3Rpb24sIGFuZCBpdCdzIGNhbGxlZCBieSBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAuIFRoYXQgc2VxdWVuY2Ugb2YgZnVuY3Rpb24gY2FsbHMgc2NyZWFtcyBjb3JlIGtlcm5lbCBsb2dpYywgZGVhbGluZyB3aXRoIGh1Z2UgbWVtb3J5IGFuZCBwYWdlIHNwbGl0dGluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IGluIGEgY3JpdGljYWwgYXJlYS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgY291bGQgYmUgYSBnb29kIGFyZWEgZm9yIGZ1enppbmcuXG5cblRoZSB0ZXh0IGFsc28gbWVudGlvbnMgdGhpcyBpcyBhIGZpeCByZWxhdGVkIHRvIGh3cG9pc29uLiBUaGlzIHNlZW1zIGxpa2UgYSB2YWxpZCBhcmVhIHRvIGZvY3VzIG9uLlxuXG5TbywgaXMgaXQgd29ydGggZnV6emluZz8gQWJzb2x1dGVseS4gSXQgdG91Y2hlcyBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsaXR5LCBhbmQgYSBidWcgcmVsYXRlZCB0byBod3BvaXNvbiBpcyBwb3RlbnRpYWxseSBzZXZlcmUuIFRoZSBwYXRjaCBpcyBmdW5jdGlvbi1iYXNlZCBhbmQgdGhhdCBtZWFucyBpdCBoYXMgcmVhbCB3b3JsZCB2YWx1ZS5cblxuTGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgZnVuY3Rpb25zOiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAsIGBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvYCwgYW5kIGBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAuIEknbGwgd2FudCB0byBrZWVwIGFuIGV5ZSBvbiB0aGVzZS4gQW5kIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYG1tL2h1Z2VfbWVtb3J5LmNgIGp1c3QgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgYnVpbGQgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA1MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0MzoyNy40OTg1OTYwNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgzNjU5MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh1Z2VfbWVtb3J5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTEwMD1vYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgKz0gbWlncmF0ZV9kZXZpY2Uub1xcbm1tL01ha2VmaWxlOjEwMTpvYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXFxubW0vTWFrZWZpbGUtMTAyLW9iai0kKENPTkZJR19QQUdFX0NPVU5URVIpICs9IHBhZ2VfY291bnRlci5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjI3LjY4MjI2MzI2MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjM0NTI4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEtlcm5lbCBNZW1vcnkgTWFuYWdlbWVudCBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCB0aGUgbmVlZCBmb3IgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY2xlYXIuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGludGVycGxheSB3aXRoIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLCBwYXJ0aWN1bGFybHkgYXJvdW5kIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IGBoYW5kbGVfaHdwb2lzb25gIG1pZ2h0IGludGVyYWN0IHdpdGggYENPTkZJR19NRU1PUllfRkFJTFVSRWAuIGBoYW5kbGVfaHdwb2lzb25gIGlzIHRoZSByb3V0aW5lIHRoYXQgZGVhbHMgd2l0aCBoYXJkd2FyZSBtZW1vcnkgZXJyb3JzLCBhbmQgdGhlc2UgY291bGQgZGVmaW5pdGVseSBpbXBhY3QgaHVnZXBhZ2UgaGFuZGxpbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjb25zZXF1ZW5jZXMgb2YgdGhlc2UgdHdvIGZlYXR1cmVzIHdvcmtpbmcgdG9nZXRoZXIuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzLCBlZGdlIGNhc2VzLCBvciBvcHRpbWl6YXRpb25zIHRvIGJlIGF3YXJlIG9mPyBUaGlzIHdpbGwgaGVscCBtZSBwbGFuIGFuZCB0cm91Ymxlc2hvb3QgYW55IGlzc3VlcyB0aGF0IGFyaXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6MzEuNTA1NzE4OTE4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDU2MjUwNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFuZGxlX2h3cG9pc29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2h1Z2VfbWVtb3J5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz0zNTI3PXN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzUzMC1cXHQvKiBTY2FuIHBvaXNvbmVkIHBhZ2VzIHdoZW4gc3BsaXQgYSBwb2lzb25lZCBmb2xpbyB0byBsYXJnZSBmb2xpb3MgKi9cXG5tbS9odWdlX21lbW9yeS5jOjM1MzE6XFx0Y29uc3QgYm9vbCBoYW5kbGVfaHdwb2lzb24gPSBmb2xpb190ZXN0X2hhc19od3BvaXNvbmVkKGZvbGlvKSBcXHUwMDI2XFx1MDAyNiBuZXdfb3JkZXI7XFxubW0vaHVnZV9tZW1vcnkuYy0zNTMyLVxcdGxvbmcgbmV3X25yX3BhZ2VzID0gMSBcXHUwMDNjXFx1MDAzYyBuZXdfb3JkZXI7XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM1MzgtXFx0LyogQ2hlY2sgZmlyc3QgbmV3X25yX3BhZ2VzIHNpbmNlIHRoZSBsb29wIGJlbG93IHNraXBzIHRoZW0gKi9cXG5tbS9odWdlX21lbW9yeS5jOjM1Mzk6XFx0aWYgKGhhbmRsZV9od3BvaXNvbiBcXHUwMDI2XFx1MDAyNlxcbm1tL2h1Z2VfbWVtb3J5LmMtMzU0MC1cXHQgICAgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChmb2xpb19wYWdlKGZvbGlvLCAwKSwgbmV3X25yX3BhZ2VzKSlcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzYxNi1cXHRcXHQgKiBvdGhlcndpc2UgZm9saW9fZmxhZ3MoKSB0cmlwcyBvbiAocGFnZS1cXHUwMDNlY29tcG91bmRfaW5mbyBcXHUwMDI2IDEpLlxcbm1tL2h1Z2VfbWVtb3J5LmM6MzYxNzpcXHRcXHQgKiBoYW5kbGVfaHdwb2lzb24gaW1wbGllcyBuZXdfb3JkZXIgIT0gMC5cXG5tbS9odWdlX21lbW9yeS5jLTM2MTgtXFx0XFx0ICovXFxubW0vaHVnZV9tZW1vcnkuYzozNjE5OlxcdFxcdGlmIChoYW5kbGVfaHdwb2lzb24gXFx1MDAyNlxcdTAwMjZcXG5tbS9odWdlX21lbW9yeS5jLTM2MjAtXFx0XFx0ICAgIHBhZ2VfcmFuZ2VfaGFzX2h3cG9pc29uZWQobmV3X2hlYWQsIG5ld19ucl9wYWdlcykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjMzLjUxMTM1MDMxMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NzU0ODMzOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSBgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZGAgYW5kIG15IGJyYWluIGltbWVkaWF0ZWx5IG1ha2VzIHRoZSBhc3NvY2lhdGlvbiDigJMgdGhhdCdzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBoYXJkd2FyZSBwb2lzb25pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIHdpdGhpbiB0aGUgY29udGV4dCBvZiBoYXJkd2FyZSBwb2lzb25pbmcgZGV0ZWN0aW9uIG9yIGhhbmRsaW5nLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGJlZm9yZSBJIGRpZyBpbnRvIGFueSBoaWdoZXItbGV2ZWwgY29kZSwgaXMgdG8gZmluZCB0aGUgZnVuY3Rpb24ncyBkZWZpbml0aW9uLiBMZXQgbWUgcXVpY2tseSB0cmFjayBkb3duIHdoZXJlIGBmb2xpb190ZXN0X2hhc19od3BvaXNvbmVkYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBjb2RlYmFzZS4gVW5kZXJzdGFuZGluZyB0aGUgZnVuY3Rpb24ncyBzaWduYXR1cmUgYW5kIGltcGxlbWVudGF0aW9uIHdpbGwgZ2l2ZSBtZSB0aGUgZm91bmRhdGlvbmFsIGNvbnRleHQgSSBuZWVkIHRvIHByb2NlZWQgd2l0aCBteSBpbnZlc3RpZ2F0aW9uIGFuZCBmb3JtIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjM2LjI4NjgzODI0MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM3OTA5Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTA3Mj1zdGF0aWMgaW5saW5lIGJvb2wgZm9saW9fY29udGFpbl9od3BvaXNvbmVkX3BhZ2Uoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzQtXFx0cmV0dXJuIGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pIHx8XFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTA3NTpcXHQgICAgKGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWQoZm9saW8pKTtcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMDc2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6MzcuMDI0NzU0NTU5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDg2Njg3MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIEhhcmR3YXJlIFBvaXNvbmluZyBDb25jZXJuKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIGZ1bmN0aW9uYWxpdHkuIE15IGltbWVkaWF0ZSBmaXJzdCBzdG9wLCBhcyBhbHdheXMsIGlzIHRoZSBkZWZpbml0aXZlIHNvdXJjZTogYGluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oYC4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdmVyaWZ5IGV4YWN0bHkgaG93IGl0J3MgZGVmaW5lZCwgd2hhdCB0aGUgdW5kZXJseWluZyBiaXRzIHJlcHJlc2VudCwgYW5kIGNydWNpYWxseSwgaG93IHRoaXMgcmVsYXRlcyB0byBvdGhlciByZWxldmFudCBmb2xpbyBmbGFncy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYGh3cG9pc29uZWRgIHN0YXRlIGFuZCB0aGluZ3MgbGlrZSB0aGUgcGFnZSBzdGF0ZSAoZS5nLiwgYFBHX2h3cG9pc29uYCwgYFBHX2Vycm9yYCwgZXRjLikgdG8gZ2V0IGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgd2hvbGUgcGljdHVyZS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhpcyBmbGFnIGlzIG1hbmlwdWxhdGVkIGFuZCBjaGVja2VkIGFjcm9zcyB0aGUgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0MC4xMzM0Mjc0ODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NjAyMzYzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm9saW9fc2V0X2hhc19od3BvaXNvbmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0MC4zODk0NjAxNDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY0MDMwNzIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKldoZXJlJ3MgVGhhdCBGdW5jdGlvbj8qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIEkgc2VlIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgLiBOb3csIEknbSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgZm9saW8vcGFnZSBtYW5hZ2VtZW50IGluIHRoZSBrZXJuZWwsIGJ1dCBmb3IgdGhlIGxpZmUgb2YgbWUsIEkgY2FuJ3QgaW1tZWRpYXRlbHkgcmVjYWxsIHdoZXJlIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24gaXMgZGVmaW5lZC4gSSBrbm93IHRoZXJlJ3MgYSB3aG9sZSBmYW1pbHkgb2YgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcG9pc29uaW5nLCBzbyBJJ20gbGlrZWx5IG1pc3JlbWVtYmVyaW5nIG9yIHBlcmhhcHMgaXQncyBkZWZpbmVkIGluIGEgaGVhZGVyIGZpbGUgb3IgcGVyaGFwcyBpdCBpcyBkZWZpbmVkIGluIGEgbmV3IHNldCBvZiBzb3VyY2UgY29kZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGl0cyBvcmlnaW4gdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhpcyBjdXJyZW50IGNvbnRleHQuIFRoZSBpbXBsaWNhdGlvbnMgb2YgaGFyZHdhcmUgcG9pc29uaW5nIGFyZSBzaWduaWZpY2FudC4gSSdsbCBuZWVkIHRvIGdvIGZpbmQgd2hlcmUgdGhlIGRlZmluaXRpb24gaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MzcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0My4wMjk3NzIxODNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0OTU3NDEwOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm9saW9fc2V0X2hhc19od3BvaXNvbmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0My44NzkzNTUzMjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0NTI1NTM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBleHByZXNzZWQgYXMgdGhvdWdoIEknbSB0aGUgb25lIGhhdmluZyB0aGUgdGhvdWdodHMsIGFuZCBnZWFyZWQgdG93YXJkcyBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWFjcm8tR2VuZXJhdGVkIEluc2lnaHQqKlxuXG5SaWdodCwgdGFraW5nIGEgbG9vayBhdCB0aGlzLCB0aGUgc3RydWN0dXJlIGltbWVkaWF0ZWx5IGZlZWxzIGZhbWlsaWFyLiBUaGUgcGF0dGVybi4uLiB5ZXMsIGl0J3MgZGVmaW5pdGVseSBtYWNyby1nZW5lcmF0ZWQuIEkgY2FuIHNlZSB0aGUgaGFsbG1hcmtzOiB0aGUgY29uc2lzdGVudCByZXBldGl0aW9uLCB0aGUgc3BlY2lmaWMgYXJyYW5nZW1lbnQgb2YgZWxlbWVudHMsIHRoZSB3YXkgY2VydGFpbiBjYWxjdWxhdGlvbnMgc2VlbSB0byBoYXZlIGJlZW4gcHJlLWNvbXB1dGVkLiBOb3QgbWFudWFsbHkgY29uc3RydWN0ZWQsIGZvciBzdXJlLiBUaGlzIHNjcmVhbXMgYXV0b21hdGVkIGdlbmVyYXRpb24uIE5vdywgdGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nICp3aGljaCogbWFjcm9zIHdlcmUgdXNlZCBhbmQgd2hhdCB0aGVpciBwdXJwb3NlIHdhcy4gVGhhdCB3aWxsIHVubG9jayB0aGUga2V5IHRvIHJldmVyc2UtZW5naW5lZXJpbmcgdGhlIGludGVuZGVkIGxvZ2ljIGFuZCBzZWVpbmcgd2hlcmUgdGhlcmUgbWlnaHQgYmUgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IG1vcmUgY2xvc2VseSB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgbWFjcm8gY2FsbHMgb3IgdGVtcGxhdGVzIOKAkyB0aGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGRlZXBlciBhbmFseXNpcy4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gd29yayBvdXQgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSB1bmRlcmx5aW5nIGRhdGFzZXQsIHRvbywgc2luY2UgdGhhdCBpbmZvcm1hdGlvbiBpcyBsaWtlbHkgdG8gYmUgaGlnaGx5IHJlbGV2YW50IHRvIGFuIGV4cGVydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6NDYuOTI0NjEzMzE0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE2NjA0NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFzX2h3cG9pc29uZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9OTM9ZW51bSBwYWdlZmxhZ3Mge1xcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTkxLVxcdC8qIEF0IGxlYXN0IG9uZSBwYWdlIGluIHRoaXMgZm9saW8gaGFzIHRoZSBod3BvaXNvbiBmbGFnIHNldCAqL1xcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjE5MjpcXHRQR19oYXNfaHdwb2lzb25lZCA9IFBHX2FjdGl2ZSxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xOTMtXFx0UEdfbGFyZ2Vfcm1hcHBhYmxlID0gUEdfd29ya2luZ3NldCwgLyogYW5vbiBvciBmaWxlLWJhY2tlZCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9ODc3PUZPTElPX0ZMQUdfRkFMU0UocGFydGlhbGx5X21hcHBlZClcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTg4OC0gKi9cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDo4ODk6Rk9MSU9fRkxBRyhoYXNfaHdwb2lzb25lZCwgRk9MSU9fU0VDT05EX1BBR0UpXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtODkwLSNlbHNlXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6ODkxOkZPTElPX0ZMQUdfRkFMU0UoaGFzX2h3cG9pc29uZWQpXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtODkyLSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTA3Mj1zdGF0aWMgaW5saW5lIGJvb2wgZm9saW9fY29udGFpbl9od3BvaXNvbmVkX3BhZ2Uoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzQtXFx0cmV0dXJuIGZvbGlvX3Rlc3RfaHdwb2lzb24oZm9saW8pIHx8XFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTA3NTpcXHQgICAgKGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3RfaGFzX2h3cG9pc29uZWQoZm9saW8pKTtcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xMDc2LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oPTExNTQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIF9fQ2xlYXJQYWdlQW5vbkV4Y2x1c2l2ZShzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTExOTMtI2RlZmluZSBQQUdFX0ZMQUdTX1NFQ09ORFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxMTk0OlxcdCgweGZmVUwgLyogb3JkZXIgKi9cXHRcXHR8IDFVTCBcXHUwMDNjXFx1MDAzYyBQR19oYXNfaHdwb2lzb25lZCB8XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTExOTUtXFx0IDFVTCBcXHUwMDNjXFx1MDAzYyBQR19sYXJnZV9ybWFwcGFibGVcXHR8IDFVTCBcXHUwMDNjXFx1MDAzYyBQR19wYXJ0aWFsbHlfbWFwcGVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo0Ny4xMDYyODUxOTZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMjU4MjY5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYCNlbHNlYCBzY2VuYXJpbyBpbnZvbHZpbmcgYEZPTElPX0ZMQUcoaGFzX2h3cG9pc29uZWQsIEZPTElPX1NFQ09ORF9QQUdFKWAuIE15IGV4cGVydCBpbnR1aXRpb24gaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBoYW5kbGluZyBhIHBvdGVudGlhbCBoYXJkd2FyZSBlcnJvciBkZXRlY3RlZCBvbiBhIHNlY29uZCBwYWdlIHdpdGhpbiBhIGZvbGlvIHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIHdoZW4gdGhpcyBmbGFnIGlzbid0IHNldC4gSXMgdGhpcyBhbiBcImVsc2VcIiBjbGF1c2UgdG8gYSBjaGVjaz8gSWYgc28sIHdoYXQgY2hlY2s/IEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSAqaW1wbGljYXRpb24qIG9mIHRoaXMgYEZPTElPX1NFQ09ORF9QQUdFYCBjb250ZXh0LiBEb2VzIGl0IG1lYW4gYSBzcGVjaWZpYyBwYWdlIHdpdGhpbiBhIGxhcmdlciBzdHJ1Y3R1cmUsIGFuZCBpZiBzbywgd2hhdCBpcyB0aGF0IGxhcmdlciBzdHJ1Y3R1cmUgYW5kIGhvdyBpcyBpdCB1c2VkIGJ5IHRoZSBPUz8gVGhlIGAjZWxzZWAgY29uZGl0aW9uIGhlcmUgbXVzdCBkZWZpbmUgd2hhdCB0byBkbyBpZiB0aGUgaGFyZHdhcmUgcG9pc29uaW5nIGlzbid0IHNwZWNpZmljYWxseSBmbGFnZ2VkIGZvciB0aGF0IHNlY29uZCBwYWdlLiBEb2VzIGl0IGltcGx5IGFzc3VtaW5nIGl0J3MgKm5vdCogcG9pc29uZWQ/IElzIHRoZXJlIGEgZGVmYXVsdCBiZWhhdmlvciBlc3RhYmxpc2hlZCBzb21ld2hlcmUgZWxzZSBpbiB0aGUgY29kZWJhc2U/IEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgdG8gZmFjdG9yIGluPyBJcyB0aGVyZSBhIGZhbGxiYWNrIG1lY2hhbmlzbSB0byB0cmlnZ2VyIGluIHRoaXMgYCNlbHNlYCBzaXR1YXRpb24/IEkgYWxzbyB3YW50IHRvIGNoZWNrIG90aGVyIHBsYWNlcyB3aGVyZSB0aGlzIEZPTElPX0ZMQUcgaXMgdXRpbGl6ZWQuIEhvdyBkb2VzIHRoZSBjb2RlIGhhbmRsZSBwYWdlcyB0aGF0ICphcmUqIGZsYWdnZWQgYXMgaGF2aW5nIGhhcmR3YXJlIHBvaXNvbmluZz8gTWF5YmUgSSB3aWxsIGJlIGFibGUgdG8gZm9ybSBhIG1vcmUgY29tcGxldGUgbWVudGFsIG1vZGVsIG9mIHdoYXQgdGhlIGAjZWxzZWAgYmxvY2sgaXMgdXNlZCBmb3Igd2l0aGluIHRoZSBjb250ZXh0IG9mIGhhcmR3YXJlIGZhaWx1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo1MC41Mzg4NzA0ODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODYyNDcwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYXNfaHdwb2lzb25lZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD05Mz1lbnVtIHBhZ2VmbGFncyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC0xOTEtXFx0LyogQXQgbGVhc3Qgb25lIHBhZ2UgaW4gdGhpcyBmb2xpbyBoYXMgdGhlIGh3cG9pc29uIGZsYWcgc2V0ICovXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg6MTkyOlxcdFBHX2hhc19od3BvaXNvbmVkID0gUEdfYWN0aXZlLFxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTE5My1cXHRQR19sYXJnZV9ybWFwcGFibGUgPSBQR193b3JraW5nc2V0LCAvKiBhbm9uIG9yIGZpbGUtYmFja2VkICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD04Nzc9Rk9MSU9fRkxBR19GQUxTRShwYXJ0aWFsbHlfbWFwcGVkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtODg4LSAqL1xcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjg4OTpGT0xJT19GTEFHKGhhc19od3BvaXNvbmVkLCBGT0xJT19TRUNPTkRfUEFHRSlcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04OTAtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDo4OTE6Rk9MSU9fRkxBR19GQUxTRShoYXNfaHdwb2lzb25lZClcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaC04OTItI2VuZGlmXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaD0xMDcyPXN0YXRpYyBpbmxpbmUgYm9vbCBmb2xpb19jb250YWluX2h3cG9pc29uZWRfcGFnZShzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTA3NC1cXHRyZXR1cm4gZm9saW9fdGVzdF9od3BvaXNvbihmb2xpbykgfHxcXG5pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaDoxMDc1OlxcdCAgICAoZm9saW9fdGVzdF9sYXJnZShmb2xpbykgXFx1MDAyNlxcdTAwMjYgZm9saW9fdGVzdF9oYXNfaHdwb2lzb25lZChmb2xpbykpO1xcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oLTEwNzYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmg9MTE1ND1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgX19DbGVhclBhZ2VBbm9uRXhjbHVzaXZlKHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTE5My0jZGVmaW5lIFBBR0VfRkxBR1NfU0VDT05EXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oOjExOTQ6XFx0KDB4ZmZVTCAvKiBvcmRlciAqL1xcdFxcdHwgMVVMIFxcdTAwM2NcXHUwMDNjIFBHX2hhc19od3BvaXNvbmVkIHxcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgtMTE5NS1cXHQgMVVMIFxcdTAwM2NcXHUwMDNjIFBHX2xhcmdlX3JtYXBwYWJsZVxcdHwgMVVMIFxcdTAwM2NcXHUwMDNjIFBHX3BhcnRpYWxseV9tYXBwZWQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjUwLjc4NzUwODU5N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTc2MjY0Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIFBhZ2UgRmxhZ3MqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIHdoZXJlJ3MgdGhlIGJlc3QgcGxhY2UgdG8gZGlnIGludG8gdGhlIGd1dHMgb2YgcGFnZSBmbGFncz8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgc3BlY2lmaWMgZGV0YWlscy4gUmlnaHQsIGl0J3MgcHJvYmFibHkgYmVzdCB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBMZXQncyBzdGFydCB3aXRoIGBpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaGAsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA4ODkuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBtb3JlIGNydWNpYWwgZGVmaW5pdGlvbnMgYW5kIG1heWJlIHNvbWUgb2YgdGhlIGNvcmUgbWFjcm9zIGFyZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGVzZSBmbGFncyBhcmUgdXNlZCBpbiByZWxhdGlvbiB0byB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRldGFpbHMgdGhhdCBhcmUgYWxtb3N0IGNlcnRhaW5seSB0b3VjaGVkIG9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzIyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDM6NTMuNzYzNzc2NDE2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA4NzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4NzA6XFx0XFx0QlVHX09OKCFQYWdlSGVhZChwYWdlKSk7XFxuIDg3MTpcXHRcXHRDbGVhclBhZ2VIZWFkKHBhZ2UpO1xcbiA4NzI6XFx0fVxcbiA4NzM6XFx0Rk9MSU9fRkxBRyhsYXJnZV9ybWFwcGFibGUsIEZPTElPX1NFQ09ORF9QQUdFKVxcbiA4NzQ6XFx0Rk9MSU9fRkxBRyhwYXJ0aWFsbHlfbWFwcGVkLCBGT0xJT19TRUNPTkRfUEFHRSlcXG4gODc1OlxcdCNlbHNlXFxuIDg3NjpcXHRGT0xJT19GTEFHX0ZBTFNFKGxhcmdlX3JtYXBwYWJsZSlcXG4gODc3OlxcdEZPTElPX0ZMQUdfRkFMU0UocGFydGlhbGx5X21hcHBlZClcXG4gODc4OlxcdCNlbmRpZlxcbiA4Nzk6XFx0XFxuIDg4MDpcXHQjZGVmaW5lIFBHX2hlYWRfbWFzayAoKDFVTCBcXHUwMDNjXFx1MDAzYyBQR19oZWFkKSlcXG4gODgxOlxcdFxcbiA4ODI6XFx0I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSlcXG4gODgzOlxcdC8qXFxuIDg4NDpcXHQgKiBQYWdlSGFzSFdQb2lzb25lZCBpbmRpY2F0ZXMgdGhhdCBhdCBsZWFzdCBvbmUgc3VicGFnZSBpcyBod3BvaXNvbmVkIGluIHRoZVxcbiA4ODU6XFx0ICogY29tcG91bmQgcGFnZS5cXG4gODg2OlxcdCAqXFxuIDg4NzpcXHQgKiBUaGlzIGZsYWcgaXMgc2V0IGJ5IGh3cG9pc29uIGhhbmRsZXIuICBDbGVhcmVkIGJ5IFRIUCBzcGxpdCBvciBmcmVlIHBhZ2UuXFxuIDg4ODpcXHQgKi9cXG4gODg5OlxcdEZPTElPX0ZMQUcoaGFzX2h3cG9pc29uZWQsIEZPTElPX1NFQ09ORF9QQUdFKVxcbiA4OTA6XFx0I2Vsc2VcXG4gODkxOlxcdEZPTElPX0ZMQUdfRkFMU0UoaGFzX2h3cG9pc29uZWQpXFxuIDg5MjpcXHQjZW5kaWZcXG4gODkzOlxcdFxcbiA4OTQ6XFx0LypcXG4gODk1OlxcdCAqIEZvciBwYWdlcyB0aGF0IGRvIG5vdCB1c2UgbWFwY291bnQsIHBhZ2VfdHlwZSBtYXkgYmUgdXNlZC5cXG4gODk2OlxcdCAqIFRoZSBsb3cgMjQgYml0cyBvZiBwYWdldHlwZSBtYXkgYmUgdXNlZCBmb3IgeW91ciBvd24gcHVycG9zZXMsIGFzIGxvbmdcXG4gODk3OlxcdCAqIGFzIHlvdSBhcmUgY2FyZWZ1bCB0byBub3QgYWZmZWN0IHRoZSB0b3AgOCBiaXRzLiAgVGhlIGxvdyBiaXRzIG9mXFxuIDg5ODpcXHQgKiBwYWdldHlwZSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdoZW4geW91IGNsZWFyIHRoZSBwYWdlX3R5cGUgZnJvbSB0aGUgcGFnZS5cXG4gODk5OlxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0Mzo1My43NjM5NjE3NTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2NzY2MTg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGb2xpbyBTcGxpdHRpbmcgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGBDT05GSUdfTUVNT1JZX0ZBSUxVUkVgIGFuZCBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBhcmUgZXNzZW50aWFsIGZvciB0aGlzIHRvIGV2ZW4gYmUgcmVsZXZhbnQuIFRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIGJlIHdpdGhpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAuIEl0IGFwcGVhcnMgd2Ugd2VyZSBjYWxsaW5nIGBmb2xpb19zZXRfaGFzX2h3cG9pc29uZWRgIHByZW1hdHVyZWx5LiAgU3BlY2lmaWNhbGx5LCB0aGlzIGhhcHBlbmVkIGJlZm9yZSB3ZSdkIGZ1bGx5IGluaXRpYWxpemVkIHRoZSBuZXcgZm9saW8ncyBzdHJ1Y3R1cmUgd2l0aCBgY2xlYXJfY29tcG91bmRfaGVhZCgpYCBhbmQgYHByZXBfY29tcG91bmRfcGFnZSgpYCwgZXNzZW50aWFsbHkgdHJhbnNmb3JtaW5nIHRoZSB0YWlsIHBhZ2UgaW50byB0aGUgbGVnaXRpbWF0ZSBmb2xpbyBoZWFkLlxuXG5UaGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIGJ1ZyBpbiBtZW1vcnkgbWFuYWdlbWVudCwgZGlyZWN0bHkgaW1wYWN0aW5nIGhvdyB3ZSBoYW5kbGUgdHJhbnNwYXJlbnQgaHVnZXBhZ2VzIGFuZCBtZW1vcnkgZmFpbHVyZSBzY2VuYXJpb3MuICBUaGUgZml4IGhlcmUgaXMgKmZ1bmN0aW9uYWxseSogY2hhbmdpbmcgaG93IGZvbGlvcyBhcmUgaGFuZGxlZCBkdXJpbmcgc3BsaXR0aW5nLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2UgaXMgaW1wbGljYXRlZCBieSB0aGlzIGNoYW5nZS4gSG1tLCByaWdodCwgYENPTkZJR19NRU1PUllfRkFJTFVSRWAgaXMgZGVmaW5pdGVseSBuZWVkZWQgYmVjYXVzZSBvZiB0aGF0IGBGT0xJT19GTEFHKGhhc19od3BvaXNvbmVkLCBGT0xJT19TRUNPTkRfUEFHRSlgIHVzYWdlLiBBbmQgYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgaXMgY2xlYXJseSBuZWVkZWQsIGJlY2F1c2Ugb2YgdGhlIGludm9sdmVtZW50IG9mIGBtbS9odWdlX21lbW9yeS5jYC4gSSdsbCBnbyBjaGVjayBgbW0vaHVnZV9tZW1vcnkuY2Agb25lIG1vcmUgdGltZS4gRXNwZWNpYWxseSB0byBzZWUgdGhlIGZ1bGwgY29udGV4dCBvZiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAuIEknbGwgYWxzbyBiZSBrZWVwaW5nIGFuIGV5ZSBvbiBgX19zcGxpdF91bm1hcHBlZF9mb2xpb2AgYW5kIGBzcGxpdF9odWdlX3BhZ2VfdG9fbGlzdF90b19vcmRlcmAsIHRvIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQzNSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjU5LjMzMTYyNzM1M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY0OTExNjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc3BsaXRfZm9saW9fdG9fb3JkZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vaHVnZV9tZW1vcnkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9odWdlX21lbW9yeS5jPTM1MTU9c3RhdGljIGJvb2wgcGFnZV9yYW5nZV9oYXNfaHdwb2lzb25lZChzdHJ1Y3QgcGFnZSAqcGFnZSwgbG9uZyBucl9wYWdlcylcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzUyNi0gKi9cXG5tbS9odWdlX21lbW9yeS5jOjM1Mjc6c3RhdGljIHZvaWQgX19zcGxpdF9mb2xpb190b19vcmRlcihzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgb2xkX29yZGVyLFxcbm1tL2h1Z2VfbWVtb3J5LmMtMzUyOC1cXHRcXHRpbnQgbmV3X29yZGVyKVxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYy0zNjY0LSAqIDEuIHVuaWZvcm0gc3BsaXQ6IEB4YXMgaXMgc3BsaXQgd2l0aCBubyBleHBlY3RhdGlvbiBvZiBmYWlsdXJlIGFuZCBhIHNpbmdsZVxcbm1tL2h1Z2VfbWVtb3J5LmM6MzY2NTogKiAgICBfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKCkgaXMgY2FsbGVkIHRvIHNwbGl0IHRoZSBAZm9saW8gaW50byBAbmV3X29yZGVyXFxubW0vaHVnZV9tZW1vcnkuYy0zNjY2LSAqICAgIGFsb25nIHdpdGggc3RhdHMgdXBkYXRlLlxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY2Ny0gKiAyLiBub24tdW5pZm9ybSBzcGxpdDogZm9saW9fb3JkZXIgLSBAbmV3X29yZGVyIGNhbGxzIHRvXFxubW0vaHVnZV9tZW1vcnkuYzozNjY4OiAqICAgIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBhcmUgZXhwZWN0ZWQgdG8gYmUgbWFkZSBpbiBhIGZvciBsb29wIHRvIHNwbGl0XFxubW0vaHVnZV9tZW1vcnkuYy0zNjY5LSAqICAgIHRoZSBAZm9saW8gdG8gb25lIGxvd2VyIG9yZGVyIGF0IGEgdGltZS4gVGhlIGZvbGlvIGNvbnRhaW5pbmcgQHNwbGl0X2F0XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTM2ODE9c3RhdGljIGludCBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM3MjYtXFx0XFx0cGdhbGxvY190YWdfc3BsaXQoZm9saW8sIG9sZF9vcmRlciwgc3BsaXRfb3JkZXIpO1xcbm1tL2h1Z2VfbWVtb3J5LmM6MzcyNzpcXHRcXHRfX3NwbGl0X2ZvbGlvX3RvX29yZGVyKGZvbGlvLCBvbGRfb3JkZXIsIHNwbGl0X29yZGVyKTtcXG5tbS9odWdlX21lbW9yeS5jLTM3MjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQzOjU5Ljk5NjU0NTU2OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjk2MDQzOTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgdGhhdCBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgaXMgYmVpbmcgY2FsbGVkIGJ5IGBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvYC4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBxdWVzdGlvbiBpbiBteSBtaW5kOiBBcmUgdGhlc2UgZnVuY3Rpb25zIGFsd2F5cyBhdmFpbGFibGUsIG9yIGFyZSB0aGV5IGNvbmRpdGlvbmFsPyBNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBzY2FuIGBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvYCB0byBzZWUgaWYgaXQncyB3cmFwcGVkIHdpdGhpbiBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgZW50aXJlIGNodW5rIG9mIGxvZ2ljIGlzIGNvbXBpbGVkIG9ubHkgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9ucyBvciBjb25maWd1cmF0aW9ucy4gVGhpcyB3aWxsIGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhbmQgd2hlbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgaXMgdXRpbGl6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1NzYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQyMTo0NDowMi42OTI1OTI4MTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTU3NzA0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3NwbGl0X3VubWFwcGVkX2ZvbGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2h1Z2VfbWVtb3J5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz0zNTI3PXN0YXRpYyB2b2lkIF9fc3BsaXRfZm9saW9fdG9fb3JkZXIoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG9sZF9vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY0MC0vKipcXG5tbS9odWdlX21lbW9yeS5jOjM2NDE6ICogX19zcGxpdF91bm1hcHBlZF9mb2xpbygpIC0gc3BsaXRzIGFuIHVubWFwcGVkIEBmb2xpbyB0byBsb3dlciBvcmRlciBmb2xpb3MgaW5cXG5tbS9odWdlX21lbW9yeS5jLTM2NDItICogdHdvIHdheXM6IHVuaWZvcm0gc3BsaXQgb3Igbm9uLXVuaWZvcm0gc3BsaXQuXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM2ODAtICovXFxubW0vaHVnZV9tZW1vcnkuYzozNjgxOnN0YXRpYyBpbnQgX19zcGxpdF91bm1hcHBlZF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBpbnQgbmV3X29yZGVyLFxcbm1tL2h1Z2VfbWVtb3J5LmMtMzY4Mi1cXHRcXHRzdHJ1Y3QgcGFnZSAqc3BsaXRfYXQsIHN0cnVjdCB4YV9zdGF0ZSAqeGFzLFxcbi0tXFxubW0vaHVnZV9tZW1vcnkuYz0zODA4PXN0YXRpYyBpbnQgX19mb2xpb19mcmVlemVfYW5kX3NwbGl0X3VubWFwcGVkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBuZXdfb3JkZXIsXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTM4ODEtXFxubW0vaHVnZV9tZW1vcnkuYzozODgyOlxcdFxcdHJldCA9IF9fc3BsaXRfdW5tYXBwZWRfZm9saW8oZm9saW8sIG5ld19vcmRlciwgc3BsaXRfYXQsIHhhcyxcXG5tbS9odWdlX21lbW9yeS5jLTM4ODMtXFx0XFx0XFx0XFx0XFx0ICAgICBtYXBwaW5nLCBzcGxpdF90eXBlKTtcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtMzk3MS0gKlxcbm1tL2h1Z2VfbWVtb3J5LmM6Mzk3MjogKiBJdCBjYWxscyBfX3NwbGl0X3VubWFwcGVkX2ZvbGlvKCkgdG8gcGVyZm9ybSB1bmlmb3JtIGFuZCBub24tdW5pZm9ybSBzcGxpdC5cXG5tbS9odWdlX21lbW9yeS5jLTM5NzMtICogSXQgaXMgaW4gY2hhcmdlIG9mIGNoZWNraW5nIHdoZXRoZXIgdGhlIHNwbGl0IGlzIHN1cHBvcnRlZCBvciBub3QgYW5kXFxubW0vaHVnZV9tZW1vcnkuYzozOTc0OiAqIHByZXBhcmluZyBAZm9saW8gZm9yIF9fc3BsaXRfdW5tYXBwZWRfZm9saW8oKS5cXG5tbS9odWdlX21lbW9yeS5jLTM5NzUtICpcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmM9Mzk4ND1zdGF0aWMgaW50IF9fZm9saW9fc3BsaXQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IG5ld19vcmRlcixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNDA2Ni1cXHRcXHQvKlxcbm1tL2h1Z2VfbWVtb3J5LmM6NDA2NzpcXHRcXHQgKl9fc3BsaXRfdW5tYXBwZWRfZm9saW8oKSBtYXkgbmVlZCB0byB0cmltIG9mZiBwYWdlcyBiZXlvbmRcXG5tbS9odWdlX21lbW9yeS5jLTQwNjgtXFx0XFx0ICogRU9GOiBidXQgb24gMzItYml0LCBpX3NpemVfcmVhZCgpIHRha2VzIGFuIGlycS11bnNhZmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMjE6NDQ6MDIuOTMyMTc1MjYyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTAxODkzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgUmVsZXZhbnQgS2VybmVsIENvZGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIGxvb2tpbmcgYXQgYSBtZW1vcnktcmVsYXRlZCBpc3N1ZSwgYW5kIG15IGluaXRpYWwgaW5zdGluY3QgcG9pbnRzIHRvIGBtbS9odWdlX21lbW9yeS5jYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgb2J2aW91cyBwbGFjZSB0byBmaW5kIGNvZGUgZGVhbGluZyB3aXRoIGh1Z2UgcGFnZXMuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFRoZSBmYWN0IHRoYXQgdGhpcyBmaWxlIGlzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBlbmFibGVkIGlzIGNyaXRpY2FsIGNvbnRleHQuIFRoYXQgaW5zdGFudGx5IHRlbGxzIG1lIHRoYXQgd2hhdGV2ZXIncyBoYXBwZW5pbmcgaXMgcmVsYXRlZCB0byB0cmFuc3BhcmVudCBodWdlcGFnZXMuIFRvIGJlIHNwZWNpZmljLCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhcyB3ZWxsIGFzIGBNRU1PUllfRkFJTFVSRWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbnRlcnBsYXkgYmV0d2VlbiB0aGVzZSB0d28gY29uZmlncy4gTGV0J3MgY2FsbCBpdDogc2V0LXJlc3VsdHMsIHRoZSBwcm9ibGVtIGlzIHJlc29sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzU4LCJPdXRwdXRUb2tlbnMiOjE1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDIxOjQ0OjA3LjEyMjM2NzczM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjI2NzA2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiX19zcGxpdF91bm1hcHBlZF9mb2xpb1wiLFxuICAgIFwic3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgd2hlcmUgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBmb2xpbyB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXMgYSBoZWFkIGZvbGlvLCBjYXVzaW5nIGBmb2xpb19mbGFncygpYCB0byB0cmlwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0ZBSUxVUkVcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zcGxpdF9mb2xpb190b19vcmRlclwiLFxuICAgIFwiX19zcGxpdF91bm1hcHBlZF9mb2xpb1wiLFxuICAgIFwic3BsaXRfaHVnZV9wYWdlX3RvX2xpc3RfdG9fb3JkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19zcGxpdF9mb2xpb190b19vcmRlcmAgd2hlcmUgYGZvbGlvX3NldF9oYXNfaHdwb2lzb25lZGAgd2FzIGNhbGxlZCBiZWZvcmUgdGhlIG5ldyBmb2xpbyB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXMgYSBoZWFkIGZvbGlvLCBjYXVzaW5nIGBmb2xpb19mbGFncygpYCB0byB0cmlwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyByZWxhdGVkIHRvIHRyYW5zcGFyZW50IGh1Z2VwYWdlcyBhbmQgbWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[1] Phase: Succeeded StartedAt: 2026-07-01 21:44:19 +0000 UTC FinishedAt: 2026-07-01 21:44:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 21:44:19 +0000 UTC FinishedAt: 2026-07-01 21:44:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2] Phase: Succeeded StartedAt: 2026-07-01 21:44:19 +0000 UTC FinishedAt: 2026-07-02 02:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 21:44:20 +0000 UTC FinishedAt: 2026-07-02 02:06:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 21:44:20 +0000 UTC FinishedAt: 2026-07-01 21:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 21:44:20 +0000 UTC FinishedAt: 2026-07-01 21:44:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr7mtp/series-workflowr7mtp-convert-artifact-2074532421/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 21:44:55 +0000 UTC FinishedAt: 2026-07-01 22:31:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 21:44:55 +0000 UTC FinishedAt: 2026-07-01 22:31:01 +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:*cbd44142-e70f-4578-887b-b5169843a317,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-workflowr7mtp/series-workflowr7mtp-convert-artifact-2074532421/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": "627abf97-f991-4f78-bcc1-1a3ed051ec84", "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-workflowr7mtp/series-workflowr7mtp-build-action-1185544238/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Failed StartedAt: 2026-07-01 21:44:55 +0000 UTC FinishedAt: 2026-07-01 21:55:49 +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:*cbd44142-e70f-4578-887b-b5169843a317,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-workflowr7mtp/series-workflowr7mtp-convert-artifact-2074532421/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:*,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-workflowr7mtp/series-workflowr7mtp-build-action-581402859/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*143,} --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(1) Phase: Succeeded StartedAt: 2026-07-01 22:05:17 +0000 UTC FinishedAt: 2026-07-01 22:30:51 +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:*cbd44142-e70f-4578-887b-b5169843a317,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-workflowr7mtp/series-workflowr7mtp-convert-artifact-2074532421/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": "627abf97-f991-4f78-bcc1-1a3ed051ec84", "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-workflowr7mtp/series-workflowr7mtp-build-action-1185544238/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 22:31:01 +0000 UTC FinishedAt: 2026-07-01 22:31:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 22:31:01 +0000 UTC FinishedAt: 2026-07-01 22:31:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 22:31:01 +0000 UTC FinishedAt: 2026-07-01 22:31:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 22:31:01 +0000 UTC FinishedAt: 2026-07-01 22:31:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr7mtp/series-workflowr7mtp-convert-artifact-4135794208/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 22:31:21 +0000 UTC FinishedAt: 2026-07-01 22:33:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 22:31:21 +0000 UTC FinishedAt: 2026-07-01 22:33:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*627abf97-f991-4f78-bcc1-1a3ed051ec84,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-workflowr7mtp/series-workflowr7mtp-build-action-1185544238/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-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 22:33:37 +0000 UTC FinishedAt: 2026-07-01 22:33:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 22:33:37 +0000 UTC FinishedAt: 2026-07-01 22:33:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 22:33:37 +0000 UTC FinishedAt: 2026-07-01 22:58:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 22:33:37 +0000 UTC FinishedAt: 2026-07-01 22:58:13 +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:*cbd44142-e70f-4578-887b-b5169843a317,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-workflowr7mtp/series-workflowr7mtp-convert-artifact-4135794208/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": "f80a135e-66a1-4a18-8ef1-d7aabde2d1bc", "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-workflowr7mtp/series-workflowr7mtp-build-action-514075612/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 22:33:37 +0000 UTC FinishedAt: 2026-07-01 22:58:03 +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:*cbd44142-e70f-4578-887b-b5169843a317,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-workflowr7mtp/series-workflowr7mtp-convert-artifact-4135794208/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": "f80a135e-66a1-4a18-8ef1-d7aabde2d1bc", "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-workflowr7mtp/series-workflowr7mtp-build-action-514075612/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 22:58:13 +0000 UTC FinishedAt: 2026-07-01 22:58:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 22:58:13 +0000 UTC FinishedAt: 2026-07-01 22:58:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 22:58:13 +0000 UTC FinishedAt: 2026-07-01 23:00:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 22:58:13 +0000 UTC FinishedAt: 2026-07-01 23:00:24 +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:*f80a135e-66a1-4a18-8ef1-d7aabde2d1bc,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-workflowr7mtp/series-workflowr7mtp-build-action-514075612/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-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 23:00:33 +0000 UTC FinishedAt: 2026-07-02 02:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 23:00:33 +0000 UTC FinishedAt: 2026-07-02 02:06:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*627abf97-f991-4f78-bcc1-1a3ed051ec84,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f80a135e-66a1-4a18-8ef1-d7aabde2d1bc,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-workflowr7mtp/series-workflowr7mtp-build-action-1185544238/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-workflowr7mtp/series-workflowr7mtp-build-action-514075612/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 23:00:33 +0000 UTC FinishedAt: 2026-07-01 23:00:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 23:00:33 +0000 UTC FinishedAt: 2026-07-01 23:00:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowr7mtp/series-workflowr7mtp-convert-artifact-3618943097/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 23:00:33 +0000 UTC FinishedAt: 2026-07-01 23:00:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 23:00:33 +0000 UTC FinishedAt: 2026-07-01 23:00:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 23:00:34 +0000 UTC FinishedAt: 2026-07-01 23:00:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 23:00:44 +0000 UTC FinishedAt: 2026-07-02 02:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr7mtp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["__split_folio_to_order","__split_unmapped_folio","split_huge_page_to_list_to_order"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"595893e78396f69f45253a470d785236ea71e539","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_FAILURE","TRANSPARENT_HUGEPAGE"],"series_id":"ce9e33d0-1d9b-4ec9-a5d6-deb1d761e75f","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 23:00:44 +0000 UTC FinishedAt: 2026-07-02 02:06:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*627abf97-f991-4f78-bcc1-1a3ed051ec84,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f80a135e-66a1-4a18-8ef1-d7aabde2d1bc,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-workflowr7mtp/series-workflowr7mtp-build-action-1185544238/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-workflowr7mtp/series-workflowr7mtp-build-action-514075612/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-workflowr7mtp/series-workflowr7mtp-convert-artifact-3618943097/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,}