Name: series-workflownb28h Phase: Succeeded StartedAt: 2026-07-12 00:00:03 +0000 UTC FinishedAt: 2026-07-12 03:15:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[0] Phase: Succeeded StartedAt: 2026-07-12 00:00:03 +0000 UTC FinishedAt: 2026-07-12 00:26:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 00:00:03 +0000 UTC FinishedAt: 2026-07-12 00:26:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "6d6e49d8-018f-4ee1-a72e-bd0c27801138" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath6kl_wmi_connect_event_rx", "ath6kl_cfg80211_connect_event" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4JiMzNDssCiAgICAmIzM0O2F0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDQwNDg0YjJiYWM3ZTI3ZmIwZDViMTRlZmQ3NGIyODM1ZWI3ZmFhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjI1OjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuaW5kZXggY2MwZjJjNDVmYzNhMzAuLjYyZjY2M2MwZGFhMjY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcbkBAIC03NTQsNiAmIzQzOzc1NCwxMSBAQCB2b2lkIGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLFxuIFx0dTggKmFzc29jX3Jlc3BfaWUgPSBhc3NvY19pbmZvICYjNDM7IGJlYWNvbl9pZV9sZW4gJiM0MzsgYXNzb2NfcmVxX2xlbiAmIzQzO1xuIFx0ICAgIGFzc29jX3Jlc3BfaWVfb2Zmc2V0O1xuIFxuJiM0MztcdGlmIChhc3NvY19yZXFfbGVuIFx1MDAzYyBhc3NvY19yZXFfaWVfb2Zmc2V0KVxuJiM0MztcdFx0YXNzb2NfcmVxX2xlbiA9IGFzc29jX3JlcV9pZV9vZmZzZXQ7XG4mIzQzO1x0aWYgKGFzc29jX3Jlc3BfbGVuIFx1MDAzYyBhc3NvY19yZXNwX2llX29mZnNldClcbiYjNDM7XHRcdGFzc29jX3Jlc3BfbGVuID0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7XG4mIzQzO1xuIFx0YXNzb2NfcmVxX2xlbiAtPSBhc3NvY19yZXFfaWVfb2Zmc2V0O1xuIFx0YXNzb2NfcmVzcF9sZW4gLT0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbmluZGV4IDcyNjExYTJjZWI5ZDhlLi5mYmZkNzQxNTRkMTJmZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbkBAIC04NjIsNiAmIzQzOzg2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbiBcbiBcdGV2ID0gKHN0cnVjdCB3bWlfY29ubmVjdF9ldmVudCAqKSBkYXRhcDtcbiBcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmV2KSAmIzQzOyBldi1cdTAwM2ViZWFjb25faWVfbGVuICYjNDM7IGV2LVx1MDAzZWFzc29jX3JlcV9sZW4gJiM0MztcbiYjNDM7XHQgICAgZXYtXHUwMDNlYXNzb2NfcmVzcF9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRpZiAodmlmLVx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xuIFx0XHQvKiBBUCBtb2RlIHN0YXJ0L1NUQSBjb25uZWN0ZWQgZXZlbnQgKi9cbiBcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZpZi1cdTAwM2VuZGV2O1xuQEAgLTkxMyw3ICYjNDM7OTE3LDggQEAgc3RhdGljIGludCBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXHR3aGlsZSAocGllIFx1MDAzYyBwZWllKSB7XG4gXHRcdHN3aXRjaCAoKnBpZSkge1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQzpcbi1cdFx0XHRpZiAocGllWzFdIFx1MDAzZSAzIFx1MDAyNlx1MDAyNiBwaWVbMl0gPT0gMHgwMCBcdTAwMjZcdTAwMjYgcGllWzNdID09IDB4NTAgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmIChwaWUgJiM0MzsgNyBcdTAwM2M9IHBlaWUgXHUwMDI2XHUwMDI2IHBpZVsxXSBcdTAwM2UgMyBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgIHBpZVsyXSA9PSAweDAwIFx1MDAyNlx1MDAyNiBwaWVbM10gPT0gMHg1MCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgcGllWzRdID09IDB4ZjIgXHUwMDI2XHUwMDI2IHBpZVs1XSA9PSBXTU1fT1VJX1RZUEUpIHtcbiBcdFx0XHRcdC8qIFdNTSBPVVQgKDAwOjUwOkYyKSAqL1xuIFx0XHRcdFx0aWYgKHBpZVsxXSBcdTAwM2UgNSBcdTAwMjZcdTAwMjZcbkBAIC05MjYsNiAmIzQzOzkzMSw5IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxuIFx0XHRpZiAod21pLVx1MDAzZWlzX3dtbV9lbmFibGVkKVxuIFx0XHRcdGJyZWFrO1xuIFxuJiM0MztcdFx0aWYgKHBpZSAmIzQzOyAxIFx1MDAzZT0gcGVpZSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1xuIFx0XHRwaWUgJiM0Mzs9IHBpZVsxXSAmIzQzOyAyO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4JiMzNDssCiAgICAmIzM0O2F0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkNDA0ODRiMmJhYzdlMjdmYjBkNWIxNGVmZDc0YjI4MzVlYjdmYWExCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDA6MjU6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMKaW5kZXggY2MwZjJjNDVmYzNhMzAuLjYyZjY2M2MwZGFhMjY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jCkBAIC03NTQsNiAmIzQzOzc1NCwxMSBAQCB2b2lkIGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLAogCXU4ICphc3NvY19yZXNwX2llID0gYXNzb2NfaW5mbyAmIzQzOyBiZWFjb25faWVfbGVuICYjNDM7IGFzc29jX3JlcV9sZW4gJiM0MzsKIAkgICAgYXNzb2NfcmVzcF9pZV9vZmZzZXQ7CiAKJiM0MzsJaWYgKGFzc29jX3JlcV9sZW4gJmx0OyBhc3NvY19yZXFfaWVfb2Zmc2V0KQomIzQzOwkJYXNzb2NfcmVxX2xlbiA9IGFzc29jX3JlcV9pZV9vZmZzZXQ7CiYjNDM7CWlmIChhc3NvY19yZXNwX2xlbiAmbHQ7IGFzc29jX3Jlc3BfaWVfb2Zmc2V0KQomIzQzOwkJYXNzb2NfcmVzcF9sZW4gPSBhc3NvY19yZXNwX2llX29mZnNldDsKJiM0MzsKIAlhc3NvY19yZXFfbGVuIC09IGFzc29jX3JlcV9pZV9vZmZzZXQ7CiAJYXNzb2NfcmVzcF9sZW4gLT0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jCmluZGV4IDcyNjExYTJjZWI5ZDhlLi5mYmZkNzQxNTRkMTJmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jCkBAIC04NjIsNiAmIzQzOzg2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbiwKIAogCWV2ID0gKHN0cnVjdCB3bWlfY29ubmVjdF9ldmVudCAqKSBkYXRhcDsKIAomIzQzOwlpZiAobGVuICZsdDsgc2l6ZW9mKCpldikgJiM0MzsgZXYtJmd0O2JlYWNvbl9pZV9sZW4gJiM0MzsgZXYtJmd0O2Fzc29jX3JlcV9sZW4gJiM0MzsKJiM0MzsJICAgIGV2LSZndDthc3NvY19yZXNwX2xlbikKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCWlmICh2aWYtJmd0O253X3R5cGUgPT0gQVBfTkVUV09SSykgewogCQkvKiBBUCBtb2RlIHN0YXJ0L1NUQSBjb25uZWN0ZWQgZXZlbnQgKi8KIAkJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZpZi0mZ3Q7bmRldjsKQEAgLTkxMyw3ICYjNDM7OTE3LDggQEAgc3RhdGljIGludCBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sCiAJd2hpbGUgKHBpZSAmbHQ7IHBlaWUpIHsKIAkJc3dpdGNoICgqcGllKSB7CiAJCWNhc2UgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDOgotCQkJaWYgKHBpZVsxXSAmZ3Q7IDMgJmFtcDsmYW1wOyBwaWVbMl0gPT0gMHgwMCAmYW1wOyZhbXA7IHBpZVszXSA9PSAweDUwICZhbXA7JmFtcDsKJiM0MzsJCQlpZiAocGllICYjNDM7IDcgJmx0Oz0gcGVpZSAmYW1wOyZhbXA7IHBpZVsxXSAmZ3Q7IDMgJmFtcDsmYW1wOwomIzQzOwkJCSAgICBwaWVbMl0gPT0gMHgwMCAmYW1wOyZhbXA7IHBpZVszXSA9PSAweDUwICZhbXA7JmFtcDsKIAkJCSAgICBwaWVbNF0gPT0gMHhmMiAmYW1wOyZhbXA7IHBpZVs1XSA9PSBXTU1fT1VJX1RZUEUpIHsKIAkJCQkvKiBXTU0gT1VUICgwMDo1MDpGMikgKi8KIAkJCQlpZiAocGllWzFdICZndDsgNSAmYW1wOyZhbXA7CkBAIC05MjYsNiAmIzQzOzkzMSw5IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLAogCQlpZiAod21pLSZndDtpc193bW1fZW5hYmxlZCkKIAkJCWJyZWFrOwogCiYjNDM7CQlpZiAocGllICYjNDM7IDEgJmd0Oz0gcGVpZSkKJiM0MzsJCQlicmVhazsKJiM0MzsKIAkJcGllICYjNDM7PSBwaWVbMV0gJiM0MzsgMjsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIGFuIGF0aDZrbCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBzb21lIG1vZGlmaWNhdGlvbnMgdG8gYGF0aDZrbC9jZmc4MDIxMS5jYCBhbmQgYGF0aDZrbC93bWkuY2AuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGxlbmd0aCBjaGVja3MgdG8gYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBhbmQgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAuIEludGVyZXN0aW5nLi4uIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBxdWVzdGlvbjogaXMgdGhpcyBkcml2ZXIsIGBhdGg2a2xgLCBmdXp6YWJsZT8KCkdlbmVyYWxseSwgSSYjMzk7bSBjYXV0aW91cyBhYm91dCBmdXp6aW5nIGhhcmR3YXJlLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMuIFRoZXkmIzM5O3JlIG9mdGVuIHRyaWNreSwgdW5sZXNzIHRoZXkmIzM5O3JlIGJ1aWx0IG9uIHRvcCBvZiBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgdGhpcyBpcyB0aGUgYXRoNmtsIGRyaXZlciwgZGVzaWduZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlLCBzbyB0aGUgdXN1YWwgY2F2ZWF0cyBhcHBseS4KCldhaXQsIGhvbGQgb24uLi4gU3l6a2FsbGVyICpjYW4qIGZ1enogd2lyZWxlc3MgZHJpdmVycyB2aWEgYG1hYzgwMjExX2h3c2ltYCwgcmlnaHQ/IEJ1dCwgYWgsIHRoYXQmIzM5O3MgdGhlIHByb2JsZW0uIEF0aDZrbCBpcyBhIGZ1bGxtYWMgZHJpdmVyIOKAkyBub3QgYSBgbWFjODAyMTFgIGRyaXZlci4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4KCkNhbiBpdCBiZSBmdXp6ZWQgdGhyb3VnaCBhIFVTQiBpbnRlcmZhY2U/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dC4gTGV0IG1lIGNoZWNrIGlmIHRoZSBkcml2ZXIgZXZlbiBzdXBwb3J0cyB0aGF0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiBhIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jYCBmaWxlIGV4aXN0cy4gTGV0JiMzOTtzIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTA0NCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI9Y29uZmlnIEFUSDZLTFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMC1cdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxMTpcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEyLVx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTE0PWNvbmZpZyBBVEg2S0xfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE1Olx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgU0RJTyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTYtXHRkZXBlbmRzIG9uIEFUSDZLTFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMC1cdCAgQXRoZXJvcyBBUjYwMDMgYW5kIEFSNjAwNCBjaGlwc2V0cyBydW5uaW5nIG92ZXIgU0RJTy4gSWYgeW91XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjE6XHQgIGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXRoNmtsX3NkaW8uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjItXHQgIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0yNT1jb25maWcgQVRINktMX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI2Olx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNy1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTMyLVx0ICBVU0IuIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcdCAgY2FsbGVkIGF0aDZrbF91c2IuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MzU9Y29uZmlnIEFUSDZLTF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjM2Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNy1cdGRlcGVuZHMgb24gQVRINktMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzgtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6Mzk6XHQgIEVuYWJsZXMgYXRoNmtsIGRlYnVnIHN1cHBvcnQsIGluY2x1ZGluZyBkZWJ1ZyBtZXNzYWdlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQwLVx0ICBlbmFibGVkIHdpdGggZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyIGFuZCBkZWJ1Z2ZzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTQ1PWNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ2Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ny1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ5LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjUwOlx0ICBTZWxlY3QgdGhpcyB0byBhdGg2a2wgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2gsIGZvclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTUxLVx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NTc9Y29uZmlnIEFUSDZLTF9SRUdET01BSU5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1ODpcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgcmVnZG9tYWluIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01OS1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0FUSDZLTCkgJiM0Mzs9IGF0aDZrbF9jb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MjY6YXRoNmtsX2NvcmUteSAmIzQzOz0gZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNzphdGg2a2xfY29yZS15ICYjNDM7PSBoaWYub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyODphdGg2a2xfY29yZS15ICYjNDM7PSBodGNfbWJveC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI5OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGh0Y19waXBlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzA6YXRoNmtsX2NvcmUteSAmIzQzOz0gYm1pLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzE6YXRoNmtsX2NvcmUteSAmIzQzOz0gY2ZnODAyMTEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMjphdGg2a2xfY29yZS15ICYjNDM7PSBpbml0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzM6YXRoNmtsX2NvcmUteSAmIzQzOz0gbWFpbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM0OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IHR4cngub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNTphdGg2a2xfY29yZS15ICYjNDM7PSB3bWkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNjphdGg2a2xfY29yZS15ICYjNDM7PSBjb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzc6YXRoNmtsX2NvcmUteSAmIzQzOz0gcmVjb3Zlcnkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzk6YXRoNmtsX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDA6YXRoNmtsX2NvcmUtJChDT05GSUdfQVRINktMX1RSQUNJTkcpICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfQVRINktMX1NESU8pICYjNDM7PSBhdGg2a2xfc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQzOmF0aDZrbF9zZGlvLXkgJiM0Mzs9IHNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0FUSDZLTF9VU0IpICYjNDM7PSBhdGg2a2xfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDY6YXRoNmtsX3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMzppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5Olx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgZG9uZSBza2lwcGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1Olx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVx1MDAyNmNpZCwgc2l6ZW9mKGNpZCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzc6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHNlbmQgYm1pIGRvbmU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDppbnQgYXRoNmtsX2JtaV9nZXRfdGFyZ2V0X2luZm8oc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ1Olx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NTpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCAodTggKilcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU3Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byBzZW5kIGdldCB0YXJnZXQgaW5mbzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjEtXHRpZiAoYXItXHUwMDNlaGlmX3R5cGUgPT0gQVRINktMX0hJRl9UWVBFX1VTQikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2MjpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgKHU4ICopdGFyZ19pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02My1cdFx0XHRcdFx0ICBzaXplb2YoKnRhcmdfaW5mbykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02NC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjY1Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKilcdTAwMjZ0YXJnX2luZm8tXHUwMDNldmVyc2lvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjYtXHRcdFx0XHRzaXplb2YodGFyZ19pbmZvLVx1MDAzZXZlcnNpb24pKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3MDpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVjdiB0YXJnZXQgaW5mbzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTcxLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzUtXHRcdC8qIERldGVybWluZSBob3cgbWFueSBieXRlcyBhcmUgaW4gdGhlIFRhcmdldCYjMzk7cyB0YXJnX2luZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NzY6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTc3LVx0XHRcdFx0ICAgKHU4ICopXHUwMDI2dGFyZ19pbmZvLVx1MDAzZWJ5dGVfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03OS1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo4MDpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O3VuYWJsZSB0byByZWFkIHRhcmdldCBpbmZvIGJ5dGUgY291bnQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04MS1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04OS1cdFx0aWYgKGxlMzJfdG9fY3B1KHRhcmdfaW5mby1cdTAwM2VieXRlX2NvdW50KSAhPSBzaXplb2YoKnRhcmdfaW5mbykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6OTA6XHRcdFx0YXRoNmtsX2VycihcJiMzNDttaXNtYXRjaGVkIGJ5dGUgY291bnQgJWQgdnMuIGV4cGVjdGVkICV6ZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTEtXHRcdFx0XHQgICBsZTMyX3RvX2NwdSh0YXJnX2luZm8tXHUwMDNlYnl0ZV9jb3VudCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy05Ni1cdFx0LyogUmVhZCB0aGUgcmVtYWluZGVyIG9mIHRoZSB0YXJnX2luZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6OTc6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk4LVx0XHRcdFx0ICAgKCh1OCAqKXRhcmdfaW5mbykgJiM0Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwMy1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMDQ6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCB0YXJnZXQgaW5mbyAoJWQgYnl0ZXMpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTA1LVx0XHRcdFx0ICAgdGFyZ19pbmZvLVx1MDAzZWJ5dGVfY291bnQsIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjExMDpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O3RhcmdldCBpbmZvICh2ZXI6IDB4JXggdHlwZTogMHgleClcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExMS1cdFx0ICAgdGFyZ19pbmZvLVx1MDAzZXZlcnNpb24sIHRhcmdfaW5mby1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTE2OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTI0LVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTI1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEyNi1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEzNjpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzNy1cdFx0ICAgXCYjMzQ7Ym1pIHJlYWQgbWVtb3J5OiBkZXZpY2U6IGFkZHI6IDB4JXgsIGxlbjogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1MzpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTQtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTU1Olx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTYtXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU4LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1OTpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIHJ4X2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE2MC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNjE6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjItXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNzI6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgyLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTgzOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE4NC1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE5NzpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5OC1cdFx0ICAgXCYjMzQ7Ym1pIHdyaXRlIG1lbW9yeTogYWRkcjogMHgleCwgbGVuOiAlZFxcblwmIzM0OywgYWRkciwgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjI3Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyOC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjk6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIzMC1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzOTppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0Ni1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI0NzpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNDgtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNTg6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgZXhlY3V0ZTogYWRkcjogMHgleCwgcGFyYW06ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU5LVx0XHQgICBhZGRyLCAqcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjk6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjcxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNzU6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3NzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzgtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI4NjppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjg3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5My1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5NDpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOTUtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMDU6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgc2V0IGFwcCBzdGFydDogYWRkcjogMHgleFxcblwmIzM0OywgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMwNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzEzOlx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMxNTpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxNi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzIyOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyOS1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMzMDpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMzEtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDE6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgcmVhZCBTT0MgcmVnOiBhZGRyOiAweCV4XFxuXCYjMzQ7LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDk6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzUxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTU6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1NzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTgtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM2NTppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzItXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNzM6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzc0LVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzg0Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzg1LVx0XHQgICBcJiMzNDtibWkgd3JpdGUgU09DIHJlZzogYWRkcjogMHgleCwgcGFyYW06ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTY6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5Ny1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzk4Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk5LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MDU6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphciwgdTggKmJ1ZiwgdTMyIGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDA2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxNC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQxNTpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MTYtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MjY6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgc2VuZCBMWiBkYXRhOiBsZW46ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDI3LVx0XHQgICBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDM6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ0LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0NTpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ2LVx0XHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU2OmludCBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjMtXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NjQ6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDY1LVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDc1Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDc2LVx0XHQgICBcJiMzNDtibWkgTFogc3RyZWFtIHN0YXJ0OiBhZGRyOiAweCV4KVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDg1Olx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ4NzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gc3RhcnQgTFogc3RyZWFtIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODgtXHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDk1OmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MDI6XHRyZXQgPSBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChhciwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxMTpcdHJldCA9IGF0aDZrbF9ibWlfbHpfZGF0YShhciwgYnVmLCBsYXN0X3dvcmRfb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTEyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxNS1cdGlmICh1bmFsaWduZWRfYnl0ZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxNjpcdFx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCAodTggKilcdTAwMjZsYXN0X3dvcmQsIDQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjAtXHRcdCAqIFRoaXMgc2VydmVzIG1haW5seSB0byBmbHVzaCBUYXJnZXQgY2FjaGVzLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MjE6XHRcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCAweDAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MjY6dm9pZCBhdGg2a2xfYm1pX3Jlc2V0KHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Mjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MzE6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTQ2OnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMTk6c3RydWN0IGF0aDZrbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjIwOnN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjIxLVx0X19sZTMyIGJ5dGVfY291bnQ7ICAgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjY6I2RlZmluZSBhdGg2a2xfYm1pX3dyaXRlX2hpMzIoYXIsIGl0ZW0sIHZhbClcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyNy1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzAtXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMxOlx0XHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjMyLVx0XHR2ID0gY3B1X3RvX2xlMzIodmFsKTtcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMzOlx0XHRhdGg2a2xfYm1pX3dyaXRlKGFyLCBhZGRyLCAodTggKikgXHUwMDI2diwgc2l6ZW9mKHYpKTtcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNC1cdH0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjM2OiNkZWZpbmUgYXRoNmtsX2JtaV9yZWFkX2hpMzIoYXIsIGl0ZW0sIHZhbClcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNy1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDItXHRcdCh2b2lkKSAoY2hlY2tfdHlwZSA9PSB2YWwpO1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQzOlx0XHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQ0Olx0XHRyZXQgPSBhdGg2a2xfYm1pX3JlYWQoYXIsIGFkZHIsICh1OCAqKSBcdTAwMjZ0bXAsIDQpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ1LVx0XHRpZiAoIXJldClcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTA6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MTp2b2lkIGF0aDZrbF9ibWlfY2xlYW51cChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1Mjp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NDppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU1OmludCBhdGg2a2xfYm1pX2dldF90YXJnZXRfaW5mbyhzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU2Olx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU3OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU4OmludCBhdGg2a2xfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1OTppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjAtXHRcdCAgICAgICB1MzIgYWRkciwgdTMyICpwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MTppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjItXHRcdFx0ICAgICB1MzIgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MzppbnQgYXRoNmtsX2JtaV9yZWdfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjQ6aW50IGF0aDZrbF9ibWlfcmVnX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyIHBhcmFtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY1OmludCBhdGg2a2xfYm1pX2x6X2RhdGEoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Ni1cdFx0ICAgICAgIHU4ICpidWYsIHUzMiBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjc6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjgtXHRcdFx0ICAgICAgIHUzMiBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY5OmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI3MC1cdFx0XHQgICAgIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NTg6c3RydWN0IGF0aDZrbF9jZmc4MDIxMV9tYXRjaF9wcm9iZV9zc2lkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01OS1cdHN0cnVjdCBjZmc4MDIxMV9zc2lkIHNzaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjYzOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3JhdGUgYXRoNmtsX3JhdGVzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjQtXHRSQVRFVEFCX0VOVCgxMCwgMHgxLCAwKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzg6I2RlZmluZSBhdGg2a2xfYV9yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyAmIzQzOyA0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc5OiNkZWZpbmUgYXRoNmtsX2FfcmF0ZXNfc2l6ZSAgICA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODA6I2RlZmluZSBhdGg2a2xfZ19yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyAmIzQzOyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgxOiNkZWZpbmUgYXRoNmtsX2dfcmF0ZXNfc2l6ZSAgICAxMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgzOiNkZWZpbmUgYXRoNmtsX2dfaHRjYXAgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4NDojZGVmaW5lIGF0aDZrbF9hX2h0Y2FwIChJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSF8yMF80MCB8IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODUtXHRcdFx0SUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcdFx0IHwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODg6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfMmdoel9jaGFubmVsc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg5LVx0Q0hBTjJHKDEsIDI0MTIsIDApLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTA1OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgYXRoNmtsXzVnaHpfYV9jaGFubmVsc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwNi1cdENIQU41RygzNiwgMCksIENIQU41Ryg0MCwgMCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjU6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgYXRoNmtsX2JhbmRfMmdoeiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjY6XHQubl9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoNmtsXzJnaHpfY2hhbm5lbHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNzpcdC5jaGFubmVscyA9IGF0aDZrbF8yZ2h6X2NoYW5uZWxzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyODpcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2dfcmF0ZXNfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjk6XHQuYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzA6XHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9nX2h0Y2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzMS1cdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNDpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF81Z2h6ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNTpcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfNWdoel9hX2NoYW5uZWxzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzY6XHQuY2hhbm5lbHMgPSBhdGg2a2xfNWdoel9hX2NoYW5uZWxzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNzpcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2FfcmF0ZXNfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzg6XHQuYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzk6XHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9hX2h0Y2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0MC1cdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ1LS8qIHJldHVybnMgdHJ1ZSBpZiBzY2hlZHVsZWQgc2NhbiB3YXMgc3RvcHBlZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NjpzdGF0aWMgYm9vbCBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNDg6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNTg6XHRhdGg2a2xfd21pX2VuYWJsZV9zY2hlZF9zY2FuX2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTYzOnN0YXRpYyB2b2lkIGF0aDZrbF9jZmc4MDIxMV9zc2Nhbl9kaXNhYmxlKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjU6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjYtXHRib29sIHN0b3BwZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2ODpcdHN0b3BwZWQgPSBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc2OnN0YXRpYyBpbnQgYXRoNmtsX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ny1cdFx0XHRcdCAgZW51bSBubDgwMjExX3dwYV92ZXJzaW9ucyB3cGFfdmVyc2lvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE3OTpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6ICV1XFxuXCYjMzQ7LCBfX2Z1bmNfXywgd3BhX3ZlcnNpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE4MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxODg6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7JXM6ICV1IG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg5LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk1OnN0YXRpYyBpbnQgYXRoNmtsX3NldF9hdXRoX3R5cGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTYtXHRcdFx0XHRlbnVtIG5sODAyMTFfYXV0aF90eXBlIGF1dGhfdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE5ODpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6IDB4JXhcXG5cJiMzNDssIF9fZnVuY19fLCBhdXRoX3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE1LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMTY6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7JXM6IDB4JXggbm90IHN1cHBvcnRlZFxcblwmIzM0OywgX19mdW5jX18sIGF1dGhfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE3LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjIzOnN0YXRpYyBpbnQgYXRoNmtsX3NldF9jaXBoZXIoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGNpcGhlciwgYm9vbCB1Y2FzdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjI5Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogY2lwaGVyIDB4JXgsIHVjYXN0ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIzMC1cdFx0ICAgX19mdW5jX18sIGNpcGhlciwgdWNhc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTgtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1OTpcdFx0YXRoNmtsX2VycihcJiMzNDtjaXBoZXIgMHgleCBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7LCBjaXBoZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2MC1cdFx0cmV0dXJuIC1FTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NjpzdGF0aWMgdm9pZCBhdGg2a2xfc2V0X2tleV9tZ210KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUzMiBrZXlfbWdtdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2ODpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6IDB4JXhcXG5cJiMzNDssIF9fZnVuY19fLCBrZXlfbWdtdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg1OnN0YXRpYyBib29sIGF0aDZrbF9jZmc4MDIxMV9yZWFkeShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg3Olx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXHUwMDNlYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4OS1cdGlmICghdGVzdF9iaXQoV01JX1JFQURZLCBcdTAwMjZhci1cdTAwM2VmbGFnKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI5MDpcdFx0YXRoNmtsX2VycihcJiMzNDt3bWkgaXMgbm90IHJlYWR5XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjk0LVx0aWYgKCF0ZXN0X2JpdChXTEFOX0VOQUJMRUQsIFx1MDAyNnZpZi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyOTU6XHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7d2xhbiBkaXNhYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjk2LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDI6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwYV9pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDk6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3Jzbl9pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMTQ6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwc19pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjI6c3RhdGljIGludCBhdGg2a2xfc2V0X2Fzc29jX3JlcV9pZXMoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjMtXHRcdFx0XHQgICAgc2l6ZV90IGllc19sZW4pXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzAxNgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYXRoNmtsIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgYXRoNmtsYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgVVNCIGFuZCBTRElPIHZhcmlhbnRzOiBgQVRINktMX1VTQmAgYW5kIGBBVEg2S0xfU0RJT2AuIE15IGZpcnN0IHRob3VnaHQgaXM6IHNpbmNlIHdlIGhhdmUgYEFUSDZLTF9VU0JgIGF2YWlsYWJsZSwgdGhhdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyBpdCB3aXRoIHRoZSBkdW1teSBVU0IgZHJpdmVyLCBgdmhjaWAsIHdpdGhpbiBzeXprYWxsZXIuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4KCk5vdywgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbi4gSXMgYEFUSDZLTF9VU0JgIGFscmVhZHkgZW5hYmxlZD8gT3IgZG8gSSBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIGl0IHRvIHRoZSBidWlsZD8gSG1tLCB5ZXMsIGxvb2tzIGxpa2UgSSBuZWVkIHRvIGVuc3VyZSBib3RoIGBBVEg2S0xfVVNCYCBhbmQgYEFUSDZLTGAgYXJlIGVuYWJsZWQuIEdvb2QuIEkmIzM5O2xsIG1ha2UgYSBub3RlIG9mIHRoYXQuCgpOZXh0LCBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSByZWxldmFudCBwYXRjaCBpcyB0b3VjaGluZyBgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRgIGFuZCBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YC4gSW50ZXJlc3RpbmcuIFRob3NlIGV2ZW50cyBhcmUgY3JpdGljYWwgZm9yIGNvbm5lY3Rpdml0eSwgc28gSSBkZWZpbml0ZWx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB0aGVyZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLiBJJiMzOTtsbCBzdGFydCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz02ODA9YXRoNmtsX2FkZF9ic3NfaWZfbmVlZGVkKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTczNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3MzY6dm9pZCBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MTYgY2hhbm5lbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03MzctXHRcdFx0XHQgICB1OCAqYnNzaWQsIHUxNiBsaXN0ZW5faW50dmwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oPTMzPXZvaWQgYXRoNmtsX2NmZzgwMjExX3NjYW5fY29tcGxldGVfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgYm9vbCBhYm9ydGVkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaC0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaDozNTp2b2lkIGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oLTM2LVx0XHRcdFx0ICAgdTggKmJzc2lkLCB1MTYgbGlzdGVuX2ludHZsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jPTYyOD12b2lkIGF0aDZrbF9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLCB1OCAqYnNzaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM6NjM2Olx0YXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnQodmlmLCBjaGFubmVsLCBic3NpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jLTYzNy1cdFx0XHRcdCAgICAgIGxpc3Rlbl9pbnQsIGJlYWNvbl9pbnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwMjUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIEZ1bmN0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBmdW5jdGlvbi4gQmFzZWQgb24gdGhlIG5hbWUgYWxvbmUsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGhhbmRsZXIgZm9yIGV2ZW50cyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgbGlrZWx5IHdpdGhpbiB0aGUgQXRoZXJvcyA2MDAwIHNlcmllcyB3aXJlbGVzcyBkcml2ZXIuIFByb2JhYmx5IGEgV01JIChXaW5kb3dzIE1hbmFnZW1lbnQgSW5zdHJ1bWVudGF0aW9uKSBldmVudCwgaW1wbHlpbmcgaXQmIzM5O3MgYSBtZWNoYW5pc20gZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgaG9zdCBhbmQgdGhlIGZpcm13YXJlLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgV2ktRmkgZHJpdmVycy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBoYW5kbGVyIHJlY2VpdmVzLCBob3cgaXQgcHJvY2Vzc2VzIHRoYXQgZGF0YSwgYW5kIHdoYXQgYWN0aW9ucyBpdCB0cmlnZ2Vycy4gSXMgaXQganVzdCBsb2dnaW5nLCBvciBkb2VzIGl0IGFjdHVhbGx5IGltcGFjdCBzdGF0ZSB0cmFuc2l0aW9ucyDigJMgYnJpbmdpbmcgdXAgdGhlIGludGVyZmFjZSwgYXNzaWduaW5nIGFuIElQIGFkZHJlc3MsIG9yIHBlcmhhcHMgbWFuYWdpbmcgc2VjdXJpdHkga2V5cz8gTGV0JiMzOTtzIGNoZWNrIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLiBHb3R0YSBjaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG9idmlvdXMgYnVmZmVyIG92ZXJmbG93cyBhbmQgdGhhdCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgaXMgZG9uZSBoZXJlLiBTZWN1cml0eSBpcyB0aGUgbWFpbiBwcmlvcml0eS4gSSBhbSBzdXJlIHRoYXQgSSBoYXZlIHNlZW4gdGhpcyBiZWZvcmUuIEl0IGhhcyB0byBoYW5kbGUgdGhlIGltcG9ydGFudCBiaXRzIGFib3V0IHdpZmkgY29ubmVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTgzNT1pbnQgYXRoNmtsX3dtaV9zZXRfcm9hbV9tb2RlX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX3JvYW1fbW9kZSBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtODUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzo4NTQ6c3RhdGljIGludCBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTg1NS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9Mzg4ND1zdGF0aWMgaW50IGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmKHN0cnVjdCB3bWkgKndtaSwgdTE2IGlmX2lkeCwgdTE2IGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM4OTktXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTUksIFwmIzM0O1dNSV9DT05ORUNUX0VWRU5USURcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozOTAwOlx0XHRyZXR1cm4gYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHdtaSwgZGF0YXAsIGxlbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzkwMS1cdGNhc2UgV01JX0RJU0NPTk5FQ1RfRVZFTlRJRDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGg2a2wgV2ktRmkgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLiBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGNsZWFyIHRoYXQgaXQmIzM5O3MgdHJpZ2dlcmVkIGZyb20gYGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmYCwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHByb2Nlc3NpbmcgV01JIGV2ZW50cyBjb21pbmcgZGlyZWN0bHkgZnJvbSB0aGUgaGFyZHdhcmUg4oCTIG9yIGluIHRoaXMgY2FzZSwgdGhlIFVTQiBlbmRwb2ludC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IG1ha2VzIGl0IGRpcmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBmdXp6aW5nLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KClRoZSBwYXRjaCBpdHNlbGYgYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpc3N1ZSBieSBpbXBsZW1lbnRpbmcgbGVuZ3RoIGNoZWNrcy4gU291bmRzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYW5kIGZ1bmN0aW9uYWwgZml4LiBHaXZlbiB0aGUgZGlyZWN0IFVTQiBleHBvc3VyZSwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIHB1dHRpbmcgdGhyb3VnaCBpdHMgcGFjZXMgd2l0aCBzb21lIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlIGhhdmUgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAgd2hpY2ggaXMgdGhlIGluaXRpYWwgZW50cnkgcG9pbnQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIHBhdGhzLiBMZXQmIzM5O3Mgc2VlIGlmIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIGlzIGEgaG90IHBhdGguIEl0JiMzOTtzIGhhbmRsaW5nIHRoZSBgV01JX0NPTk5FQ1RfRVZFTlRJRGAgZXZlbnQsIHdoaWNoIG9jY3VycyBkdXJpbmcgY29ubmVjdGlvbi4gTm90IGEgY29uc3RhbnQgc3RyZWFtIG9mIHRyYWZmaWMsIHNvIG5vdCBhIGhpZ2gtZnJlcXVlbmN5IHRhcmdldC4gSW50ZXJlc3RpbmdseSwgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBnZXRzIGNhbGxlZCBmcm9tIGBhdGg2a2xfY29ubmVjdF9ldmVudGAsIGFuZCAqdGhhdCogaXMgY2FsbGVkIGZyb20gYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAuIE1ha2VzIHNlbnNlLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3MgYXJlIGVuYWJsZWQgZm9yIG15IHRlc3RpbmcuIEl0IGxvb2tzIGxpa2UgSSYjMzk7bGwgbmVlZCBgQVRINktMYCBhbmQgc3BlY2lmaWNhbGx5IGBBVEg2S0xfVVNCYCBlbmFibGVkIHRvIHJlcHJvZHVjZSB0aGlzIG9uIG15IHNldHVwLiBUaW1lIHRvIHZlcmlmeSB0aGUgS2NvbmZpZyBzZXR0aW5ncyBmb3IgYEFUSDZLTF9VU0JgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRINktMX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0xND1jb25maWcgQVRINktMX1NESU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjU6Y29uZmlnIEFUSDZLTF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoNmtsIFVTQiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTQzCgkJCQkJCQlvdXRwdXQ6IDExMgoJCQkJCQkJdGhvdWdodHM6IDExMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIEFUSDZLTCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYGF0aDZrbGAgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHllcywgYEFUSDZLTF9VU0JgICpkb2VzKiBkZXBlbmQgb24gYEFUSDZLTGAsIHNvIHRob3NlIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIHRhcmdldC4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBxdWlja2x5IGNoZWNrZWQgaWYgYEFUSDZLTF9TRElPYCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LCBnaXZlbiBTeXprYWxsZXImIzM5O3MgU0RJTyBzdXBwb3J0LCBidXQgVVNCIGlzIGRlZmluaXRlbHkgdGhlIHByaW1hcnkgcGF0aCBoZXJlLiBUaGVyZWZvcmUsIEkgd2lsbCBpbmNsdWRlIGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAgaW4gdGhlIGNvbmZpZ3VyYXRpb25zLgoKTm93LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyBhZGRyZXNzaW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGR1cmluZyB0aGUgcGFyc2luZyBvZiBXTUkgY29ubmVjdCBldmVudHMuIFRoZSBtb2RpZmljYXRpb25zIGZvY3VzIG9uIHRoZSBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBhbmQgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBmdW5jdGlvbnMuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIHRoZXJlIGFyZSBub3cgbGVuZ3RoIGNoZWNrcyB0byBlbnN1cmUgdGhlIGRhdGEgc3RydWN0dXJlcyBhcmUgcHJvcGVybHkgc2l6ZWQgYmVmb3JlIGFjY2Vzc2luZyB0aGVpciBtZW1iZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpcyBhZGRpbmcgYm91bmRzIGNoZWNrcyB0byBwcmV2ZW50IHJlYWRzIGFuZCB3cml0ZXMgb3V0c2lkZSB0aGUgYWxsb2NhdGVkIG1lbW9yeSBidWZmZXJzLgoKR2l2ZW4gdGhpcyB1bmRlcnN0YW5kaW5nLCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGZpeCBhbmQsIGNyaXRpY2FsbHksIGl0JiMzOTtzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuIFRoZSB1cGRhdGVkIGxlbmd0aCBjaGVja3MgaW4gYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAgcHJldmVudCByZWFkaW5nIGJleW9uZCB0aGUgZGF0YSBwcm92aWRlZCwgYW5kIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgbm93IHZlcmlmaWVzIGJ1ZmZlciBzaXplcyBhcyB3ZWxsLgoKVGhlcmVmb3JlLCBmb3IgdGhpcyBmdXp6aW5nIHRhc2ssIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nOiB0cnVlYCwgYW5kIHRoZSBgRm9jdXNTeW1ib2xzYCB0byBpbmNsdWRlIHRoZSB0d28gZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkOiBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBhbmQgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YC4gVGhlIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAuIFRoZSBgUmVhc29uaW5nYCB3aWxsIGJlOiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcyB3aGVuIHBhcnNpbmcgV01JIGNvbm5lY3QgZXZlbnRzIGluIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRINktMJiMzNDssCiAgICAmIzM0O0FUSDZLTF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngmIzM0OywKICAgICYjMzQ7YXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMgd2hlbiBwYXJzaW5nIFdNSSBjb25uZWN0IGV2ZW50cyBpbiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4JiMzNDssCiAgICAmIzM0O2F0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjU6NDQuNDE5OTMxNzIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE1MTY3NzE0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4XCIsXG4gICAgXCJhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDoyNTo0NC40MTk5Mzc4MjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDUxMzc0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ0MDQ4NGIyYmFjN2UyN2ZiMGQ1YjE0ZWZkNzRiMjgzNWViN2ZhYTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMDA6MjU6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXFxuaW5kZXggY2MwZjJjNDVmYzNhMzAuLjYyZjY2M2MwZGFhMjY1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xcbkBAIC03NTQsNiArNzU0LDExIEBAIHZvaWQgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTE2IGNoYW5uZWwsXFxuIFxcdHU4ICphc3NvY19yZXNwX2llID0gYXNzb2NfaW5mbyArIGJlYWNvbl9pZV9sZW4gKyBhc3NvY19yZXFfbGVuICtcXG4gXFx0ICAgIGFzc29jX3Jlc3BfaWVfb2Zmc2V0O1xcbiBcXG4rXFx0aWYgKGFzc29jX3JlcV9sZW4gXFx1MDAzYyBhc3NvY19yZXFfaWVfb2Zmc2V0KVxcbitcXHRcXHRhc3NvY19yZXFfbGVuID0gYXNzb2NfcmVxX2llX29mZnNldDtcXG4rXFx0aWYgKGFzc29jX3Jlc3BfbGVuIFxcdTAwM2MgYXNzb2NfcmVzcF9pZV9vZmZzZXQpXFxuK1xcdFxcdGFzc29jX3Jlc3BfbGVuID0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7XFxuK1xcbiBcXHRhc3NvY19yZXFfbGVuIC09IGFzc29jX3JlcV9pZV9vZmZzZXQ7XFxuIFxcdGFzc29jX3Jlc3BfbGVuIC09IGFzc29jX3Jlc3BfaWVfb2Zmc2V0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcXG5pbmRleCA3MjYxMWEyY2ViOWQ4ZS4uZmJmZDc0MTU0ZDEyZmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcXG5AQCAtODYyLDYgKzg2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG4gXFxuIFxcdGV2ID0gKHN0cnVjdCB3bWlfY29ubmVjdF9ldmVudCAqKSBkYXRhcDtcXG4gXFxuK1xcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKmV2KSArIGV2LVxcdTAwM2ViZWFjb25faWVfbGVuICsgZXYtXFx1MDAzZWFzc29jX3JlcV9sZW4gK1xcbitcXHQgICAgZXYtXFx1MDAzZWFzc29jX3Jlc3BfbGVuKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGlmICh2aWYtXFx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xcbiBcXHRcXHQvKiBBUCBtb2RlIHN0YXJ0L1NUQSBjb25uZWN0ZWQgZXZlbnQgKi9cXG4gXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZpZi1cXHUwMDNlbmRldjtcXG5AQCAtOTEzLDcgKzkxNyw4IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxcbiBcXHR3aGlsZSAocGllIFxcdTAwM2MgcGVpZSkge1xcbiBcXHRcXHRzd2l0Y2ggKCpwaWUpIHtcXG4gXFx0XFx0Y2FzZSBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUM6XFxuLVxcdFxcdFxcdGlmIChwaWVbMV0gXFx1MDAzZSAzIFxcdTAwMjZcXHUwMDI2IHBpZVsyXSA9PSAweDAwIFxcdTAwMjZcXHUwMDI2IHBpZVszXSA9PSAweDUwIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdGlmIChwaWUgKyA3IFxcdTAwM2M9IHBlaWUgXFx1MDAyNlxcdTAwMjYgcGllWzFdIFxcdTAwM2UgMyBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgcGllWzJdID09IDB4MDAgXFx1MDAyNlxcdTAwMjYgcGllWzNdID09IDB4NTAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHBpZVs0XSA9PSAweGYyIFxcdTAwMjZcXHUwMDI2IHBpZVs1XSA9PSBXTU1fT1VJX1RZUEUpIHtcXG4gXFx0XFx0XFx0XFx0LyogV01NIE9VVCAoMDA6NTA6RjIpICovXFxuIFxcdFxcdFxcdFxcdGlmIChwaWVbMV0gXFx1MDAzZSA1IFxcdTAwMjZcXHUwMDI2XFxuQEAgLTkyNiw2ICs5MzEsOSBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG4gXFx0XFx0aWYgKHdtaS1cXHUwMDNlaXNfd21tX2VuYWJsZWQpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4rXFx0XFx0aWYgKHBpZSArIDEgXFx1MDAzZT0gcGVpZSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcbiBcXHRcXHRwaWUgKz0gcGllWzFdICsgMjtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjU6NDQuODMxMzAwMzQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTEwNTM5MzQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg2S0xcIixcbiAgICBcIkFUSDZLTF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhcIixcbiAgICBcImF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMgd2hlbiBwYXJzaW5nIFdNSSBjb25uZWN0IGV2ZW50cyBpbiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDQwNDg0YjJiYWM3ZTI3ZmIwZDViMTRlZmQ3NGIyODM1ZWI3ZmFhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjI1OjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG5pbmRleCBjYzBmMmM0NWZjM2EzMC4uNjJmNjYzYzBkYWEyNjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuQEAgLTc1NCw2ICs3NTQsMTEgQEAgdm9pZCBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MTYgY2hhbm5lbCxcbiBcdHU4ICphc3NvY19yZXNwX2llID0gYXNzb2NfaW5mbyArIGJlYWNvbl9pZV9sZW4gKyBhc3NvY19yZXFfbGVuICtcbiBcdCAgICBhc3NvY19yZXNwX2llX29mZnNldDtcbiBcbitcdGlmIChhc3NvY19yZXFfbGVuIFx1MDAzYyBhc3NvY19yZXFfaWVfb2Zmc2V0KVxuK1x0XHRhc3NvY19yZXFfbGVuID0gYXNzb2NfcmVxX2llX29mZnNldDtcbitcdGlmIChhc3NvY19yZXNwX2xlbiBcdTAwM2MgYXNzb2NfcmVzcF9pZV9vZmZzZXQpXG4rXHRcdGFzc29jX3Jlc3BfbGVuID0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7XG4rXG4gXHRhc3NvY19yZXFfbGVuIC09IGFzc29jX3JlcV9pZV9vZmZzZXQ7XG4gXHRhc3NvY19yZXNwX2xlbiAtPSBhc3NvY19yZXNwX2llX29mZnNldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xuaW5kZXggNzI2MTFhMmNlYjlkOGUuLmZiZmQ3NDE1NGQxMmZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xuQEAgLTg2Miw2ICs4NjIsMTAgQEAgc3RhdGljIGludCBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXG4gXHRldiA9IChzdHJ1Y3Qgd21pX2Nvbm5lY3RfZXZlbnQgKikgZGF0YXA7XG4gXG4rXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmV2KSArIGV2LVx1MDAzZWJlYWNvbl9pZV9sZW4gKyBldi1cdTAwM2Vhc3NvY19yZXFfbGVuICtcbitcdCAgICBldi1cdTAwM2Vhc3NvY19yZXNwX2xlbilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRpZiAodmlmLVx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xuIFx0XHQvKiBBUCBtb2RlIHN0YXJ0L1NUQSBjb25uZWN0ZWQgZXZlbnQgKi9cbiBcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZpZi1cdTAwM2VuZGV2O1xuQEAgLTkxMyw3ICs5MTcsOCBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbiBcdHdoaWxlIChwaWUgXHUwMDNjIHBlaWUpIHtcbiBcdFx0c3dpdGNoICgqcGllKSB7XG4gXHRcdGNhc2UgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDOlxuLVx0XHRcdGlmIChwaWVbMV0gXHUwMDNlIDMgXHUwMDI2XHUwMDI2IHBpZVsyXSA9PSAweDAwIFx1MDAyNlx1MDAyNiBwaWVbM10gPT0gMHg1MCBcdTAwMjZcdTAwMjZcbitcdFx0XHRpZiAocGllICsgNyBcdTAwM2M9IHBlaWUgXHUwMDI2XHUwMDI2IHBpZVsxXSBcdTAwM2UgMyBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgcGllWzJdID09IDB4MDAgXHUwMDI2XHUwMDI2IHBpZVszXSA9PSAweDUwIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBwaWVbNF0gPT0gMHhmMiBcdTAwMjZcdTAwMjYgcGllWzVdID09IFdNTV9PVUlfVFlQRSkge1xuIFx0XHRcdFx0LyogV01NIE9VVCAoMDA6NTA6RjIpICovXG4gXHRcdFx0XHRpZiAocGllWzFdIFx1MDAzZSA1IFx1MDAyNlx1MDAyNlxuQEAgLTkyNiw2ICs5MzEsOSBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbiBcdFx0aWYgKHdtaS1cdTAwM2Vpc193bW1fZW5hYmxlZClcbiBcdFx0XHRicmVhaztcbiBcbitcdFx0aWYgKHBpZSArIDEgXHUwMDNlPSBwZWllKVxuK1x0XHRcdGJyZWFrO1xuK1xuIFx0XHRwaWUgKz0gcGllWzFdICsgMjtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjI1OjQ0LjgzMTMwMTkyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4ODc1OTgwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBhbiBhdGg2a2wgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgc29tZSBtb2RpZmljYXRpb25zIHRvIGBhdGg2a2wvY2ZnODAyMTEuY2AgYW5kIGBhdGg2a2wvd21pLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBsZW5ndGggY2hlY2tzIHRvIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgYW5kIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgLiBJbnRlcmVzdGluZy4uLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGEgcXVlc3Rpb246IGlzIHRoaXMgZHJpdmVyLCBgYXRoNmtsYCwgZnV6emFibGU/XG5cbkdlbmVyYWxseSwgSSdtIGNhdXRpb3VzIGFib3V0IGZ1enppbmcgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVycy4gVGhleSdyZSBvZnRlbiB0cmlja3ksIHVubGVzcyB0aGV5J3JlIGJ1aWx0IG9uIHRvcCBvZiBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgdGhpcyBpcyB0aGUgYXRoNmtsIGRyaXZlciwgZGVzaWduZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlLCBzbyB0aGUgdXN1YWwgY2F2ZWF0cyBhcHBseS5cblxuV2FpdCwgaG9sZCBvbi4uLiBTeXprYWxsZXIgKmNhbiogZnV6eiB3aXJlbGVzcyBkcml2ZXJzIHZpYSBgbWFjODAyMTFfaHdzaW1gLCByaWdodD8gQnV0LCBhaCwgdGhhdCdzIHRoZSBwcm9ibGVtLiBBdGg2a2wgaXMgYSBmdWxsbWFjIGRyaXZlciDigJMgbm90IGEgYG1hYzgwMjExYCBkcml2ZXIuIFRoYXQgY2hhbmdlcyB0aGluZ3MuXG5cbkNhbiBpdCBiZSBmdXp6ZWQgdGhyb3VnaCBhIFVTQiBpbnRlcmZhY2U/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LiBMZXQgbWUgY2hlY2sgaWYgdGhlIGRyaXZlciBldmVuIHN1cHBvcnRzIHRoYXQuIEknbGwgbmVlZCB0byBzZWUgaWYgYSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuY2AgZmlsZSBleGlzdHMuIExldCdzIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTUxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjU6NDkuNzE4OTAxOTUxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTI4MzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDZrbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMDQ0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9Mj1jb25maWcgQVRINktMXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTAtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxMTpcXHQgIGF0aDZrbF9jb3JlLiBQbGVhc2Ugbm90ZSB0aGF0IEFSNjAwMiBhbmQgQVI2MDAxIGFyZSBub3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTItXFx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MTQ9Y29uZmlnIEFUSDZLTF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE1OlxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTE2LVxcdGRlcGVuZHMgb24gQVRINktMXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjAtXFx0ICBBdGhlcm9zIEFSNjAwMyBhbmQgQVI2MDA0IGNoaXBzZXRzIHJ1bm5pbmcgb3ZlciBTRElPLiBJZiB5b3VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjE6XFx0ICBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0aDZrbF9zZGlvLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMi1cXHQgIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI1PWNvbmZpZyBBVEg2S0xfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI2OlxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zMi1cXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcXHQgIGNhbGxlZCBhdGg2a2xfdXNiLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MzU9Y29uZmlnIEFUSDZLTF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozNjpcXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM3LVxcdGRlcGVuZHMgb24gQVRINktMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6Mzk6XFx0ICBFbmFibGVzIGF0aDZrbCBkZWJ1ZyBzdXBwb3J0LCBpbmNsdWRpbmcgZGVidWcgbWVzc2FnZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDAtXFx0ICBlbmFibGVkIHdpdGggZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyIGFuZCBkZWJ1Z2ZzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NDU9Y29uZmlnIEFUSDZLTF9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ2OlxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00OS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjUwOlxcdCAgU2VsZWN0IHRoaXMgdG8gYXRoNmtsIHVzZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlIHdoaWNoLCBmb3JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTEtXFx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz01Nz1jb25maWcgQVRINktMX1JFR0RPTUFJTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1ODpcXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCByZWdkb21haW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTktXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRINktMKSArPSBhdGg2a2xfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNjphdGg2a2xfY29yZS15ICs9IGRlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI3OmF0aDZrbF9jb3JlLXkgKz0gaGlmLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI4OmF0aDZrbF9jb3JlLXkgKz0gaHRjX21ib3gub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjk6YXRoNmtsX2NvcmUteSArPSBodGNfcGlwZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMDphdGg2a2xfY29yZS15ICs9IGJtaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMTphdGg2a2xfY29yZS15ICs9IGNmZzgwMjExLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMyOmF0aDZrbF9jb3JlLXkgKz0gaW5pdC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMzphdGg2a2xfY29yZS15ICs9IG1haW4ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzQ6YXRoNmtsX2NvcmUteSArPSB0eHJ4Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM1OmF0aDZrbF9jb3JlLXkgKz0gd21pLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM2OmF0aDZrbF9jb3JlLXkgKz0gY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNzphdGg2a2xfY29yZS15ICs9IHJlY292ZXJ5Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzk6YXRoNmtsX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDA6YXRoNmtsX2NvcmUtJChDT05GSUdfQVRINktMX1RSQUNJTkcpICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX0FUSDZLTF9TRElPKSArPSBhdGg2a2xfc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MzphdGg2a2xfc2Rpby15ICs9IHNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQVRINktMX1VTQikgKz0gYXRoNmtsX3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NjphdGg2a2xfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzOmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4LVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjk6XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBkb25lIHNraXBwZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVxcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byBzZW5kIGJtaSBkb25lOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQ6aW50IGF0aDZrbF9ibWlfZ2V0X3RhcmdldF9pbmZvKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU1OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCAodTggKilcXHUwMDI2Y2lkLCBzaXplb2YoY2lkKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Ni1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gc2VuZCBnZXQgdGFyZ2V0IGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjEtXFx0aWYgKGFyLVxcdTAwM2VoaWZfdHlwZSA9PSBBVEg2S0xfSElGX1RZUEVfVVNCKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2MjpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKil0YXJnX2luZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02My1cXHRcXHRcXHRcXHRcXHQgIHNpemVvZigqdGFyZ19pbmZvKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NjU6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgKHU4ICopXFx1MDAyNnRhcmdfaW5mby1cXHUwMDNldmVyc2lvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY2LVxcdFxcdFxcdFxcdHNpemVvZih0YXJnX2luZm8tXFx1MDAzZXZlcnNpb24pKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjktXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NzA6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlY3YgdGFyZ2V0IGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzUtXFx0XFx0LyogRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIGFyZSBpbiB0aGUgVGFyZ2V0J3MgdGFyZ19pbmZvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3NjpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzctXFx0XFx0XFx0XFx0ICAgKHU4ICopXFx1MDAyNnRhcmdfaW5mby1cXHUwMDNlYnl0ZV9jb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzktXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6ODA6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwidW5hYmxlIHRvIHJlYWQgdGFyZ2V0IGluZm8gYnl0ZSBjb3VudDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04MS1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04OS1cXHRcXHRpZiAobGUzMl90b19jcHUodGFyZ19pbmZvLVxcdTAwM2VieXRlX2NvdW50KSAhPSBzaXplb2YoKnRhcmdfaW5mbykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjkwOlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIm1pc21hdGNoZWQgYnl0ZSBjb3VudCAlZCB2cy4gZXhwZWN0ZWQgJXpkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTEtXFx0XFx0XFx0XFx0ICAgbGUzMl90b19jcHUodGFyZ19pbmZvLVxcdTAwM2VieXRlX2NvdW50KSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTYtXFx0XFx0LyogUmVhZCB0aGUgcmVtYWluZGVyIG9mIHRoZSB0YXJnX2luZm8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjk3OlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy05OC1cXHRcXHRcXHRcXHQgICAoKHU4ICopdGFyZ19pbmZvKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwMy1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMDQ6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlYWQgdGFyZ2V0IGluZm8gKCVkIGJ5dGVzKTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDUtXFx0XFx0XFx0XFx0ICAgdGFyZ19pbmZvLVxcdTAwM2VieXRlX2NvdW50LCByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMTA6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcInRhcmdldCBpbmZvICh2ZXI6IDB4JXggdHlwZTogMHgleClcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTEtXFx0XFx0ICAgdGFyZ19pbmZvLVxcdTAwM2V2ZXJzaW9uLCB0YXJnX2luZm8tXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMTY6aW50IGF0aDZrbF9ibWlfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMjQtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMjU6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEyNi1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTM2OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMzctXFx0XFx0ICAgXFxcImJtaSByZWFkIG1lbW9yeTogZGV2aWNlOiBhZGRyOiAweCV4LCBsZW46ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTM6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1NC1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTU6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU2LVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1OC1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTk6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCByeF9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTYwLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE2MTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTYyLVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE3MjppbnQgYXRoNmtsX2JtaV93cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xODItXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxODM6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE4NC1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTk3OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xOTgtXFx0XFx0ICAgXFxcImJtaSB3cml0ZSBtZW1vcnk6IGFkZHI6IDB4JXgsIGxlbjogJWRcXFxcblxcXCIsIGFkZHIsIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIyNzpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI4LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIyOTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzAtXFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjM5OmludCBhdGg2a2xfYm1pX2V4ZWN1dGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQ2LVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjQ3OlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNDgtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI1ODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIGV4ZWN1dGU6IGFkZHI6IDB4JXgsIHBhcmFtOiAlZClcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNTktXFx0XFx0ICAgYWRkciwgKnBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjY5OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjcxOlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNzU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBzaXplb2YoKnBhcmFtKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjc3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjg2OmludCBhdGg2a2xfYm1pX3NldF9hcHBfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjkzLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjk0OlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOTUtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMwNTpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIHNldCBhcHAgc3RhcnQ6IGFkZHI6IDB4JXhcXFxcblxcXCIsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMTM6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxNC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMTU6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzE2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMyMjppbnQgYXRoNmtsX2JtaV9yZWdfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjktXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMzA6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMzMS1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzQxOlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJibWkgcmVhZCBTT0MgcmVnOiBhZGRyOiAweCV4XFxcXG5cXFwiLCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzQ5OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzUxOlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBzaXplb2YoKnBhcmFtKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzY1OmludCBhdGg2a2xfYm1pX3JlZ193cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiBwYXJhbSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM3Mi1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM3MzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzc0LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozODQ6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4NS1cXHRcXHQgICBcXFwiYm1pIHdyaXRlIFNPQyByZWc6IGFkZHI6IDB4JXgsIHBhcmFtOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzk2OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzk4OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5OS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MDU6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphciwgdTggKmJ1ZiwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxNC1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQxNTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDE2LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MjY6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBzZW5kIExaIGRhdGE6IGxlbjogJWQpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDI3LVxcdFxcdCAgIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0MzpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ0LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0NTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDYtXFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU2OmludCBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjMtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NjQ6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2NS1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDc1OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NzYtXFx0XFx0ICAgXFxcImJtaSBMWiBzdHJlYW0gc3RhcnQ6IGFkZHI6IDB4JXgpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0ODU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4Ni1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0ODc6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHN0YXJ0IExaIHN0cmVhbSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4OC1cXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0OTU6aW50IGF0aDZrbF9ibWlfZmFzdF9kb3dubG9hZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MDI6XFx0cmV0ID0gYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoYXIsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTAzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxMTpcXHRyZXQgPSBhdGg2a2xfYm1pX2x6X2RhdGEoYXIsIGJ1ZiwgbGFzdF93b3JkX29mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTE1LVxcdGlmICh1bmFsaWduZWRfYnl0ZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MTY6XFx0XFx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCAodTggKilcXHUwMDI2bGFzdF93b3JkLCA0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIwLVxcdFxcdCAqIFRoaXMgc2VydmVzIG1haW5seSB0byBmbHVzaCBUYXJnZXQgY2FjaGVzLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTIxOlxcdFxcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCAweDAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUyNjp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MzE6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU0Njp2b2lkIGF0aDZrbF9ibWlfY2xlYW51cChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIxOTpzdHJ1Y3QgYXRoNmtsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjIwOnN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyMS1cXHRfX2xlMzIgYnl0ZV9jb3VudDsgICAvKiBzaXplIG9mIHRoaXMgc3RydWN0dXJlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIyNjojZGVmaW5lIGF0aDZrbF9ibWlfd3JpdGVfaGkzMihhciwgaXRlbSwgdmFsKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyNy1cXHQoe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjMwLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIzMTpcXHRcXHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzMi1cXHRcXHR2ID0gY3B1X3RvX2xlMzIodmFsKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzM6XFx0XFx0YXRoNmtsX2JtaV93cml0ZShhciwgYWRkciwgKHU4ICopIFxcdTAwMjZ2LCBzaXplb2YodikpO1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNC1cXHR9KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjM2OiNkZWZpbmUgYXRoNmtsX2JtaV9yZWFkX2hpMzIoYXIsIGl0ZW0sIHZhbClcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzctXFx0KHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI0Mi1cXHRcXHQodm9pZCkgKGNoZWNrX3R5cGUgPT0gdmFsKTtcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNDM6XFx0XFx0YWRkciA9IGF0aDZrbF9nZXRfaGlfaXRlbV9hZGRyKGFyLCBISV9JVEVNKGl0ZW0pKTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNDQ6XFx0XFx0cmV0ID0gYXRoNmtsX2JtaV9yZWFkKGFyLCBhZGRyLCAodTggKikgXFx1MDAyNnRtcCwgNCk7XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ1LVxcdFxcdGlmICghcmV0KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUwOmludCBhdGg2a2xfYm1pX2luaXQoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUxOnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1Mjp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU0OmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU1OmludCBhdGg2a2xfYm1pX2dldF90YXJnZXRfaW5mbyhzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NjpcXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDZrbF9ibWlfdGFyZ2V0X2luZm8gKnRhcmdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTc6aW50IGF0aDZrbF9ibWlfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU4OmludCBhdGg2a2xfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTk6aW50IGF0aDZrbF9ibWlfZXhlY3V0ZShzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2MC1cXHRcXHQgICAgICAgdTMyIGFkZHIsIHUzMiAqcGFyYW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjYxOmludCBhdGg2a2xfYm1pX3NldF9hcHBfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjItXFx0XFx0XFx0ICAgICB1MzIgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjM6aW50IGF0aDZrbF9ibWlfcmVnX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NDppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY1OmludCBhdGg2a2xfYm1pX2x6X2RhdGEoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjYtXFx0XFx0ICAgICAgIHU4ICpidWYsIHUzMiBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY3OmludCBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2OC1cXHRcXHRcXHQgICAgICAgdTMyIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY5OmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNzAtXFx0XFx0XFx0ICAgICB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjU4OnN0cnVjdCBhdGg2a2xfY2ZnODAyMTFfbWF0Y2hfcHJvYmVfc3NpZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTU5LVxcdHN0cnVjdCBjZmc4MDIxMV9zc2lkIHNzaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjYzOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3JhdGUgYXRoNmtsX3JhdGVzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTY0LVxcdFJBVEVUQUJfRU5UKDEwLCAweDEsIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3ODojZGVmaW5lIGF0aDZrbF9hX3JhdGVzICAgICAoYXRoNmtsX3JhdGVzICsgNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzk6I2RlZmluZSBhdGg2a2xfYV9yYXRlc19zaXplICAgIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODA6I2RlZmluZSBhdGg2a2xfZ19yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyArIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgxOiNkZWZpbmUgYXRoNmtsX2dfcmF0ZXNfc2l6ZSAgICAxMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODM6I2RlZmluZSBhdGg2a2xfZ19odGNhcCBJRUVFODAyMTFfSFRfQ0FQX1NHSV8yMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4NDojZGVmaW5lIGF0aDZrbF9hX2h0Y2FwIChJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSF8yMF80MCB8IFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODUtXFx0XFx0XFx0SUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcXHRcXHQgfCBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjg4OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgYXRoNmtsXzJnaHpfY2hhbm5lbHNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODktXFx0Q0hBTjJHKDEsIDI0MTIsIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTA1OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgYXRoNmtsXzVnaHpfYV9jaGFubmVsc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMDYtXFx0Q0hBTjVHKDM2LCAwKSwgQ0hBTjVHKDQwLCAwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNTpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF8yZ2h6ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjY6XFx0Lm5fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGF0aDZrbF8yZ2h6X2NoYW5uZWxzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI3OlxcdC5jaGFubmVscyA9IGF0aDZrbF8yZ2h6X2NoYW5uZWxzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjg6XFx0Lm5fYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlc19zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjk6XFx0LmJpdHJhdGVzID0gYXRoNmtsX2dfcmF0ZXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzMDpcXHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9nX2h0Y2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMzEtXFx0Lmh0X2NhcC5odF9zdXBwb3J0ZWQgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM0OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kIGF0aDZrbF9iYW5kXzVnaHogPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNTpcXHQubl9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoNmtsXzVnaHpfYV9jaGFubmVscyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNjpcXHQuY2hhbm5lbHMgPSBhdGg2a2xfNWdoel9hX2NoYW5uZWxzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzc6XFx0Lm5fYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlc19zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzg6XFx0LmJpdHJhdGVzID0gYXRoNmtsX2FfcmF0ZXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzOTpcXHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9hX2h0Y2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDAtXFx0Lmh0X2NhcC5odF9zdXBwb3J0ZWQgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0NS0vKiByZXR1cm5zIHRydWUgaWYgc2NoZWR1bGVkIHNjYW4gd2FzIHN0b3BwZWQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTQ2OnN0YXRpYyBib29sIF9fYXRoNmtsX2NmZzgwMjExX3NzY2FuX3N0b3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTQ4OlxcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTU4OlxcdGF0aDZrbF93bWlfZW5hYmxlX3NjaGVkX3NjYW5fY21kKGFyLVxcdTAwM2V3bWksIHZpZi1cXHUwMDNlZndfdmlmX2lkeCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjM6c3RhdGljIHZvaWQgYXRoNmtsX2NmZzgwMjExX3NzY2FuX2Rpc2FibGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTY1OlxcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY2LVxcdGJvb2wgc3RvcHBlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjg6XFx0c3RvcHBlZCA9IF9fYXRoNmtsX2NmZzgwMjExX3NzY2FuX3N0b3AodmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc2OnN0YXRpYyBpbnQgYXRoNmtsX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzctXFx0XFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfd3BhX3ZlcnNpb25zIHdwYV92ZXJzaW9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNzk6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwiJXM6ICV1XFxcXG5cXFwiLCBfX2Z1bmNfXywgd3BhX3ZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg3LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE4ODpcXHRcXHRhdGg2a2xfZXJyKFxcXCIlczogJXUgbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18sIHdwYV92ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg5LVxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxOTU6c3RhdGljIGludCBhdGg2a2xfc2V0X2F1dGhfdHlwZShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTYtXFx0XFx0XFx0XFx0ZW51bSBubDgwMjExX2F1dGhfdHlwZSBhdXRoX3R5cGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE5ODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCIlczogMHgleFxcXFxuXFxcIiwgX19mdW5jX18sIGF1dGhfdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMTUtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjE2OlxcdFxcdGF0aDZrbF9lcnIoXFxcIiVzOiAweCV4IG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIsIF9fZnVuY19fLCBhdXRoX3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMTctXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjIyMzpzdGF0aWMgaW50IGF0aDZrbF9zZXRfY2lwaGVyKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUzMiBjaXBoZXIsIGJvb2wgdWNhc3QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMjk6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwiJXM6IGNpcGhlciAweCV4LCB1Y2FzdCAldVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjMwLVxcdFxcdCAgIF9fZnVuY19fLCBjaXBoZXIsIHVjYXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTgtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjU5OlxcdFxcdGF0aDZrbF9lcnIoXFxcImNpcGhlciAweCV4IG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIsIGNpcGhlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2MC1cXHRcXHRyZXR1cm4gLUVOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjY2OnN0YXRpYyB2b2lkIGF0aDZrbF9zZXRfa2V5X21nbXQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGtleV9tZ210KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyNjg6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwiJXM6IDB4JXhcXFxcblxcXCIsIF9fZnVuY19fLCBrZXlfbWdtdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI4NTpzdGF0aWMgYm9vbCBhdGg2a2xfY2ZnODAyMTFfcmVhZHkoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg3OlxcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODktXFx0aWYgKCF0ZXN0X2JpdChXTUlfUkVBRFksIFxcdTAwMjZhci1cXHUwMDNlZmxhZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjkwOlxcdFxcdGF0aDZrbF9lcnIoXFxcIndtaSBpcyBub3QgcmVhZHlcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTEtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI5NC1cXHRpZiAoIXRlc3RfYml0KFdMQU5fRU5BQkxFRCwgXFx1MDAyNnZpZi1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI5NTpcXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCJ3bGFuIGRpc2FibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjk2LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwMjpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfd3BhX2llKGNvbnN0IHU4ICpwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDk6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3Jzbl9pZShjb25zdCB1OCAqcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzE0OnN0YXRpYyBib29sIGF0aDZrbF9pc193cHNfaWUoY29uc3QgdTggKnBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyMjpzdGF0aWMgaW50IGF0aDZrbF9zZXRfYXNzb2NfcmVxX2llcyhzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCBjb25zdCB1OCAqaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjMtXFx0XFx0XFx0XFx0ICAgIHNpemVfdCBpZXNfbGVuKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDoyNTo0OS43ODM4MzcwNThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTUxNDI4NjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg2a2wgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBgYXRoNmtsYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgVVNCIGFuZCBTRElPIHZhcmlhbnRzOiBgQVRINktMX1VTQmAgYW5kIGBBVEg2S0xfU0RJT2AuIE15IGZpcnN0IHRob3VnaHQgaXM6IHNpbmNlIHdlIGhhdmUgYEFUSDZLTF9VU0JgIGF2YWlsYWJsZSwgdGhhdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyBpdCB3aXRoIHRoZSBkdW1teSBVU0IgZHJpdmVyLCBgdmhjaWAsIHdpdGhpbiBzeXprYWxsZXIuIFRoYXQncyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIGxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24uIElzIGBBVEg2S0xfVVNCYCBhbHJlYWR5IGVuYWJsZWQ/IE9yIGRvIEkgbmVlZCB0byBleHBsaWNpdGx5IGFkZCBpdCB0byB0aGUgYnVpbGQ/IEhtbSwgeWVzLCBsb29rcyBsaWtlIEkgbmVlZCB0byBlbnN1cmUgYm90aCBgQVRINktMX1VTQmAgYW5kIGBBVEg2S0xgIGFyZSBlbmFibGVkLiBHb29kLiBJJ2xsIG1ha2UgYSBub3RlIG9mIHRoYXQuXG5cbk5leHQsIEknbSBzZWVpbmcgdGhhdCB0aGUgcmVsZXZhbnQgcGF0Y2ggaXMgdG91Y2hpbmcgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBhbmQgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAuIEludGVyZXN0aW5nLiBUaG9zZSBldmVudHMgYXJlIGNyaXRpY2FsIGZvciBjb25uZWN0aXZpdHksIHNvIEkgZGVmaW5pdGVseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB0aGVyZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLiBJJ2xsIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzAxNiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDoyNTo1NC4zMzUyNjcyOTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2MTMwMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTY4MD1hdGg2a2xfYWRkX2Jzc19pZl9uZWVkZWQoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjczNjp2b2lkIGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03MzctXFx0XFx0XFx0XFx0ICAgdTggKmJzc2lkLCB1MTYgbGlzdGVuX2ludHZsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oPTMzPXZvaWQgYXRoNmtsX2NmZzgwMjExX3NjYW5fY29tcGxldGVfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgYm9vbCBhYm9ydGVkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmgtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oOjM1OnZvaWQgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTE2IGNoYW5uZWwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oLTM2LVxcdFxcdFxcdFxcdCAgIHU4ICpic3NpZCwgdTE2IGxpc3Rlbl9pbnR2bCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jPTYyOD12b2lkIGF0aDZrbF9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLCB1OCAqYnNzaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYy02MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM6NjM2OlxcdGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHZpZiwgY2hhbm5lbCwgYnNzaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNjM3LVxcdFxcdFxcdFxcdCAgICAgIGxpc3Rlbl9pbnQsIGJlYWNvbl9pbnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjI1OjU0LjM5Mjg4NTI0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyOTE3NTcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIGZ1bmN0aW9uLiBCYXNlZCBvbiB0aGUgbmFtZSBhbG9uZSwgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBoYW5kbGVyIGZvciBldmVudHMgcmVsYXRlZCB0byBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQsIGxpa2VseSB3aXRoaW4gdGhlIEF0aGVyb3MgNjAwMCBzZXJpZXMgd2lyZWxlc3MgZHJpdmVyLiBQcm9iYWJseSBhIFdNSSAoV2luZG93cyBNYW5hZ2VtZW50IEluc3RydW1lbnRhdGlvbikgZXZlbnQsIGltcGx5aW5nIGl0J3MgYSBtZWNoYW5pc20gZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgaG9zdCBhbmQgdGhlIGZpcm13YXJlLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgV2ktRmkgZHJpdmVycy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBoYW5kbGVyIHJlY2VpdmVzLCBob3cgaXQgcHJvY2Vzc2VzIHRoYXQgZGF0YSwgYW5kIHdoYXQgYWN0aW9ucyBpdCB0cmlnZ2Vycy4gSXMgaXQganVzdCBsb2dnaW5nLCBvciBkb2VzIGl0IGFjdHVhbGx5IGltcGFjdCBzdGF0ZSB0cmFuc2l0aW9ucyDigJMgYnJpbmdpbmcgdXAgdGhlIGludGVyZmFjZSwgYXNzaWduaW5nIGFuIElQIGFkZHJlc3MsIG9yIHBlcmhhcHMgbWFuYWdpbmcgc2VjdXJpdHkga2V5cz8gTGV0J3MgY2hlY2sgdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMuIEdvdHRhIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBidWZmZXIgb3ZlcmZsb3dzIGFuZCB0aGF0IHByb3BlciBlcnJvciBjaGVja2luZyBpcyBkb25lIGhlcmUuIFNlY3VyaXR5IGlzIHRoZSBtYWluIHByaW9yaXR5LiBJIGFtIHN1cmUgdGhhdCBJIGhhdmUgc2VlbiB0aGlzIGJlZm9yZS4gSXQgaGFzIHRvIGhhbmRsZSB0aGUgaW1wb3J0YW50IGJpdHMgYWJvdXQgd2lmaSBjb25uZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODAyNSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjI1OjU3LjkyMjA2NDEwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzg5NzkwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz04MzU9aW50IGF0aDZrbF93bWlfc2V0X3JvYW1fbW9kZV9jbWQoc3RydWN0IHdtaSAqd21pLCBlbnVtIHdtaV9yb2FtX21vZGUgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtODUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM6ODU0OnN0YXRpYyBpbnQgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtODU1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zODg0PXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9wcm9jX2V2ZW50c192aWYoc3RydWN0IHdtaSAqd21pLCB1MTYgaWZfaWR4LCB1MTYgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zODk5LVxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTUksIFxcXCJXTUlfQ09OTkVDVF9FVkVOVElEXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjM5MDA6XFx0XFx0cmV0dXJuIGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeCh3bWksIGRhdGFwLCBsZW4sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zOTAxLVxcdGNhc2UgV01JX0RJU0NPTk5FQ1RfRVZFTlRJRDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjU6NTcuOTc5OTY3NDUzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM3ODQxMzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGg2a2wgV2ktRmkgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93bi4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBmdW5jdGlvbiwgYW5kIGl0J3MgY2xlYXIgdGhhdCBpdCdzIHRyaWdnZXJlZCBmcm9tIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIFdNSSBldmVudHMgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGhhcmR3YXJlIOKAkyBvciBpbiB0aGlzIGNhc2UsIHRoZSBVU0IgZW5kcG9pbnQuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBtYWtlcyBpdCBkaXJlY3RseSByZWFjaGFibGUgdGhyb3VnaCBVU0IgZnV6emluZy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGlzc3VlIGJ5IGltcGxlbWVudGluZyBsZW5ndGggY2hlY2tzLiBTb3VuZHMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgZnVuY3Rpb25hbCBmaXguIEdpdmVuIHRoZSBkaXJlY3QgVVNCIGV4cG9zdXJlLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggcHV0dGluZyB0aHJvdWdoIGl0cyBwYWNlcyB3aXRoIHNvbWUgZnV6emluZy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlIGhhdmUgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAgd2hpY2ggaXMgdGhlIGluaXRpYWwgZW50cnkgcG9pbnQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aHMuIExldCdzIHNlZSBpZiBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBpcyBhIGhvdCBwYXRoLiBJdCdzIGhhbmRsaW5nIHRoZSBgV01JX0NPTk5FQ1RfRVZFTlRJRGAgZXZlbnQsIHdoaWNoIG9jY3VycyBkdXJpbmcgY29ubmVjdGlvbi4gTm90IGEgY29uc3RhbnQgc3RyZWFtIG9mIHRyYWZmaWMsIHNvIG5vdCBhIGhpZ2gtZnJlcXVlbmN5IHRhcmdldC4gSW50ZXJlc3RpbmdseSwgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBnZXRzIGNhbGxlZCBmcm9tIGBhdGg2a2xfY29ubmVjdF9ldmVudGAsIGFuZCAqdGhhdCogaXMgY2FsbGVkIGZyb20gYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAuIE1ha2VzIHNlbnNlLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBhcmUgZW5hYmxlZCBmb3IgbXkgdGVzdGluZy4gSXQgbG9va3MgbGlrZSBJJ2xsIG5lZWQgYEFUSDZLTGAgYW5kIHNwZWNpZmljYWxseSBgQVRINktMX1VTQmAgZW5hYmxlZCB0byByZXByb2R1Y2UgdGhpcyBvbiBteSBzZXR1cC4gVGltZSB0byB2ZXJpZnkgdGhlIEtjb25maWcgc2V0dGluZ3MgZm9yIGBBVEg2S0xfVVNCYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3MTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjY6MDQuMzU4MzgzNjY4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTgwODcyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRINktMX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MTQ9Y29uZmlnIEFUSDZLTF9TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI1OmNvbmZpZyBBVEg2S0xfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjY6MDQuNDE0MTk3MjU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDQwNTI1MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBBVEg2S0wgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgYXRoNmtsYCBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgeWVzLCBgQVRINktMX1VTQmAgKmRvZXMqIGRlcGVuZCBvbiBgQVRINktMYCwgc28gdGhvc2UgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gdGFyZ2V0LiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHF1aWNrbHkgY2hlY2tlZCBpZiBgQVRINktMX1NESU9gIG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQsIGdpdmVuIFN5emthbGxlcidzIFNESU8gc3VwcG9ydCwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IHRoZSBwcmltYXJ5IHBhdGggaGVyZS4gVGhlcmVmb3JlLCBJIHdpbGwgaW5jbHVkZSBgQVRINktMYCBhbmQgYEFUSDZLTF9VU0JgIGluIHRoZSBjb25maWd1cmF0aW9ucy5cblxuTm93LCBsZXQncyBkaXNzZWN0IHRoZSBwYXRjaCBpdHNlbGYuIEl0J3MgYWRkcmVzc2luZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBkdXJpbmcgdGhlIHBhcnNpbmcgb2YgV01JIGNvbm5lY3QgZXZlbnRzLiBUaGUgbW9kaWZpY2F0aW9ucyBmb2N1cyBvbiB0aGUgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAgYW5kIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgZnVuY3Rpb25zLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCB0aGVyZSBhcmUgbm93IGxlbmd0aCBjaGVja3MgdG8gZW5zdXJlIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXJlIHByb3Blcmx5IHNpemVkIGJlZm9yZSBhY2Nlc3NpbmcgdGhlaXIgbWVtYmVycy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaXMgYWRkaW5nIGJvdW5kcyBjaGVja3MgdG8gcHJldmVudCByZWFkcyBhbmQgd3JpdGVzIG91dHNpZGUgdGhlIGFsbG9jYXRlZCBtZW1vcnkgYnVmZmVycy5cblxuR2l2ZW4gdGhpcyB1bmRlcnN0YW5kaW5nLCBpdCdzIGNsZWFyIHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogZml4IGFuZCwgY3JpdGljYWxseSwgaXQncyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiBUaGUgdXBkYXRlZCBsZW5ndGggY2hlY2tzIGluIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIHByZXZlbnQgcmVhZGluZyBiZXlvbmQgdGhlIGRhdGEgcHJvdmlkZWQsIGFuZCBgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRgIG5vdyB2ZXJpZmllcyBidWZmZXIgc2l6ZXMgYXMgd2VsbC5cblxuVGhlcmVmb3JlLCBmb3IgdGhpcyBmdXp6aW5nIHRhc2ssIEknbGwgc2V0IGBXb3J0aEZ1enppbmc6IHRydWVgLCBhbmQgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIGluY2x1ZGUgdGhlIHR3byBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQ6IGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIGFuZCBgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRgLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIHdpbGwgYmUgYEFUSDZLTGAgYW5kIGBBVEg2S0xfVVNCYC4gVGhlIGBSZWFzb25pbmdgIHdpbGwgYmU6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTQzLCJPdXRwdXRUb2tlbnMiOjExMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjY6MTUuODU0NzI1MTA1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5NjQyNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDZLTFwiLFxuICAgIFwiQVRINktMX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeFwiLFxuICAgIFwiYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcyB3aGVuIHBhcnNpbmcgV01JIGNvbm5lY3QgZXZlbnRzIGluIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg2S0xcIixcbiAgICBcIkFUSDZLTF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhcIixcbiAgICBcImF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMgd2hlbiBwYXJzaW5nIFdNSSBjb25uZWN0IGV2ZW50cyBpbiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflownb28h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 00:00:03 +0000 UTC FinishedAt: 2026-07-12 00:26:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH6KL", "ATH6KL_USB" ], "series_id": "6d6e49d8-018f-4ee1-a72e-bd0c27801138" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath6kl_wmi_connect_event_rx", "ath6kl_cfg80211_connect_event" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4JiMzNDssCiAgICAmIzM0O2F0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDQwNDg0YjJiYWM3ZTI3ZmIwZDViMTRlZmQ3NGIyODM1ZWI3ZmFhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjI1OjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuaW5kZXggY2MwZjJjNDVmYzNhMzAuLjYyZjY2M2MwZGFhMjY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcbkBAIC03NTQsNiAmIzQzOzc1NCwxMSBAQCB2b2lkIGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLFxuIFx0dTggKmFzc29jX3Jlc3BfaWUgPSBhc3NvY19pbmZvICYjNDM7IGJlYWNvbl9pZV9sZW4gJiM0MzsgYXNzb2NfcmVxX2xlbiAmIzQzO1xuIFx0ICAgIGFzc29jX3Jlc3BfaWVfb2Zmc2V0O1xuIFxuJiM0MztcdGlmIChhc3NvY19yZXFfbGVuIFx1MDAzYyBhc3NvY19yZXFfaWVfb2Zmc2V0KVxuJiM0MztcdFx0YXNzb2NfcmVxX2xlbiA9IGFzc29jX3JlcV9pZV9vZmZzZXQ7XG4mIzQzO1x0aWYgKGFzc29jX3Jlc3BfbGVuIFx1MDAzYyBhc3NvY19yZXNwX2llX29mZnNldClcbiYjNDM7XHRcdGFzc29jX3Jlc3BfbGVuID0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7XG4mIzQzO1xuIFx0YXNzb2NfcmVxX2xlbiAtPSBhc3NvY19yZXFfaWVfb2Zmc2V0O1xuIFx0YXNzb2NfcmVzcF9sZW4gLT0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbmluZGV4IDcyNjExYTJjZWI5ZDhlLi5mYmZkNzQxNTRkMTJmZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbkBAIC04NjIsNiAmIzQzOzg2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbiBcbiBcdGV2ID0gKHN0cnVjdCB3bWlfY29ubmVjdF9ldmVudCAqKSBkYXRhcDtcbiBcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmV2KSAmIzQzOyBldi1cdTAwM2ViZWFjb25faWVfbGVuICYjNDM7IGV2LVx1MDAzZWFzc29jX3JlcV9sZW4gJiM0MztcbiYjNDM7XHQgICAgZXYtXHUwMDNlYXNzb2NfcmVzcF9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRpZiAodmlmLVx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xuIFx0XHQvKiBBUCBtb2RlIHN0YXJ0L1NUQSBjb25uZWN0ZWQgZXZlbnQgKi9cbiBcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZpZi1cdTAwM2VuZGV2O1xuQEAgLTkxMyw3ICYjNDM7OTE3LDggQEAgc3RhdGljIGludCBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXHR3aGlsZSAocGllIFx1MDAzYyBwZWllKSB7XG4gXHRcdHN3aXRjaCAoKnBpZSkge1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQzpcbi1cdFx0XHRpZiAocGllWzFdIFx1MDAzZSAzIFx1MDAyNlx1MDAyNiBwaWVbMl0gPT0gMHgwMCBcdTAwMjZcdTAwMjYgcGllWzNdID09IDB4NTAgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmIChwaWUgJiM0MzsgNyBcdTAwM2M9IHBlaWUgXHUwMDI2XHUwMDI2IHBpZVsxXSBcdTAwM2UgMyBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgIHBpZVsyXSA9PSAweDAwIFx1MDAyNlx1MDAyNiBwaWVbM10gPT0gMHg1MCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgcGllWzRdID09IDB4ZjIgXHUwMDI2XHUwMDI2IHBpZVs1XSA9PSBXTU1fT1VJX1RZUEUpIHtcbiBcdFx0XHRcdC8qIFdNTSBPVVQgKDAwOjUwOkYyKSAqL1xuIFx0XHRcdFx0aWYgKHBpZVsxXSBcdTAwM2UgNSBcdTAwMjZcdTAwMjZcbkBAIC05MjYsNiAmIzQzOzkzMSw5IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxuIFx0XHRpZiAod21pLVx1MDAzZWlzX3dtbV9lbmFibGVkKVxuIFx0XHRcdGJyZWFrO1xuIFxuJiM0MztcdFx0aWYgKHBpZSAmIzQzOyAxIFx1MDAzZT0gcGVpZSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1xuIFx0XHRwaWUgJiM0Mzs9IHBpZVsxXSAmIzQzOyAyO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4JiMzNDssCiAgICAmIzM0O2F0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkNDA0ODRiMmJhYzdlMjdmYjBkNWIxNGVmZDc0YjI4MzVlYjdmYWExCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDA6MjU6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMKaW5kZXggY2MwZjJjNDVmYzNhMzAuLjYyZjY2M2MwZGFhMjY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jCkBAIC03NTQsNiAmIzQzOzc1NCwxMSBAQCB2b2lkIGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLAogCXU4ICphc3NvY19yZXNwX2llID0gYXNzb2NfaW5mbyAmIzQzOyBiZWFjb25faWVfbGVuICYjNDM7IGFzc29jX3JlcV9sZW4gJiM0MzsKIAkgICAgYXNzb2NfcmVzcF9pZV9vZmZzZXQ7CiAKJiM0MzsJaWYgKGFzc29jX3JlcV9sZW4gJmx0OyBhc3NvY19yZXFfaWVfb2Zmc2V0KQomIzQzOwkJYXNzb2NfcmVxX2xlbiA9IGFzc29jX3JlcV9pZV9vZmZzZXQ7CiYjNDM7CWlmIChhc3NvY19yZXNwX2xlbiAmbHQ7IGFzc29jX3Jlc3BfaWVfb2Zmc2V0KQomIzQzOwkJYXNzb2NfcmVzcF9sZW4gPSBhc3NvY19yZXNwX2llX29mZnNldDsKJiM0MzsKIAlhc3NvY19yZXFfbGVuIC09IGFzc29jX3JlcV9pZV9vZmZzZXQ7CiAJYXNzb2NfcmVzcF9sZW4gLT0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jCmluZGV4IDcyNjExYTJjZWI5ZDhlLi5mYmZkNzQxNTRkMTJmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jCkBAIC04NjIsNiAmIzQzOzg2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbiwKIAogCWV2ID0gKHN0cnVjdCB3bWlfY29ubmVjdF9ldmVudCAqKSBkYXRhcDsKIAomIzQzOwlpZiAobGVuICZsdDsgc2l6ZW9mKCpldikgJiM0MzsgZXYtJmd0O2JlYWNvbl9pZV9sZW4gJiM0MzsgZXYtJmd0O2Fzc29jX3JlcV9sZW4gJiM0MzsKJiM0MzsJICAgIGV2LSZndDthc3NvY19yZXNwX2xlbikKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCWlmICh2aWYtJmd0O253X3R5cGUgPT0gQVBfTkVUV09SSykgewogCQkvKiBBUCBtb2RlIHN0YXJ0L1NUQSBjb25uZWN0ZWQgZXZlbnQgKi8KIAkJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZpZi0mZ3Q7bmRldjsKQEAgLTkxMyw3ICYjNDM7OTE3LDggQEAgc3RhdGljIGludCBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sCiAJd2hpbGUgKHBpZSAmbHQ7IHBlaWUpIHsKIAkJc3dpdGNoICgqcGllKSB7CiAJCWNhc2UgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDOgotCQkJaWYgKHBpZVsxXSAmZ3Q7IDMgJmFtcDsmYW1wOyBwaWVbMl0gPT0gMHgwMCAmYW1wOyZhbXA7IHBpZVszXSA9PSAweDUwICZhbXA7JmFtcDsKJiM0MzsJCQlpZiAocGllICYjNDM7IDcgJmx0Oz0gcGVpZSAmYW1wOyZhbXA7IHBpZVsxXSAmZ3Q7IDMgJmFtcDsmYW1wOwomIzQzOwkJCSAgICBwaWVbMl0gPT0gMHgwMCAmYW1wOyZhbXA7IHBpZVszXSA9PSAweDUwICZhbXA7JmFtcDsKIAkJCSAgICBwaWVbNF0gPT0gMHhmMiAmYW1wOyZhbXA7IHBpZVs1XSA9PSBXTU1fT1VJX1RZUEUpIHsKIAkJCQkvKiBXTU0gT1VUICgwMDo1MDpGMikgKi8KIAkJCQlpZiAocGllWzFdICZndDsgNSAmYW1wOyZhbXA7CkBAIC05MjYsNiAmIzQzOzkzMSw5IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLAogCQlpZiAod21pLSZndDtpc193bW1fZW5hYmxlZCkKIAkJCWJyZWFrOwogCiYjNDM7CQlpZiAocGllICYjNDM7IDEgJmd0Oz0gcGVpZSkKJiM0MzsJCQlicmVhazsKJiM0MzsKIAkJcGllICYjNDM7PSBwaWVbMV0gJiM0MzsgMjsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enphYmlsaXR5IG9mIGFuIGF0aDZrbCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBzb21lIG1vZGlmaWNhdGlvbnMgdG8gYGF0aDZrbC9jZmc4MDIxMS5jYCBhbmQgYGF0aDZrbC93bWkuY2AuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGxlbmd0aCBjaGVja3MgdG8gYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBhbmQgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAuIEludGVyZXN0aW5nLi4uIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBxdWVzdGlvbjogaXMgdGhpcyBkcml2ZXIsIGBhdGg2a2xgLCBmdXp6YWJsZT8KCkdlbmVyYWxseSwgSSYjMzk7bSBjYXV0aW91cyBhYm91dCBmdXp6aW5nIGhhcmR3YXJlLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMuIFRoZXkmIzM5O3JlIG9mdGVuIHRyaWNreSwgdW5sZXNzIHRoZXkmIzM5O3JlIGJ1aWx0IG9uIHRvcCBvZiBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgdGhpcyBpcyB0aGUgYXRoNmtsIGRyaXZlciwgZGVzaWduZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlLCBzbyB0aGUgdXN1YWwgY2F2ZWF0cyBhcHBseS4KCldhaXQsIGhvbGQgb24uLi4gU3l6a2FsbGVyICpjYW4qIGZ1enogd2lyZWxlc3MgZHJpdmVycyB2aWEgYG1hYzgwMjExX2h3c2ltYCwgcmlnaHQ/IEJ1dCwgYWgsIHRoYXQmIzM5O3MgdGhlIHByb2JsZW0uIEF0aDZrbCBpcyBhIGZ1bGxtYWMgZHJpdmVyIOKAkyBub3QgYSBgbWFjODAyMTFgIGRyaXZlci4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4KCkNhbiBpdCBiZSBmdXp6ZWQgdGhyb3VnaCBhIFVTQiBpbnRlcmZhY2U/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZmlndXJlIG91dC4gTGV0IG1lIGNoZWNrIGlmIHRoZSBkcml2ZXIgZXZlbiBzdXBwb3J0cyB0aGF0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiBhIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jYCBmaWxlIGV4aXN0cy4gTGV0JiMzOTtzIGZpbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDZrbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTA0NCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI9Y29uZmlnIEFUSDZLTFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0xMC1cdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxMTpcdCAgYXRoNmtsX2NvcmUuIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTEyLVx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTE0PWNvbmZpZyBBVEg2S0xfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE1Olx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgU0RJTyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTYtXHRkZXBlbmRzIG9uIEFUSDZLTFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMC1cdCAgQXRoZXJvcyBBUjYwMDMgYW5kIEFSNjAwNCBjaGlwc2V0cyBydW5uaW5nIG92ZXIgU0RJTy4gSWYgeW91XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjE6XHQgIGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWQgYXRoNmtsX3NkaW8uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjItXHQgIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0yNT1jb25maWcgQVRINktMX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI2Olx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgVVNCIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNy1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTMyLVx0ICBVU0IuIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcdCAgY2FsbGVkIGF0aDZrbF91c2IuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MzU9Y29uZmlnIEFUSDZLTF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjM2Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNy1cdGRlcGVuZHMgb24gQVRINktMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMzgtXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6Mzk6XHQgIEVuYWJsZXMgYXRoNmtsIGRlYnVnIHN1cHBvcnQsIGluY2x1ZGluZyBkZWJ1ZyBtZXNzYWdlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQwLVx0ICBlbmFibGVkIHdpdGggZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyIGFuZCBkZWJ1Z2ZzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTQ1PWNvbmZpZyBBVEg2S0xfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ2Olx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDZrbCB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00Ny1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTQ5LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjUwOlx0ICBTZWxlY3QgdGhpcyB0byBhdGg2a2wgdXNlIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hpY2gsIGZvclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTUxLVx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NTc9Y29uZmlnIEFUSDZLTF9SRUdET01BSU5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1ODpcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg2a2wgcmVnZG9tYWluIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy01OS1cdGRlcGVuZHMgb24gQVRINktMXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0FUSDZLTCkgJiM0Mzs9IGF0aDZrbF9jb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MjY6YXRoNmtsX2NvcmUteSAmIzQzOz0gZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNzphdGg2a2xfY29yZS15ICYjNDM7PSBoaWYub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyODphdGg2a2xfY29yZS15ICYjNDM7PSBodGNfbWJveC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI5OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IGh0Y19waXBlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzA6YXRoNmtsX2NvcmUteSAmIzQzOz0gYm1pLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzE6YXRoNmtsX2NvcmUteSAmIzQzOz0gY2ZnODAyMTEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMjphdGg2a2xfY29yZS15ICYjNDM7PSBpbml0Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzM6YXRoNmtsX2NvcmUteSAmIzQzOz0gbWFpbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM0OmF0aDZrbF9jb3JlLXkgJiM0Mzs9IHR4cngub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNTphdGg2a2xfY29yZS15ICYjNDM7PSB3bWkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNjphdGg2a2xfY29yZS15ICYjNDM7PSBjb3JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzc6YXRoNmtsX2NvcmUteSAmIzQzOz0gcmVjb3Zlcnkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzk6YXRoNmtsX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDA6YXRoNmtsX2NvcmUtJChDT05GSUdfQVRINktMX1RSQUNJTkcpICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfQVRINktMX1NESU8pICYjNDM7PSBhdGg2a2xfc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjQzOmF0aDZrbF9zZGlvLXkgJiM0Mzs9IHNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0FUSDZLTF9VU0IpICYjNDM7PSBhdGg2a2xfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDY6YXRoNmtsX3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZS00Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMzppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5Olx0XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgZG9uZSBza2lwcGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1Olx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVx1MDAyNmNpZCwgc2l6ZW9mKGNpZCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzc6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHNlbmQgYm1pIGRvbmU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDppbnQgYXRoNmtsX2JtaV9nZXRfdGFyZ2V0X2luZm8oc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ1Olx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyLVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NTpcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCAodTggKilcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU3Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byBzZW5kIGdldCB0YXJnZXQgaW5mbzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU4LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjEtXHRpZiAoYXItXHUwMDNlaGlmX3R5cGUgPT0gQVRINktMX0hJRl9UWVBFX1VTQikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2MjpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgKHU4ICopdGFyZ19pbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02My1cdFx0XHRcdFx0ICBzaXplb2YoKnRhcmdfaW5mbykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02NC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjY1Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKilcdTAwMjZ0YXJnX2luZm8tXHUwMDNldmVyc2lvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjYtXHRcdFx0XHRzaXplb2YodGFyZ19pbmZvLVx1MDAzZXZlcnNpb24pKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY5LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3MDpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVjdiB0YXJnZXQgaW5mbzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTcxLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzUtXHRcdC8qIERldGVybWluZSBob3cgbWFueSBieXRlcyBhcmUgaW4gdGhlIFRhcmdldCYjMzk7cyB0YXJnX2luZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NzY6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTc3LVx0XHRcdFx0ICAgKHU4ICopXHUwMDI2dGFyZ19pbmZvLVx1MDAzZWJ5dGVfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy03OS1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo4MDpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O3VuYWJsZSB0byByZWFkIHRhcmdldCBpbmZvIGJ5dGUgY291bnQ6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04MS1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04OS1cdFx0aWYgKGxlMzJfdG9fY3B1KHRhcmdfaW5mby1cdTAwM2VieXRlX2NvdW50KSAhPSBzaXplb2YoKnRhcmdfaW5mbykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6OTA6XHRcdFx0YXRoNmtsX2VycihcJiMzNDttaXNtYXRjaGVkIGJ5dGUgY291bnQgJWQgdnMuIGV4cGVjdGVkICV6ZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTEtXHRcdFx0XHQgICBsZTMyX3RvX2NwdSh0YXJnX2luZm8tXHUwMDNlYnl0ZV9jb3VudCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy05Ni1cdFx0LyogUmVhZCB0aGUgcmVtYWluZGVyIG9mIHRoZSB0YXJnX2luZm8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6OTc6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTk4LVx0XHRcdFx0ICAgKCh1OCAqKXRhcmdfaW5mbykgJiM0Mztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwMy1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMDQ6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCB0YXJnZXQgaW5mbyAoJWQgYnl0ZXMpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTA1LVx0XHRcdFx0ICAgdGFyZ19pbmZvLVx1MDAzZWJ5dGVfY291bnQsIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjExMDpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFwmIzM0O3RhcmdldCBpbmZvICh2ZXI6IDB4JXggdHlwZTogMHgleClcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExMS1cdFx0ICAgdGFyZ19pbmZvLVx1MDAzZXZlcnNpb24sIHRhcmdfaW5mby1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTExNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTE2OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTI0LVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTI1Olx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEyNi1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjEzNjpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEzNy1cdFx0ICAgXCYjMzQ7Ym1pIHJlYWQgbWVtb3J5OiBkZXZpY2U6IGFkZHI6IDB4JXgsIGxlbjogJWRcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1MzpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTQtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTU1Olx0XHRcdGF0aDZrbF9lcnIoXCYjMzQ7VW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTYtXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU4LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE1OTpcdFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIHJ4X2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE2MC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNjE6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNjItXHRcdFx0XHQgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNzI6aW50IGF0aDZrbF9ibWlfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTgyLVx0aWYgKGFyLVx1MDAzZWJtaS5kb25lX3NlbnQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTgzOlx0XHRhdGg2a2xfZXJyKFwmIzM0O2JtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXG5cJiMzNDssIGNpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE4NC1cdFx0cmV0dXJuIC1FQUNDRVM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE5NzpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE5OC1cdFx0ICAgXCYjMzQ7Ym1pIHdyaXRlIG1lbW9yeTogYWRkcjogMHgleCwgbGVuOiAlZFxcblwmIzM0OywgYWRkciwgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjI3Olx0XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyOC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyMjk6XHRcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIzMC1cdFx0XHRcdCAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzOTppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI0Ni1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI0NzpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNDgtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNTg6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgZXhlY3V0ZTogYWRkcjogMHgleCwgcGFyYW06ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjU5LVx0XHQgICBhZGRyLCAqcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNjk6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjcxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjcyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNzU6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI3NzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzgtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI4NjppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjg3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI5My1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI5NDpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOTUtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMDU6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgc2V0IGFwcCBzdGFydDogYWRkcjogMHgleFxcblwmIzM0OywgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMwNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzEzOlx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMxNTpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxNi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzIyOmludCBhdGg2a2xfYm1pX3JlZ19yZWFkKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyICpwYXJhbSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyOS1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMzMDpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMzEtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDE6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgcmVhZCBTT0MgcmVnOiBhZGRyOiAweCV4XFxuXCYjMzQ7LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNDk6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzUxOlx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzUyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTU6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgc2l6ZW9mKCpwYXJhbSkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM1NzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTgtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM2NTppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNzItXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNzM6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzc0LVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzg0Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzg1LVx0XHQgICBcJiMzNDtibWkgd3JpdGUgU09DIHJlZzogYWRkcjogMHgleCwgcGFyYW06ICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozOTY6XHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5Ny1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzk4Olx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk5LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MDU6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphciwgdTggKmJ1ZiwgdTMyIGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDA2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxNC1cdGlmIChhci1cdTAwM2VibWkuZG9uZV9zZW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQxNTpcdFx0YXRoNmtsX2VycihcJiMzNDtibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxuXCYjMzQ7LCBjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MTYtXHRcdHJldHVybiAtRUFDQ0VTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MjY6XHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcJiMzNDtibWkgc2VuZCBMWiBkYXRhOiBsZW46ICVkKVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDI3LVx0XHQgICBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NDM6XHRcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ0LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0NTpcdFx0XHRhdGg2a2xfZXJyKFwmIzM0O1VuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ2LVx0XHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU2OmludCBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ1Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjMtXHRpZiAoYXItXHUwMDNlYm1pLmRvbmVfc2VudCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NjQ6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7Ym1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcblwmIzM0OywgY2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDY1LVx0XHRyZXR1cm4gLUVBQ0NFUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDc1Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDc2LVx0XHQgICBcJiMzNDtibWkgTFogc3RyZWFtIHN0YXJ0OiBhZGRyOiAweCV4KVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDg1Olx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ4NzpcdFx0YXRoNmtsX2VycihcJiMzNDtVbmFibGUgdG8gc3RhcnQgTFogc3RyZWFtIHRvIHRoZSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODgtXHRcdFx0ICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDk1OmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MDI6XHRyZXQgPSBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChhciwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxMTpcdHJldCA9IGF0aDZrbF9ibWlfbHpfZGF0YShhciwgYnVmLCBsYXN0X3dvcmRfb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTEyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxNS1cdGlmICh1bmFsaWduZWRfYnl0ZXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxNjpcdFx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCAodTggKilcdTAwMjZsYXN0X3dvcmQsIDQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MjAtXHRcdCAqIFRoaXMgc2VydmVzIG1haW5seSB0byBmbHVzaCBUYXJnZXQgY2FjaGVzLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MjE6XHRcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCAweDAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MjY6dm9pZCBhdGg2a2xfYm1pX3Jlc2V0KHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Mjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MzE6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTQ2OnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMTk6c3RydWN0IGF0aDZrbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjIwOnN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjIxLVx0X19sZTMyIGJ5dGVfY291bnQ7ICAgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMjY6I2RlZmluZSBhdGg2a2xfYm1pX3dyaXRlX2hpMzIoYXIsIGl0ZW0sIHZhbClcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyNy1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzAtXHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMxOlx0XHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjMyLVx0XHR2ID0gY3B1X3RvX2xlMzIodmFsKTtcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjMzOlx0XHRhdGg2a2xfYm1pX3dyaXRlKGFyLCBhZGRyLCAodTggKikgXHUwMDI2diwgc2l6ZW9mKHYpKTtcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNC1cdH0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjM2OiNkZWZpbmUgYXRoNmtsX2JtaV9yZWFkX2hpMzIoYXIsIGl0ZW0sIHZhbClcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNy1cdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNDItXHRcdCh2b2lkKSAoY2hlY2tfdHlwZSA9PSB2YWwpO1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQzOlx0XHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjQ0Olx0XHRyZXQgPSBhdGg2a2xfYm1pX3JlYWQoYXIsIGFkZHIsICh1OCAqKSBcdTAwMjZ0bXAsIDQpO1x0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ1LVx0XHRpZiAoIXJldClcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTA6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1MTp2b2lkIGF0aDZrbF9ibWlfY2xlYW51cChzdHJ1Y3QgYXRoNmtsICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1Mjp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NDppbnQgYXRoNmtsX2JtaV9kb25lKHN0cnVjdCBhdGg2a2wgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU1OmludCBhdGg2a2xfYm1pX2dldF90YXJnZXRfaW5mbyhzdHJ1Y3QgYXRoNmtsICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU2Olx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX2JtaV90YXJnZXRfaW5mbyAqdGFyZ19pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU3OmludCBhdGg2a2xfYm1pX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU4OmludCBhdGg2a2xfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1OTppbnQgYXRoNmtsX2JtaV9leGVjdXRlKHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjAtXHRcdCAgICAgICB1MzIgYWRkciwgdTMyICpwYXJhbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MTppbnQgYXRoNmtsX2JtaV9zZXRfYXBwX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjItXHRcdFx0ICAgICB1MzIgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2MzppbnQgYXRoNmtsX2JtaV9yZWdfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjQ6aW50IGF0aDZrbF9ibWlfcmVnX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTMyIHBhcmFtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY1OmludCBhdGg2a2xfYm1pX2x6X2RhdGEoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2Ni1cdFx0ICAgICAgIHU4ICpidWYsIHUzMiBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjc6aW50IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KHN0cnVjdCBhdGg2a2wgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjgtXHRcdFx0ICAgICAgIHUzMiBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY5OmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI3MC1cdFx0XHQgICAgIHUzMiBhZGRyLCB1OCAqYnVmLCB1MzIgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6NTg6c3RydWN0IGF0aDZrbF9jZmc4MDIxMV9tYXRjaF9wcm9iZV9zc2lkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy01OS1cdHN0cnVjdCBjZmc4MDIxMV9zc2lkIHNzaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjYzOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3JhdGUgYXRoNmtsX3JhdGVzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjQtXHRSQVRFVEFCX0VOVCgxMCwgMHgxLCAwKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzg6I2RlZmluZSBhdGg2a2xfYV9yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyAmIzQzOyA0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjc5OiNkZWZpbmUgYXRoNmtsX2FfcmF0ZXNfc2l6ZSAgICA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODA6I2RlZmluZSBhdGg2a2xfZ19yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyAmIzQzOyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgxOiNkZWZpbmUgYXRoNmtsX2dfcmF0ZXNfc2l6ZSAgICAxMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgzOiNkZWZpbmUgYXRoNmtsX2dfaHRjYXAgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4NDojZGVmaW5lIGF0aDZrbF9hX2h0Y2FwIChJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSF8yMF80MCB8IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODUtXHRcdFx0SUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcdFx0IHwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODg6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBhdGg2a2xfMmdoel9jaGFubmVsc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTg5LVx0Q0hBTjJHKDEsIDI0MTIsIDApLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTA1OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgYXRoNmtsXzVnaHpfYV9jaGFubmVsc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwNi1cdENIQU41RygzNiwgMCksIENIQU41Ryg0MCwgMCksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjU6c3RhdGljIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgYXRoNmtsX2JhbmRfMmdoeiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjY6XHQubl9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoNmtsXzJnaHpfY2hhbm5lbHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNzpcdC5jaGFubmVscyA9IGF0aDZrbF8yZ2h6X2NoYW5uZWxzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyODpcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2dfcmF0ZXNfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjk6XHQuYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzA6XHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9nX2h0Y2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzMS1cdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNDpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF81Z2h6ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNTpcdC5uX2NoYW5uZWxzID0gQVJSQVlfU0laRShhdGg2a2xfNWdoel9hX2NoYW5uZWxzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzY6XHQuY2hhbm5lbHMgPSBhdGg2a2xfNWdoel9hX2NoYW5uZWxzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNzpcdC5uX2JpdHJhdGVzID0gYXRoNmtsX2FfcmF0ZXNfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzg6XHQuYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzk6XHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9hX2h0Y2FwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0MC1cdC5odF9jYXAuaHRfc3VwcG9ydGVkID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ1LS8qIHJldHVybnMgdHJ1ZSBpZiBzY2hlZHVsZWQgc2NhbiB3YXMgc3RvcHBlZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE0NjpzdGF0aWMgYm9vbCBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNDg6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNTg6XHRhdGg2a2xfd21pX2VuYWJsZV9zY2hlZF9zY2FuX2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTYzOnN0YXRpYyB2b2lkIGF0aDZrbF9jZmc4MDIxMV9zc2Nhbl9kaXNhYmxlKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjU6XHRzdHJ1Y3QgYXRoNmtsICphciA9IHZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNjYtXHRib29sIHN0b3BwZWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE2ODpcdHN0b3BwZWQgPSBfX2F0aDZrbF9jZmc4MDIxMV9zc2Nhbl9zdG9wKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc2OnN0YXRpYyBpbnQgYXRoNmtsX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3Ny1cdFx0XHRcdCAgZW51bSBubDgwMjExX3dwYV92ZXJzaW9ucyB3cGFfdmVyc2lvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE3OTpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6ICV1XFxuXCYjMzQ7LCBfX2Z1bmNfXywgd3BhX3ZlcnNpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE4MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxODg6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7JXM6ICV1IG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDssIF9fZnVuY19fLCB3cGFfdmVyc2lvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg5LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTk1OnN0YXRpYyBpbnQgYXRoNmtsX3NldF9hdXRoX3R5cGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTYtXHRcdFx0XHRlbnVtIG5sODAyMTFfYXV0aF90eXBlIGF1dGhfdHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE5ODpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6IDB4JXhcXG5cJiMzNDssIF9fZnVuY19fLCBhdXRoX3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE1LVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMTY6XHRcdGF0aDZrbF9lcnIoXCYjMzQ7JXM6IDB4JXggbm90IHN1cHBvcnRlZFxcblwmIzM0OywgX19mdW5jX18sIGF1dGhfdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjE3LVx0XHRyZXR1cm4gLUVOT1RTVVBQO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjIzOnN0YXRpYyBpbnQgYXRoNmtsX3NldF9jaXBoZXIoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGNpcGhlciwgYm9vbCB1Y2FzdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjI5Olx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcJiMzNDslczogY2lwaGVyIDB4JXgsIHVjYXN0ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIzMC1cdFx0ICAgX19mdW5jX18sIGNpcGhlciwgdWNhc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTgtXHRkZWZhdWx0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI1OTpcdFx0YXRoNmtsX2VycihcJiMzNDtjaXBoZXIgMHgleCBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7LCBjaXBoZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2MC1cdFx0cmV0dXJuIC1FTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2NjpzdGF0aWMgdm9pZCBhdGg2a2xfc2V0X2tleV9tZ210KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUzMiBrZXlfbWdtdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI2ODpcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7JXM6IDB4JXhcXG5cJiMzNDssIF9fZnVuY19fLCBrZXlfbWdtdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg1OnN0YXRpYyBib29sIGF0aDZrbF9jZmc4MDIxMV9yZWFkeShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg3Olx0c3RydWN0IGF0aDZrbCAqYXIgPSB2aWYtXHUwMDNlYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI4OS1cdGlmICghdGVzdF9iaXQoV01JX1JFQURZLCBcdTAwMjZhci1cdTAwM2VmbGFnKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI5MDpcdFx0YXRoNmtsX2VycihcJiMzNDt3bWkgaXMgbm90IHJlYWR5XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjk0LVx0aWYgKCF0ZXN0X2JpdChXTEFOX0VOQUJMRUQsIFx1MDAyNnZpZi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyOTU6XHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTEFOX0NGRywgXCYjMzQ7d2xhbiBkaXNhYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjk2LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDI6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwYV9pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDk6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3Jzbl9pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMTQ6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3dwc19pZShjb25zdCB1OCAqcG9zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjI6c3RhdGljIGludCBhdGg2a2xfc2V0X2Fzc29jX3JlcV9pZXMoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjMtXHRcdFx0XHQgICAgc2l6ZV90IGllc19sZW4pXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzAxNgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYXRoNmtsIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgYXRoNmtsYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgVVNCIGFuZCBTRElPIHZhcmlhbnRzOiBgQVRINktMX1VTQmAgYW5kIGBBVEg2S0xfU0RJT2AuIE15IGZpcnN0IHRob3VnaHQgaXM6IHNpbmNlIHdlIGhhdmUgYEFUSDZLTF9VU0JgIGF2YWlsYWJsZSwgdGhhdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyBpdCB3aXRoIHRoZSBkdW1teSBVU0IgZHJpdmVyLCBgdmhjaWAsIHdpdGhpbiBzeXprYWxsZXIuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4KCk5vdywgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoZSBzeXprYWxsZXIgY29uZmlndXJhdGlvbi4gSXMgYEFUSDZLTF9VU0JgIGFscmVhZHkgZW5hYmxlZD8gT3IgZG8gSSBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkIGl0IHRvIHRoZSBidWlsZD8gSG1tLCB5ZXMsIGxvb2tzIGxpa2UgSSBuZWVkIHRvIGVuc3VyZSBib3RoIGBBVEg2S0xfVVNCYCBhbmQgYEFUSDZLTGAgYXJlIGVuYWJsZWQuIEdvb2QuIEkmIzM5O2xsIG1ha2UgYSBub3RlIG9mIHRoYXQuCgpOZXh0LCBJJiMzOTttIHNlZWluZyB0aGF0IHRoZSByZWxldmFudCBwYXRjaCBpcyB0b3VjaGluZyBgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRgIGFuZCBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YC4gSW50ZXJlc3RpbmcuIFRob3NlIGV2ZW50cyBhcmUgY3JpdGljYWwgZm9yIGNvbm5lY3Rpdml0eSwgc28gSSBkZWZpbml0ZWx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB0aGVyZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLiBJJiMzOTtsbCBzdGFydCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz02ODA9YXRoNmtsX2FkZF9ic3NfaWZfbmVlZGVkKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTczNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3MzY6dm9pZCBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MTYgY2hhbm5lbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03MzctXHRcdFx0XHQgICB1OCAqYnNzaWQsIHUxNiBsaXN0ZW5faW50dmwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oPTMzPXZvaWQgYXRoNmtsX2NmZzgwMjExX3NjYW5fY29tcGxldGVfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgYm9vbCBhYm9ydGVkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaC0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuaDozNTp2b2lkIGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oLTM2LVx0XHRcdFx0ICAgdTggKmJzc2lkLCB1MTYgbGlzdGVuX2ludHZsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jPTYyOD12b2lkIGF0aDZrbF9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLCB1OCAqYnNzaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM6NjM2Olx0YXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnQodmlmLCBjaGFubmVsLCBic3NpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jLTYzNy1cdFx0XHRcdCAgICAgIGxpc3Rlbl9pbnQsIGJlYWNvbl9pbnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwMjUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIEZ1bmN0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBmdW5jdGlvbi4gQmFzZWQgb24gdGhlIG5hbWUgYWxvbmUsIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGhhbmRsZXIgZm9yIGV2ZW50cyByZWxhdGVkIHRvIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgbGlrZWx5IHdpdGhpbiB0aGUgQXRoZXJvcyA2MDAwIHNlcmllcyB3aXJlbGVzcyBkcml2ZXIuIFByb2JhYmx5IGEgV01JIChXaW5kb3dzIE1hbmFnZW1lbnQgSW5zdHJ1bWVudGF0aW9uKSBldmVudCwgaW1wbHlpbmcgaXQmIzM5O3MgYSBtZWNoYW5pc20gZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgaG9zdCBhbmQgdGhlIGZpcm13YXJlLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgV2ktRmkgZHJpdmVycy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBoYW5kbGVyIHJlY2VpdmVzLCBob3cgaXQgcHJvY2Vzc2VzIHRoYXQgZGF0YSwgYW5kIHdoYXQgYWN0aW9ucyBpdCB0cmlnZ2Vycy4gSXMgaXQganVzdCBsb2dnaW5nLCBvciBkb2VzIGl0IGFjdHVhbGx5IGltcGFjdCBzdGF0ZSB0cmFuc2l0aW9ucyDigJMgYnJpbmdpbmcgdXAgdGhlIGludGVyZmFjZSwgYXNzaWduaW5nIGFuIElQIGFkZHJlc3MsIG9yIHBlcmhhcHMgbWFuYWdpbmcgc2VjdXJpdHkga2V5cz8gTGV0JiMzOTtzIGNoZWNrIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLiBHb3R0YSBjaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG9idmlvdXMgYnVmZmVyIG92ZXJmbG93cyBhbmQgdGhhdCBwcm9wZXIgZXJyb3IgY2hlY2tpbmcgaXMgZG9uZSBoZXJlLiBTZWN1cml0eSBpcyB0aGUgbWFpbiBwcmlvcml0eS4gSSBhbSBzdXJlIHRoYXQgSSBoYXZlIHNlZW4gdGhpcyBiZWZvcmUuIEl0IGhhcyB0byBoYW5kbGUgdGhlIGltcG9ydGFudCBiaXRzIGFib3V0IHdpZmkgY29ubmVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jPTgzNT1pbnQgYXRoNmtsX3dtaV9zZXRfcm9hbV9tb2RlX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX3JvYW1fbW9kZSBtb2RlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtODUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzo4NTQ6c3RhdGljIGludCBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTg1NS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM9Mzg4ND1zdGF0aWMgaW50IGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmKHN0cnVjdCB3bWkgKndtaSwgdTE2IGlmX2lkeCwgdTE2IGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jLTM4OTktXHRcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTUksIFwmIzM0O1dNSV9DT05ORUNUX0VWRU5USURcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYzozOTAwOlx0XHRyZXR1cm4gYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHdtaSwgZGF0YXAsIGxlbiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtMzkwMS1cdGNhc2UgV01JX0RJU0NPTk5FQ1RfRVZFTlRJRDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGg2a2wgV2ktRmkgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLiBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGNsZWFyIHRoYXQgaXQmIzM5O3MgdHJpZ2dlcmVkIGZyb20gYGF0aDZrbF93bWlfcHJvY19ldmVudHNfdmlmYCwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHByb2Nlc3NpbmcgV01JIGV2ZW50cyBjb21pbmcgZGlyZWN0bHkgZnJvbSB0aGUgaGFyZHdhcmUg4oCTIG9yIGluIHRoaXMgY2FzZSwgdGhlIFVTQiBlbmRwb2ludC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IG1ha2VzIGl0IGRpcmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBmdXp6aW5nLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KClRoZSBwYXRjaCBpdHNlbGYgYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpc3N1ZSBieSBpbXBsZW1lbnRpbmcgbGVuZ3RoIGNoZWNrcy4gU291bmRzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYW5kIGZ1bmN0aW9uYWwgZml4LiBHaXZlbiB0aGUgZGlyZWN0IFVTQiBleHBvc3VyZSwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIHB1dHRpbmcgdGhyb3VnaCBpdHMgcGFjZXMgd2l0aCBzb21lIGZ1enppbmcuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlIGhhdmUgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAgd2hpY2ggaXMgdGhlIGluaXRpYWwgZW50cnkgcG9pbnQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIHBhdGhzLiBMZXQmIzM5O3Mgc2VlIGlmIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIGlzIGEgaG90IHBhdGguIEl0JiMzOTtzIGhhbmRsaW5nIHRoZSBgV01JX0NPTk5FQ1RfRVZFTlRJRGAgZXZlbnQsIHdoaWNoIG9jY3VycyBkdXJpbmcgY29ubmVjdGlvbi4gTm90IGEgY29uc3RhbnQgc3RyZWFtIG9mIHRyYWZmaWMsIHNvIG5vdCBhIGhpZ2gtZnJlcXVlbmN5IHRhcmdldC4gSW50ZXJlc3RpbmdseSwgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBnZXRzIGNhbGxlZCBmcm9tIGBhdGg2a2xfY29ubmVjdF9ldmVudGAsIGFuZCAqdGhhdCogaXMgY2FsbGVkIGZyb20gYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAuIE1ha2VzIHNlbnNlLgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3MgYXJlIGVuYWJsZWQgZm9yIG15IHRlc3RpbmcuIEl0IGxvb2tzIGxpa2UgSSYjMzk7bGwgbmVlZCBgQVRINktMYCBhbmQgc3BlY2lmaWNhbGx5IGBBVEg2S0xfVVNCYCBlbmFibGVkIHRvIHJlcHJvZHVjZSB0aGlzIG9uIG15IHNldHVwLiBUaW1lIHRvIHZlcmlmeSB0aGUgS2NvbmZpZyBzZXR0aW5ncyBmb3IgYEFUSDZLTF9VU0JgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRINktMX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz0xND1jb25maWcgQVRINktMX1NESU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjU6Y29uZmlnIEFUSDZLTF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoNmtsIFVTQiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTQzCgkJCQkJCQlvdXRwdXQ6IDExMgoJCQkJCQkJdGhvdWdodHM6IDExMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIEFUSDZLTCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byB0aGUgYGF0aDZrbGAgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHllcywgYEFUSDZLTF9VU0JgICpkb2VzKiBkZXBlbmQgb24gYEFUSDZLTGAsIHNvIHRob3NlIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIHRvIHRhcmdldC4gSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBxdWlja2x5IGNoZWNrZWQgaWYgYEFUSDZLTF9TRElPYCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LCBnaXZlbiBTeXprYWxsZXImIzM5O3MgU0RJTyBzdXBwb3J0LCBidXQgVVNCIGlzIGRlZmluaXRlbHkgdGhlIHByaW1hcnkgcGF0aCBoZXJlLiBUaGVyZWZvcmUsIEkgd2lsbCBpbmNsdWRlIGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAgaW4gdGhlIGNvbmZpZ3VyYXRpb25zLgoKTm93LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgcGF0Y2ggaXRzZWxmLiBJdCYjMzk7cyBhZGRyZXNzaW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGR1cmluZyB0aGUgcGFyc2luZyBvZiBXTUkgY29ubmVjdCBldmVudHMuIFRoZSBtb2RpZmljYXRpb25zIGZvY3VzIG9uIHRoZSBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBhbmQgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBmdW5jdGlvbnMuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIHRoZXJlIGFyZSBub3cgbGVuZ3RoIGNoZWNrcyB0byBlbnN1cmUgdGhlIGRhdGEgc3RydWN0dXJlcyBhcmUgcHJvcGVybHkgc2l6ZWQgYmVmb3JlIGFjY2Vzc2luZyB0aGVpciBtZW1iZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBpcyBhZGRpbmcgYm91bmRzIGNoZWNrcyB0byBwcmV2ZW50IHJlYWRzIGFuZCB3cml0ZXMgb3V0c2lkZSB0aGUgYWxsb2NhdGVkIG1lbW9yeSBidWZmZXJzLgoKR2l2ZW4gdGhpcyB1bmRlcnN0YW5kaW5nLCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGZpeCBhbmQsIGNyaXRpY2FsbHksIGl0JiMzOTtzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuIFRoZSB1cGRhdGVkIGxlbmd0aCBjaGVja3MgaW4gYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAgcHJldmVudCByZWFkaW5nIGJleW9uZCB0aGUgZGF0YSBwcm92aWRlZCwgYW5kIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgbm93IHZlcmlmaWVzIGJ1ZmZlciBzaXplcyBhcyB3ZWxsLgoKVGhlcmVmb3JlLCBmb3IgdGhpcyBmdXp6aW5nIHRhc2ssIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nOiB0cnVlYCwgYW5kIHRoZSBgRm9jdXNTeW1ib2xzYCB0byBpbmNsdWRlIHRoZSB0d28gZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkOiBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBhbmQgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YC4gVGhlIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGBBVEg2S0xgIGFuZCBgQVRINktMX1VTQmAuIFRoZSBgUmVhc29uaW5nYCB3aWxsIGJlOiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcyB3aGVuIHBhcnNpbmcgV01JIGNvbm5lY3QgZXZlbnRzIGluIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRINktMJiMzNDssCiAgICAmIzM0O0FUSDZLTF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngmIzM0OywKICAgICYjMzQ7YXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMgd2hlbiBwYXJzaW5nIFdNSSBjb25uZWN0IGV2ZW50cyBpbiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDZLTCYjMzQ7LAogICAgJiMzNDtBVEg2S0xfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4JiMzNDssCiAgICAmIzM0O2F0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjU6NDQuNDE5OTMxNzIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE1MTY3NzE0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRINktMXCIsXG4gICAgXCJBVEg2S0xfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4XCIsXG4gICAgXCJhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDoyNTo0NC40MTk5Mzc4MjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDUxMzc0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ0MDQ4NGIyYmFjN2UyN2ZiMGQ1YjE0ZWZkNzRiMjgzNWViN2ZhYTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMDA6MjU6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXFxuaW5kZXggY2MwZjJjNDVmYzNhMzAuLjYyZjY2M2MwZGFhMjY1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xcbkBAIC03NTQsNiArNzU0LDExIEBAIHZvaWQgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTE2IGNoYW5uZWwsXFxuIFxcdHU4ICphc3NvY19yZXNwX2llID0gYXNzb2NfaW5mbyArIGJlYWNvbl9pZV9sZW4gKyBhc3NvY19yZXFfbGVuICtcXG4gXFx0ICAgIGFzc29jX3Jlc3BfaWVfb2Zmc2V0O1xcbiBcXG4rXFx0aWYgKGFzc29jX3JlcV9sZW4gXFx1MDAzYyBhc3NvY19yZXFfaWVfb2Zmc2V0KVxcbitcXHRcXHRhc3NvY19yZXFfbGVuID0gYXNzb2NfcmVxX2llX29mZnNldDtcXG4rXFx0aWYgKGFzc29jX3Jlc3BfbGVuIFxcdTAwM2MgYXNzb2NfcmVzcF9pZV9vZmZzZXQpXFxuK1xcdFxcdGFzc29jX3Jlc3BfbGVuID0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7XFxuK1xcbiBcXHRhc3NvY19yZXFfbGVuIC09IGFzc29jX3JlcV9pZV9vZmZzZXQ7XFxuIFxcdGFzc29jX3Jlc3BfbGVuIC09IGFzc29jX3Jlc3BfaWVfb2Zmc2V0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcXG5pbmRleCA3MjYxMWEyY2ViOWQ4ZS4uZmJmZDc0MTU0ZDEyZmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcXG5AQCAtODYyLDYgKzg2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG4gXFxuIFxcdGV2ID0gKHN0cnVjdCB3bWlfY29ubmVjdF9ldmVudCAqKSBkYXRhcDtcXG4gXFxuK1xcdGlmIChsZW4gXFx1MDAzYyBzaXplb2YoKmV2KSArIGV2LVxcdTAwM2ViZWFjb25faWVfbGVuICsgZXYtXFx1MDAzZWFzc29jX3JlcV9sZW4gK1xcbitcXHQgICAgZXYtXFx1MDAzZWFzc29jX3Jlc3BfbGVuKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGlmICh2aWYtXFx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xcbiBcXHRcXHQvKiBBUCBtb2RlIHN0YXJ0L1NUQSBjb25uZWN0ZWQgZXZlbnQgKi9cXG4gXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZpZi1cXHUwMDNlbmRldjtcXG5AQCAtOTEzLDcgKzkxNyw4IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxcbiBcXHR3aGlsZSAocGllIFxcdTAwM2MgcGVpZSkge1xcbiBcXHRcXHRzd2l0Y2ggKCpwaWUpIHtcXG4gXFx0XFx0Y2FzZSBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUM6XFxuLVxcdFxcdFxcdGlmIChwaWVbMV0gXFx1MDAzZSAzIFxcdTAwMjZcXHUwMDI2IHBpZVsyXSA9PSAweDAwIFxcdTAwMjZcXHUwMDI2IHBpZVszXSA9PSAweDUwIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdGlmIChwaWUgKyA3IFxcdTAwM2M9IHBlaWUgXFx1MDAyNlxcdTAwMjYgcGllWzFdIFxcdTAwM2UgMyBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgcGllWzJdID09IDB4MDAgXFx1MDAyNlxcdTAwMjYgcGllWzNdID09IDB4NTAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHBpZVs0XSA9PSAweGYyIFxcdTAwMjZcXHUwMDI2IHBpZVs1XSA9PSBXTU1fT1VJX1RZUEUpIHtcXG4gXFx0XFx0XFx0XFx0LyogV01NIE9VVCAoMDA6NTA6RjIpICovXFxuIFxcdFxcdFxcdFxcdGlmIChwaWVbMV0gXFx1MDAzZSA1IFxcdTAwMjZcXHUwMDI2XFxuQEAgLTkyNiw2ICs5MzEsOSBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG4gXFx0XFx0aWYgKHdtaS1cXHUwMDNlaXNfd21tX2VuYWJsZWQpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4rXFx0XFx0aWYgKHBpZSArIDEgXFx1MDAzZT0gcGVpZSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcbiBcXHRcXHRwaWUgKz0gcGllWzFdICsgMjtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjU6NDQuODMxMzAwMzQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTEwNTM5MzQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg2S0xcIixcbiAgICBcIkFUSDZLTF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhcIixcbiAgICBcImF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMgd2hlbiBwYXJzaW5nIFdNSSBjb25uZWN0IGV2ZW50cyBpbiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDQwNDg0YjJiYWM3ZTI3ZmIwZDViMTRlZmQ3NGIyODM1ZWI3ZmFhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjI1OjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG5pbmRleCBjYzBmMmM0NWZjM2EzMC4uNjJmNjYzYzBkYWEyNjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuQEAgLTc1NCw2ICs3NTQsMTEgQEAgdm9pZCBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1MTYgY2hhbm5lbCxcbiBcdHU4ICphc3NvY19yZXNwX2llID0gYXNzb2NfaW5mbyArIGJlYWNvbl9pZV9sZW4gKyBhc3NvY19yZXFfbGVuICtcbiBcdCAgICBhc3NvY19yZXNwX2llX29mZnNldDtcbiBcbitcdGlmIChhc3NvY19yZXFfbGVuIFx1MDAzYyBhc3NvY19yZXFfaWVfb2Zmc2V0KVxuK1x0XHRhc3NvY19yZXFfbGVuID0gYXNzb2NfcmVxX2llX29mZnNldDtcbitcdGlmIChhc3NvY19yZXNwX2xlbiBcdTAwM2MgYXNzb2NfcmVzcF9pZV9vZmZzZXQpXG4rXHRcdGFzc29jX3Jlc3BfbGVuID0gYXNzb2NfcmVzcF9pZV9vZmZzZXQ7XG4rXG4gXHRhc3NvY19yZXFfbGVuIC09IGFzc29jX3JlcV9pZV9vZmZzZXQ7XG4gXHRhc3NvY19yZXNwX2xlbiAtPSBhc3NvY19yZXNwX2llX29mZnNldDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xuaW5kZXggNzI2MTFhMmNlYjlkOGUuLmZiZmQ3NDE1NGQxMmZlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xuQEAgLTg2Miw2ICs4NjIsMTAgQEAgc3RhdGljIGludCBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXG4gXHRldiA9IChzdHJ1Y3Qgd21pX2Nvbm5lY3RfZXZlbnQgKikgZGF0YXA7XG4gXG4rXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmV2KSArIGV2LVx1MDAzZWJlYWNvbl9pZV9sZW4gKyBldi1cdTAwM2Vhc3NvY19yZXFfbGVuICtcbitcdCAgICBldi1cdTAwM2Vhc3NvY19yZXNwX2xlbilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRpZiAodmlmLVx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xuIFx0XHQvKiBBUCBtb2RlIHN0YXJ0L1NUQSBjb25uZWN0ZWQgZXZlbnQgKi9cbiBcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHZpZi1cdTAwM2VuZGV2O1xuQEAgLTkxMyw3ICs5MTcsOCBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbiBcdHdoaWxlIChwaWUgXHUwMDNjIHBlaWUpIHtcbiBcdFx0c3dpdGNoICgqcGllKSB7XG4gXHRcdGNhc2UgV0xBTl9FSURfVkVORE9SX1NQRUNJRklDOlxuLVx0XHRcdGlmIChwaWVbMV0gXHUwMDNlIDMgXHUwMDI2XHUwMDI2IHBpZVsyXSA9PSAweDAwIFx1MDAyNlx1MDAyNiBwaWVbM10gPT0gMHg1MCBcdTAwMjZcdTAwMjZcbitcdFx0XHRpZiAocGllICsgNyBcdTAwM2M9IHBlaWUgXHUwMDI2XHUwMDI2IHBpZVsxXSBcdTAwM2UgMyBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgcGllWzJdID09IDB4MDAgXHUwMDI2XHUwMDI2IHBpZVszXSA9PSAweDUwIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBwaWVbNF0gPT0gMHhmMiBcdTAwMjZcdTAwMjYgcGllWzVdID09IFdNTV9PVUlfVFlQRSkge1xuIFx0XHRcdFx0LyogV01NIE9VVCAoMDA6NTA6RjIpICovXG4gXHRcdFx0XHRpZiAocGllWzFdIFx1MDAzZSA1IFx1MDAyNlx1MDAyNlxuQEAgLTkyNiw2ICs5MzEsOSBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcbiBcdFx0aWYgKHdtaS1cdTAwM2Vpc193bW1fZW5hYmxlZClcbiBcdFx0XHRicmVhaztcbiBcbitcdFx0aWYgKHBpZSArIDEgXHUwMDNlPSBwZWllKVxuK1x0XHRcdGJyZWFrO1xuK1xuIFx0XHRwaWUgKz0gcGllWzFdICsgMjtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjI1OjQ0LjgzMTMwMTkyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4ODc1OTgwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6YWJpbGl0eSBvZiBhbiBhdGg2a2wgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgc29tZSBtb2RpZmljYXRpb25zIHRvIGBhdGg2a2wvY2ZnODAyMTEuY2AgYW5kIGBhdGg2a2wvd21pLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBsZW5ndGggY2hlY2tzIHRvIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgYW5kIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgLiBJbnRlcmVzdGluZy4uLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGEgcXVlc3Rpb246IGlzIHRoaXMgZHJpdmVyLCBgYXRoNmtsYCwgZnV6emFibGU/XG5cbkdlbmVyYWxseSwgSSdtIGNhdXRpb3VzIGFib3V0IGZ1enppbmcgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVycy4gVGhleSdyZSBvZnRlbiB0cmlja3ksIHVubGVzcyB0aGV5J3JlIGJ1aWx0IG9uIHRvcCBvZiBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBCdXQgdGhpcyBpcyB0aGUgYXRoNmtsIGRyaXZlciwgZGVzaWduZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlLCBzbyB0aGUgdXN1YWwgY2F2ZWF0cyBhcHBseS5cblxuV2FpdCwgaG9sZCBvbi4uLiBTeXprYWxsZXIgKmNhbiogZnV6eiB3aXJlbGVzcyBkcml2ZXJzIHZpYSBgbWFjODAyMTFfaHdzaW1gLCByaWdodD8gQnV0LCBhaCwgdGhhdCdzIHRoZSBwcm9ibGVtLiBBdGg2a2wgaXMgYSBmdWxsbWFjIGRyaXZlciDigJMgbm90IGEgYG1hYzgwMjExYCBkcml2ZXIuIFRoYXQgY2hhbmdlcyB0aGluZ3MuXG5cbkNhbiBpdCBiZSBmdXp6ZWQgdGhyb3VnaCBhIFVTQiBpbnRlcmZhY2U/IFRoYXQncyB3aGF0IEkgbmVlZCB0byBmaWd1cmUgb3V0LiBMZXQgbWUgY2hlY2sgaWYgdGhlIGRyaXZlciBldmVuIHN1cHBvcnRzIHRoYXQuIEknbGwgbmVlZCB0byBzZWUgaWYgYSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuY2AgZmlsZSBleGlzdHMuIExldCdzIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTUxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjU6NDkuNzE4OTAxOTUxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTI4MzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDZrbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMDQ0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9Mj1jb25maWcgQVRINktMXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTAtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzoxMTpcXHQgIGF0aDZrbF9jb3JlLiBQbGVhc2Ugbm90ZSB0aGF0IEFSNjAwMiBhbmQgQVI2MDAxIGFyZSBub3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMTItXFx0ICBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MTQ9Y29uZmlnIEFUSDZLTF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjE1OlxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBTRElPIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTE2LVxcdGRlcGVuZHMgb24gQVRINktMXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjAtXFx0ICBBdGhlcm9zIEFSNjAwMyBhbmQgQVI2MDA0IGNoaXBzZXRzIHJ1bm5pbmcgb3ZlciBTRElPLiBJZiB5b3VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6MjE6XFx0ICBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0aDZrbF9zZGlvLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0yMi1cXHQgIFBsZWFzZSBub3RlIHRoYXQgQVI2MDAyIGFuZCBBUjYwMDEgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnPTI1PWNvbmZpZyBBVEg2S0xfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI2OlxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zMi1cXHQgIFVTQi4gSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozMzpcXHQgIGNhbGxlZCBhdGg2a2xfdXNiLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MzU9Y29uZmlnIEFUSDZLTF9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzozNjpcXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM3LVxcdGRlcGVuZHMgb24gQVRINktMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTM4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc6Mzk6XFx0ICBFbmFibGVzIGF0aDZrbCBkZWJ1ZyBzdXBwb3J0LCBpbmNsdWRpbmcgZGVidWcgbWVzc2FnZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDAtXFx0ICBlbmFibGVkIHdpdGggZGVidWdfbWFzayBtb2R1bGUgcGFyYW1ldGVyIGFuZCBkZWJ1Z2ZzXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9NDU9Y29uZmlnIEFUSDZLTF9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjQ2OlxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoNmtsIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNDctXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZy00OS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjUwOlxcdCAgU2VsZWN0IHRoaXMgdG8gYXRoNmtsIHVzZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlIHdoaWNoLCBmb3JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTEtXFx0ICBleGFtcGxlLCBjYW4gYmUgZW5hYmxlZCB3aXRoIGhlbHAgb2YgdHJhY2UtY21kLiBBbGwgZGVidWdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZz01Nz1jb25maWcgQVRINktMX1JFR0RPTUFJTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZzo1ODpcXHRib29sIFxcXCJBdGhlcm9zIGF0aDZrbCByZWdkb21haW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctNTktXFx0ZGVwZW5kcyBvbiBBVEg2S0xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRINktMKSArPSBhdGg2a2xfY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZToyNjphdGg2a2xfY29yZS15ICs9IGRlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI3OmF0aDZrbF9jb3JlLXkgKz0gaGlmLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjI4OmF0aDZrbF9jb3JlLXkgKz0gaHRjX21ib3gub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mjk6YXRoNmtsX2NvcmUteSArPSBodGNfcGlwZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMDphdGg2a2xfY29yZS15ICs9IGJtaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMTphdGg2a2xfY29yZS15ICs9IGNmZzgwMjExLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjMyOmF0aDZrbF9jb3JlLXkgKz0gaW5pdC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozMzphdGg2a2xfY29yZS15ICs9IG1haW4ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6MzQ6YXRoNmtsX2NvcmUteSArPSB0eHJ4Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM1OmF0aDZrbF9jb3JlLXkgKz0gd21pLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlOjM2OmF0aDZrbF9jb3JlLXkgKz0gY29yZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTozNzphdGg2a2xfY29yZS15ICs9IHJlY292ZXJ5Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6Mzk6YXRoNmtsX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDA6YXRoNmtsX2NvcmUtJChDT05GSUdfQVRINktMX1RSQUNJTkcpICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX0FUSDZLTF9TRElPKSArPSBhdGg2a2xfc2Rpby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0MzphdGg2a2xfc2Rpby15ICs9IHNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvTWFrZWZpbGUtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQVRINktMX1VTQikgKz0gYXRoNmtsX3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9NYWtlZmlsZTo0NjphdGg2a2xfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL01ha2VmaWxlLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIzOmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI4LVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjk6XFx0XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBkb25lIHNraXBwZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsICh1OCAqKVxcdTAwMjZjaWQsIHNpemVvZihjaWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byBzZW5kIGJtaSBkb25lOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDQ6aW50IGF0aDZrbF9ibWlfZ2V0X3RhcmdldF9pbmZvKHN0cnVjdCBhdGg2a2wgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvICp0YXJnX2luZm8pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUwLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTE6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyLVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU1OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCAodTggKilcXHUwMDI2Y2lkLCBzaXplb2YoY2lkKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Ni1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1NzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gc2VuZCBnZXQgdGFyZ2V0IGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjEtXFx0aWYgKGFyLVxcdTAwM2VoaWZfdHlwZSA9PSBBVEg2S0xfSElGX1RZUEVfVVNCKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo2MjpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLCAodTggKil0YXJnX2luZm8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02My1cXHRcXHRcXHRcXHRcXHQgIHNpemVvZigqdGFyZ19pbmZvKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy02NC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NjU6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgKHU4ICopXFx1MDAyNnRhcmdfaW5mby1cXHUwMDNldmVyc2lvbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTY2LVxcdFxcdFxcdFxcdHNpemVvZih0YXJnX2luZm8tXFx1MDAzZXZlcnNpb24pKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNjktXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NzA6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlY3YgdGFyZ2V0IGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzEtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzUtXFx0XFx0LyogRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIGFyZSBpbiB0aGUgVGFyZ2V0J3MgdGFyZ19pbmZvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo3NjpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV9yZWFkKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzctXFx0XFx0XFx0XFx0ICAgKHU4ICopXFx1MDAyNnRhcmdfaW5mby1cXHUwMDNlYnl0ZV9jb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNzktXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6ODA6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwidW5hYmxlIHRvIHJlYWQgdGFyZ2V0IGluZm8gYnl0ZSBjb3VudDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04MS1cXHRcXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy04OS1cXHRcXHRpZiAobGUzMl90b19jcHUodGFyZ19pbmZvLVxcdTAwM2VieXRlX2NvdW50KSAhPSBzaXplb2YoKnRhcmdfaW5mbykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjkwOlxcdFxcdFxcdGF0aDZrbF9lcnIoXFxcIm1pc21hdGNoZWQgYnl0ZSBjb3VudCAlZCB2cy4gZXhwZWN0ZWQgJXpkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTEtXFx0XFx0XFx0XFx0ICAgbGUzMl90b19jcHUodGFyZ19pbmZvLVxcdTAwM2VieXRlX2NvdW50KSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtOTYtXFx0XFx0LyogUmVhZCB0aGUgcmVtYWluZGVyIG9mIHRoZSB0YXJnX2luZm8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjk3OlxcdFxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3JlYWQoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy05OC1cXHRcXHRcXHRcXHQgICAoKHU4ICopdGFyZ19pbmZvKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEwMy1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMDQ6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHJlYWQgdGFyZ2V0IGluZm8gKCVkIGJ5dGVzKTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDUtXFx0XFx0XFx0XFx0ICAgdGFyZ19pbmZvLVxcdTAwM2VieXRlX2NvdW50LCByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMTA6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcInRhcmdldCBpbmZvICh2ZXI6IDB4JXggdHlwZTogMHgleClcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTEtXFx0XFx0ICAgdGFyZ19pbmZvLVxcdTAwM2V2ZXJzaW9uLCB0YXJnX2luZm8tXFx1MDAzZXR5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMTY6aW50IGF0aDZrbF9ibWlfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMjQtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxMjU6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTEyNi1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTM2OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xMzctXFx0XFx0ICAgXFxcImJtaSByZWFkIG1lbW9yeTogZGV2aWNlOiBhZGRyOiAweCV4LCBsZW46ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTM6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1NC1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTU6XFx0XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTU2LVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE1OC1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxNTk6XFx0XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCByeF9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTYwLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE2MTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gcmVhZCBmcm9tIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTYyLVxcdFxcdFxcdFxcdCAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjE3MjppbnQgYXRoNmtsX2JtaV93cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xODItXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoxODM6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTE4NC1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMTk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MTk3OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0xOTgtXFx0XFx0ICAgXFxcImJtaSB3cml0ZSBtZW1vcnk6IGFkZHI6IDB4JXgsIGxlbjogJWRcXFxcblxcXCIsIGFkZHIsIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTIyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIyNzpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjI4LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjIyOTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yMzAtXFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjM5OmludCBhdGg2a2xfYm1pX2V4ZWN1dGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjQ2LVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjQ3OlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNDgtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjI1ODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIGV4ZWN1dGU6IGFkZHI6IDB4JXgsIHBhcmFtOiAlZClcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNTktXFx0XFx0ICAgYWRkciwgKnBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjY5OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MjcxOlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTI3Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzoyNzU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBzaXplb2YoKnBhcmFtKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjc3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yNzgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjg2OmludCBhdGg2a2xfYm1pX3NldF9hcHBfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMjkzLVxcdGlmIChhci1cXHUwMDNlYm1pLmRvbmVfc2VudCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mjk0OlxcdFxcdGF0aDZrbF9lcnIoXFxcImJtaSBkb25lIHNlbnQgYWxyZWFkeSwgY21kICVkIGRpc2FsbG93ZWRcXFxcblxcXCIsIGNpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0yOTUtXFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMwNTpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfQk1JLCBcXFwiYm1pIHNldCBhcHAgc3RhcnQ6IGFkZHI6IDB4JXhcXFxcblxcXCIsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzA2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMTM6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMxNC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMTU6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZXZpY2U6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzE2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjMyMjppbnQgYXRoNmtsX2JtaV9yZWdfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiAqcGFyYW0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zMjktXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozMzA6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTMzMS1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzQxOlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksIFxcXCJibWkgcmVhZCBTT0MgcmVnOiBhZGRyOiAweCV4XFxcXG5cXFwiLCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzQ5OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTAtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzUxOlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM1Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozNTU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfcmVhZChhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBzaXplb2YoKnBhcmFtKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTYtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzU3OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byByZWFkIGZyb20gdGhlIGRldmljZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zNTgtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6MzY1OmludCBhdGg2a2xfYm1pX3JlZ193cml0ZShzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHUzMiBwYXJhbSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM3Mi1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjM3MzpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzc0LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzozODQ6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM4NS1cXHRcXHQgICBcXFwiYm1pIHdyaXRlIFNPQyByZWc6IGFkZHI6IDB4JXgsIHBhcmFtOiAlZFxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtMzk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzk2OlxcdHJldCA9IGF0aDZrbF9oaWZfYm1pX3dyaXRlKGFyLCBhci1cXHUwMDNlYm1pLmNtZF9idWYsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy0zOTctXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6Mzk4OlxcdFxcdGF0aDZrbF9lcnIoXFxcIlVuYWJsZSB0byB3cml0ZSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTM5OS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MDU6aW50IGF0aDZrbF9ibWlfbHpfZGF0YShzdHJ1Y3QgYXRoNmtsICphciwgdTggKmJ1ZiwgdTMyIGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQxNC1cXHRpZiAoYXItXFx1MDAzZWJtaS5kb25lX3NlbnQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQxNTpcXHRcXHRhdGg2a2xfZXJyKFxcXCJibWkgZG9uZSBzZW50IGFscmVhZHksIGNtZCAlZCBkaXNhbGxvd2VkXFxcXG5cXFwiLCBjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDE2LVxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0MjY6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX0JNSSwgXFxcImJtaSBzZW5kIExaIGRhdGE6IGxlbjogJWQpXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDI3LVxcdFxcdCAgIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0MzpcXHRcXHRyZXQgPSBhdGg2a2xfaGlmX2JtaV93cml0ZShhciwgYXItXFx1MDAzZWJtaS5jbWRfYnVmLCBvZmZzZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDQ0LVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjQ0NTpcXHRcXHRcXHRhdGg2a2xfZXJyKFxcXCJVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGRldmljZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NDYtXFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDU2OmludCBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NjMtXFx0aWYgKGFyLVxcdTAwM2VibWkuZG9uZV9zZW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0NjQ6XFx0XFx0YXRoNmtsX2VycihcXFwiYm1pIGRvbmUgc2VudCBhbHJlYWR5LCBjbWQgJWQgZGlzYWxsb3dlZFxcXFxuXFxcIiwgY2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ2NS1cXHRcXHRyZXR1cm4gLUVBQ0NFUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNDc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NDc1OlxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19CTUksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00NzYtXFx0XFx0ICAgXFxcImJtaSBMWiBzdHJlYW0gc3RhcnQ6IGFkZHI6IDB4JXgpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0ODU6XFx0cmV0ID0gYXRoNmtsX2hpZl9ibWlfd3JpdGUoYXIsIGFyLVxcdTAwM2VibWkuY21kX2J1Ziwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4Ni1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0ODc6XFx0XFx0YXRoNmtsX2VycihcXFwiVW5hYmxlIHRvIHN0YXJ0IExaIHN0cmVhbSB0byB0aGUgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTQ4OC1cXHRcXHRcXHQgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo0OTU6aW50IGF0aDZrbF9ibWlfZmFzdF9kb3dubG9hZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy00OTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MDI6XFx0cmV0ID0gYXRoNmtsX2JtaV9sel9zdHJlYW1fc3RhcnQoYXIsIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTAzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUxMTpcXHRyZXQgPSBhdGg2a2xfYm1pX2x6X2RhdGEoYXIsIGJ1ZiwgbGFzdF93b3JkX29mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MTItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTE1LVxcdGlmICh1bmFsaWduZWRfYnl0ZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MTY6XFx0XFx0cmV0ID0gYXRoNmtsX2JtaV9sel9kYXRhKGFyLCAodTggKilcXHUwMDI2bGFzdF93b3JkLCA0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmMtNTIwLVxcdFxcdCAqIFRoaXMgc2VydmVzIG1haW5seSB0byBmbHVzaCBUYXJnZXQgY2FjaGVzLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmM6NTIxOlxcdFxcdHJldCA9IGF0aDZrbF9ibWlfbHpfc3RyZWFtX3N0YXJ0KGFyLCAweDAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjUyNjp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYy01MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuYzo1MzE6aW50IGF0aDZrbF9ibWlfaW5pdChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTUzMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jOjU0Njp2b2lkIGF0aDZrbF9ibWlfY2xlYW51cChzdHJ1Y3QgYXRoNmtsICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5jLTU0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIxOTpzdHJ1Y3QgYXRoNmtsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjIwOnN0cnVjdCBhdGg2a2xfYm1pX3RhcmdldF9pbmZvIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyMS1cXHRfX2xlMzIgYnl0ZV9jb3VudDsgICAvKiBzaXplIG9mIHRoaXMgc3RydWN0dXJlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIyNjojZGVmaW5lIGF0aDZrbF9ibWlfd3JpdGVfaGkzMihhciwgaXRlbSwgdmFsKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIyNy1cXHQoe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjMwLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjIzMTpcXHRcXHRhZGRyID0gYXRoNmtsX2dldF9oaV9pdGVtX2FkZHIoYXIsIEhJX0lURU0oaXRlbSkpO1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzMi1cXHRcXHR2ID0gY3B1X3RvX2xlMzIodmFsKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyMzM6XFx0XFx0YXRoNmtsX2JtaV93cml0ZShhciwgYWRkciwgKHU4ICopIFxcdTAwMjZ2LCBzaXplb2YodikpO1xcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTIzNC1cXHR9KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjM2OiNkZWZpbmUgYXRoNmtsX2JtaV9yZWFkX2hpMzIoYXIsIGl0ZW0sIHZhbClcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yMzctXFx0KHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI0Mi1cXHRcXHQodm9pZCkgKGNoZWNrX3R5cGUgPT0gdmFsKTtcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNDM6XFx0XFx0YWRkciA9IGF0aDZrbF9nZXRfaGlfaXRlbV9hZGRyKGFyLCBISV9JVEVNKGl0ZW0pKTtcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNDQ6XFx0XFx0cmV0ID0gYXRoNmtsX2JtaV9yZWFkKGFyLCBhZGRyLCAodTggKikgXFx1MDAyNnRtcCwgNCk7XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ1LVxcdFxcdGlmICghcmV0KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUwOmludCBhdGg2a2xfYm1pX2luaXQoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjUxOnZvaWQgYXRoNmtsX2JtaV9jbGVhbnVwKHN0cnVjdCBhdGg2a2wgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1Mjp2b2lkIGF0aDZrbF9ibWlfcmVzZXQoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmgtMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU0OmludCBhdGg2a2xfYm1pX2RvbmUoc3RydWN0IGF0aDZrbCAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU1OmludCBhdGg2a2xfYm1pX2dldF90YXJnZXRfaW5mbyhzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI1NjpcXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDZrbF9ibWlfdGFyZ2V0X2luZm8gKnRhcmdfaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTc6aW50IGF0aDZrbF9ibWlfcmVhZChzdHJ1Y3QgYXRoNmtsICphciwgdTMyIGFkZHIsIHU4ICpidWYsIHUzMiBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjU4OmludCBhdGg2a2xfYm1pX3dyaXRlKHN0cnVjdCBhdGg2a2wgKmFyLCB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNTk6aW50IGF0aDZrbF9ibWlfZXhlY3V0ZShzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2MC1cXHRcXHQgICAgICAgdTMyIGFkZHIsIHUzMiAqcGFyYW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjYxOmludCBhdGg2a2xfYm1pX3NldF9hcHBfc3RhcnQoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjItXFx0XFx0XFx0ICAgICB1MzIgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaDoyNjM6aW50IGF0aDZrbF9ibWlfcmVnX3JlYWQoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgKnBhcmFtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oOjI2NDppbnQgYXRoNmtsX2JtaV9yZWdfd3JpdGUoc3RydWN0IGF0aDZrbCAqYXIsIHUzMiBhZGRyLCB1MzIgcGFyYW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY1OmludCBhdGg2a2xfYm1pX2x6X2RhdGEoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNjYtXFx0XFx0ICAgICAgIHU4ICpidWYsIHUzMiBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY3OmludCBhdGg2a2xfYm1pX2x6X3N0cmVhbV9zdGFydChzdHJ1Y3QgYXRoNmtsICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2JtaS5oLTI2OC1cXHRcXHRcXHQgICAgICAgdTMyIGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvYm1pLmg6MjY5OmludCBhdGg2a2xfYm1pX2Zhc3RfZG93bmxvYWQoc3RydWN0IGF0aDZrbCAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9ibWkuaC0yNzAtXFx0XFx0XFx0ICAgICB1MzIgYWRkciwgdTggKmJ1ZiwgdTMyIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjU4OnN0cnVjdCBhdGg2a2xfY2ZnODAyMTFfbWF0Y2hfcHJvYmVfc3NpZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTU5LVxcdHN0cnVjdCBjZmc4MDIxMV9zc2lkIHNzaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjYzOnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3JhdGUgYXRoNmtsX3JhdGVzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTY0LVxcdFJBVEVUQUJfRU5UKDEwLCAweDEsIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo3ODojZGVmaW5lIGF0aDZrbF9hX3JhdGVzICAgICAoYXRoNmtsX3JhdGVzICsgNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Nzk6I2RlZmluZSBhdGg2a2xfYV9yYXRlc19zaXplICAgIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODA6I2RlZmluZSBhdGg2a2xfZ19yYXRlcyAgICAgKGF0aDZrbF9yYXRlcyArIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjgxOiNkZWZpbmUgYXRoNmtsX2dfcmF0ZXNfc2l6ZSAgICAxMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6ODM6I2RlZmluZSBhdGg2a2xfZ19odGNhcCBJRUVFODAyMTFfSFRfQ0FQX1NHSV8yMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzo4NDojZGVmaW5lIGF0aDZrbF9hX2h0Y2FwIChJRUVFODAyMTFfSFRfQ0FQX1NVUF9XSURUSF8yMF80MCB8IFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODUtXFx0XFx0XFx0SUVFRTgwMjExX0hUX0NBUF9TR0lfMjBcXHRcXHQgfCBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjg4OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgYXRoNmtsXzJnaHpfY2hhbm5lbHNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtODktXFx0Q0hBTjJHKDEsIDI0MTIsIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTA1OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgYXRoNmtsXzVnaHpfYV9jaGFubmVsc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMDYtXFx0Q0hBTjVHKDM2LCAwKSwgQ0hBTjVHKDQwLCAwKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEyNTpzdGF0aWMgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBhdGg2a2xfYmFuZF8yZ2h6ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjY6XFx0Lm5fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKGF0aDZrbF8yZ2h6X2NoYW5uZWxzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTI3OlxcdC5jaGFubmVscyA9IGF0aDZrbF8yZ2h6X2NoYW5uZWxzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjg6XFx0Lm5fYml0cmF0ZXMgPSBhdGg2a2xfZ19yYXRlc19zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMjk6XFx0LmJpdHJhdGVzID0gYXRoNmtsX2dfcmF0ZXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzMDpcXHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9nX2h0Y2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xMzEtXFx0Lmh0X2NhcC5odF9zdXBwb3J0ZWQgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTEzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTM0OnN0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kIGF0aDZrbF9iYW5kXzVnaHogPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNTpcXHQubl9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXRoNmtsXzVnaHpfYV9jaGFubmVscyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzNjpcXHQuY2hhbm5lbHMgPSBhdGg2a2xfNWdoel9hX2NoYW5uZWxzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzc6XFx0Lm5fYml0cmF0ZXMgPSBhdGg2a2xfYV9yYXRlc19zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxMzg6XFx0LmJpdHJhdGVzID0gYXRoNmtsX2FfcmF0ZXMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjEzOTpcXHQuaHRfY2FwLmNhcCA9IGF0aDZrbF9hX2h0Y2FwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNDAtXFx0Lmh0X2NhcC5odF9zdXBwb3J0ZWQgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE0NS0vKiByZXR1cm5zIHRydWUgaWYgc2NoZWR1bGVkIHNjYW4gd2FzIHN0b3BwZWQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTQ2OnN0YXRpYyBib29sIF9fYXRoNmtsX2NmZzgwMjExX3NzY2FuX3N0b3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTQ4OlxcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTU4OlxcdGF0aDZrbF93bWlfZW5hYmxlX3NjaGVkX3NjYW5fY21kKGFyLVxcdTAwM2V3bWksIHZpZi1cXHUwMDNlZndfdmlmX2lkeCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjM6c3RhdGljIHZvaWQgYXRoNmtsX2NmZzgwMjExX3NzY2FuX2Rpc2FibGUoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTY1OlxcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY2LVxcdGJvb2wgc3RvcHBlZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNjg6XFx0c3RvcHBlZCA9IF9fYXRoNmtsX2NmZzgwMjExX3NzY2FuX3N0b3AodmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MTc2OnN0YXRpYyBpbnQgYXRoNmtsX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzctXFx0XFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfd3BhX3ZlcnNpb25zIHdwYV92ZXJzaW9uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xNzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxNzk6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwiJXM6ICV1XFxcXG5cXFwiLCBfX2Z1bmNfXywgd3BhX3ZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg3LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE4ODpcXHRcXHRhdGg2a2xfZXJyKFxcXCIlczogJXUgbm90IHN1cHBvcnRlZFxcXFxuXFxcIiwgX19mdW5jX18sIHdwYV92ZXJzaW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTg5LVxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoxOTU6c3RhdGljIGludCBhdGg2a2xfc2V0X2F1dGhfdHlwZShzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0xOTYtXFx0XFx0XFx0XFx0ZW51bSBubDgwMjExX2F1dGhfdHlwZSBhdXRoX3R5cGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjE5ODpcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCIlczogMHgleFxcXFxuXFxcIiwgX19mdW5jX18sIGF1dGhfdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTE5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMTUtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjE2OlxcdFxcdGF0aDZrbF9lcnIoXFxcIiVzOiAweCV4IG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIsIF9fZnVuY19fLCBhdXRoX3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMTctXFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjIyMzpzdGF0aWMgaW50IGF0aDZrbF9zZXRfY2lwaGVyKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUzMiBjaXBoZXIsIGJvb2wgdWNhc3QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTIyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyMjk6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwiJXM6IGNpcGhlciAweCV4LCB1Y2FzdCAldVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjMwLVxcdFxcdCAgIF9fZnVuY19fLCBjaXBoZXIsIHVjYXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNTgtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjU5OlxcdFxcdGF0aDZrbF9lcnIoXFxcImNpcGhlciAweCV4IG5vdCBzdXBwb3J0ZWRcXFxcblxcXCIsIGNpcGhlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2MC1cXHRcXHRyZXR1cm4gLUVOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjY2OnN0YXRpYyB2b2lkIGF0aDZrbF9zZXRfa2V5X21nbXQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTMyIGtleV9tZ210KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyNjg6XFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dMQU5fQ0ZHLCBcXFwiJXM6IDB4JXhcXFxcblxcXCIsIF9fZnVuY19fLCBrZXlfbWdtdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI4NTpzdGF0aWMgYm9vbCBhdGg2a2xfY2ZnODAyMTFfcmVhZHkoc3RydWN0IGF0aDZrbF92aWYgKnZpZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjg3OlxcdHN0cnVjdCBhdGg2a2wgKmFyID0gdmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODktXFx0aWYgKCF0ZXN0X2JpdChXTUlfUkVBRFksIFxcdTAwMjZhci1cXHUwMDNlZmxhZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjkwOlxcdFxcdGF0aDZrbF9lcnIoXFxcIndtaSBpcyBub3QgcmVhZHlcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yOTEtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI5NC1cXHRpZiAoIXRlc3RfYml0KFdMQU5fRU5BQkxFRCwgXFx1MDAyNnZpZi1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjI5NTpcXHRcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV0xBTl9DRkcsIFxcXCJ3bGFuIGRpc2FibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjk2LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwMjpzdGF0aWMgYm9vbCBhdGg2a2xfaXNfd3BhX2llKGNvbnN0IHU4ICpwb3MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDk6c3RhdGljIGJvb2wgYXRoNmtsX2lzX3Jzbl9pZShjb25zdCB1OCAqcG9zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzE0OnN0YXRpYyBib29sIGF0aDZrbF9pc193cHNfaWUoY29uc3QgdTggKnBvcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzE1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyMjpzdGF0aWMgaW50IGF0aDZrbF9zZXRfYXNzb2NfcmVxX2llcyhzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCBjb25zdCB1OCAqaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjMtXFx0XFx0XFx0XFx0ICAgIHNpemVfdCBpZXNfbGVuKVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDoyNTo0OS43ODM4MzcwNThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTUxNDI4NjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg2a2wgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBgYXRoNmtsYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgVVNCIGFuZCBTRElPIHZhcmlhbnRzOiBgQVRINktMX1VTQmAgYW5kIGBBVEg2S0xfU0RJT2AuIE15IGZpcnN0IHRob3VnaHQgaXM6IHNpbmNlIHdlIGhhdmUgYEFUSDZLTF9VU0JgIGF2YWlsYWJsZSwgdGhhdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyBpdCB3aXRoIHRoZSBkdW1teSBVU0IgZHJpdmVyLCBgdmhjaWAsIHdpdGhpbiBzeXprYWxsZXIuIFRoYXQncyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIGxldCBtZSBxdWlja2x5IHZlcmlmeSB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24uIElzIGBBVEg2S0xfVVNCYCBhbHJlYWR5IGVuYWJsZWQ/IE9yIGRvIEkgbmVlZCB0byBleHBsaWNpdGx5IGFkZCBpdCB0byB0aGUgYnVpbGQ/IEhtbSwgeWVzLCBsb29rcyBsaWtlIEkgbmVlZCB0byBlbnN1cmUgYm90aCBgQVRINktMX1VTQmAgYW5kIGBBVEg2S0xgIGFyZSBlbmFibGVkLiBHb29kLiBJJ2xsIG1ha2UgYSBub3RlIG9mIHRoYXQuXG5cbk5leHQsIEknbSBzZWVpbmcgdGhhdCB0aGUgcmVsZXZhbnQgcGF0Y2ggaXMgdG91Y2hpbmcgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBhbmQgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAuIEludGVyZXN0aW5nLiBUaG9zZSBldmVudHMgYXJlIGNyaXRpY2FsIGZvciBjb25uZWN0aXZpdHksIHNvIEkgZGVmaW5pdGVseSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB0aGVyZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLiBJJ2xsIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzAxNiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDoyNTo1NC4zMzUyNjcyOTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2MTMwMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTY4MD1hdGg2a2xfYWRkX2Jzc19pZl9uZWVkZWQoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjczNjp2b2lkIGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy03MzctXFx0XFx0XFx0XFx0ICAgdTggKmJzc2lkLCB1MTYgbGlzdGVuX2ludHZsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oPTMzPXZvaWQgYXRoNmtsX2NmZzgwMjExX3NjYW5fY29tcGxldGVfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgYm9vbCBhYm9ydGVkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmgtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oOjM1OnZvaWQgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTE2IGNoYW5uZWwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5oLTM2LVxcdFxcdFxcdFxcdCAgIHU4ICpic3NpZCwgdTE2IGxpc3Rlbl9pbnR2bCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jPTYyOD12b2lkIGF0aDZrbF9jb25uZWN0X2V2ZW50KHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBjaGFubmVsLCB1OCAqYnNzaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYy02MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM6NjM2OlxcdGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50KHZpZiwgY2hhbm5lbCwgYnNzaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNjM3LVxcdFxcdFxcdFxcdCAgICAgIGxpc3Rlbl9pbnQsIGJlYWNvbl9pbnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjI1OjU0LjM5Mjg4NTI0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyOTE3NTcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIGludG8gdGhlIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIGZ1bmN0aW9uLiBCYXNlZCBvbiB0aGUgbmFtZSBhbG9uZSwgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBoYW5kbGVyIGZvciBldmVudHMgcmVsYXRlZCB0byBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQsIGxpa2VseSB3aXRoaW4gdGhlIEF0aGVyb3MgNjAwMCBzZXJpZXMgd2lyZWxlc3MgZHJpdmVyLiBQcm9iYWJseSBhIFdNSSAoV2luZG93cyBNYW5hZ2VtZW50IEluc3RydW1lbnRhdGlvbikgZXZlbnQsIGltcGx5aW5nIGl0J3MgYSBtZWNoYW5pc20gZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgaG9zdCBhbmQgdGhlIGZpcm13YXJlLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgV2ktRmkgZHJpdmVycy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGZsb3cuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBoYW5kbGVyIHJlY2VpdmVzLCBob3cgaXQgcHJvY2Vzc2VzIHRoYXQgZGF0YSwgYW5kIHdoYXQgYWN0aW9ucyBpdCB0cmlnZ2Vycy4gSXMgaXQganVzdCBsb2dnaW5nLCBvciBkb2VzIGl0IGFjdHVhbGx5IGltcGFjdCBzdGF0ZSB0cmFuc2l0aW9ucyDigJMgYnJpbmdpbmcgdXAgdGhlIGludGVyZmFjZSwgYXNzaWduaW5nIGFuIElQIGFkZHJlc3MsIG9yIHBlcmhhcHMgbWFuYWdpbmcgc2VjdXJpdHkga2V5cz8gTGV0J3MgY2hlY2sgdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMuIEdvdHRhIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBidWZmZXIgb3ZlcmZsb3dzIGFuZCB0aGF0IHByb3BlciBlcnJvciBjaGVja2luZyBpcyBkb25lIGhlcmUuIFNlY3VyaXR5IGlzIHRoZSBtYWluIHByaW9yaXR5LiBJIGFtIHN1cmUgdGhhdCBJIGhhdmUgc2VlbiB0aGlzIGJlZm9yZS4gSXQgaGFzIHRvIGhhbmRsZSB0aGUgaW1wb3J0YW50IGJpdHMgYWJvdXQgd2lmaSBjb25uZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODAyNSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjI1OjU3LjkyMjA2NDEwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzg5NzkwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz04MzU9aW50IGF0aDZrbF93bWlfc2V0X3JvYW1fbW9kZV9jbWQoc3RydWN0IHdtaSAqd21pLCBlbnVtIHdtaV9yb2FtX21vZGUgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtODUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmM6ODU0OnN0YXRpYyBpbnQgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMtODU1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYz0zODg0PXN0YXRpYyBpbnQgYXRoNmtsX3dtaV9wcm9jX2V2ZW50c192aWYoc3RydWN0IHdtaSAqd21pLCB1MTYgaWZfaWR4LCB1MTYgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zODk5LVxcdFxcdGF0aDZrbF9kYmcoQVRINktMX0RCR19XTUksIFxcXCJXTUlfQ09OTkVDVF9FVkVOVElEXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jOjM5MDA6XFx0XFx0cmV0dXJuIGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeCh3bWksIGRhdGFwLCBsZW4sIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYy0zOTAxLVxcdGNhc2UgV01JX0RJU0NPTk5FQ1RfRVZFTlRJRDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjU6NTcuOTc5OTY3NDUzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM3ODQxMzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGg2a2wgV2ktRmkgRHJpdmVyIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93bi4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBmdW5jdGlvbiwgYW5kIGl0J3MgY2xlYXIgdGhhdCBpdCdzIHRyaWdnZXJlZCBmcm9tIGBhdGg2a2xfd21pX3Byb2NfZXZlbnRzX3ZpZmAsIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIFdNSSBldmVudHMgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGhhcmR3YXJlIOKAkyBvciBpbiB0aGlzIGNhc2UsIHRoZSBVU0IgZW5kcG9pbnQuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBtYWtlcyBpdCBkaXJlY3RseSByZWFjaGFibGUgdGhyb3VnaCBVU0IgZnV6emluZy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGlzc3VlIGJ5IGltcGxlbWVudGluZyBsZW5ndGggY2hlY2tzLiBTb3VuZHMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgZnVuY3Rpb25hbCBmaXguIEdpdmVuIHRoZSBkaXJlY3QgVVNCIGV4cG9zdXJlLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggcHV0dGluZyB0aHJvdWdoIGl0cyBwYWNlcyB3aXRoIHNvbWUgZnV6emluZy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMuIFdlIGhhdmUgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAgd2hpY2ggaXMgdGhlIGluaXRpYWwgZW50cnkgcG9pbnQgb2YgaW50ZXJlc3QsIGFuZCB0aGVuIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aHMuIExldCdzIHNlZSBpZiBgYXRoNmtsX3dtaV9jb25uZWN0X2V2ZW50X3J4YCBpcyBhIGhvdCBwYXRoLiBJdCdzIGhhbmRsaW5nIHRoZSBgV01JX0NPTk5FQ1RfRVZFTlRJRGAgZXZlbnQsIHdoaWNoIG9jY3VycyBkdXJpbmcgY29ubmVjdGlvbi4gTm90IGEgY29uc3RhbnQgc3RyZWFtIG9mIHRyYWZmaWMsIHNvIG5vdCBhIGhpZ2gtZnJlcXVlbmN5IHRhcmdldC4gSW50ZXJlc3RpbmdseSwgYGF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50YCBnZXRzIGNhbGxlZCBmcm9tIGBhdGg2a2xfY29ubmVjdF9ldmVudGAsIGFuZCAqdGhhdCogaXMgY2FsbGVkIGZyb20gYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAuIE1ha2VzIHNlbnNlLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBhcmUgZW5hYmxlZCBmb3IgbXkgdGVzdGluZy4gSXQgbG9va3MgbGlrZSBJJ2xsIG5lZWQgYEFUSDZLTGAgYW5kIHNwZWNpZmljYWxseSBgQVRINktMX1VTQmAgZW5hYmxlZCB0byByZXByb2R1Y2UgdGhpcyBvbiBteSBzZXR1cC4gVGltZSB0byB2ZXJpZnkgdGhlIEtjb25maWcgc2V0dGluZ3MgZm9yIGBBVEg2S0xfVVNCYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3MTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjY6MDQuMzU4MzgzNjY4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTgwODcyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRINktMX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWc9MTQ9Y29uZmlnIEFUSDZLTF9TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnOjI1OmNvbmZpZyBBVEg2S0xfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDZrbCBVU0Igc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjY6MDQuNDE0MTk3MjU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDQwNTI1MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBBVEg2S0wgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgYXRoNmtsYCBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgeWVzLCBgQVRINktMX1VTQmAgKmRvZXMqIGRlcGVuZCBvbiBgQVRINktMYCwgc28gdGhvc2UgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgdG8gdGFyZ2V0LiBKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHF1aWNrbHkgY2hlY2tlZCBpZiBgQVRINktMX1NESU9gIG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQsIGdpdmVuIFN5emthbGxlcidzIFNESU8gc3VwcG9ydCwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IHRoZSBwcmltYXJ5IHBhdGggaGVyZS4gVGhlcmVmb3JlLCBJIHdpbGwgaW5jbHVkZSBgQVRINktMYCBhbmQgYEFUSDZLTF9VU0JgIGluIHRoZSBjb25maWd1cmF0aW9ucy5cblxuTm93LCBsZXQncyBkaXNzZWN0IHRoZSBwYXRjaCBpdHNlbGYuIEl0J3MgYWRkcmVzc2luZyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBkdXJpbmcgdGhlIHBhcnNpbmcgb2YgV01JIGNvbm5lY3QgZXZlbnRzLiBUaGUgbW9kaWZpY2F0aW9ucyBmb2N1cyBvbiB0aGUgYGF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeGAgYW5kIGBhdGg2a2xfY2ZnODAyMTFfY29ubmVjdF9ldmVudGAgZnVuY3Rpb25zLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCB0aGVyZSBhcmUgbm93IGxlbmd0aCBjaGVja3MgdG8gZW5zdXJlIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXJlIHByb3Blcmx5IHNpemVkIGJlZm9yZSBhY2Nlc3NpbmcgdGhlaXIgbWVtYmVycy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaXMgYWRkaW5nIGJvdW5kcyBjaGVja3MgdG8gcHJldmVudCByZWFkcyBhbmQgd3JpdGVzIG91dHNpZGUgdGhlIGFsbG9jYXRlZCBtZW1vcnkgYnVmZmVycy5cblxuR2l2ZW4gdGhpcyB1bmRlcnN0YW5kaW5nLCBpdCdzIGNsZWFyIHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogZml4IGFuZCwgY3JpdGljYWxseSwgaXQncyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiBUaGUgdXBkYXRlZCBsZW5ndGggY2hlY2tzIGluIGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIHByZXZlbnQgcmVhZGluZyBiZXlvbmQgdGhlIGRhdGEgcHJvdmlkZWQsIGFuZCBgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRgIG5vdyB2ZXJpZmllcyBidWZmZXIgc2l6ZXMgYXMgd2VsbC5cblxuVGhlcmVmb3JlLCBmb3IgdGhpcyBmdXp6aW5nIHRhc2ssIEknbGwgc2V0IGBXb3J0aEZ1enppbmc6IHRydWVgLCBhbmQgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIGluY2x1ZGUgdGhlIHR3byBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQ6IGBhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhgIGFuZCBgYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRgLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIHdpbGwgYmUgYEFUSDZLTGAgYW5kIGBBVEg2S0xfVVNCYC4gVGhlIGBSZWFzb25pbmdgIHdpbGwgYmU6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gcGFyc2luZyBXTUkgY29ubmVjdCBldmVudHMgaW4gdGhlIGF0aDZrbCBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTQzLCJPdXRwdXRUb2tlbnMiOjExMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MjY6MTUuODU0NzI1MTA1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5NjQyNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDZLTFwiLFxuICAgIFwiQVRINktMX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDZrbF93bWlfY29ubmVjdF9ldmVudF9yeFwiLFxuICAgIFwiYXRoNmtsX2NmZzgwMjExX2Nvbm5lY3RfZXZlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcyB3aGVuIHBhcnNpbmcgV01JIGNvbm5lY3QgZXZlbnRzIGluIHRoZSBhdGg2a2wgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg2S0xcIixcbiAgICBcIkFUSDZLTF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg2a2xfd21pX2Nvbm5lY3RfZXZlbnRfcnhcIixcbiAgICBcImF0aDZrbF9jZmc4MDIxMV9jb25uZWN0X2V2ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMgd2hlbiBwYXJzaW5nIFdNSSBjb25uZWN0IGV2ZW50cyBpbiB0aGUgYXRoNmtsIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflownb28h[1] Phase: Succeeded StartedAt: 2026-07-12 00:26:26 +0000 UTC FinishedAt: 2026-07-12 00:26:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-12 00:26:26 +0000 UTC FinishedAt: 2026-07-12 00:26:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2] Phase: Succeeded StartedAt: 2026-07-12 00:26:26 +0000 UTC FinishedAt: 2026-07-12 03:15:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-12 00:26:26 +0000 UTC FinishedAt: 2026-07-12 03:15:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-12 00:26:26 +0000 UTC FinishedAt: 2026-07-12 00:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-12 00:26:26 +0000 UTC FinishedAt: 2026-07-12 00:26:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflownb28h/series-workflownb28h-convert-artifact-3842088603/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-12 00:26:36 +0000 UTC FinishedAt: 2026-07-12 01:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-12 00:26:36 +0000 UTC FinishedAt: 2026-07-12 01:19:22 +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:*3fb338e4-c621-4853-bfd4-c7ede45c2688,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-workflownb28h/series-workflownb28h-convert-artifact-3842088603/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": "997b8376-16d1-46d0-8e90-e45efebab412", "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-workflownb28h/series-workflownb28h-build-action-4130810585/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-12 00:26:36 +0000 UTC FinishedAt: 2026-07-12 01:18:45 +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:*3fb338e4-c621-4853-bfd4-c7ede45c2688,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-workflownb28h/series-workflownb28h-convert-artifact-3842088603/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": "997b8376-16d1-46d0-8e90-e45efebab412", "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-workflownb28h/series-workflownb28h-build-action-4130810585/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-12 01:19:22 +0000 UTC FinishedAt: 2026-07-12 01:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-12 01:19:22 +0000 UTC FinishedAt: 2026-07-12 01:19:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-12 01:19:22 +0000 UTC FinishedAt: 2026-07-12 01:19:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-12 01:19:22 +0000 UTC FinishedAt: 2026-07-12 01:19:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflownb28h/series-workflownb28h-convert-artifact-1497425394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-12 01:19:32 +0000 UTC FinishedAt: 2026-07-12 01:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-12 01:19:32 +0000 UTC FinishedAt: 2026-07-12 01:21:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*997b8376-16d1-46d0-8e90-e45efebab412,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-workflownb28h/series-workflownb28h-build-action-4130810585/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-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-12 01:21:42 +0000 UTC FinishedAt: 2026-07-12 01:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-12 01:21:42 +0000 UTC FinishedAt: 2026-07-12 01:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-12 01:21:42 +0000 UTC FinishedAt: 2026-07-12 02:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-12 01:21:42 +0000 UTC FinishedAt: 2026-07-12 02:22:33 +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:*3fb338e4-c621-4853-bfd4-c7ede45c2688,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-workflownb28h/series-workflownb28h-convert-artifact-1497425394/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": "7b62742b-2482-428d-81ec-7575725ee881", "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-workflownb28h/series-workflownb28h-build-action-2163139974/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-12 01:21:42 +0000 UTC FinishedAt: 2026-07-12 02:22:23 +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:*3fb338e4-c621-4853-bfd4-c7ede45c2688,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-workflownb28h/series-workflownb28h-convert-artifact-1497425394/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": "7b62742b-2482-428d-81ec-7575725ee881", "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-workflownb28h/series-workflownb28h-build-action-2163139974/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-12 02:22:33 +0000 UTC FinishedAt: 2026-07-12 02:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-12 02:22:33 +0000 UTC FinishedAt: 2026-07-12 02:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-12 02:22:33 +0000 UTC FinishedAt: 2026-07-12 02:24:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-12 02:22:33 +0000 UTC FinishedAt: 2026-07-12 02:24:25 +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:*7b62742b-2482-428d-81ec-7575725ee881,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-workflownb28h/series-workflownb28h-build-action-2163139974/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-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-12 02:24:35 +0000 UTC FinishedAt: 2026-07-12 03:15:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-12 02:24:35 +0000 UTC FinishedAt: 2026-07-12 03:15:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*997b8376-16d1-46d0-8e90-e45efebab412,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7b62742b-2482-428d-81ec-7575725ee881,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-workflownb28h/series-workflownb28h-build-action-4130810585/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-workflownb28h/series-workflownb28h-build-action-2163139974/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-12 02:24:35 +0000 UTC FinishedAt: 2026-07-12 02:24:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-12 02:24:35 +0000 UTC FinishedAt: 2026-07-12 02:24:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownb28h/series-workflownb28h-convert-artifact-4251987527/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-12 02:24:35 +0000 UTC FinishedAt: 2026-07-12 02:24:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-12 02:24:35 +0000 UTC FinishedAt: 2026-07-12 02:24:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-12 02:24:35 +0000 UTC FinishedAt: 2026-07-12 02:24:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-12 02:24:45 +0000 UTC FinishedAt: 2026-07-12 03:15:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb28h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath6kl_wmi_connect_event_rx","ath6kl_cfg80211_connect_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dd3210c47e8d3ac6b4e9141fc68acc03b38c0ba3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH6KL","ATH6KL_USB"],"series_id":"6d6e49d8-018f-4ee1-a72e-bd0c27801138","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-12 02:24:45 +0000 UTC FinishedAt: 2026-07-12 03:15:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*997b8376-16d1-46d0-8e90-e45efebab412,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7b62742b-2482-428d-81ec-7575725ee881,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-workflownb28h/series-workflownb28h-build-action-4130810585/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-workflownb28h/series-workflownb28h-build-action-2163139974/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-workflownb28h/series-workflownb28h-convert-artifact-4251987527/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,}