Name: series-workflowk2l7n Phase: Succeeded StartedAt: 2026-08-10 09:12:07 +0000 UTC FinishedAt: 2026-08-10 11:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[0] Phase: Succeeded StartedAt: 2026-08-10 09:12:07 +0000 UTC FinishedAt: 2026-08-10 09:43:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 09:12:07 +0000 UTC FinishedAt: 2026-08-10 09:43:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "001b5d347d8ba39b2dccaefcc57967b18caec8fe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E100" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "001b5d347d8ba39b2dccaefcc57967b18caec8fe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E100" ], "series_id": "cd49b575-5bbd-45fa-a20a-5da37af9f915" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "e100_probe", "e100_set_eeprom" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZTEwMF9wcm9iZSYjMzQ7LAogICAgJiMzNDtlMTAwX3NldF9lZXByb20mIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBpc3N1ZSB3aXRoIGBhZGRyX2xlbmAgaW4gYGUxMDBfZWVwcm9tX3JlYWRgLiBXaGVuIGBhZGRyX2xlbmAgdW5kZXJmbG93cywgaXQgYmVjb21lcyBhIGxhcmdlIHZhbHVlLCB3aGljaCBzdWJzZXF1ZW50bHkgY2F1c2VzIGEgc2hpZnQtb3V0LW9mLWJvdW5kcyAoYDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCkgd2hlbiBjYWxjdWxhdGluZyBgbmljLVx1MDAzZWVlcHJvbV93Y2AuIFRoaXMgbGFyZ2UgYGVlcHJvbV93Y2AgdmFsdWUgdGhlbiBsZWFkcyB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHJlYWQgb24gdGhlIGZpeGVkLXNpemUgYG5pYy1cdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXG5cblRoZXNlIGFyZSBjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgYnVncyAoc2hpZnQtb3V0LW9mLWJvdW5kcyBhbmQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcykuIFN0YW5kYXJkIEtBU0FOICh3aGljaCBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFuZCBVQlNBTiAod2hpY2ggZGV0ZWN0cyBzaGlmdC1vdXQtb2YtYm91bmRzKSBhcmUgcGVyZmVjdGx5IGNhcGFibGUgb2YgY2F0Y2hpbmcgdGhpcyBidWcuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgdXNlZCBpbiBjb250cm9sIGZsb3csIG9yIGxlYWtlZCB0byB1c2Vyc3BhY2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gRUVQUk9NIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyLiBUaGVzZSBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSBhbmQgdmlhIGV0aHRvb2wgKGBlMTAwX3NldF9lZXByb21gKS4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIFFFTVUmIzM5O3MgYGk4MjU1OWVyYCBlbXVsYXRlZCBQQ0kgZGV2aWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTc3NGFlMDQ4ZGNlM2I3OTg5MDYxMWQxOTg4MjZiYzhhYjcyMDM5ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDA5OjMwOjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuaW5kZXggMjk5NjA3NjJlNjRhOC4uMjZhN2MwYWFhNmUyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5AQCAtNzQ0LDcgJiM0Mzs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG4gXHRcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXG4gXHRcdGN0cmwgPSBpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIFx0XHRpZiAoIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTYpIHtcbi1cdFx0XHQqYWRkcl9sZW4gLT0gKGkgLSAxNik7XG4mIzQzO1x0XHRcdHUxNiBsZW4gPSBpIC0gMTY7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAobGVuIFx1MDAzZSAqYWRkcl9sZW4pXG4mIzQzO1x0XHRcdFx0KmFkZHJfbGVuID0gMDtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdCphZGRyX2xlbiAtPSBsZW47XG4gXHRcdFx0aSA9IDE3O1xuIFx0XHR9XG4gXG5AQCAtNzY1LDYgJiM0Mzs3NzAsMTEgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbiBcbiBcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG4gXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIDApO1xuJiM0MztcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlIDgpIHtcbiYjNDM7XHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuJiM0MztcdFx0XHQgIFwmIzM0O2ludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XFxuXCYjMzQ7LCBhZGRyX2xlbik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4gXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gXG4gXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykge1xuQEAgLTc5MSw2ICYjNDM7ODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuIFxuIFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiBcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4mIzQzO1x0aWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcdTAwM2UgOCkge1xuJiM0MztcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsXG4mIzQzO1x0XHRcdCAgXCYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXG5cJiMzNDssIGFkZHJfbGVuKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiBcdG5pYy1cdTAwM2VlZXByb21fd2MgPSAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbjtcbiBcbiBcdGlmIChzdGFydCAmIzQzOyBjb3VudCBcdTAwM2U9IG5pYy1cdTAwM2VlZXByb21fd2MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlMTAwX3Byb2JlJiMzNDssCiAgICAmIzM0O2UxMDBfc2V0X2VlcHJvbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBFRVBST00gcmVhZC93cml0ZSBvcGVyYXRpb25zIGluIHRoZSBJbnRlbCBQUk8vMTAwIChlMTAwKSBFdGhlcm5ldCBkcml2ZXIuIFRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApIGFuZCB2aWEgZXRodG9vbCAoYGUxMDBfc2V0X2VlcHJvbWApLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgUUVNVSYjMzk7cyBgaTgyNTU5ZXJgIGVtdWxhdGVkIFBDSSBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNzc0YWUwNDhkY2UzYjc5ODkwNjExZDE5ODgyNmJjOGFiNzIwMzlmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTAgMDk6MzA6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMKaW5kZXggMjk5NjA3NjJlNjRhOC4uMjZhN2MwYWFhNmUyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYwpAQCAtNzQ0LDcgJiM0Mzs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpCiAJCSAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovCiAJCWN0cmwgPSBpb3JlYWQ4KCZhbXA7bmljLSZndDtjc3ItJmd0O2VlcHJvbV9jdHJsX2xvKTsKIAkJaWYgKCEoY3RybCAmYW1wOyBlZWRvKSAmYW1wOyZhbXA7IGkgJmd0OyAxNikgewotCQkJKmFkZHJfbGVuIC09IChpIC0gMTYpOwomIzQzOwkJCXUxNiBsZW4gPSBpIC0gMTY7CiYjNDM7CiYjNDM7CQkJaWYgKGxlbiAmZ3Q7ICphZGRyX2xlbikKJiM0MzsJCQkJKmFkZHJfbGVuID0gMDsKJiM0MzsJCQllbHNlCiYjNDM7CQkJCSphZGRyX2xlbiAtPSBsZW47CiAJCQlpID0gMTc7CiAJCX0KIApAQCAtNzY1LDYgJiM0Mzs3NzAsMTEgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYykKIAogCS8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovCiAJZTEwMF9lZXByb21fcmVhZChuaWMsICZhbXA7YWRkcl9sZW4sIDApOwomIzQzOwlpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuICZndDsgOCkgewomIzQzOwkJbmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy0mZ3Q7bmV0ZGV2LAomIzQzOwkJCSAgJiMzNDtpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxuJiMzNDssIGFkZHJfbGVuKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiAJbmljLSZndDtlZXByb21fd2MgPSAxICZsdDsmbHQ7IGFkZHJfbGVuOwogCiAJZm9yIChhZGRyID0gMDsgYWRkciAmbHQ7IG5pYy0mZ3Q7ZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykgewpAQCAtNzkxLDYgJiM0Mzs4MDEsMTEgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpCiAKIAkvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqLwogCWUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCAwKTsKJiM0MzsJaWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiAmZ3Q7IDgpIHsKJiM0MzsJCW5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtJmd0O25ldGRldiwKJiM0MzsJCQkgICYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcbiYjMzQ7LCBhZGRyX2xlbik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCW5pYy0mZ3Q7ZWVwcm9tX3djID0gMSAmbHQ7Jmx0OyBhZGRyX2xlbjsKIAogCWlmIChzdGFydCAmIzQzOyBjb3VudCAmZ3Q7PSBuaWMtJmd0O2VlcHJvbV93YykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBJbnRlbCBQUk8vMTAwIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jYCBmaWxlLiBUaGUgZTEwMCBkcml2ZXIsIGZvciB0aG9zZSBvZiB1cyB3aG8gaGF2ZW4mIzM5O3QgZGVhbHQgd2l0aCBpdCByZWNlbnRseSwgaXMgdGhlIGRyaXZlciBmb3IgdGhvc2Ugb2xkZXIgSW50ZWwgUFJPLzEwMCBFdGhlcm5ldCBhZGFwdGVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gd2UgZnV6eiB0aGlzIHdpdGggUUVNVT8gQW5kIHRoZW4gSSByZW1lbWJlcmVkLCBRRU1VIGRvZXMgZW11bGF0ZSBzb21lIGUxMDAtY29tcGF0aWJsZSBkZXZpY2VzOiB0aGUgYGk4MjU1N2JgLCBgaTgyNTU5ZXJgLCBhbmQgYGk4MjU1OWNgLiBTbywgbGV0JiMzOTtzIGxvb2sgZGVlcGVyIGF0IHRoZSBwYXRjaCBhbmQgc2VlLgoKVGhlIGZ1bmN0aW9ucyB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbiDigJMgYGUxMDBfZWVwcm9tX3JlYWRgLCBgZTEwMF9lZXByb21fbG9hZGAsIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAg4oCTIGFyZSB0aGUga2V5IGZ1bmN0aW9ucy4gT2theSwgYGUxMDBfZWVwcm9tX2xvYWRgIGdldHMgY2FsbGVkIGR1cmluZyBwcm9iZSwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB0ZXN0aW5nIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAgZ2V0cyBjYWxsZWQgZnJvbSBgZXRodG9vbGAuIExldCYjMzk7cyBjaGVjayBpZiBRRU1VIHJlYWxseSBkb2VzIGVtdWxhdGUgdGhlIGUxMDAuIEFoLCB5ZXMsIHRoZSBgaTgyNTU5ZXJgIGluIFFFTVUgZG9lcyB1c2UgdGhlIGUxMDAgZHJpdmVyLgoKV2FpdCBhIHNlY29uZOKApiB0aGUgYGk4MjU1OWVyYCBpcyBhIFBDSSBkZXZpY2UsIGlzbiYjMzk7dCBpdD8gT2theSwgc28gY2FuIHN5emthbGxlciBmdXp6IFBDSSBkZXZpY2VzPyBZZXMsIGl0IGNhbiwgdmlhIHRoZSB2aGNpIGludGVyZmFjZSBvciBieSBkaXJlY3RseSBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXRkZXYgb3IgdmlhIGV0aHRvb2wuIEJpbmdvLiBTeXprYWxsZXIgY2FuIGZ1enogZXRodG9vbCBkaXJlY3RseSwgcmlnaHQ/IFNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBlMTAwX2VlcHJvbV9zYXZlYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGFnYWluLiBCdXQgd2UgbmVlZCB0byBjaGVjayBob3cgcmVhY2hhYmxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUuCgpgZTEwMF9lZXByb21fbG9hZGAgaXMgY2FsbGVkIGZyb20gYGUxMDBfcHJvYmVgLCB3aGljaCBpcyBnb29kLCBhcyBtZW50aW9uZWQgYmVmb3JlLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgIGlzIGNhbGxlZCBmcm9tIGBlMTAwX3NldF9lZXByb21gLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgZTEwMF9zZXRfZWVwcm9tYCBpcyB1c2VkLiBUaW1lIHRvIHdoaXAgb3V0IHRoZSBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZTEwMF9zZXRfZWVwcm9tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNTQ3PXN0YXRpYyBpbnQgZTEwMF9nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjU1ODpzdGF0aWMgaW50IGUxMDBfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTktXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZTEwMF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc2Mi1cdC5nZXRfZWVwcm9tXHRcdD0gZTEwMF9nZXRfZWVwcm9tLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3NjM6XHQuc2V0X2VlcHJvbVx0XHQ9IGUxMDBfc2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzY0LVx0LmdldF9yaW5ncGFyYW1cdFx0PSBlMTAwX2dldF9yaW5ncGFyYW0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW50ZWwgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGBlMTAwYCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoYXQsIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgdGV4dCB0ZWxscyBtZSB0aGUgZHJpdmVyIGlzIHJlZmVycmVkIHRvIGFzIGBlMTAwYCwgc28gbGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhhdC4gQnV0IEkgYWxzbyBzZWUgYENPTkZJR19FMTAwYCBtZW50aW9uZWQuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIGNoZWNraW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbnRyb2xsZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUuCgpHaXZlbiBteSBleHBlcmllbmNlLCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGV4YW1pbmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgLiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgSW50ZWwgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gaXQmIzM5O3MgYSBzYWZlIGJldCB0aGF0IGBDT05GSUdfRTEwMGAsIGlmIGl0IGV4aXN0cywgaXMgZGVmaW5lZCBhbmQgY29udHJvbGxlZCB0aGVyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGhhcmR3YXJlIGZlYXR1cmVzLCBwb3RlbnRpYWwgY29uZmxpY3RzLCBhbmQgdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEEgZGVlcCBkaXZlIGludG8gdGhpcyBLY29uZmlnIHdpbGwgcmV2ZWFsIHRoZSB3aG9sZSBzdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRTEwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI6Y29uZmlnIEUxMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwJiM0Mzsgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjQ1OmNvbmZpZyBFMTAwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00Ni1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjYxOmNvbmZpZyBFMTAwMEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjItXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwMCBQQ0ktRXhwcmVzcyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo4MTpjb25maWcgRTEwMDBFX0hXVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODItXHRib29sIFwmIzM0O1N1cHBvcnQgSFcgY3Jvc3MtdGltZXN0YW1wIG9uIFBDSCBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBjb25maWcgRTEwMGAgRGVwZW5kZW5jaWVzKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYGNvbmZpZyBFMTAwYC4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gSeKAmW0gdGhpbmtpbmcsIGdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhpcyBzeXN0ZW0sIHdoYXQgYXJlIHRoZSBtb3N0IGxpa2VseSBjb21wb25lbnRzIG9yIG1vZHVsZXMgdGhhdCByZWx5IG9uLCBvciBhcmUgaW5mbHVlbmNlZCBieSwgdGhlIHNldHRpbmdzIHdpdGhpbiBgY29uZmlnIEUxMDBgPyBJJiMzOTttIGltbWVkaWF0ZWx5IHJ1bm5pbmcgdGhyb3VnaCBhIG1lbnRhbCBjaGVja2xpc3Q6IGlzIGl0IHByaW1hcmlseSBoYXJkd2FyZS1yZWxhdGVkLCBvciBkb2VzIGl0IGFsc28gaW1wYWN0IGFueSBvZiB0aGUgc29mdHdhcmUgc3RhY2tzPyBBcmUgd2UgdGFsa2luZyBkcml2ZXIgYmVoYXZpb3IsIG5ldHdvcmsgc3RhY2sgcGFyYW1ldGVycywgaW50ZXJydXB0IHNldHRpbmdzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGhpZ2gtbGV2ZWwgYXJlYXMgdG8gZm9jdXMgb24gZmlyc3QsIGJlZm9yZSBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBsb3dlci1sZXZlbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBUaGF0IHdheSBJIGNhbiBiZSBlZmZpY2llbnQgaW4gZ2V0dGluZyB0byB0aGUgcm9vdCBvZiB3aGF0IGRlcGVuZHMgb24gdGhpcyBjb25maWcuIExldCBtZSBxdWlja2x5IHNjb3BlIHRoZSBzeXN0ZW0gdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIyOlx0Y29uZmlnIEUxMDBcbiAgMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIFBSTy8xMDAmIzQzOyBzdXBwb3J0XCYjMzQ7XG4gIDI0Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAyNTpcdFx0c2VsZWN0IE1JSVxuICAyNjpcdFx0aGVscFxuICAyNzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBQUk8vMTAwIGZhbWlseSBvZiBhZGFwdGVycy5cbiAgMjg6XHRcdCAgVG8gdmVyaWZ5IHRoYXQgeW91ciBhZGFwdGVyIGlzIHN1cHBvcnRlZCwgZmluZCB0aGUgYm9hcmQgSUQgbnVtYmVyXG4gIDI5Olx0XHQgIG9uIHRoZSBhZGFwdGVyLiBMb29rIGZvciBhIGxhYmVsIHRoYXQgaGFzIGEgYmFyY29kZSBhbmQgYSBudW1iZXJcbiAgMzA6XHRcdCAgaW4gdGhlIGZvcm1hdCAxMjM0NTYtMDAxIChzaXggZGlnaXRzIGh5cGhlbiB0aHJlZSBkaWdpdHMpLlxuICAzMTpcdFxuICAzMjpcdFx0ICBVc2UgdGhlIGFib3ZlIGluZm9ybWF0aW9uIGFuZCB0aGUgQWRhcHRlciBcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXRcbiAgMzM6XHRcdCAgY2FuIGJlIGxvY2F0ZWQgYXQ6XG4gIDM0Olx0XG4gIDM1Olx0XHQgIFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVx1MDAzZVxuICAzNjpcdFxuICAzNzpcdFx0ICB0byBpZGVudGlmeSB0aGUgYWRhcHRlci5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gIDQwOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAucnN0XHUwMDNlLlxuICA0MTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5OTkKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgZTEwMCBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGUxMDBgIGRyaXZlciwgYW5kIGl0JiMzOTtzIGEgcHJldHR5IHN0YW5kYXJkIFBDSSBldGhlcm5ldCBkcml2ZXIuIEkgc2VlIGEgcG90ZW50aWFsIGF2ZW51ZSBmb3IgZnV6emluZyBpdCDigJMgc3BlY2lmaWNhbGx5IHRocm91Z2ggYGV0aHRvb2xgLCBzaW5jZSB0aGUgYGUxMDBfc2V0X2VlcHJvbWAgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aGF0IHdheS4gSG1tLCB3YWl0IGEgc2Vjb25kLi4uIGlzbiYjMzk7dCBgZTEwMF9lZXByb21fbG9hZGAgYWxzbyBjYWxsZWQgZnJvbSBgZTEwMF9wcm9iZWA/IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuCgpUaGUga2V5IHRoZW4gYmVjb21lcyBnZXR0aW5nIHRoZSBkcml2ZXIgbG9hZGVkLiBJZiBJIGNhbiBlbXVsYXRlIHRoZSBkZXZpY2UsIG9yIGlkZWFsbHkgbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyIHRvIGluamVjdCBQQ0kgZGV2aWNlcywgSSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIGBlMTAwX3Byb2JlYC4gR29vZCBuZXdzOiBzeXprYWxsZXIgZG9lcyBoYXZlIGEgUENJIGZ1enplciwgc3BlY2lmaWNhbGx5IGB2ZmlvL3BjaWAsIHdoaWNoIGNvdWxkIGJlIHBlcmZlY3QgZm9yIHRoaXMuCgpBbmQsIHRoaW5raW5nIGFib3V0IGVtdWxhdGlvbiwgaXNuJiMzOTt0IFFFTVUga25vd24gdG8gc3VwcG9ydCBgaTgyNTU5ZXJgPyBBbmQgZG9lc24mIzM5O3QgdGhlIGBlMTAwYCBkcml2ZXIgYWxzbyBoYW5kbGUgdGhhdCBwYXJ0aWN1bGFyIGRldmljZT8gSSBzaG91bGQgcXVpY2tseSBjaGVjayB0byBjb25maXJtIHRoZSBgZTEwMGAgZHJpdmVyJiMzOTtzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgYGk4MjU1OWVyYCBkZXZpY2Ug4oCTIHRoYXQgY291bGQgYmUgYSBsb3ctZWZmb3J0IHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2k4MjU1OSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGUxMDAuYyBmb3IgUENJIElEIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGUxMDAgZHJpdmVyIGhhbmRsZXMgUENJIGRldmljZSBpZGVudGlmaWNhdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byBgZTEwMC5jYC4gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgaG93IGl0JiMzOTtzIGRvbmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIGNvZGUgdGhhdCBtYXBzIHRoZSBQQ0kgVmVuZG9yIElEIGFuZCBEZXZpY2UgSUQgdG8gdGhlIGRyaXZlciYjMzk7cyBzdXBwb3J0ZWQgaGFyZHdhcmUuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaGFuZGxlIHRoYXQgbWF0Y2hpbmcgcHJvY2VzcywgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBxdWlya3Mgb3Igc3BlY2lmaWMgaGFuZGxpbmcgZm9yIGRpZmZlcmVudCByZXZpc2lvbnMgb3IgdmVuZG9ycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGdyYW51bGFyaXR5IG9mIHRoZWlyIGRldmljZSBpZGVudGlmaWNhdGlvbiBhbmQgaG93IHJvYnVzdCBpdCBpcy4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBub3QgYSBzaW1wbGUgaGFyZGNvZGVkIHRhYmxlIGFuZCB0aGVyZSYjMzk7cyBzb21lIGVsZWdhbnQgdXNlIG9mIHdpbGRjYXJkcyBvciBtb3JlIHNvcGhpc3RpY2F0ZWQgbWF0Y2hpbmcgbG9naWMsIG1heWJlIGV2ZW4gc29tZSBydW50aW1lIHByb2JpbmcuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xNzc9TU9EVUxFX1BBUk1fREVTQyh1c2VfaW8sIFwmIzM0O0ZvcmNlIHVzZSBvZiBpL28gYWNjZXNzIG1vZGVcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBlMTAwX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg2LVx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAyOSwgMCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI4MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlMTAwX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjg0NTpzdGF0aWMgaW50IGUxMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjg0Ni17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMjUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIG15IGRvbWFpbiBvZiBleHBlcnRpc2U6CgoqKkRpdmluZyBpbnRvIHRoZSBEYXRhKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIG9mIHRoaXMgY3VycmVudCBwcm9ibGVtLCBzbyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGxvb2sgYXQgYGUxMDBfaWRfdGFibGVgLiBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgZm9ybWluZyBoeXBvdGhlc2VzIGFib3V0IHdoYXQgZGF0YSBpdCBsaWtlbHkgY29udGFpbnMsIHRoZSBmb3JtYXQgaXQmIzM5O3MgbGlrZWx5IHN0cnVjdHVyZWQgaW4sIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgb3RoZXIgZWxlbWVudHMgb2YgdGhpcyBzeXN0ZW0uIEkmIzM5O20gaG9waW5nIGl0JiMzOTtsbCBwcm92aWRlIGEga2V5LCBhIG1hcCwgYSBzdGFydGluZyBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBCYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEkgaGF2ZSBzb21lIGV4cGVjdGF0aW9ucywgYnV0IGNvbmZpcm1hdGlvbiBpcyBrZXkuIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLiBJdCYjMzk7cyB0aW1lIHRvIHJlYWQgdGhpcyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4NTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBlMTAwX2lkX3RhYmxlW10gPSB7XG4gMTg2Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDI5LCAwKSxcbiAxODc6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzAsIDApLFxuIDE4ODpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzMSwgMyksXG4gMTg5Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDMyLCAzKSxcbiAxOTA6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzMsIDMpLFxuIDE5MTpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzNCwgMyksXG4gMTkyOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDM4LCAzKSxcbiAxOTM6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzksIDQpLFxuIDE5NDpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzQSwgNCksXG4gMTk1Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDNCLCA0KSxcbiAxOTY6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwM0MsIDQpLFxuIDE5NzpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzRCwgNCksXG4gMTk4Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDNFLCA0KSxcbiAxOTk6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTAsIDUpLFxuIDIwMDpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1MSwgNSksXG4gMjAxOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDUyLCA1KSxcbiAyMDI6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTMsIDUpLFxuIDIwMzpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1NCwgNSksXG4gMjA0Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDU1LCA1KSxcbiAyMDU6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTYsIDUpLFxuIDIwNjpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1NywgNSksXG4gMjA3Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDU5LCAwKSxcbiAyMDg6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNjQsIDYpLFxuIDIwOTpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2NSwgNiksXG4gMjEwOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDY2LCA2KSxcbiAyMTE6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNjcsIDYpLFxuIDIxMjpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2OCwgNiksXG4gMjEzOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDY5LCA2KSxcbiAyMTQ6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNkEsIDYpLFxuIDIxNTpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2QiwgNiksXG4gMjE2Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDkxLCA3KSxcbiAyMTc6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwOTIsIDcpLFxuIDIxODpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA5MywgNyksXG4gMjE5Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDk0LCA3KSxcbiAyMjA6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwOTUsIDcpLFxuIDIyMTpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTBmZSwgNyksXG4gMjIyOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMjA5LCAwKSxcbiAyMjM6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEyMjksIDApLFxuIDIyNDpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MjQ0OSwgMiksXG4gMjI1Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgyNDU5LCAyKSxcbiAyMjY6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDI0NUQsIDIpLFxuIDIyNzpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MjdEQywgNyksXG4gMjI4Olx0XHR7IDAsIH1cbiAyMjk6XHR9O1xuIDIzMDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBlMTAwX2lkX3RhYmxlKTtcbiAyMzE6XHRcbiAyMzI6XHRlbnVtIG1hYyB7XG4gMjMzOlx0XHRtYWNfODI1NTdfRDEwMF9BICA9IDAsXG4gMjM0Olx0XHRtYWNfODI1NTdfRDEwMF9CICA9IDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2OTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbnRlbCA4MjU1OSBFdGhlcm5ldCBDb250cm9sbGVyIEVtdWxhdGlvbioqCgpPa2F5LCBzbyBRRU1VJiMzOTtzIGBpODI1NTllcmAgZW11bGF0ZXMgYSBkZXZpY2Ugd2l0aCB0aGUgUENJIElEIDgwODY6MTIwOS4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIDB4MTIwOSBpcyBhY3R1YWxseSBwcmVzZW50IGluIHRoZSBkZXZpY2UgbGlzdC4gWWVwLCB0aGVyZSBpdCBpczogYElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEyMDksIDApYC4gVGhhdCBjb25maXJtcyBRRU1VICpkb2VzKiBlbXVsYXRlIGl0LCB3aGljaCBtZWFucyBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdC4gRXhjZWxsZW50LgoKTm93LCB0aGUgcGF0Y2ggdG91Y2hlcyBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYC4gQSBxdWljayBnbGFuY2Ugc2hvd3MgYGUxMDBfZWVwcm9tX3JlYWRgIGlzIGNhbGxlZCBieSBib3RoIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgLiBgZTEwMF9lZXByb21fbG9hZGAgaXMgaW52b2tlZCBmcm9tIGBlMTAwX3Byb2JlYCwgd2hpY2ggaXMgc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24uIEFuZCBgZTEwMF9lZXByb21fc2F2ZWAgaXMgdXNlZCBieSBgZTEwMF9zZXRfZWVwcm9tYC4gQWhhISBgZTEwMF9zZXRfZWVwcm9tYCBpcyBhbiBldGh0b29sIG9wZXJhdGlvbi4gVGhpcyBpcyBnb29kIG5ld3M7IGl0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyAqYXJlKiByZWFjaGFibGUgdGhyb3VnaCBzdGFuZGFyZCBuZXR3b3JrIG1hbmFnZW1lbnQgaW50ZXJmYWNlcywgbWFraW5nIHRoZW0gcmlwZSB0YXJnZXRzIGZvciBmdXp6aW5nLgoKQnV0LCBJIHNob3VsZCB0YWtlIGEgbW9tZW50IHRvIHNlZSBpZiBgZTEwMF9lZXByb21fcmVhZGAgaXMgaW52b2tlZCBmcm9tIGFueSAqb3RoZXIqIGxvY2F0aW9ucy4gTmVlZCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBtb3JlIGNyaXRpY2FsIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlMTAwX2VlcHJvbV9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz02ODM9c3RhdGljIHZvaWQgZTEwMF9lZXByb21fd3JpdGUoc3RydWN0IG5pYyAqbmljLCB1MTYgYWRkcl9sZW4sIHUxNiBhZGRyLCBfX2xlMTYgZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzIwLS8qIEdlbmVyYWwgdGVjaG5pcXVlIHN0b2xlbiBmcm9tIHRoZSBlZXBybzEwMCBkcml2ZXIgLSB2ZXJ5IGNsZXZlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjcyMTpzdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz03Njc9c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzcxLVx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3NzI6XHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3My1cdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlIDgpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzgwLVx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YzsgYWRkciYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3ODE6XHRcdG5pYy1cdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4Mi1cdFx0aWYgKGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz03OTg9c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMi1cdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODAzOlx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDQtXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMuIFRoYXQmIzM5O3MgZ29vZCwgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBJdCYjMzk7cyBhYm91dCBwcmV2ZW50aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBpbmZpbml0ZSBsb29wcywgd2hpY2ggY291bGQgbGVhZCB0byBhbGwgc29ydHMgb2YgbmFzdHkgcHJvYmxlbXMsIGFuZCB0aGlzIGRyaXZlciBpcyB0aGUgYGUxMDBgIGRyaXZlciwgd2l0aCBjb25maWd1cmF0aW9uIGRlZmluZWQgYXMgYEUxMDBgLgoKVGhlIG1haW4gZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYGUxMDBfc2V0X2VlcHJvbWAgYW5kIGBlMTAwX3Byb2JlYC4gV2FpdCwgYGUxMDBfcHJvYmVgIGlzIGEgcHJvYmUgZnVuY3Rpb24uIEl0JiMzOTtzIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgZmlyc3QgcHJvYmVkLCByaWdodD8gT2theSwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgZHJpdmVyIGdldHMgaW5pdGlhbGl6ZWQuCgpOb3csIGBlMTAwX3NldF9lZXByb21gIGlzIGNhbGxlZCB2aWEgZXRodG9vbC4gSW50ZXJlc3RpbmcuLi4gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZzogSXMgYGUxMDBfc2V0X2VlcHJvbWAgZGVjbGFyZWQgYXMgc3RhdGljPyBZdXAsIGl0IGlzLiBOb3csIHRoZSBpbnN0cnVjdGlvbnMgaGVyZSBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgYGUxMDBfc2V0X2VlcHJvbWAgaXMgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGhpbiBgZXRodG9vbF9vcHNgLCBzbyB0aGUgc3RhdGljIGRlY2xhcmF0aW9uIHByb2JhYmx5IGlzIG5vdCBhbiBpc3N1ZSBpbiB0aGlzIGNhc2UuIExldCBtZSBkb3VibGUtY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoYXQgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGUxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYyOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipDb2RlIEluc3BlY3Rpb24gJmFtcDsgUGF0dGVybiBSZWNvZ25pdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGNvZGUuIFRoZSBnb2FsIGlzIGxpa2VseSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBlMTAwYCBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCB1c2luZyBhIHJlZ2V4LiBJJiMzOTttIHRoaW5raW5nLCBiYXNlZCBvbiBjb21tb24ga2VybmVsIGNvZGluZyBzdHlsZSBhbmQgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGUgZGVjbGFyYXRpb24gbWlnaHQgc3RhcnQgd2l0aCBlaXRoZXIgYHN0YXRpYyBpbnQgZTEwMF9gIG9yIGBzdGF0aWMgdm9pZCBlMTAwX2AuIFRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIGludGVybmFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucywgbGlrZWx5IHdpdGhpbiB0aGUgbW9kdWxlIG9yIGRyaXZlci4gUXVpY2tseSBmaW5kaW5nIHRoYXQgcGF0dGVybiB3aWxsIGdpdmUgbWUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHN0YXJ0IHRoZSBhbmFseXNpcy4gSSYjMzk7bGwgZmlsdGVyIGZvciB0aG9zZSBkZWNsYXJhdGlvbnMgdG8gbmFycm93IGRvd24gdGhlIHNlYXJjaCBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgaW50IGUxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz02MzU9c3RhdGljIHZvaWQgZTEwMF9od19yZXNldChzdHJ1Y3QgbmljICpuaWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NTA6c3RhdGljIGludCBlMTAwX3NlbGZfdGVzdChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzIxPXN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NjYtLyogTG9hZCBlbnRpcmUgRUVQUk9NIGltYWdlIGludG8gZHJpdmVyIGNhY2hlIGFuZCB2YWxpZGF0ZSBjaGVja3N1bSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc2NzpzdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc5Ny0vKiBTYXZlIChwb3J0aW9uIG9mKSBkcml2ZXIgRUVQUk9NIGNhY2hlIHRvIGRldmljZSBhbmQgdXBkYXRlIGNoZWNrc3VtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzk4OnN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc5OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyOS0jZGVmaW5lIEUxMDBfV0FJVF9TQ0JfRkFTVCAyMCAgICAgICAvKiBkZWxheSBsaWtlIHRoZSBvbGQgY29kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgzMDpzdGF0aWMgaW50IGUxMDBfZXhlY19jbWQoc3RydWN0IG5pYyAqbmljLCB1OCBjbWQsIGRtYV9hZGRyX3QgZG1hX2FkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjg2MTpzdGF0aWMgaW50IGUxMDBfZXhlY19jYihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODYyLVx0aW50ICgqY2JfcHJlcGFyZSkoc3RydWN0IG5pYyAqLCBzdHJ1Y3QgY2IgKiwgc3RydWN0IHNrX2J1ZmYgKikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTEwNTM9c3RhdGljIHZvaWQgZTEwMF9nZXRfZGVmYXVsdHMoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEwODY6c3RhdGljIGludCBlMTAwX2NvbmZpZ3VyZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTEyMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZTEwMF9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzI0OnN0YXRpYyBpbnQgZTEwMF9zZXR1cF91Y29kZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyNS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTEzNTQ9c3RhdGljIGlubGluZSBpbnQgZTEwMF9sb2FkX3Vjb2RlX3dhaXQoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzOTQ6c3RhdGljIGludCBlMTAwX3NldHVwX2lhYWRkcihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5NS1cdHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQwMjpzdGF0aWMgaW50IGUxMDBfZHVtcChzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQwMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQxMDpzdGF0aWMgaW50IGUxMDBfcGh5X2NoZWNrX3dpdGhvdXRfbWlpKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDExLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ0OS0jZGVmaW5lIE5TQ19DT05HX1RYUkVBRFlcdDB4MDQwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0NTA6c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTQzOnN0YXRpYyBpbnQgZTEwMF9od19pbml0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTc2OnN0YXRpYyBpbnQgZTEwMF9tdWx0aShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE3MDE9c3RhdGljIHZvaWQgZTEwMF93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzUyOnN0YXRpYyBpbnQgZTEwMF94bWl0X3ByZXBhcmUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3NTMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xNzg2PXN0YXRpYyBuZXRkZXZfdHhfdCBlMTAwX3htaXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTgyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxODIyOnN0YXRpYyBpbnQgZTEwMF90eF9jbGVhbihzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTgyMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE4NjU9c3RhdGljIHZvaWQgZTEwMF9jbGVhbl9jYnMoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4ODk6c3RhdGljIGludCBlMTAwX2FsbG9jX2NicyhzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE5MTg9c3RhdGljIGlubGluZSB2b2lkIGUxMDBfc3RhcnRfcmVjZWl2ZXIoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgcnggKnJ4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTMzLSNkZWZpbmUgUkZEX0JVRl9MRU4gKHNpemVvZihzdHJ1Y3QgcmZkKSAmIzQzOyBWTEFOX0VUSF9GUkFNRV9MRU4gJiM0MzsgRVRIX0ZDU19MRU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkzNDpzdGF0aWMgaW50IGUxMDBfcnhfYWxsb2Nfc2tiKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IHJ4ICpyeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTM1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTk2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxOTY2OnN0YXRpYyBpbnQgZTEwMF9yeF9pbmRpY2F0ZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTk2Ny1cdHVuc2lnbmVkIGludCAqd29ya19kb25lLCB1bnNpZ25lZCBpbnQgd29ya190b19kbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjE0NT1zdGF0aWMgdm9pZCBlMTAwX3J4X2NsZWFuX2xpc3Qoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIxNjg6c3RhdGljIGludCBlMTAwX3J4X2FsbG9jX2xpc3Qoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMjA4PXN0YXRpYyBpcnFyZXR1cm5fdCBlMTAwX2ludHIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMzY6c3RhdGljIGludCBlMTAwX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMzcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMjU2PXN0YXRpYyB2b2lkIGUxMDBfbmV0cG9sbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNjc6c3RhdGljIGludCBlMTAwX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICpwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNjgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyODE6c3RhdGljIGludCBlMTAwX2FzZihzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5MDpzdGF0aWMgaW50IGUxMDBfdXAoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMzQ0PXN0YXRpYyB2b2lkIGUxMDBfdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzYwOnN0YXRpYyBpbnQgZTEwMF9sb29wYmFja190ZXN0KHN0cnVjdCBuaWMgKm5pYywgZW51bSBsb29wYmFjayBsb29wYmFja19tb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MjE6c3RhdGljIGludCBlMTAwX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MjItXHRcdFx0XHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MzE6c3RhdGljIGludCBlMTAwX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MzItXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNDQ0PXN0YXRpYyB2b2lkIGUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ1My0jZGVmaW5lIEUxMDBfUEhZX1JFR1MgMHgxRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0NTQ6c3RhdGljIGludCBlMTAwX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNDg5PXN0YXRpYyB2b2lkIGUxMDBfZ2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjQ5NjpzdGF0aWMgaW50IGUxMDBfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ5Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1MjI9c3RhdGljIHZvaWQgZTEwMF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1Mjg6c3RhdGljIGludCBlMTAwX253YXlfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjUzND1zdGF0aWMgdTMyIGUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNTQwOnN0YXRpYyBpbnQgZTEwMF9nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NDEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTQ2LSNkZWZpbmUgRTEwMF9FRVBST01fTUFHSUNcdDB4MTIzNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NDc6c3RhdGljIGludCBlMTAwX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTQ4LVx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNTU4OnN0YXRpYyBpbnQgZTEwMF9zZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1OS1cdHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1NzI9c3RhdGljIHZvaWQgZTEwMF9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1ODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjU4NzpzdGF0aWMgaW50IGUxMDBfc2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1ODgtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNjIyPXN0YXRpYyB2b2lkIGUxMDBfZGlhZ190ZXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI2NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjY1NTpzdGF0aWMgaW50IGUxMDBfc2V0X3BoeXNfaWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNjU2LVx0XHRcdCAgICBlbnVtIGV0aHRvb2xfcGh5c19pZF9zdGF0ZSBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjY5MD1zdGF0aWMgY29uc3QgY2hhciBlMTAwX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjcwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNzA2OnN0YXRpYyBpbnQgZTEwMF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzA3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDBfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc3NjpzdGF0aWMgaW50IGUxMDBfZG9faW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc4MzpzdGF0aWMgaW50IGUxMDBfYWxsb2Moc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3ODQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNzkwPXN0YXRpYyB2b2lkIGUxMDBfZnJlZShzdHJ1Y3QgbmljICpuaWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc5OTpzdGF0aWMgaW50IGUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4MDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yODA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI4MTA6c3RhdGljIGludCBlMTAwX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgxMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjgxNjpzdGF0aWMgaW50IGUxMDBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgxNy1cdFx0XHQgICAgIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yODMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZTEwMF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yODQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI4NDU6c3RhdGljIGludCBlMTAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4NDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0zMDQ2PXN0YXRpYyBpbnQgX19lMTAwX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCB3YWtlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0zMDU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjMwNTc6c3RhdGljIGludCBlMTAwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2X2QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMzA1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MzA2NjpzdGF0aWMgaW50IGUxMDBfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldl9kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNjcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA0NQoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiA0NTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgZTEwMCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBlMTAwIGRyaXZlciBhbmQgaGVyZSYjMzk7cyBteSBwbGFuLiBUaGUgY29yZSBkcml2ZXIgaXMgYWxsIGluIGBlMTAwLmNgLCB3aGljaCBpcyBnb29kIGZvciBjb250YWluZWQgYW5hbHlzaXMuIEkmIzM5O20gZm9jdXNpbmcgb24gZmluZGluZyB0aGUgYmVzdCBlbnRyeSBwb2ludHMgdG8gdGhlIGNvZGUuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgYWJvdXQgYGUxMDBfc2V0X2VlcHJvbWAgYnV0IHRoYXQmIzM5O3Mgc3RhdGljLCB3aGljaCBJJiMzOTtkIHJhdGhlciBhdm9pZC4gSG93ZXZlciwgaXQgKmlzKiBhbiBBUEkgZW50cnkgcG9pbnQgZm9yIGV0aHRvb2wgb3BlcmF0aW9ucywgc28gSSYjMzk7bSBwdXR0aW5nIGl0IG9uIHRoZSBsaXN0LiBJIGFsc28gbm90ZWQgYGUxMDBfcHJvYmVgIOKAkyB0aGF0JiMzOTtzIGEga2V5IFBDSSBwcm9iZSBlbnRyeSBwb2ludCwgYW5kIHRoYXQgc2VlbXMgcHJvbWlzaW5nLCBzbyB0aGF0IG1ha2VzIHRoZSBsaXN0IHRvby4gSSBkaWQgY2hlY2sgdGhlIG90aGVyIGVlcHJvbSBmdW5jdGlvbnMsIGFuZCBJIHNhdyB0aGF0IGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBzdGF0aWMuIFNvLCBJJiMzOTtsbCBzdGljayB3aXRoIGBlMTAwX3Byb2JlYCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAgYXMgbXkgbWFpbiBmb2N1cy4KCk5vdywgYXMgZmFyIGFzIGNvbmZpZ3VyYXRpb24sIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBFMTAwYC4gSSBkb3VibGUtY2hlY2tlZCBpdHMgZGVwZW5kZW5jaWVzIHRvIG1ha2Ugc3VyZSBJIHdhc24mIzM5O3QgbWlzc2luZyBhbnl0aGluZy4gR29vZCwgSSBzZWUgdGhhdCBpdCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBzZWxlY3RzIGBNSUlgLiBUaGlzIHNob3VsZCBiZSBzdWZmaWNpZW50LiBJIGRvbiYjMzk7dCBzZWUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBzbyBgRTEwMGAgaXQgaXMuCgpUaGVyZWZvcmUsIGZvciBteSBmdXp6aW5nIHNldHVwLCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bGwgZG86CgoqICAgKipXb3J0aEZ1enppbmcqKjogKlRydWUqIChBYnNvbHV0ZWx5LCB0aGlzIGlzIHdvcnRoIHRoZSBlZmZvcnQpCiogICAqKkZvY3VzU3ltYm9scyoqOiBgZTEwMF9wcm9iZWAsIGBlMTAwX3NldF9lZXByb21gIChUaGVzZSBhcmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cy4pCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEUxMDBgIChUaGUgbWluaW1hbCBuZWNlc3NhcnkgY29uZmlndXJhdGlvbi4pCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgZTEwMCBkcml2ZXImIzM5O3MgRUVQUk9NIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gRnV6emluZyBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRob3NlIG9wZXJhdGlvbnMgZHVyaW5nIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSBhbmQgdGhyb3VnaCBldGh0b29sIGNhbGxzIChgZTEwMF9zZXRfZWVwcm9tYCkuIEkmIzM5O2xsIGJlIHVzaW5nIFFFTVUmIzM5O3MgYGk4MjU1OWVyYCBlbXVsYXRlZCBQQ0kgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RTEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2UxMDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZTEwMF9zZXRfZWVwcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIEVFUFJPTSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlci4gVGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCkgYW5kIHZpYSBldGh0b29sIChgZTEwMF9zZXRfZWVwcm9tYCkuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB1c2luZyBRRU1VJiMzOTtzIGBpODI1NTllcmAgZW11bGF0ZWQgUENJIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RTEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2UxMDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZTEwMF9zZXRfZWVwcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIEVFUFJPTSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlci4gVGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCkgYW5kIHZpYSBldGh0b29sIChgZTEwMF9zZXRfZWVwcm9tYCkuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB1c2luZyBRRU1VJiMzOTtzIGBpODI1NTllcmAgZW11bGF0ZWQgUENJIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT42bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBpc3N1ZSB3aXRoIGBhZGRyX2xlbmAgaW4gYGUxMDBfZWVwcm9tX3JlYWRgLiBXaGVuIGBhZGRyX2xlbmAgdW5kZXJmbG93cywgaXQgYmVjb21lcyBhIGxhcmdlIHZhbHVlLCB3aGljaCBzdWJzZXF1ZW50bHkgY2F1c2VzIGEgc2hpZnQtb3V0LW9mLWJvdW5kcyAoYDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCkgd2hlbiBjYWxjdWxhdGluZyBgbmljLVx1MDAzZWVlcHJvbV93Y2AuIFRoaXMgbGFyZ2UgYGVlcHJvbV93Y2AgdmFsdWUgdGhlbiBsZWFkcyB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHJlYWQgb24gdGhlIGZpeGVkLXNpemUgYG5pYy1cdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXG5cblRoZXNlIGFyZSBjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgYnVncyAoc2hpZnQtb3V0LW9mLWJvdW5kcyBhbmQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcykuIFN0YW5kYXJkIEtBU0FOICh3aGljaCBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFuZCBVQlNBTiAod2hpY2ggZGV0ZWN0cyBzaGlmdC1vdXQtb2YtYm91bmRzKSBhcmUgcGVyZmVjdGx5IGNhcGFibGUgb2YgY2F0Y2hpbmcgdGhpcyBidWcuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgdXNlZCBpbiBjb250cm9sIGZsb3csIG9yIGxlYWtlZCB0byB1c2Vyc3BhY2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTc3NGFlMDQ4ZGNlM2I3OTg5MDYxMWQxOTg4MjZiYzhhYjcyMDM5ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDA5OjMwOjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jCmluZGV4IDI5OTYwNzYyZTY0YTguLjI2YTdjMGFhYTZlMjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMKQEAgLTc0NCw3ICYjNDM7NzQ0LDEyIEBAIHN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKQogCQkgKiBjb21wbGV0ZSBhZGRyZXNzLiAgVXNlIHRoaXMgdG8gYWRqdXN0IGFkZHJfbGVuLiAqLwogCQljdHJsID0gaW9yZWFkOCgmYW1wO25pYy0mZ3Q7Y3NyLSZndDtlZXByb21fY3RybF9sbyk7CiAJCWlmICghKGN0cmwgJmFtcDsgZWVkbykgJmFtcDsmYW1wOyBpICZndDsgMTYpIHsKLQkJCSphZGRyX2xlbiAtPSAoaSAtIDE2KTsKJiM0MzsJCQl1MTYgbGVuID0gaSAtIDE2OwomIzQzOwomIzQzOwkJCWlmIChsZW4gJmd0OyAqYWRkcl9sZW4pCiYjNDM7CQkJCSphZGRyX2xlbiA9IDA7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQkqYWRkcl9sZW4gLT0gbGVuOwogCQkJaSA9IDE3OwogCQl9CiAKQEAgLTc2NSw2ICYjNDM7NzcwLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpCiAKIAkvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqLwogCWUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCAwKTsKJiM0MzsJaWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiAmZ3Q7IDgpIHsKJiM0MzsJCW5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtJmd0O25ldGRldiwKJiM0MzsJCQkgICYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcbiYjMzQ7LCBhZGRyX2xlbik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCW5pYy0mZ3Q7ZWVwcm9tX3djID0gMSAmbHQ7Jmx0OyBhZGRyX2xlbjsKIAogCWZvciAoYWRkciA9IDA7IGFkZHIgJmx0OyBuaWMtJmd0O2VlcHJvbV93YzsgYWRkciYjNDM7JiM0MzspIHsKQEAgLTc5MSw2ICYjNDM7ODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KQogCiAJLyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi8KIAllMTAwX2VlcHJvbV9yZWFkKG5pYywgJmFtcDthZGRyX2xlbiwgMCk7CiYjNDM7CWlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gJmd0OyA4KSB7CiYjNDM7CQluZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLSZndDtuZXRkZXYsCiYjNDM7CQkJICAmIzM0O2ludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XG4mIzM0OywgYWRkcl9sZW4pOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAluaWMtJmd0O2VlcHJvbV93YyA9IDEgJmx0OyZsdDsgYWRkcl9sZW47CiAKIAlpZiAoc3RhcnQgJiM0MzsgY291bnQgJmd0Oz0gbmljLSZndDtlZXByb21fd2MpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQ4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRUVQUk9NIFJlYWQvV3JpdGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBJbnRlbCBFMTAwIGRyaXZlciwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBlMTAwX2VlcHJvbV9yZWFkYCwgYGUxMDBfZWVwcm9tX2xvYWRgLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgIHdpdGhpbiBgZTEwMC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0JiMzOTtzIGhhbmRsaW5nIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlLCB3aGljaCBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSBjb3VsZCBsZWFkIHRvIHNvbWUgbmFzdHkgcHJvYmxlbXMuCgpTcGVjaWZpY2FsbHksIGluIGBlMTAwX2VlcHJvbV9yZWFkYCwgdGhlIHBhdGNoIGFkZHMgY2hlY2tzIHRvIGBhZGRyX2xlbmAgdG8gcHJldmVudCBpdCBmcm9tIGdvaW5nIG5lZ2F0aXZlLiBQcmV2aW91c2x5LCB0aGUgc3VidHJhY3Rpb24gYCphZGRyX2xlbiAtPSAoaSAtIDE2KWAgY291bGQgY2F1c2UgdW5kZXJmbG93IGlmIGBpYCB3YXMgbGVzcyB0aGFuIDE2LCB3aGljaCBJIGNhbiBzZWUgd291bGQgYmUgYSBwcm9ibGVtLiBUaGlzIHBhdGNoIG5vdyBlbnN1cmVzIHRoYXQgaWYgdGhlIG5ldyBsZW5ndGggYGxlbmAgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGFkZHJlc3MgbGVuZ3RoLCBpdCBzZXRzIHRoZSBhZGRyZXNzIGxlbmd0aCB0byAwLiBPdGhlcndpc2UgaXQgZGVjcmVtZW50cyBhcyBpbnRlbmRlZC4KClRoZSBgZTEwMF9lZXByb21fbG9hZGAgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMgYXJlIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuICBUaGUgY29kZSBhdHRlbXB0cyB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBhZGRyZXNzIGxlbmd0aCBieSByZWFkaW5nIHdpdGggYW4gOC1iaXQgbGVuZ3RoLiBUaGUgcGF0Y2ggbm93IGFkZHMgYSBjaGVjayBmb3IgYGFkZHJfbGVuYCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgdmFsaWQuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQgcHJldmVudGluZyBgbmljLSZndDtlZXByb21fd2NgIGZyb20gYmVpbmcgY2FsY3VsYXRlZCB3aXRoIGFuIGludmFsaWQgYGFkZHJfbGVuYCwgYmVjYXVzZSBhIHZhbHVlIG9mIHplcm8sIG9yIGEgdmFsdWUgbGFyZ2VyIHRoYW4gOCBjYXVzZXMgYW4gZXJyb3IgdG8gYmUgcmV0dXJuZWQuICBUaGF0IGNhbGN1bGF0aW9uIGlzIGtleSBiZWNhdXNlIGBuaWMtJmd0O2VlcHJvbV93Y2AgaXMgdXNlZCBsYXRlciBhcyB0aGUgbG9vcCBsaW1pdCBmb3IgcmVhZGluZyB0aGUgRUVQUk9NLgoKVGhlIGNvcmUgb2YgdGhlIGZpeCBpcyBhYm91dCBwcmV2ZW50aW5nIGBhZGRyX2xlbmAgZnJvbSB1bmRlcmZsb3dpbmcsIHdoaWNoIHdvdWxkIHRoZW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHNoaWZ0IG9wZXJhdGlvbiwgbGlrZSBgMSAmbHQ7Jmx0OyBhZGRyX2xlbmAuICBVQlNBTiBzaG91bGQgY2F0Y2ggdGhvc2Ugc2hpZnQtb3V0LW9mLWJvdW5kcyBpc3N1ZXMuICBJZiBgYWRkcl9sZW5gIHdlcmUgcmVhbGx5IGxhcmdlIGJlY2F1c2Ugb2YgYW4gdW5kZXJmbG93LCBgMSAmbHQ7Jmx0OyBhZGRyX2xlbmAgbWlnaHQgYWxzbyByZXN1bHQgaW4gYW4gb3ZlcmZsb3csIGdpdmluZyB1cyBhIGxhcmdlIG9yIHplcm8gdmFsdWUuCgpBaCwgYW5kIEkgc2VlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgbG9vcCBpbiB0aGVzZSBmdW5jdGlvbnMgdXNlcyBgbmljLSZndDtlZXByb21fd2NgIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgcmVhZGluZyBpbnRvIGBuaWMtJmd0O2VlcHJvbWAuICBOb3cgSSByZWNhbGwgYG5pYy0mZ3Q7ZWVwcm9tYCBpcyBhbiBhcnJheSBvZiBzaXplIDI1Ni4gSWYgYGVlcHJvbV93Y2AgaXMgbGFyZ2VyIHRoYW4gMjU2LCBpdCYjMzk7bGwgY2F1c2UgYW4gb3V0LW9mLWJvdW5kcyB3cml0ZS4gIEtBU0FOIHdvdWxkIGNlcnRhaW5seSBjYXRjaCB0aGF0LgoKSSYjMzk7bSBtYWtpbmcgc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc3VidGxlIGlzc3VlcyBoZXJlLCBpbiB0ZXJtcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSWYgYGFkZHJfbGVuYCBpcyB6ZXJvLCB3ZSBnZXQgYG5pYy0mZ3Q7ZWVwcm9tX3djYCBhcyAxLCB3aGljaCBpc24mIzM5O3QgYSBwcm9ibGVtLiBJZiBgYWRkcl9sZW5gIGlzIGxhcmdlLCB3ZSBoYXZlIHRoZSBvdXQtb2YtYm91bmRzIHdyaXRlIEkgbWVudGlvbmVkLiBJJiMzOTttIG5vdCBzZWVpbmcgYW55dGhpbmcgaGVyZSB0aGF0IEtNU0FOIHdvdWxkIHVuaXF1ZWx5IGNhdGNoIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgbGVha2VkLiBUaGUgcHJpbWFyeSBjb25jZXJuIGlzIGRlZmluaXRlbHkgdGhlIGludGVnZXIgdW5kZXJmbG93IGFuZCB0aGUgcmVzdWx0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCBtZSBncmVwIGZvciBgZWVwcm9tYCBpbiB0aGUgYHN0cnVjdCBuaWNgIGRlZmluaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dTE2IGVlcHJvbVxcWyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NzMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgZTEwMCBEcml2ZXIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBzdHJ1Y3QgbmljYCB3aXRoaW4gdGhlIEludGVsIGUxMDAgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ3JlcHBpbmcgdGhlIGBlMTAwLmNgIGZpbGUsIGxvY2F0ZWQgaW4gdGhlIHVzdWFsIHN1c3BlY3QgZGlyZWN0b3J5OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvYC4gIEkgZXhwZWN0IHRoYXQgYHN0cnVjdCBuaWNgIGlzIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgZHJpdmVyLiBJdCBsaWtlbHkgaG9sZHMgYWxsIHRoZSBlc3NlbnRpYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQmIzM5O3Mgc3RhdGUsIHJlZ2lzdGVycywgYW5kIG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMuIEkmIzM5O2xsIGJlIHVzaW5nIGBncmVwYCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBmYXN0ZXN0IHdheSB0byBwaW5wb2ludCB0aGUgZXhhY3QgZGVjbGFyYXRpb24uIE9uY2UgSSBoYXZlIHRoZSBkZWNsYXJhdGlvbiwgSSBjYW4gYmVnaW4gdG8gYXNzZXNzIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBpbnRlcmFjdGlvbiBieSBleGFtaW5pbmcgaG93IHRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgYW5kIHJlZmVyZW5jZWQgd2l0aGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgbmljIFxceyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NTM0PXN0cnVjdCBwYXJhbXMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy01MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NTM5OnN0cnVjdCBuaWMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTU0MC1cdC8qIEJlZ2luOiBmcmVxdWVudGx5IHVzZWQgdmFsdWVzOiBrZWVwIGFkamFjZW50IGZvciBjYWNoZSBlZmZlY3QgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM1MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgc3RydWN0IG5pY2AqKgoKT2theSwgc28gdGhlIHByb21wdCBpcyB0byBsb29rIGF0IGBzdHJ1Y3QgbmljYC4gUmlnaHQsIHRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIGRhdGEgc3RydWN0dXJlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBJcyB0aGlzIGtlcm5lbC1sZXZlbCBjb2RlPyBVc2VyLXNwYWNlIG5ldHdvcmtpbmc/IFdoYXQgT1MgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gaGVhdmlseSBpbmZsdWVuY2UgdGhlIHNwZWNpZmljIG1lbWJlcnMgYW5kIG92ZXJhbGwgZGVzaWduLgoKSSYjMzk7bSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHR5cGljYWwgaW5mb3JtYXRpb24gdGhpcyBzdHJ1Y3QgKnNob3VsZCogY29udGFpbiwgZnJvbSBhIGhpZ2ggbGV2ZWwuIE1BQyBhZGRyZXNzLCBJUCBhZGRyZXNzIChwb3RlbnRpYWxseSBtdWx0aXBsZSksIE1UVSwgY2FwYWJpbGl0aWVzIGZsYWdzIChjaGVja3N1bSBvZmZsb2FkLCBUU08sIGV0Yy4pLCBETUEgaW5mb3JtYXRpb24sIHRyYW5zbWl0L3JlY2VpdmUgcXVldWUgcG9pbnRlcnMsIGludGVycnVwdCBjb25maWd1cmF0aW9uIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUga2luZCBvZiBsaW5rZWQgbGlzdHMgb3IgYXJyYXlzIGZvciBtYW5hZ2luZyB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYnVmZmVycy4gVGhlcmUgc2hvdWxkIGJlIHNvbWUga2luZCBvZiBsb2NrIHByb3RlY3Rpb24gYXMgd2VsbCwgbGlrZWx5IGEgbXV0ZXggb3Igc3BpbmxvY2sgZ2l2ZW4gdGhhdCB0aGUgTklDIGRhdGEgaXMgbW9zdCBvZnRlbiBhY2Nlc3NlZCBieSBtdWx0aXBsZSB0aHJlYWRzLgoKSSYjMzk7bSBhbHNvIHdvbmRlcmluZyBhYm91dCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gaXQgcmVwcmVzZW50cy4gSXMgdGhpcyBhIHZlcnkgbG93LWxldmVsIHN0cnVjdHVyZSwgY2xvc2UgdG8gdGhlIGhhcmR3YXJlIHJlZ2lzdGVycywgb3IgaXMgaXQgbW9yZSBvZiBhIG5ldHdvcmsgc3RhY2sgYWJzdHJhY3Rpb24/IFRoYXQmIzM5O3MgZ29pbmcgdG8gZGljdGF0ZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGFuZCB0aGUgc29ydHMgb2YgYml0ZmllbGRzIGFuZCBoYXJkd2FyZS1zcGVjaWZpYyBkYXRhIEkgZXhwZWN0IHRvIHNlZS4gSeKAmW0gdGhpbmtpbmcgYWJvdXQgdGhlIGNvbW1vbiBuZXR3b3JrIG1vZGVsczogSXMgaXQgdXNpbmcgYSBCU0Qgc29ja2V0LWxpa2UgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgbW9yZSBtb2Rlcm4sIGxpa2UgaW9fdXJpbmc/IElmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBmdW5jdGlvbnMgY2FsbGVkIG9uIHRoYXQgaW50ZXJmYWNlLiBJdCBpcyBhbGwgcmVsYXRlZC4KCk15IG5leHQgc3RlcCBpcyB0byBsb29rIGZvciBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuIElzIGl0IGRlc2lnbmVkIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtIG9yIGlzIGl0IGEgbW9yZSBnZW5lcmljIGFic3RyYWN0aW9uIHRoYXTigJlzIGFkYXB0ZWQgZm9yIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzPyBJJiMzOTttIGFudGljaXBhdGluZyBwb3RlbnRpYWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gcHJvY2Vzc29yIHR5cGUgb3IgTklDIHZlbmRvci4gVGhpcyBpcyBhbm90aGVyIGFyZWEgSSBleHBlY3QgdG8gY2hlY2suCgpGaW5hbGx5LCBJJiMzOTttIGV4cGVjdGluZyBhIGxvdCBvZiBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHJlbGF0ZWQgc3RydWN0dXJlcywgbGlrZSBkZXNjcmlwdG9ycyBmb3IgdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIHJpbmdzLCBwYWNrZXQgYnVmZmVycywgYW5kIHBvdGVudGlhbGx5IHN0cnVjdHVyZXMgZm9yIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIFNvLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBpcyBwcm9iYWJseSBhIHN0YXJ0aW5nIHBvaW50LCBhbmQgdGhhdCBtYW55IG90aGVyIHN0cnVjdHMgd2lsbCBiZSBpbnZvbHZlZCwgbGlrZWx5IHdpdGggcG9pbnRlcnMgY29ubmVjdGluZyB0aGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaW4gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTM5Olx0c3RydWN0IG5pYyB7XG4gNTQwOlx0XHQvKiBCZWdpbjogZnJlcXVlbnRseSB1c2VkIHZhbHVlczoga2VlcCBhZGphY2VudCBmb3IgY2FjaGUgZWZmZWN0ICovXG4gNTQxOlx0XHR1MzIgbXNnX2VuYWJsZVx0XHRcdFx0X19fX2NhY2hlbGluZV9hbGlnbmVkO1xuIDU0MjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiA1NDM6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xuIDU0NDpcdFx0dTE2ICgqbWRpb19jdHJsKShzdHJ1Y3QgbmljICpuaWMsIHUzMiBhZGRyLCB1MzIgZGlyLCB1MzIgcmVnLCB1MTYgZGF0YSk7XG4gNTQ1Olx0XG4gNTQ2Olx0XHRzdHJ1Y3QgcnggKnJ4c1x0XHRcdFx0X19fX2NhY2hlbGluZV9hbGlnbmVkO1xuIDU0NzpcdFx0c3RydWN0IHJ4ICpyeF90b191c2U7XG4gNTQ4Olx0XHRzdHJ1Y3QgcnggKnJ4X3RvX2NsZWFuO1xuIDU0OTpcdFx0c3RydWN0IHJmZCBibGFua19yZmQ7XG4gNTUwOlx0XHRlbnVtIHJ1X3N0YXRlIHJ1X3J1bm5pbmc7XG4gNTUxOlx0XG4gNTUyOlx0XHRzcGlubG9ja190IGNiX2xvY2tcdFx0XHRfX19fY2FjaGVsaW5lX2FsaWduZWQ7XG4gNTUzOlx0XHRzcGlubG9ja190IGNtZF9sb2NrO1xuIDU1NDpcdFx0c3RydWN0IGNzciBfX2lvbWVtICpjc3I7XG4gNTU1Olx0XHRlbnVtIHNjYl9jbWRfbG8gY3VjX2NtZDtcbiA1NTY6XHRcdHVuc2lnbmVkIGludCBjYnNfYXZhaWw7XG4gNTU3Olx0XHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiA1NTg6XHRcdHN0cnVjdCBjYiAqY2JzO1xuIDU1OTpcdFx0c3RydWN0IGNiICpjYl90b191c2U7XG4gNTYwOlx0XHRzdHJ1Y3QgY2IgKmNiX3RvX3NlbmQ7XG4gNTYxOlx0XHRzdHJ1Y3QgY2IgKmNiX3RvX2NsZWFuO1xuIDU2MjpcdFx0X19sZTE2IHR4X2NvbW1hbmQ7XG4gNTYzOlx0XHQvKiBFbmQ6IGZyZXF1ZW50bHkgdXNlZCB2YWx1ZXM6IGtlZXAgYWRqYWNlbnQgZm9yIGNhY2hlIGVmZmVjdCAqL1xuIDU2NDpcdFxuIDU2NTpcdFx0ZW51bSB7XG4gNTY2Olx0XHRcdGljaCAgICAgICAgICAgICAgICA9ICgxIFx1MDAzY1x1MDAzYyAwKSxcbiA1Njc6XHRcdFx0cHJvbWlzY3VvdXMgICAgICAgID0gKDEgXHUwMDNjXHUwMDNjIDEpLFxuIDU2ODpcdFx0XHRtdWx0aWNhc3RfYWxsICAgICAgPSAoMSBcdTAwM2NcdTAwM2MgMiksXG4gNTY5Olx0XHRcdHdvbF9tYWdpYyAgICAgICAgICA9ICgxIFx1MDAzY1x1MDAzYyAzKSxcbiA1NzA6XHRcdFx0aWNoXzEwaF93b3JrYXJvdW5kID0gKDEgXHUwMDNjXHUwMDNjIDQpLFxuIDU3MTpcdFx0fSBmbGFnc1x0XHRcdFx0XHRfX19fY2FjaGVsaW5lX2FsaWduZWQ7XG4gNTcyOlx0XG4gNTczOlx0XHRlbnVtIG1hYyBtYWM7XG4gNTc0Olx0XHRlbnVtIHBoeSBwaHk7XG4gNTc1Olx0XHRzdHJ1Y3QgcGFyYW1zIHBhcmFtcztcbiA1NzY6XHRcdHN0cnVjdCB0aW1lcl9saXN0IHdhdGNoZG9nO1xuIDU3NzpcdFx0c3RydWN0IG1paV9pZl9pbmZvIG1paTtcbiA1Nzg6XHRcdHN0cnVjdCB3b3JrX3N0cnVjdCB0eF90aW1lb3V0X3Rhc2s7XG4gNTc5Olx0XHRlbnVtIGxvb3BiYWNrIGxvb3BiYWNrO1xuIDU4MDpcdFxuIDU4MTpcdFx0c3RydWN0IG1lbSAqbWVtO1xuIDU4MjpcdFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiA1ODM6XHRcbiA1ODQ6XHRcdHN0cnVjdCBkbWFfcG9vbCAqY2JzX3Bvb2w7XG4gNTg1Olx0XHRkbWFfYWRkcl90IGNic19kbWFfYWRkcjtcbiA1ODY6XHRcdHU4IGFkYXB0aXZlX2lmcztcbiA1ODc6XHRcdHU4IHR4X3RocmVzaG9sZDtcbiA1ODg6XHRcdHUzMiB0eF9mcmFtZXM7XG4gNTg5Olx0XHR1MzIgdHhfY29sbGlzaW9ucztcbiA1OTA6XHRcdHUzMiB0eF9kZWZlcnJlZDtcbiA1OTE6XHRcdHUzMiB0eF9zaW5nbGVfY29sbGlzaW9ucztcbiA1OTI6XHRcdHUzMiB0eF9tdWx0aXBsZV9jb2xsaXNpb25zO1xuIDU5MzpcdFx0dTMyIHR4X2ZjX3BhdXNlO1xuIDU5NDpcdFx0dTMyIHR4X3Rjb19mcmFtZXM7XG4gNTk1Olx0XG4gNTk2Olx0XHR1MzIgcnhfZmNfcGF1c2U7XG4gNTk3Olx0XHR1MzIgcnhfZmNfdW5zdXBwb3J0ZWQ7XG4gNTk4Olx0XHR1MzIgcnhfdGNvX2ZyYW1lcztcbiA1OTk6XHRcdHUzMiByeF9zaG9ydF9mcmFtZV9lcnJvcnM7XG4gNjAwOlx0XHR1MzIgcnhfb3Zlcl9sZW5ndGhfZXJyb3JzO1xuIDYwMTpcdFxuIDYwMjpcdFx0dTE2IGVlcHJvbV93YztcbiA2MDM6XHRcdF9fbGUxNiBlZXByb21bMjU2XTtcbiA2MDQ6XHRcdHNwaW5sb2NrX3QgbWRpb19sb2NrO1xuIDYwNTpcdFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbiA2MDY6XHR9O1xuIDYwNzpcdFxuIDYwODpcdHN0YXRpYyBpbmxpbmUgdm9pZCBlMTAwX3dyaXRlX2ZsdXNoKHN0cnVjdCBuaWMgKm5pYylcbiA2MDk6XHR7XG4gNjEwOlx0XHQvKiBGbHVzaCBwcmV2aW91cyBQQ0kgd3JpdGVzIHRocm91Z2ggaW50ZXJtZWRpYXRlIGJyaWRnZXNcbiA2MTE6XHRcdCAqIGJ5IGRvaW5nIGEgYmVuaWduIHJlYWQgKi9cbiA2MTI6XHRcdCh2b2lkKWlvcmVhZDgoXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VzY2Iuc3RhdHVzKTtcbiA2MTM6XHR9XG4gNjE0Olx0XG4gNjE1Olx0c3RhdGljIHZvaWQgZTEwMF9lbmFibGVfaXJxKHN0cnVjdCBuaWMgKm5pYylcbiA2MTY6XHR7XG4gNjE3Olx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIDYxODpcdFxuIDYxOTpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bmljLVx1MDAzZWNtZF9sb2NrLCBmbGFncyk7XG4gNjIwOlx0XHRpb3dyaXRlOChpcnFfbWFza19ub25lLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXNjYi5jbWRfaGkpO1xuIDYyMTpcdFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xuIDYyMjpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZuaWMtXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcbiA2MjM6XHR9XG4gNjI0Olx0XG4gNjI1Olx0c3RhdGljIHZvaWQgZTEwMF9kaXNhYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXG4gNjI2Olx0e1xuIDYyNzpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiA2Mjg6XHRcbiA2Mjk6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNm5pYy1cdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xuIDYzMDpcdFx0aW93cml0ZTgoaXJxX21hc2tfYWxsLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXNjYi5jbWRfaGkpO1xuIDYzMTpcdFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xuIDYzMjpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZuaWMtXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcbiA2MzM6XHR9XG4gNjM0Olx0XG4gNjM1Olx0c3RhdGljIHZvaWQgZTEwMF9od19yZXNldChzdHJ1Y3QgbmljICpuaWMpXG4gNjM2Olx0e1xuIDYzNzpcdFx0LyogUHV0IENVIGFuZCBSVSBpbnRvIGlkbGUgd2l0aCBhIHNlbGVjdGl2ZSByZXNldCB0byBnZXRcbiA2Mzg6XHRcdCAqIGRldmljZSBvZmYgb2YgUENJIGJ1cyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mzk1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBPdXQtb2YtQm91bmRzIFdyaXRlKioKCk9rYXksIHNvIEkmIzM5O3ZlIHBpbnBvaW50ZWQgdGhlIHJlbGV2YW50IGNvZGU7IGBfX2xlMTYgZWVwcm9tWzI1Nl07YCBpcyBpbmRlZWQgZGVjbGFyZWQgb24gbGluZSA2MDMsIGFzIGV4cGVjdGVkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUsIGVpdGhlciBkaXJlY3RseSB0byBgbmljLSZndDtlZXByb21gIG9yIHBvdGVudGlhbGx5IHZpYSBhIHNoaWZ0LW91dC1vZi1ib3VuZHMgb3BlcmF0aW9uLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBsaWtlbHkgc3RlbXMgZnJvbSBhbiB1bmRlcmZsb3cgaW4gYGFkZHJfbGVuYC4gSWYgYGFkZHJfbGVuYCBnb2VzIG5lZ2F0aXZlLCBpdCBmbGlwcyBpbnRvIGEgbGFyZ2UgcG9zaXRpdmUgbnVtYmVyIGxpa2UgNjU1MzUuIFRoZW4sIHdoZW4gd2UgcGVyZm9ybSBgMSAmbHQ7Jmx0OyBhZGRyX2xlbmAsIHdlIGFyZSBsb29raW5nIGF0IHVuZGVmaW5lZCBiZWhhdmlvciwgc3BlY2lmaWNhbGx5LCBhIHNoaWZ0LW91dC1vZi1ib3VuZHMuIElmIHRoYXQgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gc29tZXRoaW5nIGV4Y2VlZGluZyAyNTYsIGl0JiMzOTtzIGd1YXJhbnRlZWQgdG8gdHJpZ2dlciBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIHdoZW4gd2UgdHJ5IHRvIGFjY2VzcyBgbmljLSZndDtlZXByb21gLiBUaGlzIHNjcmVhbXMgJiMzNDtjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7IFdlIHNob3VsZCBleHBlY3QgS0FTQU4gYW5kIFVCU0FOIHRvIGZsYWcgdGhpcyBpc3N1ZSBpbW1lZGlhdGVseS4gRm9ydHVuYXRlbHksIGl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGxlYWthZ2UsIHNvIHRoYXQmIzM5O3MgYSBzbWFsbCByZWxpZWYuIEkganVzdCBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMgaW4gdGhvc2UgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDczMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDczMDpcdFx0LyogQ2hpcCBzZWxlY3QgKi9cbiA3MzE6XHRcdGlvd3JpdGU4KGVlY3MgfCBlZXNrLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbiA3MzI6XHRcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xuIDczMzpcdFxuIDczNDpcdFx0LyogQml0LWJhbmcgdG8gcmVhZCB3b3JkIGZyb20gZWVwcm9tICovXG4gNzM1Olx0XHRmb3IgKGkgPSAzMTsgaSBcdTAwM2U9IDA7IGktLSkge1xuIDczNjpcdFx0XHRjdHJsID0gKGNtZF9hZGRyX2RhdGEgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBpKSkgPyBlZWNzIHwgZWVkaSA6IGVlY3M7XG4gNzM3Olx0XHRcdGlvd3JpdGU4KGN0cmwsIFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIDczODpcdFx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbiA3Mzk6XHRcbiA3NDA6XHRcdFx0aW93cml0ZTgoY3RybCB8IGVlc2ssIFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIDc0MTpcdFx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbiA3NDI6XHRcbiA3NDM6XHRcdFx0LyogRWVwcm9tIGRyaXZlcyBhIGR1bW15IHplcm8gdG8gRUVETyBhZnRlciByZWNlaXZpbmdcbiA3NDQ6XHRcdFx0ICogY29tcGxldGUgYWRkcmVzcy4gIFVzZSB0aGlzIHRvIGFkanVzdCBhZGRyX2xlbi4gKi9cbiA3NDU6XHRcdFx0Y3RybCA9IGlvcmVhZDgoXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG4gNzQ2Olx0XHRcdGlmICghKGN0cmwgXHUwMDI2IGVlZG8pIFx1MDAyNlx1MDAyNiBpIFx1MDAzZSAxNikge1xuIDc0NzpcdFx0XHRcdHUxNiBsZW4gPSBpIC0gMTY7XG4gNzQ4Olx0XG4gNzQ5Olx0XHRcdFx0aWYgKGxlbiBcdTAwM2UgKmFkZHJfbGVuKVxuIDc1MDpcdFx0XHRcdFx0KmFkZHJfbGVuID0gMDtcbiA3NTE6XHRcdFx0XHRlbHNlXG4gNzUyOlx0XHRcdFx0XHQqYWRkcl9sZW4gLT0gbGVuO1xuIDc1MzpcdFx0XHRcdGkgPSAxNztcbiA3NTQ6XHRcdFx0fVxuIDc1NTpcdFxuIDc1NjpcdFx0XHRkYXRhID0gKGRhdGEgXHUwMDNjXHUwMDNjIDEpIHwgKGN0cmwgXHUwMDI2IGVlZG8gPyAxIDogMCk7XG4gNzU3Olx0XHR9XG4gNzU4Olx0XG4gNzU5Olx0XHQvKiBDaGlwIGRlc2VsZWN0ICovXG4gNzYwOlx0XHRpb3dyaXRlOCgwLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbiA3NjE6XHRcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xuIDc2MjpcdFxuIDc2MzpcdFx0cmV0dXJuIGNwdV90b19sZTE2KGRhdGEpO1xuIDc2NDpcdH07XG4gNzY1Olx0XG4gNzY2Olx0LyogTG9hZCBlbnRpcmUgRUVQUk9NIGltYWdlIGludG8gZHJpdmVyIGNhY2hlIGFuZCB2YWxpZGF0ZSBjaGVja3N1bSAqL1xuIDc2NzpcdHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4gNzY4Olx0e1xuIDc2OTpcdFx0dTE2IGFkZHIsIGFkZHJfbGVuID0gOCwgY2hlY2tzdW0gPSAwO1xuIDc3MDpcdFxuIDc3MTpcdFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiA3NzI6XHRcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4gNzczOlx0XHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4gNzc0Olx0XHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuIDc3NTpcdFx0XHRcdCAgXCYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXG5cJiMzNDssIGFkZHJfbGVuKTtcbiA3NzY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNzc3Olx0XHR9XG4gNzc4Olx0XHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gNzc5Olx0XG4gNzgwOlx0XHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykge1xuIDc4MTpcdFx0XHRuaWMtXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcbiA3ODI6XHRcdFx0aWYgKGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxKVxuIDc4MzpcdFx0XHRcdGNoZWNrc3VtICYjNDM7PSBsZTE2X3RvX2NwdShuaWMtXHUwMDNlZWVwcm9tW2FkZHJdKTtcbiA3ODQ6XHRcdH1cbiA3ODU6XHRcbiA3ODY6XHRcdC8qIFRoZSBjaGVja3N1bSwgc3RvcmVkIGluIHRoZSBsYXN0IHdvcmQsIGlzIGNhbGN1bGF0ZWQgc3VjaCB0aGF0XG4gNzg3Olx0XHQgKiB0aGUgc3VtIG9mIHdvcmRzIHNob3VsZCBiZSAweEJBQkEgKi9cbiA3ODg6XHRcdGlmIChjcHVfdG9fbGUxNigweEJBQkEgLSBjaGVja3N1bSkgIT0gbmljLVx1MDAzZWVlcHJvbVtuaWMtXHUwMDNlZWVwcm9tX3djIC0gMV0pIHtcbiA3ODk6XHRcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsIFwmIzM0O0VFUFJPTSBjb3JydXB0ZWRcXG5cJiMzNDspO1xuIDc5MDpcdFx0XHRpZiAoIWVlcHJvbV9iYWRfY3N1bV9hbGxvdylcbiA3OTE6XHRcdFx0XHRyZXR1cm4gLUVBR0FJTjtcbiA3OTI6XHRcdH1cbiA3OTM6XHRcbiA3OTQ6XHRcdHJldHVybiAwO1xuIDc5NTpcdH1cbiA3OTY6XHRcbiA3OTc6XHQvKiBTYXZlIChwb3J0aW9uIG9mKSBkcml2ZXIgRUVQUk9NIGNhY2hlIHRvIGRldmljZSBhbmQgdXBkYXRlIGNoZWNrc3VtICovXG4gNzk4Olx0c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXG4gNzk5Olx0e1xuIDgwMDpcdFx0dTE2IGFkZHIsIGFkZHJfbGVuID0gOCwgY2hlY2tzdW0gPSAwO1xuIDgwMTpcdFxuIDgwMjpcdFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiA4MDM6XHRcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4gODA0Olx0XHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4gODA1Olx0XHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuIDgwNjpcdFx0XHRcdCAgXCYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXG5cJiMzNDssIGFkZHJfbGVuKTtcbiA4MDc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gODA4Olx0XHR9XG4gODA5Olx0XHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gODEwOlx0XG4gODExOlx0XHRpZiAoc3RhcnQgJiM0MzsgY291bnQgXHUwMDNlPSBuaWMtXHUwMDNlZWVwcm9tX3djKVxuIDgxMjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA4MTM6XHRcbiA4MTQ6XHRcdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFx1MDAzYyBzdGFydCAmIzQzOyBjb3VudDsgYWRkciYjNDM7JiM0MzspXG4gODE1Olx0XHRcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIGFkZHIsIG5pYy1cdTAwM2VlZXByb21bYWRkcl0pO1xuIDgxNjpcdFxuIDgxNzpcdFx0LyogVGhlIGNoZWNrc3VtLCBzdG9yZWQgaW4gdGhlIGxhc3Qgd29yZCwgaXMgY2FsY3VsYXRlZCBzdWNoIHRoYXRcbiA4MTg6XHRcdCAqIHRoZSBzdW0gb2Ygd29yZHMgc2hvdWxkIGJlIDB4QkFCQSAqL1xuIDgxOTpcdFx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YyAtIDE7IGFkZHImIzQzOyYjNDM7KVxuIDgyMDpcdFx0XHRjaGVja3N1bSAmIzQzOz0gbGUxNl90b19jcHUobmljLVx1MDAzZWVlcHJvbVthZGRyXSk7XG4gODIxOlx0XHRuaWMtXHUwMDNlZWVwcm9tW25pYy1cdTAwM2VlZXByb21fd2MgLSAxXSA9IGNwdV90b19sZTE2KDB4QkFCQSAtIGNoZWNrc3VtKTtcbiA4MjI6XHRcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxLFxuIDgyMzpcdFx0XHRuaWMtXHUwMDNlZWVwcm9tW25pYy1cdTAwM2VlZXByb21fd2MgLSAxXSk7XG4gODI0Olx0XG4gODI1Olx0XHRyZXR1cm4gMDtcbiA4MjY6XHR9XG4gODI3Olx0XG4gODI4Olx0I2RlZmluZSBFMTAwX1dBSVRfU0NCX1RJTUVPVVQgMjAwMDAgLyogd2UgbWlnaHQgaGF2ZSB0byB3YWl0IDEwMG1zISEhICovXG4gODI5Olx0I2RlZmluZSBFMTAwX1dBSVRfU0NCX0ZBU1QgMjAgICAgICAgLyogZGVsYXkgbGlrZSB0aGUgb2xkIGNvZGUgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODczMwoJCQkJCQkJb3V0cHV0OiAyNDgKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOgoKKipBbmFseXNpcyBvZiB0aGUgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlIGNvZGUgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBjb3JlIHByb2JsZW0gaXMgZGVmaW5pdGVseSBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBvbiBgYWRkcl9sZW5gLiBUaGlzIGNhdXNlcyBhbiBvdXQtb2YtYm91bmRzIHNoaWZ0IG9wZXJhdGlvbiwgc3BlY2lmaWNhbGx5IGAxICZsdDsmbHQ7IGFkZHJfbGVuYC4gQW5kLCAqdGhhdCogcmVzdWx0cyBpbiBhIHJlYWQgb3Igd3JpdGUgb3BlcmF0aW9uIHRvIGFuIGludmFsaWQgbG9jYXRpb24gd2l0aGluIGBuaWMtJmd0O2VlcHJvbVsyNTZdYC4gQ2xhc3NpYyBtZW1vcnkgY29ycnVwdGlvbi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgS0FTQU4gYW5kIFVCU0FOIGxpa2VseSBjYXRjaGluZyB0aGlzLgoKTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IEtBU0FOIHdpbGwgZmxhZyB0aGUgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzLCBhbmQgVUJTQU4gd2lsbCBzdGVwIGluIHRvIGNhdGNoIHRoZSBzaGlmdC1vdXQtb2YtYm91bmRzIG9wZXJhdGlvbiwgdGhlIHJvb3QgY2F1c2UuCgpUaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQsIGZyb20gd2hhdCBJIGNhbiBzZWUsIHRoZXJlJiMzOTtzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgZXhwb3NlZCB0byB0aGUgdXNlciwgc28gbm8gbmVlZCBmb3IgS01TQU4gZnVzcy4gSXQgbG9va3MgbGlrZSBhIEtBU0FOL1VCU0FOIGlzc3VlLiBOb3csIGxldCYjMzk7cyBjcmFmdCB0aGUgcmVzcG9uc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlIHdpdGggYGFkZHJfbGVuYCBpbiBgZTEwMF9lZXByb21fcmVhZGAuIFdoZW4gYGFkZHJfbGVuYCB1bmRlcmZsb3dzLCBpdCBiZWNvbWVzIGEgbGFyZ2UgdmFsdWUsIHdoaWNoIHN1YnNlcXVlbnRseSBjYXVzZXMgYSBzaGlmdC1vdXQtb2YtYm91bmRzIChgMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW5gKSB3aGVuIGNhbGN1bGF0aW5nIGBuaWMtXHUwMDNlZWVwcm9tX3djYC4gVGhpcyBsYXJnZSBgZWVwcm9tX3djYCB2YWx1ZSB0aGVuIGxlYWRzIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCBvbiB0aGUgZml4ZWQtc2l6ZSBgbmljLVx1MDAzZWVlcHJvbVsyNTZdYCBhcnJheSBpbiBgZTEwMF9lZXByb21fbG9hZGAgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYC5cblxuVGhlc2UgYXJlIGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIHVuZGVmaW5lZCBiZWhhdmlvciBidWdzIChzaGlmdC1vdXQtb2YtYm91bmRzIGFuZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzKS4gU3RhbmRhcmQgS0FTQU4gKHdoaWNoIGRldGVjdHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYW5kIFVCU0FOICh3aGljaCBkZXRlY3RzIHNoaWZ0LW91dC1vZi1ib3VuZHMpIGFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGlzIGJ1Zy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciB1bmRlcmZsb3cgaXNzdWUgd2l0aCBgYWRkcl9sZW5gIGluIGBlMTAwX2VlcHJvbV9yZWFkYC4gV2hlbiBgYWRkcl9sZW5gIHVuZGVyZmxvd3MsIGl0IGJlY29tZXMgYSBsYXJnZSB2YWx1ZSwgd2hpY2ggc3Vic2VxdWVudGx5IGNhdXNlcyBhIHNoaWZ0LW91dC1vZi1ib3VuZHMgKGAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmApIHdoZW4gY2FsY3VsYXRpbmcgYG5pYy1cdTAwM2VlZXByb21fd2NgLiBUaGlzIGxhcmdlIGBlZXByb21fd2NgIHZhbHVlIHRoZW4gbGVhZHMgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciByZWFkIG9uIHRoZSBmaXhlZC1zaXplIGBuaWMtXHUwMDNlZWVwcm9tWzI1Nl1gIGFycmF5IGluIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgLlxuXG5UaGVzZSBhcmUgY2xhc3NpYyBtZW1vcnkgY29ycnVwdGlvbiBhbmQgdW5kZWZpbmVkIGJlaGF2aW9yIGJ1Z3MgKHNoaWZ0LW91dC1vZi1ib3VuZHMgYW5kIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMpLiBTdGFuZGFyZCBLQVNBTiAod2hpY2ggZGV0ZWN0cyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSBhbmQgVUJTQU4gKHdoaWNoIGRldGVjdHMgc2hpZnQtb3V0LW9mLWJvdW5kcykgYXJlIHBlcmZlY3RseSBjYXBhYmxlIG9mIGNhdGNoaW5nIHRoaXMgYnVnLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIHVzZWQgaW4gY29udHJvbCBmbG93LCBvciBsZWFrZWQgdG8gdXNlcnNwYWNlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjMwOjU0Ljc4MDMxNjk5N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0ODIxNDExNDgxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMF9wcm9iZVwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBpc3N1ZSB3aXRoIGBhZGRyX2xlbmAgaW4gYGUxMDBfZWVwcm9tX3JlYWRgLiBXaGVuIGBhZGRyX2xlbmAgdW5kZXJmbG93cywgaXQgYmVjb21lcyBhIGxhcmdlIHZhbHVlLCB3aGljaCBzdWJzZXF1ZW50bHkgY2F1c2VzIGEgc2hpZnQtb3V0LW9mLWJvdW5kcyAoYDEgXFx1MDAzY1xcdTAwM2MgYWRkcl9sZW5gKSB3aGVuIGNhbGN1bGF0aW5nIGBuaWMtXFx1MDAzZWVlcHJvbV93Y2AuIFRoaXMgbGFyZ2UgYGVlcHJvbV93Y2AgdmFsdWUgdGhlbiBsZWFkcyB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHJlYWQgb24gdGhlIGZpeGVkLXNpemUgYG5pYy1cXHUwMDNlZWVwcm9tWzI1Nl1gIGFycmF5IGluIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgLlxcblxcblRoZXNlIGFyZSBjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgYnVncyAoc2hpZnQtb3V0LW9mLWJvdW5kcyBhbmQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcykuIFN0YW5kYXJkIEtBU0FOICh3aGljaCBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFuZCBVQlNBTiAod2hpY2ggZGV0ZWN0cyBzaGlmdC1vdXQtb2YtYm91bmRzKSBhcmUgcGVyZmVjdGx5IGNhcGFibGUgb2YgY2F0Y2hpbmcgdGhpcyBidWcuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgdXNlZCBpbiBjb250cm9sIGZsb3csIG9yIGxlYWtlZCB0byB1c2Vyc3BhY2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBFRVBST00gcmVhZC93cml0ZSBvcGVyYXRpb25zIGluIHRoZSBJbnRlbCBQUk8vMTAwIChlMTAwKSBFdGhlcm5ldCBkcml2ZXIuIFRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApIGFuZCB2aWEgZXRodG9vbCAoYGUxMDBfc2V0X2VlcHJvbWApLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgUUVNVSdzIGBpODI1NTllcmAgZW11bGF0ZWQgUENJIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzA6NTQuNzgwMzI3MTU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjY2MTU5ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNzc0YWUwNDhkY2UzYjc5ODkwNjExZDE5ODgyNmJjOGFiNzIwMzlmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDA5OjMwOjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xcbmluZGV4IDI5OTYwNzYyZTY0YTguLjI2YTdjMGFhYTZlMjIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXFxuQEAgLTc0NCw3ICs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXFxuIFxcdFxcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXFxuIFxcdFxcdGN0cmwgPSBpb3JlYWQ4KFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xcbiBcXHRcXHRpZiAoIShjdHJsIFxcdTAwMjYgZWVkbykgXFx1MDAyNlxcdTAwMjYgaSBcXHUwMDNlIDE2KSB7XFxuLVxcdFxcdFxcdCphZGRyX2xlbiAtPSAoaSAtIDE2KTtcXG4rXFx0XFx0XFx0dTE2IGxlbiA9IGkgLSAxNjtcXG4rXFxuK1xcdFxcdFxcdGlmIChsZW4gXFx1MDAzZSAqYWRkcl9sZW4pXFxuK1xcdFxcdFxcdFxcdCphZGRyX2xlbiA9IDA7XFxuK1xcdFxcdFxcdGVsc2VcXG4rXFx0XFx0XFx0XFx0KmFkZHJfbGVuIC09IGxlbjtcXG4gXFx0XFx0XFx0aSA9IDE3O1xcbiBcXHRcXHR9XFxuIFxcbkBAIC03NjUsNiArNzcwLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuIFxcbiBcXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbiBcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG4rXFx0aWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcXHUwMDNlIDgpIHtcXG4rXFx0XFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cXHUwMDNlbmV0ZGV2LFxcbitcXHRcXHRcXHQgIFxcXCJpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcXFxuXFxcIiwgYWRkcl9sZW4pO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbiBcXHRuaWMtXFx1MDAzZWVlcHJvbV93YyA9IDEgXFx1MDAzY1xcdTAwM2MgYWRkcl9sZW47XFxuIFxcbiBcXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2M7IGFkZHIrKykge1xcbkBAIC03OTEsNiArODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxcbiBcXG4gXFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cXG4gXFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuK1xcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXFx1MDAzZSA4KSB7XFxuK1xcdFxcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXFx1MDAzZW5ldGRldixcXG4rXFx0XFx0XFx0ICBcXFwiaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXFxcblxcXCIsIGFkZHJfbGVuKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4gXFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbiBcXG4gXFx0aWYgKHN0YXJ0ICsgY291bnQgXFx1MDAzZT0gbmljLVxcdTAwM2VlZXByb21fd2MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjMwOjU1LjI0NzcxNzI3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM0ODg0MDIzNDk2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMF9wcm9iZVwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gRUVQUk9NIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyLiBUaGVzZSBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSBhbmQgdmlhIGV0aHRvb2wgKGBlMTAwX3NldF9lZXByb21gKS4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIFFFTVUncyBgaTgyNTU5ZXJgIGVtdWxhdGVkIFBDSSBkZXZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE3NzRhZTA0OGRjZTNiNzk4OTA2MTFkMTk4ODI2YmM4YWI3MjAzOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAwOTozMDo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuaW5kZXggMjk5NjA3NjJlNjRhOC4uMjZhN2MwYWFhNmUyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5AQCAtNzQ0LDcgKzc0NCwxMiBAQCBzdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcbiBcdFx0ICogY29tcGxldGUgYWRkcmVzcy4gIFVzZSB0aGlzIHRvIGFkanVzdCBhZGRyX2xlbi4gKi9cbiBcdFx0Y3RybCA9IGlvcmVhZDgoXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG4gXHRcdGlmICghKGN0cmwgXHUwMDI2IGVlZG8pIFx1MDAyNlx1MDAyNiBpIFx1MDAzZSAxNikge1xuLVx0XHRcdCphZGRyX2xlbiAtPSAoaSAtIDE2KTtcbitcdFx0XHR1MTYgbGVuID0gaSAtIDE2O1xuK1xuK1x0XHRcdGlmIChsZW4gXHUwMDNlICphZGRyX2xlbilcbitcdFx0XHRcdCphZGRyX2xlbiA9IDA7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0KmFkZHJfbGVuIC09IGxlbjtcbiBcdFx0XHRpID0gMTc7XG4gXHRcdH1cbiBcbkBAIC03NjUsNiArNzcwLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4gXG4gXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuIFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbitcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlIDgpIHtcbitcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsXG4rXHRcdFx0ICBcImludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XFxuXCIsIGFkZHJfbGVuKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4gXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gXG4gXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyKyspIHtcbkBAIC03OTEsNiArODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuIFxuIFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiBcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4rXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4rXHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuK1x0XHRcdCAgXCJpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcblwiLCBhZGRyX2xlbik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuIFxuIFx0aWYgKHN0YXJ0ICsgY291bnQgXHUwMDNlPSBuaWMtXHUwMDNlZWVwcm9tX3djKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzA6NTUuMjQ3NzE5OTM5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODgyNjk0ODI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBJbnRlbCBQUk8vMTAwIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2gg4oCTIGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jYCBmaWxlLiBUaGUgZTEwMCBkcml2ZXIsIGZvciB0aG9zZSBvZiB1cyB3aG8gaGF2ZW4ndCBkZWFsdCB3aXRoIGl0IHJlY2VudGx5LCBpcyB0aGUgZHJpdmVyIGZvciB0aG9zZSBvbGRlciBJbnRlbCBQUk8vMTAwIEV0aGVybmV0IGFkYXB0ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBmdXp6IHRoaXMgd2l0aCBRRU1VPyBBbmQgdGhlbiBJIHJlbWVtYmVyZWQsIFFFTVUgZG9lcyBlbXVsYXRlIHNvbWUgZTEwMC1jb21wYXRpYmxlIGRldmljZXM6IHRoZSBgaTgyNTU3YmAsIGBpODI1NTllcmAsIGFuZCBgaTgyNTU5Y2AuIFNvLCBsZXQncyBsb29rIGRlZXBlciBhdCB0aGUgcGF0Y2ggYW5kIHNlZS5cblxuVGhlIGZ1bmN0aW9ucyB3ZSdyZSBpbnRlcmVzdGVkIGluIOKAkyBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCDigJMgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBPa2F5LCBgZTEwMF9lZXByb21fbG9hZGAgZ2V0cyBjYWxsZWQgZHVyaW5nIHByb2JlLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHRlc3RpbmcgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBnZXRzIGNhbGxlZCBmcm9tIGBldGh0b29sYC4gTGV0J3MgY2hlY2sgaWYgUUVNVSByZWFsbHkgZG9lcyBlbXVsYXRlIHRoZSBlMTAwLiBBaCwgeWVzLCB0aGUgYGk4MjU1OWVyYCBpbiBRRU1VIGRvZXMgdXNlIHRoZSBlMTAwIGRyaXZlci5cblxuV2FpdCBhIHNlY29uZOKApiB0aGUgYGk4MjU1OWVyYCBpcyBhIFBDSSBkZXZpY2UsIGlzbid0IGl0PyBPa2F5LCBzbyBjYW4gc3l6a2FsbGVyIGZ1enogUENJIGRldmljZXM/IFllcywgaXQgY2FuLCB2aWEgdGhlIHZoY2kgaW50ZXJmYWNlIG9yIGJ5IGRpcmVjdGx5IGludGVyYWN0aW5nIHdpdGggdGhlIG5ldGRldiBvciB2aWEgZXRodG9vbC4gQmluZ28uIFN5emthbGxlciBjYW4gZnV6eiBldGh0b29sIGRpcmVjdGx5LCByaWdodD8gU28gd2UncmUgbG9va2luZyBhdCBgZTEwMF9lZXByb21fc2F2ZWAgYW5kIGBlMTAwX2VlcHJvbV9sb2FkYCBhZ2Fpbi4gQnV0IHdlIG5lZWQgdG8gY2hlY2sgaG93IHJlYWNoYWJsZSB0aGVzZSBmdW5jdGlvbnMgYXJlLlxuXG5gZTEwMF9lZXByb21fbG9hZGAgaXMgY2FsbGVkIGZyb20gYGUxMDBfcHJvYmVgLCB3aGljaCBpcyBnb29kLCBhcyBtZW50aW9uZWQgYmVmb3JlLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgIGlzIGNhbGxlZCBmcm9tIGBlMTAwX3NldF9lZXByb21gLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgZTEwMF9zZXRfZWVwcm9tYCBpcyB1c2VkLiBUaW1lIHRvIHdoaXAgb3V0IHRoZSBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozMTowNC4wNzQ2NzEwOTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTEwODQ5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9zZXRfZWVwcm9tXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjU0Nz1zdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NTg6c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1OS1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI3NTE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlMTAwX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NjItXFx0LmdldF9lZXByb21cXHRcXHQ9IGUxMDBfZ2V0X2VlcHJvbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc2MzpcXHQuc2V0X2VlcHJvbVxcdFxcdD0gZTEwMF9zZXRfZWVwcm9tLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzY0LVxcdC5nZXRfcmluZ3BhcmFtXFx0XFx0PSBlMTAwX2dldF9yaW5ncGFyYW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjMxOjA0LjE2NTc2MzA0OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTEyMDIzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbnRlbCBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGBlMTAwYCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoYXQsIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgdGV4dCB0ZWxscyBtZSB0aGUgZHJpdmVyIGlzIHJlZmVycmVkIHRvIGFzIGBlMTAwYCwgc28gbGV0J3Mgc3RhcnQgd2l0aCB0aGF0LiBCdXQgSSBhbHNvIHNlZSBgQ09ORklHX0UxMDBgIG1lbnRpb25lZC4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCBmb3IgY2hlY2tpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29udHJvbGxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS5cblxuR2l2ZW4gbXkgZXhwZXJpZW5jZSwgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGV4YW1pbmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgLiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgSW50ZWwgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gaXQncyBhIHNhZmUgYmV0IHRoYXQgYENPTkZJR19FMTAwYCwgaWYgaXQgZXhpc3RzLCBpcyBkZWZpbmVkIGFuZCBjb250cm9sbGVkIHRoZXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBoYXJkd2FyZSBmZWF0dXJlcywgcG90ZW50aWFsIGNvbmZsaWN0cywgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmdzLiBBIGRlZXAgZGl2ZSBpbnRvIHRoaXMgS2NvbmZpZyB3aWxsIHJldmVhbCB0aGUgd2hvbGUgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozMTowNy45NzY5Njc4MTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3MzkyMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIwPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI6Y29uZmlnIEUxMDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSBQUk8vMTAwKyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjQ1OmNvbmZpZyBFMTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo2MTpjb25maWcgRTEwMDBFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgUFJPLzEwMDAgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjgxOmNvbmZpZyBFMTAwMEVfSFdUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODItXFx0Ym9vbCBcXFwiU3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gUENIIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjMxOjA4LjAyMzcxMzU3MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTcwOTM5MDAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGNvbmZpZyBFMTAwYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBjb25maWcgRTEwMGAuIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gSeKAmW0gdGhpbmtpbmcsIGdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhpcyBzeXN0ZW0sIHdoYXQgYXJlIHRoZSBtb3N0IGxpa2VseSBjb21wb25lbnRzIG9yIG1vZHVsZXMgdGhhdCByZWx5IG9uLCBvciBhcmUgaW5mbHVlbmNlZCBieSwgdGhlIHNldHRpbmdzIHdpdGhpbiBgY29uZmlnIEUxMDBgPyBJJ20gaW1tZWRpYXRlbHkgcnVubmluZyB0aHJvdWdoIGEgbWVudGFsIGNoZWNrbGlzdDogaXMgaXQgcHJpbWFyaWx5IGhhcmR3YXJlLXJlbGF0ZWQsIG9yIGRvZXMgaXQgYWxzbyBpbXBhY3QgYW55IG9mIHRoZSBzb2Z0d2FyZSBzdGFja3M/IEFyZSB3ZSB0YWxraW5nIGRyaXZlciBiZWhhdmlvciwgbmV0d29yayBzdGFjayBwYXJhbWV0ZXJzLCBpbnRlcnJ1cHQgc2V0dGluZ3MsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgaGlnaC1sZXZlbCBhcmVhcyB0byBmb2N1cyBvbiBmaXJzdCwgYmVmb3JlIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gdGhlIGxvd2VyLWxldmVsIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIFRoYXQgd2F5IEkgY2FuIGJlIGVmZmljaWVudCBpbiBnZXR0aW5nIHRvIHRoZSByb290IG9mIHdoYXQgZGVwZW5kcyBvbiB0aGlzIGNvbmZpZy4gTGV0IG1lIHF1aWNrbHkgc2NvcGUgdGhlIHN5c3RlbSB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzU6NTkuNzMzMTA3NDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMjpcXHRjb25maWcgRTEwMFxcbiAgMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDArIHN1cHBvcnRcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMjU6XFx0XFx0c2VsZWN0IE1JSVxcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBQUk8vMTAwIGZhbWlseSBvZiBhZGFwdGVycy5cXG4gIDI4OlxcdFxcdCAgVG8gdmVyaWZ5IHRoYXQgeW91ciBhZGFwdGVyIGlzIHN1cHBvcnRlZCwgZmluZCB0aGUgYm9hcmQgSUQgbnVtYmVyXFxuICAyOTpcXHRcXHQgIG9uIHRoZSBhZGFwdGVyLiBMb29rIGZvciBhIGxhYmVsIHRoYXQgaGFzIGEgYmFyY29kZSBhbmQgYSBudW1iZXJcXG4gIDMwOlxcdFxcdCAgaW4gdGhlIGZvcm1hdCAxMjM0NTYtMDAxIChzaXggZGlnaXRzIGh5cGhlbiB0aHJlZSBkaWdpdHMpLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFVzZSB0aGUgYWJvdmUgaW5mb3JtYXRpb24gYW5kIHRoZSBBZGFwdGVyIFxcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXRcXG4gIDMzOlxcdFxcdCAgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICB0byBpZGVudGlmeSB0aGUgYWRhcHRlci5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDQwOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAucnN0XFx1MDAzZS5cXG4gIDQxOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNTo1OS43MzMyMjI3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTQzMzU4NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGUxMDAgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZTEwMGAgZHJpdmVyLCBhbmQgaXQncyBhIHByZXR0eSBzdGFuZGFyZCBQQ0kgZXRoZXJuZXQgZHJpdmVyLiBJIHNlZSBhIHBvdGVudGlhbCBhdmVudWUgZm9yIGZ1enppbmcgaXQg4oCTIHNwZWNpZmljYWxseSB0aHJvdWdoIGBldGh0b29sYCwgc2luY2UgdGhlIGBlMTAwX3NldF9lZXByb21gIGZ1bmN0aW9uIGlzIGFjY2Vzc2libGUgdGhhdCB3YXkuIEhtbSwgd2FpdCBhIHNlY29uZC4uLiBpc24ndCBgZTEwMF9lZXByb21fbG9hZGAgYWxzbyBjYWxsZWQgZnJvbSBgZTEwMF9wcm9iZWA/IFRoYXQncyBpbnRlcmVzdGluZy5cblxuVGhlIGtleSB0aGVuIGJlY29tZXMgZ2V0dGluZyB0aGUgZHJpdmVyIGxvYWRlZC4gSWYgSSBjYW4gZW11bGF0ZSB0aGUgZGV2aWNlLCBvciBpZGVhbGx5IGxldmVyYWdlIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciB0byBpbmplY3QgUENJIGRldmljZXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciBgZTEwMF9wcm9iZWAuIEdvb2QgbmV3czogc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHNwZWNpZmljYWxseSBgdmZpby9wY2lgLCB3aGljaCBjb3VsZCBiZSBwZXJmZWN0IGZvciB0aGlzLlxuXG5BbmQsIHRoaW5raW5nIGFib3V0IGVtdWxhdGlvbiwgaXNuJ3QgUUVNVSBrbm93biB0byBzdXBwb3J0IGBpODI1NTllcmA/IEFuZCBkb2Vzbid0IHRoZSBgZTEwMGAgZHJpdmVyIGFsc28gaGFuZGxlIHRoYXQgcGFydGljdWxhciBkZXZpY2U/IEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgdG8gY29uZmlybSB0aGUgYGUxMDBgIGRyaXZlcidzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgYGk4MjU1OWVyYCBkZXZpY2Ug4oCTIHRoYXQgY291bGQgYmUgYSBsb3ctZWZmb3J0IHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk5LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6MDkuODc2NTgzODEzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDEzNDUxNDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImk4MjU1OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjEwLjQ3NzkzNzc3MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODE2NjY4ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGUxMDAuYyBmb3IgUENJIElEIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZTEwMCBkcml2ZXIgaGFuZGxlcyBQQ0kgZGV2aWNlIGlkZW50aWZpY2F0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIGBlMTAwLmNgLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSBob3cgaXQncyBkb25lLiBJJ20gbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIGNvZGUgdGhhdCBtYXBzIHRoZSBQQ0kgVmVuZG9yIElEIGFuZCBEZXZpY2UgSUQgdG8gdGhlIGRyaXZlcidzIHN1cHBvcnRlZCBoYXJkd2FyZS4gTGV0J3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSB0aGF0IG1hdGNoaW5nIHByb2Nlc3MsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcXVpcmtzIG9yIHNwZWNpZmljIGhhbmRsaW5nIGZvciBkaWZmZXJlbnQgcmV2aXNpb25zIG9yIHZlbmRvcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBncmFudWxhcml0eSBvZiB0aGVpciBkZXZpY2UgaWRlbnRpZmljYXRpb24gYW5kIGhvdyByb2J1c3QgaXQgaXMuIEhvcGVmdWxseSwgaXQncyBub3QgYSBzaW1wbGUgaGFyZGNvZGVkIHRhYmxlIGFuZCB0aGVyZSdzIHNvbWUgZWxlZ2FudCB1c2Ugb2Ygd2lsZGNhcmRzIG9yIG1vcmUgc29waGlzdGljYXRlZCBtYXRjaGluZyBsb2dpYywgbWF5YmUgZXZlbiBzb21lIHJ1bnRpbWUgcHJvYmluZy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NzcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoxNC4yOTQ2MTA1NzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2NjAxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xNzc9TU9EVUxFX1BBUk1fREVTQyh1c2VfaW8sIFxcXCJGb3JjZSB1c2Ugb2YgaS9vIGFjY2VzcyBtb2RlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxODU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGUxMDBfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg2LVxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMjksIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI4MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlMTAwX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjg0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjg0NTpzdGF0aWMgaW50IGUxMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4NDYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoxNC4zOTEyMTkyNTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzMDQzNzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBEYXRhKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgb2YgdGhpcyBjdXJyZW50IHByb2JsZW0sIHNvIGxldCdzIHN0YXJ0IHdpdGggYSBsb29rIGF0IGBlMTAwX2lkX3RhYmxlYC4gSSdtIGFscmVhZHkgbWVudGFsbHkgZm9ybWluZyBoeXBvdGhlc2VzIGFib3V0IHdoYXQgZGF0YSBpdCBsaWtlbHkgY29udGFpbnMsIHRoZSBmb3JtYXQgaXQncyBsaWtlbHkgc3RydWN0dXJlZCBpbiwgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBvdGhlciBlbGVtZW50cyBvZiB0aGlzIHN5c3RlbS4gSSdtIGhvcGluZyBpdCdsbCBwcm92aWRlIGEga2V5LCBhIG1hcCwgYSBzdGFydGluZyBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBCYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEkgaGF2ZSBzb21lIGV4cGVjdGF0aW9ucywgYnV0IGNvbmZpcm1hdGlvbiBpcyBrZXkuIExldCdzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMuIEl0J3MgdGltZSB0byByZWFkIHRoaXMgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMjUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoxOC4wMjE2NjAzNTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODU6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGUxMDBfaWRfdGFibGVbXSA9IHtcXG4gMTg2OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMjksIDApLFxcbiAxODc6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzMCwgMCksXFxuIDE4ODpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDMxLCAzKSxcXG4gMTg5OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzIsIDMpLFxcbiAxOTA6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzMywgMyksXFxuIDE5MTpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDM0LCAzKSxcXG4gMTkyOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzgsIDMpLFxcbiAxOTM6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzOSwgNCksXFxuIDE5NDpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDNBLCA0KSxcXG4gMTk1OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwM0IsIDQpLFxcbiAxOTY6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzQywgNCksXFxuIDE5NzpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDNELCA0KSxcXG4gMTk4OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwM0UsIDQpLFxcbiAxOTk6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1MCwgNSksXFxuIDIwMDpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDUxLCA1KSxcXG4gMjAxOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTIsIDUpLFxcbiAyMDI6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1MywgNSksXFxuIDIwMzpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDU0LCA1KSxcXG4gMjA0OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTUsIDUpLFxcbiAyMDU6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1NiwgNSksXFxuIDIwNjpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDU3LCA1KSxcXG4gMjA3OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTksIDApLFxcbiAyMDg6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2NCwgNiksXFxuIDIwOTpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDY1LCA2KSxcXG4gMjEwOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNjYsIDYpLFxcbiAyMTE6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2NywgNiksXFxuIDIxMjpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDY4LCA2KSxcXG4gMjEzOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNjksIDYpLFxcbiAyMTQ6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2QSwgNiksXFxuIDIxNTpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDZCLCA2KSxcXG4gMjE2OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwOTEsIDcpLFxcbiAyMTc6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA5MiwgNyksXFxuIDIxODpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDkzLCA3KSxcXG4gMjE5OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwOTQsIDcpLFxcbiAyMjA6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA5NSwgNyksXFxuIDIyMTpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMGZlLCA3KSxcXG4gMjIyOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEyMDksIDApLFxcbiAyMjM6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTIyOSwgMCksXFxuIDIyNDpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgyNDQ5LCAyKSxcXG4gMjI1OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDI0NTksIDIpLFxcbiAyMjY6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MjQ1RCwgMiksXFxuIDIyNzpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgyN0RDLCA3KSxcXG4gMjI4OlxcdFxcdHsgMCwgfVxcbiAyMjk6XFx0fTtcXG4gMjMwOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBlMTAwX2lkX3RhYmxlKTtcXG4gMjMxOlxcdFxcbiAyMzI6XFx0ZW51bSBtYWMge1xcbiAyMzM6XFx0XFx0bWFjXzgyNTU3X0QxMDBfQSAgPSAwLFxcbiAyMzQ6XFx0XFx0bWFjXzgyNTU3X0QxMDBfQiAgPSAxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoxOC4wMjIxMDI0NjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5NjAwNTA4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEludGVsIDgyNTU5IEV0aGVybmV0IENvbnRyb2xsZXIgRW11bGF0aW9uKipcblxuT2theSwgc28gUUVNVSdzIGBpODI1NTllcmAgZW11bGF0ZXMgYSBkZXZpY2Ugd2l0aCB0aGUgUENJIElEIDgwODY6MTIwOS4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIDB4MTIwOSBpcyBhY3R1YWxseSBwcmVzZW50IGluIHRoZSBkZXZpY2UgbGlzdC4gWWVwLCB0aGVyZSBpdCBpczogYElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEyMDksIDApYC4gVGhhdCBjb25maXJtcyBRRU1VICpkb2VzKiBlbXVsYXRlIGl0LCB3aGljaCBtZWFucyBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdC4gRXhjZWxsZW50LlxuXG5Ob3csIHRoZSBwYXRjaCB0b3VjaGVzIGBlMTAwX2VlcHJvbV9yZWFkYCwgYGUxMDBfZWVwcm9tX2xvYWRgLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgLiBBIHF1aWNrIGdsYW5jZSBzaG93cyBgZTEwMF9lZXByb21fcmVhZGAgaXMgY2FsbGVkIGJ5IGJvdGggYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuIGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBpbnZva2VkIGZyb20gYGUxMDBfcHJvYmVgLCB3aGljaCBpcyBzdGFuZGFyZCBpbml0aWFsaXphdGlvbi4gQW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBpcyB1c2VkIGJ5IGBlMTAwX3NldF9lZXByb21gLiBBaGEhIGBlMTAwX3NldF9lZXByb21gIGlzIGFuIGV0aHRvb2wgb3BlcmF0aW9uLiBUaGlzIGlzIGdvb2QgbmV3czsgaXQgbWVhbnMgdGhlc2UgZnVuY3Rpb25zICphcmUqIHJlYWNoYWJsZSB0aHJvdWdoIHN0YW5kYXJkIG5ldHdvcmsgbWFuYWdlbWVudCBpbnRlcmZhY2VzLCBtYWtpbmcgdGhlbSByaXBlIHRhcmdldHMgZm9yIGZ1enppbmcuXG5cbkJ1dCwgSSBzaG91bGQgdGFrZSBhIG1vbWVudCB0byBzZWUgaWYgYGUxMDBfZWVwcm9tX3JlYWRgIGlzIGludm9rZWQgZnJvbSBhbnkgKm90aGVyKiBsb2NhdGlvbnMuIE5lZWQgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBtb3JlIGNyaXRpY2FsIGVudHJ5IHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njk5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6MjQuMTE4MTEyMTUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTE2MzczMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlMTAwX2VlcHJvbV9yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NjgzPXN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzIwLS8qIEdlbmVyYWwgdGVjaG5pcXVlIHN0b2xlbiBmcm9tIHRoZSBlZXBybzEwMCBkcml2ZXIgLSB2ZXJ5IGNsZXZlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MjE6c3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzY3PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzcxLVxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc3MjpcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzczLVxcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXFx1MDAzZSA4KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzgwLVxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YzsgYWRkcisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4MTpcXHRcXHRuaWMtXFx1MDAzZWVlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCBcXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODItXFx0XFx0aWYgKGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Nzk4PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMi1cXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4MDM6XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwNC1cXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFxcdTAwM2UgOCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoyNC4xODkyODg4NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY5MTUyMzMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGUxMDAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgYWRkaW5nIGJvdW5kcyBjaGVja2luZyB0byB0aGUgYGUxMDBfZWVwcm9tX3JlYWRgLCBgZTEwMF9lZXByb21fbG9hZGAsIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAgZnVuY3Rpb25zLiBUaGF0J3MgZ29vZCwgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBJdCdzIGFib3V0IHByZXZlbnRpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGluZmluaXRlIGxvb3BzLCB3aGljaCBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBuYXN0eSBwcm9ibGVtcywgYW5kIHRoaXMgZHJpdmVyIGlzIHRoZSBgZTEwMGAgZHJpdmVyLCB3aXRoIGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBhcyBgRTEwMGAuXG5cblRoZSBtYWluIGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIGBlMTAwX3NldF9lZXByb21gIGFuZCBgZTEwMF9wcm9iZWAuIFdhaXQsIGBlMTAwX3Byb2JlYCBpcyBhIHByb2JlIGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgZmlyc3QgcHJvYmVkLCByaWdodD8gT2theSwgc28gdGhhdCdzIHdoZXJlIHRoZSBkcml2ZXIgZ2V0cyBpbml0aWFsaXplZC5cblxuTm93LCBgZTEwMF9zZXRfZWVwcm9tYCBpcyBjYWxsZWQgdmlhIGV0aHRvb2wuIEludGVyZXN0aW5nLi4uIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmc6IElzIGBlMTAwX3NldF9lZXByb21gIGRlY2xhcmVkIGFzIHN0YXRpYz8gWXVwLCBpdCBpcy4gTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGhlcmUgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgYnV0IGBlMTAwX3NldF9lZXByb21gIGlzIHVzZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoaW4gYGV0aHRvb2xfb3BzYCwgc28gdGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBwcm9iYWJseSBpcyBub3QgYW4gaXNzdWUgaW4gdGhpcyBjYXNlLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6MjkuODgwODE0NDE2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg4NzI2NTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgZTEwMF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoyOS45ODk2OTQ0MzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4Mzg5ODA3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNvZGUgSW5zcGVjdGlvbiBcdTAwMjYgUGF0dGVybiBSZWNvZ25pdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgY29kZS4gVGhlIGdvYWwgaXMgbGlrZWx5IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGUxMDBgIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQuIExldCdzIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggdXNpbmcgYSByZWdleC4gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiBjb21tb24ga2VybmVsIGNvZGluZyBzdHlsZSBhbmQgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGUgZGVjbGFyYXRpb24gbWlnaHQgc3RhcnQgd2l0aCBlaXRoZXIgYHN0YXRpYyBpbnQgZTEwMF9gIG9yIGBzdGF0aWMgdm9pZCBlMTAwX2AuIFRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIGludGVybmFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucywgbGlrZWx5IHdpdGhpbiB0aGUgbW9kdWxlIG9yIGRyaXZlci4gUXVpY2tseSBmaW5kaW5nIHRoYXQgcGF0dGVybiB3aWxsIGdpdmUgbWUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHN0YXJ0IHRoZSBhbmFseXNpcy4gSSdsbCBmaWx0ZXIgZm9yIHRob3NlIGRlY2xhcmF0aW9ucyB0byBuYXJyb3cgZG93biB0aGUgc2VhcmNoIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYyOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjMzLjE3MzU5NDgzNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NDQzODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgaW50IGUxMDBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NjM1PXN0YXRpYyB2b2lkIGUxMDBfaHdfcmVzZXQoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjUwOnN0YXRpYyBpbnQgZTEwMF9zZWxmX3Rlc3Qoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTcyMT1zdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NjYtLyogTG9hZCBlbnRpcmUgRUVQUk9NIGltYWdlIGludG8gZHJpdmVyIGNhY2hlIGFuZCB2YWxpZGF0ZSBjaGVja3N1bSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3Njc6c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03OTctLyogU2F2ZSAocG9ydGlvbiBvZikgZHJpdmVyIEVFUFJPTSBjYWNoZSB0byBkZXZpY2UgYW5kIHVwZGF0ZSBjaGVja3N1bSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3OTg6c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc5OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODI5LSNkZWZpbmUgRTEwMF9XQUlUX1NDQl9GQVNUIDIwICAgICAgIC8qIGRlbGF5IGxpa2UgdGhlIG9sZCBjb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgzMDpzdGF0aWMgaW50IGUxMDBfZXhlY19jbWQoc3RydWN0IG5pYyAqbmljLCB1OCBjbWQsIGRtYV9hZGRyX3QgZG1hX2FkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4NjE6c3RhdGljIGludCBlMTAwX2V4ZWNfY2Ioc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04NjItXFx0aW50ICgqY2JfcHJlcGFyZSkoc3RydWN0IG5pYyAqLCBzdHJ1Y3QgY2IgKiwgc3RydWN0IHNrX2J1ZmYgKikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTA1Mz1zdGF0aWMgdm9pZCBlMTAwX2dldF9kZWZhdWx0cyhzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA4NjpzdGF0aWMgaW50IGUxMDBfY29uZmlndXJlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTIzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpcm13YXJlICplMTAwX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzMjQ6c3RhdGljIGludCBlMTAwX3NldHVwX3Vjb2RlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyNS1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTM1ND1zdGF0aWMgaW5saW5lIGludCBlMTAwX2xvYWRfdWNvZGVfd2FpdChzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTM5NDpzdGF0aWMgaW50IGUxMDBfc2V0dXBfaWFhZGRyKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5NS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0MDI6c3RhdGljIGludCBlMTAwX2R1bXAoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNDEwOnN0YXRpYyBpbnQgZTEwMF9waHlfY2hlY2tfd2l0aG91dF9taWkoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDQ5LSNkZWZpbmUgTlNDX0NPTkdfVFhSRUFEWVxcdDB4MDQwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNDUwOnN0YXRpYyBpbnQgZTEwMF9waHlfaW5pdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NDM6c3RhdGljIGludCBlMTAwX2h3X2luaXQoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTc2OnN0YXRpYyBpbnQgZTEwMF9tdWx0aShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE3MDE9c3RhdGljIHZvaWQgZTEwMF93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzUyOnN0YXRpYyBpbnQgZTEwMF94bWl0X3ByZXBhcmUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzUzLVxcdHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTc4Nj1zdGF0aWMgbmV0ZGV2X3R4X3QgZTEwMF94bWl0X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTgyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTgyMjpzdGF0aWMgaW50IGUxMDBfdHhfY2xlYW4oc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xODY1PXN0YXRpYyB2b2lkIGUxMDBfY2xlYW5fY2JzKHN0cnVjdCBuaWMgKm5pYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxODg5OnN0YXRpYyBpbnQgZTEwMF9hbGxvY19jYnMoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xOTE4PXN0YXRpYyBpbmxpbmUgdm9pZCBlMTAwX3N0YXJ0X3JlY2VpdmVyKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IHJ4ICpyeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTMzLSNkZWZpbmUgUkZEX0JVRl9MRU4gKHNpemVvZihzdHJ1Y3QgcmZkKSArIFZMQU5fRVRIX0ZSQU1FX0xFTiArIEVUSF9GQ1NfTEVOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxOTM0OnN0YXRpYyBpbnQgZTEwMF9yeF9hbGxvY19za2Ioc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgcnggKnJ4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxOTY2OnN0YXRpYyBpbnQgZTEwMF9yeF9pbmRpY2F0ZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5NjctXFx0dW5zaWduZWQgaW50ICp3b3JrX2RvbmUsIHVuc2lnbmVkIGludCB3b3JrX3RvX2RvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTIxNDU9c3RhdGljIHZvaWQgZTEwMF9yeF9jbGVhbl9saXN0KHN0cnVjdCBuaWMgKm5pYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMTY4OnN0YXRpYyBpbnQgZTEwMF9yeF9hbGxvY19saXN0KHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE2OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjIwOD1zdGF0aWMgaXJxcmV0dXJuX3QgZTEwMF9pbnRyKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjM2OnN0YXRpYyBpbnQgZTEwMF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjIzNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjI1Nj1zdGF0aWMgdm9pZCBlMTAwX25ldHBvbGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjY3OnN0YXRpYyBpbnQgZTEwMF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdm9pZCAqcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI4MTpzdGF0aWMgaW50IGUxMDBfYXNmKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5MDpzdGF0aWMgaW50IGUxMDBfdXAoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMzQ0PXN0YXRpYyB2b2lkIGUxMDBfdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzYwOnN0YXRpYyBpbnQgZTEwMF9sb29wYmFja190ZXN0KHN0cnVjdCBuaWMgKm5pYywgZW51bSBsb29wYmFjayBsb29wYmFja19tb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDIxOnN0YXRpYyBpbnQgZTEwMF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQyMi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MzE6c3RhdGljIGludCBlMTAwX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDMyLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjQ0ND1zdGF0aWMgdm9pZCBlMTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ1My0jZGVmaW5lIEUxMDBfUEhZX1JFR1MgMHgxRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDU0OnN0YXRpYyBpbnQgZTEwMF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjQ4OT1zdGF0aWMgdm9pZCBlMTAwX2dldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0OTY6c3RhdGljIGludCBlMTAwX3NldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNTIyPXN0YXRpYyB2b2lkIGUxMDBfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNTI4OnN0YXRpYyBpbnQgZTEwMF9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1MzQ9c3RhdGljIHUzMiBlMTAwX2dldF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjU0MDpzdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0Ni0jZGVmaW5lIEUxMDBfRUVQUk9NX01BR0lDXFx0MHgxMjM0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NDc6c3RhdGljIGludCBlMTAwX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0OC1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NTg6c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1OS1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1NzI9c3RhdGljIHZvaWQgZTEwMF9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjU4NzpzdGF0aWMgaW50IGUxMDBfc2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTg4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNjIyPXN0YXRpYyB2b2lkIGUxMDBfZGlhZ190ZXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjY1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjY1NTpzdGF0aWMgaW50IGUxMDBfc2V0X3BoeXNfaWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjY1Ni1cXHRcXHRcXHQgICAgZW51bSBldGh0b29sX3BoeXNfaWRfc3RhdGUgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjY5MD1zdGF0aWMgY29uc3QgY2hhciBlMTAwX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNzA2OnN0YXRpYyBpbnQgZTEwMF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjcwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDBfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc3NjpzdGF0aWMgaW50IGUxMDBfZG9faW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3ODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3ODM6c3RhdGljIGludCBlMTAwX2FsbG9jKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc5MD1zdGF0aWMgdm9pZCBlMTAwX2ZyZWUoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3OTk6c3RhdGljIGludCBlMTAwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjgxMDpzdGF0aWMgaW50IGUxMDBfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjgxNjpzdGF0aWMgaW50IGUxMDBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4MTctXFx0XFx0XFx0ICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yODMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZTEwMF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI4NDU6c3RhdGljIGludCBlMTAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yODQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0zMDQ2PXN0YXRpYyBpbnQgX19lMTAwX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCB3YWtlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjMwNTc6c3RhdGljIGludCBlMTAwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2X2QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjMwNjY6c3RhdGljIGludCBlMTAwX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMzA2Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjMzLjI4MTA0MzA2NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY2MjkxMzAwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBlMTAwIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBlMTAwIGRyaXZlciBhbmQgaGVyZSdzIG15IHBsYW4uIFRoZSBjb3JlIGRyaXZlciBpcyBhbGwgaW4gYGUxMDAuY2AsIHdoaWNoIGlzIGdvb2QgZm9yIGNvbnRhaW5lZCBhbmFseXNpcy4gSSdtIGZvY3VzaW5nIG9uIGZpbmRpbmcgdGhlIGJlc3QgZW50cnkgcG9pbnRzIHRvIHRoZSBjb2RlLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGFib3V0IGBlMTAwX3NldF9lZXByb21gIGJ1dCB0aGF0J3Mgc3RhdGljLCB3aGljaCBJJ2QgcmF0aGVyIGF2b2lkLiBIb3dldmVyLCBpdCAqaXMqIGFuIEFQSSBlbnRyeSBwb2ludCBmb3IgZXRodG9vbCBvcGVyYXRpb25zLCBzbyBJJ20gcHV0dGluZyBpdCBvbiB0aGUgbGlzdC4gSSBhbHNvIG5vdGVkIGBlMTAwX3Byb2JlYCDigJMgdGhhdCdzIGEga2V5IFBDSSBwcm9iZSBlbnRyeSBwb2ludCwgYW5kIHRoYXQgc2VlbXMgcHJvbWlzaW5nLCBzbyB0aGF0IG1ha2VzIHRoZSBsaXN0IHRvby4gSSBkaWQgY2hlY2sgdGhlIG90aGVyIGVlcHJvbSBmdW5jdGlvbnMsIGFuZCBJIHNhdyB0aGF0IGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBzdGF0aWMuIFNvLCBJJ2xsIHN0aWNrIHdpdGggYGUxMDBfcHJvYmVgIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCBhcyBteSBtYWluIGZvY3VzLlxuXG5Ob3csIGFzIGZhciBhcyBjb25maWd1cmF0aW9uLCBJJ20gZ29pbmcgdG8gc2V0IGBFMTAwYC4gSSBkb3VibGUtY2hlY2tlZCBpdHMgZGVwZW5kZW5jaWVzIHRvIG1ha2Ugc3VyZSBJIHdhc24ndCBtaXNzaW5nIGFueXRoaW5nLiBHb29kLCBJIHNlZSB0aGF0IGl0IGRlcGVuZHMgb24gYFBDSWAgYW5kIHNlbGVjdHMgYE1JSWAuIFRoaXMgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIEkgZG9uJ3Qgc2VlIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucywgc28gYEUxMDBgIGl0IGlzLlxuXG5UaGVyZWZvcmUsIGZvciBteSBmdXp6aW5nIHNldHVwLCBoZXJlJ3Mgd2hhdCBJJ2xsIGRvOlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogKlRydWUqIChBYnNvbHV0ZWx5LCB0aGlzIGlzIHdvcnRoIHRoZSBlZmZvcnQpXG4qICAgKipGb2N1c1N5bWJvbHMqKjogYGUxMDBfcHJvYmVgLCBgZTEwMF9zZXRfZWVwcm9tYCAoVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuKVxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgRTEwMGAgKFRoZSBtaW5pbWFsIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uLilcbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgZTEwMCBkcml2ZXIncyBFRVBST00gcmVhZC93cml0ZSBvcGVyYXRpb25zLiBGdXp6aW5nIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhvc2Ugb3BlcmF0aW9ucyBkdXJpbmcgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApIGFuZCB0aHJvdWdoIGV0aHRvb2wgY2FsbHMgKGBlMTAwX3NldF9lZXByb21gKS4gSSdsbCBiZSB1c2luZyBRRU1VJ3MgYGk4MjU1OWVyYCBlbXVsYXRlZCBQQ0kgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA0NSwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6NDMuOTQzOTYwNDgyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzOTg4MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMF9wcm9iZVwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gRUVQUk9NIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyLiBUaGVzZSBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSBhbmQgdmlhIGV0aHRvb2wgKGBlMTAwX3NldF9lZXByb21gKS4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIFFFTVUncyBgaTgyNTU5ZXJgIGVtdWxhdGVkIFBDSSBkZXZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRTEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImUxMDBfcHJvYmVcIixcbiAgICBcImUxMDBfc2V0X2VlcHJvbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIEVFUFJPTSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlci4gVGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCkgYW5kIHZpYSBldGh0b29sIChgZTEwMF9zZXRfZWVwcm9tYCkuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB1c2luZyBRRU1VJ3MgYGk4MjU1OWVyYCBlbXVsYXRlZCBQQ0kgZGV2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjo0NC4wODc5NTY5NzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5ODkwNjQ2NjMwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjQ0LjA4ODU3MTk0N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozOTg5MDU4NDc3NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlIHdpdGggYGFkZHJfbGVuYCBpbiBgZTEwMF9lZXByb21fcmVhZGAuIFdoZW4gYGFkZHJfbGVuYCB1bmRlcmZsb3dzLCBpdCBiZWNvbWVzIGEgbGFyZ2UgdmFsdWUsIHdoaWNoIHN1YnNlcXVlbnRseSBjYXVzZXMgYSBzaGlmdC1vdXQtb2YtYm91bmRzIChgMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbmApIHdoZW4gY2FsY3VsYXRpbmcgYG5pYy1cXHUwMDNlZWVwcm9tX3djYC4gVGhpcyBsYXJnZSBgZWVwcm9tX3djYCB2YWx1ZSB0aGVuIGxlYWRzIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCBvbiB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXFxuXFxuVGhlc2UgYXJlIGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIHVuZGVmaW5lZCBiZWhhdmlvciBidWdzIChzaGlmdC1vdXQtb2YtYm91bmRzIGFuZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzKS4gU3RhbmRhcmQgS0FTQU4gKHdoaWNoIGRldGVjdHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYW5kIFVCU0FOICh3aGljaCBkZXRlY3RzIHNoaWZ0LW91dC1vZi1ib3VuZHMpIGFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGlzIGJ1Zy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE3NzRhZTA0OGRjZTNiNzk4OTA2MTFkMTk4ODI2YmM4YWI3MjAzOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAwOTozMDo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuaW5kZXggMjk5NjA3NjJlNjRhOC4uMjZhN2MwYWFhNmUyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5AQCAtNzQ0LDcgKzc0NCwxMiBAQCBzdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcbiBcdFx0ICogY29tcGxldGUgYWRkcmVzcy4gIFVzZSB0aGlzIHRvIGFkanVzdCBhZGRyX2xlbi4gKi9cbiBcdFx0Y3RybCA9IGlvcmVhZDgoXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG4gXHRcdGlmICghKGN0cmwgXHUwMDI2IGVlZG8pIFx1MDAyNlx1MDAyNiBpIFx1MDAzZSAxNikge1xuLVx0XHRcdCphZGRyX2xlbiAtPSAoaSAtIDE2KTtcbitcdFx0XHR1MTYgbGVuID0gaSAtIDE2O1xuK1xuK1x0XHRcdGlmIChsZW4gXHUwMDNlICphZGRyX2xlbilcbitcdFx0XHRcdCphZGRyX2xlbiA9IDA7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0KmFkZHJfbGVuIC09IGxlbjtcbiBcdFx0XHRpID0gMTc7XG4gXHRcdH1cbiBcbkBAIC03NjUsNiArNzcwLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4gXG4gXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuIFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbitcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlIDgpIHtcbitcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsXG4rXHRcdFx0ICBcImludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XFxuXCIsIGFkZHJfbGVuKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4gXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gXG4gXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyKyspIHtcbkBAIC03OTEsNiArODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuIFxuIFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiBcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4rXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4rXHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuK1x0XHRcdCAgXCJpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcblwiLCBhZGRyX2xlbik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuIFxuIFx0aWYgKHN0YXJ0ICsgY291bnQgXHUwMDNlPSBuaWMtXHUwMDNlZWVwcm9tX3djKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6NDQuMDg4NTcyODI3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMTExMTI1MjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRUVQUk9NIFJlYWQvV3JpdGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgSW50ZWwgRTEwMCBkcml2ZXIsIGFuZCBpdCdzIHRvdWNoaW5nIGBlMTAwX2VlcHJvbV9yZWFkYCwgYGUxMDBfZWVwcm9tX2xvYWRgLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgIHdpdGhpbiBgZTEwMC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0J3MgaGFuZGxpbmcgYW4gaW50ZWdlciB1bmRlcmZsb3cgaXNzdWUsIHdoaWNoIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIGNvdWxkIGxlYWQgdG8gc29tZSBuYXN0eSBwcm9ibGVtcy5cblxuU3BlY2lmaWNhbGx5LCBpbiBgZTEwMF9lZXByb21fcmVhZGAsIHRoZSBwYXRjaCBhZGRzIGNoZWNrcyB0byBgYWRkcl9sZW5gIHRvIHByZXZlbnQgaXQgZnJvbSBnb2luZyBuZWdhdGl2ZS4gUHJldmlvdXNseSwgdGhlIHN1YnRyYWN0aW9uIGAqYWRkcl9sZW4gLT0gKGkgLSAxNilgIGNvdWxkIGNhdXNlIHVuZGVyZmxvdyBpZiBgaWAgd2FzIGxlc3MgdGhhbiAxNiwgd2hpY2ggSSBjYW4gc2VlIHdvdWxkIGJlIGEgcHJvYmxlbS4gVGhpcyBwYXRjaCBub3cgZW5zdXJlcyB0aGF0IGlmIHRoZSBuZXcgbGVuZ3RoIGBsZW5gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBhZGRyZXNzIGxlbmd0aCwgaXQgc2V0cyB0aGUgYWRkcmVzcyBsZW5ndGggdG8gMC4gT3RoZXJ3aXNlIGl0IGRlY3JlbWVudHMgYXMgaW50ZW5kZWQuXG5cblRoZSBgZTEwMF9lZXByb21fbG9hZGAgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMgYXJlIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuICBUaGUgY29kZSBhdHRlbXB0cyB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBhZGRyZXNzIGxlbmd0aCBieSByZWFkaW5nIHdpdGggYW4gOC1iaXQgbGVuZ3RoLiBUaGUgcGF0Y2ggbm93IGFkZHMgYSBjaGVjayBmb3IgYGFkZHJfbGVuYCB0byBtYWtlIHN1cmUgaXQncyB2YWxpZC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBpdCBwcmV2ZW50aW5nIGBuaWMtXHUwMDNlZWVwcm9tX3djYCBmcm9tIGJlaW5nIGNhbGN1bGF0ZWQgd2l0aCBhbiBpbnZhbGlkIGBhZGRyX2xlbmAsIGJlY2F1c2UgYSB2YWx1ZSBvZiB6ZXJvLCBvciBhIHZhbHVlIGxhcmdlciB0aGFuIDggY2F1c2VzIGFuIGVycm9yIHRvIGJlIHJldHVybmVkLiAgVGhhdCBjYWxjdWxhdGlvbiBpcyBrZXkgYmVjYXVzZSBgbmljLVx1MDAzZWVlcHJvbV93Y2AgaXMgdXNlZCBsYXRlciBhcyB0aGUgbG9vcCBsaW1pdCBmb3IgcmVhZGluZyB0aGUgRUVQUk9NLlxuXG5UaGUgY29yZSBvZiB0aGUgZml4IGlzIGFib3V0IHByZXZlbnRpbmcgYGFkZHJfbGVuYCBmcm9tIHVuZGVyZmxvd2luZywgd2hpY2ggd291bGQgdGhlbiBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgc2hpZnQgb3BlcmF0aW9uLCBsaWtlIGAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAuICBVQlNBTiBzaG91bGQgY2F0Y2ggdGhvc2Ugc2hpZnQtb3V0LW9mLWJvdW5kcyBpc3N1ZXMuICBJZiBgYWRkcl9sZW5gIHdlcmUgcmVhbGx5IGxhcmdlIGJlY2F1c2Ugb2YgYW4gdW5kZXJmbG93LCBgMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW5gIG1pZ2h0IGFsc28gcmVzdWx0IGluIGFuIG92ZXJmbG93LCBnaXZpbmcgdXMgYSBsYXJnZSBvciB6ZXJvIHZhbHVlLlxuXG5BaCwgYW5kIEkgc2VlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgbG9vcCBpbiB0aGVzZSBmdW5jdGlvbnMgdXNlcyBgbmljLVx1MDAzZWVlcHJvbV93Y2AgYXMgdGhlIHVwcGVyIGJvdW5kIGZvciByZWFkaW5nIGludG8gYG5pYy1cdTAwM2VlZXByb21gLiAgTm93IEkgcmVjYWxsIGBuaWMtXHUwMDNlZWVwcm9tYCBpcyBhbiBhcnJheSBvZiBzaXplIDI1Ni4gSWYgYGVlcHJvbV93Y2AgaXMgbGFyZ2VyIHRoYW4gMjU2LCBpdCdsbCBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIHdyaXRlLiAgS0FTQU4gd291bGQgY2VydGFpbmx5IGNhdGNoIHRoYXQuXG5cbkknbSBtYWtpbmcgc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc3VidGxlIGlzc3VlcyBoZXJlLCBpbiB0ZXJtcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSWYgYGFkZHJfbGVuYCBpcyB6ZXJvLCB3ZSBnZXQgYG5pYy1cdTAwM2VlZXByb21fd2NgIGFzIDEsIHdoaWNoIGlzbid0IGEgcHJvYmxlbS4gSWYgYGFkZHJfbGVuYCBpcyBsYXJnZSwgd2UgaGF2ZSB0aGUgb3V0LW9mLWJvdW5kcyB3cml0ZSBJIG1lbnRpb25lZC4gSSdtIG5vdCBzZWVpbmcgYW55dGhpbmcgaGVyZSB0aGF0IEtNU0FOIHdvdWxkIHVuaXF1ZWx5IGNhdGNoIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgbGVha2VkLiBUaGUgcHJpbWFyeSBjb25jZXJuIGlzIGRlZmluaXRlbHkgdGhlIGludGVnZXIgdW5kZXJmbG93IGFuZCB0aGUgcmVzdWx0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIGdyZXAgZm9yIGBlZXByb21gIGluIHRoZSBgc3RydWN0IG5pY2AgZGVmaW5pdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjU2LjE5OTcwMTM3OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI0MTU2MzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInUxNiBlZXByb21cXFxcW1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjU2LjI5MjEyNzI0OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg0NTQ2NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgZTEwMCBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBgc3RydWN0IG5pY2Agd2l0aGluIHRoZSBJbnRlbCBlMTAwIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ3JlcHBpbmcgdGhlIGBlMTAwLmNgIGZpbGUsIGxvY2F0ZWQgaW4gdGhlIHVzdWFsIHN1c3BlY3QgZGlyZWN0b3J5OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvYC4gIEkgZXhwZWN0IHRoYXQgYHN0cnVjdCBuaWNgIGlzIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgZHJpdmVyLiBJdCBsaWtlbHkgaG9sZHMgYWxsIHRoZSBlc3NlbnRpYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQncyBzdGF0ZSwgcmVnaXN0ZXJzLCBhbmQgb3BlcmF0aW9uYWwgcGFyYW1ldGVycy4gSSdsbCBiZSB1c2luZyBgZ3JlcGAgYmVjYXVzZSBpdCdzIHRoZSBmYXN0ZXN0IHdheSB0byBwaW5wb2ludCB0aGUgZXhhY3QgZGVjbGFyYXRpb24uIE9uY2UgSSBoYXZlIHRoZSBkZWNsYXJhdGlvbiwgSSBjYW4gYmVnaW4gdG8gYXNzZXNzIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBpbnRlcmFjdGlvbiBieSBleGFtaW5pbmcgaG93IHRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgYW5kIHJlZmVyZW5jZWQgd2l0aGluIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTczLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6Mzc6MDAuMjc2Njc2MjM4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ5NDc1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IG5pYyBcXFxce1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTUzND1zdHJ1Y3QgcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy01MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjUzOTpzdHJ1Y3QgbmljIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNTQwLVxcdC8qIEJlZ2luOiBmcmVxdWVudGx5IHVzZWQgdmFsdWVzOiBrZWVwIGFkamFjZW50IGZvciBjYWNoZSBlZmZlY3QgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6Mzc6MDAuMzgxNjI4MDA3WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDAzMTg2NDQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgc3RydWN0IG5pY2AqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIHRvIGxvb2sgYXQgYHN0cnVjdCBuaWNgLiBSaWdodCwgdGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGEgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlciBkYXRhIHN0cnVjdHVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjb25zaWRlciB0aGUgY29udGV4dC4gSXMgdGhpcyBrZXJuZWwtbGV2ZWwgY29kZT8gVXNlci1zcGFjZSBuZXR3b3JraW5nPyBXaGF0IE9TIGFyZSB3ZSB0YWxraW5nIGFib3V0PyBUaGF0J3MgZ29pbmcgdG8gaGVhdmlseSBpbmZsdWVuY2UgdGhlIHNwZWNpZmljIG1lbWJlcnMgYW5kIG92ZXJhbGwgZGVzaWduLlxuXG5JJ20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIGluZm9ybWF0aW9uIHRoaXMgc3RydWN0ICpzaG91bGQqIGNvbnRhaW4sIGZyb20gYSBoaWdoIGxldmVsLiBNQUMgYWRkcmVzcywgSVAgYWRkcmVzcyAocG90ZW50aWFsbHkgbXVsdGlwbGUpLCBNVFUsIGNhcGFiaWxpdGllcyBmbGFncyAoY2hlY2tzdW0gb2ZmbG9hZCwgVFNPLCBldGMuKSwgRE1BIGluZm9ybWF0aW9uLCB0cmFuc21pdC9yZWNlaXZlIHF1ZXVlIHBvaW50ZXJzLCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBJJ20gZXhwZWN0aW5nIHNvbWUga2luZCBvZiBsaW5rZWQgbGlzdHMgb3IgYXJyYXlzIGZvciBtYW5hZ2luZyB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYnVmZmVycy4gVGhlcmUgc2hvdWxkIGJlIHNvbWUga2luZCBvZiBsb2NrIHByb3RlY3Rpb24gYXMgd2VsbCwgbGlrZWx5IGEgbXV0ZXggb3Igc3BpbmxvY2sgZ2l2ZW4gdGhhdCB0aGUgTklDIGRhdGEgaXMgbW9zdCBvZnRlbiBhY2Nlc3NlZCBieSBtdWx0aXBsZSB0aHJlYWRzLlxuXG5JJ20gYWxzbyB3b25kZXJpbmcgYWJvdXQgdGhlIGxldmVsIG9mIGFic3RyYWN0aW9uIGl0IHJlcHJlc2VudHMuIElzIHRoaXMgYSB2ZXJ5IGxvdy1sZXZlbCBzdHJ1Y3R1cmUsIGNsb3NlIHRvIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMsIG9yIGlzIGl0IG1vcmUgb2YgYSBuZXR3b3JrIHN0YWNrIGFic3RyYWN0aW9uPyBUaGF0J3MgZ29pbmcgdG8gZGljdGF0ZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGFuZCB0aGUgc29ydHMgb2YgYml0ZmllbGRzIGFuZCBoYXJkd2FyZS1zcGVjaWZpYyBkYXRhIEkgZXhwZWN0IHRvIHNlZS4gSeKAmW0gdGhpbmtpbmcgYWJvdXQgdGhlIGNvbW1vbiBuZXR3b3JrIG1vZGVsczogSXMgaXQgdXNpbmcgYSBCU0Qgc29ja2V0LWxpa2UgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgbW9yZSBtb2Rlcm4sIGxpa2UgaW9fdXJpbmc/IElmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBmdW5jdGlvbnMgY2FsbGVkIG9uIHRoYXQgaW50ZXJmYWNlLiBJdCBpcyBhbGwgcmVsYXRlZC5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGxvb2sgZm9yIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gSXMgaXQgZGVzaWduZWQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gb3IgaXMgaXQgYSBtb3JlIGdlbmVyaWMgYWJzdHJhY3Rpb24gdGhhdOKAmXMgYWRhcHRlZCBmb3IgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXM/IEknbSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIHByb2Nlc3NvciB0eXBlIG9yIE5JQyB2ZW5kb3IuIFRoaXMgaXMgYW5vdGhlciBhcmVhIEkgZXhwZWN0IHRvIGNoZWNrLlxuXG5GaW5hbGx5LCBJJ20gZXhwZWN0aW5nIGEgbG90IG9mIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcmVsYXRlZCBzdHJ1Y3R1cmVzLCBsaWtlIGRlc2NyaXB0b3JzIGZvciB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgcmluZ3MsIHBhY2tldCBidWZmZXJzLCBhbmQgcG90ZW50aWFsbHkgc3RydWN0dXJlcyBmb3IgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gU28sIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIGlzIHByb2JhYmx5IGEgc3RhcnRpbmcgcG9pbnQsIGFuZCB0aGF0IG1hbnkgb3RoZXIgc3RydWN0cyB3aWxsIGJlIGludm9sdmVkLCBsaWtlbHkgd2l0aCBwb2ludGVycyBjb25uZWN0aW5nIHRoZW0uIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgaW4gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjQzOjEwLjQxMzQ5NjUwNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzOSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1Mzk6XFx0c3RydWN0IG5pYyB7XFxuIDU0MDpcXHRcXHQvKiBCZWdpbjogZnJlcXVlbnRseSB1c2VkIHZhbHVlczoga2VlcCBhZGphY2VudCBmb3IgY2FjaGUgZWZmZWN0ICovXFxuIDU0MTpcXHRcXHR1MzIgbXNnX2VuYWJsZVxcdFxcdFxcdFxcdF9fX19jYWNoZWxpbmVfYWxpZ25lZDtcXG4gNTQyOlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuIDU0MzpcXHRcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldjtcXG4gNTQ0OlxcdFxcdHUxNiAoKm1kaW9fY3RybCkoc3RydWN0IG5pYyAqbmljLCB1MzIgYWRkciwgdTMyIGRpciwgdTMyIHJlZywgdTE2IGRhdGEpO1xcbiA1NDU6XFx0XFxuIDU0NjpcXHRcXHRzdHJ1Y3QgcnggKnJ4c1xcdFxcdFxcdFxcdF9fX19jYWNoZWxpbmVfYWxpZ25lZDtcXG4gNTQ3OlxcdFxcdHN0cnVjdCByeCAqcnhfdG9fdXNlO1xcbiA1NDg6XFx0XFx0c3RydWN0IHJ4ICpyeF90b19jbGVhbjtcXG4gNTQ5OlxcdFxcdHN0cnVjdCByZmQgYmxhbmtfcmZkO1xcbiA1NTA6XFx0XFx0ZW51bSBydV9zdGF0ZSBydV9ydW5uaW5nO1xcbiA1NTE6XFx0XFxuIDU1MjpcXHRcXHRzcGlubG9ja190IGNiX2xvY2tcXHRcXHRcXHRfX19fY2FjaGVsaW5lX2FsaWduZWQ7XFxuIDU1MzpcXHRcXHRzcGlubG9ja190IGNtZF9sb2NrO1xcbiA1NTQ6XFx0XFx0c3RydWN0IGNzciBfX2lvbWVtICpjc3I7XFxuIDU1NTpcXHRcXHRlbnVtIHNjYl9jbWRfbG8gY3VjX2NtZDtcXG4gNTU2OlxcdFxcdHVuc2lnbmVkIGludCBjYnNfYXZhaWw7XFxuIDU1NzpcXHRcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4gNTU4OlxcdFxcdHN0cnVjdCBjYiAqY2JzO1xcbiA1NTk6XFx0XFx0c3RydWN0IGNiICpjYl90b191c2U7XFxuIDU2MDpcXHRcXHRzdHJ1Y3QgY2IgKmNiX3RvX3NlbmQ7XFxuIDU2MTpcXHRcXHRzdHJ1Y3QgY2IgKmNiX3RvX2NsZWFuO1xcbiA1NjI6XFx0XFx0X19sZTE2IHR4X2NvbW1hbmQ7XFxuIDU2MzpcXHRcXHQvKiBFbmQ6IGZyZXF1ZW50bHkgdXNlZCB2YWx1ZXM6IGtlZXAgYWRqYWNlbnQgZm9yIGNhY2hlIGVmZmVjdCAqL1xcbiA1NjQ6XFx0XFxuIDU2NTpcXHRcXHRlbnVtIHtcXG4gNTY2OlxcdFxcdFxcdGljaCAgICAgICAgICAgICAgICA9ICgxIFxcdTAwM2NcXHUwMDNjIDApLFxcbiA1Njc6XFx0XFx0XFx0cHJvbWlzY3VvdXMgICAgICAgID0gKDEgXFx1MDAzY1xcdTAwM2MgMSksXFxuIDU2ODpcXHRcXHRcXHRtdWx0aWNhc3RfYWxsICAgICAgPSAoMSBcXHUwMDNjXFx1MDAzYyAyKSxcXG4gNTY5OlxcdFxcdFxcdHdvbF9tYWdpYyAgICAgICAgICA9ICgxIFxcdTAwM2NcXHUwMDNjIDMpLFxcbiA1NzA6XFx0XFx0XFx0aWNoXzEwaF93b3JrYXJvdW5kID0gKDEgXFx1MDAzY1xcdTAwM2MgNCksXFxuIDU3MTpcXHRcXHR9IGZsYWdzXFx0XFx0XFx0XFx0XFx0X19fX2NhY2hlbGluZV9hbGlnbmVkO1xcbiA1NzI6XFx0XFxuIDU3MzpcXHRcXHRlbnVtIG1hYyBtYWM7XFxuIDU3NDpcXHRcXHRlbnVtIHBoeSBwaHk7XFxuIDU3NTpcXHRcXHRzdHJ1Y3QgcGFyYW1zIHBhcmFtcztcXG4gNTc2OlxcdFxcdHN0cnVjdCB0aW1lcl9saXN0IHdhdGNoZG9nO1xcbiA1Nzc6XFx0XFx0c3RydWN0IG1paV9pZl9pbmZvIG1paTtcXG4gNTc4OlxcdFxcdHN0cnVjdCB3b3JrX3N0cnVjdCB0eF90aW1lb3V0X3Rhc2s7XFxuIDU3OTpcXHRcXHRlbnVtIGxvb3BiYWNrIGxvb3BiYWNrO1xcbiA1ODA6XFx0XFxuIDU4MTpcXHRcXHRzdHJ1Y3QgbWVtICptZW07XFxuIDU4MjpcXHRcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbiA1ODM6XFx0XFxuIDU4NDpcXHRcXHRzdHJ1Y3QgZG1hX3Bvb2wgKmNic19wb29sO1xcbiA1ODU6XFx0XFx0ZG1hX2FkZHJfdCBjYnNfZG1hX2FkZHI7XFxuIDU4NjpcXHRcXHR1OCBhZGFwdGl2ZV9pZnM7XFxuIDU4NzpcXHRcXHR1OCB0eF90aHJlc2hvbGQ7XFxuIDU4ODpcXHRcXHR1MzIgdHhfZnJhbWVzO1xcbiA1ODk6XFx0XFx0dTMyIHR4X2NvbGxpc2lvbnM7XFxuIDU5MDpcXHRcXHR1MzIgdHhfZGVmZXJyZWQ7XFxuIDU5MTpcXHRcXHR1MzIgdHhfc2luZ2xlX2NvbGxpc2lvbnM7XFxuIDU5MjpcXHRcXHR1MzIgdHhfbXVsdGlwbGVfY29sbGlzaW9ucztcXG4gNTkzOlxcdFxcdHUzMiB0eF9mY19wYXVzZTtcXG4gNTk0OlxcdFxcdHUzMiB0eF90Y29fZnJhbWVzO1xcbiA1OTU6XFx0XFxuIDU5NjpcXHRcXHR1MzIgcnhfZmNfcGF1c2U7XFxuIDU5NzpcXHRcXHR1MzIgcnhfZmNfdW5zdXBwb3J0ZWQ7XFxuIDU5ODpcXHRcXHR1MzIgcnhfdGNvX2ZyYW1lcztcXG4gNTk5OlxcdFxcdHUzMiByeF9zaG9ydF9mcmFtZV9lcnJvcnM7XFxuIDYwMDpcXHRcXHR1MzIgcnhfb3Zlcl9sZW5ndGhfZXJyb3JzO1xcbiA2MDE6XFx0XFxuIDYwMjpcXHRcXHR1MTYgZWVwcm9tX3djO1xcbiA2MDM6XFx0XFx0X19sZTE2IGVlcHJvbVsyNTZdO1xcbiA2MDQ6XFx0XFx0c3BpbmxvY2tfdCBtZGlvX2xvY2s7XFxuIDYwNTpcXHRcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbiA2MDY6XFx0fTtcXG4gNjA3OlxcdFxcbiA2MDg6XFx0c3RhdGljIGlubGluZSB2b2lkIGUxMDBfd3JpdGVfZmx1c2goc3RydWN0IG5pYyAqbmljKVxcbiA2MDk6XFx0e1xcbiA2MTA6XFx0XFx0LyogRmx1c2ggcHJldmlvdXMgUENJIHdyaXRlcyB0aHJvdWdoIGludGVybWVkaWF0ZSBicmlkZ2VzXFxuIDYxMTpcXHRcXHQgKiBieSBkb2luZyBhIGJlbmlnbiByZWFkICovXFxuIDYxMjpcXHRcXHQodm9pZClpb3JlYWQ4KFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLnN0YXR1cyk7XFxuIDYxMzpcXHR9XFxuIDYxNDpcXHRcXG4gNjE1OlxcdHN0YXRpYyB2b2lkIGUxMDBfZW5hYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXFxuIDYxNjpcXHR7XFxuIDYxNzpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiA2MTg6XFx0XFxuIDYxOTpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2bmljLVxcdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xcbiA2MjA6XFx0XFx0aW93cml0ZTgoaXJxX21hc2tfbm9uZSwgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VzY2IuY21kX2hpKTtcXG4gNjIxOlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTtcXG4gNjIyOlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm5pYy1cXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcXG4gNjIzOlxcdH1cXG4gNjI0OlxcdFxcbiA2MjU6XFx0c3RhdGljIHZvaWQgZTEwMF9kaXNhYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXFxuIDYyNjpcXHR7XFxuIDYyNzpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2bmljLVxcdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xcbiA2MzA6XFx0XFx0aW93cml0ZTgoaXJxX21hc2tfYWxsLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZXNjYi5jbWRfaGkpO1xcbiA2MzE6XFx0XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xcbiA2MzI6XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2bmljLVxcdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xcbiA2MzM6XFx0fVxcbiA2MzQ6XFx0XFxuIDYzNTpcXHRzdGF0aWMgdm9pZCBlMTAwX2h3X3Jlc2V0KHN0cnVjdCBuaWMgKm5pYylcXG4gNjM2OlxcdHtcXG4gNjM3OlxcdFxcdC8qIFB1dCBDVSBhbmQgUlUgaW50byBpZGxlIHdpdGggYSBzZWxlY3RpdmUgcmVzZXQgdG8gZ2V0XFxuIDYzODpcXHRcXHQgKiBkZXZpY2Ugb2ZmIG9mIFBDSSBidXMgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6NDM6MTAuNDEzNzQzMTk0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MTQxNDk5NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE91dC1vZi1Cb3VuZHMgV3JpdGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbnBvaW50ZWQgdGhlIHJlbGV2YW50IGNvZGU7IGBfX2xlMTYgZWVwcm9tWzI1Nl07YCBpcyBpbmRlZWQgZGVjbGFyZWQgb24gbGluZSA2MDMsIGFzIGV4cGVjdGVkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSwgZWl0aGVyIGRpcmVjdGx5IHRvIGBuaWMtXHUwMDNlZWVwcm9tYCBvciBwb3RlbnRpYWxseSB2aWEgYSBzaGlmdC1vdXQtb2YtYm91bmRzIG9wZXJhdGlvbi4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGlrZWx5IHN0ZW1zIGZyb20gYW4gdW5kZXJmbG93IGluIGBhZGRyX2xlbmAuIElmIGBhZGRyX2xlbmAgZ29lcyBuZWdhdGl2ZSwgaXQgZmxpcHMgaW50byBhIGxhcmdlIHBvc2l0aXZlIG51bWJlciBsaWtlIDY1NTM1LiBUaGVuLCB3aGVuIHdlIHBlcmZvcm0gYDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCwgd2UgYXJlIGxvb2tpbmcgYXQgdW5kZWZpbmVkIGJlaGF2aW9yLCBzcGVjaWZpY2FsbHksIGEgc2hpZnQtb3V0LW9mLWJvdW5kcy4gSWYgdGhhdCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBzb21ldGhpbmcgZXhjZWVkaW5nIDI1NiwgaXQncyBndWFyYW50ZWVkIHRvIHRyaWdnZXIgYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSB3aGVuIHdlIHRyeSB0byBhY2Nlc3MgYG5pYy1cdTAwM2VlZXByb21gLiBUaGlzIHNjcmVhbXMgXCJjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uLlwiIFdlIHNob3VsZCBleHBlY3QgS0FTQU4gYW5kIFVCU0FOIHRvIGZsYWcgdGhpcyBpc3N1ZSBpbW1lZGlhdGVseS4gRm9ydHVuYXRlbHksIGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgbGVha2FnZSwgc28gdGhhdCdzIGEgc21hbGwgcmVsaWVmLiBJIGp1c3QgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBgZTEwMF9lZXByb21fcmVhZGAgYW5kIGBlMTAwX2VlcHJvbV9sb2FkYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMgaW4gdGhvc2UgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzk1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6NDM6MTYuMDI3ODk0OTY4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzMwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDczMDpcXHRcXHQvKiBDaGlwIHNlbGVjdCAqL1xcbiA3MzE6XFx0XFx0aW93cml0ZTgoZWVjcyB8IGVlc2ssIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xcbiA3MzI6XFx0XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpOyB1ZGVsYXkoNCk7XFxuIDczMzpcXHRcXG4gNzM0OlxcdFxcdC8qIEJpdC1iYW5nIHRvIHJlYWQgd29yZCBmcm9tIGVlcHJvbSAqL1xcbiA3MzU6XFx0XFx0Zm9yIChpID0gMzE7IGkgXFx1MDAzZT0gMDsgaS0tKSB7XFxuIDczNjpcXHRcXHRcXHRjdHJsID0gKGNtZF9hZGRyX2RhdGEgXFx1MDAyNiAoMSBcXHUwMDNjXFx1MDAzYyBpKSkgPyBlZWNzIHwgZWVkaSA6IGVlY3M7XFxuIDczNzpcXHRcXHRcXHRpb3dyaXRlOChjdHJsLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG4gNzM4OlxcdFxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbiA3Mzk6XFx0XFxuIDc0MDpcXHRcXHRcXHRpb3dyaXRlOChjdHJsIHwgZWVzaywgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VlZXByb21fY3RybF9sbyk7XFxuIDc0MTpcXHRcXHRcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcXG4gNzQyOlxcdFxcbiA3NDM6XFx0XFx0XFx0LyogRWVwcm9tIGRyaXZlcyBhIGR1bW15IHplcm8gdG8gRUVETyBhZnRlciByZWNlaXZpbmdcXG4gNzQ0OlxcdFxcdFxcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXFxuIDc0NTpcXHRcXHRcXHRjdHJsID0gaW9yZWFkOChcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG4gNzQ2OlxcdFxcdFxcdGlmICghKGN0cmwgXFx1MDAyNiBlZWRvKSBcXHUwMDI2XFx1MDAyNiBpIFxcdTAwM2UgMTYpIHtcXG4gNzQ3OlxcdFxcdFxcdFxcdHUxNiBsZW4gPSBpIC0gMTY7XFxuIDc0ODpcXHRcXG4gNzQ5OlxcdFxcdFxcdFxcdGlmIChsZW4gXFx1MDAzZSAqYWRkcl9sZW4pXFxuIDc1MDpcXHRcXHRcXHRcXHRcXHQqYWRkcl9sZW4gPSAwO1xcbiA3NTE6XFx0XFx0XFx0XFx0ZWxzZVxcbiA3NTI6XFx0XFx0XFx0XFx0XFx0KmFkZHJfbGVuIC09IGxlbjtcXG4gNzUzOlxcdFxcdFxcdFxcdGkgPSAxNztcXG4gNzU0OlxcdFxcdFxcdH1cXG4gNzU1OlxcdFxcbiA3NTY6XFx0XFx0XFx0ZGF0YSA9IChkYXRhIFxcdTAwM2NcXHUwMDNjIDEpIHwgKGN0cmwgXFx1MDAyNiBlZWRvID8gMSA6IDApO1xcbiA3NTc6XFx0XFx0fVxcbiA3NTg6XFx0XFxuIDc1OTpcXHRcXHQvKiBDaGlwIGRlc2VsZWN0ICovXFxuIDc2MDpcXHRcXHRpb3dyaXRlOCgwLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG4gNzYxOlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRyZXR1cm4gY3B1X3RvX2xlMTYoZGF0YSk7XFxuIDc2NDpcXHR9O1xcbiA3NjU6XFx0XFxuIDc2NjpcXHQvKiBMb2FkIGVudGlyZSBFRVBST00gaW1hZ2UgaW50byBkcml2ZXIgY2FjaGUgYW5kIHZhbGlkYXRlIGNoZWNrc3VtICovXFxuIDc2NzpcXHRzdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxcbiA3Njg6XFx0e1xcbiA3Njk6XFx0XFx0dTE2IGFkZHIsIGFkZHJfbGVuID0gOCwgY2hlY2tzdW0gPSAwO1xcbiA3NzA6XFx0XFxuIDc3MTpcXHRcXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbiA3NzI6XFx0XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuIDc3MzpcXHRcXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFxcdTAwM2UgOCkge1xcbiA3NzQ6XFx0XFx0XFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cXHUwMDNlbmV0ZGV2LFxcbiA3NzU6XFx0XFx0XFx0XFx0ICBcXFwiaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXFxcblxcXCIsIGFkZHJfbGVuKTtcXG4gNzc2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA3Nzc6XFx0XFx0fVxcbiA3Nzg6XFx0XFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbiA3Nzk6XFx0XFxuIDc4MDpcXHRcXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2M7IGFkZHIrKykge1xcbiA3ODE6XFx0XFx0XFx0bmljLVxcdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcXG4gNzgyOlxcdFxcdFxcdGlmIChhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2MgLSAxKVxcbiA3ODM6XFx0XFx0XFx0XFx0Y2hlY2tzdW0gKz0gbGUxNl90b19jcHUobmljLVxcdTAwM2VlZXByb21bYWRkcl0pO1xcbiA3ODQ6XFx0XFx0fVxcbiA3ODU6XFx0XFxuIDc4NjpcXHRcXHQvKiBUaGUgY2hlY2tzdW0sIHN0b3JlZCBpbiB0aGUgbGFzdCB3b3JkLCBpcyBjYWxjdWxhdGVkIHN1Y2ggdGhhdFxcbiA3ODc6XFx0XFx0ICogdGhlIHN1bSBvZiB3b3JkcyBzaG91bGQgYmUgMHhCQUJBICovXFxuIDc4ODpcXHRcXHRpZiAoY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pICE9IG5pYy1cXHUwMDNlZWVwcm9tW25pYy1cXHUwMDNlZWVwcm9tX3djIC0gMV0pIHtcXG4gNzg5OlxcdFxcdFxcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXFx1MDAzZW5ldGRldiwgXFxcIkVFUFJPTSBjb3JydXB0ZWRcXFxcblxcXCIpO1xcbiA3OTA6XFx0XFx0XFx0aWYgKCFlZXByb21fYmFkX2NzdW1fYWxsb3cpXFxuIDc5MTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gNzkyOlxcdFxcdH1cXG4gNzkzOlxcdFxcbiA3OTQ6XFx0XFx0cmV0dXJuIDA7XFxuIDc5NTpcXHR9XFxuIDc5NjpcXHRcXG4gNzk3OlxcdC8qIFNhdmUgKHBvcnRpb24gb2YpIGRyaXZlciBFRVBST00gY2FjaGUgdG8gZGV2aWNlIGFuZCB1cGRhdGUgY2hlY2tzdW0gKi9cXG4gNzk4OlxcdHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxcbiA3OTk6XFx0e1xcbiA4MDA6XFx0XFx0dTE2IGFkZHIsIGFkZHJfbGVuID0gOCwgY2hlY2tzdW0gPSAwO1xcbiA4MDE6XFx0XFxuIDgwMjpcXHRcXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbiA4MDM6XFx0XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuIDgwNDpcXHRcXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFxcdTAwM2UgOCkge1xcbiA4MDU6XFx0XFx0XFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cXHUwMDNlbmV0ZGV2LFxcbiA4MDY6XFx0XFx0XFx0XFx0ICBcXFwiaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXFxcblxcXCIsIGFkZHJfbGVuKTtcXG4gODA3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA4MDg6XFx0XFx0fVxcbiA4MDk6XFx0XFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbiA4MTA6XFx0XFxuIDgxMTpcXHRcXHRpZiAoc3RhcnQgKyBjb3VudCBcXHUwMDNlPSBuaWMtXFx1MDAzZWVlcHJvbV93YylcXG4gODEyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA4MTM6XFx0XFxuIDgxNDpcXHRcXHRmb3IgKGFkZHIgPSBzdGFydDsgYWRkciBcXHUwMDNjIHN0YXJ0ICsgY291bnQ7IGFkZHIrKylcXG4gODE1OlxcdFxcdFxcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIGFkZHIsIG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdKTtcXG4gODE2OlxcdFxcbiA4MTc6XFx0XFx0LyogVGhlIGNoZWNrc3VtLCBzdG9yZWQgaW4gdGhlIGxhc3Qgd29yZCwgaXMgY2FsY3VsYXRlZCBzdWNoIHRoYXRcXG4gODE4OlxcdFxcdCAqIHRoZSBzdW0gb2Ygd29yZHMgc2hvdWxkIGJlIDB4QkFCQSAqL1xcbiA4MTk6XFx0XFx0Zm9yIChhZGRyID0gMDsgYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djIC0gMTsgYWRkcisrKVxcbiA4MjA6XFx0XFx0XFx0Y2hlY2tzdW0gKz0gbGUxNl90b19jcHUobmljLVxcdTAwM2VlZXByb21bYWRkcl0pO1xcbiA4MjE6XFx0XFx0bmljLVxcdTAwM2VlZXByb21bbmljLVxcdTAwM2VlZXByb21fd2MgLSAxXSA9IGNwdV90b19sZTE2KDB4QkFCQSAtIGNoZWNrc3VtKTtcXG4gODIyOlxcdFxcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIG5pYy1cXHUwMDNlZWVwcm9tX3djIC0gMSxcXG4gODIzOlxcdFxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW25pYy1cXHUwMDNlZWVwcm9tX3djIC0gMV0pO1xcbiA4MjQ6XFx0XFxuIDgyNTpcXHRcXHRyZXR1cm4gMDtcXG4gODI2OlxcdH1cXG4gODI3OlxcdFxcbiA4Mjg6XFx0I2RlZmluZSBFMTAwX1dBSVRfU0NCX1RJTUVPVVQgMjAwMDAgLyogd2UgbWlnaHQgaGF2ZSB0byB3YWl0IDEwMG1zISEhICovXFxuIDgyOTpcXHQjZGVmaW5lIEUxMDBfV0FJVF9TQ0JfRkFTVCAyMCAgICAgICAvKiBkZWxheSBsaWtlIHRoZSBvbGQgY29kZSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTo0MzoxNi4wMjgxMTQ4ODhaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk2NjI4NTU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXNpcyBvZiB0aGUgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoZSBjb2RlIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgY29yZSBwcm9ibGVtIGlzIGRlZmluaXRlbHkgYW4gaW50ZWdlciB1bmRlcmZsb3cgb24gYGFkZHJfbGVuYC4gVGhpcyBjYXVzZXMgYW4gb3V0LW9mLWJvdW5kcyBzaGlmdCBvcGVyYXRpb24sIHNwZWNpZmljYWxseSBgMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW5gLiBBbmQsICp0aGF0KiByZXN1bHRzIGluIGEgcmVhZCBvciB3cml0ZSBvcGVyYXRpb24gdG8gYW4gaW52YWxpZCBsb2NhdGlvbiB3aXRoaW4gYG5pYy1cdTAwM2VlZXByb21bMjU2XWAuIENsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24uIFdlJ3JlIGxvb2tpbmcgYXQgS0FTQU4gYW5kIFVCU0FOIGxpa2VseSBjYXRjaGluZyB0aGlzLlxuXG5NeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgS0FTQU4gd2lsbCBmbGFnIHRoZSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MsIGFuZCBVQlNBTiB3aWxsIHN0ZXAgaW4gdG8gY2F0Y2ggdGhlIHNoaWZ0LW91dC1vZi1ib3VuZHMgb3BlcmF0aW9uLCB0aGUgcm9vdCBjYXVzZS5cblxuVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0LCBmcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGVyZSdzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgZXhwb3NlZCB0byB0aGUgdXNlciwgc28gbm8gbmVlZCBmb3IgS01TQU4gZnVzcy4gSXQgbG9va3MgbGlrZSBhIEtBU0FOL1VCU0FOIGlzc3VlLiBOb3csIGxldCdzIGNyYWZ0IHRoZSByZXNwb25zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODczMywiT3V0cHV0VG9rZW5zIjoyNDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTo0MzoyMi45OTQ0MDI1MzJaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlIHdpdGggYGFkZHJfbGVuYCBpbiBgZTEwMF9lZXByb21fcmVhZGAuIFdoZW4gYGFkZHJfbGVuYCB1bmRlcmZsb3dzLCBpdCBiZWNvbWVzIGEgbGFyZ2UgdmFsdWUsIHdoaWNoIHN1YnNlcXVlbnRseSBjYXVzZXMgYSBzaGlmdC1vdXQtb2YtYm91bmRzIChgMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbmApIHdoZW4gY2FsY3VsYXRpbmcgYG5pYy1cXHUwMDNlZWVwcm9tX3djYC4gVGhpcyBsYXJnZSBgZWVwcm9tX3djYCB2YWx1ZSB0aGVuIGxlYWRzIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCBvbiB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXFxuXFxuVGhlc2UgYXJlIGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIHVuZGVmaW5lZCBiZWhhdmlvciBidWdzIChzaGlmdC1vdXQtb2YtYm91bmRzIGFuZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzKS4gU3RhbmRhcmQgS0FTQU4gKHdoaWNoIGRldGVjdHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYW5kIFVCU0FOICh3aGljaCBkZXRlY3RzIHNoaWZ0LW91dC1vZi1ib3VuZHMpIGFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGlzIGJ1Zy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlIHdpdGggYGFkZHJfbGVuYCBpbiBgZTEwMF9lZXByb21fcmVhZGAuIFdoZW4gYGFkZHJfbGVuYCB1bmRlcmZsb3dzLCBpdCBiZWNvbWVzIGEgbGFyZ2UgdmFsdWUsIHdoaWNoIHN1YnNlcXVlbnRseSBjYXVzZXMgYSBzaGlmdC1vdXQtb2YtYm91bmRzIChgMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbmApIHdoZW4gY2FsY3VsYXRpbmcgYG5pYy1cXHUwMDNlZWVwcm9tX3djYC4gVGhpcyBsYXJnZSBgZWVwcm9tX3djYCB2YWx1ZSB0aGVuIGxlYWRzIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCBvbiB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXFxuXFxuVGhlc2UgYXJlIGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIHVuZGVmaW5lZCBiZWhhdmlvciBidWdzIChzaGlmdC1vdXQtb2YtYm91bmRzIGFuZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzKS4gU3RhbmRhcmQgS0FTQU4gKHdoaWNoIGRldGVjdHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYW5kIFVCU0FOICh3aGljaCBkZXRlY3RzIHNoaWZ0LW91dC1vZi1ib3VuZHMpIGFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGlzIGJ1Zy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowk2l7n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 09:12:07 +0000 UTC FinishedAt: 2026-08-10 09:43:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "001b5d347d8ba39b2dccaefcc57967b18caec8fe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E100" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "001b5d347d8ba39b2dccaefcc57967b18caec8fe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E100" ], "series_id": "cd49b575-5bbd-45fa-a20a-5da37af9f915" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "e100_probe", "e100_set_eeprom" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZTEwMF9wcm9iZSYjMzQ7LAogICAgJiMzNDtlMTAwX3NldF9lZXByb20mIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBpc3N1ZSB3aXRoIGBhZGRyX2xlbmAgaW4gYGUxMDBfZWVwcm9tX3JlYWRgLiBXaGVuIGBhZGRyX2xlbmAgdW5kZXJmbG93cywgaXQgYmVjb21lcyBhIGxhcmdlIHZhbHVlLCB3aGljaCBzdWJzZXF1ZW50bHkgY2F1c2VzIGEgc2hpZnQtb3V0LW9mLWJvdW5kcyAoYDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCkgd2hlbiBjYWxjdWxhdGluZyBgbmljLVx1MDAzZWVlcHJvbV93Y2AuIFRoaXMgbGFyZ2UgYGVlcHJvbV93Y2AgdmFsdWUgdGhlbiBsZWFkcyB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHJlYWQgb24gdGhlIGZpeGVkLXNpemUgYG5pYy1cdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXG5cblRoZXNlIGFyZSBjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgYnVncyAoc2hpZnQtb3V0LW9mLWJvdW5kcyBhbmQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcykuIFN0YW5kYXJkIEtBU0FOICh3aGljaCBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFuZCBVQlNBTiAod2hpY2ggZGV0ZWN0cyBzaGlmdC1vdXQtb2YtYm91bmRzKSBhcmUgcGVyZmVjdGx5IGNhcGFibGUgb2YgY2F0Y2hpbmcgdGhpcyBidWcuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgdXNlZCBpbiBjb250cm9sIGZsb3csIG9yIGxlYWtlZCB0byB1c2Vyc3BhY2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gRUVQUk9NIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyLiBUaGVzZSBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSBhbmQgdmlhIGV0aHRvb2wgKGBlMTAwX3NldF9lZXByb21gKS4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIFFFTVUmIzM5O3MgYGk4MjU1OWVyYCBlbXVsYXRlZCBQQ0kgZGV2aWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTc3NGFlMDQ4ZGNlM2I3OTg5MDYxMWQxOTg4MjZiYzhhYjcyMDM5ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDA5OjMwOjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuaW5kZXggMjk5NjA3NjJlNjRhOC4uMjZhN2MwYWFhNmUyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5AQCAtNzQ0LDcgJiM0Mzs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG4gXHRcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXG4gXHRcdGN0cmwgPSBpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIFx0XHRpZiAoIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTYpIHtcbi1cdFx0XHQqYWRkcl9sZW4gLT0gKGkgLSAxNik7XG4mIzQzO1x0XHRcdHUxNiBsZW4gPSBpIC0gMTY7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAobGVuIFx1MDAzZSAqYWRkcl9sZW4pXG4mIzQzO1x0XHRcdFx0KmFkZHJfbGVuID0gMDtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdCphZGRyX2xlbiAtPSBsZW47XG4gXHRcdFx0aSA9IDE3O1xuIFx0XHR9XG4gXG5AQCAtNzY1LDYgJiM0Mzs3NzAsMTEgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbiBcbiBcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG4gXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIDApO1xuJiM0MztcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlIDgpIHtcbiYjNDM7XHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuJiM0MztcdFx0XHQgIFwmIzM0O2ludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XFxuXCYjMzQ7LCBhZGRyX2xlbik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4gXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gXG4gXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykge1xuQEAgLTc5MSw2ICYjNDM7ODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuIFxuIFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiBcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4mIzQzO1x0aWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcdTAwM2UgOCkge1xuJiM0MztcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsXG4mIzQzO1x0XHRcdCAgXCYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXG5cJiMzNDssIGFkZHJfbGVuKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiBcdG5pYy1cdTAwM2VlZXByb21fd2MgPSAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbjtcbiBcbiBcdGlmIChzdGFydCAmIzQzOyBjb3VudCBcdTAwM2U9IG5pYy1cdTAwM2VlZXByb21fd2MpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlMTAwX3Byb2JlJiMzNDssCiAgICAmIzM0O2UxMDBfc2V0X2VlcHJvbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBFRVBST00gcmVhZC93cml0ZSBvcGVyYXRpb25zIGluIHRoZSBJbnRlbCBQUk8vMTAwIChlMTAwKSBFdGhlcm5ldCBkcml2ZXIuIFRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApIGFuZCB2aWEgZXRodG9vbCAoYGUxMDBfc2V0X2VlcHJvbWApLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgUUVNVSYjMzk7cyBgaTgyNTU5ZXJgIGVtdWxhdGVkIFBDSSBkZXZpY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNzc0YWUwNDhkY2UzYjc5ODkwNjExZDE5ODgyNmJjOGFiNzIwMzlmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTAgMDk6MzA6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMKaW5kZXggMjk5NjA3NjJlNjRhOC4uMjZhN2MwYWFhNmUyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYwpAQCAtNzQ0LDcgJiM0Mzs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpCiAJCSAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovCiAJCWN0cmwgPSBpb3JlYWQ4KCZhbXA7bmljLSZndDtjc3ItJmd0O2VlcHJvbV9jdHJsX2xvKTsKIAkJaWYgKCEoY3RybCAmYW1wOyBlZWRvKSAmYW1wOyZhbXA7IGkgJmd0OyAxNikgewotCQkJKmFkZHJfbGVuIC09IChpIC0gMTYpOwomIzQzOwkJCXUxNiBsZW4gPSBpIC0gMTY7CiYjNDM7CiYjNDM7CQkJaWYgKGxlbiAmZ3Q7ICphZGRyX2xlbikKJiM0MzsJCQkJKmFkZHJfbGVuID0gMDsKJiM0MzsJCQllbHNlCiYjNDM7CQkJCSphZGRyX2xlbiAtPSBsZW47CiAJCQlpID0gMTc7CiAJCX0KIApAQCAtNzY1LDYgJiM0Mzs3NzAsMTEgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYykKIAogCS8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovCiAJZTEwMF9lZXByb21fcmVhZChuaWMsICZhbXA7YWRkcl9sZW4sIDApOwomIzQzOwlpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuICZndDsgOCkgewomIzQzOwkJbmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy0mZ3Q7bmV0ZGV2LAomIzQzOwkJCSAgJiMzNDtpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxuJiMzNDssIGFkZHJfbGVuKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiAJbmljLSZndDtlZXByb21fd2MgPSAxICZsdDsmbHQ7IGFkZHJfbGVuOwogCiAJZm9yIChhZGRyID0gMDsgYWRkciAmbHQ7IG5pYy0mZ3Q7ZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykgewpAQCAtNzkxLDYgJiM0Mzs4MDEsMTEgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpCiAKIAkvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqLwogCWUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCAwKTsKJiM0MzsJaWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiAmZ3Q7IDgpIHsKJiM0MzsJCW5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtJmd0O25ldGRldiwKJiM0MzsJCQkgICYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcbiYjMzQ7LCBhZGRyX2xlbik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCW5pYy0mZ3Q7ZWVwcm9tX3djID0gMSAmbHQ7Jmx0OyBhZGRyX2xlbjsKIAogCWlmIChzdGFydCAmIzQzOyBjb3VudCAmZ3Q7PSBuaWMtJmd0O2VlcHJvbV93YykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1MQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBJbnRlbCBQUk8vMTAwIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jYCBmaWxlLiBUaGUgZTEwMCBkcml2ZXIsIGZvciB0aG9zZSBvZiB1cyB3aG8gaGF2ZW4mIzM5O3QgZGVhbHQgd2l0aCBpdCByZWNlbnRseSwgaXMgdGhlIGRyaXZlciBmb3IgdGhvc2Ugb2xkZXIgSW50ZWwgUFJPLzEwMCBFdGhlcm5ldCBhZGFwdGVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gd2UgZnV6eiB0aGlzIHdpdGggUUVNVT8gQW5kIHRoZW4gSSByZW1lbWJlcmVkLCBRRU1VIGRvZXMgZW11bGF0ZSBzb21lIGUxMDAtY29tcGF0aWJsZSBkZXZpY2VzOiB0aGUgYGk4MjU1N2JgLCBgaTgyNTU5ZXJgLCBhbmQgYGk4MjU1OWNgLiBTbywgbGV0JiMzOTtzIGxvb2sgZGVlcGVyIGF0IHRoZSBwYXRjaCBhbmQgc2VlLgoKVGhlIGZ1bmN0aW9ucyB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbiDigJMgYGUxMDBfZWVwcm9tX3JlYWRgLCBgZTEwMF9lZXByb21fbG9hZGAsIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAg4oCTIGFyZSB0aGUga2V5IGZ1bmN0aW9ucy4gT2theSwgYGUxMDBfZWVwcm9tX2xvYWRgIGdldHMgY2FsbGVkIGR1cmluZyBwcm9iZSwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB0ZXN0aW5nIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAgZ2V0cyBjYWxsZWQgZnJvbSBgZXRodG9vbGAuIExldCYjMzk7cyBjaGVjayBpZiBRRU1VIHJlYWxseSBkb2VzIGVtdWxhdGUgdGhlIGUxMDAuIEFoLCB5ZXMsIHRoZSBgaTgyNTU5ZXJgIGluIFFFTVUgZG9lcyB1c2UgdGhlIGUxMDAgZHJpdmVyLgoKV2FpdCBhIHNlY29uZOKApiB0aGUgYGk4MjU1OWVyYCBpcyBhIFBDSSBkZXZpY2UsIGlzbiYjMzk7dCBpdD8gT2theSwgc28gY2FuIHN5emthbGxlciBmdXp6IFBDSSBkZXZpY2VzPyBZZXMsIGl0IGNhbiwgdmlhIHRoZSB2aGNpIGludGVyZmFjZSBvciBieSBkaXJlY3RseSBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXRkZXYgb3IgdmlhIGV0aHRvb2wuIEJpbmdvLiBTeXprYWxsZXIgY2FuIGZ1enogZXRodG9vbCBkaXJlY3RseSwgcmlnaHQ/IFNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBlMTAwX2VlcHJvbV9zYXZlYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGFnYWluLiBCdXQgd2UgbmVlZCB0byBjaGVjayBob3cgcmVhY2hhYmxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUuCgpgZTEwMF9lZXByb21fbG9hZGAgaXMgY2FsbGVkIGZyb20gYGUxMDBfcHJvYmVgLCB3aGljaCBpcyBnb29kLCBhcyBtZW50aW9uZWQgYmVmb3JlLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgIGlzIGNhbGxlZCBmcm9tIGBlMTAwX3NldF9lZXByb21gLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgZTEwMF9zZXRfZWVwcm9tYCBpcyB1c2VkLiBUaW1lIHRvIHdoaXAgb3V0IHRoZSBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZTEwMF9zZXRfZWVwcm9tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNTQ3PXN0YXRpYyBpbnQgZTEwMF9nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjU1ODpzdGF0aWMgaW50IGUxMDBfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTktXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZTEwMF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc2Mi1cdC5nZXRfZWVwcm9tXHRcdD0gZTEwMF9nZXRfZWVwcm9tLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3NjM6XHQuc2V0X2VlcHJvbVx0XHQ9IGUxMDBfc2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzY0LVx0LmdldF9yaW5ncGFyYW1cdFx0PSBlMTAwX2dldF9yaW5ncGFyYW0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW50ZWwgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGBlMTAwYCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoYXQsIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgdGV4dCB0ZWxscyBtZSB0aGUgZHJpdmVyIGlzIHJlZmVycmVkIHRvIGFzIGBlMTAwYCwgc28gbGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhhdC4gQnV0IEkgYWxzbyBzZWUgYENPTkZJR19FMTAwYCBtZW50aW9uZWQuIFRoaXMgaXMgdGhlIGNydWNpYWwgcG9pbnQgZm9yIGNoZWNraW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbnRyb2xsZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUuCgpHaXZlbiBteSBleHBlcmllbmNlLCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGV4YW1pbmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgLiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgSW50ZWwgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gaXQmIzM5O3MgYSBzYWZlIGJldCB0aGF0IGBDT05GSUdfRTEwMGAsIGlmIGl0IGV4aXN0cywgaXMgZGVmaW5lZCBhbmQgY29udHJvbGxlZCB0aGVyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGhhcmR3YXJlIGZlYXR1cmVzLCBwb3RlbnRpYWwgY29uZmxpY3RzLCBhbmQgdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEEgZGVlcCBkaXZlIGludG8gdGhpcyBLY29uZmlnIHdpbGwgcmV2ZWFsIHRoZSB3aG9sZSBzdG9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRTEwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZz0yMD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI6Y29uZmlnIEUxMDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwJiM0Mzsgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjQ1OmNvbmZpZyBFMTAwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00Ni1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjYxOmNvbmZpZyBFMTAwMEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjItXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwMCBQQ0ktRXhwcmVzcyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo4MTpjb25maWcgRTEwMDBFX0hXVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODItXHRib29sIFwmIzM0O1N1cHBvcnQgSFcgY3Jvc3MtdGltZXN0YW1wIG9uIFBDSCBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ0MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBjb25maWcgRTEwMGAgRGVwZW5kZW5jaWVzKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYGNvbmZpZyBFMTAwYC4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gSeKAmW0gdGhpbmtpbmcsIGdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhpcyBzeXN0ZW0sIHdoYXQgYXJlIHRoZSBtb3N0IGxpa2VseSBjb21wb25lbnRzIG9yIG1vZHVsZXMgdGhhdCByZWx5IG9uLCBvciBhcmUgaW5mbHVlbmNlZCBieSwgdGhlIHNldHRpbmdzIHdpdGhpbiBgY29uZmlnIEUxMDBgPyBJJiMzOTttIGltbWVkaWF0ZWx5IHJ1bm5pbmcgdGhyb3VnaCBhIG1lbnRhbCBjaGVja2xpc3Q6IGlzIGl0IHByaW1hcmlseSBoYXJkd2FyZS1yZWxhdGVkLCBvciBkb2VzIGl0IGFsc28gaW1wYWN0IGFueSBvZiB0aGUgc29mdHdhcmUgc3RhY2tzPyBBcmUgd2UgdGFsa2luZyBkcml2ZXIgYmVoYXZpb3IsIG5ldHdvcmsgc3RhY2sgcGFyYW1ldGVycywgaW50ZXJydXB0IHNldHRpbmdzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGhpZ2gtbGV2ZWwgYXJlYXMgdG8gZm9jdXMgb24gZmlyc3QsIGJlZm9yZSBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHRoZSBsb3dlci1sZXZlbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBUaGF0IHdheSBJIGNhbiBiZSBlZmZpY2llbnQgaW4gZ2V0dGluZyB0byB0aGUgcm9vdCBvZiB3aGF0IGRlcGVuZHMgb24gdGhpcyBjb25maWcuIExldCBtZSBxdWlja2x5IHNjb3BlIHRoZSBzeXN0ZW0gdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIyOlx0Y29uZmlnIEUxMDBcbiAgMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIFBSTy8xMDAmIzQzOyBzdXBwb3J0XCYjMzQ7XG4gIDI0Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAyNTpcdFx0c2VsZWN0IE1JSVxuICAyNjpcdFx0aGVscFxuICAyNzpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBQUk8vMTAwIGZhbWlseSBvZiBhZGFwdGVycy5cbiAgMjg6XHRcdCAgVG8gdmVyaWZ5IHRoYXQgeW91ciBhZGFwdGVyIGlzIHN1cHBvcnRlZCwgZmluZCB0aGUgYm9hcmQgSUQgbnVtYmVyXG4gIDI5Olx0XHQgIG9uIHRoZSBhZGFwdGVyLiBMb29rIGZvciBhIGxhYmVsIHRoYXQgaGFzIGEgYmFyY29kZSBhbmQgYSBudW1iZXJcbiAgMzA6XHRcdCAgaW4gdGhlIGZvcm1hdCAxMjM0NTYtMDAxIChzaXggZGlnaXRzIGh5cGhlbiB0aHJlZSBkaWdpdHMpLlxuICAzMTpcdFxuICAzMjpcdFx0ICBVc2UgdGhlIGFib3ZlIGluZm9ybWF0aW9uIGFuZCB0aGUgQWRhcHRlciBcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXRcbiAgMzM6XHRcdCAgY2FuIGJlIGxvY2F0ZWQgYXQ6XG4gIDM0Olx0XG4gIDM1Olx0XHQgIFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVx1MDAzZVxuICAzNjpcdFxuICAzNzpcdFx0ICB0byBpZGVudGlmeSB0aGUgYWRhcHRlci5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gIDQwOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAucnN0XHUwMDNlLlxuICA0MTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5OTkKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgZTEwMCBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGUxMDBgIGRyaXZlciwgYW5kIGl0JiMzOTtzIGEgcHJldHR5IHN0YW5kYXJkIFBDSSBldGhlcm5ldCBkcml2ZXIuIEkgc2VlIGEgcG90ZW50aWFsIGF2ZW51ZSBmb3IgZnV6emluZyBpdCDigJMgc3BlY2lmaWNhbGx5IHRocm91Z2ggYGV0aHRvb2xgLCBzaW5jZSB0aGUgYGUxMDBfc2V0X2VlcHJvbWAgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aGF0IHdheS4gSG1tLCB3YWl0IGEgc2Vjb25kLi4uIGlzbiYjMzk7dCBgZTEwMF9lZXByb21fbG9hZGAgYWxzbyBjYWxsZWQgZnJvbSBgZTEwMF9wcm9iZWA/IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuCgpUaGUga2V5IHRoZW4gYmVjb21lcyBnZXR0aW5nIHRoZSBkcml2ZXIgbG9hZGVkLiBJZiBJIGNhbiBlbXVsYXRlIHRoZSBkZXZpY2UsIG9yIGlkZWFsbHkgbGV2ZXJhZ2Ugc29tZXRoaW5nIGxpa2Ugc3l6a2FsbGVyIHRvIGluamVjdCBQQ0kgZGV2aWNlcywgSSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIGBlMTAwX3Byb2JlYC4gR29vZCBuZXdzOiBzeXprYWxsZXIgZG9lcyBoYXZlIGEgUENJIGZ1enplciwgc3BlY2lmaWNhbGx5IGB2ZmlvL3BjaWAsIHdoaWNoIGNvdWxkIGJlIHBlcmZlY3QgZm9yIHRoaXMuCgpBbmQsIHRoaW5raW5nIGFib3V0IGVtdWxhdGlvbiwgaXNuJiMzOTt0IFFFTVUga25vd24gdG8gc3VwcG9ydCBgaTgyNTU5ZXJgPyBBbmQgZG9lc24mIzM5O3QgdGhlIGBlMTAwYCBkcml2ZXIgYWxzbyBoYW5kbGUgdGhhdCBwYXJ0aWN1bGFyIGRldmljZT8gSSBzaG91bGQgcXVpY2tseSBjaGVjayB0byBjb25maXJtIHRoZSBgZTEwMGAgZHJpdmVyJiMzOTtzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgYGk4MjU1OWVyYCBkZXZpY2Ug4oCTIHRoYXQgY291bGQgYmUgYSBsb3ctZWZmb3J0IHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2k4MjU1OSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGUxMDAuYyBmb3IgUENJIElEIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGUxMDAgZHJpdmVyIGhhbmRsZXMgUENJIGRldmljZSBpZGVudGlmaWNhdGlvbi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byBgZTEwMC5jYC4gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgaG93IGl0JiMzOTtzIGRvbmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIGNvZGUgdGhhdCBtYXBzIHRoZSBQQ0kgVmVuZG9yIElEIGFuZCBEZXZpY2UgSUQgdG8gdGhlIGRyaXZlciYjMzk7cyBzdXBwb3J0ZWQgaGFyZHdhcmUuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaGFuZGxlIHRoYXQgbWF0Y2hpbmcgcHJvY2VzcywgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBxdWlya3Mgb3Igc3BlY2lmaWMgaGFuZGxpbmcgZm9yIGRpZmZlcmVudCByZXZpc2lvbnMgb3IgdmVuZG9ycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGdyYW51bGFyaXR5IG9mIHRoZWlyIGRldmljZSBpZGVudGlmaWNhdGlvbiBhbmQgaG93IHJvYnVzdCBpdCBpcy4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBub3QgYSBzaW1wbGUgaGFyZGNvZGVkIHRhYmxlIGFuZCB0aGVyZSYjMzk7cyBzb21lIGVsZWdhbnQgdXNlIG9mIHdpbGRjYXJkcyBvciBtb3JlIHNvcGhpc3RpY2F0ZWQgbWF0Y2hpbmcgbG9naWMsIG1heWJlIGV2ZW4gc29tZSBydW50aW1lIHByb2JpbmcuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xNzc9TU9EVUxFX1BBUk1fREVTQyh1c2VfaW8sIFwmIzM0O0ZvcmNlIHVzZSBvZiBpL28gYWNjZXNzIG1vZGVcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBlMTAwX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg2LVx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAyOSwgMCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI4MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlMTAwX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjg0NTpzdGF0aWMgaW50IGUxMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjg0Ni17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMjUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIG15IGRvbWFpbiBvZiBleHBlcnRpc2U6CgoqKkRpdmluZyBpbnRvIHRoZSBEYXRhKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIG9mIHRoaXMgY3VycmVudCBwcm9ibGVtLCBzbyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGxvb2sgYXQgYGUxMDBfaWRfdGFibGVgLiBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgZm9ybWluZyBoeXBvdGhlc2VzIGFib3V0IHdoYXQgZGF0YSBpdCBsaWtlbHkgY29udGFpbnMsIHRoZSBmb3JtYXQgaXQmIzM5O3MgbGlrZWx5IHN0cnVjdHVyZWQgaW4sIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgb3RoZXIgZWxlbWVudHMgb2YgdGhpcyBzeXN0ZW0uIEkmIzM5O20gaG9waW5nIGl0JiMzOTtsbCBwcm92aWRlIGEga2V5LCBhIG1hcCwgYSBzdGFydGluZyBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBCYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEkgaGF2ZSBzb21lIGV4cGVjdGF0aW9ucywgYnV0IGNvbmZpcm1hdGlvbiBpcyBrZXkuIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIGl0IGhvbGRzLiBJdCYjMzk7cyB0aW1lIHRvIHJlYWQgdGhpcyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4NTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBlMTAwX2lkX3RhYmxlW10gPSB7XG4gMTg2Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDI5LCAwKSxcbiAxODc6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzAsIDApLFxuIDE4ODpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzMSwgMyksXG4gMTg5Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDMyLCAzKSxcbiAxOTA6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzMsIDMpLFxuIDE5MTpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzNCwgMyksXG4gMTkyOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDM4LCAzKSxcbiAxOTM6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzksIDQpLFxuIDE5NDpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzQSwgNCksXG4gMTk1Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDNCLCA0KSxcbiAxOTY6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwM0MsIDQpLFxuIDE5NzpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzRCwgNCksXG4gMTk4Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDNFLCA0KSxcbiAxOTk6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTAsIDUpLFxuIDIwMDpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1MSwgNSksXG4gMjAxOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDUyLCA1KSxcbiAyMDI6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTMsIDUpLFxuIDIwMzpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1NCwgNSksXG4gMjA0Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDU1LCA1KSxcbiAyMDU6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTYsIDUpLFxuIDIwNjpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1NywgNSksXG4gMjA3Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDU5LCAwKSxcbiAyMDg6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNjQsIDYpLFxuIDIwOTpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2NSwgNiksXG4gMjEwOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDY2LCA2KSxcbiAyMTE6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNjcsIDYpLFxuIDIxMjpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2OCwgNiksXG4gMjEzOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDY5LCA2KSxcbiAyMTQ6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNkEsIDYpLFxuIDIxNTpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2QiwgNiksXG4gMjE2Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDkxLCA3KSxcbiAyMTc6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwOTIsIDcpLFxuIDIxODpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA5MywgNyksXG4gMjE5Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDk0LCA3KSxcbiAyMjA6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwOTUsIDcpLFxuIDIyMTpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTBmZSwgNyksXG4gMjIyOlx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMjA5LCAwKSxcbiAyMjM6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEyMjksIDApLFxuIDIyNDpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MjQ0OSwgMiksXG4gMjI1Olx0XHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgyNDU5LCAyKSxcbiAyMjY6XHRcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDI0NUQsIDIpLFxuIDIyNzpcdFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MjdEQywgNyksXG4gMjI4Olx0XHR7IDAsIH1cbiAyMjk6XHR9O1xuIDIzMDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBlMTAwX2lkX3RhYmxlKTtcbiAyMzE6XHRcbiAyMzI6XHRlbnVtIG1hYyB7XG4gMjMzOlx0XHRtYWNfODI1NTdfRDEwMF9BICA9IDAsXG4gMjM0Olx0XHRtYWNfODI1NTdfRDEwMF9CICA9IDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2OTkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbnRlbCA4MjU1OSBFdGhlcm5ldCBDb250cm9sbGVyIEVtdWxhdGlvbioqCgpPa2F5LCBzbyBRRU1VJiMzOTtzIGBpODI1NTllcmAgZW11bGF0ZXMgYSBkZXZpY2Ugd2l0aCB0aGUgUENJIElEIDgwODY6MTIwOS4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIDB4MTIwOSBpcyBhY3R1YWxseSBwcmVzZW50IGluIHRoZSBkZXZpY2UgbGlzdC4gWWVwLCB0aGVyZSBpdCBpczogYElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEyMDksIDApYC4gVGhhdCBjb25maXJtcyBRRU1VICpkb2VzKiBlbXVsYXRlIGl0LCB3aGljaCBtZWFucyBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdC4gRXhjZWxsZW50LgoKTm93LCB0aGUgcGF0Y2ggdG91Y2hlcyBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYC4gQSBxdWljayBnbGFuY2Ugc2hvd3MgYGUxMDBfZWVwcm9tX3JlYWRgIGlzIGNhbGxlZCBieSBib3RoIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgLiBgZTEwMF9lZXByb21fbG9hZGAgaXMgaW52b2tlZCBmcm9tIGBlMTAwX3Byb2JlYCwgd2hpY2ggaXMgc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24uIEFuZCBgZTEwMF9lZXByb21fc2F2ZWAgaXMgdXNlZCBieSBgZTEwMF9zZXRfZWVwcm9tYC4gQWhhISBgZTEwMF9zZXRfZWVwcm9tYCBpcyBhbiBldGh0b29sIG9wZXJhdGlvbi4gVGhpcyBpcyBnb29kIG5ld3M7IGl0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyAqYXJlKiByZWFjaGFibGUgdGhyb3VnaCBzdGFuZGFyZCBuZXR3b3JrIG1hbmFnZW1lbnQgaW50ZXJmYWNlcywgbWFraW5nIHRoZW0gcmlwZSB0YXJnZXRzIGZvciBmdXp6aW5nLgoKQnV0LCBJIHNob3VsZCB0YWtlIGEgbW9tZW50IHRvIHNlZSBpZiBgZTEwMF9lZXByb21fcmVhZGAgaXMgaW52b2tlZCBmcm9tIGFueSAqb3RoZXIqIGxvY2F0aW9ucy4gTmVlZCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBtb3JlIGNyaXRpY2FsIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlMTAwX2VlcHJvbV9yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz02ODM9c3RhdGljIHZvaWQgZTEwMF9lZXByb21fd3JpdGUoc3RydWN0IG5pYyAqbmljLCB1MTYgYWRkcl9sZW4sIHUxNiBhZGRyLCBfX2xlMTYgZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzIwLS8qIEdlbmVyYWwgdGVjaG5pcXVlIHN0b2xlbiBmcm9tIHRoZSBlZXBybzEwMCBkcml2ZXIgLSB2ZXJ5IGNsZXZlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjcyMTpzdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz03Njc9c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzcxLVx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3NzI6XHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3My1cdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlIDgpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzgwLVx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YzsgYWRkciYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3ODE6XHRcdG5pYy1cdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4Mi1cdFx0aWYgKGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz03OTg9c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMi1cdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODAzOlx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDQtXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMuIFRoYXQmIzM5O3MgZ29vZCwgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBJdCYjMzk7cyBhYm91dCBwcmV2ZW50aW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBpbmZpbml0ZSBsb29wcywgd2hpY2ggY291bGQgbGVhZCB0byBhbGwgc29ydHMgb2YgbmFzdHkgcHJvYmxlbXMsIGFuZCB0aGlzIGRyaXZlciBpcyB0aGUgYGUxMDBgIGRyaXZlciwgd2l0aCBjb25maWd1cmF0aW9uIGRlZmluZWQgYXMgYEUxMDBgLgoKVGhlIG1haW4gZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYGUxMDBfc2V0X2VlcHJvbWAgYW5kIGBlMTAwX3Byb2JlYC4gV2FpdCwgYGUxMDBfcHJvYmVgIGlzIGEgcHJvYmUgZnVuY3Rpb24uIEl0JiMzOTtzIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgZmlyc3QgcHJvYmVkLCByaWdodD8gT2theSwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgZHJpdmVyIGdldHMgaW5pdGlhbGl6ZWQuCgpOb3csIGBlMTAwX3NldF9lZXByb21gIGlzIGNhbGxlZCB2aWEgZXRodG9vbC4gSW50ZXJlc3RpbmcuLi4gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZzogSXMgYGUxMDBfc2V0X2VlcHJvbWAgZGVjbGFyZWQgYXMgc3RhdGljPyBZdXAsIGl0IGlzLiBOb3csIHRoZSBpbnN0cnVjdGlvbnMgaGVyZSBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgYGUxMDBfc2V0X2VlcHJvbWAgaXMgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGhpbiBgZXRodG9vbF9vcHNgLCBzbyB0aGUgc3RhdGljIGRlY2xhcmF0aW9uIHByb2JhYmx5IGlzIG5vdCBhbiBpc3N1ZSBpbiB0aGlzIGNhc2UuIExldCBtZSBkb3VibGUtY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoYXQgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGUxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTYyOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipDb2RlIEluc3BlY3Rpb24gJmFtcDsgUGF0dGVybiBSZWNvZ25pdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIGNvZGUuIFRoZSBnb2FsIGlzIGxpa2VseSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBlMTAwYCBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIHNlYXJjaCB1c2luZyBhIHJlZ2V4LiBJJiMzOTttIHRoaW5raW5nLCBiYXNlZCBvbiBjb21tb24ga2VybmVsIGNvZGluZyBzdHlsZSBhbmQgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGUgZGVjbGFyYXRpb24gbWlnaHQgc3RhcnQgd2l0aCBlaXRoZXIgYHN0YXRpYyBpbnQgZTEwMF9gIG9yIGBzdGF0aWMgdm9pZCBlMTAwX2AuIFRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIGludGVybmFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucywgbGlrZWx5IHdpdGhpbiB0aGUgbW9kdWxlIG9yIGRyaXZlci4gUXVpY2tseSBmaW5kaW5nIHRoYXQgcGF0dGVybiB3aWxsIGdpdmUgbWUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHN0YXJ0IHRoZSBhbmFseXNpcy4gSSYjMzk7bGwgZmlsdGVyIGZvciB0aG9zZSBkZWNsYXJhdGlvbnMgdG8gbmFycm93IGRvd24gdGhlIHNlYXJjaCBhbmQgaWRlbnRpZnkgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgaW50IGUxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz02MzU9c3RhdGljIHZvaWQgZTEwMF9od19yZXNldChzdHJ1Y3QgbmljICpuaWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NTA6c3RhdGljIGludCBlMTAwX3NlbGZfdGVzdChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzIxPXN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NjYtLyogTG9hZCBlbnRpcmUgRUVQUk9NIGltYWdlIGludG8gZHJpdmVyIGNhY2hlIGFuZCB2YWxpZGF0ZSBjaGVja3N1bSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc2NzpzdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc5Ny0vKiBTYXZlIChwb3J0aW9uIG9mKSBkcml2ZXIgRUVQUk9NIGNhY2hlIHRvIGRldmljZSBhbmQgdXBkYXRlIGNoZWNrc3VtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzk4OnN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc5OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyOS0jZGVmaW5lIEUxMDBfV0FJVF9TQ0JfRkFTVCAyMCAgICAgICAvKiBkZWxheSBsaWtlIHRoZSBvbGQgY29kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgzMDpzdGF0aWMgaW50IGUxMDBfZXhlY19jbWQoc3RydWN0IG5pYyAqbmljLCB1OCBjbWQsIGRtYV9hZGRyX3QgZG1hX2FkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjg2MTpzdGF0aWMgaW50IGUxMDBfZXhlY19jYihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODYyLVx0aW50ICgqY2JfcHJlcGFyZSkoc3RydWN0IG5pYyAqLCBzdHJ1Y3QgY2IgKiwgc3RydWN0IHNrX2J1ZmYgKikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTEwNTM9c3RhdGljIHZvaWQgZTEwMF9nZXRfZGVmYXVsdHMoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEwODY6c3RhdGljIGludCBlMTAwX2NvbmZpZ3VyZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTEyMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZTEwMF9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzI0OnN0YXRpYyBpbnQgZTEwMF9zZXR1cF91Y29kZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyNS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTEzNTQ9c3RhdGljIGlubGluZSBpbnQgZTEwMF9sb2FkX3Vjb2RlX3dhaXQoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzOTQ6c3RhdGljIGludCBlMTAwX3NldHVwX2lhYWRkcihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5NS1cdHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQwMjpzdGF0aWMgaW50IGUxMDBfZHVtcChzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQwMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQxMDpzdGF0aWMgaW50IGUxMDBfcGh5X2NoZWNrX3dpdGhvdXRfbWlpKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDExLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ0OS0jZGVmaW5lIE5TQ19DT05HX1RYUkVBRFlcdDB4MDQwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0NTA6c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTQzOnN0YXRpYyBpbnQgZTEwMF9od19pbml0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTc2OnN0YXRpYyBpbnQgZTEwMF9tdWx0aShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE3MDE9c3RhdGljIHZvaWQgZTEwMF93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzUyOnN0YXRpYyBpbnQgZTEwMF94bWl0X3ByZXBhcmUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3NTMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xNzg2PXN0YXRpYyBuZXRkZXZfdHhfdCBlMTAwX3htaXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTgyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxODIyOnN0YXRpYyBpbnQgZTEwMF90eF9jbGVhbihzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTgyMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE4NjU9c3RhdGljIHZvaWQgZTEwMF9jbGVhbl9jYnMoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4ODk6c3RhdGljIGludCBlMTAwX2FsbG9jX2NicyhzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg5MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE5MTg9c3RhdGljIGlubGluZSB2b2lkIGUxMDBfc3RhcnRfcmVjZWl2ZXIoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgcnggKnJ4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTMzLSNkZWZpbmUgUkZEX0JVRl9MRU4gKHNpemVvZihzdHJ1Y3QgcmZkKSAmIzQzOyBWTEFOX0VUSF9GUkFNRV9MRU4gJiM0MzsgRVRIX0ZDU19MRU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkzNDpzdGF0aWMgaW50IGUxMDBfcnhfYWxsb2Nfc2tiKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IHJ4ICpyeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTM1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTk2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxOTY2OnN0YXRpYyBpbnQgZTEwMF9yeF9pbmRpY2F0ZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTk2Ny1cdHVuc2lnbmVkIGludCAqd29ya19kb25lLCB1bnNpZ25lZCBpbnQgd29ya190b19kbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjE0NT1zdGF0aWMgdm9pZCBlMTAwX3J4X2NsZWFuX2xpc3Qoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIxNjg6c3RhdGljIGludCBlMTAwX3J4X2FsbG9jX2xpc3Qoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxNjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMjA4PXN0YXRpYyBpcnFyZXR1cm5fdCBlMTAwX2ludHIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMzY6c3RhdGljIGludCBlMTAwX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMzcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMjU2PXN0YXRpYyB2b2lkIGUxMDBfbmV0cG9sbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNjc6c3RhdGljIGludCBlMTAwX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICpwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNjgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyODE6c3RhdGljIGludCBlMTAwX2FzZihzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5MDpzdGF0aWMgaW50IGUxMDBfdXAoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMzQ0PXN0YXRpYyB2b2lkIGUxMDBfdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzYwOnN0YXRpYyBpbnQgZTEwMF9sb29wYmFja190ZXN0KHN0cnVjdCBuaWMgKm5pYywgZW51bSBsb29wYmFjayBsb29wYmFja19tb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MjE6c3RhdGljIGludCBlMTAwX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MjItXHRcdFx0XHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MzE6c3RhdGljIGludCBlMTAwX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MzItXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNDQ0PXN0YXRpYyB2b2lkIGUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ1My0jZGVmaW5lIEUxMDBfUEhZX1JFR1MgMHgxRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0NTQ6c3RhdGljIGludCBlMTAwX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNDg5PXN0YXRpYyB2b2lkIGUxMDBfZ2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjQ5NjpzdGF0aWMgaW50IGUxMDBfc2V0X3dvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ5Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1MjI9c3RhdGljIHZvaWQgZTEwMF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdTMyIHZhbHVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1Mjg6c3RhdGljIGludCBlMTAwX253YXlfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjUzND1zdGF0aWMgdTMyIGUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNTQwOnN0YXRpYyBpbnQgZTEwMF9nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NDEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTQ2LSNkZWZpbmUgRTEwMF9FRVBST01fTUFHSUNcdDB4MTIzNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NDc6c3RhdGljIGludCBlMTAwX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTQ4LVx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNTU4OnN0YXRpYyBpbnQgZTEwMF9zZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1OS1cdHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1NzI9c3RhdGljIHZvaWQgZTEwMF9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1ODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjU4NzpzdGF0aWMgaW50IGUxMDBfc2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1ODgtXHRcdFx0ICAgICAgc3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNjIyPXN0YXRpYyB2b2lkIGUxMDBfZGlhZ190ZXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI2NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjY1NTpzdGF0aWMgaW50IGUxMDBfc2V0X3BoeXNfaWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNjU2LVx0XHRcdCAgICBlbnVtIGV0aHRvb2xfcGh5c19pZF9zdGF0ZSBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjY5MD1zdGF0aWMgY29uc3QgY2hhciBlMTAwX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjcwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNzA2OnN0YXRpYyBpbnQgZTEwMF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzA3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDBfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc3NjpzdGF0aWMgaW50IGUxMDBfZG9faW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc4MzpzdGF0aWMgaW50IGUxMDBfYWxsb2Moc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3ODQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNzkwPXN0YXRpYyB2b2lkIGUxMDBfZnJlZShzdHJ1Y3QgbmljICpuaWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc5OTpzdGF0aWMgaW50IGUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4MDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yODA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI4MTA6c3RhdGljIGludCBlMTAwX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgxMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjgxNjpzdGF0aWMgaW50IGUxMDBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgxNy1cdFx0XHQgICAgIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yODMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZTEwMF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yODQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI4NDU6c3RhdGljIGludCBlMTAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4NDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0zMDQ2PXN0YXRpYyBpbnQgX19lMTAwX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCB3YWtlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0zMDU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjMwNTc6c3RhdGljIGludCBlMTAwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2X2QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMzA1OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MzA2NjpzdGF0aWMgaW50IGUxMDBfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldl9kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNjcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA0NQoJCQkJCQkJb3V0cHV0OiAxNDQKCQkJCQkJCXRob3VnaHRzOiA0NTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgZTEwMCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBlMTAwIGRyaXZlciBhbmQgaGVyZSYjMzk7cyBteSBwbGFuLiBUaGUgY29yZSBkcml2ZXIgaXMgYWxsIGluIGBlMTAwLmNgLCB3aGljaCBpcyBnb29kIGZvciBjb250YWluZWQgYW5hbHlzaXMuIEkmIzM5O20gZm9jdXNpbmcgb24gZmluZGluZyB0aGUgYmVzdCBlbnRyeSBwb2ludHMgdG8gdGhlIGNvZGUuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgYWJvdXQgYGUxMDBfc2V0X2VlcHJvbWAgYnV0IHRoYXQmIzM5O3Mgc3RhdGljLCB3aGljaCBJJiMzOTtkIHJhdGhlciBhdm9pZC4gSG93ZXZlciwgaXQgKmlzKiBhbiBBUEkgZW50cnkgcG9pbnQgZm9yIGV0aHRvb2wgb3BlcmF0aW9ucywgc28gSSYjMzk7bSBwdXR0aW5nIGl0IG9uIHRoZSBsaXN0LiBJIGFsc28gbm90ZWQgYGUxMDBfcHJvYmVgIOKAkyB0aGF0JiMzOTtzIGEga2V5IFBDSSBwcm9iZSBlbnRyeSBwb2ludCwgYW5kIHRoYXQgc2VlbXMgcHJvbWlzaW5nLCBzbyB0aGF0IG1ha2VzIHRoZSBsaXN0IHRvby4gSSBkaWQgY2hlY2sgdGhlIG90aGVyIGVlcHJvbSBmdW5jdGlvbnMsIGFuZCBJIHNhdyB0aGF0IGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBzdGF0aWMuIFNvLCBJJiMzOTtsbCBzdGljayB3aXRoIGBlMTAwX3Byb2JlYCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAgYXMgbXkgbWFpbiBmb2N1cy4KCk5vdywgYXMgZmFyIGFzIGNvbmZpZ3VyYXRpb24sIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBFMTAwYC4gSSBkb3VibGUtY2hlY2tlZCBpdHMgZGVwZW5kZW5jaWVzIHRvIG1ha2Ugc3VyZSBJIHdhc24mIzM5O3QgbWlzc2luZyBhbnl0aGluZy4gR29vZCwgSSBzZWUgdGhhdCBpdCBkZXBlbmRzIG9uIGBQQ0lgIGFuZCBzZWxlY3RzIGBNSUlgLiBUaGlzIHNob3VsZCBiZSBzdWZmaWNpZW50LiBJIGRvbiYjMzk7dCBzZWUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBzbyBgRTEwMGAgaXQgaXMuCgpUaGVyZWZvcmUsIGZvciBteSBmdXp6aW5nIHNldHVwLCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bGwgZG86CgoqICAgKipXb3J0aEZ1enppbmcqKjogKlRydWUqIChBYnNvbHV0ZWx5LCB0aGlzIGlzIHdvcnRoIHRoZSBlZmZvcnQpCiogICAqKkZvY3VzU3ltYm9scyoqOiBgZTEwMF9wcm9iZWAsIGBlMTAwX3NldF9lZXByb21gIChUaGVzZSBhcmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cy4pCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEUxMDBgIChUaGUgbWluaW1hbCBuZWNlc3NhcnkgY29uZmlndXJhdGlvbi4pCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgZTEwMCBkcml2ZXImIzM5O3MgRUVQUk9NIHJlYWQvd3JpdGUgb3BlcmF0aW9ucy4gRnV6emluZyBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRob3NlIG9wZXJhdGlvbnMgZHVyaW5nIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSBhbmQgdGhyb3VnaCBldGh0b29sIGNhbGxzIChgZTEwMF9zZXRfZWVwcm9tYCkuIEkmIzM5O2xsIGJlIHVzaW5nIFFFTVUmIzM5O3MgYGk4MjU1OWVyYCBlbXVsYXRlZCBQQ0kgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RTEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2UxMDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZTEwMF9zZXRfZWVwcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIEVFUFJPTSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlci4gVGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCkgYW5kIHZpYSBldGh0b29sIChgZTEwMF9zZXRfZWVwcm9tYCkuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB1c2luZyBRRU1VJiMzOTtzIGBpODI1NTllcmAgZW11bGF0ZWQgUENJIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RTEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2UxMDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZTEwMF9zZXRfZWVwcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIEVFUFJPTSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlci4gVGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCkgYW5kIHZpYSBldGh0b29sIChgZTEwMF9zZXRfZWVwcm9tYCkuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB1c2luZyBRRU1VJiMzOTtzIGBpODI1NTllcmAgZW11bGF0ZWQgUENJIGRldmljZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT42bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBpc3N1ZSB3aXRoIGBhZGRyX2xlbmAgaW4gYGUxMDBfZWVwcm9tX3JlYWRgLiBXaGVuIGBhZGRyX2xlbmAgdW5kZXJmbG93cywgaXQgYmVjb21lcyBhIGxhcmdlIHZhbHVlLCB3aGljaCBzdWJzZXF1ZW50bHkgY2F1c2VzIGEgc2hpZnQtb3V0LW9mLWJvdW5kcyAoYDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCkgd2hlbiBjYWxjdWxhdGluZyBgbmljLVx1MDAzZWVlcHJvbV93Y2AuIFRoaXMgbGFyZ2UgYGVlcHJvbV93Y2AgdmFsdWUgdGhlbiBsZWFkcyB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHJlYWQgb24gdGhlIGZpeGVkLXNpemUgYG5pYy1cdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXG5cblRoZXNlIGFyZSBjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgYnVncyAoc2hpZnQtb3V0LW9mLWJvdW5kcyBhbmQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcykuIFN0YW5kYXJkIEtBU0FOICh3aGljaCBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFuZCBVQlNBTiAod2hpY2ggZGV0ZWN0cyBzaGlmdC1vdXQtb2YtYm91bmRzKSBhcmUgcGVyZmVjdGx5IGNhcGFibGUgb2YgY2F0Y2hpbmcgdGhpcyBidWcuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgdXNlZCBpbiBjb250cm9sIGZsb3csIG9yIGxlYWtlZCB0byB1c2Vyc3BhY2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTc3NGFlMDQ4ZGNlM2I3OTg5MDYxMWQxOTg4MjZiYzhhYjcyMDM5ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDA5OjMwOjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jCmluZGV4IDI5OTYwNzYyZTY0YTguLjI2YTdjMGFhYTZlMjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMKQEAgLTc0NCw3ICYjNDM7NzQ0LDEyIEBAIHN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKQogCQkgKiBjb21wbGV0ZSBhZGRyZXNzLiAgVXNlIHRoaXMgdG8gYWRqdXN0IGFkZHJfbGVuLiAqLwogCQljdHJsID0gaW9yZWFkOCgmYW1wO25pYy0mZ3Q7Y3NyLSZndDtlZXByb21fY3RybF9sbyk7CiAJCWlmICghKGN0cmwgJmFtcDsgZWVkbykgJmFtcDsmYW1wOyBpICZndDsgMTYpIHsKLQkJCSphZGRyX2xlbiAtPSAoaSAtIDE2KTsKJiM0MzsJCQl1MTYgbGVuID0gaSAtIDE2OwomIzQzOwomIzQzOwkJCWlmIChsZW4gJmd0OyAqYWRkcl9sZW4pCiYjNDM7CQkJCSphZGRyX2xlbiA9IDA7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQkqYWRkcl9sZW4gLT0gbGVuOwogCQkJaSA9IDE3OwogCQl9CiAKQEAgLTc2NSw2ICYjNDM7NzcwLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpCiAKIAkvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqLwogCWUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCAwKTsKJiM0MzsJaWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiAmZ3Q7IDgpIHsKJiM0MzsJCW5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtJmd0O25ldGRldiwKJiM0MzsJCQkgICYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcbiYjMzQ7LCBhZGRyX2xlbik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCW5pYy0mZ3Q7ZWVwcm9tX3djID0gMSAmbHQ7Jmx0OyBhZGRyX2xlbjsKIAogCWZvciAoYWRkciA9IDA7IGFkZHIgJmx0OyBuaWMtJmd0O2VlcHJvbV93YzsgYWRkciYjNDM7JiM0MzspIHsKQEAgLTc5MSw2ICYjNDM7ODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KQogCiAJLyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi8KIAllMTAwX2VlcHJvbV9yZWFkKG5pYywgJmFtcDthZGRyX2xlbiwgMCk7CiYjNDM7CWlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gJmd0OyA4KSB7CiYjNDM7CQluZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLSZndDtuZXRkZXYsCiYjNDM7CQkJICAmIzM0O2ludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XG4mIzM0OywgYWRkcl9sZW4pOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KIAluaWMtJmd0O2VlcHJvbV93YyA9IDEgJmx0OyZsdDsgYWRkcl9sZW47CiAKIAlpZiAoc3RhcnQgJiM0MzsgY291bnQgJmd0Oz0gbmljLSZndDtlZXByb21fd2MpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQ4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNzgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRUVQUk9NIFJlYWQvV3JpdGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBJbnRlbCBFMTAwIGRyaXZlciwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBlMTAwX2VlcHJvbV9yZWFkYCwgYGUxMDBfZWVwcm9tX2xvYWRgLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgIHdpdGhpbiBgZTEwMC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0JiMzOTtzIGhhbmRsaW5nIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlLCB3aGljaCBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSBjb3VsZCBsZWFkIHRvIHNvbWUgbmFzdHkgcHJvYmxlbXMuCgpTcGVjaWZpY2FsbHksIGluIGBlMTAwX2VlcHJvbV9yZWFkYCwgdGhlIHBhdGNoIGFkZHMgY2hlY2tzIHRvIGBhZGRyX2xlbmAgdG8gcHJldmVudCBpdCBmcm9tIGdvaW5nIG5lZ2F0aXZlLiBQcmV2aW91c2x5LCB0aGUgc3VidHJhY3Rpb24gYCphZGRyX2xlbiAtPSAoaSAtIDE2KWAgY291bGQgY2F1c2UgdW5kZXJmbG93IGlmIGBpYCB3YXMgbGVzcyB0aGFuIDE2LCB3aGljaCBJIGNhbiBzZWUgd291bGQgYmUgYSBwcm9ibGVtLiBUaGlzIHBhdGNoIG5vdyBlbnN1cmVzIHRoYXQgaWYgdGhlIG5ldyBsZW5ndGggYGxlbmAgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGFkZHJlc3MgbGVuZ3RoLCBpdCBzZXRzIHRoZSBhZGRyZXNzIGxlbmd0aCB0byAwLiBPdGhlcndpc2UgaXQgZGVjcmVtZW50cyBhcyBpbnRlbmRlZC4KClRoZSBgZTEwMF9lZXByb21fbG9hZGAgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMgYXJlIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuICBUaGUgY29kZSBhdHRlbXB0cyB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBhZGRyZXNzIGxlbmd0aCBieSByZWFkaW5nIHdpdGggYW4gOC1iaXQgbGVuZ3RoLiBUaGUgcGF0Y2ggbm93IGFkZHMgYSBjaGVjayBmb3IgYGFkZHJfbGVuYCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgdmFsaWQuIFNwZWNpZmljYWxseSwgSSBzZWUgaXQgcHJldmVudGluZyBgbmljLSZndDtlZXByb21fd2NgIGZyb20gYmVpbmcgY2FsY3VsYXRlZCB3aXRoIGFuIGludmFsaWQgYGFkZHJfbGVuYCwgYmVjYXVzZSBhIHZhbHVlIG9mIHplcm8sIG9yIGEgdmFsdWUgbGFyZ2VyIHRoYW4gOCBjYXVzZXMgYW4gZXJyb3IgdG8gYmUgcmV0dXJuZWQuICBUaGF0IGNhbGN1bGF0aW9uIGlzIGtleSBiZWNhdXNlIGBuaWMtJmd0O2VlcHJvbV93Y2AgaXMgdXNlZCBsYXRlciBhcyB0aGUgbG9vcCBsaW1pdCBmb3IgcmVhZGluZyB0aGUgRUVQUk9NLgoKVGhlIGNvcmUgb2YgdGhlIGZpeCBpcyBhYm91dCBwcmV2ZW50aW5nIGBhZGRyX2xlbmAgZnJvbSB1bmRlcmZsb3dpbmcsIHdoaWNoIHdvdWxkIHRoZW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHNoaWZ0IG9wZXJhdGlvbiwgbGlrZSBgMSAmbHQ7Jmx0OyBhZGRyX2xlbmAuICBVQlNBTiBzaG91bGQgY2F0Y2ggdGhvc2Ugc2hpZnQtb3V0LW9mLWJvdW5kcyBpc3N1ZXMuICBJZiBgYWRkcl9sZW5gIHdlcmUgcmVhbGx5IGxhcmdlIGJlY2F1c2Ugb2YgYW4gdW5kZXJmbG93LCBgMSAmbHQ7Jmx0OyBhZGRyX2xlbmAgbWlnaHQgYWxzbyByZXN1bHQgaW4gYW4gb3ZlcmZsb3csIGdpdmluZyB1cyBhIGxhcmdlIG9yIHplcm8gdmFsdWUuCgpBaCwgYW5kIEkgc2VlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgbG9vcCBpbiB0aGVzZSBmdW5jdGlvbnMgdXNlcyBgbmljLSZndDtlZXByb21fd2NgIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgcmVhZGluZyBpbnRvIGBuaWMtJmd0O2VlcHJvbWAuICBOb3cgSSByZWNhbGwgYG5pYy0mZ3Q7ZWVwcm9tYCBpcyBhbiBhcnJheSBvZiBzaXplIDI1Ni4gSWYgYGVlcHJvbV93Y2AgaXMgbGFyZ2VyIHRoYW4gMjU2LCBpdCYjMzk7bGwgY2F1c2UgYW4gb3V0LW9mLWJvdW5kcyB3cml0ZS4gIEtBU0FOIHdvdWxkIGNlcnRhaW5seSBjYXRjaCB0aGF0LgoKSSYjMzk7bSBtYWtpbmcgc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc3VidGxlIGlzc3VlcyBoZXJlLCBpbiB0ZXJtcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSWYgYGFkZHJfbGVuYCBpcyB6ZXJvLCB3ZSBnZXQgYG5pYy0mZ3Q7ZWVwcm9tX3djYCBhcyAxLCB3aGljaCBpc24mIzM5O3QgYSBwcm9ibGVtLiBJZiBgYWRkcl9sZW5gIGlzIGxhcmdlLCB3ZSBoYXZlIHRoZSBvdXQtb2YtYm91bmRzIHdyaXRlIEkgbWVudGlvbmVkLiBJJiMzOTttIG5vdCBzZWVpbmcgYW55dGhpbmcgaGVyZSB0aGF0IEtNU0FOIHdvdWxkIHVuaXF1ZWx5IGNhdGNoIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgbGVha2VkLiBUaGUgcHJpbWFyeSBjb25jZXJuIGlzIGRlZmluaXRlbHkgdGhlIGludGVnZXIgdW5kZXJmbG93IGFuZCB0aGUgcmVzdWx0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCBtZSBncmVwIGZvciBgZWVwcm9tYCBpbiB0aGUgYHN0cnVjdCBuaWNgIGRlZmluaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dTE2IGVlcHJvbVxcWyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NzMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgZTEwMCBEcml2ZXIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBzdHJ1Y3QgbmljYCB3aXRoaW4gdGhlIEludGVsIGUxMDAgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ3JlcHBpbmcgdGhlIGBlMTAwLmNgIGZpbGUsIGxvY2F0ZWQgaW4gdGhlIHVzdWFsIHN1c3BlY3QgZGlyZWN0b3J5OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvYC4gIEkgZXhwZWN0IHRoYXQgYHN0cnVjdCBuaWNgIGlzIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgZHJpdmVyLiBJdCBsaWtlbHkgaG9sZHMgYWxsIHRoZSBlc3NlbnRpYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQmIzM5O3Mgc3RhdGUsIHJlZ2lzdGVycywgYW5kIG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMuIEkmIzM5O2xsIGJlIHVzaW5nIGBncmVwYCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBmYXN0ZXN0IHdheSB0byBwaW5wb2ludCB0aGUgZXhhY3QgZGVjbGFyYXRpb24uIE9uY2UgSSBoYXZlIHRoZSBkZWNsYXJhdGlvbiwgSSBjYW4gYmVnaW4gdG8gYXNzZXNzIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBpbnRlcmFjdGlvbiBieSBleGFtaW5pbmcgaG93IHRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgYW5kIHJlZmVyZW5jZWQgd2l0aGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgbmljIFxceyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NTM0PXN0cnVjdCBwYXJhbXMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy01MzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NTM5OnN0cnVjdCBuaWMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTU0MC1cdC8qIEJlZ2luOiBmcmVxdWVudGx5IHVzZWQgdmFsdWVzOiBrZWVwIGFkamFjZW50IGZvciBjYWNoZSBlZmZlY3QgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM1MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBgc3RydWN0IG5pY2AqKgoKT2theSwgc28gdGhlIHByb21wdCBpcyB0byBsb29rIGF0IGBzdHJ1Y3QgbmljYC4gUmlnaHQsIHRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIGRhdGEgc3RydWN0dXJlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHRoZSBjb250ZXh0LiBJcyB0aGlzIGtlcm5lbC1sZXZlbCBjb2RlPyBVc2VyLXNwYWNlIG5ldHdvcmtpbmc/IFdoYXQgT1MgYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gaGVhdmlseSBpbmZsdWVuY2UgdGhlIHNwZWNpZmljIG1lbWJlcnMgYW5kIG92ZXJhbGwgZGVzaWduLgoKSSYjMzk7bSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHR5cGljYWwgaW5mb3JtYXRpb24gdGhpcyBzdHJ1Y3QgKnNob3VsZCogY29udGFpbiwgZnJvbSBhIGhpZ2ggbGV2ZWwuIE1BQyBhZGRyZXNzLCBJUCBhZGRyZXNzIChwb3RlbnRpYWxseSBtdWx0aXBsZSksIE1UVSwgY2FwYWJpbGl0aWVzIGZsYWdzIChjaGVja3N1bSBvZmZsb2FkLCBUU08sIGV0Yy4pLCBETUEgaW5mb3JtYXRpb24sIHRyYW5zbWl0L3JlY2VpdmUgcXVldWUgcG9pbnRlcnMsIGludGVycnVwdCBjb25maWd1cmF0aW9uIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUga2luZCBvZiBsaW5rZWQgbGlzdHMgb3IgYXJyYXlzIGZvciBtYW5hZ2luZyB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYnVmZmVycy4gVGhlcmUgc2hvdWxkIGJlIHNvbWUga2luZCBvZiBsb2NrIHByb3RlY3Rpb24gYXMgd2VsbCwgbGlrZWx5IGEgbXV0ZXggb3Igc3BpbmxvY2sgZ2l2ZW4gdGhhdCB0aGUgTklDIGRhdGEgaXMgbW9zdCBvZnRlbiBhY2Nlc3NlZCBieSBtdWx0aXBsZSB0aHJlYWRzLgoKSSYjMzk7bSBhbHNvIHdvbmRlcmluZyBhYm91dCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gaXQgcmVwcmVzZW50cy4gSXMgdGhpcyBhIHZlcnkgbG93LWxldmVsIHN0cnVjdHVyZSwgY2xvc2UgdG8gdGhlIGhhcmR3YXJlIHJlZ2lzdGVycywgb3IgaXMgaXQgbW9yZSBvZiBhIG5ldHdvcmsgc3RhY2sgYWJzdHJhY3Rpb24/IFRoYXQmIzM5O3MgZ29pbmcgdG8gZGljdGF0ZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGFuZCB0aGUgc29ydHMgb2YgYml0ZmllbGRzIGFuZCBoYXJkd2FyZS1zcGVjaWZpYyBkYXRhIEkgZXhwZWN0IHRvIHNlZS4gSeKAmW0gdGhpbmtpbmcgYWJvdXQgdGhlIGNvbW1vbiBuZXR3b3JrIG1vZGVsczogSXMgaXQgdXNpbmcgYSBCU0Qgc29ja2V0LWxpa2UgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgbW9yZSBtb2Rlcm4sIGxpa2UgaW9fdXJpbmc/IElmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBmdW5jdGlvbnMgY2FsbGVkIG9uIHRoYXQgaW50ZXJmYWNlLiBJdCBpcyBhbGwgcmVsYXRlZC4KCk15IG5leHQgc3RlcCBpcyB0byBsb29rIGZvciBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuIElzIGl0IGRlc2lnbmVkIGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtIG9yIGlzIGl0IGEgbW9yZSBnZW5lcmljIGFic3RyYWN0aW9uIHRoYXTigJlzIGFkYXB0ZWQgZm9yIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzPyBJJiMzOTttIGFudGljaXBhdGluZyBwb3RlbnRpYWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gcHJvY2Vzc29yIHR5cGUgb3IgTklDIHZlbmRvci4gVGhpcyBpcyBhbm90aGVyIGFyZWEgSSBleHBlY3QgdG8gY2hlY2suCgpGaW5hbGx5LCBJJiMzOTttIGV4cGVjdGluZyBhIGxvdCBvZiBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHJlbGF0ZWQgc3RydWN0dXJlcywgbGlrZSBkZXNjcmlwdG9ycyBmb3IgdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIHJpbmdzLCBwYWNrZXQgYnVmZmVycywgYW5kIHBvdGVudGlhbGx5IHN0cnVjdHVyZXMgZm9yIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIFNvLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBpcyBwcm9iYWJseSBhIHN0YXJ0aW5nIHBvaW50LCBhbmQgdGhhdCBtYW55IG90aGVyIHN0cnVjdHMgd2lsbCBiZSBpbnZvbHZlZCwgbGlrZWx5IHdpdGggcG9pbnRlcnMgY29ubmVjdGluZyB0aGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaW4gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTM5Olx0c3RydWN0IG5pYyB7XG4gNTQwOlx0XHQvKiBCZWdpbjogZnJlcXVlbnRseSB1c2VkIHZhbHVlczoga2VlcCBhZGphY2VudCBmb3IgY2FjaGUgZWZmZWN0ICovXG4gNTQxOlx0XHR1MzIgbXNnX2VuYWJsZVx0XHRcdFx0X19fX2NhY2hlbGluZV9hbGlnbmVkO1xuIDU0MjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiA1NDM6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xuIDU0NDpcdFx0dTE2ICgqbWRpb19jdHJsKShzdHJ1Y3QgbmljICpuaWMsIHUzMiBhZGRyLCB1MzIgZGlyLCB1MzIgcmVnLCB1MTYgZGF0YSk7XG4gNTQ1Olx0XG4gNTQ2Olx0XHRzdHJ1Y3QgcnggKnJ4c1x0XHRcdFx0X19fX2NhY2hlbGluZV9hbGlnbmVkO1xuIDU0NzpcdFx0c3RydWN0IHJ4ICpyeF90b191c2U7XG4gNTQ4Olx0XHRzdHJ1Y3QgcnggKnJ4X3RvX2NsZWFuO1xuIDU0OTpcdFx0c3RydWN0IHJmZCBibGFua19yZmQ7XG4gNTUwOlx0XHRlbnVtIHJ1X3N0YXRlIHJ1X3J1bm5pbmc7XG4gNTUxOlx0XG4gNTUyOlx0XHRzcGlubG9ja190IGNiX2xvY2tcdFx0XHRfX19fY2FjaGVsaW5lX2FsaWduZWQ7XG4gNTUzOlx0XHRzcGlubG9ja190IGNtZF9sb2NrO1xuIDU1NDpcdFx0c3RydWN0IGNzciBfX2lvbWVtICpjc3I7XG4gNTU1Olx0XHRlbnVtIHNjYl9jbWRfbG8gY3VjX2NtZDtcbiA1NTY6XHRcdHVuc2lnbmVkIGludCBjYnNfYXZhaWw7XG4gNTU3Olx0XHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiA1NTg6XHRcdHN0cnVjdCBjYiAqY2JzO1xuIDU1OTpcdFx0c3RydWN0IGNiICpjYl90b191c2U7XG4gNTYwOlx0XHRzdHJ1Y3QgY2IgKmNiX3RvX3NlbmQ7XG4gNTYxOlx0XHRzdHJ1Y3QgY2IgKmNiX3RvX2NsZWFuO1xuIDU2MjpcdFx0X19sZTE2IHR4X2NvbW1hbmQ7XG4gNTYzOlx0XHQvKiBFbmQ6IGZyZXF1ZW50bHkgdXNlZCB2YWx1ZXM6IGtlZXAgYWRqYWNlbnQgZm9yIGNhY2hlIGVmZmVjdCAqL1xuIDU2NDpcdFxuIDU2NTpcdFx0ZW51bSB7XG4gNTY2Olx0XHRcdGljaCAgICAgICAgICAgICAgICA9ICgxIFx1MDAzY1x1MDAzYyAwKSxcbiA1Njc6XHRcdFx0cHJvbWlzY3VvdXMgICAgICAgID0gKDEgXHUwMDNjXHUwMDNjIDEpLFxuIDU2ODpcdFx0XHRtdWx0aWNhc3RfYWxsICAgICAgPSAoMSBcdTAwM2NcdTAwM2MgMiksXG4gNTY5Olx0XHRcdHdvbF9tYWdpYyAgICAgICAgICA9ICgxIFx1MDAzY1x1MDAzYyAzKSxcbiA1NzA6XHRcdFx0aWNoXzEwaF93b3JrYXJvdW5kID0gKDEgXHUwMDNjXHUwMDNjIDQpLFxuIDU3MTpcdFx0fSBmbGFnc1x0XHRcdFx0XHRfX19fY2FjaGVsaW5lX2FsaWduZWQ7XG4gNTcyOlx0XG4gNTczOlx0XHRlbnVtIG1hYyBtYWM7XG4gNTc0Olx0XHRlbnVtIHBoeSBwaHk7XG4gNTc1Olx0XHRzdHJ1Y3QgcGFyYW1zIHBhcmFtcztcbiA1NzY6XHRcdHN0cnVjdCB0aW1lcl9saXN0IHdhdGNoZG9nO1xuIDU3NzpcdFx0c3RydWN0IG1paV9pZl9pbmZvIG1paTtcbiA1Nzg6XHRcdHN0cnVjdCB3b3JrX3N0cnVjdCB0eF90aW1lb3V0X3Rhc2s7XG4gNTc5Olx0XHRlbnVtIGxvb3BiYWNrIGxvb3BiYWNrO1xuIDU4MDpcdFxuIDU4MTpcdFx0c3RydWN0IG1lbSAqbWVtO1xuIDU4MjpcdFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiA1ODM6XHRcbiA1ODQ6XHRcdHN0cnVjdCBkbWFfcG9vbCAqY2JzX3Bvb2w7XG4gNTg1Olx0XHRkbWFfYWRkcl90IGNic19kbWFfYWRkcjtcbiA1ODY6XHRcdHU4IGFkYXB0aXZlX2lmcztcbiA1ODc6XHRcdHU4IHR4X3RocmVzaG9sZDtcbiA1ODg6XHRcdHUzMiB0eF9mcmFtZXM7XG4gNTg5Olx0XHR1MzIgdHhfY29sbGlzaW9ucztcbiA1OTA6XHRcdHUzMiB0eF9kZWZlcnJlZDtcbiA1OTE6XHRcdHUzMiB0eF9zaW5nbGVfY29sbGlzaW9ucztcbiA1OTI6XHRcdHUzMiB0eF9tdWx0aXBsZV9jb2xsaXNpb25zO1xuIDU5MzpcdFx0dTMyIHR4X2ZjX3BhdXNlO1xuIDU5NDpcdFx0dTMyIHR4X3Rjb19mcmFtZXM7XG4gNTk1Olx0XG4gNTk2Olx0XHR1MzIgcnhfZmNfcGF1c2U7XG4gNTk3Olx0XHR1MzIgcnhfZmNfdW5zdXBwb3J0ZWQ7XG4gNTk4Olx0XHR1MzIgcnhfdGNvX2ZyYW1lcztcbiA1OTk6XHRcdHUzMiByeF9zaG9ydF9mcmFtZV9lcnJvcnM7XG4gNjAwOlx0XHR1MzIgcnhfb3Zlcl9sZW5ndGhfZXJyb3JzO1xuIDYwMTpcdFxuIDYwMjpcdFx0dTE2IGVlcHJvbV93YztcbiA2MDM6XHRcdF9fbGUxNiBlZXByb21bMjU2XTtcbiA2MDQ6XHRcdHNwaW5sb2NrX3QgbWRpb19sb2NrO1xuIDYwNTpcdFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbiA2MDY6XHR9O1xuIDYwNzpcdFxuIDYwODpcdHN0YXRpYyBpbmxpbmUgdm9pZCBlMTAwX3dyaXRlX2ZsdXNoKHN0cnVjdCBuaWMgKm5pYylcbiA2MDk6XHR7XG4gNjEwOlx0XHQvKiBGbHVzaCBwcmV2aW91cyBQQ0kgd3JpdGVzIHRocm91Z2ggaW50ZXJtZWRpYXRlIGJyaWRnZXNcbiA2MTE6XHRcdCAqIGJ5IGRvaW5nIGEgYmVuaWduIHJlYWQgKi9cbiA2MTI6XHRcdCh2b2lkKWlvcmVhZDgoXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VzY2Iuc3RhdHVzKTtcbiA2MTM6XHR9XG4gNjE0Olx0XG4gNjE1Olx0c3RhdGljIHZvaWQgZTEwMF9lbmFibGVfaXJxKHN0cnVjdCBuaWMgKm5pYylcbiA2MTY6XHR7XG4gNjE3Olx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIDYxODpcdFxuIDYxOTpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bmljLVx1MDAzZWNtZF9sb2NrLCBmbGFncyk7XG4gNjIwOlx0XHRpb3dyaXRlOChpcnFfbWFza19ub25lLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXNjYi5jbWRfaGkpO1xuIDYyMTpcdFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xuIDYyMjpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZuaWMtXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcbiA2MjM6XHR9XG4gNjI0Olx0XG4gNjI1Olx0c3RhdGljIHZvaWQgZTEwMF9kaXNhYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXG4gNjI2Olx0e1xuIDYyNzpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiA2Mjg6XHRcbiA2Mjk6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNm5pYy1cdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xuIDYzMDpcdFx0aW93cml0ZTgoaXJxX21hc2tfYWxsLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXNjYi5jbWRfaGkpO1xuIDYzMTpcdFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xuIDYzMjpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZuaWMtXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcbiA2MzM6XHR9XG4gNjM0Olx0XG4gNjM1Olx0c3RhdGljIHZvaWQgZTEwMF9od19yZXNldChzdHJ1Y3QgbmljICpuaWMpXG4gNjM2Olx0e1xuIDYzNzpcdFx0LyogUHV0IENVIGFuZCBSVSBpbnRvIGlkbGUgd2l0aCBhIHNlbGVjdGl2ZSByZXNldCB0byBnZXRcbiA2Mzg6XHRcdCAqIGRldmljZSBvZmYgb2YgUENJIGJ1cyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mzk1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBPdXQtb2YtQm91bmRzIFdyaXRlKioKCk9rYXksIHNvIEkmIzM5O3ZlIHBpbnBvaW50ZWQgdGhlIHJlbGV2YW50IGNvZGU7IGBfX2xlMTYgZWVwcm9tWzI1Nl07YCBpcyBpbmRlZWQgZGVjbGFyZWQgb24gbGluZSA2MDMsIGFzIGV4cGVjdGVkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUsIGVpdGhlciBkaXJlY3RseSB0byBgbmljLSZndDtlZXByb21gIG9yIHBvdGVudGlhbGx5IHZpYSBhIHNoaWZ0LW91dC1vZi1ib3VuZHMgb3BlcmF0aW9uLiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBsaWtlbHkgc3RlbXMgZnJvbSBhbiB1bmRlcmZsb3cgaW4gYGFkZHJfbGVuYC4gSWYgYGFkZHJfbGVuYCBnb2VzIG5lZ2F0aXZlLCBpdCBmbGlwcyBpbnRvIGEgbGFyZ2UgcG9zaXRpdmUgbnVtYmVyIGxpa2UgNjU1MzUuIFRoZW4sIHdoZW4gd2UgcGVyZm9ybSBgMSAmbHQ7Jmx0OyBhZGRyX2xlbmAsIHdlIGFyZSBsb29raW5nIGF0IHVuZGVmaW5lZCBiZWhhdmlvciwgc3BlY2lmaWNhbGx5LCBhIHNoaWZ0LW91dC1vZi1ib3VuZHMuIElmIHRoYXQgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gc29tZXRoaW5nIGV4Y2VlZGluZyAyNTYsIGl0JiMzOTtzIGd1YXJhbnRlZWQgdG8gdHJpZ2dlciBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIHdoZW4gd2UgdHJ5IHRvIGFjY2VzcyBgbmljLSZndDtlZXByb21gLiBUaGlzIHNjcmVhbXMgJiMzNDtjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7IFdlIHNob3VsZCBleHBlY3QgS0FTQU4gYW5kIFVCU0FOIHRvIGZsYWcgdGhpcyBpc3N1ZSBpbW1lZGlhdGVseS4gRm9ydHVuYXRlbHksIGl0IGRvZXNuJiMzOTt0IGFwcGVhciB0byBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIG9yIGxlYWthZ2UsIHNvIHRoYXQmIzM5O3MgYSBzbWFsbCByZWxpZWYuIEkganVzdCBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMgaW4gdGhvc2UgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwOTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDczMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDczMDpcdFx0LyogQ2hpcCBzZWxlY3QgKi9cbiA3MzE6XHRcdGlvd3JpdGU4KGVlY3MgfCBlZXNrLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbiA3MzI6XHRcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xuIDczMzpcdFxuIDczNDpcdFx0LyogQml0LWJhbmcgdG8gcmVhZCB3b3JkIGZyb20gZWVwcm9tICovXG4gNzM1Olx0XHRmb3IgKGkgPSAzMTsgaSBcdTAwM2U9IDA7IGktLSkge1xuIDczNjpcdFx0XHRjdHJsID0gKGNtZF9hZGRyX2RhdGEgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyBpKSkgPyBlZWNzIHwgZWVkaSA6IGVlY3M7XG4gNzM3Olx0XHRcdGlvd3JpdGU4KGN0cmwsIFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIDczODpcdFx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbiA3Mzk6XHRcbiA3NDA6XHRcdFx0aW93cml0ZTgoY3RybCB8IGVlc2ssIFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIDc0MTpcdFx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbiA3NDI6XHRcbiA3NDM6XHRcdFx0LyogRWVwcm9tIGRyaXZlcyBhIGR1bW15IHplcm8gdG8gRUVETyBhZnRlciByZWNlaXZpbmdcbiA3NDQ6XHRcdFx0ICogY29tcGxldGUgYWRkcmVzcy4gIFVzZSB0aGlzIHRvIGFkanVzdCBhZGRyX2xlbi4gKi9cbiA3NDU6XHRcdFx0Y3RybCA9IGlvcmVhZDgoXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG4gNzQ2Olx0XHRcdGlmICghKGN0cmwgXHUwMDI2IGVlZG8pIFx1MDAyNlx1MDAyNiBpIFx1MDAzZSAxNikge1xuIDc0NzpcdFx0XHRcdHUxNiBsZW4gPSBpIC0gMTY7XG4gNzQ4Olx0XG4gNzQ5Olx0XHRcdFx0aWYgKGxlbiBcdTAwM2UgKmFkZHJfbGVuKVxuIDc1MDpcdFx0XHRcdFx0KmFkZHJfbGVuID0gMDtcbiA3NTE6XHRcdFx0XHRlbHNlXG4gNzUyOlx0XHRcdFx0XHQqYWRkcl9sZW4gLT0gbGVuO1xuIDc1MzpcdFx0XHRcdGkgPSAxNztcbiA3NTQ6XHRcdFx0fVxuIDc1NTpcdFxuIDc1NjpcdFx0XHRkYXRhID0gKGRhdGEgXHUwMDNjXHUwMDNjIDEpIHwgKGN0cmwgXHUwMDI2IGVlZG8gPyAxIDogMCk7XG4gNzU3Olx0XHR9XG4gNzU4Olx0XG4gNzU5Olx0XHQvKiBDaGlwIGRlc2VsZWN0ICovXG4gNzYwOlx0XHRpb3dyaXRlOCgwLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbiA3NjE6XHRcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xuIDc2MjpcdFxuIDc2MzpcdFx0cmV0dXJuIGNwdV90b19sZTE2KGRhdGEpO1xuIDc2NDpcdH07XG4gNzY1Olx0XG4gNzY2Olx0LyogTG9hZCBlbnRpcmUgRUVQUk9NIGltYWdlIGludG8gZHJpdmVyIGNhY2hlIGFuZCB2YWxpZGF0ZSBjaGVja3N1bSAqL1xuIDc2NzpcdHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4gNzY4Olx0e1xuIDc2OTpcdFx0dTE2IGFkZHIsIGFkZHJfbGVuID0gOCwgY2hlY2tzdW0gPSAwO1xuIDc3MDpcdFxuIDc3MTpcdFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiA3NzI6XHRcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4gNzczOlx0XHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4gNzc0Olx0XHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuIDc3NTpcdFx0XHRcdCAgXCYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXG5cJiMzNDssIGFkZHJfbGVuKTtcbiA3NzY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNzc3Olx0XHR9XG4gNzc4Olx0XHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gNzc5Olx0XG4gNzgwOlx0XHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykge1xuIDc4MTpcdFx0XHRuaWMtXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcbiA3ODI6XHRcdFx0aWYgKGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxKVxuIDc4MzpcdFx0XHRcdGNoZWNrc3VtICYjNDM7PSBsZTE2X3RvX2NwdShuaWMtXHUwMDNlZWVwcm9tW2FkZHJdKTtcbiA3ODQ6XHRcdH1cbiA3ODU6XHRcbiA3ODY6XHRcdC8qIFRoZSBjaGVja3N1bSwgc3RvcmVkIGluIHRoZSBsYXN0IHdvcmQsIGlzIGNhbGN1bGF0ZWQgc3VjaCB0aGF0XG4gNzg3Olx0XHQgKiB0aGUgc3VtIG9mIHdvcmRzIHNob3VsZCBiZSAweEJBQkEgKi9cbiA3ODg6XHRcdGlmIChjcHVfdG9fbGUxNigweEJBQkEgLSBjaGVja3N1bSkgIT0gbmljLVx1MDAzZWVlcHJvbVtuaWMtXHUwMDNlZWVwcm9tX3djIC0gMV0pIHtcbiA3ODk6XHRcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsIFwmIzM0O0VFUFJPTSBjb3JydXB0ZWRcXG5cJiMzNDspO1xuIDc5MDpcdFx0XHRpZiAoIWVlcHJvbV9iYWRfY3N1bV9hbGxvdylcbiA3OTE6XHRcdFx0XHRyZXR1cm4gLUVBR0FJTjtcbiA3OTI6XHRcdH1cbiA3OTM6XHRcbiA3OTQ6XHRcdHJldHVybiAwO1xuIDc5NTpcdH1cbiA3OTY6XHRcbiA3OTc6XHQvKiBTYXZlIChwb3J0aW9uIG9mKSBkcml2ZXIgRUVQUk9NIGNhY2hlIHRvIGRldmljZSBhbmQgdXBkYXRlIGNoZWNrc3VtICovXG4gNzk4Olx0c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXG4gNzk5Olx0e1xuIDgwMDpcdFx0dTE2IGFkZHIsIGFkZHJfbGVuID0gOCwgY2hlY2tzdW0gPSAwO1xuIDgwMTpcdFxuIDgwMjpcdFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiA4MDM6XHRcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4gODA0Olx0XHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4gODA1Olx0XHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuIDgwNjpcdFx0XHRcdCAgXCYjMzQ7aW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXG5cJiMzNDssIGFkZHJfbGVuKTtcbiA4MDc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gODA4Olx0XHR9XG4gODA5Olx0XHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gODEwOlx0XG4gODExOlx0XHRpZiAoc3RhcnQgJiM0MzsgY291bnQgXHUwMDNlPSBuaWMtXHUwMDNlZWVwcm9tX3djKVxuIDgxMjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA4MTM6XHRcbiA4MTQ6XHRcdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFx1MDAzYyBzdGFydCAmIzQzOyBjb3VudDsgYWRkciYjNDM7JiM0MzspXG4gODE1Olx0XHRcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIGFkZHIsIG5pYy1cdTAwM2VlZXByb21bYWRkcl0pO1xuIDgxNjpcdFxuIDgxNzpcdFx0LyogVGhlIGNoZWNrc3VtLCBzdG9yZWQgaW4gdGhlIGxhc3Qgd29yZCwgaXMgY2FsY3VsYXRlZCBzdWNoIHRoYXRcbiA4MTg6XHRcdCAqIHRoZSBzdW0gb2Ygd29yZHMgc2hvdWxkIGJlIDB4QkFCQSAqL1xuIDgxOTpcdFx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YyAtIDE7IGFkZHImIzQzOyYjNDM7KVxuIDgyMDpcdFx0XHRjaGVja3N1bSAmIzQzOz0gbGUxNl90b19jcHUobmljLVx1MDAzZWVlcHJvbVthZGRyXSk7XG4gODIxOlx0XHRuaWMtXHUwMDNlZWVwcm9tW25pYy1cdTAwM2VlZXByb21fd2MgLSAxXSA9IGNwdV90b19sZTE2KDB4QkFCQSAtIGNoZWNrc3VtKTtcbiA4MjI6XHRcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxLFxuIDgyMzpcdFx0XHRuaWMtXHUwMDNlZWVwcm9tW25pYy1cdTAwM2VlZXByb21fd2MgLSAxXSk7XG4gODI0Olx0XG4gODI1Olx0XHRyZXR1cm4gMDtcbiA4MjY6XHR9XG4gODI3Olx0XG4gODI4Olx0I2RlZmluZSBFMTAwX1dBSVRfU0NCX1RJTUVPVVQgMjAwMDAgLyogd2UgbWlnaHQgaGF2ZSB0byB3YWl0IDEwMG1zISEhICovXG4gODI5Olx0I2RlZmluZSBFMTAwX1dBSVRfU0NCX0ZBU1QgMjAgICAgICAgLyogZGVsYXkgbGlrZSB0aGUgb2xkIGNvZGUgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDk6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODczMwoJCQkJCQkJb3V0cHV0OiAyNDgKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGUgc2l0dWF0aW9uOgoKKipBbmFseXNpcyBvZiB0aGUgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlIGNvZGUgYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBjb3JlIHByb2JsZW0gaXMgZGVmaW5pdGVseSBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBvbiBgYWRkcl9sZW5gLiBUaGlzIGNhdXNlcyBhbiBvdXQtb2YtYm91bmRzIHNoaWZ0IG9wZXJhdGlvbiwgc3BlY2lmaWNhbGx5IGAxICZsdDsmbHQ7IGFkZHJfbGVuYC4gQW5kLCAqdGhhdCogcmVzdWx0cyBpbiBhIHJlYWQgb3Igd3JpdGUgb3BlcmF0aW9uIHRvIGFuIGludmFsaWQgbG9jYXRpb24gd2l0aGluIGBuaWMtJmd0O2VlcHJvbVsyNTZdYC4gQ2xhc3NpYyBtZW1vcnkgY29ycnVwdGlvbi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgS0FTQU4gYW5kIFVCU0FOIGxpa2VseSBjYXRjaGluZyB0aGlzLgoKTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IEtBU0FOIHdpbGwgZmxhZyB0aGUgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzLCBhbmQgVUJTQU4gd2lsbCBzdGVwIGluIHRvIGNhdGNoIHRoZSBzaGlmdC1vdXQtb2YtYm91bmRzIG9wZXJhdGlvbiwgdGhlIHJvb3QgY2F1c2UuCgpUaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQsIGZyb20gd2hhdCBJIGNhbiBzZWUsIHRoZXJlJiMzOTtzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgZXhwb3NlZCB0byB0aGUgdXNlciwgc28gbm8gbmVlZCBmb3IgS01TQU4gZnVzcy4gSXQgbG9va3MgbGlrZSBhIEtBU0FOL1VCU0FOIGlzc3VlLiBOb3csIGxldCYjMzk7cyBjcmFmdCB0aGUgcmVzcG9uc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA5OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlIHdpdGggYGFkZHJfbGVuYCBpbiBgZTEwMF9lZXByb21fcmVhZGAuIFdoZW4gYGFkZHJfbGVuYCB1bmRlcmZsb3dzLCBpdCBiZWNvbWVzIGEgbGFyZ2UgdmFsdWUsIHdoaWNoIHN1YnNlcXVlbnRseSBjYXVzZXMgYSBzaGlmdC1vdXQtb2YtYm91bmRzIChgMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW5gKSB3aGVuIGNhbGN1bGF0aW5nIGBuaWMtXHUwMDNlZWVwcm9tX3djYC4gVGhpcyBsYXJnZSBgZWVwcm9tX3djYCB2YWx1ZSB0aGVuIGxlYWRzIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCBvbiB0aGUgZml4ZWQtc2l6ZSBgbmljLVx1MDAzZWVlcHJvbVsyNTZdYCBhcnJheSBpbiBgZTEwMF9lZXByb21fbG9hZGAgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYC5cblxuVGhlc2UgYXJlIGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIHVuZGVmaW5lZCBiZWhhdmlvciBidWdzIChzaGlmdC1vdXQtb2YtYm91bmRzIGFuZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzKS4gU3RhbmRhcmQgS0FTQU4gKHdoaWNoIGRldGVjdHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYW5kIFVCU0FOICh3aGljaCBkZXRlY3RzIHNoaWZ0LW91dC1vZi1ib3VuZHMpIGFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGlzIGJ1Zy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciB1bmRlcmZsb3cgaXNzdWUgd2l0aCBgYWRkcl9sZW5gIGluIGBlMTAwX2VlcHJvbV9yZWFkYC4gV2hlbiBgYWRkcl9sZW5gIHVuZGVyZmxvd3MsIGl0IGJlY29tZXMgYSBsYXJnZSB2YWx1ZSwgd2hpY2ggc3Vic2VxdWVudGx5IGNhdXNlcyBhIHNoaWZ0LW91dC1vZi1ib3VuZHMgKGAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmApIHdoZW4gY2FsY3VsYXRpbmcgYG5pYy1cdTAwM2VlZXByb21fd2NgLiBUaGlzIGxhcmdlIGBlZXByb21fd2NgIHZhbHVlIHRoZW4gbGVhZHMgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciByZWFkIG9uIHRoZSBmaXhlZC1zaXplIGBuaWMtXHUwMDNlZWVwcm9tWzI1Nl1gIGFycmF5IGluIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgLlxuXG5UaGVzZSBhcmUgY2xhc3NpYyBtZW1vcnkgY29ycnVwdGlvbiBhbmQgdW5kZWZpbmVkIGJlaGF2aW9yIGJ1Z3MgKHNoaWZ0LW91dC1vZi1ib3VuZHMgYW5kIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMpLiBTdGFuZGFyZCBLQVNBTiAod2hpY2ggZGV0ZWN0cyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSBhbmQgVUJTQU4gKHdoaWNoIGRldGVjdHMgc2hpZnQtb3V0LW9mLWJvdW5kcykgYXJlIHBlcmZlY3RseSBjYXBhYmxlIG9mIGNhdGNoaW5nIHRoaXMgYnVnLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIHVzZWQgaW4gY29udHJvbCBmbG93LCBvciBsZWFrZWQgdG8gdXNlcnNwYWNlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTiB0byBkZXRlY3QuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjMwOjU0Ljc4MDMxNjk5N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0ODIxNDExNDgxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMF9wcm9iZVwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBpc3N1ZSB3aXRoIGBhZGRyX2xlbmAgaW4gYGUxMDBfZWVwcm9tX3JlYWRgLiBXaGVuIGBhZGRyX2xlbmAgdW5kZXJmbG93cywgaXQgYmVjb21lcyBhIGxhcmdlIHZhbHVlLCB3aGljaCBzdWJzZXF1ZW50bHkgY2F1c2VzIGEgc2hpZnQtb3V0LW9mLWJvdW5kcyAoYDEgXFx1MDAzY1xcdTAwM2MgYWRkcl9sZW5gKSB3aGVuIGNhbGN1bGF0aW5nIGBuaWMtXFx1MDAzZWVlcHJvbV93Y2AuIFRoaXMgbGFyZ2UgYGVlcHJvbV93Y2AgdmFsdWUgdGhlbiBsZWFkcyB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHJlYWQgb24gdGhlIGZpeGVkLXNpemUgYG5pYy1cXHUwMDNlZWVwcm9tWzI1Nl1gIGFycmF5IGluIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgLlxcblxcblRoZXNlIGFyZSBjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgYnVncyAoc2hpZnQtb3V0LW9mLWJvdW5kcyBhbmQgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcykuIFN0YW5kYXJkIEtBU0FOICh3aGljaCBkZXRlY3RzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIGFuZCBVQlNBTiAod2hpY2ggZGV0ZWN0cyBzaGlmdC1vdXQtb2YtYm91bmRzKSBhcmUgcGVyZmVjdGx5IGNhcGFibGUgb2YgY2F0Y2hpbmcgdGhpcyBidWcuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgdXNlZCBpbiBjb250cm9sIGZsb3csIG9yIGxlYWtlZCB0byB1c2Vyc3BhY2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOIHRvIGRldGVjdC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBFRVBST00gcmVhZC93cml0ZSBvcGVyYXRpb25zIGluIHRoZSBJbnRlbCBQUk8vMTAwIChlMTAwKSBFdGhlcm5ldCBkcml2ZXIuIFRoZXNlIG9wZXJhdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApIGFuZCB2aWEgZXRodG9vbCAoYGUxMDBfc2V0X2VlcHJvbWApLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgUUVNVSdzIGBpODI1NTllcmAgZW11bGF0ZWQgUENJIGRldmljZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzA6NTQuNzgwMzI3MTU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjY2MTU5ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNzc0YWUwNDhkY2UzYjc5ODkwNjExZDE5ODgyNmJjOGFiNzIwMzlmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDEwIDA5OjMwOjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xcbmluZGV4IDI5OTYwNzYyZTY0YTguLjI2YTdjMGFhYTZlMjIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXFxuQEAgLTc0NCw3ICs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXFxuIFxcdFxcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXFxuIFxcdFxcdGN0cmwgPSBpb3JlYWQ4KFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xcbiBcXHRcXHRpZiAoIShjdHJsIFxcdTAwMjYgZWVkbykgXFx1MDAyNlxcdTAwMjYgaSBcXHUwMDNlIDE2KSB7XFxuLVxcdFxcdFxcdCphZGRyX2xlbiAtPSAoaSAtIDE2KTtcXG4rXFx0XFx0XFx0dTE2IGxlbiA9IGkgLSAxNjtcXG4rXFxuK1xcdFxcdFxcdGlmIChsZW4gXFx1MDAzZSAqYWRkcl9sZW4pXFxuK1xcdFxcdFxcdFxcdCphZGRyX2xlbiA9IDA7XFxuK1xcdFxcdFxcdGVsc2VcXG4rXFx0XFx0XFx0XFx0KmFkZHJfbGVuIC09IGxlbjtcXG4gXFx0XFx0XFx0aSA9IDE3O1xcbiBcXHRcXHR9XFxuIFxcbkBAIC03NjUsNiArNzcwLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuIFxcbiBcXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbiBcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG4rXFx0aWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcXHUwMDNlIDgpIHtcXG4rXFx0XFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cXHUwMDNlbmV0ZGV2LFxcbitcXHRcXHRcXHQgIFxcXCJpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcXFxuXFxcIiwgYWRkcl9sZW4pO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbiBcXHRuaWMtXFx1MDAzZWVlcHJvbV93YyA9IDEgXFx1MDAzY1xcdTAwM2MgYWRkcl9sZW47XFxuIFxcbiBcXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2M7IGFkZHIrKykge1xcbkBAIC03OTEsNiArODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxcbiBcXG4gXFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cXG4gXFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuK1xcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXFx1MDAzZSA4KSB7XFxuK1xcdFxcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXFx1MDAzZW5ldGRldixcXG4rXFx0XFx0XFx0ICBcXFwiaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXFxcblxcXCIsIGFkZHJfbGVuKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4gXFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbiBcXG4gXFx0aWYgKHN0YXJ0ICsgY291bnQgXFx1MDAzZT0gbmljLVxcdTAwM2VlZXByb21fd2MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjMwOjU1LjI0NzcxNzI3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM0ODg0MDIzNDk2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMF9wcm9iZVwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gRUVQUk9NIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyLiBUaGVzZSBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSBhbmQgdmlhIGV0aHRvb2wgKGBlMTAwX3NldF9lZXByb21gKS4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIFFFTVUncyBgaTgyNTU5ZXJgIGVtdWxhdGVkIFBDSSBkZXZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE3NzRhZTA0OGRjZTNiNzk4OTA2MTFkMTk4ODI2YmM4YWI3MjAzOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAwOTozMDo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuaW5kZXggMjk5NjA3NjJlNjRhOC4uMjZhN2MwYWFhNmUyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5AQCAtNzQ0LDcgKzc0NCwxMiBAQCBzdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcbiBcdFx0ICogY29tcGxldGUgYWRkcmVzcy4gIFVzZSB0aGlzIHRvIGFkanVzdCBhZGRyX2xlbi4gKi9cbiBcdFx0Y3RybCA9IGlvcmVhZDgoXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG4gXHRcdGlmICghKGN0cmwgXHUwMDI2IGVlZG8pIFx1MDAyNlx1MDAyNiBpIFx1MDAzZSAxNikge1xuLVx0XHRcdCphZGRyX2xlbiAtPSAoaSAtIDE2KTtcbitcdFx0XHR1MTYgbGVuID0gaSAtIDE2O1xuK1xuK1x0XHRcdGlmIChsZW4gXHUwMDNlICphZGRyX2xlbilcbitcdFx0XHRcdCphZGRyX2xlbiA9IDA7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0KmFkZHJfbGVuIC09IGxlbjtcbiBcdFx0XHRpID0gMTc7XG4gXHRcdH1cbiBcbkBAIC03NjUsNiArNzcwLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4gXG4gXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuIFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbitcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlIDgpIHtcbitcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsXG4rXHRcdFx0ICBcImludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XFxuXCIsIGFkZHJfbGVuKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4gXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gXG4gXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyKyspIHtcbkBAIC03OTEsNiArODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuIFxuIFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiBcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4rXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4rXHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuK1x0XHRcdCAgXCJpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcblwiLCBhZGRyX2xlbik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuIFxuIFx0aWYgKHN0YXJ0ICsgY291bnQgXHUwMDNlPSBuaWMtXHUwMDNlZWVwcm9tX3djKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzA6NTUuMjQ3NzE5OTM5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODgyNjk0ODI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBJbnRlbCBQUk8vMTAwIEV0aGVybmV0IERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2gg4oCTIGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jYCBmaWxlLiBUaGUgZTEwMCBkcml2ZXIsIGZvciB0aG9zZSBvZiB1cyB3aG8gaGF2ZW4ndCBkZWFsdCB3aXRoIGl0IHJlY2VudGx5LCBpcyB0aGUgZHJpdmVyIGZvciB0aG9zZSBvbGRlciBJbnRlbCBQUk8vMTAwIEV0aGVybmV0IGFkYXB0ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBmdXp6IHRoaXMgd2l0aCBRRU1VPyBBbmQgdGhlbiBJIHJlbWVtYmVyZWQsIFFFTVUgZG9lcyBlbXVsYXRlIHNvbWUgZTEwMC1jb21wYXRpYmxlIGRldmljZXM6IHRoZSBgaTgyNTU3YmAsIGBpODI1NTllcmAsIGFuZCBgaTgyNTU5Y2AuIFNvLCBsZXQncyBsb29rIGRlZXBlciBhdCB0aGUgcGF0Y2ggYW5kIHNlZS5cblxuVGhlIGZ1bmN0aW9ucyB3ZSdyZSBpbnRlcmVzdGVkIGluIOKAkyBgZTEwMF9lZXByb21fcmVhZGAsIGBlMTAwX2VlcHJvbV9sb2FkYCwgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCDigJMgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBPa2F5LCBgZTEwMF9lZXByb21fbG9hZGAgZ2V0cyBjYWxsZWQgZHVyaW5nIHByb2JlLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHRlc3RpbmcgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBnZXRzIGNhbGxlZCBmcm9tIGBldGh0b29sYC4gTGV0J3MgY2hlY2sgaWYgUUVNVSByZWFsbHkgZG9lcyBlbXVsYXRlIHRoZSBlMTAwLiBBaCwgeWVzLCB0aGUgYGk4MjU1OWVyYCBpbiBRRU1VIGRvZXMgdXNlIHRoZSBlMTAwIGRyaXZlci5cblxuV2FpdCBhIHNlY29uZOKApiB0aGUgYGk4MjU1OWVyYCBpcyBhIFBDSSBkZXZpY2UsIGlzbid0IGl0PyBPa2F5LCBzbyBjYW4gc3l6a2FsbGVyIGZ1enogUENJIGRldmljZXM/IFllcywgaXQgY2FuLCB2aWEgdGhlIHZoY2kgaW50ZXJmYWNlIG9yIGJ5IGRpcmVjdGx5IGludGVyYWN0aW5nIHdpdGggdGhlIG5ldGRldiBvciB2aWEgZXRodG9vbC4gQmluZ28uIFN5emthbGxlciBjYW4gZnV6eiBldGh0b29sIGRpcmVjdGx5LCByaWdodD8gU28gd2UncmUgbG9va2luZyBhdCBgZTEwMF9lZXByb21fc2F2ZWAgYW5kIGBlMTAwX2VlcHJvbV9sb2FkYCBhZ2Fpbi4gQnV0IHdlIG5lZWQgdG8gY2hlY2sgaG93IHJlYWNoYWJsZSB0aGVzZSBmdW5jdGlvbnMgYXJlLlxuXG5gZTEwMF9lZXByb21fbG9hZGAgaXMgY2FsbGVkIGZyb20gYGUxMDBfcHJvYmVgLCB3aGljaCBpcyBnb29kLCBhcyBtZW50aW9uZWQgYmVmb3JlLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgIGlzIGNhbGxlZCBmcm9tIGBlMTAwX3NldF9lZXByb21gLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgZTEwMF9zZXRfZWVwcm9tYCBpcyB1c2VkLiBUaW1lIHRvIHdoaXAgb3V0IHRoZSBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozMTowNC4wNzQ2NzEwOTlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTEwODQ5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9zZXRfZWVwcm9tXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjU0Nz1zdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NTg6c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1OS1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI3NTE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlMTAwX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NjItXFx0LmdldF9lZXByb21cXHRcXHQ9IGUxMDBfZ2V0X2VlcHJvbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc2MzpcXHQuc2V0X2VlcHJvbVxcdFxcdD0gZTEwMF9zZXRfZWVwcm9tLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzY0LVxcdC5nZXRfcmluZ3BhcmFtXFx0XFx0PSBlMTAwX2dldF9yaW5ncGFyYW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjMxOjA0LjE2NTc2MzA0OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTEyMDIzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbnRlbCBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGBlMTAwYCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoYXQsIGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgdGV4dCB0ZWxscyBtZSB0aGUgZHJpdmVyIGlzIHJlZmVycmVkIHRvIGFzIGBlMTAwYCwgc28gbGV0J3Mgc3RhcnQgd2l0aCB0aGF0LiBCdXQgSSBhbHNvIHNlZSBgQ09ORklHX0UxMDBgIG1lbnRpb25lZC4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCBmb3IgY2hlY2tpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29udHJvbGxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS5cblxuR2l2ZW4gbXkgZXhwZXJpZW5jZSwgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGV4YW1pbmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgLiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgSW50ZWwgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gaXQncyBhIHNhZmUgYmV0IHRoYXQgYENPTkZJR19FMTAwYCwgaWYgaXQgZXhpc3RzLCBpcyBkZWZpbmVkIGFuZCBjb250cm9sbGVkIHRoZXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGRlcGVuZGVuY2llcyBvbiBvdGhlciBoYXJkd2FyZSBmZWF0dXJlcywgcG90ZW50aWFsIGNvbmZsaWN0cywgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmdzLiBBIGRlZXAgZGl2ZSBpbnRvIHRoaXMgS2NvbmZpZyB3aWxsIHJldmVhbCB0aGUgd2hvbGUgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozMTowNy45NzY5Njc4MTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3MzkyMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIwPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI6Y29uZmlnIEUxMDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSBQUk8vMTAwKyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjQ1OmNvbmZpZyBFMTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo2MTpjb25maWcgRTEwMDBFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgUFJPLzEwMDAgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjgxOmNvbmZpZyBFMTAwMEVfSFdUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODItXFx0Ym9vbCBcXFwiU3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gUENIIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjMxOjA4LjAyMzcxMzU3MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTcwOTM5MDAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGNvbmZpZyBFMTAwYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBjb25maWcgRTEwMGAuIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gSeKAmW0gdGhpbmtpbmcsIGdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhpcyBzeXN0ZW0sIHdoYXQgYXJlIHRoZSBtb3N0IGxpa2VseSBjb21wb25lbnRzIG9yIG1vZHVsZXMgdGhhdCByZWx5IG9uLCBvciBhcmUgaW5mbHVlbmNlZCBieSwgdGhlIHNldHRpbmdzIHdpdGhpbiBgY29uZmlnIEUxMDBgPyBJJ20gaW1tZWRpYXRlbHkgcnVubmluZyB0aHJvdWdoIGEgbWVudGFsIGNoZWNrbGlzdDogaXMgaXQgcHJpbWFyaWx5IGhhcmR3YXJlLXJlbGF0ZWQsIG9yIGRvZXMgaXQgYWxzbyBpbXBhY3QgYW55IG9mIHRoZSBzb2Z0d2FyZSBzdGFja3M/IEFyZSB3ZSB0YWxraW5nIGRyaXZlciBiZWhhdmlvciwgbmV0d29yayBzdGFjayBwYXJhbWV0ZXJzLCBpbnRlcnJ1cHQgc2V0dGluZ3MsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgaGlnaC1sZXZlbCBhcmVhcyB0byBmb2N1cyBvbiBmaXJzdCwgYmVmb3JlIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gdGhlIGxvd2VyLWxldmVsIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIFRoYXQgd2F5IEkgY2FuIGJlIGVmZmljaWVudCBpbiBnZXR0aW5nIHRvIHRoZSByb290IG9mIHdoYXQgZGVwZW5kcyBvbiB0aGlzIGNvbmZpZy4gTGV0IG1lIHF1aWNrbHkgc2NvcGUgdGhlIHN5c3RlbSB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzU6NTkuNzMzMTA3NDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMjpcXHRjb25maWcgRTEwMFxcbiAgMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDArIHN1cHBvcnRcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMjU6XFx0XFx0c2VsZWN0IE1JSVxcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBQUk8vMTAwIGZhbWlseSBvZiBhZGFwdGVycy5cXG4gIDI4OlxcdFxcdCAgVG8gdmVyaWZ5IHRoYXQgeW91ciBhZGFwdGVyIGlzIHN1cHBvcnRlZCwgZmluZCB0aGUgYm9hcmQgSUQgbnVtYmVyXFxuICAyOTpcXHRcXHQgIG9uIHRoZSBhZGFwdGVyLiBMb29rIGZvciBhIGxhYmVsIHRoYXQgaGFzIGEgYmFyY29kZSBhbmQgYSBudW1iZXJcXG4gIDMwOlxcdFxcdCAgaW4gdGhlIGZvcm1hdCAxMjM0NTYtMDAxIChzaXggZGlnaXRzIGh5cGhlbiB0aHJlZSBkaWdpdHMpLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFVzZSB0aGUgYWJvdmUgaW5mb3JtYXRpb24gYW5kIHRoZSBBZGFwdGVyIFxcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXRcXG4gIDMzOlxcdFxcdCAgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICB0byBpZGVudGlmeSB0aGUgYWRhcHRlci5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDQwOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAucnN0XFx1MDAzZS5cXG4gIDQxOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNTo1OS43MzMyMjI3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTQzMzU4NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGUxMDAgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZTEwMGAgZHJpdmVyLCBhbmQgaXQncyBhIHByZXR0eSBzdGFuZGFyZCBQQ0kgZXRoZXJuZXQgZHJpdmVyLiBJIHNlZSBhIHBvdGVudGlhbCBhdmVudWUgZm9yIGZ1enppbmcgaXQg4oCTIHNwZWNpZmljYWxseSB0aHJvdWdoIGBldGh0b29sYCwgc2luY2UgdGhlIGBlMTAwX3NldF9lZXByb21gIGZ1bmN0aW9uIGlzIGFjY2Vzc2libGUgdGhhdCB3YXkuIEhtbSwgd2FpdCBhIHNlY29uZC4uLiBpc24ndCBgZTEwMF9lZXByb21fbG9hZGAgYWxzbyBjYWxsZWQgZnJvbSBgZTEwMF9wcm9iZWA/IFRoYXQncyBpbnRlcmVzdGluZy5cblxuVGhlIGtleSB0aGVuIGJlY29tZXMgZ2V0dGluZyB0aGUgZHJpdmVyIGxvYWRlZC4gSWYgSSBjYW4gZW11bGF0ZSB0aGUgZGV2aWNlLCBvciBpZGVhbGx5IGxldmVyYWdlIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciB0byBpbmplY3QgUENJIGRldmljZXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciBgZTEwMF9wcm9iZWAuIEdvb2QgbmV3czogc3l6a2FsbGVyIGRvZXMgaGF2ZSBhIFBDSSBmdXp6ZXIsIHNwZWNpZmljYWxseSBgdmZpby9wY2lgLCB3aGljaCBjb3VsZCBiZSBwZXJmZWN0IGZvciB0aGlzLlxuXG5BbmQsIHRoaW5raW5nIGFib3V0IGVtdWxhdGlvbiwgaXNuJ3QgUUVNVSBrbm93biB0byBzdXBwb3J0IGBpODI1NTllcmA/IEFuZCBkb2Vzbid0IHRoZSBgZTEwMGAgZHJpdmVyIGFsc28gaGFuZGxlIHRoYXQgcGFydGljdWxhciBkZXZpY2U/IEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgdG8gY29uZmlybSB0aGUgYGUxMDBgIGRyaXZlcidzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgYGk4MjU1OWVyYCBkZXZpY2Ug4oCTIHRoYXQgY291bGQgYmUgYSBsb3ctZWZmb3J0IHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk5LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6MDkuODc2NTgzODEzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDEzNDUxNDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImk4MjU1OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjEwLjQ3NzkzNzc3MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODE2NjY4ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGUxMDAuYyBmb3IgUENJIElEIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZTEwMCBkcml2ZXIgaGFuZGxlcyBQQ0kgZGV2aWNlIGlkZW50aWZpY2F0aW9uLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpZyBpbnRvIGBlMTAwLmNgLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSBob3cgaXQncyBkb25lLiBJJ20gbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIGNvZGUgdGhhdCBtYXBzIHRoZSBQQ0kgVmVuZG9yIElEIGFuZCBEZXZpY2UgSUQgdG8gdGhlIGRyaXZlcidzIHN1cHBvcnRlZCBoYXJkd2FyZS4gTGV0J3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSB0aGF0IG1hdGNoaW5nIHByb2Nlc3MsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcXVpcmtzIG9yIHNwZWNpZmljIGhhbmRsaW5nIGZvciBkaWZmZXJlbnQgcmV2aXNpb25zIG9yIHZlbmRvcnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBncmFudWxhcml0eSBvZiB0aGVpciBkZXZpY2UgaWRlbnRpZmljYXRpb24gYW5kIGhvdyByb2J1c3QgaXQgaXMuIEhvcGVmdWxseSwgaXQncyBub3QgYSBzaW1wbGUgaGFyZGNvZGVkIHRhYmxlIGFuZCB0aGVyZSdzIHNvbWUgZWxlZ2FudCB1c2Ugb2Ygd2lsZGNhcmRzIG9yIG1vcmUgc29waGlzdGljYXRlZCBtYXRjaGluZyBsb2dpYywgbWF5YmUgZXZlbiBzb21lIHJ1bnRpbWUgcHJvYmluZy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NzcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoxNC4yOTQ2MTA1NzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2NjAxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kZXZpY2VfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xNzc9TU9EVUxFX1BBUk1fREVTQyh1c2VfaW8sIFxcXCJGb3JjZSB1c2Ugb2YgaS9vIGFjY2VzcyBtb2RlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxODU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGUxMDBfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg2LVxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMjksIDApLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI4MzA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlMTAwX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjg0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjg0NTpzdGF0aWMgaW50IGUxMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4NDYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoxNC4zOTEyMTkyNTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzMDQzNzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBteSBkb21haW4gb2YgZXhwZXJ0aXNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBEYXRhKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgb2YgdGhpcyBjdXJyZW50IHByb2JsZW0sIHNvIGxldCdzIHN0YXJ0IHdpdGggYSBsb29rIGF0IGBlMTAwX2lkX3RhYmxlYC4gSSdtIGFscmVhZHkgbWVudGFsbHkgZm9ybWluZyBoeXBvdGhlc2VzIGFib3V0IHdoYXQgZGF0YSBpdCBsaWtlbHkgY29udGFpbnMsIHRoZSBmb3JtYXQgaXQncyBsaWtlbHkgc3RydWN0dXJlZCBpbiwgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBvdGhlciBlbGVtZW50cyBvZiB0aGlzIHN5c3RlbS4gSSdtIGhvcGluZyBpdCdsbCBwcm92aWRlIGEga2V5LCBhIG1hcCwgYSBzdGFydGluZyBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBCYXNlZCBvbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIEkgaGF2ZSBzb21lIGV4cGVjdGF0aW9ucywgYnV0IGNvbmZpcm1hdGlvbiBpcyBrZXkuIExldCdzIHNlZSB3aGF0IHNlY3JldHMgaXQgaG9sZHMuIEl0J3MgdGltZSB0byByZWFkIHRoaXMgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMjUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoxOC4wMjE2NjAzNTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODU6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGUxMDBfaWRfdGFibGVbXSA9IHtcXG4gMTg2OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMjksIDApLFxcbiAxODc6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzMCwgMCksXFxuIDE4ODpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDMxLCAzKSxcXG4gMTg5OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzIsIDMpLFxcbiAxOTA6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzMywgMyksXFxuIDE5MTpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDM0LCAzKSxcXG4gMTkyOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwMzgsIDMpLFxcbiAxOTM6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzOSwgNCksXFxuIDE5NDpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDNBLCA0KSxcXG4gMTk1OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwM0IsIDQpLFxcbiAxOTY6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAzQywgNCksXFxuIDE5NzpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDNELCA0KSxcXG4gMTk4OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwM0UsIDQpLFxcbiAxOTk6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1MCwgNSksXFxuIDIwMDpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDUxLCA1KSxcXG4gMjAxOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTIsIDUpLFxcbiAyMDI6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1MywgNSksXFxuIDIwMzpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDU0LCA1KSxcXG4gMjA0OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTUsIDUpLFxcbiAyMDU6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA1NiwgNSksXFxuIDIwNjpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDU3LCA1KSxcXG4gMjA3OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNTksIDApLFxcbiAyMDg6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2NCwgNiksXFxuIDIwOTpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDY1LCA2KSxcXG4gMjEwOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNjYsIDYpLFxcbiAyMTE6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2NywgNiksXFxuIDIxMjpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDY4LCA2KSxcXG4gMjEzOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwNjksIDYpLFxcbiAyMTQ6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA2QSwgNiksXFxuIDIxNTpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDZCLCA2KSxcXG4gMjE2OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwOTEsIDcpLFxcbiAyMTc6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA5MiwgNyksXFxuIDIxODpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMDkzLCA3KSxcXG4gMjE5OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEwOTQsIDcpLFxcbiAyMjA6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTA5NSwgNyksXFxuIDIyMTpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgxMGZlLCA3KSxcXG4gMjIyOlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEyMDksIDApLFxcbiAyMjM6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTIyOSwgMCksXFxuIDIyNDpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgyNDQ5LCAyKSxcXG4gMjI1OlxcdFxcdElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDI0NTksIDIpLFxcbiAyMjY6XFx0XFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MjQ1RCwgMiksXFxuIDIyNzpcXHRcXHRJTlRFTF84MjU1WF9FVEhFUk5FVF9ERVZJQ0UoMHgyN0RDLCA3KSxcXG4gMjI4OlxcdFxcdHsgMCwgfVxcbiAyMjk6XFx0fTtcXG4gMjMwOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBlMTAwX2lkX3RhYmxlKTtcXG4gMjMxOlxcdFxcbiAyMzI6XFx0ZW51bSBtYWMge1xcbiAyMzM6XFx0XFx0bWFjXzgyNTU3X0QxMDBfQSAgPSAwLFxcbiAyMzQ6XFx0XFx0bWFjXzgyNTU3X0QxMDBfQiAgPSAxLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoxOC4wMjIxMDI0NjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA5NjAwNTA4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEludGVsIDgyNTU5IEV0aGVybmV0IENvbnRyb2xsZXIgRW11bGF0aW9uKipcblxuT2theSwgc28gUUVNVSdzIGBpODI1NTllcmAgZW11bGF0ZXMgYSBkZXZpY2Ugd2l0aCB0aGUgUENJIElEIDgwODY6MTIwOS4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIDB4MTIwOSBpcyBhY3R1YWxseSBwcmVzZW50IGluIHRoZSBkZXZpY2UgbGlzdC4gWWVwLCB0aGVyZSBpdCBpczogYElOVEVMXzgyNTVYX0VUSEVSTkVUX0RFVklDRSgweDEyMDksIDApYC4gVGhhdCBjb25maXJtcyBRRU1VICpkb2VzKiBlbXVsYXRlIGl0LCB3aGljaCBtZWFucyBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZnV6eiBpdC4gRXhjZWxsZW50LlxuXG5Ob3csIHRoZSBwYXRjaCB0b3VjaGVzIGBlMTAwX2VlcHJvbV9yZWFkYCwgYGUxMDBfZWVwcm9tX2xvYWRgLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgLiBBIHF1aWNrIGdsYW5jZSBzaG93cyBgZTEwMF9lZXByb21fcmVhZGAgaXMgY2FsbGVkIGJ5IGJvdGggYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuIGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBpbnZva2VkIGZyb20gYGUxMDBfcHJvYmVgLCB3aGljaCBpcyBzdGFuZGFyZCBpbml0aWFsaXphdGlvbi4gQW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBpcyB1c2VkIGJ5IGBlMTAwX3NldF9lZXByb21gLiBBaGEhIGBlMTAwX3NldF9lZXByb21gIGlzIGFuIGV0aHRvb2wgb3BlcmF0aW9uLiBUaGlzIGlzIGdvb2QgbmV3czsgaXQgbWVhbnMgdGhlc2UgZnVuY3Rpb25zICphcmUqIHJlYWNoYWJsZSB0aHJvdWdoIHN0YW5kYXJkIG5ldHdvcmsgbWFuYWdlbWVudCBpbnRlcmZhY2VzLCBtYWtpbmcgdGhlbSByaXBlIHRhcmdldHMgZm9yIGZ1enppbmcuXG5cbkJ1dCwgSSBzaG91bGQgdGFrZSBhIG1vbWVudCB0byBzZWUgaWYgYGUxMDBfZWVwcm9tX3JlYWRgIGlzIGludm9rZWQgZnJvbSBhbnkgKm90aGVyKiBsb2NhdGlvbnMuIE5lZWQgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBtb3JlIGNyaXRpY2FsIGVudHJ5IHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njk5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6MjQuMTE4MTEyMTUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTE2MzczMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlMTAwX2VlcHJvbV9yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NjgzPXN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzIwLS8qIEdlbmVyYWwgdGVjaG5pcXVlIHN0b2xlbiBmcm9tIHRoZSBlZXBybzEwMCBkcml2ZXIgLSB2ZXJ5IGNsZXZlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MjE6c3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzY3PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzcxLVxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc3MjpcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzczLVxcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXFx1MDAzZSA4KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzgwLVxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YzsgYWRkcisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4MTpcXHRcXHRuaWMtXFx1MDAzZWVlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCBcXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODItXFx0XFx0aWYgKGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Nzk4PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMi1cXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4MDM6XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwNC1cXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFxcdTAwM2UgOCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoyNC4xODkyODg4NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY5MTUyMzMyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGUxMDAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgYWRkaW5nIGJvdW5kcyBjaGVja2luZyB0byB0aGUgYGUxMDBfZWVwcm9tX3JlYWRgLCBgZTEwMF9lZXByb21fbG9hZGAsIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAgZnVuY3Rpb25zLiBUaGF0J3MgZ29vZCwgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBJdCdzIGFib3V0IHByZXZlbnRpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGluZmluaXRlIGxvb3BzLCB3aGljaCBjb3VsZCBsZWFkIHRvIGFsbCBzb3J0cyBvZiBuYXN0eSBwcm9ibGVtcywgYW5kIHRoaXMgZHJpdmVyIGlzIHRoZSBgZTEwMGAgZHJpdmVyLCB3aXRoIGNvbmZpZ3VyYXRpb24gZGVmaW5lZCBhcyBgRTEwMGAuXG5cblRoZSBtYWluIGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIGBlMTAwX3NldF9lZXByb21gIGFuZCBgZTEwMF9wcm9iZWAuIFdhaXQsIGBlMTAwX3Byb2JlYCBpcyBhIHByb2JlIGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCB3aGVuIHRoZSBkZXZpY2UgaXMgZmlyc3QgcHJvYmVkLCByaWdodD8gT2theSwgc28gdGhhdCdzIHdoZXJlIHRoZSBkcml2ZXIgZ2V0cyBpbml0aWFsaXplZC5cblxuTm93LCBgZTEwMF9zZXRfZWVwcm9tYCBpcyBjYWxsZWQgdmlhIGV0aHRvb2wuIEludGVyZXN0aW5nLi4uIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmc6IElzIGBlMTAwX3NldF9lZXByb21gIGRlY2xhcmVkIGFzIHN0YXRpYz8gWXVwLCBpdCBpcy4gTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGhlcmUgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhhdCBtYWtlcyBzZW5zZSwgYnV0IGBlMTAwX3NldF9lZXByb21gIGlzIHVzZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoaW4gYGV0aHRvb2xfb3BzYCwgc28gdGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBwcm9iYWJseSBpcyBub3QgYW4gaXNzdWUgaW4gdGhpcyBjYXNlLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6MjkuODgwODE0NDE2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg4NzI2NTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgZTEwMF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjoyOS45ODk2OTQ0MzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4Mzg5ODA3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNvZGUgSW5zcGVjdGlvbiBcdTAwMjYgUGF0dGVybiBSZWNvZ25pdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgY29kZS4gVGhlIGdvYWwgaXMgbGlrZWx5IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGUxMDBgIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQuIExldCdzIHN0YXJ0IHdpdGggYSBxdWljayBzZWFyY2ggdXNpbmcgYSByZWdleC4gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiBjb21tb24ga2VybmVsIGNvZGluZyBzdHlsZSBhbmQgbmFtaW5nIGNvbnZlbnRpb25zLCB0aGUgZGVjbGFyYXRpb24gbWlnaHQgc3RhcnQgd2l0aCBlaXRoZXIgYHN0YXRpYyBpbnQgZTEwMF9gIG9yIGBzdGF0aWMgdm9pZCBlMTAwX2AuIFRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIGludGVybmFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucywgbGlrZWx5IHdpdGhpbiB0aGUgbW9kdWxlIG9yIGRyaXZlci4gUXVpY2tseSBmaW5kaW5nIHRoYXQgcGF0dGVybiB3aWxsIGdpdmUgbWUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHN0YXJ0IHRoZSBhbmFseXNpcy4gSSdsbCBmaWx0ZXIgZm9yIHRob3NlIGRlY2xhcmF0aW9ucyB0byBuYXJyb3cgZG93biB0aGUgc2VhcmNoIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYyOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjMzLjE3MzU5NDgzNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NDQzODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgaW50IGUxMDBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NjM1PXN0YXRpYyB2b2lkIGUxMDBfaHdfcmVzZXQoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjUwOnN0YXRpYyBpbnQgZTEwMF9zZWxmX3Rlc3Qoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTcyMT1zdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NjYtLyogTG9hZCBlbnRpcmUgRUVQUk9NIGltYWdlIGludG8gZHJpdmVyIGNhY2hlIGFuZCB2YWxpZGF0ZSBjaGVja3N1bSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3Njc6c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03OTctLyogU2F2ZSAocG9ydGlvbiBvZikgZHJpdmVyIEVFUFJPTSBjYWNoZSB0byBkZXZpY2UgYW5kIHVwZGF0ZSBjaGVja3N1bSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3OTg6c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc5OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODI5LSNkZWZpbmUgRTEwMF9XQUlUX1NDQl9GQVNUIDIwICAgICAgIC8qIGRlbGF5IGxpa2UgdGhlIG9sZCBjb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgzMDpzdGF0aWMgaW50IGUxMDBfZXhlY19jbWQoc3RydWN0IG5pYyAqbmljLCB1OCBjbWQsIGRtYV9hZGRyX3QgZG1hX2FkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgzMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4NjE6c3RhdGljIGludCBlMTAwX2V4ZWNfY2Ioc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04NjItXFx0aW50ICgqY2JfcHJlcGFyZSkoc3RydWN0IG5pYyAqLCBzdHJ1Y3QgY2IgKiwgc3RydWN0IHNrX2J1ZmYgKikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTA1Mz1zdGF0aWMgdm9pZCBlMTAwX2dldF9kZWZhdWx0cyhzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA4NjpzdGF0aWMgaW50IGUxMDBfY29uZmlndXJlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTIzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZpcm13YXJlICplMTAwX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzMjQ6c3RhdGljIGludCBlMTAwX3NldHVwX3Vjb2RlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyNS1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTM1ND1zdGF0aWMgaW5saW5lIGludCBlMTAwX2xvYWRfdWNvZGVfd2FpdChzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTM5NDpzdGF0aWMgaW50IGUxMDBfc2V0dXBfaWFhZGRyKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5NS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0MDI6c3RhdGljIGludCBlMTAwX2R1bXAoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNDEwOnN0YXRpYyBpbnQgZTEwMF9waHlfY2hlY2tfd2l0aG91dF9taWkoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDQ5LSNkZWZpbmUgTlNDX0NPTkdfVFhSRUFEWVxcdDB4MDQwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNDUwOnN0YXRpYyBpbnQgZTEwMF9waHlfaW5pdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NDM6c3RhdGljIGludCBlMTAwX2h3X2luaXQoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTc2OnN0YXRpYyBpbnQgZTEwMF9tdWx0aShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE3MDE9c3RhdGljIHZvaWQgZTEwMF93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzUyOnN0YXRpYyBpbnQgZTEwMF94bWl0X3ByZXBhcmUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzUzLVxcdHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTc4Nj1zdGF0aWMgbmV0ZGV2X3R4X3QgZTEwMF94bWl0X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTgyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTgyMjpzdGF0aWMgaW50IGUxMDBfdHhfY2xlYW4oc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xODY1PXN0YXRpYyB2b2lkIGUxMDBfY2xlYW5fY2JzKHN0cnVjdCBuaWMgKm5pYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxODg5OnN0YXRpYyBpbnQgZTEwMF9hbGxvY19jYnMoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xOTE4PXN0YXRpYyBpbmxpbmUgdm9pZCBlMTAwX3N0YXJ0X3JlY2VpdmVyKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IHJ4ICpyeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTMzLSNkZWZpbmUgUkZEX0JVRl9MRU4gKHNpemVvZihzdHJ1Y3QgcmZkKSArIFZMQU5fRVRIX0ZSQU1FX0xFTiArIEVUSF9GQ1NfTEVOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxOTM0OnN0YXRpYyBpbnQgZTEwMF9yeF9hbGxvY19za2Ioc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgcnggKnJ4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxOTY2OnN0YXRpYyBpbnQgZTEwMF9yeF9pbmRpY2F0ZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5NjctXFx0dW5zaWduZWQgaW50ICp3b3JrX2RvbmUsIHVuc2lnbmVkIGludCB3b3JrX3RvX2RvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTIxNDU9c3RhdGljIHZvaWQgZTEwMF9yeF9jbGVhbl9saXN0KHN0cnVjdCBuaWMgKm5pYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMTY4OnN0YXRpYyBpbnQgZTEwMF9yeF9hbGxvY19saXN0KHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE2OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjIwOD1zdGF0aWMgaXJxcmV0dXJuX3QgZTEwMF9pbnRyKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjM2OnN0YXRpYyBpbnQgZTEwMF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjIzNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjI1Nj1zdGF0aWMgdm9pZCBlMTAwX25ldHBvbGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjY3OnN0YXRpYyBpbnQgZTEwMF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdm9pZCAqcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI4MTpzdGF0aWMgaW50IGUxMDBfYXNmKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5MDpzdGF0aWMgaW50IGUxMDBfdXAoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMzQ0PXN0YXRpYyB2b2lkIGUxMDBfdHhfdGltZW91dF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzYwOnN0YXRpYyBpbnQgZTEwMF9sb29wYmFja190ZXN0KHN0cnVjdCBuaWMgKm5pYywgZW51bSBsb29wYmFjayBsb29wYmFja19tb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDIxOnN0YXRpYyBpbnQgZTEwMF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQyMi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MzE6c3RhdGljIGludCBlMTAwX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDMyLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjQ0ND1zdGF0aWMgdm9pZCBlMTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ1My0jZGVmaW5lIEUxMDBfUEhZX1JFR1MgMHgxRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDU0OnN0YXRpYyBpbnQgZTEwMF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjQ4OT1zdGF0aWMgdm9pZCBlMTAwX2dldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0OTY6c3RhdGljIGludCBlMTAwX3NldF93b2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNTIyPXN0YXRpYyB2b2lkIGUxMDBfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiB2YWx1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNTI4OnN0YXRpYyBpbnQgZTEwMF9ud2F5X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1MzQ9c3RhdGljIHUzMiBlMTAwX2dldF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjU0MDpzdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0Ni0jZGVmaW5lIEUxMDBfRUVQUk9NX01BR0lDXFx0MHgxMjM0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NDc6c3RhdGljIGludCBlMTAwX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0OC1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NTg6c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1OS1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1NzI9c3RhdGljIHZvaWQgZTEwMF9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjU4NzpzdGF0aWMgaW50IGUxMDBfc2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTg4LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNjIyPXN0YXRpYyB2b2lkIGUxMDBfZGlhZ190ZXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjY1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjY1NTpzdGF0aWMgaW50IGUxMDBfc2V0X3BoeXNfaWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjY1Ni1cXHRcXHRcXHQgICAgZW51bSBldGh0b29sX3BoeXNfaWRfc3RhdGUgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjY5MD1zdGF0aWMgY29uc3QgY2hhciBlMTAwX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNzA2OnN0YXRpYyBpbnQgZTEwMF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjcwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDBfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc3NjpzdGF0aWMgaW50IGUxMDBfZG9faW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3ODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3ODM6c3RhdGljIGludCBlMTAwX2FsbG9jKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc5MD1zdGF0aWMgdm9pZCBlMTAwX2ZyZWUoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3OTk6c3RhdGljIGludCBlMTAwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjgxMDpzdGF0aWMgaW50IGUxMDBfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgxMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjgxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjgxNjpzdGF0aWMgaW50IGUxMDBfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4MTctXFx0XFx0XFx0ICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yODMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZTEwMF9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI4NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI4NDU6c3RhdGljIGludCBlMTAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yODQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0zMDQ2PXN0YXRpYyBpbnQgX19lMTAwX3Bvd2VyX29mZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCB3YWtlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjMwNTc6c3RhdGljIGludCBlMTAwX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2X2QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTMwNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjMwNjY6c3RhdGljIGludCBlMTAwX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMzA2Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjMzLjI4MTA0MzA2NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY2MjkxMzAwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBlMTAwIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBlMTAwIGRyaXZlciBhbmQgaGVyZSdzIG15IHBsYW4uIFRoZSBjb3JlIGRyaXZlciBpcyBhbGwgaW4gYGUxMDAuY2AsIHdoaWNoIGlzIGdvb2QgZm9yIGNvbnRhaW5lZCBhbmFseXNpcy4gSSdtIGZvY3VzaW5nIG9uIGZpbmRpbmcgdGhlIGJlc3QgZW50cnkgcG9pbnRzIHRvIHRoZSBjb2RlLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGFib3V0IGBlMTAwX3NldF9lZXByb21gIGJ1dCB0aGF0J3Mgc3RhdGljLCB3aGljaCBJJ2QgcmF0aGVyIGF2b2lkLiBIb3dldmVyLCBpdCAqaXMqIGFuIEFQSSBlbnRyeSBwb2ludCBmb3IgZXRodG9vbCBvcGVyYXRpb25zLCBzbyBJJ20gcHV0dGluZyBpdCBvbiB0aGUgbGlzdC4gSSBhbHNvIG5vdGVkIGBlMTAwX3Byb2JlYCDigJMgdGhhdCdzIGEga2V5IFBDSSBwcm9iZSBlbnRyeSBwb2ludCwgYW5kIHRoYXQgc2VlbXMgcHJvbWlzaW5nLCBzbyB0aGF0IG1ha2VzIHRoZSBsaXN0IHRvby4gSSBkaWQgY2hlY2sgdGhlIG90aGVyIGVlcHJvbSBmdW5jdGlvbnMsIGFuZCBJIHNhdyB0aGF0IGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBzdGF0aWMuIFNvLCBJJ2xsIHN0aWNrIHdpdGggYGUxMDBfcHJvYmVgIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCBhcyBteSBtYWluIGZvY3VzLlxuXG5Ob3csIGFzIGZhciBhcyBjb25maWd1cmF0aW9uLCBJJ20gZ29pbmcgdG8gc2V0IGBFMTAwYC4gSSBkb3VibGUtY2hlY2tlZCBpdHMgZGVwZW5kZW5jaWVzIHRvIG1ha2Ugc3VyZSBJIHdhc24ndCBtaXNzaW5nIGFueXRoaW5nLiBHb29kLCBJIHNlZSB0aGF0IGl0IGRlcGVuZHMgb24gYFBDSWAgYW5kIHNlbGVjdHMgYE1JSWAuIFRoaXMgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIEkgZG9uJ3Qgc2VlIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucywgc28gYEUxMDBgIGl0IGlzLlxuXG5UaGVyZWZvcmUsIGZvciBteSBmdXp6aW5nIHNldHVwLCBoZXJlJ3Mgd2hhdCBJJ2xsIGRvOlxuXG4qICAgKipXb3J0aEZ1enppbmcqKjogKlRydWUqIChBYnNvbHV0ZWx5LCB0aGlzIGlzIHdvcnRoIHRoZSBlZmZvcnQpXG4qICAgKipGb2N1c1N5bWJvbHMqKjogYGUxMDBfcHJvYmVgLCBgZTEwMF9zZXRfZWVwcm9tYCAoVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuKVxuKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgRTEwMGAgKFRoZSBtaW5pbWFsIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uLilcbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgZTEwMCBkcml2ZXIncyBFRVBST00gcmVhZC93cml0ZSBvcGVyYXRpb25zLiBGdXp6aW5nIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhvc2Ugb3BlcmF0aW9ucyBkdXJpbmcgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApIGFuZCB0aHJvdWdoIGV0aHRvb2wgY2FsbHMgKGBlMTAwX3NldF9lZXByb21gKS4gSSdsbCBiZSB1c2luZyBRRU1VJ3MgYGk4MjU1OWVyYCBlbXVsYXRlZCBQQ0kgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA0NSwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6NDMuOTQzOTYwNDgyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzOTg4MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMF9wcm9iZVwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gRUVQUk9NIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyLiBUaGVzZSBvcGVyYXRpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSBhbmQgdmlhIGV0aHRvb2wgKGBlMTAwX3NldF9lZXByb21gKS4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHVzaW5nIFFFTVUncyBgaTgyNTU5ZXJgIGVtdWxhdGVkIFBDSSBkZXZpY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRTEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImUxMDBfcHJvYmVcIixcbiAgICBcImUxMDBfc2V0X2VlcHJvbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIEVFUFJPTSByZWFkL3dyaXRlIG9wZXJhdGlvbnMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlci4gVGhlc2Ugb3BlcmF0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCkgYW5kIHZpYSBldGh0b29sIChgZTEwMF9zZXRfZWVwcm9tYCkuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB1c2luZyBRRU1VJ3MgYGk4MjU1OWVyYCBlbXVsYXRlZCBQQ0kgZGV2aWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTozNjo0NC4wODc5NTY5NzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5ODkwNjQ2NjMwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjQ0LjA4ODU3MTk0N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozOTg5MDU4NDc3NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlIHdpdGggYGFkZHJfbGVuYCBpbiBgZTEwMF9lZXByb21fcmVhZGAuIFdoZW4gYGFkZHJfbGVuYCB1bmRlcmZsb3dzLCBpdCBiZWNvbWVzIGEgbGFyZ2UgdmFsdWUsIHdoaWNoIHN1YnNlcXVlbnRseSBjYXVzZXMgYSBzaGlmdC1vdXQtb2YtYm91bmRzIChgMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbmApIHdoZW4gY2FsY3VsYXRpbmcgYG5pYy1cXHUwMDNlZWVwcm9tX3djYC4gVGhpcyBsYXJnZSBgZWVwcm9tX3djYCB2YWx1ZSB0aGVuIGxlYWRzIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCBvbiB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXFxuXFxuVGhlc2UgYXJlIGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIHVuZGVmaW5lZCBiZWhhdmlvciBidWdzIChzaGlmdC1vdXQtb2YtYm91bmRzIGFuZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzKS4gU3RhbmRhcmQgS0FTQU4gKHdoaWNoIGRldGVjdHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYW5kIFVCU0FOICh3aGljaCBkZXRlY3RzIHNoaWZ0LW91dC1vZi1ib3VuZHMpIGFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGlzIGJ1Zy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE3NzRhZTA0OGRjZTNiNzk4OTA2MTFkMTk4ODI2YmM4YWI3MjAzOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAwOTozMDo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuaW5kZXggMjk5NjA3NjJlNjRhOC4uMjZhN2MwYWFhNmUyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5AQCAtNzQ0LDcgKzc0NCwxMiBAQCBzdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcbiBcdFx0ICogY29tcGxldGUgYWRkcmVzcy4gIFVzZSB0aGlzIHRvIGFkanVzdCBhZGRyX2xlbi4gKi9cbiBcdFx0Y3RybCA9IGlvcmVhZDgoXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG4gXHRcdGlmICghKGN0cmwgXHUwMDI2IGVlZG8pIFx1MDAyNlx1MDAyNiBpIFx1MDAzZSAxNikge1xuLVx0XHRcdCphZGRyX2xlbiAtPSAoaSAtIDE2KTtcbitcdFx0XHR1MTYgbGVuID0gaSAtIDE2O1xuK1xuK1x0XHRcdGlmIChsZW4gXHUwMDNlICphZGRyX2xlbilcbitcdFx0XHRcdCphZGRyX2xlbiA9IDA7XG4rXHRcdFx0ZWxzZVxuK1x0XHRcdFx0KmFkZHJfbGVuIC09IGxlbjtcbiBcdFx0XHRpID0gMTc7XG4gXHRcdH1cbiBcbkBAIC03NjUsNiArNzcwLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4gXG4gXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuIFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbitcdGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlIDgpIHtcbitcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsXG4rXHRcdFx0ICBcImludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XFxuXCIsIGFkZHJfbGVuKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4gXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4gXG4gXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyKyspIHtcbkBAIC03OTEsNiArODAxLDExIEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuIFxuIFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiBcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4rXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZSA4KSB7XG4rXHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuK1x0XHRcdCAgXCJpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcblwiLCBhZGRyX2xlbik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuIFxuIFx0aWYgKHN0YXJ0ICsgY291bnQgXHUwMDNlPSBuaWMtXHUwMDNlZWVwcm9tX3djKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6MzY6NDQuMDg4NTcyODI3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMTExMTI1MjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRUVQUk9NIFJlYWQvV3JpdGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgSW50ZWwgRTEwMCBkcml2ZXIsIGFuZCBpdCdzIHRvdWNoaW5nIGBlMTAwX2VlcHJvbV9yZWFkYCwgYGUxMDBfZWVwcm9tX2xvYWRgLCBhbmQgYGUxMDBfZWVwcm9tX3NhdmVgIHdpdGhpbiBgZTEwMC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGl0J3MgaGFuZGxpbmcgYW4gaW50ZWdlciB1bmRlcmZsb3cgaXNzdWUsIHdoaWNoIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIGNvdWxkIGxlYWQgdG8gc29tZSBuYXN0eSBwcm9ibGVtcy5cblxuU3BlY2lmaWNhbGx5LCBpbiBgZTEwMF9lZXByb21fcmVhZGAsIHRoZSBwYXRjaCBhZGRzIGNoZWNrcyB0byBgYWRkcl9sZW5gIHRvIHByZXZlbnQgaXQgZnJvbSBnb2luZyBuZWdhdGl2ZS4gUHJldmlvdXNseSwgdGhlIHN1YnRyYWN0aW9uIGAqYWRkcl9sZW4gLT0gKGkgLSAxNilgIGNvdWxkIGNhdXNlIHVuZGVyZmxvdyBpZiBgaWAgd2FzIGxlc3MgdGhhbiAxNiwgd2hpY2ggSSBjYW4gc2VlIHdvdWxkIGJlIGEgcHJvYmxlbS4gVGhpcyBwYXRjaCBub3cgZW5zdXJlcyB0aGF0IGlmIHRoZSBuZXcgbGVuZ3RoIGBsZW5gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBhZGRyZXNzIGxlbmd0aCwgaXQgc2V0cyB0aGUgYWRkcmVzcyBsZW5ndGggdG8gMC4gT3RoZXJ3aXNlIGl0IGRlY3JlbWVudHMgYXMgaW50ZW5kZWQuXG5cblRoZSBgZTEwMF9lZXByb21fbG9hZGAgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbnMgYXJlIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuICBUaGUgY29kZSBhdHRlbXB0cyB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBhZGRyZXNzIGxlbmd0aCBieSByZWFkaW5nIHdpdGggYW4gOC1iaXQgbGVuZ3RoLiBUaGUgcGF0Y2ggbm93IGFkZHMgYSBjaGVjayBmb3IgYGFkZHJfbGVuYCB0byBtYWtlIHN1cmUgaXQncyB2YWxpZC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBpdCBwcmV2ZW50aW5nIGBuaWMtXHUwMDNlZWVwcm9tX3djYCBmcm9tIGJlaW5nIGNhbGN1bGF0ZWQgd2l0aCBhbiBpbnZhbGlkIGBhZGRyX2xlbmAsIGJlY2F1c2UgYSB2YWx1ZSBvZiB6ZXJvLCBvciBhIHZhbHVlIGxhcmdlciB0aGFuIDggY2F1c2VzIGFuIGVycm9yIHRvIGJlIHJldHVybmVkLiAgVGhhdCBjYWxjdWxhdGlvbiBpcyBrZXkgYmVjYXVzZSBgbmljLVx1MDAzZWVlcHJvbV93Y2AgaXMgdXNlZCBsYXRlciBhcyB0aGUgbG9vcCBsaW1pdCBmb3IgcmVhZGluZyB0aGUgRUVQUk9NLlxuXG5UaGUgY29yZSBvZiB0aGUgZml4IGlzIGFib3V0IHByZXZlbnRpbmcgYGFkZHJfbGVuYCBmcm9tIHVuZGVyZmxvd2luZywgd2hpY2ggd291bGQgdGhlbiBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgc2hpZnQgb3BlcmF0aW9uLCBsaWtlIGAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAuICBVQlNBTiBzaG91bGQgY2F0Y2ggdGhvc2Ugc2hpZnQtb3V0LW9mLWJvdW5kcyBpc3N1ZXMuICBJZiBgYWRkcl9sZW5gIHdlcmUgcmVhbGx5IGxhcmdlIGJlY2F1c2Ugb2YgYW4gdW5kZXJmbG93LCBgMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW5gIG1pZ2h0IGFsc28gcmVzdWx0IGluIGFuIG92ZXJmbG93LCBnaXZpbmcgdXMgYSBsYXJnZSBvciB6ZXJvIHZhbHVlLlxuXG5BaCwgYW5kIEkgc2VlIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgbG9vcCBpbiB0aGVzZSBmdW5jdGlvbnMgdXNlcyBgbmljLVx1MDAzZWVlcHJvbV93Y2AgYXMgdGhlIHVwcGVyIGJvdW5kIGZvciByZWFkaW5nIGludG8gYG5pYy1cdTAwM2VlZXByb21gLiAgTm93IEkgcmVjYWxsIGBuaWMtXHUwMDNlZWVwcm9tYCBpcyBhbiBhcnJheSBvZiBzaXplIDI1Ni4gSWYgYGVlcHJvbV93Y2AgaXMgbGFyZ2VyIHRoYW4gMjU2LCBpdCdsbCBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIHdyaXRlLiAgS0FTQU4gd291bGQgY2VydGFpbmx5IGNhdGNoIHRoYXQuXG5cbkknbSBtYWtpbmcgc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc3VidGxlIGlzc3VlcyBoZXJlLCBpbiB0ZXJtcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gSWYgYGFkZHJfbGVuYCBpcyB6ZXJvLCB3ZSBnZXQgYG5pYy1cdTAwM2VlZXByb21fd2NgIGFzIDEsIHdoaWNoIGlzbid0IGEgcHJvYmxlbS4gSWYgYGFkZHJfbGVuYCBpcyBsYXJnZSwgd2UgaGF2ZSB0aGUgb3V0LW9mLWJvdW5kcyB3cml0ZSBJIG1lbnRpb25lZC4gSSdtIG5vdCBzZWVpbmcgYW55dGhpbmcgaGVyZSB0aGF0IEtNU0FOIHdvdWxkIHVuaXF1ZWx5IGNhdGNoIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgbGVha2VkLiBUaGUgcHJpbWFyeSBjb25jZXJuIGlzIGRlZmluaXRlbHkgdGhlIGludGVnZXIgdW5kZXJmbG93IGFuZCB0aGUgcmVzdWx0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIGdyZXAgZm9yIGBlZXByb21gIGluIHRoZSBgc3RydWN0IG5pY2AgZGVmaW5pdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjU2LjE5OTcwMTM3OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI0MTU2MzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInUxNiBlZXByb21cXFxcW1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjM2OjU2LjI5MjEyNzI0OVoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg0NTQ2NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgZTEwMCBEcml2ZXIqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSdtIHRoaW5raW5nIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBgc3RydWN0IG5pY2Agd2l0aGluIHRoZSBJbnRlbCBlMTAwIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ3JlcHBpbmcgdGhlIGBlMTAwLmNgIGZpbGUsIGxvY2F0ZWQgaW4gdGhlIHVzdWFsIHN1c3BlY3QgZGlyZWN0b3J5OiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvYC4gIEkgZXhwZWN0IHRoYXQgYHN0cnVjdCBuaWNgIGlzIHRoZSBjb3JlIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgZHJpdmVyLiBJdCBsaWtlbHkgaG9sZHMgYWxsIHRoZSBlc3NlbnRpYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQncyBzdGF0ZSwgcmVnaXN0ZXJzLCBhbmQgb3BlcmF0aW9uYWwgcGFyYW1ldGVycy4gSSdsbCBiZSB1c2luZyBgZ3JlcGAgYmVjYXVzZSBpdCdzIHRoZSBmYXN0ZXN0IHdheSB0byBwaW5wb2ludCB0aGUgZXhhY3QgZGVjbGFyYXRpb24uIE9uY2UgSSBoYXZlIHRoZSBkZWNsYXJhdGlvbiwgSSBjYW4gYmVnaW4gdG8gYXNzZXNzIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCBpbnRlcmFjdGlvbiBieSBleGFtaW5pbmcgaG93IHRoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgYW5kIHJlZmVyZW5jZWQgd2l0aGluIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTczLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6Mzc6MDAuMjc2Njc2MjM4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ5NDc1OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IG5pYyBcXFxce1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTUzND1zdHJ1Y3QgcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy01MzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjUzOTpzdHJ1Y3QgbmljIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNTQwLVxcdC8qIEJlZ2luOiBmcmVxdWVudGx5IHVzZWQgdmFsdWVzOiBrZWVwIGFkamFjZW50IGZvciBjYWNoZSBlZmZlY3QgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6Mzc6MDAuMzgxNjI4MDA3WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDAzMTg2NDQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgc3RydWN0IG5pY2AqKlxuXG5Pa2F5LCBzbyB0aGUgcHJvbXB0IGlzIHRvIGxvb2sgYXQgYHN0cnVjdCBuaWNgLiBSaWdodCwgdGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGEgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlciBkYXRhIHN0cnVjdHVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjb25zaWRlciB0aGUgY29udGV4dC4gSXMgdGhpcyBrZXJuZWwtbGV2ZWwgY29kZT8gVXNlci1zcGFjZSBuZXR3b3JraW5nPyBXaGF0IE9TIGFyZSB3ZSB0YWxraW5nIGFib3V0PyBUaGF0J3MgZ29pbmcgdG8gaGVhdmlseSBpbmZsdWVuY2UgdGhlIHNwZWNpZmljIG1lbWJlcnMgYW5kIG92ZXJhbGwgZGVzaWduLlxuXG5JJ20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIGluZm9ybWF0aW9uIHRoaXMgc3RydWN0ICpzaG91bGQqIGNvbnRhaW4sIGZyb20gYSBoaWdoIGxldmVsLiBNQUMgYWRkcmVzcywgSVAgYWRkcmVzcyAocG90ZW50aWFsbHkgbXVsdGlwbGUpLCBNVFUsIGNhcGFiaWxpdGllcyBmbGFncyAoY2hlY2tzdW0gb2ZmbG9hZCwgVFNPLCBldGMuKSwgRE1BIGluZm9ybWF0aW9uLCB0cmFuc21pdC9yZWNlaXZlIHF1ZXVlIHBvaW50ZXJzLCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBJJ20gZXhwZWN0aW5nIHNvbWUga2luZCBvZiBsaW5rZWQgbGlzdHMgb3IgYXJyYXlzIGZvciBtYW5hZ2luZyB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYnVmZmVycy4gVGhlcmUgc2hvdWxkIGJlIHNvbWUga2luZCBvZiBsb2NrIHByb3RlY3Rpb24gYXMgd2VsbCwgbGlrZWx5IGEgbXV0ZXggb3Igc3BpbmxvY2sgZ2l2ZW4gdGhhdCB0aGUgTklDIGRhdGEgaXMgbW9zdCBvZnRlbiBhY2Nlc3NlZCBieSBtdWx0aXBsZSB0aHJlYWRzLlxuXG5JJ20gYWxzbyB3b25kZXJpbmcgYWJvdXQgdGhlIGxldmVsIG9mIGFic3RyYWN0aW9uIGl0IHJlcHJlc2VudHMuIElzIHRoaXMgYSB2ZXJ5IGxvdy1sZXZlbCBzdHJ1Y3R1cmUsIGNsb3NlIHRvIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMsIG9yIGlzIGl0IG1vcmUgb2YgYSBuZXR3b3JrIHN0YWNrIGFic3RyYWN0aW9uPyBUaGF0J3MgZ29pbmcgdG8gZGljdGF0ZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGFuZCB0aGUgc29ydHMgb2YgYml0ZmllbGRzIGFuZCBoYXJkd2FyZS1zcGVjaWZpYyBkYXRhIEkgZXhwZWN0IHRvIHNlZS4gSeKAmW0gdGhpbmtpbmcgYWJvdXQgdGhlIGNvbW1vbiBuZXR3b3JrIG1vZGVsczogSXMgaXQgdXNpbmcgYSBCU0Qgc29ja2V0LWxpa2UgaW50ZXJmYWNlLCBvciBzb21ldGhpbmcgbW9yZSBtb2Rlcm4sIGxpa2UgaW9fdXJpbmc/IElmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBmdW5jdGlvbnMgY2FsbGVkIG9uIHRoYXQgaW50ZXJmYWNlLiBJdCBpcyBhbGwgcmVsYXRlZC5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGxvb2sgZm9yIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gSXMgaXQgZGVzaWduZWQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gb3IgaXMgaXQgYSBtb3JlIGdlbmVyaWMgYWJzdHJhY3Rpb24gdGhhdOKAmXMgYWRhcHRlZCBmb3IgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXM/IEknbSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIHByb2Nlc3NvciB0eXBlIG9yIE5JQyB2ZW5kb3IuIFRoaXMgaXMgYW5vdGhlciBhcmVhIEkgZXhwZWN0IHRvIGNoZWNrLlxuXG5GaW5hbGx5LCBJJ20gZXhwZWN0aW5nIGEgbG90IG9mIGludGVyYWN0aW9uIHdpdGggb3RoZXIgcmVsYXRlZCBzdHJ1Y3R1cmVzLCBsaWtlIGRlc2NyaXB0b3JzIGZvciB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgcmluZ3MsIHBhY2tldCBidWZmZXJzLCBhbmQgcG90ZW50aWFsbHkgc3RydWN0dXJlcyBmb3IgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gU28sIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIGlzIHByb2JhYmx5IGEgc3RhcnRpbmcgcG9pbnQsIGFuZCB0aGF0IG1hbnkgb3RoZXIgc3RydWN0cyB3aWxsIGJlIGludm9sdmVkLCBsaWtlbHkgd2l0aCBwb2ludGVycyBjb25uZWN0aW5nIHRoZW0uIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgaW4gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA5OjQzOjEwLjQxMzQ5NjUwNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzOSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1Mzk6XFx0c3RydWN0IG5pYyB7XFxuIDU0MDpcXHRcXHQvKiBCZWdpbjogZnJlcXVlbnRseSB1c2VkIHZhbHVlczoga2VlcCBhZGphY2VudCBmb3IgY2FjaGUgZWZmZWN0ICovXFxuIDU0MTpcXHRcXHR1MzIgbXNnX2VuYWJsZVxcdFxcdFxcdFxcdF9fX19jYWNoZWxpbmVfYWxpZ25lZDtcXG4gNTQyOlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuIDU0MzpcXHRcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldjtcXG4gNTQ0OlxcdFxcdHUxNiAoKm1kaW9fY3RybCkoc3RydWN0IG5pYyAqbmljLCB1MzIgYWRkciwgdTMyIGRpciwgdTMyIHJlZywgdTE2IGRhdGEpO1xcbiA1NDU6XFx0XFxuIDU0NjpcXHRcXHRzdHJ1Y3QgcnggKnJ4c1xcdFxcdFxcdFxcdF9fX19jYWNoZWxpbmVfYWxpZ25lZDtcXG4gNTQ3OlxcdFxcdHN0cnVjdCByeCAqcnhfdG9fdXNlO1xcbiA1NDg6XFx0XFx0c3RydWN0IHJ4ICpyeF90b19jbGVhbjtcXG4gNTQ5OlxcdFxcdHN0cnVjdCByZmQgYmxhbmtfcmZkO1xcbiA1NTA6XFx0XFx0ZW51bSBydV9zdGF0ZSBydV9ydW5uaW5nO1xcbiA1NTE6XFx0XFxuIDU1MjpcXHRcXHRzcGlubG9ja190IGNiX2xvY2tcXHRcXHRcXHRfX19fY2FjaGVsaW5lX2FsaWduZWQ7XFxuIDU1MzpcXHRcXHRzcGlubG9ja190IGNtZF9sb2NrO1xcbiA1NTQ6XFx0XFx0c3RydWN0IGNzciBfX2lvbWVtICpjc3I7XFxuIDU1NTpcXHRcXHRlbnVtIHNjYl9jbWRfbG8gY3VjX2NtZDtcXG4gNTU2OlxcdFxcdHVuc2lnbmVkIGludCBjYnNfYXZhaWw7XFxuIDU1NzpcXHRcXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4gNTU4OlxcdFxcdHN0cnVjdCBjYiAqY2JzO1xcbiA1NTk6XFx0XFx0c3RydWN0IGNiICpjYl90b191c2U7XFxuIDU2MDpcXHRcXHRzdHJ1Y3QgY2IgKmNiX3RvX3NlbmQ7XFxuIDU2MTpcXHRcXHRzdHJ1Y3QgY2IgKmNiX3RvX2NsZWFuO1xcbiA1NjI6XFx0XFx0X19sZTE2IHR4X2NvbW1hbmQ7XFxuIDU2MzpcXHRcXHQvKiBFbmQ6IGZyZXF1ZW50bHkgdXNlZCB2YWx1ZXM6IGtlZXAgYWRqYWNlbnQgZm9yIGNhY2hlIGVmZmVjdCAqL1xcbiA1NjQ6XFx0XFxuIDU2NTpcXHRcXHRlbnVtIHtcXG4gNTY2OlxcdFxcdFxcdGljaCAgICAgICAgICAgICAgICA9ICgxIFxcdTAwM2NcXHUwMDNjIDApLFxcbiA1Njc6XFx0XFx0XFx0cHJvbWlzY3VvdXMgICAgICAgID0gKDEgXFx1MDAzY1xcdTAwM2MgMSksXFxuIDU2ODpcXHRcXHRcXHRtdWx0aWNhc3RfYWxsICAgICAgPSAoMSBcXHUwMDNjXFx1MDAzYyAyKSxcXG4gNTY5OlxcdFxcdFxcdHdvbF9tYWdpYyAgICAgICAgICA9ICgxIFxcdTAwM2NcXHUwMDNjIDMpLFxcbiA1NzA6XFx0XFx0XFx0aWNoXzEwaF93b3JrYXJvdW5kID0gKDEgXFx1MDAzY1xcdTAwM2MgNCksXFxuIDU3MTpcXHRcXHR9IGZsYWdzXFx0XFx0XFx0XFx0XFx0X19fX2NhY2hlbGluZV9hbGlnbmVkO1xcbiA1NzI6XFx0XFxuIDU3MzpcXHRcXHRlbnVtIG1hYyBtYWM7XFxuIDU3NDpcXHRcXHRlbnVtIHBoeSBwaHk7XFxuIDU3NTpcXHRcXHRzdHJ1Y3QgcGFyYW1zIHBhcmFtcztcXG4gNTc2OlxcdFxcdHN0cnVjdCB0aW1lcl9saXN0IHdhdGNoZG9nO1xcbiA1Nzc6XFx0XFx0c3RydWN0IG1paV9pZl9pbmZvIG1paTtcXG4gNTc4OlxcdFxcdHN0cnVjdCB3b3JrX3N0cnVjdCB0eF90aW1lb3V0X3Rhc2s7XFxuIDU3OTpcXHRcXHRlbnVtIGxvb3BiYWNrIGxvb3BiYWNrO1xcbiA1ODA6XFx0XFxuIDU4MTpcXHRcXHRzdHJ1Y3QgbWVtICptZW07XFxuIDU4MjpcXHRcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbiA1ODM6XFx0XFxuIDU4NDpcXHRcXHRzdHJ1Y3QgZG1hX3Bvb2wgKmNic19wb29sO1xcbiA1ODU6XFx0XFx0ZG1hX2FkZHJfdCBjYnNfZG1hX2FkZHI7XFxuIDU4NjpcXHRcXHR1OCBhZGFwdGl2ZV9pZnM7XFxuIDU4NzpcXHRcXHR1OCB0eF90aHJlc2hvbGQ7XFxuIDU4ODpcXHRcXHR1MzIgdHhfZnJhbWVzO1xcbiA1ODk6XFx0XFx0dTMyIHR4X2NvbGxpc2lvbnM7XFxuIDU5MDpcXHRcXHR1MzIgdHhfZGVmZXJyZWQ7XFxuIDU5MTpcXHRcXHR1MzIgdHhfc2luZ2xlX2NvbGxpc2lvbnM7XFxuIDU5MjpcXHRcXHR1MzIgdHhfbXVsdGlwbGVfY29sbGlzaW9ucztcXG4gNTkzOlxcdFxcdHUzMiB0eF9mY19wYXVzZTtcXG4gNTk0OlxcdFxcdHUzMiB0eF90Y29fZnJhbWVzO1xcbiA1OTU6XFx0XFxuIDU5NjpcXHRcXHR1MzIgcnhfZmNfcGF1c2U7XFxuIDU5NzpcXHRcXHR1MzIgcnhfZmNfdW5zdXBwb3J0ZWQ7XFxuIDU5ODpcXHRcXHR1MzIgcnhfdGNvX2ZyYW1lcztcXG4gNTk5OlxcdFxcdHUzMiByeF9zaG9ydF9mcmFtZV9lcnJvcnM7XFxuIDYwMDpcXHRcXHR1MzIgcnhfb3Zlcl9sZW5ndGhfZXJyb3JzO1xcbiA2MDE6XFx0XFxuIDYwMjpcXHRcXHR1MTYgZWVwcm9tX3djO1xcbiA2MDM6XFx0XFx0X19sZTE2IGVlcHJvbVsyNTZdO1xcbiA2MDQ6XFx0XFx0c3BpbmxvY2tfdCBtZGlvX2xvY2s7XFxuIDYwNTpcXHRcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbiA2MDY6XFx0fTtcXG4gNjA3OlxcdFxcbiA2MDg6XFx0c3RhdGljIGlubGluZSB2b2lkIGUxMDBfd3JpdGVfZmx1c2goc3RydWN0IG5pYyAqbmljKVxcbiA2MDk6XFx0e1xcbiA2MTA6XFx0XFx0LyogRmx1c2ggcHJldmlvdXMgUENJIHdyaXRlcyB0aHJvdWdoIGludGVybWVkaWF0ZSBicmlkZ2VzXFxuIDYxMTpcXHRcXHQgKiBieSBkb2luZyBhIGJlbmlnbiByZWFkICovXFxuIDYxMjpcXHRcXHQodm9pZClpb3JlYWQ4KFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLnN0YXR1cyk7XFxuIDYxMzpcXHR9XFxuIDYxNDpcXHRcXG4gNjE1OlxcdHN0YXRpYyB2b2lkIGUxMDBfZW5hYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXFxuIDYxNjpcXHR7XFxuIDYxNzpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiA2MTg6XFx0XFxuIDYxOTpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2bmljLVxcdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xcbiA2MjA6XFx0XFx0aW93cml0ZTgoaXJxX21hc2tfbm9uZSwgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VzY2IuY21kX2hpKTtcXG4gNjIxOlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTtcXG4gNjIyOlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm5pYy1cXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcXG4gNjIzOlxcdH1cXG4gNjI0OlxcdFxcbiA2MjU6XFx0c3RhdGljIHZvaWQgZTEwMF9kaXNhYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXFxuIDYyNjpcXHR7XFxuIDYyNzpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2bmljLVxcdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xcbiA2MzA6XFx0XFx0aW93cml0ZTgoaXJxX21hc2tfYWxsLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZXNjYi5jbWRfaGkpO1xcbiA2MzE6XFx0XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xcbiA2MzI6XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2bmljLVxcdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xcbiA2MzM6XFx0fVxcbiA2MzQ6XFx0XFxuIDYzNTpcXHRzdGF0aWMgdm9pZCBlMTAwX2h3X3Jlc2V0KHN0cnVjdCBuaWMgKm5pYylcXG4gNjM2OlxcdHtcXG4gNjM3OlxcdFxcdC8qIFB1dCBDVSBhbmQgUlUgaW50byBpZGxlIHdpdGggYSBzZWxlY3RpdmUgcmVzZXQgdG8gZ2V0XFxuIDYzODpcXHRcXHQgKiBkZXZpY2Ugb2ZmIG9mIFBDSSBidXMgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6NDM6MTAuNDEzNzQzMTk0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MTQxNDk5NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIE91dC1vZi1Cb3VuZHMgV3JpdGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbnBvaW50ZWQgdGhlIHJlbGV2YW50IGNvZGU7IGBfX2xlMTYgZWVwcm9tWzI1Nl07YCBpcyBpbmRlZWQgZGVjbGFyZWQgb24gbGluZSA2MDMsIGFzIGV4cGVjdGVkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSwgZWl0aGVyIGRpcmVjdGx5IHRvIGBuaWMtXHUwMDNlZWVwcm9tYCBvciBwb3RlbnRpYWxseSB2aWEgYSBzaGlmdC1vdXQtb2YtYm91bmRzIG9wZXJhdGlvbi4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gbGlrZWx5IHN0ZW1zIGZyb20gYW4gdW5kZXJmbG93IGluIGBhZGRyX2xlbmAuIElmIGBhZGRyX2xlbmAgZ29lcyBuZWdhdGl2ZSwgaXQgZmxpcHMgaW50byBhIGxhcmdlIHBvc2l0aXZlIG51bWJlciBsaWtlIDY1NTM1LiBUaGVuLCB3aGVuIHdlIHBlcmZvcm0gYDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCwgd2UgYXJlIGxvb2tpbmcgYXQgdW5kZWZpbmVkIGJlaGF2aW9yLCBzcGVjaWZpY2FsbHksIGEgc2hpZnQtb3V0LW9mLWJvdW5kcy4gSWYgdGhhdCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBzb21ldGhpbmcgZXhjZWVkaW5nIDI1NiwgaXQncyBndWFyYW50ZWVkIHRvIHRyaWdnZXIgYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSB3aGVuIHdlIHRyeSB0byBhY2Nlc3MgYG5pYy1cdTAwM2VlZXByb21gLiBUaGlzIHNjcmVhbXMgXCJjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uLlwiIFdlIHNob3VsZCBleHBlY3QgS0FTQU4gYW5kIFVCU0FOIHRvIGZsYWcgdGhpcyBpc3N1ZSBpbW1lZGlhdGVseS4gRm9ydHVuYXRlbHksIGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQgb3IgbGVha2FnZSwgc28gdGhhdCdzIGEgc21hbGwgcmVsaWVmLiBJIGp1c3QgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBgZTEwMF9lZXByb21fcmVhZGAgYW5kIGBlMTAwX2VlcHJvbV9sb2FkYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMgaW4gdGhvc2UgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzk1LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDk6NDM6MTYuMDI3ODk0OTY4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzMwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDczMDpcXHRcXHQvKiBDaGlwIHNlbGVjdCAqL1xcbiA3MzE6XFx0XFx0aW93cml0ZTgoZWVjcyB8IGVlc2ssIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xcbiA3MzI6XFx0XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpOyB1ZGVsYXkoNCk7XFxuIDczMzpcXHRcXG4gNzM0OlxcdFxcdC8qIEJpdC1iYW5nIHRvIHJlYWQgd29yZCBmcm9tIGVlcHJvbSAqL1xcbiA3MzU6XFx0XFx0Zm9yIChpID0gMzE7IGkgXFx1MDAzZT0gMDsgaS0tKSB7XFxuIDczNjpcXHRcXHRcXHRjdHJsID0gKGNtZF9hZGRyX2RhdGEgXFx1MDAyNiAoMSBcXHUwMDNjXFx1MDAzYyBpKSkgPyBlZWNzIHwgZWVkaSA6IGVlY3M7XFxuIDczNzpcXHRcXHRcXHRpb3dyaXRlOChjdHJsLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG4gNzM4OlxcdFxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbiA3Mzk6XFx0XFxuIDc0MDpcXHRcXHRcXHRpb3dyaXRlOChjdHJsIHwgZWVzaywgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VlZXByb21fY3RybF9sbyk7XFxuIDc0MTpcXHRcXHRcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcXG4gNzQyOlxcdFxcbiA3NDM6XFx0XFx0XFx0LyogRWVwcm9tIGRyaXZlcyBhIGR1bW15IHplcm8gdG8gRUVETyBhZnRlciByZWNlaXZpbmdcXG4gNzQ0OlxcdFxcdFxcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXFxuIDc0NTpcXHRcXHRcXHRjdHJsID0gaW9yZWFkOChcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG4gNzQ2OlxcdFxcdFxcdGlmICghKGN0cmwgXFx1MDAyNiBlZWRvKSBcXHUwMDI2XFx1MDAyNiBpIFxcdTAwM2UgMTYpIHtcXG4gNzQ3OlxcdFxcdFxcdFxcdHUxNiBsZW4gPSBpIC0gMTY7XFxuIDc0ODpcXHRcXG4gNzQ5OlxcdFxcdFxcdFxcdGlmIChsZW4gXFx1MDAzZSAqYWRkcl9sZW4pXFxuIDc1MDpcXHRcXHRcXHRcXHRcXHQqYWRkcl9sZW4gPSAwO1xcbiA3NTE6XFx0XFx0XFx0XFx0ZWxzZVxcbiA3NTI6XFx0XFx0XFx0XFx0XFx0KmFkZHJfbGVuIC09IGxlbjtcXG4gNzUzOlxcdFxcdFxcdFxcdGkgPSAxNztcXG4gNzU0OlxcdFxcdFxcdH1cXG4gNzU1OlxcdFxcbiA3NTY6XFx0XFx0XFx0ZGF0YSA9IChkYXRhIFxcdTAwM2NcXHUwMDNjIDEpIHwgKGN0cmwgXFx1MDAyNiBlZWRvID8gMSA6IDApO1xcbiA3NTc6XFx0XFx0fVxcbiA3NTg6XFx0XFxuIDc1OTpcXHRcXHQvKiBDaGlwIGRlc2VsZWN0ICovXFxuIDc2MDpcXHRcXHRpb3dyaXRlOCgwLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG4gNzYxOlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRyZXR1cm4gY3B1X3RvX2xlMTYoZGF0YSk7XFxuIDc2NDpcXHR9O1xcbiA3NjU6XFx0XFxuIDc2NjpcXHQvKiBMb2FkIGVudGlyZSBFRVBST00gaW1hZ2UgaW50byBkcml2ZXIgY2FjaGUgYW5kIHZhbGlkYXRlIGNoZWNrc3VtICovXFxuIDc2NzpcXHRzdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxcbiA3Njg6XFx0e1xcbiA3Njk6XFx0XFx0dTE2IGFkZHIsIGFkZHJfbGVuID0gOCwgY2hlY2tzdW0gPSAwO1xcbiA3NzA6XFx0XFxuIDc3MTpcXHRcXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbiA3NzI6XFx0XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuIDc3MzpcXHRcXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFxcdTAwM2UgOCkge1xcbiA3NzQ6XFx0XFx0XFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cXHUwMDNlbmV0ZGV2LFxcbiA3NzU6XFx0XFx0XFx0XFx0ICBcXFwiaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXFxcblxcXCIsIGFkZHJfbGVuKTtcXG4gNzc2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA3Nzc6XFx0XFx0fVxcbiA3Nzg6XFx0XFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbiA3Nzk6XFx0XFxuIDc4MDpcXHRcXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2M7IGFkZHIrKykge1xcbiA3ODE6XFx0XFx0XFx0bmljLVxcdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcXG4gNzgyOlxcdFxcdFxcdGlmIChhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2MgLSAxKVxcbiA3ODM6XFx0XFx0XFx0XFx0Y2hlY2tzdW0gKz0gbGUxNl90b19jcHUobmljLVxcdTAwM2VlZXByb21bYWRkcl0pO1xcbiA3ODQ6XFx0XFx0fVxcbiA3ODU6XFx0XFxuIDc4NjpcXHRcXHQvKiBUaGUgY2hlY2tzdW0sIHN0b3JlZCBpbiB0aGUgbGFzdCB3b3JkLCBpcyBjYWxjdWxhdGVkIHN1Y2ggdGhhdFxcbiA3ODc6XFx0XFx0ICogdGhlIHN1bSBvZiB3b3JkcyBzaG91bGQgYmUgMHhCQUJBICovXFxuIDc4ODpcXHRcXHRpZiAoY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pICE9IG5pYy1cXHUwMDNlZWVwcm9tW25pYy1cXHUwMDNlZWVwcm9tX3djIC0gMV0pIHtcXG4gNzg5OlxcdFxcdFxcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXFx1MDAzZW5ldGRldiwgXFxcIkVFUFJPTSBjb3JydXB0ZWRcXFxcblxcXCIpO1xcbiA3OTA6XFx0XFx0XFx0aWYgKCFlZXByb21fYmFkX2NzdW1fYWxsb3cpXFxuIDc5MTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gNzkyOlxcdFxcdH1cXG4gNzkzOlxcdFxcbiA3OTQ6XFx0XFx0cmV0dXJuIDA7XFxuIDc5NTpcXHR9XFxuIDc5NjpcXHRcXG4gNzk3OlxcdC8qIFNhdmUgKHBvcnRpb24gb2YpIGRyaXZlciBFRVBST00gY2FjaGUgdG8gZGV2aWNlIGFuZCB1cGRhdGUgY2hlY2tzdW0gKi9cXG4gNzk4OlxcdHN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxcbiA3OTk6XFx0e1xcbiA4MDA6XFx0XFx0dTE2IGFkZHIsIGFkZHJfbGVuID0gOCwgY2hlY2tzdW0gPSAwO1xcbiA4MDE6XFx0XFxuIDgwMjpcXHRcXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbiA4MDM6XFx0XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuIDgwNDpcXHRcXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFxcdTAwM2UgOCkge1xcbiA4MDU6XFx0XFx0XFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cXHUwMDNlbmV0ZGV2LFxcbiA4MDY6XFx0XFx0XFx0XFx0ICBcXFwiaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXFxcblxcXCIsIGFkZHJfbGVuKTtcXG4gODA3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA4MDg6XFx0XFx0fVxcbiA4MDk6XFx0XFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbiA4MTA6XFx0XFxuIDgxMTpcXHRcXHRpZiAoc3RhcnQgKyBjb3VudCBcXHUwMDNlPSBuaWMtXFx1MDAzZWVlcHJvbV93YylcXG4gODEyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA4MTM6XFx0XFxuIDgxNDpcXHRcXHRmb3IgKGFkZHIgPSBzdGFydDsgYWRkciBcXHUwMDNjIHN0YXJ0ICsgY291bnQ7IGFkZHIrKylcXG4gODE1OlxcdFxcdFxcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIGFkZHIsIG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdKTtcXG4gODE2OlxcdFxcbiA4MTc6XFx0XFx0LyogVGhlIGNoZWNrc3VtLCBzdG9yZWQgaW4gdGhlIGxhc3Qgd29yZCwgaXMgY2FsY3VsYXRlZCBzdWNoIHRoYXRcXG4gODE4OlxcdFxcdCAqIHRoZSBzdW0gb2Ygd29yZHMgc2hvdWxkIGJlIDB4QkFCQSAqL1xcbiA4MTk6XFx0XFx0Zm9yIChhZGRyID0gMDsgYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djIC0gMTsgYWRkcisrKVxcbiA4MjA6XFx0XFx0XFx0Y2hlY2tzdW0gKz0gbGUxNl90b19jcHUobmljLVxcdTAwM2VlZXByb21bYWRkcl0pO1xcbiA4MjE6XFx0XFx0bmljLVxcdTAwM2VlZXByb21bbmljLVxcdTAwM2VlZXByb21fd2MgLSAxXSA9IGNwdV90b19sZTE2KDB4QkFCQSAtIGNoZWNrc3VtKTtcXG4gODIyOlxcdFxcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIG5pYy1cXHUwMDNlZWVwcm9tX3djIC0gMSxcXG4gODIzOlxcdFxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW25pYy1cXHUwMDNlZWVwcm9tX3djIC0gMV0pO1xcbiA4MjQ6XFx0XFxuIDgyNTpcXHRcXHRyZXR1cm4gMDtcXG4gODI2OlxcdH1cXG4gODI3OlxcdFxcbiA4Mjg6XFx0I2RlZmluZSBFMTAwX1dBSVRfU0NCX1RJTUVPVVQgMjAwMDAgLyogd2UgbWlnaHQgaGF2ZSB0byB3YWl0IDEwMG1zISEhICovXFxuIDgyOTpcXHQjZGVmaW5lIEUxMDBfV0FJVF9TQ0JfRkFTVCAyMCAgICAgICAvKiBkZWxheSBsaWtlIHRoZSBvbGQgY29kZSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTo0MzoxNi4wMjgxMTQ4ODhaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk2NjI4NTU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXNpcyBvZiB0aGUgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoZSBjb2RlIGFuZCBpdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgY29yZSBwcm9ibGVtIGlzIGRlZmluaXRlbHkgYW4gaW50ZWdlciB1bmRlcmZsb3cgb24gYGFkZHJfbGVuYC4gVGhpcyBjYXVzZXMgYW4gb3V0LW9mLWJvdW5kcyBzaGlmdCBvcGVyYXRpb24sIHNwZWNpZmljYWxseSBgMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW5gLiBBbmQsICp0aGF0KiByZXN1bHRzIGluIGEgcmVhZCBvciB3cml0ZSBvcGVyYXRpb24gdG8gYW4gaW52YWxpZCBsb2NhdGlvbiB3aXRoaW4gYG5pYy1cdTAwM2VlZXByb21bMjU2XWAuIENsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24uIFdlJ3JlIGxvb2tpbmcgYXQgS0FTQU4gYW5kIFVCU0FOIGxpa2VseSBjYXRjaGluZyB0aGlzLlxuXG5NeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgS0FTQU4gd2lsbCBmbGFnIHRoZSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MsIGFuZCBVQlNBTiB3aWxsIHN0ZXAgaW4gdG8gY2F0Y2ggdGhlIHNoaWZ0LW91dC1vZi1ib3VuZHMgb3BlcmF0aW9uLCB0aGUgcm9vdCBjYXVzZS5cblxuVGhlIGltcG9ydGFudCB0aGluZyBpcyB0aGF0LCBmcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGVyZSdzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgZXhwb3NlZCB0byB0aGUgdXNlciwgc28gbm8gbmVlZCBmb3IgS01TQU4gZnVzcy4gSXQgbG9va3MgbGlrZSBhIEtBU0FOL1VCU0FOIGlzc3VlLiBOb3csIGxldCdzIGNyYWZ0IHRoZSByZXNwb25zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODczMywiT3V0cHV0VG9rZW5zIjoyNDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwOTo0MzoyMi45OTQ0MDI1MzJaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlIHdpdGggYGFkZHJfbGVuYCBpbiBgZTEwMF9lZXByb21fcmVhZGAuIFdoZW4gYGFkZHJfbGVuYCB1bmRlcmZsb3dzLCBpdCBiZWNvbWVzIGEgbGFyZ2UgdmFsdWUsIHdoaWNoIHN1YnNlcXVlbnRseSBjYXVzZXMgYSBzaGlmdC1vdXQtb2YtYm91bmRzIChgMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbmApIHdoZW4gY2FsY3VsYXRpbmcgYG5pYy1cXHUwMDNlZWVwcm9tX3djYC4gVGhpcyBsYXJnZSBgZWVwcm9tX3djYCB2YWx1ZSB0aGVuIGxlYWRzIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCBvbiB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXFxuXFxuVGhlc2UgYXJlIGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIHVuZGVmaW5lZCBiZWhhdmlvciBidWdzIChzaGlmdC1vdXQtb2YtYm91bmRzIGFuZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzKS4gU3RhbmRhcmQgS0FTQU4gKHdoaWNoIGRldGVjdHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYW5kIFVCU0FOICh3aGljaCBkZXRlY3RzIHNoaWZ0LW91dC1vZi1ib3VuZHMpIGFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGlzIGJ1Zy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgdW5kZXJmbG93IGlzc3VlIHdpdGggYGFkZHJfbGVuYCBpbiBgZTEwMF9lZXByb21fcmVhZGAuIFdoZW4gYGFkZHJfbGVuYCB1bmRlcmZsb3dzLCBpdCBiZWNvbWVzIGEgbGFyZ2UgdmFsdWUsIHdoaWNoIHN1YnNlcXVlbnRseSBjYXVzZXMgYSBzaGlmdC1vdXQtb2YtYm91bmRzIChgMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbmApIHdoZW4gY2FsY3VsYXRpbmcgYG5pYy1cXHUwMDNlZWVwcm9tX3djYC4gVGhpcyBsYXJnZSBgZWVwcm9tX3djYCB2YWx1ZSB0aGVuIGxlYWRzIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgcmVhZCBvbiB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXkgaW4gYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAuXFxuXFxuVGhlc2UgYXJlIGNsYXNzaWMgbWVtb3J5IGNvcnJ1cHRpb24gYW5kIHVuZGVmaW5lZCBiZWhhdmlvciBidWdzIChzaGlmdC1vdXQtb2YtYm91bmRzIGFuZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzc2VzKS4gU3RhbmRhcmQgS0FTQU4gKHdoaWNoIGRldGVjdHMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcykgYW5kIFVCU0FOICh3aGljaCBkZXRlY3RzIHNoaWZ0LW91dC1vZi1ib3VuZHMpIGFyZSBwZXJmZWN0bHkgY2FwYWJsZSBvZiBjYXRjaGluZyB0aGlzIGJ1Zy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4gdG8gZGV0ZWN0LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowk2l7n[1] Phase: Succeeded StartedAt: 2026-08-10 09:43:46 +0000 UTC FinishedAt: 2026-08-10 09:43:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-10 09:43:46 +0000 UTC FinishedAt: 2026-08-10 09:43:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2] Phase: Succeeded StartedAt: 2026-08-10 09:43:46 +0000 UTC FinishedAt: 2026-08-10 11:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-10 09:43:46 +0000 UTC FinishedAt: 2026-08-10 11:24:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-10 09:43:46 +0000 UTC FinishedAt: 2026-08-10 09:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-10 09:43:46 +0000 UTC FinishedAt: 2026-08-10 09:43:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowk2l7n/series-workflowk2l7n-convert-artifact-2594726987/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-10 09:43:56 +0000 UTC FinishedAt: 2026-08-10 10:00:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-10 09:43:56 +0000 UTC FinishedAt: 2026-08-10 10:00:02 +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:*d20a15a9-e1e6-4b57-874b-0c4be6542dcf,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-workflowk2l7n/series-workflowk2l7n-convert-artifact-2594726987/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": "867be6d8-5d90-462f-988b-7f80392f8566", "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-workflowk2l7n/series-workflowk2l7n-build-action-2070666057/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-10 09:43:56 +0000 UTC FinishedAt: 2026-08-10 09:59:52 +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:*d20a15a9-e1e6-4b57-874b-0c4be6542dcf,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-workflowk2l7n/series-workflowk2l7n-convert-artifact-2594726987/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": "867be6d8-5d90-462f-988b-7f80392f8566", "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-workflowk2l7n/series-workflowk2l7n-build-action-2070666057/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-10 10:00:02 +0000 UTC FinishedAt: 2026-08-10 10:00:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-10 10:00:02 +0000 UTC FinishedAt: 2026-08-10 10:00:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-10 10:00:02 +0000 UTC FinishedAt: 2026-08-10 10:00:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-10 10:00:02 +0000 UTC FinishedAt: 2026-08-10 10:00:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowk2l7n/series-workflowk2l7n-convert-artifact-3734641058/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-10 10:00:12 +0000 UTC FinishedAt: 2026-08-10 10:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-10 10:00:12 +0000 UTC FinishedAt: 2026-08-10 10:02:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*867be6d8-5d90-462f-988b-7f80392f8566,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-workflowk2l7n/series-workflowk2l7n-build-action-2070666057/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-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-10 10:02:19 +0000 UTC FinishedAt: 2026-08-10 10:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-10 10:02:19 +0000 UTC FinishedAt: 2026-08-10 10:02:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-10 10:02:19 +0000 UTC FinishedAt: 2026-08-10 10:18:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-10 10:02:19 +0000 UTC FinishedAt: 2026-08-10 10:18:37 +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:*d20a15a9-e1e6-4b57-874b-0c4be6542dcf,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-workflowk2l7n/series-workflowk2l7n-convert-artifact-3734641058/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": "476056c6-ded8-4428-91ab-b8077c610ade", "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-workflowk2l7n/series-workflowk2l7n-build-action-1819498998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-10 10:02:19 +0000 UTC FinishedAt: 2026-08-10 10:18:27 +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:*d20a15a9-e1e6-4b57-874b-0c4be6542dcf,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-workflowk2l7n/series-workflowk2l7n-convert-artifact-3734641058/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": "476056c6-ded8-4428-91ab-b8077c610ade", "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-workflowk2l7n/series-workflowk2l7n-build-action-1819498998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-10 10:18:37 +0000 UTC FinishedAt: 2026-08-10 10:18:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-10 10:18:37 +0000 UTC FinishedAt: 2026-08-10 10:18:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-10 10:18:37 +0000 UTC FinishedAt: 2026-08-10 10:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-10 10:18:37 +0000 UTC FinishedAt: 2026-08-10 10:20:20 +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:*476056c6-ded8-4428-91ab-b8077c610ade,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-workflowk2l7n/series-workflowk2l7n-build-action-1819498998/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-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-10 10:20:30 +0000 UTC FinishedAt: 2026-08-10 11:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-10 10:20:30 +0000 UTC FinishedAt: 2026-08-10 11:24:58 +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":["e100_probe","e100_set_eeprom"],"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:*867be6d8-5d90-462f-988b-7f80392f8566,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*476056c6-ded8-4428-91ab-b8077c610ade,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-workflowk2l7n/series-workflowk2l7n-build-action-2070666057/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-workflowk2l7n/series-workflowk2l7n-build-action-1819498998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-10 10:20:30 +0000 UTC FinishedAt: 2026-08-10 10:20:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-10 10:20:30 +0000 UTC FinishedAt: 2026-08-10 10:20:35 +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":["e100_probe","e100_set_eeprom"],"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-workflowk2l7n/series-workflowk2l7n-convert-artifact-1014560983/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-10 10:20:30 +0000 UTC FinishedAt: 2026-08-10 10:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-10 10:20:30 +0000 UTC FinishedAt: 2026-08-10 10:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-10 10:20:30 +0000 UTC FinishedAt: 2026-08-10 10:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-10 10:20:40 +0000 UTC FinishedAt: 2026-08-10 11:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk2l7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["e100_probe","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"001b5d347d8ba39b2dccaefcc57967b18caec8fe","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"cd49b575-5bbd-45fa-a20a-5da37af9f915","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-10 10:20:40 +0000 UTC FinishedAt: 2026-08-10 11:24:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*867be6d8-5d90-462f-988b-7f80392f8566,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*476056c6-ded8-4428-91ab-b8077c610ade,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-workflowk2l7n/series-workflowk2l7n-build-action-2070666057/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-workflowk2l7n/series-workflowk2l7n-build-action-1819498998/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-workflowk2l7n/series-workflowk2l7n-convert-artifact-1014560983/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,}